{"version":3,"file":"js/component-headerTickerComponent.chunk.js","mappings":"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","sources":["webpack:///./assets/common/src/scripts/base/baseComponent.ts","webpack:///./assets/common/src/scripts/components/headerTickerComponent.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 Swiper, { A11y, Autoplay, Navigation } from 'swiper';\nimport BaseComponent from '../base/baseComponent';\nimport analytics from '@common/utils/analytics';\nSwiper.use([Navigation, Autoplay, A11y]);\nexport default class HeaderTickerComponent extends BaseComponent {\n    constructor(element) {\n        var _a;\n        super(element);\n        if (document.readyState == 'complete') {\n            this.init();\n        }\n        else {\n            window.addEventListener('load', () => this.init());\n        }\n        this.moltiplicatorTiming = ((_a = this.slides) === null || _a === void 0 ? void 0 : _a.length) > 1 ? 16 : 1;\n    }\n    get Messages() {\n        return {\n            [this.CUSTOM_MESSAGES.BREAKPOINTER.BREAKPOINT_CHANGE]: this.onBreakpointChange,\n        };\n    }\n    init() {\n        this.$carouselContainer = this.$el.querySelector('.swiper-container');\n        this.slides = this.$el.querySelectorAll('.swiper-slide');\n        if (this.slides.length > 0) {\n            this.listenForResize();\n            this.handleTickerClose();\n            if (this.slides.length > 1) {\n                this.initSlider();\n            }\n            else {\n                this.$el.classList.add('single-slide');\n                if (this.slides[0].dataset.color && this.slides[0].dataset.bgcolor) {\n                    this.$el.style.setProperty('--ticker-color', this.slides[0].dataset.color);\n                    this.$el.style.setProperty('--ticker-bgcolor', this.slides[0].dataset.bgcolor);\n                }\n            }\n        }\n        // analytics [OE-16592]\n        const messageWrapper = this.$el.querySelectorAll('.message-wrapper[data-analytics-title]');\n        messageWrapper.forEach((el) => {\n            const linkText = el.querySelector('a');\n            if (linkText) {\n                const analyticsTitle = linkText.closest('.message-wrapper').getAttribute('data-analytics-title');\n                linkText.addEventListener('click', (e) => analytics.topTicker(window.datalayerdata.pageCategory, analyticsTitle, window.loggedin ? 'enter' : 'logged'));\n            }\n        });\n    }\n    listenForResize() {\n        let timerId;\n        this.handleLongMessagesSwipe();\n        window.addEventListener('resize', () => {\n            clearTimeout(timerId);\n            timerId = setTimeout(() => {\n                console.info('debounced listenForLongMessages');\n                this.handleLongMessagesSwipe();\n            }, 100);\n        });\n    }\n    handleLongMessagesSwipe() {\n        const messages = this.$el.querySelectorAll('.message');\n        messages.forEach((msg) => {\n            if (msg.offsetWidth > msg.parentElement.offsetWidth) {\n                msg.style.setProperty('transition-duration', `${(msg.offsetWidth - msg.parentElement.offsetWidth) * this.moltiplicatorTiming}ms`);\n                msg.classList.add('swipe-animation');\n            }\n            else {\n                msg.classList.remove('swipe-animation');\n            }\n        });\n        this.slides.forEach((slide) => {\n            const messages = slide.querySelectorAll('.message');\n            messages.forEach((msg, i) => {\n                var _a;\n                if ((!this.isDesktop && i === messages.length - 1) || (this.isDesktop && i === 0)) {\n                    if (msg.offsetWidth > msg.parentElement.offsetWidth) {\n                        ((_a = this.slides) === null || _a === void 0 ? void 0 : _a.length) > 1 && slide.style.setProperty('--animation-delay', `${(msg.offsetWidth - msg.parentElement.offsetWidth) * this.moltiplicatorTiming + 5400}ms`);\n                        slide.dataset.swiperAutoplay = `${(msg.offsetWidth - msg.parentElement.offsetWidth) * this.moltiplicatorTiming + 6000}`;\n                    }\n                }\n            });\n        });\n    }\n    animateSlides(swiper) {\n        var _a;\n        this.$el.style.setProperty('--ticker-color', this.slides[swiper.realIndex].dataset.color);\n        this.$el.style.setProperty('--ticker-bgcolor', this.slides[swiper.realIndex].dataset.bgcolor);\n        const messages = this.slides[swiper.activeIndex].querySelectorAll('.message');\n        messages.forEach((msg, i) => {\n            if (msg.offsetWidth > msg.parentElement.offsetWidth) {\n                msg.style.setProperty('transform', `translate3d(-${msg.offsetWidth - msg.parentElement.offsetWidth}px, 0, 0)`);\n            }\n        });\n        const previousMessages = (_a = this.slides[swiper.previousIndex]) === null || _a === void 0 ? void 0 : _a.querySelectorAll('.message');\n        previousMessages === null || previousMessages === void 0 ? void 0 : previousMessages.forEach((previousMsg) => {\n            if (previousMsg.offsetWidth > previousMsg.parentElement.offsetWidth) {\n                const translateDuration = previousMsg.style.getPropertyValue('translate-duration');\n                previousMsg.style.setProperty('translate-duration', '0s');\n                previousMsg.style.setProperty('transform', `translate3d(0, 0, 0)`);\n                previousMsg.style.setProperty('translate-duration', translateDuration);\n            }\n        });\n    }\n    onBreakpointChange(br) {\n        // this.$log(br);\n        if (br.value >= window.mqObj['md'] && !this.isDesktop) {\n            this.isDesktop = true;\n        }\n        else if (br.value < window.mqObj['md'] && this.isDesktop) {\n            this.isDesktop = false;\n        }\n    }\n    initSlider() {\n        this.carousel = new Swiper(this.$carouselContainer, {\n            allowTouchMove: false,\n            navigation: {\n                nextEl: '.swiper-button-next',\n                prevEl: '.swiper-button-prev',\n            },\n            speed: 0,\n            autoplay: {\n                delay: 6000,\n                disableOnInteraction: false,\n            },\n            rewind: true,\n            a11y: {\n                enabled: true,\n                prevSlideMessage: this.$options.prevslidemessage,\n                nextSlideMessage: this.$options.nextslidemessage,\n                firstSlideMessage: this.$options.firstslidemessage,\n                lastSlideMessage: this.$options.lastslidemessage,\n                paginationBulletMessage: this.$options.paginationbulletmessage.replace('INDEX_NUMBER', '{{index}}'),\n            },\n            on: {\n                afterInit: (swiper) => {\n                    this.animateSlides(swiper);\n                },\n                slideChange: (swiper) => {\n                    this.animateSlides(swiper);\n                },\n            },\n        });\n    }\n    removeTicker() {\n        document.querySelector('body').classList.remove('has-ticker');\n        this.$el.classList.add('close');\n        setTimeout(() => {\n            this.$el.remove();\n            const header = document.querySelector('header');\n            let headerHeight = header && header.getBoundingClientRect().height;\n            document.body.style.setProperty('--header-height', `${headerHeight / 10}rem`);\n        }, 300);\n    }\n    handleTickerClose() {\n        this.$button = this.$el.querySelector('.icon--close-white');\n        this.$on('keydown', (e) => {\n            if (e.key == ' ') {\n                e.preventDefault();\n                this.removeTicker();\n            }\n        }, this.$button);\n        this.$on('click', () => {\n            this.removeTicker();\n        }, this.$button);\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","HeaderTickerComponent","_a","document","readyState","init","window","addEventListener","moltiplicatorTiming","slides","length","Messages","CUSTOM_MESSAGES","BREAKPOINTER","BREAKPOINT_CHANGE","onBreakpointChange","$carouselContainer","querySelector","querySelectorAll","listenForResize","handleTickerClose","initSlider","classList","add","color","bgcolor","style","setProperty","el","linkText","analyticsTitle","closest","getAttribute","datalayerdata","pageCategory","loggedin","timerId","handleLongMessagesSwipe","clearTimeout","setTimeout","console","info","msg","offsetWidth","parentElement","remove","slide","messages","i","isDesktop","swiperAutoplay","animateSlides","swiper","realIndex","activeIndex","previousMessages","previousIndex","previousMsg","translateDuration","getPropertyValue","br","value","mqObj","carousel","allowTouchMove","navigation","nextEl","prevEl","speed","autoplay","delay","disableOnInteraction","rewind","a11y","enabled","prevSlideMessage","prevslidemessage","nextSlideMessage","nextslidemessage","firstSlideMessage","firstslidemessage","lastSlideMessage","lastslidemessage","paginationBulletMessage","paginationbulletmessage","on","afterInit","slideChange","removeTicker","header","headerHeight","getBoundingClientRect","height","body","$button","preventDefault"],"sourceRoot":""}