{"version":3,"file":"Recaptcha_1.DVar1-bh.mjs","names":["useRef","useState","useCallback"],"sources":["https:/framerusercontent.com/modules/Dx4ZQLdyX68v2LPw3hI6/d4vyIvRsOKFwNVlrpq6f/Recaptcha_1.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useRef,useState,useCallback}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";// --- Configuration ---\nconst DEFAULT_ENDPOINT=\"https://recaptcha-verify.developer-6ab.workers.dev\";// Verification timeout (ms) — if the server doesn't respond in time, show error\nconst VERIFY_TIMEOUT_MS=12e3;export default function RecaptchaEnterprise(props){const{siteKey,projectId,apiKey,version=\"v2\",invisible=false}=props;// --- Detect Framer editor canvas ---\nconst isCanvas=RenderTarget.current()===RenderTarget.canvas;if(isCanvas){return /*#__PURE__*/_jsx(RecaptchaPreview,{version:version,invisible:invisible,siteKey:siteKey,apiKey:apiKey});}return /*#__PURE__*/_jsx(RecaptchaLive,{...props});}// --- Live component (only rendered on published site) ---\nfunction RecaptchaLive(props){const{siteKey,projectId,apiKey,version=\"v2\",theme=\"light\",badge=\"bottomright\",invisible=false,action=\"submit\",expectedHostname=\"\",minScore=.7,debug=false}=props;// --- Refs ---\nconst wrapperRef=useRef(null);const captchaContainerRef=useRef(null);const widgetIdRef=useRef(null);const isVerifiedRef=useRef(false)// Synchronous flag — avoids setState race\n;const isRenderingRef=useRef(false)// Prevents double widget render\n;const isMountedRef=useRef(true)// Prevents setState on unmounted component\n;// --- State ---\nconst[isScriptLoaded,setIsScriptLoaded]=useState(false);const[isVerified,setIsVerified]=useState(false);const[status,setStatus]=useState(\"idle\");const[uiMessage,setUiMessage]=useState(\"\");const[parentForm,setParentForm]=useState(null);// Safe setState wrappers (no-op if unmounted)\nconst safeSetStatus=useCallback(s=>{if(isMountedRef.current)setStatus(s);},[]);const safeSetMessage=useCallback(m=>{if(isMountedRef.current)setUiMessage(m);},[]);// --- Logger ---\nconst log=useCallback((msg,data)=>{if(debug){if(data!==undefined)console.log(`[reCAPTCHA] ${msg}`,data);else console.log(`[reCAPTCHA] ${msg}`);}},[debug]);// --- Track mount state ---\nuseEffect(()=>{isMountedRef.current=true;return()=>{isMountedRef.current=false;};},[]);// --- 1. Load Script ---\nuseEffect(()=>{if(!siteKey){safeSetMessage(\"Missing Site Key\");return;}const scriptId=\"recaptcha-enterprise-script\";let pollInterval=null;// Script already exists in DOM\nif(document.getElementById(scriptId)){if(window.grecaptcha?.enterprise){setIsScriptLoaded(true);}else{pollInterval=setInterval(()=>{if(window.grecaptcha?.enterprise){setIsScriptLoaded(true);if(pollInterval)clearInterval(pollInterval);}},100);// Safety: stop polling after 10s to prevent infinite loop\nsetTimeout(()=>{if(pollInterval){clearInterval(pollInterval);if(!window.grecaptcha?.enterprise){safeSetStatus(\"error\");safeSetMessage(\"Security script failed to initialize\");}}},1e4);}return()=>{if(pollInterval)clearInterval(pollInterval);};}// Create and inject script\nconst script=document.createElement(\"script\");script.id=scriptId;script.src=`https://www.google.com/recaptcha/enterprise.js?render=${version===\"v3\"?siteKey:\"explicit\"}`;script.async=true;script.defer=true;script.onload=()=>{log(\"Script loaded\");if(isMountedRef.current)setIsScriptLoaded(true);};script.onerror=()=>{console.error(\"[reCAPTCHA] Failed to load script — blocked by ad blocker or network error\");safeSetStatus(\"error\");safeSetMessage(\"Security script blocked. Disable ad blocker and reload.\");};document.head.appendChild(script);return()=>{if(pollInterval)clearInterval(pollInterval);};},[siteKey,version,log,safeSetStatus,safeSetMessage]);// --- 2. Find Parent Form (with retry for Framer's async rendering) ---\nuseEffect(()=>{if(!wrapperRef.current)return;let attempts=0;const maxAttempts=20// 2 seconds max\n;const tryFindForm=()=>{const form=wrapperRef.current?.closest(\"form\");if(form){setParentForm(form);log(\"Parent form detected\");return true;}return false;};if(tryFindForm())return;// Retry — Framer can render the form after the component mounts\nconst interval=setInterval(()=>{attempts++;if(tryFindForm()||attempts>=maxAttempts){clearInterval(interval);if(attempts>=maxAttempts&&debug){console.warn(\"[reCAPTCHA] No parent <form> found after 2s. Form interception disabled.\");}}},100);return()=>clearInterval(interval);},[debug,log]);// --- 3. Verify Token (with timeout) ---\nconst verifyToken=useCallback(async token=>{safeSetStatus(\"verifying\");safeSetMessage(\"Verifying...\");log(\"Sending token to server...\");const controller=new AbortController;const timeout=setTimeout(()=>controller.abort(),VERIFY_TIMEOUT_MS);try{const bodyPayload={recaptchaToken:token,apiKey,siteKey};// Only include projectId if present (Enterprise mode)\nif(projectId){bodyPayload.projectId=projectId;}// Only include v3-specific fields for v3\nif(version===\"v3\"){bodyPayload.action=action;bodyPayload.minScore=minScore;}if(expectedHostname){bodyPayload.expectedHostname=expectedHostname;}const response=await fetch(DEFAULT_ENDPOINT,{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify(bodyPayload),signal:controller.signal});clearTimeout(timeout);if(!response.ok){throw new Error(`Server returned ${response.status}`);}const data=await response.json();log(\"Server response:\",data);if(data.success){isVerifiedRef.current=true;safeSetStatus(\"success\");safeSetMessage(\"Verified ✓\");setIsVerified(true);// Auto-clear success message after 3s for invisible/v3 modes\nif(version===\"v3\"||invisible){setTimeout(()=>{safeSetStatus(\"idle\");safeSetMessage(\"\");},3e3);}return true;}else{isVerifiedRef.current=false;setIsVerified(false);// Provide user-friendly error messages based on reason\nconst reason=data.reason||\"\";let userMsg=\"Verification failed. Please try again.\";if(reason.includes(\"Score\"))userMsg=\"Suspicious activity detected. Try again.\";else if(reason.includes(\"Hostname\"))userMsg=\"Domain mismatch. Contact site admin.\";else if(reason.includes(\"Google API\"))userMsg=\"Configuration error. Contact site admin.\";else if(reason.includes(\"Invalid token\"))userMsg=\"Session expired. Please reload the page.\";safeSetStatus(\"error\");safeSetMessage(userMsg);// Reset widget so user can retry\nif(widgetIdRef.current!==null&&window.grecaptcha?.enterprise){try{window.grecaptcha.enterprise.reset(widgetIdRef.current);}catch(_){}}return false;}}catch(err){clearTimeout(timeout);const isTimeout=err?.name===\"AbortError\";console.error(\"[reCAPTCHA]\",isTimeout?\"Timeout\":err);safeSetStatus(\"error\");safeSetMessage(isTimeout?\"Verification timed out. Please try again.\":\"Connection error. Check your internet.\");return false;}},[version,action,expectedHostname,minScore,projectId,apiKey,siteKey,invisible,log,safeSetStatus,safeSetMessage]);// --- 4. Form Interceptor (capture phase for reliability) ---\nuseEffect(()=>{if(!parentForm)return;const handleFormSubmit=async e=>{// Use ref for synchronous check — avoids React batching race\nif(isVerifiedRef.current){log(\"Already verified — allowing submit\");return;}log(\"Submit intercepted\");e.preventDefault();e.stopImmediatePropagation();if(version===\"v2\"&&!invisible){// Visible checkbox: user must complete it first\nsafeSetStatus(\"error\");safeSetMessage(\"Please complete the security check above\");wrapperRef.current?.scrollIntoView({behavior:\"smooth\",block:\"center\"});}else{// Invisible v2 or v3: execute programmatically\nsafeSetStatus(\"verifying\");safeSetMessage(\"Securing your request...\");try{const token=await window.grecaptcha.enterprise.execute(siteKey,{action});log(\"Token generated\");const success=await verifyToken(token);if(success){// Clean up reCAPTCHA hidden inputs before submit\ncleanupFormData(parentForm);log(\"Releasing form submission\");// Use rAF + microtask to ensure React state has flushed\nrequestAnimationFrame(()=>{setTimeout(()=>{if(parentForm)parentForm.requestSubmit();},100);});}}catch(err){safeSetStatus(\"error\");safeSetMessage(\"Security check failed. Please try again.\");log(\"Execute error:\",err);}}};// Use capture phase to intercept before other handlers\nparentForm.addEventListener(\"submit\",handleFormSubmit,true);return()=>parentForm.removeEventListener(\"submit\",handleFormSubmit,true);},[parentForm,version,invisible,siteKey,action,verifyToken,log,safeSetStatus,safeSetMessage]);// --- 5. Render Widget (uses separate inner div to avoid React DOM conflicts) ---\nuseEffect(()=>{if(!isScriptLoaded||!captchaContainerRef.current||!window.grecaptcha?.enterprise)return;if(isRenderingRef.current)return;if(widgetIdRef.current!==null)return;// Already rendered\nisRenderingRef.current=true;window.grecaptcha.enterprise.ready(()=>{if(!captchaContainerRef.current||!isMountedRef.current){isRenderingRef.current=false;return;}try{const derivedSize=version===\"v3\"||invisible?\"invisible\":\"normal\";const id=window.grecaptcha.enterprise.render(captchaContainerRef.current,{sitekey:siteKey,theme,size:derivedSize,badge,callback:async token=>{log(\"Challenge completed\");const success=await verifyToken(token);if(success&&parentForm){cleanupFormData(parentForm);// Auto-submit form after v2 checkbox success\nif(version===\"v2\"){log(\"Auto-submitting form after v2 success\");requestAnimationFrame(()=>{setTimeout(()=>{if(parentForm)parentForm.requestSubmit();},300);});}}},\"expired-callback\":()=>{log(\"Token expired — resetting\");isVerifiedRef.current=false;setIsVerified(false);safeSetStatus(\"idle\");safeSetMessage(\"\");},\"error-callback\":()=>{// Hide the ugly Google error widget and show friendly message\nif(captchaContainerRef.current){captchaContainerRef.current.style.display=\"none\";}safeSetStatus(\"domain-error\");safeSetMessage(\"reCAPTCHA can't load on this domain. Publish your site to test.\");}});widgetIdRef.current=id;log(`Widget rendered (mode: ${derivedSize})`);}catch(e){console.error(\"[reCAPTCHA] Render error:\",e);safeSetStatus(\"error\");safeSetMessage(\"Failed to load security widget.\");}finally{isRenderingRef.current=false;}});// Cleanup on unmount: reset widget\nreturn()=>{if(widgetIdRef.current!==null&&window.grecaptcha?.enterprise){try{window.grecaptcha.enterprise.reset(widgetIdRef.current);}catch(_){}widgetIdRef.current=null;}isRenderingRef.current=false;};},[isScriptLoaded,siteKey,version,theme,badge,invisible,verifyToken,log,parentForm,safeSetStatus,safeSetMessage]);// --- Inject keyframe animation (once globally) ---\nuseEffect(()=>{const styleId=\"recaptcha-spin-style\";if(document.getElementById(styleId))return;const style=document.createElement(\"style\");style.id=styleId;style.textContent=`@keyframes rcSpin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}`;document.head.appendChild(style);},[]);// --- Helper: Remove g-recaptcha-response hidden inputs ---\nfunction cleanupFormData(form){form.querySelectorAll('[name=\"g-recaptcha-response\"]').forEach(el=>{el.removeAttribute(\"name\");log(\"Cleaned up hidden reCAPTCHA input\");});}// --- Derived display state ---\nconst isVisibleMode=version===\"v2\"&&!invisible;const isActive=status===\"verifying\"||status===\"error\"||status===\"success\"||status===\"domain-error\";const shouldShowContainer=isVisibleMode||isActive;// --- Styles (minimal — no background boxes, blends into any design) ---\nconst containerStyle={width:\"100%\",display:\"flex\",flexDirection:\"column\",alignItems:\"flex-start\",justifyContent:\"center\",height:\"auto\",overflow:\"visible\"};const statusStyle={display:\"flex\",alignItems:\"center\",fontSize:13,fontWeight:500,padding:\"6px 0 2px\",color:status===\"error\"?\"#DC2626\":status===\"success\"?\"#16A34A\":\"#6B7280\"};const spinnerStyle={width:12,height:12,border:\"2px solid #9CA3AF\",borderTopColor:\"transparent\",borderRadius:\"50%\",marginRight:6,animation:\"rcSpin 0.8s linear infinite\",flexShrink:0};// --- Early return: missing configuration ---\n// Standard reCAPTCHA (secret key starts with 6L): needs siteKey + apiKey\n// Enterprise reCAPTCHA (GCP API key starts with AIza): needs siteKey + apiKey + projectId\nconst isEnterprise=apiKey?.startsWith(\"AIza\");const missingField=!siteKey?\"Site Key\":!apiKey?\"API / Secret Key\":isEnterprise&&!projectId?\"Project ID (required for Enterprise)\":null;if(missingField){return /*#__PURE__*/_jsxs(\"div\",{style:{padding:\"8px 12px\",fontSize:13,color:\"#92400e\",background:\"#fef9c3\",borderRadius:6,border:\"1px dashed #fde68a\"},children:[\"⚠️ Missing \",missingField,\" — set in component properties\"]});}return /*#__PURE__*/_jsxs(\"div\",{ref:wrapperRef,style:containerStyle,children:[/*#__PURE__*/_jsx(\"div\",{ref:captchaContainerRef}),status===\"domain-error\"&&/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:6},children:[isVisibleMode&&/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",alignItems:\"center\",justifyContent:\"space-between\",width:304,height:78,background:\"#f9f9f9\",border:\"1px solid #d3d3d3\",borderRadius:3,padding:\"0 12px\",fontFamily:\"Roboto, Helvetica, Arial, sans-serif\",opacity:.7},children:/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:12},children:[/*#__PURE__*/_jsx(\"div\",{style:{width:28,height:28,borderRadius:3,border:\"2px solid #c1c1c1\",background:\"#fff\"}}),/*#__PURE__*/_jsx(\"span\",{style:{fontSize:14,color:\"#555\"},children:\"I'm not a robot\"})]})}),/*#__PURE__*/_jsx(\"span\",{style:{fontSize:12,color:\"#6B7280\",fontFamily:\"system-ui, sans-serif\"},children:uiMessage})]}),isActive&&!isVisibleMode&&status!==\"domain-error\"&&/*#__PURE__*/_jsxs(\"div\",{style:statusStyle,children:[status===\"verifying\"&&/*#__PURE__*/_jsx(\"div\",{style:spinnerStyle}),status===\"success\"&&/*#__PURE__*/_jsx(\"span\",{style:{marginRight:6},children:\"✓\"}),status===\"error\"&&/*#__PURE__*/_jsx(\"span\",{style:{marginRight:6},children:\"✕\"}),uiMessage]}),isVisibleMode&&status!==\"domain-error\"&&(status===\"error\"||status===\"success\")&&/*#__PURE__*/_jsx(\"div\",{style:{fontSize:12,fontWeight:500,marginTop:4,color:status===\"error\"?\"#DC2626\":\"#16A34A\"},children:uiMessage})]});}// --- Preview component for Framer editor ---\nfunction RecaptchaPreview({version,invisible,siteKey,apiKey}){const isVisible=version===\"v2\"&&!invisible;if(!siteKey||!apiKey){return /*#__PURE__*/_jsxs(\"div\",{style:{padding:\"8px 12px\",fontSize:13,color:\"#92400e\",background:\"#fef9c3\",borderRadius:6,border:\"1px dashed #fde68a\"},children:[\"⚠️ Missing \",!siteKey?\"Site Key\":\"Secret / API Key\",\" — set in component properties\"]});}// v2 visible checkbox — show the checkbox mock with a \"preview\" note\nif(isVisible){return /*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:6},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",justifyContent:\"space-between\",width:304,height:78,background:\"#f9f9f9\",border:\"1px solid #d3d3d3\",borderRadius:3,padding:\"0 12px\",fontFamily:\"Roboto, Helvetica, Arial, sans-serif\",boxShadow:\"0 0 4px rgba(0,0,0,0.08)\",opacity:.85},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:12},children:[/*#__PURE__*/_jsx(\"div\",{style:{width:28,height:28,borderRadius:3,border:\"2px solid #c1c1c1\",background:\"#fff\",flexShrink:0}}),/*#__PURE__*/_jsx(\"span\",{style:{fontSize:14,color:\"#000\",userSelect:\"none\"},children:\"I'm not a robot\"})]}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",alignItems:\"center\",gap:1},children:[/*#__PURE__*/_jsxs(\"svg\",{width:\"32\",height:\"32\",viewBox:\"0 0 64 64\",children:[/*#__PURE__*/_jsx(\"path\",{d:\"M32 2a30 30 0 1 0 0 60 30 30 0 0 0 0-60z\",fill:\"none\",stroke:\"#4A90D9\",strokeWidth:\"3\"}),/*#__PURE__*/_jsx(\"path\",{d:\"M32 12a20 20 0 1 0 0 40 20 20 0 0 0 0-40z\",fill:\"#4A90D9\",opacity:\"0.15\"}),/*#__PURE__*/_jsx(\"text\",{x:\"32\",y:\"38\",textAnchor:\"middle\",fill:\"#555\",fontSize:\"16\",fontWeight:\"bold\",children:\"rC\"})]}),/*#__PURE__*/_jsx(\"span\",{style:{fontSize:7,color:\"#555\",letterSpacing:.5},children:\"reCAPTCHA\"}),/*#__PURE__*/_jsx(\"span\",{style:{fontSize:6,color:\"#aaa\"},children:\"Privacy - Terms\"})]})]}),/*#__PURE__*/_jsx(\"span\",{style:{fontSize:11,color:\"#6B7280\",fontFamily:\"system-ui, sans-serif\"},children:\"✓ Preview only — reCAPTCHA activates on the published site\"})]});}// v3 or invisible — show a subtle badge-style indicator\nreturn /*#__PURE__*/_jsxs(\"div\",{style:{display:\"inline-flex\",alignItems:\"center\",gap:6,padding:\"6px 10px\",background:\"#f0f5ff\",borderRadius:4,border:\"1px dashed #bfdbfe\",fontSize:12,color:\"#4B5563\",fontFamily:\"system-ui, sans-serif\"},children:[/*#__PURE__*/_jsx(\"svg\",{width:\"16\",height:\"16\",viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"#4A90D9\",strokeWidth:\"2\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"})}),\"Preview only — reCAPTCHA \",version===\"v3\"?\"v3\":\"invisible\",\" \",\"activates on published site\"]});}// --- Framer Property Controls ---\naddPropertyControls(RecaptchaEnterprise,{siteKey:{type:ControlType.String,title:\"Site Key\",description:\"Your reCAPTCHA Site Key (from Google reCAPTCHA Console or Google Cloud Console)\"},projectId:{type:ControlType.String,title:\"Project ID\",description:\"Google Cloud Project ID — only needed for Enterprise keys (AIza…). Leave empty for standard reCAPTCHA.\"},apiKey:{type:ControlType.String,title:\"Secret / API Key\",description:\"Standard reCAPTCHA: paste your Secret Key (starts with 6L…). Enterprise: paste your GCP API Key (starts with AIza…).\"},version:{type:ControlType.Enum,title:\"Version\",options:[\"v2\",\"v3\"],defaultValue:\"v2\",displaySegmentedControl:true},theme:{type:ControlType.Enum,title:\"Theme\",options:[\"light\",\"dark\"],defaultValue:\"light\",hidden:props=>props.version===\"v3\"},invisible:{type:ControlType.Boolean,title:\"Invisible\",defaultValue:false,hidden:props=>props.version===\"v3\"},badge:{type:ControlType.Enum,title:\"Badge\",options:[\"bottomright\",\"inline\"],optionTitles:[\"Bottom Right\",\"Inline\"],defaultValue:\"bottomright\",hidden:props=>props.version===\"v2\"&&!props.invisible},action:{type:ControlType.String,title:\"Action\",defaultValue:\"submit\",hidden:props=>props.version!==\"v3\"},expectedHostname:{type:ControlType.String,title:\"Expected Host\",defaultValue:\"\",description:\"Hostname to validate (e.g. recaptcha.framer.ai)\"},minScore:{type:ControlType.Number,title:\"Min Score\",defaultValue:.7,min:0,max:1,step:.1,hidden:props=>props.version!==\"v3\",description:\"Minimum reCAPTCHA score (0.0–1.0). Reject below this.\"},debug:{type:ControlType.Boolean,title:\"Debug Mode\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"RecaptchaEnterprise\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Recaptcha_1.map"],"mappings":"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"}