{"version":3,"file":"component-refinements.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/refinements.ts","webpack:///./assets/src/scripts/utils/focusableElementUtils.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 ProductSearchComponent from '../base/productSearchComponent';\nexport default class Refinements extends ProductSearchComponent {\n    constructor(element) {\n        super(element);\n        /* class vars */\n        this.refinementsCount = 0;\n        this.openGroups = [];\n        this.endpoint = document.body.querySelector(this.SELECTORS.selectableItems) ? document.body.querySelector(this.SELECTORS.selectableItems).getAttribute('data-refinement-url').split('?')[0] : '';\n        if (this.endpoint !== '') {\n            this.listenForTriggers();\n            this.listenForGroups();\n        }\n        this.listenForSwitchRefinements(document.body);\n        this.handleButtonSubmitRefinements();\n    }\n    get SELECTORS() {\n        return {\n            refinementsWrapper: '.refinements-wrapper',\n            counter: '.refinement-counter',\n            groups: '.refinement-group',\n            globalCounter: '.refinements-globalcounter',\n            selectableItems: '[data-refinement-trigger]',\n            modalTrigger: '[data-component=\"refinementsButton\"]',\n            sortingTrigger: '[data-component=\"sorting\"]',\n            switchRefinement: '.toolbar-switch .switch-component',\n            toolbar: '.toolbar',\n        };\n    }\n    backToInit() {\n        if (this.endpoint !== '') {\n            this.refinementsCount = 0;\n            this.listenForTriggers();\n            this.listenForGroups();\n            this.setOpenGroups();\n        }\n        this.listenForSwitchRefinements(document.body.querySelector(this.SELECTORS.refinementsWrapper));\n    }\n    listenForTriggers() {\n        const refinementTriggers = this.$el.querySelectorAll(this.SELECTORS.selectableItems);\n        refinementTriggers.forEach((trigger) => {\n            ['click'].forEach((ev) => {\n                trigger.addEventListener(ev, async (e) => {\n                    this.printMethod = 'replace';\n                    this.setRefinements(e.currentTarget);\n                    this.getPage();\n                });\n            });\n        });\n    }\n    setRefinements(trigger) {\n        let refinementType = trigger.dataset.refinementTrigger;\n        let refinementUrl = trigger.getAttribute('data-refinement-url');\n        let qs = this.qs.parse(refinementUrl.split('?')[1]);\n        let srule = window.productSearchData.searchParams.srule;\n        let available = window.productSearchData.searchParams.available;\n        window.productSearchData.searchParams = qs;\n        window.productSearchData.searchParams.start = 0;\n        window.productSearchData.searchParams.sz = window.productSearchData.increment;\n        if (srule)\n            window.productSearchData.searchParams.srule = srule;\n        if (available)\n            window.productSearchData.searchParams.available = available;\n        // -- reset\n        if (refinementType == 'reset') {\n            delete window.productSearchData.searchParams.available;\n            const switchRefinements = document.body.querySelectorAll(this.SELECTORS.switchRefinement);\n            switchRefinements.forEach((switchRefinement) => {\n                if (switchRefinement.querySelector('.switch-toggle').classList.contains('active'))\n                    switchRefinement.querySelector('.switch-toggle').classList.remove('active');\n            });\n        }\n    }\n    listenForSwitchRefinements(element) {\n        const switchRefinements = element.querySelectorAll(this.SELECTORS.switchRefinement);\n        switchRefinements.forEach((switchRefinement) => {\n            if (window.productSearchData.searchParams.available)\n                switchRefinement.querySelector('.switch-toggle').classList.add('active');\n            ['click'].forEach((ev) => {\n                switchRefinement.addEventListener(ev, async (e) => {\n                    this.printMethod = 'replace';\n                    this.setSwitchRefinement(e.currentTarget);\n                    this.getPage();\n                });\n            });\n        });\n    }\n    setSwitchRefinement(target) {\n        const searchParams = window.productSearchData.searchParams;\n        const isActive = target.querySelector('.switch-toggle').classList.contains('active');\n        if (isActive) {\n            searchParams.available = true;\n        }\n        else {\n            delete searchParams.available;\n        }\n        window.productSearchData.searchQs = searchParams;\n        window.productSearchData.searchParams.start = 0;\n        window.productSearchData.searchParams.sz = window.productSearchData.increment;\n        let srule = window.productSearchData.searchParams.srule;\n        if (srule)\n            window.productSearchData.searchParams.srule = srule;\n        // -- clone\n        const switchRefinements = document.body.querySelectorAll(this.SELECTORS.switchRefinement);\n        switchRefinements.forEach((switchRefinement) => {\n            if (switchRefinement != target)\n                switchRefinement.querySelector('.switch-toggle').classList.toggle('active');\n        });\n    }\n    updateData(html) {\n        window.productSearchData.currentPage = 1;\n        window.productSearchData.counter = window.productSearchData.increment;\n        window.productSearchData.total = html.querySelector(this.selectors.productListWrapper).getAttribute('data-productcount');\n        window.productSearchData.datalayerOffset = 1;\n        let excludedKeys = ['cgid', 'start', 'pmin'];\n        let refinementKeys = Object.assign({}, window.productSearchData.searchParams);\n        excludedKeys.forEach((key) => {\n            delete refinementKeys[key];\n        });\n        window.productSearchData.searchQs = refinementKeys;\n    }\n    reviewDomElements(html) {\n        if (html.querySelector(this.SELECTORS.sortingTrigger))\n            this.updateSorting(html.querySelector(this.SELECTORS.sortingTrigger));\n        if (html.querySelector(this.SELECTORS.refinementsWrapper))\n            this.updateRefinements(html.querySelector(this.SELECTORS.refinementsWrapper));\n    }\n    updateSorting(htmlSorting) {\n        const oldSortingTrigger = document.body.querySelector(this.SELECTORS.sortingTrigger);\n        oldSortingTrigger.after(htmlSorting);\n        oldSortingTrigger.remove();\n    }\n    updateRefinements(htmlRefinements) {\n        document.body.querySelector(this.SELECTORS.refinementsWrapper).innerHTML = htmlRefinements.innerHTML;\n        this.backToInit();\n        // -- toggle toolbar no filters\n        const toolbar = document.body.querySelector(this.SELECTORS.toolbar);\n        const modal = document.body.querySelector('#modal-refinements');\n        const refinements = modal.querySelectorAll('.refinement-item');\n        if (refinements && refinements.length > 0) {\n            if (toolbar && toolbar.classList.contains('toolbar-no-filters'))\n                toolbar.classList.remove('toolbar-no-filters');\n        }\n        else {\n            if (toolbar && !toolbar.classList.contains('toolbar-no-filters'))\n                toolbar.classList.add('toolbar-no-filters');\n        }\n    }\n    // REFINEMENTS GROUP METHODS\n    listenForGroups() {\n        const groups = this.$el.querySelectorAll(this.SELECTORS.groups);\n        groups.forEach((group) => {\n            this.checkSelectedRefinements(group);\n            this.listenForToggleGroup(group);\n        });\n        // -- 0 refinements\n        if (groups.length == 0)\n            this.updateRefinementsCount(0);\n    }\n    checkSelectedRefinements(group) {\n        const selectedRefinementDisplayNames = [...group.querySelectorAll(this.SELECTORS.selectableItems + ':checked')]\n            .map((el) => {\n            return el.getAttribute('data-refinement-displayvalue');\n        });\n        if (selectedRefinementDisplayNames.length > 0) {\n            group.querySelector(this.SELECTORS.counter).innerHTML = `(${selectedRefinementDisplayNames.length})`;\n            group.querySelector(this.SELECTORS.counter).setAttribute('data-refinementlist', selectedRefinementDisplayNames.join(', '));\n        }\n        this.updateRefinementsCount(selectedRefinementDisplayNames.length);\n    }\n    listenForToggleGroup(group) {\n        group.addEventListener('toggle', (e) => {\n            const gr = e.currentTarget;\n            const grId = gr.getAttribute('id');\n            if (gr.getAttribute('open') !== null && this.openGroups.indexOf(grId) === -1) {\n                this.openGroups.push(grId);\n            }\n            else if (gr.getAttribute('open') === null && this.openGroups.indexOf(grId) !== -1) {\n                this.openGroups.splice(this.openGroups.indexOf(grId), 1);\n            }\n        });\n    }\n    setOpenGroups() {\n        this.openGroups.forEach(groupId => {\n            const group = document.getElementById(groupId);\n            if (group) {\n                group.setAttribute('open', '');\n            }\n        });\n    }\n    updateRefinementsCount(partial = 0) {\n        this.refinementsCount += partial;\n        let trigger = document.body.querySelector(this.SELECTORS.modalTrigger);\n        trigger.querySelector(this.SELECTORS.globalCounter).innerHTML = this.refinementsCount > 0 ? this.refinementsCount.toString() : '';\n        trigger.setAttribute('data-refinementscount', this.refinementsCount.toString());\n    }\n    handleButtonSubmitRefinements() {\n        this.$el.querySelector('.refinements-submit').addEventListener('click', e => {\n            e.preventDefault();\n            window.micromodalInstance.forceClose('modal-refinements');\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"],"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","Refinements","refinementsCount","openGroups","endpoint","document","body","querySelector","SELECTORS","selectableItems","getAttribute","split","listenForTriggers","listenForGroups","listenForSwitchRefinements","handleButtonSubmitRefinements","refinementsWrapper","counter","groups","globalCounter","modalTrigger","sortingTrigger","switchRefinement","toolbar","backToInit","setOpenGroups","trigger","ev","addEventListener","async","printMethod","setRefinements","currentTarget","getPage","refinementType","refinementTrigger","refinementUrl","qs","srule","productSearchData","searchParams","available","start","sz","increment","classList","contains","remove","add","setSwitchRefinement","searchQs","toggle","updateData","html","currentPage","total","selectors","productListWrapper","datalayerOffset","refinementKeys","reviewDomElements","updateSorting","updateRefinements","htmlSorting","oldSortingTrigger","after","htmlRefinements","innerHTML","refinements","length","group","checkSelectedRefinements","listenForToggleGroup","updateRefinementsCount","selectedRefinementDisplayNames","el","join","gr","grId","indexOf","push","splice","groupId","getElementById","partial","toString","preventDefault","micromodalInstance","forceClose","focusableSelectors","getAllFocusableElements"],"sourceRoot":""}