{"version":3,"file":"main-c6808cd4.js","sources":["../../build/src/ts/utils/index.ts","../../build/src/ts/components/preloader.ts","../../build/src/ts/components/main-nav.ts","../../build/node_modules/ts-debounce/dist/src/index.esm.js","../../build/src/ts/components/content-slider.ts","../../build/node_modules/ssr-window/ssr-window.esm.js","../../build/node_modules/dom7/dom7.esm.js","../../build/node_modules/swiper/shared/dom.js","../../build/node_modules/swiper/shared/utils.js","../../build/node_modules/swiper/shared/get-support.js","../../build/node_modules/swiper/shared/get-device.js","../../build/node_modules/swiper/shared/get-browser.js","../../build/node_modules/swiper/core/events-emitter.js","../../build/node_modules/swiper/core/update/index.js","../../build/node_modules/swiper/core/update/updateSize.js","../../build/node_modules/swiper/core/update/updateSlides.js","../../build/node_modules/swiper/core/update/updateAutoHeight.js","../../build/node_modules/swiper/core/update/updateSlidesOffset.js","../../build/node_modules/swiper/core/update/updateSlidesProgress.js","../../build/node_modules/swiper/core/update/updateProgress.js","../../build/node_modules/swiper/core/update/updateSlidesClasses.js","../../build/node_modules/swiper/core/update/updateActiveIndex.js","../../build/node_modules/swiper/core/update/updateClickedSlide.js","../../build/node_modules/swiper/core/translate/index.js","../../build/node_modules/swiper/core/translate/getTranslate.js","../../build/node_modules/swiper/core/translate/setTranslate.js","../../build/node_modules/swiper/core/translate/minTranslate.js","../../build/node_modules/swiper/core/translate/maxTranslate.js","../../build/node_modules/swiper/core/translate/translateTo.js","../../build/node_modules/swiper/core/transition/transitionEmit.js","../../build/node_modules/swiper/core/slide/index.js","../../build/node_modules/swiper/core/slide/slideTo.js","../../build/node_modules/swiper/core/slide/slideToLoop.js","../../build/node_modules/swiper/core/slide/slideNext.js","../../build/node_modules/swiper/core/slide/slidePrev.js","../../build/node_modules/swiper/core/slide/slideReset.js","../../build/node_modules/swiper/core/slide/slideToClosest.js","../../build/node_modules/swiper/core/slide/slideToClickedSlide.js","../../build/node_modules/swiper/core/loop/index.js","../../build/node_modules/swiper/core/loop/loopCreate.js","../../build/node_modules/swiper/core/loop/loopFix.js","../../build/node_modules/swiper/core/loop/loopDestroy.js","../../build/node_modules/swiper/core/events/onTouchStart.js","../../build/node_modules/swiper/core/events/onTouchMove.js","../../build/node_modules/swiper/core/events/onTouchEnd.js","../../build/node_modules/swiper/core/events/onResize.js","../../build/node_modules/swiper/core/events/onClick.js","../../build/node_modules/swiper/core/events/onScroll.js","../../build/node_modules/swiper/core/events/index.js","../../build/node_modules/swiper/core/breakpoints/setBreakpoint.js","../../build/node_modules/swiper/core/classes/index.js","../../build/node_modules/swiper/core/classes/addClasses.js","../../build/node_modules/swiper/core/classes/removeClasses.js","../../build/node_modules/swiper/core/check-overflow/index.js","../../build/node_modules/swiper/core/defaults.js","../../build/node_modules/swiper/core/moduleExtendParams.js","../../build/node_modules/swiper/core/core.js","../../build/node_modules/swiper/core/transition/index.js","../../build/node_modules/swiper/core/transition/setTransition.js","../../build/node_modules/swiper/core/transition/transitionStart.js","../../build/node_modules/swiper/core/transition/transitionEnd.js","../../build/node_modules/swiper/core/grab-cursor/index.js","../../build/node_modules/swiper/core/grab-cursor/setGrabCursor.js","../../build/node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","../../build/node_modules/swiper/core/breakpoints/index.js","../../build/node_modules/swiper/core/breakpoints/getBreakpoint.js","../../build/node_modules/swiper/core/images/index.js","../../build/node_modules/swiper/core/images/loadImage.js","../../build/node_modules/swiper/core/images/preloadImages.js","../../build/node_modules/swiper/core/modules/resize/resize.js","../../build/node_modules/swiper/core/modules/observer/observer.js","../../build/src/ts/components/image-slider.ts","../../build/node_modules/swiper/modules/navigation/navigation.js","../../build/node_modules/swiper/shared/create-element-if-not-defined.js","../../build/src/ts/utils/translate.ts","../../build/src/ts/components/video.ts","../../build/src/ts/components/parallax.ts","../../build/src/ts/components/faq.ts","../../build/src/ts/components/horizontal-text-scroller.ts","../../build/src/ts/components/animate-on-scroll.ts","../../build/src/ts/components/table-of-contents.ts","../../build/src/ts/components/alert.ts","../../build/src/ts/utils/cookies.ts","../../build/src/ts/components/events-filters.ts","../../build/src/ts/components/studies-overview.ts","../../build/src/ts/main.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\nexport const addClass = (el: HTMLElement, className: string) => {\n el.classList.add(className)\n}\n\nexport const removeClass = (el: HTMLElement, className: string) => {\n el.classList.remove(className)\n}\n\nexport const hasClass = (el: HTMLElement, className: string) => {\n return el.classList.contains(className)\n}\n\nexport const toggleClass = (el: HTMLElement, className: string) => {\n return el.classList.toggle(className)\n}\n\nexport const trapFocus = (element: HTMLElement) => {\n const focusableEls = element.querySelectorAll(\n 'a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type=\"text\"]:not([disabled]), input[type=\"search\"]:not([disabled]), input[type=\"radio\"]:not([disabled]), input[type=\"checkbox\"]:not([disabled]), select:not([disabled])'\n )\n const firstFocusableEl = focusableEls[0]\n const lastFocusableEl = focusableEls[focusableEls.length - 1]\n const KEYCODE_TAB = 9\n\n element.addEventListener('keydown', function (e) {\n const isTabPressed = e.key === 'Tab' || e.keyCode === KEYCODE_TAB\n\n if (!isTabPressed) {\n return\n }\n\n if (e.shiftKey) {\n /* shift + tab */ if (document.activeElement === firstFocusableEl) {\n // @ts-ignore\n lastFocusableEl.focus()\n e.preventDefault()\n }\n } /* tab */ else {\n if (document.activeElement === lastFocusableEl) {\n // @ts-ignore\n firstFocusableEl.focus()\n e.preventDefault()\n }\n }\n })\n}\n\n// media queries\nexport const screenMedium = window.matchMedia('(min-width: 768px)')\nexport const screenLarge = window.matchMedia('(min-width: 1024px)')\nexport const screenXlarge = window.matchMedia('(min-width: 1160px)')\nexport const reducedMotion = window.matchMedia('(prefers-reduced-motion)')\n","import {addClass} from '../utils'\nexport default class Preloader {\n private body: HTMLElement\n private preloadAlert: HTMLElement\n private preloader: HTMLElement\n private preloaderAnimCls: string\n private logo: HTMLElement\n private animationFinished: boolean\n private readyState: boolean\n\n constructor() {\n this.body = document.querySelector('body')\n this.preloadAlert = document.querySelector('.preload-alert')\n this.preloader = document.querySelector('.preloader')\n this.preloaderAnimCls = 'preloader--animate'\n this.animationFinished = false\n this.readyState = false\n this.logo = document.querySelector('.preloader svg.logo')\n if (this.preloader) this.init()\n }\n\n private init() {\n // check if loading is complete and set readyState\n document.addEventListener('readystatechange', () => {\n if (document.readyState === 'complete') {\n this.readyState = true\n removePreloader()\n }\n })\n\n // if animation of preloader has ended\n this.logo.addEventListener(\n 'animationend',\n (e) => {\n if (e.target === this.logo) {\n this.animationFinished = true\n removePreloader()\n }\n },\n false\n )\n\n // remove the preloader when animation is finished and document is ready\n const removePreloader = () => {\n if (this.readyState && this.animationFinished) {\n addClass(this.preloader, this.preloaderAnimCls) // add exit animation class\n\n // when animation is finished\n this.preloader.addEventListener('animationend', (e) => {\n if (e.target === this.preloader) {\n this.body.removeAttribute('data-preloader') // remove the data-preloader attribute from body\n this.preloadAlert.innerText =\n this.preloadAlert.getAttribute(\n 'data-preload-alert-done'\n ) // set the preload alert to done\n this.preloader.remove() // remove the preloader from the DOM\n }\n })\n }\n }\n }\n}\n","import {addClass, removeClass, hasClass} from '../utils'\n\nexport default class MainNav {\n private mainNavToggle: HTMLElement\n private mainNav: HTMLElement\n private mainNavVisibleClass: string\n private navLinks: NodeListOf\n private subMenus: NodeListOf\n private navSubLinks: NodeListOf\n private navSubmenuToggles: NodeListOf\n private searchFormInput: HTMLElement\n private searchFormSubmit: HTMLElement\n private focusableElements: Array\n\n constructor() {\n this.mainNavToggle = document.getElementById('hamburger-button')\n this.mainNav = document.getElementById('main-nav')\n this.mainNavVisibleClass = 'main-nav-wraper--visible'\n this.navLinks = this.mainNav.querySelectorAll('a')\n this.subMenus = this.mainNav.querySelectorAll('.main-nav__submenu')\n this.navSubLinks = this.mainNav.querySelectorAll('.main-nav__submenu a')\n this.navSubmenuToggles = this.mainNav.querySelectorAll(\n '.main-nav__submenu-toggle'\n )\n this.searchFormInput = this.mainNav.querySelector(\n '.search-form input[type=\"search\"]'\n )\n this.searchFormSubmit = this.mainNav.querySelector(\n '.search-form button[type=\"submit\"]'\n )\n this.focusableElements = []\n this.init()\n this.setEventListeners()\n }\n\n // init\n private init() {\n // adds transform transition class for slide in animation\n setTimeout(() => {\n addClass(this.mainNav, 'transition-transform')\n }, 150)\n\n // push nav links to focuable array\n for (const el of this.navLinks) {\n this.focusableElements.push(el)\n }\n\n // push nav submenu toggle buttons to focuable array\n for (const el of this.navSubmenuToggles) {\n this.focusableElements.push(el)\n }\n\n // push search field elements to focuable array\n this.focusableElements.push(this.searchFormInput, this.searchFormSubmit)\n\n // set negative tabindex to focusable elements\n this.setTabIndex(true, this.focusableElements)\n\n // close all submenus\n for (const submenu of this.subMenus) {\n this.toggleSubMenu(submenu, 'close')\n }\n }\n\n // function to toggle tabindex\n private setTabIndex(bool, arr) {\n if (bool) {\n for (const el of arr) {\n el.tabIndex = -1\n }\n } else {\n for (const el of arr) {\n el.tabIndex = ''\n }\n }\n }\n\n // event handlers\n private setEventListeners() {\n // main nav toggle button\n this.mainNavToggle.onclick = () => {\n // open menu\n if (!hasClass(this.mainNav, this.mainNavVisibleClass)) {\n this.toggleNav('open')\n }\n\n // close menu\n else {\n this.toggleNav('close')\n }\n }\n\n // on escape press\n document.onkeydown = (e) => {\n if (\n e.key === 'Escape' &&\n hasClass(this.mainNav, this.mainNavVisibleClass)\n ) {\n this.toggleNav('close')\n this.mainNavToggle.focus()\n }\n }\n\n // submenu toggle\n for (const button of this.navSubmenuToggles) {\n const openLabel = button.querySelector(\n '.main-nav__submenu-toggle-label--open'\n )\n const closeLabel = button.querySelector(\n '.main-nav__submenu-toggle-label--close'\n )\n const submenu =\n button.parentNode.querySelector('.main-nav__submenu')\n\n button.onclick = () => {\n // open submenu\n if (button.getAttribute('aria-expanded') == 'false') {\n this.toggleSubMenu(submenu, 'open')\n button.setAttribute('aria-expanded', 'true')\n addClass(openLabel, 'hidden')\n removeClass(closeLabel, 'hidden')\n }\n\n // close submenu\n else {\n this.toggleSubMenu(submenu, 'close')\n button.setAttribute('aria-expanded', 'false')\n removeClass(openLabel, 'hidden')\n addClass(closeLabel, 'hidden')\n }\n }\n }\n }\n\n // toggle nav\n private toggleNav(state) {\n if (state == 'open') {\n addClass(this.mainNav, this.mainNavVisibleClass)\n addClass(document.body, 'overflow-hidden')\n addClass(document.body, 'menu-open')\n\n // toggle aria-expanded\n this.mainNavToggle.setAttribute('aria-expanded', 'true')\n\n // scroll top top\n location.href = '#'\n\n // remove tabindexes\n this.setTabIndex(false, this.focusableElements)\n\n // set tabindex on toggle buttons\n this.setTabIndex(true, this.navSubLinks)\n } else {\n removeClass(this.mainNav, this.mainNavVisibleClass)\n removeClass(document.body, 'overflow-hidden')\n removeClass(document.body, 'menu-open')\n\n // toggle aria-expanded\n this.mainNavToggle.setAttribute('aria-expanded', 'false')\n\n this.setTabIndex(true, this.focusableElements)\n }\n }\n\n // toggle submenus\n private toggleSubMenu(el, state) {\n const subLinks = el.querySelectorAll('a')\n if (state == 'open') {\n el.style.maxHeight = el.scrollHeight + 'px'\n this.setTabIndex(false, subLinks)\n } else {\n el.style.maxHeight = '0px'\n this.setTabIndex(true, subLinks)\n }\n }\n}\n","function r(r,e,n){var i,t,o;void 0===e&&(e=50),void 0===n&&(n={});var a=null!=(i=n.isImmediate)&&i,u=null!=(t=n.callback)&&t,c=n.maxWait,v=Date.now(),l=[];function f(){if(void 0!==c){var r=Date.now()-v;if(r+e>=c)return c-r}return e}var d=function(){var e=[].slice.call(arguments),n=this;return new Promise(function(i,t){var c=a&&void 0===o;if(void 0!==o&&clearTimeout(o),o=setTimeout(function(){if(o=void 0,v=Date.now(),!a){var i=r.apply(n,e);u&&u(i),l.forEach(function(r){return(0,r.resolve)(i)}),l=[]}},f()),c){var d=r.apply(n,e);return u&&u(d),i(d)}l.push({resolve:i,reject:t})})};return d.cancel=function(r){void 0!==o&&clearTimeout(o),l.forEach(function(e){return(0,e.reject)(r)}),l=[]},d}export{r as debounce};\n//# sourceMappingURL=index.esm.js.map\n","import {addClass, removeClass} from '../utils'\nimport {debounce} from 'ts-debounce'\n\nexport default class ContentSliders {\n constructor() {\n const contentSliders = document.querySelectorAll('.ce-content-slider')\n for (const contentSlider of contentSliders) {\n new ContentSlider(contentSlider)\n }\n }\n}\n\nclass ContentSlider {\n private nav: HTMLElement\n private navButtons: NodeListOf\n private navButtonActiveAtt: string\n private slidesContainer: HTMLElement\n private slides: NodeListOf\n private slideActiveClass: string\n private slidesHeight: number\n private navItems: NodeListOf\n\n constructor(sliderContainer: Element) {\n this.nav = sliderContainer.querySelector('.ce-content-slider__nav')\n this.navItems = this.nav.querySelectorAll('ul > li')\n this.navButtons = sliderContainer.querySelectorAll(\n '.ce-content-slider__nav button'\n )\n this.navButtonActiveAtt = 'data-slide-control-active'\n this.slidesContainer = sliderContainer.querySelector(\n '.ce-content-slider__slides'\n )\n this.slides = sliderContainer.querySelectorAll(\n '.ce-content-slider__slide'\n )\n this.slideActiveClass = 'ce-content-slider__slide--active'\n this.slidesHeight = 0\n this.init()\n }\n\n // init\n private init() {\n this.hideAllSlides()\n this.setSlidesHeight()\n this.showSlide(this.slides[0], this.navButtons[0])\n this.setEventListeners()\n }\n\n // event listeners\n private setEventListeners() {\n // nav buttons\n for (const button of this.navButtons) {\n button.addEventListener('click', () => {\n let target = parseInt(button.getAttribute('data-slide-control'))\n if (isNaN(target)) {\n target = 0\n console.warn(`Target of ${button} is NaN`)\n } else {\n target--\n }\n\n if (button.getAttribute(this.navButtonActiveAtt) == 'true')\n return\n\n this.hideAllSlides()\n this.showSlide(this.slides[target], button)\n })\n }\n\n // handle window resize\n const resize = () => {\n this.slidesHeight = 0\n this.setSlidesHeight()\n }\n const debouncedFunction = debounce(resize, 150)\n window.addEventListener('resize', () => {\n debouncedFunction()\n })\n\n // on nav scroll\n const handleNavScroll = () => {\n const navInd = this.nav.querySelector(\n '.ce-content-slider__indicator'\n )\n navInd.classList.add('opacity-0') // hide the indicator\n this.removeOpacity() // remove opacity from list items\n this.nav.removeEventListener('touchmove', handleNavScroll) // remove the event handler\n setTimeout(() => {\n navInd.remove()\n }, 300) // remove the element\n }\n this.nav.addEventListener('touchmove', handleNavScroll)\n }\n\n // set height of slides container\n private setSlidesHeight() {\n // get the height of the highest slide\n const highestSlide = Array.from(this.slides).sort(\n (a, b) => a.scrollHeight - b.scrollHeight\n )[this.slides.length - 1].scrollHeight\n\n // set height on the container\n this.slidesContainer.style.height = `${highestSlide}px`\n }\n\n // hide all slides\n private hideAllSlides() {\n // hide slides\n for (const slide of this.slides) {\n removeClass(slide, this.slideActiveClass)\n }\n // deactive buttons\n for (const button of this.navButtons) {\n button.setAttribute(this.navButtonActiveAtt, 'false')\n }\n }\n\n // show slide\n private showSlide(slide, button) {\n addClass(slide, this.slideActiveClass)\n button.setAttribute(this.navButtonActiveAtt, 'true')\n }\n\n private removeOpacity() {\n for (const navItem of this.navItems) {\n removeClass(navItem, 'sm-max:opacity-0')\n }\n }\n}\n","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\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}\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 { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.4\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2022, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: January 11, 2022\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n if (typeof items === 'number') {\n super(items);\n } else {\n super(...(items || []));\n makeReactive(this);\n }\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\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 }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n","import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove\n};\nObject.keys(Methods).forEach(methodName => {\n Object.defineProperty($.fn, methodName, {\n value: Methods[methodName],\n writable: true\n });\n});\nexport default $;","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {// no getter for object\n }\n\n try {\n delete object[key];\n } catch (e) {// something got wrong\n }\n });\n}\n\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n return setTimeout(callback, delay);\n}\n\nfunction now() {\n return Date.now();\n}\n\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\n\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n } // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n\n\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\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n\n return curTransform || 0;\n}\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\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\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\n\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n\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\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\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\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\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\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n\n const animate = () => {\n time = new Date().getTime();\n\n if (startTime === null) {\n startTime = time;\n }\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\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\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\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n\n animate();\n}\n\nexport { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty };","import { getWindow, getDocument } from 'ssr-window';\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n passiveListener: function checkPassiveListener() {\n let supportsPassive = false;\n\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n }\n\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {// No support\n }\n\n return supportsPassive;\n }(),\n gestures: function checkGestures() {\n return 'ongesturestart' in window;\n }()\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n\n return support;\n}\n\nexport { getSupport };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\n\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\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'; // iPadOs 13 fix\n\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n\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 } // Android\n\n\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n } // Export object\n\n\n return device;\n}\n\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n\n return deviceCached;\n}\n\nexport { getDevice };","import { getWindow } from 'ssr-window';\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n\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\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n\n return browser;\n}\n\nexport { getBrowser };","/* eslint-disable no-underscore-dangle */\nexport default {\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\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\n function onceHandler() {\n self.off(events, onceHandler);\n\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n handler.apply(self, args);\n }\n\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\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\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n\n return self;\n },\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\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n\n return self;\n },\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\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\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\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\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\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};","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};","export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n } // Subtract paddings\n\n\n width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('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}","import { setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n const swiper = this;\n\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n } // prettier-ignore\n\n\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\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n const {\n $wrapperEl,\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 = $wrapperEl.children(`.${swiper.params.slideClass}`);\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\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\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\n if (typeof swiperSize === 'undefined') {\n return;\n }\n\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween; // reset margins\n\n if (rtl) slides.css({\n marginLeft: '',\n marginBottom: '',\n marginTop: ''\n });else slides.css({\n marginRight: '',\n marginBottom: '',\n marginTop: ''\n }); // reset cssMode offsets\n\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n } // Calc slides\n\n\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\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(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\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide[0];\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\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\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n\n slidesSizesGrid.push(slideSize);\n\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\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({\n width: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n } // Remove last grid elements depending on width\n\n\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n\n snapGrid = newSlidesGrid;\n\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n\n if (slideIndex === slides.length - 1) {\n return false;\n }\n\n return true;\n }).css({\n [key]: `${spaceBetween}px`\n });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.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\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n\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\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(swiper.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\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.$el.hasClass(backFaceHiddenClass);\n\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.$el.addClass(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.$el.removeClass(backFaceHiddenClass);\n }\n }\n}","import $ from '../../shared/dom.js';\nexport default function 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\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0];\n }\n\n return swiper.slides.eq(index)[0];\n }; // Find slides currently in view\n\n\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || $([])).each(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 } // Find new height from highest slide in view\n\n\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 } // Update Height\n\n\n if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\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; // Visible Slides\n\n slides.removeClass(params.slideVisibleClass);\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.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\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n\n swiper.visibleSlides = $(swiper.visibleSlides);\n}","export default function updateProgress(translate) {\n const swiper = this;\n\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}","export default function updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n $wrapperEl,\n activeIndex,\n realIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n let activeSlide;\n\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n } // Active classes\n\n\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n }\n } // Next Slide\n\n\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n } // Prev Slide\n\n\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n }\n\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n }\n }\n\n swiper.emitSlidesClasses();\n}","export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n\n if (typeof activeIndex === 'undefined') {\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 } // Normalize slideIndex\n\n\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\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\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n\n return;\n } // Get real index\n\n\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\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\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('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\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};","import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n $wrapperEl\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}","export default function setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n $wrapperEl,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}","export default function minTranslate() {\n return -this.snapGrid[0];\n}","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\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; // Update progress\n\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n\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\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n\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\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n\n if (!swiper.animating) {\n swiper.animating = true;\n\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[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}","export default function 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\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n\n swiper.emit(`slideChangeTransition${step}`);\n\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`);\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\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\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\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\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex]; // Update progress\n\n swiper.updateProgress(translate); // Normalize slideIndex\n\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\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 } // Directions locks\n\n\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex); // Update Height\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n swiper.updateSlidesClasses();\n\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n\n return false;\n }\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = 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\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\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\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n\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[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n\n return true;\n}","export default function slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n let newIndex = index;\n\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n const {\n animating,\n enabled,\n params\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n const {\n params,\n animating,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\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\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n\n let prevIndex = 0;\n\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n\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\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed, runCallbacks, internal, threshold) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (threshold === void 0) {\n threshold = 0.5;\n }\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\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\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\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\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}","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n $wrapperEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\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 = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n loopCreate,\n loopFix,\n loopDestroy\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n $wrapperEl\n } = swiper; // Remove duplicated slides\n\n const $selector = $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl;\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $selector.append(blankNode);\n }\n\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n\n if (index < swiper.loopedSlides) {\n appendSlides.push(el);\n }\n\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n prependSlides.push(el);\n }\n\n slide.attr('data-swiper-slide-index', index);\n });\n\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}","export default function loopFix() {\n const swiper = this;\n swiper.emit('beforeLoopFix');\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n}","export default function loopDestroy() {\n const swiper = this;\n const {\n $wrapperEl,\n params,\n slides\n } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\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\n if (!found && !el.getRootNode) {\n return null;\n }\n\n return found || __closestFrom(el.getRootNode().host);\n }\n\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return; // change target el for shadow root component\n\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n\n if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n $targetEl = $(event.path[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element\n\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, $targetEl[0]) : $targetEl.closest(noSwipingSelector)[0])) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY; // 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\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\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\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n\n if ($targetEl.is(data.focusableElements)) {\n preventDefault = false;\n\n if ($targetEl[0].nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n\n if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n e.preventDefault();\n }\n }\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n\n swiper.emit('touchStart', e);\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\nexport default function 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 let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n return;\n }\n\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n\n if (!swiper.allowTouchMove) {\n if (!$(e.target).is(data.focusableElements)) {\n swiper.allowClick = false;\n }\n\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n\n return;\n }\n\n if (data.isTouchEvent && 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\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\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\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n\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\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n\n if (!data.startMoving) {\n return;\n }\n\n swiper.allowClick = false;\n\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n\n data.allowMomentumBounce = false; // Grab Cursor\n\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n\n swiper.emit('sliderFirstMove', e);\n }\n\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n } // Directions locks\n\n\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n } // Threshold\n\n\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\n if (!params.followFinger || params.cssMode) return; // Update active index in free mode\n\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n } // Update progress\n\n\n swiper.updateProgress(data.currentTranslate); // Update translate\n\n swiper.setTranslate(data.currentTranslate);\n}","import { now, nextTick } from '../../shared/utils.js';\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n\n data.allowTouchCallbacks = false;\n\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n\n data.isMoved = false;\n data.startMoving = false;\n return;\n } // Return Grab Cursor\n\n\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n } // Time diff\n\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);\n swiper.emit('tap click', e);\n\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\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\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n } // Find current slide\n\n\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n\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\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\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n } // Find current slide size\n\n\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\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\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\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\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}","export default function onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n } // Save locks\n\n\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper; // Disable locks on resize\n\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 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 swiper.autoplay.run();\n } // Return locks after resize\n\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}","export default function 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\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n } // eslint-disable-next-line\n\n\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\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\nlet dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n touchEvents,\n el,\n wrapperEl,\n device,\n support\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method; // Touch Events\n\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n passive: false,\n capture\n } : capture);\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n } // Resize handler\n\n\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\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n support\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents\n};","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const {\n activeIndex,\n initialized,\n loopedSlides = 0,\n params,\n $el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\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\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n\n swiper.emitContainerClasses();\n }\n\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n addClasses,\n removeClasses\n};","function 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}\n\nexport default function addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n $el,\n device,\n support\n } = swiper; // prettier-ignore\n\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'pointer-events': !support.touch\n }, {\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.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}","export default function removeClasses() {\n const swiper = this;\n const {\n $el,\n classNames\n } = swiper;\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}","function checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n\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\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default {\n checkOverflow\n};","export default {\n init: true,\n direction: 'horizontal',\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 // 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: 0,\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 // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};","import { extend } from '../shared/utils.js';\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\nimport eventsEmitter from './events-emitter.js';\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images\n};\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor() {\n let el;\n let params;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\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\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n } // Swiper Instance\n\n\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\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\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 }); // Extend defaults with modules params\n\n const swiperParams = extend({}, defaults, allModulesParams); // Extend defaults with passed params\n\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params); // add event listeners\n\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\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n } // Save Dom lib\n\n\n swiper.$ = $; // Extend Swiper\n\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\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\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 // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEvents: function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3]\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2]\n };\n return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }(),\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: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined\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'); // Init\n\n if (swiper.params.init) {\n swiper.init();\n } // Return app instance\n\n\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n\n swiper.emit('disable');\n }\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\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\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\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each(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\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n\n if (exact === void 0) {\n exact = false;\n }\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\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n\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\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\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\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\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\n let translated;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (!translated) {\n setTranslate();\n }\n }\n\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n\n const swiper = this;\n const currentDirection = swiper.params.direction;\n\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.each(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\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true; // Find el\n\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n res.children = options => $el.children(options);\n\n return res;\n }\n\n if (!$el.children) {\n return $($el).children(getWrapperSelector());\n }\n\n return $el.children(getWrapperSelector());\n }; // Find Wrapper\n\n\n let $wrapperEl = getWrapper();\n\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each(slideEl => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n });\n return true;\n }\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'); // Set breakpoint\n\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n } // Add Classes\n\n\n swiper.addClasses(); // Create loop\n\n if (swiper.params.loop) {\n swiper.loopCreate();\n } // Update size\n\n\n swiper.updateSize(); // Update slides\n\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n } // Set Grab Cursor\n\n\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n } // Slide To Initial Slide\n\n\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n } // Attach events\n\n\n swiper.attachEvents(); // Init Flag\n\n swiper.initialized = true; // Emit\n\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n\n const swiper = this;\n const {\n params,\n $el,\n $wrapperEl,\n slides\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy'); // Init Flag\n\n swiper.initialized = false; // Detach events\n\n swiper.detachEvents(); // Destroy loop\n\n if (params.loop) {\n swiper.loopDestroy();\n } // Cleanup styles\n\n\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n\n if (slides && slides.length) {\n slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy'); // Detach emitter events\n\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n\n swiper.destroyed = true;\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n\n Swiper.installModule(module);\n return Swiper;\n }\n\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]);\nexport default Swiper;","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n setTransition,\n transitionStart,\n transitionEnd\n};","export default function setTransition(duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\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}","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n setGrabCursor,\n unsetGrabCursor\n};","export default function setGrabCursor(moving) {\n const swiper = this;\n if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}","export default function unsetGrabCursor() {\n const swiper = this;\n\n if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n setBreakpoint,\n getBreakpoint\n};","import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\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\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n\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\n return breakpoint || 'max';\n}","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\nexport default {\n loadImage,\n preloadImages\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n\n function onReady() {\n if (callback) callback();\n }\n\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n\n if (sizes) {\n image.sizes = sizes;\n }\n\n if (srcset) {\n image.srcset = srcset;\n }\n\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n }\n}","import { getWindow } from 'ssr-window';\nexport default function 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\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\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\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\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}","import { getWindow } from 'ssr-window';\nexport default function Observer(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const observers = [];\n const window = getWindow();\n\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\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 (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\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\n const init = () => {\n if (!swiper.params.observer) return;\n\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n } // Observe container\n\n\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren\n }); // Observe wrapper\n\n attach(swiper.$wrapperEl[0], {\n attributes: false\n });\n };\n\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}","import Swiper, {Navigation} from 'swiper'\nimport 'swiper/css'\nSwiper.use([Navigation])\n\nexport default class ImageSlider {\n private imageSliders: NodeListOf\n\n constructor() {\n this.imageSliders = document.querySelectorAll('.ce-image-slider')\n this.init()\n }\n\n private init() {\n if (!this.imageSliders) return\n\n for (const slider of this.imageSliders) {\n // Init slider\n new Swiper(slider.querySelector('.swiper') as Element, {\n slidesPerView: 2,\n freeMode: true,\n spaceBetween: 32,\n centeredSlides: true,\n loop: true,\n navigation: {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev',\n },\n })\n\n // Configure lightbox\n const slides = slider.querySelectorAll(\n '.swiper-slide'\n ) as NodeListOf\n const lightbox = slider.querySelector(\n '.image-slider__lightbox'\n ) as HTMLElement\n const lightboxImage = lightbox.querySelector(\n '.image-slider__lightbox-image'\n ) as HTMLImageElement\n const lightboxClose = lightbox.querySelector(\n '.image-slider__lightbox-close'\n ) as HTMLButtonElement\n\n slides.forEach((slide) => {\n slide.addEventListener('click', () => {\n const imageUrl = slide.dataset.imageUrl\n\n if (imageUrl) {\n lightboxImage.src = imageUrl\n lightboxClose.disabled = false\n lightbox.classList.remove(\n 'pointer-events-none',\n 'opacity-0'\n )\n }\n })\n })\n\n const closeLightbox = () => {\n lightbox.classList.add('pointer-events-none', 'opacity-0')\n\n setTimeout(() => {\n lightboxImage.src = ''\n lightboxClose.disabled = true\n }, 150)\n }\n\n document.addEventListener('keyup', (event) => {\n if (event.key === 'Escape') {\n closeLightbox()\n }\n })\n lightbox.addEventListener('click', (event) => {\n if (event.target !== lightboxImage) {\n closeLightbox()\n }\n })\n }\n }\n}\n","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\nexport default function Navigation(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock'\n }\n });\n swiper.navigation = {\n nextEl: null,\n $nextEl: null,\n prevEl: null,\n $prevEl: null\n };\n\n function getEl(el) {\n let $el;\n\n if (el) {\n $el = $(el);\n\n if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) {\n $el = swiper.$el.find(el);\n }\n }\n\n return $el;\n }\n\n function toggleEl($el, disabled) {\n const params = swiper.params.navigation;\n\n if ($el && $el.length > 0) {\n $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n }\n\n function update() {\n // Update Navigation Buttons\n if (swiper.params.loop) return;\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n }\n\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n }\n\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n const $nextEl = getEl(params.nextEl);\n const $prevEl = getEl(params.prevEl);\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', onNextClick);\n }\n\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', onPrevClick);\n }\n\n Object.assign(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0]\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n\n on('init', () => {\n init();\n update();\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n });\n on('click', (_s, e) => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n const targetEl = e.target;\n\n if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n });\n Object.assign(swiper.navigation, {\n update,\n init,\n destroy\n });\n}","import { getDocument } from 'ssr-window';\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n const document = getDocument();\n\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n\n if (!element) {\n element = document.createElement('div');\n element.className = checkProps[key];\n swiper.$el.append(element);\n }\n\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n\n return params;\n}","/* eslint-disable @typescript-eslint/ban-ts-comment */\nexport const translate = (item) => {\n if (!item) return ''\n\n const lang = document.documentElement.lang || 'en-US'\n\n const translations = {\n 'en-US': {\n closeFsVideo: 'close full screen mode',\n jumpToLabel: 'jump to',\n muteVideo: 'mute video',\n pauseVideo: 'pause video',\n playVideo: 'play video',\n showFsVideo: 'enable full screen mode',\n unmuteVideo: 'unmute video',\n },\n nl: {\n closeFsVideo: 'sluit volledig scherm modus',\n jumpToLabel: 'spring naar',\n muteVideo: 'zet het geluid van de video uit',\n pauseVideo: 'pauzeer video',\n playVideo: 'speel video af',\n showFsVideo: 'toon video op volledig scherm',\n unmuteVideo: 'zet het geluid van de video aan',\n },\n }\n\n return translations[lang][item] || ''\n}\n","import {reducedMotion} from '../utils/index'\nimport {translate} from '../utils/translate'\n\nexport default class Videos {\n constructor() {\n const videoElements = document.querySelectorAll('.ce-video')\n for (const video of videoElements) {\n new VideoController(video)\n }\n }\n}\n\nclass VideoController {\n private video: HTMLVideoElement\n private playButtons: NodeListOf\n private mainPlayButton: HTMLElement\n private muteButton: HTMLElement\n private videoControls: HTMLElement\n private fsButton: HTMLElement\n private fsButtonIcon: HTMLElement\n private hasInteractedWithVideo: boolean\n\n constructor(videoContainer: Element) {\n this.video = videoContainer.querySelector('.ce-video__video')\n this.playButtons = videoContainer.querySelectorAll(\n \".ce-video [data-video-control='play']\"\n )\n this.mainPlayButton = videoContainer.querySelector(\n '.ce-video .ce-video__main-play'\n )\n this.muteButton = videoContainer.querySelector(\n \".ce-video [data-video-control='mute']\"\n )\n this.fsButton = videoContainer.querySelector(\n \".ce-video [data-video-control='fs']\"\n )\n this.fsButtonIcon = videoContainer.querySelector(\n \".ce-video [data-video-control='fs'] .icon\"\n )\n this.videoControls = videoContainer.querySelector(\n '.ce-video .ce-video__controls'\n )\n\n // if the video should autoplay and when user does not prefers reduced motion\n if (\n videoContainer.classList.contains('ce-video--autoplay') &&\n !reducedMotion.matches\n ) {\n this.intersectionObserver(videoContainer) // observe the element\n }\n\n // check wether the full screen API is available and enabled\n if (!document?.fullscreenEnabled) {\n this.fsButton.style.display = 'none' // hide te button it it's not\n } else {\n this.fsButton.addEventListener('click', () => {\n handleFullscreen()\n })\n }\n\n // handle full screen\n function handleFullscreen() {\n if (document.fullscreenElement !== null) {\n // The document is in fullscreen mode\n document.exitFullscreen()\n setFullscreenData(false)\n } else {\n // The document is not in fullscreen mode\n videoContainer.requestFullscreen()\n setFullscreenData(true)\n }\n }\n\n // toggle fs attribute, icon and aria-label\n const setFullscreenData = (state: boolean) => {\n if (state) {\n videoContainer.setAttribute('data-fullscreen', 'true')\n this.fsButtonIcon.classList.remove('icon-fs')\n this.fsButtonIcon.classList.add('icon-fs-exit')\n this.fsButton.setAttribute(\n 'aria-label',\n translate('closeFsVideo')\n )\n } else {\n videoContainer.setAttribute('data-fullscreen', 'false')\n this.fsButtonIcon.classList.remove('icon-fs-exit')\n this.fsButtonIcon.classList.add('icon-fs')\n this.fsButton.setAttribute(\n 'aria-label',\n translate('showFsVideo')\n )\n }\n }\n\n // handle fs exit through OS native controls\n document.addEventListener('fullscreenchange', () => {\n setFullscreenData(!!document.fullscreenElement)\n })\n\n const isVideoPlaying = (video: HTMLVideoElement) =>\n !!(\n video.currentTime > 0 &&\n !video.paused &&\n !video.ended &&\n video.readyState > 2\n )\n\n const play = () => {\n if (isVideoPlaying(this.video)) {\n this.video.pause()\n } else {\n this.video.play()\n }\n this.playButtons.forEach((button) => {\n button\n .querySelector('.icon')\n .classList.toggle('icon-play-circle-solid')\n button\n .querySelector('.icon')\n .classList.toggle('icon-pause-circle-solid')\n if (isVideoPlaying(this.video)) {\n // button change aria-label\n button.setAttribute('aria-label', translate('pauseVideo'))\n } else {\n button.setAttribute('aria-label', translate('playVideo'))\n }\n })\n }\n\n const mute = () => {\n if (this.video.muted) {\n this.video.muted = false\n this.muteButton.setAttribute(\n 'aria-label',\n translate('muteVideo')\n )\n } else {\n this.video.muted = true\n this.muteButton.setAttribute(\n 'aria-label',\n translate('unmuteVideo')\n )\n }\n this.muteButton\n .querySelector('.icon')\n .classList.toggle('icon-volume-up')\n this.muteButton\n .querySelector('.icon')\n .classList.toggle('icon-volume-off')\n }\n\n Array.from(this.playButtons).map((button) =>\n button.addEventListener('click', play)\n )\n if (this.muteButton) {\n this.muteButton.addEventListener('click', mute)\n }\n\n if (this.mainPlayButton) {\n this.mainPlayButton.addEventListener('click', () => {\n play()\n })\n }\n\n this.video.addEventListener('play', () => {\n if (!this.hasInteractedWithVideo) {\n videoContainer.classList.add('interacted')\n }\n this.video.classList.add('playing')\n if (this.playButtons) {\n this.playButtons.forEach((button) => {\n button.setAttribute('aria-label', translate('pauseVideo'))\n button.setAttribute('aria-hidden', 'false')\n })\n }\n if (this.mainPlayButton) {\n this.mainPlayButton.classList.add('hidden')\n }\n if (videoContainer.classList.contains('ce-video--controls')) {\n this.muteButton.setAttribute('aria-hidden', 'false')\n this.videoControls.classList.remove('hidden')\n this.videoControls.classList.add('flex')\n }\n })\n }\n\n private intersectionObserver(el) {\n // observer\n const autoplayHandler = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n const video = entry.target.querySelector('video')\n if (entry.isIntersecting) {\n video.play()\n } else {\n video.pause()\n }\n })\n },\n {threshold: [0.5]}\n )\n\n // observe element\n autoplayHandler.observe(el)\n }\n}\n","import {screenMedium, screenLarge, screenXlarge} from '../utils'\nimport {debounce} from 'ts-debounce'\n\nexport default class Parallax {\n private parallaxItems: NodeListOf\n\n constructor() {\n this.parallaxItems = document.querySelectorAll('[data-parallax]')\n if (!this.parallaxItems) return\n this.setEventListeners()\n this.parallax()\n }\n\n // the parallax function\n private parallax() {\n let transformY = '25px'\n if (screenXlarge.matches) {\n transformY = '100px'\n } else if (screenLarge.matches) {\n transformY = '75px'\n } else if (screenMedium.matches) {\n transformY = '75px'\n }\n\n for (const item of this.parallaxItems) {\n const y = window.innerHeight - item.getBoundingClientRect().top\n let scale = item.getAttribute('data-parallax-scale')\n\n if (!scale || isNaN(scale)) {\n scale = 0\n }\n\n if (y > 0) {\n item.style.transform =\n 'translate3d(0, -' +\n this.calculateScale(scale) * y +\n 'px ,0) translateY(' +\n transformY +\n ')'\n }\n }\n }\n\n // function to calculate the multiplier\n private calculateScale(scale) {\n const originalScale = scale\n\n if (screenXlarge.matches) {\n scale = scale * 2\n } else if (screenLarge.matches) {\n scale = scale * 1.75\n } else if (screenMedium.matches) {\n scale = scale * 1.5\n }\n\n if (!scale || isNaN(scale)) {\n return originalScale\n } else {\n return scale\n }\n }\n\n // event listeners\n private setEventListeners() {\n // on window resize, reset parallax items\n window.addEventListener('resize', () => {\n debounce(this.parallax, 150)\n })\n\n // call the function on scroll\n window.onscroll = () => {\n this.parallax()\n }\n }\n}\n","import {addClass, removeClass, hasClass} from '../utils'\n\nexport default class Faqs {\n constructor() {\n const faqs = document.querySelectorAll('.ce-faqs')\n for (const faq of faqs) {\n new Faq(faq)\n }\n }\n}\n\nclass Faq {\n private faqs: NodeListOf\n private faqClosedClass: string\n\n constructor(faqList: Element) {\n this.faqs = faqList.querySelectorAll('.ce-faq')\n this.faqClosedClass = 'ce-faq--closed'\n this.init()\n }\n\n // toggle answer on click\n // reset max-height on window resize\n\n // init\n private init() {\n for (const faq of this.faqs) {\n // hide all answers by default\n this.toggleAnswer(faq, 'close')\n\n // add event listeners\n const button = faq.querySelector('button')\n button.addEventListener('click', () => {\n if (hasClass(faq, this.faqClosedClass)) {\n this.toggleAnswer(faq, 'open')\n button.setAttribute('aria-expanded', 'true')\n } else {\n this.toggleAnswer(faq, 'close')\n button.setAttribute('aria-expanded', 'false')\n }\n })\n }\n }\n\n // toggle answer\n private toggleAnswer(el, state) {\n const answer = el.querySelector('.ce-faq__answer')\n\n if (state == 'open') {\n answer.style.maxHeight = `${answer.scrollHeight}px`\n removeClass(el, this.faqClosedClass)\n } else {\n answer.style.maxHeight = '0px'\n addClass(el, this.faqClosedClass)\n }\n }\n}\n","export default class HorTextScroller {\n constructor() {\n const scrollers = document.querySelectorAll('.ce-marquee')\n for (const scroller of scrollers) {\n new Scroller(scroller)\n }\n }\n}\n\nclass Scroller {\n private content: HTMLElement\n private contentWidth: number\n private contentWrapper: HTMLElement\n private contentText: string\n private contentTextClone: string\n\n constructor(scroller: Element) {\n this.content = scroller.querySelector(\n '.ce-marquee__content > [data-scroller-text]'\n )\n this.contentWidth = this.content.offsetWidth\n this.contentText = this.content.getAttribute('data-scroller-text')\n this.contentTextClone = ` • ${this.contentText}`\n this.contentWrapper = scroller.querySelector('.ce-marquee__content')\n this.init()\n }\n\n // init\n private init() {\n this.cloneContent()\n this.addEventListeners()\n\n const speed = 0.2\n let i = 0\n\n // run with interval\n setInterval(() => {\n this.content.style.transform = `translateX(-${i}px)`\n if (i > this.contentWrapper.clientWidth) {\n i = 0\n }\n i = i + speed\n }, 0)\n }\n\n // clone content\n private cloneContent() {\n this.content.innerText = this.contentText\n const multiplier = Math.ceil(window.innerWidth / this.contentWidth) * 2\n for (let index = 0; index < multiplier; index++) {\n this.content.insertAdjacentText('beforeend', this.contentTextClone)\n }\n }\n\n // event listeners\n private addEventListeners() {\n window.addEventListener('resize', () => {\n this.cloneContent()\n })\n }\n}\n","export default class AnimateOnScroll {\n constructor() {\n const animations = document.querySelectorAll('[data-aos]')\n if (!animations) return\n new Animation(animations)\n }\n}\n\nclass Animation {\n private aosLeftClass: string\n private aosBottomClass: string\n\n constructor(animations: NodeList) {\n this.aosLeftClass = 'fade-in-left'\n this.aosBottomClass = 'fade-in-bottom'\n this.intersectionObserver(animations)\n }\n\n private intersectionObserver(els) {\n const animate = (target) => {\n const io = new IntersectionObserver(\n (entries, observer) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n const target = entry.target\n if (target.hasAttribute('data-aos-left')) {\n target.classList.add(this.aosLeftClass)\n } else if (target.hasAttribute('data-aos-bottom')) {\n target.classList.add(this.aosBottomClass)\n }\n observer.disconnect()\n }\n })\n },\n {threshold: [0.3]}\n )\n io.observe(target)\n }\n els.forEach(animate)\n }\n}\n","import {translate} from '../utils/translate'\nexport default class TableOfContents {\n constructor() {\n const table = document.querySelector('.ce-table-of-contents')\n if (!table) return\n new Table(table)\n }\n}\n\nclass Table {\n private anchors: NodeListOf\n private list: HTMLElement\n private anchorLabel: string\n\n constructor(table: Element) {\n this.anchorLabel = 'data-anchor-label'\n this.anchors = document.querySelectorAll(`[${this.anchorLabel}]`)\n this.list = table.querySelector('.ce-table-of-contents__list')\n for (const anchor of this.anchors) {\n this.generateLinks(anchor)\n }\n }\n\n private generateLinks(el) {\n // create icon\n const icon = document.createElement('span')\n icon.classList.add('icon', 'icon-arrow-down', 'text-lg')\n icon.setAttribute('aria-hidden', 'true')\n\n // create link\n const a = document.createElement('a')\n const ariaLabel = `${translate('jumpToLabel')} ${el.getAttribute(\n this.anchorLabel\n )}`\n a.textContent = el.getAttribute(this.anchorLabel)\n a.href = `#${el.id}`\n a.classList.add(\n 'flex',\n 'justify-center',\n 'items-center',\n 'gap-2',\n 'rounded-full',\n 'px-6',\n 'py-1'\n )\n a.setAttribute('aria-label', ariaLabel)\n\n a.append(icon)\n\n // create list item\n const li = document.createElement('li')\n li.append(a)\n this.list.append(li)\n }\n}\n","import {setCookie} from '../utils/cookies'\n\nexport default class Alert {\n private alert: HTMLElement\n private alertCloseBtn: HTMLElement\n\n constructor() {\n this.body = document.querySelector('body')\n this.alertCloseBtn = document.getElementById('alert-close-button')\n this.alert = document.getElementById('site-alert')\n if (this.alert) this.init()\n }\n\n // init\n private init() {\n // set the event listeners\n this.setEventListeners()\n\n // set body padding\n this.setBodyPadding()\n }\n\n // close alert\n private closeAlert() {\n this.alert.remove()\n this.setBodyPadding()\n setCookie(\n `alert-${this.alert.getAttribute('data-alert-id')}`,\n 'false',\n 7\n )\n }\n\n // event listeners\n private setEventListeners() {\n // event listener on close button\n this.alertCloseBtn.addEventListener('click', (e) => {\n e.preventDefault()\n this.closeAlert()\n })\n\n // event listener on resize\n window.addEventListener('resize', () => {\n this.setBodyPadding()\n })\n }\n\n // set the body padding\n private setBodyPadding() {\n document.documentElement.style.setProperty(\n '--alert-height',\n `${this.alert.offsetHeight ? this.alert.offsetHeight : 0}px`\n )\n }\n}\n","export function setCookie(cname: string, cvalue: string, exdays: number) {\n const d = new Date()\n d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000)\n const expires = 'expires=' + d.toUTCString()\n document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/'\n}\n\nexport function getCookie(cname: string) {\n const name = cname + '='\n const decodedCookie = decodeURIComponent(document.cookie)\n const ca = decodedCookie.split(';')\n\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i]\n while (c.charAt(0) == ' ') {\n c = c.substring(1)\n }\n if (c.indexOf(name) == 0) {\n return c.substring(name.length, c.length)\n }\n }\n return ''\n}\n","export default class EventsFilters {\n private form: HTMLFormElement\n\n constructor() {\n this.form = document.querySelector('.events__filters')\n\n if (this.form) this.init()\n \n }\n\n private init() {\n const options = this.form.querySelectorAll('.events__filter-option')\n\n options.forEach(option => {\n option.addEventListener('change', () => this.form.dispatchEvent(new Event('submit')))\n })\n }\n}\n","export default class StudiesOverview {\n private filtersForm: HTMLFormElement\n\n constructor() {\n this.filtersForm = document.querySelector('.nimeto-filtered-studies-list')\n\n if (this.filtersForm) this.init()\n \n }\n\n private init() {\n const filtersDropdowns = this.filtersForm.querySelectorAll('.studies__filters')\n \n filtersDropdowns.forEach(dropdown => {\n const summary = dropdown.querySelector('.studies__filters-summary')\n\n summary?.addEventListener('click', () => {\n const dropdownIsOpen = dropdown.classList.contains('studies__filters--open')\n\n ;[...filtersDropdowns]\n .filter(dropdown => dropdown.classList.contains('studies__filters--open'))\n .forEach(dropdown => {\n this.toggleDropdown(dropdown)\n })\n \n if (!dropdownIsOpen) {\n this.toggleDropdown(dropdown)\n }\n })\n })\n }\n\n toggleDropdown(dropdown: HTMLElement) {\n const summary = dropdown.querySelector('.studies__filters-summary')\n const details = dropdown.querySelector('.studies__filters-details')\n \n dropdown?.classList.toggle('studies__filters--open')\n details?.classList.toggle('hidden')\n details?.classList.toggle('flex')\n\n summary?.setAttribute('aria-expanded', summary?.getAttribute('aria-expanded') === 'false' ? 'true': 'false')\n }\n}\n","import '../scss/main.scss'\nimport Preloader from './components/preloader'\nimport MainNav from './components/main-nav'\nimport ContentSliders from './components/content-slider'\nimport ImageSlider from './components/image-slider'\nimport Video from './components/video'\nimport Parallax from './components/parallax'\nimport Faq from './components/faq'\nimport HorTextScroller from './components/horizontal-text-scroller'\nimport AnimateOnScroll from './components/animate-on-scroll'\nimport TableOfContents from './components/table-of-contents'\nimport Alert from './components/alert'\nimport EventsFilters from './components/events-filters'\nimport StudiesOverview from './components/studies-overview'\n\nclass App {\n constructor() {\n document.addEventListener('DOMContentLoaded', () => {\n new Preloader()\n new MainNav()\n })\n\n document.addEventListener('readystatechange', () => {\n if (document.readyState === 'complete') {\n new Alert()\n new ContentSliders()\n new ImageSlider()\n new Video()\n new Parallax()\n new Faq()\n new HorTextScroller()\n new AnimateOnScroll()\n new TableOfContents()\n new EventsFilters()\n new StudiesOverview()\n }\n })\n }\n}\nwindow['App'] = new App()\n"],"names":["addClass","el","className","classList","add","removeClass","remove","hasClass","contains","screenMedium","window","matchMedia","screenLarge","screenXlarge","reducedMotion","Preloader","init","document","addEventListener","readyState","this","removePreloader","logo","e","target","animationFinished","preloader","preloaderAnimCls","body","removeAttribute","preloadAlert","innerText","getAttribute","constructor","querySelector","MainNav","setTimeout","mainNav","navLinks","focusableElements","push","navSubmenuToggles","searchFormInput","searchFormSubmit","setTabIndex","submenu","subMenus","toggleSubMenu","bool","arr","tabIndex","setEventListeners","mainNavToggle","onclick","mainNavVisibleClass","toggleNav","onkeydown","key","focus","button","openLabel","closeLabel","parentNode","setAttribute","state","location","href","navSubLinks","subLinks","querySelectorAll","style","maxHeight","scrollHeight","getElementById","r","n","i","t","o","a","isImmediate","u","callback","c","maxWait","v","Date","now","l","f","d","slice","call","arguments","Promise","clearTimeout","apply","forEach","resolve","reject","cancel","ContentSliders","contentSliders","contentSlider","ContentSlider","hideAllSlides","setSlidesHeight","showSlide","slides","navButtons","parseInt","isNaN","console","warn","navButtonActiveAtt","debouncedFunction","debounce","slidesHeight","handleNavScroll","navInd","nav","removeOpacity","removeEventListener","highestSlide","Array","from","sort","b","length","slidesContainer","height","slide","slideActiveClass","navItem","navItems","sliderContainer","isObject","obj","Object","extend","src","keys","ssrDocument","activeElement","blur","nodeName","createEvent","initEvent","createElement","children","childNodes","getElementsByTagName","createElementNS","importNode","hash","host","hostname","origin","pathname","protocol","search","getDocument","doc","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","getComputedStyle","getPropertyValue","Image","screen","requestAnimationFrame","cancelAnimationFrame","id","getWindow","win","Dom7","items","super","proto","__proto__","defineProperty","get","set","value","makeReactive","arrayFlat","res","isArray","arrayFilter","prototype","filter","$","selector","context","html","trim","indexOf","toCreate","tempParent","innerHTML","qsa","nodeType","uniqueArray","arrayUnique","fn","Methods","classes","classNames","map","split","toggleClass","toggle","attr","attrs","attrName","removeAttr","transform","transition","duration","transitionDuration","on","args","eventType","targetSelector","listener","capture","handleLiveEvent","eventData","dom7EventData","unshift","is","parents","k","handleEvent","undefined","events","j","event","dom7LiveListeners","proxyListener","dom7Listeners","off","handlers","handler","dom7proxy","splice","trigger","evt","detail","bubbles","cancelable","data","dataIndex","dispatchEvent","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","styles","offsetWidth","parseFloat","outerHeight","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","css","props","prop","each","index","text","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","child","previousSibling","eq","returnIndex","append","els","newChild","tempDiv","firstChild","appendChild","prepend","insertBefore","next","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","parent","closest","find","foundElements","found","removeChild","nextTick","delay","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","webkitTransform","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","m42","isNode","node","HTMLElement","to","noExtend","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","support","deviceCached","browser","getSupport","calcSupport","smoothScroll","documentElement","touch","DocumentTouch","passiveListener","supportsPassive","opts","gestures","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","isSafari","toLowerCase","isWebView","test","calcBrowser","methodName","writable","eventsEmitter","priority","self","eventsListeners","destroyed","method","once","onceHandler","__emitterProxy","_len","_key","onAny","eventsAnyListeners","offAny","eventHandler","emit","_len2","_key2","update","updateSize","$el","clientWidth","clientHeight","isHorizontal","isVertical","Number","assign","size","updateSlides","getDirectionLabel","property","marginRight","getDirectionPropertyValue","label","$wrapperEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","grid","rows","slideSize","initSlides","shouldResetSlideSize","slidesPerView","breakpoints","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","_","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","visibleSlides","ceil","activeIndex","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","autoHeight","updateSlidesClasses","realIndex","activeSlide","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","loop","slideDuplicateClass","nextSlide","prevSlide","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","initialized","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","translate$1","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","direction","step","slideTo","initial","Error","indexAsNumber","isFinite","initialSlide","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","_immediateVirtual","_swiperImmediateVirtual","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","loopedSlides","slideNext","perGroup","slidesPerGroupAuto","slidesPerViewDynamic","increment","loopPreventsSlide","loopFix","_clientLeft","rewind","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","loopCreate","$selector","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","cloneNode","diff","loopDestroy","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","type","which","isTouched","isMoved","noSwipingClass","shadowRoot","path","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","getRootNode","closestElement","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","innerWidth","preventDefault","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","touchAngle","atan2","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","grabCursor","setGrabCursor","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","composedPath","lastClickTime","currentPos","stopIndex","groupSize","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","autoplay","running","paused","run","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","dummyEventAttached","dummyEventListener","touchEvents","domMethod","swiperMethod","start","passiveListeners","passive","move","end","updateOnWindowResize","events$1","attachEvents","bind","detachEvents","isGridEnabled","addClasses","suffixes","entries","prefix","resultClasses","item","prepareClasses","autoheight","fill","centered","emitContainerClasses","removeClasses","defaults","resizeObserver","createElements","url","breakpointsBase","simulateTouch","uniqueNavElements","preloadImages","updateOnImagesReady","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","moving","isLocked","cursor","unsetGrabCursor","breakpoint","getBreakpoint","currentBreakpoint","breakpointOnlyParams","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","directionChanged","needsReLoop","changeDirection","isEnabled","disable","enable","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","wasLocked","lastSlideIndex","lastSlideRightEdge","images","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","complete","onload","onerror","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","Swiper","setProgress","cls","getSlideClasses","slideEl","updates","view","exact","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","mount","mounted","getWrapperSelector","options","getWrapper","wrapper","destroy","deleteInstance","cleanStyles","eventName","deleteProps","object","static","newDefaults","mod","__modules__","modules","module","m","installModule","swipers","newParams","extendParams","swiperParams","passedParams","velocity","desktop","touchEventsTouch","touchEventsDesktop","clickTimeout","velocities","prototypeGroup","protoMethod","use","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","getEl","toggleEl","disabled","disabledClass","tagName","lockClass","$nextEl","$prevEl","onPrevClick","onNextClick","checkProps","element","createElementIfNotDefined","hideOnClick","hiddenClass","_s","targetEl","pagination","clickable","isHidden","ImageSlider","imageSliders","slider","lightbox","lightboxImage","lightboxClose","imageUrl","dataset","closeLightbox","closeFsVideo","jumpToLabel","muteVideo","pauseVideo","playVideo","showFsVideo","unmuteVideo","nl","lang","Videos","videoElements","video","VideoController","intersectionObserver","IntersectionObserver","entry","isIntersecting","play","pause","videoContainer","playButtons","mainPlayButton","muteButton","fsButton","fsButtonIcon","videoControls","fullscreenEnabled","fullscreenElement","exitFullscreen","setFullscreenData","requestFullscreen","display","isVideoPlaying","currentTime","ended","mute","muted","hasInteractedWithVideo","Parallax","parallax","transformY","parallaxItems","scale","calculateScale","originalScale","onscroll","Faqs","faqs","faq","Faq","toggleAnswer","faqClosedClass","answer","faqList","HorTextScroller","scrollers","scroller","Scroller","cloneContent","addEventListeners","setInterval","content","contentWrapper","contentText","contentWidth","insertAdjacentText","contentTextClone","AnimateOnScroll","animations","Animation","hasAttribute","aosLeftClass","aosBottomClass","TableOfContents","table","Table","generateLinks","icon","ariaLabel","anchorLabel","li","list","anchors","anchor","Alert","setBodyPadding","closeAlert","alert","cname","cvalue","exdays","setTime","expires","toUTCString","cookie","setCookie","alertCloseBtn","EventsFilters","form","option","Event","StudiesOverview","filtersDropdowns","filtersForm","dropdown","summary","dropdownIsOpen","toggleDropdown","details","Video"],"mappings":"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"}