{"version":3,"file":"main.js","sources":["../../../src/js/utils/dom.js","../../../src/js/extensions/Toggle.js","../../../node_modules/ssr-window/ssr-window.esm.js","../../../node_modules/dom7/dom7.esm.js","../../../node_modules/swiper/shared/dom.js","../../../node_modules/swiper/shared/utils.js","../../../node_modules/swiper/shared/get-support.js","../../../node_modules/swiper/shared/get-device.js","../../../node_modules/swiper/shared/get-browser.js","../../../node_modules/swiper/core/modules/resize/resize.js","../../../node_modules/swiper/core/modules/observer/observer.js","../../../node_modules/swiper/core/events-emitter.js","../../../node_modules/swiper/core/update/updateSize.js","../../../node_modules/swiper/core/update/updateSlides.js","../../../node_modules/swiper/core/update/updateAutoHeight.js","../../../node_modules/swiper/core/update/updateSlidesOffset.js","../../../node_modules/swiper/core/update/updateSlidesProgress.js","../../../node_modules/swiper/core/update/updateProgress.js","../../../node_modules/swiper/core/update/updateSlidesClasses.js","../../../node_modules/swiper/core/update/updateActiveIndex.js","../../../node_modules/swiper/core/update/updateClickedSlide.js","../../../node_modules/swiper/core/update/index.js","../../../node_modules/swiper/core/translate/getTranslate.js","../../../node_modules/swiper/core/translate/setTranslate.js","../../../node_modules/swiper/core/translate/minTranslate.js","../../../node_modules/swiper/core/translate/maxTranslate.js","../../../node_modules/swiper/core/translate/translateTo.js","../../../node_modules/swiper/core/translate/index.js","../../../node_modules/swiper/core/transition/setTransition.js","../../../node_modules/swiper/core/transition/transitionEmit.js","../../../node_modules/swiper/core/transition/transitionStart.js","../../../node_modules/swiper/core/transition/transitionEnd.js","../../../node_modules/swiper/core/transition/index.js","../../../node_modules/swiper/core/slide/slideTo.js","../../../node_modules/swiper/core/slide/slideToLoop.js","../../../node_modules/swiper/core/slide/slideNext.js","../../../node_modules/swiper/core/slide/slidePrev.js","../../../node_modules/swiper/core/slide/slideReset.js","../../../node_modules/swiper/core/slide/slideToClosest.js","../../../node_modules/swiper/core/slide/slideToClickedSlide.js","../../../node_modules/swiper/core/slide/index.js","../../../node_modules/swiper/core/loop/loopCreate.js","../../../node_modules/swiper/core/loop/loopFix.js","../../../node_modules/swiper/core/loop/loopDestroy.js","../../../node_modules/swiper/core/loop/index.js","../../../node_modules/swiper/core/grab-cursor/setGrabCursor.js","../../../node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","../../../node_modules/swiper/core/grab-cursor/index.js","../../../node_modules/swiper/core/events/onTouchStart.js","../../../node_modules/swiper/core/events/onTouchMove.js","../../../node_modules/swiper/core/events/onTouchEnd.js","../../../node_modules/swiper/core/events/onResize.js","../../../node_modules/swiper/core/events/onClick.js","../../../node_modules/swiper/core/events/onScroll.js","../../../node_modules/swiper/core/events/index.js","../../../node_modules/swiper/core/breakpoints/setBreakpoint.js","../../../node_modules/swiper/core/breakpoints/getBreakpoint.js","../../../node_modules/swiper/core/breakpoints/index.js","../../../node_modules/swiper/core/classes/addClasses.js","../../../node_modules/swiper/core/classes/removeClasses.js","../../../node_modules/swiper/core/classes/index.js","../../../node_modules/swiper/core/images/loadImage.js","../../../node_modules/swiper/core/images/preloadImages.js","../../../node_modules/swiper/core/images/index.js","../../../node_modules/swiper/core/check-overflow/index.js","../../../node_modules/swiper/core/defaults.js","../../../node_modules/swiper/core/moduleExtendParams.js","../../../node_modules/swiper/core/core.js","../../../src/components/Accordion/index.js","../../../src/components/SiteHeader/index.js","../../../src/components/Cost/index.js","../../../src/components/OpeningHours/index.js","../../../src/components/Map/index.js","../../../src/components/Countdown/index.js","../../../src/components/ContactOverview/index.js","../../../src/components/Inputs/FilterDropdown/index.js","../../../src/components/Gallery/index.js","../../../src/components/CookieRow/index.js","../../../src/components/SiteHeader/Mobile/index.js","../../../src/components/CampaignOverview/index.js","../../../src/components/NewsOverview/index.js","../../../src/components/NewsDetail/index.js","../../../src/components/SearchSportsCamps/index.js","../../../src/components/CookieBanner/index.js","../../../src/components/Search/index.js","../../../src/components/Floorplan/index.js","../../../src/components/SportRoutes/Components/RoutePlanner/index.js","../../../src/components/SportRoutes/Components/RouteYouEmbed/index.js","../../../src/components/ContactBlock/index.js","../../../src/components/POS/index.js","../../../src/components/DownloadList/index.js","../../../src/components/FilterTable/index.js","../../../src/components/Button/centraFilterButton.js","../../../src/components/CenterOverviewPage/inputs/Checkbox/index.js","../../../src/components/CenterOverviewPage/inputs/Dropdown/index.js","../../../src/components/CenterOverviewPage/inputs/Toggle/index.js","../../../src/js/modules/index.js","../../../src/js/main.js","../../../src/reportWebVitals.js","../../../node_modules/friendly-challenge/widget.js","../../../src/index.js","../../../node_modules/web-vitals/dist/web-vitals.js"],"sourcesContent":["// =============================================================================\r\n// Init\r\n// =============================================================================\r\n\r\n/**\r\n * Init\r\n * -----\r\n * Initialise multiple instance of a JS class based on the passed selector. The\r\n * element is passed to the instance with, if they are defined, parameters. If\r\n * multiple elements are found, an array of the instances is returned. If only\r\n * one is found, the one instance is returned.\r\n *\r\n * Params\r\n * -----\r\n * @param {*} selector CSS Selector to select the element in the DOM\r\n * @param {*} jsClass Class where an instance is created from\r\n * @param {*} params Object with parameters to be passed to the instance\r\n */\r\n\r\n const init = ({ selector = null, Module = null, params = {} } = {}) => {\r\n if (!selector || !Module || typeof selector !== \"string\" || typeof Module !== \"function\") {\r\n return null;\r\n }\r\n\r\n const els = document.querySelectorAll(selector);\r\n\r\n if (!els || els.length <= 0) {\r\n return null;\r\n }\r\n\r\n const instances = [...els].map((el) => {\r\n // If Module is a class, instantiate it\r\n if (Module.prototype && Module.prototype.constructor) {\r\n return new Module(el, params);\r\n }\r\n // If Module is a function, call it directly\r\n else {\r\n return Module(el, params);\r\n }\r\n });\r\n\r\n return instances.length === 1 ? instances[0] : instances;\r\n};\r\n\r\nconst initWithDelay = ({ selector = null, Module = null, params = {}, delay = 500 } = {}) => {\r\n if (!selector || !Module || typeof selector !== \"string\" || typeof Module !== \"function\") {\r\n return null;\r\n }\r\n\r\n const els = document.querySelectorAll(selector);\r\n\r\n if (!els || els.length <= 0) {\r\n return null;\r\n }\r\n\r\n const instances = [...els].map((el) => {\r\n setTimeout(() => {\r\n new Module(el, params);\r\n }, delay);\r\n });\r\n\r\n return instances.length === 1\r\n ? instances[0]\r\n : instances;\r\n};\r\n\r\n\r\n// =============================================================================\r\n// Is in view\r\n// =============================================================================\r\n\r\n/**\r\n * Info\r\n * -----\r\n * Check if an element passed to the function is in the viewport or not.\r\n *\r\n * Params\r\n * -----\r\n * @param {*} el DOM element that should be checked, whether its in view or not\r\n */\r\n\r\nconst isInView = ({ el = \"\" } = {}) => {\r\n const bounding = el.getBoundingClientRect();\r\n\r\n return (\r\n bounding.top <= window.innerHeight &&\r\n bounding.top + bounding.height > 0\r\n );\r\n};\r\n\r\n/* ========================================================================== */\r\n/* :: Get Bounding box */\r\n/* ========================================================================== */\r\n\r\n/**\r\n * Info\r\n * -----\r\n * Returns the bounding box and its properties from the passed element.\r\n *\r\n * Params\r\n * -----\r\n * @param {*} el DOM element that the bounding box is retrieved from.\r\n */\r\n\r\nconst getElBoundingBox = (el, keys = []) => {\r\n if (!el) {\r\n return;\r\n }\r\n\r\n const bounds = el.getBoundingClientRect() || {};\r\n const result = {};\r\n\r\n if (keys.length === 0) {\r\n return bounds;\r\n }\r\n\r\n keys.forEach((k) => {\r\n if (bounds[k]) {\r\n result[k] = bounds[k];\r\n }\r\n });\r\n\r\n return keys.length === 1\r\n ? bounds[keys[0]]\r\n : result;\r\n};\r\n\r\n// =============================================================================\r\n// Exports\r\n// =============================================================================\r\nexport default {\r\n init,\r\n initWithDelay,\r\n isInView,\r\n getElBoundingBox,\r\n};\r\n","// =============================================================================\r\n// Definition\r\n// =============================================================================\r\nclass Toggle {\r\n // Constructor\r\n // -------------------------------------------------------------------------\r\n constructor({ el = \"\", toggleClass = \"\" } = {}) {\r\n this.el = el;\r\n this.toggleClass = toggleClass;\r\n\r\n this.isToggled = this.el.classList.contains(this.toggleClass);\r\n }\r\n\r\n // Handlers\r\n // -------------------------------------------------------------------------\r\n toggle(e = null) {\r\n if (e) {\r\n e.preventDefault();\r\n }\r\n\r\n this.isToggled = !this.isToggled;\r\n\r\n if (this.isToggled) {\r\n this.enable();\r\n } else {\r\n this.disable();\r\n }\r\n }\r\n\r\n isToggled() {\r\n return this.isToggled;\r\n }\r\n\r\n enable() {\r\n this.el.classList.add(this.toggleClass);\r\n\r\n this.isToggled = true;\r\n }\r\n\r\n disable() {\r\n this.el.classList.remove(this.toggleClass);\r\n\r\n this.isToggled = false;\r\n }\r\n}\r\n\r\nexport default Toggle;\r\n","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\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.6\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2023, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: February 2, 2023\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 transitionStart(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionstart', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionstart', fireCallBack);\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, transitionStart, 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 = 0) {\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 = 'x') {\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(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[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({\n swiper,\n targetPosition,\n side\n}) {\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({\n userAgent\n} = {}) {\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 (!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 };","import { getWindow } from 'ssr-window';\nexport default function Resize({\n swiper,\n on,\n emit\n}) {\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(({\n contentBoxSize,\n contentRect,\n target\n }) => {\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({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const observers = [];\n const window = getWindow();\n\n const attach = (target, options = {}) => {\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}","/* 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(...args) {\n self.off(events, onceHandler);\n\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\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(...args) {\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 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};","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 = this && this.translate || 0) {\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 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};","import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\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 = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\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}","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};","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}","export default function transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step\n}) {\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 transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks = true, direction) {\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 = true, direction) {\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 setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n setTransition,\n transitionStart,\n transitionEnd\n};","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index = 0, speed = this.params.speed, runCallbacks = true, internal, initial) {\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 const translate = -snapGrid[snapIndex]; // 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 if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n } // Update progress\n\n\n swiper.updateProgress(translate);\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 = 0, speed = this.params.speed, runCallbacks = true, internal) {\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 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 = this.params.speed, runCallbacks = true, internal) {\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 = this.params.speed, runCallbacks = true, internal) {\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 = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\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 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 { 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 && swiper.params.loopedSlidesLimit) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n slide.attr('data-swiper-slide-index', index);\n });\n\n for (let i = 0; i < swiper.loopedSlides; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n appendSlides.push(slides.eq(index)[0]);\n prependSlides.unshift(slides.eq(slides.length - index - 1)[0]);\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 loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n loopCreate,\n loopFix,\n loopDestroy\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 setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n setGrabCursor,\n unsetGrabCursor\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 = this) {\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 !== ''; // eslint-disable-next-line\n\n const eventPath = event.composedPath ? event.composedPath() : event.path;\n\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n $targetEl = $(eventPath[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 } // Toggle navigation, pagination, scrollbar\n\n\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\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 { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\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 setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n setBreakpoint,\n getBreakpoint\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}","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n addClasses,\n removeClasses\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 loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\nexport default {\n loadImage,\n preloadImages\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 loopedSlidesLimit: true,\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 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(...args) {\n let el;\n let params;\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 }); // eslint-disable-next-line no-constructor-return\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 // eslint-disable-next-line no-constructor-return\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 = 'current', exact = false) {\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 = true) {\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 changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n\n if (swiper.rtl) {\n swiper.$el.addClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n\n swiper.update();\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 = true, cleanStyles = true) {\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 { Toggle } from \"../../js/extensions\";\r\n\r\nexport default class Accordion extends Toggle {\r\n constructor(el) {\r\n super({\r\n el,\r\n toggleClass: \"c-accordion--active\",\r\n });\r\n this.initEvents();\r\n }\r\n\r\n initEvents() {\r\n this.el.removeEventListener(\"click\", (e) => this.handleClick(e));\r\n this.el.addEventListener(\"click\", (e) => this.handleClick(e));\r\n }\r\n\r\n handleClick(e = {}) {\r\n super.toggle();\r\n if (super.isToggled()) {\r\n super.enable();\r\n } else {\r\n super.disable();\r\n }\r\n }\r\n}\r\n","export default class SiteHeader {\r\n constructor(el) {\r\n this.el = el;\r\n // this.init();\r\n // this.initEvents();\r\n this.account = document.querySelector(\".account\");\r\n this.Util = {\r\n append: function (markup, el) {\r\n if (typeof el == \"string\") {\r\n var els = document.querySelectorAll(el);\r\n for (var i = 0; i < els.length; i++) {\r\n els[i].insertAdjacentHTML(\"afterbegin\", markup);\r\n }\r\n } else {\r\n el.insertAdjacentHTML(\"afterbegin\", markup);\r\n }\r\n },\r\n\r\n simpleClone: function (obj) {\r\n return JSON.parse(JSON.stringify(obj));\r\n },\r\n\r\n hasClass: function (cl, el) {\r\n return el.className.split(\" \").indexOf(cl.replace(\".\", \"\")) > -1;\r\n },\r\n\r\n addClass: function (cl, el) {\r\n if (el.className.trim() == \"\" || el.className.indexOf(cl) == -1) {\r\n el.className += \" \" + cl;\r\n }\r\n },\r\n\r\n removeClass: function (cl, el) {\r\n if (el.className.trim() != \"\" && el.className.indexOf(cl) > -1) {\r\n el.className = el.className.replace(new RegExp(\"\\\\s?\" + cl), \"\");\r\n }\r\n },\r\n\r\n next: function (el, cl) {\r\n if (cl) {\r\n cl = cl.replace(\".\", \"\");\r\n return !el.nextElementSibling ||\r\n this.hasClass(cl, el.nextElementSibling)\r\n ? el.nextElementSibling\r\n : this.next(el.nextElementSibling, cl);\r\n } else {\r\n return el.nextElementSibling;\r\n }\r\n },\r\n\r\n prev: function (el, cl) {\r\n if (cl) {\r\n cl = cl.replace(\".\", \"\");\r\n return !el.previousElementSibling ||\r\n this.hasClass(cl, el.previousElementSibling)\r\n ? el.previousElementSibling\r\n : this.prev(el.previousElementSibling, cl);\r\n } else {\r\n return el.previousElementSibling;\r\n }\r\n },\r\n\r\n closest: function (cl, el) {\r\n cl = cl.replace(\".\", \"\");\r\n\r\n while (el.parentNode) {\r\n el = el.parentNode;\r\n\r\n if (this.hasClass(cl, el)) {\r\n return el;\r\n break;\r\n }\r\n }\r\n\r\n return false;\r\n },\r\n\r\n delegate: function (\r\n eventString,\r\n parentSelector,\r\n delegateSelector,\r\n callback\r\n ) {\r\n var els = document.querySelectorAll(parentSelector);\r\n var dS = delegateSelector.replace(/^(?:\\.|#)/, \"\");\r\n\r\n function binding(ev) {\r\n if (ev.target) {\r\n if (ev.target.className.split(\" \").indexOf(dS) > -1) callback(ev);\r\n }\r\n }\r\n\r\n // prevent the events from being bound multiple times\r\n this.delegated = this.delegated || {};\r\n // if the binding already exists, remove it, so it won't double up, but will\r\n // also allow for any new elements to be bound.\r\n var bindingKey = (\r\n eventString +\r\n parentSelector +\r\n delegateSelector\r\n ).replace(/\\s/g, \"\");\r\n\r\n if (this.delegated[bindingKey]) {\r\n var old = this.delegated[bindingKey];\r\n\r\n for (var i = 0; i < old.els.length; i++) {\r\n els[i].removeEventListener(eventString, old.binding, true);\r\n }\r\n }\r\n\r\n this.delegated[bindingKey] = {\r\n els: els,\r\n binding: binding,\r\n };\r\n\r\n for (var i = 0; i < els.length; i++) {\r\n els[i]?.addEventListener(eventString, binding, true);\r\n }\r\n },\r\n };\r\n\r\n /**\r\n * A map of all the keyboard keys handled by this Class.\r\n * @type {Object}\r\n */\r\n this.keyMap = {\r\n TAB: 9,\r\n ENTER: 13,\r\n ESC: 27,\r\n SPACE: 32,\r\n LEFT: 37,\r\n UP: 38,\r\n RIGHT: 39,\r\n DOWN: 40,\r\n };\r\n /**\r\n * A map of selectors used to reference DOM nodes.\r\n * @type {Object}\r\n */\r\n this.selectors = {\r\n NAV_CONTAINER: \".js-navContainer\",\r\n ROOT_ITEM: \".js-rootItem\",\r\n ROOT_LIST_ITEM: \".js-rootListItem\",\r\n NAV_LIST: \".js-navList\",\r\n LIST_ITEM: \".js-listItem\",\r\n NAV_ITEM: \".js-navItem\",\r\n COLUMN_ITEM: \".js-columnItem\",\r\n NAV_ITEM_WITH_SUB_NAV: \".js-navItemWithSubNav\",\r\n SUB_NAV_COLUMNS: \".js-subNavColumns\",\r\n SUB_NAV_COLUMN_SEPARATOR: \".js-subNavColumnSeparator\",\r\n SUB_NAV_TOGGLE_BTN: \".js-subNavToggleBtn\",\r\n ARIA_NOT_HIDDEN: '[aria-hidden=\"false\"]',\r\n };\r\n /**\r\n * A map of CSS classes used to modifiy the state of a DOM node.\r\n * @type {Object}\r\n */\r\n this.cssModifiers = {\r\n IS_VISIBLE: \"is--visible\",\r\n IS_ROOT_NAV: \"is--root-nav\",\r\n IS_CLOSED: \"is--closed\",\r\n IS_OPEN: \"is--open\",\r\n HAS_OPEN_SUB: \"has--open-sub\",\r\n };\r\n /**\r\n * A map of Event types handled by this Class.\r\n * @type {Object}\r\n */\r\n this.events = {\r\n CLICK: \"click\",\r\n MOUSE_OVER: \"mouseover\",\r\n KEY_UP: \"keyup\",\r\n KEY_DOWN: \"keydown\",\r\n };\r\n /**\r\n * A map of ARIA attributes handled by this Class.\r\n * @type {Object}\r\n */\r\n this.ariaAttributes = {\r\n HIDDEN: \"aria-hidden\",\r\n LABEL: \"aria-label\",\r\n };\r\n /**\r\n * Whether or not the user is interacting with the nav via the keyboard.\r\n * @type {Boolean}\r\n */\r\n this.triggeredByKeyboard = false;\r\n /**\r\n * Will be executed when a user clicks on a nav link.\r\n * @type {Object}\r\n */\r\n this.onLinkClick = this.handleNavLinkClicks || undefined;\r\n /**\r\n * Will be executed when a user clicks on a nav button.\r\n * @type {Object}\r\n */\r\n this.onBtnClick = this.handleNavLinkClicks || undefined;\r\n /**\r\n * A map of the types of navs this Class supports.\r\n * @type {Object}\r\n */\r\n this.navTypes = {\r\n ACCORDIAN: \"accordian\",\r\n COLUMN: \"column\",\r\n DROP_DOWN: \"dropDown\",\r\n };\r\n /**\r\n * The type of nav that will be set up.\r\n * @type {String}\r\n */\r\n this.navType = \"column\" || this.navTypes.DROP_DOWN;\r\n /**\r\n * A unique identifier used for event delegation and styling.\r\n * @type {String|null}\r\n */\r\n this.navClass = \"is-for--column-nav\" || null;\r\n this.addListeners();\r\n }\r\n /**\r\n * Show the dropdown from the account\r\n * @param {Event} ev - Click event.\r\n *\r\n */\r\n showDropdownTop(ev) {\r\n ev.preventDefault();\r\n ev.target.parentNode\r\n .querySelector(\".c-nav-top--dropdown\")\r\n .classList.toggle(\"active\");\r\n }\r\n // init();\r\n // initEvents();\r\n\r\n /**\r\n * Checks if the element belongs to a root item, so it knows whether or not to close a sub nav or keep iterating over nav elements.\r\n *\r\n * @param {HTMLElement} subNav - The sub nav that the current element the user selected belongs to.\r\n * @param {HTMLElement} el - The element the user is on.\r\n */\r\n rootItemCheck(subNav, el) {\r\n return this.navType == this.navTypes.COLUMN\r\n ? !!subNav.parentNode.parentNode.querySelector(\r\n this.selectors.ROOT_ITEM\r\n ) && !this.Util.hasClass(this.selectors.ROOT_ITEM, el)\r\n : !!subNav.parentNode.querySelector(this.selectors.ROOT_ITEM) &&\r\n !this.Util.hasClass(this.selectors.ROOT_ITEM, el);\r\n }\r\n\r\n /**\r\n * Selects the next item in nav. If there isn't one it'll bounce back to the first item in the list. If it's at the end\r\n * of a sub nav that belongs to a root item, it'll close the nav and refocus the root item.\r\n *\r\n * @param {HTMLElement} el - The element the user is on.\r\n * @param {Boolean} [openSub] - Whether or not to open a sub nav.\r\n * @param {Number} [direction] - The keyboard key code of the direction the user chose.\r\n */\r\n selectNextNavItem(el, openSub, direction) {\r\n var menu = this.Util.closest(this.selectors.NAV_LIST, el);\r\n var hasRootParent = this.rootItemCheck(menu, el);\r\n var closeSub = false;\r\n var nextEl = this.Util.next(el.parentNode);\r\n\r\n if (!nextEl) {\r\n nextEl = menu.children[0];\r\n if (hasRootParent || this.navType == this.navTypes.ACCORDIAN)\r\n closeSub = true;\r\n }\r\n\r\n if (\r\n !openSub &&\r\n this.Util.hasClass(this.selectors.COLUMN_ITEM, el) &&\r\n direction\r\n ) {\r\n var nextMenu = this.Util.next(menu, this.selectors.NAV_LIST);\r\n\r\n if (nextMenu) {\r\n menu = nextMenu;\r\n this.columnIndex++;\r\n } else {\r\n menu = menu.parentNode.children[0];\r\n this.columnIndex = 0;\r\n }\r\n\r\n // select the next horizontal item, or the last item in the next menu.\r\n var nextHorizontalEl = menu.children[this.itemIndex];\r\n if (nextHorizontalEl) {\r\n nextEl = nextHorizontalEl;\r\n } else {\r\n this.itemIndex = menu.children.length - 1;\r\n nextEl = menu.children[this.itemIndex];\r\n }\r\n\r\n closeSub = false;\r\n } else if (!openSub && direction) {\r\n this.columnIndex = 0;\r\n }\r\n\r\n if (\r\n this.navType == this.navTypes.COLUMN &&\r\n !openSub &&\r\n !direction &&\r\n !closeSub\r\n ) {\r\n this.itemIndex++;\r\n }\r\n\r\n if (openSub) {\r\n if (this.navType == this.navTypes.COLUMN) {\r\n this.itemIndex = 0;\r\n\r\n // unhide all columns\r\n var columns = this.Util.next(el).querySelectorAll(\r\n this.selectors.NAV_LIST\r\n );\r\n\r\n for (var i = 0; i < columns.length; i++) {\r\n columns[i].setAttribute(this.ariaAttributes.HIDDEN, false);\r\n }\r\n\r\n this.Util.addClass(this.cssModifiers.IS_VISIBLE, this.Util.next(el));\r\n if (!this.columnIndex) this.columnIndex = 0;\r\n nextEl = columns[this.columnIndex];\r\n } else {\r\n nextEl = el.parentNode.querySelector(this.selectors.NAV_LIST);\r\n nextEl.setAttribute(this.ariaAttributes.HIDDEN, false);\r\n }\r\n\r\n if (this.triggeredByKeyboard)\r\n this.Util.addClass(this.cssModifiers.HAS_OPEN_SUB, el.parentNode);\r\n } else if (closeSub) {\r\n if (this.navType == this.navTypes.COLUMN) {\r\n // hide all columns\r\n var columns = menu.parentNode.querySelectorAll(this.selectors.NAV_LIST);\r\n\r\n for (var i = 0; i < columns.length; i++) {\r\n columns[i].setAttribute(this.ariaAttributes.HIDDEN, true);\r\n }\r\n\r\n this.Util.removeClass(this.cssModifiers.IS_VISIBLE, menu.parentNode);\r\n nextEl = menu.parentNode.parentNode;\r\n } else if (!this.Util.hasClass(this.cssModifiers.IS_ROOT_NAV, menu)) {\r\n nextEl = menu.parentNode;\r\n menu.setAttribute(this.ariaAttributes.HIDDEN, true);\r\n\r\n if (this.navType == this.navTypes.ACCORDIAN) {\r\n this.closeAccordianSubNav(\r\n nextEl.querySelector(this.selectors.SUB_NAV_TOGGLE_BTN),\r\n menu\r\n );\r\n }\r\n }\r\n\r\n if (this.triggeredByKeyboard)\r\n this.Util.removeClass(this.cssModifiers.HAS_OPEN_SUB, nextEl);\r\n }\r\n if (nextEl.querySelector(this.selectors.NAV_ITEM) != null) {\r\n nextEl.querySelector(this.selectors.NAV_ITEM).focus();\r\n } else {\r\n nextEl = menu.children[1];\r\n nextEl.querySelector(this.selectors.NAV_ITEM).focus();\r\n }\r\n }\r\n\r\n /**\r\n * Selects the previous item in nav. If there isn't one it'll bounce to the last item in the list. If it's at the start\r\n * of a sub nav that belongs to a root item, it'll close the nav and refocus the root item.\r\n *\r\n * @param {HTMLElement} el - The element the user is on.\r\n * @param {Boolean} [closeSub] - Whether or not to close a sub nav.\r\n * @param {Number} [direction] - The keyboard key code of the direction the user chose.\r\n */\r\n selectPreviousNavItem(el, closeSub, direction) {\r\n var menu = this.Util.closest(this.selectors.NAV_LIST, el);\r\n var hasRootParent = this.rootItemCheck(menu, el);\r\n var prevEl = this.Util.prev(el.parentNode);\r\n\r\n if (!prevEl) {\r\n prevEl = menu.children[menu.children.length - 1];\r\n if (\r\n (hasRootParent && closeSub == undefined) ||\r\n this.navType == this.navTypes.ACCORDIAN\r\n )\r\n closeSub = true;\r\n }\r\n\r\n if (\r\n !closeSub &&\r\n this.Util.hasClass(this.selectors.COLUMN_ITEM, el) &&\r\n direction\r\n ) {\r\n var prevMenu = this.Util.prev(menu, this.selectors.NAV_LIST);\r\n\r\n if (prevMenu) {\r\n menu = prevMenu;\r\n this.columnIndex--;\r\n } else {\r\n this.columnIndex = menu.parentNode.children.length - 1;\r\n menu = menu.parentNode.children[this.columnIndex];\r\n }\r\n\r\n // select the previous horizontal item, or the last item in the previous menu.\r\n var prevHorizontalEl = menu.children[this.itemIndex];\r\n if (prevHorizontalEl) {\r\n prevEl = prevHorizontalEl;\r\n } else {\r\n this.itemIndex = menu.children.length - 1;\r\n prevEl = menu.children[this.itemIndex];\r\n }\r\n\r\n closeSub = false;\r\n } else if (!closeSub && direction) {\r\n this.columnIndex = 0;\r\n }\r\n\r\n if (this.navType == this.navTypes.COLUMN && !direction && !closeSub) {\r\n this.itemIndex--;\r\n }\r\n\r\n if (closeSub) {\r\n if (this.navType == this.navTypes.COLUMN) {\r\n // hide all columns\r\n var columns = menu.parentNode.querySelectorAll(this.selectors.NAV_LIST);\r\n\r\n for (var i = 0; i < columns.length; i++) {\r\n columns[i].setAttribute(this.ariaAttributes.HIDDEN, true);\r\n }\r\n\r\n this.Util.removeClass(this.cssModifiers.IS_VISIBLE, menu.parentNode);\r\n prevEl = menu.parentNode.parentNode;\r\n } else if (!this.Util.hasClass(this.cssModifiers.IS_ROOT_NAV, menu)) {\r\n prevEl = menu.parentNode;\r\n menu.setAttribute(this.ariaAttributes.HIDDEN, true);\r\n\r\n if (this.navType == this.navTypes.ACCORDIAN) {\r\n this.closeAccordianSubNav(\r\n prevEl.querySelector(this.selectors.SUB_NAV_TOGGLE_BTN),\r\n menu\r\n );\r\n }\r\n }\r\n\r\n if (this.triggeredByKeyboard)\r\n this.Util.removeClass(this.cssModifiers.HAS_OPEN_SUB, prevEl);\r\n }\r\n const prev = prevEl.querySelector(this.selectors.NAV_ITEM);\r\n if (prev != null) {\r\n prevEl.querySelector(this.selectors.NAV_ITEM).focus();\r\n } else {\r\n prevEl = menu.children[1];\r\n prevEl.querySelector(this.selectors.NAV_ITEM).focus();\r\n }\r\n }\r\n\r\n /**\r\n * Remove any visual indicators used to display an open sub nav.\r\n *\r\n * @param {HTMLElement} parentEl - All child elements with CSS class will be reset.\r\n */\r\n removeOpenSubState(parentEl) {\r\n var elsWithClass = parentEl.querySelectorAll(\r\n \".\" + this.cssModifiers.HAS_OPEN_SUB\r\n );\r\n\r\n // remove any visual indicators used to display an open sub nav\r\n for (var i = 0; i < elsWithClass.length; i++) {\r\n this.Util.removeClass(this.cssModifiers.HAS_OPEN_SUB, elsWithClass[i]);\r\n }\r\n }\r\n\r\n /**\r\n * Closes all open sub navs and will return focus to the root item.\r\n *\r\n * @param {Event} ev - Normally a keyboard event with ESC or TAB. Could also be triggered if the user starts\r\n * using a mouse (mouseover) after they've been using the keyboard.\r\n */\r\n closeOpenNavs(ev) {\r\n var cont = ev.currentTarget;\r\n var item = ev.target;\r\n var isEscape = ev.keyCode == this.keyMap.ESC;\r\n var isTab = ev.keyCode == this.keyMap.TAB;\r\n\r\n if (this.triggeredByKeyboard) {\r\n // only close the sub navs if you're at the top/bottom of the nav list on TAB\r\n if (isTab) {\r\n if (ev.shiftKey && this.Util.prev(item.parentNode)) return;\r\n if (!ev.shiftKey && this.Util.next(item.parentNode)) return;\r\n }\r\n\r\n var visibleNavs = cont.querySelectorAll(this.selectors.ARIA_NOT_HIDDEN);\r\n\r\n if (visibleNavs.length > 1) {\r\n this.removeOpenSubState(cont);\r\n\r\n // closes all sub navs, resets ARIA attributes, and selects the root item\r\n for (var i = 0; i < visibleNavs.length; i++) {\r\n var nav = visibleNavs[i];\r\n\r\n if (this.Util.hasClass(this.cssModifiers.IS_ROOT_NAV, nav)) {\r\n // root item should regain focus on escape\r\n if (isEscape || isTab) {\r\n this.Util.closest(this.selectors.ROOT_LIST_ITEM, item)\r\n .querySelector(this.selectors.ROOT_ITEM)\r\n .focus();\r\n\r\n // without this, SHIFT+TAB will select the previous item after we've selected the root item\r\n ev.preventDefault();\r\n }\r\n // blur any root items that had focus so they don't stay highlighted on hover\r\n else {\r\n document.activeElement.blur();\r\n }\r\n }\r\n // close open sub menus\r\n else {\r\n nav.setAttribute(this.ariaAttributes.HIDDEN, true);\r\n\r\n if (this.navType == this.navTypes.ACCORDIAN) {\r\n this.closeAccordianSubNav(\r\n nav.parentNode.querySelector(this.selectors.SUB_NAV_TOGGLE_BTN),\r\n nav\r\n );\r\n }\r\n }\r\n }\r\n\r\n if (this.navType == this.navTypes.COLUMN && visibleNavs.length) {\r\n // node zero will always be the root node\r\n this.Util.removeClass(\r\n this.cssModifiers.IS_VISIBLE,\r\n visibleNavs[1].parentNode\r\n );\r\n this.columnIndex = 0;\r\n }\r\n }\r\n\r\n this.triggeredByKeyboard = false;\r\n }\r\n }\r\n\r\n /**\r\n * User has clicked a nav link.\r\n *\r\n * @param {Event} ev - Click event.\r\n */\r\n handleLinkClick(ev) {\r\n ev.preventDefault();\r\n window.location = ev.target.getAttribute(\"href\");\r\n }\r\n\r\n /**\r\n * User has clicked a nav button.\r\n *\r\n * @param {Event} ev - Click event.\r\n */\r\n handleBtnClick(ev) {\r\n ev.preventDefault();\r\n\r\n if (this.onBtnClick) {\r\n this.onBtnClick(ev);\r\n }\r\n }\r\n\r\n /**\r\n * Handles navigation via keyboard events.\r\n *\r\n * @param {Event} ev - Keyboard events.\r\n */\r\n handleKeyUp(ev) {\r\n var el = ev.target;\r\n\r\n this.triggeredByKeyboard = true;\r\n\r\n switch (ev.keyCode) {\r\n case this.keyMap.LEFT:\r\n // Only allow accordian menus to move up and down\r\n if (this.navType != this.navTypes.ACCORDIAN) {\r\n // root els go left to right\r\n if (\r\n this.Util.hasClass(this.selectors.ROOT_ITEM, el) ||\r\n this.Util.hasClass(this.selectors.COLUMN_ITEM, el)\r\n ) {\r\n this.selectPreviousNavItem(el, false, this.keyMap.LEFT);\r\n }\r\n // close the current menu\r\n else {\r\n this.selectPreviousNavItem(el, true);\r\n }\r\n }\r\n break;\r\n\r\n case this.keyMap.UP:\r\n this.selectPreviousNavItem(el);\r\n break;\r\n\r\n case this.keyMap.RIGHT:\r\n // Only allow accordian menus to move up and down\r\n if (this.navType != this.navTypes.ACCORDIAN) {\r\n // root els & columns go left to right\r\n if (\r\n this.Util.hasClass(this.selectors.ROOT_ITEM, el) ||\r\n this.Util.hasClass(this.selectors.COLUMN_ITEM, el)\r\n ) {\r\n this.selectNextNavItem(el, false, this.keyMap.RIGHT);\r\n }\r\n // sub items will open the next menu\r\n else if (\r\n this.Util.hasClass(this.selectors.NAV_ITEM_WITH_SUB_NAV, el)\r\n ) {\r\n this.selectNextNavItem(el, true);\r\n }\r\n }\r\n break;\r\n\r\n case this.keyMap.DOWN:\r\n if (\r\n this.Util.hasClass(this.selectors.ROOT_ITEM, el) &&\r\n this.Util.hasClass(this.selectors.NAV_ITEM_WITH_SUB_NAV, el) &&\r\n this.navType != this.navTypes.ACCORDIAN\r\n ) {\r\n this.selectNextNavItem(el, true);\r\n } else {\r\n this.selectNextNavItem(el);\r\n }\r\n break;\r\n\r\n case this.keyMap.SPACE:\r\n if (this.Util.hasClass(this.selectors.NAV_ITEM_WITH_SUB_NAV, el)) {\r\n if (this.navType == this.navTypes.ACCORDIAN) {\r\n this.handleMenuToggle(ev);\r\n } else {\r\n this.selectNextNavItem(el, true);\r\n }\r\n }\r\n break;\r\n\r\n case this.keyMap.ESC:\r\n this.closeOpenNavs(ev);\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Handles navigation via keyboard events. Some keys need to be captured on down otherwise we can't intercept them.\r\n *\r\n * @param {Event} ev - Keyboard events.\r\n */\r\n handleKeyDown(ev) {\r\n var dontScrollThese = [\r\n this.keyMap.UP,\r\n this.keyMap.DOWN,\r\n this.keyMap.LEFT,\r\n this.keyMap.RIGHT,\r\n this.keyMap.SPACE,\r\n ].join(\"|\");\r\n\r\n if (new RegExp(dontScrollThese).test(ev.keyCode)) {\r\n ev.preventDefault();\r\n }\r\n\r\n switch (ev.keyCode) {\r\n case this.keyMap.TAB:\r\n this.closeOpenNavs(ev);\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Handles all clicks within a nav and forwards them on to their proper functionality.\r\n *\r\n * @param {Event} ev - Click event.\r\n */\r\n handleClick(ev) {\r\n var el = ev.target;\r\n\r\n if (el.getAttribute(\"href\")) this.handleLinkClick(ev);\r\n else if (this.Util.hasClass(this.selectors.SUB_NAV_TOGGLE_BTN, el))\r\n this.handleMenuToggle(ev);\r\n else this.handleBtnClick(ev);\r\n }\r\n\r\n /**\r\n * Adds all event bindings for the nav.\r\n */\r\n addListeners() {\r\n var contSelector = this.selectors.NAV_CONTAINER;\r\n if (this.navClass) contSelector += \".\" + this.navClass;\r\n\r\n this.Util.delegate(\r\n this.events.MOUSE_OVER,\r\n contSelector,\r\n this.selectors.NAV_ITEM,\r\n this.closeOpenNavs.bind(this)\r\n );\r\n this.Util.delegate(\r\n this.events.KEY_DOWN,\r\n contSelector,\r\n this.selectors.NAV_ITEM,\r\n this.handleKeyDown.bind(this)\r\n );\r\n this.Util.delegate(\r\n this.events.KEY_UP,\r\n contSelector,\r\n this.selectors.NAV_ITEM,\r\n this.handleKeyUp.bind(this)\r\n );\r\n this.Util.delegate(\r\n this.events.CLICK,\r\n contSelector,\r\n this.selectors.NAV_ITEM,\r\n this.handleClick.bind(this)\r\n );\r\n this.Util.delegate(\r\n this.events.CLICK,\r\n contSelector,\r\n this.selectors.SUB_NAV_TOGGLE_BTN,\r\n this.handleClick.bind(this)\r\n );\r\n\r\n this.Util.delegate(\r\n this.events.CLICK,\r\n \".account\",\r\n \"c-link--dropdown\",\r\n this.showDropdownTop.bind(this)\r\n );\r\n this.Util.delegate(\r\n this.events.CLICK,\r\n \".c-header__current-centra\",\r\n \"c-link--dropdown\",\r\n this.showDropdownTop.bind(this)\r\n );\r\n this.Util.delegate(\r\n this.events.CLICK,\r\n \".c-header__current-language\",\r\n \"c-link--dropdown\",\r\n this.showDropdownTop.bind(this)\r\n );\r\n \r\n document.querySelector(\".column-nav .account .c-link--dropdown .my-sv-title\")?.addEventListener(\"click\", function(evt){\r\n evt.preventDefault();\r\n document.querySelector(\".column-nav .account .c-link--dropdown\")?.click();\r\n }, false);\r\n document.querySelector(\".c-site-header-mobile .account .c-link--dropdown .my-sv-title\")?.addEventListener(\"click\", function(evt){\r\n evt.preventDefault();\r\n document.querySelector(\".c-site-header-mobile .account .c-link--dropdown\").click();\r\n }, false);\r\n document.querySelector(\".column-nav .account .c-link--dropdown img\")?.addEventListener(\"click\", function(evt){\r\n evt.preventDefault();\r\n document.querySelector(\".column-nav .account .c-link--dropdown\").click();\r\n }, false);\r\n document.querySelector(\".c-site-header-mobile .account .c-link--dropdown img\")?.addEventListener(\"click\", function(evt){\r\n evt.preventDefault();\r\n document.querySelector(\".c-site-header-mobile .account .c-link--dropdown\").click();\r\n }, false);\r\n }\r\n\r\n handleNavLinkClicks(ev) {\r\n var el = document.querySelector(\".js-clickOutput\");\r\n console.log(ev);\r\n\r\n //el.innerHTML = \"\";\r\n // this.Util.append(\r\n // \"Route page to: \" + ev.target.getAttribute(\"href\") + \"\",\r\n // el\r\n // );\r\n }\r\n}\r\n","export default class Cost {\r\n constructor(el) {\r\n this.el = el;\r\n this.init();\r\n this.initEvents();\r\n }\r\n\r\n init() {\r\n this.fillTable();\r\n }\r\n\r\n initEvents() {\r\n var select = this.el.querySelector(\"select\");\r\n\r\n select.removeEventListener(\"change\", (e) => this.handleChange(e));\r\n\r\n select.addEventListener(\"change\", (e) => this.handleChange(e));\r\n }\r\n\r\n handleChange(e = {}) {\r\n this.fillTable();\r\n }\r\n\r\n fillTable() {\r\n var select = this.el.querySelector(\"select\");\r\n var selectvalue = select.value.toLowerCase();\r\n var rows = this.el.querySelectorAll(\".targetgroup-table\");\r\n rows.forEach((row) => {\r\n var targetgroup = row.dataset.targetgroup;\r\n\r\n if (targetgroup != null && targetgroup.includes(selectvalue)) {\r\n row.style.display = \"block\";\r\n } else {\r\n row.style.display = \"none\";\r\n }\r\n });\r\n }\r\n}\r\n","export default class OpeningHours {\r\n constructor(el) {\r\n this.el = el;\r\n this.init();\r\n this.initEvents();\r\n }\r\n\r\n init() {\r\n this.showTables();\r\n }\r\n\r\n initEvents() {\r\n var select = this.el.querySelector(\"select\");\r\n\r\n select.removeEventListener(\"change\", (e) => this.handleChange(e));\r\n\r\n select.addEventListener(\"change\", (e) => this.handleChange(e));\r\n }\r\n\r\n handleChange(e = {}) {\r\n this.showTables();\r\n }\r\n\r\n showTables() {\r\n var selectvalue = this.el.querySelector(\"select\").value.toLowerCase();\r\n var tables = this.el.querySelectorAll(\".c-container\");\r\n\r\n tables.forEach((table) => {\r\n var accommodation = table.dataset.accommodation;\r\n if (accommodation != null && accommodation.includes(selectvalue)) {\r\n table.style.display = \"block\";\r\n } else {\r\n table.style.display = \"none\";\r\n }\r\n });\r\n }\r\n}\r\n","export default class Map {\r\n constructor(el) {\r\n this.el = el;\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.initMap();\r\n this.fetchLocations();\r\n }\r\n\r\n initMap() {\r\n const google = window.google;\r\n var infowindow = new google.maps.InfoWindow();\r\n var locations = this.fetchLocations();\r\n\r\n // Focus map on first location in array (if no locations --> Fallback to Ghent)\r\n var lat = locations[0]?.latitude ?? 51.049009;\r\n var long = locations[0]?.longitude ?? 3.684922;\r\n\r\n const mapElement = document.querySelector(\"#map\");\r\n\r\n var map = null;\r\n\r\n if (mapElement.classList.contains(\"map-full\")) {\r\n map = new google.maps.Map(mapElement, {\r\n center: { lat: 51.068094, lng: 4.043343 },\r\n zoom: 8,\r\n });\r\n }\r\n else {\r\n map = new google.maps.Map(mapElement, {\r\n center: { lat: lat, lng: long },\r\n zoom: 12,\r\n });\r\n }\r\n\r\n var marker, i;\r\n\r\n for (i = 0; i < locations.length; i++) {\r\n const icon = {\r\n url: locations[i].markerUrl,\r\n scaledSize: new google.maps.Size(40, 40)\r\n };\r\n\r\n marker = new google.maps.Marker({\r\n position: new google.maps.LatLng(locations[i].latitude, locations[i].longitude),\r\n map: map,\r\n icon: icon,\r\n });\r\n\r\n var contentString = `\r\n
\r\n
\r\n ${locations[i].name}\r\n

${locations[i].street}

\r\n

${locations[i].postalcode} ${locations[i].city}

\r\n \r\n ${locations[i].mapslink}\r\n \r\n
\r\n
\r\n `;\r\n\r\n if(locations[i].email !== \"\") {\r\n contentString += `\r\n

${locations[i].dictMail}

\r\n ${locations[i].email}
\r\n `\r\n }\r\n\r\n if(locations[i].phone !== \"\") {\r\n contentString += `\r\n

${locations[i].dictPhone}

\r\n

${locations[i].phone}

\r\n `\r\n }\r\n\r\n contentString += `\r\n
\r\n
\r\n `;\r\n\r\n marker.contentString = contentString;\r\n \r\n // Automaticaly open the info card of the first marker (remove this if unwanted)\r\n if (!mapElement.classList.contains(\"map-full\")) {\r\n if(i === 0){\r\n infowindow.setContent(contentString);\r\n infowindow.open(map, marker);\r\n } \r\n }\r\n\r\n google.maps.event.addListener(\r\n marker, \"click\", (function (marker, i) {\r\n return function () {\r\n infowindow.setContent(this.contentString);\r\n infowindow.open(map, marker);\r\n };\r\n })(marker, i)\r\n );\r\n }\r\n }\r\n\r\n fetchLocations() {\r\n const locationsString = document.getElementById(\"map-wide\").getAttribute(\"locations\");\r\n const locations = JSON.parse(locationsString.replace(/'/g, '\"'));\r\n\r\n return locations;\r\n }\r\n}\r\n","export default class Countdown {\r\n constructor(el) {\r\n this.el = el;\r\n this.value = document.getElementById(\"countdown\").getAttribute(\"value\");\r\n this.date = new Date(this.value).getTime();\r\n this.countdown = document.getElementById(\"tiles\");\r\n this.init();\r\n this.initEvents();\r\n }\r\n pad(n) {\r\n return (n < 10 ? \"0\" : \"\") + n;\r\n }\r\n getCountdown() {\r\n let current_date = new Date().getTime();\r\n let days, hours, minutes, seconds;\r\n var seconds_left = (this.date - current_date) / 1000;\r\n\r\n days = this.pad(parseInt(seconds_left / 86400));\r\n seconds_left = seconds_left % 86400;\r\n\r\n hours = this.pad(parseInt(seconds_left / 3600));\r\n seconds_left = seconds_left % 3600;\r\n\r\n minutes = this.pad(parseInt(seconds_left / 60));\r\n seconds = this.pad(parseInt(seconds_left % 60));\r\n\r\n if (this.date > current_date) {\r\n this.countdown.innerHTML =\r\n \"\" +\r\n days +\r\n \"\" +\r\n hours +\r\n \"\" +\r\n minutes +\r\n \"\" +\r\n seconds +\r\n \"\";\r\n } else {\r\n this.countdown.innerHTML =\r\n \"00000000\";\r\n }\r\n }\r\n init() {\r\n if (this.date) {\r\n this.getCountdown();\r\n setInterval(() => {\r\n this.getCountdown();\r\n }, 1000);\r\n }\r\n //this.getCountdown();\r\n }\r\n\r\n initEvents() {}\r\n}\r\n","export default class ContactOverview {\r\n constructor(el) {\r\n this.el = el;\r\n this.form = null;\r\n this.validated = false;\r\n this.currentNavItem = null;\r\n this.currentSection = null;\r\n this.currentTab = \"\";\r\n this.init();\r\n this.initEvents();\r\n }\r\n\r\n init() {\r\n this.currentTab = \"email\";\r\n var sections = this.el.querySelectorAll(\".ui.tab.ui-tab-panel\");\r\n var navItems = this.el.querySelectorAll(\".c-anchor-nav__item\");\r\n sections.forEach((sec) => {\r\n if (sec.dataset.tab.includes(this.currentTab)) {\r\n sec.classList.add(\"active\");\r\n this.currentSection = sec;\r\n }\r\n });\r\n\r\n navItems.forEach((item) => {\r\n if (item.firstElementChild.dataset.tab.includes(this.currentTab)) {\r\n item.classList.add(\"active\");\r\n this.currentNavItem = item;\r\n }\r\n });\r\n }\r\n\r\n initEvents() {\r\n var navItems = this.el.querySelectorAll(\".c-anchor-nav__item\");\r\n navItems.forEach((item) => {\r\n item.removeEventListener(\"click\", (e) => this.showSection(item));\r\n item.addEventListener(\"click\", (e) => {\r\n e.preventDefault();\r\n this.showSection(item);\r\n });\r\n });\r\n }\r\n\r\n showSection(navItem) {\r\n this.currentTab = navItem.firstElementChild.dataset.tab;\r\n this.currentNavItem.classList.remove(\"active\");\r\n this.currentSection.classList.remove(\"active\");\r\n var sections = this.el.querySelectorAll(\".ui.tab.ui-tab-panel\");\r\n\r\n this.currentNavItem = navItem;\r\n this.currentNavItem.classList.add(\"active\");\r\n\r\n sections.forEach((sec) => {\r\n if (sec.dataset.tab.includes(this.currentTab)) {\r\n this.currentSection = sec;\r\n this.currentSection.classList.add(\"active\");\r\n }\r\n });\r\n }\r\n}\r\n","export default class FilterDropdown {\r\n constructor(el) {\r\n this.el = el;\r\n this.search = null;\r\n this.menu = null;\r\n this.values = [];\r\n this.selectedValue = null;\r\n this.init();\r\n this.initEvents();\r\n }\r\n\r\n init() {\r\n this.search = this.el.querySelector(\"input.search\");\r\n this.menu = this.el.querySelector(\".menu\");\r\n var items = this.menu.childNodes;\r\n items.forEach((item) => {\r\n this.values.push(item);\r\n });\r\n this.selectedValue = this.el.querySelector(\".selected\");\r\n }\r\n\r\n initEvents() {\r\n this.search.removeEventListener(\"input\", (e) =>\r\n this.changeDropdown(e.target)\r\n );\r\n this.search.addEventListener(\"input\", (e) => this.changeDropdown(e.target));\r\n this.search.addEventListener(\"click\", (e) => {\r\n e.preventDefault();\r\n this.toggleDropdown(e.target);\r\n });\r\n\r\n this.values.forEach((item) => {\r\n item.addEventListener(\"click\", (e) => {\r\n e.preventDefault();\r\n this.changeSelectedValue(e);\r\n });\r\n });\r\n\r\n document.addEventListener(\"click\", (e) => {\r\n var isClickInside = this.el\r\n .querySelector(\".menu\")\r\n .parentNode.contains(e.target);\r\n\r\n if (!isClickInside) {\r\n if (\r\n this.search.parentNode.classList.contains(\"visible\") &&\r\n this.search.parentNode.classList.contains(\"active\")\r\n ) {\r\n this.toggleDropdown(this.search);\r\n }\r\n }\r\n });\r\n }\r\n\r\n changeDropdown(search) {\r\n var error = this.menu.querySelector(\".message\");\r\n if (error != null) {\r\n this.menu.removeChild(error);\r\n }\r\n\r\n var counter = 0;\r\n this.values.forEach((item) => {\r\n item.classList.add(\"filtered\");\r\n if (item.textContent.toLowerCase().includes(search.value.toLowerCase())) {\r\n item.classList.toggle(\"filtered\");\r\n counter++;\r\n }\r\n });\r\n if (counter === 0) {\r\n var message = document.createElement(\"div\");\r\n message.classList.add(\"message\");\r\n message.textContent = \"No results found.\";\r\n this.menu.appendChild(message);\r\n }\r\n }\r\n\r\n toggleDropdown(e) {\r\n this.el.querySelector(\"div.search\").classList.toggle(\"visible\");\r\n this.el.querySelector(\"div.search\").classList.toggle(\"active\");\r\n this.el.querySelector(\".menu\").classList.toggle(\"hidden\");\r\n this.el.querySelector(\".menu\").classList.toggle(\"visible\");\r\n }\r\n\r\n changeSelectedValue(e) {\r\n e.target.classList.toggle(\"active\");\r\n e.target.classList.toggle(\"selected\");\r\n\r\n this.selectedValue.classList.toggle(\"active\");\r\n this.selectedValue.classList.toggle(\"selected\");\r\n this.selectedValue = e.target;\r\n this.search.placeholder = e.target.innerHTML;\r\n this.toggleDropdown(this.search);\r\n }\r\n}\r\n","import Swiper from \"swiper\";\r\n\r\n// =============================================================================\r\n// Definition\r\n// =============================================================================\r\nclass Gallery {\r\n\r\n\t// Constructor\r\n\t// -------------------------------------------------------------------------\r\n\tconstructor(el) {\r\n\t\tthis.el = el;\r\n\r\n this.init();\r\n this.initEvents();\r\n this.initFullscreen();\r\n this.initFullscreenEvents();\r\n\t}\r\n\r\n\t// Inits\r\n // -------------------------------------------------------------------------\r\n init() {\r\n this.leftButton = this.el.querySelector(\".swiper-button-prev\");\r\n this.rightButton = this.el.querySelector(\".swiper-button-next\");\r\n this.container = this.el.querySelector(\".swiper\");\r\n \r\n this.lightbox = this.el.querySelector(\".lightboxContainer\");\r\n this.imageContainer = this.el.querySelector(\".lb-container\");\r\n this.images = this.el.querySelectorAll(\".swiper-slide.scale-on-hover\");\r\n this.closeButton = this.el.querySelector(\".popupClosingIconContainer\");\r\n this.amountOfSlides = this.lightbox?.dataset?.slides;\r\n\r\n this.swiperCarousel = new Swiper(this.container, {\r\n spaceBetween: 12,\r\n slidesPerView: 1, \r\n breakpoints: {\r\n 640: {\r\n slidesPerView: 2 \r\n },\r\n 1080: {\r\n spaceBetween: 24,\r\n slidesPerView: 3 \r\n }\r\n } \r\n });\r\n\r\n this.handleButtonStates();\r\n\r\n this.swiperCarousel.on(\"slideChange\", () => {\r\n this.handleButtonStates()\r\n });\r\n }\r\n\r\n initEvents() {\r\n this.leftButton.addEventListener(\"click\", () => this.handleClickLeft());\r\n this.rightButton.addEventListener(\"click\", () => this.handleClickRight());\r\n this.images.forEach(image => {\r\n image.addEventListener(\"click\", () => {\r\n this.handleImageClicked(image, event)\r\n })\r\n });\r\n this.lightbox?.addEventListener(\"click\", (event) => {\r\n if(event.target.matches(\"img.popup-image\") \r\n || event.target.matches(\"div.swiper-button-prev\") \r\n || event.target.matches(\"div.swiper-button-next\")){\r\n event.stopPropagation();\r\n }\r\n else{\r\n this.closeLightbox();\r\n }\r\n })\r\n this.closeButton?.addEventListener(\"click\", () => this.closeLightbox()); \r\n }\r\n\r\n initFullscreen(){\r\n // --- Fullscreen version ---\r\n\r\n this.container_fullscreen = this.el.querySelector(\".swiper.fullscreen\");\r\n this.images_fullscreen = this.el.querySelectorAll(\".swiper-slide.fullscreen\");\r\n this.leftButton_fullscreen = this.el.querySelector(\".swiper-button-prev.fullscreen\");\r\n this.rightButton_fullscreen = this.el.querySelector(\".swiper-button-next.fullscreen\"); \r\n\r\n this.swiperCarousel_fullscreen = new Swiper(this.container_fullscreen, {\r\n spaceBetween: 12,\r\n slidesPerView: 1,\r\n });\r\n\r\n this.handleButtonStates(true);\r\n\r\n this.swiperCarousel_fullscreen.on(\"slideChange\", () => {\r\n this.handleButtonStates(true);\r\n });\r\n this.swiperCarousel_fullscreen.on('activeIndexChange', () => {\r\n if(this.lightbox.style.display != \"block\"){\r\n // set fullscreen swiper component to visible\r\n this.lightbox.style.display = \"block\";\r\n }\r\n });\r\n }\r\n\r\n initFullscreenEvents() {\r\n // --- Fullscreen version ---\r\n this.leftButton_fullscreen?.addEventListener(\"click\", () => this.handleClickLeft(true));\r\n this.rightButton_fullscreen?.addEventListener(\"click\", () => this.handleClickRight(true));\r\n }\r\n\r\n\t// Handlers\r\n // -------------------------------------------------------------------------\r\n handleClickLeft(isFullscreen = false) {\r\n if(isFullscreen){\r\n if (!this.leftButton_fullscreen.classList?.contains(\"swiper-button-disabled\")) {\r\n this.swiperCarousel_fullscreen.slidePrev(300); \r\n }\r\n }\r\n else{\r\n if (!this.leftButton.classList?.contains(\"swiper-button-disabled\")) {\r\n this.swiperCarousel.slidePrev(300); \r\n }\r\n }\r\n }\r\n\r\n handleClickRight(isFullscreen = false) {\r\n if(isFullscreen){\r\n if (!this.rightButton_fullscreen.classList?.contains(\"swiper-button-disabled\")) {\r\n this.swiperCarousel_fullscreen.slideNext(300); \r\n }\r\n }\r\n else{\r\n if (!this.rightButton.classList?.contains(\"swiper-button-disabled\")) {\r\n this.swiperCarousel.slideNext(300);\r\n }\r\n }\r\n }\r\n\r\n handleImageClicked(image, event) { \r\n const clickedItemIndex = Array.from(this.images).indexOf(image); \r\n this.swiperCarousel_fullscreen.slideTo(clickedItemIndex); \r\n this.lightbox.style.display = \"block\";\r\n this.swiperCarousel_fullscreen.update();\r\n }\r\n\r\n closeLightbox() {\r\n this.lightbox.style.display = \"none\";\r\n }\r\n\r\n handleButtonStates(isFullscreen = false) {\r\n this.handleBetween(isFullscreen);\r\n this.handleBeginning(isFullscreen);\r\n this.handleEnd(isFullscreen);\r\n }\r\n\r\n handleBeginning(isFullscreen) {\r\n if(isFullscreen && this.leftButton_fullscreen){ \r\n if (this.swiperCarousel_fullscreen.isBeginning || this.swiperCarousel_fullscreen.activeIndex === 0) { \r\n this.leftButton_fullscreen.classList?.add(\"swiper-button-disabled\");\r\n }\r\n }\r\n else{\r\n if (this.swiperCarousel.isBeginning) {\r\n this.leftButton.classList?.add(\"swiper-button-disabled\");\r\n }\r\n\r\n }\r\n }\r\n\r\n handleEnd(isFullscreen) { \r\n if(isFullscreen && this.rightButton_fullscreen){\r\n if (this.swiperCarousel_fullscreen.isEnd || this.swiperCarousel_fullscreen.activeIndex === this.amountOfSlides - 1) {\r\n this.rightButton_fullscreen.classList?.add(\"swiper-button-disabled\");\r\n }\r\n }\r\n else{\r\n if (this.swiperCarousel.isEnd) {\r\n this.rightButton.classList?.add(\"swiper-button-disabled\");\r\n }\r\n }\r\n }\r\n\r\n handleBetween(isFullscreen) {\r\n if(isFullscreen && this.leftButton_fullscreen && this.rightButton_fullscreen){\r\n if (!this.swiperCarousel_fullscreen.isBeginning) {\r\n if (this.leftButton_fullscreen.classList?.contains(\"swiper-button-disabled\")) {\r\n this.leftButton_fullscreen.classList?.remove(\"swiper-button-disabled\");\r\n }\r\n }\r\n \r\n if (!this.swiperCarousel_fullscreen.isEnd) { \r\n if (this.rightButton_fullscreen.classList?.contains(\"swiper-button-disabled\")) {\r\n this.rightButton_fullscreen.classList?.remove(\"swiper-button-disabled\");\r\n }\r\n }\r\n }\r\n else{\r\n if (!this.swiperCarousel.isBeginning) {\r\n if (this.leftButton.classList?.contains(\"swiper-button-disabled\")) {\r\n this.leftButton.classList?.remove(\"swiper-button-disabled\");\r\n }\r\n }\r\n \r\n if (!this.swiperCarousel.isEnd) { \r\n if (this.rightButton.classList?.contains(\"swiper-button-disabled\")) {\r\n this.rightButton.classList?.remove(\"swiper-button-disabled\");\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default Gallery;\r\n","// =============================================================================\r\n// Definition\r\n// =============================================================================\r\nclass CookieRow {\r\n\r\n\t// Constructor\r\n\t// -------------------------------------------------------------------------\r\n\tconstructor(el) {\r\n\t\tthis.el = el;\r\n\r\n this.init();\r\n this.initEvents();\r\n\t}\r\n\r\n\t// Inits\r\n // -------------------------------------------------------------------------\r\n init() {\r\n this.cookieRowConfirm = this.el.querySelector(\"#cookie-row-confirm\");\r\n this.cookieRowSuccess = this.el.querySelector(\"#cookie-row-succes\");\r\n this.analyticsCheckbox = this.el.querySelector(\"#sv-analytical-cookie-row\");\r\n this.trackingCheckbox = this.el.querySelector(\"#sv-tracking-cookie-row\");\r\n this.cookieConsentName = \"sv-cookie-consent\";\r\n\r\n var cookieValue = this.getCookie(this.cookieConsentName);\r\n\r\n if (cookieValue === \"sv-analytical-cookies\") {\r\n this.analyticsCheckbox.checked = true;\r\n }\r\n\r\n if (cookieValue === \"sv-tracking-cookies\") {\r\n this.analyticsCheckbox.checked = true;\r\n this.trackingCheckbox.checked = true;\r\n }\r\n }\r\n\r\n initEvents() {\r\n this.cookieRowConfirm.addEventListener(\"click\", () => this.handleCookieRowConfirmClick());\r\n this.analyticsCheckbox.addEventListener(\"change\", () => this.handleAnalyticsChange());\r\n this.trackingCheckbox.addEventListener(\"change\", () => this.handleTrackingChange());\r\n }\r\n\r\n getCookie(cname) {\r\n var name = cname + \"=\";\r\n var decodedCookie = decodeURIComponent(document.cookie);\r\n var ca = decodedCookie.split(';');\r\n for (var i = 0; i < ca.length; i++) {\r\n var c = ca[i];\r\n while (c.charAt(0) === ' ') {\r\n c = c.substring(1);\r\n }\r\n if (c.indexOf(name) === 0) {\r\n return c.substring(name.length, c.length);\r\n }\r\n }\r\n return \"\";\r\n }\r\n\r\n\t// Handlers\r\n // -------------------------------------------------------------------------\r\n handleCookieRowConfirmClick() {\r\n var cookie = \"sv-functional-cookies\";\r\n\r\n if (this.analyticsCheckbox.checked) {\r\n cookie = \"sv-analytical-cookies\";\r\n }\r\n\r\n if (this.trackingCheckbox.checked) {\r\n cookie = \"sv-tracking-cookies\";\r\n }\r\n\r\n document.cookie = this.cookieConsentName + '=' + cookie + '; expires=Thu, 18 Dec 2999 12:00:00 UTC; path=/';\r\n\r\n this.cookieRowSuccess.style.display = \"block\";\r\n }\r\n \r\n handleAnalyticsChange() {\r\n if (!this.analyticsCheckbox.checked) {\r\n this.trackingCheckbox.checked = false;\r\n }\r\n }\r\n\r\n handleTrackingChange() {\r\n if (this.trackingCheckbox.checked) {\r\n this.analyticsCheckbox.checked = true;\r\n }\r\n }\r\n}\r\n\r\nexport default CookieRow;\r\n","export default class HeaderMobile {\r\n constructor(el) {\r\n this.el = el;\r\n this.expandBtn = null;\r\n this.closeBtn = null;\r\n this.navOpen = false;\r\n this.subNavs = null;\r\n this.subOpen = false;\r\n this.navigationMobile = null;\r\n this.observer = null;\r\n this.init();\r\n this.initEvents();\r\n }\r\n\r\n init() {\r\n this.expandBtn = this.el.querySelector(\".expand\");\r\n this.closeBtn = this.el.querySelector(\".close\");\r\n this.subNavs = this.el.querySelectorAll(\".has--sub\");\r\n this.navigationMobile = document.querySelector(\".c-navigation--mobile\");\r\n let section;\r\n if (this.navigationMobile != null) {\r\n section = section = document.querySelector(\r\n \".c-navigation--mobile\"\r\n ).parentElement;\r\n\r\n this.observer = new IntersectionObserver(\r\n ([e]) => {\r\n let scrollheight = document.querySelector(\"html\").scrollTop;\r\n if (\r\n e.intersectionRatio === 1 &&\r\n !e.target.classList.contains(\"isSticky\")\r\n && scrollheight > 0\r\n ) {\r\n e.target.classList.toggle(\"isSticky\");\r\n }\r\n if (\r\n e.intersectionRatio < 1 &&\r\n e.target.classList.contains(\"isSticky\") &&\r\n e.intersectionRect.y < 100\r\n && scrollheight > 0\r\n ) {\r\n e.target.classList.toggle(\"isSticky\");\r\n }\r\n if (e.target.classList.contains(\"isSticky\")) {\r\n document.querySelector(\"html\").scrollTop = scrollheight;\r\n }\r\n },\r\n { threshold: [1], rootMargin: \"-1px 0px 0px 0px\", root: section }\r\n //rootmargin values checken\r\n );\r\n }\r\n }\r\n\r\n initEvents() {\r\n this.expandBtn.removeEventListener(\"click\", (e) => this.openNav(e));\r\n this.expandBtn.addEventListener(\"click\", (e) => this.openNav(e));\r\n\r\n this.closeBtn.removeEventListener(\"click\", (e) => this.openNav(e));\r\n this.closeBtn.addEventListener(\"click\", (e) => this.openNav(e));\r\n\r\n this.subNavs.forEach((sub) => {\r\n sub.removeEventListener(\"click\", (e) => this.openSub(e));\r\n sub.addEventListener(\"click\", (e) => this.openSub(e));\r\n });\r\n if (this.observer != null && this.navigationMobile != null) {\r\n this.observer.observe(this.navigationMobile);\r\n }\r\n }\r\n\r\n openNav(e) {\r\n this.navOpen = !this.navOpen;\r\n e.preventDefault();\r\n\r\n let nav = this.el.querySelector(\".c-mobile-navigation\");\r\n if (this.navOpen) {\r\n nav.style.display = \"flex\";\r\n this.getSiblings(this.el.parentNode).forEach((sibling) => {\r\n sibling.style.display = \"none\";\r\n });\r\n } else {\r\n nav.style.display = \"none\";\r\n this.getSiblings(this.el.parentNode).forEach((sibling) => {\r\n sibling.style.removeProperty(\"display\");\r\n });\r\n }\r\n }\r\n\r\n openSub(e) {\r\n e.preventDefault();\r\n\r\n /**\r\n * open sub navs\r\n */\r\n let subnav = null;\r\n if (e.target.localName == \"a\") {\r\n subnav = e.target.parentNode.querySelector(\r\n \".c-mobile-navigation--sub-nav\"\r\n );\r\n } else {\r\n subnav = e.target.querySelector(\".c-mobile-navigation--sub-nav\");\r\n }\r\n\r\n /**\r\n * close sub navs\r\n */\r\n \r\n if (e.target.localName == \"a\") {\r\n if (e.target.classList.contains(\"close-btn\")) {\r\n subnav = e.target.parentNode;\r\n this.openNav(e);\r\n }\r\n if (e.target.classList.contains(\"back-btn\")) {\r\n subnav = e.target.parentNode;\r\n }\r\n }\r\n if (e.target.localName == \"i\") {\r\n if (e.target.classList.contains(\"fa-xmark\")) {\r\n subnav = e.target.parentNode.parentNode;\r\n this.openNav(e);\r\n }\r\n if (e.target.classList.contains(\"fa-arrow-left\")) {\r\n subnav = e.target.parentNode.parentNode;\r\n }\r\n }\r\n if (subnav != null) {\r\n if (!this.subOpen) {\r\n subnav.style.display = \"block\";\r\n this.subOpen = true;\r\n this.el.querySelector(\".c-mobile-navigation\").lastElementChild.style.zIndex =\r\n \"-1\";\r\n } else {\r\n subnav.style.display = \"none\";\r\n this.subOpen = false;\r\n this.el.querySelector(\".c-mobile-navigation\").lastElementChild.style.zIndex =\r\n \"0\";\r\n }\r\n }\r\n\r\n /**\r\n * follow link\r\n */\r\n if (\r\n e.target.classList.contains(\"nav-item\") ||\r\n e.target.classList.contains(\"nav-item--focus\")\r\n ) {\r\n window.location = e.target.firstChild.getAttribute(\"href\");\r\n }\r\n if (\r\n e.target.parentNode.classList.contains(\"nav-item\") ||\r\n e.target.parentNode.classList.contains(\"nav-item--focus\")\r\n ) {\r\n window.location = e.target.getAttribute(\"href\");\r\n }\r\n }\r\n\r\n getSiblings(elem) {\r\n return Array.from(elem.parentNode.children).filter(function (sibling) {\r\n return sibling !== elem;\r\n });\r\n }\r\n}\r\n","export default class CampaignOverview {\r\n constructor(el) {\r\n this.el = el;\r\n this.loadBtn = document.querySelector(\".c-button--secondary\");\r\n this.visibleCards = null;\r\n this.cardsSmall = null;\r\n this.cardsStanding = null;\r\n this.searchInput = \"\";\r\n this.clearIcon = null;\r\n this.init();\r\n this.initEvents();\r\n }\r\n\r\n init() {\r\n this.cardsSmall = Array.from(document.querySelectorAll(\".c-card--small\"));\r\n this.cardsStanding = Array.from(\r\n document.querySelectorAll(\".c-card--standing\")\r\n );\r\n if (this.cardsSmall.length > 6) {\r\n this.loadBtn.style.display = \"block\";\r\n this.visibleCards = this.cardsSmall.slice(0, 6);\r\n } else {\r\n this.visibleCards = this.cardsSmall;\r\n }\r\n let contentMobile = document.querySelector(\r\n \".c-campaign-overview__content-mobile\"\r\n );\r\n\r\n if (contentMobile) {\r\n contentMobile.innerHTML = \"\";\r\n this.visibleCards.forEach((card) => {\r\n contentMobile.appendChild(card);\r\n });\r\n contentMobile.appendChild(this.loadBtn);\r\n }\r\n\r\n this.searchInput = document.querySelector(\r\n \".c-campaign-overview__search input\"\r\n );\r\n this.clearIcon = document.querySelector(\".c-input__right\");\r\n }\r\n\r\n initEvents() {\r\n this.loadBtn?.addEventListener(\"click\", (e) => {\r\n e.preventDefault();\r\n this.loadMore();\r\n });\r\n\r\n this.searchInput?.addEventListener(\"input\", (e) => {\r\n e.preventDefault();\r\n this.search(e.target.value);\r\n });\r\n\r\n this.clearIcon?.addEventListener(\"click\", (e) => {\r\n e.preventDefault();\r\n this.search(\"\");\r\n });\r\n }\r\n\r\n loadMore() {\r\n this.visibleCards = this.cardsSmall.slice(0, this.visibleCards.length + 6);\r\n let contentMobile = document.querySelector(\r\n \".c-campaign-overview__content-mobile\"\r\n );\r\n contentMobile.innerHTML = \"\";\r\n this.visibleCards.forEach((card) => {\r\n contentMobile.appendChild(card);\r\n });\r\n if (this.visibleCards.length >= this.cardsSmall.length) {\r\n this.loadBtn.style.display = \"none\";\r\n }\r\n }\r\n\r\n search(input) {\r\n let contentMobile = document.querySelector(\r\n \".c-campaign-overview__content-mobile\"\r\n );\r\n let contentDesktop = document.querySelector(\r\n \".c-campaign-overview__content-desktop\"\r\n );\r\n contentMobile.innerHTML = \"\";\r\n contentDesktop.innerHTML = \"\";\r\n this.cardsSmall.forEach((card) => {\r\n if (\r\n card.querySelector(\".c-card__content__title\").innerText.includes(input)\r\n ) {\r\n contentMobile.appendChild(card);\r\n }\r\n });\r\n this.cardsStanding.forEach((card) => {\r\n if (\r\n card.querySelector(\".c-card__content__title\").innerText.includes(input)\r\n ) {\r\n contentDesktop.appendChild(card);\r\n }\r\n });\r\n if (this.visibleCards.length >= this.cardsSmall.length) {\r\n this.loadBtn.style.display = \"none\";\r\n }\r\n }\r\n}\r\n","export default class NewsOverview {\r\n constructor(el) {\r\n this.el = el;\r\n this.searchBtn = null;\r\n this.searchContent = null;\r\n this.searchForm = null;\r\n this.init();\r\n this.initEvents();\r\n }\r\n\r\n init() {\r\n this.searchBtn = this.el.querySelector(\".refine-search__toggle\");\r\n this.searchContent = this.el.querySelector(\".refine-search__content\");\r\n this.searchForm = this.el.querySelector(\".refine-search__filters\");\r\n }\r\n\r\n initEvents() {\r\n this.searchBtn.addEventListener(\"click\", (e) => {\r\n e.preventDefault();\r\n this.toggleSearch();\r\n });\r\n }\r\n\r\n toggleSearch() {\r\n this.searchBtn.classList.toggle(\"active\");\r\n this.searchContent.classList.toggle(\"active\");\r\n this.searchForm.classList.toggle(\"hidden\");\r\n this.searchForm.classList.toggle(\"visible\");\r\n }\r\n}\r\n","export default class NewsDetail {\r\n constructor(el) {\r\n this.el = el;\r\n this.copyUrlBtn = null;\r\n this.init();\r\n this.initEvents();\r\n }\r\n init() {\r\n this.copyUrlBtn = this.el.querySelector(\".share-copyUrl\");\r\n }\r\n initEvents() {\r\n this.copyUrlBtn.addEventListener(\"click\", (e) => {\r\n e.preventDefault();\r\n this.showPopup();\r\n });\r\n }\r\n showPopup() {\r\n const popup = document.querySelector(\".share-copyUrl-popup\");\r\n popup.style.display = \"inline-block\";\r\n setTimeout(() => {\r\n popup.style.display = \"none\";\r\n }, 4000);\r\n navigator.clipboard.writeText(window.location.href);\r\n }\r\n}\r\n","export default class SearchSportsCamps {\r\n\tconstructor(el) {\r\n\t\tthis.el = el;\r\n\t\tthis.triggerMobileFilter = null;\r\n\t\tthis.init();\r\n\t\tthis.initEvents();\r\n\t}\r\n\r\n\tinit() {\r\n\t\tthis.triggerMobileFilter = document.querySelector(\r\n\t\t\t\".c-sidebar-nav-mobile-title\"\r\n\t\t);\r\n\t}\r\n\r\n\tinitEvents() {\r\n\t\tthis.triggerMobileFilter.addEventListener(\"click\", (e) => {\r\n\t\t\te.preventDefault();\r\n\t\t\tthis.toggleFilter(e);\r\n\t\t});\r\n\t}\r\n\r\n\ttoggleFilter(e) {\r\n\t\tthis.triggerMobileFilter.classList.toggle(\"open\");\r\n\t\tthis.triggerMobileFilter\r\n\t\t\t.querySelector(\".fa-angle-down\")\r\n\t\t\t.classList.toggle(\"rotate\");\r\n\t}\r\n}\r\n","export default class CookieBanner {\r\n constructor(el) {\r\n this.el = el;\r\n\r\n this.openButton = null;\r\n this.cookiePopup = null;\r\n this.closeButton = null;\r\n this.init();\r\n this.initEvents();\r\n }\r\n\r\n init() {\r\n this.openButton = this.el.querySelector(\"#set-cookies\");\r\n this.cookiePopup = this.el.querySelector(\".cookie-consent-popup-backdrop\");\r\n this.closeButton = this.el.querySelector(\".cookie-consent-popup__close\");\r\n\r\n this.checkAllButton = this.el.querySelector(\".cookie-consent-popup__link--check\");\r\n this.uncheckAllButton = this.el.querySelector(\".cookie-consent-popup__link--uncheck\");\r\n\r\n this.cookieRowConfirm = this.el.querySelector(\"#cookies-confirm\");\r\n this.analyticsCheckbox = this.el.querySelector(\"#sv-analytical-cookies\");\r\n this.trackingCheckbox = this.el.querySelector(\"#sv-tracking-cookies\");\r\n this.functionalBtn = this.el.querySelector(\"#sv-banner-functional-cookies\");\r\n this.analyticsBtn = this.el.querySelector(\"#sv-banner-analytical-cookies\");\r\n this.cookieConsentName = \"sv-cookie-consent\";\r\n\r\n var cookieValue = this.getCookie(this.cookieConsentName);\r\n\r\n this.showBanner(cookieValue);\r\n if (cookieValue === \"sv-analytical-cookies\") {\r\n this.analyticsCheckbox.checked = true;\r\n }\r\n\r\n if (cookieValue === \"sv-tracking-cookies\") {\r\n this.analyticsCheckbox.checked = true;\r\n this.trackingCheckbox.checked = true;\r\n }\r\n }\r\n\r\n initEvents() {\r\n this.openButton.addEventListener(\"click\", (e) => {\r\n e.preventDefault();\r\n this.showPopup();\r\n });\r\n this.closeButton.addEventListener(\"click\", (e) => {\r\n e.preventDefault();\r\n this.showPopup();\r\n });\r\n\r\n this.cookieRowConfirm.addEventListener(\"click\", () =>\r\n this.handleCookieRowConfirmClick()\r\n );\r\n this.analyticsCheckbox.addEventListener(\"change\", () =>\r\n this.handleAnalyticsChange()\r\n );\r\n this.trackingCheckbox.addEventListener(\"change\", () =>\r\n this.handleTrackingChange()\r\n );\r\n\r\n this.functionalBtn.addEventListener(\"click\", (e) => {\r\n e.preventDefault();\r\n this.handleFunctionalBtn();\r\n });\r\n\r\n this.analyticsBtn.addEventListener(\"click\", (e) => {\r\n e.preventDefault();\r\n this.handleAnalyticsBtn();\r\n });\r\n\r\n this.checkAllButton.addEventListener(\"click\", (e) => {\r\n this.analyticsCheckbox.checked = true;\r\n this.trackingCheckbox.checked = true;\r\n });\r\n\r\n this.uncheckAllButton.addEventListener(\"click\", (e) => {\r\n this.analyticsCheckbox.checked = false;\r\n this.trackingCheckbox.checked = false;\r\n });\r\n }\r\n\r\n showPopup() {\r\n this.cookiePopup.classList.toggle(\"is-visible\");\r\n }\r\n\r\n showBanner(cookies) {\r\n if(this.el){\r\n if (cookies === \"\") {\r\n this.el.querySelector(\".cookie-consent-banner\").style.display = \"flex\";\r\n } else {\r\n this.el.querySelector(\".cookie-consent-banner\").style.display = \"none\";\r\n }\r\n } \r\n }\r\n getCookie(cname) {\r\n var name = cname + \"=\";\r\n var decodedCookie = decodeURIComponent(document.cookie);\r\n var ca = decodedCookie.split(\";\");\r\n for (var i = 0; i < ca.length; i++) {\r\n var c = ca[i];\r\n while (c.charAt(0) === \" \") {\r\n c = c.substring(1);\r\n }\r\n if (c.indexOf(name) === 0) {\r\n return c.substring(name.length, c.length);\r\n }\r\n }\r\n return \"\";\r\n }\r\n handleCookieRowConfirmClick() {\r\n var cookie = \"sv-functional-cookies\";\r\n\r\n if (this.analyticsCheckbox.checked) {\r\n cookie = \"sv-analytical-cookies\";\r\n }\r\n\r\n if (this.trackingCheckbox.checked) {\r\n cookie = \"sv-tracking-cookies\";\r\n }\r\n\r\n document.cookie =\r\n this.cookieConsentName +\r\n \"=\" +\r\n cookie +\r\n \"; expires=Thu, 18 Dec 2999 12:00:00 UTC; path=/\";\r\n\r\n this.showPopup();\r\n this.showBanner(this.getCookie(this.cookieConsentName));\r\n }\r\n\r\n handleAnalyticsChange() {\r\n if (!this.analyticsCheckbox.checked) {\r\n this.trackingCheckbox.checked = false;\r\n }\r\n }\r\n\r\n handleTrackingChange() {\r\n if (this.trackingCheckbox.checked) {\r\n this.analyticsCheckbox.checked = true;\r\n }\r\n }\r\n\r\n handleFunctionalBtn() {\r\n var cookie = \"sv-functional-cookies\";\r\n\r\n document.cookie =\r\n this.cookieConsentName +\r\n \"=\" +\r\n cookie +\r\n \"; expires=Thu, 18 Dec 2999 12:00:00 UTC; path=/\";\r\n this.showBanner(this.getCookie(this.cookieConsentName));\r\n _mtm.push({\"event\": \"cookiebanner_update\"});\r\n }\r\n\r\n handleAnalyticsBtn() {\r\n var cookie = \"sv-analytical-cookies\";\r\n\r\n document.cookie =\r\n this.cookieConsentName +\r\n \"=\" +\r\n cookie +\r\n \"; expires=Thu, 18 Dec 2999 12:00:00 UTC; path=/\";\r\n this.showBanner(this.getCookie(this.cookieConsentName));\r\n _mtm.push({\"event\": \"cookiebanner_update\"});\r\n }\r\n}\r\n","export default class Search {\r\n constructor(el) {\r\n this.el = el;\r\n this.searchBtn = null;\r\n this.searchContent = null;\r\n this.searchForm = null;\r\n this.init();\r\n this.initEvents();\r\n }\r\n\r\n init() {\r\n this.searchBtn = this.el.querySelector(\".refine-search__toggle\");\r\n this.searchContent = this.el.querySelector(\".refine-search__content\");\r\n this.searchForm = this.el.querySelector(\".refine-search__filters\");\r\n }\r\n\r\n initEvents() {\r\n this.searchBtn.addEventListener(\"click\", (e) => {\r\n e.preventDefault();\r\n this.toggleSearch();\r\n });\r\n }\r\n\r\n toggleSearch() {\r\n this.searchBtn.classList.toggle(\"active\");\r\n this.searchContent.classList.toggle(\"active\");\r\n this.searchForm.classList.toggle(\"hidden\");\r\n this.searchForm.classList.toggle(\"visible\");\r\n }\r\n}\r\n","export default class Floorplan {\r\n constructor() {\r\n this.init();\r\n }\r\n\r\n init() {\r\n //Get all pins\r\n var pins = document.querySelectorAll('.map .pin');\r\n //add click event to pins onClick\r\n pins.forEach(pin => {\r\n pin.addEventListener('click', (e) => {\r\n var id = e.target.id;\r\n if(!e.target.classList.contains('pin')){\r\n id = e.target.parentElement.id;\r\n }\r\n\r\n this.onPinClick(id, pin);\r\n });\r\n });\r\n\r\n //Get all accordions\r\n var accordions = document.querySelectorAll('.accordion-list .ui-accordion');\r\n //add click event to accordions onClick\r\n accordions.forEach(accordion => {\r\n accordion.addEventListener('click', (e) => {\r\n this.onAccordionClick(e);\r\n });\r\n });\r\n\r\n // Init Draggable JQuery Widget\r\n $(\".draggable\").draggable({\r\n drag: function(evt, ui) {\r\n if (ui.position.top >= 0) {\r\n ui.position.top = 0;\r\n }\r\n \r\n if (ui.position.left >= 0) {\r\n ui.position.left = 0;\r\n }\r\n \r\n if (ui.position.left + evt.target.clientWidth <= evt.target.closest(\"div.map\").clientWidth) {\r\n ui.position.left = \"\";\r\n ui.position.right = 0;\r\n }\r\n \r\n if (ui.position.top + evt.target.clientHeight <= evt.target.closest(\"div.map\").clientHeight) {\r\n ui.position.top = \"\";\r\n ui.position.bottom = 0;\r\n }\r\n }\r\n });\r\n\r\n // Init Zoom\r\n var zoomPlusButton = document.querySelector(\".zoom-map-plus\");\r\n var zoomMinusButton = document.querySelector(\".zoom-map-minus\");\r\n var draggableElement = document.querySelector(\".draggable\");\r\n \r\n zoomPlusButton.addEventListener(\"click\", () => {\r\n this.resize(1, draggableElement);\r\n });\r\n \r\n zoomMinusButton.addEventListener(\"click\", () => {\r\n if (\r\n draggableElement.clientHeight >\r\n draggableElement.closest(\".map\").clientHeight &&\r\n draggableElement.clientWidth >\r\n draggableElement.closest(\".map\").clientWidth\r\n ) {\r\n draggableElement.style.top = \"0\";\r\n draggableElement.style.left = \"0\";\r\n this.resize(-1, draggableElement);\r\n }\r\n });\r\n }\r\n\r\n // map pins\r\n onPinClick(id, pin) {\r\n //Get all pins and set them to inactive\r\n var panels = document.querySelectorAll('.floorplan .panel'); \r\n\r\n //Activate the panel that matches the pin\r\n var panelToToggle = document.querySelector('.floorplan #panel-' + id);\r\n var defaultPanel = document.querySelector('.floorplan #panel-0');\r\n if(panelToToggle.classList.contains('active')){\r\n panelToToggle.classList.remove('active');\r\n defaultPanel.classList.add('active');\r\n }\r\n else{\r\n //Set all panels to inactive\r\n panels.forEach(panel => {\r\n panel.classList.remove('active');\r\n });\r\n panelToToggle.classList.add('active');\r\n }\r\n\r\n //remove active pin\r\n this.toggleActivePin(pin); \r\n }\r\n\r\n //accordion\r\n onAccordionClick(e) {\r\n //Get all accordion items \r\n var accordionItems = document.querySelectorAll('.accordion-list .ui-accordion');\r\n //Set all accordion items to inactive\r\n accordionItems.forEach(aI => {\r\n if(aI.classList.contains('active') && !(e.currentTarget.classList.contains('active'))){\r\n aI.classList.remove('active');\r\n }\r\n });\r\n\r\n // keep links clickable through the accordion\r\n let links = e.currentTarget.querySelectorAll('.link-block');\r\n links.forEach(link => {\r\n link.addEventListener(\"click\", (e) => {\r\n e.stopPropagation();\r\n });\r\n })\r\n\r\n //Activate the accordion\r\n let accordiontoActivate = e.currentTarget;\r\n if(!(accordiontoActivate.classList.contains('active')))\r\n {\r\n accordiontoActivate.classList.add('active');\r\n \r\n let scrollableParentElement = document.querySelector(\".panel.active\"); \r\n // scroll when css transform is finished\r\n setTimeout(() => {\r\n scrollableParentElement.scrollTo({\r\n top: accordiontoActivate.offsetTop - 30,\r\n behavior: 'smooth'\r\n }) \r\n }, 250);\r\n }\r\n else{\r\n accordiontoActivate.classList.remove('active');\r\n }\r\n }\r\n\r\n\r\n toggleActivePin(pin){\r\n if(pin.classList.contains('pin-selected')){\r\n pin.classList.remove('pin-selected');\r\n }\r\n else{\r\n var activePin = document.querySelector('.pin-selected');\r\n activePin?.classList.remove('pin-selected');\r\n\r\n pin.classList.add('pin-selected');\r\n } \r\n }\r\n\r\n resize(direction, element) {\r\n var ratio = element.clientWidth / element.clientHeight;\r\n var delta = 100 * direction;\r\n \r\n var positionInfo = element.getBoundingClientRect();\r\n \r\n element.style.width = positionInfo.width + delta * ratio + \"px\";\r\n element.style.height = positionInfo.height + delta + \"px\";\r\n };\r\n}","export default class RoutePlanner {\r\n nIntervId;\r\n sliderDropdownState;\r\n sliderParent;\r\n counter;\r\n\r\n constructor(el, nIntervId, sliderDropdownState, sliderParent, slider, counter) {\r\n this.el = el;\r\n this.nIntervId = nIntervId;\r\n this.sliderDropdownState = sliderDropdownState;\r\n this.sliderParent = sliderParent;\r\n this.counter = counter;\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.getHtmlElements();\r\n }\r\n\r\n addHtmltoInputParent(parentDiv){ \r\n for (let i = 0; i < parentDiv.length; i++) {\r\n var parser = new DOMParser();\r\n \r\n var htmlstring2 = '
'\r\n var doc2 = parser.parseFromString(htmlstring2, \"text/html\");\r\n var element2 = doc2.body.firstChild;\r\n parentDiv[i].appendChild(element2);\r\n };\r\n }\r\n \r\n \r\n addHtmlToSliderParent(parentDiv) {\r\n var slider = parentDiv.querySelector(\"#routeYouRouteViewerTabPane > div:nth-child(2) > div > div.routeYou_basicParameters > div.routeYou_inputBlock.routeYou_routeLengthSlider > div\");\r\n this.counter = document.querySelector(\"#routeYouRouteViewerTabPane > div:nth-child(2) > div > div.routeYou_basicParameters > div.routeYou_inputBlock.routeYou_routeLengthSlider > p > span\");\r\n \r\n parentDiv.classList.add(\"c-slider__parent\");\r\n parentDiv.innerHTML = `\r\n
\r\n \r\n
\r\n
\r\n
`;\r\n\r\n var labelDiv = document.querySelector(\"#routeYouRouteViewerTabPane > div:nth-child(2) > div > div.routeYou_basicParameters > div.routeYou_inputBlock.routeYou_routeLengthSlider.c-slider__parent > div > div\");\r\n labelDiv.append(this.counter);\r\n\r\n var c_input_field = document.querySelector(\"#routeYouRouteViewerTabPane > div:nth-child(2) > div > div.routeYou_basicParameters > div.routeYou_inputBlock.routeYou_routeLengthSlider.c-slider__parent > div\");\r\n c_input_field.addEventListener(\"click\", () => this.handleSliderDropdownClick(slider))\r\n }\r\n \r\n handleSliderDropdownClick(slider) {\r\n this.sliderDropdownState = !this.sliderDropdownState;\r\n var test = document.createElement(\"div\");\r\n test.classList.add(\"c-slider__container\");\r\n test.appendChild(slider);\r\n\r\n if (this.sliderDropdownState) {\r\n this.sliderParent.appendChild(test);\r\n } else {\r\n this.closeSlider();\r\n }\r\n }\r\n\r\n handleLocationClick(e){\r\n document.querySelector(\".routeYou_detectPosition>a\").click();\r\n }\r\n\r\n closeSlider() {\r\n var toDelete = document.querySelector('#routeYouRouteViewerTabPane > div:nth-child(2) > div > div.routeYou_basicParameters > div.routeYou_inputBlock.routeYou_routeLengthSlider.c-slider__parent > div.c-slider__container');\r\n if (toDelete)\r\n toDelete.remove();\r\n }\r\n\r\n deleteElements(elements) {\r\n for (let i = 0; i < elements.length; i++) {\r\n elements[i].remove();\r\n }\r\n }\r\n\r\n handleClickAToB(btn) {\r\n var parent = btn.parentNode;\r\n var parent2 = parent.parentNode;\r\n var head = parent2.parentNode\r\n if(head.classList.contains(\"loop\")){\r\n head.classList.remove(\"loop\")\r\n }\r\n head.classList.add(\"AToB\")\r\n }\r\n\r\n handleClickLoop(btn) {\r\n var parent = btn.parentNode;\r\n var parent2 = parent.parentNode;\r\n var head = parent2.parentNode;\r\n if(head.classList.contains(\"AToB\")){\r\n head.classList.remove(\"AToB\")\r\n }\r\n head.classList.add(\"loop\")\r\n }\r\n\r\n handleClickDownloadTab(e){\r\n\r\n var dropDownParent = document.querySelector(\"#routeYouRouteViewerTabPane > div:nth-child(2) > div\");\r\n\r\n var printDropdown = document.querySelector(\"#routeYouRouteViewerTabPane > div:nth-child(2) > div > h3:nth-child(6)\");\r\n var printDropdownContent = document.querySelector(\"#routeYouRouteViewerTabPane > div:nth-child(2) > div > div:nth-child(7)\");\r\n\r\n var downloadDropdown = document.querySelector(\"#routeYouRouteViewerTabPane > div:nth-child(2) > div > h3:nth-child(8)\");\r\n var downloadDropdownContent =document.querySelector(\"#routeYouRouteViewerTabPane > div:nth-child(2) > div > div:nth-child(9)\");\r\n\r\n if(printDropdown && printDropdownContent && downloadDropdown && downloadDropdownContent){\r\n\r\n printDropdown.addEventListener(\"click\", () => {\r\n var downloadDropdown = document.querySelector(\"#routeYouRouteViewerTabPane > div:nth-child(2) > div > h3:nth-child(6)\")\r\n if(downloadDropdown.classList.contains(\"routeYou_downloadSectionActive\")){\r\n downloadDropdown.classList.remove(\"routeYou_downloadSectionActive\");\r\n document.querySelector(\"#routeYouRouteViewerTabPane > div:nth-child(2) > div > div:nth-child(7)\").style.height = \"0px\";\r\n }\r\n });\r\n downloadDropdown.addEventListener(\"click\", () => {\r\n var printDropdown = document.querySelector(\"#routeYouRouteViewerTabPane > div:nth-child(2) > div > h3:nth-child(8)\");\r\n if(printDropdown.classList.contains(\"routeYou_downloadSectionActive\")){\r\n printDropdown.classList.remove(\"routeYou_downloadSectionActive\");\r\n document.querySelector(\"#routeYouRouteViewerTabPane > div:nth-child(2) > div > div:nth-child(9)\").style.height = \"0px\";\r\n }\r\n });\r\n\r\n dropDownParent.removeChild(downloadDropdown);\r\n dropDownParent.removeChild(downloadDropdownContent);\r\n \r\n dropDownParent.insertBefore(downloadDropdown, printDropdown);\r\n dropDownParent.insertBefore(downloadDropdownContent, printDropdown);\r\n }\r\n }\r\n\r\n\r\n \r\n getHtmlElements() {\r\n \r\n var parentDiv = document.getElementsByClassName(\"routeYou_item\");\r\n var inputs = document.getElementsByTagName('input');\r\n this.sliderParent = document.querySelector('#routeYouRouteViewerTabPane > div:nth-child(2) > div > div.routeYou_basicParameters > div.routeYou_inputBlock.routeYou_routeLengthSlider');\r\n\r\n if (parentDiv.length > 0) {\r\n this.addHtmltoInputParent(parentDiv);\r\n }\r\n\r\n if (this.sliderParent) {\r\n this.addHtmlToSliderParent(this.sliderParent);\r\n }\r\n\r\n var fromLabel = document.querySelector(\"#routeYouRouteViewerTabPane > div:nth-child(2) > div > div.routeYou_basicParameters > div.routeYou_inputBlock.routeYou_routeBeginAddressSearch > p\");\r\n if (fromLabel) {\r\n fromLabel.innerHTML = `Geef een startpunt in (of duid aan op de kaart)`\r\n }\r\n var toLabel = document.querySelector(\"#routeYouRouteViewerTabPane > div:nth-child(2) > div > div.routeYou_basicParameters > div.routeYou_inputBlock.routeYou_routeEndAddressSearch > p\");\r\n if (toLabel) {\r\n toLabel.innerHTML = `Geef een eindpunt in (of duid aan op de kaart)`\r\n }\r\n var startIcon = document.querySelector(\".routeYou_beginIcon\")\r\n if (startIcon) {\r\n startIcon.remove();\r\n }\r\n var endIcon = document.querySelector(\".routeYou_endIcon\")\r\n if (endIcon) {\r\n endIcon.remove();\r\n }\r\n var myLocationButtons = document.querySelectorAll(\".c-input__right\")\r\n if(myLocationButtons.length === 2){ \r\n myLocationButtons.forEach(element => {\r\n element.addEventListener(\"click\", this.handleLocationClick)\r\n });\r\n }\r\n var AToB = document.querySelector(\"#routeYou_toggleRouteFromTo\")\r\n if(AToB){\r\n AToB.addEventListener(\"click\", () => this.handleClickAToB(AToB))\r\n }\r\n var loop = document.querySelector(\"#routeYou_toggleRouteRoundTrip\")\r\n if(loop){\r\n loop.addEventListener(\"click\", () => this.handleClickLoop(loop))\r\n }\r\n var headerText = document.querySelector(\".c-header__text\");\r\n headerText.addEventListener(\"click\", this.handleHeaderClick);\r\n\r\n var downloadTab = document.querySelector(\"#routeYouRouteViewerTabPane > div:nth-child(1) > div > div > span:nth-child(2)\");\r\n if(downloadTab){\r\n downloadTab.addEventListener(\"click\", this.handleClickDownloadTab);\r\n }\r\n }\r\n\r\n}\r\n","export default class RouteDetail {\r\n\r\n constructor(el){\r\n this.el = el;\r\n this.dropDownParent = document.querySelector(\"#routeYouRouteViewerTabPane > div:nth-child(2) > div\");\r\n\r\n this.printDropdown = document.querySelector(\"#routeYouRouteViewerTabPane > div:nth-child(2) > div > h3:nth-child(6)\");\r\n this.printDropdownContent = document.querySelector(\"#routeYouRouteViewerTabPane > div:nth-child(2) > div > div:nth-child(7)\");\r\n\r\n this.downloadDropdown = document.querySelector(\"#routeYouRouteViewerTabPane > div:nth-child(2) > div > h3:nth-child(8)\");\r\n this.downloadDropdownContent = document.querySelector(\"#routeYouRouteViewerTabPane > div:nth-child(2) > div > div:nth-child(9)\");\r\n\r\n this.dropDownParent.removeChild(this.downloadDropdown);\r\n this.dropDownParent.removeChild(this.downloadDropdownContent);\r\n\r\n this.dropDownParent.insertBefore(this.downloadDropdown, this.printDropdown);\r\n this.dropDownParent.insertBefore(this.downloadDropdownContent, this.printDropdown);\r\n this.init();\r\n }\r\n\r\n init(){\r\n this.printDropdown.addEventListener(\"click\", this.handlePrintClick);\r\n this.downloadDropdown.addEventListener(\"click\", this.handleDownloadClick);\r\n }\r\n\r\n handlePrintClick(e){\r\n var downloadDropdown = document.querySelector(\"#routeYouRouteViewerTabPane > div:nth-child(2) > div > h3:nth-child(6)\")\r\n if(downloadDropdown.classList.contains(\"routeYou_downloadSectionActive\")){\r\n downloadDropdown.classList.remove(\"routeYou_downloadSectionActive\");\r\n document.querySelector(\"#routeYouRouteViewerTabPane > div:nth-child(2) > div > div:nth-child(7)\").style.height = \"0px\";\r\n }\r\n \r\n }\r\n\r\n handleDownloadClick(e){\r\n var printDropdown = document.querySelector(\"#routeYouRouteViewerTabPane > div:nth-child(2) > div > h3:nth-child(8)\");\r\n if(printDropdown.classList.contains(\"routeYou_downloadSectionActive\")){\r\n printDropdown.classList.remove(\"routeYou_downloadSectionActive\");\r\n document.querySelector(\"#routeYouRouteViewerTabPane > div:nth-child(2) > div > div:nth-child(9)\").style.height = \"0px\";\r\n }\r\n }\r\n\r\n \r\n}","export default class ContactBlock {\r\n constructor(el) {\r\n this.el = el;\r\n this.form = null;\r\n this.openId = null;\r\n this.init();\r\n this.initEvents();\r\n }\r\n\r\n init() {}\r\n\r\n initEvents() { \r\n var contactTiles = this.el.querySelectorAll(\".contact-block-tile\");\r\n contactTiles.forEach((contactTile) => {\r\n var link = contactTile.querySelector(\".contact-block-index-link\");\r\n\r\n if(link){ \r\n link.removeEventListener(\"click\", (e) => this.handleOpen(e));\r\n link.addEventListener(\"click\", (e) => this.handleOpen(e));\r\n } \r\n });\r\n\r\n var btnsClose = this.el.querySelectorAll(\".btn-close\");\r\n btnsClose.forEach((btnClose) => {\r\n if(btnClose){\r\n btnClose.removeEventListener(\"click\", (e) => this.handleClose(e));\r\n btnClose.addEventListener(\"click\", (e) => this.handleClose(e));\r\n }\r\n });\r\n }\r\n\r\n handleOpen(e) {\r\n e.preventDefault();\r\n var contactform = this.el.querySelector(\"#contactblockform_\" + this.openId);\r\n var contactformContainer = this.el.querySelector(\"#contactblockform__container_\" + this.openId);\r\n if (this.openId && contactform && contactformContainer) {\r\n contactform.style.display = \"none\";\r\n contactformContainer.style.display = \"none\";\r\n }\r\n\r\n this.openId = e.target.getAttribute(\"href\");\r\n contactform = this.el.querySelector(\"#contactblockform_\" + this.openId);\r\n contactformContainer = this.el.querySelector(\"#contactblockform__container_\" + this.openId);\r\n if (contactform != null && contactformContainer != null) {\r\n contactform.style.display = \"inline\";\r\n contactformContainer.style.display = \"flex\";\r\n } \r\n }\r\n\r\n handleClose(e) {\r\n e.preventDefault();\r\n var contactform = this.el.querySelector(\"#contactblockform_\" + this.openId);\r\n var contactformContainer = this.el.querySelector(\"#contactblockform__container_\" + this.openId);\r\n if (contactform != null && contactformContainer != null) {\r\n contactform.style.display = \"none\";\r\n contactformContainer.style.display = \"none\";\r\n }\r\n\r\n this.openId = null;\r\n }\r\n}\r\n","export default class ClickablePos {\r\n constructor(el) {\r\n this.el = el; \r\n\r\n this.init();\r\n this.initEvents();\r\n }\r\n \r\n init() {\r\n this.posBlockContainer = this.el.querySelector(\".pos-block-container\");\r\n this.downloadLink = this.el.querySelectorAll(\".pos-block-action\")[1];\r\n }\r\n \r\n initEvents() {\r\n this.posBlockContainer.addEventListener(\"click\", (e) => {\r\n this.openFile();\r\n });\r\n this.downloadLink.addEventListener(\"click\", (e) => {\r\n e.stopPropagation();\r\n });\r\n }\r\n\r\n openFile() {\r\n window.open(this.posBlockContainer.dataset.link, '_blank');\r\n }\r\n}\r\n ","export default class DownloadLink {\r\n constructor(el) {\r\n this.el = el; \r\n this.init();\r\n this.initEvents();\r\n }\r\n \r\n init() {\r\n this.downloadLink = this.el.querySelector(\".c-download-link\");\r\n }\r\n \r\n initEvents() {\r\n this.downloadLink?.addEventListener(\"click\", (e) => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n this.downloadFile(this.downloadLink.dataset.link);\r\n });\r\n }\r\n\r\n downloadFile(fileUrl) {\r\n const fileName = this.downloadLink.dataset.link.replaceAll('\\\\', '/').split(\"/\").pop();\r\n fetch(fileUrl)\r\n .then(response => response.blob())\r\n .then(blob => {\r\n const url = window.URL.createObjectURL(blob);\r\n const link = document.createElement('a');\r\n link.href = url;\r\n link.download = fileName;\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n window.URL.revokeObjectURL(url);\r\n });\r\n }\r\n}\r\n ","export default class FilterTable {\r\n constructor(el) {\r\n this.el = el;\r\n this.colWidth = [];\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.filters = this.el.getAttribute(\"data-filters\").split(\",\");\r\n this.filter = this.el.querySelector(\"#filter\");\r\n\r\n this.table = this.el.querySelector(\"table\");\r\n let cols = this.table.querySelector(\"tr:has(td)\").querySelectorAll(\"td\");\r\n\r\n for (let i = 0; i < cols.length; i++) {\r\n const col = cols[i];\r\n let colInFirstRow = this.table.querySelectorAll(\"tr:first-child>*\")[i];\r\n colInFirstRow.style.width = col.offsetWidth + \"px\";\r\n }\r\n\r\n // cols.forEach(col => {\r\n // this.colWidth.push(col.offsetWidth);\r\n // });\r\n\r\n this.makeTableSmart();\r\n }\r\n\r\n makeTableSmart() {\r\n const headers = this.table.querySelectorAll('tr:first-child>td,th');\r\n const selectedValues = {};\r\n \r\n headers.forEach((header, index) => {\r\n if (this.filters.includes(header.textContent)) {\r\n const columnValues = Array.from(this.table.querySelectorAll(`td:nth-child(${index + 1})`))\r\n .map(td => td.textContent)\r\n .filter((value, i, self) => self.indexOf(value) === i);\r\n \r\n const select = document.createElement('select');\r\n const defaultOption = document.createElement('option');\r\n defaultOption.text = `${header.textContent}`; // Placeholder for unfiltering\r\n defaultOption.value = ''; // Set an empty value for the placeholder\r\n defaultOption.selected = true;\r\n select.classList.add('default');\r\n select.add(defaultOption);\r\n \r\n columnValues.forEach(value => {\r\n const option = document.createElement('option');\r\n option.value = value;\r\n option.text = value;\r\n select.add(option);\r\n });\r\n \r\n select.addEventListener('change', () => {\r\n selectedValues[header.textContent] = select.value || undefined; // Store undefined to unfilter\r\n \r\n // Add 'default' class to the select when the default option is selected\r\n if (select.selectedIndex === 0) {\r\n select.classList.add('default');\r\n } else {\r\n select.classList.remove('default');\r\n }\r\n \r\n this.filterTable(selectedValues);\r\n });\r\n \r\n select.classList.add('c-input__field');\r\n select.classList.add('c-toggle-label');\r\n \r\n const container = document.createElement('div');\r\n container.className = 'c-input filter-container';\r\n container.appendChild(select);\r\n this.filter.appendChild(container);\r\n }\r\n });\r\n }\r\n\r\n filterTable(selectedValues) {\r\n const rows = this.table.querySelectorAll('tbody tr:not(:first-child)');\r\n let foundItems = false;\r\n \r\n rows.forEach(row => {\r\n let shouldDisplay = true;\r\n \r\n this.filters.forEach(filter => {\r\n const columnIndex = Array.from(this.table.querySelectorAll(`tr:first-child>td,th`))\r\n .findIndex(th => th.textContent === filter);\r\n if (columnIndex !== -1) {\r\n const cellValue = row.querySelectorAll('td')[columnIndex]?.textContent;\r\n if (selectedValues[filter] !== undefined && selectedValues[filter] !== cellValue) {\r\n shouldDisplay = false;\r\n }\r\n }\r\n });\r\n \r\n if (shouldDisplay) {\r\n foundItems = true;\r\n row.style.display = ''; // Display the matching rows\r\n } else {\r\n row.style.display = 'none'; // Hide non-matching rows\r\n }\r\n });\r\n \r\n // If no matching items are found, display a row with \"No items found\"\r\n if (!foundItems) {\r\n const tbody = this.table.querySelector('tbody');\r\n const noItemsRow = document.createElement('tr');\r\n const cell = document.createElement('td');\r\n cell.setAttribute('colspan', tbody.querySelectorAll(\"tr:first-child>*\").length.toString());\r\n cell.textContent = 'No items found';\r\n noItemsRow.appendChild(cell);\r\n noItemsRow.className = 'no-items-found';\r\n tbody.appendChild(noItemsRow);\r\n } else {\r\n // Remove the \"No items found\" row if previously added\r\n const noItemsRow = this.table.querySelector('tbody tr.no-items-found');\r\n if (noItemsRow) {\r\n noItemsRow.remove();\r\n }\r\n }\r\n }\r\n \r\n}\r\n","\r\nexport default class centraFilterButton {\r\n constructor(el){\r\n this.el = el;\r\n this.initEvents();\r\n }\r\n\r\n initEvents() {\r\n this.el.addEventListener(\"click\", (e) => {\r\n e.preventDefault();\r\n this.handleChange();\r\n });\r\n }\r\n\r\n handleChange(e) { \r\n window.location.reload();\r\n }\r\n}","\r\nexport default class CheckboxParam {\r\n constructor(el) {\r\n this.el = el;\r\n this.initEvents();\r\n }\r\n\r\n initEvents() {\r\n this.el.addEventListener(\"click\", (e) => {\r\n // e.preventDefault();\r\n this.handleChange();\r\n });\r\n }\r\n\r\n handleChange() {\r\n var key = this.el.dataset.param;\r\n \r\n let url = new URL(window.location);\r\n var params = new URLSearchParams(url.search);\r\n params.delete(key);\r\n params.delete(\"p\");\r\n\r\n if(this.el.checked) {\r\n params.append(key, \"true\");\r\n }\r\n\r\n window.history.pushState(null, '', `${url.pathname}?${params.toString()}`);\r\n }\r\n}","\r\nexport default class SelectParam {\r\n constructor(el) {\r\n this.el = el;\r\n this.initEvents();\r\n }\r\n\r\n initEvents() {\r\n this.el.addEventListener(\"click\", (e) => {\r\n e.preventDefault();\r\n this.handleChange();\r\n });\r\n }\r\n\r\n handleChange() {\r\n var param = this.el.value;\r\n console.log(\"param\", param);\r\n\r\n var key = param.split(\"=\")[0];\r\n var value = param.split(\"=\")[1];\r\n\r\n let url = new URL(window.location);\r\n var params = new URLSearchParams(url.search);\r\n params.delete(key);\r\n params.delete(\"p\");\r\n if(value !== \"\") {\r\n params.append(key, value);\r\n }\r\n\r\n window.history.pushState(null, '', `${url.pathname}?${params.toString()}`);\r\n }\r\n}","export default function initToggleCentraDisplay(el) {\r\n const map = document.querySelector(\"[data-display='map']\");\r\n const fiches = document.querySelector(\"[data-display='fiches']\");\r\n\r\n el.addEventListener(\"change\", () => {\r\n const isChecked = el.checked;\r\n fiches.classList.toggle(\"hide\", isChecked);\r\n map.classList.toggle(\"hide\", !isChecked);\r\n\r\n const url = new URL(window.location.href);\r\n url.searchParams.set(\"map\", isChecked);\r\n history.replaceState(null, '', url.toString());\r\n });\r\n}","// =============================================================================\r\n// Imports\r\n// =============================================================================\r\n// Utilities\r\nimport { dom } from \"../utils\";\r\nimport Accordion from \"../../components/Accordion/index\";\r\nimport SiteHeader from \"../../components/SiteHeader/index\";\r\nimport Cost from \"../../components/Cost/index\";\r\nimport OpeningHours from \"../../components/OpeningHours/index\";\r\nimport Map from \"../../components/Map/index\";\r\nimport Countdown from \"../../components/Countdown/index\";\r\nimport ContactOverview from \"../../components/ContactOverview/index\";\r\nimport FilterDropdown from \"../../components/Inputs/FilterDropdown/index\";\r\nimport Gallery from \"../../components/Gallery/index\";\r\nimport CookieRow from \"../../components/CookieRow/index\";\r\nimport HeaderMobile from \"../../components/SiteHeader/Mobile/index\";\r\nimport CampaignOverview from \"../../components/CampaignOverview/index\";\r\nimport NewsOverview from \"../../components/NewsOverview/index\";\r\nimport NewsDetail from \"../../components/NewsDetail/index\";\r\nimport SearchSportsCamps from \"../../components/SearchSportsCamps/index\";\r\nimport CookieBanner from \"../../components/CookieBanner/index\";\r\nimport Search from \"../../components/Search/index\";\r\nimport Floorplan from \"../../components/Floorplan/index\";\r\nimport RoutePlanner from \"../../components/SportRoutes/Components/RoutePlanner/index\";\r\nimport RouteDetail from \"../../components/SportRoutes/Components/RouteYouEmbed/index\";\r\nimport ContactBlock from \"../../components/ContactBlock/index\";\r\nimport ClickablePos from \"../../components/POS\";\r\nimport DownloadLink from \"../../components/DownloadList\";\r\nimport FilterTable from \"../../components/FilterTable\";\r\nimport centraFilterButton from \"../../components/Button/centraFilterButton\";\r\nimport centraFilterCheckbox from \"../../components/CenterOverviewPage/inputs/Checkbox\";\r\nimport centraFilterDropdown from \"../../components/CenterOverviewPage/inputs/Dropdown\";\r\nimport initToggleCentraDisplay from \"../../components/CenterOverviewPage/inputs/Toggle\";\r\n\r\n// Modules\r\n// =============================================================================\r\n// Definition\r\n// =============================================================================\r\n\r\n/**\r\n * Info\r\n * -----\r\n * Initialise and export all initialised components to be used on the different\r\n * component pages and in the final build.\r\n *\r\n * Usage: dom.init({ selector: \"[.js-[class]]\", Module: [name] }),\r\n */\r\n\r\nexport default () => [\r\n // Initialise, if they exist, the modules\r\n\r\n dom.init({ selector: \".js-accordion\", Module: Accordion }),\r\n dom.init({ selector: \".js-site-header\", Module: SiteHeader }),\r\n dom.init({ selector: \".js-cost\", Module: Cost }),\r\n dom.init({ selector: \".js-openinghours\", Module: OpeningHours }),\r\n dom.init({ selector: \".js-map\", Module: Map }),\r\n dom.init({ selector: \".js-countdown\", Module: Countdown }),\r\n dom.init({ selector: \".js-contactoverview\", Module: ContactOverview }),\r\n dom.init({ selector: \".js-filterdropdown\", Module: FilterDropdown }),\r\n dom.init({ selector: \".js-gallery\", Module: Gallery }),\r\n dom.init({ selector: \".js-cookie-row\", Module: CookieRow }),\r\n dom.init({ selector: \".js-header-mobile\", Module: HeaderMobile }),\r\n dom.init({ selector: \".js-campaign-overview\", Module: CampaignOverview }),\r\n dom.init({ selector: \".js-news-overview\", Module: NewsOverview }),\r\n dom.init({ selector: \".js-news-detail\", Module: NewsDetail }),\r\n dom.init({ selector: \".js-search-sports-camps\", Module: SearchSportsCamps }),\r\n dom.init({ selector: \".js-cookie-consent\", Module: CookieBanner }),\r\n dom.init({ selector: \".js-search\", Module: Search }),\r\n dom.init({ selector: \".js-floorplan\", Module: Floorplan }),\r\n dom.initWithDelay({ selector: \".js-routeplanner\", Module: RoutePlanner, delay: 500}),\r\n dom.initWithDelay({ selector: \".js-routeDetail\", Module: RouteDetail, delay: 500}),\r\n dom.init({ selector: \".js-contactblock\", Module: ContactBlock }),\r\n dom.init({ selector: \".js-clickable-pos\", Module: ClickablePos }),\r\n dom.init({ selector: \".js-download-link\", Module: DownloadLink }),\r\n dom.init({ selector: \".js-filtertable\", Module: FilterTable }),\r\n dom.init({ selector: \".js-checkbox-centra\", Module: centraFilterCheckbox }),\r\n dom.init({ selector: \".js-select-centra\", Module: centraFilterDropdown }),\r\n dom.init({ selector: \".js-centra-filter-button\", Module: centraFilterButton }),\r\n dom.init({ selector: \".js-toggle-centra\", Module: initToggleCentraDisplay })\r\n];\r\n","// =============================================================================\r\n// Imports */\r\n// =============================================================================\r\nimport modules from \"./modules\";\r\n// import AOS from 'aos';\r\n\r\n// =============================================================================\r\n// Init */\r\n// =============================================================================\r\n\r\n/**\r\n * Info\r\n * -----\r\n * Main init function that initialise all the components if they exist in the\r\n * DOM of the loaded page.\r\n */\r\n\r\nconst init = () => {\r\n modules();\r\n // AOS.init();\r\n};\r\n\r\n// =============================================================================\r\n// Document ready */\r\n// =============================================================================\r\n\r\n/**\r\n * Info\r\n * -----\r\n * Eventlistener that is only triggerd if the state of the document changes. If\r\n * the readystate of the document is equal to \"complete\" (so when DOM and\r\n * styles are loaded), then the components JavaScript is initialised. This is\r\n * done to make calculations concerning the bounding box correct.\r\n *\r\n * Options\r\n * -----\r\n * - interactive: Only DOM is loaded\r\n * - complete: DOM, styles and subsets like images are loaded\r\n */\r\nif(typeof window !== \"undefined\"){\r\n document.addEventListener(\"readystatechange\", () => {\r\n if (document.readyState === \"complete\") {\r\n init();\r\n }\r\n }); \r\n}\r\n\r\nexport default {\r\n\tinit,\r\n};\r\n","const reportWebVitals = onPerfEntry => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","\"use strict\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n(function () {\n 'use strict';\n\n var css = '.frc-captcha *{margin:0;padding:0;border:0;text-align:initial;border-radius:px;filter:none!important;transition:none!important;font-weight:400;font-size:14px;line-height:1.2;text-decoration:none;background-color:initial;color:#222}.frc-captcha{position:relative;min-width:250px;max-width:312px;border:1px solid #f4f4f4;padding-bottom:12px;background-color:#fff}.frc-captcha b{font-weight:700}.frc-container{display:flex;align-items:center;min-height:52px}.frc-icon{fill:#222;stroke:#222;flex-shrink:0;margin:8px 8px 0}.frc-icon.frc-warning{fill:#c00}.frc-success .frc-icon{animation:1s ease-in both frc-fade-in}.frc-content{white-space:nowrap;display:flex;flex-direction:column;margin:4px 6px 0 0;overflow-x:auto;flex-grow:1}.frc-banner{position:absolute;bottom:0;right:6px;line-height:1}.frc-banner *{font-size:10px;opacity:.8;text-decoration:none}.frc-progress{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:3px 0;height:4px;border:none;background-color:#eee;color:#222;width:100%;transition:.5s linear}.frc-progress::-webkit-progress-bar{background:#eee}.frc-progress::-webkit-progress-value{background:#222}.frc-progress::-moz-progress-bar{background:#222}.frc-button{cursor:pointer;padding:2px 6px;background-color:#f1f1f1;border:1px solid transparent;text-align:center;font-weight:600;text-transform:none}.frc-button:focus{border:1px solid #333}.frc-button:hover{background-color:#ddd}.frc-captcha-solution{display:none}.frc-err-url{text-decoration:underline;font-size:.9em}.dark.frc-captcha{color:#fff;background-color:#222;border-color:#333}.dark.frc-captcha *{color:#fff}.dark.frc-captcha button{background-color:#444}.dark .frc-icon{fill:#fff;stroke:#fff}.dark .frc-progress{background-color:#444}.dark .frc-progress::-webkit-progress-bar{background:#444}.dark .frc-progress::-webkit-progress-value{background:#ddd}.dark .frc-progress::-moz-progress-bar{background:#ddd}@keyframes frc-fade-in{from{opacity:0}to{opacity:1}}'; // This is not an enum to save some bytes in the output bundle.\n\n var SOLVER_TYPE_JS = 1;\n var CHALLENGE_SIZE_BYTES = 128; // @ts-ignore\n\n var loaderSVG = \"\";\n var errorSVG = \"\";\n /**\r\n * Base template used for all widget states\r\n * The reason we use raw string interpolation here is so we don't have to ship something like lit-html.\r\n */\n\n function getTemplate(fieldName, svgContent, svgAriaHidden, textContent, solutionString, buttonText) {\n var progress = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false;\n var debugData = arguments.length > 7 ? arguments[7] : undefined;\n var additionalContainerClasses = arguments.length > 8 ? arguments[8] : undefined;\n return \"
\\n\").concat(svgContent, \"\\n
\\n \").concat(textContent, \"\\n \").concat(buttonText ? \"\") : \"\", \"\\n \").concat(progress ? \"0%\" : \"\", \"\\n
\\n
FriendlyCaptcha \\u21D7\\n\");\n }\n /**\r\n * Used when the widget is ready to start solving.\r\n */\n\n\n function getReadyHTML(fieldName, l) {\n return getTemplate(fieldName, \"\", true, l.text_ready, \".UNSTARTED\", l.button_start, false);\n }\n /**\r\n * Used when the widget is retrieving a puzzle\r\n */\n\n\n function getFetchingHTML(fieldName, l) {\n return getTemplate(fieldName, loaderSVG, true, l.text_fetching, \".FETCHING\", undefined, true);\n }\n /**\r\n * Used when the solver is running, displays a progress bar.\r\n */\n\n\n function getRunningHTML(fieldName, l) {\n return getTemplate(fieldName, loaderSVG, true, l.text_solving, \".UNFINISHED\", undefined, true);\n }\n\n function getDoneHTML(fieldName, l, solution, data) {\n var timeData = \"\".concat(data.t.toFixed(0), \"s (\").concat((data.h / data.t * 0.001).toFixed(0), \"K/s)\").concat(data.solver === SOLVER_TYPE_JS ? \" JS Fallback\" : \"\");\n return getTemplate(fieldName, \"\".concat(l.text_completed_sr, \"\"), false, l.text_completed, solution, undefined, false, timeData, \"frc-success\");\n }\n\n function getExpiredHTML(fieldName, l) {\n return getTemplate(fieldName, errorSVG, true, l.text_expired, \".EXPIRED\", l.button_restart);\n }\n\n function getErrorHTML(fieldName, l, errorDescription) {\n var recoverable = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n var headless = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n return getTemplate(fieldName, errorSVG, true, \"\".concat(l.text_error, \"
\").concat(errorDescription), headless ? \".HEADLESS_ERROR\" : \".ERROR\", recoverable ? l.button_retry : undefined);\n }\n\n function findCaptchaElements() {\n var elements = document.querySelectorAll(\".frc-captcha\");\n\n if (elements.length === 0) {\n console.warn(\"FriendlyCaptcha: No div was found with .frc-captcha class\");\n }\n\n return elements;\n }\n /**\r\n * Injects the style if no #frc-style element is already present\r\n * (to support custom stylesheets)\r\n */\n\n\n function injectStyle() {\n if (!document.querySelector(\"#frc-style\")) {\n var styleSheet = document.createElement(\"style\");\n styleSheet.id = \"frc-style\";\n styleSheet.innerHTML = css;\n document.head.appendChild(styleSheet);\n }\n }\n /**\r\n * @param element parent element of friendlycaptcha\r\n * @param progress value between 0 and 1\r\n */\n\n\n function updateProgressBar(element, data) {\n var p = element.querySelector(\".frc-progress\");\n var perc = (data.i + 1) / data.n;\n\n if (p) {\n p.value = perc;\n p.innerText = perc.toFixed(2) + \"%\";\n p.title = data.i + 1 + \"/\" + data.n + \" (\" + (data.h / data.t * 0.001).toFixed(0) + \"K/s)\";\n }\n }\n /**\r\n * Traverses parent nodes until a
is found, returns null if not found.\r\n */\n\n\n function findParentFormElement(element) {\n while (element.tagName !== \"FORM\") {\n element = element.parentElement;\n\n if (!element) {\n return null;\n }\n }\n\n return element;\n }\n /**\r\n * Add listener to specified element that will only fire once on focus.\r\n */\n\n\n function executeOnceOnFocusInEvent(element, listener) {\n element.addEventListener(\"focusin\", listener, {\n once: true,\n passive: true\n });\n } // Adapted from the base64-arraybuffer package implementation\n // (https://github.com/niklasvh/base64-arraybuffer, MIT licensed)\n\n\n var CHARS = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n var EQ_CHAR = \"=\".charCodeAt(0); // Use a lookup table to find the index.\n\n var lookup = new Uint8Array(256);\n\n for (var i = 0; i < CHARS.length; i++) {\n lookup[CHARS.charCodeAt(i)] = i;\n }\n\n function encode(bytes) {\n var len = bytes.length;\n var base64 = \"\";\n\n for (var _i = 0; _i < len; _i += 3) {\n var b0 = bytes[_i + 0];\n var b1 = bytes[_i + 1];\n var b2 = bytes[_i + 2]; // This temporary variable stops the NextJS 13 compiler from breaking this code in optimization.\n // See issue https://github.com/FriendlyCaptcha/friendly-challenge/issues/165\n\n var t = \"\";\n t += CHARS.charAt(b0 >>> 2);\n t += CHARS.charAt((b0 & 3) << 4 | b1 >>> 4);\n t += CHARS.charAt((b1 & 15) << 2 | b2 >>> 6);\n t += CHARS.charAt(b2 & 63);\n base64 += t;\n }\n\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n\n return base64;\n }\n\n function decode(base64) {\n var len = base64.length;\n var bufferLength = len * 3 >>> 2; // * 0.75\n\n if (base64.charCodeAt(len - 1) === EQ_CHAR) bufferLength--;\n if (base64.charCodeAt(len - 2) === EQ_CHAR) bufferLength--;\n var bytes = new Uint8Array(bufferLength);\n\n for (var _i2 = 0, p = 0; _i2 < len; _i2 += 4) {\n var encoded1 = lookup[base64.charCodeAt(_i2 + 0)];\n var encoded2 = lookup[base64.charCodeAt(_i2 + 1)];\n var encoded3 = lookup[base64.charCodeAt(_i2 + 2)];\n var encoded4 = lookup[base64.charCodeAt(_i2 + 3)];\n bytes[p++] = encoded1 << 2 | encoded2 >> 4;\n bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\n bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\n }\n\n return bytes;\n } // Defensive init to make it easier to integrate with Gatsby, NextJS, and friends.\n\n\n var nav;\n var ua;\n\n if (typeof navigator !== \"undefined\") {\n nav = navigator;\n ua = nav.userAgent.toLowerCase();\n }\n /**\r\n * Headless browser detection on the clientside is imperfect. One can modify any clientside code to disable or change this check,\r\n * and one can spoof whatever is checked here. However, that doesn't make it worthless: it's yet another hurdle for spammers and\r\n * it stops unsophisticated scripters from making any request whatsoever.\r\n */\n\n\n function isHeadless() {\n return (//tell-tale bot signs\n ua.indexOf(\"headless\") !== -1 || nav.appVersion.indexOf(\"Headless\") !== -1 || ua.indexOf(\"bot\") !== -1 || // http://www.useragentstring.com/pages/useragentstring.php?typ=Browser\n ua.indexOf(\"crawl\") !== -1 || // Only IE5 has two distributions that has this on windows NT.. so yeah.\n nav.webdriver === true || !nav.language || nav.languages !== undefined && !nav.languages.length // IE 11 does not support NavigatorLanguage.languages https://developer.mozilla.org/en-US/docs/Web/API/NavigatorLanguage/languages\n\n );\n }\n /**\n * Maps a value between 0 and 255 to a difficulty threshold (as uint32)\n * Difficulty 0 maps to 99.99% probability of being right on the first attempt\n * Anything above 250 needs 2^32 tries on average to solve.\n * 150 to 180 seems reasonable\n */\n\n\n function difficultyToThreshold(value) {\n if (value > 255) {\n value = 255;\n } else if (value < 0) {\n value = 0;\n }\n\n return Math.pow(2, (255.999 - value) / 8.0) >>> 0;\n }\n\n var PUZZLE_EXPIRY_OFFSET = 13;\n var NUMBER_OF_PUZZLES_OFFSET = 14;\n var PUZZLE_DIFFICULTY_OFFSET = 15;\n\n function getPuzzleSolverInputs(puzzleBuffer, numPuzzles) {\n var startingPoints = [];\n\n for (var _i3 = 0; _i3 < numPuzzles; _i3++) {\n var input = new Uint8Array(CHALLENGE_SIZE_BYTES);\n input.set(puzzleBuffer);\n input[120] = _i3;\n startingPoints.push(input);\n }\n\n return startingPoints;\n }\n\n function decodeBase64Puzzle(base64Puzzle) {\n var parts = base64Puzzle.split(\".\");\n var puzzle = parts[1];\n var arr = decode(puzzle);\n return {\n signature: parts[0],\n base64: puzzle,\n buffer: arr,\n n: arr[NUMBER_OF_PUZZLES_OFFSET],\n threshold: difficultyToThreshold(arr[PUZZLE_DIFFICULTY_OFFSET]),\n expiry: arr[PUZZLE_EXPIRY_OFFSET] * 300000\n };\n }\n\n function getPuzzle(urlsSeparatedByComma, siteKey, lang) {\n return new Promise(function ($return, $error) {\n var urls;\n urls = urlsSeparatedByComma.split(\",\");\n var $Loop_4_trampoline, $Loop_4_local;\n\n function $Loop_4_step() {\n var _$Loop_4_local = $Loop_4_local(),\n _$Loop_4_local2 = _slicedToArray(_$Loop_4_local, 1),\n i = _$Loop_4_local2[0];\n\n i++;\n return $Loop_4.bind(this, i);\n }\n\n function $Loop_4(i) {\n $Loop_4_local = function $Loop_4_local() {\n return [i];\n };\n\n if (i < urls.length) {\n var $Try_1_Post = function $Try_1_Post() {\n try {\n return $Loop_4_step;\n } catch ($boundEx) {\n return $error($boundEx);\n }\n };\n\n var $Try_1_Catch = function $Try_1_Catch(e) {\n try {\n {\n console.error(\"[FRC Fetch]:\", e);\n var err;\n err = new Error(\"\".concat(lang.text_fetch_error, \" \").concat(urls[i], \"\"));\n err.rawError = e;\n throw err;\n }\n } catch ($boundEx) {\n return $error($boundEx);\n }\n };\n\n try {\n var response;\n return Promise.resolve(fetchAndRetryWithBackoff(urls[i] + \"?sitekey=\" + siteKey, {\n headers: [[\"x-frc-client\", \"js-0.9.12\"]],\n mode: \"cors\"\n }, 2)).then(function ($await_7) {\n try {\n var $If_6 = function $If_6() {\n return $Try_1_Post();\n };\n\n response = $await_7;\n\n if (response.ok) {\n var json;\n return Promise.resolve(response.json()).then(function ($await_8) {\n try {\n json = $await_8;\n return $return(json.data.puzzle);\n } catch ($boundEx) {\n return $Try_1_Catch($boundEx);\n }\n }, $Try_1_Catch);\n } else {\n var _json;\n\n var $Try_2_Post = function () {\n try {\n if (_json && _json.errors && _json.errors[0] === \"endpoint_not_enabled\") {\n throw Error(\"Endpoint not allowed (\".concat(response.status, \")\"));\n }\n\n if (i === urls.length - 1) {\n throw Error(\"Response status \".concat(response.status, \" \").concat(response.statusText, \" \").concat(_json ? _json.errors : \"\"));\n }\n\n return $If_6.call(this);\n } catch ($boundEx) {\n return $Try_1_Catch($boundEx);\n }\n }.bind(this);\n\n var $Try_2_Catch = function $Try_2_Catch(e) {\n /* Do nothing, the error is not valid JSON */\n try {\n return $Try_2_Post();\n } catch ($boundEx) {\n return $Try_1_Catch($boundEx);\n }\n };\n\n try {\n return Promise.resolve(response.json()).then(function ($await_9) {\n try {\n _json = $await_9;\n return $Try_2_Post();\n } catch ($boundEx) {\n return $Try_2_Catch($boundEx);\n }\n }, $Try_2_Catch);\n } catch (e) {\n $Try_2_Catch(e);\n }\n }\n\n return $If_6.call(this);\n } catch ($boundEx) {\n return $Try_1_Catch($boundEx);\n }\n }.bind(this), $Try_1_Catch);\n } catch (e) {\n $Try_1_Catch(e);\n }\n } else return [1];\n }\n\n return ($Loop_4_trampoline = function (q) {\n while (q) {\n if (q.then) return void q.then($Loop_4_trampoline, $error);\n\n try {\n if (q.pop) {\n if (q.length) return q.pop() ? $Loop_4_exit.call(this) : q;else q = $Loop_4_step;\n } else q = q.call(this);\n } catch (_exception) {\n return $error(_exception);\n }\n }\n }.bind(this))($Loop_4.bind(this, 0));\n\n function $Loop_4_exit() {\n // This code should never be reached.\n return $error(Error(\"Internal error\"));\n }\n });\n }\n /**\r\n * Retries given request with exponential backoff (starting with 1000ms delay, multiplying by 4 every time)\r\n * @param url Request (can be string url) to fetch\r\n * @param opts Options for fetch\r\n * @param n Number of times to attempt before giving up.\r\n */\n\n\n function fetchAndRetryWithBackoff(url, opts, n) {\n return new Promise(function ($return, $error) {\n var time = 1000;\n return $return(fetch(url, opts).catch(function (error) {\n return new Promise(function ($return, $error) {\n if (n === 0) return $error(error);\n return Promise.resolve(new Promise(function (r) {\n return setTimeout(r, time);\n })).then(function ($await_10) {\n try {\n time *= 4;\n return $return(fetchAndRetryWithBackoff(url, opts, n - 1));\n } catch ($boundEx) {\n return $error($boundEx);\n }\n }, $error);\n });\n }));\n });\n } // English\n\n\n var LANG_EN = {\n text_init: \"Initializing...\",\n text_ready: \"Anti-Robot Verification\",\n button_start: \"Click to start verification\",\n text_fetching: \"Fetching Challenge\",\n text_solving: \"Verifying you are human...\",\n text_completed: \"I am human\",\n text_completed_sr: \"Automatic spam check completed\",\n text_expired: \"Anti-Robot verification expired\",\n button_restart: \"Restart\",\n text_error: \"Verification failed\",\n button_retry: \"Retry\",\n text_fetch_error: \"Failed to connect to\"\n }; // French\n\n var LANG_FR = {\n text_init: \"Chargement...\",\n text_ready: \"Vérification Anti-Robot\",\n button_start: \"Cliquez ici pour vérifier\",\n text_fetching: \"Chargement du défi\",\n text_solving: \"Vérification que vous êtes un humain...\",\n text_completed: \"Je suis un humain\",\n text_completed_sr: \"Vérification automatique des spams terminée\",\n text_expired: \"Vérification anti-robot expirée\",\n button_restart: \"Redémarrer\",\n text_error: \"Échec de la vérification\",\n button_retry: \"Recommencer\",\n text_fetch_error: \"Problème de connexion avec\"\n }; // German\n\n var LANG_DE = {\n text_init: \"Initialisierung...\",\n text_ready: \"Anti-Roboter-Verifizierung\",\n button_start: \"Hier klicken\",\n text_fetching: \"Herausforderung laden...\",\n text_solving: \"Verifizierung, dass Sie ein Mensch sind...\",\n text_completed: \"Ich bin ein Mensch\",\n text_completed_sr: \"Automatische Spamprüfung abgeschlossen\",\n text_expired: \"Verifizierung abgelaufen\",\n button_restart: \"Erneut starten\",\n text_error: \"Verifizierung fehlgeschlagen\",\n button_retry: \"Erneut versuchen\",\n text_fetch_error: \"Verbindungsproblem mit\"\n }; // Dutch\n\n var LANG_NL = {\n text_init: \"Initializeren...\",\n text_ready: \"Anti-robotverificatie\",\n button_start: \"Klik om te starten\",\n text_fetching: \"Aan het laden...\",\n text_solving: \"Anti-robotverificatie bezig...\",\n text_completed: \"Ik ben een mens\",\n text_completed_sr: \"Automatische anti-spamcheck voltooid\",\n text_expired: \"Verificatie verlopen\",\n button_restart: \"Opnieuw starten\",\n text_error: \"Verificatie mislukt\",\n button_retry: \"Opnieuw proberen\",\n text_fetch_error: \"Verbinding mislukt met\"\n }; // Italian\n\n var LANG_IT = {\n text_init: \"Inizializzazione...\",\n text_ready: \"Verifica Anti-Robot\",\n button_start: \"Clicca per iniziare\",\n text_fetching: \"Caricamento...\",\n text_solving: \"Verificando che sei umano...\",\n text_completed: \"Non sono un robot\",\n text_completed_sr: \"Controllo automatico dello spam completato\",\n text_expired: \"Verifica Anti-Robot scaduta\",\n button_restart: \"Ricomincia\",\n text_error: \"Verifica fallita\",\n button_retry: \"Riprova\",\n text_fetch_error: \"Problema di connessione con\"\n }; // Portuguese\n\n var LANG_PT = {\n text_init: \"Inicializando...\",\n text_ready: \"Verificação Anti-Robô\",\n button_start: \"Clique para iniciar verificação\",\n text_fetching: \"Carregando...\",\n text_solving: \"Verificando se você é humano...\",\n text_completed: \"Eu sou humano\",\n text_completed_sr: \"Verificação automática de spam concluída\",\n text_expired: \"Verificação Anti-Robô expirada\",\n button_restart: \"Reiniciar\",\n text_error: \"Verificação falhou\",\n button_retry: \"Tentar novamente\",\n text_fetch_error: \"Falha de conexão com\"\n }; // Spanish\n\n var LANG_ES = {\n text_init: \"Inicializando...\",\n text_ready: \"Verificación Anti-Robot\",\n button_start: \"Haga clic para iniciar la verificación\",\n text_fetching: \"Cargando desafío\",\n text_solving: \"Verificando que eres humano...\",\n text_completed: \"Soy humano\",\n text_completed_sr: \"Verificación automática de spam completada\",\n text_expired: \"Verificación Anti-Robot expirada\",\n button_restart: \"Reiniciar\",\n text_error: \"Ha fallado la verificación\",\n button_retry: \"Intentar de nuevo\",\n text_fetch_error: \"Error al conectarse a\"\n }; // Catalan\n\n var LANG_CA = {\n text_init: \"Inicialitzant...\",\n text_ready: \"Verificació Anti-Robot\",\n button_start: \"Fes clic per començar la verificació\",\n text_fetching: \"Carregant repte\",\n text_solving: \"Verificant que ets humà...\",\n text_completed: \"Soc humà\",\n text_completed_sr: \"Verificació automàtica de correu brossa completada\",\n text_expired: \"La verificació Anti-Robot ha expirat\",\n button_restart: \"Reiniciar\",\n text_error: \"Ha fallat la verificació\",\n button_retry: \"Tornar a provar\",\n text_fetch_error: \"Error connectant a\"\n }; // Japanese\n\n var LANG_JA = {\n text_init: \"開始しています...\",\n text_ready: \"アンチロボット認証\",\n button_start: \"クリックして認証を開始\",\n text_fetching: \"ロードしています\",\n text_solving: \"認証中...\",\n text_completed: \"私はロボットではありません\",\n text_completed_sr: \"自動スパムチェックが完了しました\",\n text_expired: \"認証の期限が切れています\",\n button_restart: \"再度認証を行う\",\n text_error: \"認証にエラーが発生しました\",\n button_retry: \"再度認証を行う\",\n text_fetch_error: \"接続ができませんでした\"\n }; // Danish\n\n var LANG_DA = {\n text_init: \"Aktiverer...\",\n text_ready: \"Jeg er ikke en robot\",\n button_start: \"Klik for at starte verifikationen\",\n text_fetching: \"Henter data\",\n text_solving: \"Kontrollerer at du er et menneske...\",\n text_completed: \"Jeg er et menneske.\",\n text_completed_sr: \"Automatisk spamkontrol gennemført\",\n text_expired: \"Verifikationen kunne ikke fuldføres\",\n button_restart: \"Genstart\",\n text_error: \"Bekræftelse mislykkedes\",\n button_retry: \"Prøv igen\",\n text_fetch_error: \"Forbindelsen mislykkedes\"\n }; // Russian\n\n var LANG_RU = {\n text_init: \"Инициализация...\",\n text_ready: \"АнтиРобот проверка\",\n button_start: \"Нажмите, чтобы начать проверку\",\n text_fetching: \"Получаю задачу\",\n text_solving: \"Проверяю, что вы человек...\",\n text_completed: \"Я человек\",\n text_completed_sr: \"Aвтоматическая проверка на спам завершена\",\n text_expired: \"Срок АнтиРоботной проверки истёк\",\n button_restart: \"Начать заново\",\n text_error: \"Ошибка проверки\",\n button_retry: \"Повторить ещё раз\",\n text_fetch_error: \"Ошибка подключения\"\n }; // Swedish\n\n var LANG_SV = {\n text_init: \"Aktiverar...\",\n text_ready: \"Jag är inte en robot\",\n button_start: \"Klicka för att verifiera\",\n text_fetching: \"Hämtar data\",\n text_solving: \"Kontrollerar att du är människa...\",\n text_completed: \"Jag är en människa\",\n text_completed_sr: \"Automatisk spamkontroll slutförd\",\n text_expired: \"Anti-robot-verifieringen har löpt ut\",\n button_restart: \"Börja om\",\n text_error: \"Verifiering kunde inte slutföras\",\n button_retry: \"Omstart\",\n text_fetch_error: \"Verifiering misslyckades\"\n }; // Turkish\n\n var LANG_TR = {\n text_init: \"Başlatılıyor...\",\n text_ready: \"Anti-Robot Doğrulaması\",\n button_start: \"Doğrulamayı başlatmak için tıklayın\",\n text_fetching: \"Yükleniyor\",\n text_solving: \"Robot olmadığınız doğrulanıyor...\",\n text_completed: \"Ben bir insanım\",\n text_completed_sr: \"Otomatik spam kontrolü tamamlandı\",\n text_expired: \"Anti-Robot doğrulamasının süresi doldu\",\n button_restart: \"Yeniden başlat\",\n text_error: \"Doğrulama başarısız oldu\",\n button_retry: \"Tekrar dene\",\n text_fetch_error: \"Bağlantı başarısız oldu\"\n }; // Greek\n\n var LANG_EL = {\n text_init: \"Προετοιμασία...\",\n text_ready: \"Anti-Robot Επαλήθευση\",\n button_start: \" Κάντε κλικ για να ξεκινήσει η επαλήθευση\",\n text_fetching: \" Λήψη πρόκλησης\",\n text_solving: \" Επιβεβαίωση ανθρώπου...\",\n text_completed: \"Είμαι άνθρωπος\",\n text_completed_sr: \" Ο αυτόματος έλεγχος ανεπιθύμητου περιεχομένου ολοκληρώθηκε\",\n text_expired: \" Η επαλήθευση Anti-Robot έληξε\",\n button_restart: \" Επανεκκίνηση\",\n text_error: \" Η επαλήθευση απέτυχε\",\n button_retry: \" Δοκιμάστε ξανά\",\n text_fetch_error: \" Αποτυχία σύνδεσης με\"\n }; // Ukrainian\n\n var LANG_UK = {\n text_init: \"Ініціалізація...\",\n text_ready: \"Антиробот верифікація\",\n button_start: \"Натисніть, щоб розпочати верифікацію\",\n text_fetching: \"З’єднання\",\n text_solving: \"Перевірка, що ви не робот...\",\n text_completed: \"Я не робот\",\n text_completed_sr: \"Автоматична перевірка спаму завершена\",\n text_expired: \"Час вичерпано\",\n button_restart: \"Почати знову\",\n text_error: \"Верифікація не вдалась\",\n button_retry: \"Спробувати знову\",\n text_fetch_error: \"Не вдалось з’єднатись\"\n }; // Bulgarian\n\n var LANG_BG = {\n text_init: \"Инициализиране...\",\n text_ready: \"Анти-робот проверка\",\n button_start: \"Щракнете, за да започнете проверката\",\n text_fetching: \"Предизвикателство\",\n text_solving: \"Проверяваме дали си човек...\",\n text_completed: \"Аз съм човек\",\n text_completed_sr: \"Автоматичната проверка за спам е завършена\",\n text_expired: \"Анти-Робот проверката изтече\",\n button_restart: \"Рестартирайте\",\n text_error: \"Неуспешна проверка\",\n button_retry: \"Опитайте пак\",\n text_fetch_error: \"Неуспешно свързване с\"\n }; // Czech\n\n var LANG_CS = {\n text_init: \"Inicializace...\",\n text_ready: \"Ověření proti robotům\",\n button_start: \"Klikněte pro ověření\",\n text_fetching: \"Problém při načítání\",\n text_solving: \"Ověření, že jste člověk...\",\n text_completed: \"Jsem člověk\",\n text_completed_sr: \"Automatická kontrola spamu dokončena\",\n text_expired: \"Ověření proti robotům vypršelo\",\n button_restart: \"Restartovat\",\n text_error: \"Ověření se nezdařilo\",\n button_retry: \"Zkusit znovu\",\n text_fetch_error: \"Připojení se nezdařilo\"\n }; // Slovak\n\n var LANG_SK = {\n text_init: \"Inicializácia...\",\n text_ready: \"Overenie proti robotom\",\n button_start: \"Kliknite pre overenie\",\n text_fetching: \"Problém pri načítaní\",\n text_solving: \"Overenie, že ste človek...\",\n text_completed: \"Som človek\",\n text_completed_sr: \"Automatická kontrola spamu dokončená\",\n text_expired: \"Overenie proti robotom vypršalo\",\n button_restart: \"Reštartovať\",\n text_error: \"Overenie sa nepodarilo\",\n button_retry: \"Skúsiť znova\",\n text_fetch_error: \"Pripojenie sa nepodarilo\"\n }; // Norwegian\n\n var LANG_NO = {\n text_init: \" Aktiverer...\",\n text_ready: \"Jeg er ikke en robot\",\n button_start: \"Klikk for å starte verifiseringen\",\n text_fetching: \"Henter data\",\n text_solving: \"Sjekker at du er et menneske...\",\n text_completed: \"Jeg er et menneske\",\n text_completed_sr: \"Automatisk spam-sjekk fullført\",\n text_expired: \"Verifisering kunne ikke fullføres\",\n button_restart: \"Omstart\",\n text_error: \"Bekreftelsen mislyktes\",\n button_retry: \"Prøv på nytt\",\n text_fetch_error: \"Tilkoblingen mislyktes\"\n }; // Finnish\n\n var LANG_FI = {\n text_init: \"Aktivoidaan...\",\n text_ready: \"En ole robotti\",\n button_start: \"Aloita vahvistus klikkaamalla\",\n text_fetching: \"Haetaan tietoja\",\n text_solving: \"Tarkistaa, että olet ihminen...\",\n text_completed: \"Olen ihminen\",\n text_completed_sr: \"Automaattinen roskapostin tarkistus suoritettu\",\n text_expired: \"Vahvistusta ei voitu suorittaa loppuun\",\n button_restart: \"Uudelleenkäynnistys\",\n text_error: \"Vahvistus epäonnistui\",\n button_retry: \"Yritä uudelleen\",\n text_fetch_error: \"Yhteys epäonnistui\"\n }; // Latvian\n\n var LANG_LV = {\n text_init: \"Notiek inicializēšana...\",\n text_ready: \"Verifikācija, ka neesat robots\",\n button_start: \"Noklikšķiniet, lai sāktu verifikāciju\",\n text_fetching: \"Notiek drošības uzdevuma izgūšana\",\n text_solving: \"Notiek pārbaude, vai esat cilvēks...\",\n text_completed: \"Es esmu cilvēks\",\n text_completed_sr: \"Automātiska surogātpasta pārbaude pabeigta\",\n text_expired: \"Verifikācijas, ka neesat robots, derīgums beidzies\",\n button_restart: \"Restartēt\",\n text_error: \"Verifikācija neizdevās\",\n button_retry: \"Mēģināt vēlreiz\",\n text_fetch_error: \"Neizdevās izveidot savienojumu ar\"\n }; // Lithuanian\n\n var LANG_LT = {\n text_init: \"Inicijuojama...\",\n text_ready: \"Patikrinimas, ar nesate robotas\",\n button_start: \"Spustelėkite patikrinimui pradėti\",\n text_fetching: \"Gavimo iššūkis\",\n text_solving: \"Tikrinama, ar esate žmogus...\",\n text_completed: \"Esu žmogus\",\n text_completed_sr: \"Automatinė patikra dėl pašto šiukšlių atlikta\",\n text_expired: \"Patikrinimas, ar nesate robotas, baigė galioti\",\n button_restart: \"Pradėti iš naujo\",\n text_error: \"Patikrinimas nepavyko\",\n button_retry: \"Kartoti\",\n text_fetch_error: \"Nepavyko prisijungti prie\"\n }; // Polish\n\n var LANG_PL = {\n text_init: \"Inicjowanie...\",\n text_ready: \"Weryfikacja antybotowa\",\n button_start: \"Kliknij, aby rozpocząć weryfikację\",\n text_fetching: \"Pobieranie\",\n text_solving: \"Weryfikacja, czy nie jesteś robotem...\",\n text_completed: \"Nie jestem robotem\",\n text_completed_sr: \"Zakończono automatyczne sprawdzanie spamu\",\n text_expired: \"Weryfikacja antybotowa wygasła\",\n button_restart: \"Uruchom ponownie\",\n text_error: \"Weryfikacja nie powiodła się\",\n button_retry: \"Spróbuj ponownie\",\n text_fetch_error: \"Nie udało się połączyć z\"\n }; // Estonian\n\n var LANG_ET = {\n text_init: \"Initsialiseerimine...\",\n text_ready: \"Robotivastane kinnitus\",\n button_start: \"Kinnitamisega alustamiseks klõpsake\",\n text_fetching: \"Väljakutse toomine\",\n text_solving: \"Kinnitatakse, et sa oled inimene...\",\n text_completed: \"Ma olen inimene\",\n text_completed_sr: \"Automaatne rämpsposti kontroll on lõpetatud\",\n text_expired: \"Robotivastane kinnitus aegus\",\n button_restart: \"Taaskäivita\",\n text_error: \"Kinnitamine nurjus\",\n button_retry: \"Proovi uuesti\",\n text_fetch_error: \"Ühenduse loomine nurjus\"\n }; // Croatian\n\n var LANG_HR = {\n text_init: \"Početno postavljanje...\",\n text_ready: \"Provjera protiv robota\",\n button_start: \"Kliknite za početak provjere\",\n text_fetching: \"Dohvaćanje izazova\",\n text_solving: \"Provjeravamo jeste li čovjek...\",\n text_completed: \"Nisam robot\",\n text_completed_sr: \"Automatska provjera je završena\",\n text_expired: \"Vrijeme za provjeru protiv robota je isteklo\",\n button_restart: \"Osvježi\",\n text_error: \"Provjera nije uspjlela\",\n button_retry: \" Ponovo pokreni\",\n text_fetch_error: \"Nije moguće uspostaviti vezu\"\n }; // Serbian\n\n var LANG_SR = {\n text_init: \"Pokretanje...\",\n text_ready: \"Anti-Robot Verifikacija\",\n button_start: \"Kliknite da biste započeli verifikaciju\",\n text_fetching: \"Učitavanje izazova\",\n text_solving: \"Verifikacija da ste čovek...\",\n text_completed: \"Ja sam čovek\",\n text_completed_sr: \"Automatska provera neželjene pošte je završena\",\n text_expired: \"Anti-Robot verifikacija je istekla\",\n button_restart: \"Ponovo pokrenuti\",\n text_error: \"Verifikacija nije uspela\",\n button_retry: \"Pokušajte ponovo\",\n text_fetch_error: \"Neuspelo povezivanje sa...\"\n }; // Slovenian\n\n var LANG_SL = {\n text_init: \"Inicializiranje...\",\n text_ready: \"Preverjanje robotov\",\n button_start: \"Kliknite za začetek preverjanja\",\n text_fetching: \"Prenašanje izziva\",\n text_solving: \"Preverjamo, ali ste človek\",\n text_completed: \"Nisem robot\",\n text_completed_sr: \"Avtomatsko preverjanje je zaključeno\",\n text_expired: \"Preverjanje robotov je poteklo\",\n button_restart: \"Osveži\",\n text_error: \"Preverjanje ni uspelo\",\n button_retry: \"Poskusi ponovno\",\n text_fetch_error: \"Povezave ni bilo mogoče vzpostaviti\"\n }; // Hungarian\n\n var LANG_HU = {\n text_init: \"Inicializálás...\",\n text_ready: \"Robotellenes ellenőrzés\",\n button_start: \"Kattintson az ellenőrzés megkezdéséhez\",\n text_fetching: \"Feladvány lekérése\",\n text_solving: \"Annak igazolása, hogy Ön nem robot...\",\n text_completed: \"Nem vagyok robot\",\n text_completed_sr: \"Automatikus spam ellenőrzés befejeződött\",\n text_expired: \"Robotellenes ellenőrzés lejárt\",\n button_restart: \"Újraindítás\",\n text_error: \"Az ellenőrzés nem sikerült\",\n button_retry: \"Próbálja újra\",\n text_fetch_error: \"Nem sikerült csatlakozni\"\n }; // Romanian\n\n var LANG_RO = {\n text_init: \"Se inițializează...\",\n text_ready: \"Verificare anti-robot\",\n button_start: \"Click pentru a începe verificarea\",\n text_fetching: \"Downloading\",\n text_solving: \"Verificare că ești om...\",\n text_completed: \"Sunt om\",\n text_completed_sr: \"Verificarea automată a spam-ului a fost finalizată\",\n text_expired: \"Verificarea anti-robot a expirat\",\n button_restart: \"Restart\",\n text_error: \"Verificare eșuată\",\n button_retry: \"Reîncearcă\",\n text_fetch_error: \"Nu s-a putut conecta\"\n }; // Chinese\n\n var LANG_ZH = {\n text_init: \"初始化中……\",\n text_ready: \"人机验证\",\n button_start: \"点击开始\",\n text_fetching: \"正在加载\",\n text_solving: \"人机校验中……\",\n text_completed: \"我不是机器人\",\n text_completed_sr: \"人机验证完成\",\n text_expired: \"验证已过期\",\n button_restart: \"重新开始\",\n text_error: \"校验失败\",\n button_retry: \"重试\",\n text_fetch_error: \"无法连接到\"\n }; // Traditional Chinese\n\n var LANG_ZH_TW = {\n text_init: \"正在初始化……\",\n text_ready: \"反機器人驗證\",\n button_start: \"點擊開始驗證\",\n text_fetching: \"載入中\",\n text_solving: \"反機器人驗證中……\",\n text_completed: \"我不是機器人\",\n text_completed_sr: \"驗證完成\",\n text_expired: \"驗證超時\",\n button_restart: \"重新開始\",\n text_error: \"驗證失敗\",\n button_retry: \"重試\",\n text_fetch_error: \"無法連線到\"\n }; // Vietnamese\n\n var LANG_VI = {\n text_init: \"Đang khởi tạo...\",\n text_ready: \"Xác minh chống Robot\",\n button_start: \"Bấm vào đây để xác minh\",\n text_fetching: \"Tìm nạp và xử lý thử thách\",\n text_solving: \"Xác minh bạn là người...\",\n text_completed: \"Bạn là con người\",\n text_completed_sr: \"Xác minh hoàn tất\",\n text_expired: \"Xác minh đã hết hạn\",\n button_restart: \"Khởi động lại\",\n text_error: \"Xác minh thất bại\",\n button_retry: \"Thử lại\",\n text_fetch_error: \"Không kết nối được\"\n };\n var localizations = {\n en: LANG_EN,\n de: LANG_DE,\n nl: LANG_NL,\n fr: LANG_FR,\n it: LANG_IT,\n pt: LANG_PT,\n es: LANG_ES,\n ca: LANG_CA,\n ja: LANG_JA,\n da: LANG_DA,\n ru: LANG_RU,\n sv: LANG_SV,\n tr: LANG_TR,\n el: LANG_EL,\n uk: LANG_UK,\n bg: LANG_BG,\n cs: LANG_CS,\n sk: LANG_SK,\n no: LANG_NO,\n fi: LANG_FI,\n lv: LANG_LV,\n lt: LANG_LT,\n pl: LANG_PL,\n et: LANG_ET,\n hr: LANG_HR,\n sr: LANG_SR,\n sl: LANG_SL,\n hu: LANG_HU,\n ro: LANG_RO,\n zh: LANG_ZH,\n zh_tw: LANG_ZH_TW,\n vi: LANG_VI,\n // alternative language codes\n nb: LANG_NO\n };\n\n function createDiagnosticsBuffer(solverID, timeToSolved) {\n var arr = new Uint8Array(3);\n var view = new DataView(arr.buffer);\n view.setUint8(0, solverID);\n view.setUint16(1, timeToSolved);\n return arr;\n }\n\n var workerString = \"!function(){function A(A,r){return function(A){if(Array.isArray(A))return A}(A)||function(A,t){if(\\\"undefined\\\"!=typeof Symbol&&Symbol.iterator in Object(A)){var r=[],n=!0,e=!1,o=void 0;try{for(var i,g=A[Symbol.iterator]();!(n=(i=g.next()).done)&&(r.push(i.value),!t||r.length!==t);n=!0);}catch(I){e=!0,o=I}finally{try{n||null==g.return||g.return()}finally{if(e)throw o}}return r}}(A,r)||function(A,r){if(A){if(\\\"string\\\"==typeof A)return t(A,r);var n=Object.prototype.toString.call(A).slice(8,-1);return\\\"Object\\\"===n&&A.constructor&&(n=A.constructor.name),\\\"Map\\\"===n||\\\"Set\\\"===n?Array.from(A):\\\"Arguments\\\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?t(A,r):void 0}}(A,r)||function(){throw new TypeError(\\\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\\")}()}function t(A,t){(null==t||t>A.length)&&(t=A.length);for(var r=0,n=new Array(t);r>>31))+a+(((u=I)&c|(u|c)&~(I=u+c))>>>31)),E=(Q=(h=(Q=h^(l=l+(D=C=y^(u=I))+((w&(y=Q)|(w|y)&~(I=w+y))>>>31)))>>>24^(C=E^(w=I))<<8)^(l=l+(D=(Q=D^(s=(s=s+h+((u&(E=C>>>24^Q<<8)|(u|E)&~(I=u+E))>>>31))+f+(((u=I)&B|(u|B)&~(I=u+B))>>>31)))>>>16^(C=y^(u=I))<<16)+((w&(y=C>>>16^Q<<16)|(w|y)&~(I=w+y))>>>31)))>>>31^(C=E^(w=I))<<1,h=C>>>31^Q<<1,A[r]=u,A[r+1]=s,A[n]=E,A[n+1]=h,A[e]=w,A[e+1]=l,A[o]=y,A[o+1]=D}var I,C,Q=[4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225],c=[0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,28,20,8,16,18,30,26,12,2,24,0,4,22,14,10,6,22,16,24,0,10,4,30,26,20,28,6,12,14,2,18,8,14,18,6,2,26,24,22,28,4,12,10,20,8,0,30,16,18,0,10,14,4,8,20,30,28,2,22,24,12,16,6,26,4,24,12,20,0,22,16,6,8,26,14,10,30,28,2,18,24,10,2,30,28,26,8,20,0,14,12,6,18,4,16,22,26,22,14,28,24,2,6,18,10,0,30,8,16,12,4,20,12,30,28,18,22,6,0,16,24,4,26,14,2,8,20,10,20,4,16,8,14,12,2,10,30,22,18,28,6,24,26,0,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,28,20,8,16,18,30,26,12,2,24,0,4,22,14,10,6];function a(A,t){for(var r=A.v,n=A.m,e=0;e<16;e++)r[e]=A.h[e],r[e+16]=Q[e];r[24]=r[24]^A.t,r[25]=r[25]^A.t/4294967296,t&&(r[28]=~r[28],r[29]=~r[29]);for(var o=0;o<32;o++)n[o]=i(A.b,4*o);for(var I=0;I<12;I++)g(r,n,0,8,16,24,c[16*I+0],c[16*I+1]),g(r,n,2,10,18,26,c[16*I+2],c[16*I+3]),g(r,n,4,12,20,28,c[16*I+4],c[16*I+5]),g(r,n,6,14,22,30,c[16*I+6],c[16*I+7]),g(r,n,0,10,20,30,c[16*I+8],c[16*I+9]),g(r,n,2,12,22,24,c[16*I+10],c[16*I+11]),g(r,n,4,14,16,26,c[16*I+12],c[16*I+13]),g(r,n,6,8,18,28,c[16*I+14],c[16*I+15]);for(var C=0;C<16;C++)A.h[C]=A.h[C]^r[C]^r[C+16]}function B(A,t){for(var r=0;r<16;r++)A.h[r]=Q[r];A.b.set(t),A.h[0]^=16842752^A.outlen}function f(A,t,r){if(128!=A.length)throw Error(\\\"Invalid input\\\");var n=A.buffer,e=new DataView(n),i=new o(32);i.t=128;for(var g=e.getUint32(124,!0),I=g+r,C=g;C2&&void 0!==arguments[2]?arguments[2]:4294967295,n=f(A,t,r);return[A,n]}))}))}Uint8Array.prototype.slice||Object.defineProperty(Uint8Array.prototype,\\\"slice\\\",{value:function(A,t){return new Uint8Array(Array.prototype.slice.call(this,A,t))}}),self.ASC_TARGET=0;var s=new Promise((function(A){return C=A}));self.onerror=function(A){self.postMessage({type:\\\"error\\\",message:JSON.stringify(A)})},self.onmessage=function(t){return new Promise((function(e,o){var i;i=t.data;var g=function(){try{return e()}catch(A){return o(A)}},Q=function(A){try{return setTimeout((function(){throw A})),g()}catch(t){return o(t)}};try{var c=function(){return g()};if(\\\"solver\\\"!==i.type){var a,B,f,E,h=function(){return c.call(this)};return\\\"start\\\"===i.type?Promise.resolve(s).then(function(t){try{a=t,self.postMessage({type:\\\"started\\\"}),B=0;for(var r=0;r<256;r++){i.puzzleSolverInput[123]=r;var n=A(a(i.puzzleSolverInput,i.threshold),2),e=n[0];if(0!==n[1].length){f=e;break}console.warn(\\\"FC: Internal error or no solution found\\\"),B+=Math.pow(2,32)-1}return E=new DataView(f.slice(-4).buffer),B+=E.getUint32(0,!0),self.postMessage({type:\\\"done\\\",solution:f.slice(-8),h:B,puzzleIndex:i.puzzleIndex,puzzleNumber:i.puzzleNumber}),h.call(this)}catch(o){return Q(o)}}.bind(this),Q):h.call(this)}var w=function(){return self.postMessage({type:\\\"ready\\\",solver:I}),c.call(this)};if(i.forceJS)return I=1,Promise.resolve(u()).then(function(A){try{return C(A),w.call(this)}catch(t){return Q(t)}}.bind(this),Q);var l=function(){try{return w.call(this)}catch(A){return Q(A)}}.bind(this),y=function(A){try{return console.log(\\\"FriendlyCaptcha failed to initialize WebAssembly, falling back to Javascript solver: \\\"+A.toString()),I=1,Promise.resolve(u()).then((function(A){try{return C(A),l()}catch(t){return Q(t)}}),Q)}catch(t){return Q(t)}};try{var D;return I=2,D=WebAssembly.compile(function(A){var t=A.length,e=3*t>>>2;A.charCodeAt(t-1)===r&&e--,A.charCodeAt(t-2)===r&&e--;for(var o=new Uint8Array(e),i=0,g=0;i>4,o[g++]=(15&C)<<4|Q>>2,o[g++]=(3&Q)<<6|63&c}return o}(\\\"AGFzbQEAAAABKghgAABgAn9/AGADf39/AX9gAX8AYAR/f39/AGAAAX9gAX8Bf2ACf38BfwINAQNlbnYFYWJvcnQABAMMCwcGAwAAAQIFAQIABQMBAAEGFgR/AUEAC38BQQALfwBBAwt/AEHgDAsHbgkGbWVtb3J5AgAHX19hbGxvYwABCF9fcmV0YWluAAIJX19yZWxlYXNlAAMJX19jb2xsZWN0AAQHX19yZXNldAAFC19fcnR0aV9iYXNlAwMNVWludDhBcnJheV9JRAMCDHNvbHZlQmxha2UyYgAKCAELCvQSC5IBAQV/IABB8P///wNLBEAACyMBQRBqIgQgAEEPakFwcSICQRAgAkEQSxsiBmoiAj8AIgVBEHQiA0sEQCAFIAIgA2tB//8DakGAgHxxQRB2IgMgBSADShtAAEEASARAIANAAEEASARAAAsLCyACJAEgBEEQayICIAY2AgAgAkEBNgIEIAIgATYCCCACIAA2AgwgBAsEACAACwMAAQsDAAELBgAjACQBC7sCAQF/AkAgAUUNACAAQQA6AAAgACABakEEayICQQA6AAMgAUECTQ0AIABBADoAASAAQQA6AAIgAkEAOgACIAJBADoAASABQQZNDQAgAEEAOgADIAJBADoAACABQQhNDQAgAEEAIABrQQNxIgJqIgBBADYCACAAIAEgAmtBfHEiAmpBHGsiAUEANgIYIAJBCE0NACAAQQA2AgQgAEEANgIIIAFBADYCECABQQA2AhQgAkEYTQ0AIABBADYCDCAAQQA2AhAgAEEANgIUIABBADYCGCABQQA2AgAgAUEANgIEIAFBADYCCCABQQA2AgwgACAAQQRxQRhqIgFqIQAgAiABayEBA0AgAUEgTwRAIABCADcDACAAQgA3AwggAEIANwMQIABCADcDGCABQSBrIQEgAEEgaiEADAELCwsLcgACfyAARQRAQQxBAhABIQALIAALQQA2AgAgAEEANgIEIABBADYCCCABQfD///8DIAJ2SwRAQcAKQfAKQRJBORAAAAsgASACdCIBQQAQASICIAEQBiAAKAIAGiAAIAI2AgAgACACNgIEIAAgATYCCCAAC88BAQJ/QaABQQAQASIAQQxBAxABQYABQQAQBzYCACAAQQxBBBABQQhBAxAHNgIEIABCADcDCCAAQQA2AhAgAEIANwMYIABC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\\\")),Promise.resolve(D).then((function(A){try{return Promise.resolve(function(A){return new Promise((function(t,r){var n,e,o;return Promise.resolve(function(A){return new Promise((function(t,r){var n,e;return n={env:{abort:function(){throw Error(\\\"Wasm aborted\\\")}}},Promise.resolve(WebAssembly.instantiate(A,n)).then((function(A){try{return e=function(A){var t={},r=A.exports,n=r.memory,e=r.__alloc,o=r.__retain,i=r.__rtti_base||-1;return t.__allocArray=function(A,t){var r=function(A){return new Uint32Array(n.buffer)[(i+4>>>2)+2*A]}(A),g=31-Math.clz32(r>>>6&31),I=t.length,C=e(I<>>2]=o(C),c[Q+4>>>2]=C,c[Q+8>>>2]=I<>>g)+f]=o(t[f]);else B.set(t,C>>>g);return Q},t.__getUint8Array=function(A){var t=new Uint32Array(n.buffer),r=t[A+4>>>2];return new Uint8Array(n.buffer,r,t[r-4>>>2]>>>0)},function(A){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=A.__argumentsLength?function(t){A.__argumentsLength.value=t}:A.__setArgumentsLength||A.__setargc||function(){return{}},n=function(n){if(!Object.prototype.hasOwnProperty.call(A,n))return\\\"continue\\\";var e=A[n],o=n.split(\\\".\\\")[0];\\\"function\\\"==typeof e&&e!==r?(t[o]=function(){return r(arguments.length),e.apply(void 0,arguments)}).original=e:t[o]=e};for(var e in A)n(e);return t}(r,t)}(A),t({exports:e})}catch(n){return r(n)}}),r)}))}(A)).then((function(A){try{return e=(n=A).exports.__retain(n.exports.__allocArray(n.exports.Uint8Array_ID,new Uint8Array(128))),o=n.exports.__getUint8Array(e),t((function(A,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:4294967295;o.set(A);var i=n.exports.solveBlake2b(e,t,r);o=n.exports.__getUint8Array(e);var g=n.exports.__getUint8Array(i);return n.exports.__release(i),[o,g]}))}catch(i){return r(i)}}),r)}))}(A)).then((function(A){try{return C(A),l()}catch(t){return y(t)}}),y)}catch(t){return y(t)}}),y)}catch(v){y(v)}}catch(v){Q(v)}}))}}()}(\\\"undefined\\\"==typeof frcWorker?frcWorker={}:frcWorker);\"; // Defensive init to make it easier to integrate with Gatsby and friends.\n\n var URL;\n\n if (typeof window !== \"undefined\") {\n URL = window.URL || window.webkitURL;\n }\n\n var WorkerGroup = /*#__PURE__*/function () {\n function WorkerGroup() {\n _classCallCheck(this, WorkerGroup);\n\n this.workers = [];\n this.puzzleNumber = 0;\n this.numPuzzles = 0;\n this.threshold = 0;\n this.startTime = 0;\n this.progress = 0;\n this.totalHashes = 0;\n this.puzzleSolverInputs = []; // The index of the next puzzle\n\n this.puzzleIndex = 0;\n this.solutionBuffer = new Uint8Array(0); // initialize some value, so ts is happy\n\n this.solverType = 1;\n this.readyCount = 0;\n this.startCount = 0;\n\n this.progressCallback = function () {\n return 0;\n };\n\n this.readyCallback = function () {\n return 0;\n };\n\n this.startedCallback = function () {\n return 0;\n };\n\n this.doneCallback = function () {\n return 0;\n };\n\n this.errorCallback = function () {\n return 0;\n };\n }\n\n _createClass(WorkerGroup, [{\n key: \"init\",\n value: function init() {\n var _this = this;\n\n this.terminateWorkers();\n this.progress = 0;\n this.totalHashes = 0;\n this.readyCount = 0;\n this.startCount = 0; // Setup four workers for now - later we could calculate this depending on the device\n\n this.workers = new Array(4);\n var workerBlob = new Blob([workerString], {\n type: \"text/javascript\"\n });\n\n var _loop = function _loop(_i4) {\n _this.workers[_i4] = new Worker(URL.createObjectURL(workerBlob));\n\n _this.workers[_i4].onerror = function (e) {\n return _this.errorCallback(e);\n };\n\n _this.workers[_i4].onmessage = function (e) {\n var data = e.data;\n if (!data) return;\n\n if (data.type === \"ready\") {\n _this.readyCount++;\n _this.solverType = data.solver; // We are ready, when all workers are ready\n\n if (_this.readyCount == _this.workers.length) {\n _this.readyCallback();\n }\n } else if (data.type === \"started\") {\n _this.startCount++; // We started, when the first worker starts working\n\n if (_this.startCount == 1) {\n _this.startTime = Date.now();\n\n _this.startedCallback();\n }\n } else if (data.type === \"done\") {\n if (data.puzzleNumber !== _this.puzzleNumber) return; // solution belongs to a previous puzzle\n\n if (_this.puzzleIndex < _this.puzzleSolverInputs.length) {\n _this.workers[_i4].postMessage({\n type: \"start\",\n puzzleSolverInput: _this.puzzleSolverInputs[_this.puzzleIndex],\n threshold: _this.threshold,\n puzzleIndex: _this.puzzleIndex,\n puzzleNumber: _this.puzzleNumber\n });\n\n _this.puzzleIndex++;\n }\n\n _this.progress++;\n _this.totalHashes += data.h;\n\n _this.progressCallback({\n n: _this.numPuzzles,\n h: _this.totalHashes,\n t: (Date.now() - _this.startTime) / 1000,\n i: _this.progress\n });\n\n _this.solutionBuffer.set(data.solution, data.puzzleIndex * 8); // We are done, when all puzzles have been solved\n\n\n if (_this.progress == _this.numPuzzles) {\n var totalTime = (Date.now() - _this.startTime) / 1000;\n\n _this.doneCallback({\n solution: _this.solutionBuffer,\n h: _this.totalHashes,\n t: totalTime,\n diagnostics: createDiagnosticsBuffer(_this.solverType, totalTime),\n solver: _this.solverType\n });\n }\n } else if (data.type === \"error\") {\n _this.errorCallback(data);\n }\n };\n };\n\n for (var _i4 = 0; _i4 < this.workers.length; _i4++) {\n _loop(_i4);\n }\n }\n }, {\n key: \"setupSolver\",\n value: function setupSolver() {\n var forceJS = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var msg = {\n type: \"solver\",\n forceJS: forceJS\n };\n\n for (var _i5 = 0; _i5 < this.workers.length; _i5++) {\n this.workers[_i5].postMessage(msg);\n }\n }\n }, {\n key: \"start\",\n value: function start(puzzle) {\n this.puzzleSolverInputs = getPuzzleSolverInputs(puzzle.buffer, puzzle.n);\n this.solutionBuffer = new Uint8Array(8 * puzzle.n);\n this.numPuzzles = puzzle.n;\n this.threshold = puzzle.threshold;\n this.puzzleIndex = 0;\n this.puzzleNumber++;\n\n for (var _i6 = 0; _i6 < this.workers.length; _i6++) {\n if (this.puzzleIndex === this.puzzleSolverInputs.length) break;\n\n this.workers[_i6].postMessage({\n type: \"start\",\n puzzleSolverInput: this.puzzleSolverInputs[_i6],\n threshold: this.threshold,\n puzzleIndex: this.puzzleIndex,\n puzzleNumber: this.puzzleNumber\n });\n\n this.puzzleIndex++;\n }\n }\n }, {\n key: \"terminateWorkers\",\n value: function terminateWorkers() {\n if (this.workers.length == 0) return;\n\n for (var _i7 = 0; _i7 < this.workers.length; _i7++) {\n this.workers[_i7].terminate();\n }\n\n this.workers = [];\n }\n }]);\n\n return WorkerGroup;\n }();\n\n var PUZZLE_ENDPOINT_URL = \"https://api.friendlycaptcha.com/api/v1/puzzle\";\n\n var WidgetInstance = /*#__PURE__*/function () {\n function WidgetInstance(element) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, WidgetInstance);\n\n this.workerGroup = new WorkerGroup();\n /**\r\n * The captcha has been succesfully solved.\r\n */\n\n this.valid = false;\n /**\r\n * Some errors may cause a need for the (worker) to be reinitialized. If this is\r\n * true `init` will be called again when start is called.\r\n */\n\n this.needsReInit = false;\n /**\r\n * Start() has been called at least once ever.\r\n */\n\n this.hasBeenStarted = false;\n this.hasBeenDestroyed = false;\n this.opts = Object.assign({\n forceJSFallback: false,\n skipStyleInjection: false,\n startMode: \"focus\",\n puzzleEndpoint: element.dataset[\"puzzleEndpoint\"] || PUZZLE_ENDPOINT_URL,\n startedCallback: function startedCallback() {\n return 0;\n },\n readyCallback: function readyCallback() {\n return 0;\n },\n doneCallback: function doneCallback() {\n return 0;\n },\n errorCallback: function errorCallback() {\n return 0;\n },\n sitekey: element.dataset[\"sitekey\"] || \"\",\n language: element.dataset[\"lang\"] || \"en\",\n solutionFieldName: element.dataset[\"solutionFieldName\"] || \"frc-captcha-solution\"\n }, options);\n this.e = element;\n this.e.friendlyChallengeWidget = this;\n this.loadLanguage(); // @ts-ignore Ignore is required as TS thinks that `this.lang` is not assigned yet, but it happens in `this.loadLanguage()` above.\n\n element.innerText = this.lang.text_init;\n\n if (!this.opts.skipStyleInjection) {\n injectStyle();\n }\n\n this.init(this.opts.startMode === \"auto\" || this.e.dataset[\"start\"] === \"auto\");\n }\n\n _createClass(WidgetInstance, [{\n key: \"init\",\n value: function init(forceStart) {\n var _this2 = this;\n\n if (this.hasBeenDestroyed) {\n console.error(\"FriendlyCaptcha widget has been destroyed using destroy(), it can not be used anymore.\");\n return;\n }\n\n this.initWorkerGroup();\n\n if (forceStart) {\n this.start();\n } else if (this.e.dataset[\"start\"] !== \"none\" && (this.opts.startMode === \"focus\" || this.e.dataset[\"start\"] === \"focus\")) {\n var form = findParentFormElement(this.e);\n\n if (form) {\n executeOnceOnFocusInEvent(form, function () {\n return _this2.start();\n });\n } else {\n console.log(\"FriendlyCaptcha div seems not to be contained in a form, autostart will not work\");\n }\n }\n }\n /**\r\n * Loads the configured language, or a language passed to this function.\r\n * Note that only the next update will be in the new language, consider calling `reset()` after switching languages.\r\n */\n\n }, {\n key: \"loadLanguage\",\n value: function loadLanguage(lang) {\n if (lang !== undefined) {\n this.opts.language = lang;\n } else if (this.e.dataset[\"lang\"]) {\n this.opts.language = this.e.dataset[\"lang\"];\n }\n\n if (typeof this.opts.language === \"string\") {\n var l = localizations[this.opts.language.toLowerCase()];\n\n if (l === undefined) {\n console.error('FriendlyCaptcha: language \"' + this.opts.language + '\" not found.'); // Fall back to English\n\n l = localizations.en;\n }\n\n this.lang = l;\n } else {\n // We assign to a copy of the English language localization, so that any missing values will be English\n this.lang = Object.assign(Object.assign({}, localizations.en), this.opts.language);\n }\n }\n /**\r\n * Add a listener to the button that calls `this.start` on click.\r\n */\n\n }, {\n key: \"makeButtonStart\",\n value: function makeButtonStart() {\n var _this3 = this;\n\n var b = this.e.querySelector(\"button\");\n\n if (b) {\n b.addEventListener(\"click\", function (e) {\n return _this3.start();\n }, {\n once: true,\n passive: true\n });\n b.addEventListener(\"touchstart\", function (e) {\n return _this3.start();\n }, {\n once: true,\n passive: true\n });\n }\n }\n }, {\n key: \"onWorkerError\",\n value: function onWorkerError(e) {\n this.hasBeenStarted = false;\n this.needsReInit = true;\n if (this.expiryTimeout) clearTimeout(this.expiryTimeout);\n console.error(\"[FRC]\", e);\n this.e.innerHTML = getErrorHTML(this.opts.solutionFieldName, this.lang, \"Background worker error \" + e.message);\n this.makeButtonStart(); // Just out of precaution\n\n this.opts.forceJSFallback = true;\n }\n }, {\n key: \"initWorkerGroup\",\n value: function initWorkerGroup() {\n var _this4 = this;\n\n this.workerGroup.progressCallback = function (progress) {\n updateProgressBar(_this4.e, progress);\n };\n\n this.workerGroup.readyCallback = function () {\n _this4.e.innerHTML = getReadyHTML(_this4.opts.solutionFieldName, _this4.lang);\n\n _this4.makeButtonStart();\n\n _this4.opts.readyCallback();\n };\n\n this.workerGroup.startedCallback = function () {\n _this4.e.innerHTML = getRunningHTML(_this4.opts.solutionFieldName, _this4.lang);\n\n _this4.opts.startedCallback();\n };\n\n this.workerGroup.doneCallback = function (data) {\n var solutionPayload = _this4.handleDone(data);\n\n _this4.opts.doneCallback(solutionPayload);\n\n var callback = _this4.e.dataset[\"callback\"];\n\n if (callback) {\n window[callback](solutionPayload);\n }\n };\n\n this.workerGroup.errorCallback = function (e) {\n _this4.onWorkerError(e);\n };\n\n this.workerGroup.init();\n this.workerGroup.setupSolver(this.opts.forceJSFallback);\n }\n }, {\n key: \"expire\",\n value: function expire() {\n this.hasBeenStarted = false; // Node.isConnected will be undefined in older browsers\n\n if (this.e.isConnected !== false) {\n this.e.innerHTML = getExpiredHTML(this.opts.solutionFieldName, this.lang);\n this.makeButtonStart();\n }\n }\n }, {\n key: \"start\",\n value: function start() {\n return new Promise(function ($return, $error) {\n var sitekey;\n\n if (this.hasBeenDestroyed) {\n console.error(\"Can not start FriendlyCaptcha widget which has been destroyed\");\n return $return();\n }\n\n if (this.hasBeenStarted) {\n console.warn(\"Can not start FriendlyCaptcha widget which has already been started\");\n return $return();\n }\n\n sitekey = this.opts.sitekey || this.e.dataset[\"sitekey\"];\n\n if (!sitekey) {\n console.error(\"FriendlyCaptcha: sitekey not set on frc-captcha element\");\n this.e.innerHTML = getErrorHTML(this.opts.solutionFieldName, this.lang, \"Website problem: sitekey not set\", false);\n return $return();\n }\n\n if (isHeadless()) {\n this.e.innerHTML = getErrorHTML(this.opts.solutionFieldName, this.lang, \"Browser check failed, try a different browser\", false, true);\n return $return();\n }\n\n if (this.needsReInit) {\n this.needsReInit = false;\n this.init(true);\n return $return();\n }\n\n this.hasBeenStarted = true;\n\n var $Try_3_Post = function () {\n try {\n this.workerGroup.start(this.puzzle);\n return $return();\n } catch ($boundEx) {\n return $error($boundEx);\n }\n }.bind(this);\n\n var $Try_3_Catch = function (e) {\n try {\n {\n console.error(\"[FRC]\", e);\n this.hasBeenStarted = false;\n if (this.expiryTimeout) clearTimeout(this.expiryTimeout);\n this.e.innerHTML = getErrorHTML(this.opts.solutionFieldName, this.lang, e.message);\n this.makeButtonStart();\n var code;\n code = \"error_getting_puzzle\";\n this.opts.errorCallback({\n code: code,\n description: e.toString(),\n error: e\n });\n var callback;\n callback = this.e.dataset[\"callback-error\"];\n\n if (callback) {\n window[callback](this);\n }\n\n return $return();\n }\n } catch ($boundEx) {\n return $error($boundEx);\n }\n }.bind(this);\n\n try {\n this.e.innerHTML = getFetchingHTML(this.opts.solutionFieldName, this.lang);\n return Promise.resolve(getPuzzle(this.opts.puzzleEndpoint, sitekey, this.lang)).then(function ($await_11) {\n var _this5 = this;\n\n try {\n this.puzzle = decodeBase64Puzzle($await_11);\n if (this.expiryTimeout) clearTimeout(this.expiryTimeout);\n this.expiryTimeout = setTimeout(function () {\n return _this5.expire();\n }, this.puzzle.expiry - 30000); // 30s grace\n\n return $Try_3_Post();\n } catch ($boundEx) {\n return $Try_3_Catch($boundEx);\n }\n }.bind(this), $Try_3_Catch);\n } catch (e) {\n $Try_3_Catch(e);\n }\n }.bind(this));\n }\n /**\r\n * This is to be called when the puzzle has been succesfully completed.\r\n * Here the hidden field gets updated with the solution.\r\n * @param data message from the webworker\r\n */\n\n }, {\n key: \"handleDone\",\n value: function handleDone(data) {\n this.valid = true;\n var puzzleSolutionMessage = \"\".concat(this.puzzle.signature, \".\").concat(this.puzzle.base64, \".\").concat(encode(data.solution), \".\").concat(encode(data.diagnostics));\n this.e.innerHTML = getDoneHTML(this.opts.solutionFieldName, this.lang, puzzleSolutionMessage, data); // this.worker = null; // This literally crashes very old browsers..\n\n this.needsReInit = true;\n return puzzleSolutionMessage;\n }\n /**\r\n * Cleans up the widget entirely, removing any DOM elements and terminating any background workers.\r\n * After it is destroyed it can no longer be used for any purpose.\r\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.workerGroup.terminateWorkers();\n this.needsReInit = false;\n this.hasBeenStarted = false;\n if (this.expiryTimeout) clearTimeout(this.expiryTimeout);\n\n if (this.e) {\n this.e.remove(); // eslint-disable-next-line @typescript-eslint/ban-ts-ignore\n // @ts-ignore\n\n delete this.e;\n }\n\n this.hasBeenDestroyed = true;\n }\n /**\r\n * Resets the widget to the initial state.\r\n * This is useful in situations where the page does not refresh when you submit and the form may be re-submitted again\r\n */\n\n }, {\n key: \"reset\",\n value: function reset() {\n if (this.hasBeenDestroyed) {\n console.error(\"FriendlyCaptcha widget has been destroyed, it can not be used anymore\");\n return;\n }\n\n this.workerGroup.terminateWorkers();\n this.needsReInit = false;\n this.hasBeenStarted = false;\n if (this.expiryTimeout) clearTimeout(this.expiryTimeout);\n this.init(this.opts.startMode === \"auto\" || this.e.dataset[\"start\"] === \"auto\");\n }\n }]);\n\n return WidgetInstance;\n }();\n\n window.friendlyChallenge = {\n WidgetInstance: WidgetInstance\n };\n\n function setup() {\n var autoWidget = window.friendlyChallenge.autoWidget;\n var elements = findCaptchaElements();\n\n for (var index = 0; index < elements.length; index++) {\n var hElement = elements[index];\n\n if (hElement && !hElement.dataset[\"attached\"]) {\n autoWidget = new WidgetInstance(hElement); // We set the \"data-attached\" attribute so we don't attach to the same element twice.\n\n hElement.dataset[\"attached\"] = \"1\";\n }\n }\n\n window.friendlyChallenge.autoWidget = autoWidget;\n }\n\n if (document.readyState !== \"loading\") {\n setup();\n } else {\n document.addEventListener(\"DOMContentLoaded\", setup);\n }\n})();\n","// import React from 'react';\r\n// import ReactDOM from 'react-dom';\r\n// import './index.scss';\r\nimport './js/main';\r\n\r\n// import App from './App';\r\n\r\nimport reportWebVitals from './reportWebVitals';\r\n\r\nimport \"friendly-challenge/widget\";\r\n \r\n// ReactDOM.render(\r\n// \r\n\r\n// ,\r\n// document.getElementById('root')\r\n// );\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n","var e,t,n,i,r=function(e,t){return{name:e,value:void 0===t?-1:t,delta:0,entries:[],id:\"v2-\".concat(Date.now(),\"-\").concat(Math.floor(8999999999999*Math.random())+1e12)}},a=function(e,t){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){if(\"first-input\"===e&&!(\"PerformanceEventTiming\"in self))return;var n=new PerformanceObserver((function(e){return e.getEntries().map(t)}));return n.observe({type:e,buffered:!0}),n}}catch(e){}},o=function(e,t){var n=function n(i){\"pagehide\"!==i.type&&\"hidden\"!==document.visibilityState||(e(i),t&&(removeEventListener(\"visibilitychange\",n,!0),removeEventListener(\"pagehide\",n,!0)))};addEventListener(\"visibilitychange\",n,!0),addEventListener(\"pagehide\",n,!0)},u=function(e){addEventListener(\"pageshow\",(function(t){t.persisted&&e(t)}),!0)},c=function(e,t,n){var i;return function(r){t.value>=0&&(r||n)&&(t.delta=t.value-(i||0),(t.delta||void 0===i)&&(i=t.value,e(t)))}},f=-1,s=function(){return\"hidden\"===document.visibilityState?0:1/0},m=function(){o((function(e){var t=e.timeStamp;f=t}),!0)},v=function(){return f<0&&(f=s(),m(),u((function(){setTimeout((function(){f=s(),m()}),0)}))),{get firstHiddenTime(){return f}}},d=function(e,t){var n,i=v(),o=r(\"FCP\"),f=function(e){\"first-contentful-paint\"===e.name&&(m&&m.disconnect(),e.startTime-1&&e(t)},f=r(\"CLS\",0),s=0,m=[],v=function(e){if(!e.hadRecentInput){var t=m[0],i=m[m.length-1];s&&e.startTime-i.startTime<1e3&&e.startTime-t.startTime<5e3?(s+=e.value,m.push(e)):(s=e.value,m=[e]),s>f.value&&(f.value=s,f.entries=m,n())}},h=a(\"layout-shift\",v);h&&(n=c(i,f,t),o((function(){h.takeRecords().map(v),n(!0)})),u((function(){s=0,l=-1,f=r(\"CLS\",0),n=c(i,f,t)})))},T={passive:!0,capture:!0},y=new Date,g=function(i,r){e||(e=r,t=i,n=new Date,w(removeEventListener),E())},E=function(){if(t>=0&&t1e12?new Date:performance.now())-e.timeStamp;\"pointerdown\"==e.type?function(e,t){var n=function(){g(e,t),r()},i=function(){r()},r=function(){removeEventListener(\"pointerup\",n,T),removeEventListener(\"pointercancel\",i,T)};addEventListener(\"pointerup\",n,T),addEventListener(\"pointercancel\",i,T)}(t,e):g(t,e)}},w=function(e){[\"mousedown\",\"keydown\",\"touchstart\",\"pointerdown\"].forEach((function(t){return e(t,S,T)}))},L=function(n,f){var s,m=v(),d=r(\"FID\"),p=function(e){e.startTimeperformance.now())return;n.entries=[t],e(n)}catch(e){}},\"complete\"===document.readyState?setTimeout(t,0):addEventListener(\"load\",(function(){return setTimeout(t,0)}))};export{h as getCLS,d as getFCP,L as getFID,F as getLCP,P as getTTFB};\n"],"names":["dom","selector","Module","params","els","instances","el","delay","bounding","keys","bounds","result","k","Toggle","toggleClass","isObject","obj","extend","target","src","key","ssrDocument","getDocument","doc","ssrWindow","callback","id","getWindow","win","makeReactive","proto","value","Dom7","items","arrayFlat","arr","res","arrayFilter","arrayUnique","uniqueArray","i","qsa","context","a","$","window","document","html","toCreate","tempParent","addClass","classes","classNames","c","removeClass","className","hasClass","attr","attrs","attrName","removeAttr","transform","transition","duration","on","args","eventType","targetSelector","listener","capture","handleLiveEvent","e","eventData","parents","handleEvent","events","j","event","off","handlers","handler","trigger","evt","data","dataIndex","transitionEnd","fireCallBack","outerWidth","includeMargins","styles","outerHeight","offset","box","body","clientTop","clientLeft","scrollTop","scrollLeft","css","props","prop","each","index","filter","text","is","compareWith","child","eq","length","returnIndex","append","newChild","tempDiv","prepend","next","nextAll","nextEls","prev","prevAll","prevEls","parent","closest","find","foundElements","found","children","childNodes","remove","Methods","methodName","deleteProps","object","nextTick","now","getComputedStyle","style","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","o","isNode","node","to","noExtend","nextSource","keysArray","nextIndex","len","nextKey","desc","setCSSProperty","varName","varValue","animateCSSModeScroll","swiper","targetPosition","side","startPosition","startTime","time","dir","isOutOfBound","current","animate","progress","easeProgress","currentPosition","support","calcSupport","supportsPassive","opts","getSupport","deviceCached","calcDevice","userAgent","platform","ua","device","screenWidth","screenHeight","android","ipad","ipod","iphone","windows","macos","iPadScreens","getDevice","overrides","browser","calcBrowser","isSafari","getBrowser","Resize","emit","observer","animationFrame","resizeHandler","createObserver","entries","width","height","newWidth","newHeight","contentBoxSize","contentRect","removeObserver","orientationChangeHandler","Observer","extendParams","observers","attach","options","ObserverFunc","mutations","observerUpdate","init","containerParents","destroy","eventsEmitter","priority","self","method","onceHandler","eventHandler","updateSize","$el","updateSlides","getDirectionLabel","property","getDirectionPropertyValue","label","$wrapperEl","swiperSize","rtl","wrongRTL","isVirtual","previousSlidesLength","slides","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","offsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","gridEnabled","slideSize","shouldResetSlideSize","slide","slideStyles","currentTransform","currentWebKitTransform","paddingLeft","paddingRight","marginLeft","marginRight","boxSizing","clientWidth","offsetWidth","newSlidesGrid","slidesGridItem","_","slideIndex","allSlidesSize","slideSizeValue","maxSnap","snap","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","backFaceHiddenClass","hasClassBackfaceClassAdded","updateAutoHeight","speed","activeSlides","getSlideByIndex","updateSlidesOffset","updateSlidesProgress","translate","offsetCenter","slideOffset","slideProgress","originalSlideProgress","slideBefore","slideAfter","updateProgress","multiplier","translatesDiff","isBeginning","isEnd","wasBeginning","wasEnd","updateSlidesClasses","activeIndex","realIndex","activeSlide","nextSlide","prevSlide","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","skip","updateClickedSlide","slideFound","update","getSwiperTranslate","currentTranslate","setTranslate","byController","wrapperEl","x","y","z","newProgress","minTranslate","maxTranslate","translateTo","runCallbacks","translateBounds","internal","newTranslate","isH","setTransition","transitionEmit","direction","step","transitionStart","slideTo","initial","indexAsNumber","enabled","normalizedTranslate","normalizedGrid","normalizedGridNext","t","slideToLoop","newIndex","slideNext","animating","perGroup","increment","slidePrev","rtlTranslate","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","nextSnap","slideToClickedSlide","slidesPerView","slideToIndex","loopCreate","$selector","blankSlidesNum","blankNode","prependSlides","appendSlides","loopFix","loopedSlides","allowSlidePrev","allowSlideNext","diff","loopDestroy","loop","setGrabCursor","moving","unsetGrabCursor","grabCursor","closestElement","base","__closestFrom","onTouchStart","touches","$targetEl","swipingClassHasValue","eventPath","noSwipingSelector","isTargetShadow","startX","startY","edgeSwipeDetection","edgeSwipeThreshold","preventDefault","shouldPreventDefault","onTouchMove","targetTouch","pageX","pageY","diffX","diffY","__pow","touchAngle","disableParentSwiper","resistanceRatio","onTouchEnd","touchEndTime","timeDiff","pathTree","currentPos","stopIndex","groupSize","rewindFirstIndex","rewindLastIndex","ratio","onResize","onClick","onScroll","dummyEventAttached","dummyEventListener","touchEvents","domMethod","swiperMethod","passiveListener","attachEvents","detachEvents","events$1","isGridEnabled","setBreakpoint","initialized","breakpoints","breakpoint","breakpointParams","wasMultiRow","isMultiRow","wasEnabled","wasModuleEnabled","isModuleEnabled","directionChanged","needsReLoop","isEnabled","getBreakpoint","containerEl","currentHeight","points","point","minRatio","b","prepareClasses","prefix","resultClasses","item","addClasses","suffixes","removeClasses","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","preloadImages","images","checkOverflow","wasLocked","slidesOffsetBefore","lastSlideIndex","lastSlideRightEdge","checkOverflow$1","defaults","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","prototypes","extendedDefaults","Swiper","swipers","newParams","mod","swiperParams","eventName","touch","desktop","min","cls","slideEl","updates","view","exact","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","getWrapperSelector","wrapper","deleteInstance","cleanStyles","newDefaults","modules","module","m","prototypeGroup","protoMethod","Accordion","SiteHeader","markup","cl","eventString","parentSelector","delegateSelector","dS","binding","ev","bindingKey","old","_a","subNav","openSub","menu","hasRootParent","closeSub","nextEl","nextMenu","nextHorizontalEl","columns","prevEl","prevMenu","prevHorizontalEl","parentEl","elsWithClass","cont","isEscape","isTab","visibleNavs","nav","dontScrollThese","contSelector","_b","_c","_d","Cost","select","selectvalue","rows","row","targetgroup","OpeningHours","tables","table","accommodation","Map","google","infowindow","locations","lat","long","mapElement","map","marker","icon","contentString","locationsString","Countdown","n","current_date","days","hours","minutes","seconds","seconds_left","ContactOverview","sections","navItems","sec","navItem","FilterDropdown","isClickInside","search","error","counter","message","Gallery","isFullscreen","clickedItemIndex","_e","_f","_g","_h","CookieRow","cookieValue","cname","name","decodedCookie","ca","cookie","HeaderMobile","section","scrollheight","sub","sibling","subnav","elem","CampaignOverview","contentMobile","card","input","contentDesktop","NewsOverview","NewsDetail","popup","SearchSportsCamps","CookieBanner","cookies","Search","Floorplan","pins","pin","accordions","accordion","ui","zoomPlusButton","zoomMinusButton","draggableElement","panels","panelToToggle","defaultPanel","panel","accordionItems","aI","link","accordiontoActivate","scrollableParentElement","activePin","element","delta","positionInfo","RoutePlanner","nIntervId","sliderDropdownState","sliderParent","slider","__publicField","parentDiv","parser","htmlstring2","doc2","element2","labelDiv","c_input_field","test","toDelete","elements","btn","parent2","head","dropDownParent","printDropdown","printDropdownContent","downloadDropdown","downloadDropdownContent","fromLabel","toLabel","startIcon","endIcon","myLocationButtons","AToB","headerText","downloadTab","RouteDetail","ContactBlock","contactTiles","contactTile","btnsClose","btnClose","contactform","contactformContainer","ClickablePos","DownloadLink","fileUrl","fileName","response","blob","url","FilterTable","cols","col","colInFirstRow","headers","selectedValues","header","columnValues","td","defaultOption","option","container","foundItems","shouldDisplay","columnIndex","th","cellValue","noItemsRow","tbody","cell","centraFilterButton","CheckboxParam","SelectParam","param","initToggleCentraDisplay","fiches","isChecked","centraFilterCheckbox","centraFilterDropdown","reportWebVitals","onPerfEntry","__vitePreload","webVitals","getCLS","getFID","getFCP","getLCP","getTTFB","_classCallCheck","instance","Constructor","_defineProperties","descriptor","_createClass","protoProps","staticProps","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","minLen","_arrayLikeToArray","arr2","_arr","_n","_i","_s","err","SOLVER_TYPE_JS","CHALLENGE_SIZE_BYTES","loaderSVG","errorSVG","getTemplate","fieldName","svgContent","svgAriaHidden","textContent","solutionString","buttonText","debugData","additionalContainerClasses","getReadyHTML","l","getFetchingHTML","getRunningHTML","getDoneHTML","solution","timeData","getExpiredHTML","getErrorHTML","errorDescription","recoverable","headless","findCaptchaElements","injectStyle","styleSheet","updateProgressBar","p","perc","findParentFormElement","executeOnceOnFocusInEvent","CHARS","EQ_CHAR","lookup","encode","bytes","base64","b0","b1","b2","decode","bufferLength","_i2","encoded1","encoded2","encoded3","encoded4","isHeadless","difficultyToThreshold","PUZZLE_EXPIRY_OFFSET","NUMBER_OF_PUZZLES_OFFSET","PUZZLE_DIFFICULTY_OFFSET","getPuzzleSolverInputs","puzzleBuffer","numPuzzles","startingPoints","_i3","decodeBase64Puzzle","base64Puzzle","parts","puzzle","getPuzzle","urlsSeparatedByComma","siteKey","lang","$return","$error","urls","$Loop_4_trampoline","$Loop_4_local","$Loop_4_step","_$Loop_4_local","_$Loop_4_local2","$Loop_4","$Try_1_Post","$boundEx","$Try_1_Catch","fetchAndRetryWithBackoff","$await_7","$If_6","json","$await_8","_json","$Try_2_Post","$Try_2_Catch","$await_9","q","$Loop_4_exit","_exception","r","$await_10","LANG_EN","LANG_FR","LANG_DE","LANG_NL","LANG_IT","LANG_PT","LANG_ES","LANG_CA","LANG_JA","LANG_DA","LANG_RU","LANG_SV","LANG_TR","LANG_EL","LANG_UK","LANG_BG","LANG_CS","LANG_SK","LANG_NO","LANG_FI","LANG_LV","LANG_LT","LANG_PL","LANG_ET","LANG_HR","LANG_SR","LANG_SL","LANG_HU","LANG_RO","LANG_ZH","LANG_ZH_TW","LANG_VI","localizations","createDiagnosticsBuffer","solverID","timeToSolved","workerString","URL","WorkerGroup","_this","workerBlob","_loop","_i4","totalTime","forceJS","msg","_i5","_i6","_i7","PUZZLE_ENDPOINT_URL","WidgetInstance","forceStart","_this2","form","_this3","_this4","solutionPayload","sitekey","$Try_3_Post","$Try_3_Catch","code","$await_11","_this5","puzzleSolutionMessage","setup","autoWidget","hElement","u","f","s","d","h","T","g","w","E","S","L","F","P"],"mappings":"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","x_google_ignoreList":[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,99,101]}