{"version":3,"names":["startseiteEndpoint","profilEndpoint","config","gebaerdenSprachEndpoint","leichteSprachEndpoint","sucheEndpoint","glockenEndpoint","scriptName","bescheideEndpoint","termineEndpoint","verlaufEndpoint","einstellungenEndpoint","maintenanceInfoUrl","customLanguages","apiClientId","ConfigProvider","get","this","setupConfig","globalThis.BahfConfig","isMockLoginAllowed","Utilities","outerWidth","el","width","offsetWidth","style","getComputedStyle","parseInt","marginLeft","marginRight","isHidden","offsetHeight","getClientRects","length","createElem","nodeName","attrsList","text","node","document","createElement","forEach","elem","attr","Object","keys","val","setAttribute","replace","append","getFocusableElements","element","arrFocusables","querySelectorAll","push","filter","hasAttribute","getAttribute","getFirstFocusable","focusables","getHeader","Promise","resolve","headerComponent","querySelector","classList","contains","shadowRoot","headerElem","observer","MutationObserver","mutations","mu","muTarget","disconnect","muTargetShadowRoot","observe","attributes","attributeFilter","e","console","log","getInitializedPattern","target","supportsPassiveEvent","supportsPassive","opts","defineProperty","window","addEventListener","removeEventListener","addArrowKeyNavigation","container","items","next","updateTabIndex","item","i","removeAttribute","key","stopPropagation","preventDefault","focus","preventScroll","isInViewport","elemPosition","getBoundingClientRect","checkTopLeft","top","left","windowHeight","innerHeight","documentElement","clientHeight","windowWidth","innerWidth","clientWidth","bottom","right","isSafari","userAgent","navigator","toLowerCase","includes"],"sources":["config/config.prod.ts","src/config/ConfigProvider.ts","node_modules/@design/bapf-pattern-library/source/js/_utilities.js"],"sourcesContent":["import { IConfiguration } from './IConfiguration';\n\nconst startseiteEndpoint = 'https://www.arbeitsagentur.de/';\nconst profilEndpoint = 'https://web.arbeitsagentur.de/profil/profil-ui/pd/';\n\nconst config: IConfiguration = {\n // stage-abhängige Konfigurationen müssen hier definiert werden\n // Beispiel:\n // someEndpoint: (param1, param2) => `https://beispiel-url.de/${param1}/${param2}`,\n gebaerdenSprachEndpoint: 'https://www.arbeitsagentur.de/gebaerdensprache',\n leichteSprachEndpoint: 'https://www.arbeitsagentur.de/leichte-sprache',\n startseiteEndpoint: startseiteEndpoint,\n sucheEndpoint: 'https://web.arbeitsagentur.de/portal/metasuche/suche/information',\n glockenEndpoint: (scriptName) =>\n `https://web.arbeitsagentur.de/miso/miso-webcomponents/miso-glocke/${scriptName}`,\n //Profilmenue\n profilEndpoint: profilEndpoint,\n bescheideEndpoint: 'https://web.arbeitsagentur.de/besch/ui/pd/',\n termineEndpoint: 'https://web.arbeitsagentur.de/portal/termine/pd',\n verlaufEndpoint: 'https://web.arbeitsagentur.de/verlauf/verlauf-ui/pd/',\n einstellungenEndpoint: 'https://web.arbeitsagentur.de/profil/profil-ui/pd/einstellungen',\n maintenanceInfoUrl: 'https://rest.arbeitsagentur.de/cmsportal/cmsportal-api/pc/wartungshinweis',\n customLanguages: [],\n apiClientId: 'cms-ui',\n};\n\nexport default config;\n","import { IConfiguration } from '../../config/IConfiguration';\n\nexport class ConfigProvider {\n private static config: IConfiguration;\n\n static get(): IConfiguration {\n if (!this.config) this.setupConfig();\n\n return this.config;\n }\n\n static setupConfig() {\n this.config = globalThis.BahfConfig;\n }\n\n static isMockLoginAllowed() {\n // @ts-ignore\n return '__allow_mock_login__' === 'allow';\n }\n}\n","/*! @design/bapf-pattern-library v3.7.0 | 09.12.2024 | _utilities.js */\nexport class Utilities {\r\n\r\n /**\r\n * Berechnet die Breite des Elements über den Margin\r\n * @param {HTMLElement} el\r\n * @return {number} Breite über Margin\r\n */\r\n static outerWidth (el) {\r\n let width = el.offsetWidth;\r\n const style = getComputedStyle(el);\r\n\r\n width += parseInt(style.marginLeft) + parseInt(style.marginRight);\r\n return width;\r\n }\r\n\r\n /**\r\n * Überprüft ob das Element versteckt ist oder sich in einem versteckten Container befindet\r\n * @param {HTMLElement} el\r\n * @return {boolean}\r\n */\r\n static isHidden (el) {\r\n return !(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\r\n }\r\n\r\n /**\r\n * Erstellt ein DOM-Element, setzt optionale Attribute und Text\r\n * @param {string} nodeName example 'div'\r\n * @param {object | undefined} attrsList Beispiel: {'class': 'class1 class2', 'type': 'button'}\r\n * @param {string | undefined} text\r\n * @return {HTMLElement}\r\n */\r\n static createElem (nodeName, attrsList, text) {\r\n const node = document.createElement(nodeName);\r\n if (attrsList && attrsList.length > 0) {\r\n attrsList.forEach((elem) => {\r\n const attr = Object.keys(elem)[0];\r\n const val = elem[attr];\r\n node.setAttribute(attr.replace('__', '-'), val);\r\n });\r\n }\r\n\r\n if (text) {\r\n node.append(text);\r\n }\r\n return node;\r\n }\r\n\r\n /**\r\n * Gibt alle fokusierbaren Elemente zurück\r\n * @param {HTMLElement} element Root Element\r\n * @return {Array}\r\n */\r\n static getFocusableElements (element) {\r\n const arrFocusables = [];\r\n element.querySelectorAll('a[href], button, input:not([type=hidden]), textarea, select, details, [tabindex]:not([tabindex=\"-1\"])').forEach((elem) => arrFocusables.push(elem));\r\n return arrFocusables.filter(el => !el.hasAttribute('disabled') && !el.getAttribute('aria-hidden'));\r\n }\r\n\r\n /**\r\n * Get first focusable element\r\n * Gibt das erste fokusierbare Element zurück\r\n * @param {HTMLElement} element Root Element\r\n * @return {HTMLElement}\r\n */\r\n static getFirstFocusable (element) {\r\n const focusables = this.getFocusableElements(element);\r\n return focusables.length ? focusables[0] : element;\r\n }\r\n\r\n /**\r\n * Gibt das BA Header DOM-Element aus der WebComponent ShadowDOM (hydriert oder nicht) oder aus dem statischen DOM zurück\r\n * @return {Promise}\r\n */\r\n static async getHeader () {\r\n return new Promise(resolve => {\r\n\r\n // Suche nach dem Header als WebComponent\r\n const headerComponent = document.querySelector('bahf-header') || document.querySelector('bahf-header-v5') || null;\r\n if (headerComponent) {\r\n\r\n // Element ist bereits hydriert und als Header im ShadowDOM\r\n /* istanbul ignore next */\r\n if (headerComponent.classList.contains('hydrated')) {\r\n const shadowRoot = /** @type {ShadowRoot} */ (headerComponent.shadowRoot);\r\n const headerElem = /** @type {HTMLElement | null} */ (shadowRoot.querySelector('.ba-header') || null);\r\n resolve(headerElem);\r\n }\r\n\r\n // Das Element ist noch nicht hydriert, warte auf stencil init / hydration\r\n /* istanbul ignore next */\r\n try {\r\n const observer = new MutationObserver((mutations) => {\r\n mutations.forEach(mu => {\r\n const muTarget = /** @type {HTMLElement} */ (mu.target);\r\n if (muTarget.classList.contains('hydrated')) {\r\n observer.disconnect();\r\n const muTargetShadowRoot = /** @type {ShadowRoot} */ (muTarget.shadowRoot);\r\n const headerElem = /** @type {HTMLElement | null} */ (muTargetShadowRoot.querySelector('.ba-header') || null);\r\n resolve(headerElem);\r\n }\r\n });\r\n });\r\n observer.observe(headerComponent, {\r\n attributes : true,\r\n attributeFilter: ['class'],\r\n });\r\n } catch (e) {\r\n console.log('MutationObserver nicht unterstützt, bitte Browser updaten.'); //NOSONAR\r\n }\r\n }\r\n\r\n // Suche nach dem Header als DOM-Element\r\n else {\r\n resolve(document.querySelector('.ba-header') || null);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Gibt das initialisierte Pattern zurück\r\n * @param {HTMLElement} element Pattern-Element\r\n * @return {Promise}\r\n */\r\n static async getInitializedPattern (element) {\r\n return new Promise((resolve) => {\r\n\r\n if (!element) {\r\n resolve(null);\r\n return;\r\n }\r\n\r\n // Element ist bereits initialisiert\r\n if (element && element.hasAttribute('data-initialized')) {\r\n resolve(element);\r\n return;\r\n }\r\n\r\n // Warte bis das Element initialisiert wurde (Pattern.init())\r\n try {\r\n const observer = new MutationObserver((mutations) => {\r\n mutations.forEach(mu => {\r\n const muTarget = /** @type {HTMLElement} */ (mu.target);\r\n if (muTarget.hasAttribute('data-initialized')) {\r\n observer.disconnect();\r\n resolve(mu.target);\r\n }\r\n });\r\n });\r\n observer.observe(element, {\r\n attributes : true,\r\n attributeFilter: ['data-initialized'],\r\n });\r\n } catch (e) {\r\n /* istanbul ignore next */\r\n console.log('MutationObserver nicht unterstützt, bitte Browser updaten.', e); //NOSONAR\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Überprüfe ob der Browser passive Event Listener unterstützt\r\n * @returns {boolean}\r\n */\r\n static supportsPassiveEvent () {\r\n let supportsPassive = false;\r\n try {\r\n const opts = Object.defineProperty({}, 'passive', {\r\n get: function () {\r\n supportsPassive = true;\r\n }\r\n });\r\n window.addEventListener('testPassive', null, opts);\r\n window.removeEventListener('testPassive', null, opts);\r\n } catch (e) {}\r\n return supportsPassive;\r\n }\r\n\r\n /**\r\n * Füge eine Navigation über Pfeiltasten/Tab hinzu (beispielsweise für Toolbars)\r\n * @param {HTMLElement} container Toolbar Root-Element\r\n * @param {NodeListOf} items Toolbar Button-Elemente\r\n */\r\n static addArrowKeyNavigation (container, items) {\r\n let next = 0;\r\n\r\n // Schließe Einträge der Tab Navigation aus\r\n const updateTabIndex = () => {\r\n items.forEach((item, i) => {\r\n i === next ? item.removeAttribute('tabindex') : item.setAttribute('tabindex', '-1');\r\n });\r\n };\r\n updateTabIndex();\r\n\r\n // move cursor focus via arrow/home/end keys\r\n // Bewegt den Cursor Fokus via Pfeiltasten/Home/End\r\n container.addEventListener('keydown', (e) => {\r\n if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n next = next === 0 ? items.length - 1 : next - 1;\r\n } else if (e.key === 'ArrowRight' || e.key === 'ArrowDown') {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n next = next === items.length - 1 ? 0 : next + 1;\r\n } else if (e.key === 'Home') {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n next = 0;\r\n } else if (e.key === 'End') {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n next = items.length - 1;\r\n }\r\n items[next].focus({ preventScroll: true });\r\n updateTabIndex();\r\n });\r\n }\r\n\r\n /**\r\n * Überprüft ob ein Element innerhalb des sichtbaren Bereichs liegt\r\n * @param {HTMLElement} element\r\n * @return {boolean}\r\n */\r\n static isInViewport (element) {\r\n const elemPosition = element.getBoundingClientRect();\r\n const checkTopLeft = elemPosition.top >= 0 && elemPosition.left >= 0;\r\n const windowHeight = window.innerHeight || document.documentElement.clientHeight;\r\n const windowWidth = window.innerWidth || document.documentElement.clientWidth;\r\n return (checkTopLeft && elemPosition.bottom <= windowHeight && elemPosition.right <= windowWidth);\r\n }\r\n\r\n /**\r\n * Überprüft, ob aktueller Browser Safari ist (iOS, MacOS)\r\n * @returns {boolean}\r\n */\r\n static isSafari () {\r\n const userAgent = navigator.userAgent.toLowerCase();\r\n return !userAgent.includes('chrome') && userAgent.includes('safari');\r\n }\r\n}\r\n"],"mappings":"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","ignoreList":[]}