{"version":3,"file":"js/main.js","mappings":"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","sources":["webpack://clienti-baseline-webpack/./src/scripts/partials/search.js","webpack://clienti-baseline-webpack/./src/scripts/partials/searchbar.js","webpack://clienti-baseline-webpack/./src/scripts/customEventsNames.js","webpack://clienti-baseline-webpack/./src/scripts/partials/modal.js","webpack://clienti-baseline-webpack/./src/scripts/partials/cookies.js","webpack://clienti-baseline-webpack/./node_modules/swiper/shared/ssr-window.esm.mjs","webpack://clienti-baseline-webpack/./node_modules/swiper/shared/utils.mjs","webpack://clienti-baseline-webpack/./node_modules/swiper/shared/swiper-core.mjs","webpack://clienti-baseline-webpack/./src/scripts/partials/slider.js","webpack://clienti-baseline-webpack/./node_modules/swiper/modules/navigation.mjs","webpack://clienti-baseline-webpack/./node_modules/swiper/shared/create-element-if-not-defined.mjs","webpack://clienti-baseline-webpack/./node_modules/swiper/modules/autoplay.mjs","webpack://clienti-baseline-webpack/./src/scripts/main.js","webpack://clienti-baseline-webpack/./src/scripts/partials/intersectionObservation.js","webpack://clienti-baseline-webpack/./src/scripts/partials/language.js","webpack://clienti-baseline-webpack/./src/scripts/partials/video.js","webpack://clienti-baseline-webpack/./src/scripts/partials/header.js","webpack://clienti-baseline-webpack/./src/scripts/partials/menu.js"],"sourcesContent":["/*************************************************/\r\n/* SEARCH */\r\n/*************************************************/\r\n\r\nexport function search() {\r\n const suggestionsSelector = '.search-suggestions';\r\n const searchFormSelector = '#searchForm';\r\n var typeTimer;\r\n\r\n const getAndDisplaySearchResults = query => {\r\n const endpointUrl = document.querySelector(searchFormSelector).getAttribute('action');\r\n fetch(`${endpointUrl}?altTemplate=searchSuggestions&q=${query}`)\r\n .then(response => {\r\n return response.text();\r\n }).then(data => {\r\n document.querySelector.insertAdjacentHTML('beforeend', data);\r\n document.querySelector.style.display = 'block';\r\n }).catch(err => {\r\n console.log('Something went wrong in search fetch');\r\n console.error(err);\r\n });\r\n };\r\n\r\n const init = () => {\r\n const searchFormInput = document.querySelector(`${searchFormSelector} input`);\r\n if(searchFormInput) {\r\n searchFormInput.addEventListener('keyup', () => {\r\n const searchForm = document.querySelector(searchFormSelector);\r\n if (searchForm.dataset.showSuggestions === 'False') return;\r\n searchForm.remove();\r\n const query = searchFormInput.value;\r\n clearTimeout(typeTimer);\r\n typeTimer = setTimeout(() => { \r\n getAndDisplaySearchResults(query);\r\n }, 500);\r\n });\r\n }\r\n\r\n document.addEventListener('click', e => {\r\n const clickTarget = e.target;\r\n let searchResultBox = document.querySelector(suggestionsSelector);\r\n if (searchResultBox && clickTarget !== searchResultBox && !clickTarget.closest(suggestionsSelector)) {\r\n searchResultBox.remove();\r\n }\r\n });\r\n };\r\n\r\n init();\r\n}\r\n","/*************************************************/\r\n/* SEARCHBAR /\r\n/*************************************************/\r\n\r\nexport function searchbar(body) {\r\n let searchContainer,\r\n searchForm,\r\n searchInput,\r\n searchToggler;\r\n const showSearchClass = 'search-active',\r\n searchFormButtonClass ='search-form__button',\r\n searchBarSelector = '.search-bar',\r\n searchFormInputSelector = '.search-form__input',\r\n searchBarToggleSelector = '.search-bar__toggle';\r\n\r\n const init = function () {\r\n searchContainer = document.querySelector(searchBarSelector);\r\n if (searchContainer != null) {\r\n searchForm = searchContainer.querySelector('form');\r\n searchInput = searchContainer.querySelector(searchFormInputSelector);\r\n searchToggler = document.querySelector(searchBarToggleSelector);\r\n \r\n\r\n searchToggler.addEventListener('click', e => {\r\n e.stopPropagation();\r\n handleSearchBarVisibility();\r\n searchInput.focus();\r\n });\r\n\r\n searchContainer.addEventListener('click', e => {\r\n e.stopPropagation();\r\n });\r\n\r\n searchContainer.addEventListener('focusout', e => {\r\n if(e.target.classList.contains(searchFormButtonClass)) {\r\n closeSearch();\r\n }\r\n });\r\n\r\n body.addEventListener('click', e => {\r\n closeSearch();\r\n });\r\n }\r\n\r\n\r\n function handleSearchBarVisibility() {\r\n if (!body.classList.contains(showSearchClass)) {\r\n openSearch();\r\n } else {\r\n closeSearch();\r\n }\r\n }\r\n\r\n function openSearch() {\r\n body.classList.add(showSearchClass);\r\n searchContainer.setAttribute('aria-expanded',true);\r\n }\r\n\r\n function closeSearch() {\r\n body.classList.remove(showSearchClass);\r\n searchContainer.setAttribute('aria-expanded',false);\r\n\r\n }\r\n };\r\n\r\n init();\r\n}","export class customEventsNames{\r\n constructor() {\r\n this.openModal = 'openModal';\r\n this.closeModal = 'closeModal';\r\n this.playVideoInModal = 'playVideoInModal';\r\n this.playYoutubeVideoInModal = 'playYoutubeVideoInModal';\r\n this.videoPlayingInModal = 'videoStartedPlayingInModal';\r\n }\r\n};\r\nexport default new customEventsNames();","/*************************************************/\r\n/* MODAL */\r\n/*************************************************/\r\nimport customEventsNames from './../customEventsNames';\r\nexport function modal(body, bodyLoadingClass) {\r\n let modals = Array.from(document.querySelectorAll('.modal')),\r\n modalDialogClassSelector = '.modal-dialog',\r\n modalContentClassSelector = '.modal-content',\r\n modalCloseButtonClassSelector = '.modal-close',\r\n utils;\r\n const mainContentSelector = '#mainContent',\r\n modalPlayerId = 'modalplayer',\r\n modalShowClass ='modal--show';\r\n let triggerElement = null;\r\n\r\n const init = function () {\r\n modalUtils();\r\n\r\n modals.forEach(modal => {\r\n modal.addEventListener(customEventsNames.openModal, e => {\r\n if (e.detail.videoElement) {\r\n utils.Video.AddVideoToModal(e.detail.modalId, e.detail.videoElement);\r\n } else if (e.detail.modalId && e.detail.videoId) {\r\n utils.Video.AddYoutubeVideoToModal(e.detail.modalId, e.detail.videoId);\r\n }\r\n });\r\n\r\n modal.addEventListener(customEventsNames.videoPlayingInModal, e => {\r\n body.classList.remove(bodyLoadingClass);\r\n });\r\n\r\n //Close if background is clicked, but not if modalDialog is clicked\r\n modal.addEventListener('click', e => {\r\n utils.Modal.CloseModal(e.target.getAttribute('id'));\r\n });\r\n\r\n const dialog = modal.querySelector(modalDialogClassSelector);\r\n dialog.addEventListener('click', e => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n });\r\n\r\n modal.querySelector(modalCloseButtonClassSelector).addEventListener('click', e => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n utils.Modal.CloseModal(e.target.closest('.modal').getAttribute('id'));\r\n });\r\n });\r\n\r\n\r\n };\r\n\r\n function modalUtils() {\r\n if (!utils) {\r\n utils = {\r\n };\r\n }\r\n\r\n if (modals.length > 0) {\r\n utils.Modal = {\r\n OpenModal(modalId, content) {\r\n triggerElement = document.activeElement;\r\n const modal = document.querySelector(modalId);\r\n body.classList.add('noscroll');\r\n modal.classList.add(modalShowClass);\r\n modal.querySelector(modalContentClassSelector).appendChild(content);\r\n\r\n document.querySelector(mainContentSelector).setAttribute('aria-hidden', true);\r\n\r\n setTimeout(() => {\r\n modal.focus();\r\n }, 300); //Timeout here to compensate for the transition on the modal\r\n\r\n },\r\n CloseModal(modalId, clearContent = true) {\r\n modalId = `#${modalId}`;\r\n const modal = document.querySelector(modalId);\r\n modal.classList.remove(modalShowClass);\r\n if (clearContent = true) {\r\n const content = modal.querySelector(modalContentClassSelector);\r\n content.removeChild(content.querySelector('#'+modalPlayerId));\r\n }\r\n body.classList.remove('noscroll', bodyLoadingClass);\r\n\r\n const closeModalEvent = new CustomEvent(customEventsNames.closeModal, { bubbles: true });\r\n modal.dispatchEvent(closeModalEvent);\r\n\r\n document.querySelector(mainContentSelector).setAttribute('aria-hidden', false);\r\n\r\n setTimeout(() => {\r\n triggerElement.focus();\r\n }, 200); //Timeout here to compensate for the keyup event needing to finish\r\n\r\n\r\n }\r\n };\r\n }\r\n\r\n utils.Video = {\r\n AddYoutubeVideoToModal(modalId, videoId) {\r\n const player = document.createElement('div');\r\n player.id = modalPlayerId;\r\n utils.Modal.OpenModal(modalId, player);\r\n body.classList.add(bodyLoadingClass);\r\n\r\n var playYoutubeVideoEvent = new CustomEvent(customEventsNames.playYoutubeVideoInModal, {\r\n bubbles: true,\r\n detail: {\r\n modalId: modalId,\r\n playerId: modalPlayerId,\r\n videoId: videoId\r\n }\r\n });\r\n\r\n player.dispatchEvent(playYoutubeVideoEvent);\r\n },\r\n AddVideoToModal(modalId, videoElement) {\r\n videoElement.id = modalPlayerId;\r\n\r\n utils.Modal.OpenModal(modalId, videoElement);\r\n\r\n body.classList.add(bodyLoadingClass);\r\n\r\n var playVideoEvent = new CustomEvent(customEventsNames.playVideoInModal, {\r\n bubbles: true,\r\n detail: {\r\n modalId: modalId,\r\n playerId: modalPlayerId\r\n }\r\n });\r\n videoElement.dispatchEvent(playVideoEvent);\r\n\r\n }\r\n };\r\n }\r\n\r\n init();\r\n}\r\n","/*************************************************/\r\n/* COOKIES */\r\n/*************************************************/\r\n\r\nexport function cookies() {\r\n const cookiePlaceholderSelector = '.cookie-placeholder';\r\n const placeholderSelectors = Array.from(document.querySelectorAll(cookiePlaceholderSelector));\r\n\r\n //Implement this for the specific cookie solution. Check out one of our other websites for an example\r\n const RenewConsent = categories => {\r\n Cookiebot.renew();\r\n }\r\n\r\n const SetPlaceholderDisplayState = (placeholder,displayState) => {\r\n placeholder.style.display = displayState;\r\n }\r\n\r\n //Implement this for the specific cookie solution. Check out one of our other websites for an example. In this case, replace the 'false' with Cookie Consent status\r\n const SetPlaceholderState = () => {\r\n window.addEventListener('CookiebotOnConsentReady', function (event) {\r\n\r\n const marketingPlaceholders = document.querySelectorAll('[data-categories*=\"marketing\"]');\r\n if (marketingPlaceholders != null) {\r\n marketingPlaceholders.forEach(placeholder => {\r\n let displayState = Cookiebot.consent.marketing ? 'none' : 'flex';\r\n SetPlaceholderDisplayState(placeholder,displayState);\r\n });\r\n }\r\n \r\n var statisticsPlaceholders = document.querySelectorAll('[data-categories*=\"statistics\"]');\r\n if (statisticsPlaceholders != null) {\r\n statisticsPlaceholders.forEach(placeholder => {\r\n var displayState = Cookiebot.consent.statistics ? 'none' : 'flex';\r\n SetPlaceholderDisplayState(placeholder,displayState);\r\n });\r\n }\r\n \r\n var preferencesPlaceholders = document.querySelectorAll('[data-categories*=\"preferences\"]');\r\n if (preferencesPlaceholders != null) {\r\n preferencesPlaceholders.forEach(placeholder => {\r\n var displayState = Cookiebot.consent.preferences ? 'none' : 'flex';\r\n SetPlaceholderDisplayState(placeholder,displayState);\r\n });\r\n }\r\n\r\n }, false);\r\n }\r\n\r\n const init = () => {\r\n\r\n SetPlaceholderState();\r\n\r\n for(const placeholderSelector of placeholderSelectors) {\r\n placeholderSelector.addEventListener('click', event => {\r\n let placeholder = event.target;\r\n if(!placeholder.classList.contains(cookiePlaceholderSelector)) {\r\n placeholder = event.target.closest(cookiePlaceholderSelector);\r\n }\r\n event.stopPropagation()\r\n var categories = placeholder.dataset.categories.split(',');\r\n RenewConsent(categories);\r\n });\r\n }\r\n };\r\n\r\n init();\r\n}\r\n\r\n","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n if (target === void 0) {\n target = {};\n }\n if (src === void 0) {\n src = {};\n }\n Object.keys(src).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\nconst ssrDocument = {\n body: {},\n addEventListener() {},\n removeEventListener() {},\n activeElement: {\n blur() {},\n nodeName: ''\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() {}\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() {},\n getElementsByTagName() {\n return [];\n }\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n }\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: ''\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n },\n history: {\n replaceState() {},\n pushState() {},\n go() {},\n back() {}\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() {},\n removeEventListener() {},\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n }\n };\n },\n Image() {},\n Date() {},\n screen: {},\n setTimeout() {},\n clearTimeout() {},\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n }\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { getWindow as a, getDocument as g };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction 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 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 : [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}\n\nexport { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, elementIndex as g, getTranslate as h, elementTransitionEnd as i, isObject as j, getSlideTransformEl as k, elementStyle as l, elementNextAll as m, nextTick as n, elementPrevAll as o, animateCSSModeScroll as p, extend as q, deleteProps as r, setCSSProperty as s };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, l as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, m as elementNextAll, o as elementPrevAll, h as getTranslate, p as animateCSSModeScroll, n as nextTick, d as now, q as extend, g as elementIndex, c as createElement, r 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 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 return {\n isSafari: needPerspectiveFix || isSafari(),\n needPerspectiveFix,\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\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 getDirectionLabel(property) {\n if (swiper.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 function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(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(slidesLength);\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, slidesLength, getDirectionLabel);\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[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[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[getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\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' : 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 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);\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 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 slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}\n\nfunction updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd,\n progressLoop\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n}\n\nfunction updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n });\n let activeSlide;\n 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 activeSlide = slides[activeIndex];\n }\n if (activeSlide) {\n // Active classes\n activeSlide.classList.add(params.slideActiveClass);\n\n // Next Slide\n let nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n if (nextSlide) {\n nextSlide.classList.add(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n if (prevSlide) {\n prevSlide.classList.add(params.slidePrevClass);\n }\n }\n 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 lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\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) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n }\n return;\n }\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (swiper.slides[activeIndex]) {\n realIndex = parseInt(swiper.slides[activeIndex].getAttribute('data-swiper-slide-index') || activeIndex, 10);\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 (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}\n\nfunction updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = e.closest(`.${params.slideClass}, swiper-slide`);\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}\n\nvar translate = {\n getTranslate: getSwiperTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};\n\nfunction setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n }\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n\nfunction transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}\n\nfunction transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}\n\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd\n};\n\nfunction slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex];\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n // Update Index\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}\n\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n 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 newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n enabled,\n params,\n animating\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'next'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\n if (!enabled) return swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal, threshold) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (threshold === void 0) {\n threshold = 0.5;\n }\n const swiper = this;\n 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 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 slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\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 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 const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10));\n let loopedSlides = params.loopedSlides || slidesPerView;\n if (loopedSlides % params.slidesPerGroup !== 0) {\n loopedSlides += params.slidesPerGroup - loopedSlides % params.slidesPerGroup;\n }\n swiper.loopedSlides = loopedSlides;\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n let activeIndex = swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(swiper.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 // prepend last slides before start\n if (activeSlideIndex < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeSlideIndex, params.slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeSlideIndex; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n prependSlidesIndexes.push(slides.length - index - 1);\n }\n } else if (activeSlideIndex /* + slidesPerView */ > swiper.slides.length - loopedSlides * 2) {\n slidesAppended = Math.max(activeSlideIndex - (swiper.slides.length - loopedSlides * 2), params.slidesPerGroup);\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n appendSlidesIndexes.push(index);\n }\n }\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n swiper.slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(swiper.slides[index]);\n swiper.slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n swiper.slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(swiper.slides[index]);\n swiper.slides[index].swiperLoopMoveDOM = false;\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\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 + slidesPrepended, 0, false, true);\n if (setTranslate) {\n swiper.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else {\n if (setTranslate) {\n swiper.slideToLoop(slideRealIndex, 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.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else {\n swiper.slideToLoop(slideRealIndex, 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 onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n data.evCache.push(event);\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.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 e = event;\n if (e.originalEvent) e = e.originalEvent;\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 = event.composedPath ? event.composedPath() : event.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 const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\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 (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) data.evCache[pointerIndex] = e;\n const targetTouch = data.evCache.length > 1 ? data.evCache[0] : e;\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 prevX: swiper.touches.currentX,\n prevY: swiper.touches.currentY,\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 if (e.targetTouches && e.targetTouches.length > 1) return;\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 || swiper.zoom && swiper.params.zoom && swiper.params.zoom.enabled && data.evCache.length > 1) {\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 if (!data.isMoved) {\n if (isLoop) {\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 if (data.isMoved && prevTouchesDirection !== swiper.touchesDirection && isLoop && Math.abs(diff) >= 1) {\n // need another loop fix\n swiper.loopFix({\n direction: swiper.swipeDirection,\n setTranslate: true\n });\n loopFixed = true;\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 && !loopFixed && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.size / 2 : 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 && !loopFixed && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.size / 2 : 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 const pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === event.pointerId);\n if (pointerIndex >= 0) {\n data.evCache.splice(pointerIndex, 1);\n }\n if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(event.type)) {\n const proceed = ['pointercancel', 'contextmenu'].includes(event.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\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 (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 // 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);\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.currentTranslate === data.startTranslate) {\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 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 (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (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\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\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 el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', 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 document = getDocument();\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 if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n if (!dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nvar events$1 = {\n attachEvents,\n detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasEnabled = params.enabled;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n if (typeof breakpointParams[prop] === 'undefined') return;\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\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 (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\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 touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\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 loopedSlides: null,\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 slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-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 (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\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 evCache: []\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 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 (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? 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 += 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-CONTAINER') {\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.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 Swiper from 'swiper';\r\nimport { Navigation, Autoplay } from 'swiper/modules';\r\n\r\n Swiper.use([Navigation,Autoplay]);\r\n\r\n const LogoSliderSelector = \".swiper.mySwiper\";\r\n\r\n const EventSliderSelector = \".swiper.eventSwiper\";\r\n\r\n function init() {\r\n const logoSliderElements = document.querySelectorAll(LogoSliderSelector);\r\n const EventsSliderElements = document.querySelectorAll(EventSliderSelector);\r\n\r\n logoSliderElements.forEach(slider => {\r\n new Swiper(slider, {\r\n autoplay:{\r\n delay:3000\r\n },\r\n slidesPerView: 1,\r\n loop:true,\r\n navigation: {\r\n nextEl: \".swiper-button-next\",\r\n prevEl: \".swiper-button-prev\",\r\n },\r\n });\r\n });\r\n\r\n EventsSliderElements.forEach(slider => {\r\n new Swiper(slider, {\r\n spaceBetween: 15,\r\n slidesPerView: \"1.65\",\r\n centeredSlides: false,\r\n navigation: {\r\n nextEl: \".swiper-button-next\",\r\n prevEl: \".swiper-button-prev\",\r\n },\r\n\r\n breakpoints: {\r\n 830: {\r\n spaceBetween: 45,\r\n slidesPerView: 3,\r\n },\r\n 768: {\r\n spaceBetween: 60,\r\n slidesPerView: 2,\r\n },\r\n },\r\n on: {\r\n slideChangeTransitionEnd: (swiper) => {\r\n swiper.update();\r\n swiper.el.querySelectorAll(\".swiper-slide > a\").forEach(slide => {\r\n slide.setAttribute(\"tabindex\", \"-1\");\r\n });\r\n \r\n const activeSlide = swiper.el.querySelector(\".swiper-slide-active > a\");\r\n if (activeSlide != null) {\r\n activeSlide.setAttribute(\"tabindex\", \"0\");\r\n }\r\n }\r\n },\r\n \r\n });\r\n });\r\n}\r\n\r\ninit();","import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.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 const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e);\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n if (swiper.params.uniqueNavElements && typeof el === 'string' && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (subEl) {\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const initButton = (el, dir) => {\n if (el) {\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n }\n if (!swiper.enabled && el) {\n el.classList.add(...params.lockClass.split(' '));\n }\n };\n nextEl.forEach(el => initButton(el, 'next'));\n prevEl.forEach(el => initButton(el, 'prev'));\n }\n function destroy() {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const destroyButton = (el, dir) => {\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n };\n nextEl.forEach(el => destroyButton(el, 'next'));\n prevEl.forEach(el => destroyButton(el, 'prev'));\n }\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}\n\nexport { Navigation as default };\n","import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = createElement('div', checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n\nexport { createElementIfNotDefined as c };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\n\n/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nfunction Autoplay(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit,\n params\n } = _ref;\n swiper.autoplay = {\n running: false,\n paused: false,\n timeLeft: 0\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n let timeout;\n let raf;\n let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayTimeLeft;\n let autoplayStartTime = new Date().getTime;\n let wasPaused;\n let isTouched;\n let pausedByTouch;\n let touchStartTimeout;\n let slideChanged;\n let pausedByInteraction;\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n if (e.target !== swiper.wrapperEl) return;\n swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);\n resume();\n }\n const calcTimeLeft = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.autoplay.paused) {\n wasPaused = true;\n } else if (wasPaused) {\n autoplayDelayCurrent = autoplayTimeLeft;\n wasPaused = false;\n }\n const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n swiper.autoplay.timeLeft = timeLeft;\n emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n raf = requestAnimationFrame(() => {\n calcTimeLeft();\n });\n };\n const getSlideDelay = () => {\n let activeSlideEl;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0];\n } else {\n activeSlideEl = swiper.slides[swiper.activeIndex];\n }\n if (!activeSlideEl) return undefined;\n const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\n return currentSlideDelay;\n };\n const run = delayForce => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n cancelAnimationFrame(raf);\n calcTimeLeft();\n let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;\n autoplayDelayTotal = swiper.params.autoplay.delay;\n autoplayDelayCurrent = swiper.params.autoplay.delay;\n const currentSlideDelay = getSlideDelay();\n if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {\n delay = currentSlideDelay;\n autoplayDelayTotal = currentSlideDelay;\n autoplayDelayCurrent = currentSlideDelay;\n }\n autoplayTimeLeft = delay;\n const speed = swiper.params.speed;\n const proceed = () => {\n if (!swiper || swiper.destroyed) return;\n if (swiper.params.autoplay.reverseDirection) {\n if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n swiper.slidePrev(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n emit('autoplay');\n }\n } else {\n if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n swiper.slideNext(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, speed, true, true);\n emit('autoplay');\n }\n }\n if (swiper.params.cssMode) {\n autoplayStartTime = new Date().getTime();\n requestAnimationFrame(() => {\n run();\n });\n }\n };\n if (delay > 0) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n proceed();\n }, delay);\n } else {\n requestAnimationFrame(() => {\n proceed();\n });\n }\n\n // eslint-disable-next-line\n return delay;\n };\n const start = () => {\n swiper.autoplay.running = true;\n run();\n emit('autoplayStart');\n };\n const stop = () => {\n swiper.autoplay.running = false;\n clearTimeout(timeout);\n cancelAnimationFrame(raf);\n emit('autoplayStop');\n };\n const pause = (internal, reset) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n clearTimeout(timeout);\n if (!internal) {\n pausedByInteraction = true;\n }\n const proceed = () => {\n emit('autoplayPause');\n if (swiper.params.autoplay.waitForTransition) {\n swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);\n } else {\n resume();\n }\n };\n swiper.autoplay.paused = true;\n if (reset) {\n if (slideChanged) {\n autoplayTimeLeft = swiper.params.autoplay.delay;\n }\n slideChanged = false;\n proceed();\n return;\n }\n const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n proceed();\n };\n const resume = () => {\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n autoplayStartTime = new Date().getTime();\n if (pausedByInteraction) {\n pausedByInteraction = false;\n run(autoplayTimeLeft);\n } else {\n run();\n }\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n };\n const onVisibilityChange = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n const document = getDocument();\n if (document.visibilityState === 'hidden') {\n pausedByInteraction = true;\n pause(true);\n }\n if (document.visibilityState === 'visible') {\n resume();\n }\n };\n const onPointerEnter = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByInteraction = true;\n if (swiper.animating || swiper.autoplay.paused) return;\n pause(true);\n };\n const onPointerLeave = e => {\n if (e.pointerType !== 'mouse') return;\n if (swiper.autoplay.paused) {\n resume();\n }\n };\n const attachMouseEvents = () => {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.el.addEventListener('pointerenter', onPointerEnter);\n swiper.el.addEventListener('pointerleave', onPointerLeave);\n }\n };\n const detachMouseEvents = () => {\n swiper.el.removeEventListener('pointerenter', onPointerEnter);\n swiper.el.removeEventListener('pointerleave', onPointerLeave);\n };\n const attachDocumentEvents = () => {\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n };\n const detachDocumentEvents = () => {\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n attachMouseEvents();\n attachDocumentEvents();\n autoplayStartTime = new Date().getTime();\n start();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n detachDocumentEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n return;\n }\n isTouched = true;\n pausedByTouch = false;\n pausedByInteraction = false;\n touchStartTimeout = setTimeout(() => {\n pausedByInteraction = true;\n pausedByTouch = true;\n pause(true);\n }, 200);\n });\n on('touchEnd', () => {\n if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n clearTimeout(touchStartTimeout);\n clearTimeout(timeout);\n if (swiper.params.autoplay.disableOnInteraction) {\n pausedByTouch = false;\n isTouched = false;\n return;\n }\n if (pausedByTouch && swiper.params.cssMode) resume();\n pausedByTouch = false;\n isTouched = false;\n });\n on('slideChange', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n slideChanged = true;\n });\n Object.assign(swiper.autoplay, {\n start,\n stop,\n pause,\n resume\n });\n}\n\nexport { Autoplay as default };\n","/*************************************************/\r\n/* 3rd Party */\r\n/*************************************************/\r\n\r\n// Passive event listeners\r\ndocument.addEventListener('touchstart', () => { }, { passive: true });\r\ndocument.addEventListener('touchmove', () => { }, { passive: true });\r\n\r\n\r\n/*************************************************/\r\n/* Partials */\r\n/*************************************************/\r\n\r\nimport { intersectionObservation } from \"./partials/intersectionObservation.js\";\r\nimport { header } from \"./partials/header.js\";\r\nimport { language } from \"./partials/language.js\";\r\nimport { menu } from \"./partials/menu.js\";\r\nimport { search } from \"./partials/search.js\";\r\nimport { searchbar } from \"./partials/searchbar.js\";\r\nimport { video } from \"./partials/video.js\";\r\nimport { modal } from \"./partials/modal.js\";\r\nimport { cookies } from \"./partials/cookies.js\";\r\nimport { slider } from \"./partials/slider.js\";\r\n\r\n\r\n/*************************************************/\r\n/* Init */\r\n/*************************************************/\r\n\r\nconst ready = callback => {\r\n if (document.readyState != 'loading') callback();\r\n else document.addEventListener('DOMContentLoaded', callback);\r\n}\r\n\r\nready(() => {\r\n\r\n document.querySelector('#skipLink').addEventListener('click',e => {\r\n document.querySelector('#mainContent').focus();\r\n });\r\n\r\n const body = document.querySelector('body');\r\n const bodyLoadingClass = 'is-loading';\r\n \r\n intersectionObservation();\r\n header(body);\r\n language();\r\n menu(body);\r\n search();\r\n searchbar(body);\r\n modal(body, bodyLoadingClass);\r\n video();\r\n cookies();\r\n});\r\n","/*************************************************/\r\n/* INTERSECTION OBSERVATION */\r\n/*************************************************/\r\n\r\nexport function intersectionObservation() {\r\n const activeClass = 'in-view',\r\n targetsClasses = [\".banner\", \".parallax\"],\r\n options = {\r\n rootMargin: '200px'\r\n };\r\n const init = function () {\r\n let targets = [];\r\n for (var i = 0; i < targetsClasses.length; i++) {\r\n var targetElements = document.querySelectorAll(targetsClasses[i]);\r\n if (targetElements != null) {\r\n targets.push(...targetElements);\r\n }\r\n }\r\n if ('IntersectionObserver' in window) {\r\n function handleIntersection(entries) {\r\n entries.map((entry) => {\r\n if (entry.isIntersecting) {\r\n\r\n if (entry.target.classList.contains('parallax')) {\r\n var backgroundAttribute = entry.target.dataset.backgroundImage;\r\n if (backgroundAttribute != null) {\r\n\r\n const ua = navigator.userAgent;\r\n if (!/(tablet|ipad|playbook|silk)|(android(?!.*mobi))/i.test(ua) || !/Mobile|Android|iP(hone|od)|IEMobile|BlackBerry|Kindle|Silk-Accelerated|(hpw|web)OS|Opera M(obi|ini)/.test(ua)) {\r\n entry.target.style.backgroundImage = \"url('\" + backgroundAttribute + \"')\";\r\n }\r\n }\r\n } else {\r\n entry.target.classList.add(entry.target.classList[0] + \"--\" + activeClass);\r\n }\r\n\r\n observer.unobserve(entry.target);\r\n }\r\n });\r\n }\r\n const observer = new IntersectionObserver(handleIntersection, options);\r\n targets.forEach(target => observer.observe(target));\r\n } else {\r\n targets.forEach(target => {\r\n target.classList.add(target.classList[0] + \"--\" + activeClass);\r\n });\r\n }\r\n };\r\n\r\n init();\r\n}","/*************************************************/\r\n/* LANGUAGE */\r\n/*************************************************/\r\n\r\nexport function language() {\r\n // let languageSelector;\r\n const languageSelectorSelector = \".language-selector\";\r\n const visibleClass = \"language-selector--visible\";\r\n\r\n const toggleLanguageSelector = function (\r\n languageSelector,\r\n forceClose = false\r\n ) {\r\n if (languageSelector != null) {\r\n if (forceClose) {\r\n languageSelector.classList.remove(visibleClass);\r\n } else if (!languageSelector.classList.contains(visibleClass)) {\r\n languageSelector.classList.add(visibleClass);\r\n } else {\r\n languageSelector.classList.remove(visibleClass);\r\n }\r\n }\r\n };\r\n\r\n const init = function () {\r\n document.addEventListener(\"click\", (e) => {\r\n if (!e.target.classList.contains(\"language-selector__current\")) {\r\n const languageSelectors = document.querySelectorAll(languageSelectorSelector);\r\n\r\n if (languageSelectors) {\r\n languageSelectors.forEach((languageSelector) => {\r\n toggleLanguageSelector(languageSelector, true);\r\n });\r\n }\r\n return false;\r\n }\r\n\r\n const languageSelector = e.target.closest(languageSelectorSelector);\r\n if (languageSelector) {\r\n toggleLanguageSelector(languageSelector);\r\n }\r\n });\r\n };\r\n\r\n init();\r\n}\r\n","/*************************************************/\r\n/* VIDEO */\r\n/*************************************************/\r\nimport customEventsNames from './../customEventsNames';\r\nexport function video() {\r\n const videoPlayerSelector = '.video-item__player';\r\n const modalVideoPlayerId = '#videoModal';\r\n const videoPlayerPlayingClass = 'video-item__player--playing';\r\n\r\n const init = function () {\r\n const playYoutubeVideo = (playerId, videoId) => {\r\n var iterations = 0;\r\n var loadViewTimer = setInterval(() => {\r\n if (youtubeLoaded) {\r\n clearInterval(loadViewTimer);\r\n let ytplayer = new YT.Player(playerId, {\r\n height: '100%',\r\n width: '100%',\r\n videoId: videoId,\r\n host: 'https://www.youtube-nocookie.com',\r\n events: {\r\n 'onReady': onPlayerReady,\r\n 'onStateChange': onPlayerStateChange\r\n },\r\n playerVars: {\r\n showinfo: 0,\r\n rel: 0\r\n }\r\n });\r\n } else {\r\n iterations++;\r\n }\r\n\r\n //Lets try for 10 seconds\r\n if (iterations === 100) {\r\n clearInterval(loadViewTimer);\r\n }\r\n\r\n }, 50);\r\n }\r\n\r\n const playVideo = (playerId) => {\r\n const player = document.getElementById(playerId);\r\n if (player.tagName == 'VIDEO') {\r\n player.play();\r\n\r\n } else {\r\n player.querySelector('video').play();\r\n }\r\n\r\n const videoPlayerElement = player.closest(videoPlayerSelector);\r\n if (videoPlayerElement) {\r\n videoPlayerElement.classList.add(videoPlayerPlayingClass);\r\n }\r\n const videoStartedPlayingInModalEvent = new Event(customEventsNames.videoPlayingInModal);\r\n document.querySelector(modalVideoPlayerId).dispatchEvent(videoStartedPlayingInModalEvent);\r\n }\r\n\r\n const onPlayerReady = event => {\r\n event.target.playVideo();\r\n const player = document.querySelector(`#player${event.target.playerInfo.videoData.video_id}`);\r\n\r\n const videoStartedPlayingInModalEvent = new Event(customEventsNames.videoPlayingInModal);\r\n document.querySelector(modalVideoPlayerId).dispatchEvent(videoStartedPlayingInModalEvent);\r\n\r\n const videoPlayerElement = player.closest(videoPlayerSelector);\r\n if (videoPlayerElement) {\r\n videoPlayerElement.classList.add(videoPlayerPlayingClass);\r\n }\r\n }\r\n\r\n const onPlayerStateChange = event => {\r\n if (event.data === YT.PlayerState.ENDED) {\r\n const player = document.querySelector(`#player${event.target.playerInfo.videoData.video_id}`);\r\n const videoPlayerElement = player.closest(videoPlayerSelector);\r\n if (videoPlayerElement) {\r\n videoPlayerElement.classList.remove(videoPlayerPlayingClass);\r\n }\r\n }\r\n }\r\n\r\n document.addEventListener(customEventsNames.playVideoInModal, e => {\r\n if (e.target.id === 'modalplayer') {\r\n playVideo(e.detail.playerId);\r\n }\r\n });\r\n document.addEventListener(customEventsNames.playYoutubeVideoInModal, e => {\r\n if (e.target.id === 'modalplayer') {\r\n playYoutubeVideo(e.detail.playerId, e.detail.videoId);\r\n }\r\n }, false);\r\n\r\n document.addEventListener(customEventsNames.closeModal, e => {\r\n if (e.target.id === modalVideoPlayerId) {\r\n document.querySelector(videoPlayerSelector).classList.remove(videoPlayerPlayingClass);\r\n }\r\n }, false);\r\n\r\n const videoPlayerActionHandler = (e) => {\r\n const videoItem = e.target.closest(videoPlayerSelector);\r\n if (videoItem) {\r\n e.preventDefault();\r\n\r\n let videoId = videoItem.dataset.videoId;\r\n const playerId = videoItem.dataset.playerId;\r\n\r\n let videoSources = videoItem.dataset.videosources;\r\n let videoTypes = videoItem.dataset.videotypes;\r\n if (videoSources && videoTypes) {\r\n videoSources = videoSources.split(',');\r\n videoTypes = videoTypes.split(',');\r\n\r\n const modalId = videoItem.dataset.target;\r\n const videoElement = document.createElement('video');\r\n videoElement.controls = true;\r\n\r\n for (let i = 0; i < videoSources.length; i++) {\r\n const sourceElement = document.createElement('source');\r\n sourceElement.setAttribute('src', videoSources[i]);\r\n sourceElement.setAttribute('type', videoTypes[i]);\r\n videoElement.appendChild(sourceElement)\r\n }\r\n\r\n if (typeof modalId !== 'undefined' && modalId !== '') {\r\n var openModalEvent = new CustomEvent(customEventsNames.openModal, {\r\n detail: {\r\n modalId: modalId,\r\n videoElement: videoElement\r\n }\r\n });\r\n\r\n document.querySelector(modalVideoPlayerId).dispatchEvent(openModalEvent);\r\n\r\n } else {\r\n\r\n document.getElementById(playerId).replaceChildren(videoElement);\r\n playVideo(playerId);\r\n }\r\n }\r\n else if (typeof videoId != undefined && videoId != null && videoId != '') {\r\n if (!Cookiebot.consent.marketing) {\r\n CookieConsent.renew();\r\n } else {\r\n const tag = document.createElement('script');\r\n tag.src = 'https://www.youtube.com/iframe_api';\r\n const firstScriptTag = document.getElementsByTagName('script')[0];\r\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\r\n\r\n //If video id is not set, it's probably a link from a RTE\r\n if (typeof videoId === undefined) {\r\n videoId = videoItem.querySelector('a').getAttribute('href');\r\n if (videoId && videoId.indexOf('/') === 0 && videoId.length > 1) {\r\n videoId = videoId.substr(1);\r\n }\r\n }\r\n if (videoId) {\r\n const modalId = videoItem.dataset.target;\r\n if (typeof modalId !== 'undefined' && modalId !== '') {\r\n var openModalEvent = new CustomEvent(customEventsNames.openModal, {\r\n detail: {\r\n modalId: modalId,\r\n videoId: videoId\r\n }\r\n });\r\n\r\n document.querySelector(modalVideoPlayerId).dispatchEvent(openModalEvent);\r\n\r\n } else {\r\n playYoutubeVideo(playerId, videoId);\r\n }\r\n } else {\r\n console.error('Video not found');\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n const videoPlayers = document.querySelectorAll(videoPlayerSelector);\r\n if (videoPlayers.length > 0) {\r\n videoPlayers.forEach(player => {\r\n\r\n player.addEventListener('click', e => {\r\n videoPlayerActionHandler(e);\r\n });\r\n\r\n player.addEventListener('keyup', e => {\r\n e.preventDefault();\r\n if (e.key === 'Enter') {\r\n videoPlayerActionHandler(e);\r\n }\r\n });\r\n })\r\n }\r\n\r\n };\r\n\r\n init();\r\n}\r\n","/*************************************************/\r\n/* HEADER */\r\n/*************************************************/\r\nexport function header(body) {\r\n let headerElement;\r\n const headerSelector = '.header',\r\n headerStickyClass = 'header-sticky';\r\n \r\n const setStickyHeader = () => {\r\n const top = window.pageYOffset || document.documentElement.scrollTop\r\n if (top > headerElement.offsetHeight / 2) {\r\n body.classList.add(headerStickyClass);\r\n } else {\r\n body.classList.remove(headerStickyClass);\r\n }\r\n }\r\n \r\n const init = () => {\r\n headerElement = document.querySelector(headerSelector);\r\n\r\n // Sticky header\r\n setStickyHeader();\r\n window.addEventListener('scroll', e => {\r\n setStickyHeader();\r\n });\r\n };\r\n\r\n init();\r\n\r\n}\r\n\r\n","/*************************************************/\r\n/* HEADER */\r\n/*************************************************/\r\n\r\nexport function menu(body) {\r\n const menuToggleButtonSelector = '.menu-nav-desktop__btn';\r\n const menuOverlayWrapSelector = '.menu-nav-desktop__overlay-wrap';\r\n const menuBlackoutSelector = '.menu-nav-desktop__overlay-blackout';\r\n const menuItemWithChildrenSelectore = '.menu-nav-desktop__link--parent';\r\n const subNavigationSelector = '.menu-nav-desktop__sub-navigation';\r\n const activeClassName = 'active';\r\n const bodyActiveClassName = 'desktop-navigation-active';\r\n\r\n function toggleMenu(){\r\n const menuWrap = document.querySelector(menuOverlayWrapSelector);\r\n if (!menuWrap) return false;\r\n\r\n if (!menuWrap.classList.contains(activeClassName)) {\r\n menuWrap.classList.add(activeClassName);\r\n body.classList.add(bodyActiveClassName);\r\n } else if (menuWrap.classList.contains(activeClassName)) {\r\n menuWrap.classList.remove(activeClassName);\r\n body.classList.remove(bodyActiveClassName);\r\n\r\n }\r\n }\r\n\r\n const init = () => {\r\n\r\n const menuToggleButton = document.querySelector(menuToggleButtonSelector);\r\n if (menuToggleButton) {\r\n menuToggleButton.addEventListener('click', e => {\r\n //Yes, we could traverse up and find the relevant one, but there should only be one menu nonetheless\r\n toggleMenu();\r\n });\r\n }\r\n\r\n const menuBlackout = document.querySelector(menuBlackoutSelector);\r\n if(menuBlackout) {\r\n menuBlackout.addEventListener('click', e => {\r\n toggleMenu();\r\n });\r\n }\r\n\r\n\r\n const navItemsWithChildren = document.querySelectorAll(menuItemWithChildrenSelectore);\r\n const subNavigations = document.querySelectorAll(subNavigationSelector);\r\n if (navItemsWithChildren && subNavigations) {\r\n navItemsWithChildren.forEach(item => {\r\n item.addEventListener('click', e => {\r\n\r\n const subNavigationId = item.dataset.subNavigationId;\r\n if (!subNavigationId) return false;\r\n\r\n const subNavigation = Array.from(subNavigations).find(x=>x.id == subNavigationId);\r\n if (!subNavigation) return false;\r\n\r\n subNavigations.forEach(subNavigation => {\r\n subNavigation.classList.remove(activeClassName);\r\n });\r\n\r\n subNavigation.classList.add(activeClassName);\r\n\r\n });\r\n });\r\n }\r\n\r\n };\r\n\r\n init();\r\n\r\n}\r\n\r\n"],"names":["search","typeTimer","searchFormInput","suggestionsSelector","searchFormSelector","document","querySelector","addEventListener","searchForm","dataset","showSuggestions","remove","query","value","clearTimeout","setTimeout","endpointUrl","getAttribute","fetch","then","response","text","data","insertAdjacentHTML","style","display","err","console","log","error","getAndDisplaySearchResults","e","clickTarget","target","searchResultBox","closest","searchbar","body","searchContainer","searchInput","showSearchClass","closeSearch","classList","setAttribute","stopPropagation","contains","add","focus","init","this","openModal","closeModal","playVideoInModal","playYoutubeVideoInModal","videoPlayingInModal","modal","bodyLoadingClass","utils","modals","Array","from","querySelectorAll","modalContentClassSelector","mainContentSelector","modalPlayerId","modalShowClass","triggerElement","length","Modal","OpenModal","modalId","content","activeElement","appendChild","CloseModal","removeChild","closeModalEvent","CustomEvent","customEventsNames","bubbles","dispatchEvent","Video","AddYoutubeVideoToModal","videoId","player","createElement","id","playYoutubeVideoEvent","detail","playerId","AddVideoToModal","videoElement","playVideoEvent","forEach","preventDefault","cookies","cookiePlaceholderSelector","placeholderSelectors","SetPlaceholderDisplayState","placeholder","displayState","window","event","marketingPlaceholders","Cookiebot","consent","marketing","statisticsPlaceholders","statistics","preferencesPlaceholders","preferences","categories","split","renew","obj","constructor","Object","extend","src","keys","key","ssrDocument","removeEventListener","blur","nodeName","getElementById","createEvent","initEvent","children","childNodes","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","doc","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","getComputedStyle","getPropertyValue","Image","Date","screen","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","win","delay","now","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","transform","webkitTransform","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","o","prototype","call","slice","to","arguments","undefined","noExtend","i","nextSource","node","HTMLElement","nodeType","keysArray","filter","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","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","element","selector","matches","tag","classes","isArray","elementStyle","prop","child","previousSibling","size","includeMargins","offsetWidth","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","num","Number","isWebView","test","calcBrowser","eventsEmitter","on","events","handler","priority","self","eventsListeners","destroyed","method","once","onceHandler","off","__emitterProxy","_len","args","_key","apply","onAny","eventsAnyListeners","offAny","index","splice","eventHandler","emit","context","_len2","_key2","unshift","processLazyPreloader","imageEl","slideEl","isElement","slideClass","lazyEl","lazyPreloaderClass","shadowRoot","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","push","_","column","slideIndexLastInView","rewind","loop","realIndex","update","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionLabel","property","getDirectionPropertyValue","label","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","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","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","slideActiveClass","slideNextClass","slidePrevClass","nextSlide","nextEls","nextElementSibling","next","elementNextAll","prevSlide","prevEls","previousElementSibling","prev","elementPrevAll","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","initialized","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","getTranslate","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","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","loopFix","_clientLeft","clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","slideRealIndex","activeSlideIndex","byMousewheel","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","swiperLoopMoveDOM","prepend","append","recalcSlides","currentSlideTranslate","diff","touches","touchEventsData","controller","control","loopParams","c","loopDestroy","newSlidesOrder","swiperSlideIndex","onTouchStart","evCache","simulateTouch","pointerType","originalEvent","targetEl","touchEventsTarget","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","path","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","innerWidth","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","pointerIndex","findIndex","cachedEv","pointerId","targetTouch","preventedByNestedSwiper","prevX","prevY","touchReleaseOnEdges","targetTouches","diffX","diffY","sqrt","touchAngle","atan2","zoom","cancelable","touchMoveStopPropagation","nested","touchesDiff","previousX","previousY","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","startTranslate","evt","allowMomentumBounce","grabCursor","setGrabCursor","loopFixed","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","type","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","scrollLeft","scrollTop","onLoad","dummyEventAttached","dummyEventListener","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","resizeObserver","createElements","url","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","transition","transitionDuration","transitionDelay","moving","isLocked","__preventObserver__","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","fill","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","changeDirection","isEnabled","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","item","prepareClasses","removeClasses","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","setProgress","cls","className","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","getWrapperSelector","trim","getWrapper","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","module","m","prototypeGroup","protoMethod","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","parents","parent","parentElement","disconnect","hideOnClick","disabledClass","hiddenClass","lockClass","navigationDisabledClass","makeElementsArray","getEl","res","toggleEl","disabled","subEl","tagName","onPrevClick","onNextClick","checkProps","initButton","destroyButton","_s","pagination","clickable","isHidden","toggle","timeout","raf","timeLeft","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","onTransitionEnd","calcTimeLeft","run","delayForce","currentSlideDelay","activeSlideEl","getSlideDelay","proceed","start","stop","pause","reset","onVisibilityChange","visibilityState","onPointerEnter","onPointerLeave","logoSliderElements","EventsSliderElements","slider","slideChangeTransitionEnd","activeClass","targetsClasses","languageSelectorSelector","visibleClass","toggleLanguageSelector","videoPlayerSelector","modalVideoPlayerId","videoPlayerPlayingClass","rootMargin","targets","targetElements","IntersectionObserver","entry","isIntersecting","backgroundAttribute","backgroundImage","headerElement","headerStickyClass","setStickyHeader","pageYOffset","header","languageSelector","languageSelectors","activeClassName","bodyActiveClassName","toggleMenu","menuWrap","menuToggleButton","menuBlackout","navItemsWithChildren","subNavigations","subNavigationId","subNavigation","find","menu","playYoutubeVideo","iterations","loadViewTimer","setInterval","youtubeLoaded","clearInterval","YT","Player","onPlayerReady","onPlayerStateChange","playerVars","showinfo","rel","playVideo","play","videoPlayerElement","videoStartedPlayingInModalEvent","Event","playerInfo","videoData","video_id","PlayerState","ENDED","videoPlayerActionHandler","videoItem","videoSources","videosources","videoTypes","videotypes","controls","sourceElement","openModalEvent","replaceChildren","firstScriptTag","insertBefore","CookieConsent","videoPlayers","readyState"],"sourceRoot":""}