{"version":3,"file":"script-min.js","sources":["../../node_modules/swiper/shared/ssr-window.esm.mjs","../../node_modules/swiper/shared/utils.mjs","../../node_modules/swiper/shared/swiper-core.mjs","../../node_modules/swiper/modules/navigation.mjs","../../node_modules/swiper/shared/create-element-if-not-defined.mjs","../../node_modules/swiper/modules/autoplay.mjs","../../source/js/modules/modal.js","../../source/js/script.js","../../source/js/modules/mobile-menu.js"],"sourcesContent":["/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n if (target === void 0) {\n target = {};\n }\n if (src === void 0) {\n src = {};\n }\n Object.keys(src).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\nconst ssrDocument = {\n body: {},\n addEventListener() {},\n removeEventListener() {},\n activeElement: {\n blur() {},\n nodeName: ''\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() {}\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() {},\n getElementsByTagName() {\n return [];\n }\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n }\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: ''\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n },\n history: {\n replaceState() {},\n pushState() {},\n go() {},\n back() {}\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() {},\n removeEventListener() {},\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n }\n };\n },\n Image() {},\n Date() {},\n screen: {},\n setTimeout() {},\n clearTimeout() {},\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n }\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { getWindow as a, getDocument as g };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction classesToTokens(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return classes.trim().split(' ').filter(c => !!c.trim());\n}\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n if (selector === void 0) {\n selector = '';\n }\n return [...element.children].filter(el => el.matches(selector));\n}\nfunction showWarning(text) {\n try {\n console.warn(text);\n return;\n } catch (err) {\n // err\n }\n}\nfunction createElement(tag, classes) {\n if (classes === void 0) {\n classes = [];\n }\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n}\nfunction makeElementsArray(el) {\n return (Array.isArray(el) ? el : [el]).filter(e => !!e);\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, elementStyle as o, elementNextAll as p, elementPrevAll as q, animateCSSModeScroll as r, setCSSProperty as s, showWarning as t, extend as u, deleteProps as v };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, o as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, p as elementNextAll, q as elementPrevAll, j as getTranslate, r as animateCSSModeScroll, n as nextTick, t as showWarning, c as createElement, d as now, u as extend, h as elementIndex, v 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: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.hostEl);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.hostEl, {\n childList: swiper.params.observeSlideChildren\n });\n\n // Observe wrapper\n attach(swiper.wrapperEl, {\n attributes: false\n });\n };\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler() {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit() {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};\n\nfunction updateSize() {\n const swiper = this;\n let width;\n let height;\n const el = swiper.el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = el.clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = el.clientHeight;\n }\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}\n\nfunction updateSlides() {\n const swiper = this;\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const {\n wrapperEl,\n slidesEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n } else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\n });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slides);\n } else if (swiper.grid) {\n swiper.grid.unsetSlides();\n }\n\n // Calc slides\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n let slide;\n if (slides[i]) slide = slides[i];\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slides);\n }\n if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[swiper.getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) {\n slide.style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide.style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n if (slides[i]) {\n slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for (let i = 0; i < groups; i += 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n }\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n if (params.slidesPerGroup === 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n }\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap <= 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0);\n if (allSlidesSize + offsetSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n swiper.emit('slidesUpdated');\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.el.classList.remove(backFaceHiddenClass);\n }\n }\n}\n\nfunction updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides[swiper.getSlideIndexByData(index)];\n }\n return swiper.slides[index];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || []).forEach(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\n\nfunction updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n }\n}\n\nconst toggleSlideClasses$1 = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n let spaceBetween = params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n }\n toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass);\n toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass);\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}\n\nfunction updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd,\n progressLoop\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n}\n\nconst toggleSlideClasses = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n let activeSlide;\n let prevSlide;\n let nextSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n if (gridEnabled) {\n activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0];\n nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0];\n prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0];\n } else {\n activeSlide = slides[activeIndex];\n }\n }\n if (activeSlide) {\n if (!gridEnabled) {\n // Next Slide\n nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n\n // Prev Slide\n prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n }\n }\n slides.forEach(slideEl => {\n toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass);\n toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass);\n toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass);\n });\n swiper.emitSlidesClasses();\n}\n\nconst processLazyPreloader = (swiper, imageEl) => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n const slideEl = imageEl.closest(slideSelector());\n if (slideEl) {\n let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (!lazyEl && swiper.isElement) {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n } else {\n // init later\n requestAnimationFrame(() => {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl) lazyEl.remove();\n }\n });\n }\n }\n if (lazyEl) lazyEl.remove();\n }\n};\nconst unlazy = (swiper, index) => {\n if (!swiper.slides[index]) return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0) return;\n amount = Math.min(amount, len);\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n const activeIndex = swiper.activeIndex;\n if (swiper.params.grid && swiper.params.grid.rows > 1) {\n const activeColumn = activeIndex;\n const preloadColumns = [activeColumn - amount];\n preloadColumns.push(...Array.from({\n length: amount\n }).map((_, i) => {\n return activeColumn + slidesPerView + i;\n }));\n swiper.slides.forEach((slideEl, i) => {\n if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n });\n return;\n }\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind || swiper.params.loop) {\n for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n const realIndex = (i % len + len) % len;\n if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n }\n } else {\n for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n unlazy(swiper, i);\n }\n }\n }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n const {\n slidesGrid,\n params\n } = swiper;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n const getVirtualRealIndex = aIndex => {\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) {\n realIndex = swiper.virtual.slides.length + realIndex;\n }\n if (realIndex >= swiper.virtual.slides.length) {\n realIndex -= swiper.virtual.slides.length;\n }\n return realIndex;\n };\n if (typeof activeIndex === 'undefined') {\n activeIndex = getActiveIndexByTranslate(swiper);\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex && !swiper.params.loop) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n return;\n }\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (gridEnabled) {\n const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0];\n let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);\n if (Number.isNaN(activeSlideIndex)) {\n activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);\n }\n realIndex = Math.floor(activeSlideIndex / params.grid.rows);\n } else if (swiper.slides[activeIndex]) {\n const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');\n if (slideIndex) {\n realIndex = parseInt(slideIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n }\n}\n\nfunction updateClickedSlide(el, path) {\n const swiper = this;\n const params = swiper.params;\n let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n slide = pathEl;\n }\n });\n }\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n swiper.animating = false;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}\n\nvar translate = {\n getTranslate: getSwiperTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};\n\nfunction setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n }\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n\nfunction transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}\n\nfunction transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}\n\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd\n};\n\nfunction slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex];\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n // Update Index\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}\n\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n } else {\n let targetSlideIndex;\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;\n } else {\n targetSlideIndex = swiper.getSlideIndexByData(newIndex);\n }\n const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;\n const {\n centeredSlides\n } = swiper.params;\n let slidesPerView = swiper.params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n let needLoopFix = cols - targetSlideIndex < slidesPerView;\n if (centeredSlides) {\n needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);\n }\n if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) {\n needLoopFix = false;\n }\n if (needLoopFix) {\n const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';\n swiper.loopFix({\n direction,\n slideTo: true,\n activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,\n slideRealIndex: direction === 'next' ? swiper.realIndex : undefined\n });\n }\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;\n } else {\n newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n }\n requestAnimationFrame(() => {\n swiper.slideTo(newIndex, speed, runCallbacks, internal);\n });\n return swiper;\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n enabled,\n params,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'next'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n });\n return true;\n }\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n });\n return true;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal, threshold) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (threshold === void 0) {\n threshold = 0.5;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide() {\n const swiper = this;\n if (swiper.destroyed) return;\n const {\n params,\n slidesEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n\nvar slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};\n\nfunction loopCreate(slideRealIndex) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const initSlides = () => {\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n };\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);\n const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;\n const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;\n const addBlankSlides = amountOfSlides => {\n for (let i = 0; i < amountOfSlides; i += 1) {\n const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]);\n swiper.slidesEl.append(slideEl);\n }\n };\n if (shouldFillGroup) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else if (shouldFillGrid) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else {\n initSlides();\n }\n swiper.loopFix({\n slideRealIndex,\n direction: params.centeredSlides ? undefined : 'next'\n });\n}\n\nfunction loopFix(_temp) {\n let {\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n byController,\n byMousewheel\n } = _temp === void 0 ? {} : _temp;\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n const {\n slides,\n allowSlidePrev,\n allowSlideNext,\n slidesEl,\n params\n } = swiper;\n const {\n centeredSlides\n } = params;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n if (swiper.virtual && params.virtual.enabled) {\n if (slideTo) {\n if (!params.centeredSlides && swiper.snapIndex === 0) {\n swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n return;\n }\n let slidesPerView = params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;\n let loopedSlides = slidesPerGroup;\n if (loopedSlides % slidesPerGroup !== 0) {\n loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;\n }\n loopedSlides += params.loopAdditionalSlides;\n swiper.loopedSlides = loopedSlides;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n if (slides.length < slidesPerView + loopedSlides) {\n showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters');\n } else if (gridEnabled && params.grid.fill === 'row') {\n showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`');\n }\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n let activeIndex = swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]);\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;\n const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;\n const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);\n // prepend last slides before start\n if (activeColIndexWithShift < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n const colIndexToPrepend = cols - index - 1;\n for (let i = slides.length - 1; i >= 0; i -= 1) {\n if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i);\n }\n // slides.forEach((slide, slideIndex) => {\n // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);\n // });\n } else {\n prependSlidesIndexes.push(cols - index - 1);\n }\n }\n } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {\n slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n slides.forEach((slide, slideIndex) => {\n if (slide.column === index) appendSlidesIndexes.push(slideIndex);\n });\n } else {\n appendSlidesIndexes.push(index);\n }\n }\n }\n swiper.__preventObserver__ = true;\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\n } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) {\n swiper.slides.forEach((slide, slideIndex) => {\n swiper.grid.updateSlide(slideIndex, slide, swiper.slides);\n });\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (slideTo) {\n if (prependSlidesIndexes.length > 0 && isPrev) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n if (setTranslate) {\n const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex + shift, 0, false, true);\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else if (appendSlidesIndexes.length > 0 && isNext) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex - shift, 0, false, true);\n }\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex,\n direction,\n setTranslate,\n activeSlideIndex,\n byController: true\n };\n if (Array.isArray(swiper.controller.control)) {\n swiper.controller.control.forEach(c => {\n if (!c.destroyed && c.params.loop) c.loopFix({\n ...loopParams,\n slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix({\n ...loopParams,\n slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n }\n }\n swiper.emit('loopFix');\n}\n\nfunction loopDestroy() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n}\n\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n const swiper = this;\n if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nfunction unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\nfunction preventEdgeSwipe(swiper, event, startX) {\n const window = getWindow();\n const {\n params\n } = swiper;\n const edgeSwipeDetection = params.edgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n return true;\n }\n return false;\n }\n return true;\n}\nfunction onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const data = swiper.touchEventsData;\n if (e.type === 'pointerdown') {\n if (data.pointerId !== null && data.pointerId !== e.pointerId) {\n return;\n }\n data.pointerId = e.pointerId;\n } else if (e.type === 'touchstart' && e.targetTouches.length === 1) {\n data.touchId = e.targetTouches[0].identifier;\n }\n if (e.type === 'touchstart') {\n // don't proceed touch event\n preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);\n return;\n }\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!swiper.wrapperEl.contains(targetEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = e.composedPath ? e.composedPath() : e.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n if (!preventEdgeSwipe(swiper, e, startX)) {\n return;\n }\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (e.type === 'pointermove') {\n if (data.touchId !== null) return; // return from pointer if we use touch\n const id = e.pointerId;\n if (id !== data.pointerId) return;\n }\n let targetTouch;\n if (e.type === 'touchmove') {\n targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n } else {\n targetTouch = e;\n }\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!e.target.matches(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n touches.previousX = touches.currentX;\n touches.previousY = touches.currentY;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;\n if (!data.isMoved) {\n if (isLoop && allowLoopFix) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true,\n detail: {\n bySwiperTouchMove: true\n }\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n new Date().getTime();\n if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n startTranslate: data.currentTranslate\n });\n data.loopSwapReset = true;\n data.startTranslate = data.currentTranslate;\n return;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetTouch;\n const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';\n if (!isTouchEvent) {\n if (data.touchId !== null) return; // return from pointer if we use touch\n if (e.pointerId !== data.pointerId) return;\n targetTouch = e;\n } else {\n targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n }\n if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {\n const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n data.pointerId = null;\n data.touchId = null;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n 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\n // Touch Events\n document[domMethod]('touchstart', swiper.onDocumentTouchStart, {\n passive: false,\n capture\n });\n el[domMethod]('touchstart', swiper.onTouchStart, {\n passive: false\n });\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('touchmove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('touchend', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('touchcancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('contextmenu', swiper.onTouchEnd, {\n passive: true\n });\n\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n\n // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n};\nfunction attachEvents() {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nvar events$1 = {\n attachEvents,\n detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasGrabCursor = swiper.params.grabCursor;\n const isGrabCursor = breakpointParams.grabCursor;\n const wasEnabled = params.enabled;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n if (wasGrabCursor && !isGrabCursor) {\n swiper.unsetGrabCursor();\n } else if (!wasGrabCursor && isGrabCursor) {\n swiper.setGrabCursor();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n if (typeof breakpointParams[prop] === 'undefined') return;\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n const wasLoop = params.loop;\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n const hasLoop = swiper.params.loop;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (initialized) {\n if (needsReLoop) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (!wasLoop && hasLoop) {\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (wasLoop && !hasLoop) {\n swiper.loopDestroy();\n }\n }\n swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n\nvar breakpoints = {\n setBreakpoint,\n getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\nfunction addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}\n\nvar classes = {\n addClasses,\n removeClasses\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nvar checkOverflow$1 = {\n checkOverflow\n};\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n swiperElementNodeName: 'SWIPER-CONTAINER',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n eventsPrefix: 'swiper',\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 5,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // loop\n loop: false,\n loopAddBlankSlides: true,\n loopAdditionalSlides: 0,\n loopPreventsSliding: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-blank',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideFullyVisibleClass: 'swiper-slide-fully-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n params[moduleParamName].auto = true;\n }\n if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n params[moduleParamName].auto = true;\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events: events$1,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor() {\n let el;\n let params;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n pointerId: null,\n touchId: null\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getDirectionLabel(property) {\n if (this.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);\n }\n recalcSlides() {\n const swiper = this;\n const {\n slidesEl,\n params\n } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n if (exact === void 0) {\n exact = false;\n }\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n if (typeof params.slidesPerView === 'number') return params.slidesPerView;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += Math.ceil(slides[i].swiperSlideSize);\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n }\n });\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n setTranslate();\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n translated = swiper.slideTo(slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.forEach(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n if (swiper.rtl) {\n swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n mount(element) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n let el = element || swiper.params.el;\n if (typeof el === 'string') {\n el = document.querySelector(el);\n }\n if (!el) {\n return false;\n }\n el.swiper = swiper;\n if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) {\n swiper.isElement = true;\n }\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = el.shadowRoot.querySelector(getWrapperSelector());\n // Children needs to return slot items\n return res;\n }\n return elementChildren(el, getWrapperSelector())[0];\n };\n // Find Wrapper\n let wrapperEl = getWrapper();\n if (!wrapperEl && swiper.params.createElements) {\n wrapperEl = createElement('div', swiper.params.wrapperClass);\n el.append(wrapperEl);\n elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n wrapperEl.append(slideEl);\n });\n }\n Object.assign(swiper, {\n el,\n wrapperEl,\n slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n hostEl: swiper.isElement ? el.parentNode.host : el,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n });\n return true;\n }\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Attach events\n swiper.attachEvents();\n const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n if (swiper.isElement) {\n lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n }\n lazyElements.forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n } else {\n imageEl.addEventListener('load', e => {\n processLazyPreloader(swiper, e.target);\n });\n }\n });\n preload(swiper);\n\n // Init Flag\n swiper.initialized = true;\n preload(swiper);\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n const swiper = this;\n const {\n params,\n el,\n wrapperEl,\n slides\n } = swiper;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n el.removeAttribute('style');\n wrapperEl.removeAttribute('style');\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n }\n }\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n swiper.el.swiper = null;\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\n\nexport { Swiper as S, defaults as d };\n","import { 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);\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 if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}\n\nexport { Navigation as default };\n","import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = createElement('div', checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n\nexport { createElementIfNotDefined as c };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\n\n/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nfunction Autoplay(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit,\n params\n } = _ref;\n swiper.autoplay = {\n running: false,\n paused: false,\n timeLeft: 0\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: false,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n let timeout;\n let raf;\n let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayTimeLeft;\n let autoplayStartTime = new Date().getTime();\n let wasPaused;\n let isTouched;\n let pausedByTouch;\n let touchStartTimeout;\n let slideChanged;\n let pausedByInteraction;\n let pausedByPointerEnter;\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n if (e.target !== swiper.wrapperEl) return;\n swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);\n if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) {\n return;\n }\n resume();\n }\n const calcTimeLeft = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.autoplay.paused) {\n wasPaused = true;\n } else if (wasPaused) {\n autoplayDelayCurrent = autoplayTimeLeft;\n wasPaused = false;\n }\n const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n swiper.autoplay.timeLeft = timeLeft;\n emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n raf = requestAnimationFrame(() => {\n calcTimeLeft();\n });\n };\n const getSlideDelay = () => {\n let activeSlideEl;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0];\n } else {\n activeSlideEl = swiper.slides[swiper.activeIndex];\n }\n if (!activeSlideEl) return undefined;\n const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\n return currentSlideDelay;\n };\n const run = delayForce => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n cancelAnimationFrame(raf);\n calcTimeLeft();\n let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;\n autoplayDelayTotal = swiper.params.autoplay.delay;\n autoplayDelayCurrent = swiper.params.autoplay.delay;\n const currentSlideDelay = getSlideDelay();\n if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {\n delay = currentSlideDelay;\n autoplayDelayTotal = currentSlideDelay;\n autoplayDelayCurrent = currentSlideDelay;\n }\n autoplayTimeLeft = delay;\n const speed = swiper.params.speed;\n const proceed = () => {\n if (!swiper || swiper.destroyed) return;\n if (swiper.params.autoplay.reverseDirection) {\n if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n swiper.slidePrev(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n emit('autoplay');\n }\n } else {\n if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n swiper.slideNext(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, speed, true, true);\n emit('autoplay');\n }\n }\n if (swiper.params.cssMode) {\n autoplayStartTime = new Date().getTime();\n requestAnimationFrame(() => {\n run();\n });\n }\n };\n if (delay > 0) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n proceed();\n }, delay);\n } else {\n requestAnimationFrame(() => {\n proceed();\n });\n }\n\n // eslint-disable-next-line\n return delay;\n };\n const start = () => {\n autoplayStartTime = new Date().getTime();\n swiper.autoplay.running = true;\n run();\n emit('autoplayStart');\n };\n const stop = () => {\n swiper.autoplay.running = false;\n clearTimeout(timeout);\n cancelAnimationFrame(raf);\n emit('autoplayStop');\n };\n const pause = (internal, reset) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n clearTimeout(timeout);\n if (!internal) {\n pausedByInteraction = true;\n }\n const proceed = () => {\n emit('autoplayPause');\n if (swiper.params.autoplay.waitForTransition) {\n swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);\n } else {\n resume();\n }\n };\n swiper.autoplay.paused = true;\n if (reset) {\n if (slideChanged) {\n autoplayTimeLeft = swiper.params.autoplay.delay;\n }\n slideChanged = false;\n proceed();\n return;\n }\n const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n proceed();\n };\n const resume = () => {\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n autoplayStartTime = new Date().getTime();\n if (pausedByInteraction) {\n pausedByInteraction = false;\n run(autoplayTimeLeft);\n } else {\n run();\n }\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n };\n const onVisibilityChange = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n const document = getDocument();\n if (document.visibilityState === 'hidden') {\n pausedByInteraction = true;\n pause(true);\n }\n if (document.visibilityState === 'visible') {\n resume();\n }\n };\n const onPointerEnter = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByInteraction = true;\n pausedByPointerEnter = true;\n if (swiper.animating || swiper.autoplay.paused) return;\n pause(true);\n };\n const onPointerLeave = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByPointerEnter = false;\n if (swiper.autoplay.paused) {\n resume();\n }\n };\n const attachMouseEvents = () => {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.el.addEventListener('pointerenter', onPointerEnter);\n swiper.el.addEventListener('pointerleave', onPointerLeave);\n }\n };\n const detachMouseEvents = () => {\n swiper.el.removeEventListener('pointerenter', onPointerEnter);\n swiper.el.removeEventListener('pointerleave', onPointerLeave);\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","//MODAL\nexport default class Modal {\n constructor() {\n this.triggers = document.querySelectorAll(\"a[data-modal]\");\n this.modals = document.querySelectorAll(\".modal\");\n this.modalInners = document.querySelectorAll(\".modal-inner\");\n this.close = document.querySelectorAll(\".modal-close\");\n\n this.listeners();\n }\n\n listeners() {\n window.addEventListener(\"keydown\", this.keyDown);\n\n [...this.triggers].forEach(el => {\n el.addEventListener(\"click\", this.openModal, false);\n });\n\n [...this.modals].forEach(el => {\n el.addEventListener(\"transitionend\", this.revealModal, false);\n el.addEventListener(\"click\", this.backdropClose, false);\n });\n\n [...this.close].forEach(el => {\n el.addEventListener(\"click\", Modal.hideModal, false);\n });\n\n [...this.modalInners].forEach(el => {\n el.addEventListener(\"transitionend\", this.closeModal, true);\n });\n }\n\n keyDown(e) {\n if (27 === e.keyCode && document.body.classList.contains(\"modal-body\")) {\n Modal.hideModal();\n }\n }\n\n backdropClose(el) {\n if (!el.target.classList.contains(\"modal-visible\")) {\n return;\n }\n\n let backdrop =\n el.currentTarget.dataset.backdrop !== undefined\n ? el.currentTarget.dataset.backdrop\n : true;\n\n if (backdrop === true) {\n Modal.hideModal();\n }\n }\n\n static hideModal() {\n let modalOpen = document.querySelector(\".modal.modal-visible\");\n\n modalOpen.querySelector(\".modal-inner\").classList.remove(\"modal-reveal\");\n document\n .querySelector(\".modal-body\")\n .addEventListener(\"transitionend\", Modal.modalBody, false);\n document.body.classList.add(\"modal-fadeOut\");\n }\n\n closeModal(el) {\n if (\n \"opacity\" === el.propertyName &&\n el.target.classList.contains(\"modal-inner\") &&\n !el.target.classList.contains(\"modal-reveal\")\n ) {\n document\n .querySelector(\".modal.modal-visible\")\n .classList.remove(\"modal-visible\");\n }\n }\n\n openModal(el) {\n if (!el.currentTarget.dataset.modal) {\n console.error(\"No data-modal attribute defined!\");\n return;\n }\n\n el.preventDefault();\n el.stopPropagation();\n\n let modalID = el.currentTarget.dataset.modal;\n let modal = document.getElementById(modalID);\n\n document.body.classList.add(\"modal-body\");\n modal.classList.add(\"modal-visible\");\n }\n\n revealModal(el) {\n if (\n \"opacity\" === el.propertyName &&\n el.target.classList.contains(\"modal-visible\")\n ) {\n el.target.querySelector(\".modal-inner\").classList.add(\"modal-reveal\");\n }\n }\n\n static modalBody(el) {\n if (\n \"opacity\" === el.propertyName &&\n el.target.classList.contains(\"modal\") &&\n !el.target.classList.contains(\"modal-visible\")\n ) {\n document.body.classList.remove(\"modal-body\", \"modal-fadeOut\");\n }\n }\n}\n","//import { Fancybox } from '@fancyapps/ui';\nimport Swiper from 'swiper';\nimport { Autoplay, Navigation } from 'swiper/modules';\nimport Modal from './modules/modal.js'; //quite\nimport mobileMenu from './modules/mobile-menu.js'; //quite\n\n//Touch sniffer\nif ('ontouchstart' in document.documentElement) {\n\tdocument.querySelector('html').classList.add('is-touch');\n}\n\n// Init functions on pageload\nfunction init() {\n\tFancybox.bind('[data-fancybox]');\n\n\tmobileMenu();\n\tnew Modal();\n}\n\njQuery(document).ready(($) => {\n\tinit();\n\n\tvar svgLetters = '#collegave .i, #collegave .c, #collegave .t';\n\t$(svgLetters).hover(\n\t\tfunction (e) {\n\t\t\t$(svgLetters + ', #Laag_1-2').css('opacity', '.2');\n\t\t\t$('.' + this.classList.value).css('opacity', '1');\n\t\t},\n\t\t() => {\n\t\t\t$(svgLetters + ', #Laag_1-2').css('opacity', '1');\n\t\t}\n\t);\n\n\tif ($(window).width() < 768) {\n\t\t$('.tabs-nav li a').click(function () {\n\t\t\tvar scrollid = $(this).data('tab');\n\t\t\t$('html, body').animate(\n\t\t\t\t{\n\t\t\t\t\tscrollTop: $('#tab-1').offset().top\n\t\t\t\t},\n\t\t\t\t2000\n\t\t\t);\n\t\t});\n\t}\n});\n\n//------------------------------------//\n// DELETE ACTIVE STATE\n//------------------------------------//\nconst removeActive = (selector) => {\n\t[...document.querySelectorAll(selector)].forEach(\n\t\t(el) => delete el.dataset.active\n\t);\n};\n\n//------------------------------------//\n// TABS\n//------------------------------------//\nconst tabTriggers = document.querySelectorAll('.tabs-nav a');\n\n[...tabTriggers].forEach((trigger) => {\n\ttrigger.addEventListener('click', switchTab);\n});\n\nfunction switchTab(e) {\n\te.preventDefault();\n\tconst targetTab = e.currentTarget.dataset.tab;\n\n\tremoveActive('.tab[data-active]');\n\tremoveActive('.tabs-nav a[data-active]');\n\n\te.currentTarget.dataset.active = true;\n\tdocument.querySelector(`.tab[data-tab='${targetTab}']`).dataset.active = true;\n}\n\n//------------------------------------//\n// SWIPER - NEWS\n//------------------------------------//\nconst swiperNews = new Swiper('.swiper-news', {\n\t// Optional parameters\n\tloop: true,\n\tslidesPerView: 1.25,\n\tspaceBetween: 20,\n\n\t// If we need pagination\n\tpagination: {\n\t\tel: '.grid .swiper-pagination',\n\t\ttype: 'fraction'\n\t},\n\n\t// Navigation arrows\n\tnavigation: {\n\t\tnextEl: '.grid .button-next',\n\t\tprevEl: '.grid .button-prev'\n\t},\n\tbreakpoints: {\n\t\t// when window width is >= 320px\n\t\t600: {\n\t\t\tslidesPerView: 1.5\n\t\t},\n\t\t// when window width is >= 480px\n\t\t768: {\n\t\t\tslidesPerView: 1.75\n\t\t},\n\t\t// when window width is >= 640px\n\t\t992: {\n\t\t\tslidesPerView: 2,\n\t\t\tspaceBetween: 30\n\t\t},\n\t\t1024: {\n\t\t\tslidesPerView: 2.5,\n\t\t\tspaceBetween: 50\n\t\t}\n\t}\n});\n\n//------------------------------------//\n// SWIPER - HERO\n//------------------------------------//\n\nconst titleSwiper = new Swiper('.title-slider', {\n\t// Optional parameters\n\tloop: true,\n\tslidesPerView: 1,\n\tspaceBetween: 0,\n\tdirection: 'vertical',\n\tmodules: [Autoplay],\n\n\tautoplay: {\n\t\tdelay: 1500\n\t}\n});\n//------------------------------------//\n// SWIPER - LOGO\n//------------------------------------//\nconst partnerSwiper = new Swiper('.partners-slider', {\n\t// Optional parameters\n\tloop: true,\n\tslidesPerView: 2.5,\n\tspaceBetween: 40,\n\tmodules: [Autoplay],\n\n\tautoplay: {\n\t\tdelay: 6000\n\t},\n\tbreakpoints: {\n\t\t768: {\n\t\t\tslidesPerView: 3.5,\n\t\t\tspaceBetween: 60\n\t\t},\n\t\t1024: {\n\t\t\tslidesPerView: 5,\n\t\t\tspaceBetween: 100\n\t\t},\n\t\t1200: {\n\t\t\tslidesPerView: 6.5,\n\t\t\tspaceBetween: 100\n\t\t}\n\t}\n});\n\nconst customerSwiper = new Swiper('.customers-slider', {\n\t// Optional parameters\n\tloop: true,\n\tslidesPerView: 2.5,\n\tspaceBetween: 40,\n\tmodules: [Autoplay],\n\n\tautoplay: {\n\t\tdelay: 1500\n\t},\n\tbreakpoints: {\n\t\t768: {\n\t\t\tslidesPerView: 3.5,\n\t\t\tspaceBetween: 60\n\t\t},\n\t\t1024: {\n\t\t\tslidesPerView: 5,\n\t\t\tspaceBetween: 100\n\t\t},\n\t\t1200: {\n\t\t\tslidesPerView: 6.5,\n\t\t\tspaceBetween: 100\n\t\t}\n\t}\n});\n\n//------------------------------------//\n// SWIPER - LOGO\n//------------------------------------//\nconst historySwiper = new Swiper('.history-slider', {\n\t// Optional parameters\n\tmodules: [Navigation],\n\tslidesPerView: 1.5,\n\tspaceBetween: 40,\n\tnavigation: {\n\t\tnextEl: '.history .swiper-next',\n\t\tprevEl: '.history .swiper-prev'\n\t},\n\tbreakpoints: {\n\t\t768: {\n\t\t\tslidesPerView: 2.5\n\t\t},\n\t\t1024: {\n\t\t\tslidesPerView: 3.5\n\t\t},\n\t\t1200: {\n\t\t\tslidesPerView: 4.5\n\t\t}\n\t}\n});\n\n//------------------------------------//\n// SWIPER - GALLERY\n//------------------------------------//\nconst gallerySwiper = new Swiper('.gallery-slider', {\n\t// Optional parameters\n\tslidesPerView: 1.75,\n\tspaceBetween: 40,\n\tcenteredSlides: true,\n\tloop: true,\n\tmodules: [Autoplay, Navigation],\n\tautoplay: {\n\t\tdelay: 1500\n\t},\n\tnavigation: {\n\t\tnextEl: '.gallery .swiper-next',\n\t\tprevEl: '.gallery .swiper-prev'\n\t},\n\tbreakpoints: {\n\t\t0: {\n\t\t\tslidesPerView: 1.2\n\t\t},\n\t\t768: {\n\t\t\tslidesPerView: 2.75\n\t\t},\n\t\t1024: {\n\t\t\tslidesPerView: 3.75\n\t\t}\n\t}\n});\n\n//------------------------------------//\n// SWIPER - GALLERY\n//------------------------------------//\nconst blogSwiper = new Swiper('.swiper-blog', {\n\t// Optional parameters\n\tslidesPerView: 1.1,\n\tspaceBetween: 40,\n\tloop: true,\n\tmodules: [Navigation],\n\tnavigation: {\n\t\tnextEl: '.news .swiper-next',\n\t\tprevEl: '.news .swiper-prev'\n\t},\n\tbreakpoints: {\n\t\t768: {\n\t\t\tslidesPerView: 2\n\t\t},\n\t\t992: {\n\t\t\tslidesPerView: 3\n\t\t}\n\t}\n});\n","const mobileMenu = () => {\n \t// Hamburger menu\n const $body = document.querySelector('body');\n const $hamburger = document.querySelector('.site-hamburger');\n\n $hamburger && $hamburger.addEventListener( \"click\", () => {\n $body.classList.toggle('menu-is-open');\n });\n}\n\nexport default mobileMenu;\n"],"names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","nextTick","delay","now","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","transform","webkitTransform","split","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","o","prototype","call","slice","to","arguments","undefined","noExtend","i","nextSource","node","HTMLElement","nodeType","keysArray","filter","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","elementChildren","element","selector","matches","showWarning","text","console","warn","err","tag","classes","classList","add","Array","isArray","trim","c","classesToTokens","elementStyle","prop","elementIndex","child","previousSibling","elementOuterSize","size","includeMargins","offsetWidth","makeElementsArray","e","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","num","Number","isWebView","test","isSafariBrowser","need3dFix","calcBrowser","eventsEmitter","on","events","handler","priority","self","eventsListeners","destroyed","method","event","once","onceHandler","off","__emitterProxy","_len","args","_key","apply","onAny","eventsAnyListeners","offAny","index","splice","eventHandler","emit","data","context","_len2","_key2","unshift","toggleSlideClasses$1","slideEl","condition","className","contains","remove","toggleSlideClasses","processLazyPreloader","imageEl","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","shadowRoot","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","push","from","_","column","slideIndexLastInView","rewind","loop","realIndex","update","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","offsetSize","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","isVisible","slideVisibleClass","slideFullyVisibleClass","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","nextEls","nextElementSibling","next","elementNextAll","prevEls","previousElementSibling","prev","elementPrevAll","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","getAttribute","initialized","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","direction","step","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","recalcSlides","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","simulateTouch","pointerType","targetEl","touchEventsTarget","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","preventTouchMoveFromPointerMove","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","detail","bySwiperTouchMove","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","scrollLeft","scrollTop","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","init","swiperElementNodeName","resizeObserver","createElements","eventsPrefix","url","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","transition","transitionDuration","transitionDelay","moving","isLocked","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","item","prepareClasses","autoheight","centered","removeClasses","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","toUpperCase","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","module","m","Navigation","getEl","res","toggleEl","disabled","subEl","disabledClass","tagName","lockClass","onPrevClick","onNextClick","checkProps","createElementIfNotDefined","initButton","destroyButton","hideOnClick","hiddenClass","navigationDisabledClass","_s","pagination","clickable","isHidden","toggle","Autoplay","timeout","raf","timeLeft","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","pausedByPointerEnter","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","onTransitionEnd","calcTimeLeft","run","delayForce","currentSlideDelay","getSlideDelay","activeSlideEl","proceed","start","stop","pause","reset","onVisibilityChange","visibilityState","onPointerEnter","onPointerLeave","prototypeGroup","protoMethod","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","parents","parent","parentElement","elementParents","disconnect","Modal","triggers","modals","modalInners","close","listeners","keyDown","openModal","revealModal","backdropClose","hideModal","closeModal","keyCode","currentTarget","dataset","backdrop","modalBody","propertyName","modal","error","modalID","Fancybox","mobileMenu","$body","$hamburger","jQuery","ready","$","svgLetters","hover","css","click","offset","top","removeActive","active","switchTab","targetTab","tab","trigger"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5]}