{"version":3,"file":"HubSpotForm.Vj7RJk7h.mjs","names":[],"sources":["https:/framerusercontent.com/modules/YQeANHAp8FBogOPiFTx8/Typ2P9oE1s8qg86vvjqB/HubSpotForm.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect}from\"react\";// HubSpot forms (EU data region)\nconst PORTAL_ID=\"147028824\";const DEMO_FORM_ID=\"6c5b98f4-bc0c-4656-ba01-4d62b9da2032\";const CONTACT_FORM_ID=\"958cfdb8-5b0d-4d41-b72f-c7c892bd9c3a\";function endpointFor(formId){return`https://api-eu1.hsforms.com/submissions/v3/integration/submit/${PORTAL_ID}/${formId}`;}// Framer field name -> HubSpot contact property\nconst FIELD_MAP={\"First name\":\"firstname\",\"Last name\":\"lastname\",Email:\"email\",Company:\"company\",\"Job Title\":\"jobtitle\",Country:\"country\",\"Company Size\":\"numemployees\",Message:\"message\"};// Sent again without these if HubSpot rejects the first attempt\n// (e.g. the HubSpot form lacks the field or uses different dropdown values)\nconst OPTIONAL_PROPERTIES=[\"numemployees\",\"country\",\"jobtitle\"];const CONSENT_FIELD=\"Privacy Policy\";const CONSENT_TEXT=\"I agree to the Privacy Policy\";function getHubSpotCookie(){const match=document.cookie.match(/(?:^|;\\s*)hubspotutk=([^;]+)/);return match?match[1]:undefined;}function buildPayload(data,skip=[]){const fields=Object.entries(FIELD_MAP).filter(([,property])=>!skip.includes(property)).map(([framerName,property])=>({objectTypeId:\"0-1\",name:property,value:String(data.get(framerName)??\"\").trim()})).filter(field=>field.value!==\"\");const consentValue=data.get(CONSENT_FIELD);const consented=consentValue!==null&&consentValue!==\"false\"&&consentValue!==\"off\";const context={pageUri:window.location.href,pageName:document.title};const hutk=getHubSpotCookie();if(hutk)context.hutk=hutk;return{fields,context,...consented&&{legalConsentOptions:{consent:{consentToProcess:true,text:CONSENT_TEXT}}}};}async function submitToHubSpot(data,formId){const send=body=>fetch(endpointFor(formId),{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify(body),keepalive:true});try{const response=await send(buildPayload(data));if(response.ok)return;console.warn(\"HubSpot rejected the full submission, retrying with core fields\",await response.text());const retry=await send(buildPayload(data,OPTIONAL_PROPERTIES));if(!retry.ok)console.error(\"HubSpot submission failed\",await retry.text());}catch(error){console.error(\"HubSpot submission failed\",error);}}const handledEvents=new WeakSet;// Only forms with name and email fields go to HubSpot; the Contact form is the one with a Message field\nfunction hubSpotFormIdFor(form){if(!form.querySelector('[name=\"Email\"]')||!form.querySelector('[name=\"First name\"]'))return null;return form.querySelector('[name=\"Message\"]')?CONTACT_FORM_ID:DEMO_FORM_ID;}/**\n * Apply to the form layer. Sends each submission to HubSpot as well,\n * without changing the form's design or its existing Framer submission.\n */export function withHubSpotSubmit(Component){return props=>{useEffect(()=>{function handleSubmit(event){// One listener per rendered form copy (e.g. per breakpoint); send each submit once\nif(handledEvents.has(event))return;handledEvents.add(event);const form=event.target;if(!(form instanceof HTMLFormElement))return;const formId=hubSpotFormIdFor(form);if(!formId)return;const data=new FormData(form);if(!String(data.get(\"Email\")??\"\").trim())return;void submitToHubSpot(data,formId);}document.addEventListener(\"submit\",handleSubmit,true);return()=>document.removeEventListener(\"submit\",handleSubmit,true);},[]);return /*#__PURE__*/_jsx(Component,{...props});};}\nexport const __FramerMetadata__ = {\"exports\":{\"withHubSpotSubmit\":{\"type\":\"reactHoc\",\"name\":\"withHubSpotSubmit\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./HubSpotForm.map"],"mappings":"gIACmJ,SAAS,EAAY,EAAO,CAAC,MAAM,iEAAiE,EAAU,GAAG,GAAS,CAGrH,SAAS,GAAkB,CAAC,IAAM,EAAM,SAAS,OAAO,MAAM,8BAA8B,EAAE,OAAO,EAAM,EAAM,GAAG,IAAA,EAAU,CAAC,SAAS,EAAa,EAAK,EAAK,CAAC,EAAE,CAAC,IAAM,EAAO,OAAO,QAAQ,CAAS,CAAC,CAAC,QAAQ,EAAE,KAAY,CAAC,EAAK,SAAS,CAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAW,MAAa,CAAC,aAAa,MAAM,KAAK,EAAS,MAAM,OAAO,EAAK,IAAI,CAAU,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,GAAO,EAAM,QAAQ,EAAE,EAAQ,EAAa,EAAK,IAAI,CAAa,EAAQ,EAAU,IAAe,MAAM,IAAe,SAAS,IAAe,MAAY,EAAQ,CAAC,QAAQ,EAAO,SAAS,KAAK,SAAS,SAAS,KAAK,EAAQ,EAAK,EAAiB,EAA4B,OAAvB,IAAK,EAAQ,KAAK,GAAW,CAAC,SAAO,UAAQ,GAAG,GAAW,CAAC,oBAAoB,CAAC,QAAQ,CAAC,iBAAiB,GAAK,KAAK,CAAY,CAAC,CAAC,CAAC,CAAE,CAAC,eAAe,EAAgB,EAAK,EAAO,CAAC,IAAM,EAAK,GAAM,MAAM,EAAY,CAAM,EAAE,CAAC,OAAO,OAAO,QAAQ,CAAC,eAAe,kBAAkB,EAAE,KAAK,KAAK,UAAU,CAAI,EAAE,UAAU,EAAI,CAAC,EAAE,GAAG,CAAC,IAAM,EAAS,MAAM,EAAK,EAAa,CAAI,CAAC,EAAE,GAAG,EAAS,GAAG,OAAO,QAAQ,KAAK,kEAAkE,MAAM,EAAS,KAAK,CAAC,EAAE,IAAM,EAAM,MAAM,EAAK,EAAa,EAAK,CAAmB,CAAC,EAAM,EAAM,IAAG,QAAQ,MAAM,4BAA4B,MAAM,EAAM,KAAK,CAAC,CAAE,OAAO,EAAM,CAAC,QAAQ,MAAM,4BAA4B,CAAK,CAAE,CAAC,CACl8C,SAAS,EAAiB,EAAK,CAAkG,MAA9F,CAAC,EAAK,cAAc,gBAAgB,GAAG,CAAC,EAAK,cAAc,qBAAqB,EAAS,KAAY,EAAK,cAAc,kBAAkB,EAAE,EAAgB,CAAa,CAGzM,SAAgB,EAAkB,EAAU,CAAC,MAAO,KAAQ,MAAc,CAAC,SAAS,EAAa,EAAM,CAC1G,GAAG,EAAc,IAAI,CAAK,EAAE,OAAO,EAAc,IAAI,CAAK,EAAE,IAAM,EAAK,EAAM,OAAO,GAAG,EAAE,aAAgB,iBAAiB,OAAO,IAAM,EAAO,EAAiB,CAAI,EAAE,GAAG,CAAC,EAAO,OAAO,IAAM,EAAK,IAAI,SAAS,CAAI,EAAM,OAAO,EAAK,IAAI,OAAO,GAAG,EAAE,CAAC,CAAC,KAAK,GAAS,EAAqB,EAAK,CAAM,CAAE,CAAuD,OAAtD,SAAS,iBAAiB,SAAS,EAAa,EAAI,MAAY,SAAS,oBAAoB,SAAS,EAAa,EAAI,CAAE,EAAE,CAAC,CAAC,EAAsB,EAAK,EAAU,CAAC,GAAG,CAAK,CAAC,EAAI,qCAT9a,IAA6B,EACjE,EAAU,YAAkB,EAAa,uCAA6C,EAAgB,uCACtG,EAAU,CAAC,aAAa,YAAY,YAAY,WAAW,MAAM,QAAQ,QAAQ,UAAU,YAAY,WAAW,QAAQ,UAAU,eAAe,eAAe,QAAQ,SAAS,EAEnL,EAAoB,CAAC,eAAe,UAAU,UAAU,EAAQ,EAAc,iBAAuB,EAAa,gCAAi1C,EAAc,IAAI"}