{"version":3,"file":"/js/app.js","mappings":"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","sources":["webpack:///webpack/runtime/chunk loaded","webpack:///./resources/js/app.js","webpack:///./resources/js/back-link.js","webpack:///./resources/js/faders.js","webpack:///./resources/js/gsap-animations.js","webpack:///./resources/js/menu.js","webpack:///./resources/js/projects.js","webpack:///./resources/js/scrolllinks.js","webpack:///./node_modules/swiper/shared/ssr-window.esm.mjs","webpack:///./node_modules/swiper/shared/utils.mjs","webpack:///./node_modules/swiper/shared/swiper-core.mjs","webpack:///./node_modules/swiper/shared/create-element-if-not-defined.mjs","webpack:///./node_modules/swiper/modules/navigation.mjs","webpack:///./node_modules/swiper/shared/classes-to-selector.mjs","webpack:///./node_modules/swiper/modules/pagination.mjs","webpack:///./node_modules/swiper/modules/autoplay.mjs","webpack:///./node_modules/swiper/modules/grid.mjs","webpack:///./node_modules/swiper/swiper.css?2b0f","webpack:///./node_modules/swiper/modules/grid.css?3b86","webpack:///./node_modules/swiper/modules/pagination.css?f744","webpack:///./resources/js/swipers.js","webpack:///./vendor/artestiq/cms/Resources/assets/js/album.js","webpack:///./node_modules/swiper/modules/grid.css","webpack:///./node_modules/swiper/modules/pagination.css","webpack:///./node_modules/swiper/swiper.css","webpack:///./node_modules/css-loader/dist/runtime/api.js","webpack:///./node_modules/css-loader/dist/runtime/cssWithMappingToString.js","webpack:///./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///webpack/runtime/jsonp chunk loading","webpack:///webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// require('./bootstrap');\n// require('./../../vendor/artestiq/abtest/Resources/assets/js/abtests');\nrequire('./../../vendor/artestiq/cms/Resources/assets/js/album');\nrequire('./back-link');\nrequire('./faders');\nrequire('./gsap-animations');\nrequire('./menu');\nrequire('./projects');\nrequire('./scrolllinks');\nrequire('./swipers');\n","document.addEventListener(\"DOMContentLoaded\", () => {\n document.querySelectorAll('.back').forEach((linkElement) => {\n // Provide a standard href to facilitate standard browser features such as\n // - Hover to see link\n // - Right click and copy link\n // - Right click and open in new tab\n linkElement.setAttribute('href', document.referrer);\n\n // We can't let the browser use the above href for navigation. If it does,\n // the browser will think that it is a regular link, and place the current\n // page on the browser history, so that if the user clicks \"back\" again,\n // it'll actually return to this page. We need to perform a native back to\n // integrate properly into the browser's history behavior\n linkElement.onclick = function () {\n history.back();\n return false;\n }\n });\n});\n","function isElementInViewport(el) {\n let rect = el.getBoundingClientRect();\n\n return (\n (rect.top >= 0 && rect.top <= (window.innerHeight || document.documentElement.clientHeight)) //top in viewport\n || (rect.bottom >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight)) // bottom in viewport\n || (rect.top < 0 && rect.bottom > (window.innerHeight || document.documentElement.clientHeight)) //top above, bottom below viewport\n );\n}\n\nfunction elementsVisibility(classname) {\n let elements = document.querySelectorAll(`.${classname}-in:not(.${classname}-in-active)`);\n\n elements.forEach((el) => {\n if (isElementInViewport(el)) {\n el.classList.add(`${classname}-in-active`);\n }\n });\n}\n\nfunction onVisibilityChange() {\n elementsVisibility('fade');\n elementsVisibility('scale');\n elementsVisibility('slide');\n}\n\ndocument.addEventListener('DOMContentLoaded', onVisibilityChange, false);\ndocument.addEventListener('load', onVisibilityChange, false);\ndocument.addEventListener('scroll', onVisibilityChange, false);\ndocument.addEventListener('resize', onVisibilityChange, false);\n","function staggeredReveal() {\n // usage:\n ScrollTrigger.batch(\".staggered-reveal\", {\n interval: 0.01, // time window (in seconds) for batching to occur. The first callback that occurs (of its type) will start the timer, and when it elapses, any other similar callbacks for other targets will be batched into an array and fed to the callback. Default is 0.1\n batchMax: 24, // maximum batch size (targets)\n from: [0,0],\n grid: 'auto',\n onEnter: batch => gsap.to(batch, {autoAlpha: 1, stagger: 0.05, overwrite: true}),\n // onLeave: batch => gsap.set(batch, {autoAlpha: 0, overwrite: true}),\n // onEnterBack: batch => gsap.to(batch, {autoAlpha: 1, stagger: 0.15, overwrite: true}),\n // onLeaveBack: batch => gsap.set(batch, {autoAlpha: 0, overwrite: true})\n // you can also define things like start, end, etc.\n });\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", staggeredReveal, false);\ndocument.addEventListener('resize', staggeredReveal, false);\n","function handleMenus() {\n const menuToggle = document.getElementById('menu-open');\n\n if (menuToggle) {\n menuToggle.addEventListener('change', () => {\n const htmlElement = document.querySelector('html');\n\n if (htmlElement) {\n if (menuToggle.checked) {\n htmlElement.classList.add('menu-open');\n }\n else {\n htmlElement.classList.remove('menu-open');\n }\n }\n });\n }\n}\n\nfunction handleSubmenus() {\n const submenuContainers = document.querySelectorAll('.menu .has-submenu');\n\n submenuContainers.forEach((submenuContainer) => {\n const submenuToggle = submenuContainer.querySelector('input[type=\"checkbox\"]');\n\n if (submenuToggle) {\n submenuToggle.addEventListener('change', () => {\n if (submenuToggle.checked) {\n submenuContainer.classList.add('submenu-open');\n\n submenuContainers.forEach((submenuContainer2) => {\n const submenuToggle2 = submenuContainer2.querySelector('input[type=\"checkbox\"]');\n\n if (submenuToggle.id !== submenuToggle2.id) {\n submenuToggle2.checked = false;\n }\n });\n }\n else {\n submenuContainer.classList.remove('submenu-open');\n }\n });\n }\n });\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n handleMenus();\n handleSubmenus();\n});\n","function updateProjects() {\n document.dispatchEvent(new Event('resize'));\n}\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n if (document.querySelector('.projects')) {\n Livewire.hook('component.init', () => updateProjects());\n Livewire.hook('morph.added', () => updateProjects());\n Livewire.hook('morph.updated', () => updateProjects());\n }\n});\n","document.addEventListener(\"DOMContentLoaded\", () => {\n document.querySelectorAll('a[href^=\"#\"]').forEach(anchor => {\n anchor.addEventListener('click', function (e) {\n e.preventDefault();\n\n document.querySelector(this.getAttribute('href')).scrollIntoView({\n behavior: 'smooth'\n });\n });\n });\n});\n","/**\n * SSR Window 5.0.0\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2025, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: February 12, 2025\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 const noExtend = ['__proto__', 'constructor', 'prototype'];\n Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\nconst ssrDocument = {\n body: {},\n addEventListener() {},\n removeEventListener() {},\n activeElement: {\n blur() {},\n nodeName: ''\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() {}\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() {},\n getElementsByTagName() {\n return [];\n }\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n }\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: ''\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n },\n history: {\n replaceState() {},\n pushState() {},\n go() {},\n back() {}\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() {},\n removeEventListener() {},\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n }\n };\n },\n Image() {},\n Date() {},\n screen: {},\n setTimeout() {},\n clearTimeout() {},\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n }\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { getWindow as a, getDocument as g };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction classesToTokens(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return classes.trim().split(' ').filter(c => !!c.trim());\n}\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n if (selector === void 0) {\n selector = '';\n }\n const window = getWindow();\n const children = [...element.children];\n if (window.HTMLSlotElement && element instanceof HTMLSlotElement) {\n children.push(...element.assignedElements());\n }\n if (!selector) {\n return children;\n }\n return children.filter(el => el.matches(selector));\n}\nfunction elementIsChildOfSlot(el, slot) {\n // Breadth-first search through all parent's children and assigned elements\n const elementsQueue = [slot];\n while (elementsQueue.length > 0) {\n const elementToCheck = elementsQueue.shift();\n if (el === elementToCheck) {\n return true;\n }\n elementsQueue.push(...elementToCheck.children, ...(elementToCheck.shadowRoot ? elementToCheck.shadowRoot.children : []), ...(elementToCheck.assignedElements ? elementToCheck.assignedElements() : []));\n }\n}\nfunction elementIsChildOf(el, parent) {\n const window = getWindow();\n let isChild = parent.contains(el);\n if (!isChild && window.HTMLSlotElement && parent instanceof HTMLSlotElement) {\n const children = [...parent.assignedElements()];\n isChild = children.includes(el);\n if (!isChild) {\n isChild = elementIsChildOfSlot(el, parent);\n }\n }\n return isChild;\n}\nfunction showWarning(text) {\n try {\n console.warn(text);\n return;\n } catch (err) {\n // err\n }\n}\nfunction createElement(tag, classes) {\n if (classes === void 0) {\n classes = [];\n }\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n}\nfunction makeElementsArray(el) {\n return (Array.isArray(el) ? el : [el]).filter(e => !!e);\n}\nfunction getRotateFix(swiper) {\n return v => {\n if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) {\n return v + 0.001;\n }\n return v;\n };\n}\n\nexport { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, getSlideTransformEl as g, elementIndex as h, classesToTokens as i, getTranslate as j, elementTransitionEnd as k, isObject as l, makeElementsArray as m, nextTick as n, getRotateFix as o, elementStyle as p, elementNextAll as q, elementPrevAll as r, setCSSProperty as s, animateCSSModeScroll as t, showWarning as u, elementIsChildOf as v, extend as w, deleteProps as x };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, p as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, q as elementNextAll, r as elementPrevAll, j as getTranslate, t as animateCSSModeScroll, n as nextTick, u as showWarning, c as createElement, v as elementIsChildOf, d as now, w as extend, h as elementIndex, x as deleteProps } from './utils.mjs';\n\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nlet deviceCached;\nfunction calcDevice(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nlet browser;\nfunction calcBrowser() {\n const window = getWindow();\n const device = getDevice();\n let needPerspectiveFix = false;\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n if (isSafari()) {\n const ua = String(window.navigator.userAgent);\n if (ua.includes('Version/')) {\n const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n }\n }\n const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent);\n const isSafariBrowser = isSafari();\n const need3dFix = isSafariBrowser || isWebView && device.ios;\n return {\n isSafari: needPerspectiveFix || isSafariBrowser,\n needPerspectiveFix,\n need3dFix,\n isWebView\n };\n}\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nfunction Resize(_ref) {\n let {\n swiper,\n on,\n emit\n } = _ref;\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(_ref2 => {\n let {\n contentBoxSize,\n contentRect,\n target\n } = _ref2;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n\nfunction Observer(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const observers = [];\n const window = getWindow();\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (swiper.__preventObserver__) return;\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.hostEl);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.hostEl, {\n childList: swiper.params.observeSlideChildren\n });\n\n // Observe wrapper\n attach(swiper.wrapperEl, {\n attributes: false\n });\n };\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler() {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit() {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};\n\nfunction updateSize() {\n const swiper = this;\n let width;\n let height;\n const el = swiper.el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = el.clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = el.clientHeight;\n }\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}\n\nfunction updateSlides() {\n const swiper = this;\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const {\n wrapperEl,\n slidesEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n } else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\n });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slides);\n } else if (swiper.grid) {\n swiper.grid.unsetSlides();\n }\n\n // Calc slides\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n let slide;\n if (slides[i]) slide = slides[i];\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slides);\n }\n if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[swiper.getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) {\n slide.style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide.style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n if (slides[i]) {\n slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for (let i = 0; i < groups; i += 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n }\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n if (params.slidesPerGroup === 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n }\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0;\n snapGrid = snapGrid.map(snap => {\n if (snap <= 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0);\n if (allSlidesSize + offsetSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n swiper.emit('slidesUpdated');\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.el.classList.remove(backFaceHiddenClass);\n }\n }\n}\n\nfunction updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides[swiper.getSlideIndexByData(index)];\n }\n return swiper.slides[index];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || []).forEach(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\n\nfunction updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n }\n}\n\nconst toggleSlideClasses$1 = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n let spaceBetween = params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n }\n toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass);\n toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass);\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}\n\nfunction updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd,\n progressLoop\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n}\n\nconst toggleSlideClasses = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n let activeSlide;\n let prevSlide;\n let nextSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n if (gridEnabled) {\n activeSlide = slides.find(slideEl => slideEl.column === activeIndex);\n nextSlide = slides.find(slideEl => slideEl.column === activeIndex + 1);\n prevSlide = slides.find(slideEl => slideEl.column === activeIndex - 1);\n } else {\n activeSlide = slides[activeIndex];\n }\n }\n if (activeSlide) {\n if (!gridEnabled) {\n // Next Slide\n nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n\n // Prev Slide\n prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n }\n }\n slides.forEach(slideEl => {\n toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass);\n toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass);\n toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass);\n });\n swiper.emitSlidesClasses();\n}\n\nconst processLazyPreloader = (swiper, imageEl) => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n const slideEl = imageEl.closest(slideSelector());\n if (slideEl) {\n let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (!lazyEl && swiper.isElement) {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n } else {\n // init later\n requestAnimationFrame(() => {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl) lazyEl.remove();\n }\n });\n }\n }\n if (lazyEl) lazyEl.remove();\n }\n};\nconst unlazy = (swiper, index) => {\n if (!swiper.slides[index]) return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0) return;\n amount = Math.min(amount, len);\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n const activeIndex = swiper.activeIndex;\n if (swiper.params.grid && swiper.params.grid.rows > 1) {\n const activeColumn = activeIndex;\n const preloadColumns = [activeColumn - amount];\n preloadColumns.push(...Array.from({\n length: amount\n }).map((_, i) => {\n return activeColumn + slidesPerView + i;\n }));\n swiper.slides.forEach((slideEl, i) => {\n if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n });\n return;\n }\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind || swiper.params.loop) {\n for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n const realIndex = (i % len + len) % len;\n if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n }\n } else {\n for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n unlazy(swiper, i);\n }\n }\n }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n const {\n slidesGrid,\n params\n } = swiper;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n const getVirtualRealIndex = aIndex => {\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) {\n realIndex = swiper.virtual.slides.length + realIndex;\n }\n if (realIndex >= swiper.virtual.slides.length) {\n realIndex -= swiper.virtual.slides.length;\n }\n return realIndex;\n };\n if (typeof activeIndex === 'undefined') {\n activeIndex = getActiveIndexByTranslate(swiper);\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex && !swiper.params.loop) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n return;\n }\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (gridEnabled) {\n const firstSlideInColumn = swiper.slides.find(slideEl => slideEl.column === activeIndex);\n let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);\n if (Number.isNaN(activeSlideIndex)) {\n activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);\n }\n realIndex = Math.floor(activeSlideIndex / params.grid.rows);\n } else if (swiper.slides[activeIndex]) {\n const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');\n if (slideIndex) {\n realIndex = parseInt(slideIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n }\n}\n\nfunction updateClickedSlide(el, path) {\n const swiper = this;\n const params = swiper.params;\n let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n slide = pathEl;\n }\n });\n }\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n swiper.animating = false;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}\n\nvar translate = {\n getTranslate: getSwiperTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};\n\nfunction setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n }\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n\nfunction transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}\n\nfunction transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}\n\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd\n};\n\nfunction slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex];\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n // initial virtual\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n const isInitialVirtual = isVirtual && initial;\n // Update Index\n if (!isInitialVirtual && (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\n const browser = getBrowser();\n const isSafari = browser.isSafari;\n if (isVirtual && !initial && isSafari && swiper.isElement) {\n swiper.virtual.update(false, false, slideIndex);\n }\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}\n\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n } else {\n let targetSlideIndex;\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n targetSlideIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;\n } else {\n targetSlideIndex = swiper.getSlideIndexByData(newIndex);\n }\n const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;\n const {\n centeredSlides\n } = swiper.params;\n let slidesPerView = swiper.params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n let needLoopFix = cols - targetSlideIndex < slidesPerView;\n if (centeredSlides) {\n needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);\n }\n if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) {\n needLoopFix = false;\n }\n if (needLoopFix) {\n const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';\n swiper.loopFix({\n direction,\n slideTo: true,\n activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,\n slideRealIndex: direction === 'next' ? swiper.realIndex : undefined\n });\n }\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n newIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;\n } else {\n newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n }\n requestAnimationFrame(() => {\n swiper.slideTo(newIndex, speed, runCallbacks, internal);\n });\n return swiper;\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n enabled,\n params,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'next'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n });\n return true;\n }\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n const isFreeMode = params.freeMode && params.freeMode.enabled;\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && (params.cssMode || isFreeMode)) {\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 = isFreeMode ? snapGrid[prevSnapIndex] : snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n });\n return true;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal, threshold) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (threshold === void 0) {\n threshold = 0.5;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide() {\n const swiper = this;\n if (swiper.destroyed) return;\n const {\n params,\n slidesEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n\nvar slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};\n\nfunction loopCreate(slideRealIndex) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const initSlides = () => {\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n };\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);\n const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;\n const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;\n const addBlankSlides = amountOfSlides => {\n for (let i = 0; i < amountOfSlides; i += 1) {\n const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]);\n swiper.slidesEl.append(slideEl);\n }\n };\n if (shouldFillGroup) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else if (shouldFillGrid) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else {\n initSlides();\n }\n swiper.loopFix({\n slideRealIndex,\n direction: params.centeredSlides ? undefined : 'next'\n });\n}\n\nfunction loopFix(_temp) {\n let {\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n byController,\n byMousewheel\n } = _temp === void 0 ? {} : _temp;\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n const {\n slides,\n allowSlidePrev,\n allowSlideNext,\n slidesEl,\n params\n } = swiper;\n const {\n centeredSlides\n } = params;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n if (swiper.virtual && params.virtual.enabled) {\n if (slideTo) {\n if (!params.centeredSlides && swiper.snapIndex === 0) {\n swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n return;\n }\n let slidesPerView = params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;\n let loopedSlides = slidesPerGroup;\n if (loopedSlides % slidesPerGroup !== 0) {\n loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;\n }\n loopedSlides += params.loopAdditionalSlides;\n swiper.loopedSlides = loopedSlides;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n if (slides.length < slidesPerView + loopedSlides) {\n showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters');\n } else if (gridEnabled && params.grid.fill === 'row') {\n showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`');\n }\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n let activeIndex = swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(slides.find(el => el.classList.contains(params.slideActiveClass)));\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;\n const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;\n const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);\n // prepend last slides before start\n if (activeColIndexWithShift < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n const colIndexToPrepend = cols - index - 1;\n for (let i = slides.length - 1; i >= 0; i -= 1) {\n if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i);\n }\n // slides.forEach((slide, slideIndex) => {\n // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);\n // });\n } else {\n prependSlidesIndexes.push(cols - index - 1);\n }\n }\n } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {\n slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n slides.forEach((slide, slideIndex) => {\n if (slide.column === index) appendSlidesIndexes.push(slideIndex);\n });\n } else {\n appendSlidesIndexes.push(index);\n }\n }\n }\n swiper.__preventObserver__ = true;\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\n } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) {\n swiper.slides.forEach((slide, slideIndex) => {\n swiper.grid.updateSlide(slideIndex, slide, swiper.slides);\n });\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (slideTo) {\n if (prependSlidesIndexes.length > 0 && isPrev) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n if (setTranslate) {\n const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex + shift, 0, false, true);\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else if (appendSlidesIndexes.length > 0 && isNext) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex - shift, 0, false, true);\n }\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex,\n direction,\n setTranslate,\n activeSlideIndex,\n byController: true\n };\n if (Array.isArray(swiper.controller.control)) {\n swiper.controller.control.forEach(c => {\n if (!c.destroyed && c.params.loop) c.loopFix({\n ...loopParams,\n slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix({\n ...loopParams,\n slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n }\n }\n swiper.emit('loopFix');\n}\n\nfunction loopDestroy() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n}\n\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n const swiper = this;\n if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nfunction unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\nfunction preventEdgeSwipe(swiper, event, startX) {\n const window = getWindow();\n const {\n params\n } = swiper;\n const edgeSwipeDetection = params.edgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n return true;\n }\n return false;\n }\n return true;\n}\nfunction onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const data = swiper.touchEventsData;\n if (e.type === 'pointerdown') {\n if (data.pointerId !== null && data.pointerId !== e.pointerId) {\n return;\n }\n data.pointerId = e.pointerId;\n } else if (e.type === 'touchstart' && e.targetTouches.length === 1) {\n data.touchId = e.targetTouches[0].identifier;\n }\n if (e.type === 'touchstart') {\n // don't proceed touch event\n preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);\n return;\n }\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = e.composedPath ? e.composedPath() : e.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n if (!preventEdgeSwipe(swiper, e, startX)) {\n return;\n }\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (e.type === 'pointermove') {\n if (data.touchId !== null) return; // return from pointer if we use touch\n const id = e.pointerId;\n if (id !== data.pointerId) return;\n }\n let targetTouch;\n if (e.type === 'touchmove') {\n targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n } else {\n targetTouch = e;\n }\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!e.target.matches(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') {\n document.activeElement.blur();\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n touches.previousX = touches.currentX;\n touches.previousY = touches.currentY;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;\n if (!data.isMoved) {\n if (isLoop && allowLoopFix) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true,\n detail: {\n bySwiperTouchMove: true\n }\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n new Date().getTime();\n if (params._loopSwapReset !== false && data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n startTranslate: data.currentTranslate\n });\n data.loopSwapReset = true;\n data.startTranslate = data.currentTranslate;\n return;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] - (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.activeIndex + 1] + swiper.params.spaceBetween : 0) - swiper.params.spaceBetween : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween + (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween : 0) : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetTouch;\n const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';\n if (!isTouchEvent) {\n if (data.touchId !== null) return; // return from pointer if we use touch\n if (e.pointerId !== data.pointerId) return;\n targetTouch = e;\n } else {\n targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n }\n if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {\n const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n data.pointerId = null;\n data.touchId = null;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop;\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (swipeToLast || currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n\nfunction onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n const isVirtualLoop = isVirtual && params.loop;\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n if (swiper.params.loop && !isVirtual) {\n swiper.slideToLoop(swiper.realIndex, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n clearTimeout(swiper.autoplay.resizeTimeout);\n swiper.autoplay.resizeTimeout = setTimeout(() => {\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.resume();\n }\n }, 500);\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n\nfunction onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n\nfunction onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n swiper.emit('setTranslate', swiper.translate, false);\n}\n\nfunction onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n return;\n }\n swiper.update();\n}\n\nfunction onDocumentTouchStart() {\n const swiper = this;\n if (swiper.documentTouchHandlerProceeded) return;\n swiper.documentTouchHandlerProceeded = true;\n if (swiper.params.touchReleaseOnEdges) {\n swiper.el.style.touchAction = 'auto';\n }\n}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n el,\n wrapperEl,\n device\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n if (!el || typeof el === 'string') return;\n\n // Touch Events\n document[domMethod]('touchstart', swiper.onDocumentTouchStart, {\n passive: false,\n capture\n });\n el[domMethod]('touchstart', swiper.onTouchStart, {\n passive: false\n });\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('touchmove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('touchend', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('touchcancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('contextmenu', swiper.onTouchEnd, {\n passive: true\n });\n\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n\n // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n};\nfunction attachEvents() {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nvar events$1 = {\n attachEvents,\n detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n const document = getDocument();\n\n // Get breakpoint for window/container width and update parameters\n const breakpointsBase = params.breakpointsBase === 'window' || !params.breakpointsBase ? params.breakpointsBase : 'container';\n const breakpointContainer = ['window', 'container'].includes(params.breakpointsBase) || !params.breakpointsBase ? swiper.el : document.querySelector(params.breakpointsBase);\n const breakpoint = swiper.getBreakpoint(breakpoints, breakpointsBase, breakpointContainer);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasGrabCursor = swiper.params.grabCursor;\n const isGrabCursor = breakpointParams.grabCursor;\n const wasEnabled = params.enabled;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n if (wasGrabCursor && !isGrabCursor) {\n swiper.unsetGrabCursor();\n } else if (!wasGrabCursor && isGrabCursor) {\n swiper.setGrabCursor();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n if (typeof breakpointParams[prop] === 'undefined') return;\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n const wasLoop = params.loop;\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n const hasLoop = swiper.params.loop;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (initialized) {\n if (needsReLoop) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (!wasLoop && hasLoop) {\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (wasLoop && !hasLoop) {\n swiper.loopDestroy();\n }\n }\n swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n\nvar breakpoints = {\n setBreakpoint,\n getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\nfunction addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n if (!el || typeof el === 'string') return;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}\n\nvar classes = {\n addClasses,\n removeClasses\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nvar checkOverflow$1 = {\n checkOverflow\n};\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n swiperElementNodeName: 'SWIPER-CONTAINER',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n eventsPrefix: 'swiper',\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 5,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // loop\n loop: false,\n loopAddBlankSlides: true,\n loopAdditionalSlides: 0,\n loopPreventsSliding: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-blank',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideFullyVisibleClass: 'swiper-slide-fully-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n params[moduleParamName].auto = true;\n }\n if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n params[moduleParamName].auto = true;\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events: events$1,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor() {\n let el;\n let params;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n pointerId: null,\n touchId: null\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getDirectionLabel(property) {\n if (this.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index));\n }\n recalcSlides() {\n const swiper = this;\n const {\n slidesEl,\n params\n } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n if (exact === void 0) {\n exact = false;\n }\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n if (typeof params.slidesPerView === 'number') return params.slidesPerView;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += Math.ceil(slides[i].swiperSlideSize);\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n }\n });\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n setTranslate();\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n translated = swiper.slideTo(slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.forEach(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n if (swiper.rtl) {\n swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n mount(element) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n let el = element || swiper.params.el;\n if (typeof el === 'string') {\n el = document.querySelector(el);\n }\n if (!el) {\n return false;\n }\n el.swiper = swiper;\n if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) {\n swiper.isElement = true;\n }\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = el.shadowRoot.querySelector(getWrapperSelector());\n // Children needs to return slot items\n return res;\n }\n return elementChildren(el, getWrapperSelector())[0];\n };\n // Find Wrapper\n let wrapperEl = getWrapper();\n if (!wrapperEl && swiper.params.createElements) {\n wrapperEl = createElement('div', swiper.params.wrapperClass);\n el.append(wrapperEl);\n elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n wrapperEl.append(slideEl);\n });\n }\n Object.assign(swiper, {\n el,\n wrapperEl,\n slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n hostEl: swiper.isElement ? el.parentNode.host : el,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n });\n return true;\n }\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Attach events\n swiper.attachEvents();\n const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n if (swiper.isElement) {\n lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n }\n lazyElements.forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n } else {\n imageEl.addEventListener('load', e => {\n processLazyPreloader(swiper, e.target);\n });\n }\n });\n preload(swiper);\n\n // Init Flag\n swiper.initialized = true;\n preload(swiper);\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n const swiper = this;\n const {\n params,\n el,\n wrapperEl,\n slides\n } = swiper;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n if (el && typeof el !== 'string') {\n el.removeAttribute('style');\n }\n if (wrapperEl) {\n wrapperEl.removeAttribute('style');\n }\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n }\n }\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.swiper = null;\n }\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\n\nexport { Swiper as S, defaults as d };\n","import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = createElement('div', checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n\nexport { createElementIfNotDefined as c };\n","import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction Navigation(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n prevEl: null\n };\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.querySelector(el) || swiper.hostEl.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\n } else if (res && res.length === 1) {\n res = res[0];\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (subEl) {\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const initButton = (el, dir) => {\n if (el) {\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n }\n if (!swiper.enabled && el) {\n el.classList.add(...params.lockClass.split(' '));\n }\n };\n nextEl.forEach(el => initButton(el, 'next'));\n prevEl.forEach(el => initButton(el, 'prev'));\n }\n function destroy() {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const destroyButton = (el, dir) => {\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n };\n nextEl.forEach(el => destroyButton(el, 'next'));\n prevEl.forEach(el => destroyButton(el, 'prev'));\n }\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (swiper.enabled) {\n update();\n return;\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl);\n if (swiper.isElement && !targetIsButton) {\n const path = e.path || e.composedPath && e.composedPath();\n if (path) {\n targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl));\n }\n }\n if (swiper.params.navigation.hideOnClick && !targetIsButton) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}\n\nexport { Navigation as default };\n","function classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return `.${classes.trim().replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n\nexport { classesToSelector as c };\n","import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray, f as elementOuterSize, h as elementIndex, a as elementParents } from '../shared/utils.mjs';\n\nfunction Pagination(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n }\n function setSideBullets(bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n if (!bulletEl) return;\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n }\n }\n }\n function getMoveDirection(prevIndex, nextIndex, length) {\n prevIndex = prevIndex % length;\n nextIndex = nextIndex % length;\n if (nextIndex === prevIndex + 1) {\n return 'next';\n } else if (nextIndex === prevIndex - 1) {\n return 'previous';\n }\n return;\n }\n function onBulletClick(e) {\n const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n if (!bulletEl) {\n return;\n }\n e.preventDefault();\n const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n if (swiper.params.loop) {\n if (swiper.realIndex === index) return;\n const moveDirection = getMoveDirection(swiper.realIndex, index, swiper.slides.length);\n if (moveDirection === 'next') {\n swiper.slideNext();\n } else if (moveDirection === 'previous') {\n swiper.slidePrev();\n } else {\n swiper.slideToLoop(index);\n }\n } else {\n swiper.slideTo(index);\n }\n }\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n // Current/Total\n let current;\n let previousIndex;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n previousIndex = swiper.previousRealIndex || 0;\n current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n previousIndex = swiper.previousSnapIndex;\n } else {\n previousIndex = swiper.previousIndex || 0;\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n el.forEach(subEl => {\n subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n });\n if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n dynamicBulletIndex += current - (previousIndex || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.forEach(bulletEl => {\n const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n bulletEl.classList.remove(...classesToRemove);\n });\n if (el.length > 1) {\n bullets.forEach(bullet => {\n const bulletIndex = elementIndex(bullet);\n if (bulletIndex === current) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n } else if (swiper.isElement) {\n bullet.setAttribute('part', 'bullet');\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n if (bulletIndex === firstIndex) {\n setSideBullets(bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets(bullet, 'next');\n }\n }\n });\n } else {\n const bullet = bullets[current];\n if (bullet) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n }\n if (swiper.isElement) {\n bullets.forEach((bulletEl, bulletIndex) => {\n bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');\n });\n }\n if (params.dynamicBullets) {\n const firstDisplayedBullet = bullets[firstIndex];\n const lastDisplayedBullet = bullets[lastIndex];\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n if (bullets[i]) {\n bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n }\n setSideBullets(firstDisplayedBullet, 'prev');\n setSideBullets(lastDisplayedBullet, 'next');\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.forEach(bullet => {\n bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n });\n }\n }\n el.forEach((subEl, subElIndex) => {\n if (params.type === 'fraction') {\n subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n fractionEl.textContent = params.formatFractionCurrent(current + 1);\n });\n subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n totalEl.textContent = params.formatFractionTotal(total);\n });\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n });\n }\n if (params.type === 'custom' && params.renderCustom) {\n subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n if (subElIndex === 0) emit('paginationRender', subEl);\n } else {\n if (subElIndex === 0) emit('paginationRender', subEl);\n emit('paginationUpdate', subEl);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n });\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n // prettier-ignore\n paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\">`;\n }\n }\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `` + ' / ' + ``;\n }\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n }\n swiper.pagination.bullets = [];\n el.forEach(subEl => {\n if (params.type !== 'custom') {\n subEl.innerHTML = paginationHTML || '';\n }\n if (params.type === 'bullets') {\n swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\n }\n });\n if (params.type !== 'custom') {\n emit('paginationRender', el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = [...document.querySelectorAll(params.el)];\n }\n if (!el) {\n el = params.el;\n }\n if (!el || el.length === 0) return;\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n el = [...swiper.el.querySelectorAll(params.el)];\n // check if it belongs to another nested Swiper\n if (el.length > 1) {\n el = el.find(subEl => {\n if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n if (Array.isArray(el) && el.length === 1) el = el[0];\n Object.assign(swiper.pagination, {\n el\n });\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (params.type === 'bullets' && params.clickable) {\n subEl.classList.add(...(params.clickableClass || '').split(' '));\n }\n subEl.classList.add(params.modifierClass + params.type);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.type === 'bullets' && params.dynamicBullets) {\n subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n subEl.classList.add(params.progressbarOppositeClass);\n }\n if (params.clickable) {\n subEl.addEventListener('click', onBulletClick);\n }\n if (!swiper.enabled) {\n subEl.classList.add(params.lockClass);\n }\n });\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.hiddenClass);\n subEl.classList.remove(params.modifierClass + params.type);\n subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.clickable) {\n subEl.classList.remove(...(params.clickableClass || '').split(' '));\n subEl.removeEventListener('click', onBulletClick);\n }\n });\n }\n if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));\n }\n on('changeDirection', () => {\n if (!swiper.pagination || !swiper.pagination.el) return;\n const params = swiper.params.pagination;\n let {\n el\n } = swiper.pagination;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n update();\n });\n on('snapGridLengthChange', () => {\n render();\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const el = makeElementsArray(swiper.pagination.el);\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n }\n init();\n render();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}\n\nexport { Pagination as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\n\n/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nfunction Autoplay(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit,\n params\n } = _ref;\n swiper.autoplay = {\n running: false,\n paused: false,\n timeLeft: 0\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: false,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n let timeout;\n let raf;\n let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayTimeLeft;\n let autoplayStartTime = new Date().getTime();\n let wasPaused;\n let isTouched;\n let pausedByTouch;\n let touchStartTimeout;\n let slideChanged;\n let pausedByInteraction;\n let pausedByPointerEnter;\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n if (e.target !== swiper.wrapperEl) return;\n swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);\n if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) {\n return;\n }\n resume();\n }\n const calcTimeLeft = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.autoplay.paused) {\n wasPaused = true;\n } else if (wasPaused) {\n autoplayDelayCurrent = autoplayTimeLeft;\n wasPaused = false;\n }\n const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n swiper.autoplay.timeLeft = timeLeft;\n emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n raf = requestAnimationFrame(() => {\n calcTimeLeft();\n });\n };\n const getSlideDelay = () => {\n let activeSlideEl;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n activeSlideEl = swiper.slides.find(slideEl => slideEl.classList.contains('swiper-slide-active'));\n } else {\n activeSlideEl = swiper.slides[swiper.activeIndex];\n }\n if (!activeSlideEl) return undefined;\n const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\n return currentSlideDelay;\n };\n const run = delayForce => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n cancelAnimationFrame(raf);\n calcTimeLeft();\n let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;\n autoplayDelayTotal = swiper.params.autoplay.delay;\n autoplayDelayCurrent = swiper.params.autoplay.delay;\n const currentSlideDelay = getSlideDelay();\n if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {\n delay = currentSlideDelay;\n autoplayDelayTotal = currentSlideDelay;\n autoplayDelayCurrent = currentSlideDelay;\n }\n autoplayTimeLeft = delay;\n const speed = swiper.params.speed;\n const proceed = () => {\n if (!swiper || swiper.destroyed) return;\n if (swiper.params.autoplay.reverseDirection) {\n if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n swiper.slidePrev(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n emit('autoplay');\n }\n } else {\n if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n swiper.slideNext(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, speed, true, true);\n emit('autoplay');\n }\n }\n if (swiper.params.cssMode) {\n autoplayStartTime = new Date().getTime();\n requestAnimationFrame(() => {\n run();\n });\n }\n };\n if (delay > 0) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n proceed();\n }, delay);\n } else {\n requestAnimationFrame(() => {\n proceed();\n });\n }\n\n // eslint-disable-next-line\n return delay;\n };\n const start = () => {\n autoplayStartTime = new Date().getTime();\n swiper.autoplay.running = true;\n run();\n emit('autoplayStart');\n };\n const stop = () => {\n swiper.autoplay.running = false;\n clearTimeout(timeout);\n cancelAnimationFrame(raf);\n emit('autoplayStop');\n };\n const pause = (internal, reset) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n clearTimeout(timeout);\n if (!internal) {\n pausedByInteraction = true;\n }\n const proceed = () => {\n emit('autoplayPause');\n if (swiper.params.autoplay.waitForTransition) {\n swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);\n } else {\n resume();\n }\n };\n swiper.autoplay.paused = true;\n if (reset) {\n if (slideChanged) {\n autoplayTimeLeft = swiper.params.autoplay.delay;\n }\n slideChanged = false;\n proceed();\n return;\n }\n const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n proceed();\n };\n const resume = () => {\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n autoplayStartTime = new Date().getTime();\n if (pausedByInteraction) {\n pausedByInteraction = false;\n run(autoplayTimeLeft);\n } else {\n run();\n }\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n };\n const onVisibilityChange = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n const document = getDocument();\n if (document.visibilityState === 'hidden') {\n pausedByInteraction = true;\n pause(true);\n }\n if (document.visibilityState === 'visible') {\n resume();\n }\n };\n const onPointerEnter = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByInteraction = true;\n pausedByPointerEnter = true;\n if (swiper.animating || swiper.autoplay.paused) return;\n pause(true);\n };\n const onPointerLeave = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByPointerEnter = false;\n if (swiper.autoplay.paused) {\n resume();\n }\n };\n const attachMouseEvents = () => {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.el.addEventListener('pointerenter', onPointerEnter);\n swiper.el.addEventListener('pointerleave', onPointerLeave);\n }\n };\n const detachMouseEvents = () => {\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.removeEventListener('pointerenter', onPointerEnter);\n swiper.el.removeEventListener('pointerleave', onPointerLeave);\n }\n };\n const attachDocumentEvents = () => {\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n };\n const detachDocumentEvents = () => {\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n attachMouseEvents();\n attachDocumentEvents();\n start();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n detachDocumentEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n });\n on('_freeModeStaticRelease', () => {\n if (pausedByTouch || pausedByInteraction) {\n resume();\n }\n });\n on('_freeModeNoMomentumRelease', () => {\n if (!swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n return;\n }\n isTouched = true;\n pausedByTouch = false;\n pausedByInteraction = false;\n touchStartTimeout = setTimeout(() => {\n pausedByInteraction = true;\n pausedByTouch = true;\n pause(true);\n }, 200);\n });\n on('touchEnd', () => {\n if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n clearTimeout(touchStartTimeout);\n clearTimeout(timeout);\n if (swiper.params.autoplay.disableOnInteraction) {\n pausedByTouch = false;\n isTouched = false;\n return;\n }\n if (pausedByTouch && swiper.params.cssMode) resume();\n pausedByTouch = false;\n isTouched = false;\n });\n on('slideChange', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n slideChanged = true;\n });\n Object.assign(swiper.autoplay, {\n start,\n stop,\n pause,\n resume\n });\n}\n\nexport { Autoplay as default };\n","function Grid(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n grid: {\n rows: 1,\n fill: 'column'\n }\n });\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n let wasMultiRow;\n const getSpaceBetween = () => {\n let spaceBetween = swiper.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 return spaceBetween;\n };\n const initSlides = slides => {\n const {\n slidesPerView\n } = swiper.params;\n const {\n rows,\n fill\n } = swiper.params.grid;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;\n numFullColumns = Math.floor(slidesLength / rows);\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n }\n if (slidesPerView !== 'auto' && fill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n }\n slidesPerRow = slidesNumberEvenToRows / rows;\n };\n const unsetSlides = () => {\n if (swiper.slides) {\n swiper.slides.forEach(slide => {\n if (slide.swiperSlideGridSet) {\n slide.style.height = '';\n slide.style[swiper.getDirectionLabel('margin-top')] = '';\n }\n });\n }\n };\n const updateSlide = (i, slide, slides) => {\n const {\n slidesPerGroup\n } = swiper.params;\n const spaceBetween = getSpaceBetween();\n const {\n rows,\n fill\n } = swiper.params.grid;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (fill === 'row' && slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n slide.style.order = newSlideOrderIndex;\n } else if (fill === 'column') {\n column = Math.floor(i / rows);\n row = i - column * rows;\n if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n row += 1;\n if (row >= rows) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n slide.row = row;\n slide.column = column;\n slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`;\n slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : '';\n slide.swiperSlideGridSet = true;\n };\n const updateWrapperSize = (slideSize, snapGrid) => {\n const {\n centeredSlides,\n roundLengths\n } = swiper.params;\n const spaceBetween = getSpaceBetween();\n const {\n rows\n } = swiper.params.grid;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid.splice(0, snapGrid.length);\n snapGrid.push(...newSlidesGrid);\n }\n };\n const onInit = () => {\n wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1;\n };\n const onUpdate = () => {\n const {\n params,\n el\n } = swiper;\n const isMultiRow = params.grid && params.grid.rows > 1;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n numFullColumns = 1;\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n wasMultiRow = isMultiRow;\n };\n on('init', onInit);\n on('update', onUpdate);\n swiper.grid = {\n initSlides,\n unsetSlides,\n updateSlide,\n updateWrapperSize\n };\n}\n\nexport { Grid as default };\n","import api from \"!../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../css-loader/dist/cjs.js??ruleSet[1].rules[7].oneOf[1].use[1]!../postcss-loader/dist/cjs.js??ruleSet[1].rules[7].oneOf[1].use[2]!./swiper.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../css-loader/dist/cjs.js??ruleSet[1].rules[7].oneOf[1].use[1]!../../postcss-loader/dist/cjs.js??ruleSet[1].rules[7].oneOf[1].use[2]!./grid.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../css-loader/dist/cjs.js??ruleSet[1].rules[7].oneOf[1].use[1]!../../postcss-loader/dist/cjs.js??ruleSet[1].rules[7].oneOf[1].use[2]!./pagination.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","// core version + navigation, pagination modules:\nimport Swiper from 'swiper';\nimport {Autoplay, Navigation, Pagination, Grid } from 'swiper/modules';\n// import Swiper and modules styles\nimport 'swiper/css';\nimport \"swiper/css/grid\";\nimport 'swiper/css/pagination';\n\nwindow.InitSlider = function (selector, modifiedOptions) {\n if (document.querySelectorAll(selector).length) {\n document.querySelectorAll(selector).forEach((elem) => {\n let options = {\n // configure Swiper to use modules\n keyboard: {\n enabled: true\n },\n modules: [Autoplay, Navigation, Pagination, Grid],\n navigation: {\n nextEl: elem.querySelector('.swiper-button-next'),\n prevEl: elem.querySelector('.swiper-button-prev'),\n },\n pagination: {\n el: elem.querySelector('.swiper-pagination-progress'),\n type: \"fraction\",\n },\n slidesPerView: 1.1,\n spaceBetween: 28,\n breakpoints: {\n 640: {\n slidesPerView: 2\n },\n 1024: {\n spaceBetween: 32,\n slidesPerView: 3\n }\n }\n };\n Object.assign(options, modifiedOptions);\n const swiper = new Swiper(elem, options);\n });\n }\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n window.InitSlider('.services-promo .swiper', {\n breakpoints: {\n 0: {\n disable: true\n },\n 768: {\n slidesPerView: 'auto',\n spaceBetween: 48\n },\n 1024: {\n slidesPerView: 3,\n spaceBetween: 60\n },\n 1280: {\n disable: true,\n spaceBetween: 64\n }\n },\n });\n window.InitSlider('.reviewsantwan.swiper', {\n breakpoints: {},\n slidesPerView: 1,\n spaceBetween: 0\n });\n window.InitSlider('.projectslider .swiper', {\n breakpoints: {\n 0: {\n slidesPerView: 1\n },\n 768: {\n slidesPerView: 2\n },\n 1024: {\n slidesPerView: 2.5\n }\n }\n });\n});\n","function handleAlbumGridsWithPopup() {\n const albums = document.querySelectorAll('.album.album--grid');\n\n albums.forEach((album) => {\n let images = [];\n let pictureElements = album.querySelectorAll('picture[data-href]');\n const popupElement = album.querySelector('.popup');\n const popupImgElement = album.querySelector('.popup picture img');\n const closeButton = album.querySelector('.popup__close');\n const nextButton = album.querySelector('.popup__next');\n const previousButton = album.querySelector('.popup__previous');\n\n if (pictureElements.length && popupElement && popupImgElement && closeButton && nextButton && previousButton) {\n let activeIndex = 0;\n const nextImage = () => {\n activeIndex = (activeIndex+1 >= images.length) ? 0 : activeIndex + 1;\n updateImage(activeIndex);\n };\n const previousImage = () => {\n activeIndex = (activeIndex - 1 < 0) ? images.length -1 : activeIndex - 1;\n updateImage(activeIndex);\n };\n const updateImage = (index) => {\n activeIndex = index;\n popupImgElement.setAttribute('src', images[index]);\n };\n popupImgElement.addEventListener(\"contextmenu\", function (e) {\n e.preventDefault();\n });\n\n pictureElements.forEach((picture) => {\n let index = images.length;\n picture.setAttribute('data-index', index);\n images.push(picture.getAttribute('data-href'));\n\n picture.addEventListener('click', () => {\n updateImage(index);\n popupElement.removeAttribute('hidden');\n });\n picture.addEventListener(\"contextmenu\", function (e) {\n e.preventDefault();\n });\n });\n\n closeButton.addEventListener('click', () => {\n popupElement.setAttribute('hidden', 'hidden');\n });\n nextButton.addEventListener('click', nextImage);\n previousButton.addEventListener('click', previousImage);\n document.addEventListener('swiped-left', previousImage);\n document.addEventListener('swiped-right', nextImage);\n\n document.onkeydown = (evt) => {\n evt = evt || window.event;\n\n if (evt.code === 'Escape') {\n popupElement.setAttribute('hidden', 'hidden');\n }\n if (evt.code === 'ArrowRight') {\n nextImage();\n }\n if (evt.code === 'ArrowLeft') {\n previousImage();\n }\n };\n }\n });\n}\n\nfunction handleAlbumSlideshow(selectorGlide, selectorThumbs, autoplay = false, animationDuration = 500) {\n if (document.querySelector(selectorGlide)) {\n const glider = new Glide(selectorGlide, {\n animationDuration: animationDuration,\n autoplay: autoplay,\n gap: 0,\n type: autoplay ? 'carousel' : 'slider',\n });\n glider.mount();\n\n if (selectorThumbs) {\n const thumbs = document.querySelectorAll(selectorThumbs + ' [data-glide-dir]');\n\n thumbs.forEach(thumb => {\n thumb.addEventListener('click', () => {\n glider.go(thumb.getAttribute('data-glide-dir'));\n })\n })\n }\n }\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n handleAlbumGridsWithPopup();\n handleAlbumSlideshow('.album.album--slideshow.glide', false, 7000, 2000);\n});\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-direction:column;flex-wrap:wrap}\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/swiper/modules/grid.css\"],\"names\":[],\"mappings\":\"AAAA,6BACE,cACF,CACA,oCAEE,qBAAsB,CADtB,cAEF\",\"sourcesContent\":[\".swiper-grid > .swiper-wrapper {\\n flex-wrap: wrap;\\n}\\n.swiper-grid-column > .swiper-wrapper {\\n flex-wrap: wrap;\\n flex-direction: column;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".swiper-pagination{position:absolute;text-align:center;transform:translateZ(0);transition:opacity .3s;z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);left:0;top:var(--swiper-pagination-top,auto);width:100%}.swiper-pagination-bullets-dynamic{font-size:0;overflow:hidden}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{position:relative;transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active,.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{background:var(--swiper-pagination-bullet-inactive-color,#000);border-radius:var(--swiper-pagination-bullet-border-radius,50%);display:inline-block;height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));opacity:var(--swiper-pagination-bullet-inactive-opacity,.2);width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px))}button.swiper-pagination-bullet{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;box-shadow:none;margin:0;padding:0}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{background:var(--swiper-pagination-color,var(--swiper-theme-color));opacity:var(--swiper-pagination-bullet-opacity,1)}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{left:var(--swiper-pagination-left,auto);right:var(--swiper-pagination-right,8px);top:50%;transform:translate3d(0,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{display:block;margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:transform .2s,top .2s}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,left .2s}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,right .2s}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));height:100%;left:0;position:absolute;top:0;transform:scale(0);transform-origin:left top;width:100%}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0;width:100%}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{height:100%;left:0;top:0;width:var(--swiper-pagination-progressbar-size,4px)}.swiper-pagination-lock{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/swiper/modules/pagination.css\"],\"names\":[],\"mappings\":\"AAqBA,mBACE,iBAAkB,CAClB,iBAAkB,CAElB,uBAA+B,CAD/B,sBAAyB,CAEzB,UACF,CACA,4CACE,SACF,CACA,6FAEE,sBACF,CAEA,4JAIE,0CAA4C,CAE5C,MAAO,CADP,qCAAuC,CAEvC,UACF,CAEA,mCAEE,WAAY,CADZ,eAEF,CACA,6DAEE,iBAAkB,CADlB,oBAEF,CAIA,6IACE,kBACF,CACA,yEACE,oBACF,CACA,8EACE,oBACF,CACA,yEACE,oBACF,CACA,8EACE,oBACF,CACA,0BAKE,8DAAgE,CADhE,+DAAiE,CADjE,oBAAqB,CADrB,sFAAyF,CAIzF,2DAA8D,CAL9D,oFAMF,CACA,gCAKE,uBAAwB,CAChB,oBAAgB,CAAhB,eAAgB,CALxB,WAAY,CAGZ,eAAgB,CAFhB,QAAS,CACT,SAIF,CACA,uDACE,cACF,CACA,qCACE,sBACF,CACA,iCAEE,mEAAqE,CADrE,iDAEF,CACA,kGAGE,uCAAyC,CADzC,wCAA0C,CAE1C,OAAQ,CACR,+BACF,CACA,sJAGE,aAAc,CADd,yDAEF,CACA,sKAEE,OAAQ,CACR,0BAA2B,CAC3B,SACF,CACA,0NAEE,oBAAqB,CACrB,gCAEF,CACA,0JAEE,2DACF,CACA,0KAEE,QAAS,CACT,0BAA2B,CAC3B,kBACF,CACA,8NAEE,iCAEF,CACA,2FACE,kCAEF,CAEA,4BACE,qDACF,CAEA,+BACE,wEAA8E,CAC9E,iBACF,CACA,mEACE,mEAAqE,CAKrE,WAAY,CAHZ,MAAO,CADP,iBAAkB,CAElB,KAAM,CAGN,kBAAmB,CACnB,yBAA0B,CAH1B,UAIF,CACA,+EACE,0BACF,CACA,sSAKE,oDAAsD,CACtD,MAAO,CACP,KAAM,CAHN,UAIF,CACA,sSAKE,WAAY,CACZ,MAAO,CACP,KAAM,CAHN,mDAIF,CACA,wBACE,YACF\",\"sourcesContent\":[\":root {\\n /*\\n --swiper-pagination-color: var(--swiper-theme-color);\\n --swiper-pagination-left: auto;\\n --swiper-pagination-right: 8px;\\n --swiper-pagination-bottom: 8px;\\n --swiper-pagination-top: auto;\\n --swiper-pagination-fraction-color: inherit;\\n --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25);\\n --swiper-pagination-progressbar-size: 4px;\\n --swiper-pagination-bullet-size: 8px;\\n --swiper-pagination-bullet-width: 8px;\\n --swiper-pagination-bullet-height: 8px;\\n --swiper-pagination-bullet-border-radius: 50%;\\n --swiper-pagination-bullet-inactive-color: #000;\\n --swiper-pagination-bullet-inactive-opacity: 0.2;\\n --swiper-pagination-bullet-opacity: 1;\\n --swiper-pagination-bullet-horizontal-gap: 4px;\\n --swiper-pagination-bullet-vertical-gap: 6px;\\n */\\n}\\n.swiper-pagination {\\n position: absolute;\\n text-align: center;\\n transition: 300ms opacity;\\n transform: translate3d(0, 0, 0);\\n z-index: 10;\\n}\\n.swiper-pagination.swiper-pagination-hidden {\\n opacity: 0;\\n}\\n.swiper-pagination-disabled > .swiper-pagination,\\n.swiper-pagination.swiper-pagination-disabled {\\n display: none !important;\\n}\\n/* Common Styles */\\n.swiper-pagination-fraction,\\n.swiper-pagination-custom,\\n.swiper-horizontal > .swiper-pagination-bullets,\\n.swiper-pagination-bullets.swiper-pagination-horizontal {\\n bottom: var(--swiper-pagination-bottom, 8px);\\n top: var(--swiper-pagination-top, auto);\\n left: 0;\\n width: 100%;\\n}\\n/* Bullets */\\n.swiper-pagination-bullets-dynamic {\\n overflow: hidden;\\n font-size: 0;\\n}\\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\\n transform: scale(0.33);\\n position: relative;\\n}\\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active {\\n transform: scale(1);\\n}\\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main {\\n transform: scale(1);\\n}\\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev {\\n transform: scale(0.66);\\n}\\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev {\\n transform: scale(0.33);\\n}\\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next {\\n transform: scale(0.66);\\n}\\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next {\\n transform: scale(0.33);\\n}\\n.swiper-pagination-bullet {\\n width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px));\\n height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px));\\n display: inline-block;\\n border-radius: var(--swiper-pagination-bullet-border-radius, 50%);\\n background: var(--swiper-pagination-bullet-inactive-color, #000);\\n opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2);\\n}\\nbutton.swiper-pagination-bullet {\\n border: none;\\n margin: 0;\\n padding: 0;\\n box-shadow: none;\\n -webkit-appearance: none;\\n appearance: none;\\n}\\n.swiper-pagination-clickable .swiper-pagination-bullet {\\n cursor: pointer;\\n}\\n.swiper-pagination-bullet:only-child {\\n display: none !important;\\n}\\n.swiper-pagination-bullet-active {\\n opacity: var(--swiper-pagination-bullet-opacity, 1);\\n background: var(--swiper-pagination-color, var(--swiper-theme-color));\\n}\\n.swiper-vertical > .swiper-pagination-bullets,\\n.swiper-pagination-vertical.swiper-pagination-bullets {\\n right: var(--swiper-pagination-right, 8px);\\n left: var(--swiper-pagination-left, auto);\\n top: 50%;\\n transform: translate3d(0px, -50%, 0);\\n}\\n.swiper-vertical > .swiper-pagination-bullets .swiper-pagination-bullet,\\n.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet {\\n margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0;\\n display: block;\\n}\\n.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic,\\n.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic {\\n top: 50%;\\n transform: translateY(-50%);\\n width: 8px;\\n}\\n.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,\\n.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\\n display: inline-block;\\n transition: 200ms transform,\\n 200ms top;\\n}\\n.swiper-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet,\\n.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet {\\n margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px);\\n}\\n.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic,\\n.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic {\\n left: 50%;\\n transform: translateX(-50%);\\n white-space: nowrap;\\n}\\n.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,\\n.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\\n transition: 200ms transform,\\n 200ms left;\\n}\\n.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\\n transition: 200ms transform,\\n 200ms right;\\n}\\n/* Fraction */\\n.swiper-pagination-fraction {\\n color: var(--swiper-pagination-fraction-color, inherit);\\n}\\n/* Progress */\\n.swiper-pagination-progressbar {\\n background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25));\\n position: absolute;\\n}\\n.swiper-pagination-progressbar .swiper-pagination-progressbar-fill {\\n background: var(--swiper-pagination-color, var(--swiper-theme-color));\\n position: absolute;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n transform: scale(0);\\n transform-origin: left top;\\n}\\n.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill {\\n transform-origin: right top;\\n}\\n.swiper-horizontal > .swiper-pagination-progressbar,\\n.swiper-pagination-progressbar.swiper-pagination-horizontal,\\n.swiper-vertical > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,\\n.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite {\\n width: 100%;\\n height: var(--swiper-pagination-progressbar-size, 4px);\\n left: 0;\\n top: 0;\\n}\\n.swiper-vertical > .swiper-pagination-progressbar,\\n.swiper-pagination-progressbar.swiper-pagination-vertical,\\n.swiper-horizontal > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,\\n.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite {\\n width: var(--swiper-pagination-progressbar-size, 4px);\\n height: 100%;\\n left: 0;\\n top: 0;\\n}\\n.swiper-pagination-lock {\\n display: none;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"@font-face{font-family:swiper-icons;font-style:normal;font-weight:400;src:url(\\\"data:application/font-woff;charset=utf-8;base64, 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\\\")}:root{--swiper-theme-color:#007aff}:host{display:block;margin-left:auto;margin-right:auto;position:relative;z-index:1}.swiper{display:block;list-style:none;margin-left:auto;margin-right:auto;overflow:hidden;padding:0;position:relative;z-index:1}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{box-sizing:content-box;display:flex;height:100%;position:relative;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);width:100%;z-index:1}.swiper-android .swiper-slide,.swiper-ios .swiper-slide,.swiper-wrapper{transform:translateZ(0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}.swiper-slide{display:block;flex-shrink:0;height:100%;position:relative;transition-property:transform;width:100%}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;transform:translateZ(0)}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide{transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{-ms-overflow-style:none;overflow:auto;scrollbar-width:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{-ms-scroll-snap-type:none;scroll-snap-type:none}.swiper-css-mode.swiper-free-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper:before{content:\\\"\\\";flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{-webkit-margin-start:var(--swiper-centered-offset-before);margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper:before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{-webkit-margin-before:var(--swiper-centered-offset-before);margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper:before{height:var(--swiper-centered-offset-after);min-width:1px;width:100%}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0,0,0,.15)}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(270deg,rgba(0,0,0,.5),transparent)}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(90deg,rgba(0,0,0,.5),transparent)}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(0deg,rgba(0,0,0,.5),transparent)}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(180deg,rgba(0,0,0,.5),transparent)}.swiper-lazy-preloader{border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top:4px solid transparent;box-sizing:border-box;height:42px;left:50%;margin-left:-21px;margin-top:-21px;position:absolute;top:50%;transform-origin:50%;width:42px;z-index:10}.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader,.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader{-webkit-animation:swiper-preloader-spin 1s linear infinite;animation:swiper-preloader-spin 1s linear infinite}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@-webkit-keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/swiper/swiper.css\"],\"names\":[],\"mappings\":\"AAaA,WACE,wBAA2B,CAG3B,iBAAkB,CADlB,eAAgB,CADhB,4rEAGF,CAEA,MACE,4BAKF,CACA,MAEE,aAAc,CACd,gBAAiB,CACjB,iBAAkB,CAHlB,iBAAkB,CAIlB,SACF,CACA,QASE,aAAc,CAJd,eAAgB,CAJhB,gBAAiB,CACjB,iBAAkB,CAElB,eAAgB,CAEhB,SAAU,CAHV,iBAAkB,CAKlB,SAEF,CACA,iCACE,qBACF,CACA,gBAQE,sBAAuB,CAHvB,YAAa,CAFb,WAAY,CAFZ,iBAAkB,CAKlB,6BAA8B,CAC9B,mFAAqF,CALrF,UAAW,CAEX,SAKF,CACA,wEAGE,uBACF,CACA,mBACE,kBACF,CACA,iBACE,kBACF,CACA,cAME,aAAc,CALd,aAAc,CAEd,WAAY,CACZ,iBAAkB,CAClB,6BAA8B,CAH9B,UAKF,CACA,8BACE,iBACF,CAEA,oDAEE,WACF,CACA,mCACE,sBAAuB,CACvB,oCACF,CACA,sCAEE,kCAAmC,CAC3B,0BAA2B,CAFnC,uBAGF,CAEA,2CACE,kBACF,CACA,2BACE,2BACF,CACA,WACE,kBACF,CACA,wDAEE,2BACF,CAEA,iCAIE,uBAAwB,CAHxB,aAAc,CACd,oBAIF,CACA,oDACE,YACF,CACA,+CACE,6BACF,CACA,mDACE,gCAA6B,CAA7B,4BACF,CACA,iDACE,gCAA6B,CAA7B,4BACF,CACA,kDACE,yBAAsB,CAAtB,qBACF,CACA,gEACE,sBACF,CACA,wDACE,UAAW,CACX,aAAc,CACd,UACF,CACA,+DACE,+BAAgC,CAChC,uBACF,CACA,6FACE,yDAAyD,CAAzD,wDACF,CACA,0EACE,WAAY,CACZ,cAAe,CACf,yCACF,CACA,2FACE,0DAAwD,CAAxD,uDACF,CACA,wEAGE,0CAA2C,CAD3C,aAAc,CADd,UAGF,CAGA,sLAcE,WAAY,CAHZ,MAAO,CAIP,mBAAoB,CALpB,iBAAkB,CAElB,KAAM,CACN,UAAW,CAGX,UACF,CACA,gCACE,0BACF,CACA,qCACE,mEACF,CACA,sCACE,kEACF,CACA,oCACE,iEACF,CACA,uCACE,mEACF,CACA,uBAaE,wEAA6B,CAD7B,iBAAkB,CAClB,gCAA6B,CAH7B,qBAAsB,CARtB,WAAY,CAEZ,QAAS,CAET,iBAAkB,CAClB,gBAAiB,CAJjB,iBAAkB,CAElB,OAAQ,CAIR,oBAAqB,CARrB,UAAW,CAOX,UAMF,CACA,+HAEE,0DAAmD,CAAnD,kDACF,CACA,6BACE,6BACF,CACA,6BACE,6BACF,CACA,yCACE,GACE,sBACF,CACA,GACE,uBACF,CACF,CAPA,iCACE,GACE,sBACF,CACA,GACE,uBACF,CACF\",\"sourcesContent\":[\"/**\\n * Swiper 11.2.4\\n * Most modern mobile touch slider and framework with hardware accelerated transitions\\n * https://swiperjs.com\\n *\\n * Copyright 2014-2025 Vladimir Kharlampidi\\n *\\n * Released under the MIT License\\n *\\n * Released on: February 14, 2025\\n */\\n\\n/* FONT_START */\\n@font-face {\\n font-family: 'swiper-icons';\\n src: url('data:application/font-woff;charset=utf-8;base64, d09GRgABAAAAAAZgABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAGRAAAABoAAAAci6qHkUdERUYAAAWgAAAAIwAAACQAYABXR1BPUwAABhQAAAAuAAAANuAY7+xHU1VCAAAFxAAAAFAAAABm2fPczU9TLzIAAAHcAAAASgAAAGBP9V5RY21hcAAAAkQAAACIAAABYt6F0cBjdnQgAAACzAAAAAQAAAAEABEBRGdhc3AAAAWYAAAACAAAAAj//wADZ2x5ZgAAAywAAADMAAAD2MHtryVoZWFkAAABbAAAADAAAAA2E2+eoWhoZWEAAAGcAAAAHwAAACQC9gDzaG10eAAAAigAAAAZAAAArgJkABFsb2NhAAAC0AAAAFoAAABaFQAUGG1heHAAAAG8AAAAHwAAACAAcABAbmFtZQAAA/gAAAE5AAACXvFdBwlwb3N0AAAFNAAAAGIAAACE5s74hXjaY2BkYGAAYpf5Hu/j+W2+MnAzMYDAzaX6QjD6/4//Bxj5GA8AuRwMYGkAPywL13jaY2BkYGA88P8Agx4j+/8fQDYfA1AEBWgDAIB2BOoAeNpjYGRgYNBh4GdgYgABEMnIABJzYNADCQAACWgAsQB42mNgYfzCOIGBlYGB0YcxjYGBwR1Kf2WQZGhhYGBiYGVmgAFGBiQQkOaawtDAoMBQxXjg/wEGPcYDDA4wNUA2CCgwsAAAO4EL6gAAeNpj2M0gyAACqxgGNWBkZ2D4/wMA+xkDdgAAAHjaY2BgYGaAYBkGRgYQiAHyGMF8FgYHIM3DwMHABGQrMOgyWDLEM1T9/w8UBfEMgLzE////P/5//f/V/xv+r4eaAAeMbAxwIUYmIMHEgKYAYjUcsDAwsLKxc3BycfPw8jEQA/gZBASFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTQZBgMAAMR+E+gAEQFEAAAAKgAqACoANAA+AEgAUgBcAGYAcAB6AIQAjgCYAKIArAC2AMAAygDUAN4A6ADyAPwBBgEQARoBJAEuATgBQgFMAVYBYAFqAXQBfgGIAZIBnAGmAbIBzgHsAAB42u2NMQ6CUAyGW568x9AneYYgm4MJbhKFaExIOAVX8ApewSt4Bic4AfeAid3VOBixDxfPYEza5O+Xfi04YADggiUIULCuEJK8VhO4bSvpdnktHI5QCYtdi2sl8ZnXaHlqUrNKzdKcT8cjlq+rwZSvIVczNiezsfnP/uznmfPFBNODM2K7MTQ45YEAZqGP81AmGGcF3iPqOop0r1SPTaTbVkfUe4HXj97wYE+yNwWYxwWu4v1ugWHgo3S1XdZEVqWM7ET0cfnLGxWfkgR42o2PvWrDMBSFj/IHLaF0zKjRgdiVMwScNRAoWUoH78Y2icB/yIY09An6AH2Bdu/UB+yxopYshQiEvnvu0dURgDt8QeC8PDw7Fpji3fEA4z/PEJ6YOB5hKh4dj3EvXhxPqH/SKUY3rJ7srZ4FZnh1PMAtPhwP6fl2PMJMPDgeQ4rY8YT6Gzao0eAEA409DuggmTnFnOcSCiEiLMgxCiTI6Cq5DZUd3Qmp10vO0LaLTd2cjN4fOumlc7lUYbSQcZFkutRG7g6JKZKy0RmdLY680CDnEJ+UMkpFFe1RN7nxdVpXrC4aTtnaurOnYercZg2YVmLN/d/gczfEimrE/fs/bOuq29Zmn8tloORaXgZgGa78yO9/cnXm2BpaGvq25Dv9S4E9+5SIc9PqupJKhYFSSl47+Qcr1mYNAAAAeNptw0cKwkAAAMDZJA8Q7OUJvkLsPfZ6zFVERPy8qHh2YER+3i/BP83vIBLLySsoKimrqKqpa2hp6+jq6RsYGhmbmJqZSy0sraxtbO3sHRydnEMU4uR6yx7JJXveP7WrDycAAAAAAAH//wACeNpjYGRgYOABYhkgZgJCZgZNBkYGLQZtIJsFLMYAAAw3ALgAeNolizEKgDAQBCchRbC2sFER0YD6qVQiBCv/H9ezGI6Z5XBAw8CBK/m5iQQVauVbXLnOrMZv2oLdKFa8Pjuru2hJzGabmOSLzNMzvutpB3N42mNgZGBg4GKQYzBhYMxJLMlj4GBgAYow/P/PAJJhLM6sSoWKfWCAAwDAjgbRAAB42mNgYGBkAIIbCZo5IPrmUn0hGA0AO8EFTQAA');\\n font-weight: 400;\\n font-style: normal;\\n}\\n/* FONT_END */\\n:root {\\n --swiper-theme-color: #007aff;\\n /*\\n --swiper-preloader-color: var(--swiper-theme-color);\\n --swiper-wrapper-transition-timing-function: initial;\\n */\\n}\\n:host {\\n position: relative;\\n display: block;\\n margin-left: auto;\\n margin-right: auto;\\n z-index: 1;\\n}\\n.swiper {\\n margin-left: auto;\\n margin-right: auto;\\n position: relative;\\n overflow: hidden;\\n list-style: none;\\n padding: 0;\\n /* Fix of Webkit flickering */\\n z-index: 1;\\n display: block;\\n}\\n.swiper-vertical > .swiper-wrapper {\\n flex-direction: column;\\n}\\n.swiper-wrapper {\\n position: relative;\\n width: 100%;\\n height: 100%;\\n z-index: 1;\\n display: flex;\\n transition-property: transform;\\n transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial);\\n box-sizing: content-box;\\n}\\n.swiper-android .swiper-slide,\\n.swiper-ios .swiper-slide,\\n.swiper-wrapper {\\n transform: translate3d(0px, 0, 0);\\n}\\n.swiper-horizontal {\\n touch-action: pan-y;\\n}\\n.swiper-vertical {\\n touch-action: pan-x;\\n}\\n.swiper-slide {\\n flex-shrink: 0;\\n width: 100%;\\n height: 100%;\\n position: relative;\\n transition-property: transform;\\n display: block;\\n}\\n.swiper-slide-invisible-blank {\\n visibility: hidden;\\n}\\n/* Auto Height */\\n.swiper-autoheight,\\n.swiper-autoheight .swiper-slide {\\n height: auto;\\n}\\n.swiper-autoheight .swiper-wrapper {\\n align-items: flex-start;\\n transition-property: transform, height;\\n}\\n.swiper-backface-hidden .swiper-slide {\\n transform: translateZ(0);\\n -webkit-backface-visibility: hidden;\\n backface-visibility: hidden;\\n}\\n/* 3D Effects */\\n.swiper-3d.swiper-css-mode .swiper-wrapper {\\n perspective: 1200px;\\n}\\n.swiper-3d .swiper-wrapper {\\n transform-style: preserve-3d;\\n}\\n.swiper-3d {\\n perspective: 1200px;\\n}\\n.swiper-3d .swiper-slide,\\n.swiper-3d .swiper-cube-shadow {\\n transform-style: preserve-3d;\\n}\\n/* CSS Mode */\\n.swiper-css-mode > .swiper-wrapper {\\n overflow: auto;\\n scrollbar-width: none;\\n /* For Firefox */\\n -ms-overflow-style: none;\\n /* For Internet Explorer and Edge */\\n}\\n.swiper-css-mode > .swiper-wrapper::-webkit-scrollbar {\\n display: none;\\n}\\n.swiper-css-mode > .swiper-wrapper > .swiper-slide {\\n scroll-snap-align: start start;\\n}\\n.swiper-css-mode.swiper-horizontal > .swiper-wrapper {\\n scroll-snap-type: x mandatory;\\n}\\n.swiper-css-mode.swiper-vertical > .swiper-wrapper {\\n scroll-snap-type: y mandatory;\\n}\\n.swiper-css-mode.swiper-free-mode > .swiper-wrapper {\\n scroll-snap-type: none;\\n}\\n.swiper-css-mode.swiper-free-mode > .swiper-wrapper > .swiper-slide {\\n scroll-snap-align: none;\\n}\\n.swiper-css-mode.swiper-centered > .swiper-wrapper::before {\\n content: '';\\n flex-shrink: 0;\\n order: 9999;\\n}\\n.swiper-css-mode.swiper-centered > .swiper-wrapper > .swiper-slide {\\n scroll-snap-align: center center;\\n scroll-snap-stop: always;\\n}\\n.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper > .swiper-slide:first-child {\\n margin-inline-start: var(--swiper-centered-offset-before);\\n}\\n.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper::before {\\n height: 100%;\\n min-height: 1px;\\n width: var(--swiper-centered-offset-after);\\n}\\n.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper > .swiper-slide:first-child {\\n margin-block-start: var(--swiper-centered-offset-before);\\n}\\n.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper::before {\\n width: 100%;\\n min-width: 1px;\\n height: var(--swiper-centered-offset-after);\\n}\\n/* Slide styles start */\\n/* 3D Shadows */\\n.swiper-3d .swiper-slide-shadow,\\n.swiper-3d .swiper-slide-shadow-left,\\n.swiper-3d .swiper-slide-shadow-right,\\n.swiper-3d .swiper-slide-shadow-top,\\n.swiper-3d .swiper-slide-shadow-bottom,\\n.swiper-3d .swiper-slide-shadow,\\n.swiper-3d .swiper-slide-shadow-left,\\n.swiper-3d .swiper-slide-shadow-right,\\n.swiper-3d .swiper-slide-shadow-top,\\n.swiper-3d .swiper-slide-shadow-bottom {\\n position: absolute;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n pointer-events: none;\\n z-index: 10;\\n}\\n.swiper-3d .swiper-slide-shadow {\\n background: rgba(0, 0, 0, 0.15);\\n}\\n.swiper-3d .swiper-slide-shadow-left {\\n background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\\n}\\n.swiper-3d .swiper-slide-shadow-right {\\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\\n}\\n.swiper-3d .swiper-slide-shadow-top {\\n background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\\n}\\n.swiper-3d .swiper-slide-shadow-bottom {\\n background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\\n}\\n.swiper-lazy-preloader {\\n width: 42px;\\n height: 42px;\\n position: absolute;\\n left: 50%;\\n top: 50%;\\n margin-left: -21px;\\n margin-top: -21px;\\n z-index: 10;\\n transform-origin: 50%;\\n box-sizing: border-box;\\n border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color));\\n border-radius: 50%;\\n border-top-color: transparent;\\n}\\n.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader,\\n.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader {\\n animation: swiper-preloader-spin 1s infinite linear;\\n}\\n.swiper-lazy-preloader-white {\\n --swiper-preloader-color: #fff;\\n}\\n.swiper-lazy-preloader-black {\\n --swiper-preloader-color: #000;\\n}\\n@keyframes swiper-preloader-spin {\\n 0% {\\n transform: rotate(0deg);\\n }\\n 100% {\\n transform: rotate(360deg);\\n }\\n}\\n/* Slide styles end */\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === \"string\") {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, \"\"]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nmodule.exports = function cssWithMappingToString(item) {\n var _item = _slicedToArray(item, 4),\n content = _item[1],\n cssMapping = _item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (typeof btoa === \"function\") {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};","\"use strict\";\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDom.length; i++) {\n if (stylesInDom[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var index = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3]\n };\n\n if (index !== -1) {\n stylesInDom[index].references++;\n stylesInDom[index].updater(obj);\n } else {\n stylesInDom.push({\n identifier: identifier,\n updater: addStyle(obj, options),\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n var attributes = options.attributes || {};\n\n if (typeof attributes.nonce === 'undefined') {\n var nonce = typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n\n if (nonce) {\n attributes.nonce = nonce;\n }\n }\n\n Object.keys(attributes).forEach(function (key) {\n style.setAttribute(key, attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join('\\n');\n };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n } else {\n style.removeAttribute('media');\n }\n\n if (sourceMap && typeof btoa !== 'undefined') {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of