{"version":3,"file":"327.63a672cf5c007729935c.js","mappings":"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","sources":["webpack://silverstripe-base/./node_modules/swiper/modules/navigation.mjs","webpack://silverstripe-base/./node_modules/swiper/shared/create-element-if-not-defined.mjs","webpack://silverstripe-base/./node_modules/swiper/shared/classes-to-selector.mjs","webpack://silverstripe-base/./node_modules/swiper/modules/a11y.mjs","webpack://silverstripe-base/./node_modules/swiper/modules/autoplay.mjs","webpack://silverstripe-base/./node_modules/swiper/shared/effect-target.mjs","webpack://silverstripe-base/./node_modules/swiper/modules/effect-fade.mjs","webpack://silverstripe-base/./node_modules/swiper/shared/effect-init.mjs","webpack://silverstripe-base/./node_modules/swiper/shared/effect-virtual-transition-end.mjs","webpack://silverstripe-base/./node_modules/swiper/shared/ssr-window.esm.mjs","webpack://silverstripe-base/./node_modules/swiper/shared/utils.mjs","webpack://silverstripe-base/./node_modules/swiper/shared/swiper-core.mjs"],"sourcesContent":["import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\n\nfunction Navigation(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n prevEl: null\n };\n const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e);\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n if (swiper.params.uniqueNavElements && typeof el === 'string' && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (subEl) {\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const initButton = (el, dir) => {\n if (el) {\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n }\n if (!swiper.enabled && el) {\n el.classList.add(...params.lockClass.split(' '));\n }\n };\n nextEl.forEach(el => initButton(el, 'next'));\n prevEl.forEach(el => initButton(el, 'prev'));\n }\n function destroy() {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const destroyButton = (el, dir) => {\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n };\n nextEl.forEach(el => destroyButton(el, 'next'));\n prevEl.forEach(el => destroyButton(el, 'prev'));\n }\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}\n\nexport { Navigation as default };\n","import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = createElement('div', checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n\nexport { createElementIfNotDefined as c };\n","function classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return `.${classes.trim().replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n\nexport { classesToSelector as c };\n","import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElement, g as elementIndex } from '../shared/utils.mjs';\n\nfunction A11y(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n id: null\n }\n });\n swiper.a11y = {\n clicked: false\n };\n let liveRegion = null;\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.innerHTML = '';\n notification.innerHTML = message;\n }\n const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e);\n function getRandomNumber(size) {\n if (size === void 0) {\n size = 16;\n }\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n function makeElFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '0');\n });\n }\n function makeElNotFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '-1');\n });\n }\n function addElRole(el, role) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('role', role);\n });\n }\n function addElRoleDescription(el, description) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-roledescription', description);\n });\n }\n function addElControls(el, controls) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-controls', controls);\n });\n }\n function addElLabel(el, label) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-label', label);\n });\n }\n function addElId(el, id) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('id', id);\n });\n }\n function addElLive(el, live) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-live', live);\n });\n }\n function disableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', true);\n });\n }\n function enableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', false);\n });\n }\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const targetEl = e.target;\n if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {\n if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return;\n }\n if (swiper.navigation && swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n if (swiper.navigation && swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) {\n targetEl.click();\n }\n }\n function updateNavigation() {\n if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (prevEl) {\n if (swiper.isBeginning) {\n disableEl(prevEl);\n makeElNotFocusable(prevEl);\n } else {\n enableEl(prevEl);\n makeElFocusable(prevEl);\n }\n }\n if (nextEl) {\n if (swiper.isEnd) {\n disableEl(nextEl);\n makeElNotFocusable(nextEl);\n } else {\n enableEl(nextEl);\n makeElFocusable(nextEl);\n }\n }\n }\n function hasPagination() {\n return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n }\n function hasClickablePagination() {\n return hasPagination() && swiper.params.pagination.clickable;\n }\n function updatePagination() {\n const params = swiper.params.a11y;\n if (!hasPagination()) return;\n swiper.pagination.bullets.forEach(bulletEl => {\n if (swiper.params.pagination.clickable) {\n makeElFocusable(bulletEl);\n if (!swiper.params.pagination.renderBullet) {\n addElRole(bulletEl, 'button');\n addElLabel(bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, elementIndex(bulletEl) + 1));\n }\n }\n if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) {\n bulletEl.setAttribute('aria-current', 'true');\n } else {\n bulletEl.removeAttribute('aria-current');\n }\n });\n }\n const initNavEl = (el, wrapperId, message) => {\n makeElFocusable(el);\n if (el.tagName !== 'BUTTON') {\n addElRole(el, 'button');\n el.addEventListener('keydown', onEnterOrSpaceKey);\n }\n addElLabel(el, message);\n addElControls(el, wrapperId);\n };\n const handlePointerDown = () => {\n swiper.a11y.clicked = true;\n };\n const handlePointerUp = () => {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (!swiper.destroyed) {\n swiper.a11y.clicked = false;\n }\n });\n });\n };\n const handleFocus = e => {\n if (swiper.a11y.clicked) return;\n const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!slideEl || !swiper.slides.includes(slideEl)) return;\n const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n if (isActive || isVisible) return;\n if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;\n if (swiper.isHorizontal()) {\n swiper.el.scrollLeft = 0;\n } else {\n swiper.el.scrollTop = 0;\n }\n swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n };\n const initSlides = () => {\n const params = swiper.params.a11y;\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);\n }\n if (params.slideRole) {\n addElRole(swiper.slides, params.slideRole);\n }\n const slidesLength = swiper.slides.length;\n if (params.slideLabelMessage) {\n swiper.slides.forEach((slideEl, index) => {\n const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index;\n const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel(slideEl, ariaLabelMessage);\n });\n }\n };\n const init = () => {\n const params = swiper.params.a11y;\n swiper.el.append(liveRegion);\n\n // Container\n const containerEl = swiper.el;\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);\n }\n if (params.containerMessage) {\n addElLabel(containerEl, params.containerMessage);\n }\n\n // Wrapper\n const wrapperEl = swiper.wrapperEl;\n const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId(wrapperEl, wrapperId);\n addElLive(wrapperEl, live);\n\n // Slide\n initSlides();\n\n // Navigation\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage));\n }\n if (prevEl) {\n prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = Array.isArray(swiper.pagination.el) ? swiper.pagination.el : [swiper.pagination.el];\n paginationEl.forEach(el => {\n el.addEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n\n // Tab focus\n swiper.el.addEventListener('focus', handleFocus, true);\n swiper.el.addEventListener('pointerdown', handlePointerDown, true);\n swiper.el.addEventListener('pointerup', handlePointerUp, true);\n };\n function destroy() {\n if (liveRegion) liveRegion.remove();\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n if (prevEl) {\n prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = Array.isArray(swiper.pagination.el) ? swiper.pagination.el : [swiper.pagination.el];\n paginationEl.forEach(el => {\n el.removeEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n\n // Tab focus\n swiper.el.removeEventListener('focus', handleFocus, true);\n swiper.el.removeEventListener('pointerdown', handlePointerDown, true);\n swiper.el.removeEventListener('pointerup', handlePointerUp, true);\n }\n on('beforeInit', () => {\n liveRegion = createElement('span', swiper.params.a11y.notificationClass);\n liveRegion.setAttribute('aria-live', 'assertive');\n liveRegion.setAttribute('aria-atomic', 'true');\n });\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n });\n on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n if (!swiper.params.a11y.enabled) return;\n initSlides();\n });\n on('fromEdge toEdge afterInit lock unlock', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}\n\nexport { A11y as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\n\n/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nfunction Autoplay(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit,\n params\n } = _ref;\n swiper.autoplay = {\n running: false,\n paused: false,\n timeLeft: 0\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n let timeout;\n let raf;\n let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayTimeLeft;\n let autoplayStartTime = new Date().getTime;\n let wasPaused;\n let isTouched;\n let pausedByTouch;\n let touchStartTimeout;\n let slideChanged;\n let pausedByInteraction;\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n if (e.target !== swiper.wrapperEl) return;\n swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);\n resume();\n }\n const calcTimeLeft = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.autoplay.paused) {\n wasPaused = true;\n } else if (wasPaused) {\n autoplayDelayCurrent = autoplayTimeLeft;\n wasPaused = false;\n }\n const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n swiper.autoplay.timeLeft = timeLeft;\n emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n raf = requestAnimationFrame(() => {\n calcTimeLeft();\n });\n };\n const getSlideDelay = () => {\n let activeSlideEl;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0];\n } else {\n activeSlideEl = swiper.slides[swiper.activeIndex];\n }\n if (!activeSlideEl) return undefined;\n const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\n return currentSlideDelay;\n };\n const run = delayForce => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n cancelAnimationFrame(raf);\n calcTimeLeft();\n let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;\n autoplayDelayTotal = swiper.params.autoplay.delay;\n autoplayDelayCurrent = swiper.params.autoplay.delay;\n const currentSlideDelay = getSlideDelay();\n if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {\n delay = currentSlideDelay;\n autoplayDelayTotal = currentSlideDelay;\n autoplayDelayCurrent = currentSlideDelay;\n }\n autoplayTimeLeft = delay;\n const speed = swiper.params.speed;\n const proceed = () => {\n if (!swiper || swiper.destroyed) return;\n if (swiper.params.autoplay.reverseDirection) {\n if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n swiper.slidePrev(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n emit('autoplay');\n }\n } else {\n if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n swiper.slideNext(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, speed, true, true);\n emit('autoplay');\n }\n }\n if (swiper.params.cssMode) {\n autoplayStartTime = new Date().getTime();\n requestAnimationFrame(() => {\n run();\n });\n }\n };\n if (delay > 0) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n proceed();\n }, delay);\n } else {\n requestAnimationFrame(() => {\n proceed();\n });\n }\n\n // eslint-disable-next-line\n return delay;\n };\n const start = () => {\n swiper.autoplay.running = true;\n run();\n emit('autoplayStart');\n };\n const stop = () => {\n swiper.autoplay.running = false;\n clearTimeout(timeout);\n cancelAnimationFrame(raf);\n emit('autoplayStop');\n };\n const pause = (internal, reset) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n clearTimeout(timeout);\n if (!internal) {\n pausedByInteraction = true;\n }\n const proceed = () => {\n emit('autoplayPause');\n if (swiper.params.autoplay.waitForTransition) {\n swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);\n } else {\n resume();\n }\n };\n swiper.autoplay.paused = true;\n if (reset) {\n if (slideChanged) {\n autoplayTimeLeft = swiper.params.autoplay.delay;\n }\n slideChanged = false;\n proceed();\n return;\n }\n const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n proceed();\n };\n const resume = () => {\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n autoplayStartTime = new Date().getTime();\n if (pausedByInteraction) {\n pausedByInteraction = false;\n run(autoplayTimeLeft);\n } else {\n run();\n }\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n };\n const onVisibilityChange = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n const document = getDocument();\n if (document.visibilityState === 'hidden') {\n pausedByInteraction = true;\n pause(true);\n }\n if (document.visibilityState === 'visible') {\n resume();\n }\n };\n const onPointerEnter = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByInteraction = true;\n pause(true);\n };\n const onPointerLeave = e => {\n if (e.pointerType !== 'mouse') return;\n if (swiper.autoplay.paused) {\n resume();\n }\n };\n const attachMouseEvents = () => {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.el.addEventListener('pointerenter', onPointerEnter);\n swiper.el.addEventListener('pointerleave', onPointerLeave);\n }\n };\n const detachMouseEvents = () => {\n swiper.el.removeEventListener('pointerenter', onPointerEnter);\n swiper.el.removeEventListener('pointerleave', onPointerLeave);\n };\n const attachDocumentEvents = () => {\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n };\n const detachDocumentEvents = () => {\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n attachMouseEvents();\n attachDocumentEvents();\n autoplayStartTime = new Date().getTime();\n start();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n detachDocumentEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n return;\n }\n isTouched = true;\n pausedByTouch = false;\n pausedByInteraction = false;\n touchStartTimeout = setTimeout(() => {\n pausedByInteraction = true;\n pausedByTouch = true;\n pause(true);\n }, 200);\n });\n on('touchEnd', () => {\n if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n clearTimeout(touchStartTimeout);\n clearTimeout(timeout);\n if (swiper.params.autoplay.disableOnInteraction) {\n pausedByTouch = false;\n isTouched = false;\n return;\n }\n if (pausedByTouch && swiper.params.cssMode) resume();\n pausedByTouch = false;\n isTouched = false;\n });\n on('slideChange', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n slideChanged = true;\n });\n Object.assign(swiper.autoplay, {\n start,\n stop,\n pause,\n resume\n });\n}\n\nexport { Autoplay as default };\n","import { k as getSlideTransformEl } from './utils.mjs';\n\nfunction effectTarget(effectParams, slideEl) {\n const transformEl = getSlideTransformEl(slideEl);\n if (transformEl !== slideEl) {\n transformEl.style.backfaceVisibility = 'hidden';\n transformEl.style['-webkit-backface-visibility'] = 'hidden';\n }\n return transformEl;\n}\n\nexport { effectTarget as e };\n","import { 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 { k as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectFade(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n fadeEffect: {\n crossFade: false\n }\n });\n const setTranslate = () => {\n const {\n slides\n } = swiper;\n const params = swiper.params.fadeEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = swiper.slides[i];\n const offset = slideEl.swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0);\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.opacity = slideOpacity;\n targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectFade as default };\n","function effectInit(params) {\n const {\n effect,\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams,\n perspective,\n recreateShadows,\n getEffectParams\n } = params;\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n on('transitionEnd', () => {\n if (swiper.params.effect !== effect) return;\n if (recreateShadows) {\n if (!getEffectParams || !getEffectParams().slideShadows) return;\n // remove shadows\n swiper.slides.forEach(slideEl => {\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove());\n });\n // create new one\n recreateShadows();\n }\n });\n let requireUpdateOnVirtual;\n on('virtualUpdate', () => {\n if (swiper.params.effect !== effect) return;\n if (!swiper.slides.length) {\n requireUpdateOnVirtual = true;\n }\n requestAnimationFrame(() => {\n if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n setTranslate();\n requireUpdateOnVirtual = false;\n }\n });\n });\n}\n\nexport { effectInit as e };\n","import { i as elementTransitionEnd } from './utils.mjs';\n\nfunction effectVirtualTransitionEnd(_ref) {\n let {\n swiper,\n duration,\n transformElements,\n allSlides\n } = _ref;\n const {\n activeIndex\n } = swiper;\n const getSlide = el => {\n if (!el.parentElement) {\n // assume shadow root\n const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0];\n return slide;\n }\n return el.parentElement;\n };\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let transitionEndTarget;\n if (allSlides) {\n transitionEndTarget = transformElements;\n } else {\n transitionEndTarget = transformElements.filter(transformEl => {\n const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl;\n return swiper.getSlideIndex(el) === activeIndex;\n });\n }\n transitionEndTarget.forEach(el => {\n elementTransitionEnd(el, () => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n });\n });\n }\n}\n\nexport { effectVirtualTransitionEnd as e };\n","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n if (target === void 0) {\n target = {};\n }\n if (src === void 0) {\n src = {};\n }\n Object.keys(src).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\nconst ssrDocument = {\n body: {},\n addEventListener() {},\n removeEventListener() {},\n activeElement: {\n blur() {},\n nodeName: ''\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() {}\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() {},\n getElementsByTagName() {\n return [];\n }\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n }\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: ''\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n },\n history: {\n replaceState() {},\n pushState() {},\n go() {},\n back() {}\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() {},\n removeEventListener() {},\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n }\n };\n },\n Image() {},\n Date() {},\n screen: {},\n setTimeout() {},\n clearTimeout() {},\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n }\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { getWindow as a, getDocument as g };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n if (selector === void 0) {\n selector = '';\n }\n return [...element.children].filter(el => el.matches(selector));\n}\nfunction createElement(tag, classes) {\n if (classes === void 0) {\n classes = [];\n }\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : [classes]));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n}\n\nexport { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, elementIndex as g, getTranslate as h, elementTransitionEnd as i, isObject as j, getSlideTransformEl as k, elementStyle as l, elementNextAll as m, nextTick as n, elementPrevAll as o, animateCSSModeScroll as p, extend as q, deleteProps as r, setCSSProperty as s };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, l as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, m as elementNextAll, o as elementPrevAll, h as getTranslate, p as animateCSSModeScroll, n as nextTick, d as now, q as extend, g as elementIndex, c as createElement, r as deleteProps } from './utils.mjs';\n\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nlet deviceCached;\nfunction calcDevice(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nlet browser;\nfunction calcBrowser() {\n const window = getWindow();\n let needPerspectiveFix = false;\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n if (isSafari()) {\n const ua = String(window.navigator.userAgent);\n if (ua.includes('Version/')) {\n const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n }\n }\n return {\n isSafari: needPerspectiveFix || isSafari(),\n needPerspectiveFix,\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nfunction Resize(_ref) {\n let {\n swiper,\n on,\n emit\n } = _ref;\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(_ref2 => {\n let {\n contentBoxSize,\n contentRect,\n target\n } = _ref2;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n\nfunction Observer(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const observers = [];\n const window = getWindow();\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (swiper.__preventObserver__) return;\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.hostEl);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.hostEl, {\n childList: swiper.params.observeSlideChildren\n });\n\n // Observe wrapper\n attach(swiper.wrapperEl, {\n attributes: false\n });\n };\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler() {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit() {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};\n\nfunction updateSize() {\n const swiper = this;\n let width;\n let height;\n const el = swiper.el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = el.clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = el.clientHeight;\n }\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}\n\nfunction updateSlides() {\n const swiper = this;\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const {\n wrapperEl,\n slidesEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n } else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\n });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n }\n\n // Calc slides\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n let slide;\n if (slides[i]) slide = slides[i];\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) {\n slide.style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide.style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for (let i = 0; i < groups; i += 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n }\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n if (params.slidesPerGroup === 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n }\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap <= 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.el.classList.remove(backFaceHiddenClass);\n }\n }\n}\n\nfunction updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides[swiper.getSlideIndexByData(index)];\n }\n return swiper.slides[index];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || []).forEach(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\n\nfunction updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n }\n}\n\nfunction updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass);\n });\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n let spaceBetween = 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 for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides[i].classList.add(params.slideVisibleClass);\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}\n\nfunction updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd,\n progressLoop\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n}\n\nfunction updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n });\n let activeSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n activeSlide = slides[activeIndex];\n }\n if (activeSlide) {\n // Active classes\n activeSlide.classList.add(params.slideActiveClass);\n\n // Next Slide\n let nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n if (nextSlide) {\n nextSlide.classList.add(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n if (prevSlide) {\n prevSlide.classList.add(params.slidePrevClass);\n }\n }\n swiper.emitSlidesClasses();\n}\n\nconst processLazyPreloader = (swiper, imageEl) => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n const slideEl = imageEl.closest(slideSelector());\n if (slideEl) {\n const lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl) lazyEl.remove();\n }\n};\nconst unlazy = (swiper, index) => {\n if (!swiper.slides[index]) return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0) return;\n amount = Math.min(amount, len);\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n const activeIndex = swiper.activeIndex;\n if (swiper.params.grid && swiper.params.grid.rows > 1) {\n const activeColumn = activeIndex;\n const preloadColumns = [activeColumn - amount];\n preloadColumns.push(...Array.from({\n length: amount\n }).map((_, i) => {\n return activeColumn + slidesPerView + i;\n }));\n swiper.slides.forEach((slideEl, i) => {\n if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n });\n return;\n }\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind || swiper.params.loop) {\n for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n const realIndex = (i % len + len) % len;\n if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n }\n } else {\n for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n unlazy(swiper, i);\n }\n }\n }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n const {\n slidesGrid,\n params\n } = swiper;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n const getVirtualRealIndex = aIndex => {\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) {\n realIndex = swiper.virtual.slides.length + realIndex;\n }\n if (realIndex >= swiper.virtual.slides.length) {\n realIndex -= swiper.virtual.slides.length;\n }\n return realIndex;\n };\n if (typeof activeIndex === 'undefined') {\n activeIndex = getActiveIndexByTranslate(swiper);\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n }\n return;\n }\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (swiper.slides[activeIndex]) {\n realIndex = parseInt(swiper.slides[activeIndex].getAttribute('data-swiper-slide-index') || activeIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}\n\nfunction updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = e.closest(`.${params.slideClass}, swiper-slide`);\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}\n\nvar translate = {\n getTranslate: getSwiperTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};\n\nfunction setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n }\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n\nfunction transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}\n\nfunction transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}\n\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd\n};\n\nfunction slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex];\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n // Update Index\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}\n\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n } else {\n newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n enabled,\n params,\n animating\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'next'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\n if (!enabled) return swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal, threshold) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (threshold === void 0) {\n threshold = 0.5;\n }\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n\nvar slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};\n\nfunction loopCreate(slideRealIndex) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n swiper.loopFix({\n slideRealIndex,\n direction: params.centeredSlides ? undefined : 'next'\n });\n}\n\nfunction loopFix(_temp) {\n let {\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n byController,\n byMousewheel\n } = _temp === void 0 ? {} : _temp;\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n const {\n slides,\n allowSlidePrev,\n allowSlideNext,\n slidesEl,\n params\n } = swiper;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n if (swiper.virtual && params.virtual.enabled) {\n if (slideTo) {\n if (!params.centeredSlides && swiper.snapIndex === 0) {\n swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n return;\n }\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10));\n let loopedSlides = params.loopedSlides || slidesPerView;\n if (loopedSlides % params.slidesPerGroup !== 0) {\n loopedSlides += params.slidesPerGroup - loopedSlides % params.slidesPerGroup;\n }\n swiper.loopedSlides = loopedSlides;\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n let activeIndex = swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(swiper.slides.filter(el => el.classList.contains(params.slideActiveClass))[0]);\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n // prepend last slides before start\n if (activeSlideIndex < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeSlideIndex, params.slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeSlideIndex; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n prependSlidesIndexes.push(slides.length - index - 1);\n }\n } else if (activeSlideIndex /* + slidesPerView */ > swiper.slides.length - loopedSlides * 2) {\n slidesAppended = Math.max(activeSlideIndex - (swiper.slides.length - loopedSlides * 2), params.slidesPerGroup);\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n appendSlidesIndexes.push(index);\n }\n }\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n swiper.slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(swiper.slides[index]);\n swiper.slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n swiper.slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(swiper.slides[index]);\n swiper.slides[index].swiperLoopMoveDOM = false;\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (slideTo) {\n if (prependSlidesIndexes.length > 0 && isPrev) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex + slidesPrepended, 0, false, true);\n if (setTranslate) {\n swiper.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else {\n if (setTranslate) {\n swiper.slideToLoop(slideRealIndex, 0, false, true);\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else if (appendSlidesIndexes.length > 0 && isNext) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n if (setTranslate) {\n swiper.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else {\n swiper.slideToLoop(slideRealIndex, 0, false, true);\n }\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex,\n slideTo: false,\n direction,\n setTranslate,\n activeSlideIndex,\n byController: true\n };\n if (Array.isArray(swiper.controller.control)) {\n swiper.controller.control.forEach(c => {\n if (!c.destroyed && c.params.loop) c.loopFix(loopParams);\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix(loopParams);\n }\n }\n swiper.emit('loopFix');\n}\n\nfunction loopDestroy() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n}\n\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n const swiper = this;\n if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nfunction unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\nfunction onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n data.evCache.push(event);\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!swiper.wrapperEl.contains(targetEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = event.composedPath ? event.composedPath() : event.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) data.evCache[pointerIndex] = e;\n const targetTouch = data.evCache.length > 1 ? data.evCache[0] : e;\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!e.target.matches(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n prevX: swiper.touches.currentX,\n prevY: swiper.touches.currentY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling || swiper.zoom && swiper.params.zoom && swiper.params.zoom.enabled && data.evCache.length > 1) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n if (!data.isMoved) {\n if (isLoop) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n if (data.isMoved && prevTouchesDirection !== swiper.touchesDirection && isLoop && Math.abs(diff) >= 1) {\n // need another loop fix\n swiper.loopFix({\n direction: swiper.swipeDirection,\n setTranslate: true\n });\n loopFixed = true;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && !loopFixed && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.size / 2 : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && !loopFixed && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.size / 2 : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === event.pointerId);\n if (pointerIndex >= 0) {\n data.evCache.splice(pointerIndex, 1);\n }\n if (['pointercancel', 'pointerout', 'pointerleave'].includes(event.type)) {\n const proceed = event.type === 'pointercancel' && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n\nfunction onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n const isVirtualLoop = isVirtual && params.loop;\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n if (swiper.params.loop && !isVirtual) {\n swiper.slideToLoop(swiper.realIndex, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n clearTimeout(swiper.autoplay.resizeTimeout);\n swiper.autoplay.resizeTimeout = setTimeout(() => {\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.resume();\n }\n }, 500);\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n\nfunction onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n\nfunction onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n swiper.emit('setTranslate', swiper.translate, false);\n}\n\nfunction onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n return;\n }\n swiper.update();\n}\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n el,\n wrapperEl,\n device\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n\n // Touch Events\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n\n // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n};\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n if (!dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nvar events$1 = {\n attachEvents,\n detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasEnabled = params.enabled;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n if (typeof breakpointParams[prop] === 'undefined') return;\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n }\n swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n\nvar breakpoints = {\n setBreakpoint,\n getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\nfunction addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}\n\nvar classes = {\n addClasses,\n removeClasses\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nvar checkOverflow$1 = {\n checkOverflow\n};\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 5,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // loop\n loop: false,\n loopedSlides: null,\n loopPreventsSliding: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events: events$1,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor() {\n let el;\n let params;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n evCache: []\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);\n }\n recalcSlides() {\n const swiper = this;\n const {\n slidesEl,\n params\n } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n if (exact === void 0) {\n exact = false;\n }\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? slides[activeIndex].swiperSlideSize : 0;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n }\n });\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n setTranslate();\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n translated = swiper.slideTo(slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.forEach(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n if (swiper.rtl) {\n swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n mount(element) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n let el = element || swiper.params.el;\n if (typeof el === 'string') {\n el = document.querySelector(el);\n }\n if (!el) {\n return false;\n }\n el.swiper = swiper;\n if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === 'SWIPER-CONTAINER') {\n swiper.isElement = true;\n }\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = el.shadowRoot.querySelector(getWrapperSelector());\n // Children needs to return slot items\n return res;\n }\n return elementChildren(el, getWrapperSelector())[0];\n };\n // Find Wrapper\n let wrapperEl = getWrapper();\n if (!wrapperEl && swiper.params.createElements) {\n wrapperEl = createElement('div', swiper.params.wrapperClass);\n el.append(wrapperEl);\n elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n wrapperEl.append(slideEl);\n });\n }\n Object.assign(swiper, {\n el,\n wrapperEl,\n slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n hostEl: swiper.isElement ? el.parentNode.host : el,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n });\n return true;\n }\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Attach events\n swiper.attachEvents();\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n } else {\n imageEl.addEventListener('load', e => {\n processLazyPreloader(swiper, e.target);\n });\n }\n });\n preload(swiper);\n\n // Init Flag\n swiper.initialized = true;\n preload(swiper);\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n const swiper = this;\n const {\n params,\n el,\n wrapperEl,\n slides\n } = swiper;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n el.removeAttribute('style');\n wrapperEl.removeAttribute('style');\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n }\n }\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n swiper.el.swiper = null;\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\n\nexport { Swiper as S, defaults as d };\n"],"names":["Navigation","_ref","swiper","extendParams","on","emit","navigation","nextEl","prevEl","hideOnClick","disabledClass","hiddenClass","lockClass","navigationDisabledClass","makeElementsArray","el","Array","isArray","filter","e","getEl","res","isElement","querySelector","document","querySelectorAll","params","uniqueNavElements","length","toggleEl","disabled","forEach","subEl","classList","split","tagName","watchOverflow","enabled","isLocked","update","loop","isBeginning","rewind","isEnd","onPrevClick","preventDefault","slidePrev","onNextClick","slideNext","init","originalParams","checkProps","createElements","Object","keys","key","auto","element","c","className","append","assign","initButton","dir","addEventListener","add","destroy","destroyButton","removeEventListener","remove","disable","_s","targetEl","target","includes","pagination","clickable","contains","isHidden","toggle","enable","classes","trim","replace","A11y","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","id","clicked","liveRegion","notify","message","notification","innerHTML","makeElFocusable","setAttribute","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","label","disableEl","enableEl","onEnterOrSpaceKey","keyCode","matches","bulletClass","click","hasPagination","bullets","hasClickablePagination","initNavEl","wrapperId","controls","addElControls","handlePointerDown","handlePointerUp","requestAnimationFrame","destroyed","handleFocus","slideEl","closest","slideClass","slides","isActive","indexOf","activeIndex","isVisible","watchSlidesProgress","visibleSlides","sourceCapabilities","firesTouchEvents","isHorizontal","scrollLeft","scrollTop","slideTo","initSlides","slidesLength","index","slideIndex","parseInt","getAttribute","containerEl","wrapperEl","size","repeat","Math","round","random","toString","live","autoplay","addElLive","updateNavigation","bulletEl","renderBullet","bulletActiveClass","removeAttribute","updatePagination","Autoplay","timeout","raf","running","paused","timeLeft","delay","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","isTouched","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","Date","getTime","onTransitionEnd","resume","calcTimeLeft","run","delayForce","cancelAnimationFrame","currentSlideDelay","activeSlideEl","virtual","getSlideDelay","Number","isNaN","speed","proceed","cssMode","clearTimeout","setTimeout","start","stop","pause","internal","reset","onVisibilityChange","g","visibilityState","onPointerEnter","pointerType","onPointerLeave","effectParams","transformEl","style","backfaceVisibility","EffectFade","fadeEffect","crossFade","effect","setTranslate","setTransition","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","classNames","push","containerModifierClass","overwriteParamsResult","duration","slideShadows","shadowEl","i","tx","swiperSlideOffset","virtualTranslate","translate","ty","slideOpacity","max","abs","progress","min","opacity","transform","transformElements","map","transitionDuration","allSlides","transitionEndTarget","eventTriggered","parentElement","shadowRoot","parentNode","getSlide","getSlideIndex","animating","evt","window","CustomEvent","bubbles","cancelable","dispatchEvent","slidesPerView","slidesPerGroup","spaceBetween","isObject","obj","constructor","extend","src","ssrDocument","body","activeElement","blur","nodeName","getElementById","createEvent","initEvent","createElement","children","childNodes","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","this","getComputedStyle","getPropertyValue","Image","screen","matchMedia","callback","getWindow","win","deleteProps","object","nextTick","now","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","webkitTransform","a","join","MozTransform","OTransform","MsTransform","msTransform","m41","parseFloat","m42","o","prototype","call","slice","to","arguments","undefined","noExtend","nextSource","node","HTMLElement","nodeType","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","targetPosition","side","startPosition","time","startTime","scrollSnapType","cssModeFrameID","isOutOfBound","current","animate","easeProgress","cos","PI","currentPosition","scrollTo","overflow","getSlideTransformEl","elementChildren","selector","tag","elementPrevAll","prevEls","previousElementSibling","prev","elementNextAll","nextEls","nextElementSibling","next","elementStyle","prop","elementIndex","child","previousSibling","elementParents","parents","parent","elementTransitionEnd","fireCallBack","elementOuterSize","includeMargins","offsetWidth","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","eventsEmitter","events","handler","priority","self","eventsListeners","method","event","once","onceHandler","off","__emitterProxy","_len","args","_key","apply","onAny","eventsAnyListeners","offAny","splice","eventHandler","data","context","_len2","_key2","unshift","processLazyPreloader","imageEl","lazyEl","lazyPreloaderClass","unlazy","preload","amount","lazyPreloadPrevNext","slidesPerViewDynamic","ceil","grid","rows","activeColumn","preloadColumns","from","_","column","slideIndexLastInView","realIndex","updateSize","width","height","clientWidth","clientHeight","isVertical","updateSlides","getDirectionLabel","property","getDirectionPropertyValue","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","previousSlidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","s","gridEnabled","slideSize","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","slidesPerGroupSkip","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","checkOverflow","updateSlidesOffset","backFaceHiddenClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","getSlideByIndex","getSlideIndexByData","offsetHeight","minusOffset","offsetLeft","offsetTop","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","slideActiveClass","slideNextClass","slidePrevClass","nextSlide","prevSlide","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","initialized","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","transitionEmit","runCallbacks","direction","step","initial","preventInteractionOnTransition","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","isH","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","behavior","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","loopFix","_clientLeft","clientLeft","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","n","onTouchStart","touchEventsData","evCache","touches","simulateTouch","originalEvent","touchEventsTarget","which","button","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","path","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","innerWidth","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","pointerIndex","findIndex","cachedEv","pointerId","targetTouch","preventedByNestedSwiper","prevX","prevY","touchReleaseOnEdges","targetTouches","diffX","diffY","sqrt","touchAngle","atan2","zoom","touchMoveStopPropagation","nested","stopPropagation","diff","touchesDiff","previousX","previousY","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","startTranslate","allowMomentumBounce","grabCursor","setGrabCursor","loopFixed","currentTranslate","disableParentSwiper","resistanceRatio","activeSlideIndex","resistance","followFinger","onTouchEnd","type","isSafari","isWebView","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","onResize","setBreakpoint","isVirtualLoop","resizeTimeout","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","newProgress","previousTranslate","onLoad","dummyEventAttached","dummyEventListener","device","capture","domMethod","swiperMethod","passive","updateOnWindowResize","ios","android","isGridEnabled","defaults","resizeObserver","url","breakpointsBase","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","prototypes","byController","x","y","translateTo","translateBounds","newTranslate","onTranslateToWrapperTransitionEnd","transition","loopCreate","slideRealIndex","_temp","byMousewheel","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","swiperLoopMoveDOM","prepend","recalcSlides","currentSlideTranslate","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","moving","__preventObserver__","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","fill","wasModuleEnabled","isModuleEnabled","directionChanged","needsReLoop","changeDirection","isEnabled","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","wasLocked","lastSlideRightEdge","addClasses","suffixes","entries","prefix","resultClasses","item","prepareClasses","removeClasses","extendedDefaults","Swiper","swipers","newParams","overrides","platform","ua","screenWidth","screenHeight","match","ipad","ipod","iphone","windows","macos","os","calcDevice","needPerspectiveFix","toLowerCase","String","major","minor","num","test","calcBrowser","modules","__modules__","mod","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","getWrapperSelector","slideSlots","hostEl","deleteInstance","cleanStyles","extendDefaults","newDefaults","installModule","use","module","m","prototypeGroup","protoMethod","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect"],"sourceRoot":""}