{"version":3,"file":"front.js","sources":["../../node_modules/swiper/shared/ssr-window.esm.mjs","../../sources/javascripts/front/components/navigation.js","../../sources/javascripts/front/components/header.js","../../sources/javascripts/front/components/job.js","../../node_modules/swiper/shared/utils.mjs","../../node_modules/swiper/shared/swiper-core.mjs","../../node_modules/swiper/shared/classes-to-selector.mjs","../../sources/javascripts/front/components/hero.js","../../node_modules/swiper/modules/pagination.mjs","../../node_modules/swiper/shared/create-element-if-not-defined.mjs","../../node_modules/swiper/modules/autoplay.mjs","../../node_modules/lodash.throttle/index.js","../../node_modules/lodash.debounce/index.js","../../node_modules/aos/dist/aos.esm.js","../../sources/javascripts/front.js"],"sourcesContent":["/**\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","document.addEventListener(\"DOMContentLoaded\", () => {\n // Open megamenu\n const menuButtons = document.querySelectorAll(\".js-menu-button\");\n const megaMenus = document.querySelectorAll(\".js-megamenu\");\n const backButtons = document.querySelectorAll(\".js-back-button\");\n\n function removeActiveClassFromElements(elements) {\n elements.forEach((element) => {\n element.classList.remove(\"active\");\n });\n }\n\n backButtons.forEach((backButton) => {\n backButton.addEventListener(\"click\", () => {\n removeActiveClassFromElements(menuButtons);\n removeActiveClassFromElements(megaMenus);\n menuButtons.forEach((btn) => {\n btn.setAttribute(\"aria-expanded\", \"false\");\n });\n setTimeout(() => {\n megaMenus.forEach((megaMenu) => megaMenu.classList.add(\"none\"));\n }, 200);\n });\n });\n\n menuButtons.forEach((menuBtn) => {\n menuBtn.addEventListener(\"click\", () => {\n removeActiveClassFromElements(megaMenus);\n const attributeBtn = menuBtn.getAttribute(\"aria-controls\");\n\n if (menuBtn.classList.contains(\"active\")) {\n removeActiveClassFromElements(menuButtons);\n removeActiveClassFromElements(megaMenus);\n menuButtons.forEach((btn) => {});\n megaMenus.forEach((megaMenu) => {\n setTimeout(() => megaMenu.classList.add(\"none\"), 200);\n });\n } else {\n removeActiveClassFromElements(menuButtons);\n menuButtons.forEach((btn) => {\n const btnAttribute = btn.getAttribute(\"aria-controls\");\n btn.setAttribute(\"aria-expanded\", \"false\");\n if (btnAttribute === attributeBtn) {\n btn.classList.add(\"active\");\n btn.setAttribute(\"aria-expanded\", \"true\");\n }\n });\n\n megaMenus.forEach((megaMenu) => {\n const attributeMenu = megaMenu.getAttribute(\"id\");\n if (attributeMenu === attributeBtn) {\n megaMenu.classList.remove(\"none\");\n setTimeout(() => megaMenu.classList.add(\"active\"), 200);\n } else {\n setTimeout(() => megaMenu.classList.add(\"none\"), 200);\n }\n });\n }\n });\n });\n\n document.addEventListener(\"click\", (event) => {\n let clickedInsideMegaMenu = false;\n\n megaMenus.forEach((megaMenu) => {\n if (event.target.closest(\".js-megamenu\") === megaMenu) {\n clickedInsideMegaMenu = true;\n return;\n }\n });\n\n if (!clickedInsideMegaMenu) {\n megaMenus.forEach((megaMenu) => {\n if (megaMenu.classList.contains(\"active\")) {\n removeActiveClassFromElements(menuButtons);\n removeActiveClassFromElements(megaMenus);\n menuButtons.forEach((menuBtn) => {\n menuBtn.setAttribute(\"aria-expanded\", \"false\");\n setTimeout(() => megaMenu.classList.add(\"none\"), 200);\n });\n }\n });\n }\n });\n\n // Responsive\n\n const header = document.querySelector(\".js-header\");\n const burgerBtn = document.querySelector(\".js-burger\");\n const navMain = document.querySelector(\".js-nav-main\");\n const secondaryMenuButtons = document.querySelectorAll(\".js-s-menu-button\");\n\n if (burgerBtn) {\n burgerBtn.addEventListener(\"click\", () => {\n if (header.classList.contains(\"open\")) {\n burgerBtn.setAttribute(\"aria-expanded\", \"false\");\n navMain.classList.remove(\"open\");\n setTimeout(() => {\n header.classList.remove(\"open\");\n }, 200);\n } else {\n burgerBtn.setAttribute(\"aria-expanded\", \"true\");\n menuButtons.forEach((e) => {\n e.classList.remove(\"active\");\n });\n megaMenus.forEach((e) => {\n e.classList.remove(\"active\");\n });\n header.classList.add(\"open\");\n setTimeout(() => {\n navMain.classList.add(\"open\");\n }, 200);\n }\n });\n\n secondaryMenuButtons.forEach((secBtn) => {\n secBtn.addEventListener(\"click\", () => {\n header.classList.remove(\"open\");\n setTimeout(() => {\n navMain.classList.remove(\"open\");\n }, 200);\n });\n });\n }\n});\n","document.addEventListener(\"DOMContentLoaded\", () => {\n // Variable\n const $html = document.documentElement;\n const $body = document.querySelector(\"body\");\n const $header = document.querySelector(\".js-header\");\n const $toggle = document.querySelector(\".js-header-toggle\");\n const $main = document.querySelector(\".js-main\");\n\n const is_admin = $body.classList.contains(\"admin-bar\");\n\n if (is_admin) {\n $header.style.top = `${50}px`;\n }\n\n // Fonction\n\n let lastScrollTop = 0;\n let scrollingUp = false;\n let lastScrollPos = 0;\n let ticking = false;\n\n function headerState(currentScrollTop) {\n if (scrollingUp) {\n $header.style.top = `0`;\n $header.classList.remove(\"header-hidden\");\n } else {\n $header.classList.add(\"header-hidden\");\n $header.style.top = `-100%`;\n }\n\n lastScrollTop = currentScrollTop;\n }\n\n function handleScroll() {\n let scrollPos = window.pageYOffset || document.documentElement.scrollTop;\n\n if (scrollPos >= 150) {\n if (scrollPos >= lastScrollPos) {\n scrollingUp = false;\n } else {\n scrollingUp = true;\n }\n\n headerState(scrollPos);\n lastScrollPos = scrollPos <= 0 ? 0 : scrollPos;\n }\n\n ticking = false;\n }\n\n function requestTick() {\n window.requestAnimationFrame(handleScroll);\n ticking = true;\n }\n\n window.addEventListener(\"scroll\", function () {\n if (!ticking) {\n requestTick();\n }\n });\n});\n","document.addEventListener(\"DOMContentLoaded\", () => {\n const jobComponents = document.querySelectorAll(\".js-job\");\n const jobButtons = document.querySelectorAll(\".js-job-button\");\n const jobLists = document.querySelectorAll(\".js-job-list\");\n\n function removeActiveClassFromElements(elements) {\n elements.forEach((element) => {\n element.classList.remove(\"active\");\n });\n }\n\n const originalButtonTexts = [];\n jobButtons.forEach((btn) => {\n originalButtonTexts.push(btn.innerHTML);\n });\n\n jobButtons.forEach((btn, index) => {\n btn.addEventListener(\"click\", () => {\n const isBtnActive = btn.classList.contains(\"active\");\n\n removeActiveClassFromElements(jobLists);\n removeActiveClassFromElements(jobButtons);\n removeActiveClassFromElements(jobComponents);\n\n if (!isBtnActive) {\n jobComponents[index].classList.add(\"active\");\n jobLists[index].style.maxHeight = jobLists[index].scrollHeight + \"px\";\n btn.setAttribute(\"aria-expanded\", \"true\");\n btn.classList.add(\"active\");\n btn.innerHTML = \"RĂ©duire\";\n jobLists[index].classList.remove(\"hide\");\n setTimeout(() => {\n jobLists[index].classList.add(\"active\");\n }, 500);\n\n } else {\n jobComponents[index].classList.remove(\"active\");\n jobLists[index].style.maxHeight = null;\n btn.setAttribute(\"aria-expanded\", \"false\");\n btn.classList.remove(\"active\");\n btn.innerHTML = originalButtonTexts[index];\n setTimeout(() => {\n jobLists[index].classList.add(\"hide\");\n }, 500);\n }\n });\n });\n});\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 if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n } else {\n // init later\n requestAnimationFrame(() => {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl) lazyEl.remove();\n }\n });\n }\n }\n if (lazyEl) lazyEl.remove();\n }\n};\nconst unlazy = (swiper, index) => {\n if (!swiper.slides[index]) return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0) return;\n amount = Math.min(amount, len);\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n const activeIndex = swiper.activeIndex;\n if (swiper.params.grid && swiper.params.grid.rows > 1) {\n const activeColumn = activeIndex;\n const preloadColumns = [activeColumn - amount];\n preloadColumns.push(...Array.from({\n length: amount\n }).map((_, i) => {\n return activeColumn + slidesPerView + i;\n }));\n swiper.slides.forEach((slideEl, i) => {\n if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n });\n return;\n }\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind || swiper.params.loop) {\n for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n const realIndex = (i % len + len) % len;\n if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n }\n } else {\n for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n unlazy(swiper, i);\n }\n }\n }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n const {\n slidesGrid,\n params\n } = swiper;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n const getVirtualRealIndex = aIndex => {\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) {\n realIndex = swiper.virtual.slides.length + realIndex;\n }\n if (realIndex >= swiper.virtual.slides.length) {\n realIndex -= swiper.virtual.slides.length;\n }\n return realIndex;\n };\n if (typeof activeIndex === 'undefined') {\n activeIndex = getActiveIndexByTranslate(swiper);\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\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 (swiper.initialized || swiper.params.runCallbacksOnInit) {\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n }\n}\n\nfunction updateClickedSlide(el, path) {\n const swiper = this;\n const params = swiper.params;\n let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n slide = pathEl;\n }\n });\n }\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}\n\nvar translate = {\n getTranslate: getSwiperTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};\n\nfunction setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n }\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n\nfunction transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}\n\nfunction transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}\n\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd\n};\n\nfunction slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\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 if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n });\n return true;\n }\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\n if (!enabled) return swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n });\n return true;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n 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 const allowLoopFix = swiper.swipeDirection === 'next' && swiper.allowSlideNext || swiper.swipeDirection === 'prev' && swiper.allowSlidePrev;\n if (!data.isMoved) {\n if (isLoop && allowLoopFix) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n if (data.isMoved && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && 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 && allowLoopFix && !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 && allowLoopFix && !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, pathTree);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.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 const wasLoop = params.loop;\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n const hasLoop = swiper.params.loop;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (initialized) {\n if (needsReLoop) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (!wasLoop && hasLoop) {\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (wasLoop && !hasLoop) {\n swiper.loopDestroy();\n }\n }\n swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n\nvar breakpoints = {\n setBreakpoint,\n getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\nfunction addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}\n\nvar classes = {\n addClasses,\n removeClasses\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nvar checkOverflow$1 = {\n checkOverflow\n};\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n 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 (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n params[moduleParamName].auto = true;\n }\n if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n params[moduleParamName].auto = true;\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events: events$1,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor() {\n let el;\n let params;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n 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 (typeof params.slidesPerView === 'number') return params.slidesPerView;\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","function classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return `.${classes.trim().replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n\nexport { classesToSelector as c };\n","import Swiper from 'swiper';\nimport {Pagination, Autoplay} from 'swiper/modules';\n\nconst hero = document.querySelector('.js-hero');\n\nconst swiper = new Swiper(hero, {\n modules: [Pagination, Autoplay],\n centeredSlides: true,\n loop: true,\n pagination: {\n el: \".swiper-pagination\",\n clickable: true,\n },\n autoplay: {\n delay: 5000,\n disableOnInteraction: true,\n },\n});\n","import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { f as elementOuterSize, g as elementIndex, a as elementParents } from '../shared/utils.mjs';\n\nfunction Pagination(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e);\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n }\n function setSideBullets(bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n if (!bulletEl) return;\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n }\n }\n }\n function onBulletClick(e) {\n const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n if (!bulletEl) {\n return;\n }\n e.preventDefault();\n const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n if (swiper.params.loop) {\n if (swiper.realIndex === index) return;\n const realIndex = swiper.realIndex;\n const newSlideIndex = swiper.getSlideIndexByData(index);\n const currentSlideIndex = swiper.getSlideIndexByData(swiper.realIndex);\n const loopFix = dir => {\n const indexBeforeLoopFix = swiper.activeIndex;\n swiper.loopFix({\n direction: dir,\n activeSlideIndex: newSlideIndex,\n slideTo: false\n });\n const indexAfterFix = swiper.activeIndex;\n if (indexBeforeLoopFix === indexAfterFix) {\n swiper.slideToLoop(realIndex, 0, false, true);\n }\n };\n if (newSlideIndex > swiper.slides.length - swiper.loopedSlides) {\n loopFix(newSlideIndex > currentSlideIndex ? 'next' : 'prev');\n } else if (swiper.params.centeredSlides) {\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n if (newSlideIndex < Math.floor(slidesPerView / 2)) {\n loopFix('prev');\n }\n }\n swiper.slideToLoop(index);\n } else {\n swiper.slideTo(index);\n }\n }\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n // Current/Total\n let current;\n let previousIndex;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n previousIndex = swiper.previousRealIndex || 0;\n current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n previousIndex = swiper.previousSnapIndex;\n } else {\n previousIndex = swiper.previousIndex || 0;\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n el.forEach(subEl => {\n subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n });\n if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n dynamicBulletIndex += current - (previousIndex || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.forEach(bulletEl => {\n const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n bulletEl.classList.remove(...classesToRemove);\n });\n if (el.length > 1) {\n bullets.forEach(bullet => {\n const bulletIndex = elementIndex(bullet);\n if (bulletIndex === current) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n } else if (swiper.isElement) {\n bullet.setAttribute('part', 'bullet');\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n if (bulletIndex === firstIndex) {\n setSideBullets(bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets(bullet, 'next');\n }\n }\n });\n } else {\n const bullet = bullets[current];\n if (bullet) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n }\n if (swiper.isElement) {\n bullets.forEach((bulletEl, bulletIndex) => {\n bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');\n });\n }\n if (params.dynamicBullets) {\n const firstDisplayedBullet = bullets[firstIndex];\n const lastDisplayedBullet = bullets[lastIndex];\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n if (bullets[i]) {\n bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n }\n setSideBullets(firstDisplayedBullet, 'prev');\n setSideBullets(lastDisplayedBullet, 'next');\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.forEach(bullet => {\n bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n });\n }\n }\n el.forEach((subEl, subElIndex) => {\n if (params.type === 'fraction') {\n subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n fractionEl.textContent = params.formatFractionCurrent(current + 1);\n });\n subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n totalEl.textContent = params.formatFractionTotal(total);\n });\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n });\n }\n if (params.type === 'custom' && params.renderCustom) {\n subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n if (subElIndex === 0) emit('paginationRender', subEl);\n } else {\n if (subElIndex === 0) emit('paginationRender', subEl);\n emit('paginationUpdate', subEl);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n });\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n // prettier-ignore\n paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\">${params.bulletElement}>`;\n }\n }\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `` + ' / ' + ``;\n }\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n }\n swiper.pagination.bullets = [];\n el.forEach(subEl => {\n if (params.type !== 'custom') {\n subEl.innerHTML = paginationHTML || '';\n }\n if (params.type === 'bullets') {\n swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\n }\n });\n if (params.type !== 'custom') {\n emit('paginationRender', el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = [...document.querySelectorAll(params.el)];\n }\n if (!el) {\n el = params.el;\n }\n if (!el || el.length === 0) return;\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n el = [...swiper.el.querySelectorAll(params.el)];\n // check if it belongs to another nested Swiper\n if (el.length > 1) {\n el = el.filter(subEl => {\n if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n return true;\n })[0];\n }\n }\n if (Array.isArray(el) && el.length === 1) el = el[0];\n Object.assign(swiper.pagination, {\n el\n });\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (params.type === 'bullets' && params.clickable) {\n subEl.classList.add(...(params.clickableClass || '').split(' '));\n }\n subEl.classList.add(params.modifierClass + params.type);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.type === 'bullets' && params.dynamicBullets) {\n subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n subEl.classList.add(params.progressbarOppositeClass);\n }\n if (params.clickable) {\n subEl.addEventListener('click', onBulletClick);\n }\n if (!swiper.enabled) {\n subEl.classList.add(params.lockClass);\n }\n });\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.hiddenClass);\n subEl.classList.remove(params.modifierClass + params.type);\n subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.clickable) {\n subEl.classList.remove(...(params.clickableClass || '').split(' '));\n subEl.removeEventListener('click', onBulletClick);\n }\n });\n }\n if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));\n }\n on('changeDirection', () => {\n if (!swiper.pagination || !swiper.pagination.el) return;\n const params = swiper.params.pagination;\n let {\n el\n } = swiper.pagination;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n update();\n });\n on('snapGridLengthChange', () => {\n render();\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const el = makeElementsArray(swiper.pagination.el);\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n }\n init();\n render();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}\n\nexport { Pagination as default };\n","import { 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","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = throttle;\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","import throttle from 'lodash.throttle';\nimport debounce from 'lodash.debounce';\n\nvar callback = function callback() {};\n\nfunction containsAOSNode(nodes) {\n var i = void 0,\n currentNode = void 0,\n result = void 0;\n\n for (i = 0; i < nodes.length; i += 1) {\n currentNode = nodes[i];\n\n if (currentNode.dataset && currentNode.dataset.aos) {\n return true;\n }\n\n result = currentNode.children && containsAOSNode(currentNode.children);\n\n if (result) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction check(mutations) {\n if (!mutations) return;\n\n mutations.forEach(function (mutation) {\n var addedNodes = Array.prototype.slice.call(mutation.addedNodes);\n var removedNodes = Array.prototype.slice.call(mutation.removedNodes);\n var allNodes = addedNodes.concat(removedNodes);\n\n if (containsAOSNode(allNodes)) {\n return callback();\n }\n });\n}\n\nfunction getMutationObserver() {\n return window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;\n}\n\nfunction isSupported() {\n return !!getMutationObserver();\n}\n\nfunction ready(selector, fn) {\n var doc = window.document;\n var MutationObserver = getMutationObserver();\n\n var observer = new MutationObserver(check);\n callback = fn;\n\n observer.observe(doc.documentElement, {\n childList: true,\n subtree: true,\n removedNodes: true\n });\n}\n\nvar observer = { isSupported: isSupported, ready: ready };\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/**\n * Device detector\n */\n\nvar fullNameRe = /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i;\nvar prefixRe = /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i;\nvar fullNameMobileRe = /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i;\nvar prefixMobileRe = /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i;\n\nfunction ua() {\n return navigator.userAgent || navigator.vendor || window.opera || '';\n}\n\nvar Detector = function () {\n function Detector() {\n classCallCheck(this, Detector);\n }\n\n createClass(Detector, [{\n key: 'phone',\n value: function phone() {\n var a = ua();\n return !!(fullNameRe.test(a) || prefixRe.test(a.substr(0, 4)));\n }\n }, {\n key: 'mobile',\n value: function mobile() {\n var a = ua();\n return !!(fullNameMobileRe.test(a) || prefixMobileRe.test(a.substr(0, 4)));\n }\n }, {\n key: 'tablet',\n value: function tablet() {\n return this.mobile() && !this.phone();\n }\n\n // http://browserhacks.com/#hack-acea075d0ac6954f275a70023906050c\n\n }, {\n key: 'ie11',\n value: function ie11() {\n return '-ms-scroll-limit' in document.documentElement.style && '-ms-ime-align' in document.documentElement.style;\n }\n }]);\n return Detector;\n}();\n\nvar detect = new Detector();\n\n/**\n * Adds multiple classes on node\n * @param {DOMNode} node\n * @param {array} classes\n */\nvar addClasses = function addClasses(node, classes) {\n return classes && classes.forEach(function (className) {\n return node.classList.add(className);\n });\n};\n\n/**\n * Removes multiple classes from node\n * @param {DOMNode} node\n * @param {array} classes\n */\nvar removeClasses = function removeClasses(node, classes) {\n return classes && classes.forEach(function (className) {\n return node.classList.remove(className);\n });\n};\n\nvar fireEvent = function fireEvent(eventName, data) {\n var customEvent = void 0;\n\n if (detect.ie11()) {\n customEvent = document.createEvent('CustomEvent');\n customEvent.initCustomEvent(eventName, true, true, { detail: data });\n } else {\n customEvent = new CustomEvent(eventName, {\n detail: data\n });\n }\n\n return document.dispatchEvent(customEvent);\n};\n\n/**\n * Set or remove aos-animate class\n * @param {node} el element\n * @param {int} top scrolled distance\n */\nvar applyClasses = function applyClasses(el, top) {\n var options = el.options,\n position = el.position,\n node = el.node,\n data = el.data;\n\n\n var hide = function hide() {\n if (!el.animated) return;\n\n removeClasses(node, options.animatedClassNames);\n fireEvent('aos:out', node);\n\n if (el.options.id) {\n fireEvent('aos:in:' + el.options.id, node);\n }\n\n el.animated = false;\n };\n\n var show = function show() {\n if (el.animated) return;\n\n addClasses(node, options.animatedClassNames);\n\n fireEvent('aos:in', node);\n if (el.options.id) {\n fireEvent('aos:in:' + el.options.id, node);\n }\n\n el.animated = true;\n };\n\n if (options.mirror && top >= position.out && !options.once) {\n hide();\n } else if (top >= position.in) {\n show();\n } else if (el.animated && !options.once) {\n hide();\n }\n};\n\n/**\n * Scroll logic - add or remove 'aos-animate' class on scroll\n *\n * @param {array} $elements array of elements nodes\n * @return {void}\n */\nvar handleScroll = function handleScroll($elements) {\n return $elements.forEach(function (el, i) {\n return applyClasses(el, window.pageYOffset);\n });\n};\n\n/**\n * Get offset of DOM element\n * like there were no transforms applied on it\n *\n * @param {Node} el [DOM element]\n * @return {Object} [top and left offset]\n */\nvar offset = function offset(el) {\n var _x = 0;\n var _y = 0;\n\n while (el && !isNaN(el.offsetLeft) && !isNaN(el.offsetTop)) {\n _x += el.offsetLeft - (el.tagName != 'BODY' ? el.scrollLeft : 0);\n _y += el.offsetTop - (el.tagName != 'BODY' ? el.scrollTop : 0);\n el = el.offsetParent;\n }\n\n return {\n top: _y,\n left: _x\n };\n};\n\n/**\n * Get inline option with a fallback.\n *\n * @param {Node} el [Dom element]\n * @param {String} key [Option key]\n * @param {String} fallback [Default (fallback) value]\n * @return {Mixed} [Option set with inline attributes or fallback value if not set]\n */\n\nvar getInlineOption = (function (el, key, fallback) {\n var attr = el.getAttribute('data-aos-' + key);\n\n if (typeof attr !== 'undefined') {\n if (attr === 'true') {\n return true;\n } else if (attr === 'false') {\n return false;\n }\n }\n\n return attr || fallback;\n});\n\n/**\n * Calculate offset\n * basing on element's settings like:\n * - anchor\n * - offset\n *\n * @param {Node} el [Dom element]\n * @return {Integer} [Final offset that will be used to trigger animation in good position]\n */\n\nvar getPositionIn = function getPositionIn(el, defaultOffset, defaultAnchorPlacement) {\n var windowHeight = window.innerHeight;\n var anchor = getInlineOption(el, 'anchor');\n var inlineAnchorPlacement = getInlineOption(el, 'anchor-placement');\n var additionalOffset = Number(getInlineOption(el, 'offset', inlineAnchorPlacement ? 0 : defaultOffset));\n var anchorPlacement = inlineAnchorPlacement || defaultAnchorPlacement;\n var finalEl = el;\n\n if (anchor && document.querySelectorAll(anchor)) {\n finalEl = document.querySelectorAll(anchor)[0];\n }\n\n var triggerPoint = offset(finalEl).top - windowHeight;\n\n switch (anchorPlacement) {\n case 'top-bottom':\n // Default offset\n break;\n case 'center-bottom':\n triggerPoint += finalEl.offsetHeight / 2;\n break;\n case 'bottom-bottom':\n triggerPoint += finalEl.offsetHeight;\n break;\n case 'top-center':\n triggerPoint += windowHeight / 2;\n break;\n case 'center-center':\n triggerPoint += windowHeight / 2 + finalEl.offsetHeight / 2;\n break;\n case 'bottom-center':\n triggerPoint += windowHeight / 2 + finalEl.offsetHeight;\n break;\n case 'top-top':\n triggerPoint += windowHeight;\n break;\n case 'bottom-top':\n triggerPoint += windowHeight + finalEl.offsetHeight;\n break;\n case 'center-top':\n triggerPoint += windowHeight + finalEl.offsetHeight / 2;\n break;\n }\n\n return triggerPoint + additionalOffset;\n};\n\nvar getPositionOut = function getPositionOut(el, defaultOffset) {\n var windowHeight = window.innerHeight;\n var anchor = getInlineOption(el, 'anchor');\n var additionalOffset = getInlineOption(el, 'offset', defaultOffset);\n var finalEl = el;\n\n if (anchor && document.querySelectorAll(anchor)) {\n finalEl = document.querySelectorAll(anchor)[0];\n }\n\n var elementOffsetTop = offset(finalEl).top;\n\n return elementOffsetTop + finalEl.offsetHeight - additionalOffset;\n};\n\n/* Clearing variables */\n\nvar prepare = function prepare($elements, options) {\n $elements.forEach(function (el, i) {\n var mirror = getInlineOption(el.node, 'mirror', options.mirror);\n var once = getInlineOption(el.node, 'once', options.once);\n var id = getInlineOption(el.node, 'id');\n var customClassNames = options.useClassNames && el.node.getAttribute('data-aos');\n\n var animatedClassNames = [options.animatedClassName].concat(customClassNames ? customClassNames.split(' ') : []).filter(function (className) {\n return typeof className === 'string';\n });\n\n if (options.initClassName) {\n el.node.classList.add(options.initClassName);\n }\n\n el.position = {\n in: getPositionIn(el.node, options.offset, options.anchorPlacement),\n out: mirror && getPositionOut(el.node, options.offset)\n };\n\n el.options = {\n once: once,\n mirror: mirror,\n animatedClassNames: animatedClassNames,\n id: id\n };\n });\n\n return $elements;\n};\n\n/**\n * Generate initial array with elements as objects\n * This array will be extended later with elements attributes values\n * like 'position'\n */\nvar elements = (function () {\n var elements = document.querySelectorAll('[data-aos]');\n return Array.prototype.map.call(elements, function (node) {\n return { node: node };\n });\n});\n\n/**\n * *******************************************************\n * AOS (Animate on scroll) - wowjs alternative\n * made to animate elements on scroll in both directions\n * *******************************************************\n */\n\n/**\n * Private variables\n */\nvar $aosElements = [];\nvar initialized = false;\n\n/**\n * Default options\n */\nvar options = {\n offset: 120,\n delay: 0,\n easing: 'ease',\n duration: 400,\n disable: false,\n once: false,\n mirror: false,\n anchorPlacement: 'top-bottom',\n startEvent: 'DOMContentLoaded',\n animatedClassName: 'aos-animate',\n initClassName: 'aos-init',\n useClassNames: false,\n disableMutationObserver: false,\n throttleDelay: 99,\n debounceDelay: 50\n};\n\n// Detect not supported browsers (<=IE9)\n// http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\nvar isBrowserNotSupported = function isBrowserNotSupported() {\n return document.all && !window.atob;\n};\n\nvar initializeScroll = function initializeScroll() {\n // Extend elements objects in $aosElements with their positions\n $aosElements = prepare($aosElements, options);\n // Perform scroll event, to refresh view and show/hide elements\n handleScroll($aosElements);\n\n /**\n * Handle scroll event to animate elements on scroll\n */\n window.addEventListener('scroll', throttle(function () {\n handleScroll($aosElements, options.once);\n }, options.throttleDelay));\n\n return $aosElements;\n};\n\n/**\n * Refresh AOS\n */\nvar refresh = function refresh() {\n var initialize = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n // Allow refresh only when it was first initialized on startEvent\n if (initialize) initialized = true;\n if (initialized) initializeScroll();\n};\n\n/**\n * Hard refresh\n * create array with new elements and trigger refresh\n */\nvar refreshHard = function refreshHard() {\n $aosElements = elements();\n\n if (isDisabled(options.disable) || isBrowserNotSupported()) {\n return disable();\n }\n\n refresh();\n};\n\n/**\n * Disable AOS\n * Remove all attributes to reset applied styles\n */\nvar disable = function disable() {\n $aosElements.forEach(function (el, i) {\n el.node.removeAttribute('data-aos');\n el.node.removeAttribute('data-aos-easing');\n el.node.removeAttribute('data-aos-duration');\n el.node.removeAttribute('data-aos-delay');\n\n if (options.initClassName) {\n el.node.classList.remove(options.initClassName);\n }\n\n if (options.animatedClassName) {\n el.node.classList.remove(options.animatedClassName);\n }\n });\n};\n\n/**\n * Check if AOS should be disabled based on provided setting\n */\nvar isDisabled = function isDisabled(optionDisable) {\n return optionDisable === true || optionDisable === 'mobile' && detect.mobile() || optionDisable === 'phone' && detect.phone() || optionDisable === 'tablet' && detect.tablet() || typeof optionDisable === 'function' && optionDisable() === true;\n};\n\n/**\n * Initializing AOS\n * - Create options merging defaults with user defined options\n * - Set attributes on as global setting - css relies on it\n * - Attach preparing elements to options.startEvent,\n * window resize and orientation change\n * - Attach function that handle scroll and everything connected to it\n * to window scroll event and fire once document is ready to set initial state\n */\nvar init = function init(settings) {\n options = _extends(options, settings);\n\n // Create initial array with elements -> to be fullfilled later with prepare()\n $aosElements = elements();\n\n /**\n * Disable mutation observing if not supported\n */\n if (!options.disableMutationObserver && !observer.isSupported()) {\n console.info('\\n aos: MutationObserver is not supported on this browser,\\n code mutations observing has been disabled.\\n You may have to call \"refreshHard()\" by yourself.\\n ');\n options.disableMutationObserver = true;\n }\n\n /**\n * Observe [aos] elements\n * If something is loaded by AJAX\n * it'll refresh plugin automatically\n */\n if (!options.disableMutationObserver) {\n observer.ready('[data-aos]', refreshHard);\n }\n\n /**\n * Don't init plugin if option `disable` is set\n * or when browser is not supported\n */\n if (isDisabled(options.disable) || isBrowserNotSupported()) {\n return disable();\n }\n\n /**\n * Set global settings on body, based on options\n * so CSS can use it\n */\n document.querySelector('body').setAttribute('data-aos-easing', options.easing);\n\n document.querySelector('body').setAttribute('data-aos-duration', options.duration);\n\n document.querySelector('body').setAttribute('data-aos-delay', options.delay);\n\n /**\n * Handle initializing\n */\n if (['DOMContentLoaded', 'load'].indexOf(options.startEvent) === -1) {\n // Listen to options.startEvent and initialize AOS\n document.addEventListener(options.startEvent, function () {\n refresh(true);\n });\n } else {\n window.addEventListener('load', function () {\n refresh(true);\n });\n }\n\n if (options.startEvent === 'DOMContentLoaded' && ['complete', 'interactive'].indexOf(document.readyState) > -1) {\n // Initialize AOS if default startEvent was already fired\n refresh(true);\n }\n\n /**\n * Refresh plugin on window resize or orientation change\n */\n window.addEventListener('resize', debounce(refresh, options.debounceDelay, true));\n\n window.addEventListener('orientationchange', debounce(refresh, options.debounceDelay, true));\n\n return $aosElements;\n};\n\n/**\n * Export Public API\n */\n\nvar aos = {\n init: init,\n refresh: refresh,\n refreshHard: refreshHard\n};\n\nexport default aos;\n","// import { throttle, debounce } from 'throttle-debounce';\n\nimport './front/components/navigation';\nimport \"./front/components/header\";\nimport './front/components/job';\nimport './front/components/hero';\nimport AOS from 'aos';\ndocument.addEventListener('DOMContentLoaded', () => {\n AOS.init({\n duration: 800,\n });\n});\n"],"names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","length","document","addEventListener","menuButtons","querySelectorAll","megaMenus","removeActiveClassFromElements","elements","element","classList","remove","backButton","btn","setAttribute","setTimeout","megaMenu","add","menuBtn","attributeBtn","getAttribute","contains","btnAttribute","event","clickedInsideMegaMenu","closest","header","querySelector","burgerBtn","navMain","secondaryMenuButtons","e","secBtn","$body","$header","style","top","scrollingUp","lastScrollPos","ticking","handleScroll","scrollPos","window","pageYOffset","documentElement","scrollTop","requestAnimationFrame","jobComponents","jobButtons","jobLists","originalButtonTexts","push","innerHTML","index","isBtnActive","maxHeight","scrollHeight","ssrDocument","body","removeEventListener","activeElement","blur","nodeName","getElementById","createEvent","initEvent","createElement","children","childNodes","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","clearTimeout","matchMedia","callback","cancelAnimationFrame","id","getWindow","win","nextTick","delay","now","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","transform","webkitTransform","split","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","o","prototype","call","slice","isNode","node","HTMLElement","nodeType","to","arguments","undefined","noExtend","i","nextSource","keysArray","filter","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","elementChildren","selector","matches","tag","classes","Array","isArray","elementStyle","prop","elementIndex","child","previousSibling","elementParents","parents","parent","parentElement","elementOuterSize","size","includeMargins","offsetWidth","support","deviceCached","browser","getSupport","smoothScroll","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","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","splice","eventHandler","emit","data","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","from","_","column","slideIndexLastInView","rewind","loop","realIndex","update","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionLabel","property","marginRight","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","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","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","direction","step","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","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","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","innerWidth","preventDefault","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","stopPropagation","touchesDiff","previousX","previousY","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","startTranslate","evt","bubbles","dispatchEvent","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","onLoad","dummyEventAttached","dummyEventListener","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","breakpoint","getBreakpoint","breakpointsBase","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","fill","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","defaults","init","resizeObserver","createElements","url","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","transition","transitionDuration","transitionDelay","moving","isLocked","__preventObserver__","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","wasLocked","lastSlideRightEdge","classNames","suffixes","entries","prefix","resultClasses","item","prepareClasses","autoheight","centered","removeClasses","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","setProgress","cls","className","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","getWrapperSelector","trim","getWrapper","slideSlots","hostEl","addClasses","lazyElements","destroy","deleteInstance","cleanStyles","object","deleteProps","static","newDefaults","module","m","installModule","classesToSelector","prototypeGroup","protoMethod","use","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","hero","pfx","bulletSize","pagination","bulletElement","clickable","hideOnClick","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","hiddenClass","progressbarFillClass","progressbarOppositeClass","clickableClass","lockClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","makeElementsArray","isPaginationDisabled","setSideBullets","bulletEl","position","onBulletClick","newSlideIndex","currentSlideIndex","indexBeforeLoopFix","total","firstIndex","midIndex","subEl","classesToRemove","suffix","s","flat","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","offsetProp","subElIndex","fractionEl","textContent","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","render","paginationHTML","numberOfBullets","checkProps","createElementIfNotDefined","_s","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","FUNC_ERROR_TEXT","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","freeGlobal","global","freeSelf","root","Function","objectToString","nativeMax","nativeMin","debounce","func","wait","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","thisArg","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","remainingWait","debounced","isInvoking","toNumber","cancel","flush","isObjectLike","isSymbol","other","valueOf","isBinary","lodash_throttle","lodash_debounce","containsAOSNode","nodes","currentNode","dataset","aos","check","mutation","addedNodes","removedNodes","concat","getMutationObserver","WebKitMutationObserver","MozMutationObserver","isSupported","ready","fn","subtree","createClass","defineProperties","props","descriptor","configurable","writable","defineProperty","Constructor","protoProps","staticProps","_extends","source","hasOwnProperty","fullNameRe","prefixRe","fullNameMobileRe","prefixMobileRe","vendor","opera","detect","Detector","instance","classCallCheck","mobile","phone","fireEvent","customEvent","ie11","initCustomEvent","detail","$elements","hide","animated","animatedClassNames","mirror","out","in","applyClasses","offset","_x","_y","tagName","offsetParent","left","getInlineOption","fallback","attr","getPositionIn","defaultOffset","defaultAnchorPlacement","windowHeight","anchor","inlineAnchorPlacement","additionalOffset","anchorPlacement","finalEl","triggerPoint","getPositionOut","$aosElements","easing","startEvent","animatedClassName","initClassName","useClassNames","disableMutationObserver","throttleDelay","debounceDelay","isBrowserNotSupported","all","atob","initializeScroll","customClassNames","prepare","throttle","refresh","initialize","refreshHard","isDisabled","optionDisable","tablet","settings","console","info","readyState","AOS"],"mappings":"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"}