{"version":3,"file":"/js/app.js","mappings":"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","sources":["webpack:///./resources/js/components/accordion.js","webpack:///./node_modules/jquery-nice-select/js/jquery.nice-select.min.js","webpack:///./node_modules/smooth-scroll/dist/smooth-scroll.polyfills.min.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///./node_modules/iconify-icon/dist/iconify-icon.mjs","webpack:///./node_modules/swiper/shared/ssr-window.esm.mjs","webpack:///./node_modules/swiper/shared/utils.mjs","webpack:///./node_modules/swiper/shared/swiper-core.mjs","webpack:///./node_modules/swiper/shared/create-element-if-not-defined.mjs","webpack:///./node_modules/swiper/shared/classes-to-selector.mjs","webpack:///./node_modules/swiper/modules/manipulation.mjs","webpack:///./node_modules/swiper/shared/effect-init.mjs","webpack:///./node_modules/swiper/shared/effect-target.mjs","webpack:///./node_modules/swiper/shared/effect-virtual-transition-end.mjs","webpack:///./node_modules/swiper/shared/create-shadow.mjs","webpack:///./node_modules/swiper/swiper-bundle.mjs","webpack:///./node_modules/swiper/modules/virtual.mjs","webpack:///./node_modules/swiper/modules/keyboard.mjs","webpack:///./node_modules/swiper/modules/mousewheel.mjs","webpack:///./node_modules/swiper/modules/navigation.mjs","webpack:///./node_modules/swiper/modules/pagination.mjs","webpack:///./node_modules/swiper/modules/scrollbar.mjs","webpack:///./node_modules/swiper/modules/parallax.mjs","webpack:///./node_modules/swiper/modules/zoom.mjs","webpack:///./node_modules/swiper/modules/controller.mjs","webpack:///./node_modules/swiper/modules/a11y.mjs","webpack:///./node_modules/swiper/modules/history.mjs","webpack:///./node_modules/swiper/modules/hash-navigation.mjs","webpack:///./node_modules/swiper/modules/autoplay.mjs","webpack:///./node_modules/swiper/modules/thumbs.mjs","webpack:///./node_modules/swiper/modules/free-mode.mjs","webpack:///./node_modules/swiper/modules/grid.mjs","webpack:///./node_modules/swiper/modules/effect-fade.mjs","webpack:///./node_modules/swiper/modules/effect-cube.mjs","webpack:///./node_modules/swiper/modules/effect-flip.mjs","webpack:///./node_modules/swiper/modules/effect-coverflow.mjs","webpack:///./node_modules/swiper/modules/effect-creative.mjs","webpack:///./node_modules/swiper/modules/effect-cards.mjs","webpack:///./resources/js/components/scroll.js","webpack:///./resources/js/app.js"],"sourcesContent":["const accordionItems = document.querySelectorAll('.accordion-item');\r\n\r\naccordionItems.forEach(item => {\r\n const button = item.querySelector('.accordion-button');\r\n const content = accordionContent(item);\r\n\r\n button.addEventListener(\"click\", (e) => {\r\n e.preventDefault();\r\n\r\n const itemActive = item.classList.contains(\"active\");\r\n\r\n accordionItems.forEach(otherItem => {\r\n const otherContent = accordionContent(otherItem);\r\n\r\n otherContent.style.maxHeight = null;\r\n otherItem.classList.remove(\"active\");\r\n });\r\n\r\n if (!itemActive) {\r\n content.style.maxHeight = content.scrollHeight + 'px';\r\n item.classList.add(\"active\");\r\n }\r\n });\r\n});\r\n\r\nfunction accordionContent(item) {\r\n return item.querySelector('.accordion-content')\r\n}\r\n","/* jQuery Nice Select - v1.0\n https://github.com/hernansartorio/jquery-nice-select\n Made by Hernán Sartorio */\n!function(e){e.fn.niceSelect=function(t){function s(t){t.after(e(\"
\").addClass(\"nice-select\").addClass(t.attr(\"class\")||\"\").addClass(t.attr(\"disabled\")?\"disabled\":\"\").attr(\"tabindex\",t.attr(\"disabled\")?null:\"0\").html(''));var s=t.next(),n=t.find(\"option\"),i=t.find(\"option:selected\");s.find(\".current\").html(i.data(\"display\")||i.text()),n.each(function(t){var n=e(this),i=n.data(\"display\");s.find(\"ul\").append(e(\"
  • \").attr(\"data-value\",n.val()).attr(\"data-display\",i||null).addClass(\"option\"+(n.is(\":selected\")?\" selected\":\"\")+(n.is(\":disabled\")?\" disabled\":\"\")).html(n.text()))})}if(\"string\"==typeof t)return\"update\"==t?this.each(function(){var t=e(this),n=e(this).next(\".nice-select\"),i=n.hasClass(\"open\");n.length&&(n.remove(),s(t),i&&t.next().trigger(\"click\"))}):\"destroy\"==t?(this.each(function(){var t=e(this),s=e(this).next(\".nice-select\");s.length&&(s.remove(),t.css(\"display\",\"\"))}),0==e(\".nice-select\").length&&e(document).off(\".nice_select\")):console.log('Method \"'+t+'\" does not exist.'),this;this.hide(),this.each(function(){var t=e(this);t.next().hasClass(\"nice-select\")||s(t)}),e(document).off(\".nice_select\"),e(document).on(\"click.nice_select\",\".nice-select\",function(t){var s=e(this);e(\".nice-select\").not(s).removeClass(\"open\"),s.toggleClass(\"open\"),s.hasClass(\"open\")?(s.find(\".option\"),s.find(\".focus\").removeClass(\"focus\"),s.find(\".selected\").addClass(\"focus\")):s.focus()}),e(document).on(\"click.nice_select\",function(t){0===e(t.target).closest(\".nice-select\").length&&e(\".nice-select\").removeClass(\"open\").find(\".option\")}),e(document).on(\"click.nice_select\",\".nice-select .option:not(.disabled)\",function(t){var s=e(this),n=s.closest(\".nice-select\");n.find(\".selected\").removeClass(\"selected\"),s.addClass(\"selected\");var i=s.data(\"display\")||s.text();n.find(\".current\").text(i),n.prev(\"select\").val(s.data(\"value\")).trigger(\"change\")}),e(document).on(\"keydown.nice_select\",\".nice-select\",function(t){var s=e(this),n=e(s.find(\".focus\")||s.find(\".list .option.selected\"));if(32==t.keyCode||13==t.keyCode)return s.hasClass(\"open\")?n.trigger(\"click\"):s.trigger(\"click\"),!1;if(40==t.keyCode){if(s.hasClass(\"open\")){var i=n.nextAll(\".option:not(.disabled)\").first();i.length>0&&(s.find(\".focus\").removeClass(\"focus\"),i.addClass(\"focus\"))}else s.trigger(\"click\");return!1}if(38==t.keyCode){if(s.hasClass(\"open\")){var l=n.prevAll(\".option:not(.disabled)\").first();l.length>0&&(s.find(\".focus\").removeClass(\"focus\"),l.addClass(\"focus\"))}else s.trigger(\"click\");return!1}if(27==t.keyCode)s.hasClass(\"open\")&&s.trigger(\"click\");else if(9==t.keyCode&&s.hasClass(\"open\"))return!1});var n=document.createElement(\"a\").style;return n.cssText=\"pointer-events:auto\",\"auto\"!==n.pointerEvents&&e(\"html\").addClass(\"no-csspointerevents\"),this}}(jQuery);","/*! smooth-scroll v16.1.3 | (c) 2020 Chris Ferdinandi | MIT License | http://github.com/cferdinandi/smooth-scroll */\nwindow.Element&&!Element.prototype.closest&&(Element.prototype.closest=function(e){var t,n=(this.document||this.ownerDocument).querySelectorAll(e),o=this;do{for(t=n.length;0<=--t&&n.item(t)!==o;);}while(t<0&&(o=o.parentElement));return o}),(function(){if(\"function\"==typeof window.CustomEvent)return;function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=document.createEvent(\"CustomEvent\");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,window.CustomEvent=e})(),(function(){for(var r=0,e=[\"ms\",\"moz\",\"webkit\",\"o\"],t=0;to.durationMax?o.durationMax:o.durationMin&&u=v)return C.cancelScroll(!0),x(a,t,c),H(\"scrollStop\",i,a,r),!(O=l=null)})(d,g)||(O=M.requestAnimationFrame(E),l=e)};0===M.pageYOffset&&M.scrollTo(0,0),f=a,h=i,c||history.pushState&&h.updateURL&&history.pushState({smoothScroll:JSON.stringify(h),anchor:f.id},document.title,f===document.documentElement?\"#top\":\"#\"+f.id),\"matchMedia\"in M&&M.matchMedia(\"(prefers-reduced-motion)\").matches?x(a,Math.floor(g),!1):(H(\"scrollStart\",i,a,r),C.cancelScroll(!0),M.requestAnimationFrame(E))}};var t=function(e){if(!e.defaultPrevented&&!(0!==e.button||e.metaKey||e.ctrlKey||e.shiftKey)&&\"closest\"in e.target&&(a=e.target.closest(o))&&\"a\"===a.tagName.toLowerCase()&&!e.target.closest(b.ignore)&&a.hostname===M.location.hostname&&a.pathname===M.location.pathname&&/#/.test(a.href)){var t,n;try{t=r(decodeURIComponent(a.hash))}catch(e){t=r(a.hash)}if(\"#\"===t){if(!b.topOnEmptyHash)return;n=document.documentElement}else n=document.querySelector(t);(n=n||\"#top\"!==t?n:document.documentElement)&&(e.preventDefault(),(function(e){if(history.replaceState&&e.updateURL&&!history.state){var t=M.location.hash;t=t||\"\",history.replaceState({smoothScroll:JSON.stringify(e),anchor:t||M.pageYOffset},document.title,t||M.location.href)}})(b),C.animateScroll(n,a))}},n=function(e){if(null!==history.state&&history.state.smoothScroll&&history.state.smoothScroll===JSON.stringify(b)){var t=history.state.anchor;\"string\"==typeof t&&t&&!(t=document.querySelector(r(history.state.anchor)))||C.animateScroll(t,null,{updateURL:!1})}};C.destroy=function(){b&&(document.removeEventListener(\"click\",t,!1),M.removeEventListener(\"popstate\",n,!1),C.cancelScroll(),O=A=a=b=null)};return (function(){if(!(\"querySelector\"in document&&\"addEventListener\"in M&&\"requestAnimationFrame\"in M&&\"closest\"in M.Element.prototype))throw\"Smooth Scroll: This browser does not support the required JavaScript methods and browser APIs.\";C.destroy(),b=I(q,e||{}),A=b.header?document.querySelector(b.header):null,document.addEventListener(\"click\",t,!1),b.updateURL&&b.popstate&&M.addEventListener(\"popstate\",n,!1)})(),C}}));","// 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].call(module.exports, 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 = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (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__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","/**\n* (c) Iconify\n*\n* For the full copyright and license information, please view the license.txt\n* files at https://github.com/iconify/iconify\n*\n* Licensed under MIT.\n*\n* @license MIT\n* @version 2.1.0\n*/\nconst defaultIconDimensions = Object.freeze(\n {\n left: 0,\n top: 0,\n width: 16,\n height: 16\n }\n);\nconst defaultIconTransformations = Object.freeze({\n rotate: 0,\n vFlip: false,\n hFlip: false\n});\nconst defaultIconProps = Object.freeze({\n ...defaultIconDimensions,\n ...defaultIconTransformations\n});\nconst defaultExtendedIconProps = Object.freeze({\n ...defaultIconProps,\n body: \"\",\n hidden: false\n});\n\nconst defaultIconSizeCustomisations = Object.freeze({\n width: null,\n height: null\n});\nconst defaultIconCustomisations = Object.freeze({\n // Dimensions\n ...defaultIconSizeCustomisations,\n // Transformations\n ...defaultIconTransformations\n});\n\nfunction rotateFromString(value, defaultValue = 0) {\n const units = value.replace(/^-?[0-9.]*/, \"\");\n function cleanup(value2) {\n while (value2 < 0) {\n value2 += 4;\n }\n return value2 % 4;\n }\n if (units === \"\") {\n const num = parseInt(value);\n return isNaN(num) ? 0 : cleanup(num);\n } else if (units !== value) {\n let split = 0;\n switch (units) {\n case \"%\":\n split = 25;\n break;\n case \"deg\":\n split = 90;\n }\n if (split) {\n let num = parseFloat(value.slice(0, value.length - units.length));\n if (isNaN(num)) {\n return 0;\n }\n num = num / split;\n return num % 1 === 0 ? cleanup(num) : 0;\n }\n }\n return defaultValue;\n}\n\nconst separator = /[\\s,]+/;\nfunction flipFromString(custom, flip) {\n flip.split(separator).forEach((str) => {\n const value = str.trim();\n switch (value) {\n case \"horizontal\":\n custom.hFlip = true;\n break;\n case \"vertical\":\n custom.vFlip = true;\n break;\n }\n });\n}\n\nconst defaultCustomisations = {\n ...defaultIconCustomisations,\n preserveAspectRatio: '',\n};\n/**\n * Get customisations\n */\nfunction getCustomisations(node) {\n const customisations = {\n ...defaultCustomisations,\n };\n const attr = (key, def) => node.getAttribute(key) || def;\n // Dimensions\n customisations.width = attr('width', null);\n customisations.height = attr('height', null);\n // Rotation\n customisations.rotate = rotateFromString(attr('rotate', ''));\n // Flip\n flipFromString(customisations, attr('flip', ''));\n // SVG attributes\n customisations.preserveAspectRatio = attr('preserveAspectRatio', attr('preserveaspectratio', ''));\n return customisations;\n}\n/**\n * Check if customisations have been updated\n */\nfunction haveCustomisationsChanged(value1, value2) {\n for (const key in defaultCustomisations) {\n if (value1[key] !== value2[key]) {\n return true;\n }\n }\n return false;\n}\n\nconst matchIconName = /^[a-z0-9]+(-[a-z0-9]+)*$/;\nconst stringToIcon = (value, validate, allowSimpleName, provider = \"\") => {\n const colonSeparated = value.split(\":\");\n if (value.slice(0, 1) === \"@\") {\n if (colonSeparated.length < 2 || colonSeparated.length > 3) {\n return null;\n }\n provider = colonSeparated.shift().slice(1);\n }\n if (colonSeparated.length > 3 || !colonSeparated.length) {\n return null;\n }\n if (colonSeparated.length > 1) {\n const name2 = colonSeparated.pop();\n const prefix = colonSeparated.pop();\n const result = {\n // Allow provider without '@': \"provider:prefix:name\"\n provider: colonSeparated.length > 0 ? colonSeparated[0] : provider,\n prefix,\n name: name2\n };\n return validate && !validateIconName(result) ? null : result;\n }\n const name = colonSeparated[0];\n const dashSeparated = name.split(\"-\");\n if (dashSeparated.length > 1) {\n const result = {\n provider,\n prefix: dashSeparated.shift(),\n name: dashSeparated.join(\"-\")\n };\n return validate && !validateIconName(result) ? null : result;\n }\n if (allowSimpleName && provider === \"\") {\n const result = {\n provider,\n prefix: \"\",\n name\n };\n return validate && !validateIconName(result, allowSimpleName) ? null : result;\n }\n return null;\n};\nconst validateIconName = (icon, allowSimpleName) => {\n if (!icon) {\n return false;\n }\n return !!((icon.provider === \"\" || icon.provider.match(matchIconName)) && (allowSimpleName && icon.prefix === \"\" || icon.prefix.match(matchIconName)) && icon.name.match(matchIconName));\n};\n\nfunction mergeIconTransformations(obj1, obj2) {\n const result = {};\n if (!obj1.hFlip !== !obj2.hFlip) {\n result.hFlip = true;\n }\n if (!obj1.vFlip !== !obj2.vFlip) {\n result.vFlip = true;\n }\n const rotate = ((obj1.rotate || 0) + (obj2.rotate || 0)) % 4;\n if (rotate) {\n result.rotate = rotate;\n }\n return result;\n}\n\nfunction mergeIconData(parent, child) {\n const result = mergeIconTransformations(parent, child);\n for (const key in defaultExtendedIconProps) {\n if (key in defaultIconTransformations) {\n if (key in parent && !(key in result)) {\n result[key] = defaultIconTransformations[key];\n }\n } else if (key in child) {\n result[key] = child[key];\n } else if (key in parent) {\n result[key] = parent[key];\n }\n }\n return result;\n}\n\nfunction getIconsTree(data, names) {\n const icons = data.icons;\n const aliases = data.aliases || /* @__PURE__ */ Object.create(null);\n const resolved = /* @__PURE__ */ Object.create(null);\n function resolve(name) {\n if (icons[name]) {\n return resolved[name] = [];\n }\n if (!(name in resolved)) {\n resolved[name] = null;\n const parent = aliases[name] && aliases[name].parent;\n const value = parent && resolve(parent);\n if (value) {\n resolved[name] = [parent].concat(value);\n }\n }\n return resolved[name];\n }\n (names || Object.keys(icons).concat(Object.keys(aliases))).forEach(resolve);\n return resolved;\n}\n\nfunction internalGetIconData(data, name, tree) {\n const icons = data.icons;\n const aliases = data.aliases || /* @__PURE__ */ Object.create(null);\n let currentProps = {};\n function parse(name2) {\n currentProps = mergeIconData(\n icons[name2] || aliases[name2],\n currentProps\n );\n }\n parse(name);\n tree.forEach(parse);\n return mergeIconData(data, currentProps);\n}\n\nfunction parseIconSet(data, callback) {\n const names = [];\n if (typeof data !== \"object\" || typeof data.icons !== \"object\") {\n return names;\n }\n if (data.not_found instanceof Array) {\n data.not_found.forEach((name) => {\n callback(name, null);\n names.push(name);\n });\n }\n const tree = getIconsTree(data);\n for (const name in tree) {\n const item = tree[name];\n if (item) {\n callback(name, internalGetIconData(data, name, item));\n names.push(name);\n }\n }\n return names;\n}\n\nconst optionalPropertyDefaults = {\n provider: \"\",\n aliases: {},\n not_found: {},\n ...defaultIconDimensions\n};\nfunction checkOptionalProps(item, defaults) {\n for (const prop in defaults) {\n if (prop in item && typeof item[prop] !== typeof defaults[prop]) {\n return false;\n }\n }\n return true;\n}\nfunction quicklyValidateIconSet(obj) {\n if (typeof obj !== \"object\" || obj === null) {\n return null;\n }\n const data = obj;\n if (typeof data.prefix !== \"string\" || !obj.icons || typeof obj.icons !== \"object\") {\n return null;\n }\n if (!checkOptionalProps(obj, optionalPropertyDefaults)) {\n return null;\n }\n const icons = data.icons;\n for (const name in icons) {\n const icon = icons[name];\n if (!name.match(matchIconName) || typeof icon.body !== \"string\" || !checkOptionalProps(\n icon,\n defaultExtendedIconProps\n )) {\n return null;\n }\n }\n const aliases = data.aliases || /* @__PURE__ */ Object.create(null);\n for (const name in aliases) {\n const icon = aliases[name];\n const parent = icon.parent;\n if (!name.match(matchIconName) || typeof parent !== \"string\" || !icons[parent] && !aliases[parent] || !checkOptionalProps(\n icon,\n defaultExtendedIconProps\n )) {\n return null;\n }\n }\n return data;\n}\n\nconst dataStorage = /* @__PURE__ */ Object.create(null);\nfunction newStorage(provider, prefix) {\n return {\n provider,\n prefix,\n icons: /* @__PURE__ */ Object.create(null),\n missing: /* @__PURE__ */ new Set()\n };\n}\nfunction getStorage(provider, prefix) {\n const providerStorage = dataStorage[provider] || (dataStorage[provider] = /* @__PURE__ */ Object.create(null));\n return providerStorage[prefix] || (providerStorage[prefix] = newStorage(provider, prefix));\n}\nfunction addIconSet(storage, data) {\n if (!quicklyValidateIconSet(data)) {\n return [];\n }\n return parseIconSet(data, (name, icon) => {\n if (icon) {\n storage.icons[name] = icon;\n } else {\n storage.missing.add(name);\n }\n });\n}\nfunction addIconToStorage(storage, name, icon) {\n try {\n if (typeof icon.body === \"string\") {\n storage.icons[name] = { ...icon };\n return true;\n }\n } catch (err) {\n }\n return false;\n}\nfunction listIcons$1(provider, prefix) {\n let allIcons = [];\n const providers = typeof provider === \"string\" ? [provider] : Object.keys(dataStorage);\n providers.forEach((provider2) => {\n const prefixes = typeof provider2 === \"string\" && typeof prefix === \"string\" ? [prefix] : Object.keys(dataStorage[provider2] || {});\n prefixes.forEach((prefix2) => {\n const storage = getStorage(provider2, prefix2);\n allIcons = allIcons.concat(\n Object.keys(storage.icons).map(\n (name) => (provider2 !== \"\" ? \"@\" + provider2 + \":\" : \"\") + prefix2 + \":\" + name\n )\n );\n });\n });\n return allIcons;\n}\n\nlet simpleNames = false;\nfunction allowSimpleNames(allow) {\n if (typeof allow === \"boolean\") {\n simpleNames = allow;\n }\n return simpleNames;\n}\nfunction getIconData(name) {\n const icon = typeof name === \"string\" ? stringToIcon(name, true, simpleNames) : name;\n if (icon) {\n const storage = getStorage(icon.provider, icon.prefix);\n const iconName = icon.name;\n return storage.icons[iconName] || (storage.missing.has(iconName) ? null : void 0);\n }\n}\nfunction addIcon$1(name, data) {\n const icon = stringToIcon(name, true, simpleNames);\n if (!icon) {\n return false;\n }\n const storage = getStorage(icon.provider, icon.prefix);\n return addIconToStorage(storage, icon.name, data);\n}\nfunction addCollection$1(data, provider) {\n if (typeof data !== \"object\") {\n return false;\n }\n if (typeof provider !== \"string\") {\n provider = data.provider || \"\";\n }\n if (simpleNames && !provider && !data.prefix) {\n let added = false;\n if (quicklyValidateIconSet(data)) {\n data.prefix = \"\";\n parseIconSet(data, (name, icon) => {\n if (icon && addIcon$1(name, icon)) {\n added = true;\n }\n });\n }\n return added;\n }\n const prefix = data.prefix;\n if (!validateIconName({\n provider,\n prefix,\n name: \"a\"\n })) {\n return false;\n }\n const storage = getStorage(provider, prefix);\n return !!addIconSet(storage, data);\n}\nfunction iconLoaded$1(name) {\n return !!getIconData(name);\n}\nfunction getIcon$1(name) {\n const result = getIconData(name);\n return result ? {\n ...defaultIconProps,\n ...result\n } : null;\n}\n\nfunction sortIcons(icons) {\n const result = {\n loaded: [],\n missing: [],\n pending: []\n };\n const storage = /* @__PURE__ */ Object.create(null);\n icons.sort((a, b) => {\n if (a.provider !== b.provider) {\n return a.provider.localeCompare(b.provider);\n }\n if (a.prefix !== b.prefix) {\n return a.prefix.localeCompare(b.prefix);\n }\n return a.name.localeCompare(b.name);\n });\n let lastIcon = {\n provider: \"\",\n prefix: \"\",\n name: \"\"\n };\n icons.forEach((icon) => {\n if (lastIcon.name === icon.name && lastIcon.prefix === icon.prefix && lastIcon.provider === icon.provider) {\n return;\n }\n lastIcon = icon;\n const provider = icon.provider;\n const prefix = icon.prefix;\n const name = icon.name;\n const providerStorage = storage[provider] || (storage[provider] = /* @__PURE__ */ Object.create(null));\n const localStorage = providerStorage[prefix] || (providerStorage[prefix] = getStorage(provider, prefix));\n let list;\n if (name in localStorage.icons) {\n list = result.loaded;\n } else if (prefix === \"\" || localStorage.missing.has(name)) {\n list = result.missing;\n } else {\n list = result.pending;\n }\n const item = {\n provider,\n prefix,\n name\n };\n list.push(item);\n });\n return result;\n}\n\nfunction removeCallback(storages, id) {\n storages.forEach((storage) => {\n const items = storage.loaderCallbacks;\n if (items) {\n storage.loaderCallbacks = items.filter((row) => row.id !== id);\n }\n });\n}\nfunction updateCallbacks(storage) {\n if (!storage.pendingCallbacksFlag) {\n storage.pendingCallbacksFlag = true;\n setTimeout(() => {\n storage.pendingCallbacksFlag = false;\n const items = storage.loaderCallbacks ? storage.loaderCallbacks.slice(0) : [];\n if (!items.length) {\n return;\n }\n let hasPending = false;\n const provider = storage.provider;\n const prefix = storage.prefix;\n items.forEach((item) => {\n const icons = item.icons;\n const oldLength = icons.pending.length;\n icons.pending = icons.pending.filter((icon) => {\n if (icon.prefix !== prefix) {\n return true;\n }\n const name = icon.name;\n if (storage.icons[name]) {\n icons.loaded.push({\n provider,\n prefix,\n name\n });\n } else if (storage.missing.has(name)) {\n icons.missing.push({\n provider,\n prefix,\n name\n });\n } else {\n hasPending = true;\n return true;\n }\n return false;\n });\n if (icons.pending.length !== oldLength) {\n if (!hasPending) {\n removeCallback([storage], item.id);\n }\n item.callback(\n icons.loaded.slice(0),\n icons.missing.slice(0),\n icons.pending.slice(0),\n item.abort\n );\n }\n });\n });\n }\n}\nlet idCounter = 0;\nfunction storeCallback(callback, icons, pendingSources) {\n const id = idCounter++;\n const abort = removeCallback.bind(null, pendingSources, id);\n if (!icons.pending.length) {\n return abort;\n }\n const item = {\n id,\n icons,\n callback,\n abort\n };\n pendingSources.forEach((storage) => {\n (storage.loaderCallbacks || (storage.loaderCallbacks = [])).push(item);\n });\n return abort;\n}\n\nconst storage = /* @__PURE__ */ Object.create(null);\nfunction setAPIModule(provider, item) {\n storage[provider] = item;\n}\nfunction getAPIModule(provider) {\n return storage[provider] || storage[\"\"];\n}\n\nfunction listToIcons(list, validate = true, simpleNames = false) {\n const result = [];\n list.forEach((item) => {\n const icon = typeof item === \"string\" ? stringToIcon(item, validate, simpleNames) : item;\n if (icon) {\n result.push(icon);\n }\n });\n return result;\n}\n\n// src/config.ts\nvar defaultConfig = {\n resources: [],\n index: 0,\n timeout: 2e3,\n rotate: 750,\n random: false,\n dataAfterTimeout: false\n};\n\n// src/query.ts\nfunction sendQuery(config, payload, query, done) {\n const resourcesCount = config.resources.length;\n const startIndex = config.random ? Math.floor(Math.random() * resourcesCount) : config.index;\n let resources;\n if (config.random) {\n let list = config.resources.slice(0);\n resources = [];\n while (list.length > 1) {\n const nextIndex = Math.floor(Math.random() * list.length);\n resources.push(list[nextIndex]);\n list = list.slice(0, nextIndex).concat(list.slice(nextIndex + 1));\n }\n resources = resources.concat(list);\n } else {\n resources = config.resources.slice(startIndex).concat(config.resources.slice(0, startIndex));\n }\n const startTime = Date.now();\n let status = \"pending\";\n let queriesSent = 0;\n let lastError;\n let timer = null;\n let queue = [];\n let doneCallbacks = [];\n if (typeof done === \"function\") {\n doneCallbacks.push(done);\n }\n function resetTimer() {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n }\n function abort() {\n if (status === \"pending\") {\n status = \"aborted\";\n }\n resetTimer();\n queue.forEach((item) => {\n if (item.status === \"pending\") {\n item.status = \"aborted\";\n }\n });\n queue = [];\n }\n function subscribe(callback, overwrite) {\n if (overwrite) {\n doneCallbacks = [];\n }\n if (typeof callback === \"function\") {\n doneCallbacks.push(callback);\n }\n }\n function getQueryStatus() {\n return {\n startTime,\n payload,\n status,\n queriesSent,\n queriesPending: queue.length,\n subscribe,\n abort\n };\n }\n function failQuery() {\n status = \"failed\";\n doneCallbacks.forEach((callback) => {\n callback(void 0, lastError);\n });\n }\n function clearQueue() {\n queue.forEach((item) => {\n if (item.status === \"pending\") {\n item.status = \"aborted\";\n }\n });\n queue = [];\n }\n function moduleResponse(item, response, data) {\n const isError = response !== \"success\";\n queue = queue.filter((queued) => queued !== item);\n switch (status) {\n case \"pending\":\n break;\n case \"failed\":\n if (isError || !config.dataAfterTimeout) {\n return;\n }\n break;\n default:\n return;\n }\n if (response === \"abort\") {\n lastError = data;\n failQuery();\n return;\n }\n if (isError) {\n lastError = data;\n if (!queue.length) {\n if (!resources.length) {\n failQuery();\n } else {\n execNext();\n }\n }\n return;\n }\n resetTimer();\n clearQueue();\n if (!config.random) {\n const index = config.resources.indexOf(item.resource);\n if (index !== -1 && index !== config.index) {\n config.index = index;\n }\n }\n status = \"completed\";\n doneCallbacks.forEach((callback) => {\n callback(data);\n });\n }\n function execNext() {\n if (status !== \"pending\") {\n return;\n }\n resetTimer();\n const resource = resources.shift();\n if (resource === void 0) {\n if (queue.length) {\n timer = setTimeout(() => {\n resetTimer();\n if (status === \"pending\") {\n clearQueue();\n failQuery();\n }\n }, config.timeout);\n return;\n }\n failQuery();\n return;\n }\n const item = {\n status: \"pending\",\n resource,\n callback: (status2, data) => {\n moduleResponse(item, status2, data);\n }\n };\n queue.push(item);\n queriesSent++;\n timer = setTimeout(execNext, config.rotate);\n query(resource, payload, item.callback);\n }\n setTimeout(execNext);\n return getQueryStatus;\n}\n\n// src/index.ts\nfunction initRedundancy(cfg) {\n const config = {\n ...defaultConfig,\n ...cfg\n };\n let queries = [];\n function cleanup() {\n queries = queries.filter((item) => item().status === \"pending\");\n }\n function query(payload, queryCallback, doneCallback) {\n const query2 = sendQuery(\n config,\n payload,\n queryCallback,\n (data, error) => {\n cleanup();\n if (doneCallback) {\n doneCallback(data, error);\n }\n }\n );\n queries.push(query2);\n return query2;\n }\n function find(callback) {\n return queries.find((value) => {\n return callback(value);\n }) || null;\n }\n const instance = {\n query,\n find,\n setIndex: (index) => {\n config.index = index;\n },\n getIndex: () => config.index,\n cleanup\n };\n return instance;\n}\n\nfunction createAPIConfig(source) {\n let resources;\n if (typeof source.resources === \"string\") {\n resources = [source.resources];\n } else {\n resources = source.resources;\n if (!(resources instanceof Array) || !resources.length) {\n return null;\n }\n }\n const result = {\n // API hosts\n resources,\n // Root path\n path: source.path || \"/\",\n // URL length limit\n maxURL: source.maxURL || 500,\n // Timeout before next host is used.\n rotate: source.rotate || 750,\n // Timeout before failing query.\n timeout: source.timeout || 5e3,\n // Randomise default API end point.\n random: source.random === true,\n // Start index\n index: source.index || 0,\n // Receive data after time out (used if time out kicks in first, then API module sends data anyway).\n dataAfterTimeout: source.dataAfterTimeout !== false\n };\n return result;\n}\nconst configStorage = /* @__PURE__ */ Object.create(null);\nconst fallBackAPISources = [\n \"https://api.simplesvg.com\",\n \"https://api.unisvg.com\"\n];\nconst fallBackAPI = [];\nwhile (fallBackAPISources.length > 0) {\n if (fallBackAPISources.length === 1) {\n fallBackAPI.push(fallBackAPISources.shift());\n } else {\n if (Math.random() > 0.5) {\n fallBackAPI.push(fallBackAPISources.shift());\n } else {\n fallBackAPI.push(fallBackAPISources.pop());\n }\n }\n}\nconfigStorage[\"\"] = createAPIConfig({\n resources: [\"https://api.iconify.design\"].concat(fallBackAPI)\n});\nfunction addAPIProvider$1(provider, customConfig) {\n const config = createAPIConfig(customConfig);\n if (config === null) {\n return false;\n }\n configStorage[provider] = config;\n return true;\n}\nfunction getAPIConfig(provider) {\n return configStorage[provider];\n}\nfunction listAPIProviders() {\n return Object.keys(configStorage);\n}\n\nfunction emptyCallback$1() {\n}\nconst redundancyCache = /* @__PURE__ */ Object.create(null);\nfunction getRedundancyCache(provider) {\n if (!redundancyCache[provider]) {\n const config = getAPIConfig(provider);\n if (!config) {\n return;\n }\n const redundancy = initRedundancy(config);\n const cachedReundancy = {\n config,\n redundancy\n };\n redundancyCache[provider] = cachedReundancy;\n }\n return redundancyCache[provider];\n}\nfunction sendAPIQuery(target, query, callback) {\n let redundancy;\n let send;\n if (typeof target === \"string\") {\n const api = getAPIModule(target);\n if (!api) {\n callback(void 0, 424);\n return emptyCallback$1;\n }\n send = api.send;\n const cached = getRedundancyCache(target);\n if (cached) {\n redundancy = cached.redundancy;\n }\n } else {\n const config = createAPIConfig(target);\n if (config) {\n redundancy = initRedundancy(config);\n const moduleKey = target.resources ? target.resources[0] : \"\";\n const api = getAPIModule(moduleKey);\n if (api) {\n send = api.send;\n }\n }\n }\n if (!redundancy || !send) {\n callback(void 0, 424);\n return emptyCallback$1;\n }\n return redundancy.query(query, send, callback)().abort;\n}\n\nconst browserCacheVersion = \"iconify2\";\nconst browserCachePrefix = \"iconify\";\nconst browserCacheCountKey = browserCachePrefix + \"-count\";\nconst browserCacheVersionKey = browserCachePrefix + \"-version\";\nconst browserStorageHour = 36e5;\nconst browserStorageCacheExpiration = 168;\nconst browserStorageLimit = 50;\n\nfunction getStoredItem(func, key) {\n try {\n return func.getItem(key);\n } catch (err) {\n }\n}\nfunction setStoredItem(func, key, value) {\n try {\n func.setItem(key, value);\n return true;\n } catch (err) {\n }\n}\nfunction removeStoredItem(func, key) {\n try {\n func.removeItem(key);\n } catch (err) {\n }\n}\n\nfunction setBrowserStorageItemsCount(storage, value) {\n return setStoredItem(storage, browserCacheCountKey, value.toString());\n}\nfunction getBrowserStorageItemsCount(storage) {\n return parseInt(getStoredItem(storage, browserCacheCountKey)) || 0;\n}\n\nconst browserStorageConfig = {\n local: true,\n session: true\n};\nconst browserStorageEmptyItems = {\n local: /* @__PURE__ */ new Set(),\n session: /* @__PURE__ */ new Set()\n};\nlet browserStorageStatus = false;\nfunction setBrowserStorageStatus(status) {\n browserStorageStatus = status;\n}\n\nlet _window = typeof window === \"undefined\" ? {} : window;\nfunction getBrowserStorage(key) {\n const attr = key + \"Storage\";\n try {\n if (_window && _window[attr] && typeof _window[attr].length === \"number\") {\n return _window[attr];\n }\n } catch (err) {\n }\n browserStorageConfig[key] = false;\n}\n\nfunction iterateBrowserStorage(key, callback) {\n const func = getBrowserStorage(key);\n if (!func) {\n return;\n }\n const version = getStoredItem(func, browserCacheVersionKey);\n if (version !== browserCacheVersion) {\n if (version) {\n const total2 = getBrowserStorageItemsCount(func);\n for (let i = 0; i < total2; i++) {\n removeStoredItem(func, browserCachePrefix + i.toString());\n }\n }\n setStoredItem(func, browserCacheVersionKey, browserCacheVersion);\n setBrowserStorageItemsCount(func, 0);\n return;\n }\n const minTime = Math.floor(Date.now() / browserStorageHour) - browserStorageCacheExpiration;\n const parseItem = (index) => {\n const name = browserCachePrefix + index.toString();\n const item = getStoredItem(func, name);\n if (typeof item !== \"string\") {\n return;\n }\n try {\n const data = JSON.parse(item);\n if (typeof data === \"object\" && typeof data.cached === \"number\" && data.cached > minTime && typeof data.provider === \"string\" && typeof data.data === \"object\" && typeof data.data.prefix === \"string\" && // Valid item: run callback\n callback(data, index)) {\n return true;\n }\n } catch (err) {\n }\n removeStoredItem(func, name);\n };\n let total = getBrowserStorageItemsCount(func);\n for (let i = total - 1; i >= 0; i--) {\n if (!parseItem(i)) {\n if (i === total - 1) {\n total--;\n setBrowserStorageItemsCount(func, total);\n } else {\n browserStorageEmptyItems[key].add(i);\n }\n }\n }\n}\n\nfunction initBrowserStorage() {\n if (browserStorageStatus) {\n return;\n }\n setBrowserStorageStatus(true);\n for (const key in browserStorageConfig) {\n iterateBrowserStorage(key, (item) => {\n const iconSet = item.data;\n const provider = item.provider;\n const prefix = iconSet.prefix;\n const storage = getStorage(\n provider,\n prefix\n );\n if (!addIconSet(storage, iconSet).length) {\n return false;\n }\n const lastModified = iconSet.lastModified || -1;\n storage.lastModifiedCached = storage.lastModifiedCached ? Math.min(storage.lastModifiedCached, lastModified) : lastModified;\n return true;\n });\n }\n}\n\nfunction updateLastModified(storage, lastModified) {\n const lastValue = storage.lastModifiedCached;\n if (\n // Matches or newer\n lastValue && lastValue >= lastModified\n ) {\n return lastValue === lastModified;\n }\n storage.lastModifiedCached = lastModified;\n if (lastValue) {\n for (const key in browserStorageConfig) {\n iterateBrowserStorage(key, (item) => {\n const iconSet = item.data;\n return item.provider !== storage.provider || iconSet.prefix !== storage.prefix || iconSet.lastModified === lastModified;\n });\n }\n }\n return true;\n}\nfunction storeInBrowserStorage(storage, data) {\n if (!browserStorageStatus) {\n initBrowserStorage();\n }\n function store(key) {\n let func;\n if (!browserStorageConfig[key] || !(func = getBrowserStorage(key))) {\n return;\n }\n const set = browserStorageEmptyItems[key];\n let index;\n if (set.size) {\n set.delete(index = Array.from(set).shift());\n } else {\n index = getBrowserStorageItemsCount(func);\n if (index >= browserStorageLimit || !setBrowserStorageItemsCount(func, index + 1)) {\n return;\n }\n }\n const item = {\n cached: Math.floor(Date.now() / browserStorageHour),\n provider: storage.provider,\n data\n };\n return setStoredItem(\n func,\n browserCachePrefix + index.toString(),\n JSON.stringify(item)\n );\n }\n if (data.lastModified && !updateLastModified(storage, data.lastModified)) {\n return;\n }\n if (!Object.keys(data.icons).length) {\n return;\n }\n if (data.not_found) {\n data = Object.assign({}, data);\n delete data.not_found;\n }\n if (!store(\"local\")) {\n store(\"session\");\n }\n}\n\nfunction emptyCallback() {\n}\nfunction loadedNewIcons(storage) {\n if (!storage.iconsLoaderFlag) {\n storage.iconsLoaderFlag = true;\n setTimeout(() => {\n storage.iconsLoaderFlag = false;\n updateCallbacks(storage);\n });\n }\n}\nfunction loadNewIcons(storage, icons) {\n if (!storage.iconsToLoad) {\n storage.iconsToLoad = icons;\n } else {\n storage.iconsToLoad = storage.iconsToLoad.concat(icons).sort();\n }\n if (!storage.iconsQueueFlag) {\n storage.iconsQueueFlag = true;\n setTimeout(() => {\n storage.iconsQueueFlag = false;\n const { provider, prefix } = storage;\n const icons2 = storage.iconsToLoad;\n delete storage.iconsToLoad;\n let api;\n if (!icons2 || !(api = getAPIModule(provider))) {\n return;\n }\n const params = api.prepare(provider, prefix, icons2);\n params.forEach((item) => {\n sendAPIQuery(provider, item, (data) => {\n if (typeof data !== \"object\") {\n item.icons.forEach((name) => {\n storage.missing.add(name);\n });\n } else {\n try {\n const parsed = addIconSet(\n storage,\n data\n );\n if (!parsed.length) {\n return;\n }\n const pending = storage.pendingIcons;\n if (pending) {\n parsed.forEach((name) => {\n pending.delete(name);\n });\n }\n storeInBrowserStorage(storage, data);\n } catch (err) {\n console.error(err);\n }\n }\n loadedNewIcons(storage);\n });\n });\n });\n }\n}\nconst loadIcons$1 = (icons, callback) => {\n const cleanedIcons = listToIcons(icons, true, allowSimpleNames());\n const sortedIcons = sortIcons(cleanedIcons);\n if (!sortedIcons.pending.length) {\n let callCallback = true;\n if (callback) {\n setTimeout(() => {\n if (callCallback) {\n callback(\n sortedIcons.loaded,\n sortedIcons.missing,\n sortedIcons.pending,\n emptyCallback\n );\n }\n });\n }\n return () => {\n callCallback = false;\n };\n }\n const newIcons = /* @__PURE__ */ Object.create(null);\n const sources = [];\n let lastProvider, lastPrefix;\n sortedIcons.pending.forEach((icon) => {\n const { provider, prefix } = icon;\n if (prefix === lastPrefix && provider === lastProvider) {\n return;\n }\n lastProvider = provider;\n lastPrefix = prefix;\n sources.push(getStorage(provider, prefix));\n const providerNewIcons = newIcons[provider] || (newIcons[provider] = /* @__PURE__ */ Object.create(null));\n if (!providerNewIcons[prefix]) {\n providerNewIcons[prefix] = [];\n }\n });\n sortedIcons.pending.forEach((icon) => {\n const { provider, prefix, name } = icon;\n const storage = getStorage(provider, prefix);\n const pendingQueue = storage.pendingIcons || (storage.pendingIcons = /* @__PURE__ */ new Set());\n if (!pendingQueue.has(name)) {\n pendingQueue.add(name);\n newIcons[provider][prefix].push(name);\n }\n });\n sources.forEach((storage) => {\n const { provider, prefix } = storage;\n if (newIcons[provider][prefix].length) {\n loadNewIcons(storage, newIcons[provider][prefix]);\n }\n });\n return callback ? storeCallback(callback, sortedIcons, sources) : emptyCallback;\n};\nconst loadIcon$1 = (icon) => {\n return new Promise((fulfill, reject) => {\n const iconObj = typeof icon === \"string\" ? stringToIcon(icon, true) : icon;\n if (!iconObj) {\n reject(icon);\n return;\n }\n loadIcons$1([iconObj || icon], (loaded) => {\n if (loaded.length && iconObj) {\n const data = getIconData(iconObj);\n if (data) {\n fulfill({\n ...defaultIconProps,\n ...data\n });\n return;\n }\n }\n reject(icon);\n });\n });\n};\n\n/**\n * Test icon string\n */\nfunction testIconObject(value) {\n try {\n const obj = typeof value === 'string' ? JSON.parse(value) : value;\n if (typeof obj.body === 'string') {\n return {\n ...obj,\n };\n }\n }\n catch (err) {\n //\n }\n}\n\n/**\n * Parse icon value, load if needed\n */\nfunction parseIconValue(value, onload) {\n // Check if icon name is valid\n const name = typeof value === 'string' ? stringToIcon(value, true, true) : null;\n if (!name) {\n // Test for serialised object\n const data = testIconObject(value);\n return {\n value,\n data,\n };\n }\n // Valid icon name: check if data is available\n const data = getIconData(name);\n // Icon data exists or icon has no prefix. Do not load icon from API if icon has no prefix\n if (data !== void 0 || !name.prefix) {\n return {\n value,\n name,\n data, // could be 'null' -> icon is missing\n };\n }\n // Load icon\n const loading = loadIcons$1([name], () => onload(value, name, getIconData(name)));\n return {\n value,\n name,\n loading,\n };\n}\n\n// Check for Safari\nlet isBuggedSafari = false;\ntry {\n isBuggedSafari = navigator.vendor.indexOf('Apple') === 0;\n}\ncatch (err) {\n //\n}\n/**\n * Get render mode\n */\nfunction getRenderMode(body, mode) {\n switch (mode) {\n // Force mode\n case 'svg':\n case 'bg':\n case 'mask':\n return mode;\n }\n // Check for animation, use 'style' for animated icons, unless browser is Safari\n // (only , which should be ignored or animations start with '\n return 'svg';\n }\n // Use background or mask\n return body.indexOf('currentColor') === -1 ? 'bg' : 'mask';\n}\n\nconst unitsSplit = /(-?[0-9.]*[0-9]+[0-9.]*)/g;\nconst unitsTest = /^-?[0-9.]*[0-9]+[0-9.]*$/g;\nfunction calculateSize$1(size, ratio, precision) {\n if (ratio === 1) {\n return size;\n }\n precision = precision || 100;\n if (typeof size === \"number\") {\n return Math.ceil(size * ratio * precision) / precision;\n }\n if (typeof size !== \"string\") {\n return size;\n }\n const oldParts = size.split(unitsSplit);\n if (oldParts === null || !oldParts.length) {\n return size;\n }\n const newParts = [];\n let code = oldParts.shift();\n let isNumber = unitsTest.test(code);\n while (true) {\n if (isNumber) {\n const num = parseFloat(code);\n if (isNaN(num)) {\n newParts.push(code);\n } else {\n newParts.push(Math.ceil(num * ratio * precision) / precision);\n }\n } else {\n newParts.push(code);\n }\n code = oldParts.shift();\n if (code === void 0) {\n return newParts.join(\"\");\n }\n isNumber = !isNumber;\n }\n}\n\nfunction splitSVGDefs(content, tag = \"defs\") {\n let defs = \"\";\n const index = content.indexOf(\"<\" + tag);\n while (index >= 0) {\n const start = content.indexOf(\">\", index);\n const end = content.indexOf(\"\", end);\n if (endEnd === -1) {\n break;\n }\n defs += content.slice(start + 1, end).trim();\n content = content.slice(0, index).trim() + content.slice(endEnd + 1);\n }\n return {\n defs,\n content\n };\n}\nfunction mergeDefsAndContent(defs, content) {\n return defs ? \"\" + defs + \"\" + content : content;\n}\nfunction wrapSVGContent(body, start, end) {\n const split = splitSVGDefs(body);\n return mergeDefsAndContent(split.defs, start + split.content + end);\n}\n\nconst isUnsetKeyword = (value) => value === \"unset\" || value === \"undefined\" || value === \"none\";\nfunction iconToSVG(icon, customisations) {\n const fullIcon = {\n ...defaultIconProps,\n ...icon\n };\n const fullCustomisations = {\n ...defaultIconCustomisations,\n ...customisations\n };\n const box = {\n left: fullIcon.left,\n top: fullIcon.top,\n width: fullIcon.width,\n height: fullIcon.height\n };\n let body = fullIcon.body;\n [fullIcon, fullCustomisations].forEach((props) => {\n const transformations = [];\n const hFlip = props.hFlip;\n const vFlip = props.vFlip;\n let rotation = props.rotate;\n if (hFlip) {\n if (vFlip) {\n rotation += 2;\n } else {\n transformations.push(\n \"translate(\" + (box.width + box.left).toString() + \" \" + (0 - box.top).toString() + \")\"\n );\n transformations.push(\"scale(-1 1)\");\n box.top = box.left = 0;\n }\n } else if (vFlip) {\n transformations.push(\n \"translate(\" + (0 - box.left).toString() + \" \" + (box.height + box.top).toString() + \")\"\n );\n transformations.push(\"scale(1 -1)\");\n box.top = box.left = 0;\n }\n let tempValue;\n if (rotation < 0) {\n rotation -= Math.floor(rotation / 4) * 4;\n }\n rotation = rotation % 4;\n switch (rotation) {\n case 1:\n tempValue = box.height / 2 + box.top;\n transformations.unshift(\n \"rotate(90 \" + tempValue.toString() + \" \" + tempValue.toString() + \")\"\n );\n break;\n case 2:\n transformations.unshift(\n \"rotate(180 \" + (box.width / 2 + box.left).toString() + \" \" + (box.height / 2 + box.top).toString() + \")\"\n );\n break;\n case 3:\n tempValue = box.width / 2 + box.left;\n transformations.unshift(\n \"rotate(-90 \" + tempValue.toString() + \" \" + tempValue.toString() + \")\"\n );\n break;\n }\n if (rotation % 2 === 1) {\n if (box.left !== box.top) {\n tempValue = box.left;\n box.left = box.top;\n box.top = tempValue;\n }\n if (box.width !== box.height) {\n tempValue = box.width;\n box.width = box.height;\n box.height = tempValue;\n }\n }\n if (transformations.length) {\n body = wrapSVGContent(\n body,\n '',\n \"\"\n );\n }\n });\n const customisationsWidth = fullCustomisations.width;\n const customisationsHeight = fullCustomisations.height;\n const boxWidth = box.width;\n const boxHeight = box.height;\n let width;\n let height;\n if (customisationsWidth === null) {\n height = customisationsHeight === null ? \"1em\" : customisationsHeight === \"auto\" ? boxHeight : customisationsHeight;\n width = calculateSize$1(height, boxWidth / boxHeight);\n } else {\n width = customisationsWidth === \"auto\" ? boxWidth : customisationsWidth;\n height = customisationsHeight === null ? calculateSize$1(width, boxHeight / boxWidth) : customisationsHeight === \"auto\" ? boxHeight : customisationsHeight;\n }\n const attributes = {};\n const setAttr = (prop, value) => {\n if (!isUnsetKeyword(value)) {\n attributes[prop] = value.toString();\n }\n };\n setAttr(\"width\", width);\n setAttr(\"height\", height);\n const viewBox = [box.left, box.top, boxWidth, boxHeight];\n attributes.viewBox = viewBox.join(\" \");\n return {\n attributes,\n viewBox,\n body\n };\n}\n\nfunction iconToHTML$1(body, attributes) {\n let renderAttribsHTML = body.indexOf(\"xlink:\") === -1 ? \"\" : ' xmlns:xlink=\"http://www.w3.org/1999/xlink\"';\n for (const attr in attributes) {\n renderAttribsHTML += \" \" + attr + '=\"' + attributes[attr] + '\"';\n }\n return '\" + body + \"\";\n}\n\nfunction encodeSVGforURL(svg) {\n return svg.replace(/\"/g, \"'\").replace(/%/g, \"%25\").replace(/#/g, \"%23\").replace(//g, \"%3E\").replace(/\\s+/g, \" \");\n}\nfunction svgToData(svg) {\n return \"data:image/svg+xml,\" + encodeSVGforURL(svg);\n}\nfunction svgToURL$1(svg) {\n return 'url(\"' + svgToData(svg) + '\")';\n}\n\nconst detectFetch = () => {\n let callback;\n try {\n callback = fetch;\n if (typeof callback === \"function\") {\n return callback;\n }\n } catch (err) {\n }\n};\nlet fetchModule = detectFetch();\nfunction setFetch(fetch2) {\n fetchModule = fetch2;\n}\nfunction getFetch() {\n return fetchModule;\n}\nfunction calculateMaxLength(provider, prefix) {\n const config = getAPIConfig(provider);\n if (!config) {\n return 0;\n }\n let result;\n if (!config.maxURL) {\n result = 0;\n } else {\n let maxHostLength = 0;\n config.resources.forEach((item) => {\n const host = item;\n maxHostLength = Math.max(maxHostLength, host.length);\n });\n const url = prefix + \".json?icons=\";\n result = config.maxURL - maxHostLength - config.path.length - url.length;\n }\n return result;\n}\nfunction shouldAbort(status) {\n return status === 404;\n}\nconst prepare = (provider, prefix, icons) => {\n const results = [];\n const maxLength = calculateMaxLength(provider, prefix);\n const type = \"icons\";\n let item = {\n type,\n provider,\n prefix,\n icons: []\n };\n let length = 0;\n icons.forEach((name, index) => {\n length += name.length + 1;\n if (length >= maxLength && index > 0) {\n results.push(item);\n item = {\n type,\n provider,\n prefix,\n icons: []\n };\n length = name.length;\n }\n item.icons.push(name);\n });\n results.push(item);\n return results;\n};\nfunction getPath(provider) {\n if (typeof provider === \"string\") {\n const config = getAPIConfig(provider);\n if (config) {\n return config.path;\n }\n }\n return \"/\";\n}\nconst send = (host, params, callback) => {\n if (!fetchModule) {\n callback(\"abort\", 424);\n return;\n }\n let path = getPath(params.provider);\n switch (params.type) {\n case \"icons\": {\n const prefix = params.prefix;\n const icons = params.icons;\n const iconsList = icons.join(\",\");\n const urlParams = new URLSearchParams({\n icons: iconsList\n });\n path += prefix + \".json?\" + urlParams.toString();\n break;\n }\n case \"custom\": {\n const uri = params.uri;\n path += uri.slice(0, 1) === \"/\" ? uri.slice(1) : uri;\n break;\n }\n default:\n callback(\"abort\", 400);\n return;\n }\n let defaultError = 503;\n fetchModule(host + path).then((response) => {\n const status = response.status;\n if (status !== 200) {\n setTimeout(() => {\n callback(shouldAbort(status) ? \"abort\" : \"next\", status);\n });\n return;\n }\n defaultError = 501;\n return response.json();\n }).then((data) => {\n if (typeof data !== \"object\" || data === null) {\n setTimeout(() => {\n if (data === 404) {\n callback(\"abort\", data);\n } else {\n callback(\"next\", defaultError);\n }\n });\n return;\n }\n setTimeout(() => {\n callback(\"success\", data);\n });\n }).catch(() => {\n callback(\"next\", defaultError);\n });\n};\nconst fetchAPIModule = {\n prepare,\n send\n};\n\nfunction toggleBrowserCache(storage, value) {\n switch (storage) {\n case \"local\":\n case \"session\":\n browserStorageConfig[storage] = value;\n break;\n case \"all\":\n for (const key in browserStorageConfig) {\n browserStorageConfig[key] = value;\n }\n break;\n }\n}\n\n/**\n * Attribute to add\n */\nconst nodeAttr = 'data-style';\n/**\n * Custom style to add to each node\n */\nlet customStyle = '';\n/**\n * Set custom style to add to all components\n *\n * Affects only components rendered after function call\n */\nfunction appendCustomStyle(style) {\n customStyle = style;\n}\n/**\n * Add/update style node\n */\nfunction updateStyle(parent, inline) {\n // Get node, create if needed\n let styleNode = Array.from(parent.childNodes).find((node) => node.hasAttribute &&\n node.hasAttribute(nodeAttr));\n if (!styleNode) {\n styleNode = document.createElement('style');\n styleNode.setAttribute(nodeAttr, nodeAttr);\n parent.appendChild(styleNode);\n }\n // Update content\n styleNode.textContent =\n ':host{display:inline-block;vertical-align:' +\n (inline ? '-0.125em' : '0') +\n '}span,svg{display:block}' +\n customStyle;\n}\n\n// Core\n/**\n * Get functions and initialise stuff\n */\nfunction exportFunctions() {\n /**\n * Initialise stuff\n */\n // Set API module\n setAPIModule('', fetchAPIModule);\n // Allow simple icon names\n allowSimpleNames(true);\n let _window;\n try {\n _window = window;\n }\n catch (err) {\n //\n }\n if (_window) {\n // Set cache and load existing cache\n initBrowserStorage();\n // Load icons from global \"IconifyPreload\"\n if (_window.IconifyPreload !== void 0) {\n const preload = _window.IconifyPreload;\n const err = 'Invalid IconifyPreload syntax.';\n if (typeof preload === 'object' && preload !== null) {\n (preload instanceof Array ? preload : [preload]).forEach((item) => {\n try {\n if (\n // Check if item is an object and not null/array\n typeof item !== 'object' ||\n item === null ||\n item instanceof Array ||\n // Check for 'icons' and 'prefix'\n typeof item.icons !== 'object' ||\n typeof item.prefix !== 'string' ||\n // Add icon set\n !addCollection$1(item)) {\n console.error(err);\n }\n }\n catch (e) {\n console.error(err);\n }\n });\n }\n }\n // Set API from global \"IconifyProviders\"\n if (_window.IconifyProviders !== void 0) {\n const providers = _window.IconifyProviders;\n if (typeof providers === 'object' && providers !== null) {\n for (const key in providers) {\n const err = 'IconifyProviders[' + key + '] is invalid.';\n try {\n const value = providers[key];\n if (typeof value !== 'object' ||\n !value ||\n value.resources === void 0) {\n continue;\n }\n if (!addAPIProvider$1(key, value)) {\n console.error(err);\n }\n }\n catch (e) {\n console.error(err);\n }\n }\n }\n }\n }\n const _api = {\n getAPIConfig,\n setAPIModule,\n sendAPIQuery,\n setFetch,\n getFetch,\n listAPIProviders,\n };\n return {\n enableCache: (storage) => toggleBrowserCache(storage, true),\n disableCache: (storage) => toggleBrowserCache(storage, false),\n iconLoaded: iconLoaded$1,\n iconExists: iconLoaded$1, // deprecated, kept to avoid breaking changes\n getIcon: getIcon$1,\n listIcons: listIcons$1,\n addIcon: addIcon$1,\n addCollection: addCollection$1,\n calculateSize: calculateSize$1,\n buildIcon: iconToSVG,\n iconToHTML: iconToHTML$1,\n svgToURL: svgToURL$1,\n loadIcons: loadIcons$1,\n loadIcon: loadIcon$1,\n addAPIProvider: addAPIProvider$1,\n appendCustomStyle,\n _api,\n };\n}\n\n// List of properties to apply\nconst monotoneProps = {\n 'background-color': 'currentColor',\n};\nconst coloredProps = {\n 'background-color': 'transparent',\n};\n// Dynamically add common props to variables above\nconst propsToAdd = {\n image: 'var(--svg)',\n repeat: 'no-repeat',\n size: '100% 100%',\n};\nconst propsToAddTo = {\n '-webkit-mask': monotoneProps,\n 'mask': monotoneProps,\n 'background': coloredProps,\n};\nfor (const prefix in propsToAddTo) {\n const list = propsToAddTo[prefix];\n for (const prop in propsToAdd) {\n list[prefix + '-' + prop] = propsToAdd[prop];\n }\n}\n/**\n * Fix size: add 'px' to numbers\n */\nfunction fixSize(value) {\n return value ? value + (value.match(/^[-0-9.]+$/) ? 'px' : '') : 'inherit';\n}\n/**\n * Render node as \n */\nfunction renderSPAN(data, icon, useMask) {\n const node = document.createElement('span');\n // Body\n let body = data.body;\n if (body.indexOf('';\n }\n // Generate SVG as URL\n const renderAttribs = data.attributes;\n const html = iconToHTML$1(body, {\n ...renderAttribs,\n width: icon.width + '',\n height: icon.height + '',\n });\n const url = svgToURL$1(html);\n // Generate style\n const svgStyle = node.style;\n const styles = {\n '--svg': url,\n 'width': fixSize(renderAttribs.width),\n 'height': fixSize(renderAttribs.height),\n ...(useMask ? monotoneProps : coloredProps),\n };\n // Apply style\n for (const prop in styles) {\n svgStyle.setProperty(prop, styles[prop]);\n }\n return node;\n}\n\nlet policy;\nfunction createPolicy() {\n try {\n policy = window.trustedTypes.createPolicy(\"iconify\", {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n createHTML: (s) => s\n });\n } catch (err) {\n policy = null;\n }\n}\nfunction cleanUpInnerHTML(html) {\n if (policy === void 0) {\n createPolicy();\n }\n return policy ? policy.createHTML(html) : html;\n}\n\n/**\n * Render node as \n */\nfunction renderSVG(data) {\n const node = document.createElement('span');\n // Add style if needed\n const attr = data.attributes;\n let style = '';\n if (!attr.width) {\n style = 'width: inherit;';\n }\n if (!attr.height) {\n style += 'height: inherit;';\n }\n if (style) {\n attr.style = style;\n }\n // Generate SVG\n const html = iconToHTML$1(data.body, attr);\n node.innerHTML = cleanUpInnerHTML(html);\n return node.firstChild;\n}\n\n/**\n * Find icon node\n */\nfunction findIconElement(parent) {\n return Array.from(parent.childNodes).find((node) => {\n const tag = node.tagName &&\n node.tagName.toUpperCase();\n return tag === 'SPAN' || tag === 'SVG';\n });\n}\n/**\n * Render icon\n */\nfunction renderIcon(parent, state) {\n const iconData = state.icon.data;\n const customisations = state.customisations;\n // Render icon\n const renderData = iconToSVG(iconData, customisations);\n if (customisations.preserveAspectRatio) {\n renderData.attributes['preserveAspectRatio'] =\n customisations.preserveAspectRatio;\n }\n const mode = state.renderedMode;\n let node;\n switch (mode) {\n case 'svg':\n node = renderSVG(renderData);\n break;\n default:\n node = renderSPAN(renderData, {\n ...defaultIconProps,\n ...iconData,\n }, mode === 'mask');\n }\n // Set element\n const oldNode = findIconElement(parent);\n if (oldNode) {\n // Replace old element\n if (node.tagName === 'SPAN' && oldNode.tagName === node.tagName) {\n // Swap style instead of whole node\n oldNode.setAttribute('style', node.getAttribute('style'));\n }\n else {\n parent.replaceChild(node, oldNode);\n }\n }\n else {\n // Add new element\n parent.appendChild(node);\n }\n}\n\n/**\n * Set state to PendingState\n */\nfunction setPendingState(icon, inline, lastState) {\n const lastRender = lastState &&\n (lastState.rendered\n ? lastState\n : lastState.lastRender);\n return {\n rendered: false,\n inline,\n icon,\n lastRender,\n };\n}\n\n/**\n * Register 'iconify-icon' component, if it does not exist\n */\nfunction defineIconifyIcon(name = 'iconify-icon') {\n // Check for custom elements registry and HTMLElement\n let customElements;\n let ParentClass;\n try {\n customElements = window.customElements;\n ParentClass = window.HTMLElement;\n }\n catch (err) {\n return;\n }\n // Make sure registry and HTMLElement exist\n if (!customElements || !ParentClass) {\n return;\n }\n // Check for duplicate\n const ConflictingClass = customElements.get(name);\n if (ConflictingClass) {\n return ConflictingClass;\n }\n // All attributes\n const attributes = [\n // Icon\n 'icon',\n // Mode\n 'mode',\n 'inline',\n 'noobserver',\n // Customisations\n 'width',\n 'height',\n 'rotate',\n 'flip',\n ];\n /**\n * Component class\n */\n const IconifyIcon = class extends ParentClass {\n // Root\n _shadowRoot;\n // Initialised\n _initialised = false;\n // Icon state\n _state;\n // Attributes check queued\n _checkQueued = false;\n // Connected\n _connected = false;\n // Observer\n _observer = null;\n _visible = true;\n /**\n * Constructor\n */\n constructor() {\n super();\n // Attach shadow DOM\n const root = (this._shadowRoot = this.attachShadow({\n mode: 'open',\n }));\n // Add style\n const inline = this.hasAttribute('inline');\n updateStyle(root, inline);\n // Create empty state\n this._state = setPendingState({\n value: '',\n }, inline);\n // Queue icon render\n this._queueCheck();\n }\n /**\n * Connected to DOM\n */\n connectedCallback() {\n this._connected = true;\n this.startObserver();\n }\n /**\n * Disconnected from DOM\n */\n disconnectedCallback() {\n this._connected = false;\n this.stopObserver();\n }\n /**\n * Observed attributes\n */\n static get observedAttributes() {\n return attributes.slice(0);\n }\n /**\n * Observed properties that are different from attributes\n *\n * Experimental! Need to test with various frameworks that support it\n */\n /*\n static get properties() {\n return {\n inline: {\n type: Boolean,\n reflect: true,\n },\n // Not listing other attributes because they are strings or combination\n // of string and another type. Cannot have multiple types\n };\n }\n */\n /**\n * Attribute has changed\n */\n attributeChangedCallback(name) {\n switch (name) {\n case 'inline': {\n // Update immediately: not affected by other attributes\n const newInline = this.hasAttribute('inline');\n const state = this._state;\n if (newInline !== state.inline) {\n // Update style if inline mode changed\n state.inline = newInline;\n updateStyle(this._shadowRoot, newInline);\n }\n break;\n }\n case 'noobserver': {\n const value = this.hasAttribute('noobserver');\n if (value) {\n this.startObserver();\n }\n else {\n this.stopObserver();\n }\n break;\n }\n default:\n // Queue check for other attributes\n this._queueCheck();\n }\n }\n /**\n * Get/set icon\n */\n get icon() {\n const value = this.getAttribute('icon');\n if (value && value.slice(0, 1) === '{') {\n try {\n return JSON.parse(value);\n }\n catch (err) {\n //\n }\n }\n return value;\n }\n set icon(value) {\n if (typeof value === 'object') {\n value = JSON.stringify(value);\n }\n this.setAttribute('icon', value);\n }\n /**\n * Get/set inline\n */\n get inline() {\n return this.hasAttribute('inline');\n }\n set inline(value) {\n if (value) {\n this.setAttribute('inline', 'true');\n }\n else {\n this.removeAttribute('inline');\n }\n }\n /**\n * Get/set observer\n */\n get observer() {\n return this.hasAttribute('observer');\n }\n set observer(value) {\n if (value) {\n this.setAttribute('observer', 'true');\n }\n else {\n this.removeAttribute('observer');\n }\n }\n /**\n * Restart animation\n */\n restartAnimation() {\n const state = this._state;\n if (state.rendered) {\n const root = this._shadowRoot;\n if (state.renderedMode === 'svg') {\n // Update root node\n try {\n root.lastChild.setCurrentTime(0);\n return;\n }\n catch (err) {\n // Failed: setCurrentTime() is not supported\n }\n }\n renderIcon(root, state);\n }\n }\n /**\n * Get status\n */\n get status() {\n const state = this._state;\n return state.rendered\n ? 'rendered'\n : state.icon.data === null\n ? 'failed'\n : 'loading';\n }\n /**\n * Queue attributes re-check\n */\n _queueCheck() {\n if (!this._checkQueued) {\n this._checkQueued = true;\n setTimeout(() => {\n this._check();\n });\n }\n }\n /**\n * Check for changes\n */\n _check() {\n if (!this._checkQueued) {\n return;\n }\n this._checkQueued = false;\n const state = this._state;\n // Get icon\n const newIcon = this.getAttribute('icon');\n if (newIcon !== state.icon.value) {\n this._iconChanged(newIcon);\n return;\n }\n // Ignore other attributes if icon is not rendered\n if (!state.rendered || !this._visible) {\n return;\n }\n // Check for mode and attribute changes\n const mode = this.getAttribute('mode');\n const customisations = getCustomisations(this);\n if (state.attrMode !== mode ||\n haveCustomisationsChanged(state.customisations, customisations) ||\n !findIconElement(this._shadowRoot)) {\n this._renderIcon(state.icon, customisations, mode);\n }\n }\n /**\n * Icon value has changed\n */\n _iconChanged(newValue) {\n const icon = parseIconValue(newValue, (value, name, data) => {\n // Asynchronous callback: re-check values to make sure stuff wasn't changed\n const state = this._state;\n if (state.rendered || this.getAttribute('icon') !== value) {\n // Icon data is already available or icon attribute was changed\n return;\n }\n // Change icon\n const icon = {\n value,\n name,\n data,\n };\n if (icon.data) {\n // Render icon\n this._gotIconData(icon);\n }\n else {\n // Nothing to render: update icon in state\n state.icon = icon;\n }\n });\n if (icon.data) {\n // Icon is ready to render\n this._gotIconData(icon);\n }\n else {\n // Pending icon\n this._state = setPendingState(icon, this._state.inline, this._state);\n }\n }\n /**\n * Force render icon on state change\n */\n _forceRender() {\n if (!this._visible) {\n // Remove icon\n const node = findIconElement(this._shadowRoot);\n if (node) {\n this._shadowRoot.removeChild(node);\n }\n return;\n }\n // Re-render icon\n this._queueCheck();\n }\n /**\n * Got new icon data, icon is ready to (re)render\n */\n _gotIconData(icon) {\n this._checkQueued = false;\n this._renderIcon(icon, getCustomisations(this), this.getAttribute('mode'));\n }\n /**\n * Re-render based on icon data\n */\n _renderIcon(icon, customisations, attrMode) {\n // Get mode\n const renderedMode = getRenderMode(icon.data.body, attrMode);\n // Inline was not changed\n const inline = this._state.inline;\n // Set state and render\n renderIcon(this._shadowRoot, (this._state = {\n rendered: true,\n icon,\n inline,\n customisations,\n attrMode,\n renderedMode,\n }));\n }\n /**\n * Start observer\n */\n startObserver() {\n if (!this._observer && !this.hasAttribute('noobserver')) {\n try {\n this._observer = new IntersectionObserver((entries) => {\n const intersecting = entries.some((entry) => entry.isIntersecting);\n if (intersecting !== this._visible) {\n this._visible = intersecting;\n this._forceRender();\n }\n });\n this._observer.observe(this);\n }\n catch (err) {\n // Something went wrong, possibly observer is not supported\n if (this._observer) {\n try {\n this._observer.disconnect();\n }\n catch (err) {\n //\n }\n this._observer = null;\n }\n }\n }\n }\n /**\n * Stop observer\n */\n stopObserver() {\n if (this._observer) {\n this._observer.disconnect();\n this._observer = null;\n this._visible = true;\n if (this._connected) {\n // Render icon\n this._forceRender();\n }\n }\n }\n };\n // Add getters and setters\n attributes.forEach((attr) => {\n if (!(attr in IconifyIcon.prototype)) {\n Object.defineProperty(IconifyIcon.prototype, attr, {\n get: function () {\n return this.getAttribute(attr);\n },\n set: function (value) {\n if (value !== null) {\n this.setAttribute(attr, value);\n }\n else {\n this.removeAttribute(attr);\n }\n },\n });\n }\n });\n // Add exported functions: both as static and instance methods\n const functions = exportFunctions();\n for (const key in functions) {\n IconifyIcon[key] = IconifyIcon.prototype[key] = functions[key];\n }\n // Define new component\n customElements.define(name, IconifyIcon);\n return IconifyIcon;\n}\n\n/**\n * Create exported data: either component instance or functions\n */\nconst IconifyIconComponent = defineIconifyIcon() || exportFunctions();\n/**\n * Export functions\n */\nconst { enableCache, disableCache, iconLoaded, iconExists, // deprecated, kept to avoid breaking changes\ngetIcon, listIcons, addIcon, addCollection, calculateSize, buildIcon, iconToHTML, svgToURL, loadIcons, loadIcon, addAPIProvider, _api, } = IconifyIconComponent;\n\nexport { IconifyIconComponent, _api, addAPIProvider, addCollection, addIcon, appendCustomStyle, buildIcon, calculateSize, disableCache, enableCache, getIcon, iconExists, iconLoaded, iconToHTML, listIcons, loadIcon, loadIcons, svgToURL };\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}\">`;\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 SmoothScroll from \"smooth-scroll\";\r\n\r\nconst scroll = new SmoothScroll('a[href*=\"#\"]', {\r\n speed: 1000,\r\n speedAsDuration: true,\r\n updateURL: false,\r\n popstate: false,\r\n topOnEmptyHash: true,\r\n});\r\n\r\nexport default scroll;\r\n","import 'iconify-icon';\nimport Swiper from 'swiper/bundle';\n\nimport './components/accordion';\n// import \"./components/header\";\nimport \"./components/scroll\";\n// import \"./components/scroll-up\";\n// import \"./components/vh-check\";\n// import \"./components/slide-down\";\n// import \"./components/contact-form\";\n\n// import \"bootstrap/dist/js/bootstrap.bundle\";\n// import \"bootstrap/dist/js/bootstrap.esm\";\n// import \"bootstrap/dist/js/bootstrap\";\n\n// import \"./firebase/firebase\";\n\n/* Accordion change colors */\n\nlet cards = document.getElementsByClassName(\"card-header\");\n\nfor (let i = 0; i < cards.length; i++) {\n cards[i].addEventListener(\"click\", function () {\n let active = this.classList.contains(\"active\");\n [...cards].forEach(function (card) {\n card.classList.remove(\"active\");\n });\n if (!active) {\n this.classList.add(\"active\");\n }\n });\n}\n\n/* nice select */\nimport \"jquery-nice-select\";\n\n$(document).ready(function () {\n $(\"select\").niceSelect();\n});\n\n// Swipers\n// Reviews\nconst reviews = new Swiper('.reviews .swiper', {\n spaceBetween: 24,\n slidesPerView: 1,\n breakpoints: {\n 576: {\n slidesPerView: 2,\n },\n /*768: {\n slidesPerView: 2,\n },*/\n },\n navigation: {\n prevEl: '.reviews .swiper-button-prev',\n nextEl: '.reviews .swiper-button-next',\n },\n pagination: {\n el: '.reviews .swiper-pagination',\n // dynamicBullets: true,\n clickable: true,\n }\n});\n"],"names":["accordionItems","document","querySelectorAll","accordionContent","item","querySelector","forEach","button","content","addEventListener","e","preventDefault","itemActive","classList","contains","otherItem","style","maxHeight","remove","scrollHeight","add","jQuery","fn","niceSelect","t","s","after","addClass","attr","html","next","n","find","i","data","text","each","this","append","val","is","hasClass","length","trigger","css","off","console","log","hide","on","not","removeClass","toggleClass","focus","target","closest","prev","keyCode","nextAll","first","l","prevAll","createElement","cssText","pointerEvents","window","Element","prototype","ownerDocument","o","parentElement","bubbles","cancelable","detail","createEvent","initCustomEvent","CustomEvent","Event","r","requestAnimationFrame","cancelAnimationFrame","Date","getTime","Math","max","a","setTimeout","clearTimeout","g","M","q","ignore","header","topOnEmptyHash","speed","speedAsDuration","durationMax","durationMin","clip","offset","easing","customEasing","updateURL","popstate","emitEvents","I","Array","call","arguments","hasOwnProperty","charAt","substr","String","charCodeAt","InvalidCharacterError","toString","F","body","documentElement","offsetHeight","clientHeight","L","parseInt","getComputedStyle","height","offsetTop","x","activeElement","setAttribute","outline","scrollTo","H","anchor","toggle","dispatchEvent","b","A","O","C","cancelScroll","c","Object","tagName","pageYOffset","u","m","d","f","h","p","offsetParent","min","innerHeight","y","v","w","S","abs","E","floor","history","pushState","smoothScroll","JSON","stringify","id","title","matchMedia","matches","defaultPrevented","metaKey","ctrlKey","shiftKey","toLowerCase","hostname","location","pathname","test","href","decodeURIComponent","hash","replaceState","state","animateScroll","destroy","removeEventListener","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","getter","__esModule","definition","key","defineProperty","enumerable","get","globalThis","Function","obj","prop","defaultIconDimensions","freeze","left","top","width","defaultIconTransformations","rotate","vFlip","hFlip","defaultIconProps","defaultExtendedIconProps","hidden","defaultIconSizeCustomisations","defaultIconCustomisations","separator","defaultCustomisations","preserveAspectRatio","getCustomisations","node","customisations","def","getAttribute","custom","value","defaultValue","units","replace","cleanup","value2","num","isNaN","split","parseFloat","slice","rotateFromString","str","trim","matchIconName","stringToIcon","validate","allowSimpleName","provider","colonSeparated","shift","name2","pop","prefix","result","name","validateIconName","dashSeparated","join","icon","match","mergeIconData","parent","child","obj1","obj2","mergeIconTransformations","internalGetIconData","tree","icons","aliases","create","currentProps","parse","parseIconSet","callback","names","not_found","push","resolved","keys","concat","resolve","getIconsTree","optionalPropertyDefaults","checkOptionalProps","defaults","quicklyValidateIconSet","dataStorage","getStorage","providerStorage","missing","Set","newStorage","addIconSet","storage","listIcons$1","allIcons","provider2","prefix2","map","simpleNames","allowSimpleNames","allow","getIconData","iconName","has","addIcon$1","err","addIconToStorage","addCollection$1","added","iconLoaded$1","getIcon$1","removeCallback","storages","items","loaderCallbacks","filter","row","idCounter","setAPIModule","getAPIModule","defaultConfig","resources","index","timeout","random","dataAfterTimeout","sendQuery","config","payload","query","done","resourcesCount","startIndex","list","nextIndex","startTime","now","lastError","status","queriesSent","timer","queue","doneCallbacks","resetTimer","abort","subscribe","overwrite","failQuery","clearQueue","execNext","resource","status2","response","isError","queued","indexOf","moduleResponse","queriesPending","initRedundancy","cfg","queries","queryCallback","doneCallback","query2","error","setIndex","getIndex","createAPIConfig","source","path","maxURL","configStorage","fallBackAPISources","fallBackAPI","addAPIProvider$1","customConfig","getAPIConfig","listAPIProviders","emptyCallback$1","redundancyCache","sendAPIQuery","redundancy","send","api","cached","cachedReundancy","getRedundancyCache","browserCacheVersion","browserCachePrefix","browserCacheCountKey","browserCacheVersionKey","browserStorageHour","browserStorageCacheExpiration","browserStorageLimit","getStoredItem","func","getItem","setStoredItem","setItem","removeStoredItem","removeItem","setBrowserStorageItemsCount","getBrowserStorageItemsCount","browserStorageConfig","local","session","browserStorageEmptyItems","browserStorageStatus","_window","getBrowserStorage","iterateBrowserStorage","version","total2","minTime","parseItem","total","initBrowserStorage","iconSet","lastModified","lastModifiedCached","storeInBrowserStorage","store","set","size","delete","from","lastValue","updateLastModified","assign","emptyCallback","loadedNewIcons","iconsLoaderFlag","pendingCallbacksFlag","hasPending","oldLength","pending","loaded","updateCallbacks","loadIcons$1","cleanedIcons","listToIcons","sortedIcons","sort","localeCompare","lastIcon","localStorage","sortIcons","callCallback","newIcons","sources","lastProvider","lastPrefix","providerNewIcons","pendingQueue","pendingIcons","iconsToLoad","iconsQueueFlag","icons2","prepare","parsed","loadNewIcons","pendingSources","bind","storeCallback","loadIcon$1","Promise","fulfill","reject","iconObj","parseIconValue","onload","testIconObject","loading","isBuggedSafari","navigator","vendor","unitsSplit","unitsTest","calculateSize$1","ratio","precision","ceil","oldParts","newParts","code","isNumber","isUnsetKeyword","iconToSVG","fullIcon","fullCustomisations","box","props","transformations","tempValue","rotation","unshift","start","end","tag","defs","endEnd","splitSVGDefs","wrapSVGContent","customisationsWidth","customisationsHeight","boxWidth","boxHeight","attributes","setAttr","viewBox","iconToHTML$1","renderAttribsHTML","svgToURL$1","svg","encodeSVGforURL","svgToData","fetchModule","fetch","detectFetch","setFetch","fetch2","getFetch","fetchAPIModule","results","maxLength","maxHostLength","host","url","calculateMaxLength","type","params","getPath","iconsList","URLSearchParams","uri","defaultError","then","json","shouldAbort","catch","toggleBrowserCache","nodeAttr","customStyle","appendCustomStyle","updateStyle","inline","styleNode","childNodes","hasAttribute","appendChild","textContent","exportFunctions","IconifyPreload","preload","IconifyProviders","providers","enableCache","disableCache","iconLoaded","iconExists","getIcon","listIcons","addIcon","addCollection","calculateSize","buildIcon","iconToHTML","svgToURL","loadIcons","loadIcon","addAPIProvider","_api","monotoneProps","coloredProps","propsToAdd","image","repeat","propsToAddTo","fixSize","policy","cleanUpInnerHTML","trustedTypes","createPolicy","createHTML","findIconElement","toUpperCase","renderIcon","iconData","renderData","mode","renderedMode","innerHTML","firstChild","renderSVG","useMask","renderAttribs","svgStyle","styles","setProperty","renderSPAN","oldNode","replaceChild","setPendingState","lastState","rendered","lastRender","IconifyIconComponent","customElements","ParentClass","HTMLElement","ConflictingClass","IconifyIcon","_shadowRoot","_initialised","_state","_checkQueued","_connected","_observer","_visible","constructor","super","root","attachShadow","_queueCheck","connectedCallback","startObserver","disconnectedCallback","stopObserver","observedAttributes","attributeChangedCallback","newInline","removeAttribute","observer","restartAnimation","lastChild","setCurrentTime","_check","newIcon","_iconChanged","attrMode","value1","haveCustomisationsChanged","_renderIcon","newValue","_gotIconData","_forceRender","removeChild","getRenderMode","IntersectionObserver","entries","intersecting","some","entry","isIntersecting","observe","disconnect","functions","define","defineIconifyIcon","isObject","extend","src","ssrDocument","blur","nodeName","getElementById","initEvent","children","getElementsByTagName","createElementNS","importNode","origin","protocol","search","getDocument","doc","ssrWindow","userAgent","go","back","getPropertyValue","Image","screen","getWindow","win","classesToTokens","classes","nextTick","delay","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","transform","webkitTransform","MozTransform","OTransform","MsTransform","msTransform","m41","m42","to","noExtend","nextSource","nodeType","keysArray","len","nextKey","desc","getOwnPropertyDescriptor","__swiper__","setCSSProperty","varName","varValue","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","duration","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","progress","easeProgress","cos","PI","currentPosition","overflow","getSlideTransformEl","slideEl","shadowRoot","elementChildren","element","selector","showWarning","warn","isArray","elementOffset","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","elementStyle","elementIndex","previousSibling","elementParents","parents","elementTransitionEnd","fireCallBack","elementOuterSize","includeMargins","offsetWidth","makeElementsArray","support","deviceCached","browser","getSupport","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","screenHeight","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","includes","major","minor","Number","isWebView","isSafariBrowser","need3dFix","calcBrowser","eventsEmitter","events","handler","priority","self","eventsListeners","destroyed","method","event","once","onceHandler","__emitterProxy","_len","args","_key","apply","onAny","eventsAnyListeners","offAny","splice","eventHandler","emit","context","_len2","_key2","toggleSlideClasses","condition","className","processLazyPreloader","imageEl","isElement","slideClass","lazyEl","lazyPreloaderClass","unlazy","slides","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","activeIndex","grid","rows","activeColumn","preloadColumns","_","column","slideIndexLastInView","rewind","loop","realIndex","update","updateSize","clientWidth","isHorizontal","isVertical","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","swiperSlideSize","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","minusOffset","offsetLeft","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","elementNextAll","prevEls","previousElementSibling","elementPrevAll","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","initialized","runCallbacksOnInit","updateClickedSlide","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","direction","step","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","slidePrev","normalize","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","loopAddBlankSlides","recalcSlides","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","onTouchStart","originalEvent","pointerId","targetTouches","touchId","identifier","pageX","touches","simulateTouch","pointerType","targetEl","touchEventsTarget","which","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","preventTouchMoveFromPointerMove","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","allowMomentumBounce","grabCursor","setGrabCursor","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","breakpoint","getBreakpoint","breakpointsBase","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","unsetGrabCursor","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","points","point","minRatio","init","swiperElementNodeName","resizeObserver","createElements","eventsPrefix","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","transition","transitionDuration","transitionDelay","moving","isLocked","cursor","attachEvents","detachEvents","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","resultClasses","prepareClasses","removeClasses","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","deleteInstance","cleanStyles","object","deleteProps","static","newDefaults","installModule","createElementIfNotDefined","checkProps","classesToSelector","appendSlide","appendElement","tempDOM","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","use","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","childList","characterData","observeParents","observeSlideChildren","containerParents","cssModeTimeout","cache","renderSlide","renderExternal","renderExternalUpdate","addSlidesBefore","addSlidesAfter","force","beforeInit","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","onRendered","slidesToRender","prependIndexes","appendIndexes","loopFrom","loopTo","domSlidesAssigned","numberOfNewSlides","newCache","cachedIndex","cachedEl","cachedElIndex","handle","kc","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","altKey","onlyInViewport","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","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","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","lockClass","onPrevClick","onNextClick","initButton","destroyButton","hideOnClick","hiddenClass","navigationDisabledClass","pagination","clickable","isHidden","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","firstIndex","midIndex","classesToRemove","flat","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","subElIndex","fractionEl","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","render","paginationHTML","numberOfBullets","dragStartPos","dragSize","trackSize","divider","dragTimeout","scrollbar","dragEl","newSize","newPos","opacity","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","snapOnRelease","activeListener","passiveListener","eventMethod","swiperEl","dragClass","draggable","scrollbarDisabledClass","parallax","elementsSelector","setTransform","currentOpacity","elements","_swiper","parallaxEl","parallaxDuration","zoom","limitToOriginalSize","maxRatio","containerClass","zoomedSlideClass","fakeGestureTouched","fakeGestureMoved","currentScale","isScaling","evCache","gesture","originX","originY","slideWidth","slideHeight","imageWrapEl","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","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","round","live","addElLive","updateNavigation","updatePagination","keepQuery","paths","slugify","getPathValues","urlOverride","URL","pathArray","part","setHistory","currentState","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","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","velocityEvent","distance","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","j","moveDistance","currentSlideSize","slidesNumberEvenToRows","slidesPerRow","numFullColumns","getSpaceBetween","swiperSlideGridSet","newSlideOrderIndex","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","translateString","rotateString","scaleString","opacityString","shadowOpacity","cardsEffect","perSlideRotate","perSlideOffset","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY","SmoothScroll","cards","getElementsByClassName","active","_toConsumableArray","card","$","ready"],"sourceRoot":""}