{"version":3,"file":"dialog.js","names":[],"sources":["../../resources/javascript/features/dialog/closeStack.js","../../resources/javascript/features/dialog/donateButton.js","../../resources/javascript/entrypoint/dialog.js"],"sourcesContent":["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","import { closeStack } from '../features/dialog/closeStack.js';\nimport { donateButton } from '../features/dialog/donateButton.js';\n\ndocument.addEventListener('DOMContentLoaded', () => {\n    closeStack();\n    donateButton();\n});\n"],"mappings":"AAAA,IAAa,EAAA,UAAmB,CAC5B,IAAI,EAAc,CAAA,EAElB,SAAS,iBAAiB,QAAA,SAAU,EAAM,CACtC,IAAM,EAAiB,EAAE,OAAO,QAAQ,kBAAkB,EACpD,EAAoB,EAAE,OAAO,QAAQ,gBAAgB,EAE3D,GAAI,EAAgB,CAChB,IAAM,EAAc,SAAS,iBAAiB,cAAc,EAC5D,GAAI,EAAY,OAAS,EAAG,CACxB,IAAM,EAAY,EAAY,EAAY,OAAS,IAAM,EAAY,EAAY,OAAS,GAG1F,EAAY,QAAA,SAAQ,EAAU,CACtB,IAAW,IAAW,EAAO,MAAM,WAAa,QACpD,EAAO,MAAM,CACjB,CAAC,EACD,WAAA,UAAA,CAAA,OAAiB,EAAY,QAAA,SAAQ,EAAA,CAAA,OACjC,IAAW,IAAc,EAAO,MAAM,WAAa,GACvD,CAAA,CAAA,EAAG,GAAG,CACV,CACA,EAAc,CAAA,EACd,EAAE,eAAe,EACjB,EAAE,gBAAgB,CACtB,MAAW,GAAqB,EAAY,OAAS,IACjD,EAAY,IAAI,CAAC,CAAC,MAAM,EACxB,EAAE,eAAe,EACjB,EAAE,gBAAgB,EAE1B,CAAC,EAGD,IAAM,EAAA,SAAgB,EAAA,CAAA,OAAU,IAAI,iBAAA,SAAiB,EAAa,CAC9D,EAAU,QAAA,SAAQ,EAAY,CAC1B,GAAI,EAAS,OAAS,cAAgB,EAAS,gBAAkB,OAAQ,CACrE,IAAM,EAAS,EAAS,OACpB,EAAO,aAAa,MAAM,GAAK,CAAC,EAAY,SAAS,CAAM,GAC3D,EAAY,KAAK,CAAM,CAE/B,CACJ,CAAC,CACL,CAAC,CAAC,CAAC,QAAQ,EAAQ,CAAE,WAAY,GAAM,gBAAiB,CAAC,MAAM,CAAE,CAAC,CAAA,EAGlE,SAAS,iBAAiB,QAAQ,CAAC,CAAC,QAAQ,CAAa,EACzD,IAAI,iBAAA,SAAiB,EAAA,CAAA,OACjB,EAAU,QAAA,SAAQ,EAAA,CAAA,OACd,EAAS,WAAW,QAAA,SAAQ,EAAA,CAAA,OACxB,EAAK,WAAa,GAAK,EAAK,UAAY,UAAY,EAAc,CAAI,CAC1E,CAAA,CACJ,CAAA,CACJ,CAAA,CAAC,CAAC,QAAQ,SAAS,KAAM,CAAE,UAAW,GAAM,QAAS,EAAK,CAAC,CAC/D,ECnDa,EAAA,UAAqB,CAC9B,IAAM,EAAgB,SAAS,iBAAiB,6BAA6B,EACzE,GACA,EAAc,QAAA,SAAQ,EAAU,CAC5B,EAAO,aAAa,cAAe,EAAE,EACrC,EAAO,aAAa,aAAc,EAAE,CACxC,CAAC,CAET,ECNA,SAAS,iBAAiB,mBAAA,UAA0B,CAChD,EAAW,EACX,EAAa,CACjB,CAAC"}