{"version":3,"file":"recaptcha-86460c4c.js","sources":["../../../app/javascript/components/Recaptcha.js","../../../app/javascript/entrypoints/recaptcha.js"],"sourcesContent":["import AjaxForm from './AjaxForm';\n\nconst AUTO_RENDER_BUTTON_SELECTOR = \".invisible-recaptcha-default-submit-button\";\n\nclass InvisibleRecaptcha {\n constructor(button) {\n this.button = button;\n this.ajaxForm = new AjaxForm(this.button.closest('form'));\n\n this.button.addEventListener('click', () => this.disableButton(true));\n this.recaptcha = this.renderRecaptcha();\n }\n\n renderRecaptcha() {\n const callback = this.recaptchaCallback.bind(this);\n return window.grecaptcha.render(this.button, { callback }, true);\n }\n\n recaptchaCallback() {\n return this.ajaxForm.submit();\n }\n\n recaptchaReset() {\n window.grecaptcha.reset();\n }\n\n disableButton(flag = true) {\n this.button.disabled = flag;\n }\n}\n\nclass AjaxInvisibleRecaptcha extends InvisibleRecaptcha {\n constructor(button, {success}) {\n super(button);\n this.onSuccess = success;\n }\n\n recaptchaCallback() {\n const success = (json) => {\n this.recaptchaReset();\n this.disableButton(false); // Re-enable button\n this.onSuccess(json);\n };\n\n return this.ajaxForm.ajaxSubmit()\n .then(success);\n }\n}\n\nfunction initDefault() {\n // Using explicit rendering allows us to have multiple recaptchas on the page\n const buttons = Array.from(document.querySelectorAll(AUTO_RENDER_BUTTON_SELECTOR));\n buttons.forEach(button => new InvisibleRecaptcha(button));\n}\n\nfunction loadRecaptchaAsync(callback) {\n // if already loaded\n if (window.grecaptcha) {\n callback();\n return;\n }\n\n window.recaptchaOnloadCallback = callback;\n\n const script = document.createElement('script');\n script.src = 'https://www.google.com/recaptcha/api.js?onload=recaptchaOnloadCallback&render=explicit';\n script.async = true;\n document.head.appendChild(script);\n}\n\nfunction loadAndInitDefault() {\n loadRecaptchaAsync(initDefault);\n}\n\nexport { InvisibleRecaptcha, AjaxInvisibleRecaptcha };\nexport default { initDefault, loadRecaptchaAsync, loadAndInitDefault };\n","import { ready } from '~/utils/common';\nimport Recaptcha from '~/components/Recaptcha';\n\nready(Recaptcha.loadAndInitDefault);\n"],"names":["AUTO_RENDER_BUTTON_SELECTOR","InvisibleRecaptcha","button","AjaxForm","callback","flag","initDefault","loadRecaptchaAsync","script","loadAndInitDefault","Recaptcha","ready"],"mappings":"2IAEA,MAAMA,EAA8B,6CAEpC,MAAMC,CAAmB,CACvB,YAAYC,EAAQ,CAClB,KAAK,OAASA,EACd,KAAK,SAAW,IAAIC,EAAS,KAAK,OAAO,QAAQ,MAAM,CAAC,EAExD,KAAK,OAAO,iBAAiB,QAAS,IAAM,KAAK,cAAc,EAAI,CAAC,EACpE,KAAK,UAAY,KAAK,iBACvB,CAED,iBAAkB,CAChB,MAAMC,EAAW,KAAK,kBAAkB,KAAK,IAAI,EACjD,OAAO,OAAO,WAAW,OAAO,KAAK,OAAQ,CAAE,SAAAA,GAAY,EAAI,CAChE,CAED,mBAAoB,CAClB,OAAO,KAAK,SAAS,QACtB,CAED,gBAAiB,CACf,OAAO,WAAW,OACnB,CAED,cAAcC,EAAO,GAAM,CACzB,KAAK,OAAO,SAAWA,CACxB,CACH,CAoBA,SAASC,GAAc,CAEL,MAAM,KAAK,SAAS,iBAAiBN,CAA2B,CAAC,EACzE,QAAQE,GAAU,IAAID,EAAmBC,CAAM,CAAC,CAC1D,CAEA,SAASK,EAAmBH,EAAU,CAEpC,GAAI,OAAO,WAAY,CACrBA,IACA,MACD,CAED,OAAO,wBAA0BA,EAEjC,MAAMI,EAAS,SAAS,cAAc,QAAQ,EAC9CA,EAAO,IAAM,yFACbA,EAAO,MAAQ,GACf,SAAS,KAAK,YAAYA,CAAM,CAClC,CAEA,SAASC,GAAqB,CAC5BF,EAAmBD,CAAW,CAChC,CAGA,MAAAI,EAAe,CAAE,YAAAJ,EAAa,mBAAAC,EAAoB,mBAAAE,CAAoB,ECxEtEE,EAAMD,EAAU,kBAAkB"}