{"version":3,"file":"dialog.js","sources":["../../../resources/javascript/entrypoint/dialog.js","../../../resources/javascript/features/dialog/closeStack.js","../../../resources/javascript/features/dialog/donateButton.js"],"sourcesContent":["import { closeStack } from '../features/dialog/closeStack.js';\nimport { donateButton } from '../features/dialog/donateButton.js';\n\ndocument.addEventListener('DOMContentLoaded', () => {\n    closeStack();\n    donateButton();\n});\n","export const closeStack = () => {\n    let dialogStack = [];\n\n    document.addEventListener('click', (e) => {\n        const closeAllButton = e.target.closest('[data-close-all]');\n        const dialogCloseButton = e.target.closest('[dialog-close]');\n        \n        if (closeAllButton) {\n            const openDialogs = document.querySelectorAll('dialog[open]');\n            if (openDialogs.length > 0) {\n                const topDialog = dialogStack[dialogStack.length - 1] || openDialogs[openDialogs.length - 1];\n                \n                // Disable transitions on all except top dialog, close all, restore transitions\n                openDialogs.forEach(dialog => {\n                    if (dialog !== topDialog) dialog.style.transition = 'none';\n                    dialog.close();\n                });\n                setTimeout(() => openDialogs.forEach(dialog => \n                    dialog !== topDialog && (dialog.style.transition = '')\n                ), 300);\n            }\n            dialogStack = [];\n            e.preventDefault();\n            e.stopPropagation();\n        } else if (dialogCloseButton && dialogStack.length > 0) {\n            dialogStack.pop().close();\n            e.preventDefault();\n            e.stopPropagation();\n        }\n    });\n\n    // Manage dialog stack and observe new dialogs\n    const observeDialog = dialog => new MutationObserver(mutations => {\n        mutations.forEach(mutation => {\n            if (mutation.type === 'attributes' && mutation.attributeName === 'open') {\n                const dialog = mutation.target;\n                if (dialog.hasAttribute('open') && !dialogStack.includes(dialog)) {\n                    dialogStack.push(dialog);\n                }\n            }\n        });\n    }).observe(dialog, { attributes: true, attributeFilter: ['open'] });\n    \n    // Observe existing and new dialogs\n    document.querySelectorAll('dialog').forEach(observeDialog);\n    new MutationObserver(mutations => \n        mutations.forEach(mutation => \n            mutation.addedNodes.forEach(node => \n                node.nodeType === 1 && node.tagName === 'DIALOG' && observeDialog(node)\n            )\n        )\n    ).observe(document.body, { childList: true, subtree: true });\n}\n\n\n","// give any block ctas the ability to open the donate dialog\nexport const donateButton = () => {\n    const donateButtons = document.querySelectorAll('.block__cta[href=\"/donate\"]');\n    if (donateButtons) {\n        donateButtons.forEach(button => {\n            button.setAttribute('data-dialog', '');\n            button.setAttribute('data-stack', '');\n        });\n    }\n}\n"],"names":["document","addEventListener","closeStack","dialogStack","e","closeAllButton","target","closest","dialogCloseButton","openDialogs","querySelectorAll","length","topDialog","forEach","dialog","style","transition","close","setTimeout","preventDefault","stopPropagation","pop","observeDialog","MutationObserver","mutations","mutation","type","attributeName","hasAttribute","includes","push","observe","attributes","attributeFilter","addedNodes","node","nodeType","tagName","body","childList","subtree","donateButton","donateButtons","button","setAttribute"],"mappings":"AAGAA,SAASC,iBAAiB,oBAAoB,KCHpBC,MACtB,IAAIC,EAAc,GAElBH,SAASC,iBAAiB,SAAUG,IAChC,MAAMC,EAAiBD,EAAEE,OAAOC,QAAQ,oBAClCC,EAAoBJ,EAAEE,OAAOC,QAAQ,kBAE3C,GAAIF,EAAgB,CAChB,MAAMI,EAAcT,SAASU,iBAAiB,gBAC9C,GAAID,EAAYE,OAAS,EAAG,CACxB,MAAMC,EAAYT,EAAYA,EAAYQ,OAAS,IAAMF,EAAYA,EAAYE,OAAS,GAG1FF,EAAYI,SAAQC,IACZA,IAAWF,IAAWE,EAAOC,MAAMC,WAAa,QACpDF,EAAOG,OAAO,IAElBC,YAAW,IAAMT,EAAYI,SAAQC,GACjCA,IAAWF,IAAcE,EAAOC,MAAMC,WAAa,OACpD,IACnB,CACYb,EAAc,GACdC,EAAEe,iBACFf,EAAEgB,iBACL,MAAUZ,GAAqBL,EAAYQ,OAAS,IACjDR,EAAYkB,MAAMJ,QAClBb,EAAEe,iBACFf,EAAEgB,kBACd,IAII,MAAME,EAAgBR,GAAU,IAAIS,kBAAiBC,IACjDA,EAAUX,SAAQY,IACd,GAAsB,eAAlBA,EAASC,MAAoD,SAA3BD,EAASE,cAA0B,CACrE,MAAMb,EAASW,EAASnB,OACpBQ,EAAOc,aAAa,UAAYzB,EAAY0B,SAASf,IACrDX,EAAY2B,KAAKhB,EAErC,IACU,IACHiB,QAAQjB,EAAQ,CAAEkB,YAAY,EAAMC,gBAAiB,CAAC,UAGzDjC,SAASU,iBAAiB,UAAUG,QAAQS,GAC5C,IAAIC,kBAAiBC,GACjBA,EAAUX,SAAQY,GACdA,EAASS,WAAWrB,SAAQsB,GACN,IAAlBA,EAAKC,UAAmC,WAAjBD,EAAKE,SAAwBf,EAAca,SAG5EJ,QAAQ/B,SAASsC,KAAM,CAAEC,WAAW,EAAMC,SAAS,GAAO,ED/C5DtC,GEHwBuC,MACxB,MAAMC,EAAgB1C,SAASU,iBAAiB,+BAC5CgC,GACAA,EAAc7B,SAAQ8B,IAClBA,EAAOC,aAAa,cAAe,IACnCD,EAAOC,aAAa,aAAc,GAAG,GAEjD,EFHIH,EAAc"}