{"version":3,"file":"js/component-myAccountHeaderComponent.chunk.js","mappings":"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","sources":["webpack:///./assets/common/src/scripts/base/baseComponent.ts","webpack:///./assets/common/src/scripts/components/myAccountHeaderComponent.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 whatInput from 'what-input';\nimport BaseComponent from '../base/baseComponent';\nexport default class MyAccountHeaderComponent extends BaseComponent {\n constructor(element) {\n super(element);\n this.isDesktop = window.isDesktop();\n // console.info('sono loggato?', this.$options.auth);\n this.$el.querySelectorAll('.account-cta').forEach((el) => {\n el.addEventListener('click', () => analytics.header('account', true));\n });\n this.accountCta = this.$el.querySelector(this.SELECTORS.button);\n if (this.accountCta) {\n this.handleKeyboardNavigation();\n this.handleMouseHover();\n }\n }\n get SELECTORS() {\n return {\n button: '.js-account-cta',\n };\n }\n get CLASSES() {\n return {\n open: 'open',\n };\n }\n get Messages() {\n return {\n [this.CUSTOM_MESSAGES.BREAKPOINTER.BREAKPOINT_CHANGE]: this.onBreakpointChange,\n };\n }\n handleKeyboardNavigation() {\n this.$on('click', (e) => {\n if (whatInput.ask() === 'keyboard' || whatInput.ask() === 'touch') {\n if (!document.body.classList.contains('no-overflow')) {\n if (this.accountCta.getAttribute('aria-expanded') == 'false') {\n this.accountCta.setAttribute('aria-expanded', 'true');\n document.body.classList.add('overlay-open');\n }\n else {\n this.accountCta.setAttribute('aria-expanded', 'false');\n document.body.classList.remove('overlay-open');\n analytics.closeMyMonclerMenu();\n }\n }\n }\n else {\n document.location.href = this.accountCta.dataset.href;\n }\n }, this.accountCta);\n const focusable = this.getFocusableElements(this.$el);\n const actualFocussable = Array.from(focusable).filter((el) => window.getComputedStyle(el).display != 'none');\n actualFocussable.forEach((el) => {\n this.$on('keydown', (e) => {\n if (e.key == 'Escape') {\n this.accountCta.setAttribute('aria-expanded', 'false');\n document.body.classList.remove('overlay-open');\n analytics.closeMyMonclerMenu();\n }\n }, el);\n });\n const lastFocusable = actualFocussable[actualFocussable.length - 1];\n this.$on('keydown', (e) => {\n if (e.key == 'Tab' && !e.shiftKey) {\n this.accountCta.setAttribute('aria-expanded', 'false');\n document.body.classList.remove('overlay-open');\n analytics.closeMyMonclerMenu();\n }\n }, lastFocusable);\n }\n handleMouseHover() {\n if (this.isDesktop) {\n this.$on('mouseenter', (e) => {\n clearTimeout(this.exitDebounce);\n clearTimeout(this.enterDebounce);\n this.hoverStatus = true;\n this.enterDebounce = setTimeout(() => {\n analytics.header('account');\n if (!document.body.classList.contains('no-overflow')) {\n this.hoverStatus && this.accountCta.setAttribute('aria-expanded', 'true');\n document.body.classList.add('overlay-open');\n }\n }, 200);\n });\n this.$on('mouseleave', () => {\n clearTimeout(this.exitDebounce);\n clearTimeout(this.enterDebounce);\n this.hoverStatus = false;\n this.exitDebounce = setTimeout(() => {\n this.accountCta.setAttribute('aria-expanded', 'false');\n document.body.classList.remove('overlay-open');\n analytics.closeMyMonclerMenu();\n }, 200);\n });\n }\n }\n onBreakpointChange(br) {\n if (br.value >= window.mqObj['md'] && !this.isDesktop) {\n this.isDesktop = true;\n if (this.accountCta) {\n this.handleMouseHover();\n }\n }\n else if (br.value < window.mqObj['md'] && this.isDesktop) {\n this.isDesktop = false;\n this.$off('mouseenter');\n this.$off('mouseleave');\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","MyAccountHeaderComponent","isDesktop","window","querySelectorAll","el","addEventListener","accountCta","querySelector","SELECTORS","button","handleKeyboardNavigation","handleMouseHover","CLASSES","open","Messages","CUSTOM_MESSAGES","BREAKPOINTER","BREAKPOINT_CHANGE","onBreakpointChange","document","body","classList","contains","getAttribute","add","remove","location","href","focusable","getFocusableElements","actualFocussable","Array","from","getComputedStyle","display","lastFocusable","length","shiftKey","clearTimeout","exitDebounce","enterDebounce","hoverStatus","setTimeout","br","value","mqObj"],"sourceRoot":""}