{"version":3,"file":"116.js","mappings":"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","sources":["webpack://silverstripe-base/./node_modules/swiper/shared/classes-to-selector.mjs","webpack://silverstripe-base/./node_modules/swiper/modules/pagination.mjs","webpack://silverstripe-base/./node_modules/swiper/shared/create-element-if-not-defined.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":["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 createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray, f as elementOuterSize, h as elementIndex, a as elementParents } from '../shared/utils.mjs';\n\nfunction Pagination(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n }\n function setSideBullets(bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n if (!bulletEl) return;\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n }\n }\n }\n function getMoveDirection(prevIndex, nextIndex, length) {\n prevIndex = prevIndex % length;\n nextIndex = nextIndex % length;\n if (nextIndex === prevIndex + 1) {\n return 'next';\n } else if (nextIndex === prevIndex - 1) {\n return 'previous';\n }\n return;\n }\n function onBulletClick(e) {\n const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n if (!bulletEl) {\n return;\n }\n e.preventDefault();\n const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n if (swiper.params.loop) {\n if (swiper.realIndex === index) return;\n const moveDirection = getMoveDirection(swiper.realIndex, index, swiper.slides.length);\n if (moveDirection === 'next') {\n swiper.slideNext();\n } else if (moveDirection === 'previous') {\n swiper.slidePrev();\n } else {\n swiper.slideToLoop(index);\n }\n } else {\n swiper.slideTo(index);\n }\n }\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n // Current/Total\n let current;\n let previousIndex;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n previousIndex = swiper.previousRealIndex || 0;\n current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n previousIndex = swiper.previousSnapIndex;\n } else {\n previousIndex = swiper.previousIndex || 0;\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n el.forEach(subEl => {\n subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n });\n if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n dynamicBulletIndex += current - (previousIndex || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.forEach(bulletEl => {\n const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n bulletEl.classList.remove(...classesToRemove);\n });\n if (el.length > 1) {\n bullets.forEach(bullet => {\n const bulletIndex = elementIndex(bullet);\n if (bulletIndex === current) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n } else if (swiper.isElement) {\n bullet.setAttribute('part', 'bullet');\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n if (bulletIndex === firstIndex) {\n setSideBullets(bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets(bullet, 'next');\n }\n }\n });\n } else {\n const bullet = bullets[current];\n if (bullet) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n }\n if (swiper.isElement) {\n bullets.forEach((bulletEl, bulletIndex) => {\n bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');\n });\n }\n if (params.dynamicBullets) {\n const firstDisplayedBullet = bullets[firstIndex];\n const lastDisplayedBullet = bullets[lastIndex];\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n if (bullets[i]) {\n bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n }\n setSideBullets(firstDisplayedBullet, 'prev');\n setSideBullets(lastDisplayedBullet, 'next');\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.forEach(bullet => {\n bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n });\n }\n }\n el.forEach((subEl, subElIndex) => {\n if (params.type === 'fraction') {\n subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n fractionEl.textContent = params.formatFractionCurrent(current + 1);\n });\n subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n totalEl.textContent = params.formatFractionTotal(total);\n });\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n });\n }\n if (params.type === 'custom' && params.renderCustom) {\n subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n if (subElIndex === 0) emit('paginationRender', subEl);\n } else {\n if (subElIndex === 0) emit('paginationRender', subEl);\n emit('paginationUpdate', subEl);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n });\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n // prettier-ignore\n paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\">`;\n }\n }\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `` + ' / ' + ``;\n }\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n }\n swiper.pagination.bullets = [];\n el.forEach(subEl => {\n if (params.type !== 'custom') {\n subEl.innerHTML = paginationHTML || '';\n }\n if (params.type === 'bullets') {\n swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\n }\n });\n if (params.type !== 'custom') {\n emit('paginationRender', el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = [...document.querySelectorAll(params.el)];\n }\n if (!el) {\n el = params.el;\n }\n if (!el || el.length === 0) return;\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n el = [...swiper.el.querySelectorAll(params.el)];\n // check if it belongs to another nested Swiper\n if (el.length > 1) {\n el = el.filter(subEl => {\n if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n return true;\n })[0];\n }\n }\n if (Array.isArray(el) && el.length === 1) el = el[0];\n Object.assign(swiper.pagination, {\n el\n });\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (params.type === 'bullets' && params.clickable) {\n subEl.classList.add(...(params.clickableClass || '').split(' '));\n }\n subEl.classList.add(params.modifierClass + params.type);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.type === 'bullets' && params.dynamicBullets) {\n subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n subEl.classList.add(params.progressbarOppositeClass);\n }\n if (params.clickable) {\n subEl.addEventListener('click', onBulletClick);\n }\n if (!swiper.enabled) {\n subEl.classList.add(params.lockClass);\n }\n });\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.hiddenClass);\n subEl.classList.remove(params.modifierClass + params.type);\n subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.clickable) {\n subEl.classList.remove(...(params.clickableClass || '').split(' '));\n subEl.removeEventListener('click', onBulletClick);\n }\n });\n }\n if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));\n }\n on('changeDirection', () => {\n if (!swiper.pagination || !swiper.pagination.el) return;\n const params = swiper.params.pagination;\n let {\n el\n } = swiper.pagination;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n update();\n });\n on('snapGridLengthChange', () => {\n render();\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const el = makeElementsArray(swiper.pagination.el);\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n }\n init();\n render();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}\n\nexport { Pagination 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","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElement, h as elementIndex, m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction A11y(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n containerRole: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n id: null,\n scrollOnFocus: true\n }\n });\n swiper.a11y = {\n clicked: false\n };\n let liveRegion = null;\n let preventFocusHandler;\n let focusTargetSlideEl;\n let visibilityChangedTimestamp = new Date().getTime();\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.innerHTML = '';\n notification.innerHTML = message;\n }\n function getRandomNumber(size) {\n if (size === void 0) {\n size = 16;\n }\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n function makeElFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '0');\n });\n }\n function makeElNotFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '-1');\n });\n }\n function addElRole(el, role) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('role', role);\n });\n }\n function addElRoleDescription(el, description) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-roledescription', description);\n });\n }\n function addElControls(el, controls) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-controls', controls);\n });\n }\n function addElLabel(el, label) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-label', label);\n });\n }\n function addElId(el, id) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('id', id);\n });\n }\n function addElLive(el, live) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-live', live);\n });\n }\n function disableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', true);\n });\n }\n function enableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', false);\n });\n }\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const targetEl = e.target;\n if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {\n if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return;\n }\n if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) {\n const prevEls = makeElementsArray(swiper.navigation.prevEl);\n const nextEls = makeElementsArray(swiper.navigation.nextEl);\n if (nextEls.includes(targetEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n if (prevEls.includes(targetEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n }\n if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) {\n targetEl.click();\n }\n }\n function updateNavigation() {\n if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (prevEl) {\n if (swiper.isBeginning) {\n disableEl(prevEl);\n makeElNotFocusable(prevEl);\n } else {\n enableEl(prevEl);\n makeElFocusable(prevEl);\n }\n }\n if (nextEl) {\n if (swiper.isEnd) {\n disableEl(nextEl);\n makeElNotFocusable(nextEl);\n } else {\n enableEl(nextEl);\n makeElFocusable(nextEl);\n }\n }\n }\n function hasPagination() {\n return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n }\n function hasClickablePagination() {\n return hasPagination() && swiper.params.pagination.clickable;\n }\n function updatePagination() {\n const params = swiper.params.a11y;\n if (!hasPagination()) return;\n swiper.pagination.bullets.forEach(bulletEl => {\n if (swiper.params.pagination.clickable) {\n makeElFocusable(bulletEl);\n if (!swiper.params.pagination.renderBullet) {\n addElRole(bulletEl, 'button');\n addElLabel(bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, elementIndex(bulletEl) + 1));\n }\n }\n if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) {\n bulletEl.setAttribute('aria-current', 'true');\n } else {\n bulletEl.removeAttribute('aria-current');\n }\n });\n }\n const initNavEl = (el, wrapperId, message) => {\n makeElFocusable(el);\n if (el.tagName !== 'BUTTON') {\n addElRole(el, 'button');\n el.addEventListener('keydown', onEnterOrSpaceKey);\n }\n addElLabel(el, message);\n addElControls(el, wrapperId);\n };\n const handlePointerDown = e => {\n if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) {\n preventFocusHandler = true;\n }\n swiper.a11y.clicked = true;\n };\n const handlePointerUp = () => {\n preventFocusHandler = false;\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (!swiper.destroyed) {\n swiper.a11y.clicked = false;\n }\n });\n });\n };\n const onVisibilityChange = e => {\n visibilityChangedTimestamp = new Date().getTime();\n };\n const handleFocus = e => {\n if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return;\n if (new Date().getTime() - visibilityChangedTimestamp < 100) return;\n const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!slideEl || !swiper.slides.includes(slideEl)) return;\n focusTargetSlideEl = slideEl;\n const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n if (isActive || isVisible) return;\n if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;\n if (swiper.isHorizontal()) {\n swiper.el.scrollLeft = 0;\n } else {\n swiper.el.scrollTop = 0;\n }\n requestAnimationFrame(() => {\n if (preventFocusHandler) return;\n if (swiper.params.loop) {\n swiper.slideToLoop(parseInt(slideEl.getAttribute('data-swiper-slide-index')), 0);\n } else {\n swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n }\n preventFocusHandler = false;\n });\n };\n const initSlides = () => {\n const params = swiper.params.a11y;\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);\n }\n if (params.slideRole) {\n addElRole(swiper.slides, params.slideRole);\n }\n const slidesLength = swiper.slides.length;\n if (params.slideLabelMessage) {\n swiper.slides.forEach((slideEl, index) => {\n const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index;\n const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel(slideEl, ariaLabelMessage);\n });\n }\n };\n const init = () => {\n const params = swiper.params.a11y;\n swiper.el.append(liveRegion);\n\n // Container\n const containerEl = swiper.el;\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);\n }\n if (params.containerMessage) {\n addElLabel(containerEl, params.containerMessage);\n }\n if (params.containerRole) {\n addElRole(containerEl, params.containerRole);\n }\n\n // Wrapper\n const wrapperEl = swiper.wrapperEl;\n const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId(wrapperEl, wrapperId);\n addElLive(wrapperEl, live);\n\n // Slide\n initSlides();\n\n // Navigation\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage));\n }\n if (prevEl) {\n prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = makeElementsArray(swiper.pagination.el);\n paginationEl.forEach(el => {\n el.addEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n\n // Tab focus\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n swiper.el.addEventListener('focus', handleFocus, true);\n swiper.el.addEventListener('focus', handleFocus, true);\n swiper.el.addEventListener('pointerdown', handlePointerDown, true);\n swiper.el.addEventListener('pointerup', handlePointerUp, true);\n };\n function destroy() {\n if (liveRegion) liveRegion.remove();\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n if (prevEl) {\n prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = makeElementsArray(swiper.pagination.el);\n paginationEl.forEach(el => {\n el.removeEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n // Tab focus\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.removeEventListener('focus', handleFocus, true);\n swiper.el.removeEventListener('pointerdown', handlePointerDown, true);\n swiper.el.removeEventListener('pointerup', handlePointerUp, true);\n }\n }\n on('beforeInit', () => {\n liveRegion = createElement('span', swiper.params.a11y.notificationClass);\n liveRegion.setAttribute('aria-live', 'assertive');\n liveRegion.setAttribute('aria-atomic', 'true');\n });\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n });\n on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n if (!swiper.params.a11y.enabled) return;\n initSlides();\n });\n on('fromEdge toEdge afterInit lock unlock', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}\n\nexport { A11y as default };\n","import { 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: false,\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 let pausedByPointerEnter;\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 if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) {\n return;\n }\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 autoplayStartTime = new Date().getTime();\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 pausedByPointerEnter = true;\n if (swiper.animating || swiper.autoplay.paused) return;\n pause(true);\n };\n const onPointerLeave = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByPointerEnter = false;\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 if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.removeEventListener('pointerenter', onPointerEnter);\n swiper.el.removeEventListener('pointerleave', onPointerLeave);\n }\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 start();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n detachDocumentEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n });\n on('_freeModeStaticRelease', () => {\n if (pausedByTouch || pausedByInteraction) {\n resume();\n }\n });\n on('_freeModeNoMomentumRelease', () => {\n if (!swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\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 { g 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 { g 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 { k 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 classesToTokens(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return classes.trim().split(' ').filter(c => !!c.trim());\n}\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 const children = [...element.children];\n if (element instanceof HTMLSlotElement) {\n children.push(...element.assignedElements());\n }\n if (!selector) {\n return children;\n }\n return children.filter(el => el.matches(selector));\n}\nfunction elementIsChildOf(el, parent) {\n const isChild = parent.contains(el);\n if (!isChild && parent instanceof HTMLSlotElement) {\n const children = [...parent.assignedElements()];\n return children.includes(el);\n }\n return isChild;\n}\nfunction showWarning(text) {\n try {\n console.warn(text);\n return;\n } catch (err) {\n // err\n }\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 : classesToTokens(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}\nfunction makeElementsArray(el) {\n return (Array.isArray(el) ? el : [el]).filter(e => !!e);\n}\nfunction getRotateFix(swiper) {\n return v => {\n if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) {\n return v + 0.001;\n }\n return v;\n };\n}\n\nexport { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, getSlideTransformEl as g, elementIndex as h, classesToTokens as i, getTranslate as j, elementTransitionEnd as k, isObject as l, makeElementsArray as m, nextTick as n, getRotateFix as o, elementStyle as p, elementNextAll as q, elementPrevAll as r, setCSSProperty as s, animateCSSModeScroll as t, showWarning as u, elementIsChildOf as v, extend as w, deleteProps as x };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, p as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, q as elementNextAll, r as elementPrevAll, j as getTranslate, t as animateCSSModeScroll, n as nextTick, u as showWarning, c as createElement, v as elementIsChildOf, d as now, w as extend, h as elementIndex, x 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 const device = getDevice();\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 const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent);\n const isSafariBrowser = isSafari();\n const need3dFix = isSafariBrowser || isWebView && device.ios;\n return {\n isSafari: needPerspectiveFix || isSafariBrowser,\n needPerspectiveFix,\n need3dFix,\n isWebView\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: swiper.isElement || (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 getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(swiper.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(slides);\n } else if (swiper.grid) {\n swiper.grid.unsetSlides();\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, slides);\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[swiper.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[swiper.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[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid);\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' : swiper.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 ? allSlidesSize - swiperSize : 0;\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 const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0);\n if (allSlidesSize + offsetSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 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 swiper.emit('slidesUpdated');\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\nconst toggleSlideClasses$1 = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\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 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 isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - 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 }\n toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass);\n toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass);\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\nconst toggleSlideClasses = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\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 gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n let activeSlide;\n let prevSlide;\n let nextSlide;\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 if (gridEnabled) {\n activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0];\n nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0];\n prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0];\n } else {\n activeSlide = slides[activeIndex];\n }\n }\n if (activeSlide) {\n if (!gridEnabled) {\n // Next Slide\n nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n\n // Prev Slide\n prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n }\n }\n slides.forEach(slideEl => {\n toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass);\n toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass);\n toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass);\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 let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (!lazyEl && swiper.isElement) {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n } else {\n // init later\n requestAnimationFrame(() => {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl) lazyEl.remove();\n }\n });\n }\n }\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 && !swiper.params.loop) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n return;\n }\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (gridEnabled) {\n const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0];\n let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);\n if (Number.isNaN(activeSlideIndex)) {\n activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);\n }\n realIndex = Math.floor(activeSlideIndex / params.grid.rows);\n } else if (swiper.slides[activeIndex]) {\n const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');\n if (slideIndex) {\n realIndex = parseInt(slideIndex, 10);\n } else {\n realIndex = activeIndex;\n }\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 (swiper.initialized || swiper.params.runCallbacksOnInit) {\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n }\n}\n\nfunction updateClickedSlide(el, path) {\n const swiper = this;\n const params = swiper.params;\n let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n slide = pathEl;\n }\n });\n }\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 swiper.animating = false;\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 swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\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 (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 (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\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 // initial virtual\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n const isInitialVirtual = isVirtual && initial;\n // Update Index\n if (!isInitialVirtual && (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 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 (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 if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\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 let targetSlideIndex;\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;\n } else {\n targetSlideIndex = swiper.getSlideIndexByData(newIndex);\n }\n const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;\n const {\n centeredSlides\n } = swiper.params;\n let slidesPerView = swiper.params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n let needLoopFix = cols - targetSlideIndex < slidesPerView;\n if (centeredSlides) {\n needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);\n }\n if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) {\n needLoopFix = false;\n }\n if (needLoopFix) {\n const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';\n swiper.loopFix({\n direction,\n slideTo: true,\n activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,\n slideRealIndex: direction === 'next' ? swiper.realIndex : undefined\n });\n }\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;\n } else {\n newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n }\n requestAnimationFrame(() => {\n swiper.slideTo(newIndex, speed, runCallbacks, internal);\n });\n return swiper;\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\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 || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\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 if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n });\n return true;\n }\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 (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 || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\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 } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n });\n return true;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\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 (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (threshold === void 0) {\n threshold = 0.5;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\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 if (swiper.destroyed) return;\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 initSlides = () => {\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n };\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);\n const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;\n const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;\n const addBlankSlides = amountOfSlides => {\n for (let i = 0; i < amountOfSlides; i += 1) {\n const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]);\n swiper.slidesEl.append(slideEl);\n }\n };\n if (shouldFillGroup) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else if (shouldFillGrid) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else {\n initSlides();\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 const {\n centeredSlides\n } = params;\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 let slidesPerView = params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;\n let loopedSlides = slidesPerGroup;\n if (loopedSlides % slidesPerGroup !== 0) {\n loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;\n }\n loopedSlides += params.loopAdditionalSlides;\n swiper.loopedSlides = loopedSlides;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n if (slides.length < slidesPerView + loopedSlides) {\n showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters');\n } else if (gridEnabled && params.grid.fill === 'row') {\n showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`');\n }\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n let activeIndex = swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(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 const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;\n const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;\n const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);\n // prepend last slides before start\n if (activeColIndexWithShift < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n const colIndexToPrepend = cols - index - 1;\n for (let i = slides.length - 1; i >= 0; i -= 1) {\n if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i);\n }\n // slides.forEach((slide, slideIndex) => {\n // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);\n // });\n } else {\n prependSlidesIndexes.push(cols - index - 1);\n }\n }\n } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {\n slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n slides.forEach((slide, slideIndex) => {\n if (slide.column === index) appendSlidesIndexes.push(slideIndex);\n });\n } else {\n appendSlidesIndexes.push(index);\n }\n }\n }\n swiper.__preventObserver__ = true;\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\n } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) {\n swiper.slides.forEach((slide, slideIndex) => {\n swiper.grid.updateSlide(slideIndex, slide, swiper.slides);\n });\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 + Math.ceil(slidesPrepended), 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n if (setTranslate) {\n const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex + shift, 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.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex - shift, 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 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({\n ...loopParams,\n slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix({\n ...loopParams,\n slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\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 preventEdgeSwipe(swiper, event, startX) {\n const window = getWindow();\n const {\n params\n } = swiper;\n const edgeSwipeDetection = params.edgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n return true;\n }\n return false;\n }\n return true;\n}\nfunction onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const data = swiper.touchEventsData;\n if (e.type === 'pointerdown') {\n if (data.pointerId !== null && data.pointerId !== e.pointerId) {\n return;\n }\n data.pointerId = e.pointerId;\n } else if (e.type === 'touchstart' && e.targetTouches.length === 1) {\n data.touchId = e.targetTouches[0].identifier;\n }\n if (e.type === 'touchstart') {\n // don't proceed touch event\n preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);\n return;\n }\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.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 targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!elementIsChildOf(targetEl, swiper.wrapperEl)) 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 = e.composedPath ? e.composedPath() : e.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 if (!preventEdgeSwipe(swiper, e, startX)) {\n return;\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 && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) {\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 (e.type === 'pointermove') {\n if (data.touchId !== null) return; // return from pointer if we use touch\n const id = e.pointerId;\n if (id !== data.pointerId) return;\n }\n let targetTouch;\n if (e.type === 'touchmove') {\n targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n } else {\n targetTouch = e;\n }\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\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 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 && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') {\n document.activeElement.blur();\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 touches.previousX = touches.currentX;\n touches.previousY = touches.currentY;\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 || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) {\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 const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;\n if (!data.isMoved) {\n if (isLoop && allowLoopFix) {\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 detail: {\n bySwiperTouchMove: true\n }\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 new Date().getTime();\n if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n startTranslate: data.currentTranslate\n });\n data.loopSwapReset = true;\n data.startTranslate = data.currentTranslate;\n return;\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 && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] - (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.activeIndex + 1] + swiper.params.spaceBetween : 0) - swiper.params.spaceBetween : 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 && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween + (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween : 0) : 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 let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetTouch;\n const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';\n if (!isTouchEvent) {\n if (data.touchId !== null) return; // return from pointer if we use touch\n if (e.pointerId !== data.pointerId) return;\n targetTouch = e;\n } else {\n targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n }\n if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {\n const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n data.pointerId = null;\n data.touchId = null;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\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\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, pathTree);\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.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {\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 const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop;\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 (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (swipeToLast || 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\nfunction onDocumentTouchStart() {\n const swiper = this;\n if (swiper.documentTouchHandlerProceeded) return;\n swiper.documentTouchHandlerProceeded = true;\n if (swiper.params.touchReleaseOnEdges) {\n swiper.el.style.touchAction = 'auto';\n }\n}\n\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 if (!el || typeof el === 'string') return;\n\n // Touch Events\n document[domMethod]('touchstart', swiper.onDocumentTouchStart, {\n passive: false,\n capture\n });\n el[domMethod]('touchstart', swiper.onTouchStart, {\n passive: false\n });\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('touchmove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('touchend', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('touchcancel', 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 document[domMethod]('contextmenu', 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 {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n swiper.onDocumentTouchStart = onDocumentTouchStart.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 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 wasGrabCursor = swiper.params.grabCursor;\n const isGrabCursor = breakpointParams.grabCursor;\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 if (wasGrabCursor && !isGrabCursor) {\n swiper.unsetGrabCursor();\n } else if (!wasGrabCursor && isGrabCursor) {\n swiper.setGrabCursor();\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 const wasLoop = params.loop;\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n const hasLoop = swiper.params.loop;\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 (initialized) {\n if (needsReLoop) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (!wasLoop && hasLoop) {\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (wasLoop && !hasLoop) {\n swiper.loopDestroy();\n }\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 if (!el || typeof el === 'string') return;\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 swiperElementNodeName: 'SWIPER-CONTAINER',\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 eventsPrefix: 'swiper',\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 loopAddBlankSlides: true,\n loopAdditionalSlides: 0,\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 slideBlankClass: 'swiper-slide-blank',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideFullyVisibleClass: 'swiper-slide-fully-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 (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n params[moduleParamName].auto = true;\n }\n if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n params[moduleParamName].auto = true;\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\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 pointerId: null,\n touchId: null\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 getDirectionLabel(property) {\n if (this.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 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 (typeof params.slidesPerView === 'number') return params.slidesPerView;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? Math.ceil(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 += Math.ceil(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.params.swiperElementNodeName.toUpperCase()) {\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 const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n if (swiper.isElement) {\n lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n }\n lazyElements.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 if (el && typeof el !== 'string') {\n el.removeAttribute('style');\n }\n if (wrapperEl) {\n wrapperEl.removeAttribute('style');\n }\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, 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 if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.swiper = null;\n }\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":["classes","trim","replace","Pagination","_ref","swiper","extendParams","on","emit","pfx","bulletSize","pagination","el","bulletElement","clickable","hideOnClick","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","type","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","hiddenClass","progressbarFillClass","progressbarOppositeClass","clickableClass","lockClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","params","Array","isArray","length","setSideBullets","bulletEl","position","classList","add","onBulletClick","e","target","closest","preventDefault","index","slidesPerGroup","loop","realIndex","moveDirection","prevIndex","nextIndex","slides","slideNext","slidePrev","slideToLoop","slideTo","update","rtl","current","previousIndex","m","slidesLength","virtual","enabled","total","Math","ceil","snapGrid","previousRealIndex","floor","snapIndex","previousSnapIndex","activeIndex","firstIndex","lastIndex","midIndex","isHorizontal","forEach","subEl","style","undefined","max","min","classesToRemove","map","suffix","s","includes","split","flat","remove","bullet","bulletIndex","isElement","setAttribute","firstDisplayedBullet","lastDisplayedBullet","i","dynamicBulletsLength","bulletsOffset","offsetProp","subElIndex","querySelectorAll","fractionEl","textContent","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","transform","transitionDuration","speed","innerHTML","watchOverflow","isLocked","render","grid","rows","paginationHTML","numberOfBullets","freeMode","call","push","init","originalParams","checkProps","createElements","Object","keys","key","auto","element","c","className","append","querySelector","document","uniqueNavElements","filter","assign","addEventListener","destroy","removeEventListener","disable","_s","targetEl","contains","navigation","nextEl","prevEl","isHidden","toggle","enable","A11y","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","containerRole","itemRoleDescriptionMessage","slideRole","id","scrollOnFocus","clicked","preventFocusHandler","focusTargetSlideEl","liveRegion","visibilityChangedTimestamp","Date","getTime","notify","message","notification","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","label","disableEl","enableEl","onEnterOrSpaceKey","keyCode","matches","prevEls","isEnd","isBeginning","click","hasPagination","hasClickablePagination","initNavEl","wrapperId","tagName","controls","addElControls","handlePointerDown","handlePointerUp","requestAnimationFrame","destroyed","onVisibilityChange","handleFocus","slideEl","slideClass","isActive","indexOf","isVisible","watchSlidesProgress","visibleSlides","sourceCapabilities","firesTouchEvents","scrollLeft","scrollTop","parseInt","getAttribute","initSlides","slideIndex","containerEl","wrapperEl","size","repeat","round","random","toString","live","autoplay","addElLive","g","rewind","updateNavigation","removeAttribute","updatePagination","Autoplay","timeout","raf","running","paused","timeLeft","delay","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","isTouched","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","pausedByPointerEnter","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","onTransitionEnd","detail","bySwiperTouchMove","resume","calcTimeLeft","run","delayForce","cancelAnimationFrame","currentSlideDelay","activeSlideEl","getSlideDelay","Number","isNaN","proceed","cssMode","clearTimeout","setTimeout","start","stop","pause","internal","reset","visibilityState","onPointerEnter","pointerType","animating","onPointerLeave","effectParams","transformEl","backfaceVisibility","EffectFade","fadeEffect","crossFade","effect","setTranslate","setTransition","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","classNames","containerModifierClass","overwriteParamsResult","duration","slideShadows","shadowEl","tx","swiperSlideOffset","virtualTranslate","translate","ty","slideOpacity","abs","progress","opacity","transformElements","allSlides","transitionEndTarget","eventTriggered","parentElement","shadowRoot","parentNode","getSlide","getSlideIndex","evt","window","CustomEvent","bubbles","cancelable","dispatchEvent","slidesPerView","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","slice","to","arguments","noExtend","nextSource","node","HTMLElement","nodeType","keysArray","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","targetPosition","side","startPosition","time","startTime","scrollSnapType","cssModeFrameID","dir","isOutOfBound","animate","easeProgress","cos","PI","currentPosition","scrollTo","overflow","getSlideTransformEl","elementChildren","selector","HTMLSlotElement","assignedElements","elementIsChildOf","parent","isChild","showWarning","text","console","warn","err","tag","classesToTokens","elementPrevAll","previousElementSibling","prev","elementNextAll","nextEls","nextElementSibling","next","elementStyle","prop","elementIndex","child","previousSibling","elementParents","parents","elementTransitionEnd","fireCallBack","elementOuterSize","includeMargins","offsetWidth","makeElementsArray","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","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","toggleSlideClasses$1","condition","toggleSlideClasses","processLazyPreloader","imageEl","lazyEl","lazyPreloaderClass","unlazy","preload","amount","lazyPreloadPrevNext","slidesPerViewDynamic","activeColumn","preloadColumns","from","_","column","slideIndexLastInView","updateSize","clientWidth","clientHeight","isVertical","updateSlides","getDirectionPropertyValue","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","wrongRTL","isVirtual","previousSlidesLength","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","gridEnabled","slideSize","unsetSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","swiperSlideSize","slidesPerGroupSkip","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","offsetSize","allSlidesOffset","addToSnapGrid","addToSlidesGrid","v","checkOverflow","updateSlidesOffset","backFaceHiddenClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","getSlideByIndex","getSlideIndexByData","offsetHeight","minusOffset","offsetLeft","offsetTop","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","slideVisibleClass","slideFullyVisibleClass","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","updateActiveIndex","newActiveIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","initialized","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","transitionEmit","runCallbacks","direction","step","initial","preventInteractionOnTransition","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","isH","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","behavior","onSlideToWrapperTransitionEnd","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","clientLeft","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","n","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","loopAddBlankSlides","recalcSlides","byController","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","currentTranslate","shift","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","onTouchStart","originalEvent","pointerId","targetTouches","touchId","identifier","pageX","touches","simulateTouch","touchEventsTarget","which","button","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","preventTouchMoveFromPointerMove","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","allowMomentumBounce","grabCursor","setGrabCursor","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","isSafari","isWebView","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","onResize","setBreakpoint","isVirtualLoop","resizeTimeout","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","newProgress","previousTranslate","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","swiperElementNodeName","resizeObserver","eventsPrefix","url","breakpointsBase","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","prototypes","x","y","translateTo","translateBounds","newTranslate","onTranslateToWrapperTransitionEnd","transition","transitionDelay","moving","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","wasLocked","lastSlideRightEdge","addClasses","suffixes","entries","prefix","resultClasses","item","prepareClasses","removeClasses","extendedDefaults","Swiper","swipers","newParams","needPerspectiveFix","toLowerCase","String","major","minor","num","test","isSafariBrowser","need3dFix","calcBrowser","modules","__modules__","mod","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","toUpperCase","getWrapperSelector","slideSlots","hostEl","lazyElements","deleteInstance","cleanStyles","extendDefaults","newDefaults","installModule","use","module","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":""}