{"version":3,"file":"HubSpotForm.BCAfca3K.mjs","names":["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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"}