{"version":3,"file":"bundle.js","sources":["../../Private/Javascripts/utils/index.ts","../../Private/Javascripts/utils/show-media-query-dev.ts","../../Private/Javascripts/utils/on-window-resize.ts","../../../../../node_modules/accessible-menu/src/validate.js","../../../../../node_modules/accessible-menu/src/_baseMenuToggle.js","../../../../../node_modules/accessible-menu/src/_baseMenuItem.js","../../../../../node_modules/accessible-menu/src/eventHandlers.js","../../../../../node_modules/accessible-menu/src/_baseMenu.js","../../../../../node_modules/accessible-menu/src/disclosureMenuItem.js","../../../../../node_modules/accessible-menu/src/disclosureMenuToggle.js","../../../../../node_modules/accessible-menu/src/disclosureMenu.js","../../../../../node_modules/accessible-menu/src/menubarItem.js","../../../../../node_modules/accessible-menu/src/menubarToggle.js","../../../../../node_modules/accessible-menu/src/menubar.js","../../../../../node_modules/accessible-menu/src/treeviewItem.js","../../../../../node_modules/accessible-menu/src/treeviewToggle.js","../../../../../node_modules/accessible-menu/src/treeview.js","../../../../../node_modules/accessible-menu/index.js","../../Private/Javascripts/components/accessible-menu.ts","../../Private/Javascripts/components/header-searchbar.ts","../../Private/Javascripts/components/replace-search-placeholder.ts","../../Private/Javascripts/components/footer-mobile-menu.ts","../../Private/Javascripts/components/get-in-touch-socials.ts","../../Private/Javascripts/components/comparator-table.ts","../../Private/Javascripts/components/comparator-view-switch.ts","../../Private/Javascripts/components/language-select.ts","../../../../../node_modules/swiper/shared/ssr-window.esm.mjs","../../../../../node_modules/swiper/shared/utils.mjs","../../../../../node_modules/swiper/shared/swiper-core.mjs","../../../../../node_modules/swiper/modules/navigation.mjs","../../../../../node_modules/swiper/shared/create-element-if-not-defined.mjs","../../../../../node_modules/swiper/modules/thumbs.mjs","../../Private/Javascripts/components/pump-page.ts","../../../../../node_modules/@googlemaps/js-api-loader/dist/index.esm.js","../../../../../node_modules/fast-deep-equal/index.js","../../../../../node_modules/kdbush/src/sort.js","../../../../../node_modules/kdbush/src/within.js","../../../../../node_modules/kdbush/src/index.js","../../../../../node_modules/kdbush/src/range.js","../../../../../node_modules/supercluster/index.js","../../Private/Javascripts/components/filtered-map.ts","../../Private/Javascripts/components/scroll-nav.ts","../../Private/Javascripts/components/request-consult-button.ts","../../Private/Javascripts/main.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\nexport const addClass = (el: HTMLElement, className: string) => {\n el.classList.add(className);\n};\n\nexport const removeClass = (el: HTMLElement, className: string) => {\n el.classList.remove(className);\n};\n\nexport const hasClass = (el: HTMLElement, className: string) => {\n return el.classList.contains(className);\n};\n\nexport const toggleClass = (el: HTMLElement, className: string) => {\n return el.classList.toggle(className);\n};\n","// Title: show-media-query-dev.ts\n//\n// Author: Jacco van der Post \n//\n// Date: 16-03-2022\n//\n\nimport { hasClass } from \"../utils\";\n\n/**\n * Show media queries on TYPO3 development context\n */\nexport class ShowMediaQueryDev {\n constructor() {\n if (hasClass(document.body, \"development\")) {\n enum mediaQueries {\n sm = 640,\n md = 768,\n lg = 1024,\n xl = 1280,\n xxl = 1440,\n }\n\n let divScreensizes = document.querySelectorAll(\".screensize-dev\");\n\n divScreensizes.forEach((divScreensize) => {\n divScreensize.remove();\n });\n\n const element = document.querySelector(\n \"body > header > .container\"\n );\n if (!element) {\n return;\n }\n const containerWidth = element.clientWidth;\n\n let mediaQuery = \"<= max639\";\n\n if (containerWidth >= mediaQueries[\"sm\"]) {\n mediaQuery = \">= sm\";\n }\n\n if (containerWidth >= mediaQueries[\"md\"]) {\n mediaQuery = \">= md\";\n }\n\n if (containerWidth >= mediaQueries[\"lg\"]) {\n mediaQuery = \">= lg\";\n }\n\n if (containerWidth >= mediaQueries[\"xl\"]) {\n mediaQuery = \">= xl\";\n }\n\n if (containerWidth >= mediaQueries[\"xxl\"]) {\n mediaQuery = \">= 2xl\";\n }\n\n document\n .querySelector(\"body\")\n .insertAdjacentHTML(\n \"afterbegin\",\n '

Container width: ' +\n containerWidth +\n \" \" +\n mediaQuery +\n \"

\"\n );\n\n divScreensizes = document.querySelectorAll(\".screensize-dev\");\n\n setTimeout(function () {\n divScreensizes.forEach((divScreensize) => {\n divScreensize.remove();\n });\n }, 4000);\n }\n }\n}\n","// Title: on-window-resize.ts\n//\n// Author: Jacco van der Post \n//\n// Date: 16-03-2022\n//\n\nimport { ShowMediaQueryDev } from \"./show-media-query-dev\";\n\n/**\n * Do stuf when the viewport gets resized\n */\nexport class OnWindowResize {\n constructor() {\n window.onresize = OnWindowResize.doStuf;\n }\n\n /**\n * Show media query on resizing of viewport\n *\n * @private\n *\n * @return void\n */\n private static doStuf(): void {\n new ShowMediaQueryDev();\n }\n}\n","/**\n * Check to see if the provided elements have a specific contructor.\n *\n * The values must be provided inside of an object\n * so the variable name can be retrieved in case of errors.\n *\n * This is essentially just a wrapper function around checking instanceof with\n * more descriptive error message to help debugging.\n *\n * Will return true is the check is successful.\n *\n * @param {object} contructor - The constructor to check for.\n * @param {object} elements - The element(s) to check.\n * @return {boolean} - The result of the check.\n */\nexport function isValidInstance(contructor, elements) {\n try {\n if (typeof elements !== \"object\") {\n const elementsType = typeof elements;\n\n throw new TypeError(\n `AccessibleMenu: Elements given to isValidInstance() must be inside of an object. ${elementsType} given.`\n );\n }\n\n for (const key in elements) {\n if (!(elements[key] instanceof contructor)) {\n const elementType = typeof elements[key];\n throw new TypeError(\n `AccessibleMenu: ${key} must be an instance of ${contructor.name}. ${elementType} given.`\n );\n }\n }\n\n return true;\n } catch (error) {\n console.error(error);\n return false;\n }\n}\n\n/**\n * Check to see if the provided values are of a specific type.\n *\n * The values must be provided inside of an object\n * so the variable name can be retrieved in case of errors.\n *\n * This is essentially just a wrapper function around checking typeof with\n * more descriptive error message to help debugging.\n *\n * Will return true is the check is successful.\n *\n * @param {string} type - The type to check for.\n * @param {object} values - The value(s) to check.\n * @return {boolean} - The result of the check.\n */\nexport function isValidType(type, values) {\n try {\n if (typeof values !== \"object\") {\n const valuesType = typeof values;\n\n throw new TypeError(\n `AccessibleMenu: Values given to isValidType() must be inside of an object. ${valuesType} given.`\n );\n }\n\n for (const key in values) {\n const valueType = typeof values[key];\n\n if (valueType !== type) {\n throw new TypeError(\n `AccessibleMenu: ${key} must be a ${type}. ${valueType} given.`\n );\n }\n }\n\n return true;\n } catch (error) {\n console.error(error);\n return false;\n }\n}\n\n/**\n * Checks to see if the provided values are valid CSS selectors.\n *\n * The values must be provided inside of an object\n * so the variable name can be retrieved in case of errors.\n *\n * Will return true is the check is successful.\n *\n * @param {object.} values - The value(s) to check.\n * @return {boolean} - The result of the check.\n */\nexport function isCSSSelector(values) {\n try {\n if (typeof values !== \"object\") {\n const type = typeof values;\n\n throw new TypeError(\n `AccessibleMenu: Values given to isCSSSelector() must be inside of an object. ${type} given.`\n );\n }\n\n for (const key in values) {\n try {\n if (values[key] === null) {\n throw new Error();\n }\n\n document.querySelector(values[key]);\n } catch (error) {\n throw new TypeError(\n `AccessibleMenu: ${key} must be a valid CSS selector. \"${values[key]}\" given.`\n );\n }\n }\n\n return true;\n } catch (error) {\n console.error(error);\n return false;\n }\n}\n\n/**\n * Checks to see if the provided value is either a string or an array of strings.\n *\n * The values must be provided inside of an object\n * so the variable name can be retrieved in case of errors.\n *\n * Will return true is the check is successful.\n *\n * @param {object.} values - The value(s) to check.\n * @return {boolean} - The result of the check.\n */\nexport function isValidClassList(values) {\n try {\n if (typeof values !== \"object\" || Array.isArray(values)) {\n const type = typeof values;\n\n throw new TypeError(\n `AccessibleMenu: Values given to isValidClassList() must be inside of an object. ${type} given.`\n );\n }\n\n for (const key in values) {\n const type = typeof values[key];\n\n if (type !== \"string\") {\n if (Array.isArray(values[key])) {\n values[key].forEach((value) => {\n if (typeof value !== \"string\") {\n throw new TypeError(\n `AccessibleMenu: ${key} must be a string or an array of strings. An array containing non-strings given.`\n );\n }\n });\n } else {\n throw new TypeError(\n `AccessibleMenu: ${key} must be a string or an array of strings. ${type} given.`\n );\n }\n } else {\n const obj = {};\n obj[key] = values[key];\n\n isCSSSelector(obj);\n }\n }\n\n return true;\n } catch (error) {\n console.error(error);\n return false;\n }\n}\n\n/**\n * Check to see if the provided values are valid focus states for a menu.\n *\n * The values must be provided inside of an object\n * so the variable name can be retrieved in case of errors.\n *\n * Will return true is the check is successful.\n *\n * @param {object.} values - The value(s) to check.\n * @return {boolean} - The result of the check.\n */\nexport function isValidState(values) {\n try {\n if (typeof values !== \"object\") {\n const type = typeof values;\n\n throw new TypeError(\n `AccessibleMenu: Values given to isValidState() must be inside of an object. ${type} given.`\n );\n }\n\n const validStates = [\"none\", \"self\", \"child\"];\n\n for (const key in values) {\n if (!validStates.includes(values[key])) {\n throw new TypeError(\n `AccessibleMenu: ${key} must be one of the following values: ${validStates.join(\n \", \"\n )}. \"${values[key]}\" given.`\n );\n }\n }\n\n return true;\n } catch (error) {\n console.error(error);\n return false;\n }\n}\n\n/**\n * Check to see if the provided values are valid event types for a menu.\n *\n * The values must be provided inside of an object\n * so the variable name can be retrieved in case of errors.\n *\n * Will return true is the check is successful.\n *\n * @param {object.} values - The value(s) to check.\n * @return {boolean} - The result of the check.\n */\nexport function isValidEvent(values) {\n try {\n if (typeof values !== \"object\") {\n const type = typeof values;\n\n throw new TypeError(\n `AccessibleMenu: Values given to isValidEvent() must be inside of an object. ${type} given.`\n );\n }\n\n const validEvents = [\"none\", \"mouse\", \"keyboard\", \"character\"];\n\n for (const key in values) {\n if (!validEvents.includes(values[key])) {\n throw new TypeError(\n `AccessibleMenu: ${key} must be one of the following values: ${validEvents.join(\n \", \"\n )}. \"${values[key]}\" given.`\n );\n }\n }\n\n return true;\n } catch (error) {\n console.error(error);\n return false;\n }\n}\n\n/**\n * Check to see if the provided values are valid hover types for a menu.\n *\n * The values must be provided inside of an object\n * so the variable name can be retrieved in case of errors.\n *\n * Will return true is the check is successful.\n *\n * @param {object.} values - The value(s) to check.\n * @return {boolean} - The result of the check.\n */\nexport function isValidHoverType(values) {\n try {\n if (typeof values !== \"object\") {\n const type = typeof values;\n\n throw new TypeError(\n `AccessibleMenu: Values given to isValidHoverType() must be inside of an object. ${type} given.`\n );\n }\n\n const validTypes = [\"off\", \"on\", \"dynamic\"];\n\n for (const key in values) {\n if (!validTypes.includes(values[key])) {\n throw new TypeError(\n `AccessibleMenu: ${key} must be one of the following values: ${validTypes.join(\n \", \"\n )}. \"${values[key]}\" given.`\n );\n }\n }\n\n return true;\n } catch (error) {\n console.error(error);\n return false;\n }\n}\n\n/**\n * Checks to see if the provided elements are using a specific tag.\n *\n * The elements must be provided inside of an object\n * so the variable name can be retrieved in case of errors.\n *\n * @param {string} tagName - The name of the tag.\n * @param {object.} elements - The element(s) to check.\n * @return {boolean} - The result of the check.\n */\nexport function isTag(tagName, elements) {\n if (\n isValidType(\"string\", { tagName }) &&\n isValidInstance(HTMLElement, elements)\n ) {\n const tag = tagName.toLowerCase();\n let check = true;\n\n for (const key in elements) {\n if (elements[key].tagName.toLowerCase() !== tag) check = false;\n }\n\n return check;\n } else {\n return false;\n }\n}\n\n/**\n * Checks to see if an event is supported by a node.\n *\n * @param {string} event - The event type.\n * @param {HTMLElement} element - The element to check.\n * @return {boolean} - The result.\n *\n * @deprecated Will be removed in v4 unless there is a new found need for it.\n */\nexport function isEventSupported(event, element) {\n if (\n isValidType(\"string\", { event }) &&\n isValidInstance(HTMLElement, { element })\n ) {\n const eventProp = `on${event}`;\n\n return typeof element[eventProp] !== \"undefined\";\n } else {\n return false;\n }\n}\n","/* eslint-disable jsdoc/no-undefined-types */\n\nimport { isTag, isValidType } from \"./validate.js\";\n\n/**\n * A link or button that controls the visibility of a {@link BaseMenu}.\n */\nclass BaseMenuToggle {\n /**\n * The DOM elements within the menu toggle.\n *\n * @protected\n *\n * @type {object.}\n *\n * @property {HTMLElement} toggle - The menu toggle.\n * @property {HTMLElement} parent - The menu containing this toggle.\n */\n _dom = {\n toggle: null,\n parent: null,\n };\n\n /**\n * The declared accessible-menu elements within the menu toggle.\n *\n * @protected\n *\n * @type {object.}\n *\n * @property {BaseMenu} controlledMenu - The menu controlled by this toggle.\n * @property {BaseMenu} parentMenu - The menu containing this toggle.\n */\n _elements = {\n controlledMenu: null,\n parentMenu: null,\n };\n\n /**\n * The open state of the menu toggle.\n *\n * @protected\n *\n * @type {boolean}\n */\n _open = false;\n\n /**\n * Expand event.\n *\n * @protected\n *\n * @event accessibleMenuExpand\n *\n * @type {CustomEvent}\n *\n * @property {object} details - The details object containing the BaseMenuToggle itself.\n */\n _expandEvent = new CustomEvent(\"accessibleMenuExpand\", {\n bubbles: true,\n detail: { toggle: this },\n });\n\n /**\n * Collapse event.\n *\n * @protected\n *\n * @event accessibleMenuCollapse\n *\n * @type {CustomEvent}\n *\n * @property {object} details - The details object containing the BaseMenuToggle itself.\n */\n _collapseEvent = new CustomEvent(\"accessibleMenuCollapse\", {\n bubbles: true,\n detail: { toggle: this },\n });\n\n /**\n * Constructs the menu toggle.\n *\n * @param {object} options - The options for generating the menu toggle.\n * @param {HTMLElement} options.menuToggleElement - The toggle element in the DOM.\n * @param {HTMLElement} options.parentElement - The element containing the controlled menu.\n * @param {BaseMenu} options.controlledMenu - The menu controlled by this toggle.\n * @param {BaseMenu|null} [options.parentMenu = null] - The menu containing this toggle.\n */\n constructor({\n menuToggleElement,\n parentElement,\n controlledMenu,\n parentMenu = null,\n }) {\n // Set DOM elements.\n this._dom.toggle = menuToggleElement;\n this._dom.parent = parentElement;\n\n // Set menu elements.\n this._elements.controlledMenu = controlledMenu;\n this._elements.parentMenu = parentMenu;\n }\n\n /**\n * Initializes the menu toggle.\n *\n * Initialize does a lot of setup on the menu toggle.\n *\n * The most basic setup steps are to ensure that the toggle has `aria-haspopup`\n * set to \"true\", `aria-expanded` initially set to \"false\" and, if the toggle\n * element is not a `