{"version":3,"file":"/product/detailsPage/carouselMultimedia.js","mappings":"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","sources":["webpack://app_custom_hawkers_frontend/./cartridge/client/default/js/partials/general-utils.js","webpack://app_custom_hawkers_frontend/webpack/bootstrap","webpack://app_custom_hawkers_frontend/webpack/runtime/define property getters","webpack://app_custom_hawkers_frontend/webpack/runtime/hasOwnProperty shorthand","webpack://app_custom_hawkers_frontend/./cartridge/client/default/js/third-party/swiper/shared/ssr-window.esm.mjs","webpack://app_custom_hawkers_frontend/./cartridge/client/default/js/third-party/swiper/shared/utils.mjs","webpack://app_custom_hawkers_frontend/./cartridge/client/default/js/third-party/swiper/shared/swiper-core.mjs","webpack://app_custom_hawkers_frontend/./cartridge/client/default/js/product/detailsPage/carouselMultimedia.js"],"sourcesContent":["'use strict';\n\nimport {\n addClassToElement,\n removeClassToElement\n} from '@jspartials/class-list-utils';\n\n// Elements\nconst html = document.querySelector('html');\nconst body = document.querySelector('body');\n\n// Custom events\nconst customEvent = {\n listenProductTiles: 'listenProductTiles',\n reloadVtoButtons: 'reloadVtoButtons',\n listenAddonTiles: 'listenAddonTiles',\n loginAndSignupLoaded: 'loginAndSignupLoaded',\n qrGeneratorLoaded: 'qrGeneratorLoaded',\n initProductTilesAnimation: 'initProductTilesAnimation',\n adyen: {\n displayPaymentMethods: 'adyen::displayPaymentMethods',\n paymentMethodsUpdated: 'adyen::paymentMethodsUpdated'\n },\n klarna: {\n checkVisibilityOfPaymentMethod: 'checkVisibilityOfKlarnaPaymentMethod'\n },\n closeSearcherFromMenu: 'closeSearcherFromMenu',\n closeMenuFromSearcher: 'closeMenuFromSearcher',\n sidebar: {\n init: 'sidebar::init',\n close: 'sidebar::close',\n open: 'sidebar::open'\n },\n updatePickUpStoreSelectedForShipping: 'updatePickUpStoreSelectedForShipping',\n cart: {\n itemRemoved: 'cart::itemRemoved'\n },\n checkout: {\n selectShippingMethod: 'checkout::selectShippingMethod'\n }\n};\n\n// Media query strings\nconst mediaQuery = {\n tablet: '(min-width: 768px)'\n};\n\nconst selectors = {\n fixedClass: 'tw-fixed',\n overflowHiddenClass: 'tw-overflow-hidden',\n fullWidthClass: 'tw-w-full'\n};\n\nvar htmlElementScroll = 0;\n\n/**\n * Get the current top location\n */\nconst currentYPosition = () => {\n // Firefox, Chrome, Opera, Safari\n if (self.pageYOffset) return self.pageYOffset;\n // Internet Explorer 6 - standards mode\n if (document.documentElement && document.documentElement.scrollTop)\n return document.documentElement.scrollTop;\n // Internet Explorer 6, 7 and 8\n if (document.body.scrollTop) return document.body.scrollTop;\n return 0;\n};\n\n/**\n * Get the position of element\n * @param {string} id of the element\n */\nconst elmYPosition = (id) => {\n const elm = document.querySelector(id);\n let y = elm.offsetTop;\n let node = elm;\n while (node.offsetParent && node.offsetParent !== document.body) {\n node = node.offsetParent;\n y += node.offsetTop;\n }\n return y;\n};\n\n/**\n * Get value from url parameter\n * @param {string} name of url parameter\n */\nconst getUrlParameter = (name) => {\n return (\n decodeURIComponent(\n (new RegExp(`[?|&]${name}=` + `([^&;]+?)(&|#|;|$)`).exec(\n location.search\n ) || [, ''])[1].replace(/\\+/g, '%20')\n ) || null\n );\n};\n\n/**\n * Get value from session storage variable\n * @param {string} key of variable\n */\nconst getSessionStorage = (key = '') => {\n return sessionStorage.getItem(key);\n};\n\n/**\n * Set value for session storage variable\n * @param {string} key of variable\n * @param {string} value of variable\n */\nconst saveSessionStorage = (key = '', value = '') => {\n sessionStorage.setItem(key, value);\n};\n\n/**\n * Set HTML unscrollable\n */\nconst setHtmlUnscrollable = () => {\n htmlElementScroll = document.documentElement.scrollTop;\n addClassToElement(body, selectors.fixedClass);\n addClassToElement(body, selectors.overflowHiddenClass);\n addClassToElement(body, selectors.fullWidthClass);\n body.style.height = `calc(100% + ${htmlElementScroll}px)`;\n body.style.top = `-${htmlElementScroll}px`;\n};\n\n/**\n * Set HTML scrollable\n */\nconst setHtmlScrollable = () => {\n removeClassToElement(body, selectors.fixedClass);\n removeClassToElement(body, selectors.overflowHiddenClass);\n removeClassToElement(body, selectors.fullWidthClass);\n body.style.height = '';\n body.style.top = '';\n window.scrollTo({ top: htmlElementScroll, behavior: 'instant' });\n\n htmlElementScroll = 0;\n};\n\nconst smoothScrollToAnchor = () => {\n const elementsWithHash = document.querySelectorAll('a[href*=\"#\"]') || [];\n\n elementsWithHash.forEach((element) => {\n element.addEventListener('click', (event) => {\n event.preventDefault();\n const targetHref = element.getAttribute('href');\n let elementPosition = 0;\n if (targetHref != '#') {\n elementPosition = elmYPosition(targetHref);\n }\n window.scrollTo({ top: elementPosition, behavior: 'smooth' });\n });\n });\n};\n\nconst randomNumber = (min, max) => {\n return Math.floor(Math.random() * (max - min)) + min;\n};\n\nconst debounce = (callback, wait) => {\n let timeoutId = null;\n return (...args) => {\n window.clearTimeout(timeoutId);\n timeoutId = window.setTimeout(() => {\n callback.apply(null, args);\n }, wait);\n };\n};\n\nconst throttle = (func, wait) => {\n let waiting = false;\n return function () {\n if (waiting) {\n return;\n }\n\n waiting = true;\n setTimeout(() => {\n func.apply(this, arguments);\n waiting = false;\n }, wait);\n };\n};\n\nconst getMediaQuery = (mediaQuery) => {\n return window.matchMedia(mediaQuery);\n};\n\n/**\n * Sleep for a certain amount of time\n * @param {number} ms - The amount of time to sleep in milliseconds\n * @returns {Promise} - The promise that resolves after the sleep\n */\nconst sleep = (ms) =>\n new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n\n/**\n * Try to execute a function with retries and delay\n * @param {Function} func - The function to execute\n * @param {number} retries - The number of retries\n * @param {number} delay - The delay between retries in milliseconds\n * @param {Array} params - The parameters to pass to the function\n * @returns {Promise} - The promise that resolves after the function is executed\n */\nconst tryExecute = async (func, retries, delay, ...params) => {\n let attempts = 0;\n\n while (attempts < retries) {\n try {\n const response = await func(...params);\n\n if (response.status === 200) {\n return response.data;\n }\n } catch (error) {\n const status = error.response?.status;\n const retryAfter = parseInt(\n error.response?.headers['retry-after'] || delay / 1000,\n 10\n ); // in seconds\n\n if (status === 429) {\n // Too many requests\n await sleep(retryAfter * 1000);\n } else {\n if (attempts >= retries - 1) {\n throw error;\n }\n }\n }\n attempts++;\n }\n};\n\nconst isPointingDevice = () => {\n return window.matchMedia('(pointer:fine) and (hover: hover)').matches;\n};\n\nexport {\n html,\n body,\n getUrlParameter,\n getSessionStorage,\n saveSessionStorage,\n currentYPosition,\n elmYPosition,\n setHtmlUnscrollable,\n setHtmlScrollable,\n smoothScrollToAnchor,\n randomNumber,\n debounce,\n throttle,\n customEvent,\n mediaQuery,\n getMediaQuery,\n tryExecute,\n isPointingDevice\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n if (target === void 0) {\n target = {};\n }\n if (src === void 0) {\n src = {};\n }\n Object.keys(src).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\nconst ssrDocument = {\n body: {},\n addEventListener() {},\n removeEventListener() {},\n activeElement: {\n blur() {},\n nodeName: ''\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() {}\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() {},\n getElementsByTagName() {\n return [];\n }\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n }\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: ''\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n },\n history: {\n replaceState() {},\n pushState() {},\n go() {},\n back() {}\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() {},\n removeEventListener() {},\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n }\n };\n },\n Image() {},\n Date() {},\n screen: {},\n setTimeout() {},\n clearTimeout() {},\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n }\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { getWindow as a, getDocument as g };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n if (selector === void 0) {\n selector = '';\n }\n return [...element.children].filter(el => el.matches(selector));\n}\nfunction createElement(tag, classes) {\n if (classes === void 0) {\n classes = [];\n }\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : [classes]));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n}\n\nexport { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, elementIndex as g, getTranslate as h, elementTransitionEnd as i, isObject as j, getSlideTransformEl as k, elementStyle as l, elementNextAll as m, nextTick as n, elementPrevAll as o, animateCSSModeScroll as p, extend as q, deleteProps as r, setCSSProperty as s };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, l as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, m as elementNextAll, o as elementPrevAll, h as getTranslate, p as animateCSSModeScroll, n as nextTick, d as now, q as extend, g as elementIndex, c as createElement, r as deleteProps } from './utils.mjs';\n\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nlet deviceCached;\nfunction calcDevice(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nlet browser;\nfunction calcBrowser() {\n const window = getWindow();\n let needPerspectiveFix = false;\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n if (isSafari()) {\n const ua = String(window.navigator.userAgent);\n if (ua.includes('Version/')) {\n const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n }\n }\n return {\n isSafari: needPerspectiveFix || isSafari(),\n needPerspectiveFix,\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nfunction Resize(_ref) {\n let {\n swiper,\n on,\n emit\n } = _ref;\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(_ref2 => {\n let {\n contentBoxSize,\n contentRect,\n target\n } = _ref2;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n\nfunction Observer(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const observers = [];\n const window = getWindow();\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (swiper.__preventObserver__) return;\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.hostEl);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.hostEl, {\n childList: swiper.params.observeSlideChildren\n });\n\n // Observe wrapper\n attach(swiper.wrapperEl, {\n attributes: false\n });\n };\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler() {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit() {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};\n\nfunction updateSize() {\n const swiper = this;\n let width;\n let height;\n const el = swiper.el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = el.clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = el.clientHeight;\n }\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}\n\nfunction updateSlides() {\n const swiper = this;\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const {\n wrapperEl,\n slidesEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n } else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\n });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n }\n\n // Calc slides\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n let slide;\n if (slides[i]) slide = slides[i];\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) {\n slide.style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide.style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for (let i = 0; i < groups; i += 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n }\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n if (params.slidesPerGroup === 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n }\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap <= 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.el.classList.remove(backFaceHiddenClass);\n }\n }\n}\n\nfunction updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides[swiper.getSlideIndexByData(index)];\n }\n return swiper.slides[index];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || []).forEach(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\n\nfunction updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n }\n}\n\nfunction updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass);\n });\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n let spaceBetween = params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides[i].classList.add(params.slideVisibleClass);\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}\n\nfunction updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd,\n progressLoop\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n}\n\nfunction updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n });\n let activeSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n activeSlide = slides[activeIndex];\n }\n if (activeSlide) {\n // Active classes\n activeSlide.classList.add(params.slideActiveClass);\n\n // Next Slide\n let nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n if (nextSlide) {\n nextSlide.classList.add(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n if (prevSlide) {\n prevSlide.classList.add(params.slidePrevClass);\n }\n }\n swiper.emitSlidesClasses();\n}\n\nconst processLazyPreloader = (swiper, imageEl) => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n const slideEl = imageEl.closest(slideSelector());\n if (slideEl) {\n let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (!lazyEl && swiper.isElement) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n }\n if (lazyEl) lazyEl.remove();\n }\n};\nconst unlazy = (swiper, index) => {\n if (!swiper.slides[index]) return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0) return;\n amount = Math.min(amount, len);\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n const activeIndex = swiper.activeIndex;\n if (swiper.params.grid && swiper.params.grid.rows > 1) {\n const activeColumn = activeIndex;\n const preloadColumns = [activeColumn - amount];\n preloadColumns.push(...Array.from({\n length: amount\n }).map((_, i) => {\n return activeColumn + slidesPerView + i;\n }));\n swiper.slides.forEach((slideEl, i) => {\n if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n });\n return;\n }\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind || swiper.params.loop) {\n for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n const realIndex = (i % len + len) % len;\n if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n }\n } else {\n for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n unlazy(swiper, i);\n }\n }\n }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n const {\n slidesGrid,\n params\n } = swiper;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n const getVirtualRealIndex = aIndex => {\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) {\n realIndex = swiper.virtual.slides.length + realIndex;\n }\n if (realIndex >= swiper.virtual.slides.length) {\n realIndex -= swiper.virtual.slides.length;\n }\n return realIndex;\n };\n if (typeof activeIndex === 'undefined') {\n activeIndex = getActiveIndexByTranslate(swiper);\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n }\n return;\n }\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (swiper.slides[activeIndex]) {\n realIndex = parseInt(swiper.slides[activeIndex].getAttribute('data-swiper-slide-index') || activeIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}\n\nfunction updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = e.closest(`.${params.slideClass}, swiper-slide`);\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}\n\nvar translate = {\n getTranslate: getSwiperTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};\n\nfunction setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n }\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n\nfunction transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}\n\nfunction transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}\n\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd\n};\n\nfunction slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex];\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n // Update Index\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}\n\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n } else {\n newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n enabled,\n params,\n animating\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'next'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\n if (!enabled) return swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal, threshold) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (threshold === void 0) {\n threshold = 0.5;\n }\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n\nvar slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};\n\nfunction loopCreate(slideRealIndex) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n swiper.loopFix({\n slideRealIndex,\n direction: params.centeredSlides ? undefined : 'next'\n });\n}\n\nfunction loopFix(_temp) {\n let {\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n byController,\n byMousewheel\n } = _temp === void 0 ? {} : _temp;\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n const {\n slides,\n allowSlidePrev,\n allowSlideNext,\n slidesEl,\n params\n } = swiper;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n if (swiper.virtual && params.virtual.enabled) {\n if (slideTo) {\n if (!params.centeredSlides && swiper.snapIndex === 0) {\n swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n return;\n }\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10));\n let loopedSlides = params.loopedSlides || slidesPerView;\n if (loopedSlides % params.slidesPerGroup !== 0) {\n loopedSlides += params.slidesPerGroup - loopedSlides % params.slidesPerGroup;\n }\n swiper.loopedSlides = loopedSlides;\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n let activeIndex = swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(swiper.slides.filter(el => el.classList.contains(params.slideActiveClass))[0]);\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n // prepend last slides before start\n if (activeSlideIndex < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeSlideIndex, params.slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeSlideIndex; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n prependSlidesIndexes.push(slides.length - index - 1);\n }\n } else if (activeSlideIndex /* + slidesPerView */ > swiper.slides.length - loopedSlides * 2) {\n slidesAppended = Math.max(activeSlideIndex - (swiper.slides.length - loopedSlides * 2), params.slidesPerGroup);\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n appendSlidesIndexes.push(index);\n }\n }\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n swiper.slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(swiper.slides[index]);\n swiper.slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n swiper.slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(swiper.slides[index]);\n swiper.slides[index].swiperLoopMoveDOM = false;\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (slideTo) {\n if (prependSlidesIndexes.length > 0 && isPrev) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex + slidesPrepended, 0, false, true);\n if (setTranslate) {\n swiper.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else {\n if (setTranslate) {\n swiper.slideToLoop(slideRealIndex, 0, false, true);\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else if (appendSlidesIndexes.length > 0 && isNext) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n if (setTranslate) {\n swiper.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else {\n swiper.slideToLoop(slideRealIndex, 0, false, true);\n }\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex,\n direction,\n setTranslate,\n activeSlideIndex,\n byController: true\n };\n if (Array.isArray(swiper.controller.control)) {\n swiper.controller.control.forEach(c => {\n if (!c.destroyed && c.params.loop) c.loopFix({\n ...loopParams,\n slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix({\n ...loopParams,\n slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n }\n }\n swiper.emit('loopFix');\n}\n\nfunction loopDestroy() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n}\n\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n const swiper = this;\n if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nfunction unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\nfunction onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n data.evCache.push(event);\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!swiper.wrapperEl.contains(targetEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = event.composedPath ? event.composedPath() : event.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) data.evCache[pointerIndex] = e;\n const targetTouch = data.evCache.length > 1 ? data.evCache[0] : e;\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!e.target.matches(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n prevX: swiper.touches.currentX,\n prevY: swiper.touches.currentY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling || swiper.zoom && swiper.params.zoom && swiper.params.zoom.enabled && data.evCache.length > 1) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n if (!data.isMoved) {\n if (isLoop) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n if (data.isMoved && prevTouchesDirection !== swiper.touchesDirection && isLoop && Math.abs(diff) >= 1) {\n // need another loop fix\n swiper.loopFix({\n direction: swiper.swipeDirection,\n setTranslate: true\n });\n loopFixed = true;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && !loopFixed && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.size / 2 : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && !loopFixed && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.size / 2 : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === event.pointerId);\n if (pointerIndex >= 0) {\n data.evCache.splice(pointerIndex, 1);\n }\n if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(event.type)) {\n const proceed = ['pointercancel', 'contextmenu'].includes(event.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n\nfunction onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n const isVirtualLoop = isVirtual && params.loop;\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n if (swiper.params.loop && !isVirtual) {\n swiper.slideToLoop(swiper.realIndex, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n clearTimeout(swiper.autoplay.resizeTimeout);\n swiper.autoplay.resizeTimeout = setTimeout(() => {\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.resume();\n }\n }, 500);\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n\nfunction onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n\nfunction onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n swiper.emit('setTranslate', swiper.translate, false);\n}\n\nfunction onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n return;\n }\n swiper.update();\n}\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n el,\n wrapperEl,\n device\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n\n // Touch Events\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('contextmenu', swiper.onTouchEnd, {\n passive: true\n });\n\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n\n // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n};\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n if (!dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nvar events$1 = {\n attachEvents,\n detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasEnabled = params.enabled;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n if (typeof breakpointParams[prop] === 'undefined') return;\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n }\n swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n\nvar breakpoints = {\n setBreakpoint,\n getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\nfunction addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}\n\nvar classes = {\n addClasses,\n removeClasses\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nvar checkOverflow$1 = {\n checkOverflow\n};\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 5,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // loop\n loop: false,\n loopedSlides: null,\n loopPreventsSliding: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events: events$1,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor() {\n let el;\n let params;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n evCache: []\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);\n }\n recalcSlides() {\n const swiper = this;\n const {\n slidesEl,\n params\n } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n if (exact === void 0) {\n exact = false;\n }\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? slides[activeIndex].swiperSlideSize : 0;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n }\n });\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n setTranslate();\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n translated = swiper.slideTo(slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.forEach(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n if (swiper.rtl) {\n swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n mount(element) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n let el = element || swiper.params.el;\n if (typeof el === 'string') {\n el = document.querySelector(el);\n }\n if (!el) {\n return false;\n }\n el.swiper = swiper;\n if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === 'SWIPER-CONTAINER') {\n swiper.isElement = true;\n }\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = el.shadowRoot.querySelector(getWrapperSelector());\n // Children needs to return slot items\n return res;\n }\n return elementChildren(el, getWrapperSelector())[0];\n };\n // Find Wrapper\n let wrapperEl = getWrapper();\n if (!wrapperEl && swiper.params.createElements) {\n wrapperEl = createElement('div', swiper.params.wrapperClass);\n el.append(wrapperEl);\n elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n wrapperEl.append(slideEl);\n });\n }\n Object.assign(swiper, {\n el,\n wrapperEl,\n slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n hostEl: swiper.isElement ? el.parentNode.host : el,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n });\n return true;\n }\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Attach events\n swiper.attachEvents();\n const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n if (swiper.isElement) {\n lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n }\n lazyElements.forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n } else {\n imageEl.addEventListener('load', e => {\n processLazyPreloader(swiper, e.target);\n });\n }\n });\n preload(swiper);\n\n // Init Flag\n swiper.initialized = true;\n preload(swiper);\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n const swiper = this;\n const {\n params,\n el,\n wrapperEl,\n slides\n } = swiper;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n el.removeAttribute('style');\n wrapperEl.removeAttribute('style');\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n }\n }\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n swiper.el.swiper = null;\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\n\nexport { Swiper as S, defaults as d };\n","'use strict';\n\n// core version + navigation, pagination modules:\nimport Swiper from '@jsthirdparty/swiper';\n// import Swiper and modules styles\nimport Pagination from '@jsthirdparty/swiper/modules/pagination.mjs';\nimport Zoom from '@jsthirdparty/swiper/modules/zoom.mjs';\nimport {\n classes,\n addClassToElement,\n removeClassToElement,\n hasClassElement\n} from '@jspartials/class-list-utils';\nimport { mediaQuery, getMediaQuery } from '@jspartials/general-utils';\nimport {\n setHtmlScrollable,\n setHtmlUnscrollable\n} from '../../partials/general-utils';\n\n// Classes\nconst className = {\n transformNone: '!tw-transform-none'\n};\n\n// Selectors\nconst selector = {\n carousel: {\n wrapper: '.js-carousel',\n inner: '.js-carousel__inner',\n button: {\n zoom: '.js-carousel__zoom-button',\n closeFullscreen: '.js-carousel__close-fullscreen'\n }\n },\n bottomBarInfo: '.js-bottom-bar-info',\n swiper: {\n wrapper: '.swiper',\n pagination: '.swiper-pagination'\n },\n imageFullscreen: '.js-image-fullscreen'\n};\n\n// Elements\nconst element = {\n carousel: {\n wrapper: null,\n inner: null,\n button: {\n zoom: null,\n closeFullscreen: null\n }\n },\n bottomBarInfo: null\n};\n\n// Variables\nlet swiper = null;\nlet htmlElementScroll = 0;\nconst mediaQueryTablet = getMediaQuery(mediaQuery.tablet);\n\n// Functions\n\n/**\n * Initializes the elements\n * @returns {void}\n */\nconst initElements = () => {\n element.carousel.wrapper =\n document.querySelector(selector.carousel.wrapper) || null;\n element.carousel.inner =\n document.querySelector(selector.carousel.inner) || null;\n element.carousel.button.zoom =\n document.querySelector(selector.carousel.button.zoom) || null;\n element.carousel.button.closeFullscreen =\n document.querySelector(selector.carousel.button.closeFullscreen) || null;\n element.bottomBarInfo =\n document.querySelector(selector.bottomBarInfo) || null;\n};\n\n/**\n * Calculates and sets the height for the carousel\n * @returns {void}\n */\nconst calculateAndSetHeightForCarousel = () => {\n if (element.carousel.wrapper) {\n const documentComputedStyle = getComputedStyle(document.documentElement);\n const height = {\n viewport: window.innerHeight,\n header:\n documentComputedStyle.getPropertyValue('--header__base-height') || 0,\n hellobar:\n documentComputedStyle.getPropertyValue('--hellobar-height') || 0,\n bottomBarInfo: element.bottomBarInfo\n ? element.bottomBarInfo.clientHeight\n : 0\n };\n\n const carouselHeight =\n parseInt(height.viewport) -\n parseInt(height.header) -\n parseInt(height.hellobar) -\n parseInt(height.bottomBarInfo);\n\n element.carousel.wrapper.style.height = `${carouselHeight}px`;\n }\n};\n\nconst openFullScreen = () => {\n if (\n !mediaQueryTablet.matches &&\n !hasClassElement(element.carousel.wrapper, classes.is.fullscreen)\n ) {\n const children = element.carousel.inner\n ? element.carousel.inner.children\n : [];\n\n // We fix the body so it doesn't scroll in mobile\n addClassToElement(element.carousel.wrapper, classes.is.fullscreen);\n setHtmlUnscrollable();\n swiper.zoom.enable();\n\n for (var i = 0; i < children.length; i++) {\n const currentChild = element.carousel.inner.children[i];\n const currentImage = currentChild.querySelector(selector.imageFullscreen);\n\n if (currentImage) {\n currentImage.src = currentChild.dataset.fullscreenImage;\n }\n }\n }\n};\n\nconst closeFullScreen = () => {\n if (!mediaQueryTablet.matches) {\n // We reset both position and scrollTop so it goes back where it was\n setHtmlScrollable();\n removeClassToElement(element.carousel.wrapper, classes.is.fullscreen);\n swiper.zoom.out();\n swiper.zoom.disable();\n }\n};\n\nconst initCarousel = () => {\n initElements();\n // init Swiper\n swiper = new Swiper(selector.swiper.wrapper, {\n modules: [Pagination, Zoom],\n zoom: true,\n loop: true,\n pagination: {\n el: selector.swiper.pagination\n }\n });\n\n // disable zoom\n swiper.zoom.disable();\n\n // open full screen when clicking on the image\n if (element.carousel.inner) {\n element.carousel.inner.addEventListener('click', openFullScreen);\n }\n\n // open full screen when clicking on the zoom button\n if (element.carousel.button.zoom) {\n element.carousel.button.zoom.addEventListener('click', openFullScreen);\n }\n\n // close full screen when clicking on the close button\n if (element.carousel.button.closeFullscreen) {\n element.carousel.button.closeFullscreen.addEventListener(\n 'click',\n closeFullScreen\n );\n }\n\n // if the page loads in desktop resolution, we disable the swiper\n if (mediaQueryTablet.matches) {\n swiper.disable();\n }\n\n // if the resolution changes, we enable or disable the swiper\n mediaQueryTablet.addEventListener('change', function (mm) {\n if (!mm.matches) {\n swiper.enable();\n removeClassToElement(element.carousel.inner, className.transformNone);\n } else {\n swiper.destroy(false, true);\n swiper.disable();\n removeClassToElement(element.carousel.wrapper, classes.is.fullscreen);\n htmlElementScroll = 0;\n addClassToElement(element.carousel.inner, className.transformNone);\n }\n });\n\n // calculate and set the height for the carousel\n calculateAndSetHeightForCarousel();\n};\n\nexport { initCarousel };\n"],"names":["document","querySelector","mediaQuery","tablet","getMediaQuery","window","matchMedia","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","d","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","isObject","constructor","extend","target","src","keys","forEach","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","nextTick","delay","now","toString","slice","to","arguments","noExtend","i","nextSource","node","HTMLElement","nodeType","keysArray","filter","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","__swiper__","setCSSProperty","el","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","elementChildren","element","selector","matches","elementStyle","elementIndex","child","previousSibling","elementOuterSize","size","includeMargins","parseFloat","offsetWidth","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","eventsEmitter","on","events","handler","priority","self","eventsListeners","destroyed","method","split","event","once","onceHandler","off","__emitterProxy","_len","args","Array","_key","apply","onAny","eventsAnyListeners","offAny","index","splice","eventHandler","emit","data","context","_len2","_key2","isArray","unshift","processLazyPreloader","imageEl","slideEl","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","shadowRoot","remove","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","push","from","map","_","includes","column","slideIndexLastInView","rewind","loop","realIndex","update","updateSize","width","height","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","Number","isNaN","assign","updateSlides","getDirectionLabel","property","getDirectionPropertyValue","label","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","replace","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentTransform","transform","currentWebKitTransform","webkitTransform","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","classList","contains","maxBackfaceHiddenSlides","add","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","slideActiveClass","slideNextClass","slidePrevClass","nextSlide","nextEls","nextElementSibling","next","elementNextAll","prevSlide","prevEls","previousElementSibling","prev","elementPrevAll","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","getAttribute","initialized","runCallbacksOnInit","updateClickedSlide","e","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","transitionEmit","runCallbacks","direction","step","slideTo","internal","initial","animating","preventInteractionOnTransition","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","setTranslate","transitionStart","transitionEnd","isH","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","behavior","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","loopFix","_clientLeft","clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","onTouchStart","touchEventsData","evCache","touches","simulateTouch","pointerType","originalEvent","targetEl","touchEventsTarget","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","path","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","innerWidth","preventDefault","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","pointerIndex","findIndex","cachedEv","pointerId","targetTouch","preventedByNestedSwiper","prevX","prevY","touchReleaseOnEdges","targetTouches","diffX","diffY","sqrt","touchAngle","atan2","zoom","cancelable","touchMoveStopPropagation","nested","stopPropagation","diff","touchesDiff","previousX","previousY","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","startTranslate","getTranslate","evt","bubbles","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","loopFixed","currentTranslate","disableParentSwiper","resistanceRatio","activeSlideIndex","resistance","followFinger","onTouchEnd","type","isSafari","isWebView","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","newProgress","previousTranslate","scrollLeft","scrollTop","onLoad","dummyEventAttached","dummyEventListener","device","capture","domMethod","swiperMethod","passive","updateOnWindowResize","ios","android","isGridEnabled","defaults","init","resizeObserver","createElements","url","virtualTranslate","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","a","join","MozTransform","OTransform","MsTransform","msTransform","m41","m42","byController","x","y","translateTo","translateBounds","newTranslate","onTranslateToWrapperTransitionEnd","transition","transitionDuration","transitionDelay","loopCreate","slideRealIndex","_temp","byMousewheel","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","swiperLoopMoveDOM","prepend","append","recalcSlides","currentSlideTranslate","controller","control","loopParams","c","loopDestroy","newSlidesOrder","swiperSlideIndex","moving","isLocked","__preventObserver__","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","fill","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","changeDirection","isEnabled","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","wasLocked","lastSlideRightEdge","classes","addClasses","classNames","suffixes","entries","prefix","resultClasses","item","prepareClasses","removeClasses","extendedDefaults","Swiper","swipers","newParams","overrides","platform","ua","screenWidth","screenHeight","match","ipad","ipod","iphone","windows","macos","os","calcDevice","needPerspectiveFix","toLowerCase","String","major","minor","num","test","calcBrowser","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","setProgress","cls","className","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","getWrapperSelector","trim","tag","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","m","prototypeGroup","protoMethod","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","parents","parent","parentElement","elementParents","disconnect"],"sourceRoot":""}