{"version":3,"file":"front.js","sources":["../../node_modules/debounce/index.js","../../node_modules/@lunaweb/vega-reactor-js/src/patterns/Component.js","../../sources/javascripts/front/components/Breadcrumbs/Breadcrumbs.js","../../sources/javascripts/front/components/Breadcrumbs/lifecycle.js","../../sources/javascripts/front/components/Details/Details.js","../../node_modules/swiper/shared/ssr-window.esm.mjs","../../sources/javascripts/front/components/Details/lifecycle.js","../../sources/javascripts/front/components/room.js","../../sources/javascripts/front/components/header.js","../../sources/javascripts/front/components/navigation.js","../../node_modules/swiper/shared/utils.mjs","../../node_modules/swiper/shared/swiper-core.mjs","../../node_modules/swiper/modules/navigation.mjs","../../node_modules/swiper/shared/create-element-if-not-defined.mjs","../../node_modules/swiper/shared/effect-target.mjs","../../node_modules/swiper/shared/effect-virtual-transition-end.mjs","../../node_modules/swiper/shared/create-shadow.mjs","../../node_modules/swiper/modules/effect-creative.mjs","../../node_modules/swiper/shared/effect-init.mjs","../../sources/javascripts/front/components/slider.js","../../sources/javascripts/front/components/highlight.js"],"sourcesContent":["/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing. The function also has a property 'clear' \n * that is a function which will clear the timer to prevent previously scheduled executions. \n *\n * @source underscore.js\n * @see http://unscriptable.com/2009/03/20/debouncing-javascript-methods/\n * @param {Function} function to wrap\n * @param {Number} timeout in ms (`100`)\n * @param {Boolean} whether to execute at the beginning (`false`)\n * @api public\n */\nfunction debounce(func, wait, immediate){\n var timeout, args, context, timestamp, result;\n if (null == wait) wait = 100;\n\n function later() {\n var last = Date.now() - timestamp;\n\n if (last < wait && last >= 0) {\n timeout = setTimeout(later, wait - last);\n } else {\n timeout = null;\n if (!immediate) {\n result = func.apply(context, args);\n context = args = null;\n }\n }\n };\n\n var debounced = function(){\n context = this;\n args = arguments;\n timestamp = Date.now();\n var callNow = immediate && !timeout;\n if (!timeout) timeout = setTimeout(later, wait);\n if (callNow) {\n result = func.apply(context, args);\n context = args = null;\n }\n\n return result;\n };\n\n debounced.clear = function() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n };\n \n debounced.flush = function() {\n if (timeout) {\n result = func.apply(context, args);\n context = args = null;\n \n clearTimeout(timeout);\n timeout = null;\n }\n };\n\n return debounced;\n};\n\n// Adds compatibility for ES modules\ndebounce.debounce = debounce;\n\nmodule.exports = debounce;\n","/**\n * Name: Component\n * Description: Base model for all components\n */\n\nexport default class Component {\n static settings = {};\n\n #element;\n #mounted;\n #settings;\n\n #listeners = {};\n\n constructor (element, options = {}) {\n this.#element = element;\n this.#mounted = false;\n this.#settings = {\n ...Component.settings,\n ...options\n };\n }\n\n get element () {\n return this.#element;\n }\n\n get mounted () {\n return this.#mounted;\n }\n\n get settings () {\n return this.#settings;\n }\n\n getNode (parameter) {\n let element = null;\n\n if (parameter instanceof Element) {\n element = parameter;\n } else if (typeof parameter === 'string') {\n const testSelector = this.#element.querySelector(parameter);\n element = testSelector ? testSelector : element;\n }\n\n return element;\n }\n\n fire (type, data) {\n var listeners = this.#listeners[type] || [];\n\n listeners.forEach(function (listener) {\n listener(data);\n });\n }\n\n on (type, handler) {\n if (typeof this.#listeners[type] === 'undefined') {\n this.#listeners[type] = [];\n }\n\n this.#listeners[type].push(handler);\n\n return this;\n }\n\n off (type, handler) {\n var index = this.#listeners[type].indexOf(handler);\n\n if (index > -1) {\n this.#listeners[type].splice(index, 1);\n }\n\n return this;\n }\n\n mount () {\n this.#element.classList.add('is-mounted');\n this.#mounted = true;\n this.fire('mount', this);\n }\n\n unmount () {\n this.#element.classList.remove('is-mounted');\n this.#mounted = false;\n this.fire('unmount', this);\n }\n}\n","import { debounce } from \"debounce\";\nimport Component from \"@lunaweb/vega-reactor-js/src/patterns/Component\";\n\nexport default class Breadcrumbs extends Component {\n static settings = {\n isResponsive: false,\n control: '.js-breadcrumbs-control',\n target: '.js-breadcrumbs-target',\n };\n\n #control;\n #target;\n #enabled;\n #hasEnded = false;\n #handleControlClick;\n #handleWindowDebouncedResize;\n\n constructor (element, options = {}) {\n super(element, {\n ...Breadcrumbs.settings,\n ...options\n });\n\n this.#control = this.getNode(this.settings.control);\n this.#target = this.getNode(this.settings.target);\n\n if (!this.#control) {\n throw new Error(`Breadcrumbs error: A control with the '${ this.settings.control }' selector is missing.`);\n }\n\n if (!this.#target) {\n throw new Error(`Breadcrumbs error: A target with the '${ this.settings.target }' selector is missing.`);\n }\n\n if (!this.#control.getAttribute('id')) {\n throw new Error(`Breadcrumbs error: The control needs an id to work correctly.`, this.#control);\n }\n\n if (!this.#target.getAttribute('id')) {\n throw new Error(`Breadcrumbs error: The target needs an id to work correctly.`, this.#target);\n }\n\n this.#handleControlClick = this._handleControlClick.bind(this);\n this.#handleWindowDebouncedResize = debounce(this._handleWindowDebouncedResize.bind(this), 20);\n }\n\n get control () {\n return this.#control;\n }\n\n get target () {\n return this.#target;\n }\n\n get expanded () {\n return this.#control.getAttribute('aria-expanded') === 'true';\n }\n\n get expandable () {\n return getComputedStyle(this.control).display !== 'none';\n }\n\n get enabled () {\n return this.#enabled;\n }\n\n get hasEnded () {\n return this.#hasEnded;\n }\n\n get windowWidth () {\n return window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;\n }\n\n _handleWindowDebouncedResize () {\n // If the window width has changed since last time\n // (it's not necessary to update breadcrumbs state when the resize is on the window height)\n if (this.tempWidth !== this.windowWidth) {\n this.update();\n\n // Update temporary with new window width\n this.tempWidth = this.windowWidth;\n }\n }\n\n _handleControlClick (e) {\n this.open();\n }\n\n open () {\n this.#control.setAttribute('aria-expanded', 'true');\n this.#target.removeAttribute('hidden');\n\n if (this.settings.isResponsive) {\n this.unsetResponsive();\n }\n\n this.element.classList.add('has-ended');\n this.unmount();\n this.#hasEnded = true;\n this.target.focus();\n this.control.remove();\n\n this.fire('open', this);\n }\n\n update () {\n // hasEnded is at true when control has been clicked\n if (!this.hasEnded) {\n if (this.expandable && !this.#enabled) {\n this.enable();\n } else if (!this.expandable && this.#enabled) {\n this.disable();\n }\n }\n }\n\n setResponsive () {\n this.tempWidth = 0;\n window.addEventListener(\"resize\", this.#handleWindowDebouncedResize);\n\n if (!this.hasEnded) {\n if (this.expandable && !this.#enabled) {\n this.enable();\n } else if (!this.expandable && this.#enabled) {\n this.disable();\n }\n }\n\n this.fire('setResponsive', this);\n }\n\n unsetResponsive () {\n delete this.tempWidth;\n window.removeEventListener(\"resize\", this.#handleWindowDebouncedResize);\n\n this.fire('unsetResponsive', this);\n }\n\n enable () {\n this.#target.setAttribute('aria-labelledby', this.#control.getAttribute('id'));\n this.#target.setAttribute('hidden', '');\n this.#control.setAttribute('aria-expanded', 'false');\n this.#control.setAttribute('aria-controls', this.#target.getAttribute('id'));\n\n this.#control.addEventListener('click', this.#handleControlClick);\n\n this.#enabled = true;\n\n this.fire('enable', this);\n }\n\n disable () {\n this.#control.removeEventListener('click', this.#handleControlClick);\n\n this.#control.removeAttribute('aria-expanded');\n this.#control.removeAttribute('aria-controls');\n this.#target.removeAttribute('aria-labelledby');\n this.#target.removeAttribute('hidden');\n\n this.#enabled = false;\n\n this.fire('disable', this);\n }\n\n mount () {\n super.mount();\n\n if (this.settings.isResponsive && this.tempWidth === undefined) {\n this.setResponsive();\n } else {\n this.enable();\n }\n }\n\n unmount () {\n if (this.settings.isResponsive) {\n this.unsetResponsive();\n }\n\n this.disable();\n\n super.unmount();\n }\n}\n","import Breadcrumbs from './Breadcrumbs';\n\ndocument.addEventListener('DOMContentLoaded', () => {\n const breadcrumbsElements = document.querySelectorAll('.js-breadcrumbs');\n if (!breadcrumbsElements.length) {\n return;\n }\n breadcrumbsElements.forEach((element) => {\n const breadcrumbsElement = new Breadcrumbs(element, {\n isResponsive: true,\n });\n breadcrumbsElement.mount();\n });\n});\n","/**\n * Name: Details\n * Description: Collapsing section\n */\n\nimport Component from \"@lunaweb/vega-reactor-js/src/patterns/Component\";\n\nexport default class Details extends Component {\n static settings = {\n open: false,\n rememberExpanded: false,\n hasAdditionalControl: false,\n i18n: {\n hideSection: 'Masquer la section',\n showSection: 'Afficher la section',\n }\n };\n\n #control;\n #content;\n #label;\n\n #handleControlClick;\n #handleContentBeforeMatch;\n #handleHashChange;\n #handleToggle;\n\n constructor (element, options = {}) {\n super(element, {\n ...Details.settings,\n ...options\n });\n\n this.#control = this.element.querySelector('.js-details-control');\n this.#content = this.element.querySelector('.js-details-content');\n\n if (!this.element.getAttribute('id')) {\n throw new Error(`Details error: An id is required on the '.js-details' element.`, this.element);\n }\n\n if (!this.#control) {\n throw new Error(`Details error: A control with the 'js-details-control' class is missing.`, this.element);\n }\n\n if (!this.#content) {\n throw new Error(`Details error: A content with the 'js-details-content' class is missing.`, this.element);\n }\n\n if (!this.isNativeDetails) {\n this.#label = this.element.querySelector('.js-details-label');\n\n if (!this.#label) {\n throw new Error(`Details error: A label with the 'js-details-label' class is missing.`, this.element);\n }\n }\n\n if (this.settings.rememberExpanded) {\n try {\n this.sessionStorageValue;\n } catch (e) {\n this.settings.rememberExpanded = false;\n console.error('sessionStorage is not usable.');\n }\n }\n\n this.#handleControlClick = this._handleControlClick.bind(this);\n this.#handleContentBeforeMatch = this._handleContentBeforeMatch.bind(this);\n this.#handleHashChange = this._handleHashChange.bind(this);\n this.#handleToggle = this._handleToggle.bind(this);\n }\n\n get control () {\n return this.#control;\n }\n\n get content () {\n return this.#content;\n }\n\n get expanded () {\n let state;\n\n if (this.isNativeDetails) {\n state = this.element.open;\n } else {\n state = this.#control.getAttribute('aria-expanded') === 'true';\n }\n\n return state;\n }\n\n get sessionStorageValue () {\n return sessionStorage.getItem(this.element.getAttribute('id'));\n }\n\n get isNativeDetails () {\n return this.element.tagName.toLowerCase() === \"details\";\n }\n\n set sessionStorageValue (value) {\n sessionStorage.setItem(this.element.getAttribute('id'), value);\n }\n\n _handleControlClick (e) {\n this.toggle();\n\n if (this.additionalControl && e.target === this.additionalControl) {\n this.#control.focus();\n }\n }\n\n _handleContentBeforeMatch (e) {\n this.open();\n }\n\n _handleHashChange (e) {\n if (this.element.id === location.hash.substring(1)) {\n this.open();\n }\n }\n\n _handleToggle (e) {\n const state = this.expanded ? 'open' : 'close';\n\n if (this.settings.rememberExpanded) {\n this.sessionStorageValue = state;\n }\n\n this.fire(state, this);\n }\n\n convertControlToButton () {\n let control = document.createElement('button');\n control.type = 'button';\n const attributes = this.#control.getAttributeNames().reduce((acc, name) => {\n control.setAttribute(name, this.#control.getAttribute(name));\n }, {});\n control.innerHTML = this.#control.innerHTML;\n this.#control.replaceWith(control);\n this.#control = control;\n }\n\n resetControl () {\n let control = document.createElement('span');\n const attributes = this.#control.getAttributeNames().reduce((acc, name) => {\n control.setAttribute(name, this.#control.getAttribute(name));\n }, {});\n control.removeAttribute('type');\n control.innerHTML = this.#control.innerHTML;\n this.#control.replaceWith(control);\n this.#control = control;\n }\n\n addAdditionalControl () {\n const additionalControl = document.createElement('button');\n additionalControl.type = 'button';\n additionalControl.classList.add('c-details__button');\n additionalControl.setAttribute('aria-controls', this.#content.getAttribute('id'));\n\n const marker = this.#control.querySelector('.js-details-marker');\n\n additionalControl.innerHTML = `${ this.settings.i18n.hideSection } ${ marker.outerHTML }`;\n\n this.#content.appendChild(additionalControl);\n this.additionalControl = additionalControl;\n this.additionalControl.addEventListener('click', this.#handleControlClick);\n }\n\n removeAdditionalControl () {\n this.additionalControl.removeEventListener('click', this.#handleControlClick);\n this.additionalControl.remove();\n }\n\n toggle () {\n this.expanded ? this.close() : this.open();\n }\n\n open () {\n if (this.isNativeDetails) {\n this.element.open = true;\n } else {\n this.#control.setAttribute('aria-expanded', 'true');\n this.#content.removeAttribute('hidden');\n this.#label.innerHTML = this.settings.i18n.hideSection;\n }\n\n if (this.settings.rememberExpanded) {\n this.sessionStorageValue = 'open';\n }\n\n this.fire('open', this);\n }\n\n close () {\n if (this.isNativeDetails) {\n this.element.open = false;\n } else {\n this.#control.setAttribute('aria-expanded', 'false');\n this.#content.setAttribute('hidden', 'until-found');\n this.#label.innerHTML = this.settings.i18n.showSection;\n }\n\n if (this.settings.rememberExpanded) {\n this.sessionStorageValue = 'close';\n }\n\n this.fire('close', this);\n }\n\n mount () {\n window.addEventListener('hashchange', this.#handleHashChange);\n\n if (!this.isNativeDetails) {\n this.convertControlToButton();\n this.#control.setAttribute('aria-controls', this.#content.getAttribute('id'));\n this.#content.setAttribute('aria-labelledby', this.#control.getAttribute('id'));\n\n this.#control.addEventListener('click', this.#handleControlClick);\n this.#content.addEventListener('beforematch', this.#handleContentBeforeMatch);\n } else {\n this.element.addEventListener('toggle', this.#handleToggle);\n }\n\n if (this.settings.hasAdditionalControl) {\n this.addAdditionalControl();\n }\n\n if (this.element.id === location.hash.substring(1)) {\n this.open();\n } else if (this.settings.rememberExpanded && this.sessionStorageValue) {\n this.sessionStorageValue === 'open' ? this.open() : this.close();\n } else {\n this.settings.open ? this.open() : this.close();\n }\n\n super.mount();\n }\n\n unmount () {\n window.removeEventListener('hashchange', this.#handleHashChange);\n\n if (!this.isNativeDetails) {\n this.#content.removeEventListener('beforematch', this.#handleContentBeforeMatch);\n this.#control.removeEventListener('click', this.#handleControlClick);\n\n this.#content.removeAttribute('hidden');\n this.#content.removeAttribute('aria-labelledby');\n this.#control.removeAttribute('tabindex');\n this.#control.removeAttribute('role');\n this.#control.removeAttribute('aria-controls');\n this.#control.removeAttribute('aria-expanded');\n this.resetControl();\n } else {\n this.element.addEventListener('toggle', this.#handleToggle);\n }\n\n if (this.settings.rememberExpanded) {\n sessionStorage.removeItem(this.element.getAttribute('id'));\n }\n\n if (this.additionalControl) {\n this.removeAdditionalControl();\n }\n\n super.unmount();\n }\n}","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n if (target === void 0) {\n target = {};\n }\n if (src === void 0) {\n src = {};\n }\n Object.keys(src).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\nconst ssrDocument = {\n body: {},\n addEventListener() {},\n removeEventListener() {},\n activeElement: {\n blur() {},\n nodeName: ''\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() {}\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() {},\n getElementsByTagName() {\n return [];\n }\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n }\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: ''\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n },\n history: {\n replaceState() {},\n pushState() {},\n go() {},\n back() {}\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() {},\n removeEventListener() {},\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n }\n };\n },\n Image() {},\n Date() {},\n screen: {},\n setTimeout() {},\n clearTimeout() {},\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n }\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { getWindow as a, getDocument as g };\n","import Details from './Details';\n\ndocument.addEventListener('DOMContentLoaded', () => {\n const detailsElements = document.querySelectorAll('.js-details');\n if (!detailsElements.length) {\n return;\n }\n detailsElements.forEach((element) => {\n const detailsElement = new Details(element, {\n hasAdditionalControl: false,\n });\n detailsElement.mount();\n });\n});\n","document.addEventListener(\"DOMContentLoaded\", () => {\n const contactRoom = document.querySelector('.js-contact-form');\n const contactButton = document.querySelector('.js-contact-button');\n const footer = document.querySelector('footer');\n\n\n if (contactButton) {\n const observerCallback = (entries, observer) => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n contactButton.classList.add('hide');\n contactButton.classList.add('none');\n } else {\n contactButton.classList.remove('hide');\n contactButton.classList.remove('none');\n }\n });\n };\n \n const observer = new IntersectionObserver(observerCallback);\n \n observer.observe(contactRoom);\n observer.observe(footer);\n }\n});","document.addEventListener(\"DOMContentLoaded\", () => {\n // Variable\n const $html = document.documentElement;\n const $body = document.querySelector(\"body\");\n const $header = document.querySelector(\".js-header\");\n const $toggle = document.querySelector(\".js-header-toggle\");\n const $main = document.querySelector(\".js-main\");\n\n const is_admin = $body.classList.contains(\"admin-bar\");\n\n if (is_admin && $header) {\n $header.style.top = `${50}px`;\n }\n\n if ($header) {\n // Fonction\n \n let lastScrollTop = 0;\n let scrollingUp = false;\n let lastScrollPos = 0;\n let ticking = false;\n \n function headerState(currentScrollTop) {\n if (scrollingUp) {\n $header.classList.remove(\"header-hidden\");\n } else {\n $header.classList.add(\"header-hidden\");\n }\n \n lastScrollTop = currentScrollTop;\n }\n \n function handleScroll() {\n let scrollPos = window.pageYOffset || document.documentElement.scrollTop;\n \n if (scrollPos >= 100) {\n if (scrollPos >= lastScrollPos) {\n scrollingUp = false;\n } else {\n scrollingUp = true;\n }\n \n headerState(scrollPos);\n lastScrollPos = scrollPos <= 0 ? 0 : scrollPos;\n }\n \n ticking = false;\n }\n \n function requestTick() {\n window.requestAnimationFrame(handleScroll);\n ticking = true;\n }\n \n window.addEventListener(\"scroll\", function () {\n if (!ticking) {\n requestTick();\n }\n });\n \n // vérifier si le header est revenu à sa place\n \n let isSticky = false;\n let isTop = true;\n \n function checkScroll() {\n let scrollPosition = window.pageYOffset || document.documentElement.scrollTop;\n \n if (scrollPosition > 100 && !isSticky) {\n $header.classList.remove(\"top\");\n $header.classList.add(\"sticky\");\n isSticky = true;\n isTop = false;\n } else if (scrollPosition < 90 && !isTop) {\n $header.classList.add(\"top\");\n $header.classList.remove(\"sticky\");\n isTop = true;\n isSticky = false;\n }\n \n requestAnimationFrame(checkScroll);\n }\n \n checkScroll();\n }\n\n});\n","document.addEventListener(\"DOMContentLoaded\", () => {\n\n // Open and close megamenu\n let buttons = document.querySelectorAll(\".js-nav-button\");\n let megamenus = document.querySelectorAll(\".js-megamenu\");\n\n function closeMegamenu(menu) {\n menu.classList.add(\"close\");\n menu.classList.add(\"none\");\n }\n\n document.addEventListener(\"click\", function (event) {\n let btnActive = document.querySelector(\".js-nav-button.active\");\n let megamenuActive = document.querySelector(\".js-megamenu:not(.close)\");\n if (megamenuActive && btnActive && !megamenuActive.contains(event.target)) {\n buttons.forEach((btn) => {\n btn.classList.remove(\"active\");\n });\n megamenus.forEach((megamenu) => {\n megamenu.classList.add(\"none\");\n megamenu.classList.add(\"close\");\n });\n }\n });\n\n buttons.forEach((btn) => {\n btn.addEventListener(\"click\", () => {\n let btnControl = btn.getAttribute(\"aria-controls\");\n let megamenuToControl = document.getElementById(btnControl);\n\n if (btn.classList.contains(\"active\")) {\n btn.classList.remove(\"active\");\n megamenus.forEach((megamenu) => {\n closeMegamenu(megamenu);\n });\n } else {\n buttons.forEach((otherBtn) => {\n if (otherBtn !== btn) {\n otherBtn.classList.remove(\"active\");\n }\n megamenus.forEach((megamenu) => {\n if (megamenu !== megamenuToControl) {\n closeMegamenu(megamenu);\n }\n });\n });\n\n btn.classList.add(\"active\");\n\n if (megamenuToControl) {\n megamenuToControl.classList.remove(\"none\");\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n megamenuToControl.classList.remove(\"close\");\n });\n });\n }\n }\n });\n });\n\n // megamenus.forEach((megamenu) => {\n // let megamenuLastItem =\n // megamenu.lastElementChild.lastElementChild.lastElementChild;\n // megamenuLastItem.addEventListener(\"focusout\", function () {\n // let btnActive = document.querySelector(\".js-nav-button.active\");\n // if (btnActive) {\n // btnActive.classList.remove(\"active\");\n // closeMegamenu(megamenu);\n // }\n // });\n // });\n\n // open and close menu at mobile\n let menuButton = document.querySelector(\".js-menu-button\");\n let menuButtonContent = document.querySelector(\".js-menu-button-label\");\n let header = document.querySelector(\".js-header\");\n let mainNavigation = document.querySelector(\".js-navigation\");\n const $html = document.documentElement;\n\n menuButton.addEventListener(\"click\", () => {\n menuButtonContent.innerHTML = (menuButtonContent.innerHTML === \"Fermer\") ? \"Menu\" : \"Fermer\";\n header.classList.toggle(\"open\");\n $html.classList.toggle(\"no-scroll\");\n let expanded = menuButton.getAttribute(\"aria-expanded\") === \"true\" || false;\n menuButton.setAttribute(\"aria-expanded\", !expanded);\n });\n\n});\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) {\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 { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction Navigation(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n prevEl: null\n };\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\n } else if (res && res.length === 1) {\n res = res[0];\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (subEl) {\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const initButton = (el, dir) => {\n if (el) {\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n }\n if (!swiper.enabled && el) {\n el.classList.add(...params.lockClass.split(' '));\n }\n };\n nextEl.forEach(el => initButton(el, 'next'));\n prevEl.forEach(el => initButton(el, 'prev'));\n }\n function destroy() {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const destroyButton = (el, dir) => {\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n };\n nextEl.forEach(el => destroyButton(el, 'next'));\n prevEl.forEach(el => destroyButton(el, 'prev'));\n }\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (swiper.enabled) {\n update();\n return;\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}\n\nexport { Navigation as default };\n","import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = createElement('div', checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n\nexport { createElementIfNotDefined as c };\n","import { g as 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","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","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 Swiper from 'swiper';\nimport {Navigation, EffectCreative} from 'swiper/modules';\n\n// Notices\ndocument.addEventListener('DOMContentLoaded', () => {\n const notices = document.querySelector('.js-notices');\n let activeSlide = document.querySelector('.js-active-slide');\n const totalSlides = document.querySelector('.js-total-slides');\n\n if (notices) {\n const swiper = new Swiper(notices, {\n modules: [Navigation, EffectCreative],\n loop: false,\n slidesPerView: 'auto',\n navigation: {\n nextEl: '.js-swiper-notice-next',\n prevEl: '.js-swiper-notice-prev'\n },\n effect: 'creative',\n\t\t\t\tcreativeEffect: {\n\t\t\t\t\tprev: {\n translate: [-70, 0, 0],\n rotate: [0, 0, -10],\n opacity: 0,\n\t\t\t\t\t},\n\t\t\t\t\tnext: {\n scale: 0.9,\n opacity: 0,\n\t\t\t\t\t},\n\t\t\t\t},\n });\n\n let indexActif = swiper.activeIndex;\n let nbSlides = swiper.slides.length;\n activeSlide.innerHTML = indexActif + 1;\n totalSlides.innerHTML = nbSlides;\n \n swiper.on('slideChange', () => {\n let indexActif = swiper.activeIndex;\n let nbSlides = swiper.slides.length;\n activeSlide.innerHTML = indexActif + 1;\n totalSlides.innerHTML = nbSlides;\n });\n }\n}); \n\n// Services\ndocument.addEventListener('DOMContentLoaded', () => {\n const services = document.querySelector('.js-services');\n let activeSlide = document.querySelector('.js-active-services-slide');\n const totalSlides = document.querySelector('.js-total-services-slides');\n let swiper = null; \n let swiperInitialized = false;\n\n if(services) {\n function initSwiper() {\n if (window.innerWidth < 1024 && !swiper) {\n swiper = new Swiper(services, {\n modules: [Navigation],\n spaceBetween: 24,\n slidesPerView: 'auto',\n slidesPerGroupAuto: false,\n centeredSlides: true,\n autoHeight: true,\n navigation: {\n nextEl: '.js-swiper-services-next',\n prevEl: '.js-swiper-services-prev'\n },\n });\n swiperInitialized = true;\n \n let indexActif = swiper.activeIndex;\n activeSlide.innerHTML = indexActif + 1;\n let nbSlides = swiper.slides.length;\n totalSlides.innerHTML = nbSlides;\n \n swiper.on('slideChange', () => {\n let indexActif = swiper.activeIndex;\n activeSlide.innerHTML = indexActif + 1;\n });\n } else if (window.innerWidth >= 1024 && swiperInitialized) {\n swiper.params.slidesPerView = 'auto';\n swiper.params.spaceBetween = 24;\n swiper.params.slidesPerGroupAuto = false;\n swiper.params.centeredSlides = true;\n swiper.update();\n swiperInitialized = false;\n }\n }\n \n initSwiper();\n \n window.addEventListener('resize', () => {\n if (window.innerWidth < 1024 && !swiper) {\n initSwiper();\n } else if (window.innerWidth >= 1024) {\n if (swiper) {\n swiper.destroy(true, true);\n swiper = null;\n }\n swiperInitialized = false;\n }\n });\n }\n\n});\n\n\n\n// Location gallery\ndocument.addEventListener('DOMContentLoaded', () => {\n const gallery = document.querySelector('.js-gallery');\n let activeSlide = document.querySelector('.js-active-gallery-slide');\n const totalSlides = document.querySelector('.js-total-gallery-slides');\n\n if (gallery) {\n const swiper = new Swiper(gallery, {\n modules: [Navigation],\n spaceBetween: 24,\n navigation: {\n nextEl: '.js-swiper-gallery-next',\n prevEl: '.js-swiper-gallery-prev'\n },\n });\n \n let indexActif = swiper.activeIndex;\n activeSlide.innerHTML = indexActif + 1;\n let nbSlides = swiper.slides.length;\n totalSlides.innerHTML = nbSlides;\n\n swiper.on('slideChange', () => {\n let indexActif = swiper.activeIndex;\n activeSlide.innerHTML = indexActif + 1;\n });\n }\n}); \n\n\n// Room\ndocument.addEventListener('DOMContentLoaded', () => {\n const slider = document.querySelector('.js-slider');\n let activeSlide = document.querySelector('.js-active-slider-slide');\n const totalSlides = document.querySelector('.js-total-slider-slides');\n\n if (slider) {\n const swiper = new Swiper(slider, {\n modules: [Navigation],\n spaceBetween: 24,\n slidesPerView: 1,\n centeredSlides: true,\n navigation: {\n nextEl: '.js-swiper-slider-next',\n prevEl: '.js-swiper-slider-prev'\n },\n });\n\n \n let indexActif = swiper.activeIndex;\n activeSlide.innerHTML = indexActif + 1;\n let nbSlides = swiper.slides.length;\n totalSlides.innerHTML = nbSlides;\n\n swiper.on('slideChange', () => {\n let indexActif = swiper.activeIndex;\n activeSlide.innerHTML = indexActif + 1;\n });\n }\n}); \n","document.addEventListener(\"DOMContentLoaded\", () => {\n const cards = document.querySelectorAll(\".js-highlights-item\");\n const wrapper = document.querySelector(\".js-highlights\");\n\n if (wrapper) {\n wrapper.addEventListener(\"mousemove\", function ($event) {\n cards.forEach((card) => {\n const rect = card.getBoundingClientRect();\n const x = $event.clientX - rect.left;\n const y = $event.clientY - rect.top;\n \n card.style.setProperty(\"--xPos\", `${x}px`);\n card.style.setProperty(\"--yPos\", `${y}px`);\n });\n });\n } \n} )"],"names":["debounce","func","wait","immediate","timeout","args","context","timestamp","result","later","last","Date","now","setTimeout","apply","debounced","this","arguments","callNow","clear","clearTimeout","flush","debounce_1","Component","static","element","mounted","settings","listeners","constructor","options","getNode","parameter","Element","testSelector","querySelector","fire","type","data","forEach","listener","on","handler","push","off","index","indexOf","splice","mount","classList","add","unmount","remove","Breadcrumbs","super","_classPrivateFieldInitSpec","_control","writable","value","_target","_enabled","_hasEnded","_handleControlClick","_handleWindowDebouncedResize","_classPrivateFieldSet","control","target","_classPrivateFieldGet","Error","getAttribute","bind","expanded","expandable","getComputedStyle","display","enabled","hasEnded","windowWidth","window","innerWidth","document","documentElement","clientWidth","body","tempWidth","update","e","open","setAttribute","removeAttribute","isResponsive","unsetResponsive","focus","enable","disable","setResponsive","addEventListener","removeEventListener","undefined","breadcrumbsElements","querySelectorAll","length","Details","_content","_label","_handleContentBeforeMatch","_handleHashChange","_handleToggle","isNativeDetails","rememberExpanded","sessionStorageValue","console","error","content","state","sessionStorage","getItem","tagName","toLowerCase","setItem","toggle","additionalControl","id","location","hash","substring","convertControlToButton","createElement","getAttributeNames","reduce","acc","name","innerHTML","replaceWith","resetControl","addAdditionalControl","marker","i18n","hideSection","outerHTML","appendChild","removeAdditionalControl","close","showSection","hasAdditionalControl","removeItem","isObject","obj","Object","extend","src","keys","key","detailsElements","contactRoom","contactButton","footer","observer","IntersectionObserver","entries","entry","isIntersecting","observe","$body","$header","contains","style","top","scrollingUp","lastScrollPos","ticking","handleScroll","scrollPos","pageYOffset","scrollTop","requestAnimationFrame","isSticky","isTop","checkScroll","scrollPosition","buttons","megamenus","closeMegamenu","menu","event","btnActive","megamenuActive","btn","megamenu","btnControl","megamenuToControl","getElementById","otherBtn","menuButton","menuButtonContent","header","$html","ssrDocument","activeElement","blur","nodeName","createEvent","initEvent","children","childNodes","getElementsByTagName","createElementNS","importNode","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","getPropertyValue","Image","screen","matchMedia","callback","cancelAnimationFrame","getWindow","win","nextTick","delay","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","transform","webkitTransform","split","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","o","prototype","call","slice","isNode","node","HTMLElement","nodeType","to","noExtend","i","nextSource","keysArray","filter","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","getSlideTransformEl","slideEl","shadowRoot","elementChildren","selector","matches","showWarning","text","warn","err","tag","classes","Array","isArray","trim","c","classesToTokens","elementStyle","prop","elementIndex","child","previousSibling","elementOuterSize","size","includeMargins","offsetWidth","makeElementsArray","support","deviceCached","browser","getSupport","smoothScroll","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","String","includes","major","minor","num","Number","isWebView","test","isSafariBrowser","need3dFix","calcBrowser","eventsEmitter","events","priority","self","eventsListeners","destroyed","method","once","onceHandler","__emitterProxy","_len","_key","onAny","eventsAnyListeners","offAny","eventHandler","emit","_len2","_key2","unshift","toggleSlideClasses","condition","className","processLazyPreloader","imageEl","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","unlazy","slides","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","from","_","column","slideIndexLastInView","rewind","loop","realIndex","updateSize","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","slideVisibleClass","slideFullyVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","nextEls","nextElementSibling","next","elementNextAll","prevEls","previousElementSibling","prev","elementPrevAll","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","initialized","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","direction","step","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","recalcSlides","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","preventDefault","onTouchStart","originalEvent","pointerId","targetTouches","touchId","identifier","pageX","touches","simulateTouch","pointerType","targetEl","touchEventsTarget","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","scrollLeft","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","init","swiperElementNodeName","resizeObserver","createElements","eventsPrefix","url","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","transition","transitionDuration","transitionDelay","moving","isLocked","cursor","unsetGrabCursor","attachEvents","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","prefix","resultClasses","item","prepareClasses","autoheight","centered","removeClasses","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","parentNode","toUpperCase","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","object","deleteProps","newDefaults","module","m","installModule","Navigation","getEl","res","toggleEl","disabled","subEl","disabledClass","lockClass","onPrevClick","onNextClick","checkProps","createElementIfNotDefined","initButton","destroyButton","hideOnClick","hiddenClass","navigationDisabledClass","_s","pagination","clickable","isHidden","effectTarget","effectParams","transformEl","backfaceVisibility","effectVirtualTransitionEnd","transformElements","allSlides","transitionEndTarget","eventTriggered","parentElement","getSlide","fireCallBack","elementTransitionEnd","createShadow","suffix","shadowClass","shadowContainer","shadowEl","EffectCreative","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","perspective","rotate","opacity","scale","getTranslateValue","overwriteParams","recreateShadows","getEffectParams","requireUpdateOnVirtual","overwriteParamsResult","slideShadows","effectInit","isCenteredSlides","margin","offset","r","custom","zIndex","round","translateString","rotateString","scaleString","opacityString","shadow","shadowOpacity","transformOrigin","prototypeGroup","protoMethod","use","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","unobserve","observers","attach","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","parents","parent","elementParents","disconnect","notices","totalSlides","indexActif","nbSlides","services","swiperInitialized","initSwiper","gallery","slider","cards","wrapper","$event","card","rect","getBoundingClientRect","clientX","left","clientY"],"mappings":"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"}