{"version":3,"file":"kiosk-frame.js","names":[],"sources":["../resources/javascript/features/kiosk-shortlist/lazy.js","../resources/javascript/kiosk-frame.js"],"sourcesContent":["// @ts-check\n\nimport Dialog from 'dialog';\nimport { once } from 'lodash-es';\nimport { whenIdle } from '../../util/idle.js';\nimport { onDOMContentLoaded } from '../../util/loaded.js';\nimport { delegateEvent } from '../../util/events.js';\nimport {\n    getShortlistId,\n    getShortlistData,\n    getLocalWishlist,\n    updateQuickBasketCount,\n    loadMyItemsOverlay,\n} from '../kiosk-shortlist/index.js';\n\nexport const loadShortlistModule = once(async () => await import('./index.js'));\n\nexport const addItemToShortlist = async (data, uuid) => {\n    const { addItemToShortlist } = await loadShortlistModule();\n    return await addItemToShortlist(data, uuid);\n};\n\nexport const removeItemFromShortlist = async (data, uuid) => {\n    const { removeItemFromShortlist } = await loadShortlistModule();\n    return await removeItemFromShortlist(data, uuid);\n};\n\nexport const clearShortlist = async uuid => {\n    const { clearShortlist } = await loadShortlistModule();\n    return clearShortlist(uuid);\n};\n\nexport const initShortlistButtons = async () => {\n    const wishlist = await getLocalWishlist();\n    updateQuickBasketCount(wishlist.keys?.length || 0);\n\n    // Set the state of the shortlist buttons\n    delegateEvent(\n        document.body,\n        'click',\n        '[data-shortlist-action=\"add\"]',\n        async (e, button) => {\n            e.preventDefault();\n\n            const data = getShortlistData(button);\n            const listUUID = getShortlistId(button);\n\n            await addItemToShortlist(data, listUUID || false);\n            await loadMyItemsOverlay();\n        }\n    );\n\n    // Set the state of the shortlist buttons\n    // Handle shortlist item remove button clicks.\n    delegateEvent(\n        document.body,\n        'click',\n        '[data-shortlist-action=\"remove\"]',\n        async (e, button) => {\n            e.preventDefault();\n\n            const data = getShortlistData(button);\n            const listUUID = getShortlistId(button);\n\n            await removeItemFromShortlist(data, listUUID || false);\n            await loadMyItemsOverlay();\n        }\n    );\n\n    delegateEvent(\n        document.body,\n        'click',\n        '[data-clear-shortlist]',\n        async (e, button) => {\n            const listUUID = getShortlistId(button);\n\n            await clearShortlist(listUUID || false).then(() => {\n                Dialog.close();\n            });\n        }\n    );\n\n    delegateEvent(\n        document.body,\n        'click',\n        '[data-save-shortlist]',\n        async (e, button) => {\n            e.preventDefault();\n\n            let thanksRedirectInterval;\n\n            Dialog.load('/my-items/save-items', {\n                response_type: 'json',\n                modifiers: ['sidebar', 'save-items'],\n                callback: e => {\n                    const form = document.querySelector(\n                        'form.kiosk-dialog__form'\n                    );\n                    const shortlistId = getShortlistId(form);\n\n                    thanksRedirectInterval = setInterval(function () {\n                        fetch(`/my-items/check-list-saved?list=${shortlistId}`)\n                            .then(r => r.json())\n                            .then(response => {\n                                if (response.result) {\n                                    Dialog.load('/my-items/thanks', {\n                                        response_type: 'json',\n                                        modifiers: ['sidebar', 'thanks'],\n                                        callback: e => {\n                                            initThanksCountdownTimer();\n                                        },\n                                        close: e => {\n                                            clearInterval(thanksCountdownTimer);\n                                        },\n                                    });\n                                }\n                            });\n                    }, 10000);\n                },\n                close: e => {\n                    clearInterval(thanksRedirectInterval);\n                },\n            });\n        }\n    );\n\n    delegateEvent(document.body, 'submit', 'form[data-save-items]', async e => {\n        e.preventDefault();\n\n        const formData = new FormData(e.target.closest('form'));\n        let countdownInterval;\n\n        Dialog.load('/my-items/save-items', {\n            method: 'POST',\n            data: formData,\n            response_type: 'json',\n            modifiers: ['sidebar', 'save-items'],\n            callback: e => {\n                initThanksCountdownTimer();\n            },\n            close: e => {\n                clearInterval(thanksCountdownTimer);\n            },\n        });\n    });\n\n    // If any shortlist buttons are currently on the page, lazy-load shortlist\n    // functionality when the browser is idle.\n    onDOMContentLoaded(() => {\n        whenIdle(async () => {\n            if (document.querySelector('[data-shortlist-add]')) {\n                await loadShortlistModule();\n            }\n        });\n    });\n};\n\nlet thanksCountdownTimer;\n\nconst initThanksCountdownTimer = () => {\n    const countdownTimer = document.querySelector(\n        '.kiosk-dialog__session-info .session_finish_countdown'\n    );\n\n    if (!countdownTimer) {\n        return;\n    }\n\n    let remaining = parseInt(String(countdownTimer.textContent));\n\n    thanksCountdownTimer = setInterval(() => {\n        if (remaining < 1) {\n            window.location.href = '/screen-saver';\n        } else {\n            countdownTimer.innerHTML = String(--remaining);\n        }\n    }, 1000);\n};\n","// @ts-check\n\nimport { initShortlistButtons } from './features/kiosk-shortlist/lazy';\n\ninitShortlistButtons();\n"],"mappings":"wRAeA,MAAa,EAAsB,EAAK,SAAY,MAAM,OAAO,uCAAA,KAAA,GAAA,EAAA,EAAA,CAAc,CAElE,EAAqB,MAAO,EAAM,IAAS,CACpD,GAAM,CAAE,sBAAuB,MAAM,GAAqB,CAC1D,OAAO,MAAM,EAAmB,EAAM,EAAK,EAGlC,EAA0B,MAAO,EAAM,IAAS,CACzD,GAAM,CAAE,2BAA4B,MAAM,GAAqB,CAC/D,OAAO,MAAM,EAAwB,EAAM,EAAK,EAGvC,EAAiB,KAAM,IAAQ,CACxC,GAAM,CAAE,kBAAmB,MAAM,GAAqB,CACtD,OAAO,EAAe,EAAK,EAGlB,EAAuB,SAAY,CAE5C,GADiB,MAAM,GAAkB,EACT,MAAM,QAAU,EAAE,CAGlD,EACI,SAAS,KACT,QACA,gCACA,MAAO,EAAG,IAAW,CACjB,EAAE,gBAAgB,CAKlB,MAAM,EAHO,EAAiB,EAAO,CACpB,EAAe,EAAO,EAEI,GAAM,CACjD,MAAM,GAAoB,EAEjC,CAID,EACI,SAAS,KACT,QACA,mCACA,MAAO,EAAG,IAAW,CACjB,EAAE,gBAAgB,CAKlB,MAAM,EAHO,EAAiB,EAAO,CACpB,EAAe,EAAO,EAES,GAAM,CACtD,MAAM,GAAoB,EAEjC,CAED,EACI,SAAS,KACT,QACA,yBACA,MAAO,EAAG,IAAW,CAGjB,MAAM,EAFW,EAAe,EAAO,EAEN,GAAM,CAAC,SAAW,CAC/C,EAAO,OAAO,EAChB,EAET,CAED,EACI,SAAS,KACT,QACA,wBACA,MAAO,EAAG,IAAW,CACjB,EAAE,gBAAgB,CAElB,IAAI,EAEJ,EAAO,KAAK,uBAAwB,CAChC,cAAe,OACf,UAAW,CAAC,UAAW,aAAa,CACpC,SAAU,GAAK,CAIX,IAAM,EAAc,EAHP,SAAS,cAClB,0BACH,CACuC,CAExC,EAAyB,YAAY,UAAY,CAC7C,MAAM,mCAAmC,IAAc,CAClD,KAAK,GAAK,EAAE,MAAM,CAAC,CACnB,KAAK,GAAY,CACV,EAAS,QACT,EAAO,KAAK,mBAAoB,CAC5B,cAAe,OACf,UAAW,CAAC,UAAW,SAAS,CAChC,SAAU,GAAK,CACX,GAA0B,EAE9B,MAAO,GAAK,CACR,cAAc,EAAqB,EAE1C,CAAC,EAER,EACP,IAAM,EAEb,MAAO,GAAK,CACR,cAAc,EAAuB,EAE5C,CAAC,EAET,CAED,EAAc,SAAS,KAAM,SAAU,wBAAyB,KAAM,IAAK,CACvE,EAAE,gBAAgB,CAElB,IAAM,EAAW,IAAI,SAAS,EAAE,OAAO,QAAQ,OAAO,CAAC,CAGvD,EAAO,KAAK,uBAAwB,CAChC,OAAQ,OACR,KAAM,EACN,cAAe,OACf,UAAW,CAAC,UAAW,aAAa,CACpC,SAAU,GAAK,CACX,GAA0B,EAE9B,MAAO,GAAK,CACR,cAAc,EAAqB,EAE1C,CAAC,EACJ,CAIF,MAAyB,CACrB,EAAS,SAAY,CACb,SAAS,cAAc,uBAAuB,EAC9C,MAAM,GAAqB,EAEjC,EACJ,EAGN,IAAI,EAEJ,MAAM,MAAiC,CACnC,IAAM,EAAiB,SAAS,cAC5B,wDACH,CAED,GAAI,CAAC,EACD,OAGJ,IAAI,EAAY,SAAS,OAAO,EAAe,YAAY,CAAC,CAE5D,EAAuB,gBAAkB,CACjC,EAAY,EACZ,OAAO,SAAS,KAAO,gBAEvB,EAAe,UAAY,OAAO,EAAE,EAAU,EAEnD,IAAK,EC5KZ,GAAsB"}