{"version":3,"file":"js/component-headerHelper.chunk.js","mappings":"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","sources":["webpack:///./assets/common/src/scripts/base/baseComponent.ts","webpack:///./assets/common/src/scripts/components/headerHelper.ts"],"sourcesContent":["import Bean from 'bean';\nimport deepFreeze from '../utilities/freeze';\nimport CommonInterface from './commonInterface';\nexport default class BaseComponent extends CommonInterface {\n    /**\n     *\n     * constructor\n     *\n     * @param {Element} element\n     */\n    constructor(element) {\n        super();\n        this._componentElement = element;\n        this._componentElement.setAttribute('data-component-init', 'true');\n        this._checkMessages();\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","import analytics from '@utils/analytics';\nimport BaseComponent from '../base/baseComponent';\nexport default class headerHelper extends BaseComponent {\n    constructor(element) {\n        super(element);\n        this.handleHeaderScroll();\n        this.handleAnalytics();\n        this.scrollDetect();\n    }\n    get SELECTORS() {\n        return {\n            menuItem: '.menu-item',\n            menuHeading: '.menu-heading',\n            hasSubmenu: '.menu-heading',\n            thirdLevelLinks: '.submenu-item',\n            visualNavigationCard: '.visual-card',\n        };\n    }\n    get CLASSES() {\n        return {\n            scrolled: 'scrolled',\n        };\n    }\n    handleAnalytics() {\n        this.menuItems = this.$el.querySelectorAll(this.SELECTORS.menuItem);\n        this.menuItems.forEach((el) => {\n            const submenus = el.querySelectorAll('.submenu-group');\n            if (submenus.length) {\n                submenus.forEach((submenu) => {\n                    const secondLevelText = submenu.querySelector('.submenu-heading');\n                    const secondLevelLink = secondLevelText ? secondLevelText.querySelector('a') : undefined;\n                    if (secondLevelLink) {\n                        this.$on('click', (e) => {\n                            const firstLevel = el.querySelector(this.SELECTORS.hasSubmenu);\n                            const secondLevel = submenu.querySelector('button');\n                            analytics.secondLevelClick(firstLevel.dataset.gtmEvent, secondLevel.dataset.gtmEvent);\n                        }, secondLevelLink);\n                    }\n                    const thirdLevelLinks = submenu.querySelectorAll(this.SELECTORS.thirdLevelLinks);\n                    if (thirdLevelLinks.length) {\n                        thirdLevelLinks.forEach((link) => {\n                            this.$on('click', (e) => {\n                                const firstLevel = el.querySelector(this.SELECTORS.hasSubmenu);\n                                const secondLevel = submenu.querySelector('button');\n                                const thirdLevel = e.target;\n                                if (submenu.querySelector('button').classList.contains('third-level')) {\n                                    const thirdLevelReal = document.querySelector('.third-level');\n                                    const secondLevelReal = document.querySelector('.level-column');\n                                    analytics.fourthLevelClick(firstLevel.dataset.gtmEvent, secondLevelReal.dataset.gtmEvent, thirdLevelReal.dataset.gtmEvent, thirdLevel.dataset.gtmEvent);\n                                }\n                                else {\n                                    analytics.thirdLevelClick(firstLevel.dataset.gtmEvent, secondLevel.dataset.gtmEvent, thirdLevel.dataset.gtmEvent);\n                                }\n                            }, link);\n                        });\n                    }\n                });\n            }\n            // only for visual card links wich are not inside submenu group\n            const visualCards = el.querySelectorAll(this.SELECTORS.visualNavigationCard);\n            if (visualCards.length) {\n                visualCards.forEach((card) => {\n                    this.$on('click', (e) => {\n                        const firstLevel = el.querySelector(this.SELECTORS.hasSubmenu);\n                        analytics.secondLevelClick(firstLevel.dataset.gtmEvent, e.currentTarget.dataset.gtmEvent);\n                    }, card);\n                });\n            }\n        });\n        this.menuHeadings = this.$el.querySelectorAll(this.SELECTORS.menuHeading);\n        // this.menuHeadings.forEach((el: HTMLElement) => {\n        // el.addEventListener('mouseenter', () => {\n        //   const currentInput = whatInput.ask();\n        // https://jira.industries-group.com/browse/OE-7336\n        //window.isDesktop() && currentInput == 'mouse' && analytics.firstLevelClick(el.dataset.gtmEvent);\n        // });\n        // });x\n    }\n    checkHeaderScrolled(flag) {\n        this.$el.classList[flag ? 'add' : 'remove'](this.CLASSES.scrolled);\n    }\n    handleHeaderScroll() {\n        const topPage = document.createElement('div');\n        topPage.setAttribute('id', 'top-page');\n        document.body.insertBefore(topPage, document.body.childNodes[0]);\n        const observer = new IntersectionObserver((entries) => {\n            // console.info('checkHeaderScrolled ', entries[0].intersectionRatio);\n            this.checkHeaderScrolled(entries[0].intersectionRatio < 1);\n        }, { threshold: 1 });\n        observer.observe(topPage);\n    }\n    scrollDetect() {\n        let lastScroll = 0;\n        document.body.dataset.scroll = 'top';\n        window.onscroll = () => {\n            let currentScroll = document.documentElement.scrollTop || document.body.scrollTop;\n            // if page is on top add a class to body\n            if (currentScroll === 0 || currentScroll < 0) {\n                document.body.dataset.scroll = 'top';\n            }\n            else {\n                if (currentScroll > 0 && lastScroll <= currentScroll) {\n                    lastScroll = currentScroll;\n                    document.body.dataset.scroll = 'down';\n                    this.$el.dataset.scroll = 'down';\n                }\n                else {\n                    lastScroll = currentScroll;\n                    document.body.dataset.scroll = 'up';\n                    this.$el.dataset.scroll = 'up';\n                }\n            }\n        };\n    }\n}\n"],"names":["BaseComponent","constructor","element","super","this","_componentElement","setAttribute","_checkMessages","$el","$options","compOptions","options","Object","assign","dataset","keys","filter","entry","includes","forEach","cleanEntry","cleanOptionKey","optionValue","JSON","parse","replace","convertType","COMPONENT_NAME","__proto__","name","static","option","optionReturn","key","str","charAt","toLocaleLowerCase","slice","$on","events","cb","elements","e","stopPropagation","$one","$off","$fire","headerHelper","handleHeaderScroll","handleAnalytics","scrollDetect","SELECTORS","menuItem","menuHeading","hasSubmenu","thirdLevelLinks","visualNavigationCard","CLASSES","scrolled","menuItems","querySelectorAll","el","submenus","length","submenu","secondLevelText","querySelector","secondLevelLink","undefined","firstLevel","secondLevel","gtmEvent","link","thirdLevel","target","classList","contains","thirdLevelReal","document","secondLevelReal","visualCards","card","currentTarget","menuHeadings","checkHeaderScrolled","flag","topPage","createElement","body","insertBefore","childNodes","IntersectionObserver","entries","intersectionRatio","threshold","observe","lastScroll","scroll","window","onscroll","currentScroll","documentElement","scrollTop"],"sourceRoot":""}