react-google-recaptcha-hook
Version:
React Hook for Google reCAPTCHA v3
2 lines (1 loc) • 1.5 kB
JavaScript
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react"),s=c=>new Promise(e=>{window.___grecaptcha_cfg??={fns:[]},c?window.grecaptcha?.enterprise?e(window.grecaptcha.enterprise):window.___grecaptcha_cfg.fns.push(()=>{e(window.grecaptcha.enterprise)}):window.grecaptcha?e(window.grecaptcha):window.___grecaptcha_cfg.fns.push(()=>{e(window.grecaptcha)})}),i=async(c,e,a)=>(await s(c)).execute(e,{action:a}),u=async c=>{(await s(c)).ready(()=>{const a=document.querySelector(".grecaptcha-badge");a&&(a.style.visibility="hidden")})},d=async c=>{(await s(c)).ready(()=>{const a=document.querySelector(".grecaptcha-badge");a&&(a.style.visibility="visible")})},o=(c,e)=>{const a=e?.language?`&hl=${e.language}`:"",r=e?.enterprise?"enterprise.js":"api.js";return`https://www.${e?.recaptchaNet?"recaptcha.net":"google.com"}/recaptcha/${r}?render=${c}${a}`},l=(c,e)=>{const a=n.useCallback(()=>{if(document.getElementById(c))return;const t=document.createElement("script");t.async=!0,t.type="text/javascript",t.src=o(c,e),t.id=c,document.getElementsByTagName("head")[0].appendChild(t)},[e,c]),r=n.useCallback(()=>u(!!e?.enterprise),[e?.enterprise]),g=n.useCallback(()=>d(!!e?.enterprise),[e?.enterprise]),p=n.useCallback(t=>i(!!e?.enterprise,c,t),[e?.enterprise,c]),h=n.useRef(!1);return n.useEffect(()=>{h.current||(h.current=!0,e?.hide&&r(),a())},[a,r,e]),{executeGoogleReCaptcha:p,hideGoogleReCaptcha:r,showGoogleReCaptcha:g}};exports.useGoogleReCaptcha=l;