{"version":3,"file":"pages.js","mappings":"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","sources":["webpack://build/../otimizi/assets/javascripts/components/utilities.js","webpack://build/../otimizi/assets/javascripts/pages/pages/setFaq.js","webpack://build/../otimizi/node_modules/swiper/shared/ssr-window.esm.mjs","webpack://build/../otimizi/node_modules/swiper/shared/utils.mjs","webpack://build/../otimizi/node_modules/swiper/shared/swiper-core.mjs","webpack://build/../otimizi/node_modules/swiper/shared/create-element-if-not-defined.mjs","webpack://build/../otimizi/node_modules/swiper/shared/classes-to-selector.mjs","webpack://build/../otimizi/assets/javascripts/pages/pages.js","webpack://build/../otimizi/node_modules/swiper/modules/navigation.mjs","webpack://build/../otimizi/node_modules/swiper/modules/pagination.mjs","webpack://build/../otimizi/node_modules/swiper/modules/zoom.mjs","webpack://build/../otimizi/node_modules/swiper/modules/thumbs.mjs","webpack://build/../otimizi/assets/javascripts/pages/pages/setAbas.js"],"sourcesContent":["// ===============================================================\n// ADIÇÃO MANUAL DE ASSET\n// ===============================================================\n// Usado para incluir assets no código de forma manual, conforme a necessidade\nexport function addAsset(source, onloadCallback) {\n if (!source || source === '') return console.error(`addAsset: caminho não definido.`);\n\n if (source.includes('.js')) {\n const scriptTag = document.createElement('script');\n scriptTag.setAttribute('src', source);\n\n if (onloadCallback && typeof onloadCallback === 'function') {\n scriptTag.onload = onloadCallback;\n }\n\n return document.body.appendChild(scriptTag);\n } else if (source.includes('.css')) {\n const linkTag = document.createElement('link');\n linkTag.setAttribute('rel', 'stylesheet');\n linkTag.setAttribute('type', 'text/css');\n linkTag.setAttribute('href', source);\n return document.head.appendChild(linkTag);\n } else {\n const error = `addAsset: Erro ao criar o asset. Tipo de script não definido, ou não possui tratamento para este tipo de asset.`;\n return console.error(error, source);\n }\n}\n\n// ===============================================================\n// BUSCA O CARRINHO ATIVO\n// ===============================================================\nexport async function getCart() {\n try {\n const response = await fetch('/carrinho');\n const cart = await response.json();\n return cart;\n } catch (error) {\n console.error('Erro ao buscar os dados do carrinho');\n console.error(error);\n }\n}\n\n// ===============================================================\n// SERIALIZE ARRAY\n// ===============================================================\nexport function serializeArray(form) {\n const formData = new FormData(form);\n const data = {};\n\n for (const [name, value] of formData) {\n data[name] = value;\n }\n\n const formBody = [];\n\n for (const key in data) {\n const encodeKey = encodeURIComponent(key);\n const encodeValue = encodeURIComponent(data[key]);\n formBody.push(`${encodeKey}=${encodeValue}`);\n }\n\n return formBody.join('&');\n}\n\n// ===============================================================\n// URL ENCODE FORM DATA\n// ===============================================================\nexport function urlencodeFormData(formData) {\n let string = '';\n\n function encode(s) {\n return encodeURIComponent(s).replace(/%20/g, '+');\n }\n\n for (const pair of formData.entries()) {\n if (typeof pair[1] == 'string') {\n string += (string ? '&' : '') + encode(pair[0]) + '=' + encode(pair[1]);\n }\n }\n return string;\n}\n\n// ===============================================================\n// SLIDE TOGGLE\n// ===============================================================\nexport function slideToggle(contentWrapper, content, duration = 500) {\n let initialHeight = window.getComputedStyle(contentWrapper).height;\n\n if (initialHeight == '0px') {\n return slideDown(contentWrapper, content, duration);\n } else {\n return slideUp(contentWrapper, duration);\n }\n}\n\n// ===============================================================\n// SLIDE UP\n// ===============================================================\nexport function slideUp(contentWrapper, duration = 500) {\n contentWrapper.style.height = '0px';\n contentWrapper.style.transition = `height ${duration} ease`;\n}\n\n// ===============================================================\n// SLIDE DOWN\n// ===============================================================\nexport function slideDown(contentWrapper, content, duration = 500) {\n let innerHeight = content.clientHeight;\n\n contentWrapper.style.height = `${innerHeight}px`;\n contentWrapper.style.transition = `height ${duration} ease`;\n}\n\n// ===============================================================\n// UPDATE DISCOUNT IN PRODUCT BLOCK\n// ===============================================================\nexport function updatePriceBlock() {\n const priceEls = document.querySelectorAll('[data-init-price]');\n\n if (priceEls == null) return;\n\n priceEls.forEach((priceEl) => {\n const discount = priceEl.dataset.discountPercent;\n\n priceEl.dispatchEvent(new Event('change'));\n\n // discount\n if (discount != '0') {\n priceEl.style.setProperty('--discount', `'-${discount}%'`);\n }\n });\n}\n\n// ===============================================================\n// PREÇO POR AJAX\n// ===============================================================\nexport function getPriceProd() {\n var selectors = document.querySelectorAll('[data-update-price]');\n var attr = 'update-price';\n\n if (selectors.length() > 0) {\n selectors.forEach((selector) => {\n var prodId = selector.dataset(attr);\n var url = '/produto/preco/' + prodId;\n\n if (prodId != '' && prodId != null) {\n $.ajax({\n url: url,\n type: 'GET',\n })\n .done((resp) => {\n selector.innerHTML = resp;\n })\n .fail((resp) => {\n console.error(resp);\n });\n }\n });\n }\n}\n\n// ===============================================================\n// DEBOUNCE\n// ===============================================================\n/*\n Debounce retorna uma função que enquanto continuar sendo chamada não é executada\n A função só será executada quando para de ser chamada por N milisegundos\n Útil para melhorar a performance de códigos que são executados muitas vezes por segundo, como o $(window).resize()\n\n Ex:\n \n $(window).resize(debounce(function() {\n // código a ser executado\n }, 500))\n \n No exemplo acima a função só será executada 500ms depois do último resize\n Abra o link abaixo e redimensione a janela branca e acompanhe o output do console\n Exemplo codepen: https://codepen.io/valkervieira/pen/oNgqyWY\n\n Um caso comum de uso é em lojas onde a seleção de um filtro na página de tag recarrega automáticamente a página\n Com o debounce o usuário pode escolher vários filtros rapidamente e a página só recarrega quando parar de escolher\n*/\n\nexport function debounce(func, wait, immediate) {\n var timeout;\n immediate || (immediate = true);\n\n return function () {\n var context = this,\n args = arguments;\n\n var later = function () {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n\n var callNow = immediate && !timeout;\n\n clearTimeout(timeout);\n\n timeout = setTimeout(later, wait);\n\n if (callNow) func.apply(context, args);\n };\n}\n\n// ===============================================================\n// THROTTLE\n// ===============================================================\n/*\n Throttle diminui a frequencia que uma função é executada\n Enquanto no debounce a função só é executada quando para de ser chamada, no throttle ela\n continua sendo executada só que em um intervalo mínimo de N milisegundos (default = 250)\n\n Ex:\n\n $(window).resize(throttle() {\n // código a ser executado\n }, 500)\n\n No exemplo acima a função resize é chamada várias vezes por segundo mas só é executada 1 vez a cada 500ms\n Abra o link abaixo, redimensione a janela branca e acompanhe o console\n Exemplo codepen: https://codepen.io/valkervieira/pen/yLyKEPW\n\n Um caso comum de uso é checar se o scroll passou de um determinado ponto, para fixar um header ou alterar algum elemento do DOM\n*/\nexport function throttle(fn, threshhold, scope) {\n threshhold || (threshhold = 250);\n var last, deferTimer;\n return function () {\n var context = scope || this;\n\n var now = +new Date(),\n args = arguments;\n if (last && now < last + threshhold) {\n // hold on to it\n clearTimeout(deferTimer);\n deferTimer = setTimeout(function () {\n last = now;\n fn.apply(context, args);\n }, threshhold);\n } else {\n last = now;\n fn.apply(context, args);\n }\n };\n}\n\n// ===============================================================\n// FORMAT MONEY\n// ===============================================================\nexport function formatMoney(value) {\n // FORMATA UM VALOR\n return (\n 'R$ ' +\n value\n .toFixed(2)\n .replace('.', ',')\n .replace(/(\\d)(?=(\\d{3})+\\,)/g, '$1.')\n );\n}\n\n// ===============================================================\n// FORMAT VALUE\n// ===============================================================\n\nexport const formatValue = function (value = '') {\n let parsedValue = value;\n if (typeof value === 'number') {\n parsedValue = value.toFixed(2).toString();\n }\n return parsedValue.replace('.', ',');\n};\n\n// ===============================================================\n// VALIDA QUANTIDADE\n// ===============================================================\nexport function validateQuantity(_val) {\n // VALIDA SE A QUANTIDADE INFORMADA É UM NÚMERO\n if (!isNaN(_val)) {\n if (parseInt(_val) > 0) {\n return true;\n }\n }\n\n return false;\n}\n\n// ===============================================================\n// CLEAR NUMBER\n// ===============================================================\nexport function getClearNumber(_val) {\n // RETORNA UM NÚMERO LIMPO COMO INT\n if (!isNaN(_val)) {\n var clearNumber = parseInt(_val);\n\n return clearNumber;\n }\n\n return false;\n}\n\n// ===============================================================\n// BUSCA\n// ===============================================================\nexport function setSearch() {\n const toggleButton = document.querySelectorAll('[data-toggle-search]');\n const search = document.querySelector('[data-search-container]');\n const input = document.querySelector('[data-search-input]');\n\n toggleButton.length > 0 &&\n toggleButton.forEach((button) => {\n button.addEventListener('click', () => {\n if (search.classList.contains('open')) {\n search.classList.remove('open');\n } else {\n search.classList.add('open');\n setTimeout(() => {\n input.focus();\n }, 400);\n }\n });\n });\n}\n\n// ===============================================================\n// CONDITIONAL LAZY\n// ===============================================================\nexport function handleConditionalLazy() {\n const eventType = window.innerWidth <= 1024 ? 'scroll' : 'mousemove';\n window.addEventListener(\n eventType,\n () => {\n const conditionalLazyElements = document.querySelectorAll('[data-conditional-lazy]');\n conditionalLazyElements.length > 0 &&\n conditionalLazyElements.forEach((element) => {\n element.classList.add('lazy');\n window.lazyLoadInstance && window.lazyLoadInstance.update();\n });\n },\n { once: true }\n );\n}\n\n// ===============================================================\n// MÁSCARA PARA INPUTS\n// ===============================================================\nexport function formMasks() {\n const inputPhone = document.querySelector('[data-phone-mask]'),\n inputCEP = document.querySelector('[data-cep-mask]'),\n inputCPF = document.querySelector('[data-cpf-mask]'),\n inputCNPJ = document.querySelector('[data-cnpj-mask]');\n\n inputPhone &&\n inputPhone.addEventListener('input', (e) => {\n //(XX) XXXXX-XXXX\n var phoneValue = e.target.value.replace(/\\D/g, '').match(/(\\d{0,2})(\\d{0,5})(\\d{0,4})/);\n e.target.value = !phoneValue[2]\n ? phoneValue[1]\n : '(' + phoneValue[1] + ') ' + phoneValue[2] + (phoneValue[3] ? '-' + phoneValue[3] : '');\n });\n\n inputCEP &&\n inputCEP.addEventListener('input', (e) => {\n //XXXXX-XX\n var cepValue = e.target.value.replace(/\\D/g, '').match(/(\\d{0,5})(\\d{0,3})/);\n e.target.value = !cepValue[2] ? cepValue[1] : cepValue[1] + '-' + cepValue[2];\n });\n\n inputCPF &&\n inputCPF.addEventListener('input', (e) => {\n //XXX.XXX.XXX-XX\n var cpfValue = e.target.value.replace(/\\D/g, '').match(/(\\d{0,3})(\\d{0,3})(\\d{0,3})(\\d{0,2})/);\n e.target.value = !cpfValue[2]\n ? cpfValue[1]\n : cpfValue[1] +\n '.' +\n cpfValue[2] +\n (cpfValue[3] ? '.' + cpfValue[3] : '') +\n (cpfValue[4] ? '-' + cpfValue[4] : '');\n });\n\n inputCNPJ &&\n inputCNPJ.addEventListener('input', (e) => {\n //XX.XXX.XXX/XXXX-XX\n var cnpjValue = e.target.value.replace(/\\D/g, '').match(/(\\d{0,2})(\\d{0,3})(\\d{0,3})(\\d{0,4})(\\d{0,2})/);\n e.target.value = !cnpjValue[2]\n ? cnpjValue[1]\n : cnpjValue[1] +\n '.' +\n cnpjValue[2] +\n (cnpjValue[3] ? '.' + cnpjValue[3] : '') +\n (cnpjValue[4] ? '/' + cnpjValue[4] : '') +\n (cnpjValue[5] ? '-' + cnpjValue[5] : '');\n });\n}\n\n\n","import { slideToggle, slideDown } from '../../components/utilities';\r\n\r\nexport default function setFaq() {\r\n var collapseWrapper;\r\n var contentWrapper;\r\n var content;\r\n\r\n // No primeiro load verifica se tem o id do collapse na url e abre ela\r\n // console.log(document.location.hash);\r\n\r\n let urlCollapseId = document.location.hash;\r\n\r\n if (urlCollapseId) {\r\n collapseWrapper = document.querySelector(urlCollapseId);\r\n contentWrapper = collapseWrapper.querySelector('.content-wrapper');\r\n content = collapseWrapper.querySelector('.content');\r\n\r\n if (!contentWrapper) return;\r\n\r\n // Da scroll na página até o collapse\r\n window.scrollTo({\r\n top: contentWrapper.offsetTop - 300,\r\n behavior: 'smooth',\r\n });\r\n\r\n // Abre o collapse\r\n slideDown(contentWrapper, content, 300);\r\n }\r\n\r\n // Lida com o clique nos collapses\r\n var collapseButtons = document.querySelectorAll('[open-collapse]');\r\n\r\n collapseButtons.forEach((button) => {\r\n button.addEventListener('click', (e) => {\r\n e.preventDefault();\r\n\r\n collapseWrapper = button.closest('[data-collapse]');\r\n contentWrapper = collapseWrapper.querySelector('.content-wrapper');\r\n content = collapseWrapper.querySelector('.content');\r\n\r\n collapseWrapper.classList.toggle('-open');\r\n\r\n slideToggle(contentWrapper, content, 300);\r\n });\r\n });\r\n}\r\n","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n if (target === void 0) {\n target = {};\n }\n if (src === void 0) {\n src = {};\n }\n Object.keys(src).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\nconst ssrDocument = {\n body: {},\n addEventListener() {},\n removeEventListener() {},\n activeElement: {\n blur() {},\n nodeName: ''\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() {}\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() {},\n getElementsByTagName() {\n return [];\n }\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n }\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: ''\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n },\n history: {\n replaceState() {},\n pushState() {},\n go() {},\n back() {}\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() {},\n removeEventListener() {},\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n }\n };\n },\n Image() {},\n Date() {},\n screen: {},\n setTimeout() {},\n clearTimeout() {},\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n }\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { getWindow as a, getDocument as g };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction classesToTokens(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return classes.trim().split(' ').filter(c => !!c.trim());\n}\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n if (selector === void 0) {\n selector = '';\n }\n return [...element.children].filter(el => el.matches(selector));\n}\nfunction showWarning(text) {\n try {\n console.warn(text);\n return;\n } catch (err) {\n // err\n }\n}\nfunction createElement(tag, classes) {\n if (classes === void 0) {\n classes = [];\n }\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n}\n\nexport { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, elementIndex as g, classesToTokens as h, getTranslate as i, elementTransitionEnd as j, isObject as k, getSlideTransformEl as l, elementStyle as m, nextTick as n, elementNextAll as o, elementPrevAll as p, animateCSSModeScroll as q, showWarning as r, setCSSProperty as s, extend as t, deleteProps as u };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, m as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, o as elementNextAll, p as elementPrevAll, i as getTranslate, q as animateCSSModeScroll, n as nextTick, r as showWarning, c as createElement, d as now, t as extend, g as elementIndex, u 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 getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const {\n wrapperEl,\n slidesEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n } else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\n });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slides);\n } else if (swiper.grid) {\n swiper.grid.unsetSlides();\n }\n\n // Calc slides\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n let slide;\n if (slides[i]) slide = slides[i];\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slides);\n }\n if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[swiper.getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) {\n slide.style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide.style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n if (slides[i]) {\n slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for (let i = 0; i < groups; i += 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n }\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n if (params.slidesPerGroup === 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n }\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\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, params.slideFullyVisibleClass);\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 isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides[i].classList.add(params.slideVisibleClass);\n }\n if (isFullyVisible) {\n slides[i].classList.add(params.slideFullyVisibleClass);\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 gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n });\n let activeSlide;\n let prevSlide;\n let nextSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n if (gridEnabled) {\n activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0];\n nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0];\n prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0];\n } else {\n activeSlide = slides[activeIndex];\n }\n }\n if (activeSlide) {\n // Active classes\n activeSlide.classList.add(params.slideActiveClass);\n if (gridEnabled) {\n if (nextSlide) {\n nextSlide.classList.add(params.slideNextClass);\n }\n if (prevSlide) {\n prevSlide.classList.add(params.slidePrevClass);\n }\n } else {\n // Next Slide\n 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\n // Prev Slide\n prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n if (prevSlide) {\n prevSlide.classList.add(params.slidePrevClass);\n }\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 if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n } else {\n // init later\n requestAnimationFrame(() => {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl) lazyEl.remove();\n }\n });\n }\n }\n if (lazyEl) lazyEl.remove();\n }\n};\nconst unlazy = (swiper, index) => {\n if (!swiper.slides[index]) return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0) return;\n amount = Math.min(amount, len);\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n const activeIndex = swiper.activeIndex;\n if (swiper.params.grid && swiper.params.grid.rows > 1) {\n const activeColumn = activeIndex;\n const preloadColumns = [activeColumn - amount];\n preloadColumns.push(...Array.from({\n length: amount\n }).map((_, i) => {\n return activeColumn + slidesPerView + i;\n }));\n swiper.slides.forEach((slideEl, i) => {\n if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n });\n return;\n }\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind || swiper.params.loop) {\n for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n const realIndex = (i % len + len) % len;\n if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n }\n } else {\n for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n unlazy(swiper, i);\n }\n }\n }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n const {\n slidesGrid,\n params\n } = swiper;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n const getVirtualRealIndex = aIndex => {\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) {\n realIndex = swiper.virtual.slides.length + realIndex;\n }\n if (realIndex >= swiper.virtual.slides.length) {\n realIndex -= swiper.virtual.slides.length;\n }\n return realIndex;\n };\n if (typeof activeIndex === 'undefined') {\n activeIndex = getActiveIndexByTranslate(swiper);\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex && !swiper.params.loop) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n return;\n }\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (gridEnabled) {\n const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0];\n let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);\n if (Number.isNaN(activeSlideIndex)) {\n activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);\n }\n realIndex = Math.floor(activeSlideIndex / params.grid.rows);\n } else if (swiper.slides[activeIndex]) {\n const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');\n if (slideIndex) {\n realIndex = parseInt(slideIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n }\n}\n\nfunction updateClickedSlide(el, path) {\n const swiper = this;\n const params = swiper.params;\n let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n slide = pathEl;\n }\n });\n }\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n 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 const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n } else {\n let targetSlideIndex;\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;\n } else {\n targetSlideIndex = swiper.getSlideIndexByData(newIndex);\n }\n const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;\n const {\n centeredSlides\n } = swiper.params;\n let slidesPerView = swiper.params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n let needLoopFix = cols - targetSlideIndex < slidesPerView;\n if (centeredSlides) {\n needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);\n }\n if (needLoopFix) {\n const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';\n swiper.loopFix({\n direction,\n slideTo: true,\n activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,\n slideRealIndex: direction === 'next' ? swiper.realIndex : undefined\n });\n }\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;\n } else {\n newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n }\n requestAnimationFrame(() => {\n swiper.slideTo(newIndex, speed, runCallbacks, internal);\n });\n return swiper;\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n if (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 if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n });\n return true;\n }\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n if (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 } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n });\n return true;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n if (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 initSlides = () => {\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n };\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);\n const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;\n const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;\n const addBlankSlides = amountOfSlides => {\n for (let i = 0; i < amountOfSlides; i += 1) {\n const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]);\n swiper.slidesEl.append(slideEl);\n }\n };\n if (shouldFillGroup) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else if (shouldFillGrid) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else {\n initSlides();\n }\n swiper.loopFix({\n slideRealIndex,\n direction: params.centeredSlides ? undefined : 'next'\n });\n}\n\nfunction loopFix(_temp) {\n let {\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n byController,\n byMousewheel\n } = _temp === void 0 ? {} : _temp;\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n const {\n slides,\n allowSlidePrev,\n allowSlideNext,\n slidesEl,\n params\n } = swiper;\n const {\n centeredSlides\n } = params;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n if (swiper.virtual && params.virtual.enabled) {\n if (slideTo) {\n if (!params.centeredSlides && swiper.snapIndex === 0) {\n swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n return;\n }\n let slidesPerView = params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;\n let loopedSlides = slidesPerGroup;\n if (loopedSlides % slidesPerGroup !== 0) {\n loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;\n }\n loopedSlides += params.loopAdditionalSlides;\n swiper.loopedSlides = loopedSlides;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n if (slides.length < slidesPerView + loopedSlides) {\n showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters');\n } else if (gridEnabled && params.grid.fill === 'row') {\n showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`');\n }\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n let activeIndex = swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]);\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;\n const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;\n const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);\n // prepend last slides before start\n if (activeColIndexWithShift < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n const colIndexToPrepend = cols - index - 1;\n for (let i = slides.length - 1; i >= 0; i -= 1) {\n if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i);\n }\n // slides.forEach((slide, slideIndex) => {\n // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);\n // });\n } else {\n prependSlidesIndexes.push(cols - index - 1);\n }\n }\n } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {\n slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n slides.forEach((slide, slideIndex) => {\n if (slide.column === index) appendSlidesIndexes.push(slideIndex);\n });\n } else {\n appendSlidesIndexes.push(index);\n }\n }\n }\n swiper.__preventObserver__ = true;\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\n } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) {\n swiper.slides.forEach((slide, slideIndex) => {\n swiper.grid.updateSlide(slideIndex, slide, swiper.slides);\n });\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (slideTo) {\n if (prependSlidesIndexes.length > 0 && isPrev) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex + slidesPrepended, 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n if (setTranslate) {\n const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex + shift, 0, false, true);\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else if (appendSlidesIndexes.length > 0 && isNext) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex - shift, 0, false, true);\n }\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex,\n direction,\n setTranslate,\n activeSlideIndex,\n byController: true\n };\n if (Array.isArray(swiper.controller.control)) {\n swiper.controller.control.forEach(c => {\n if (!c.destroyed && c.params.loop) c.loopFix({\n ...loopParams,\n slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix({\n ...loopParams,\n slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n }\n }\n swiper.emit('loopFix');\n}\n\nfunction loopDestroy() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n}\n\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n const swiper = this;\n if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nfunction unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\nfunction preventEdgeSwipe(swiper, event, startX) {\n const window = getWindow();\n const {\n params\n } = swiper;\n const edgeSwipeDetection = params.edgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n return true;\n }\n return false;\n }\n return true;\n}\nfunction onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const data = swiper.touchEventsData;\n if (e.type === 'pointerdown') {\n if (data.pointerId !== null && data.pointerId !== e.pointerId) {\n return;\n }\n data.pointerId = e.pointerId;\n } else if (e.type === 'touchstart' && e.targetTouches.length === 1) {\n data.touchId = e.targetTouches[0].identifier;\n }\n if (e.type === 'touchstart') {\n // don't proceed touch event\n preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);\n return;\n }\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!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 = e.composedPath ? e.composedPath() : e.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n if (!preventEdgeSwipe(swiper, e, startX)) {\n return;\n }\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (e.type === 'pointermove') {\n if (data.touchId !== null) return; // return from pointer if we use touch\n const id = e.pointerId;\n if (id !== data.pointerId) return;\n }\n let targetTouch;\n if (e.type === 'touchmove') {\n targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n } else {\n targetTouch = e;\n }\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!e.target.matches(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n touches.previousX = touches.currentX;\n touches.previousY = touches.currentY;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;\n if (!data.isMoved) {\n if (isLoop && allowLoopFix) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n new Date().getTime();\n if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n startTranslate: data.currentTranslate\n });\n data.loopSwapReset = true;\n data.startTranslate = data.currentTranslate;\n return;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetTouch;\n const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';\n if (!isTouchEvent) {\n if (data.touchId !== null) return; // return from pointer if we use touch\n if (e.pointerId !== data.pointerId) return;\n targetTouch = e;\n } else {\n targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n }\n if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {\n const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n data.pointerId = null;\n data.touchId = null;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n 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\nfunction onDocumentTouchStart() {\n const swiper = this;\n if (swiper.documentTouchHandlerProceeded) return;\n swiper.documentTouchHandlerProceeded = true;\n if (swiper.params.touchReleaseOnEdges) {\n swiper.el.style.touchAction = 'auto';\n }\n}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n el,\n wrapperEl,\n device\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n\n // Touch Events\n document[domMethod]('touchstart', swiper.onDocumentTouchStart, {\n passive: false,\n capture\n });\n el[domMethod]('touchstart', swiper.onTouchStart, {\n passive: false\n });\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('touchmove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('touchend', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('touchcancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('contextmenu', swiper.onTouchEnd, {\n passive: true\n });\n\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n\n // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n};\nfunction attachEvents() {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nvar events$1 = {\n attachEvents,\n detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const 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 const wasLoop = params.loop;\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n const hasLoop = swiper.params.loop;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (initialized) {\n if (needsReLoop) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (!wasLoop && hasLoop) {\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (wasLoop && !hasLoop) {\n swiper.loopDestroy();\n }\n }\n swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n\nvar breakpoints = {\n setBreakpoint,\n getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\nfunction addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n 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 eventsPrefix: 'swiper',\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 5,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // loop\n loop: false,\n loopAddBlankSlides: true,\n loopAdditionalSlides: 0,\n loopPreventsSliding: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-blank',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideFullyVisibleClass: 'swiper-slide-fully-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n params[moduleParamName].auto = true;\n }\n if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n params[moduleParamName].auto = true;\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events: events$1,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor() {\n let el;\n let params;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n pointerId: null,\n touchId: null\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getDirectionLabel(property) {\n if (this.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);\n }\n recalcSlides() {\n const swiper = this;\n const {\n slidesEl,\n params\n } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n if (exact === void 0) {\n exact = false;\n }\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n if (typeof params.slidesPerView === 'number') return params.slidesPerView;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? 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.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n }\n }\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n 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","import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = createElement('div', checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n\nexport { createElementIfNotDefined as c };\n","function classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return `.${classes.trim().replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n\nexport { classesToSelector as c };\n","import setFaq from './pages/setFaq';\r\nimport setAbas from './pages/setAbas';\r\n\r\nimport Swiper from 'swiper';\r\nimport { Navigation, Pagination, Zoom, Thumbs } from 'swiper/modules';\r\n\r\nSwiper.use([Navigation, Pagination, Zoom, Thumbs]);\r\n\r\n//addImports\r\n\r\nconst Page = {\r\n handleProjectsTabs: function () {\r\n const contentTermsUse = document.querySelector('.content-projects');\r\n\r\n if(contentTermsUse){\r\n const tabs = contentTermsUse.querySelectorAll('.tab');\r\n const tabsContentSection = contentTermsUse.querySelectorAll('.tab-content');\r\n \r\n if (!tabs || !tabsContentSection) return;\r\n \r\n tabs.forEach((tab) => {\r\n tab.addEventListener('click', () => {\r\n const tabId = tab.getAttribute('data-tab');\r\n \r\n tabsContentSection.forEach((content) => {\r\n content.classList.remove('active');\r\n });\r\n \r\n tabs.forEach((tab) => {\r\n tab.classList.remove('active');\r\n });\r\n \r\n tab.classList.add('active');\r\n \r\n const selectedContent = document.getElementById(tabId);\r\n \r\n selectedContent.classList.add('active');\r\n });\r\n });\r\n }\r\n },\r\n\r\n setSwiperReview: function () {\r\n const reviews = document.querySelectorAll('[data-page-review]');\r\n\r\n if(reviews.length > 0) reviews.forEach(swiper => {\r\n const prevEl = swiper.querySelector('.swiper-button-prev');\r\n const nextEl = swiper.querySelector('.swiper-button-next');\r\n\r\n\r\n new Swiper(swiper, {\r\n slidesPerView: 2,\r\n slidesPerGroup: 1,\r\n spaceBetween: 10,\r\n preloadImages: false,\r\n speed: 1000,\r\n lazy: {\r\n checkInView: true,\r\n loadPrevNext: true,\r\n loadOnTransitionStart: true,\r\n loadPrevNextAmount: 4,\r\n },\r\n navigation: {\r\n nextEl: nextEl,\r\n prevEl: prevEl,\r\n },\r\n breakpoints: {\r\n 768: {\r\n slidesPerView: 3,\r\n },\r\n 992: {\r\n slidesPerView: 4,\r\n },\r\n },\r\n });\r\n });\r\n },\r\n\r\n init: function () {\r\n var _this = this;\r\n if (document.querySelector('[data-tab]')) setAbas();\r\n setFaq();\r\n\r\n //calls\r\n this.handleProjectsTabs();\r\n this.setSwiperReview();\r\n },\r\n};\r\n\r\nwindow.addEventListener('DOMContentLoaded', () => {\r\n Page.init();\r\n});\r\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 if (swiper.enabled) {\n update();\n return;\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}\n\nexport { Navigation as default };\n","import { 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 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.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n // prettier-ignore\n paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\">${params.bulletElement}>`;\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, i 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 - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale];\n }\n function getSlideSelector() {\n return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n }\n function eventWithinSlide(e) {\n const slideSelector = getSlideSelector();\n if (e.target.matches(slideSelector)) return true;\n if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true;\n return false;\n }\n function eventWithinZoomContainer(e) {\n const selector = `.${swiper.params.zoom.containerClass}`;\n if (e.target.matches(selector)) return true;\n if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true;\n return false;\n }\n\n // Events\n function onGestureStart(e) {\n if (e.pointerType === 'mouse') {\n evCache.splice(0, evCache.length);\n }\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n evCache.push(e);\n if (evCache.length < 2) {\n return;\n }\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches();\n if (!gesture.slideEl) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex];\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n if (!gesture.imageWrapEl) {\n gesture.imageEl = undefined;\n return;\n }\n gesture.maxRatio = 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 { k 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","export default function handleTermsTabs() {\r\n const tabsButton = document.querySelectorAll('[data-tab]');\r\n const tabsContent = document.querySelectorAll('[data-tab-content]');\r\n\r\n tabsContent.length > 0 &&\r\n tabsButton.length > 0 &&\r\n tabsButton.forEach((button) => {\r\n button.addEventListener('click', (e) => {\r\n e.preventDefault();\r\n\r\n tabsButton.forEach((el) => {\r\n el.classList.remove('active');\r\n });\r\n button.classList.add('active');\r\n\r\n const tabContentId = button.getAttribute('href').replace('#', '');\r\n tabsContent.forEach((content) => {\r\n content.id == tabContentId ? content.classList.add('active') : content.classList.remove('active');\r\n });\r\n\r\n setTimeout(() => {\r\n window.scrollTo({ top: 0, behavior: 'smooth' });\r\n }, 20);\r\n });\r\n\r\n if (location.hash != null && location.hash != '') {\r\n const tabContentId = location.hash.replace('#', '');\r\n tabsContent.forEach((content) => {\r\n content.id == tabContentId ? content.classList.add('active') : content.classList.remove('active');\r\n });\r\n\r\n tabsButton.forEach((button) => {\r\n if (button.getAttribute('href').replace('#', '') == tabContentId) {\r\n button.classList.add('active');\r\n\r\n setTimeout(() => {\r\n window.scrollTo({ top: 0, behavior: 'smooth' });\r\n }, 20);\r\n\r\n if (window.innerWidth < 1050) {\r\n const sidePositioning = button.offsetLeft - window.innerWidth / 2 + button.offsetWidth / 2;\r\n button.offsetParent.scrollTo({ left: sidePositioning, behavior: 'smooth' });\r\n }\r\n } else {\r\n button.classList.remove('active');\r\n }\r\n });\r\n }\r\n });\r\n}\r\n"],"names":["slideDown","contentWrapper","content","duration","innerHeight","clientHeight","style","height","transition","setFaq","collapseWrapper","urlCollapseId","document","location","hash","querySelector","window","scrollTo","top","offsetTop","behavior","querySelectorAll","forEach","button","addEventListener","e","preventDefault","closest","classList","toggle","getComputedStyle","slideUp","slideToggle","isObject","obj","constructor","Object","extend","target","src","keys","key","length","ssrDocument","body","removeEventListener","activeElement","blur","nodeName","getElementById","createEvent","initEvent","createElement","children","childNodes","setAttribute","getElementsByTagName","createElementNS","importNode","host","hostname","href","origin","pathname","protocol","search","doc","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","win","delay","now","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","transform","webkitTransform","split","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","o","prototype","call","slice","to","arguments","undefined","noExtend","i","nextSource","node","HTMLElement","nodeType","keysArray","filter","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","overflow","element","selector","matches","showWarning","text","console","warn","err","tag","classes","add","Array","isArray","trim","c","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","left","elementStyle","prop","child","previousSibling","parents","parent","parentElement","push","elementOuterSize","size","includeMargins","offsetWidth","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","num","Number","isWebView","test","calcBrowser","eventsEmitter","on","events","handler","priority","self","eventsListeners","destroyed","method","event","once","onceHandler","off","__emitterProxy","_len","args","_key","apply","onAny","eventsAnyListeners","offAny","index","splice","eventHandler","emit","data","context","_len2","_key2","unshift","processLazyPreloader","imageEl","slideEl","isElement","slideClass","lazyEl","lazyPreloaderClass","shadowRoot","remove","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","from","_","column","slideIndexLastInView","rewind","loop","realIndex","update","updateSize","clientWidth","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","contains","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","slideVisibleClass","slideFullyVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","slideActiveClass","slideNextClass","slidePrevClass","nextEls","nextElementSibling","next","elementNextAll","prevEls","previousElementSibling","prev","elementPrevAll","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","getAttribute","initialized","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","onTranslateToWrapperTransitionEnd","transitionEmit","direction","step","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","recalcSlides","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","simulateTouch","pointerType","targetEl","touchEventsTarget","which","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","init","resizeObserver","createElements","eventsPrefix","url","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","transitionDuration","transitionDelay","moving","isLocked","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","points","point","minRatio","substr","value","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","item","prepareClasses","removeClasses","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","className","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","module","m","checkProps","prototypeGroup","protoMethod","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","hideOnClick","disabledClass","hiddenClass","lockClass","navigationDisabledClass","makeElementsArray","getEl","res","toggleEl","disabled","subEl","tagName","onPrevClick","onNextClick","initButton","destroyButton","_s","pagination","clickable","isHidden","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","position","onBulletClick","total","firstIndex","midIndex","classesToRemove","suffix","s","flat","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","offsetProp","subElIndex","fractionEl","textContent","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","innerHTML","render","paginationHTML","numberOfBullets","zoom","maxRatio","containerClass","zoomedSlideClass","fakeGestureTouched","fakeGestureMoved","currentScale","isScaling","evCache","gesture","originX","originY","slideWidth","slideHeight","imageWrapEl","image","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","getDistanceBetweenTouches","x1","y1","x2","y2","eventWithinSlide","onGestureStart","scaleStart","getScaleOrigin","onGestureChange","pointerIndex","findIndex","cachedEv","scaleMove","onGestureEnd","eventWithinZoomContainer","scaledWidth","scaledHeight","scaleRatio","onTransitionEnd","zoomIn","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","forceZoomRatio","zoomOut","zoomToggle","getListeners","passiveListener","activeListenerWithCapture","defineProperty","get","set","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","in","out","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","useOffset","currentThumbsIndex","newThumbsIndex","newThumbsSlide","getThumbsElementAndInit","thumbsElement","onThumbsSwiper","detail","watchForThumbsToAppear","Page","handleProjectsTabs","contentTermsUse","tabs","tabsContentSection","tab","tabId","setSwiperReview","reviews","preloadImages","lazy","checkInView","loadPrevNext","loadOnTransitionStart","loadPrevNextAmount","tabsButton","tabsContent","tabContentId","sidePositioning","offsetParent"],"sourceRoot":""}