{"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 && e.submitter.name) {\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,CAAQ,EACvC,IACA,EAAM,QAAU,EAChB,EAAS,CAAK,EAEtB,CACJ,EACA,GAAW,IACf,CACJ,CCxBA,SAAwB,GAAe,CACnC,EACI,SACA,QACA,yCACA,KAAM,IAAK,CACP,EAAE,eAAe,GAEjB,MAD6B,EAAkB,EAAE,OAAO,EAAA,CACzC,KAAK,CACxB,CACJ,EAEA,EAAS,SAAU,SAAU,WAAY,KAAM,IAAK,CAChD,EAAE,eAAe,EACjB,IAAM,EAAiB,MAAM,EAAkB,EAAE,OAAO,EAClD,EAAW,IAAI,SAAS,EAAE,OAAO,EAGnC,EAAE,WAAa,EAAE,UAAU,MAC3B,EAAS,OAAO,EAAE,UAAU,KAAM,EAAE,UAAU,KAAK,EAGvD,EAAe,SAAW,EAC1B,EAAe,KAAK,CACxB,CAAC,EAED,EACI,SACA,SACA,wGACA,KAAM,IAAK,CACP,EAAE,eAAe,EACjB,IAAM,EAAO,EAAE,QAAQ,QAAQ,2BAA2B,EACpD,EAAiB,MAAM,EAAkB,CAAI,EAGnD,EAAe,SAAW,IAFL,SAAS,CAEG,EACjC,EAAe,KAAK,CACxB,CACJ,EAEA,EACI,SACA,SACA,4DACA,KAAM,IAAK,CACP,IAAM,EAAiB,MAAM,EAAkB,EAAE,OAAO,EAClD,EAAW,IAAI,SACrB,EAAS,OAAO,EAAE,QAAQ,KAAM,EAAE,QAAQ,KAAK,EAE/C,EAAe,SAAW,EAC1B,EAAe,KAAK,CACxB,CACJ,EAEA,EAAS,SAAU,QAAS,6BAA8B,KAAM,IAAK,CACjE,GACI,EAAE,QAAQ,aAAa,kBAAkB,GACzC,EAAE,QAAQ,MAAM,OACZ,SAAS,EAAE,QAAQ,aAAa,kBAAkB,CAAC,EACzD,CACM,EAAE,QAAQ,aAAa,iBAAiB,GAExC,MAAM,MADuB,EAAkB,EAAE,OAAO,EAAA,CACnC,MAAM,EAE/B,MACJ,CAEA,IAAM,EAAiB,MAAM,EAAkB,EAAE,OAAO,EAClD,EAAW,IAAI,SACrB,EAAS,OAAO,EAAE,QAAQ,KAAM,EAAE,QAAQ,KAAK,EAE/C,EAAe,SAAW,EAC1B,EAAe,KAAK,CACxB,CAAC,EAED,OAAO,iBAAiB,WAAY,GAAK,CACjC,EAAE,OAAS,EAAE,MAAM,WACnB,QAAQ,KACJ,iEACJ,CAER,CAAC,CACL,CAEA,eAAe,GAAoB,CAC/B,GAAM,CAAE,QAAS,GAAmB,MAAM,OAAO,+BACjD,OAAO,EAAe,IAAI,GAAG,SAAS,CAC1C,CAEI,OAAO,qBACP,OAAO,wBAA0B,CAC7B,OAAO,8BACX,CAAC,EC7FL,EAAa"}