{"version":3,"file":"ReCaptchaControl.CWCJl5U6.mjs","names":["useState","useRef","useCallback"],"sources":["https:/framerusercontent.com/modules/8Z9qDUOFfGgGa8caKYOC/zYjS7hQfXskoIbMBxGZz/ReCaptchaControl.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{AnimatePresence,motion}from\"framer-motion\";import{useCallback,useEffect,useMemo,useRef,useState}from\"react\";// ============================================================================\n// CONSTANTS\n// ============================================================================\nconst RECAPTCHA_SCRIPT_ID=\"recaptcha-script\";const RECAPTCHA_SCRIPT_URL=\"https://www.google.com/recaptcha/api.js?render=explicit\";// Honeypot bot protection — mirrors CloudflareTurnstileControl so behaviour\n// is identical across captcha components. An off-screen text input bots tend\n// to auto-fill, plus a minimum submit delay that blocks instant bot posts.\nconst HONEYPOT_FIELD=\"website\";const MIN_SUBMIT_DELAY_MS=2500;const DEFAULT_VALIDATION={showBrowserTooltip:false,errorMessage:\"Please complete the reCAPTCHA verification.\"};const DEFAULT_ERROR_STYLE={color:\"#dc2626\",font:{fontSize:12,lineHeight:1.4}};// ============================================================================\n// MAIN COMPONENT\n// ============================================================================\n/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight auto\n * @framerIntrinsicWidth 300\n * @framerIntrinsicHeight 92\n * @framerDisableUnlink\n */export default function ReCaptchaControl(props){const{name,siteKey,theme,size,validation,errorStyle,_meta,style}=props;// Merge configs with defaults\nconst validationConfig={...DEFAULT_VALIDATION,...validation||{}};const errorStyleConfig={...DEFAULT_ERROR_STYLE,...errorStyle||{},font:{...DEFAULT_ERROR_STYLE.font,...errorStyle&&errorStyle.font||{}}};const fieldName=name||\"recaptcha\";const inputId=`field-${fieldName}`;const errorId=`error-${fieldName}`;const[isVerified,setIsVerified]=useState(false);const[error,setError]=useState(\"\");const[setupError,setSetupError]=useState(\"\");const rootRef=useRef(null);const widgetContainerRef=useRef(null);const widgetIdRef=useRef(null);const hiddenInputRef=useRef(null);const mountTimeRef=useRef(Date.now());const isCanvas=RenderTarget.current()===RenderTarget.canvas;// Dispatch native change event so conditional logic watchers detect value updates\nuseEffect(()=>{const el=hiddenInputRef.current;if(el){const submitted=isVerified?\"verified\":\"\";const nativeInputValueSetter=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,\"value\")?.set;nativeInputValueSetter?.call(el,submitted);el.dispatchEvent(new Event(\"change\",{bubbles:true}));}},[isVerified]);const Wrapper=isCanvas?\"div\":motion.div;const parsedMeta=useMemo(()=>{if(!_meta)return null;try{return JSON.parse(_meta);}catch{return null;}},[_meta]);void parsedMeta;// ========================================================================\n// HELPER FUNCTIONS\n// ========================================================================\nconst cleanupCaptchaFields=useCallback(()=>{const form=rootRef.current?.closest(\"form\");if(!form)return;// Remove g-recaptcha-response field\nconst gRecaptchaField=form.querySelector('[name=\"g-recaptcha-response\"]');if(gRecaptchaField){gRecaptchaField.setAttribute(\"disabled\",\"true\");gRecaptchaField.removeAttribute(\"name\");}// Collapse duplicate honeypot fields (multiple captcha instances or\n// Framer re-renders can leave more than one). Keep the last.\nconst honeypotFields=Array.from(form.querySelectorAll(`[name=\"${HONEYPOT_FIELD}\"]`));if(honeypotFields.length>1){honeypotFields.slice(0,-1).forEach(field=>field.remove());}},[]);// Read the honeypot value from the parent form. Empty when a human fills\n// the form (the field is invisible + tabindex=-1 + autocomplete=off).\nconst getHoneypotValue=useCallback(()=>{const form=rootRef.current?.closest(\"form\");if(!form)return\"\";const honeypotField=form.querySelector(`[name=\"${HONEYPOT_FIELD}\"]`);return(honeypotField?.value||\"\").trim();},[]);// ========================================================================\n// LOAD RECAPTCHA SCRIPT\n// ========================================================================\nuseEffect(()=>{if(isCanvas)return;if(typeof window===\"undefined\")return;if(!document.getElementById(RECAPTCHA_SCRIPT_ID)){const script=document.createElement(\"script\");script.id=RECAPTCHA_SCRIPT_ID;script.src=RECAPTCHA_SCRIPT_URL;script.async=true;script.defer=true;script.onerror=()=>setSetupError(\"Failed to load reCAPTCHA script.\");document.body.appendChild(script);}},[isCanvas]);// ========================================================================\n// RENDER RECAPTCHA WIDGET\n// ========================================================================\nuseEffect(()=>{if(isCanvas)return;if(!siteKey)return;if(typeof window===\"undefined\")return;setIsVerified(false);setError(\"\");// Reset the timing trap baseline when the widget (re)mounts.\nmountTimeRef.current=Date.now();let isCancelled=false;const pollInterval=window.setInterval(()=>{if(isCancelled)return;const grecaptcha=window.grecaptcha;const container=widgetContainerRef.current;if(!container||!grecaptcha?.render)return;// Reset existing widget\ntry{if(widgetIdRef.current!==null&&grecaptcha.reset){grecaptcha.reset(widgetIdRef.current);}}catch{}container.innerHTML=\"\";cleanupCaptchaFields();try{widgetIdRef.current=grecaptcha.render(container,{sitekey:siteKey,theme:theme,size:size,callback:()=>{setIsVerified(true);setError(\"\");setSetupError(\"\");cleanupCaptchaFields();},\"expired-callback\":()=>{setIsVerified(false);cleanupCaptchaFields();},\"error-callback\":()=>{setIsVerified(false);setSetupError(\"reCAPTCHA verification failed. Please try again.\");cleanupCaptchaFields();}});}catch{setSetupError(\"reCAPTCHA widget failed to load. Check your site key.\");}window.clearInterval(pollInterval);},200);return()=>{isCancelled=true;window.clearInterval(pollInterval);cleanupCaptchaFields();};},[isCanvas,siteKey,theme,size,cleanupCaptchaFields]);// ========================================================================\n// FORM SUBMISSION HANDLER\n// ========================================================================\nuseEffect(()=>{if(isCanvas)return;if(!siteKey)return;const form=rootRef.current?.closest(\"form\");if(!form)return;const handleSubmit=event=>{cleanupCaptchaFields();// Bot detection — honeypot filled (humans never see the field).\nif(getHoneypotValue()){event.preventDefault();event.stopPropagation();setError(\"Submission blocked. Please try again.\");return;}// Bot detection — submitted faster than a human could.\nif(Date.now()-mountTimeRef.current<MIN_SUBMIT_DELAY_MS){event.preventDefault();event.stopPropagation();setError(\"Please wait a moment before submitting.\");return;}if(!isVerified){event.preventDefault();event.stopPropagation();setError(validationConfig.errorMessage);return;}setError(\"\");};const handleKeyDown=event=>{if(event.key!==\"Enter\")return;const target=event.target;if(target?.tagName?.toLowerCase()===\"textarea\")return;if(!isVerified){event.preventDefault();setError(validationConfig.errorMessage);}};form.addEventListener(\"submit\",handleSubmit,true);form.addEventListener(\"keydown\",handleKeyDown,true);return()=>{form.removeEventListener(\"submit\",handleSubmit,true);form.removeEventListener(\"keydown\",handleKeyDown,true);};},[isCanvas,siteKey,isVerified,cleanupCaptchaFields,getHoneypotValue,validationConfig.errorMessage]);// ========================================================================\n// EVENT HANDLERS\n// ========================================================================\nconst handleInvalid=useCallback(event=>{if(!validationConfig.showBrowserTooltip){event.preventDefault();}if(!isVerified){setError(validationConfig.errorMessage);}},[isVerified,validationConfig.showBrowserTooltip,validationConfig.errorMessage]);// ========================================================================\n// STYLES\n// ========================================================================\nconst wrapperVariants={idle:{borderColor:\"transparent\",boxShadow:\"none\",scale:1},error:{borderColor:errorStyleConfig.color,boxShadow:\"0 0 0 3px rgba(220,38,38,0.2)\",scale:1}};const wrapperState=error||setupError?\"error\":\"idle\";const describedBy=error||setupError?errorId:undefined;const containerStyle={display:\"flex\",flexDirection:\"column\",width:\"100%\",...style};const widgetWrapperStyle={borderWidth:0,borderStyle:\"solid\",borderColor:\"transparent\",borderRadius:\"8px\",backgroundColor:\"transparent\",padding:\"0px\",minHeight:size===\"compact\"?65:78,minWidth:size===\"compact\"?150:303,overflow:\"hidden\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\"};const errorMessageStyle={...errorStyleConfig.font,color:errorStyleConfig.color,marginTop:\"6px\",overflow:\"hidden\"};// ========================================================================\n// RENDER\n// ========================================================================\n// Canvas preview\nif(isCanvas){return /*#__PURE__*/_jsx(\"div\",{ref:rootRef,style:containerStyle,children:/*#__PURE__*/_jsx(\"div\",{style:{...widgetWrapperStyle,border:\"1px dashed rgba(0,0,0,0.2)\",fontSize:14,color:\"#666\"},children:\"reCAPTCHA Preview (loads on publish)\"})});}// No site key configured\nif(!siteKey){return /*#__PURE__*/_jsx(\"div\",{ref:rootRef,style:containerStyle,children:/*#__PURE__*/_jsx(\"div\",{style:{padding:\"12px\",background:\"#f5f5f5\",color:\"#888\",borderRadius:\"8px\",fontSize:\"14px\",textAlign:\"center\"},children:\"Enter your reCAPTCHA v2 site key in the properties panel.\"})});}return /*#__PURE__*/_jsxs(\"div\",{ref:rootRef,style:containerStyle,children:[/*#__PURE__*/_jsx(Wrapper,{...!isCanvas&&{animate:wrapperState,variants:wrapperVariants,transition:{duration:.2,ease:\"easeOut\"}},style:widgetWrapperStyle,children:/*#__PURE__*/_jsx(\"div\",{ref:widgetContainerRef})}),/*#__PURE__*/_jsx(\"input\",{ref:hiddenInputRef,id:inputId,name:fieldName,type:\"hidden\",required:!isVerified,value:isVerified?\"verified\":\"\",onInvalid:handleInvalid,\"aria-invalid\":error||setupError?\"true\":undefined,\"aria-describedby\":describedBy}),/*#__PURE__*/_jsx(\"input\",{type:\"text\",name:HONEYPOT_FIELD,tabIndex:-1,autoComplete:\"off\",\"aria-hidden\":\"true\",style:{position:\"absolute\",left:\"-9999px\",width:1,height:1,opacity:0,pointerEvents:\"none\"}}),/*#__PURE__*/_jsx(AnimatePresence,{children:(error||setupError)&&/*#__PURE__*/_jsx(motion.div,{id:errorId,role:\"alert\",initial:{opacity:0,y:-4,height:0},animate:{opacity:1,y:0,height:\"auto\"},exit:{opacity:0,y:-4,height:0},transition:{duration:.2,ease:\"easeOut\"},style:errorMessageStyle,children:setupError||error},\"error-message\")})]});}ReCaptchaControl.displayName=\"reCAPTCHA v2\";ReCaptchaControl.defaultProps={name:\"recaptcha\",siteKey:\"\",theme:\"light\",size:\"normal\",validation:DEFAULT_VALIDATION,errorStyle:DEFAULT_ERROR_STYLE,_meta:\"\",style:{}};// ============================================================================\n// PROPERTY CONTROLS\n// ============================================================================\naddPropertyControls(ReCaptchaControl,{siteKey:{type:ControlType.String,title:\"Site Key\",defaultValue:\"\",placeholder:\"Paste reCAPTCHA v2 site key\",description:\"Get your site key from Google reCAPTCHA admin.\"},theme:{type:ControlType.Enum,title:\"Theme\",defaultValue:\"light\",options:[\"light\",\"dark\"],optionTitles:[\"Light\",\"Dark\"]},size:{type:ControlType.Enum,title:\"Size\",defaultValue:\"normal\",options:[\"normal\",\"compact\"],optionTitles:[\"Normal\",\"Compact\"],displaySegmentedControl:true},name:{type:ControlType.String,title:\"Field Name\",defaultValue:\"recaptcha\",description:\"Unique name used in submitted form data.\"},validation:{type:ControlType.Object,title:\"Validation\",controls:{errorMessage:{type:ControlType.String,title:\"Error Message\",defaultValue:\"Please complete the reCAPTCHA verification.\",placeholder:\"Custom error message\"},showBrowserTooltip:{type:ControlType.Boolean,title:\"Browser Tooltip\",defaultValue:false,enabledTitle:\"Show\",disabledTitle:\"Hide\",description:\"Show native browser validation tooltip.\"}}},errorStyle:{type:ControlType.Object,title:\"Error Style\",description:\"by [Forms Plugin](https://formsplugin.com/?ref=field_setting)\",controls:{color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#dc2626\"},font:{type:ControlType.Font,title:\"Font\",controls:\"basic\",displayFontSize:true,defaultFontType:\"sans-serif\",defaultValue:{fontSize:12,lineHeight:1.4}}}},_meta:{type:ControlType.String,defaultValue:\"\",hidden(){return true;}}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ReCaptchaControl\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"300\",\"framerSupportedLayoutWidth\":\"any\",\"framerDisableUnlink\":\"\",\"framerSupportedLayoutHeight\":\"auto\",\"framerIntrinsicHeight\":\"92\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ReCaptchaControl.map"],"mappings":"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"}