{"version":3,"file":"component-navigationDesktop.chunk.js","mappings":"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","sources":["webpack:///./assets/src/scripts/base/baseComponent.ts","webpack:///./assets/src/scripts/base/commonInterface.ts","webpack:///./assets/src/scripts/components/navigationDesktop.ts","webpack:///./assets/src/scripts/utils/a11yUtils.ts","webpack:///./assets/src/scripts/utils/focusableElementUtils.ts","webpack:///./assets/src/utils/eventBus.ts"],"sourcesContent":["import deepFreeze from '../utils/freeze';\nimport CommonInterface from './commonInterface';\nimport Bean from 'bean';\nexport default class BaseComponent extends CommonInterface {\n    /**\n     *\n     * constructor\n     *\n     * @param {Element} element\n     */\n    constructor(element) {\n        super();\n        this.observer = new IntersectionObserver(entries => {\n            if (entries[0].isIntersecting) {\n                const items = [...entries[0].target.querySelectorAll('[data-animated=\"false\"]')];\n                items.forEach((item, i) => {\n                    setTimeout(() => {\n                        item.setAttribute('data-animated', 'true');\n                    }, 300 * i);\n                });\n                this.observer.unobserve(entries[0].target);\n            }\n        }, {\n            threshold: 0.5\n        });\n        this._componentElement = element;\n        this._componentElement.setAttribute('data-component-init', 'true');\n        this.observer.observe(this._componentElement);\n    }\n    /**\n     * @returns {HTMLElement}\n     */\n    get $el() {\n        return this._componentElement;\n    }\n    get $options() {\n        const compOptions = {};\n        const options = Object.assign({}, this.$el.dataset);\n        const optionsEntires = Object.keys(options).filter((entry) => entry.includes('option'));\n        optionsEntires.forEach((entry) => {\n            const cleanEntry = BaseComponent.cleanOptionKey(entry);\n            let optionValue;\n            if (options[entry].includes('{') && options[entry].includes('}')) {\n                optionValue = JSON.parse(options[entry].replace(/'/g, '\"'));\n            }\n            else {\n                optionValue = BaseComponent.convertType(options[entry]);\n            }\n            compOptions[cleanEntry] = optionValue;\n        });\n        return deepFreeze(compOptions);\n    }\n    get COMPONENT_NAME() {\n        return this.__proto__.constructor.name;\n    }\n    static convertType(option) {\n        let optionReturn;\n        switch (option) {\n            case 'false':\n                optionReturn = false;\n                break;\n            case 'true':\n                optionReturn = true;\n                break;\n            case 'null':\n                optionReturn = null;\n                break;\n            default:\n                optionReturn = option;\n                break;\n        }\n        return optionReturn;\n    }\n    static cleanOptionKey(key) {\n        const str = key.replace('option', '');\n        return `${str.charAt(0).toLocaleLowerCase()}${str.slice(1)}`;\n    }\n    /**\n     *\n     * $on\n     *\n     * @param {String} events\n     * @param {Function} cb\n     * @param {Element} [element = this.$el]\n     * @param {Array|String|Element} [elements = null]\n     */\n    $on(events, cb, element = this.$el, elements = null) {\n        if (!element || !events || !cb)\n            return;\n        if (!elements) {\n            Bean.on(element, events, (e) => {\n                if (e)\n                    e.stopPropagation();\n                cb(e);\n            });\n        }\n        else {\n            Bean.on(element, events, elements, (e) => {\n                if (e)\n                    e.stopPropagation();\n                cb(e);\n            });\n        }\n    }\n    /**\n     *\n     * $one\n     *\n     * @param {String} events\n     * @param {Function} cb\n     * @param {Element} [element = this.$el]\n     */\n    $one(events, cb, element = this.$el) {\n        Bean.one(element, events, cb);\n    }\n    /**\n     *\n     * $off\n     *\n     * @param {String} events\n     * @param {Element} [element = this.$el]\n     */\n    $off(events, element = this.$el) {\n        Bean.off(element, events);\n    }\n    /**\n     *\n     * $fire\n     *\n     * @param {String} events\n     * @param {Element} [element = this.$el]\n     */\n    $fire(events, element = this.$el) {\n        Bean.fire(element, events);\n    }\n    /**\n     *\n     * @param {HTMLElement} [container]\n     */\n    loading(container, message = '') {\n        this.EMIT(this.CUSTOM_MESSAGES.LOADER_EVENTS.show, {\n            container: container || this.$el,\n            message\n        });\n    }\n    /**\n     *\n     * @param {HTMLElement} [container]\n     * @param {String} [message]\n     * @param {String} [icon]\n     * @param {Boolean} [error=false]\n     */\n    endLoading(container, message, icon, error = false, time) {\n        this.EMIT(this.CUSTOM_MESSAGES.LOADER_EVENTS.hide, {\n            container: container || this.$el,\n            message,\n            icon,\n            error,\n            time\n        });\n    }\n}\n","import config from 'gia/config';\nimport EventBus from '../libs/eventBus';\nimport CustomMessages from '../constants/customMessages';\nimport { getFirstFocusable, getAllFocusableElements } from '../utils/focusableElementUtils';\nexport default class CommonInterface {\n    constructor() {\n        config.set('log', true);\n        this._grabMessages();\n    }\n    get CUSTOM_MESSAGES() {\n        return CustomMessages;\n    }\n    get Messages() {\n        return {};\n    }\n    _checkMessages() {\n        for (const message in this.Messages) {\n            if (window.eventQueue.get(message)) {\n                const ref = this.Messages[message].bind(this);\n                window.eventQueue.get(message).map((payload) => {\n                    ref(payload);\n                });\n                window.eventQueue.delete(message);\n            }\n        }\n    }\n    _grabMessages() {\n        this._messages = {};\n        for (const message in this.Messages) {\n            if (this.Messages[message]) {\n                const __ref__ = this.Messages[message].bind(this);\n                this._messages[message] = __ref__;\n                this.GRAB(message, __ref__);\n            }\n        }\n    }\n    _ungrabMessages() {\n        for (const message in this._messages) {\n            this.UNGRAB(message, this._messages[message]);\n        }\n    }\n    objectIsEmpty(object) {\n        for (var key in object) {\n            if (object.hasOwnProperty(key))\n                return false;\n        }\n        return true;\n    }\n    /**\n     *\n     * EMIT\n     *\n     * @param {string} message\n     * @param {Object} payload\n     */\n    EMIT(message, payload) {\n        return EventBus.emit(message, payload);\n    }\n    /**\n     *\n     * GRAB\n     *\n     * @param {string} message\n     * @param {Function} callBack\n     */\n    GRAB(message, callBack) {\n        if (!callBack)\n            return;\n        EventBus.on(message, callBack);\n    }\n    /**\n     *\n     * UNGRAB\n     *\n     * @param {string} message\n     * @param {Function} callBack\n     */\n    UNGRAB(message, callBack) {\n        if (!callBack)\n            return;\n        EventBus.off(message, callBack);\n    }\n    getFirstFocusable(parent) {\n        return getFirstFocusable(parent);\n    }\n    getFocusableElements(parent) {\n        return getAllFocusableElements(parent);\n    }\n    _destroy() {\n        this._ungrabMessages();\n    }\n}\n","import a11yUtils from '../utils/a11yUtils';\nimport BaseComponent from '../base/baseComponent';\nimport customEventBus from '@utils/eventBus';\nimport customMessages from '../constants/customMessages';\nexport default class NavigationDesktop extends BaseComponent {\n    get SELECTORS() {\n        return {\n            modal: '.header-navigation-modal',\n        };\n    }\n    get CLASSESS() {\n        return {\n            triggerActive: 'active',\n            modalActive: 'is-open',\n        };\n    }\n    constructor(element) {\n        super(element);\n        if (window.getComputedStyle(this.$el).display !== \"none\") {\n            this.listenForTriggers();\n        }\n    }\n    listenForTriggers() {\n        let triggers = this.$el.querySelectorAll('[data-dnav-trigger]');\n        triggers.forEach((trigger) => {\n            trigger.addEventListener('mouseover', (e) => {\n                this.closeAllModals();\n                let trg = e.currentTarget;\n                trg.focus();\n                this.openModal(trg.getAttribute('data-dnav-trigger'));\n            });\n            trigger.addEventListener('keydown', (e) => {\n                if (e.key === 'Enter') {\n                    this.closeAllModals();\n                    let trg = e.currentTarget;\n                    this.openModal(trg.getAttribute('data-dnav-trigger'));\n                }\n            });\n            trigger.addEventListener('click', (e) => {\n                customEventBus.emit(customMessages.SFMC.CATEGORY.click, { category: trigger.dataset.clicktriggerCatId });\n                window.location.href = trigger.dataset.url;\n            });\n        });\n    }\n    openModal(modalId) {\n        let mdl = document.getElementById(modalId);\n        if (!mdl) {\n            throw new Error('no nav modals with ID ' + modalId);\n        }\n        mdl.setAttribute('aria-hidden', 'false');\n        mdl.classList.add(this.CLASSESS.modalActive);\n        let modalToOpen = this.$el.querySelector(`[data-dnav-trigger=\"${mdl.id}\"]`);\n        modalToOpen.classList.add(this.CLASSESS.triggerActive);\n        a11yUtils.focusTrapOn(mdl);\n        this.$el.closest('header.header').classList.add('fix-scroll');\n        mdl.addEventListener(\"mouseleave\", () => {\n            this.closeModal(mdl.id);\n        });\n        mdl.addEventListener(\"keydown\", (e) => {\n            if (e.key === \"Escape\") {\n                this.closeModal(mdl.id);\n            }\n        });\n        let mdlLinks = mdl.querySelectorAll(\"[data-clicktrigger-cat-id]\");\n        mdlLinks.forEach((mdlLink) => {\n            mdlLink.addEventListener('click', (e) => {\n                e.preventDefault();\n                customEventBus.emit(customMessages.SFMC.CATEGORY.click, { category: mdlLink.dataset.clicktriggerCatId });\n                window.location.href = mdlLink.getAttribute('href');\n            });\n        });\n    }\n    closeModal(modalId) {\n        let mdl = document.getElementById(modalId);\n        if (!mdl) {\n            throw new Error('no nav modals to close with ID ' + modalId);\n        }\n        mdl.setAttribute('aria-hidden', 'true');\n        mdl.classList.remove(this.CLASSESS.modalActive);\n        this.$el.querySelector(`[data-dnav-trigger=\"${mdl.id}\"]`).classList.remove(this.CLASSESS.triggerActive);\n        a11yUtils.focusTrapOff();\n        this.$el.closest('header.header').classList.remove('fix-scroll');\n        // customEventBus.emit('navigation:close', {'modalId': modalId});\n    }\n    closeAllModals() {\n        let modals = [...this.$el.querySelectorAll(this.SELECTORS.modal)].filter(modal => {\n            return modal.classList.contains(this.CLASSESS.modalActive);\n        });\n        modals.forEach(modal => { this.closeModal(modal.id); });\n    }\n}\n","'use strict';\nexport default {\n    keycode: {\n        // http://keycode.info/\n        enter: 13,\n        space: 32,\n        esc: 27,\n        arrowUp: 38,\n        arrowRight: 39,\n        arrowDown: 40,\n        arrowLeft: 47,\n    },\n    focusedElementsBeforeModal: [],\n    focusableSelectors: 'button:not([disabled]), [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"]), [role=\"button\"]',\n    focusTrapOn(modal, isPopup = false) {\n        this.focusedElementsBeforeModal.push(document.activeElement);\n        const focusableElements = this.getAllFocusableElements(modal);\n        const firstFocusableElement = !isPopup ? focusableElements[0] : modal;\n        const lastFocusableElement = focusableElements[focusableElements.length - 1];\n        if (firstFocusableElement) {\n            firstFocusableElement.focus();\n        }\n        modal.addEventListener('keydown', (e) => this.trapTabKey(e, firstFocusableElement, lastFocusableElement));\n    },\n    keydownHandlerPopup(e, firstFocusableElement, lastFocusableElement) {\n        this.trapTabKey(e, firstFocusableElement, lastFocusableElement);\n    },\n    focusTrapOff() {\n        if (this.focusedElementsBeforeModal.length === 0) {\n            return;\n        }\n        let focusedElementNow = this.focusedElementsBeforeModal[this.focusedElementsBeforeModal.length - 1];\n        focusedElementNow.focus();\n        this.focusedElementsBeforeModal.pop();\n    },\n    trapTabKey(e, firstEl, lastEl) {\n        if (e.keyCode === 9) {\n            // TAB\n            if (e.shiftKey) {\n                // + SHIFT\n                if (document.activeElement === firstEl) {\n                    e.preventDefault();\n                    lastEl.focus();\n                }\n            }\n            else {\n                if (document.activeElement === lastEl) {\n                    e.preventDefault();\n                    firstEl.focus();\n                }\n            }\n        }\n    },\n    getFirstFocusable(parent) {\n        return this.getAllFocusableElements(parent)[0];\n    },\n    getAllFocusableElements(parent, noFilter = false) {\n        if (parent) {\n            return [...parent.querySelectorAll(this.focusableSelectors)].filter((element) => {\n                // check if isn't hidden (:visible selector not workink in plain js)\n                return element.offsetWidth > 0 || element.offsetHeight > 0;\n            });\n        }\n    },\n    toggleEveryTabindex(wrapper, value = -1) {\n        if (!wrapper) {\n            console.error('Wrapper element is needed in toggleEveryTabindex()');\n            return;\n        }\n        this.getAllFocusableElements(wrapper).forEach((el) => {\n            el.setAttribute('tabindex', value);\n        });\n    },\n};\n","const focusableSelectors = 'button, [href]:not([aria-hidden=\"true\"]), input, select, textarea, [tabindex]:not([tabindex=\"-1\"]), [role=\"button\"]';\nexport const getFirstFocusable = (parent) => parent.querySelector(focusableSelectors);\nexport const getAllFocusableElements = (parent) => parent.querySelectorAll(focusableSelectors);\n","import config from 'gia/config';\nimport eventbus from 'gia/eventbus';\nconst customEventBus = eventbus; // assign needed cause gia don't offer types\ncustomEventBus.emit = (event, eventObject) => {\n    eventObject._name = event;\n    if (customEventBus.list[event]) {\n        if (config.get('log')) {\n            console.info(`%c[${event}]%c event captured by ${customEventBus.list[event].length} handler${customEventBus.list[event].length > 1 ? 's' : ''}`, 'color:violet;', 'color:white;');\n        }\n        customEventBus.list[event].forEach((handlerObject) => {\n            handlerObject.handler(eventObject);\n            if (handlerObject.once) {\n                customEventBus.off(event, handlerObject.handler);\n            }\n        });\n    }\n    else {\n        console.log(`adding ${event} to queue`);\n        if (!window.eventQueue.get(event))\n            window.eventQueue.set(event, []);\n        window.eventQueue.get(event).push(eventObject);\n        if (config.get('log')) {\n            console.info(`0 handlers called on event '${event}'`);\n        }\n    }\n};\nexport default customEventBus;\n"],"names":["BaseComponent","constructor","config","this","_grabMessages","CUSTOM_MESSAGES","Messages","_checkMessages","message","window","eventQueue","get","ref","bind","map","payload","delete","_messages","__ref__","GRAB","_ungrabMessages","UNGRAB","objectIsEmpty","object","key","hasOwnProperty","EMIT","callBack","getFirstFocusable","parent","getFocusableElements","_destroy","element","super","observer","IntersectionObserver","entries","isIntersecting","target","querySelectorAll","forEach","item","i","setTimeout","setAttribute","unobserve","threshold","_componentElement","observe","$el","$options","compOptions","options","Object","assign","dataset","keys","filter","entry","includes","cleanEntry","cleanOptionKey","optionValue","JSON","parse","replace","convertType","COMPONENT_NAME","__proto__","name","static","option","optionReturn","str","charAt","toLocaleLowerCase","slice","$on","events","cb","elements","e","stopPropagation","$one","$off","$fire","loading","container","LOADER_EVENTS","show","endLoading","icon","error","time","hide","NavigationDesktop","SELECTORS","modal","CLASSESS","triggerActive","modalActive","getComputedStyle","display","listenForTriggers","trigger","addEventListener","closeAllModals","trg","currentTarget","focus","openModal","getAttribute","category","clicktriggerCatId","location","href","url","modalId","mdl","document","getElementById","Error","classList","add","querySelector","id","closest","closeModal","mdlLink","preventDefault","remove","contains","keycode","enter","space","esc","arrowUp","arrowRight","arrowDown","arrowLeft","focusedElementsBeforeModal","focusableSelectors","focusTrapOn","isPopup","push","activeElement","focusableElements","getAllFocusableElements","firstFocusableElement","lastFocusableElement","length","trapTabKey","keydownHandlerPopup","focusTrapOff","pop","firstEl","lastEl","keyCode","shiftKey","noFilter","offsetWidth","offsetHeight","toggleEveryTabindex","wrapper","value","el","console","customEventBus","emit","event","eventObject","_name","list","info","handlerObject","handler","once","off","log","set"],"sourceRoot":""}