{"version":3,"file":"recaptcha-DAqyjqvl.js","sources":["../../Client/js/recaptcha.js"],"sourcesContent":["export function initCaptcha({\n formElemID,\n fieldElemID,\n fieldName = \"CaptchaToken\",\n onSubmit = (e) => {},\n actionName = \"submit\",\n}) {\n const formSelector = `#${formElemID}`;\n const fieldSelector = `#${fieldElemID}`;\n\n const formEl =\n document.querySelector(formSelector) ||\n document.querySelector(fieldSelector)?.closest(\"form\");\n\n if (!(formEl instanceof HTMLFormElement)) {\n console.error(`No form element found for the given selector`);\n\n return;\n }\n\n formEl.addEventListener(\"submit\", async function (event) {\n event.preventDefault();\n\n if (!(event.target[fieldName] instanceof HTMLInputElement)) {\n throw new Error(\"Captcha Token element missing from form\");\n }\n\n if (event.target[fieldName].value) {\n event.target.dispatchEvent(new CustomEvent(\"captchaReady\"));\n return;\n }\n\n const token = await validateCaptcha(actionName);\n\n event.target[fieldName].value = token;\n\n onSubmit(event);\n\n event.target.dispatchEvent(new CustomEvent(\"captchaReady\"));\n });\n}\n\n/**\n * Retrieves the globally accessible \"captchaSiteKey\" and validates the current page's captcha\n * @returns {Promise} resolved with the validated captcha token and rejected if the captcha was not validated\n */\nexport function validateCaptcha(action) {\n const captchaSiteKeyMetaEl = document.querySelector(\n 'meta[name=\"captchaSiteKey\"]'\n );\n\n if (!(captchaSiteKeyMetaEl instanceof HTMLMetaElement)) {\n throw new Error(\"Captcha Site Key is missing.\");\n }\n\n const captchaSiteKey = captchaSiteKeyMetaEl.content;\n\n return new Promise(function (resolve, reject) {\n const grecaptcha = window.grecaptcha;\n\n if (!grecaptcha) {\n reject(\"Missing recaptcha library\");\n return;\n }\n\n grecaptcha.ready(function () {\n grecaptcha.execute(captchaSiteKey, { action }).then((token) => {\n if (token && token !== \"\") {\n resolve(token);\n return;\n }\n\n reject(\"Invalid recaptcha response\");\n });\n });\n });\n}\n"],"names":["initCaptcha","formElemID","fieldElemID","fieldName","onSubmit","actionName","_a","formSelector","fieldSelector","formEl","event","token","validateCaptcha","action","captchaSiteKeyMetaEl","captchaSiteKey","resolve","reject","grecaptcha"],"mappings":"AAAO,SAASA,EAAY,CAC1B,WAAAC,EACA,YAAAC,EACA,UAAAC,EAAY,eACZ,SAAAC,EAAY,GAAM,CAAE,EACpB,WAAAC,EAAa,QACf,EAAG,CANI,IAAAC,EAOL,MAAMC,EAAe,IAAIN,CAAU,GAC7BO,EAAgB,IAAIN,CAAW,GAE/BO,EACJ,SAAS,cAAcF,CAAY,KACnCD,EAAA,SAAS,cAAcE,CAAa,IAApC,YAAAF,EAAuC,QAAQ,SAEjD,GAAI,EAAEG,aAAkB,iBAAkB,CACxC,QAAQ,MAAM,8CAA8C,EAE5D,MACJ,CAEEA,EAAO,iBAAiB,SAAU,eAAgBC,EAAO,CAGvD,GAFAA,EAAM,eAAgB,EAElB,EAAEA,EAAM,OAAOP,CAAS,YAAa,kBACvC,MAAM,IAAI,MAAM,yCAAyC,EAG3D,GAAIO,EAAM,OAAOP,CAAS,EAAE,MAAO,CACjCO,EAAM,OAAO,cAAc,IAAI,YAAY,cAAc,CAAC,EAC1D,MACN,CAEI,MAAMC,EAAQ,MAAMC,EAAgBP,CAAU,EAE9CK,EAAM,OAAOP,CAAS,EAAE,MAAQQ,EAEhCP,EAASM,CAAK,EAEdA,EAAM,OAAO,cAAc,IAAI,YAAY,cAAc,CAAC,CAC9D,CAAG,CACH,CAMO,SAASE,EAAgBC,EAAQ,CACtC,MAAMC,EAAuB,SAAS,cACpC,6BACD,EAED,GAAI,EAAEA,aAAgC,iBACpC,MAAM,IAAI,MAAM,8BAA8B,EAGhD,MAAMC,EAAiBD,EAAqB,QAE5C,OAAO,IAAI,QAAQ,SAAUE,EAASC,EAAQ,CAC5C,MAAMC,EAAa,OAAO,WAE1B,GAAI,CAACA,EAAY,CACfD,EAAO,2BAA2B,EAClC,MACN,CAEIC,EAAW,MAAM,UAAY,CAC3BA,EAAW,QAAQH,EAAgB,CAAE,OAAAF,CAAM,CAAE,EAAE,KAAMF,GAAU,CAC7D,GAAIA,GAASA,IAAU,GAAI,CACzBK,EAAQL,CAAK,EACb,MACV,CAEQM,EAAO,4BAA4B,CAC3C,CAAO,CACP,CAAK,CACL,CAAG,CACH"}