{"version":3,"file":"js/component-sortingTrigger.chunk.js","mappings":"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","sources":["webpack:///./assets/src/scripts/utilities/a11yUtils.js","webpack:///./assets/src/scripts/utilities/freeze.ts","webpack:///./assets/src/scripts/constants/customMessages.ts","webpack:///./assets/src/scripts/constants/whatInput.ts","webpack:///./assets/src/scripts/utilities/whatInput.ts","webpack:///./assets/src/scripts/base/commonInterface.ts","webpack:///./assets/src/scripts/base/baseComponent.ts","webpack:///./assets/src/scripts/components/sortingTrigger.ts","webpack:///./assets/src/scripts/utilities/focusableElementUtils.ts","webpack:///./assets/src/scripts/utilities/keyboardUtils.ts"],"sourcesContent":["'use strict';\nimport keyboardUtils from './keyboardUtils.ts';\n\nconst a11yUtils = {\n    focusedElementsBeforeModal: [],\n    focusableElements: [],\n    focusableSelectors: 'button:not([disabled]), [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"]), [role=\"button\"]',\n\n    focusTrapOn(modal) {\n        this.focusedElementsBeforeModal.push(document.activeElement);\n        this.focusableElements = this.getAllFocusableElements(modal);\n        if (this.focusableElements[0]) {\n            this.focusableElements[0].focus();\n        }\n        modal.addEventListener('keydown', (e) => this.trapTabKey(e));\n    },\n\n    focusTrapUpdate(modal) {\n        this.focusableElements = this.getAllFocusableElements(modal);\n    },\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\n    trapTabKey(e) {\n        if (keyboardUtils.isTabKey(e)) {\n            if (e.shiftKey) {\n                // + SHIFT\n                if (document.activeElement === this.focusableElements[0]) {\n                    e.preventDefault();\n                    this.focusableElements[this.focusableElements.length - 1].focus();\n                }\n            } else {\n                if (document.activeElement === this.focusableElements[this.focusableElements.length - 1]) {\n                    e.preventDefault();\n                    this.focusableElements[0].focus();\n                }\n            }\n        }\n    },\n\n    getFirstFocusable(parent) {\n        return this.getAllFocusableElements(parent)[0];\n    },\n\n    getAllFocusableElements(parent) {\n        return [...parent.querySelectorAll(this.focusableSelectors)].filter((element) => {\n            return !!!this.isHiddenElement(element);\n        });\n    },\n\n    isHiddenElement(el) {\n        return el.offsetWidth === 0 || el.offsetHeight === 0 || window.getComputedStyle(el, null).getPropertyValue('visibility') === 'hidden';\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};\nexport default a11yUtils;\n","export default function deepFreeze(o) {\n    Object.freeze(o);\n    Object.getOwnPropertyNames(o).forEach(function (prop) {\n        if (Object.hasOwnProperty.call(o, prop) && o[prop] !== null && (typeof o[prop] === 'object' || typeof o[prop] === 'function') && !Object.isFrozen(o[prop])) {\n            deepFreeze(o[prop]);\n        }\n    });\n    return o;\n}\n","import deepFreeze from '../utilities/freeze';\nexport default deepFreeze({\n    WINDOW: {\n        CLICK_EVENT: 'body:click:event',\n    },\n    BODY: {\n        TOGGLE_OVERLAY: 'toggle:overlay',\n        ON_OVERLAY: 'on:overlay',\n        OFF_OVERLAY: 'off:overlay',\n    },\n    HEADER: {\n        UPDATE_TRAP: 'header:trap:update',\n        IN_PDP: 'header:inPdp',\n    },\n    BURGER: {\n        TOGGLE_MENU: 'menu:toggle',\n    },\n    BREAKPOINTER: {\n        BREAKPOINT_CHANGE: 'breakpoint:change',\n    },\n    DROP_DOWN: {\n        OPEN: 'dropdown:open',\n        CLOSE: 'dropdown:close',\n    },\n    PRODUCT_CAROUSEL: {\n        UPDATE_IMAGES: 'product:carousel:update_images',\n        UPDATE_ZOOM_IMAGES: 'product:carousel:update_zoom_images',\n    },\n    BRANDS: {\n        UPDATE_GRID: 'brands:update:grid',\n        UPDATE_STORES: 'brands:update:stores',\n        SEARCH_BY_STORE: 'brands:search:bystore',\n    },\n    MODAL_EVENTS: {\n        show: 'modal:show',\n        close: 'modal:close',\n    },\n});\n","import deepFreeze from '../utilities/freeze';\nexport default deepFreeze({\n    INPUT: {\n        KEYBOARD: 'keyboard',\n        MOUSE: 'mouse'\n    }\n});\n","import whatInput from 'what-input';\nexport const ask = (strategy = 'input') => {\n    return whatInput.ask(strategy);\n};\n","import { getAllFocusableElements, getFirstFocusable } from '../utilities/focusableElementUtils';\nimport CustomMessages from '../constants/customMessages';\nimport EventBus from '../libs/eventBus';\nimport WHAT_INPUT from '../constants/whatInput';\nimport { ask } from '../utilities/whatInput';\nimport config from 'gia/config';\nexport default class CommonInterface {\n    constructor() {\n        config.set('log', true);\n        window.EventBus = EventBus;\n        window.CUSTOM_MESSAGES = this.CUSTOM_MESSAGES;\n        this._grabMessages();\n    }\n    get CUSTOM_MESSAGES() {\n        return CustomMessages;\n    }\n    get Messages() {\n        return {};\n    }\n    get isKeyboard() {\n        return this._isKeyboard();\n    }\n    get isMouse() {\n        return this._isMouse();\n    }\n    get whatInput() {\n        return this._whatInput();\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 (let 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    _isMouse() {\n        return ask() === WHAT_INPUT.INPUT.MOUSE;\n    }\n    _isKeyboard() {\n        return ask() === WHAT_INPUT.INPUT.KEYBOARD;\n    }\n    _whatInput() {\n        return ask();\n    }\n    _destroy() {\n        this._ungrabMessages();\n    }\n}\n","import Bean from 'bean';\nimport CommonInterface from './commonInterface';\nimport deepFreeze from '../utilities/freeze';\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        //console.log(`%c[${this.COMPONENT_NAME}]%c initialized`, 'color:orange;', 'color:white;');\n    }\n    /**\n     * @returns {ComponentElement}\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._el.getAttribute('data-component');\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    updateAriaAttributes(element) {\n        const attributes = [...element.attributes]\n            .filter((attr) => {\n            return attr.nodeName.indexOf('has') === -1;\n        })\n            .filter((attr) => {\n            return attr.nodeName.indexOf('aria') > -1 && (attr.nodeValue === 'true' || attr.nodeValue === 'false');\n        })\n            .map((attr) => {\n            return attr.nodeName;\n        });\n        attributes.forEach((attr) => {\n            element.setAttribute(attr, element.getAttribute(attr) === 'true' ? 'false' : 'true');\n        });\n    }\n}\n","import BaseComponent from '../base/baseComponent';\nimport customEventBus from '../libs/eventBus';\nimport a11yUtils from '../utilities/a11yUtils';\nimport keyboardUtils from '../utilities/keyboardUtils';\nexport default class SortingTrigger extends BaseComponent {\n    get SELECTORS() {\n        return {\n            sortingWrapper: '.sorting--wrapper',\n            sortingCta: '.toolbar-container .toolbar-cta--sorting',\n            toolbar: '.plp-page .toolbar',\n            refinementsCta: '.toolbar-container .toolbar-cta--refinements',\n            refinementsWrapper: '.refinements--wrapper',\n        };\n    }\n    get CLASSES() {\n        return {\n            open: 'open',\n            sortingCta: 'toolbar-cta--sorting',\n            sortingOpen: 'sorting-open',\n            filterOpen: 'filter-open'\n        };\n    }\n    constructor(element) {\n        super(element);\n        customEventBus.on('filter:trigger', (data) => {\n            this.hideSortingWrapper();\n        });\n        this.handleClick();\n        this.handleKeyDown();\n    }\n    handleClick() {\n        const sortingWrapper = document.querySelector(this.SELECTORS.sortingWrapper);\n        const refinementsWrapper = document.querySelector(this.SELECTORS.refinementsWrapper);\n        const toolbar = document.querySelector(this.SELECTORS.toolbar);\n        document.querySelector('body').addEventListener('click', (e) => {\n            if (!e.target.closest('#refinements-wrapper') && !e.target.closest('#sorting-wrapper') && !e.target.classList.contains('toolbar-cta--refinements') && !e.target.classList.contains('toolbar-cta--sorting') && !e.target.closest('.toolbar-cta--refinements') && !e.target.closest('.toolbar-cta--sorting')) {\n                this.closeSorting(toolbar, sortingWrapper);\n            }\n        });\n        this._el.addEventListener('click', (e) => {\n            this.toggleSorting(toolbar, sortingWrapper);\n        });\n    }\n    toggleSorting(toolbar, sortingWrapper) {\n        customEventBus.emit('sorting:trigger', {});\n        this._el.classList.toggle(this.CLASSES.open);\n        if (toolbar) {\n            toolbar.classList.toggle(this.CLASSES.sortingOpen);\n        }\n        if (!this._el.classList.contains(this.CLASSES.sortingCta)) {\n            let refinementsCta = document.querySelector(this.SELECTORS.sortingCta);\n            if (refinementsCta) {\n                refinementsCta.classList.toggle(this.CLASSES.open);\n            }\n        }\n        if (sortingWrapper) {\n            sortingWrapper.classList.toggle(this.CLASSES.open);\n            if (this._el.classList.contains(this.CLASSES.open)) {\n                a11yUtils.focusTrapOn(sortingWrapper);\n                sortingWrapper.focus();\n            }\n            else {\n                a11yUtils.focusTrapOff();\n            }\n        }\n    }\n    closeSorting(toolbar, sortingWrapper) {\n        this._el.classList.remove(this.CLASSES.open);\n        if (toolbar) {\n            toolbar.classList.remove(this.CLASSES.sortingOpen);\n        }\n        let refinementsCta = document.querySelector(this.SELECTORS.sortingCta);\n        if (refinementsCta) {\n            refinementsCta.classList.remove(this.CLASSES.open);\n        }\n        if (sortingWrapper) {\n            sortingWrapper.classList.remove(this.CLASSES.open);\n        }\n        a11yUtils.focusTrapOff();\n    }\n    handleKeyDown() {\n        const sortingWrapper = document.querySelector(this.SELECTORS.sortingWrapper);\n        const toolbar = document.querySelector(this.SELECTORS.toolbar);\n        if (sortingWrapper) {\n            sortingWrapper.addEventListener('keydown', (e) => {\n                if (keyboardUtils.isEscKey(e)) {\n                    e.preventDefault();\n                    this.closeSorting(toolbar, sortingWrapper);\n                }\n            });\n        }\n    }\n    hideSortingWrapper() {\n        const sortingWrapper = document.querySelector(this.SELECTORS.sortingWrapper);\n        const toolbar = document.querySelector(this.SELECTORS.toolbar);\n        this._el.classList.remove(this.CLASSES.open);\n        toolbar.classList.remove(this.CLASSES.sortingOpen);\n        sortingWrapper.classList.remove(this.CLASSES.open);\n    }\n}\n","const focusableSelectors = 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"]), [role=\"button\"]';\nexport const getFirstFocusable = (parent) => parent.querySelector(focusableSelectors);\nexport const getAllFocusableElements = (parent) => parent.querySelectorAll(focusableSelectors);\n","'use strict';\nconst keyboardUtls = {\n    isEscKey(event) {\n        return event.key === 'Escape' || event.key === 'Esc' || event.keyCode === 27;\n    },\n    isTabKey(event) {\n        return event.key === 'Tab' || event.code === 'Tab' || event.keyCode === 9;\n    }\n};\nexport default keyboardUtls;\n"],"names":["a11yUtils","focusedElementsBeforeModal","focusableElements","focusableSelectors","focusTrapOn","modal","this","push","document","activeElement","getAllFocusableElements","focus","addEventListener","e","trapTabKey","focusTrapUpdate","focusTrapOff","length","pop","shiftKey","preventDefault","getFirstFocusable","parent","querySelectorAll","filter","element","isHiddenElement","el","offsetWidth","offsetHeight","window","getComputedStyle","getPropertyValue","toggleEveryTabindex","wrapper","value","forEach","setAttribute","console","error","deepFreeze","o","Object","freeze","getOwnPropertyNames","prop","hasOwnProperty","call","isFrozen","WINDOW","CLICK_EVENT","BODY","TOGGLE_OVERLAY","ON_OVERLAY","OFF_OVERLAY","HEADER","UPDATE_TRAP","IN_PDP","BURGER","TOGGLE_MENU","BREAKPOINTER","BREAKPOINT_CHANGE","DROP_DOWN","OPEN","CLOSE","PRODUCT_CAROUSEL","UPDATE_IMAGES","UPDATE_ZOOM_IMAGES","BRANDS","UPDATE_GRID","UPDATE_STORES","SEARCH_BY_STORE","MODAL_EVENTS","show","close","INPUT","KEYBOARD","MOUSE","ask","strategy","CommonInterface","constructor","config","EventBus","CUSTOM_MESSAGES","_grabMessages","Messages","isKeyboard","_isKeyboard","isMouse","_isMouse","whatInput","_whatInput","_checkMessages","message","eventQueue","get","ref","bind","map","payload","delete","_messages","__ref__","GRAB","_ungrabMessages","UNGRAB","objectIsEmpty","object","key","EMIT","callBack","getFocusableElements","_destroy","BaseComponent","super","_componentElement","_el","_options","compOptions","options","assign","dataset","keys","entry","includes","cleanEntry","cleanOptionKey","optionValue","JSON","parse","replace","convertType","COMPONENT_NAME","getAttribute","static","option","optionReturn","str","charAt","toLocaleLowerCase","slice","$on","events","cb","elements","stopPropagation","$one","$off","$fire","updateAriaAttributes","attributes","attr","nodeName","indexOf","nodeValue","SortingTrigger","SELECTORS","sortingWrapper","sortingCta","toolbar","refinementsCta","refinementsWrapper","CLASSES","open","sortingOpen","filterOpen","data","hideSortingWrapper","handleClick","handleKeyDown","querySelector","target","closest","classList","contains","closeSorting","toggleSorting","toggle","remove","keyboardUtls","isEscKey","event","keyCode","isTabKey","code"],"sourceRoot":""}