{"version":3,"file":"js/block-testimonial.js","mappings":"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","sources":["webpack://rs_theme/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://rs_theme/./node_modules/style-loader/dist/runtime/insertBySelector.js","webpack://rs_theme/./node_modules/style-loader/dist/runtime/insertStyleElement.js","webpack://rs_theme/./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js","webpack://rs_theme/./node_modules/style-loader/dist/runtime/styleDomAPI.js","webpack://rs_theme/./node_modules/style-loader/dist/runtime/styleTagTransform.js","webpack://rs_theme/webpack/bootstrap","webpack://rs_theme/webpack/runtime/compat get default export","webpack://rs_theme/webpack/runtime/define property getters","webpack://rs_theme/webpack/runtime/hasOwnProperty shorthand","webpack://rs_theme/webpack/runtime/nonce","webpack://rs_theme/./src/blocks/testimonial/block-testimonial.scss?4301","webpack://rs_theme/./node_modules/swiper/shared/ssr-window.esm.mjs","webpack://rs_theme/./node_modules/swiper/shared/utils.mjs","webpack://rs_theme/./node_modules/swiper/shared/swiper-core.mjs","webpack://rs_theme/./node_modules/swiper/shared/create-element-if-not-defined.mjs","webpack://rs_theme/./node_modules/swiper/shared/classes-to-selector.mjs","webpack://rs_theme/./node_modules/swiper/modules/manipulation.mjs","webpack://rs_theme/./node_modules/swiper/shared/effect-init.mjs","webpack://rs_theme/./node_modules/swiper/shared/effect-target.mjs","webpack://rs_theme/./node_modules/swiper/shared/effect-virtual-transition-end.mjs","webpack://rs_theme/./node_modules/swiper/shared/create-shadow.mjs","webpack://rs_theme/./node_modules/swiper/swiper-bundle.mjs","webpack://rs_theme/./node_modules/swiper/modules/virtual.mjs","webpack://rs_theme/./node_modules/swiper/modules/keyboard.mjs","webpack://rs_theme/./node_modules/swiper/modules/mousewheel.mjs","webpack://rs_theme/./node_modules/swiper/modules/navigation.mjs","webpack://rs_theme/./node_modules/swiper/modules/pagination.mjs","webpack://rs_theme/./node_modules/swiper/modules/scrollbar.mjs","webpack://rs_theme/./node_modules/swiper/modules/parallax.mjs","webpack://rs_theme/./node_modules/swiper/modules/zoom.mjs","webpack://rs_theme/./node_modules/swiper/modules/controller.mjs","webpack://rs_theme/./node_modules/swiper/modules/a11y.mjs","webpack://rs_theme/./node_modules/swiper/modules/history.mjs","webpack://rs_theme/./node_modules/swiper/modules/hash-navigation.mjs","webpack://rs_theme/./node_modules/swiper/modules/autoplay.mjs","webpack://rs_theme/./node_modules/swiper/modules/thumbs.mjs","webpack://rs_theme/./node_modules/swiper/modules/free-mode.mjs","webpack://rs_theme/./node_modules/swiper/modules/grid.mjs","webpack://rs_theme/./node_modules/swiper/modules/effect-fade.mjs","webpack://rs_theme/./node_modules/swiper/modules/effect-cube.mjs","webpack://rs_theme/./node_modules/swiper/modules/effect-flip.mjs","webpack://rs_theme/./node_modules/swiper/modules/effect-coverflow.mjs","webpack://rs_theme/./node_modules/swiper/modules/effect-creative.mjs","webpack://rs_theme/./node_modules/swiper/modules/effect-cards.mjs","webpack://rs_theme/./src/js/component/_carousel.js","webpack://rs_theme/./src/blocks/testimonial/block-testimonial.js"],"sourcesContent":["\"use strict\";\n\nvar stylesInDOM = [];\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n return result;\n}\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n identifiers.push(identifier);\n }\n return identifiers;\n}\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n return updater;\n}\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n var newLastIdentifiers = modulesToDom(newList, options);\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n var _index = getIndexByIdentifier(_identifier);\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n stylesInDOM.splice(_index, 1);\n }\n }\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nvar memo = {};\n\n/* istanbul ignore next */\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target);\n\n // Special case to return head of iframe instead of iframe itself\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n memo[target] = styleTarget;\n }\n return memo[target];\n}\n\n/* istanbul ignore next */\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n target.appendChild(style);\n}\nmodule.exports = insertBySelector;","\"use strict\";\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\nmodule.exports = insertStyleElement;","\"use strict\";\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = typeof __webpack_nonce__ !== \"undefined\" ? __webpack_nonce__ : null;\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\nmodule.exports = setAttributesWithoutAttributes;","\"use strict\";\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n var needLayer = typeof obj.layer !== \"undefined\";\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n css += obj.css;\n if (needLayer) {\n css += \"}\";\n }\n if (obj.media) {\n css += \"}\";\n }\n if (obj.supports) {\n css += \"}\";\n }\n var sourceMap = obj.sourceMap;\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n }\n\n // For old IE\n /* istanbul ignore if */\n options.styleTagTransform(css, styleElement, options.options);\n}\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n styleElement.parentNode.removeChild(styleElement);\n}\n\n/* istanbul ignore next */\nfunction domAPI(options) {\n if (typeof document === \"undefined\") {\n return {\n update: function update() {},\n remove: function remove() {}\n };\n }\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\nmodule.exports = domAPI;","\"use strict\";\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css;\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild);\n }\n styleElement.appendChild(document.createTextNode(css));\n }\n}\nmodule.exports = styleTagTransform;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","__webpack_require__.nc = undefined;","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ruleSet[1].rules[1].use[1]!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!../../../node_modules/postcss-loader/dist/cjs.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[5]!./block-testimonial.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ruleSet[1].rules[1].use[1]!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!../../../node_modules/postcss-loader/dist/cjs.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[5]!./block-testimonial.scss\";\n export default content && content.locals ? content.locals : undefined;\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\nconst toggleSlideClasses = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n let activeSlide;\n let prevSlide;\n let nextSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n if (gridEnabled) {\n activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0];\n nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0];\n prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0];\n } else {\n activeSlide = slides[activeIndex];\n }\n }\n if (activeSlide) {\n if (!gridEnabled) {\n // Next Slide\n nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n\n // Prev Slide\n prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n }\n }\n slides.forEach(slideEl => {\n toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass);\n toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass);\n toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass);\n });\n swiper.emitSlidesClasses();\n}\n\nconst processLazyPreloader = (swiper, imageEl) => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n const slideEl = imageEl.closest(slideSelector());\n if (slideEl) {\n let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (!lazyEl && swiper.isElement) {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n } else {\n // init later\n requestAnimationFrame(() => {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl) lazyEl.remove();\n }\n });\n }\n }\n if (lazyEl) lazyEl.remove();\n }\n};\nconst unlazy = (swiper, index) => {\n if (!swiper.slides[index]) return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0) return;\n amount = Math.min(amount, len);\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n const activeIndex = swiper.activeIndex;\n if (swiper.params.grid && swiper.params.grid.rows > 1) {\n const activeColumn = activeIndex;\n const preloadColumns = [activeColumn - amount];\n preloadColumns.push(...Array.from({\n length: amount\n }).map((_, i) => {\n return activeColumn + slidesPerView + i;\n }));\n swiper.slides.forEach((slideEl, i) => {\n if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n });\n return;\n }\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind || swiper.params.loop) {\n for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n const realIndex = (i % len + len) % len;\n if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n }\n } else {\n for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n unlazy(swiper, i);\n }\n }\n }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n const {\n slidesGrid,\n params\n } = swiper;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n const getVirtualRealIndex = aIndex => {\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) {\n realIndex = swiper.virtual.slides.length + realIndex;\n }\n if (realIndex >= swiper.virtual.slides.length) {\n realIndex -= swiper.virtual.slides.length;\n }\n return realIndex;\n };\n if (typeof activeIndex === 'undefined') {\n activeIndex = getActiveIndexByTranslate(swiper);\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex && !swiper.params.loop) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n return;\n }\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (gridEnabled) {\n const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0];\n let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);\n if (Number.isNaN(activeSlideIndex)) {\n activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);\n }\n realIndex = Math.floor(activeSlideIndex / params.grid.rows);\n } else if (swiper.slides[activeIndex]) {\n const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');\n if (slideIndex) {\n realIndex = parseInt(slideIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n }\n}\n\nfunction updateClickedSlide(el, path) {\n const swiper = this;\n const params = swiper.params;\n let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n slide = pathEl;\n }\n });\n }\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n swiper.animating = false;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}\n\nvar translate = {\n getTranslate: getSwiperTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};\n\nfunction setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n }\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n\nfunction transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}\n\nfunction transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}\n\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd\n};\n\nfunction slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex];\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n // Update Index\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}\n\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n } else {\n let targetSlideIndex;\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;\n } else {\n targetSlideIndex = swiper.getSlideIndexByData(newIndex);\n }\n const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;\n const {\n centeredSlides\n } = swiper.params;\n let slidesPerView = swiper.params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n let needLoopFix = cols - targetSlideIndex < slidesPerView;\n if (centeredSlides) {\n needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);\n }\n if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) {\n needLoopFix = false;\n }\n if (needLoopFix) {\n const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';\n swiper.loopFix({\n direction,\n slideTo: true,\n activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,\n slideRealIndex: direction === 'next' ? swiper.realIndex : undefined\n });\n }\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;\n } else {\n newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n }\n requestAnimationFrame(() => {\n swiper.slideTo(newIndex, speed, runCallbacks, internal);\n });\n return swiper;\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n enabled,\n params,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'next'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n });\n return true;\n }\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n });\n return true;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal, threshold) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (threshold === void 0) {\n threshold = 0.5;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide() {\n const swiper = this;\n if (swiper.destroyed) return;\n const {\n params,\n slidesEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n\nvar slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};\n\nfunction loopCreate(slideRealIndex) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const initSlides = () => {\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n };\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);\n const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;\n const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;\n const addBlankSlides = amountOfSlides => {\n for (let i = 0; i < amountOfSlides; i += 1) {\n const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]);\n swiper.slidesEl.append(slideEl);\n }\n };\n if (shouldFillGroup) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else if (shouldFillGrid) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else {\n initSlides();\n }\n swiper.loopFix({\n slideRealIndex,\n direction: params.centeredSlides ? undefined : 'next'\n });\n}\n\nfunction loopFix(_temp) {\n let {\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n byController,\n byMousewheel\n } = _temp === void 0 ? {} : _temp;\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n const {\n slides,\n allowSlidePrev,\n allowSlideNext,\n slidesEl,\n params\n } = swiper;\n const {\n centeredSlides\n } = params;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n if (swiper.virtual && params.virtual.enabled) {\n if (slideTo) {\n if (!params.centeredSlides && swiper.snapIndex === 0) {\n swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n return;\n }\n let slidesPerView = params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;\n let loopedSlides = slidesPerGroup;\n if (loopedSlides % slidesPerGroup !== 0) {\n loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;\n }\n loopedSlides += params.loopAdditionalSlides;\n swiper.loopedSlides = loopedSlides;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n if (slides.length < slidesPerView + loopedSlides) {\n showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters');\n } else if (gridEnabled && params.grid.fill === 'row') {\n showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`');\n }\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n let activeIndex = swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]);\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;\n const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;\n const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);\n // prepend last slides before start\n if (activeColIndexWithShift < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n const colIndexToPrepend = cols - index - 1;\n for (let i = slides.length - 1; i >= 0; i -= 1) {\n if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i);\n }\n // slides.forEach((slide, slideIndex) => {\n // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);\n // });\n } else {\n prependSlidesIndexes.push(cols - index - 1);\n }\n }\n } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {\n slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n slides.forEach((slide, slideIndex) => {\n if (slide.column === index) appendSlidesIndexes.push(slideIndex);\n });\n } else {\n appendSlidesIndexes.push(index);\n }\n }\n }\n swiper.__preventObserver__ = true;\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\n } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) {\n swiper.slides.forEach((slide, slideIndex) => {\n swiper.grid.updateSlide(slideIndex, slide, swiper.slides);\n });\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (slideTo) {\n if (prependSlidesIndexes.length > 0 && isPrev) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n if (setTranslate) {\n const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex + shift, 0, false, true);\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else if (appendSlidesIndexes.length > 0 && isNext) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex - shift, 0, false, true);\n }\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex,\n direction,\n setTranslate,\n activeSlideIndex,\n byController: true\n };\n if (Array.isArray(swiper.controller.control)) {\n swiper.controller.control.forEach(c => {\n if (!c.destroyed && c.params.loop) c.loopFix({\n ...loopParams,\n slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix({\n ...loopParams,\n slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n }\n }\n swiper.emit('loopFix');\n}\n\nfunction loopDestroy() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n}\n\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n const swiper = this;\n if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nfunction unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\nfunction preventEdgeSwipe(swiper, event, startX) {\n const window = getWindow();\n const {\n params\n } = swiper;\n const edgeSwipeDetection = params.edgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n return true;\n }\n return false;\n }\n return true;\n}\nfunction onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const data = swiper.touchEventsData;\n if (e.type === 'pointerdown') {\n if (data.pointerId !== null && data.pointerId !== e.pointerId) {\n return;\n }\n data.pointerId = e.pointerId;\n } else if (e.type === 'touchstart' && e.targetTouches.length === 1) {\n data.touchId = e.targetTouches[0].identifier;\n }\n if (e.type === 'touchstart') {\n // don't proceed touch event\n preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);\n return;\n }\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!swiper.wrapperEl.contains(targetEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = e.composedPath ? e.composedPath() : e.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n if (!preventEdgeSwipe(swiper, e, startX)) {\n return;\n }\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (e.type === 'pointermove') {\n if (data.touchId !== null) return; // return from pointer if we use touch\n const id = e.pointerId;\n if (id !== data.pointerId) return;\n }\n let targetTouch;\n if (e.type === 'touchmove') {\n targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n } else {\n targetTouch = e;\n }\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!e.target.matches(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n touches.previousX = touches.currentX;\n touches.previousY = touches.currentY;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;\n if (!data.isMoved) {\n if (isLoop && allowLoopFix) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n new Date().getTime();\n if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n startTranslate: data.currentTranslate\n });\n data.loopSwapReset = true;\n data.startTranslate = data.currentTranslate;\n return;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetTouch;\n const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';\n if (!isTouchEvent) {\n if (data.touchId !== null) return; // return from pointer if we use touch\n if (e.pointerId !== data.pointerId) return;\n targetTouch = e;\n } else {\n targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n }\n if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {\n const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n data.pointerId = null;\n data.touchId = null;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop;\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (swipeToLast || currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n\nfunction onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n const isVirtualLoop = isVirtual && params.loop;\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n if (swiper.params.loop && !isVirtual) {\n swiper.slideToLoop(swiper.realIndex, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n clearTimeout(swiper.autoplay.resizeTimeout);\n swiper.autoplay.resizeTimeout = setTimeout(() => {\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.resume();\n }\n }, 500);\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n\nfunction onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n\nfunction onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n swiper.emit('setTranslate', swiper.translate, false);\n}\n\nfunction onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n return;\n }\n swiper.update();\n}\n\nfunction onDocumentTouchStart() {\n const swiper = this;\n if (swiper.documentTouchHandlerProceeded) return;\n swiper.documentTouchHandlerProceeded = true;\n if (swiper.params.touchReleaseOnEdges) {\n swiper.el.style.touchAction = 'auto';\n }\n}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n el,\n wrapperEl,\n device\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n\n // Touch Events\n document[domMethod]('touchstart', swiper.onDocumentTouchStart, {\n passive: false,\n capture\n });\n el[domMethod]('touchstart', swiper.onTouchStart, {\n passive: false\n });\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('touchmove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('touchend', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('touchcancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('contextmenu', swiper.onTouchEnd, {\n passive: true\n });\n\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n\n // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n};\nfunction attachEvents() {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nvar events$1 = {\n attachEvents,\n detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasGrabCursor = swiper.params.grabCursor;\n const isGrabCursor = breakpointParams.grabCursor;\n const wasEnabled = params.enabled;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n if (wasGrabCursor && !isGrabCursor) {\n swiper.unsetGrabCursor();\n } else if (!wasGrabCursor && isGrabCursor) {\n swiper.setGrabCursor();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n if (typeof breakpointParams[prop] === 'undefined') return;\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n const wasLoop = params.loop;\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n const hasLoop = swiper.params.loop;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (initialized) {\n if (needsReLoop) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (!wasLoop && hasLoop) {\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (wasLoop && !hasLoop) {\n swiper.loopDestroy();\n }\n }\n swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n\nvar breakpoints = {\n setBreakpoint,\n getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\nfunction addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}\n\nvar classes = {\n addClasses,\n removeClasses\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nvar checkOverflow$1 = {\n checkOverflow\n};\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n swiperElementNodeName: 'SWIPER-CONTAINER',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n eventsPrefix: 'swiper',\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 5,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // loop\n loop: false,\n loopAddBlankSlides: true,\n loopAdditionalSlides: 0,\n loopPreventsSliding: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-blank',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideFullyVisibleClass: 'swiper-slide-fully-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n params[moduleParamName].auto = true;\n }\n if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n params[moduleParamName].auto = true;\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events: events$1,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor() {\n let el;\n let params;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n pointerId: null,\n touchId: null\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getDirectionLabel(property) {\n if (this.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);\n }\n recalcSlides() {\n const swiper = this;\n const {\n slidesEl,\n params\n } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n if (exact === void 0) {\n exact = false;\n }\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n if (typeof params.slidesPerView === 'number') return params.slidesPerView;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += Math.ceil(slides[i].swiperSlideSize);\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n }\n });\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n setTranslate();\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n translated = swiper.slideTo(slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.forEach(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n if (swiper.rtl) {\n swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n mount(element) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n let el = element || swiper.params.el;\n if (typeof el === 'string') {\n el = document.querySelector(el);\n }\n if (!el) {\n return false;\n }\n el.swiper = swiper;\n if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) {\n swiper.isElement = true;\n }\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = el.shadowRoot.querySelector(getWrapperSelector());\n // Children needs to return slot items\n return res;\n }\n return elementChildren(el, getWrapperSelector())[0];\n };\n // Find Wrapper\n let wrapperEl = getWrapper();\n if (!wrapperEl && swiper.params.createElements) {\n wrapperEl = createElement('div', swiper.params.wrapperClass);\n el.append(wrapperEl);\n elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n wrapperEl.append(slideEl);\n });\n }\n Object.assign(swiper, {\n el,\n wrapperEl,\n slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n hostEl: swiper.isElement ? el.parentNode.host : el,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n });\n return true;\n }\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Attach events\n swiper.attachEvents();\n const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n if (swiper.isElement) {\n lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n }\n lazyElements.forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n } else {\n imageEl.addEventListener('load', e => {\n processLazyPreloader(swiper, e.target);\n });\n }\n });\n preload(swiper);\n\n // Init Flag\n swiper.initialized = true;\n preload(swiper);\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n const swiper = this;\n const {\n params,\n el,\n wrapperEl,\n slides\n } = swiper;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n el.removeAttribute('style');\n wrapperEl.removeAttribute('style');\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n }\n }\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n swiper.el.swiper = null;\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\n\nexport { Swiper as S, defaults as d };\n","import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = createElement('div', checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n\nexport { createElementIfNotDefined as c };\n","function classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return `.${classes.trim().replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n\nexport { classesToSelector as c };\n","function appendSlide(slides) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n const appendElement = slideEl => {\n if (typeof slideEl === 'string') {\n const tempDOM = document.createElement('div');\n tempDOM.innerHTML = slideEl;\n slidesEl.append(tempDOM.children[0]);\n tempDOM.innerHTML = '';\n } else {\n slidesEl.append(slideEl);\n }\n };\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) appendElement(slides[i]);\n }\n } else {\n appendElement(slides);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n}\n\nfunction prependSlide(slides) {\n const swiper = this;\n const {\n params,\n activeIndex,\n slidesEl\n } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n const prependElement = slideEl => {\n if (typeof slideEl === 'string') {\n const tempDOM = document.createElement('div');\n tempDOM.innerHTML = slideEl;\n slidesEl.prepend(tempDOM.children[0]);\n tempDOM.innerHTML = '';\n } else {\n slidesEl.prepend(slideEl);\n }\n };\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) prependElement(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n prependElement(slides);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n\nfunction addSlide(index, slides) {\n const swiper = this;\n const {\n params,\n activeIndex,\n slidesEl\n } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.recalcSlides();\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides[i];\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) slidesEl.append(slides[i]);\n }\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n slidesEl.append(slides);\n }\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n slidesEl.append(slidesBuffer[i]);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeSlide(slidesIndexes) {\n const swiper = this;\n const {\n params,\n activeIndex\n } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeAllSlides() {\n const swiper = this;\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n\nfunction Manipulation(_ref) {\n let {\n swiper\n } = _ref;\n Object.assign(swiper, {\n appendSlide: appendSlide.bind(swiper),\n prependSlide: prependSlide.bind(swiper),\n addSlide: addSlide.bind(swiper),\n removeSlide: removeSlide.bind(swiper),\n removeAllSlides: removeAllSlides.bind(swiper)\n });\n}\n\nexport { Manipulation as default };\n","function effectInit(params) {\n const {\n effect,\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams,\n perspective,\n recreateShadows,\n getEffectParams\n } = params;\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n on('transitionEnd', () => {\n if (swiper.params.effect !== effect) return;\n if (recreateShadows) {\n if (!getEffectParams || !getEffectParams().slideShadows) return;\n // remove shadows\n swiper.slides.forEach(slideEl => {\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove());\n });\n // create new one\n recreateShadows();\n }\n });\n let requireUpdateOnVirtual;\n on('virtualUpdate', () => {\n if (swiper.params.effect !== effect) return;\n if (!swiper.slides.length) {\n requireUpdateOnVirtual = true;\n }\n requestAnimationFrame(() => {\n if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n setTranslate();\n requireUpdateOnVirtual = false;\n }\n });\n });\n}\n\nexport { effectInit as e };\n","import { g as getSlideTransformEl } from './utils.mjs';\n\nfunction effectTarget(effectParams, slideEl) {\n const transformEl = getSlideTransformEl(slideEl);\n if (transformEl !== slideEl) {\n transformEl.style.backfaceVisibility = 'hidden';\n transformEl.style['-webkit-backface-visibility'] = 'hidden';\n }\n return transformEl;\n}\n\nexport { effectTarget as e };\n","import { k as elementTransitionEnd } from './utils.mjs';\n\nfunction effectVirtualTransitionEnd(_ref) {\n let {\n swiper,\n duration,\n transformElements,\n allSlides\n } = _ref;\n const {\n activeIndex\n } = swiper;\n const getSlide = el => {\n if (!el.parentElement) {\n // assume shadow root\n const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0];\n return slide;\n }\n return el.parentElement;\n };\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let transitionEndTarget;\n if (allSlides) {\n transitionEndTarget = transformElements;\n } else {\n transitionEndTarget = transformElements.filter(transformEl => {\n const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl;\n return swiper.getSlideIndex(el) === activeIndex;\n });\n }\n transitionEndTarget.forEach(el => {\n elementTransitionEnd(el, () => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n });\n });\n }\n}\n\nexport { effectVirtualTransitionEnd as e };\n","import { g as getSlideTransformEl, c as createElement } from './utils.mjs';\n\nfunction createShadow(suffix, slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`;\n const shadowContainer = getSlideTransformEl(slideEl);\n let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`);\n if (!shadowEl) {\n shadowEl = createElement('div', shadowClass.split(' '));\n shadowContainer.append(shadowEl);\n }\n return shadowEl;\n}\n\nexport { createShadow as c };\n","/**\n * Swiper 11.1.1\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2024 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: April 9, 2024\n */\n\nimport { S as Swiper } from './shared/swiper-core.mjs';\nimport Virtual from './modules/virtual.mjs';\nimport Keyboard from './modules/keyboard.mjs';\nimport Mousewheel from './modules/mousewheel.mjs';\nimport Navigation from './modules/navigation.mjs';\nimport Pagination from './modules/pagination.mjs';\nimport Scrollbar from './modules/scrollbar.mjs';\nimport Parallax from './modules/parallax.mjs';\nimport Zoom from './modules/zoom.mjs';\nimport Controller from './modules/controller.mjs';\nimport A11y from './modules/a11y.mjs';\nimport History from './modules/history.mjs';\nimport HashNavigation from './modules/hash-navigation.mjs';\nimport Autoplay from './modules/autoplay.mjs';\nimport Thumb from './modules/thumbs.mjs';\nimport freeMode from './modules/free-mode.mjs';\nimport Grid from './modules/grid.mjs';\nimport Manipulation from './modules/manipulation.mjs';\nimport EffectFade from './modules/effect-fade.mjs';\nimport EffectCube from './modules/effect-cube.mjs';\nimport EffectFlip from './modules/effect-flip.mjs';\nimport EffectCoverflow from './modules/effect-coverflow.mjs';\nimport EffectCreative from './modules/effect-creative.mjs';\nimport EffectCards from './modules/effect-cards.mjs';\n\n// Swiper Class\nconst modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards];\nSwiper.use(modules);\n\nexport { Swiper, Swiper as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { s as setCSSProperty, e as elementChildren, c as createElement } from '../shared/utils.mjs';\n\nfunction Virtual(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0\n }\n });\n let cssModeTimeout;\n const document = getDocument();\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: []\n };\n const tempDOM = document.createElement('div');\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n // eslint-disable-next-line\n let slideEl;\n if (params.renderSlide) {\n slideEl = params.renderSlide.call(swiper, slide, index);\n if (typeof slideEl === 'string') {\n tempDOM.innerHTML = slideEl;\n slideEl = tempDOM.children[0];\n }\n } else if (swiper.isElement) {\n slideEl = createElement('swiper-slide');\n } else {\n slideEl = createElement('div', swiper.params.slideClass);\n }\n slideEl.setAttribute('data-swiper-slide-index', index);\n if (!params.renderSlide) {\n slideEl.innerHTML = slide;\n }\n if (params.cache) {\n swiper.virtual.cache[index] = slideEl;\n }\n return slideEl;\n }\n function update(force, beforeInit) {\n const {\n slidesPerView,\n slidesPerGroup,\n centeredSlides,\n loop: isLoop,\n initialSlide\n } = swiper.params;\n if (beforeInit && !isLoop && initialSlide > 0) {\n return;\n }\n const {\n addSlidesBefore,\n addSlidesAfter\n } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n offset: previousOffset\n } = swiper.virtual;\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n const activeIndex = swiper.activeIndex || 0;\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore;\n }\n let from = activeIndex - slidesBefore;\n let to = activeIndex + slidesAfter;\n if (!isLoop) {\n from = Math.max(from, 0);\n to = Math.min(to, slides.length - 1);\n }\n let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n if (isLoop && activeIndex >= slidesBefore) {\n from -= slidesBefore;\n if (!centeredSlides) offset += swiper.slidesGrid[0];\n } else if (isLoop && activeIndex < slidesBefore) {\n from = -slidesBefore;\n if (centeredSlides) offset += swiper.slidesGrid[0];\n }\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n slidesBefore,\n slidesAfter\n });\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n emit('virtualUpdate');\n }\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n }\n swiper.updateProgress();\n emit('virtualUpdate');\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()\n });\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n } else {\n emit('virtualUpdate');\n }\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n const getSlideIndex = index => {\n let slideIndex = index;\n if (index < 0) {\n slideIndex = slides.length + index;\n } else if (slideIndex >= slides.length) {\n // eslint-disable-next-line\n slideIndex = slideIndex - slides.length;\n }\n return slideIndex;\n };\n if (force) {\n swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => {\n slideEl.remove();\n });\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n const slideIndex = getSlideIndex(i);\n swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${slideIndex}\"], swiper-slide[data-swiper-slide-index=\"${slideIndex}\"]`)).forEach(slideEl => {\n slideEl.remove();\n });\n }\n }\n }\n const loopFrom = isLoop ? -slides.length : 0;\n const loopTo = isLoop ? slides.length * 2 : slides.length;\n for (let i = loopFrom; i < loopTo; i += 1) {\n if (i >= from && i <= to) {\n const slideIndex = getSlideIndex(i);\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(slideIndex);\n } else {\n if (i > previousTo) appendIndexes.push(slideIndex);\n if (i < previousFrom) prependIndexes.push(slideIndex);\n }\n }\n }\n appendIndexes.forEach(index => {\n swiper.slidesEl.append(renderSlide(slides[index], index));\n });\n if (isLoop) {\n for (let i = prependIndexes.length - 1; i >= 0; i -= 1) {\n const index = prependIndexes[i];\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n }\n } else {\n prependIndexes.sort((a, b) => b - a);\n prependIndexes.forEach(index => {\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n });\n }\n elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n onRendered();\n }\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n update(true);\n }\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach(cachedIndex => {\n const cachedEl = cache[cachedIndex];\n const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index');\n if (cachedElIndex) {\n cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n // shift cache indexes\n Object.keys(swiper.virtual.cache).forEach(key => {\n if (key > slidesIndexes) {\n swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n delete swiper.virtual.cache[key];\n }\n });\n }\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n // shift cache indexes\n Object.keys(swiper.virtual.cache).forEach(key => {\n if (key > slidesIndexes) {\n swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n delete swiper.virtual.cache[key];\n }\n });\n }\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n function removeAllSlides() {\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n update(true);\n swiper.slideTo(0, 0);\n }\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n let domSlidesAssigned;\n if (typeof swiper.passedParams.virtual.slides === 'undefined') {\n const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`));\n if (slides && slides.length) {\n swiper.virtual.slides = [...slides];\n domSlidesAssigned = true;\n slides.forEach((slideEl, slideIndex) => {\n slideEl.setAttribute('data-swiper-slide-index', slideIndex);\n swiper.virtual.cache[slideIndex] = slideEl;\n slideEl.remove();\n });\n }\n }\n if (!domSlidesAssigned) {\n swiper.virtual.slides = swiper.params.virtual.slides;\n }\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n update(false, true);\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update\n });\n}\n\nexport { Virtual as default };\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { a as elementParents, b as elementOffset } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Keyboard(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true\n }\n });\n function handle(event) {\n if (!swiper.enabled) return;\n const {\n rtlTranslate: rtl\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40;\n // Directions locks\n if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n return false;\n }\n if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n const el = swiper.el;\n const swiperWidth = el.clientWidth;\n const swiperHeight = el.clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = elementOffset(el);\n if (rtl) swiperOffset.left -= el.scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n emit('keyPress', kc);\n return undefined;\n }\n function enable() {\n if (swiper.keyboard.enabled) return;\n document.addEventListener('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n function disable() {\n if (!swiper.keyboard.enabled) return;\n document.removeEventListener('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n Object.assign(swiper.keyboard, {\n enable,\n disable\n });\n}\n\nexport { Keyboard as default };\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 { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction Navigation(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n prevEl: null\n };\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\n } else if (res && res.length === 1) {\n res = res[0];\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (subEl) {\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const initButton = (el, dir) => {\n if (el) {\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n }\n if (!swiper.enabled && el) {\n el.classList.add(...params.lockClass.split(' '));\n }\n };\n nextEl.forEach(el => initButton(el, 'next'));\n prevEl.forEach(el => initButton(el, 'prev'));\n }\n function destroy() {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const destroyButton = (el, dir) => {\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n };\n nextEl.forEach(el => destroyButton(el, 'next'));\n prevEl.forEach(el => destroyButton(el, 'prev'));\n }\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (swiper.enabled) {\n update();\n return;\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}\n\nexport { Navigation as default };\n","import { 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 { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { m as makeElementsArray, i as classesToTokens, c as createElement, n as nextTick, b as elementOffset } from '../shared/utils.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { c as classesToSelector } from '../shared/classes-to-selector.mjs';\n\nfunction Scrollbar(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n horizontalClass: `swiper-scrollbar-horizontal`,\n verticalClass: `swiper-scrollbar-vertical`\n }\n });\n swiper.scrollbar = {\n el: null,\n dragEl: null\n };\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n const params = swiper.params.scrollbar;\n const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress;\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`;\n dragEl.style.width = `${newSize}px`;\n } else {\n dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`;\n dragEl.style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(timeout);\n el.style.opacity = 1;\n timeout = setTimeout(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n }\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`;\n }\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n dragEl.style.width = '';\n dragEl.style.height = '';\n trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight;\n divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n if (swiper.isHorizontal()) {\n dragEl.style.width = `${dragSize}px`;\n } else {\n dragEl.style.height = `${dragSize}px`;\n }\n if (divider >= 1) {\n el.style.display = 'none';\n } else {\n el.style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n el.style.opacity = 0;\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass);\n }\n }\n function getPointerPosition(e) {\n return swiper.isHorizontal() ? e.clientX : e.clientY;\n }\n function setDragPosition(e) {\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n el\n } = scrollbar;\n let positionRatio;\n positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el,\n dragEl\n } = scrollbar;\n isTouched = true;\n dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n wrapperEl.style.transitionDuration = '100ms';\n dragEl.style.transitionDuration = '100ms';\n setDragPosition(e);\n clearTimeout(dragTimeout);\n el.style.transitionDuration = '0ms';\n if (params.hide) {\n el.style.opacity = 1;\n }\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = 'none';\n }\n emit('scrollbarDragStart', e);\n }\n function onDragMove(e) {\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el,\n dragEl\n } = scrollbar;\n if (!isTouched) return;\n if (e.preventDefault && e.cancelable) e.preventDefault();else e.returnValue = false;\n setDragPosition(e);\n wrapperEl.style.transitionDuration = '0ms';\n el.style.transitionDuration = '0ms';\n dragEl.style.transitionDuration = '0ms';\n emit('scrollbarDragMove', e);\n }\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el\n } = scrollbar;\n if (!isTouched) return;\n isTouched = false;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = '';\n wrapperEl.style.transitionDuration = '';\n }\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n function events(method) {\n const {\n scrollbar,\n params\n } = swiper;\n const el = scrollbar.el;\n if (!el) return;\n const target = el;\n const activeListener = params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n const passiveListener = params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n target[eventMethod]('pointerdown', onDragStart, activeListener);\n document[eventMethod]('pointermove', onDragMove, activeListener);\n document[eventMethod]('pointerup', onDragEnd, passiveListener);\n }\n function enableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('on');\n }\n function disableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('off');\n }\n function init() {\n const {\n scrollbar,\n el: swiperEl\n } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n el: 'swiper-scrollbar'\n });\n const params = swiper.params.scrollbar;\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 if (!el.length) return;\n } else if (!el) {\n el = params.el;\n }\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) {\n el = swiperEl.querySelector(params.el);\n }\n if (el.length > 0) el = el[0];\n el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n let dragEl;\n if (el) {\n dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass));\n if (!dragEl) {\n dragEl = createElement('div', swiper.params.scrollbar.dragClass);\n el.append(dragEl);\n }\n }\n Object.assign(scrollbar, {\n el,\n dragEl\n });\n if (params.draggable) {\n enableDraggable();\n }\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));\n }\n }\n function destroy() {\n const params = swiper.params.scrollbar;\n const el = swiper.scrollbar.el;\n if (el) {\n el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass));\n }\n disableDraggable();\n }\n on('changeDirection', () => {\n if (!swiper.scrollbar || !swiper.scrollbar.el) return;\n const params = swiper.params.scrollbar;\n let {\n el\n } = swiper.scrollbar;\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.scrollbar.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n updateSize();\n setTranslate();\n }\n });\n on('update resize observerUpdate lock unlock changeDirection', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const {\n el\n } = swiper.scrollbar;\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));\n }\n });\n on('destroy', () => {\n destroy();\n });\n const enable = () => {\n swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n }\n init();\n updateSize();\n setTranslate();\n };\n const disable = () => {\n swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.scrollbar, {\n enable,\n disable,\n updateSize,\n setTranslate,\n init,\n destroy\n });\n}\n\nexport { Scrollbar as default };\n","import { e as elementChildren } from '../shared/utils.mjs';\n\nfunction Parallax(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n parallax: {\n enabled: false\n }\n });\n const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]';\n const setTransform = (el, progress) => {\n const {\n rtl\n } = swiper;\n const rtlFactor = rtl ? -1 : 1;\n const p = el.getAttribute('data-swiper-parallax') || '0';\n let x = el.getAttribute('data-swiper-parallax-x');\n let y = el.getAttribute('data-swiper-parallax-y');\n const scale = el.getAttribute('data-swiper-parallax-scale');\n const opacity = el.getAttribute('data-swiper-parallax-opacity');\n const rotate = el.getAttribute('data-swiper-parallax-rotate');\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n if (x.indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if (y.indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n el.style.opacity = currentOpacity;\n }\n let transform = `translate3d(${x}, ${y}, 0px)`;\n if (typeof scale !== 'undefined' && scale !== null) {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n transform += ` scale(${currentScale})`;\n }\n if (rotate && typeof rotate !== 'undefined' && rotate !== null) {\n const currentRotate = rotate * progress * -1;\n transform += ` rotate(${currentRotate}deg)`;\n }\n el.style.transform = transform;\n };\n const setTranslate = () => {\n const {\n el,\n slides,\n progress,\n snapGrid,\n isElement\n } = swiper;\n const elements = elementChildren(el, elementsSelector);\n if (swiper.isElement) {\n elements.push(...elementChildren(swiper.hostEl, elementsSelector));\n }\n elements.forEach(subEl => {\n setTransform(subEl, progress);\n });\n slides.forEach((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => {\n setTransform(subEl, slideProgress);\n });\n });\n };\n const setTransition = function (duration) {\n if (duration === void 0) {\n duration = swiper.params.speed;\n }\n const {\n el,\n hostEl\n } = swiper;\n const elements = [...el.querySelectorAll(elementsSelector)];\n if (swiper.isElement) {\n elements.push(...hostEl.querySelectorAll(elementsSelector));\n }\n elements.forEach(parallaxEl => {\n let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n parallaxEl.style.transitionDuration = `${parallaxDuration}ms`;\n });\n };\n on('beforeInit', () => {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n });\n on('init', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTranslate', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTransition', (_swiper, duration) => {\n if (!swiper.params.parallax.enabled) return;\n setTransition(duration);\n });\n}\n\nexport { Parallax as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren, a as elementParents, b as elementOffset, j as getTranslate } from '../shared/utils.mjs';\n\nfunction Zoom(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n limitToOriginalSize: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed'\n }\n });\n swiper.zoom = {\n enabled: false\n };\n let currentScale = 1;\n let isScaling = false;\n let fakeGestureTouched;\n let fakeGestureMoved;\n const evCache = [];\n const gesture = {\n originX: 0,\n originY: 0,\n slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n imageEl: undefined,\n imageWrapEl: undefined,\n maxRatio: 3\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {}\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined\n };\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.imageEl;\n const slideEl = gesture.slideEl;\n emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n }\n });\n function getDistanceBetweenTouches() {\n if (evCache.length < 2) return 1;\n const x1 = evCache[0].pageX;\n const y1 = evCache[0].pageY;\n const x2 = evCache[1].pageX;\n const y2 = evCache[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n }\n function getMaxRatio() {\n const params = swiper.params.zoom;\n const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) {\n const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth;\n return Math.min(imageMaxRatio, maxRatio);\n }\n return maxRatio;\n }\n function getScaleOrigin() {\n if (evCache.length < 2) return {\n x: null,\n y: null\n };\n const box = gesture.imageEl.getBoundingClientRect();\n return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale];\n }\n function getSlideSelector() {\n return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n }\n function eventWithinSlide(e) {\n const slideSelector = getSlideSelector();\n if (e.target.matches(slideSelector)) return true;\n if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true;\n return false;\n }\n function eventWithinZoomContainer(e) {\n const selector = `.${swiper.params.zoom.containerClass}`;\n if (e.target.matches(selector)) return true;\n if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true;\n return false;\n }\n\n // Events\n function onGestureStart(e) {\n if (e.pointerType === 'mouse') {\n evCache.splice(0, evCache.length);\n }\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n evCache.push(e);\n if (evCache.length < 2) {\n return;\n }\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches();\n if (!gesture.slideEl) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex];\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n if (!gesture.imageWrapEl) {\n gesture.imageEl = undefined;\n return;\n }\n gesture.maxRatio = getMaxRatio();\n }\n if (gesture.imageEl) {\n const [originX, originY] = getScaleOrigin();\n gesture.originX = originX;\n gesture.originY = originY;\n gesture.imageEl.style.transitionDuration = '0ms';\n }\n isScaling = true;\n }\n function onGestureChange(e) {\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache[pointerIndex] = e;\n if (evCache.length < 2) {\n return;\n }\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches();\n if (!gesture.imageEl) {\n return;\n }\n zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function onGestureEnd(e) {\n if (!eventWithinSlide(e)) return;\n if (e.pointerType === 'mouse' && e.type === 'pointerout') return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache.splice(pointerIndex, 1);\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n if (!gesture.imageEl) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`;\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale > 1 && gesture.slideEl) {\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n } else if (zoom.scale <= 1 && gesture.slideEl) {\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n }\n if (zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n gesture.slideEl = undefined;\n }\n }\n let allowTouchMoveTimeout;\n function allowTouchMove() {\n swiper.touchEventsData.preventTouchMoveFromPointerMove = false;\n }\n function preventTouchMove() {\n clearTimeout(allowTouchMoveTimeout);\n swiper.touchEventsData.preventTouchMoveFromPointerMove = true;\n allowTouchMoveTimeout = setTimeout(() => {\n allowTouchMove();\n });\n }\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.imageEl) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n const event = evCache.length > 0 ? evCache[0] : e;\n image.touchesStart.x = event.pageX;\n image.touchesStart.y = event.pageY;\n }\n function onTouchMove(e) {\n if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) {\n return;\n }\n const zoom = swiper.zoom;\n if (!gesture.imageEl) {\n return;\n }\n if (!image.isTouched || !gesture.slideEl) {\n return;\n }\n if (!image.isMoved) {\n image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;\n image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;\n image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0;\n image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0;\n gesture.slideWidth = gesture.slideEl.offsetWidth;\n gesture.slideHeight = gesture.slideEl.offsetHeight;\n gesture.imageWrapEl.style.transitionDuration = '0ms';\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) {\n allowTouchMove();\n return;\n }\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX;\n image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY;\n const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y));\n if (touchesDiff > 5) {\n swiper.allowClick = false;\n }\n if (!image.isMoved && !isScaling) {\n if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n image.isTouched = false;\n allowTouchMove();\n return;\n }\n if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n image.isTouched = false;\n allowTouchMove();\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n preventTouchMove();\n image.isMoved = true;\n const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio);\n const {\n originX,\n originY\n } = gesture;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2);\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2);\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTouchEnd() {\n const zoom = swiper.zoom;\n if (!gesture.imageEl) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`;\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) {\n if (gesture.imageEl) {\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n }\n if (gesture.imageWrapEl) {\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n }\n gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`);\n zoom.scale = 1;\n currentScale = 1;\n gesture.slideEl = undefined;\n gesture.imageEl = undefined;\n gesture.imageWrapEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n }\n }\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (e && e.target) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n }\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.pageX;\n touchY = e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n const forceZoomRatio = typeof e === 'number' ? e : null;\n if (currentScale === 1 && forceZoomRatio) {\n touchX = undefined;\n touchY = undefined;\n }\n const maxRatio = getMaxRatio();\n zoom.scale = forceZoomRatio || maxRatio;\n currentScale = forceZoomRatio || maxRatio;\n if (e && !(currentScale === 1 && forceZoomRatio)) {\n slideWidth = gesture.slideEl.offsetWidth;\n slideHeight = gesture.slideEl.offsetHeight;\n offsetX = elementOffset(gesture.slideEl).left + window.scrollX;\n offsetY = elementOffset(gesture.slideEl).top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;\n imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n if (forceZoomRatio && zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n }\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`;\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n zoom.scale = 1;\n currentScale = 1;\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n gesture.slideEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n }\n\n // Toggle Zoom\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n function getListeners() {\n const passiveListener = swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n const activeListenerWithCapture = swiper.params.passiveListeners ? {\n passive: false,\n capture: true\n } : true;\n return {\n passiveListener,\n activeListenerWithCapture\n };\n }\n\n // Attach/Detach Events\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n zoom.enabled = false;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd();\n });\n on('doubleTap', (_s, e) => {\n if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle\n });\n}\n\nexport { Zoom as default };\n","import { n as nextTick, k as elementTransitionEnd } from '../shared/utils.mjs';\n\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nfunction Controller(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide' // or 'container'\n }\n });\n\n swiper.controller = {\n control: undefined\n };\n function LinearSpline(x, y) {\n const binarySearch = function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n }();\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n return this;\n }\n function getInterpolateFunction(c) {\n swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n function setControlledTranslate(c) {\n if (c.destroyed) return;\n\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) {\n multiplier = 1;\n }\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n if (c.destroyed) return;\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n elementTransitionEnd(c.wrapperEl, () => {\n if (!controlled) return;\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n function removeSpline() {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n on('beforeInit', () => {\n if (typeof window !== 'undefined' && (\n // eslint-disable-line\n typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) {\n const controlElement = document.querySelector(swiper.params.controller.control);\n if (controlElement && controlElement.swiper) {\n swiper.controller.control = controlElement.swiper;\n } else if (controlElement) {\n const onControllerSwiper = e => {\n swiper.controller.control = e.detail[0];\n swiper.update();\n controlElement.removeEventListener('init', onControllerSwiper);\n };\n controlElement.addEventListener('init', onControllerSwiper);\n }\n return;\n }\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n swiper.controller.setTransition(duration, byController);\n });\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition\n });\n}\n\nexport { Controller as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElement, h as elementIndex, m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction A11y(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n id: null\n }\n });\n swiper.a11y = {\n clicked: false\n };\n let liveRegion = null;\n let preventFocusHandler;\n let focusTargetSlideEl;\n let visibilityChangedTimestamp = new Date().getTime();\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.innerHTML = '';\n notification.innerHTML = message;\n }\n function getRandomNumber(size) {\n if (size === void 0) {\n size = 16;\n }\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n function makeElFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '0');\n });\n }\n function makeElNotFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '-1');\n });\n }\n function addElRole(el, role) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('role', role);\n });\n }\n function addElRoleDescription(el, description) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-roledescription', description);\n });\n }\n function addElControls(el, controls) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-controls', controls);\n });\n }\n function addElLabel(el, label) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-label', label);\n });\n }\n function addElId(el, id) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('id', id);\n });\n }\n function addElLive(el, live) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-live', live);\n });\n }\n function disableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', true);\n });\n }\n function enableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', false);\n });\n }\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const targetEl = e.target;\n if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {\n if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return;\n }\n if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) {\n const prevEls = makeElementsArray(swiper.navigation.prevEl);\n const nextEls = makeElementsArray(swiper.navigation.nextEl);\n if (nextEls.includes(targetEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n if (prevEls.includes(targetEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n }\n if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) {\n targetEl.click();\n }\n }\n function updateNavigation() {\n if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (prevEl) {\n if (swiper.isBeginning) {\n disableEl(prevEl);\n makeElNotFocusable(prevEl);\n } else {\n enableEl(prevEl);\n makeElFocusable(prevEl);\n }\n }\n if (nextEl) {\n if (swiper.isEnd) {\n disableEl(nextEl);\n makeElNotFocusable(nextEl);\n } else {\n enableEl(nextEl);\n makeElFocusable(nextEl);\n }\n }\n }\n function hasPagination() {\n return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n }\n function hasClickablePagination() {\n return hasPagination() && swiper.params.pagination.clickable;\n }\n function updatePagination() {\n const params = swiper.params.a11y;\n if (!hasPagination()) return;\n swiper.pagination.bullets.forEach(bulletEl => {\n if (swiper.params.pagination.clickable) {\n makeElFocusable(bulletEl);\n if (!swiper.params.pagination.renderBullet) {\n addElRole(bulletEl, 'button');\n addElLabel(bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, elementIndex(bulletEl) + 1));\n }\n }\n if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) {\n bulletEl.setAttribute('aria-current', 'true');\n } else {\n bulletEl.removeAttribute('aria-current');\n }\n });\n }\n const initNavEl = (el, wrapperId, message) => {\n makeElFocusable(el);\n if (el.tagName !== 'BUTTON') {\n addElRole(el, 'button');\n el.addEventListener('keydown', onEnterOrSpaceKey);\n }\n addElLabel(el, message);\n addElControls(el, wrapperId);\n };\n const handlePointerDown = e => {\n if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) {\n preventFocusHandler = true;\n }\n swiper.a11y.clicked = true;\n };\n const handlePointerUp = () => {\n preventFocusHandler = false;\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (!swiper.destroyed) {\n swiper.a11y.clicked = false;\n }\n });\n });\n };\n const onVisibilityChange = e => {\n visibilityChangedTimestamp = new Date().getTime();\n };\n const handleFocus = e => {\n if (swiper.a11y.clicked) return;\n if (new Date().getTime() - visibilityChangedTimestamp < 100) return;\n const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!slideEl || !swiper.slides.includes(slideEl)) return;\n focusTargetSlideEl = slideEl;\n const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n if (isActive || isVisible) return;\n if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;\n if (swiper.isHorizontal()) {\n swiper.el.scrollLeft = 0;\n } else {\n swiper.el.scrollTop = 0;\n }\n requestAnimationFrame(() => {\n if (preventFocusHandler) return;\n swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n preventFocusHandler = false;\n });\n };\n const initSlides = () => {\n const params = swiper.params.a11y;\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);\n }\n if (params.slideRole) {\n addElRole(swiper.slides, params.slideRole);\n }\n const slidesLength = swiper.slides.length;\n if (params.slideLabelMessage) {\n swiper.slides.forEach((slideEl, index) => {\n const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index;\n const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel(slideEl, ariaLabelMessage);\n });\n }\n };\n const init = () => {\n const params = swiper.params.a11y;\n swiper.el.append(liveRegion);\n\n // Container\n const containerEl = swiper.el;\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);\n }\n if (params.containerMessage) {\n addElLabel(containerEl, params.containerMessage);\n }\n\n // Wrapper\n const wrapperEl = swiper.wrapperEl;\n const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId(wrapperEl, wrapperId);\n addElLive(wrapperEl, live);\n\n // Slide\n initSlides();\n\n // Navigation\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage));\n }\n if (prevEl) {\n prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = makeElementsArray(swiper.pagination.el);\n paginationEl.forEach(el => {\n el.addEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n\n // Tab focus\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n swiper.el.addEventListener('focus', handleFocus, true);\n swiper.el.addEventListener('focus', handleFocus, true);\n swiper.el.addEventListener('pointerdown', handlePointerDown, true);\n swiper.el.addEventListener('pointerup', handlePointerUp, true);\n };\n function destroy() {\n if (liveRegion) liveRegion.remove();\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n if (prevEl) {\n prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = makeElementsArray(swiper.pagination.el);\n paginationEl.forEach(el => {\n el.removeEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n // Tab focus\n swiper.el.removeEventListener('focus', handleFocus, true);\n swiper.el.removeEventListener('pointerdown', handlePointerDown, true);\n swiper.el.removeEventListener('pointerup', handlePointerUp, true);\n }\n on('beforeInit', () => {\n liveRegion = createElement('span', swiper.params.a11y.notificationClass);\n liveRegion.setAttribute('aria-live', 'assertive');\n liveRegion.setAttribute('aria-atomic', 'true');\n });\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n });\n on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n if (!swiper.params.a11y.enabled) return;\n initSlides();\n });\n on('fromEdge toEdge afterInit lock unlock', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}\n\nexport { A11y as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\n\nfunction History(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides',\n keepQuery: false\n }\n });\n let initialized = false;\n let paths = {};\n const slugify = text => {\n return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n };\n const getPathValues = urlOverride => {\n const window = getWindow();\n let location;\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return {\n key,\n value\n };\n };\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${index}\"]`) : swiper.slides[index];\n let value = slugify(slide.getAttribute('data-history'));\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key ? `${key}/` : ''}${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key ? `${key}/` : ''}${value}`;\n }\n if (swiper.params.history.keepQuery) {\n value += location.search;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({\n value\n }, null, value);\n } else {\n window.history.pushState({\n value\n }, null, value);\n }\n };\n const scrollToSlide = (speed, value, runCallbacks) => {\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides[i];\n const slideHistory = slugify(slide.getAttribute('data-history'));\n if (slideHistory === value) {\n const index = swiper.getSlideIndex(slide);\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, paths.value, false);\n };\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) {\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n return;\n }\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n const destroy = () => {\n const window = getWindow();\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n}\n\nexport { History as default };\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren } from '../shared/utils.mjs';\n\nfunction HashNavigation(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n on\n } = _ref;\n let initialized = false;\n const document = getDocument();\n const window = getWindow();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n getSlideIndex(_s, hash) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0];\n if (!slideWithHash) return 0;\n const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10);\n return index;\n }\n return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash=\"${hash}\"], swiper-slide[data-hash=\"${hash}\"]`)[0]);\n }\n }\n });\n const onHashChange = () => {\n emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : '';\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash);\n if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return;\n swiper.slideTo(newIndex);\n }\n };\n const setHash = () => {\n if (!initialized || !swiper.params.hashNavigation.enabled) return;\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : '';\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, `#${activeSlideHash}` || '');\n emit('hashSet');\n } else {\n document.location.hash = activeSlideHash || '';\n emit('hashSet');\n }\n };\n const init = () => {\n if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash);\n swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true);\n }\n if (swiper.params.hashNavigation.watchState) {\n window.addEventListener('hashchange', onHashChange);\n }\n };\n const destroy = () => {\n if (swiper.params.hashNavigation.watchState) {\n window.removeEventListener('hashchange', onHashChange);\n }\n };\n on('init', () => {\n if (swiper.params.hashNavigation.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.hashNavigation.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHash();\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHash();\n }\n });\n}\n\nexport { HashNavigation as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\n\n/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nfunction Autoplay(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit,\n params\n } = _ref;\n swiper.autoplay = {\n running: false,\n paused: false,\n timeLeft: 0\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: false,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n let timeout;\n let raf;\n let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayTimeLeft;\n let autoplayStartTime = new Date().getTime();\n let wasPaused;\n let isTouched;\n let pausedByTouch;\n let touchStartTimeout;\n let slideChanged;\n let pausedByInteraction;\n let pausedByPointerEnter;\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n if (e.target !== swiper.wrapperEl) return;\n swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);\n if (pausedByPointerEnter) {\n return;\n }\n resume();\n }\n const calcTimeLeft = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.autoplay.paused) {\n wasPaused = true;\n } else if (wasPaused) {\n autoplayDelayCurrent = autoplayTimeLeft;\n wasPaused = false;\n }\n const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n swiper.autoplay.timeLeft = timeLeft;\n emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n raf = requestAnimationFrame(() => {\n calcTimeLeft();\n });\n };\n const getSlideDelay = () => {\n let activeSlideEl;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0];\n } else {\n activeSlideEl = swiper.slides[swiper.activeIndex];\n }\n if (!activeSlideEl) return undefined;\n const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\n return currentSlideDelay;\n };\n const run = delayForce => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n cancelAnimationFrame(raf);\n calcTimeLeft();\n let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;\n autoplayDelayTotal = swiper.params.autoplay.delay;\n autoplayDelayCurrent = swiper.params.autoplay.delay;\n const currentSlideDelay = getSlideDelay();\n if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {\n delay = currentSlideDelay;\n autoplayDelayTotal = currentSlideDelay;\n autoplayDelayCurrent = currentSlideDelay;\n }\n autoplayTimeLeft = delay;\n const speed = swiper.params.speed;\n const proceed = () => {\n if (!swiper || swiper.destroyed) return;\n if (swiper.params.autoplay.reverseDirection) {\n if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n swiper.slidePrev(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n emit('autoplay');\n }\n } else {\n if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n swiper.slideNext(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, speed, true, true);\n emit('autoplay');\n }\n }\n if (swiper.params.cssMode) {\n autoplayStartTime = new Date().getTime();\n requestAnimationFrame(() => {\n run();\n });\n }\n };\n if (delay > 0) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n proceed();\n }, delay);\n } else {\n requestAnimationFrame(() => {\n proceed();\n });\n }\n\n // eslint-disable-next-line\n return delay;\n };\n const start = () => {\n autoplayStartTime = new Date().getTime();\n swiper.autoplay.running = true;\n run();\n emit('autoplayStart');\n };\n const stop = () => {\n swiper.autoplay.running = false;\n clearTimeout(timeout);\n cancelAnimationFrame(raf);\n emit('autoplayStop');\n };\n const pause = (internal, reset) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n clearTimeout(timeout);\n if (!internal) {\n pausedByInteraction = true;\n }\n const proceed = () => {\n emit('autoplayPause');\n if (swiper.params.autoplay.waitForTransition) {\n swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);\n } else {\n resume();\n }\n };\n swiper.autoplay.paused = true;\n if (reset) {\n if (slideChanged) {\n autoplayTimeLeft = swiper.params.autoplay.delay;\n }\n slideChanged = false;\n proceed();\n return;\n }\n const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n proceed();\n };\n const resume = () => {\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n autoplayStartTime = new Date().getTime();\n if (pausedByInteraction) {\n pausedByInteraction = false;\n run(autoplayTimeLeft);\n } else {\n run();\n }\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n };\n const onVisibilityChange = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n const document = getDocument();\n if (document.visibilityState === 'hidden') {\n pausedByInteraction = true;\n pause(true);\n }\n if (document.visibilityState === 'visible') {\n resume();\n }\n };\n const onPointerEnter = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByInteraction = true;\n pausedByPointerEnter = true;\n if (swiper.animating || swiper.autoplay.paused) return;\n pause(true);\n };\n const onPointerLeave = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByPointerEnter = false;\n if (swiper.autoplay.paused) {\n resume();\n }\n };\n const attachMouseEvents = () => {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.el.addEventListener('pointerenter', onPointerEnter);\n swiper.el.addEventListener('pointerleave', onPointerLeave);\n }\n };\n const detachMouseEvents = () => {\n swiper.el.removeEventListener('pointerenter', onPointerEnter);\n swiper.el.removeEventListener('pointerleave', onPointerLeave);\n };\n const attachDocumentEvents = () => {\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n };\n const detachDocumentEvents = () => {\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n attachMouseEvents();\n attachDocumentEvents();\n start();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n detachDocumentEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n });\n on('_freeModeStaticRelease', () => {\n if (pausedByTouch || pausedByInteraction) {\n resume();\n }\n });\n on('_freeModeNoMomentumRelease', () => {\n if (!swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n return;\n }\n isTouched = true;\n pausedByTouch = false;\n pausedByInteraction = false;\n touchStartTimeout = setTimeout(() => {\n pausedByInteraction = true;\n pausedByTouch = true;\n pause(true);\n }, 200);\n });\n on('touchEnd', () => {\n if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n clearTimeout(touchStartTimeout);\n clearTimeout(timeout);\n if (swiper.params.autoplay.disableOnInteraction) {\n pausedByTouch = false;\n isTouched = false;\n return;\n }\n if (pausedByTouch && swiper.params.cssMode) resume();\n pausedByTouch = false;\n isTouched = false;\n });\n on('slideChange', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n slideChanged = true;\n });\n Object.assign(swiper.autoplay, {\n start,\n stop,\n pause,\n resume\n });\n}\n\nexport { Autoplay as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { l as isObject, e as elementChildren } from '../shared/utils.mjs';\n\nfunction Thumb(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs'\n }\n });\n let initialized = false;\n let swiperCreated = false;\n swiper.thumbs = {\n swiper: null\n };\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n swiper.slideToLoop(slideToIndex);\n } else {\n swiper.slideTo(slideToIndex);\n }\n }\n function init() {\n const {\n thumbs: thumbsParams\n } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper.update();\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass));\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).forEach(slideEl => {\n slideEl.classList.add(thumbActiveClass);\n });\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n if (thumbsSwiper.slides[swiper.realIndex + i]) {\n thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass);\n }\n }\n }\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n const currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0];\n newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide);\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ;\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n }\n on('beforeInit', () => {\n const {\n thumbs\n } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) {\n const document = getDocument();\n const getThumbsElementAndInit = () => {\n const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper;\n if (thumbsElement && thumbsElement.swiper) {\n thumbs.swiper = thumbsElement.swiper;\n init();\n update(true);\n } else if (thumbsElement) {\n const onThumbsSwiper = e => {\n thumbs.swiper = e.detail[0];\n thumbsElement.removeEventListener('init', onThumbsSwiper);\n init();\n update(true);\n thumbs.swiper.update();\n swiper.update();\n };\n thumbsElement.addEventListener('init', onThumbsSwiper);\n }\n return thumbsElement;\n };\n const watchForThumbsToAppear = () => {\n if (swiper.destroyed) return;\n const thumbsElement = getThumbsElementAndInit();\n if (!thumbsElement) {\n requestAnimationFrame(watchForThumbsToAppear);\n }\n };\n requestAnimationFrame(watchForThumbsToAppear);\n } else {\n init();\n update(true);\n }\n });\n on('slideChange update resize observerUpdate', () => {\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n}\n\nexport { Thumb as default };\n","import { d as now, k as elementTransitionEnd } from '../shared/utils.mjs';\n\nfunction freeMode(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n once\n } = _ref;\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02\n }\n });\n function onTouchStart() {\n if (swiper.params.cssMode) return;\n const translate = swiper.getTranslate();\n swiper.setTranslate(translate);\n swiper.setTransition(0);\n swiper.touchEventsData.velocities.length = 0;\n swiper.freeMode.onTouchEnd({\n currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n });\n }\n function onTouchMove() {\n if (swiper.params.cssMode) return;\n const {\n touchEventsData: data,\n touches\n } = swiper;\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now()\n });\n }\n function onTouchEnd(_ref2) {\n let {\n currentPos\n } = _ref2;\n if (swiper.params.cssMode) return;\n const {\n params,\n wrapperEl,\n rtlTranslate: rtl,\n snapGrid,\n touchEventsData: data\n } = swiper;\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n emit('_freeModeStaticRelease');\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n Object.assign(swiper, {\n freeMode: {\n onTouchStart,\n onTouchMove,\n onTouchEnd\n }\n });\n}\n\nexport { freeMode as default };\n","function Grid(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n grid: {\n rows: 1,\n fill: 'column'\n }\n });\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n let wasMultiRow;\n const getSpaceBetween = () => {\n let spaceBetween = swiper.params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n return spaceBetween;\n };\n const initSlides = slides => {\n const {\n slidesPerView\n } = swiper.params;\n const {\n rows,\n fill\n } = swiper.params.grid;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;\n numFullColumns = Math.floor(slidesLength / rows);\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n }\n if (slidesPerView !== 'auto' && fill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n }\n slidesPerRow = slidesNumberEvenToRows / rows;\n };\n const unsetSlides = () => {\n if (swiper.slides) {\n swiper.slides.forEach(slide => {\n if (slide.swiperSlideGridSet) {\n slide.style.height = '';\n slide.style[swiper.getDirectionLabel('margin-top')] = '';\n }\n });\n }\n };\n const updateSlide = (i, slide, slides) => {\n const {\n slidesPerGroup\n } = swiper.params;\n const spaceBetween = getSpaceBetween();\n const {\n rows,\n fill\n } = swiper.params.grid;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (fill === 'row' && slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n slide.style.order = newSlideOrderIndex;\n } else if (fill === 'column') {\n column = Math.floor(i / rows);\n row = i - column * rows;\n if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n row += 1;\n if (row >= rows) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n slide.row = row;\n slide.column = column;\n slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`;\n slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : '';\n slide.swiperSlideGridSet = true;\n };\n const updateWrapperSize = (slideSize, snapGrid) => {\n const {\n centeredSlides,\n roundLengths\n } = swiper.params;\n const spaceBetween = getSpaceBetween();\n const {\n rows\n } = swiper.params.grid;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid.splice(0, snapGrid.length);\n snapGrid.push(...newSlidesGrid);\n }\n };\n const onInit = () => {\n wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1;\n };\n const onUpdate = () => {\n const {\n params,\n el\n } = swiper;\n const isMultiRow = params.grid && params.grid.rows > 1;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n numFullColumns = 1;\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n wasMultiRow = isMultiRow;\n };\n on('init', onInit);\n on('update', onUpdate);\n swiper.grid = {\n initSlides,\n unsetSlides,\n updateSlide,\n updateWrapperSize\n };\n}\n\nexport { Grid as default };\n","import { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectFade(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n fadeEffect: {\n crossFade: false\n }\n });\n const setTranslate = () => {\n const {\n slides\n } = swiper;\n const params = swiper.params.fadeEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = swiper.slides[i];\n const offset = slideEl.swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0);\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.opacity = slideOpacity;\n targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectFade as default };\n","import { e as effectInit } from '../shared/effect-init.mjs';\nimport { c as createElement } from '../shared/utils.mjs';\n\nfunction EffectCube(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n }\n });\n const createSlideShadows = (slideEl, progress, isHorizontal) => {\n let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' '));\n slideEl.append(shadowBefore);\n }\n if (!shadowAfter) {\n shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' '));\n slideEl.append(shadowAfter);\n }\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // create new ones\n const isHorizontal = swiper.isHorizontal();\n swiper.slides.forEach(slideEl => {\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n createSlideShadows(slideEl, progress, isHorizontal);\n });\n };\n const setTranslate = () => {\n const {\n el,\n wrapperEl,\n slides,\n width: swiperWidth,\n height: swiperHeight,\n rtlTranslate: rtl,\n size: swiperSize,\n browser\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n swiper.wrapperEl.append(cubeShadowEl);\n }\n cubeShadowEl.style.height = `${swiperWidth}px`;\n } else {\n cubeShadowEl = el.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n el.append(cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n if (rtl) {\n tx = -tx;\n }\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n if (swiper.browser && swiper.browser.need3dFix && Math.abs(wrapperRotate) / 90 % 2 === 1) {\n wrapperRotate += 0.001;\n }\n }\n slideEl.style.transform = transform;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress, isHorizontal);\n }\n }\n wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`;\n wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`;\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`;\n }\n }\n const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0;\n wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`;\n wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);\n };\n const setTransition = duration => {\n const {\n el,\n slides\n } = swiper;\n slides.forEach(slideEl => {\n slideEl.style.transitionDuration = `${duration}ms`;\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => {\n subEl.style.transitionDuration = `${duration}ms`;\n });\n });\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n const shadowEl = el.querySelector('.swiper-cube-shadow');\n if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`;\n }\n };\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.cubeEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true\n })\n });\n}\n\nexport { EffectCube as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectFlip(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true\n }\n });\n const createSlideShadows = (slideEl, progress) => {\n let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n if (!shadowAfter) {\n shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // Set shadows\n swiper.params.flipEffect;\n swiper.slides.forEach(slideEl => {\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n createSlideShadows(slideEl, progress);\n });\n };\n const setTranslate = () => {\n const {\n slides,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.flipEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n const offset = slideEl.swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n if (swiper.browser && swiper.browser.need3dFix) {\n if (Math.abs(rotateY) / 90 % 2 === 1) {\n rotateY += 0.001;\n }\n if (Math.abs(rotateX) / 90 % 2 === 1) {\n rotateX += 0.001;\n }\n }\n slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress);\n }\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\n });\n };\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.flipEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectFlip as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCoverflow(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true\n }\n });\n const setTranslate = () => {\n const {\n width: swiperWidth,\n height: swiperHeight,\n slides,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const slideEl = slides[i];\n const slideSize = slidesSizesGrid[i];\n const slideOffset = slideEl.swiperSlideOffset;\n const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = parseFloat(params.stretch) / 100 * slideSize;\n }\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n if (swiper.browser && swiper.browser.need3dFix) {\n if (Math.abs(rotateY) / 90 % 2 === 1) {\n rotateY += 0.001;\n }\n if (Math.abs(rotateX) / 90 % 2 === 1) {\n rotateX += 0.001;\n }\n }\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = slideTransform;\n slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBeforeEl) {\n shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top');\n }\n if (!shadowAfterEl) {\n shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom');\n }\n if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n };\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true\n })\n });\n}\n\nexport { EffectCoverflow as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCreative(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n creativeEffect: {\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n }\n }\n });\n const getTranslateValue = value => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n const setTranslate = () => {\n const {\n slides,\n wrapperEl,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.creativeEffect;\n const {\n progressMultiplier: multiplier\n } = params;\n const isCenteredSlides = swiper.params.centeredSlides;\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`;\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress);\n let originalProgress = progress;\n if (!isCenteredSlides) {\n originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress);\n }\n const offset = slideEl.swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1\n };\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n }\n // set translate\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n });\n // set rotates\n r.forEach((value, index) => {\n let val = data.rotate[index] * Math.abs(progress * multiplier);\n if (swiper.browser && swiper.browser.need3dFix && Math.abs(val) / 90 % 2 === 1) {\n val += 0.001;\n }\n r[index] = val;\n });\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const translateString = t.join(', ');\n const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\n\n // Set shadows\n if (custom && data.shadow || !custom) {\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl && data.shadow) {\n shadowEl = createShadow('creative', slideEl);\n }\n if (shadowEl) {\n const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n targetEl.style.opacity = opacityString;\n if (data.origin) {\n targetEl.style.transformOrigin = data.origin;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectCreative as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCards(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n cardsEffect: {\n slideShadows: true,\n rotate: true,\n perSlideRotate: 2,\n perSlideOffset: 8\n }\n });\n const setTranslate = () => {\n const {\n slides,\n activeIndex,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.cardsEffect;\n const {\n startTranslate,\n isTouched\n } = swiper.touchEventsData;\n const currentTranslate = rtl ? -swiper.translate : swiper.translate;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = slideEl.swiperSlideOffset;\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`;\n }\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -params.perSlideRotate * progress;\n let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;\n const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n if (progress < 0) {\n // next\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n\n /* eslint-disable */\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg)\n scale(${scaleString})\n `;\n /* eslint-enable */\n\n if (params.slideShadows) {\n // Set shadows\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl) {\n shadowEl = createShadow('cards', slideEl);\n }\n if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\n });\n };\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectCards as default };\n","import Swiper from 'swiper/bundle';\n\nconst rsCarousel = {\n init: (carousels) => {\n carousels.forEach(carousel => {\n const swiperOptions = {};\n const loop = carousel.dataset.loop;\n const autoplay = carousel.dataset.autoplay;\n const pagination = carousel.dataset.pagination;\n const navigation = carousel.dataset.navigation;\n\n if (loop) {\n swiperOptions.loop = true;\n }\n\n if (autoplay) {\n swiperOptions.autoplay = {\n delay: 6000,\n disableOnInteraction: false,\n };\n }\n\n if (pagination) {\n swiperOptions.pagination = {\n el: '.swiper-pagination',\n clickable: true,\n };\n }\n\n if (navigation) {\n swiperOptions.navigation = {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev',\n };\n }\n\n // eslint-disable-next-line no-unused-vars\n const swiper = new Swiper(`#${carousel.getAttribute('id')}`, swiperOptions);\n });\n },\n};\n\nexport default rsCarousel;\n","/* Block - Testimonial.\n *\n * Imports the block css.\n * Contains block-specific functionality.\n *\n * @file single\n */\n/* eslint-disable-next-line */\nimport styles from \"./block-testimonial.scss\";\n\nimport rsCarousel from '../../js/component/_carousel';\n\nconst carousels = document.querySelectorAll('body:not(.wp-admin) .rs-carousel');\n\nrsCarousel.init(carousels);\n"],"names":["stylesInDOM","getIndexByIdentifier","identifier","result","i","length","modulesToDom","list","options","idCountMap","identifiers","item","id","base","count","concat","indexByIdentifier","obj","css","media","sourceMap","supports","layer","references","updater","addElementStyle","byIndex","splice","push","api","domAPI","update","newObj","remove","module","exports","lastIdentifiers","newList","index","newLastIdentifiers","_i","_index","memo","insert","style","target","styleTarget","document","querySelector","window","HTMLIFrameElement","contentDocument","head","e","getTarget","Error","appendChild","element","createElement","setAttributes","attributes","styleElement","nonce","setAttribute","insertStyleElement","needLayer","btoa","unescape","encodeURIComponent","JSON","stringify","styleTagTransform","apply","parentNode","removeChild","removeStyleElement","styleSheet","cssText","firstChild","createTextNode","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","prop","prototype","hasOwnProperty","call","nc","isObject","constructor","extend","src","keys","forEach","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelectorAll","getElementById","createEvent","initEvent","children","childNodes","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","getWindow","win","classesToTokens","classes","trim","split","filter","c","nextTick","delay","now","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","transform","webkitTransform","map","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","slice","to","arguments","noExtend","nextSource","node","HTMLElement","nodeType","keysArray","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","getSlideTransformEl","slideEl","shadowRoot","elementChildren","selector","matches","showWarning","text","console","warn","err","tag","classList","add","Array","isArray","elementOffset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","elementStyle","elementIndex","child","previousSibling","elementParents","parents","parent","parentElement","elementTransitionEnd","fireCallBack","elementOuterSize","size","includeMargins","offsetWidth","makeElementsArray","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","eventsEmitter","on","events","handler","priority","self","eventsListeners","destroyed","method","event","once","onceHandler","off","__emitterProxy","_len","args","_key","onAny","eventsAnyListeners","offAny","eventHandler","emit","data","context","_len2","_key2","unshift","toggleSlideClasses","condition","className","contains","processLazyPreloader","imageEl","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","from","_","includes","column","slideIndexLastInView","rewind","loop","realIndex","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","Number","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","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","nextEls","nextElementSibling","next","elementNextAll","prevEls","previousElementSibling","prev","elementPrevAll","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","getAttribute","initialized","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","transitionEmit","runCallbacks","direction","step","slideTo","internal","initial","animating","preventInteractionOnTransition","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","setTranslate","transitionStart","transitionEnd","isH","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","behavior","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","recalcSlides","byController","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","currentTranslate","shift","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","pageX","touches","simulateTouch","pointerType","targetEl","touchEventsTarget","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","preventTouchMoveFromPointerMove","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","isSafari","isWebView","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","newProgress","previousTranslate","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","init","swiperElementNodeName","resizeObserver","createElements","eventsPrefix","url","virtualTranslate","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","x","y","translateTo","translateBounds","newTranslate","onTranslateToWrapperTransitionEnd","transition","transitionDuration","transitionDelay","moving","isLocked","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","prepareClasses","removeClasses","extendedDefaults","Swiper","swipers","newParams","needPerspectiveFix","toLowerCase","String","major","minor","num","test","isSafariBrowser","need3dFix","calcBrowser","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","toUpperCase","getWrapperSelector","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","m","createElementIfNotDefined","checkProps","classesToSelector","appendSlide","appendElement","tempDOM","innerHTML","observer","prependSlide","prependElement","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","effectInit","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","overwriteParamsResult","_s","slideShadows","shadowEl","effectTarget","effectParams","transformEl","backfaceVisibility","effectVirtualTransitionEnd","transformElements","allSlides","transitionEndTarget","eventTriggered","getSlide","createShadow","suffix","shadowClass","shadowContainer","prototypeGroup","protoMethod","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","cssModeTimeout","cache","renderSlide","renderExternal","renderExternalUpdate","addSlidesBefore","addSlidesAfter","offset","force","beforeInit","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","onRendered","slidesToRender","prependIndexes","appendIndexes","loopFrom","loopTo","domSlidesAssigned","numberOfNewSlides","newCache","cachedIndex","cachedEl","cachedElIndex","handle","kc","keyCode","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","onlyInViewport","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","timeout","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","noMousewheelClass","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","targetElContainsTarget","rtlFactor","sX","sY","pX","pY","detail","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","positions","sign","ignoreWheelEvents","position","sticky","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","releaseScroll","getEl","res","toggleEl","disabled","subEl","disabledClass","tagName","lockClass","onPrevClick","onNextClick","initButton","destroyButton","hideOnClick","hiddenClass","navigationDisabledClass","pagination","clickable","isHidden","toggle","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","s","flat","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","subElIndex","fractionEl","textContent","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","render","paginationHTML","numberOfBullets","dragStartPos","dragSize","trackSize","divider","dragTimeout","scrollbar","dragEl","newSize","newPos","hide","opacity","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","snapOnRelease","activeListener","passiveListener","eventMethod","swiperEl","dragClass","draggable","scrollbarDisabledClass","parallax","elementsSelector","setTransform","p","rotate","currentOpacity","elements","_swiper","parallaxEl","parallaxDuration","zoom","limitToOriginalSize","maxRatio","containerClass","zoomedSlideClass","fakeGestureTouched","fakeGestureMoved","currentScale","isScaling","evCache","gesture","originX","originY","slideWidth","slideHeight","imageWrapEl","image","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","allowTouchMoveTimeout","getDistanceBetweenTouches","x1","y1","x2","y2","getMaxRatio","naturalWidth","imageMaxRatio","eventWithinSlide","onGestureStart","scaleStart","getScaleOrigin","onGestureChange","pointerIndex","findIndex","cachedEv","scaleMove","onGestureEnd","eventWithinZoomContainer","scaledWidth","scaledHeight","scaleRatio","onTransitionEnd","zoomIn","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","forceZoomRatio","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","set","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","in","out","LinearSpline","binarySearch","maxIndex","minIndex","guess","array","i1","i3","interpolate","removeSpline","spline","inverse","by","controlElement","onControllerSwiper","_t","controlled","controlledTranslate","setControlledTranslate","getInterpolateFunction","isFinite","setControlledTransition","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","clicked","preventFocusHandler","focusTargetSlideEl","liveRegion","visibilityChangedTimestamp","notify","message","notification","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","disableEl","enableEl","onEnterOrSpaceKey","click","hasPagination","hasClickablePagination","initNavEl","wrapperId","controls","addElControls","handlePointerDown","handlePointerUp","onVisibilityChange","handleFocus","isActive","isVisible","sourceCapabilities","firesTouchEvents","repeat","round","random","live","addElLive","updateNavigation","updatePagination","root","keepQuery","paths","slugify","getPathValues","urlOverride","URL","pathArray","part","setHistory","currentState","state","scrollToSlide","setHistoryPopState","hashNavigation","watchState","slideWithHash","onHashChange","newHash","activeSlideEl","setHash","activeSlideHash","raf","timeLeft","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","pausedByPointerEnter","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","calcTimeLeft","run","delayForce","currentSlideDelay","getSlideDelay","proceed","start","pause","reset","visibilityState","onPointerEnter","onPointerLeave","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","useOffset","currentThumbsIndex","newThumbsIndex","newThumbsSlide","getThumbsElementAndInit","thumbsElement","onThumbsSwiper","watchForThumbsToAppear","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","pop","velocityEvent","distance","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","j","moveDistance","currentSlideSize","slidesNumberEvenToRows","slidesPerRow","numFullColumns","getSpaceBetween","swiperSlideGridSet","newSlideOrderIndex","row","groupIndex","slideIndexInGroup","columnsInGroup","order","fadeEffect","crossFade","tx","ty","slideOpacity","cubeEffect","shadow","shadowOffset","shadowScale","createSlideShadows","shadowBefore","shadowAfter","cubeShadowEl","wrapperRotate","slideAngle","tz","transformOrigin","shadowAngle","sin","scale1","scale2","zFactor","flipEffect","limitRotation","rotateY","rotateX","zIndex","coverflowEffect","stretch","depth","modifier","center","centerOffset","offsetMultiplier","translateZ","slideTransform","shadowBeforeEl","shadowAfterEl","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","r","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","cardsEffect","perSlideRotate","perSlideOffset","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY","rsCarousel","carousels","carousel","swiperOptions","dataset"],"sourceRoot":""}