{"version":3,"file":"SubmitButton.BsStZmKp.mjs","names":["useState","useRef","ref"],"sources":["https:/framerusercontent.com/modules/jPrZ6ZzOdg31UXZ7cqJT/NPnIkcVH7LFNJwjhu9xo/SubmitButton.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,Link}from\"framer\";import{useEffect,useState,useRef}from\"react\";import{motion}from\"framer-motion\";import{FormIcon,iconPropertyControls,useFormStore,SUPABASE_KEY,fillProp,createBackground}from\"https://framer.com/m/SharedFormCode-HQOZ.js@JALKlMU2qFT9SzSjy1FR\";/**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any\n * @framerIntrinsicWidth 500\n */export default function SubmitButton(props){const{formId,clickAction,submitPlatform,submitUrl,responseInfo,redirectOnSuccess,scrollOptions,icon,border,success,failure,apiConfig}=props;const borderRadius=props.radiusIsMixed?`${props.radiusTopLeft}px ${props.radiusTopRight}px ${props.radiusBottomRight}px ${props.radiusBottomLeft}px`:`${props.radius}px`;const[formState,setFormState]=useFormStore();const[submitted,setSubmitted]=useState(false);const[insideForm,setInsideForm]=useState(false);const redirectLinkRef=useRef(null);const ref=useRef(null);// Reset/clear form\nfunction resetFormState(){setFormState(prev=>{const newForm={};for(const fieldName in prev[formId]){newForm[fieldName]={...prev[formId][fieldName],value:prev[formId][fieldName].defaultValue};}return{[formId]:newForm};});}useEffect(()=>{setFormState({});if(ref.current?.closest(\"form\")){setInsideForm(true);}return()=>{setFormState(prev=>{const{[formId]:_,...newState}=prev;return newState;});};},[]);async function onSubmitClick(){const invalidFields=[];if(submitted){return;}// Find invalid fields\nconst form=formState[formId];for(const fieldName in form){const field=form[fieldName];if(field.visible&&!await field.isValid(field.value)){invalidFields.push(fieldName);}}if(invalidFields.length==0){if(clickAction==\"submitForm\"){// Process final field values\nconst formData={};for(const fieldName in form){const field=form[fieldName];const name=processFieldName(fieldName,submitPlatform);if(field.processValue){formData[name]=await field.processValue(field.value);}else{formData[name]=field.value;}}let url=\"\";let fetchMode=\"no-cors\";let formEncoded=true;let headers={};let fetchOptions={};switch(submitPlatform){case\"url\":url=submitUrl.replace(\"submit-form.com\",\"api.formspark.io\");formEncoded=props.submitDataType==\"application/x-www-form-urlencoded\";// Fix CORS issues with Formspark and Make.com\nif(url.includes(\"submit-form.com\")||url.includes(\"api.formspark.io\")||url.includes(\".make.com\")){fetchMode=\"cors\";}if(apiConfig?.apiKey?.length){headers.Authorization=`Bearer ${apiConfig.apiKey}`;}break;case\"zapier\":url=props.zapierWebhookUrl;formEncoded=false;break;case\"make\":url=props.makeWebhookUrl;fetchMode=\"cors\";formEncoded=false;break;case\"formspark\":url=`https://api.formspark.io/${props.formsparkFormId}`;fetchMode=\"cors\";break;case\"formspree\":url=props.formspreeEndpoint;break;case\"loops\":url=props.loopsUrl;fetchMode=\"cors\";if(props.loopsUserGroup?.length){formData.userGroup=props.loopsUserGroup;}// Email address\nfor(const fieldName in form){const field=form[fieldName];if(field.type==\"email\"){delete formData[field.name];formData.email=field.value;break;}}break;case\"mailchimp\":const[domain,parameters]=parseMailchimpUrl(props.mailchimpUrl);url=`https://${domain}/subscribe/post`;if(parameters){for(const key in parameters){formData[key]=parameters[key];}}// Find email, phone, and birthday fields\nlet emailFound=false;let phoneFound=false;let birthdayFound=false;for(const fieldName in form){const field=form[fieldName];if(!emailFound&&field.type==\"email\"){delete formData[field.name];formData.EMAIL=field.value;emailFound=true;}if(!phoneFound&&field.type==\"phone\"){delete formData[field.name];formData.PHONE=field.value;phoneFound=true;}if(!birthdayFound&&field.type==\"date\"&&field.name==\"birthday\"){formData[\"BIRTHDAY[month]\"]=field.value.getMonth()+1;formData[\"BIRTHDAY[day]\"]=field.value.getDate();delete formData[field.name];birthdayFound=true;}}break;case\"mailerLite\":url=props.mailerLiteUrl;// Email address\nfor(const fieldName in form){const field=form[fieldName];if(field.type==\"email\"){delete formData[field.name];formData[\"fields[email]\"]=field.value;break;}}break;case\"hubSpot\":url=`https://api.hsforms.com/submissions/v3/integration/submit/${props.hubSpotPortalId}/${props.hubSpotFormId}`;fetchMode=\"cors\";break;case\"basin\":url=props.basinUrl;break;case\"getform\":url=props.getformUrl;break;case\"formcarry\":url=props.formcarryUrl;fetchOptions={enctype:\"multipart/form-data\"};break;case\"formBackend\":url=props.formBackendUrl;break;case\"web3forms\":url=\"https://api.web3forms.com/submit\";formData.access_key=props.web3formsAccessKey;break;case\"formBold\":url=props.formBoldUrl;break;case\"n8n\":url=props.n8nWebhookUrl;formEncoded=false;break;}// Add URL to form response\nif(responseInfo.url){formData[responseInfo.urlName]=window.location.href;}// Add UTM parameters\nif(responseInfo.utmParams){const queryParams=new URLSearchParams(window.location.search);queryParams.forEach((value,key)=>{// Check if the key starts with 'utm_' (indicating it's a UTM parameter)\nif(key.startsWith(\"utm_\")){formData[key]=value;}});}let body=\"\";if(formEncoded){body=new URLSearchParams(formData).toString();}else{body=JSON.stringify(formData);}setSubmitted(true);try{let ok=false;if(submitPlatform==\"none\"){ok=true;}else{const response=await fetch(url,{method:\"POST\",mode:fetchMode,body,headers:{\"Content-Type\":formEncoded?\"application/x-www-form-urlencoded\":\"application/json\",Accept:\"application/json\",...headers}});ok=response.ok||response.type==\"opaque\";}if(ok){if(redirectOnSuccess?.length&&redirectLinkRef.current){redirectLinkRef.current.click();}try{fetch(\"https://mhrwdvsitrzczrneuaxg.supabase.co/rest/v1/framerforms_websites\",{method:\"POST\",headers:{apikey:SUPABASE_KEY,Authorization:`Bearer ${SUPABASE_KEY}`,\"Content-Type\":\"application/json\",Prefer:\"return=minimal\"},body:JSON.stringify({url:window.location.href})});}catch(error){console.error(\"Error:\",error);}resetFormState();setSubmitted(false);success?.();}else{setSubmitted(false);failure?.();}}catch(error){console.error(\"Error submitting form: \",error);setSubmitted(false);failure?.();}}else{// Validate form without submitting to URL\nsetSubmitted(false);success?.();}}else{console.log(\"Not all form fields are valid:\",invalidFields.join(\", \"));if(scrollOptions){// Scroll to first invalid field\nlet closestRef=null;let closestDistance=Number.POSITIVE_INFINITY;for(const fieldName in form){const ref=form[fieldName].ref;if(invalidFields.includes(fieldName)&&ref.current){const rect=ref.current.getBoundingClientRect();const distance=rect.top+window.pageYOffset;if(distance>=0&&distance<closestDistance){closestRef=ref;closestDistance=distance;}}}if(closestRef){window.scrollTo({behavior:\"smooth\",top:closestRef.current.getBoundingClientRect().top-document.body.getBoundingClientRect().top+scrollOptions.offset});}}setSubmitted(false);failure?.();}}return insideForm?/*#__PURE__*/_jsxs(\"div\",{ref:ref,style:{...props.style,display:\"flex\",flexDirection:\"column\",gap:10},children:[/*#__PURE__*/_jsx(\"div\",{style:{...props.style,borderRadius:10,padding:12,backgroundColor:\"#FFF\",border:\"2px solid #f27b1f\",color:\"#000\",fontSize:14,fontWeight:500},children:\"This Submit Button component is from an older version of FramerForms, and is not compatible with Framer's form builder tool.\"}),/*#__PURE__*/_jsx(\"a\",{href:\"https://app.framerforms.com/dashboard/new-form\",target:\"_blank\",style:{borderRadius:10,padding:12,backgroundColor:\"#f27b1f\",boxShadow:\"0 5px 20px rgba(242, 123, 31, 0.5)\",color:\"#FFF\",fontSize:14,fontWeight:600,textAlign:\"center\",textDecoration:\"none\"},children:\"Learn how to create a new form\"})]}):/*#__PURE__*/_jsxs(motion.button,{ref:ref,type:\"submit\",onClick:onSubmitClick,whileHover:{...createBackground(props.hoverCustomization?.fill),color:props.hoverCustomization?.fontColor,\"--border-color\":props.hoverCustomization?.borderColor},whileTap:{...createBackground(props.pressCustomization?.fill),color:props.pressCustomization?.fontColor,\"--border-color\":props.pressCustomization?.borderColor},animate:{borderRadius:borderRadius,padding:props.paddingIsMixed?`${props.paddingTop}px ${props.paddingRight}px ${props.paddingBottom}px ${props.paddingLeft}px`:`${props.padding}px`,...createBackground(props.fill),boxShadow:props.shadows,color:props.fontColor,\"--border-color\":border?.color},style:{position:\"relative\",display:\"flex\",flexDirection:icon?.position==\"right\"?\"row-reverse\":\"row\",gap:icon?.gap,alignItems:\"center\",justifyContent:props.font?.textAlign||\"center\",border:\"none\",outline:\"none\",cursor:\"pointer\",userSelect:\"none\",...props.font,...props.style},initial:false,transition:props.transition,children:[/*#__PURE__*/_jsx(FormIcon,{icon:icon,style:{}}),props.text,border&&/*#__PURE__*/_jsx(motion.div,{animate:{borderRadius:borderRadius},style:{position:\"absolute\",inset:0,borderWidth:border.widthIsMixed?`${border.widthTop}px ${border.widthRight}px ${border.widthBottom}px ${border.widthLeft}px`:`${border.width}px`,borderStyle:border.style,borderColor:\"var(--border-color)\",pointerEvents:\"none\"},initial:false,transition:props.transition}),redirectOnSuccess&&/*#__PURE__*/_jsx(Link,{ref:redirectLinkRef,href:redirectOnSuccess,openInNewTab:props.newTab,smoothScroll:false,children:/*#__PURE__*/_jsx(\"a\",{})})]});}SubmitButton.displayName=\"FramerForms 2.0/Submit Button\";addPropertyControls(SubmitButton,{formId:{type:ControlType.Number,defaultValue:0,step:1,min:0,displayStepper:true,title:\"Form ID\"},clickAction:{type:ControlType.Enum,defaultValue:\"submitForm\",options:[\"submitForm\",\"validateForm\"],optionTitles:[\"Submit Form\",\"Validate Form\"]},///////////////////////////////////////////////////////////////////////\nsubmitPlatform:{type:ControlType.Enum,defaultValue:\"url\",options:[\"url\",\"basin\",\"formBackend\",\"formBold\",\"formcarry\",\"formspark\",\"formspree\",\"getform\",\"loops\",\"mailchimp\",\"mailerLite\",\"make\",\"n8n\",\"web3forms\",\"zapier\",\"none\"],optionTitles:[\"Webhook\",\"Basin\",\"FormBackend\",\"FormBold\",\"Formcarry\",\"Formspark\",\"Formspree\",\"Getform\",\"Loops\",\"Mailchimp\",\"MailerLite\",\"Make.com\",\"n8n\",\"Web3Forms\",\"Zapier\",\"None\"],title:\"Submit To\",hidden:notSubmitForm},submitUrl:{title:\"URL\",type:ControlType.String,defaultValue:\"\",hidden:isPlatformHidden(\"url\")},submitDataType:{type:ControlType.Enum,defaultValue:\"application/json\",options:[\"application/json\",\"application/x-www-form-urlencoded\"],title:\"Data Type\",hidden:isPlatformHidden(\"url\")},zapierWebhookUrl:{title:\"Webhook URL\",type:ControlType.String,defaultValue:\"\",placeholder:\"https://hooks.zapier.com/hooks/catch/...\",description:\"Webhook URL from the [Webhooks by Zapier](https://zapier.com/apps/webhook/integrations) action\\n\\n[Setup Tutorial →](https://insertframe.io/docs/how-to-connect-zapier-with-framerforms)\",hidden:isPlatformHidden(\"zapier\")},makeWebhookUrl:{title:\"Webhook URL\",type:ControlType.String,defaultValue:\"\",placeholder:\"https://hook.us1.make.com/...\",description:\"Webhook URL from custom webhook in [Make.com](https://make.com/en)\\n\\n[Setup Tutorial →](https://insertframe.io/docs/how-to-connect-make-com-with-framerforms)\",hidden:isPlatformHidden(\"make\")},formsparkFormId:{title:\"Formspark Form ID\",type:ControlType.String,defaultValue:\"\",description:\"Form ID from [Formspark](https://formspark.io/)\\n\\n[Setup Tutorial →](https://insertframe.io/docs/how-to-integrate-formspark-with-framerforms)\",hidden:isPlatformHidden(\"formspark\")},formspreeEndpoint:{title:\"Formspree Endpoint\",type:ControlType.String,defaultValue:\"\",placeholder:\"https://formspree.io/f/...\",description:\"Form endpoint URL from [Formspree](https://formspree.io/)\\n\\n[Setup Tutorial →](https://insertframe.io/docs/how-to-connect-formspree-with-framerforms)\",hidden:isPlatformHidden(\"formspree\")},loopsUrl:{title:\"Loops URL\",type:ControlType.String,defaultValue:\"\",placeholder:\"https://app.loops.so/api/newsletter-form/...\",description:\"Form endpoint URL from [Loops](https://loops.so/)\\n\\n[Setup Tutorial →](https://insertframe.io/docs/how-to-connect-loops-with-framerforms)\",hidden:isPlatformHidden(\"loops\")},loopsUserGroup:{title:\"User Group\",type:ControlType.String,defaultValue:\"\",placeholder:\"Loops User Group\",hidden:isPlatformHidden(\"loops\")},mailchimpUrl:{title:\"Mailchimp URL\",type:ControlType.String,defaultValue:\"\",placeholder:\"https://***.us*.list-manage.com/subscribe/post?u=...\",description:\"Form URL from [Mailchimp](https://mailchimp.com/)\\n\\n[Setup Tutorial →](https://insertframe.io/docs/how-to-connect-mailchimp-with-framerforms)\",hidden:isPlatformHidden(\"mailchimp\")},mailerLiteUrl:{title:\"MailerLite URL\",type:ControlType.String,defaultValue:\"\",placeholder:\"https://assets.mailerlite.com/jsonp/.../forms/.../subscribe\",description:\"Form URL from [MailerLite](https://www.mailerlite.com/)\\n\\n[Setup Tutorial →](https://insertframe.io/docs/how-to-connect-mailerlite-with-framerforms)\",hidden:isPlatformHidden(\"mailerLite\")},formBackendUrl:{title:\"FormBackend URL\",type:ControlType.String,defaultValue:\"\",placeholder:\"https://www.formbackend.com/f/...\",description:\"Form endpoint from [FormBackend](https://formbackend.com/)\",hidden:isPlatformHidden(\"formBackend\")},formcarryUrl:{title:\"Formcarry URL\",type:ControlType.String,defaultValue:\"\",placeholder:\"https://formcarry.com/s/...\",description:\"Form endpoint from [Formcarry](https://formcarry.com/)\",hidden:isPlatformHidden(\"formcarry\")},basinUrl:{title:\"Basin URL\",type:ControlType.String,defaultValue:\"\",placeholder:\"https://usebasin.com/f/...\",description:\"Form endpoint from [Basin](https://usebasin.com)\",hidden:isPlatformHidden(\"basin\")},getformUrl:{title:\"Getform URL\",type:ControlType.String,defaultValue:\"\",placeholder:\"https://getform.io/f/...\",description:\"Form endpoint from [Getform](https://getform.io/)\",hidden:isPlatformHidden(\"getform\")},web3formsAccessKey:{title:\"Web3Forms Access Key\",type:ControlType.String,defaultValue:\"\",placeholder:\"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\",description:\"Access key from [Web3Forms](https://web3forms.com/)\",hidden:isPlatformHidden(\"web3forms\")},formBoldUrl:{title:\"FormBold URL\",type:ControlType.String,defaultValue:\"\",placeholder:\"https://formbold.com/s/...\",description:\"Form URL from [FormBold](https://formbold.com/)\",hidden:isPlatformHidden(\"formBold\")},n8nWebhookUrl:{title:\"n8n Webhook URL\",type:ControlType.String,defaultValue:\"\",placeholder:\"https://...app.n8n.cloud/...\",description:\"Webhook URL from [n8n](https://n8n.io/)\",hidden:isPlatformHidden(\"n8n\")},apiConfig:{type:ControlType.Object,optional:true,title:\"API Config\",buttonTitle:\"API Key\",controls:{apiKey:{type:ControlType.String,title:\"API Key\"}},hidden:props=>notSubmitForm(props)||props.submitPlatform!=\"url\"},///////////////////////////////////////////////////////////////////////\nresponseInfo:{type:ControlType.Object,buttonTitle:\"Options\",controls:{utmParams:{type:ControlType.Boolean,defaultValue:false,description:\"Include UTM parameters in the form response.\\n[Learn More →](https://insertframe.io/docs/how-to-add-utm-parameters)\",title:\"UTM Params\"},url:{type:ControlType.Boolean,defaultValue:false,description:\"Include the page URL in the form response.\",title:\"URL\"},urlName:{type:ControlType.String,defaultValue:\"url\",description:\"Form response field name.\",title:\"URL Name\",hidden:props=>!props.url}},hidden:props=>notSubmitForm(props)||props.submitPlatform==\"hubSpot\"},redirectOnSuccess:{type:ControlType.Link,hidden:notSubmitForm},newTab:{type:ControlType.Boolean,defaultValue:false,hidden:notSubmitForm},scrollToInvalidField:{type:ControlType.Object,defaultValue:{offset:-24},optional:true,description:\" \",controls:{offset:{type:ControlType.Number,defaultValue:-24,step:1}},hidden:notSubmitForm},fill:fillProp({color:\"#0075FF\",colorA:\"#70B3FF\",colorB:\"#0075FF\"}),fontColor:{type:ControlType.Color,defaultValue:\"#FFF\"},font:{type:\"font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontWeight:700,fontSize:16,lineHeight:1}},text:{type:ControlType.String,defaultValue:\"Submit\"},border:{type:ControlType.Object,optional:true,controls:{color:{type:ControlType.Color,defaultValue:\"#222\"},width:{type:ControlType.FusedNumber,defaultValue:1,toggleKey:\"widthIsMixed\",toggleTitles:[\"All\",\"Individual\"],valueKeys:[\"widthTop\",\"widthRight\",\"widthBottom\",\"widthLeft\"],valueLabels:[\"T\",\"R\",\"B\",\"L\"],min:1},style:{type:ControlType.Enum,defaultValue:\"solid\",options:[\"solid\",\"dashed\",\"dotted\",\"double\"],optionTitles:[\"Solid\",\"Dashed\",\"Dotted\",\"Double\"]}}},shadows:{type:ControlType.BoxShadow},icon:iconPropertyControls,padding:{type:ControlType.FusedNumber,defaultValue:16,toggleKey:\"paddingIsMixed\",toggleTitles:[\"All\",\"Individual\"],valueKeys:[\"paddingTop\",\"paddingRight\",\"paddingBottom\",\"paddingLeft\"],valueLabels:[\"T\",\"R\",\"B\",\"L\"],min:0},radius:{type:ControlType.FusedNumber,defaultValue:8,toggleKey:\"radiusIsMixed\",toggleTitles:[\"All\",\"Individual\"],valueKeys:[\"radiusTopLeft\",\"radiusTopRight\",\"radiusBottomRight\",\"radiusBottomLeft\"],valueLabels:[\"TL\",\"TR\",\"BR\",\"BL\"],min:0},hoverCustomization:{type:ControlType.Object,optional:true,buttonTitle:\"Colors\",title:\"Hover\",icon:\"effect\",controls:{fill:fillProp({noDefault:true}),fontColor:{type:ControlType.Color,optional:true},borderColor:{type:ControlType.Color,optional:true}}},pressCustomization:{type:ControlType.Object,optional:true,buttonTitle:\"Colors\",title:\"Press\",icon:\"effect\",controls:{fill:fillProp({noDefault:true}),fontColor:{type:ControlType.Color,optional:true},borderColor:{type:ControlType.Color,optional:true}}},transition:{type:ControlType.Transition},success:{type:ControlType.EventHandler},failure:{type:ControlType.EventHandler}});// Functions\nfunction notSubmitForm(props){return props.clickAction!=\"submitForm\";}const parseMailchimpUrl=url=>{const matchResult=url.replace(/&amp;/g,\"&\").match(/^https?:\\/\\/([^\\/]+)[^\\?]+\\??(.+)$/);// Check if there was no match\nif(!matchResult){return[null,null];}// Extract domain and parameters from the match result\nconst[,domain,parameters]=matchResult;// Convert parameters to an object if they exist, otherwise null\nconst parametersObject=parameters?Object.fromEntries(new URLSearchParams(parameters)):null;return[domain,parametersObject];};const MAILCHIMP_REPLACE={firstName:\"FNAME\",lastName:\"LNAME\",addressLine1:\"ADDRESS[addr1]\",addressLine2:\"ADDRESS[addr2]\",addressCity:\"ADDRESS[city]\",addressState:\"ADDRESS[state]\",addressZip:\"ADDRESS[zip]\",addressCountry:\"ADDRESS[country]\"};function processFieldName(name,submitPlatform){switch(submitPlatform){case\"mailchimp\":return MAILCHIMP_REPLACE[name]||name;case\"mailerLite\":return`fields[${name}]`;default:return name;}}function isPlatformHidden(name){return props=>notSubmitForm(props)||props.submitPlatform!=name;}\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SubmitButton\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerSupportedLayoutHeight\":\"any\",\"framerIntrinsicWidth\":\"500\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SubmitButton.map"],"mappings":"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"}