{"version":3,"file":"HubSpotForm.DNREDssH.mjs","names":["useRef","eventType"],"sources":["https:/framerusercontent.com/modules/RHc6vUHHhFhDYysM02gb/Nfz8uhHn7qBwShK6qOV5/HubSpotForm.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef}from\"react\";import{addPropertyControls,ControlType}from\"framer\";const waitForAbsId=(timeout=5e3)=>{return new Promise((resolve,reject)=>{// If absId is already available, resolve immediately\nif(window.absId){console.log(\"waitForAbsId: absId is already available:\",window.absId);resolve(window.absId);return;}console.log(\"waitForAbsId: absId not available yet. Polling...\");const checkInterval=setInterval(()=>{if(window.absId){clearInterval(checkInterval);console.log(\"waitForAbsId: absId is now available:\",window.absId);resolve(window.absId);}},100)// Poll every 100ms\n;// Timeout after specified duration\nsetTimeout(()=>{clearInterval(checkInterval);const error=new Error(\"absId did not become available in time\");console.error(\"waitForAbsId:\",error);reject(error);},timeout);});};export function HubspotFormEmbed({portalId,formId,hiddenFields,goalName,goalProperties=[],zukoFormId}){const formRef=useRef(null);useEffect(()=>{if(!portalId||!formId)return;const createHubspotForm=()=>{if(window[\"hbspt\"]){var _formRef_current;window[\"hbspt\"].forms.create({portalId:String(portalId),formId:formId,target:`#${(_formRef_current=formRef.current)===null||_formRef_current===void 0?void 0:_formRef_current.id}`,onFormReady:async function($form){try{// Wait for absId to be available before creating the form\nconst absId=await waitForAbsId();console.log(\"Creating HubSpot form with absId:\",absId);// Update the form with absId\naddOrUpdateHiddenField($form,\"absId\",absId);updateHsContext($form,\"onFormReady\");// Force HubSpot to recognize new hidden fields\n$form.dispatchEvent(new Event(\"change\",{bubbles:true}));}catch(error){console.error(\"Failed to initialize form with absId:\",error);}// Setup Zuko tracking if needed\nif(zukoFormId)zukoTracking($form,zukoFormId);},onFormSubmit:function($form){trackGoal();if(zukoFormId&&window.Zuko)Zuko.trackForm({slug:zukoFormId}).trackEvent(Zuko.COMPLETION_EVENT);}});}else{console.warn(\"HubSpot forms library not found in window.\");}};// Function to add or update a hidden field in the form\nconst addOrUpdateHiddenField=(formNode,fieldName,value)=>{let inputField=formNode.querySelector(`input[name=\"${fieldName}\"]`);if(inputField){inputField.value=value;}else{const newHiddenField=document.createElement(\"input\");newHiddenField.type=\"hidden\";newHiddenField.name=fieldName;newHiddenField.value=value;formNode.appendChild(newHiddenField);}};const zukoTracking=($form,slug)=>{if(window.Zuko){// Zuko.trackForm({ slug }).trackEvent(Zuko.FORM_VIEW_EVENT)\nfor(const eventType of window.Zuko.eventTypes){$form.addEventListener(eventType,({type:eventType,target:{tagName,type,name}})=>{const element=document.createElement(tagName);element.name=name;try{element.type=type;}catch(_){// Ignore\n}window.Zuko.trackForm({slug}).trackEvent({type:eventType,target:element});});}}};// Function to update `hs_context` with custom fields on `onFormSubmit`\nconst updateHsContext=($form,event)=>{const absId=window.absId||\"\";// Locate the `hs_context` hidden input field within the real form element\nconst hsContextField=$form.querySelector(`input[name=\"hs_context\"]`);if(hsContextField){try{// Parse the existing `hs_context` JSON string into an object\nlet hsContextData=JSON.parse(hsContextField.value||\"{}\");// Inject the `absId` into the context and log it\nhsContextData.absId=absId;// Convert the `hiddenFields` array into a key-value object and inject into hsContext\nhiddenFields.forEach(({key,value})=>{if(key){hsContextData[key]=value;console.log(`[${event}] Added custom hidden field: ${key} = ${value}`);}});// Convert back to JSON string and set the modified value\nhsContextField.value=JSON.stringify(hsContextData);}catch(error){console.error(`[${event}] Failed to update hs_context field. Error:`,error);}}else{console.warn(`[${event}] hs_context hidden field not found in the form.`);}};// Function to track an ABsmartly goal\nconst trackGoal=()=>{if(window.ABsmartlyContext&&goalName){const propertiesObject=convertArrayToObject(goalProperties);try{window.ABsmartlyContext.track(goalName,propertiesObject||{});}catch(error){console.error(\"Failed to track goal. Error:\",error);}}else{console.warn(\"ABsmartlyContext not found or goalName is missing.\");}};// Convert a list of key-value pairs to an object\nconst convertArrayToObject=pairs=>{const result={};pairs.forEach(({key,value})=>{if(key){result[key]=value;}});return result;};// Function to load a script\nconst loadScript=src=>{return new Promise((resolve,reject)=>{const script=document.createElement(\"script\");script.src=src;script.async=true;script.onload=()=>resolve();script.onerror=error=>reject(error);document.body.appendChild(script);});};const initializeForm=async()=>{try{// Generate a unique ID for the form container\nif(formRef.current){formRef.current.id=`hubspot-form-${Math.random().toString(36).substring(2,9)}`;console.log(\"Form container ID set:\",formRef.current.id);}// Load scripts in parallel\nconst scriptsToLoad=[];if(!window[\"hbspt\"]){console.log(\"Loading HubSpot script...\");scriptsToLoad.push(loadScript(\"https://js.hsforms.net/forms/v2.js\"));}if(zukoFormId){console.log(\"Loading Zuko script...\");scriptsToLoad.push(loadScript(\"https://assets.zuko.io/js/v2/client.min.js\"));}// Wait for all scripts to load\nif(scriptsToLoad.length>0){await Promise.all(scriptsToLoad);console.log(\"All scripts loaded successfully\");}if(zukoFormId){const zukoTrackingScript=document.createElement(\"script\");zukoTrackingScript.textContent=`Zuko.trackForm({target:document.body,slug:\"${zukoFormId}\"}).trackEvent(Zuko.FORM_VIEW_EVENT);`;document.body.appendChild(zukoTrackingScript);}// Create the HubSpot form\ncreateHubspotForm();}catch(error){console.error(\"Failed to initialize form:\",error);}};initializeForm();},[portalId,formId,hiddenFields,goalName,goalProperties,zukoFormId]);return /*#__PURE__*/_jsx(\"div\",{ref:formRef,style:{width:\"100%\",height:\"auto\"}});}// Property controls for the component in Framer\naddPropertyControls(HubspotFormEmbed,{portalId:{type:ControlType.Number,title:\"Portal ID\",defaultValue:20189991},formId:{type:ControlType.String,title:\"Form ID\"},hiddenFields:{type:ControlType.Array,title:\"Hidden Fields\",control:{type:ControlType.Object,controls:{key:{type:ControlType.String,title:\"Field Name\"},value:{type:ControlType.String,title:\"Value\"}}},defaultValue:[]},goalName:{type:ControlType.String,title:\"Goal Name\",defaultValue:\"form_submit\"},goalProperties:{type:ControlType.Array,title:\"Goal Properties\",control:{type:ControlType.Object,controls:{key:{type:ControlType.String,title:\"Property Key\"},value:{type:ControlType.String,title:\"Property Value\"}}},defaultValue:[]},zukoFormId:{type:ControlType.String,title:\"Zuko Form ID\"}});HubspotFormEmbed.defaultProps={formId:\"48243ec1-df0f-4cd3-bc86-db322278f098\"};\nexport const __FramerMetadata__ = {\"exports\":{\"HubspotFormEmbed\":{\"type\":\"reactComponent\",\"name\":\"HubspotFormEmbed\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./HubSpotForm.map"],"mappings":"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"}