{"version":3,"file":"cardDetail.js","sources":["../../../src/functions/cards/mergeUrlParams.js","../../../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/mousewheel.mjs","../../../node_modules/swiper/shared/create-element-if-not-defined.mjs","../../../node_modules/swiper/modules/navigation.mjs","../../../node_modules/swiper/shared/classes-to-selector.mjs","../../../node_modules/swiper/modules/pagination.mjs","../../../src/assets/scripts/creditcard/cardDetail.js"],"sourcesContent":["/**\n * baseUrlにappendParamsのパラメータをマージする\n * @param sourceUrl {string} カード詳細では申込みボタンのリンクが該当 例: http://app.example.com?foo=1&bar=2\n * @param urlToMerge {string} カード詳細ではページのURLが該当 例: http://www.example.com?baz=3\n * @param baseUrl {string} new URLの第2引数に渡すURL\n * @param keysToReject {string[]} マージを除外するパラメータのキー 例: ['utm_campaign']\n * @returns {string} 例: http://app.example.com?foo=1&bar=2&baz=3\n */\nexport function mergeUrlParams(sourceUrl, urlToMerge, baseUrl, keysToReject = []) {\n const parsedBaseUrl = new URL(sourceUrl, baseUrl)\n const params = parsedBaseUrl.searchParams\n const parsedUrlToMerge = new URL(urlToMerge, baseUrl)\n const paramsToMerge = parsedUrlToMerge.searchParams\n\n paramsToMerge.forEach((value, key) => {\n if (keysToReject.includes(key)) {\n return\n }\n if (value) {\n params.append(key, paramsToMerge.get(key))\n } else {\n // 「&foo」のような=が無いケースでは、&foo=0とする(参照: https://github.com/pxgrid/www.saisoncard.co.jp/issues/146#issuecomment-748798524\n params.append(key, '0')\n }\n })\n\n return sourceUrl.replace(/\\?.+=.+/, '') + '?' + params.toString()\n}\n","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n if (target === void 0) {\n target = {};\n }\n if (src === void 0) {\n src = {};\n }\n Object.keys(src).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\nconst ssrDocument = {\n body: {},\n addEventListener() {},\n removeEventListener() {},\n activeElement: {\n blur() {},\n nodeName: ''\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() {}\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() {},\n getElementsByTagName() {\n return [];\n }\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n }\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: ''\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n },\n history: {\n replaceState() {},\n pushState() {},\n go() {},\n back() {}\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() {},\n removeEventListener() {},\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n }\n };\n },\n Image() {},\n Date() {},\n screen: {},\n setTimeout() {},\n clearTimeout() {},\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n }\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { getWindow as a, getDocument as g };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction classesToTokens(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return classes.trim().split(' ').filter(c => !!c.trim());\n}\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n if (selector === void 0) {\n selector = '';\n }\n return [...element.children].filter(el => el.matches(selector));\n}\nfunction showWarning(text) {\n try {\n console.warn(text);\n return;\n } catch (err) {\n // err\n }\n}\nfunction createElement(tag, classes) {\n if (classes === void 0) {\n classes = [];\n }\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n}\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 if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n 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\nfunction updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass);\n });\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n let spaceBetween = params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides[i].classList.add(params.slideVisibleClass);\n }\n if (isFullyVisible) {\n slides[i].classList.add(params.slideFullyVisibleClass);\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}\n\nfunction updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd,\n progressLoop\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n}\n\nfunction updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n });\n let activeSlide;\n let prevSlide;\n let nextSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n if (gridEnabled) {\n activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0];\n nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0];\n prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0];\n } else {\n activeSlide = slides[activeIndex];\n }\n }\n if (activeSlide) {\n // Active classes\n activeSlide.classList.add(params.slideActiveClass);\n if (gridEnabled) {\n if (nextSlide) {\n nextSlide.classList.add(params.slideNextClass);\n }\n if (prevSlide) {\n prevSlide.classList.add(params.slidePrevClass);\n }\n } else {\n // Next Slide\n nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n if (nextSlide) {\n nextSlide.classList.add(params.slideNextClass);\n }\n\n // Prev Slide\n prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n if (prevSlide) {\n prevSlide.classList.add(params.slidePrevClass);\n }\n }\n }\n swiper.emitSlidesClasses();\n}\n\nconst processLazyPreloader = (swiper, imageEl) => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n const slideEl = imageEl.closest(slideSelector());\n if (slideEl) {\n let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (!lazyEl && swiper.isElement) {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n } else {\n // init later\n requestAnimationFrame(() => {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl) lazyEl.remove();\n }\n });\n }\n }\n if (lazyEl) lazyEl.remove();\n }\n};\nconst unlazy = (swiper, index) => {\n if (!swiper.slides[index]) return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0) return;\n amount = Math.min(amount, len);\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n const activeIndex = swiper.activeIndex;\n if (swiper.params.grid && swiper.params.grid.rows > 1) {\n const activeColumn = activeIndex;\n const preloadColumns = [activeColumn - amount];\n preloadColumns.push(...Array.from({\n length: amount\n }).map((_, i) => {\n return activeColumn + slidesPerView + i;\n }));\n swiper.slides.forEach((slideEl, i) => {\n if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n });\n return;\n }\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind || swiper.params.loop) {\n for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n const realIndex = (i % len + len) % len;\n if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n }\n } else {\n for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n unlazy(swiper, i);\n }\n }\n }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n const {\n slidesGrid,\n params\n } = swiper;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n const getVirtualRealIndex = aIndex => {\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) {\n realIndex = swiper.virtual.slides.length + realIndex;\n }\n if (realIndex >= swiper.virtual.slides.length) {\n realIndex -= swiper.virtual.slides.length;\n }\n return realIndex;\n };\n if (typeof activeIndex === 'undefined') {\n activeIndex = getActiveIndexByTranslate(swiper);\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex && !swiper.params.loop) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n return;\n }\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (gridEnabled) {\n const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0];\n let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);\n if (Number.isNaN(activeSlideIndex)) {\n activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);\n }\n realIndex = Math.floor(activeSlideIndex / params.grid.rows);\n } else if (swiper.slides[activeIndex]) {\n const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');\n if (slideIndex) {\n realIndex = parseInt(slideIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n }\n}\n\nfunction updateClickedSlide(el, path) {\n const swiper = this;\n const params = swiper.params;\n let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n slide = pathEl;\n }\n });\n }\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}\n\nvar translate = {\n getTranslate: getSwiperTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};\n\nfunction setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n }\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n\nfunction transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}\n\nfunction transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}\n\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd\n};\n\nfunction slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial || swiper.destroyed) {\n return false;\n }\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex];\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n // Update Index\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}\n\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n } else {\n let targetSlideIndex;\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;\n } else {\n targetSlideIndex = swiper.getSlideIndexByData(newIndex);\n }\n const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;\n const {\n centeredSlides\n } = swiper.params;\n let slidesPerView = swiper.params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n let needLoopFix = cols - targetSlideIndex < slidesPerView;\n if (centeredSlides) {\n needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);\n }\n if (needLoopFix) {\n const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';\n swiper.loopFix({\n direction,\n slideTo: true,\n activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,\n slideRealIndex: direction === 'next' ? swiper.realIndex : undefined\n });\n }\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;\n } else {\n newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n }\n requestAnimationFrame(() => {\n swiper.slideTo(newIndex, speed, runCallbacks, internal);\n });\n return swiper;\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n enabled,\n params,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'next'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n });\n return true;\n }\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n });\n return true;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal, threshold) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (threshold === void 0) {\n threshold = 0.5;\n }\n const swiper = this;\n if (swiper.destroyed) return;\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) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;\n if (!data.isMoved) {\n if (isLoop && allowLoopFix) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n new Date().getTime();\n if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n startTranslate: data.currentTranslate\n });\n data.loopSwapReset = true;\n data.startTranslate = data.currentTranslate;\n return;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetTouch;\n const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';\n if (!isTouchEvent) {\n if (data.touchId !== null) return; // return from pointer if we use touch\n if (e.pointerId !== data.pointerId) return;\n targetTouch = e;\n } else {\n targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n }\n if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {\n const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n data.pointerId = null;\n data.touchId = null;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n 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 wasEnabled = params.enabled;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n if (typeof breakpointParams[prop] === 'undefined') return;\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n const wasLoop = params.loop;\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n const hasLoop = swiper.params.loop;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (initialized) {\n if (needsReLoop) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (!wasLoop && hasLoop) {\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (wasLoop && !hasLoop) {\n swiper.loopDestroy();\n }\n }\n swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n\nvar breakpoints = {\n setBreakpoint,\n getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\nfunction addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}\n\nvar classes = {\n addClasses,\n removeClasses\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nvar checkOverflow$1 = {\n checkOverflow\n};\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n 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 { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { n as nextTick, d as now } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Mousewheel(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null,\n noMousewheelClass: 'swiper-no-mousewheel'\n }\n });\n swiper.mousewheel = {\n enabled: false\n };\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n }\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n function animateSlider(newEvent) {\n if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n }\n\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n lastScrollTime = new window.Date().getTime();\n // Return false as a default\n return false;\n }\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n }\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n\n // Ignore event if the target or its parents have the swiper-no-mousewheel class\n if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return;\n const params = swiper.params.mousewheel;\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n const targetElContainsTarget = targetEl && targetEl.contains(e.target);\n if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n const data = normalize(e);\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n if (delta === 0) return true;\n if (params.invert) delta = -delta;\n\n // Get the scroll positions\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n\n // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event\n };\n\n // Keep the most recent events\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta)\n };\n const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n swiper.updateSlidesClasses();\n }\n if (swiper.params.loop) {\n swiper.loopFix({\n direction: newEvent.direction < 0 ? 'next' : 'prev',\n byMousewheel: true\n });\n }\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n\n if (!timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = nextTick(() => {\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) {\n return true;\n }\n }\n }\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n return false;\n }\n function events(method) {\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n targetEl[method]('mouseenter', handleMouseEnter);\n targetEl[method]('mouseleave', handleMouseLeave);\n targetEl[method]('wheel', handle);\n }\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n if (swiper.mousewheel.enabled) return false;\n events('addEventListener');\n swiper.mousewheel.enabled = true;\n return true;\n }\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n if (!swiper.mousewheel.enabled) return false;\n events('removeEventListener');\n swiper.mousewheel.enabled = false;\n return true;\n }\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n if (swiper.mousewheel.enabled) disable();\n });\n Object.assign(swiper.mousewheel, {\n enable,\n disable\n });\n}\n\nexport { Mousewheel as default };\n","import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = createElement('div', checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n\nexport { createElementIfNotDefined as c };\n","import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\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.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (subEl) {\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const initButton = (el, dir) => {\n if (el) {\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n }\n if (!swiper.enabled && el) {\n el.classList.add(...params.lockClass.split(' '));\n }\n };\n nextEl.forEach(el => initButton(el, 'next'));\n prevEl.forEach(el => initButton(el, 'prev'));\n }\n function destroy() {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const destroyButton = (el, dir) => {\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n };\n nextEl.forEach(el => destroyButton(el, 'next'));\n prevEl.forEach(el => destroyButton(el, 'prev'));\n }\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (swiper.enabled) {\n update();\n return;\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}\n\nexport { Navigation as default };\n","function classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return `.${classes.trim().replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n\nexport { classesToSelector as c };\n","import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray, f as elementOuterSize, h as elementIndex, a as elementParents } from '../shared/utils.mjs';\n\nfunction Pagination(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n }\n function setSideBullets(bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n if (!bulletEl) return;\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n }\n }\n }\n function onBulletClick(e) {\n const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n if (!bulletEl) {\n return;\n }\n e.preventDefault();\n const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n if (swiper.params.loop) {\n if (swiper.realIndex === index) return;\n swiper.slideToLoop(index);\n } else {\n swiper.slideTo(index);\n }\n }\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n // Current/Total\n let current;\n let previousIndex;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n previousIndex = swiper.previousRealIndex || 0;\n current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n previousIndex = swiper.previousSnapIndex;\n } else {\n previousIndex = swiper.previousIndex || 0;\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n el.forEach(subEl => {\n subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n });\n if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n dynamicBulletIndex += current - (previousIndex || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.forEach(bulletEl => {\n const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n bulletEl.classList.remove(...classesToRemove);\n });\n if (el.length > 1) {\n bullets.forEach(bullet => {\n const bulletIndex = elementIndex(bullet);\n if (bulletIndex === current) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n } else if (swiper.isElement) {\n bullet.setAttribute('part', 'bullet');\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n if (bulletIndex === firstIndex) {\n setSideBullets(bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets(bullet, 'next');\n }\n }\n });\n } else {\n const bullet = bullets[current];\n if (bullet) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n }\n if (swiper.isElement) {\n bullets.forEach((bulletEl, bulletIndex) => {\n bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');\n });\n }\n if (params.dynamicBullets) {\n const firstDisplayedBullet = bullets[firstIndex];\n const lastDisplayedBullet = bullets[lastIndex];\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n if (bullets[i]) {\n bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n }\n setSideBullets(firstDisplayedBullet, 'prev');\n setSideBullets(lastDisplayedBullet, 'next');\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.forEach(bullet => {\n bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n });\n }\n }\n el.forEach((subEl, subElIndex) => {\n if (params.type === 'fraction') {\n subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n fractionEl.textContent = params.formatFractionCurrent(current + 1);\n });\n subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n totalEl.textContent = params.formatFractionTotal(total);\n });\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n });\n }\n if (params.type === 'custom' && params.renderCustom) {\n subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n if (subElIndex === 0) emit('paginationRender', subEl);\n } else {\n if (subElIndex === 0) emit('paginationRender', subEl);\n emit('paginationUpdate', subEl);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n });\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n // prettier-ignore\n paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\">${params.bulletElement}>`;\n }\n }\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `` + ' / ' + ``;\n }\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n }\n swiper.pagination.bullets = [];\n el.forEach(subEl => {\n if (params.type !== 'custom') {\n subEl.innerHTML = paginationHTML || '';\n }\n if (params.type === 'bullets') {\n swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\n }\n });\n if (params.type !== 'custom') {\n emit('paginationRender', el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = [...document.querySelectorAll(params.el)];\n }\n if (!el) {\n el = params.el;\n }\n if (!el || el.length === 0) return;\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n el = [...swiper.el.querySelectorAll(params.el)];\n // check if it belongs to another nested Swiper\n if (el.length > 1) {\n el = el.filter(subEl => {\n if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n return true;\n })[0];\n }\n }\n if (Array.isArray(el) && el.length === 1) el = el[0];\n Object.assign(swiper.pagination, {\n el\n });\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (params.type === 'bullets' && params.clickable) {\n subEl.classList.add(...(params.clickableClass || '').split(' '));\n }\n subEl.classList.add(params.modifierClass + params.type);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.type === 'bullets' && params.dynamicBullets) {\n subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n subEl.classList.add(params.progressbarOppositeClass);\n }\n if (params.clickable) {\n subEl.addEventListener('click', onBulletClick);\n }\n if (!swiper.enabled) {\n subEl.classList.add(params.lockClass);\n }\n });\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.hiddenClass);\n subEl.classList.remove(params.modifierClass + params.type);\n subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.clickable) {\n subEl.classList.remove(...(params.clickableClass || '').split(' '));\n subEl.removeEventListener('click', onBulletClick);\n }\n });\n }\n if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));\n }\n on('changeDirection', () => {\n if (!swiper.pagination || !swiper.pagination.el) return;\n const params = swiper.params.pagination;\n let {\n el\n } = swiper.pagination;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n update();\n });\n on('snapGridLengthChange', () => {\n render();\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const el = makeElementsArray(swiper.pagination.el);\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n }\n init();\n render();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}\n\nexport { Pagination as default };\n","import { mergeUrlParams } from '../../../functions/cards/mergeUrlParams'\nimport Swiper from 'swiper'\nimport { Navigation, Pagination, Mousewheel } from 'swiper/modules'\n\nconst KEYS_TO_REJECT = ['utm_campaign']\nconst TARGET_SELECTORS = [\n // 申込みボタン3種\n '#mainApplicationCardLink',\n '#sideApplicationCardLink',\n '#subApplicationCardLink',\n // ダイアログ内ボタン\n '[data-dialog-order-button]',\n]\n\n// === パラメーター引き継ぎ処理 ===\n\n// カード詳細ページがGETパラメーターと共に開かれた場合、そのパラメーターを申し込みボタンへ引き継ぐ\n\nfunction cardDetail() {\n const parsedPageUrl = new URL(location.href)\n if (parsedPageUrl.search === '') return\n\n TARGET_SELECTORS.forEach(selector => {\n const elements = document.querySelectorAll(selector)\n if (!elements.length) return\n elements.forEach(elem => {\n const linkUrl = elem.getAttribute('href')\n if (!linkUrl) {\n return\n }\n const mergedUrl = mergeUrlParams(linkUrl, location.href, location.origin, KEYS_TO_REJECT)\n elem.setAttribute('href', mergedUrl)\n })\n })\n}\n\ncardDetail()\n\n// カード詳細ページがGETパラメーターと共に開かれた場合、そのパラメーターを同ドメイン内新規入会CPへのリンクへ引き継ぐ\n\nfunction cardDetailPromotions() {\n const parsedPageUrl = new URL(location.href)\n if (parsedPageUrl.search === '') {\n return\n }\n\n ;['cardDetailPromotions', 'campaigns'].forEach(id => {\n const container = document.getElementById(id)\n if (!container) {\n return\n }\n\n const links = container.querySelectorAll('a[href]')\n\n const targets = [...links].filter(link => {\n const hrefUrl = new URL(link.href)\n // /creditcard/adm-campaign/ 以下のみを対象とする\n const isTargetPath = hrefUrl.pathname.startsWith('/creditcard/adm-campaign/')\n // ドメインが同一かどうか\n const isTargetHost = hrefUrl.hostname === location.hostname\n return isTargetPath && isTargetHost\n })\n targets.forEach(target => {\n const hrefValue = target.getAttribute('href')\n const mergedUrl = mergeUrlParams(hrefValue, location.href, location.origin, KEYS_TO_REJECT)\n target.setAttribute('href', mergedUrl)\n })\n })\n}\n\ncardDetailPromotions()\n\n////////////////////////////////////////////////////////////////////////////////////////////////////\n// CreditCardDetailPromotions 用スライダー\n////////////////////////////////////////////////////////////////////////////////////////////////////\ndocument.querySelectorAll('.sc21-CreditCardDetailPromotions').forEach(el => {\n const swiperEl = el.querySelector('.sc21-CreditCardDetailPromotions-slider')\n const numOfSlides = swiperEl.querySelectorAll('.sc21-CreditCardDetailPromotions-sliderItem').length\n\n // スライドが 2枚以上なければ、swiper 機能は不要\n if (numOfSlides <= 1) return\n\n const mql = window.matchMedia('(max-width: 767px)')\n const isSmallScreen = () => mql.matches\n const swiperRef = { current: null }\n\n const initSwiper = () => {\n swiperRef.current = new Swiper(swiperEl, {\n modules: [Navigation, Pagination, Mousewheel],\n wrapperClass: 'sc21-CreditCardDetailPromotions-sliderWrapper',\n slideClass: 'sc21-CreditCardDetailPromotions-sliderItem',\n // slidesPerView: 1.3,\n slidesPerView: 'auto',\n spaceBetween: 15,\n speed: 380,\n navigation: {\n nextEl: swiperEl.querySelector('.sc21-CreditCardDetailPromotions-nextButton'),\n prevEl: swiperEl.querySelector('.sc21-CreditCardDetailPromotions-prevButton'),\n },\n pagination: {\n el: swiperEl.querySelector('.sc21-CreditCardDetailPromotions-pagination'),\n bulletElement: 'button',\n clickable: true,\n },\n mousewheel: {\n forceToAxis: true,\n releaseOnEdges: true,\n },\n })\n }\n\n isSmallScreen() && initSwiper()\n\n mql.addEventListener('change', () => {\n if (isSmallScreen()) {\n !swiperRef.current && initSwiper()\n } else {\n swiperRef.current && swiperRef.current.destroy()\n swiperRef.current = null\n }\n })\n})\n"],"names":["mergeUrlParams","sourceUrl","urlToMerge","baseUrl","keysToReject","params","URL","searchParams","paramsToMerge","forEach","value","key","includes","append","get","replace","toString","isObject","obj","constructor","Object","extend","target","src","keys","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","join","MozTransform","OTransform","MsTransform","msTransform","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","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","elementParents","parents","parent","parentElement","push","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","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","processLazyPreloader","imageEl","slideEl","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","shadowRoot","remove","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","from","_","column","slideIndexLastInView","rewind","loop","realIndex","update","updateSize","clientWidth","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","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","contains","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","slideVisibleClass","slideFullyVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","slideActiveClass","slideNextClass","slidePrevClass","nextEls","nextElementSibling","next","elementNextAll","prevEls","previousElementSibling","prev","elementPrevAll","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","getAttribute","initialized","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","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","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","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","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","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","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","className","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","Mousewheel","timeout","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","noMousewheelClass","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","handle","targetElContainsTarget","rtlFactor","sX","sY","pX","pY","detail","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","shiftKey","deltaMode","spinX","spinY","pixelX","pixelY","positions","sign","ignoreWheelEvents","position","sticky","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","releaseScroll","returnValue","createElementIfNotDefined","checkProps","Navigation","getEl","res","toggleEl","disabled","subEl","disabledClass","tagName","lockClass","onPrevClick","onNextClick","initButton","destroyButton","hideOnClick","hiddenClass","navigationDisabledClass","_s","pagination","clickable","isHidden","toggle","classesToSelector","Pagination","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","onBulletClick","total","firstIndex","midIndex","classesToRemove","suffix","s","flat","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","offsetProp","subElIndex","fractionEl","textContent","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","innerHTML","render","paginationHTML","numberOfBullets","prototypeGroup","protoMethod","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","KEYS_TO_REJECT","TARGET_SELECTORS","elements","elem","linkUrl","mergedUrl","container","link","hrefUrl","isTargetPath","startsWith","isTargetHost","swiperEl","mql","isSmallScreen","swiperRef","initSwiper"],"mappings":"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","x_google_ignoreList":[1,2,3,4,5,6,7,8]}