{"version":3,"file":"triggers.js","names":[],"sources":["../node_modules/@d3r/js-tools/src/utils/delegate.js","../resources/javascript/features/triggers.js","../resources/javascript/triggers.js"],"sourcesContent":["export default function delegate(\n    element,\n    eventType,\n    selector,\n    listener,\n    options\n) {\n    element.addEventListener(\n        eventType,\n        /**\n         * @param {Event} event\n         */\n        function callback(event) {\n            if (\n                event.target instanceof HTMLElement ||\n                event.target instanceof SVGElement\n            ) {\n                var closest = event.target.closest(selector);\n                if (closest) {\n                    event.closest = closest;\n                    listener(event);\n                }\n            }\n        },\n        options || null\n    );\n}\n","import { delegate } from '@d3r/js-tools';\n\nexport default function bindTriggers() {\n    delegate(\n        document,\n        'click',\n        'a[lp],button[lp],[lp-trigger^=\"click\"]',\n        async e => {\n            e.preventDefault();\n            const triggerElement = await getTriggerElement(e.closest);\n            triggerElement.fire();\n        }\n    );\n\n    delegate(document, 'submit', 'form[lp]', async e => {\n        e.preventDefault();\n        const triggerElement = await getTriggerElement(e.closest);\n        const formData = new FormData(e.closest);\n\n        // FormData does not include the value from the submit button by default\n        if (e.submitter) {\n            formData.append(e.submitter.name, e.submitter.value);\n        }\n\n        triggerElement.formData = formData;\n        triggerElement.fire();\n    });\n\n    delegate(\n        document,\n        'change',\n        'form[lp-trigger=\"change\"] input, form[lp-trigger=\"change\"] select, form[lp-trigger=\"change\"] textarea',\n        async e => {\n            e.preventDefault();\n            const form = e.closest.closest('form[lp-trigger=\"change\"]');\n            const triggerElement = await getTriggerElement(form);\n            const formData = new FormData(form);\n\n            triggerElement.formData = formData;\n            triggerElement.fire();\n        }\n    );\n\n    delegate(\n        document,\n        'change',\n        'input[lp-trigger^=\"change\"], select[lp-trigger^=\"change\"]',\n        async e => {\n            const triggerElement = await getTriggerElement(e.closest);\n            const formData = new FormData();\n            formData.append(e.closest.name, e.closest.value);\n\n            triggerElement.formData = formData;\n            triggerElement.fire();\n        }\n    );\n\n    delegate(document, 'input', 'input[lp-trigger^=\"input\"]', async e => {\n        if (\n            e.closest.hasAttribute('lp-prefix-length') &&\n            e.closest.value.length <\n                parseInt(e.closest.getAttribute('lp-prefix-length'))\n        ) {\n            if (e.closest.hasAttribute('lp-prefix-clear')) {\n                const triggerElement = await getTriggerElement(e.closest);\n                await triggerElement.clear();\n            }\n            return;\n        }\n\n        const triggerElement = await getTriggerElement(e.closest);\n        const formData = new FormData();\n        formData.append(e.closest.name, e.closest.value);\n\n        triggerElement.formData = formData;\n        triggerElement.fire();\n    });\n\n    window.addEventListener('popstate', e => {\n        if (e.state && e.state.live_page) {\n            console.warn(\n                'Live Page popstate handling has not been fully implemented yet.'\n            );\n        }\n    });\n}\n\nasync function getTriggerElement() {\n    const { default: TriggerElement } = await import('../elements/trigger');\n    return TriggerElement.get(...arguments);\n}\n\nif (window.requestIdleCallback) {\n    window.requestIdleCallback(() => {\n        import('../elements/trigger');\n    });\n}\n","import bindTriggers from './features/triggers.js';\n\nbindTriggers();\n"],"x_google_ignoreList":[0],"mappings":"AAAA,SAAwB,EACpB,EACA,EACA,EACA,EACA,EACF,CACE,EAAQ,iBACJ,EAIA,SAAkB,EAAO,CACrB,GACI,EAAM,kBAAkB,aACxB,EAAM,kBAAkB,WAC1B,CACE,IAAI,EAAU,EAAM,OAAO,QAAQ,EAAS,CACxC,IACA,EAAM,QAAU,EAChB,EAAS,EAAM,IAI3B,GAAW,KACd,CCvBL,SAAwB,GAAe,CACnC,EACI,SACA,QACA,yCACA,KAAM,IAAK,CACP,EAAE,gBAAgB,EAElB,MAD6B,EAAkB,EAAE,QAAQ,EAC1C,MAAM,EAE5B,CAED,EAAS,SAAU,SAAU,WAAY,KAAM,IAAK,CAChD,EAAE,gBAAgB,CAClB,IAAM,EAAiB,MAAM,EAAkB,EAAE,QAAQ,CACnD,EAAW,IAAI,SAAS,EAAE,QAAQ,CAGpC,EAAE,WACF,EAAS,OAAO,EAAE,UAAU,KAAM,EAAE,UAAU,MAAM,CAGxD,EAAe,SAAW,EAC1B,EAAe,MAAM,EACvB,CAEF,EACI,SACA,SACA,wGACA,KAAM,IAAK,CACP,EAAE,gBAAgB,CAClB,IAAM,EAAO,EAAE,QAAQ,QAAQ,4BAA4B,CACrD,EAAiB,MAAM,EAAkB,EAAK,CAGpD,EAAe,SAAW,IAFL,SAAS,EAEI,CAClC,EAAe,MAAM,EAE5B,CAED,EACI,SACA,SACA,4DACA,KAAM,IAAK,CACP,IAAM,EAAiB,MAAM,EAAkB,EAAE,QAAQ,CACnD,EAAW,IAAI,SACrB,EAAS,OAAO,EAAE,QAAQ,KAAM,EAAE,QAAQ,MAAM,CAEhD,EAAe,SAAW,EAC1B,EAAe,MAAM,EAE5B,CAED,EAAS,SAAU,QAAS,6BAA8B,KAAM,IAAK,CACjE,GACI,EAAE,QAAQ,aAAa,mBAAmB,EAC1C,EAAE,QAAQ,MAAM,OACZ,SAAS,EAAE,QAAQ,aAAa,mBAAmB,CAAC,CAC1D,CACM,EAAE,QAAQ,aAAa,kBAAkB,EAEzC,MAAM,MADuB,EAAkB,EAAE,QAAQ,EACpC,OAAO,CAEhC,OAGJ,IAAM,EAAiB,MAAM,EAAkB,EAAE,QAAQ,CACnD,EAAW,IAAI,SACrB,EAAS,OAAO,EAAE,QAAQ,KAAM,EAAE,QAAQ,MAAM,CAEhD,EAAe,SAAW,EAC1B,EAAe,MAAM,EACvB,CAEF,OAAO,iBAAiB,WAAY,GAAK,CACjC,EAAE,OAAS,EAAE,MAAM,WACnB,QAAQ,KACJ,kEACH,EAEP,CAGN,eAAe,GAAoB,CAC/B,GAAM,CAAE,QAAS,GAAmB,MAAM,OAAO,+BACjD,OAAO,EAAe,IAAI,GAAG,UAAU,CAGvC,OAAO,qBACP,OAAO,wBAA0B,CAC7B,OAAO,gCACT,CC7FN,GAAc"}