{"version":3,"file":"js/pilot-cc304dcc93c3d69f9d27.js","mappings":"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","sources":["webpack://mein-bge/./app/frontend/javascripts/shared/utils/strings/dasherize.js","webpack://mein-bge/./app/frontend/javascripts/shared/components/form_validation.js","webpack://mein-bge/./app/frontend/javascripts/shared/utils/strings/capitalize.js","webpack://mein-bge/./app/frontend/javascripts/shared/lib/rails.js","webpack://mein-bge/./app/frontend/javascripts/shared/utils/scrollit.js","webpack://mein-bge/./app/frontend/javascripts/shared/utils/dom_ready.js","webpack://mein-bge/./app/frontend/javascripts/shared/utils/in_viewport.js","webpack://mein-bge/./app/frontend/javascripts/shared/components/animate_counter.js","webpack://mein-bge/./app/frontend/javascripts/shared/components/in_viewport_add_class.js","webpack://mein-bge/./app/frontend/javascripts/shared/components/scroll_to_anchor.js","webpack://mein-bge/./app/frontend/javascripts/shared/components/sepa_format.js","webpack://mein-bge/./app/frontend/javascripts/shared/components/telephone_format.js","webpack://mein-bge/./app/frontend/javascripts/shared/components/newsletter_subscription.js","webpack://mein-bge/./app/frontend/javascripts/pilot/components/check_if_checked.js","webpack://mein-bge/./app/frontend/javascripts/pilot/components/collapse.js","webpack://mein-bge/./app/frontend/javascripts/pilot/components/debit_mandate_configurator.js","webpack://mein-bge/./app/frontend/javascripts/pilot/components/delete_local_applicant_data.js","webpack://mein-bge/./app/frontend/javascripts/pilot/components/debit_mandate_goal_tracking.js","webpack://mein-bge/./app/frontend/javascripts/pilot/components/email_successfully_confirmed.js","webpack://mein-bge/./app/frontend/javascripts/pilot/components/faq.js","webpack://mein-bge/./app/frontend/javascripts/pilot/components/header.js","webpack://mein-bge/./app/frontend/javascripts/pilot/components/hide_if_checked.js","webpack://mein-bge/./app/frontend/javascripts/pilot/components/journal.js","webpack://mein-bge/./app/frontend/javascripts/pilot/components/one_million.js","webpack://mein-bge/./app/frontend/javascripts/pilot/components/overlay.js","webpack://mein-bge/./app/frontend/javascripts/pilot/components/quiz.js","webpack://mein-bge/./app/frontend/javascripts/pilot/components/show_if_checked.js","webpack://mein-bge/./app/frontend/javascripts/pilot/components/sticky_button.js","webpack://mein-bge/./app/frontend/javascripts/pilot/components/summary_page.js","webpack://mein-bge/./app/frontend/javascripts/pilot/components/sync_form_to_localstorage.js","webpack://mein-bge/./app/frontend/javascripts/pilot/components/tabs.js","webpack://mein-bge/./app/frontend/javascripts/pilot/components/title_band.js","webpack://mein-bge/./app/frontend/javascripts/pilot/components/tooltip.js","webpack://mein-bge/./app/frontend/javascripts/pilot/components/uncheck_if_checked.js","webpack://mein-bge/./app/frontend/javascripts/pilot/components/url_parameter_scroll_to.js","webpack://mein-bge/./app/frontend/javascripts/pilot/components/video.js","webpack://mein-bge/./app/frontend/javascripts/pilot/index.js","webpack://mein-bge/./app/frontend/javascripts/shared/components/accordion.js","webpack://mein-bge/./app/frontend/javascripts/pilot/polyfills/for_each_polyfill.js"],"sourcesContent":["export default (string) =>\n string.replace(/([A-Z])/g, (g) => `-${g[0].toLowerCase()}`);\n","import IBAN from 'iban';\nimport domReady from '../utils/dom_ready';\nimport scrollit from '../utils/scrollit';\nimport capitalize from '../utils/strings/capitalize';\nimport dasherize from '../utils/strings/dasherize';\n\nconst CSS_CLASS_VALID = 'form-control--valid';\nconst CSS_CLASS_ERROR = 'error';\nconst CSS_CLASS_MESSAGE = 'error-message';\n\nconst DDMMYYYY = /(0[1-9]|1[0-9]|2[0-9]|3[01])\\.(0[1-9]|1[012])\\.[0-9]{4}/;\nconst VALID_EMAIL =\n /^(?!\\.)[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*[.][a-zA-Z-]{2,63}$/;\n\nconst updateEl = (el, message = null) => {\n if (message) {\n el.setAttribute('aria-invalid', true);\n } else {\n el.removeAttribute('aria-invalid');\n }\n\n const isCheckbox = el.type === 'checkbox';\n\n const container = isCheckbox ? el.parentElement : el;\n\n let messageEl;\n\n if (typeof el.value === 'undefined') {\n messageEl = container.querySelector(`.${CSS_CLASS_MESSAGE}`);\n } else {\n messageEl = container.parentElement.querySelector(`.${CSS_CLASS_MESSAGE}`);\n }\n\n if (!isCheckbox) {\n container.classList[message ? 'remove' : 'add'](CSS_CLASS_VALID);\n }\n el.classList[message ? 'add' : 'remove'](CSS_CLASS_ERROR);\n\n if (messageEl && !message) {\n messageEl.remove();\n } else if (messageEl) {\n messageEl.innerHTML = message;\n } else if (message) {\n messageEl = document.createElement('div');\n messageEl.className = CSS_CLASS_MESSAGE;\n messageEl.innerHTML = message;\n if (typeof el.value === 'undefined') {\n container.appendChild(messageEl);\n } else {\n container.parentElement.appendChild(messageEl);\n }\n }\n};\n\nconst convertToDate = (el) =>\n new Date(el.value.trim().split('.').reverse().join('-'));\n\nconst VALIDATIONS = [\n ['checked', (el) => el.matches(':checked')],\n ['notChecked', (el) => !el.matches(':checked')],\n ['presence', (el) => el.value.trim().length > 0],\n ['pattern', (el, param) => el.value.trim().match(new RegExp(param))],\n ['antipattern', (el, param) => !new RegExp(param).test(el.value.trim())],\n ['minLength', (el, param) => el.value.trim().length >= param],\n ['maxLength', (el, param) => el.value.trim().length <= param],\n ['date', (el) => el.value.trim().match(DDMMYYYY)],\n ['minDate', (el, param) => convertToDate(el) > new Date(param)],\n ['maxDate', (el, param) => convertToDate(el) <= new Date(param)],\n [\n 'minValue',\n (el, param) => parseInt(el.value.trim(), 10) >= parseInt(param, 10),\n ],\n [\n 'maxValue',\n (el, param) => parseInt(el.value.trim(), 10) <= parseInt(param, 10),\n ],\n [\n 'email',\n (el) => !el.validity.typeMismatch && el.value.trim().match(VALID_EMAIL),\n ],\n [\n 'iban',\n (el) => {\n if (el.value === 'DE76 4306 0967 1165 3138 00') {\n return false;\n }\n return IBAN.isValid(el.value);\n },\n ],\n [\n 'notMatching',\n (el, param) => {\n const otherValue = document.getElementById(param).value.trim();\n return otherValue.length === 0 || otherValue !== el.value.trim();\n },\n ],\n [\n 'matching',\n (el, param) => {\n const otherValue = document.getElementById(param).value;\n return otherValue === el.value;\n },\n ],\n ['radioChecked'],\n];\n\nconst ELEMENTS = VALIDATIONS.map(\n (v) => `[data-validate-${dasherize(v[0])}]`\n).join(',');\n\nconst validate = (el) => {\n let valid;\n const requiredCheckbox = el.dataset.validateOnlyIfChecked;\n const requiredSelectedValue = el.dataset.validateOnlyIfSelected;\n\n const isExpectedSelectedValue = () => {\n const selectId = JSON.parse(requiredSelectedValue)[0];\n const expectedValue = JSON.parse(requiredSelectedValue)[1];\n\n const select = document.getElementById(selectId);\n const selectedValue = select.options[select.selectedIndex].value;\n\n return expectedValue === selectedValue;\n };\n\n if (\n requiredCheckbox &&\n !document.getElementById(requiredCheckbox).matches(':checked')\n ) {\n valid = true;\n } else if (requiredSelectedValue && !isExpectedSelectedValue()) {\n valid = true;\n } else if (typeof el.value === 'undefined') {\n valid = !!el.querySelector(':checked');\n\n if (!valid) {\n updateEl(\n el,\n el.dataset.validateCheckedMessage ||\n el.dataset.validateRadioCheckedMessage\n );\n }\n } else {\n valid = VALIDATIONS.every((v) => {\n const property = `validate${capitalize(v[0])}`;\n const value = el.dataset[property];\n if (value && !v[1](el, value)) {\n updateEl(el, el.dataset[`${property}Message`]);\n return false;\n }\n return true;\n });\n }\n\n if (valid) updateEl(el);\n\n return valid;\n};\n\nconst validateOnChange = (el) => {\n // emulate { once: true } for Internet Explorer\n if (el.eventListenerRegistered) return;\n el.eventListenerRegistered = true;\n\n el.addEventListener(\n el.type === 'checkbox' ||\n el.matches('select') ||\n typeof el.value === 'undefined'\n ? 'change'\n : 'blur',\n () => validate(el),\n false\n );\n};\n\ndomReady(() =>\n document.querySelectorAll('form').forEach((form) => {\n const elements = form.querySelectorAll(ELEMENTS);\n if (elements.length === 0) return;\n\n elements.forEach((el) => {\n if (\n el.type === 'checkbox' ||\n el.matches('select') ||\n typeof el.value === 'undefined' ||\n el.value.length > 0\n ) {\n validateOnChange(el);\n } else if ('formatIban' in el.dataset) {\n let validIban;\n el.addEventListener('keydown', () => { validIban = false });\n el.addEventListener('ibanValidInput', () => { validIban = true });\n el.addEventListener('keyup', () => validIban ? updateEl(el) : validate(el));\n }\n else {\n el.addEventListener('keypress', () => validateOnChange(el), {\n once: true,\n });\n }\n });\n\n form.setAttribute('novalidate', true);\n\n const submitButtons = form.querySelectorAll('[type=submit]');\n submitButtons.forEach((el) => {\n el.removeAttribute('data-disable-with');\n });\n\n form.validate = () =>\n Array.from(elements).reduce(\n (valid, el) =>\n el.dataset.validateDisabled || validate(el) ? valid : false,\n true\n );\n\n form.addEventListener(\n 'submit',\n (e) => {\n if (form.validate()) {\n form.valid = true;\n submitButtons.forEach((el) => {\n el.disabled = true;\n });\n } else {\n form.valid = false;\n e.preventDefault();\n e.stopPropagation();\n scrollit(form.querySelector(`.${CSS_CLASS_MESSAGE}`), 400, true, 120);\n }\n },\n false\n );\n })\n);\n","export default function capitalize(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n","/**\n * Ruby on Rails unobstrusive scripting adapter\n *\n * Features:\n * - force confirmation dialogs for various actions\n * - make non-GET requests from hyperlinks\n * - make forms or hyperlinks submit data asynchronously with Ajax\n * - have submit buttons become automatically disabled on form submit\n * to prevent double-clicking\n *\n * These features are achieved by adding certain data attributes to your HTML\n * markup. In Rails, they are added by the framework's template helpers.\n *\n * @see\n * https://github.com/rails/rails/tree/master/actionview/app/assets/javascripts\n */\nimport ujs from '@rails/ujs';\n\nujs.start();\n","/*\n\nscrollit instructions:\n\ndestination:\n this is either the queried selector to which you want to scroll to, or a pixel value\nduration:\n the duration of the animated scroll\nnav:\n true or false if page has navigation bar or not\nextra (optional):\n should the scroll go a little further or less, place pixel value here\n\nexample:\n let anchor = document.querySelector('.target');\n scrollit(anchor, 600, true, 30);\n\n*/\n\nconst scrollit = (destination, duration, nav, extra) => {\n Math.easeInOutQuad = (t, b, c, d) => {\n t /= d / 2;\n if (t < 1) {\n // eslint-disable-next-line no-mixed-operators\n return (c / 2) * t * t + b;\n }\n t -= 1;\n // eslint-disable-next-line no-mixed-operators\n return (-c / 2) * (t * (t - 2) - 1) + b;\n };\n\n const s = {};\n const header = document.querySelector('header');\n s.navOffset = header && nav ? header.getBoundingClientRect().height : 0;\n s.extraOffset = extra || 0;\n\n if (typeof destination === 'number') {\n s.destinationOffset = destination;\n } else {\n s.destinationOffset =\n destination.getBoundingClientRect().top - s.navOffset - s.extraOffset;\n }\n\n s.bodyOffset =\n document.querySelector('body').getBoundingClientRect().top * -1;\n s.scrollPos = s.destinationOffset + s.bodyOffset;\n s.start = window.scrollY;\n s.change = s.scrollPos - s.start;\n s.currentTime = 0;\n s.increment = 20;\n s.duration = duration;\n\n s.animateScroll = () => {\n s.currentTime += s.increment;\n s.amount = Math.easeInOutQuad(s.currentTime, s.start, s.change, s.duration);\n window.scrollTo(0, s.amount);\n if (s.currentTime < s.duration) {\n window.requestAnimationFrame(s.animateScroll);\n }\n };\n\n s.animateScroll();\n};\n\nexport default scrollit;\n","/**\n * Calls the callback as soon as the DOM is ready.\n *\n * @param {Function} callback\n */\n\nconst domReady = (callback) => {\n if (\n document.readyState === 'complete' ||\n document.readyState === 'interactive'\n ) {\n callback();\n return;\n }\n\n document.addEventListener('DOMContentLoaded', callback);\n};\n\nexport default domReady;\n","/**\n * Calls the callback once as soon as the element enters the viewport.\n *\n * @param {HTMLElement} el\n * @param {Function} callback\n */\n\nconst inViewport = (el, callback) => {\n if (typeof IntersectionObserver === 'undefined') return;\n\n new IntersectionObserver((entries, observer) => {\n if (entries[0].isIntersecting) {\n callback();\n observer.disconnect();\n }\n }).observe(el);\n};\n\nexport default inViewport;\n","import domReady from '../utils/dom_ready';\nimport inViewport from '../utils/in_viewport';\n\ndomReady(() => {\n document.querySelectorAll('[data-animate-counter]').forEach((el) => {\n const duration = el.dataset.animateCounter;\n let finalNumber = parseInt(el.textContent.replace(/\\./g, ''), 10);\n\n let animationStarted;\n\n el.changeFinalNumber = (number) => {\n finalNumber = number;\n };\n\n const animate = (time) => {\n if (!animationStarted) animationStarted = time;\n const timeElapsed = time - animationStarted;\n const progressInPercentage = timeElapsed / duration;\n\n const number = Math.min(\n Math.floor(progressInPercentage * finalNumber),\n finalNumber\n );\n el.textContent = number.toLocaleString('de-DE');\n\n if (progressInPercentage < 1) window.requestAnimationFrame(animate);\n };\n\n // need to wait a program cycle, as otherwise Firefox sometimes\n // doesn't detect intersection when element already in viewport on page load\n setTimeout(() => {\n inViewport(el, () => {\n setTimeout(() => {\n el.classList.add('is-active');\n el.style.width = `${el.offsetWidth}px`;\n window.requestAnimationFrame(animate);\n }, 500);\n });\n }, 1);\n });\n});\n","/**\n * Add class to the element as soon as the element enters the viewport.\n *\n * @example\n *
becomes
\n */\n\nimport domReady from '../utils/dom_ready';\nimport inViewport from '../utils/in_viewport';\n\ndomReady(() => {\n document.querySelectorAll('[data-in-viewport-add-class]').forEach((el) => {\n inViewport(el, () => el.classList.add(el.dataset.inViewportAddClass));\n });\n});\n","import domReady from '../utils/dom_ready';\nimport scrollit from '../utils/scrollit';\n\ndomReady(() => {\n const anchorTargets = document.querySelectorAll('[js_anchor_target]');\n const fixedHeader = document.querySelector('[data-fixed-header]');\n const hasFixedHeader = document.body.contains(fixedHeader);\n\n if (anchorTargets.length) {\n anchorTargets.forEach((el) => {\n const targetValue = el.getAttribute('js_anchor_target');\n const targetItem = document.querySelector(\n `[js_anchor = \"${targetValue}\"]`\n );\n el.addEventListener('click', (e) => {\n scrollit(targetItem, 600, hasFixedHeader);\n e.preventDefault();\n });\n });\n }\n});\n","/*\n Pretty formatting of IBAN (actually: SEPA) input fields\n*/\nimport IMask from 'imask';\nimport domReady from '../utils/dom_ready';\n\ndomReady(() => {\n const SEPA_LIST = [\n 'AT00 0000 0000 0000 0000',\n 'BE00 0000 0000 0000',\n 'BG00 aaaa 0000 00## #### ##',\n 'CH00 0000 0### #### #### #',\n 'CY00 0000 0000 #### #### #### ####',\n 'CZ00 0000 0000 0000 0000 0000',\n 'DE00 0000 0000 0000 0000 00',\n 'DK00 0000 0000 0000 00',\n 'EE00 0000 0000 0000 0000',\n 'ES00 0000 0000 0000 0000 0000',\n 'FI00 0000 0000 0000 00',\n 'FO00 0000 0000 0000 00',\n 'FR00 0000 0000 00## #### #### #00',\n 'GB00 aaaa 0000 0000 0000 00',\n 'GI00 aaaa #### #### #### ###',\n 'GL00 0000 0000 0000 00',\n 'GR00 0000 000# #### #### #### ###',\n 'HR00 0000 0000 0000 0000 0',\n 'HU00 0000 0000 0000 0000 0000 0000',\n 'IE00 #### 0000 0000 0000 00',\n 'IS00 0000 0000 0000 0000 0000 00',\n 'IT00 a000 0000 000# #### #### ###',\n 'LI00 0000 0### #### #### #',\n 'LT00 0000 0000 0000 0000',\n 'LU00 000# #### #### ####',\n 'LV00 aaaa #### #### #### #',\n 'MC00 0000 0000 00## #### #### #00',\n 'MT00 aaaa 0000 0### #### #### #### ###',\n 'NL00 aaaa 0000 0000 00',\n 'NO00 0000 0000 000',\n 'PL00 0000 0000 0000 0000 0000 0000',\n 'PT00 0000 0000 0000 0000 0000 0',\n 'RO00 aaaa #### #### #### ####',\n 'SE00 0000 0000 0000 0000 0000',\n 'SI00 0000 0000 0000 000',\n 'SK00 0000 0000 0000 0000 0000',\n 'SM00 a000 0000 000# #### #### ###',\n ];\n\n const element = document.querySelector('[data-format-iban]');\n if (element) {\n const toUpper = (str) => str.toUpperCase();\n const definitions = {\n '#': /[0-9A-Z]/,\n };\n\n const ibanMask = IMask(element, {\n mask: SEPA_LIST.map((code) => {\n const res = {};\n res.mask = `aa${code.substring(2)}`;\n res.prepare = toUpper;\n res.definitions = definitions;\n res.countryCode = code.substring(0, 2);\n return res;\n }),\n dispatch(appended, dynamicMasked) {\n const current = (\n dynamicMasked.value + appended.toUpperCase()\n ).substring(0, 2);\n\n return dynamicMasked.compiledMasks.find((m) =>\n m.countryCode.startsWith(current)\n );\n },\n });\n\n const event = new Event ('ibanValidInput');\n const triggerIbanEvent = () => element.dispatchEvent(event);\n ibanMask.on(\"accept\", triggerIbanEvent);\n }\n});\n","import IMask from 'imask';\nimport domReady from '../utils/dom_ready';\n\ndomReady(() => {\n const element = document.querySelector('[data-autoformat-telephone]');\n if(!element) return;\n // eslint-disable-next-line no-unused-vars\n const telephoneMask = IMask(\n element, {\n mask: '+{49 (\\\\0)} 000 000 000 000'\n });\n});\n","import domReady from '../utils/dom_ready';\n\n// minimum duration of the loading animation\n// (bad UX when it only shows up for milliseconds)\nconst minAnimationDuration = 2000;\n\nlet requestStartTime;\nlet subscriptionForm;\n\n// enable transition of width and height of confirm button\nconst growButton = () => {\n const growButtonOrigin = subscriptionForm.querySelector('[data-grow-origin]');\n if (!growButtonOrigin) return;\n const growButtonTarget = subscriptionForm.querySelector('[data-grow-target]');\n const initialWidth = growButtonOrigin.offsetWidth;\n const initialHeight = growButtonOrigin.offsetHeight;\n growButtonOrigin.style.display = 'none';\n growButtonTarget.style.display = 'inline-block';\n const finalWidth = growButtonTarget.offsetWidth;\n const finalHeight = growButtonTarget.offsetHeight;\n growButtonTarget.style.width = `${initialWidth}px`;\n growButtonTarget.style.height = `${initialHeight}px`;\n setTimeout(() => {\n growButtonTarget.style.width = `${finalWidth}px`;\n growButtonTarget.style.height = `${finalHeight}px`;\n growButtonTarget.children[0].style.opacity = 1;\n }, 100);\n window.addEventListener('resize', () => {\n growButtonTarget.style.width = 'auto';\n growButtonTarget.style.height = 'auto';\n });\n}\n\n// render final state of form\nconst renderCompleted = () => {\n subscriptionForm.classList.add('sent');\n growButton();\n}\n\n// when the request (newsletter subscription) was successful\nconst onSuccess = () => {\n const timeElapsed = Date.now() - requestStartTime;\n\n if (timeElapsed >= minAnimationDuration) {\n renderCompleted();\n } else {\n // the request was faster, but we still want to show the animation for a bit\n const remainingAnimationDuration = minAnimationDuration - timeElapsed;\n setTimeout(renderCompleted, remainingAnimationDuration);\n }\n\n // cleanup global event listener\n document.body.removeEventListener('ajax:success', onSuccess);\n\n // fathom tracking of successful submission\n if (window.fathom && window.fathom.trackGoal) {\n window.fathom.trackGoal('XDVWXMMR', 0);\n }\n};\n\ndomReady(() => {\n subscriptionForm = document.querySelector('#new_subscription');\n\n if (!subscriptionForm) return;\n\n subscriptionForm.addEventListener('submit', () => {\n // form validation happens before\n if (!subscriptionForm.valid) return;\n\n subscriptionForm.classList.add('sending');\n requestStartTime = Date.now();\n\n // the request itself is carried out by Rails UJS, which emits an event on success\n document.body.addEventListener('ajax:success', onSuccess);\n\n // disable the input field after the Rails UJS request,\n // because disabled fields are ignored by UJS\n setTimeout(() => {\n subscriptionForm.querySelector('input[type=email]').disabled = true;\n }, 1);\n });\n});\n","import domReady from '../../shared/utils/dom_ready';\n\nconst update = (el, requiredElements) => {\n const requiredElementChecked = requiredElements.some((r) =>\n r.matches(':checked')\n );\n if (requiredElementChecked) el.checked = true;\n};\n\ndomReady(() => {\n const elements = document.querySelectorAll('[data-check-if-checked]');\n\n elements.forEach((el) => {\n const id = el.dataset.checkIfChecked;\n const requiredElements = [\n ...document.querySelectorAll(`#${id} input[type='checkbox']`),\n ];\n\n update(el, requiredElements);\n\n requiredElements.forEach((requiredEl) => {\n requiredEl.addEventListener(\n 'change',\n () => {\n update(el, requiredElements);\n },\n false\n );\n });\n });\n});\n","import domReady from '../../shared/utils/dom_ready';\n\nconst measureHeight = (el) => {\n const height = el.scrollHeight;\n return `${height}px`;\n};\n\nconst collapseButton = (item) =>\n item.querySelector('.collapse__button-container');\nconst collapseContent = (item) => item.querySelector('.collapse__content');\nconst collapseIsOpen = (item) => item.matches('.is-open');\n\nconst openItem = (item) => {\n item.classList.add('is-open');\n const body = collapseContent(item);\n const height = measureHeight(body);\n body.style.height = 0;\n setTimeout(() => {\n body.style.height = height;\n setTimeout(() => {\n body.style.height = 'auto';\n }, 100);\n }, 100);\n};\n\nconst closeItem = (item) => {\n item.classList.remove('is-open');\n const body = collapseContent(item);\n const height = measureHeight(body);\n body.style.height = height;\n setTimeout(() => {\n body.style.height = 0;\n }, 100);\n};\n\ndomReady(() => {\n const collapseItems = document.querySelectorAll('.collapse');\n\n collapseItems.forEach((item) => {\n collapseButton(item).addEventListener('click', (e) => {\n if (collapseIsOpen(item)) {\n closeItem(item);\n } else {\n openItem(item);\n }\n\n // don't trigger checkbox when collapse\n // is used in checkbox label\n e.preventDefault();\n });\n });\n});\n","import domReady from '../../shared/utils/dom_ready';\n\n// payment method buttons\nlet debitButton;\nlet paypalButton;\n\n// payment method screens\nlet debitScreen;\nlet paypalScreen;\n\n// the amount input (type in number) element\nlet input;\n\n// the range input (slider) element\nlet rangeInput;\n\n// the ratio between amount for organization and amount for bge\nlet ratio;\n\n// keep track of the former input value, so we can revert to it after change\nlet formerInputValue;\n\n// keep track of the formerly active button, so we can re-select it\nlet formerlyActiveButton;\n\n// range input\n\nconst updateRangeInputLabels = (amountOrganization, amountBge) => {\n const organizationEl = document.getElementById(\n 'debit-mandate-configurator__amount-organization'\n );\n organizationEl.innerText = amountOrganization;\n\n const bgeEl = document.getElementById(\n 'debit-mandate-configurator__amount-bge'\n );\n bgeEl.innerText = amountBge;\n};\n\nconst updateHiddenAmountOrganizationField = (amount) => {\n document.getElementById('debit_mandate_amount_organization').value = amount;\n};\n\n// update the range input, update all related labels and fields\nconst updateRangeInput = (amountTotal) => {\n if (amountTotal) {\n const newValue = Math.round(amountTotal * ratio);\n rangeInput.max = amountTotal;\n rangeInput.value = newValue;\n }\n\n const amountBge = rangeInput.value;\n const amountOrganization = rangeInput.max - amountBge;\n\n updateRangeInputLabels(amountOrganization, amountBge);\n updateHiddenAmountOrganizationField(amountOrganization);\n};\n\nconst onRangeInputChange = () => {\n updateRangeInput();\n\n // only store/update the ratio when the user actually changes is via the range input\n ratio = rangeInput.value / rangeInput.max;\n};\n\n// update the hidden form field holding the amount_total\nconst updateHiddenAmountTotalField = (amount) => {\n const el = document.getElementById('debit_mandate_amount_total');\n el.value = amount;\n};\n\n// update submit button to show the current total amount\nconst updateSubmitButton = (amount) => {\n const button = document.querySelector(\n '#debit-mandate-configurator input[type=submit]'\n );\n button.value = button.value.replace(/\\d+/, amount);\n};\n\n// whenever the total amount changes this method updates all places\nconst onAmountChange = (amount) => {\n updateRangeInput(amount);\n updateHiddenAmountTotalField(amount);\n updateSubmitButton(amount);\n};\n\n// just give back the active (currently selected) button\nconst activeButton = () =>\n document.querySelector(\n '#debit-mandate-configurator__buttons button.button--primary'\n );\n\n// select (make active) the given button\nconst selectButton = (button) => {\n button.classList.remove('button--secondary');\n button.classList.add('button--primary');\n\n onAmountChange(button.dataset.amount);\n};\n\n// unselect the active button, e.g. when using the input field\nconst unselectActiveButton = () => {\n const button = activeButton();\n\n if (button) {\n formerlyActiveButton = button;\n button.classList.add('button--secondary');\n button.classList.remove('button--primary');\n }\n};\n\n// input field needs certain css classes depending on it's state for correct visual appearance\nconst updateInputAppearance = () => {\n // toggle visual active state\n if (\n input.value.length > 0 &&\n (input === document.activeElement || !activeButton())\n ) {\n input.classList.add('is-active');\n } else {\n input.classList.remove('is-active');\n }\n\n // visual length\n input.className = input.className.replace(/is-filled--\\d+/, '');\n input.classList.add(`is-filled--${input.value.length}`);\n\n formerInputValue = input.value;\n};\n\n// user clicked a amount button\nconst onButtonClick = (e) => {\n unselectActiveButton();\n selectButton(e.target);\n\n updateInputAppearance();\n};\n\n// user entered the input field\nconst onInputFocus = () => {\n if (input.value === input.dataset.initialValue) {\n input.value = '';\n } else if (input.value.length > 0) {\n unselectActiveButton();\n onAmountChange(input.value);\n }\n\n updateInputAppearance();\n};\n\n// user types into the input field (also triggered on pasting)\nconst onInputType = () => {\n // don't allow any invalid content, only numbers between 1 and 2000\n const validAmount = /^([1-9][0-9]{0,2})$|^(1[0-9]{3})$|^2000$/;\n if (input.value.length > 0 && !input.value.match(validAmount)) {\n input.value = formerInputValue;\n } else if (input.value.length === 0) {\n // when empty, go back to formerly selected button\n selectButton(formerlyActiveButton);\n } else {\n // valid input\n unselectActiveButton();\n onAmountChange(input.value);\n }\n\n updateInputAppearance();\n};\n\n// user leaves the input field\nconst onInputBlur = () => {\n if (input.value.length === 0) {\n input.value = input.dataset.initialValue;\n }\n\n updateInputAppearance();\n};\n\nconst onDebitClicked = () => {\n paypalButton.classList.remove('button--primary');\n paypalButton.classList.add('button--secondary');\n\n debitButton.classList.remove('button--secondary');\n debitButton.classList.add('button--primary');\n\n paypalScreen.style.display = 'none';\n debitScreen.style.display = 'block';\n};\n\nconst onPaypalClicked = () => {\n debitButton.classList.remove('button--primary');\n debitButton.classList.add('button--secondary');\n\n paypalButton.classList.remove('button--secondary');\n paypalButton.classList.add('button--primary');\n\n debitScreen.style.display = 'none';\n paypalScreen.style.display = 'block';\n};\n\ndomReady(() => {\n if (!document.querySelector('#debit-mandate-configurator')) return;\n\n debitScreen = document.getElementById('debit-mandate-configurator__debit');\n paypalScreen = document.getElementById('debit-mandate-configurator__paypal');\n\n debitButton = document.getElementById(\n 'debit-mandate-configurator__payment-method--debit'\n );\n paypalButton = document.getElementById(\n 'debit-mandate-configurator__payment-method--paypal'\n );\n\n if (paypalButton) {\n debitButton.addEventListener('click', onDebitClicked, false);\n paypalButton.addEventListener('click', onPaypalClicked, false);\n }\n\n // buttons 10€, 25€, 50€\n document\n .querySelectorAll('#debit-mandate-configurator__buttons button')\n .forEach((button) => {\n button.addEventListener('click', onButtonClick, false);\n });\n\n // input field for custom total amount\n input = document.getElementById('debit-mandate-configurator__input');\n input.addEventListener('focus', onInputFocus, false);\n input.addEventListener('blur', onInputBlur, false);\n input.addEventListener('input', onInputType, false);\n updateInputAppearance(); // initialize correct appearance\n\n // euro sign suffix of input field\n document\n .querySelector('.debit-mandate-configurator__input-euro')\n .addEventListener(\n 'click',\n () => {\n input.focus();\n },\n false\n );\n\n // range input to control the distribution\n rangeInput = document.getElementById('debit_mandate_amount_bge');\n rangeInput.addEventListener('change', onRangeInputChange, false);\n rangeInput.addEventListener('input', onRangeInputChange, false);\n onRangeInputChange(); // initialize correct appearance\n});\n","import domReady from '../../shared/utils/dom_ready';\n\ndomReady(() => {\n const el = document.getElementById('js-delete-local-applicant-data');\n\n if (!el) return;\n\n [2, 3, 4].forEach((page) =>\n window.localStorage.removeItem(`${el.dataset.token}-${page}`)\n );\n});\n","import domReady from '../../shared/utils/dom_ready';\n\ndomReady(() => {\n const form = document.getElementById('new_debit_mandate');\n\n if (!form) return;\n\n if (typeof URLSearchParams === 'undefined') return;\n\n const params = new URLSearchParams(window.location.search);\n\n if (!params.has('page')) return;\n\n const goalId = params.get('page');\n\n if (goalId.length !== 8) return;\n\n const amountTotal = parseInt(\n document.getElementById('debit_mandate_amount_total').value,\n 10\n );\n\n form.addEventListener(\n 'submit',\n () => {\n if (form.validate() && window.fathom && window.fathom.trackGoal) {\n window.fathom.trackGoal(goalId, amountTotal);\n }\n },\n false\n );\n});\n","import domReady from '../../shared/utils/dom_ready';\n\ndomReady(() => {\n const blurryBackground = document.querySelector('.blurry-background');\n\n if (!blurryBackground) return;\n\n const blurryOverlay = document.querySelector('.blurry-overlay');\n\n const hideBackground = () => {\n blurryBackground.classList.remove('blurry-background');\n blurryBackground.classList.remove('blurry-background--fade-out');\n };\n\n const hideOverlay = () => {\n blurryOverlay.style.display = 'none';\n };\n\n const hide = () => {\n hideBackground();\n hideOverlay();\n };\n\n const fadeOutBackground = () => {\n blurryBackground.classList.add('blurry-background--fade-out');\n blurryBackground.addEventListener('transitionend', hideBackground, false);\n };\n\n const fadeOutOverlay = () => {\n blurryOverlay.classList.add('blurry-overlay--fade-out');\n blurryOverlay.addEventListener('transitionend', hideOverlay, false);\n };\n\n setTimeout(fadeOutOverlay, 2600);\n setTimeout(fadeOutBackground, 2500);\n\n blurryOverlay.addEventListener('click', hide, false);\n});\n","import domReady from '../../shared/utils/dom_ready';\n\ndomReady(() => {\n const omqContainer = document.getElementById('omq-help-container');\n if (!omqContainer) return;\n if (window.location.search.includes('question=')) {\n omqContainer.classList.add('single-question');\n setTimeout(() => {\n const navLink = omqContainer.querySelector('.omq-help-navigation__link');\n if (navLink) {\n navLink.addEventListener('click', () => {\n omqContainer.classList.remove('single-question');\n });\n }\n }, 1000);\n }\n});\n","import domReady from '../../shared/utils/dom_ready';\n\nlet navIsOpen = false;\n\nconst closeMobileNavigation = (header) => {\n header.classList.remove('is-open');\n header.classList.remove('is-opening');\n header.classList.add('is-closing');\n setTimeout(() => {\n header.classList.remove('is-closing');\n navIsOpen = false;\n }, 200);\n};\n\ndomReady(() => {\n const header = document.getElementById('header');\n if (!header) return;\n\n const headerBar = document.querySelector('.header__bar');\n const burgerMenu = document.getElementById('header-nav-toggle');\n const navSlideOut = document.getElementById('header-nav');\n\n burgerMenu.addEventListener(\n 'click',\n (e) => {\n e.preventDefault();\n navSlideOut.style.display = 'block';\n\n setTimeout(() => {\n if (header.matches('.is-open')) {\n closeMobileNavigation(header);\n } else {\n header.classList.add('is-open');\n header.classList.add('is-opening');\n header.classList.remove('is-closing');\n navIsOpen = true;\n setTimeout(() => {\n header.classList.remove('is-opening');\n }, 350);\n }\n }, 1);\n },\n false\n );\n\n const buttons = document.querySelectorAll(\n '.header__mobile-nav-items .button'\n );\n\n buttons.forEach((button, index) => {\n const fullWidth = window.innerWidth;\n const buttonWidth = button.offsetWidth;\n const fullTime = 500;\n const time = (fullTime / fullWidth) * buttonWidth;\n button.style.transitionDuration = `${time}ms`;\n button.style.transitionDelay = `${10 * index + 150}ms`;\n\n button.addEventListener(\n 'click',\n (e) => {\n closeMobileNavigation(header);\n e.preventDefault();\n setTimeout(() => {\n window.location = button.href;\n }, 250);\n },\n false\n );\n });\n\n const subMenuToggles = document.querySelectorAll(\n '.header__link--toggle-sub-menu'\n );\n\n const subMenu = document.querySelectorAll(\n '.header__sub-menu'\n );\n\n const headerLinks = document.querySelectorAll(\n '.header__link:not(.header__link--toggle-sub-menu)'\n );\n\n const closeMenu = () => {\n const openMenu = document.querySelector('.header__links .is-open');\n if (openMenu) openMenu.classList.remove('is-open');\n }\n\n subMenuToggles.forEach((toggle) => {\n toggle.addEventListener('click', (e) => {\n e.preventDefault();\n e.stopPropagation();\n });\n toggle.addEventListener('mouseenter', () => {\n toggle.parentElement.classList.add('is-open');\n });\n });\n\n subMenu.forEach((menu) => {\n menu.addEventListener('mouseleave', () => {\n menu.parentElement.classList.remove('is-open');\n });\n });\n\n headerLinks.forEach((link) => {\n link.addEventListener('mouseenter', () => {\n closeMenu();\n });\n });\n\n document.addEventListener('click', () => {\n closeMenu();\n });\n\n const threshold = window.innerHeight / 2;\n let pageOffset = window.pageYOffset;\n\n window.addEventListener('scroll', () => {\n const currentOffset = window.pageYOffset;\n const hide =\n currentOffset > threshold && currentOffset > pageOffset && !navIsOpen;\n pageOffset = currentOffset;\n\n if (hide) {\n headerBar.classList.add('is-hidden');\n } else {\n headerBar.classList.remove('is-hidden');\n }\n });\n});\n","import domReady from '../../shared/utils/dom_ready';\n\nconst update = (el, requiredElement) => {\n const requiredElementChecked = requiredElement.matches(':checked');\n el.style.display = requiredElementChecked ? 'none' : 'block';\n};\n\ndomReady(() => {\n const elements = document.querySelectorAll('[data-hide-if-checked]');\n\n elements.forEach(el => {\n const requiredElement = document.getElementById(el.dataset.hideIfChecked);\n\n requiredElement.addEventListener(\n 'change',\n () => {\n update(el, requiredElement);\n },\n false\n );\n\n setTimeout(() => {\n update(el, requiredElement);\n }, 1);\n });\n});\n","import domReady from '../../shared/utils/dom_ready';\n\ndomReady(() => {\n const journalContentTitle = document.querySelectorAll('.journal-content h2');\n const journalTeaserTitle = document.querySelectorAll(\n '.journal-teaser__title h3',\n );\n const journalDetailTitle = document.querySelectorAll(\n '.journal-detail__title h1',\n );\n\n const wrapStrings = (el) => {\n const wrappedString = el.innerText.replace(\n /([A-Za-z0-9,.!?ÜüÄäÖöß»«'<>:/]+)/g,\n '$1',\n );\n el.innerHTML = wrappedString;\n };\n\n const countUnique = (iterable) => new Set(iterable).size;\n\n const lineCount = (el) => {\n const spans = el.querySelectorAll('span');\n const spanOffsets = [];\n spans.forEach((item) => {\n spanOffsets.push(item.getBoundingClientRect().top);\n });\n return countUnique(spanOffsets);\n };\n\n journalContentTitle.forEach((item) => {\n wrapStrings(item);\n });\n\n journalTeaserTitle.forEach((item) => {\n wrapStrings(item);\n setTimeout(() => {\n const lines = lineCount(item);\n if (lines > 1) {\n item.parentNode.classList.add(`journal-teaser__title--${lines}`);\n }\n }, 0);\n });\n\n journalDetailTitle.forEach((item) => {\n wrapStrings(item);\n setTimeout(() => {\n if (lineCount(item) > 2) {\n item.classList.add('journal-headline--long');\n }\n }, 0);\n });\n});\n","import domReady from '../../shared/utils/dom_ready';\n\nconst UPDATE_INTERVAL = 2000;\n\ndomReady(() => {\n const el = document.querySelector('.one-million');\n\n if (!el) return;\n\n const { apiPath } = el.dataset;\n\n if (!apiPath) return;\n\n const valueEl = el.querySelector('.one-million__count--applicants');\n\n let isInViewport;\n let isUpdating;\n let timeout;\n let observer;\n\n const renderNumber = (number) => {\n // hook into running animation\n valueEl.changeFinalNumber(number);\n // or set directly (it's fine to do both)\n valueEl.innerText = number.toLocaleString('de');\n };\n\n const stop = () => {\n observer.disconnect();\n // eslint-disable-next-line no-use-before-define\n document.removeEventListener('visibilitychange', update);\n };\n\n const update = () => {\n clearTimeout(timeout);\n\n if (document.hidden || !isInViewport || isUpdating) return;\n\n isUpdating = true;\n\n fetch(apiPath)\n .then((response) => {\n if (!response.ok) {\n // throw and don't update the number\n throw new Error('API unavailable');\n }\n\n return response.json();\n })\n .then((data) => {\n renderNumber(data);\n\n if (!document.hidden && isInViewport) {\n timeout = setTimeout(update, UPDATE_INTERVAL);\n }\n\n isUpdating = false;\n })\n .catch(stop);\n };\n\n // update whenever entering or leaving viewport\n observer = new IntersectionObserver((entries) => {\n isInViewport = entries[0].isIntersecting;\n update();\n });\n observer.observe(el);\n\n // update whenever tab goes to foreground or background\n document.addEventListener('visibilitychange', update);\n});\n","import domReady from '../../shared/utils/dom_ready';\n\ndomReady(() => {\n const overlay = document.querySelector('.overlay');\n\n if (overlay) {\n const overlayContainer = overlay.querySelector('.overlay__container');\n const overlayClose = overlayContainer.querySelector('.overlay__close');\n const overlayLinks = document.querySelectorAll('[data-overlay-link]');\n const overlayContent = document.querySelectorAll('[data-overlay]');\n\n const overlayShow = (el) => {\n overlay.style.display = 'flex';\n overlay.classList.add('overlay--is-active');\n el.style.display = 'block';\n };\n\n const overlayHide = () => {\n overlay.classList.remove('overlay--is-active');\n setTimeout(() => {\n overlay.style.display = 'none';\n overlayContent.forEach((el) => {\n el.style.display = 'none';\n });\n }, 300);\n };\n\n overlayLinks.forEach((el) => {\n el.addEventListener('click', (e) => {\n e.preventDefault();\n const target = el.getAttribute('data-overlay-link');\n const targetEl = document.querySelector(`[data-overlay = ${target}]`);\n overlayShow(targetEl);\n });\n });\n\n overlayClose.addEventListener('click', () => {\n overlayHide();\n });\n\n overlay.addEventListener('click', (event) => {\n if (!overlayContainer.contains(event.target)) {\n overlayHide();\n }\n });\n }\n});\n","import domReady from '../../shared/utils/dom_ready';\nimport scrollit from '../../shared/utils/scrollit';\n\ndomReady(() => {\n const initializeQuiz = () => {\n const quiz = document.querySelector('.quiz-stage');\n if (!quiz) return;\n const quizClone = quiz.cloneNode(true);\n const cards = document.querySelectorAll('.quiz-card');\n const negativeButton = (item) => item.querySelector('[negative]');\n const positiveButton = (item) => item.querySelector('[positive]');\n const neutralButton = (item) => item.querySelector('[neutral]');\n const quizResultContainer = document.querySelector('.quiz-result');\n const quizResultItems = quizResultContainer.querySelectorAll(\n '.quiz-result__item'\n );\n const results = new Array(cards.length);\n const restart = document.querySelector('.quiz-restart');\n const facebookLink = quizResultContainer.querySelector('.facebook-link');\n\n const handleStageHeight = (height) => {\n quiz.style.height = `${quiz.clientHeight}px`;\n setTimeout(() => {\n quiz.style.height = `${height}px`;\n }, 100);\n };\n\n setTimeout(() => {\n handleStageHeight(quiz.clientHeight);\n }, 1000);\n\n const buildShareLink = (type) => {\n const answerSet = type.join('');\n const parameterString = `?p=quiz%26q=${answerSet}`;\n const urlString = `${document.location.origin}${document.location.pathname}`;\n const sharepicUrl = `${urlString}${parameterString}`;\n const dataFacebookMessage = facebookLink.dataset.facebookMessage;\n const facebookMessage = encodeURIComponent(dataFacebookMessage);\n facebookLink.href = `https://www.fb.com/sharer/sharer.php?u=${sharepicUrl}"e=${facebookMessage}`;\n };\n\n const showResults = (type) => {\n quizResultItems.forEach((item, i) => {\n const answer = ['neutral', 'positive', 'negative'][type[i]];\n item.classList.add(answer);\n });\n\n setTimeout(() => {\n quizResultContainer.classList.add('is-active');\n handleStageHeight(quizResultContainer.clientHeight);\n setTimeout(() => {\n quiz.style.height = 'auto';\n }, 1000);\n }, 600);\n\n buildShareLink(type);\n };\n\n const restartQuiz = () => {\n quiz.parentNode.appendChild(quizClone);\n scrollit(quiz.parentNode, 400, true, 120);\n quiz.remove();\n initializeQuiz();\n };\n\n cards.forEach((item, i) => {\n const negative = negativeButton(item);\n const positive = positiveButton(item);\n const neutral = neutralButton(item);\n\n negative.addEventListener('click', () => {\n results[i] = 2;\n item.classList.add('exit-negative');\n setTimeout(() => {\n item.remove();\n }, 400);\n if (i > cards.length - 2) {\n showResults(results);\n }\n });\n\n positive.addEventListener('click', () => {\n results[i] = 1;\n item.classList.add('exit-positive');\n setTimeout(() => {\n item.remove();\n }, 400);\n if (i > cards.length - 2) {\n showResults(results);\n }\n });\n\n neutral.addEventListener('click', () => {\n results[i] = 0;\n item.classList.add('exit-positive');\n setTimeout(() => {\n item.remove();\n }, 400);\n if (i > cards.length - 2) {\n showResults(results);\n }\n });\n });\n\n restart.addEventListener('click', restartQuiz);\n };\n\n initializeQuiz();\n});\n","import domReady from '../../shared/utils/dom_ready';\n\nconst update = (el, requiredElement) => {\n const requiredElementChecked = requiredElement.matches(':checked');\n el.style.display = requiredElementChecked ? 'block' : 'none';\n};\n\ndomReady(() => {\n const elements = document.querySelectorAll('[data-show-if-checked]');\n\n elements.forEach(el => {\n const requiredElement = document.getElementById(el.dataset.showIfChecked);\n\n requiredElement.addEventListener(\n 'change',\n () => {\n update(el, requiredElement);\n },\n false\n );\n\n setTimeout(() => {\n update(el, requiredElement);\n }, 1);\n });\n});\n","import domReady from '../../shared/utils/dom_ready';\n\ndomReady(() => {\n if (typeof IntersectionObserver === 'undefined') return;\n\n const scope = document.getElementById('sticky-button-scope');\n\n if (!scope) return;\n\n const button = document.getElementById('sticky-button');\n\n if (!button) return;\n\n new IntersectionObserver((entries) => {\n button.classList.toggle('is-active', entries[0].isIntersecting);\n }).observe(scope);\n});\n","/**\n * Render applicant data from localStorage.\n */\nimport domReady from '../../shared/utils/dom_ready';\n\nconst getData = (rootEl) => {\n const data = [];\n\n [2, 3, 4].forEach((page) => {\n const storedData = JSON.parse(\n window.localStorage.getItem(`${rootEl.dataset.token}-${page}`)\n );\n if (storedData) {\n data.push(storedData);\n } else {\n // when data is incomplete go back to start form\n window.location = rootEl.dataset.startPath;\n }\n });\n\n return data;\n};\n\nconst renderListItem = (list, key, value) => {\n const keyEl = document.createElement('dt');\n keyEl.innerText = key;\n list.appendChild(keyEl);\n\n const valueEl = document.createElement('dd');\n valueEl.innerText = value;\n list.appendChild(valueEl);\n};\n\nconst fillFormField = (key, value) => {\n const field = document.getElementById(`applicant_${key}`);\n if (field) field.value = value;\n};\n\nconst renderPageSummary = (rootEl, data) => {\n // wrapper\n const el = document.createElement('div');\n el.className = 'summary-list';\n\n // title\n const title = document.createElement('strong');\n title.className = 'summary-list__title';\n title.innerText = data.title;\n el.appendChild(title);\n\n // list\n const list = document.createElement('dl');\n list.className = 'summary-list__entries';\n\n // list items\n data.orderedFormKeys.forEach((key) => {\n const entryData = data.form[key];\n\n if (entryData.formKey === 'income_amount') {\n // income_amount\n const value = `${entryData.valueLabel} €`;\n renderListItem(list, entryData.keyLabel, value);\n fillFormField('income_amount', entryData.formValue);\n } else if (entryData.formKey === 'social_benefits_selection') {\n // social benefits\n if (entryData.formValue === 'true') {\n const keys = data.orderedFormKeys.filter(\n (k) =>\n k.match(/social_benefits_/) && !k.match(/social_benefits_selection/)\n );\n const otherSocialBenefits = data.form.other_social_benefits;\n const values = keys.map((k) => {\n // sneak in other social benefits\n if (\n otherSocialBenefits &&\n otherSocialBenefits.formValue &&\n k === 'social_benefits_other'\n ) {\n return `${data.form[k].valueLabel} (${otherSocialBenefits.formValue})`;\n }\n return data.form[k].valueLabel;\n });\n\n renderListItem(list, entryData.keyLabel, values.join(', '));\n\n // create a hidden input field for every selected social benefit\n const form = document.querySelector('form.edit_applicant');\n const formValues = keys.map((k) => data.form[k].formValue);\n formValues.forEach((v) => {\n const field = document.createElement('input');\n field.type = 'hidden';\n field.name = 'applicant[social_benefits][]';\n field.value = v;\n form.appendChild(field);\n });\n } else {\n // no social benefits selected\n renderListItem(list, entryData.keyLabel, entryData.valueLabel);\n }\n } else if (entryData.formKey === 'other_social_benefits') {\n // other social benefits text input\n fillFormField(entryData.formKey, entryData.formValue);\n } else if (!entryData.formKey.match(/social_benefits_/)) {\n // default case\n renderListItem(list, entryData.keyLabel, entryData.valueLabel);\n fillFormField(entryData.formKey, entryData.formValue);\n }\n });\n el.appendChild(list);\n\n // edit link\n const editLink = document.createElement('a');\n editLink.className = 'link link--inline summary-list__edit-link';\n editLink.innerText = rootEl.dataset.editLinkLabel;\n editLink.href = data.editLinkPath;\n el.appendChild(editLink);\n\n return el;\n};\n\nconst renderSummary = (rootEl, data) => {\n if (!data) return;\n\n data.forEach((pageData) => {\n rootEl.appendChild(renderPageSummary(rootEl, pageData));\n });\n};\n\ndomReady(() => {\n const rootEl = document.getElementById('js-summary-page');\n\n if (!rootEl) return;\n\n renderSummary(rootEl, getData(rootEl));\n});\n","import domReady from '../../shared/utils/dom_ready';\n\ndomReady(() => {\n const form = document.querySelector('[data-sync-to-local-storage]');\n\n if (!form) return;\n\n const storageId = `${form.dataset.token}-${form.dataset.page}`;\n const storedValues = JSON.parse(localStorage.getItem(storageId));\n\n if (storedValues) {\n form\n .querySelectorAll('select, input:not([type=hidden])')\n .forEach(inputEl => {\n const storedValue = storedValues.form[inputEl.id];\n\n if (storedValue) {\n if (['radio', 'checkbox'].includes(inputEl.type)) {\n if (inputEl.value === storedValue.formValue) inputEl.checked = true;\n } else {\n inputEl.value = storedValue.formValue;\n }\n }\n });\n }\n\n form.addEventListener(\n 'submit',\n e => {\n if (form.valid) {\n const content = {\n form: {},\n orderedFormKeys: [],\n title: document.querySelector('h1').innerText,\n editLinkPath: form.dataset.currentPath\n };\n\n form\n .querySelectorAll('select, input:not([type=hidden])')\n .forEach(inputEl => {\n if (['radio', 'checkbox'].includes(inputEl.type)) {\n if (inputEl.checked) {\n const label =\n inputEl.parentElement.querySelector('legend') ||\n inputEl.parentElement;\n\n content.form[inputEl.id] = {\n formKey: inputEl.name,\n formValue: inputEl.value,\n keyLabel: label.dataset.label || label.innerText,\n valueLabel: inputEl.nextElementSibling.innerText\n };\n content.orderedFormKeys.push(inputEl.id);\n }\n } else {\n const label = inputEl.parentElement.querySelector('label');\n\n content.form[inputEl.id] = {\n formKey: inputEl.id,\n formValue: inputEl.value,\n keyLabel:\n (label && label.dataset.label) || (label && label.innerText),\n valueLabel: inputEl.matches('select')\n ? inputEl.options[inputEl.selectedIndex].innerText\n : inputEl.value\n };\n content.orderedFormKeys.push(inputEl.id);\n }\n });\n\n localStorage.setItem(storageId, JSON.stringify(content));\n window.location = form.dataset.targetPath;\n }\n\n e.preventDefault();\n },\n false\n );\n});\n","import domReady from '../../shared/utils/dom_ready';\n\ndomReady(() => {\n const tabs = document.querySelectorAll('[data-tab]');\n const tabElements = document.querySelectorAll('[data-tab-content]');\n\n const toggleTabs = (target) => {\n tabs.forEach((item) => {\n item.classList.remove('is-active');\n });\n target.classList.add('is-active');\n };\n\n const toggleContent = (targetElements) => {\n tabElements.forEach((item) => {\n item.classList.remove('is-active');\n });\n targetElements.forEach((item) => {\n item.classList.add('is-active');\n });\n };\n\n tabs.forEach((item) => {\n const tabValue = item.getAttribute('data-tab');\n const targetElements = document.querySelectorAll(\n `[data-tab-content=${tabValue}]`\n );\n item.addEventListener('click', () => {\n toggleTabs(item);\n toggleContent(targetElements);\n });\n });\n\n const tabDeepLink = () => {\n if (typeof URLSearchParams === 'undefined') return;\n const params = new URLSearchParams(window.location.search);\n if (!params.has('item')) return;\n const tabValue = params.get('item');\n const tabItem = document.querySelector(`[data-tab=\"${tabValue}\"]`);\n if (tabItem) {\n toggleTabs(tabItem);\n const tabContent = document.querySelectorAll(`[data-tab-content=\"${tabValue}\"]`);\n toggleContent(tabContent);\n };\n }\n tabDeepLink();\n});\n","import domReady from '../../shared/utils/dom_ready';\nimport inViewport from '../../shared/utils/in_viewport';\n\ndomReady(() => {\n const titleBand = document.querySelectorAll(\n '.title-band:not(.journal-detail__title)'\n );\n\n titleBand.forEach((item) => {\n inViewport(item, () => {\n const titleBandSpans = item.querySelectorAll('span');\n\n titleBandSpans.forEach((el, i) => {\n const atSameLevel =\n i > 0 &&\n titleBandSpans[i - 1].getBoundingClientRect().top ===\n el.getBoundingClientRect().top;\n const delay = (atSameLevel ? i - 1 : i) * 100 + 300;\n el.style.transition = `transform 0.4s ease-out ${delay}ms`;\n el.style.transform = 'translateX(0)';\n });\n });\n });\n});\n","import { createPopper } from '@popperjs/core';\nimport domReady from '../../shared/utils/dom_ready';\n\nconst removeTooltip = () => {\n const el = document.querySelector('.tooltip');\n if (el) el.remove();\n};\n\nconst positionTooltip = (el, tooltip, arrow) => {\n createPopper(el, tooltip, {\n placement: 'top',\n modifiers: [\n {\n name: 'arrow',\n options: {\n element: arrow,\n padding: 48,\n },\n },\n {\n name: 'offset',\n options: {\n offset: [0, 10],\n },\n },\n {\n name: 'flip',\n options: {\n fallbackPlacements: ['top', 'bottom'],\n },\n },\n ],\n });\n};\n\nconst createTooltip = (el) => {\n const fragment = new DocumentFragment();\n\n const tooltip = document.createElement('div');\n tooltip.className = 'tooltip';\n fragment.appendChild(tooltip);\n\n const body = document.createElement('div');\n body.className = 'tooltip__body';\n tooltip.appendChild(body);\n\n const title = el.dataset.tooltipTitle;\n if (title) {\n const titleEl = document.createElement('strong');\n titleEl.innerText = title;\n body.appendChild(titleEl);\n }\n\n const text = el.dataset.tooltipText;\n if (text) {\n const textEl = document.createElement('div');\n textEl.innerHTML = text;\n body.appendChild(textEl);\n }\n\n const arrow = document.createElement('div');\n arrow.className = 'tooltip__arrow';\n tooltip.appendChild(arrow);\n\n const arrowInner = document.createElement('div');\n arrow.appendChild(arrowInner);\n\n document.body.appendChild(fragment);\n\n positionTooltip(el, tooltip, arrow);\n};\n\ndomReady(() => {\n const elements = document.querySelectorAll(\n '[data-tooltip-title], [data-tooltip-text]'\n );\n\n elements.forEach((el) => {\n el.addEventListener(\n 'click',\n (e) => {\n removeTooltip();\n createTooltip(el);\n e.preventDefault();\n e.stopPropagation();\n },\n false\n );\n });\n\n if (elements.length > 0) {\n document.addEventListener('click', removeTooltip, false);\n }\n});\n","import domReady from '../../shared/utils/dom_ready';\n\nconst update = (el, elementsToUncheck) => {\n if (el.checked) {\n elementsToUncheck.forEach((elToUncheck) => {\n elToUncheck.checked = false;\n });\n }\n};\n\ndomReady(() => {\n const elements = document.querySelectorAll('[data-uncheck-if-checked]');\n\n elements.forEach((el) => {\n const id = el.dataset.uncheckIfChecked;\n const elementsToUncheck = [\n ...document.querySelectorAll(`#${id}`),\n ];\n\n update(el, elementsToUncheck);\n\n el.addEventListener(\n 'change',\n () => {\n update(el, elementsToUncheck);\n },\n false\n );\n });\n});\n","import domReady from '../../shared/utils/dom_ready';\nimport scrollit from '../../shared/utils/scrollit';\n\ndomReady(() => {\n if (typeof URLSearchParams === 'undefined') return;\n\n const params = new URLSearchParams(window.location.search);\n\n if (!params.has('p')) return;\n\n const anchorName = params.get('p');\n\n const anchor = document.querySelector(`[js_anchor = \"${anchorName}\"]`);\n\n if (anchor) {\n setTimeout(() => {\n scrollit(anchor, 600, false);\n }, 500);\n }\n});\n","import domReady from '../../shared/utils/dom_ready';\nimport inViewport from '../../shared/utils/in_viewport';\n\nconst translations = {\n pilot: {\n cookie_consent: {\n accept: 'Video starten',\n dismiss: 'Abbrechen',\n info: 'Durch das Starten des Videos willigen Sie ein, dass automatisch Marketing-Cookies gesetzt werden. Ihre Einwilligung ist aus datenschutzrechtlichen Gründen notwendig. Sie können sie jederzeit auf der Seite Cookie-Einstellungen rückgängig machen.',\n title: 'Zulassen von Cookies',\n },\n },\n};\n\ndomReady(() => {\n const loadYoutubeApi = () => {\n const tag = document.createElement('script');\n tag.src = 'https://www.youtube.com/iframe_api';\n const firstScriptTag = document.getElementsByTagName('script')[0];\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n };\n\n const videoLoadContainers = Array.from(\n document.querySelectorAll('[videoload]')\n );\n\n const initializeVideo = () => {\n loadYoutubeApi();\n const videoPlayers = [];\n const videoPreviews = [];\n const playerObject = {};\n\n const onPlayerReady = (event) => {\n const videoOverlays = document.querySelectorAll('.video-overlay');\n if (videoOverlays.length) {\n videoOverlays.forEach((el) => {\n el.addEventListener(\n 'overlayHide',\n () => {\n event.target.pauseVideo();\n },\n false\n );\n });\n }\n\n if (videoPreviews.length) {\n videoPlayers.push(event.target);\n videoPlayers.forEach((el, index) => {\n if (videoPreviews[index]) {\n videoPreviews[index].addEventListener('click', () => {\n videoPreviews[index].style.zIndex = -1;\n el.playVideo();\n });\n }\n });\n }\n };\n\n window.onYouTubePlayerAPIReady = () => {\n videoLoadContainers.forEach((el) => {\n inViewport(el, () => {\n const videoYouTubeId = el.getAttribute('data-videoid');\n const videoPreview = el.parentNode.parentNode.querySelector(\n '.video-preview'\n );\n if (videoPreview) {\n videoPreviews.push(videoPreview);\n }\n playerObject.youTubePlayer = new YT.Player(el, {\n host: 'https://www.youtube-nocookie.com',\n videoId: videoYouTubeId,\n playerVars: { rel: 0, playsinline: 1 },\n events: {\n onReady: onPlayerReady,\n },\n });\n });\n });\n };\n };\n\n const videoOverlayShow = (el) => {\n el.style.display = 'flex';\n el.classList.add('video-overlay--is-active');\n };\n\n // cookie consent modal\n let cookieModalModal;\n let cookieModalContainer;\n let cookieModalDismiss;\n let cookieModalAccept;\n let cookieModalExists = false;\n let cookieModalConsented = false;\n\n const cookieModalCustomConsent = () => {\n Cookiebot.submitCustomConsent(\n Cookiebot.consent.preferences,\n Cookiebot.consent.statistics,\n true\n );\n Cookiebot.hide();\n };\n\n const cookieModalBuild = () => {\n const cookieModalHTML = ``;\n\n const cookieModalFragment = document\n .createRange()\n .createContextualFragment(cookieModalHTML);\n cookieModalModal = cookieModalFragment.querySelector('.js-consent-modal');\n cookieModalContainer = cookieModalFragment.querySelector(\n '.js-consent-modal__container'\n );\n cookieModalAccept = cookieModalFragment.querySelector(\n '.js-consent-modal__accept'\n );\n cookieModalDismiss = cookieModalFragment.querySelectorAll(\n '.js-consent-modal__dismiss'\n );\n cookieModalExists = true;\n document.querySelector('body').appendChild(cookieModalFragment);\n };\n\n const cookieModalShow = (el) => {\n if (Cookiebot.consent.marketing) {\n return;\n }\n if (!cookieModalExists) {\n cookieModalBuild();\n cookieModalModal.addEventListener('click', (event) => {\n if (!cookieModalContainer.contains(event.target)) {\n cookieModalModal.classList.remove('js-consent-modal--is-active');\n }\n });\n } else {\n cookieModalModal.classList.add('js-consent-modal--is-active');\n }\n\n cookieModalDismiss.forEach((item) => {\n item.addEventListener('click', () => {\n cookieModalModal.classList.remove('js-consent-modal--is-active');\n });\n });\n\n cookieModalAccept.addEventListener('click', () => {\n cookieModalModal.remove();\n cookieModalCustomConsent();\n cookieModalConsented = true;\n const target = el.getAttribute('data-video-overlay-link');\n const targetEl = document.querySelector(\n `[data-video-overlay = ${target}]`\n );\n videoOverlayShow(targetEl);\n });\n };\n\n const videoContainers = document.querySelectorAll('.video-preview');\n\n if (videoContainers.length) {\n videoContainers.forEach((item) => {\n inViewport(item, () => {\n item.classList.add('video-preview--zoom');\n });\n });\n }\n\n const cookieCheck = () => {\n if (!Cookiebot.consent.marketing && !cookieModalConsented) {\n videoContainers.forEach((el) => {\n el.addEventListener('click', () => {\n cookieModalShow(el);\n });\n });\n } else {\n initializeVideo();\n }\n };\n\n // cookiebot events\n if (Cookiebot && Cookiebot.consent) {\n if (videoLoadContainers.length) {\n cookieCheck();\n }\n }\n\n window.addEventListener('CookiebotOnDialogInit', () => {\n if (videoLoadContainers.length) {\n cookieCheck();\n }\n });\n\n window.addEventListener('CookiebotOnLoad', () => {\n if (videoLoadContainers.length) {\n cookieCheck();\n }\n });\n\n const videoOverlays = document.querySelectorAll('.video-overlay');\n const hideEvent = new Event('overlayHide');\n\n if (videoOverlays.length) {\n videoOverlays.forEach((item) => {\n const videoOverlayContainer = item.querySelector(\n '.video-overlay__container'\n );\n const videoOverlayClose = item.querySelector('.video-overlay__close');\n const videoOverlayLink = document.querySelector(\n `[data-video-overlay-link = ${item.dataset.videoOverlay}]`\n );\n\n const videoOverlayHide = () => {\n item.dispatchEvent(hideEvent);\n item.classList.remove('video-overlay--is-active');\n setTimeout(() => {\n item.style.display = 'none';\n }, 300);\n };\n\n videoOverlayLink.addEventListener('click', (e) => {\n if (!Cookiebot.consent.marketing) {\n return;\n }\n e.preventDefault();\n videoOverlayShow(item);\n });\n\n videoOverlayClose.addEventListener('click', () => {\n videoOverlayHide();\n });\n\n item.addEventListener('click', (event) => {\n if (!videoOverlayContainer.contains(event.target)) {\n videoOverlayHide();\n }\n });\n });\n }\n});\n","// polyfills\nimport './polyfills/for_each_polyfill';\n\n// shared libs\nimport '../shared/lib/rails';\n\n// libs\nimport 'bootstrap.native';\nimport Swiper, { Navigation, Pagination } from 'swiper';\n\n// shared components\nimport '../shared/components/accordion';\nimport '../shared/components/animate_counter';\nimport '../shared/components/form_validation';\nimport '../shared/components/in_viewport_add_class';\nimport '../shared/components/scroll_to_anchor';\nimport '../shared/components/sepa_format';\nimport '../shared/components/telephone_format';\nimport '../shared/components/newsletter_subscription';\n\n// components\nimport './components/check_if_checked';\nimport './components/collapse';\nimport './components/delete_local_applicant_data';\nimport './components/debit_mandate_configurator';\nimport './components/debit_mandate_goal_tracking';\nimport './components/email_successfully_confirmed';\nimport './components/faq';\nimport './components/header';\nimport './components/hide_if_checked';\nimport './components/journal';\nimport './components/one_million';\nimport './components/overlay';\nimport './components/quiz';\nimport './components/show_if_checked';\nimport './components/sticky_button';\nimport './components/summary_page';\nimport './components/sync_form_to_localstorage';\nimport './components/tabs';\nimport './components/title_band';\nimport './components/tooltip';\nimport './components/uncheck_if_checked';\nimport './components/url_parameter_scroll_to';\nimport './components/video';\n\n/* eslint-disable-next-line */\nnew Swiper('[data-controller=\"carousel\"]', {\n modules: [Navigation, Pagination],\n speed: 500,\n autoHeight: true,\n pagination: {\n el: '.swiper-pagination',\n clickable: true,\n },\n a11y: {\n enabled: true,\n prevSlideMessage: 'vorherige',\n nextSlideMessage: 'nächste',\n },\n});\n","import domReady from '../utils/dom_ready';\n\nconst measureHeight = (el) => {\n const height = el.scrollHeight;\n return `${height}px`;\n};\n\nconst itemBody = (item) =>\n item.querySelector('.accordion__body, [data-accordion-item-body]');\nconst itemHead = (item) =>\n item.querySelector('.accordion__head, [data-accordion-item-head]');\nconst itemIsOpen = (item) => item.matches('.is-open');\n\nconst openItem = (item) => {\n item.classList.add('is-open');\n const body = itemBody(item);\n const height = measureHeight(body);\n body.style.height = 0;\n setTimeout(() => {\n body.style.height = height;\n setTimeout(() => {\n body.style.height = 'auto';\n }, 300);\n }, 100);\n};\n\nconst closeItem = (item) => {\n item.classList.remove('is-open');\n const body = itemBody(item);\n body.style.height = `${body.clientHeight}px`;\n setTimeout(() => {\n body.style.height = 0;\n }, 100);\n};\n\ndomReady(() => {\n const items = document.querySelectorAll(\n '.accordion__item, [data-accordion-item]'\n );\n\n items.forEach((item) => {\n itemHead(item).addEventListener('click', (e) => {\n if (itemIsOpen(item)) {\n closeItem(item);\n } else {\n openItem(item);\n }\n e.preventDefault();\n });\n });\n\n const accordionDeepLink = () => {\n if (typeof URLSearchParams === 'undefined') return;\n const params = new URLSearchParams(window.location.search);\n if (!params.has('item')) return;\n const item = params.get('item').split('_');\n const itemIndex = item[1] - 1;\n if (items[itemIndex]) {\n openItem(items[itemIndex]);\n }\n };\n accordionDeepLink();\n});\n","if (window.NodeList && !NodeList.prototype.forEach) {\n NodeList.prototype.forEach = Array.prototype.forEach;\n}\n"],"names":["CSS_CLASS_MESSAGE","DDMMYYYY","VALID_EMAIL","updateEl","el","message","setAttribute","removeAttribute","messageEl","isCheckbox","type","container","parentElement","value","querySelector","classList","remove","innerHTML","document","createElement","className","appendChild","convertToDate","Date","trim","split","reverse","join","VALIDATIONS","matches","length","param","match","RegExp","test","parseInt","validity","typeMismatch","IBAN","otherValue","getElementById","ELEMENTS","map","v","replace","g","toLowerCase","validate","valid","selectId","expectedValue","select","requiredCheckbox","dataset","validateOnlyIfChecked","requiredSelectedValue","validateOnlyIfSelected","JSON","parse","options","selectedIndex","validateCheckedMessage","validateRadioCheckedMessage","every","string","property","charAt","toUpperCase","slice","validateOnChange","eventListenerRegistered","addEventListener","domReady","querySelectorAll","forEach","form","elements","validIban","once","submitButtons","Array","from","reduce","validateDisabled","e","disabled","preventDefault","stopPropagation","scrollit","ujs","start","destination","duration","nav","extra","Math","easeInOutQuad","t","b","c","d","s","header","navOffset","getBoundingClientRect","height","extraOffset","destinationOffset","top","bodyOffset","scrollPos","window","scrollY","change","currentTime","increment","animateScroll","amount","scrollTo","requestAnimationFrame","callback","readyState","IntersectionObserver","entries","observer","isIntersecting","disconnect","observe","animationStarted","animateCounter","finalNumber","textContent","changeFinalNumber","number","animate","time","progressInPercentage","min","floor","toLocaleString","setTimeout","inViewport","add","style","width","offsetWidth","inViewportAddClass","anchorTargets","fixedHeader","hasFixedHeader","body","contains","targetValue","getAttribute","targetItem","element","toUpper","str","definitions","ibanMask","IMask","mask","code","res","substring","prepare","countryCode","dispatch","appended","dynamicMasked","current","compiledMasks","find","m","startsWith","event","Event","on","dispatchEvent","requestStartTime","subscriptionForm","renderCompleted","growButtonOrigin","growButtonTarget","initialWidth","initialHeight","offsetHeight","display","finalWidth","finalHeight","children","opacity","growButton","onSuccess","timeElapsed","now","removeEventListener","fathom","trackGoal","update","requiredElements","some","r","checked","id","checkIfChecked","concat","requiredEl","debitButton","paypalButton","debitScreen","paypalScreen","input","rangeInput","ratio","formerInputValue","formerlyActiveButton","measureHeight","scrollHeight","collapseContent","item","collapseButton","collapseIsOpen","openItem","closeItem","page","localStorage","removeItem","token","updateRangeInput","amountTotal","newValue","round","max","amountBge","amountOrganization","innerText","updateRangeInputLabels","onRangeInputChange","onAmountChange","updateHiddenAmountTotalField","button","updateSubmitButton","activeButton","selectButton","unselectActiveButton","updateInputAppearance","activeElement","onButtonClick","target","onInputFocus","initialValue","onInputType","onInputBlur","onDebitClicked","onPaypalClicked","focus","URLSearchParams","params","location","search","has","goalId","get","blurryBackground","blurryOverlay","hideBackground","hideOverlay","omqContainer","includes","navLink","navIsOpen","closeMobileNavigation","headerBar","burgerMenu","navSlideOut","index","innerWidth","transitionDuration","transitionDelay","href","subMenuToggles","subMenu","headerLinks","closeMenu","openMenu","toggle","menu","link","threshold","innerHeight","pageOffset","pageYOffset","currentOffset","hide","requiredElement","requiredElementChecked","hideIfChecked","journalContentTitle","journalTeaserTitle","journalDetailTitle","wrapStrings","wrappedString","lineCount","spans","spanOffsets","push","Set","size","lines","parentNode","apiPath","isInViewport","isUpdating","timeout","valueEl","stop","clearTimeout","hidden","fetch","then","response","ok","Error","json","data","catch","overlay","overlayContainer","overlayClose","overlayLinks","overlayContent","overlayHide","overlayShow","initializeQuiz","quiz","quizClone","cloneNode","cards","quizResultContainer","quizResultItems","results","restart","facebookLink","handleStageHeight","clientHeight","showResults","i","answer","parameterString","sharepicUrl","origin","pathname","dataFacebookMessage","facebookMessage","encodeURIComponent","buildShareLink","negative","negativeButton","positive","positiveButton","neutral","neutralButton","showIfChecked","scope","renderListItem","list","key","keyEl","fillFormField","field","renderSummary","rootEl","pageData","title","orderedFormKeys","entryData","formKey","valueLabel","keyLabel","formValue","keys","filter","k","otherSocialBenefits","other_social_benefits","values","name","editLink","editLinkLabel","editLinkPath","renderPageSummary","storedData","getItem","startPath","getData","storageId","storedValues","inputEl","storedValue","content","currentPath","label","nextElementSibling","setItem","stringify","targetPath","tabs","tabElements","toggleTabs","toggleContent","targetElements","tabValue","tabItem","tabContent","tabDeepLink","titleBandSpans","delay","transition","transform","removeTooltip","createTooltip","fragment","DocumentFragment","tooltip","tooltipTitle","titleEl","text","tooltipText","textEl","arrow","arrowInner","createPopper","placement","modifiers","padding","offset","fallbackPlacements","positionTooltip","elementsToUncheck","elToUncheck","uncheckIfChecked","anchorName","anchor","translations","cookie_consent","accept","dismiss","info","cookieModalModal","cookieModalContainer","cookieModalDismiss","cookieModalAccept","videoLoadContainers","initializeVideo","tag","src","firstScriptTag","getElementsByTagName","insertBefore","loadYoutubeApi","videoPlayers","videoPreviews","playerObject","onPlayerReady","videoOverlays","pauseVideo","zIndex","playVideo","onYouTubePlayerAPIReady","videoYouTubeId","videoPreview","youTubePlayer","YT","Player","host","videoId","playerVars","rel","playsinline","events","onReady","videoOverlayShow","cookieModalExists","cookieModalConsented","cookieModalShow","cookieModalHTML","cookieModalFragment","Cookiebot","consent","marketing","createRange","createContextualFragment","submitCustomConsent","preferences","statistics","targetEl","videoContainers","cookieCheck","hideEvent","videoOverlayContainer","videoOverlayClose","videoOverlayLink","videoOverlay","videoOverlayHide","Swiper","modules","Navigation","Pagination","speed","autoHeight","pagination","clickable","a11y","enabled","prevSlideMessage","nextSlideMessage","itemBody","items","itemHead","itemIsOpen","itemIndex","accordionDeepLink","NodeList","prototype"],"sourceRoot":""}