{"version":3,"file":"RecaptchaInput_2.Dteajrnj.mjs","names":["useRef","useState","useMemo","useCallback","__esmMin","pe","te","ne","init_npm_react_18_3_1","de","window","init_ssg_sandbox_shims","c","ce","_e","init_framer_BWFVvmND","addPropertyControls","ControlType","ensureRecaptchaScript","callback","resolve","reject","attempts","interval","grecaptcha","script","RecaptchaFormGuard","props","rootRef","widgetContainerRef","widgetIdRef","verified","setVerified","visibleError","setVisibleError","isConfigured","siteKey","focusAndScrollIntoView","element","mounted","container","success","token","root","parentForm","onSubmitCapture","event","errorMessage","style","init_RecaptchaInput_2","init_jsx_runtime"],"sources":["https:/framerusercontent.com/modules/WUHeNEuQn81UN0w5MBoy/4ly7iKIOcAwVuNLuQxOw/RecaptchaInput_2.js"],"sourcesContent":["// Create a reusable Framer code component for Google reCAPTCHA integration named RecaptchaFormGuard that can be dropped into any existing form, intercept submit in capture phase, block submit until verification, handle verification/expiration/error state, avoid duplicate scripts across instances, and expose siteKey + errorMessage controls.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useCallback,useEffect,useMemo,useRef,useState,startTransition}from\"react\";import{addPropertyControls,ControlType}from\"framer\";function ensureRecaptchaScript(){if(typeof window===\"undefined\"||typeof document===\"undefined\"){return Promise.reject(new Error(\"reCAPTCHA is not available during SSR\"));}if(window.grecaptcha?.render){return Promise.resolve(window.grecaptcha);}if(window.__recaptchaScriptReadyPromise){return window.__recaptchaScriptReadyPromise;}window.__recaptchaOnLoadCbs=window.__recaptchaOnLoadCbs||[];window.__recaptchaOnloadHandler=()=>{const callbacks=window.__recaptchaOnLoadCbs||[];callbacks.forEach(callback=>callback());window.__recaptchaOnLoadCbs=[];};window.__recaptchaScriptReadyPromise=new Promise((resolve,reject)=>{const existingScript=document.querySelector(\"#google-recaptcha-script\");if(existingScript){window.__recaptchaOnLoadCbs?.push(()=>{if(window.grecaptcha?.render){resolve(window.grecaptcha);}else{reject(new Error(\"reCAPTCHA loaded but grecaptcha missing\"));}});let attempts=0;const maxAttempts=120;const interval=window.setInterval(()=>{attempts+=1;if(window.grecaptcha?.render){window.clearInterval(interval);const grecaptcha=window.grecaptcha;const callbacks=window.__recaptchaOnLoadCbs||[];callbacks.forEach(callback=>callback());window.__recaptchaOnLoadCbs=[];resolve(grecaptcha);}else if(attempts>=maxAttempts){window.clearInterval(interval);reject(new Error(\"Timed out waiting for reCAPTCHA\"));}},100);return;}window.__recaptchaOnLoadCbs?.push(()=>{if(window.grecaptcha?.render){resolve(window.grecaptcha);}else{reject(new Error(\"reCAPTCHA loaded but grecaptcha missing\"));}});const script=document.createElement(\"script\");script.id=\"google-recaptcha-script\";script.src=\"https://www.google.com/recaptcha/api.js?onload=__recaptchaOnloadHandler&render=explicit\";script.async=true;script.defer=true;script.onerror=()=>reject(new Error(\"Failed to load reCAPTCHA\"));document.head.appendChild(script);});return window.__recaptchaScriptReadyPromise;}/**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight auto\n */export default function RecaptchaFormGuard(props){const{siteKey,errorMessage,style}=props;const rootRef=useRef(null);const widgetContainerRef=useRef(null);const widgetIdRef=useRef(null);const[verified,setVerified]=useState(false);const[visibleError,setVisibleError]=useState(\"\");const isConfigured=useMemo(()=>siteKey.trim().length>0,[siteKey]);const focusAndScrollIntoView=useCallback(()=>{if(typeof window===\"undefined\"||typeof document===\"undefined\")return;const element=rootRef.current;if(!element)return;element.scrollIntoView({behavior:\"smooth\",block:\"center\"});if(typeof element.focus===\"function\"){element.focus();}},[]);useEffect(()=>{if(!isConfigured){startTransition(()=>{setVerified(false);});return;}if(typeof window===\"undefined\"||typeof document===\"undefined\")return;let mounted=true;const container=widgetContainerRef.current;if(!container)return;container.innerHTML=\"\";widgetIdRef.current=null;ensureRecaptchaScript().then(grecaptcha=>{if(!mounted||!widgetContainerRef.current)return;try{widgetIdRef.current=grecaptcha.render(widgetContainerRef.current,{sitekey:siteKey.trim(),callback:token=>{startTransition(()=>{const success=Boolean(token);setVerified(success);if(success)setVisibleError(\"\");});},\"expired-callback\":()=>{startTransition(()=>{setVerified(false);});},\"error-callback\":()=>{startTransition(()=>{setVerified(false);});}});}catch(error){startTransition(()=>{setVerified(false);});}}).catch(()=>{if(!mounted)return;startTransition(()=>{setVerified(false);});});return()=>{mounted=false;if(window.grecaptcha?.reset&&widgetIdRef.current!==null){try{window.grecaptcha.reset(widgetIdRef.current);}catch(error){// no-op\n}}widgetIdRef.current=null;};},[isConfigured,siteKey]);useEffect(()=>{const root=rootRef.current;if(!root)return;const parentForm=root.closest(\"form\");if(!parentForm)return;const onSubmitCapture=event=>{const shouldBlock=!isConfigured||!verified;if(!shouldBlock)return;event.preventDefault();event.stopPropagation();if(typeof event.stopImmediatePropagation===\"function\"){event.stopImmediatePropagation();}startTransition(()=>{setVisibleError(errorMessage);});focusAndScrollIntoView();};parentForm.addEventListener(\"submit\",onSubmitCapture,true);return()=>{parentForm.removeEventListener(\"submit\",onSubmitCapture,true);};},[isConfigured,verified,errorMessage,focusAndScrollIntoView]);return /*#__PURE__*/_jsxs(\"div\",{ref:rootRef,tabIndex:-1,style:{position:\"relative\",width:\"100%\",display:\"flex\",flexDirection:\"column\",alignItems:\"flex-start\",background:\"transparent\",outline:\"none\",...style},children:[isConfigured?/*#__PURE__*/_jsx(\"div\",{ref:widgetContainerRef,style:{width:\"100%\",minHeight:78},\"aria-label\":\"reCAPTCHA verification\"}):/*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",minHeight:44,fontSize:12,lineHeight:1.4,color:\"#000000\",background:\"#F5F5F5\",border:\"1px dashed #EEEEEE\",borderRadius:8,padding:\"10px 12px\",boxSizing:\"border-box\"},children:\"Add your Google reCAPTCHA Site Key in the Site Key property to activate verification.\"}),visibleError?/*#__PURE__*/_jsx(\"div\",{role:\"alert\",style:{marginTop:6,color:\"#c62828\",fontSize:12,lineHeight:1.35},children:visibleError}):null]});}addPropertyControls(RecaptchaFormGuard,{siteKey:{type:ControlType.String,title:\"Site Key\",defaultValue:\"\",placeholder:\"Paste reCAPTCHA site key\"},errorMessage:{type:ControlType.String,title:\"Error\",defaultValue:\"Please complete the reCAPTCHA before submitting.\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"RecaptchaFormGuard\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"auto\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./RecaptchaInput_2.map"],"mappings":"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"}