{"version":3,"file":"companyHistory.bundle.js","mappings":"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","sources":["webpack://4tochki/./webpack/bundles/companyHistory/index.js","webpack://4tochki/./webpack/src/modules/aside/index.js","webpack://4tochki/./webpack/src/modules/flipbox/index.js","webpack://4tochki/./webpack/src/modules/imagePopup/new.js","webpack://4tochki/./webpack/src/modules/tableWrapper/index.js","webpack://4tochki/./node_modules/swiper/modules/keyboard.mjs","webpack://4tochki/./node_modules/swiper/shared/create-element-if-not-defined.mjs","webpack://4tochki/./node_modules/swiper/modules/navigation.mjs","webpack://4tochki/./node_modules/swiper/shared/classes-to-selector.mjs","webpack://4tochki/./node_modules/swiper/modules/pagination.mjs","webpack://4tochki/./node_modules/swiper/modules/zoom.mjs","webpack://4tochki/./node_modules/swiper/modules/thumbs.mjs","webpack://4tochki/./node_modules/swiper/shared/ssr-window.esm.mjs","webpack://4tochki/./node_modules/swiper/shared/utils.mjs","webpack://4tochki/./node_modules/swiper/shared/swiper-core.mjs"],"sourcesContent":["/* NO JQUERY */\nimport './index.scss';\n\nimport Dropdown from 'bootstrap/js/dist/dropdown';\nArray.from(document.querySelectorAll('.dropdown')).forEach((dropdownNode) => new Dropdown(dropdownNode));\n\nimport * as jQuery from 'jquery';\nwindow.$ = jQuery;\n\nimport {config} from 'core/config';\nimport {flipbox} from 'modules/flipbox'; // done\nimport {imagePopup} from 'modules/imagePopup/new.js'; // done\nimport {tableWrapper} from 'modules/tableWrapper'; // done\nimport {aside} from 'modules/aside';\nimport Swiper from 'swiper';\nimport {Navigation} from 'swiper/modules';\nimport 'swiper/scss/navigation';\n\n$(function() {\n flipbox.bindEvents();\n imagePopup.init();\n aside.init();\n if (document.querySelector('.article_content-wrap') !== null) {\n tableWrapper.init('.article_content-wrap');\n }\n\n new Swiper('.SwiperGoods', {\n slidesPerView: 5,\n spaceBetween: 7,\n modules: [Navigation],\n navigation: {\n nextEl: '.sliderGoods-next',\n prevEl: '.sliderGoods-prev',\n },\n on: {\n sliderMove: function(e) {\n galleryEdgeGradient(e);\n },\n slideChange: function(e) {\n galleryEdgeGradient(e);\n },\n },\n breakpoints: {\n 0: {\n slidesPerView: 1,\n spaceBetween: 0,\n },\n 375: {\n slidesPerView: 1.5,\n spaceBetween: 14,\n },\n 550: {\n slidesPerView: 2,\n spaceBetween: 7,\n },\n 1010: {\n slidesPerView: 3,\n spaceBetween: 7,\n },\n 1310: {\n slidesPerView: 4,\n spaceBetween: 7,\n },\n 1450: {\n slidesPerView: 5,\n spaceBetween: 7,\n },\n },\n });\n\n const $$brandHistoryVideos = document.querySelectorAll('.js-brandHistory .video');\n if ($$brandHistoryVideos.length > 0) {\n $$brandHistoryVideos .forEach((element) => {\n element.innerHTML = `\n \n `;\n });\n };\n});\n","import './index.scss';\n\nexport const aside = {\n init: function () {\n const $buttonProductReview = document.querySelector('.js-button-product-review');\n const $productReview = document.querySelector('.js-product-review');\n\n if ($productReview && ($productReview.offsetHeight < $productReview.scrollHeight)) {\n $buttonProductReview.hidden = false;\n }\n\n if ($buttonProductReview !== null) {\n $buttonProductReview.addEventListener('click', function () {\n if ($productReview.classList.contains('active')) {\n $productReview.classList.remove('active');\n $buttonProductReview.innerText = 'Подробнее';\n } else {\n $productReview.classList.add('active');\n $buttonProductReview.innerText = 'Свернуть';\n }\n });\n }\n },\n};\n\n","import './index.scss';\n\nexport const flipbox = {\n bindEvents: function() {\n document.querySelectorAll('.js-flipbox-control').forEach((element) => {\n element.addEventListener('click', () => {\n document.querySelector('.flipbox').classList.toggle('flipbox--flipped');\n });\n });\n },\n};\n","import './new.scss';\n\nexport const imagePopup = {\n init: () => {\n const $$imagesGallery = document.querySelectorAll('.js-images-gallery');\n if ($$imagesGallery.length > 0) {\n $$imagesGallery.forEach((gallery) => {\n const $$images = gallery.querySelectorAll('img');\n if ($$images.length > 0) {\n $$images.forEach((img) => imagePopup.bindEvents(img));\n }\n });\n }\n },\n bindEvents: (img) => {\n img.classList.add('c-pointer');\n img.addEventListener('click', () => imagePopup.zoomer(img));\n },\n zoomer: (element) => {\n const zoomer = document.createElement('div');\n const img = document.createElement('img');\n\n zoomer.classList.add('zoomer');\n zoomer.textContent = 'Загрузка';\n\n img.classList.add('zoomer-img');\n img.src = element.src.split('?')[0];\n\n document.body.prepend(zoomer);\n img.onload = function() {\n zoomer.textContent = '';\n zoomer.append(img);\n };\n\n zoomer.onclick = zoomer.remove;\n },\n};\n","const SELECT = {\n 'class': 'table-wrap',\n};\n\nexport const tableWrapper = {\n init: function(selector) {\n const element = document.querySelector(selector);\n if (element !== null) {\n const tables = element.querySelectorAll('table');\n tables.forEach((element) => {\n if (element.closest(SELECT.class) !== null) return;\n\n const newTableHtml = `
${element.outerHTML}
`;\n element.insertAdjacentHTML('afterend', newTableHtml);\n element.remove();\n });\n }\n },\n};\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { a as elementParents, b as elementOffset } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Keyboard(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true\n }\n });\n function handle(event) {\n if (!swiper.enabled) return;\n const {\n rtlTranslate: rtl\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40;\n // Directions locks\n if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n return false;\n }\n if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n const el = swiper.el;\n const swiperWidth = el.clientWidth;\n const swiperHeight = el.clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = elementOffset(el);\n if (rtl) swiperOffset.left -= el.scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n emit('keyPress', kc);\n return undefined;\n }\n function enable() {\n if (swiper.keyboard.enabled) return;\n document.addEventListener('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n function disable() {\n if (!swiper.keyboard.enabled) return;\n document.removeEventListener('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n Object.assign(swiper.keyboard, {\n enable,\n disable\n });\n}\n\nexport { Keyboard as default };\n","import { 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 { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\n\nfunction Navigation(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n prevEl: null\n };\n const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e);\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n if (swiper.params.uniqueNavElements && typeof el === 'string' && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (subEl) {\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const initButton = (el, dir) => {\n if (el) {\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n }\n if (!swiper.enabled && el) {\n el.classList.add(...params.lockClass.split(' '));\n }\n };\n nextEl.forEach(el => initButton(el, 'next'));\n prevEl.forEach(el => initButton(el, 'prev'));\n }\n function destroy() {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const destroyButton = (el, dir) => {\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n };\n nextEl.forEach(el => destroyButton(el, 'next'));\n prevEl.forEach(el => destroyButton(el, 'prev'));\n }\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}\n\nexport { Navigation as default };\n","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 { f as elementOuterSize, g 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 const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e);\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 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 realIndex = swiper.realIndex;\n const newSlideIndex = swiper.getSlideIndexByData(index);\n const currentSlideIndex = swiper.getSlideIndexByData(swiper.realIndex);\n if (newSlideIndex > swiper.slides.length - swiper.loopedSlides) {\n const indexBeforeLoopFix = swiper.activeIndex;\n swiper.loopFix({\n direction: newSlideIndex > currentSlideIndex ? 'next' : 'prev',\n activeSlideIndex: newSlideIndex,\n slideTo: false\n });\n const indexAfterFix = swiper.activeIndex;\n if (indexBeforeLoopFix === indexAfterFix) {\n swiper.slideToLoop(realIndex, 0, false, true);\n }\n }\n swiper.slideToLoop(index);\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.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 { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren, a as elementParents, b as elementOffset, h as getTranslate } from '../shared/utils.mjs';\n\nfunction Zoom(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed'\n }\n });\n swiper.zoom = {\n enabled: false\n };\n let currentScale = 1;\n let isScaling = false;\n let fakeGestureTouched;\n let fakeGestureMoved;\n const evCache = [];\n const gesture = {\n originX: 0,\n originY: 0,\n slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n imageEl: undefined,\n imageWrapEl: undefined,\n maxRatio: 3\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {}\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined\n };\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.imageEl;\n const slideEl = gesture.slideEl;\n emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n }\n });\n function getDistanceBetweenTouches() {\n if (evCache.length < 2) return 1;\n const x1 = evCache[0].pageX;\n const y1 = evCache[0].pageY;\n const x2 = evCache[1].pageX;\n const y2 = evCache[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n }\n function getScaleOrigin() {\n if (evCache.length < 2) return {\n x: null,\n y: null\n };\n const box = gesture.imageEl.getBoundingClientRect();\n return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y) / currentScale];\n }\n function getSlideSelector() {\n return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n }\n function eventWithinSlide(e) {\n const slideSelector = getSlideSelector();\n if (e.target.matches(slideSelector)) return true;\n if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true;\n return false;\n }\n function eventWithinZoomContainer(e) {\n const selector = `.${swiper.params.zoom.containerClass}`;\n if (e.target.matches(selector)) return true;\n if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true;\n return false;\n }\n\n // Events\n function onGestureStart(e) {\n if (e.pointerType === 'mouse') {\n evCache.splice(0, evCache.length);\n }\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n evCache.push(e);\n if (evCache.length < 2) {\n return;\n }\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches();\n if (!gesture.slideEl) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex];\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n if (!gesture.imageWrapEl) {\n gesture.imageEl = undefined;\n return;\n }\n gesture.maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n }\n if (gesture.imageEl) {\n const [originX, originY] = getScaleOrigin();\n gesture.originX = originX;\n gesture.originY = originY;\n gesture.imageEl.style.transitionDuration = '0ms';\n }\n isScaling = true;\n }\n function onGestureChange(e) {\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache[pointerIndex] = e;\n if (evCache.length < 2) {\n return;\n }\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches();\n if (!gesture.imageEl) {\n return;\n }\n zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function onGestureEnd(e) {\n if (!eventWithinSlide(e)) return;\n if (e.pointerType === 'mouse' && e.type === 'pointerout') return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache.splice(pointerIndex, 1);\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n if (!gesture.imageEl) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`;\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale > 1 && gesture.slideEl) {\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n } else if (zoom.scale <= 1 && gesture.slideEl) {\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n }\n if (zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n gesture.slideEl = undefined;\n }\n }\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.imageEl) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n const event = evCache.length > 0 ? evCache[0] : e;\n image.touchesStart.x = event.pageX;\n image.touchesStart.y = event.pageY;\n }\n function onTouchMove(e) {\n if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return;\n const zoom = swiper.zoom;\n if (!gesture.imageEl) return;\n if (!image.isTouched || !gesture.slideEl) return;\n if (!image.isMoved) {\n image.width = gesture.imageEl.offsetWidth;\n image.height = gesture.imageEl.offsetHeight;\n image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0;\n image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0;\n gesture.slideWidth = gesture.slideEl.offsetWidth;\n gesture.slideHeight = gesture.slideEl.offsetHeight;\n gesture.imageWrapEl.style.transitionDuration = '0ms';\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX;\n image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY;\n const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y));\n if (touchesDiff > 5) {\n swiper.allowClick = false;\n }\n if (!image.isMoved && !isScaling) {\n if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n image.isTouched = false;\n return;\n }\n if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n image.isTouched = false;\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n image.isMoved = true;\n const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio);\n const {\n originX,\n originY\n } = gesture;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2);\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2);\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTouchEnd() {\n const zoom = swiper.zoom;\n if (!gesture.imageEl) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`;\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) {\n if (gesture.imageEl) {\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n }\n if (gesture.imageWrapEl) {\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n }\n gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`);\n zoom.scale = 1;\n currentScale = 1;\n gesture.slideEl = undefined;\n gesture.imageEl = undefined;\n gesture.imageWrapEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n }\n }\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (e && e.target) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n }\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.pageX;\n touchY = e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n const forceZoomRatio = typeof e === 'number' ? e : null;\n if (currentScale === 1 && forceZoomRatio) {\n touchX = undefined;\n touchY = undefined;\n }\n zoom.scale = forceZoomRatio || gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n currentScale = forceZoomRatio || gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n if (e && !(currentScale === 1 && forceZoomRatio)) {\n slideWidth = gesture.slideEl.offsetWidth;\n slideHeight = gesture.slideEl.offsetHeight;\n offsetX = elementOffset(gesture.slideEl).left + window.scrollX;\n offsetY = elementOffset(gesture.slideEl).top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n imageWidth = gesture.imageEl.offsetWidth;\n imageHeight = gesture.imageEl.offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n if (forceZoomRatio && zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n }\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`;\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n zoom.scale = 1;\n currentScale = 1;\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n gesture.slideEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n }\n\n // Toggle Zoom\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n function getListeners() {\n const passiveListener = swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n const activeListenerWithCapture = swiper.params.passiveListeners ? {\n passive: false,\n capture: true\n } : true;\n return {\n passiveListener,\n activeListenerWithCapture\n };\n }\n\n // Attach/Detach Events\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n zoom.enabled = false;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd();\n });\n on('doubleTap', (_s, e) => {\n if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle\n });\n}\n\nexport { Zoom as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { j as isObject, e as elementChildren } from '../shared/utils.mjs';\n\nfunction Thumb(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs'\n }\n });\n let initialized = false;\n let swiperCreated = false;\n swiper.thumbs = {\n swiper: null\n };\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n swiper.slideToLoop(slideToIndex);\n } else {\n swiper.slideTo(slideToIndex);\n }\n }\n function init() {\n const {\n thumbs: thumbsParams\n } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper.update();\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass));\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).forEach(slideEl => {\n slideEl.classList.add(thumbActiveClass);\n });\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n if (thumbsSwiper.slides[swiper.realIndex + i]) {\n thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass);\n }\n }\n }\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n const currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0];\n newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide);\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ;\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n }\n on('beforeInit', () => {\n const {\n thumbs\n } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) {\n const document = getDocument();\n const getThumbsElementAndInit = () => {\n const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper;\n if (thumbsElement && thumbsElement.swiper) {\n thumbs.swiper = thumbsElement.swiper;\n init();\n update(true);\n } else if (thumbsElement) {\n const onThumbsSwiper = e => {\n thumbs.swiper = e.detail[0];\n thumbsElement.removeEventListener('init', onThumbsSwiper);\n init();\n update(true);\n thumbs.swiper.update();\n swiper.update();\n };\n thumbsElement.addEventListener('init', onThumbsSwiper);\n }\n return thumbsElement;\n };\n const watchForThumbsToAppear = () => {\n if (swiper.destroyed) return;\n const thumbsElement = getThumbsElementAndInit();\n if (!thumbsElement) {\n requestAnimationFrame(watchForThumbsToAppear);\n }\n };\n requestAnimationFrame(watchForThumbsToAppear);\n } else {\n init();\n update(true);\n }\n });\n on('slideChange update resize observerUpdate', () => {\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n}\n\nexport { Thumb as default };\n","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n if (target === void 0) {\n target = {};\n }\n if (src === void 0) {\n src = {};\n }\n Object.keys(src).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\nconst ssrDocument = {\n body: {},\n addEventListener() {},\n removeEventListener() {},\n activeElement: {\n blur() {},\n nodeName: ''\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() {}\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() {},\n getElementsByTagName() {\n return [];\n }\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n }\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: ''\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n },\n history: {\n replaceState() {},\n pushState() {},\n go() {},\n back() {}\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() {},\n removeEventListener() {},\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n }\n };\n },\n Image() {},\n Date() {},\n screen: {},\n setTimeout() {},\n clearTimeout() {},\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n }\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { getWindow as a, getDocument as g };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n if (selector === void 0) {\n selector = '';\n }\n return [...element.children].filter(el => el.matches(selector));\n}\nfunction createElement(tag, classes) {\n if (classes === void 0) {\n classes = [];\n }\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : [classes]));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n}\n\nexport { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, elementIndex as g, getTranslate as h, elementTransitionEnd as i, isObject as j, getSlideTransformEl as k, elementStyle as l, elementNextAll as m, nextTick as n, elementPrevAll as o, animateCSSModeScroll as p, extend as q, deleteProps as r, setCSSProperty as s };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, l as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, m as elementNextAll, o as elementPrevAll, h as getTranslate, p as animateCSSModeScroll, n as nextTick, d as now, q as extend, g as elementIndex, c as createElement, r as deleteProps } from './utils.mjs';\n\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nlet deviceCached;\nfunction calcDevice(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nlet browser;\nfunction calcBrowser() {\n const window = getWindow();\n let needPerspectiveFix = false;\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n if (isSafari()) {\n const ua = String(window.navigator.userAgent);\n if (ua.includes('Version/')) {\n const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n }\n }\n return {\n isSafari: needPerspectiveFix || isSafari(),\n needPerspectiveFix,\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nfunction Resize(_ref) {\n let {\n swiper,\n on,\n emit\n } = _ref;\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(_ref2 => {\n let {\n contentBoxSize,\n contentRect,\n target\n } = _ref2;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n\nfunction Observer(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const observers = [];\n const window = getWindow();\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (swiper.__preventObserver__) return;\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.hostEl);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.hostEl, {\n childList: swiper.params.observeSlideChildren\n });\n\n // Observe wrapper\n attach(swiper.wrapperEl, {\n attributes: false\n });\n };\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler() {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit() {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};\n\nfunction updateSize() {\n const swiper = this;\n let width;\n let height;\n const el = swiper.el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = el.clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = el.clientHeight;\n }\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}\n\nfunction updateSlides() {\n const swiper = this;\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const {\n wrapperEl,\n slidesEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n } else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\n });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n }\n\n // Calc slides\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n let slide;\n if (slides[i]) slide = slides[i];\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) {\n slide.style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide.style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for (let i = 0; i < groups; i += 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n }\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n if (params.slidesPerGroup === 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n }\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap <= 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.el.classList.remove(backFaceHiddenClass);\n }\n }\n}\n\nfunction updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides[swiper.getSlideIndexByData(index)];\n }\n return swiper.slides[index];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || []).forEach(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\n\nfunction updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n }\n}\n\nfunction updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass);\n });\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n let spaceBetween = params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides[i].classList.add(params.slideVisibleClass);\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}\n\nfunction updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd,\n progressLoop\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n}\n\nfunction updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n });\n let activeSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n activeSlide = slides[activeIndex];\n }\n if (activeSlide) {\n // Active classes\n activeSlide.classList.add(params.slideActiveClass);\n\n // Next Slide\n let nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n if (nextSlide) {\n nextSlide.classList.add(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n if (prevSlide) {\n prevSlide.classList.add(params.slidePrevClass);\n }\n }\n swiper.emitSlidesClasses();\n}\n\nconst processLazyPreloader = (swiper, imageEl) => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n const slideEl = imageEl.closest(slideSelector());\n if (slideEl) {\n let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (!lazyEl && swiper.isElement) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\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) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n }\n return;\n }\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (swiper.slides[activeIndex]) {\n realIndex = parseInt(swiper.slides[activeIndex].getAttribute('data-swiper-slide-index') || activeIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}\n\nfunction updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = e.closest(`.${params.slideClass}, swiper-slide`);\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}\n\nvar translate = {\n getTranslate: getSwiperTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};\n\nfunction setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n 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 (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex];\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n // Update Index\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}\n\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n } else {\n newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n enabled,\n params,\n animating\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'next'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\n if (!enabled) return swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal, threshold) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (threshold === void 0) {\n threshold = 0.5;\n }\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n\nvar slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};\n\nfunction loopCreate(slideRealIndex) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n swiper.loopFix({\n slideRealIndex,\n direction: params.centeredSlides ? undefined : 'next'\n });\n}\n\nfunction loopFix(_temp) {\n let {\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n byController,\n byMousewheel\n } = _temp === void 0 ? {} : _temp;\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n const {\n slides,\n allowSlidePrev,\n allowSlideNext,\n slidesEl,\n params\n } = swiper;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n if (swiper.virtual && params.virtual.enabled) {\n if (slideTo) {\n if (!params.centeredSlides && swiper.snapIndex === 0) {\n swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n return;\n }\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10));\n let loopedSlides = params.loopedSlides || slidesPerView;\n if (loopedSlides % params.slidesPerGroup !== 0) {\n loopedSlides += params.slidesPerGroup - loopedSlides % params.slidesPerGroup;\n }\n swiper.loopedSlides = loopedSlides;\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n let activeIndex = swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(swiper.slides.filter(el => el.classList.contains(params.slideActiveClass))[0]);\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n // prepend last slides before start\n if (activeSlideIndex < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeSlideIndex, params.slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeSlideIndex; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n prependSlidesIndexes.push(slides.length - index - 1);\n }\n } else if (activeSlideIndex /* + slidesPerView */ > swiper.slides.length - loopedSlides * 2) {\n slidesAppended = Math.max(activeSlideIndex - (swiper.slides.length - loopedSlides * 2), params.slidesPerGroup);\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n appendSlidesIndexes.push(index);\n }\n }\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n swiper.slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(swiper.slides[index]);\n swiper.slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n swiper.slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(swiper.slides[index]);\n swiper.slides[index].swiperLoopMoveDOM = false;\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (slideTo) {\n if (prependSlidesIndexes.length > 0 && isPrev) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex + slidesPrepended, 0, false, true);\n if (setTranslate) {\n swiper.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else {\n if (setTranslate) {\n swiper.slideToLoop(slideRealIndex, 0, false, true);\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else if (appendSlidesIndexes.length > 0 && isNext) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n if (setTranslate) {\n swiper.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else {\n swiper.slideToLoop(slideRealIndex, 0, false, true);\n }\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex,\n 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 onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n data.evCache.push(event);\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!swiper.wrapperEl.contains(targetEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = event.composedPath ? event.composedPath() : event.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) data.evCache[pointerIndex] = e;\n const targetTouch = data.evCache.length > 1 ? data.evCache[0] : e;\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!e.target.matches(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n prevX: swiper.touches.currentX,\n prevY: swiper.touches.currentY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling || swiper.zoom && swiper.params.zoom && swiper.params.zoom.enabled && data.evCache.length > 1) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n if (!data.isMoved) {\n if (isLoop) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n if (data.isMoved && prevTouchesDirection !== swiper.touchesDirection && isLoop && Math.abs(diff) >= 1) {\n // need another loop fix\n swiper.loopFix({\n direction: swiper.swipeDirection,\n setTranslate: true\n });\n loopFixed = true;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && !loopFixed && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.size / 2 : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && !loopFixed && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.size / 2 : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === event.pointerId);\n if (pointerIndex >= 0) {\n data.evCache.splice(pointerIndex, 1);\n }\n if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(event.type)) {\n const proceed = ['pointercancel', 'contextmenu'].includes(event.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n\nfunction onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n const isVirtualLoop = isVirtual && params.loop;\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n if (swiper.params.loop && !isVirtual) {\n swiper.slideToLoop(swiper.realIndex, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n clearTimeout(swiper.autoplay.resizeTimeout);\n swiper.autoplay.resizeTimeout = setTimeout(() => {\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.resume();\n }\n }, 500);\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n\nfunction onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n\nfunction onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n swiper.emit('setTranslate', swiper.translate, false);\n}\n\nfunction onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n return;\n }\n swiper.update();\n}\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n el,\n wrapperEl,\n device\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n\n // Touch Events\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n 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 document = getDocument();\n const {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n if (!dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nvar events$1 = {\n attachEvents,\n detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasEnabled = params.enabled;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n if (typeof breakpointParams[prop] === 'undefined') return;\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n }\n swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n\nvar breakpoints = {\n setBreakpoint,\n getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\nfunction addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}\n\nvar classes = {\n addClasses,\n removeClasses\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nvar checkOverflow$1 = {\n checkOverflow\n};\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 5,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // loop\n loop: false,\n loopedSlides: null,\n loopPreventsSliding: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events: events$1,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor() {\n let el;\n let params;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n evCache: []\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);\n }\n recalcSlides() {\n const swiper = this;\n const {\n slidesEl,\n params\n } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n if (exact === void 0) {\n exact = false;\n }\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? slides[activeIndex].swiperSlideSize : 0;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n }\n });\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n setTranslate();\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n translated = swiper.slideTo(slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.forEach(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n if (swiper.rtl) {\n swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n mount(element) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n let el = element || swiper.params.el;\n if (typeof el === 'string') {\n el = document.querySelector(el);\n }\n if (!el) {\n return false;\n }\n el.swiper = swiper;\n if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === 'SWIPER-CONTAINER') {\n swiper.isElement = true;\n }\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = el.shadowRoot.querySelector(getWrapperSelector());\n // Children needs to return slot items\n return res;\n }\n return elementChildren(el, getWrapperSelector())[0];\n };\n // Find Wrapper\n let wrapperEl = getWrapper();\n if (!wrapperEl && swiper.params.createElements) {\n wrapperEl = createElement('div', swiper.params.wrapperClass);\n el.append(wrapperEl);\n elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n wrapperEl.append(slideEl);\n });\n }\n Object.assign(swiper, {\n el,\n wrapperEl,\n slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n hostEl: swiper.isElement ? el.parentNode.host : el,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n });\n return true;\n }\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Attach events\n swiper.attachEvents();\n 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 el.removeAttribute('style');\n wrapperEl.removeAttribute('style');\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n }\n }\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n swiper.el.swiper = null;\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\n\nexport { Swiper as S, defaults as d };\n"],"names":["Array","from","document","querySelectorAll","forEach","dropdownNode","Dropdown","window","$","jQuery","flipbox","imagePopup","aside","querySelector","tableWrapper","Swiper","slidesPerView","spaceBetween","modules","Navigation","navigation","nextEl","prevEl","on","sliderMove","e","galleryEdgeGradient","slideChange","breakpoints","$$brandHistoryVideos","length","element","innerHTML","dataset","width","height","videoId","init","$buttonProductReview","$productReview","offsetHeight","scrollHeight","hidden","addEventListener","classList","contains","remove","innerText","add","bindEvents","toggle","$$imagesGallery","gallery","$$images","img","zoomer","createElement","textContent","src","split","body","prepend","onload","append","onclick","SELECT","selector","closest","newTableHtml","outerHTML","insertAdjacentHTML","Keyboard","_ref","swiper","extendParams","emit","g","handle","event","enabled","rtlTranslate","rtl","originalEvent","kc","keyCode","charCode","pageUpDown","params","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","allowSlideNext","isHorizontal","isVertical","allowSlidePrev","shiftKey","altKey","ctrlKey","metaKey","activeElement","nodeName","toLowerCase","onlyInViewport","inView","el","slideClass","slideActiveClass","swiperWidth","clientWidth","swiperHeight","clientHeight","windowWidth","innerWidth","windowHeight","innerHeight","swiperOffset","left","scrollLeft","swiperCoord","top","i","point","preventDefault","returnValue","slideNext","slidePrev","enable","disable","removeEventListener","Object","assign","originalParams","checkProps","createElements","keys","key","auto","c","className","hideOnClick","disabledClass","hiddenClass","lockClass","navigationDisabledClass","makeElementsArray","isArray","filter","getEl","res","isElement","uniqueNavElements","toggleEl","disabled","subEl","tagName","watchOverflow","isLocked","update","loop","isBeginning","rewind","isEnd","onPrevClick","onNextClick","initButton","dir","destroy","destroyButton","_s","targetEl","target","includes","pagination","clickable","isHidden","classes","trim","replace","Pagination","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","type","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","position","onBulletClick","index","slidesPerGroup","realIndex","newSlideIndex","getSlideIndexByData","currentSlideIndex","slides","loopedSlides","indexBeforeLoopFix","activeIndex","loopFix","direction","activeSlideIndex","slideTo","slideToLoop","current","previousIndex","slidesLength","virtual","total","Math","ceil","snapGrid","previousRealIndex","floor","snapIndex","previousSnapIndex","firstIndex","lastIndex","midIndex","style","undefined","max","min","classesToRemove","map","suffix","s","flat","bullet","bulletIndex","setAttribute","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","offsetProp","subElIndex","fractionEl","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","transform","transitionDuration","speed","render","paginationHTML","numberOfBullets","freeMode","call","push","Zoom","zoom","maxRatio","minRatio","containerClass","zoomedSlideClass","fakeGestureTouched","fakeGestureMoved","currentScale","isScaling","evCache","gesture","originX","originY","slideEl","slideWidth","slideHeight","imageEl","imageWrapEl","image","isTouched","isMoved","currentX","currentY","minX","minY","maxX","maxY","startX","startY","touchesStart","touchesCurrent","velocity","x","y","prevPositionX","prevPositionY","prevTime","getDistanceBetweenTouches","x1","pageX","y1","pageY","x2","y2","sqrt","eventWithinSlide","slideSelector","matches","onGestureStart","pointerType","splice","scaleStart","getAttribute","box","getBoundingClientRect","getScaleOrigin","onGestureChange","pointerIndex","findIndex","cachedEv","pointerId","scaleMove","onGestureEnd","onTouchMove","hostEl","containerEl","eventWithinZoomContainer","offsetWidth","scaledWidth","scaledHeight","abs","allowClick","cancelable","stopPropagation","scaleRatio","Date","now","onTransitionEnd","indexOf","zoomIn","slidesEl","touchX","touchY","offsetX","offsetY","diffX","diffY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","cssMode","wrapperEl","overflow","touchAction","forceZoomRatio","scrollX","scrollY","zoomOut","zoomToggle","getListeners","passiveListener","passiveListeners","passive","capture","activeListenerWithCapture","eventName","defineProperty","get","set","value","device","android","onTouchStart","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","onTouchEnd","animating","in","out","Thumb","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","initialized","swiperCreated","onThumbClick","thumbsSwiper","destroyed","clickedIndex","clickedSlide","slideToIndex","parseInt","thumbsParams","SwiperClass","constructor","watchSlidesProgress","slideToClickedSlide","thumbsSwiperParams","initial","slidesPerViewDynamic","thumbsToActivate","thumbActiveClass","centeredSlides","useOffset","currentThumbsIndex","newThumbsIndex","newThumbsSlide","visibleSlidesIndexes","HTMLElement","getThumbsElementAndInit","thumbsElement","onThumbsSwiper","detail","watchForThumbsToAppear","requestAnimationFrame","duration","setTransition","isObject","obj","extend","ssrDocument","blur","getElementById","createEvent","initEvent","children","childNodes","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","screen","setTimeout","clearTimeout","matchMedia","callback","cancelAnimationFrame","id","getWindow","win","deleteProps","object","nextTick","delay","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","webkitTransform","a","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","o","prototype","slice","isNode","node","nodeType","to","arguments","noExtend","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","targetPosition","side","startPosition","translate","time","startTime","scrollSnapType","cssModeFrameID","isOutOfBound","animate","getTime","progress","easeProgress","cos","PI","currentPosition","scrollTo","elementChildren","tag","elementOffset","clientTop","clientLeft","scrollTop","elementPrevAll","prevEls","previousElementSibling","prev","elementNextAll","nextEls","nextElementSibling","next","elementStyle","prop","elementIndex","child","previousSibling","elementParents","parents","parent","parentElement","elementOuterSize","size","includeMargins","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","ios","screenWidth","screenHeight","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","String","major","minor","num","Number","isWebView","test","calcBrowser","eventsEmitter","events","handler","priority","self","eventsListeners","method","once","onceHandler","off","__emitterProxy","_len","args","_key","apply","onAny","eventsAnyListeners","offAny","eventHandler","data","context","_len2","_key2","unshift","processLazyPreloader","lazyEl","lazyPreloaderClass","shadowRoot","unlazy","removeAttribute","preload","amount","lazyPreloadPrevNext","grid","rows","activeColumn","preloadColumns","_","column","slideIndexLastInView","updateSize","isNaN","updateSlides","getDirectionLabel","property","getDirectionPropertyValue","label","swiperSize","wrongRTL","isVirtual","previousSlidesLength","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","gridEnabled","slideSize","initSlides","shouldResetSlideSize","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","swiperSlideSize","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","addToSnapGrid","addToSlidesGrid","v","checkOverflow","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","getSlideByIndex","visibleSlides","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","slideVisibleClass","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","slideNextClass","slidePrevClass","nextSlide","prevSlide","emitSlidesClasses","updateActiveIndex","newActiveIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","runCallbacksOnInit","updateClickedSlide","slideFound","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","previousTranslate","translateTo","runCallbacks","translateBounds","internal","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","step","normalizedTranslate","normalizedGrid","normalizedGridNext","transitionStart","transitionEnd","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","newIndex","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","slideReset","slideToClosest","threshold","currentSnap","getSlideIndex","n","loopCreate","slideRealIndex","byMousewheel","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","swiperLoopMoveDOM","recalcSlides","currentSlideTranslate","diff","touches","touchEventsData","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","simulateTouch","touchEventsTarget","which","button","swipingClassHasValue","noSwipingClass","eventPath","composedPath","path","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","swipeHandler","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","targetTouch","preventedByNestedSwiper","prevX","prevY","touchReleaseOnEdges","targetTouches","touchAngle","atan2","touchMoveStopPropagation","nested","touchesDiff","previousX","previousY","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","startTranslate","evt","bubbles","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","loopFixed","disableParentSwiper","resistanceRatio","resistance","followFinger","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","onLoad","dummyEventAttached","dummyEventListener","domMethod","swiperMethod","updateOnWindowResize","isGridEnabled","defaults","resizeObserver","url","breakpointsBase","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","prototypes","transition","transitionDelay","moving","__preventObserver__","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","fill","wasModuleEnabled","isModuleEnabled","directionChanged","needsReLoop","changeDirection","isEnabled","currentHeight","points","substr","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","item","prepareClasses","removeClasses","extendedDefaults","swipers","newParams","__modules__","mod","swiperParams","passedParams","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","getWrapperSelector","getWrapper","slideSlots","lazyElements","deleteInstance","cleanStyles","static","newDefaults","module","m","installModule","prototypeGroup","protoMethod","use","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":""}