{"version":3,"file":"TEKsystems.SitecoreXP.InvisibleReCaptcha.js","names":["define","Init","document","querySelectorAll","length","window","onloadInvisibleRecaptchaCallback","forEach","recaptchaEl","textAreaId","dataset","textAreaEl","getElementById","console","log","callbackName","token","value","setTimeout","button","closest","querySelector","click","widgetId","grecaptcha","render","sitekey","size","callback","script","createElement","setAttribute","defer","body","appendChild","loadRecaptchaScript"],"sources":["site/TEKsystems.SitecoreXP.InvisibleReCaptcha.js"],"mappings":"AAAAA,OAAO,IAAI,WA+DT,MAAO,CACLC,KA/DW,KAIX,GAA4B,IAHPC,SAASC,iBAAiB,qBAG9BC,OACf,OAmBAC,OAAOC,iCAAmC,KACxCJ,SACGC,iBAAiB,qBACjBI,SAASC,IACR,MAAMC,EAAaD,EAAYE,QAA6B,qBAAK,GAC3DC,EAAaT,SAASU,eAAeH,GAE3C,IAAKE,EAIH,YAHAE,QAAQC,IACN,6DAA6DL,MAKjE,MAAMM,EAAeN,EAAa,uBAClCJ,OAAOU,GAAiBC,IACtBL,EAAWM,MAAQD,EACnBE,YAAW,IAAOP,EAAWM,MAAQ,IAAK,MAC1C,MAAME,EAASR,EACZS,QAAQ,SACPC,cAAc,mBAClBF,GAAQG,OAAO,EAGjB,MAAMC,EAAWC,WAAWC,OAAOjB,EAAa,CAC9CkB,QAASlB,EAAYE,QAAiB,QACtCiB,KAAM,YACNC,SAAUb,IAGZJ,EAAWD,QAA2B,kBAAIa,CAAQ,GAClD,EA/CoB,MAM1B,MAGMM,EAAS3B,SAAS4B,cAAc,UACtCD,EAAOE,aAAa,MAHlB,mGAIFF,EAAOG,OAAQ,EACf9B,SAAS+B,KAAKC,YAAYL,EAAO,EAuCnCM,EAAqB,EAMzB","sourcesContent":["define([], function setupInvisibleRecaptcha() {\r\n const Init = () => {\r\n const recaptchaEls = document.querySelectorAll(\".recaptcha-render\");\r\n\r\n // If there are no recaptcha elements on the page, return\r\n if (recaptchaEls.length === 0) {\r\n return;\r\n }\r\n\r\n const loadRecaptchaScript = () => {\r\n // `onload` query parameter is used to specify the callback function for recaptcha to call after loading the script.\r\n // `explicit` query parameter is used to indicate that the recaptcha widget will be rendered by our code. We want to\r\n // render it explicitly in order to get the \"widget id\", which will be useful when we have multiple recaptchas on\r\n // the same page\r\n // More info here: https://developers.google.com/recaptcha/docs/invisible#javascript_resource_apijs_parameters\r\n const scriptUrl =\r\n \"https://www.google.com/recaptcha/api.js?onload=onloadInvisibleRecaptchaCallback&render=explicit\";\r\n\r\n const script = document.createElement(\"script\");\r\n script.setAttribute(\"src\", scriptUrl);\r\n script.defer = true;\r\n document.body.appendChild(script);\r\n };\r\n\r\n const setupRecaptchaCallback = () => {\r\n window.onloadInvisibleRecaptchaCallback = () => {\r\n document\r\n .querySelectorAll(\".recaptcha-render\")\r\n .forEach((recaptchaEl) => {\r\n const textAreaId = recaptchaEl.dataset[\"recaptchaTextareaId\"] || \"\";\r\n const textAreaEl = document.getElementById(textAreaId);\r\n\r\n if (!textAreaEl) {\r\n console.log(\r\n `Unable to find valid recaptcha text area element with id \"${textAreaId}\"`\r\n );\r\n return;\r\n }\r\n\r\n const callbackName = textAreaId + \"__recaptcha-callback\";\r\n window[callbackName] = (token) => {\r\n textAreaEl.value = token;\r\n setTimeout(() => (textAreaEl.value = \"\"), 110000);\r\n const button = textAreaEl\r\n .closest(\"form\")\r\n ?.querySelector('[type=\"submit\"]');\r\n button?.click();\r\n };\r\n\r\n const widgetId = grecaptcha.render(recaptchaEl, {\r\n sitekey: recaptchaEl.dataset[\"sitekey\"],\r\n size: \"invisible\",\r\n callback: callbackName,\r\n });\r\n\r\n textAreaEl.dataset[\"recaptchaWidgetId\"] = widgetId;\r\n });\r\n };\r\n };\r\n setupRecaptchaCallback();\r\n loadRecaptchaScript();\r\n };\r\n\r\n return {\r\n Init,\r\n };\r\n});\r\n"]}