{"version":3,"file":"AjaxForm-d88cbdf8.js","sources":["../../../app/javascript/utils/dom.js","../../../app/javascript/components/AjaxForm.js"],"sourcesContent":["import { isElement } from 'lodash';\n\nexport function selectorOrElement(selOrEl) {\n if (isElement(selOrEl)) return selOrEl;\n return document.querySelector(selOrEl);\n}\n","import { selectorOrElement } from '~/utils/dom';\nimport { fetchJSON } from '~/utils/net';\n\nexport default class AjaxForm {\n constructor(form) {\n this.form = selectorOrElement(form);\n }\n\n get action() {\n return this.form.action;\n }\n\n get data() {\n return new FormData(this.form);\n }\n\n submit() {\n return this.form.submit();\n }\n\n bindSubmit() {\n this.form.addEventListener('submit', e => {\n e.preventDefault()\n this.ajaxSubmit();\n });\n }\n\n ajaxSubmit() {\n const opts = {\n method: 'POST',\n body: this.data\n };\n\n this.dispatch('ajax:before');\n\n return fetchJSON(this.action, opts)\n .then(resp => this.dispatch('ajax:success', resp))\n .catch((error) => {\n console.log(error);\n this.dispatch('ajax:failure', error)\n });\n }\n\n addEventListener(eventName, callback) {\n return this.form.addEventListener(eventName, callback);\n }\n\n dispatch(eventName, payload = {}) {\n const event = new CustomEvent(eventName, { detail: payload });\n this.form.dispatchEvent(event);\n return payload; // to enable chaining\n }\n}\n"],"names":["selectorOrElement","selOrEl","isElement","AjaxForm","form","e","opts","fetchJSON","resp","error","eventName","callback","payload","event"],"mappings":"0EAEO,SAASA,EAAkBC,EAAS,CACzC,OAAIC,YAAUD,CAAO,EAAUA,EACxB,SAAS,cAAcA,CAAO,CACvC,CCFe,MAAME,CAAS,CAC5B,YAAYC,EAAM,CAChB,KAAK,KAAOJ,EAAkBI,CAAI,CACnC,CAED,IAAI,QAAS,CACX,OAAO,KAAK,KAAK,MAClB,CAED,IAAI,MAAO,CACT,OAAO,IAAI,SAAS,KAAK,IAAI,CAC9B,CAED,QAAS,CACP,OAAO,KAAK,KAAK,QAClB,CAED,YAAa,CACX,KAAK,KAAK,iBAAiB,SAAUC,GAAK,CACxCA,EAAE,eAAgB,EAClB,KAAK,WAAU,CACrB,CAAK,CACF,CAED,YAAa,CACX,MAAMC,EAAO,CACX,OAAQ,OACR,KAAM,KAAK,IACjB,EAEI,YAAK,SAAS,aAAa,EAEpBC,EAAU,KAAK,OAAQD,CAAI,EAC/B,KAAKE,GAAQ,KAAK,SAAS,eAAgBA,CAAI,CAAC,EAChD,MAAOC,GAAU,CAChB,QAAQ,IAAIA,CAAK,EACjB,KAAK,SAAS,eAAgBA,CAAK,CAC3C,CAAO,CACJ,CAED,iBAAiBC,EAAWC,EAAU,CACpC,OAAO,KAAK,KAAK,iBAAiBD,EAAWC,CAAQ,CACtD,CAED,SAASD,EAAWE,EAAU,GAAI,CAChC,MAAMC,EAAQ,IAAI,YAAYH,EAAW,CAAE,OAAQE,CAAO,CAAE,EAC5D,YAAK,KAAK,cAAcC,CAAK,EACtBD,CACR,CACH"}