{"version":3,"file":"../../javascript/compare.js","names":["Dialog","window","document","bars","Array","from","querySelectorAll","selectedItems","body","watchedCompare","resizeBound","getSelectedItem","getSelectedData","name","selected","dataset","triggerSelectedChange","initial","dispatchEvent","CustomEvent","bubbles","detail","setSelectedSkus","skus","value","forEach","item","setSelectedData","isArray","join","getSkus","toString","split","request","url","method","data","requestMethod","toUpperCase","options","headers","credentials","requestUrl","params","URLSearchParams","FormData","Object","entries","key","append","toSearchParams","indexOf","fetch","then","async","response","text","ok","Error","status","JSON","parse","error","catch","console","log","delegate","root","type","selector","callback","addEventListener","event","target","closest","documentElement","contains","updateCheckbox","sku","checked","checkbox","classList","toggle","checkScroll","scrollable","querySelector","t","scrollTop","l","scrollLeft","b","scrollHeight","clientHeight","r","scrollWidth","clientWidth","compareWatch","removeEventListener","label","length","max","maxReached","Number","innerHTML","bar","limit","setSkus","Date","getTime","stopImmediatePropagation","field","skuNdx","found","push","splice","button","preventDefault","selectedSkus","add","load","compare","cross_transition","scrollable_element","overlay","content","modifiers","remove","closed","configurableOptions","link","href","close","column","table","colNdx","cellIndex","rows","row","cell","setTimeout","style","padding","compareParams","script","getAttribute","magnificPopup","jQuery","open","mainClass","closeMarkup","svg","render","items","src","callbacks","ajaxContentAdded","createElement","setAttribute","head","appendChild","replace","with","html","payload","wrapper","nextCompare","currentCompare","finally","form","action","redirect","location","variantSkus"],"sources":["compare.js"],"mappings":"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","ignoreList":[],"sourceRoot":"../../../../resources/javascript","sourcesContent":["import Dialog from 'dialog';\n\n;(function(window, document, undefined) {\n    const bars = Array.from(document.querySelectorAll('.js-bar'));\n    const selectedItems = Array.from(document.querySelectorAll('.js-bar-selected'));\n    const body = document.body;\n\n    let watchedCompare = null;\n    let resizeBound = false;\n\n    function getSelectedItem() {\n        return selectedItems[0] ?? null;\n    }\n\n    function getSelectedData(name) {\n        const selected = getSelectedItem();\n\n        return selected ? selected.dataset[name] ?? '' : '';\n    }\n\n    function setSelectedData(name, value) {\n        selectedItems.forEach((item) => {\n            item.dataset[name] = value;\n        });\n    }\n\n    function triggerSelectedChange(initial = false) {\n        const selected = getSelectedItem();\n\n        if (!selected) {\n            return;\n        }\n\n        selected.dispatchEvent(new CustomEvent('change', {\n            bubbles: true,\n            detail: {initial},\n        }));\n    }\n\n    function setSelectedSkus(skus, initial = false) {\n        const value = Array.isArray(skus) ? skus.join(',') : skus;\n\n        setSelectedData('selected', value);\n        triggerSelectedChange(initial);\n    }\n\n    function getSkus() {\n        const skus = getSelectedData('selected');\n\n        if (skus !== '') {\n            return skus.toString().split(',');\n        }\n\n        return [];\n    }\n\n    function toSearchParams(data) {\n        if (data instanceof URLSearchParams) {\n            return data;\n        }\n\n        if (data instanceof FormData) {\n            return new URLSearchParams(data);\n        }\n\n        const params = new URLSearchParams();\n\n        Object.entries(data).forEach(([key, value]) => {\n            params.append(key, value);\n        });\n\n        return params;\n    }\n\n    function request(url, {method = 'get', data = null} = {}) {\n        const requestMethod = method.toUpperCase();\n        const options = {\n            method: requestMethod,\n            headers: {\n                'X-Requested-With': 'XMLHttpRequest',\n            },\n            credentials: 'same-origin',\n        };\n\n        let requestUrl = url;\n\n        if (data) {\n            const params = toSearchParams(data);\n\n            if (requestMethod === 'GET') {\n                requestUrl += `${url.indexOf('?') > -1 ? '&' : '?'}${params.toString()}`;\n            } else {\n                options.body = params;\n                options.headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';\n            }\n        }\n\n        return fetch(requestUrl, options)\n            .then(async (response) => {\n                const text = await response.text();\n\n                if (!response.ok) {\n                    throw new Error(`Request failed with status ${response.status}`);\n                }\n\n                if (!text) {\n                    return null;\n                }\n\n                try {\n                    return JSON.parse(text);\n                } catch (error) {\n                    return text;\n                }\n            })\n            .catch((error) => {\n                console.log('compare.js request failed', error);\n                return null;\n            });\n    }\n\n    function delegate(root, type, selector, callback) {\n        root.addEventListener(type, (event) => {\n            const target = event.target.closest(selector);\n            const withinRoot = root === document\n                ? !!target && document.documentElement.contains(target)\n                : !!target && root.contains(target);\n\n            if (!withinRoot) {\n                return;\n            }\n\n            callback(event, target);\n        });\n    }\n\n    function updateCheckbox(sku, checked) {\n        document.querySelectorAll('.js-ps-product-checkbox').forEach((checkbox) => {\n            if (checkbox.value !== sku.toString()) {\n                return;\n            }\n\n            checkbox.checked = checked;\n            checkbox.closest('.field')?.classList.toggle('field--checked', checked);\n        });\n    }\n\n    function handleSelectedChange(event) {\n        const skus = getSkus();\n        const field = skus.length === 1 ? 'single' : 'plural';\n        const label = getSelectedData(field);\n        const max = getSelectedData('max');\n        const maxReached = max !== '' && skus.length === Number(max);\n\n        selectedItems.forEach((item) => {\n            item.innerHTML = `${skus.length} ${label}`;\n        });\n\n        bars.forEach((bar) => {\n            bar.classList.toggle('select-bar--selected', skus.length > 0);\n        });\n\n        body?.classList.toggle('compare-max', maxReached);\n\n        document.querySelectorAll('.js-bar-limit').forEach((limit) => {\n            limit.classList.toggle('select-bar__limit--warning', maxReached);\n        });\n\n        if (!event.detail?.initial) {\n            void request('/compare/update', {\n                data: {\n                    setSkus: skus.join(','),\n                    request: new Date().getTime(),\n                },\n            });\n        }\n    }\n\n    function checkScroll() {\n        const scrollable = document.querySelector('.js-compare');\n\n        if (!scrollable) {\n            return;\n        }\n\n        const t = scrollable.scrollTop;\n        const l = scrollable.scrollLeft;\n        const b = scrollable.scrollHeight - scrollable.clientHeight - scrollable.scrollTop;\n        const r = scrollable.scrollWidth - scrollable.clientWidth - scrollable.scrollLeft;\n\n        scrollable.classList.toggle('compare--scroll-top', t > 0);\n        scrollable.classList.toggle('compare--scroll-left', l > 0);\n        scrollable.classList.toggle('compare--scroll-bottom', b > 0);\n        scrollable.classList.toggle('compare--scroll-right', r > 0);\n    }\n\n    function compareWatch() {\n        const scrollable = document.querySelector('.js-compare');\n\n        if (scrollable && watchedCompare !== scrollable) {\n            watchedCompare?.removeEventListener('scroll', checkScroll);\n            watchedCompare = scrollable;\n            watchedCompare.addEventListener('scroll', checkScroll);\n        }\n\n        if (!resizeBound) {\n            window.addEventListener('resize', checkScroll);\n            resizeBound = true;\n        }\n\n        checkScroll();\n    }\n\n    function configurableOptionsScriptLoaded() {\n        const configurableOptionsScript = document.querySelector('script[src*=\"configurable-options.js\"]');\n        return !!configurableOptionsScript;\n    }\n\n    const selected = getSelectedItem();\n\n    if (selected) {\n        selected.addEventListener('change', handleSelectedChange);\n        triggerSelectedChange(true);\n    }\n\n    delegate(document, 'change', '.js-ps-product-checkbox', (event, checkbox) => {\n        event.stopImmediatePropagation();\n\n        let skus = getSkus();\n        const checked = checkbox.checked;\n        const field = checkbox.closest('.field');\n        const sku = checkbox.value;\n        const skuNdx = skus.indexOf(sku.toString());\n        const found = skuNdx > -1;\n\n        if (checked && !found) {\n            skus.push(sku);\n        }\n\n        if (!checked && found) {\n            skus.splice(skuNdx, 1);\n        }\n\n        field?.classList.toggle('field--checked', checked);\n\n        setSelectedSkus(skus);\n    });\n\n    delegate(document, 'click', '.js-compare-submit', (event, button) => {\n        event.preventDefault();\n\n        const selectedSkus = getSelectedData('selected');\n\n        if (selectedSkus === '') {\n            return;\n        }\n\n        button.classList.add('button--disabled');\n\n        Dialog.load('/compare?' + new URLSearchParams({\n            setSkus: selectedSkus,\n            request: new Date().getTime(),\n            compare: 1,\n        }).toString(), {\n            cross_transition: true,\n            scrollable_element: (overlay) => {\n                return overlay.content.querySelector('.js-compare');\n            },\n            modifiers: ['takeover'],\n            callback: () => {\n                compareWatch();\n                button.classList.remove('button--disabled');\n            },\n            closed: () => {\n                if (configurableOptionsScriptLoaded()) {\n                    configurableOptions();\n                }\n            },\n        });\n    });\n\n    delegate(document, 'click', '.js-compare-clear', (event, link) => {\n        event.preventDefault();\n\n        void request(link.href);\n\n        document.querySelectorAll('.field--checked .js-ps-product-checkbox').forEach((checkbox) => {\n            checkbox.checked = false;\n            checkbox.closest('.field')?.classList.remove('field--checked');\n        });\n\n        setSelectedSkus('');\n\n        Dialog.close();\n    });\n\n    delegate(document, 'click', '.js-compare-delete', (event, link) => {\n        event.preventDefault();\n\n        void request(link.href);\n\n        const sku = link.dataset.sku;\n\n        updateCheckbox(sku, false);\n\n        if (selectedItems.length > 0) {\n            let skus = getSkus();\n            const skuNdx = skus.indexOf(sku.toString());\n\n            if (skuNdx > -1) {\n                skus.splice(skuNdx, 1);\n                setSelectedSkus(skus);\n            }\n\n            if (skus.length === 0) {\n                Dialog.close();\n                return;\n            }\n        }\n\n        const column = link.closest('td, th');\n        const table = link.closest('table');\n\n        if (!column || !table) {\n            return;\n        }\n\n        const colNdx = column.cellIndex;\n        const rows = Array.from(table.querySelectorAll('tr'));\n\n        rows.forEach((row) => {\n            const cell = row.querySelectorAll('td, th')[colNdx];\n            cell?.classList.add('compare__cell--deleting');\n        });\n\n        setTimeout(() => {\n            rows.forEach((row) => {\n                const cell = row.querySelectorAll('td, th')[colNdx];\n\n                if (!cell) {\n                    return;\n                }\n\n                cell.innerHTML = '';\n                cell.style.padding = '0';\n            });\n        }, 250);\n\n        setTimeout(() => {\n            rows.forEach((row) => {\n                const cell = row.querySelectorAll('td, th')[colNdx];\n                cell?.remove();\n            });\n\n            checkScroll();\n        }, 500);\n    });\n\n    delegate(document, 'click', '.js-compare-edit', (event, link) => {\n        event.preventDefault();\n\n        window.compareParams = null;\n\n        document.querySelectorAll('script').forEach((script) => {\n            const src = script.getAttribute('src') ?? '';\n\n            if (src.indexOf('configurable-options.js') > -1) {\n                script.remove();\n            }\n        });\n\n        const magnificPopup = window.jQuery?.magnificPopup;\n\n        if (!magnificPopup) {\n            return;\n        }\n\n        magnificPopup.open({\n            mainClass: 'mfp-sidebar',\n            closeMarkup: '<button title=\"%title%\" type=\"button\" class=\"mfp-close\" aria-label=\"Close\">' + svg.render('close') + '</button>',\n            items: {\n                src: link.href,\n                type: 'ajax',\n            },\n            callbacks: {\n                ajaxContentAdded: () => {\n                    const script = document.createElement('script');\n                    script.setAttribute('src', '/javascript/pages/configurable-options.js');\n                    document.head.appendChild(script);\n                },\n                close: () => {\n                    if (window.compareParams) {\n                        let skus = getSkus();\n                        const skuNdx = skus.indexOf(window.compareParams.replace.toString());\n\n                        if (skuNdx > -1) {\n                            skus.splice(skuNdx, 1, window.compareParams.with);\n                            setSelectedSkus(skus);\n                        }\n\n                        updateCheckbox(window.compareParams.replace, false);\n                        updateCheckbox(window.compareParams.with, true);\n\n                        body?.classList.add('compare--loading');\n\n                        void request('/compare?' + new URLSearchParams(window.compareParams).toString())\n                            .then((response) => {\n                                const html = response?.payload?.html;\n\n                                if (!html) {\n                                    return;\n                                }\n\n                                const wrapper = document.createElement('div');\n                                wrapper.innerHTML = html;\n\n                                const nextCompare = wrapper.querySelector('.js-compare');\n                                const currentCompare = document.querySelector('.js-compare');\n\n                                if (currentCompare && nextCompare) {\n                                    currentCompare.innerHTML = nextCompare.innerHTML;\n                                    compareWatch();\n                                }\n                            })\n                            .finally(() => {\n                                body?.classList.remove('compare--loading');\n                            });\n                    }\n                },\n            },\n        });\n    });\n\n    delegate(document, 'submit', '.js-compare-project', (event, form) => {\n        event.preventDefault();\n\n        void request(form.action, {\n            method: 'post',\n            data: new FormData(form),\n        }).then((response) => {\n            if (response && response.payload && response.payload.redirect) {\n                window.location = response.payload.redirect;\n            }\n        });\n    });\n\n    delegate(document, 'click', '.js-compare-variants', (event, link) => {\n        event.preventDefault();\n\n        const variantSkus = link.dataset.variantSkus ?? '';\n\n        if (variantSkus === '') {\n            return;\n        }\n\n        Dialog.load('/compare?' + new URLSearchParams({\n            skus: variantSkus,\n            type: 'variants',\n            request: new Date().getTime(),\n            compare: 1,\n        }).toString(), {\n            cross_transition: true,\n            scrollable_element: (overlay) => {\n                return overlay.content.querySelector('.js-compare');\n            },\n            modifiers: ['takeover'],\n            callback: () => {\n                compareWatch();\n            },\n            closed: () => {\n                configurableOptions();\n            },\n        });\n    });\n})(window, document);\n"]}