{"version":3,"file":"Recaptcha_1.LEfeWaPI.mjs","names":["useRef","useState"],"sources":["https:/framerusercontent.com/modules/ZIAwwCRiPWKgcbPAcmrO/Aw8upXfCnCsEllkysP5L/Recaptcha_1.js"],"sourcesContent":["// Google reCAPTCHA Pro - Centralized Service Component\n// Version 2.0 - All customers use your central n8n service\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useRef,useState,startTransition}from\"react\";import{addPropertyControls,ControlType}from\"framer\";// YOUR CENTRAL VERIFICATION ENDPOINT\nconst VERIFICATION_ENDPOINT=\"https://n8n.digithinktech.com/webhook/verify-recaptcha\";const generateInstanceId=()=>`recaptcha_${Math.random().toString(36).substr(2,9)}_${Date.now()}`;/**\n * Google reCAPTCHA Pro - Centralized Service\n * Customers only need Site Key and Secret Key\n * All verification handled by your n8n instance\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function RecaptchaIntegration(props){const{version=\"v2\",siteKey=\"\",secretKey=\"\",theme=\"light\",badge=\"bottomright\",invisible=false,action=\"submit\",validationErrorMessage=\"Please complete the reCAPTCHA verification\",instanceId:propInstanceId}=props;const recaptchaRef=useRef(null);const[isLoaded,setIsLoaded]=useState(false);const[widgetId,setWidgetId]=useState(null);const[isVerified,setIsVerified]=useState(false);const[showError,setShowError]=useState(false);const[errorMessage,setErrorMessage]=useState(validationErrorMessage);const[v3Token,setV3Token]=useState(\"\");const[instanceId]=useState(()=>propInstanceId||generateInstanceId());const[showSetupWarning,setShowSetupWarning]=useState(false);// Check for proper setup\nuseEffect(()=>{if(!siteKey||!secretKey){setShowSetupWarning(true);}else{setShowSetupWarning(false);}},[siteKey,secretKey]);// Initialize global instances map\nuseEffect(()=>{if(typeof window!==\"undefined\"){if(!window.recaptchaInstances){window.recaptchaInstances=new Map;}}},[]);// Load reCAPTCHA script\nuseEffect(()=>{if(typeof window===\"undefined\"||!siteKey)return;if(window.grecaptcha){startTransition(()=>setIsLoaded(true));return;}const script=document.createElement(\"script\");if(version===\"v3\"){script.src=`https://www.google.com/recaptcha/api.js?render=${siteKey}&badge=${badge}`;}else{script.src=\"https://www.google.com/recaptcha/api.js?onload=onRecaptchaIntegrationLoad&render=explicit\";}script.async=true;script.defer=true;script.onerror=()=>{console.error(\"Failed to load reCAPTCHA script\");setErrorMessage(\"Failed to load reCAPTCHA. Please check your connection.\");setShowError(true);};if(version===\"v2\"){window.onRecaptchaIntegrationLoad=()=>{startTransition(()=>setIsLoaded(true));};}else{script.onload=()=>{if(window.grecaptcha&&window.grecaptcha.ready){window.grecaptcha.ready(()=>{startTransition(()=>setIsLoaded(true));});}};}document.head.appendChild(script);return()=>{if(document.head.contains(script)){document.head.removeChild(script);}if(version===\"v2\"){delete window.onRecaptchaIntegrationLoad;}};},[version,siteKey,badge]);// Backend verification function - calls YOUR central n8n\nconst verifyTokenWithBackend=async token=>{if(!secretKey){console.error(\"Secret key not configured\");return false;}try{const response=await fetch(VERIFICATION_ENDPOINT,{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify({recaptchaToken:token,secretKey:secretKey,action:version===\"v3\"?action:undefined})});const data=await response.json();if(!data.success){setErrorMessage(data.message||\"Verification failed. Please try again.\");return false;}return true;}catch(error){console.error(\"Backend verification failed:\",error);setErrorMessage(\"Verification service unavailable. Please try again later.\");return false;}};// Register instance-specific functions\nuseEffect(()=>{if(typeof window===\"undefined\")return;window.recaptchaInstances.set(instanceId,{validate:()=>{if(version===\"v3\"){return true;}else{if(!isVerified){startTransition(()=>setShowError(true));return false;}startTransition(()=>setShowError(false));return true;}},getResponse:()=>{if(version===\"v3\"){return v3Token;}else if(widgetId!==null&&window.grecaptcha){return window.grecaptcha.getResponse(widgetId);}return\"\";},reset:()=>{if(version===\"v2\"&&widgetId!==null&&window.grecaptcha){window.grecaptcha.reset(widgetId);startTransition(()=>{setIsVerified(false);setShowError(false);setErrorMessage(validationErrorMessage);});}else if(version===\"v3\"){startTransition(()=>{setV3Token(\"\");setIsVerified(false);setShowError(false);setErrorMessage(validationErrorMessage);});}},isVerified:()=>{return isVerified;},execute:async()=>{if(!window.grecaptcha)return;try{if(version===\"v2\"&&invisible&&widgetId!==null){window.grecaptcha.execute(widgetId);}else if(version===\"v3\"){const token=await window.grecaptcha.execute(siteKey,{action});// Verify with YOUR central backend\nconst verified=await verifyTokenWithBackend(token);if(verified){startTransition(()=>{setIsVerified(true);setV3Token(token);});}else{startTransition(()=>{setIsVerified(false);setShowError(true);});}}}catch(error){console.error(\"Failed to execute reCAPTCHA:\",error);setErrorMessage(\"reCAPTCHA error. Please refresh and try again.\");setShowError(true);}}});if(!window.validateRecaptcha){window.validateRecaptcha=()=>{const firstInstance=window.recaptchaInstances.values().next().value;return firstInstance?firstInstance.validate():false;};window.getRecaptchaResponse=()=>{const firstInstance=window.recaptchaInstances.values().next().value;return firstInstance?firstInstance.getResponse():\"\";};window.resetRecaptcha=()=>{const firstInstance=window.recaptchaInstances.values().next().value;if(firstInstance)firstInstance.reset();};window.isRecaptchaVerified=()=>{const firstInstance=window.recaptchaInstances.values().next().value;return firstInstance?firstInstance.isVerified():false;};window.executeRecaptchaIntegration=()=>{const firstInstance=window.recaptchaInstances.values().next().value;if(firstInstance)firstInstance.execute();};}return()=>{window.recaptchaInstances.delete(instanceId);if(window.recaptchaInstances.size===0){delete window.validateRecaptcha;delete window.getRecaptchaResponse;delete window.resetRecaptcha;delete window.isRecaptchaVerified;delete window.executeRecaptchaIntegration;}};},[isVerified,widgetId,version,v3Token,instanceId,invisible,siteKey,secretKey,action,validationErrorMessage]);// Listen for form submission attempts\nuseEffect(()=>{if(typeof window===\"undefined\")return;const handleActualFormSubmit=async event=>{const target=event.target;if(target&&target.tagName===\"FORM\"){const formContainsThisInstance=target.contains(recaptchaRef.current);if(!formContainsThisInstance)return;if(version===\"v2\"){const requiredFields=target.querySelectorAll(\"[required]\");let hasFieldErrors=false;requiredFields.forEach(field=>{if(!field.value.trim()){hasFieldErrors=true;}});if(!hasFieldErrors&&!isVerified){event.preventDefault();event.stopPropagation();startTransition(()=>setShowError(true));if(recaptchaRef.current){recaptchaRef.current.scrollIntoView({behavior:\"smooth\",block:\"center\"});}}}else if(version===\"v3\"){// For v3, generate fresh token on each submission\nevent.preventDefault();event.stopPropagation();try{if(window.grecaptcha){const token=await window.grecaptcha.execute(siteKey,{action:action});console.log(\"v3 token generated on submit:\",token);// Verify with backend\nconst verified=await verifyTokenWithBackend(token);if(verified){startTransition(()=>{setIsVerified(true);setV3Token(token);setShowError(false);});// Dispatch success event\nconst successEvent=new CustomEvent(\"recaptcha-success\",{detail:{token,instanceId,verified:true}});window.dispatchEvent(successEvent);// Re-submit the form after verification\nsetTimeout(()=>{target.requestSubmit();},100);}else{startTransition(()=>{setIsVerified(false);setShowError(true);});}}}catch(error){console.error(\"Failed to execute v3 on submit:\",error);startTransition(()=>{setShowError(true);setErrorMessage(\"reCAPTCHA verification failed. Please try again.\");});}}}};const handleSubmitButtonClick=async event=>{const target=event.target;const isSubmitButton=target.type===\"submit\"||target.classList.contains(\"framer-submit-button\")||target.closest('button[type=\"submit\"]')||target.closest('input[type=\"submit\"]');if(isSubmitButton){const form=target.closest(\"form\")||document.querySelector(\"form\");if(form){const formContainsThisInstance=form.contains(recaptchaRef.current);if(!formContainsThisInstance)return;if(version===\"v2\"){const isFormValid=form.checkValidity();if(isFormValid&&!isVerified){event.preventDefault();event.stopPropagation();startTransition(()=>setShowError(true));if(recaptchaRef.current){recaptchaRef.current.scrollIntoView({behavior:\"smooth\",block:\"center\"});}}else if(!isFormValid){startTransition(()=>setShowError(false));}}// v3 is handled in form submit handler\n}}};document.addEventListener(\"submit\",handleActualFormSubmit,true);document.addEventListener(\"click\",handleSubmitButtonClick,true);return()=>{document.removeEventListener(\"submit\",handleActualFormSubmit,true);document.removeEventListener(\"click\",handleSubmitButtonClick,true);};},[isVerified,version,siteKey,secretKey,action,instanceId,validationErrorMessage]);// Render reCAPTCHA widget for v2 or setup v3\nuseEffect(()=>{if(!isLoaded||!window.grecaptcha||!siteKey)return;try{const handleSuccess=async token=>{console.log(\"reCAPTCHA token received, verifying with backend...\");// Verify with YOUR central backend\nconst verified=await verifyTokenWithBackend(token);if(verified){startTransition(()=>{setIsVerified(true);setShowError(false);setErrorMessage(validationErrorMessage);if(version===\"v3\"){setV3Token(token);}});const event=new CustomEvent(\"recaptcha-success\",{detail:{token,instanceId,verified:true}});window.dispatchEvent(event);}else{startTransition(()=>{setIsVerified(false);setShowError(true);});}};const handleExpired=()=>{startTransition(()=>{setIsVerified(false);setShowError(false);if(version===\"v3\"){setV3Token(\"\");}});};const handleError=()=>{startTransition(()=>{setIsVerified(false);setShowError(true);setErrorMessage(\"reCAPTCHA error occurred. Please try again.\");});};if(version===\"v2\"){const id=window.grecaptcha.render(recaptchaRef.current,{sitekey:siteKey,theme,size:invisible?\"invisible\":\"normal\",callback:handleSuccess,\"expired-callback\":handleExpired,\"error-callback\":handleError,badge:invisible?badge:undefined});startTransition(()=>setWidgetId(id));}else{// v3 setup - execute on component mount and form submit\nstartTransition(()=>setWidgetId(0));// Execute reCAPTCHA v3 immediately to get initial token\nconst executeV3=async()=>{try{const token=await window.grecaptcha.execute(siteKey,{action:action});console.log(\"v3 token generated:\",token);await handleSuccess(token);}catch(error){console.error(\"Failed to execute v3:\",error);handleError();}};executeV3();}}catch(error){console.error(\"Failed to setup reCAPTCHA:\",error);}return()=>{if(version===\"v2\"&&widgetId!==null&&window.grecaptcha){try{window.grecaptcha.reset(widgetId);}catch(error){console.error(\"Failed to reset reCAPTCHA:\",error);}}};},[isLoaded,siteKey,secretKey,theme,badge,invisible,version,instanceId,action]);// For v3, show a simple indicator\nif(version===\"v3\"){return /*#__PURE__*/_jsxs(\"div\",{style:{width:\"100%\",height:\"auto\",minWidth:\"5px\",minHeight:\"5px\",display:\"block\"},children:[showSetupWarning&&/*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",marginBottom:\"8px\",padding:\"12px 16px\",backgroundColor:\"#fef2f2\",border:\"1px solid #fecaca\",borderRadius:\"6px\",color:\"#dc2626\",fontSize:\"12px\",fontFamily:\"system-ui, -apple-system, sans-serif\",fontWeight:\"500\"},children:\"⚠️ Please configure both Site Key and Secret Key in component settings\"}),badge===\"inline\"&&/*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:\"60px\",backgroundColor:\"#f9f9f9\",border:\"1px solid #d3d3d3\",borderRadius:\"3px\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",fontSize:\"12px\",color:\"#666\",fontFamily:\"Roboto, sans-serif\"},children:/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:\"8px\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{width:\"16px\",height:\"16px\",backgroundColor:\"#4285f4\",borderRadius:\"2px\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",color:\"white\",fontSize:\"10px\",fontWeight:\"bold\"},children:\"✓\"}),/*#__PURE__*/_jsx(\"span\",{children:\"Protected by reCAPTCHA\"})]})}),showError&&/*#__PURE__*/_jsxs(\"div\",{style:{width:\"100%\",marginTop:\"8px\",padding:\"12px 16px\",backgroundColor:\"#fef2f2\",border:\"1px solid #fecaca\",borderRadius:\"6px\",color:\"#dc2626\",fontSize:\"14px\",fontFamily:\"system-ui, -apple-system, sans-serif\",fontWeight:\"500\",boxShadow:\"0 1px 3px rgba(0, 0, 0, 0.1)\"},children:[\"⚠️ \",errorMessage]})]});}// For v2, show the widget container\nreturn /*#__PURE__*/_jsxs(\"div\",{style:{width:\"100%\",height:\"auto\",minWidth:\"5px\",minHeight:\"5px\",display:\"block\"},children:[showSetupWarning&&/*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",marginBottom:\"8px\",padding:\"12px 16px\",backgroundColor:\"#fef2f2\",border:\"1px solid #fecaca\",borderRadius:\"6px\",color:\"#dc2626\",fontSize:\"12px\",fontFamily:\"system-ui, -apple-system, sans-serif\",fontWeight:\"500\"},children:\"⚠️ Please configure both Site Key and Secret Key in component settings\"}),/*#__PURE__*/_jsxs(\"div\",{style:{display:invisible?\"none\":\"block\",width:\"100%\",height:\"100%\"},children:[/*#__PURE__*/_jsx(\"div\",{ref:recaptchaRef}),!isLoaded&&siteKey&&/*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:\"78px\",backgroundColor:\"#f9f9f9\",border:\"1px solid #d3d3d3\",borderRadius:\"3px\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",fontSize:\"12px\",color:\"#666\",boxSizing:\"border-box\"},children:\"Loading reCAPTCHA...\"})]}),showError&&/*#__PURE__*/_jsxs(\"div\",{style:{width:\"100%\",marginTop:\"8px\",padding:\"12px 16px\",backgroundColor:\"#fef2f2\",border:\"1px solid #fecaca\",borderRadius:\"6px\",color:\"#dc2626\",fontSize:\"14px\",fontFamily:\"system-ui, -apple-system, sans-serif\",fontWeight:\"500\",boxShadow:\"0 1px 3px rgba(0, 0, 0, 0.1)\"},children:[\"⚠️ \",errorMessage]})]});}addPropertyControls(RecaptchaIntegration,{siteKey:{type:ControlType.String,title:\"Site Key\",defaultValue:\"\",placeholder:\"Your reCAPTCHA Site Key\",description:\"Get this from Google reCAPTCHA Console\"},secretKey:{type:ControlType.String,title:\"Secret Key\",defaultValue:\"\",placeholder:\"Your reCAPTCHA Secret Key\",description:\"Get this from Google reCAPTCHA Console\",obscured:true},version:{type:ControlType.Enum,title:\"Version\",options:[\"v2\",\"v3\"],optionTitles:[\"v2 (Checkbox)\",\"v3 (Invisible)\"],defaultValue:\"v2\",displaySegmentedControl:true},theme:{type:ControlType.Enum,title:\"Theme\",options:[\"light\",\"dark\"],optionTitles:[\"Light\",\"Dark\"],defaultValue:\"light\",displaySegmentedControl:true,hidden:({version})=>version===\"v3\"},invisible:{type:ControlType.Boolean,title:\"Invisible\",defaultValue:false,enabledTitle:\"Yes\",disabledTitle:\"No\",hidden:({version})=>version===\"v3\"},badge:{type:ControlType.Enum,title:\"Badge Position\",options:[\"bottomright\",\"bottomleft\",\"inline\"],optionTitles:[\"Bottom Right\",\"Bottom Left\",\"Inline\"],defaultValue:\"bottomright\"},validationErrorMessage:{type:ControlType.String,title:\"Error Message\",defaultValue:\"Please complete the reCAPTCHA verification\",placeholder:\"Error message text\"},action:{type:ControlType.String,title:\"Action\",defaultValue:\"submit\",placeholder:\"Action name for v3\",hidden:({version})=>version!==\"v3\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"RecaptchaIntegration\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Recaptcha_1.map"],"mappings":"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"}