{"version":3,"file":"segmentTracking.CQTLDNPc.mjs","names":["__legacyOverrideHOC_DataObserverContext","_jsx"],"sources":["https:/framerusercontent.com/modules/2f54BFZiDAwn9TmUdk5M/YGB7KWLm1MXRt3CeK4ur/segmentTracking.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect}from\"react\";export function withButtonTracking(Component){return(props,ref)=>{const handleClick=event=>{// Prevent bubbling to any parent click-handlers (if desired)\nevent.stopPropagation();// Extract the destination URL\nconst element=event.currentTarget;const anchor=element.closest(\"a\");const destination=anchor?.getAttribute(\"href\")??\"unknown\";// Build your payload\nconst payload={source:\"withButtonTracking\",url:window.location.href,path:window.location.pathname,cta_type:\"button\",cta_location:\"hero\",destination,text:element.querySelector(\".framer-text\")?.textContent?.trim()||\"Unnamed CTA\",name:Component.displayName||\"Unknown\"};// Fire analytics once\nconsole.log(\"CTA Clicked\",payload);window.analytics?.track(\"CTA Clicked\",payload);// Call the original onClick, if any\nprops.onClick?.(event);};return /*#__PURE__*/_jsx(Component,{ref:ref,...props,onClick:handleClick});};}export function withTopNavButtonTracking(Component){return props=>{const handleClick=event=>{// Extract the destination URL\nconst element=event.currentTarget;const anchorElement=element.closest(\"a\")// Find the closest <a> tag\n;const destination=anchorElement?.getAttribute(\"href\")||\"unknown\";// Extract the button's properties\nconst url=window.location.href// Current page URL\n;const path=window.location.pathname;const text=element.querySelector(\".framer-text\")?.textContent?.trim()||\"Unnamed CTA\"// Button text\n;const name=Component.displayName||\"Unknown\"// Button name or data attribute\n;const payload={url,path,cta_type:\"button\",cta_location:\"top nav\",destination,text,name};console.log(\"CTA Clicked (Top Nav)\",payload);// Track the event\nwindow.analytics.track(\"CTA Clicked\",payload);props?.onClick?.();};return /*#__PURE__*/_jsx(Component,{...props,onClick:handleClick});};}// ─── HubSpot config ──────────────────────────────────────────────────────────\nconst HUBSPOT_PORTAL_ID=\"20491267\";const HUBSPOT_FORM_ID=\"fe8af7ec-fbb3-4a57-b48f-62aa3c3fb14d\";const HUBSPOT_ENDPOINT=`https://api.hsforms.com/submissions/v3/integration/submit/${HUBSPOT_PORTAL_ID}/${HUBSPOT_FORM_ID}`;// ─── Field map (HubSpot → Segment) ───────────────────────────────────────────\nconst FIELD_MAP={firstname:\"first_name\",lastname:\"last_name\",email:\"work_email\",how_many_people_at_your_company_use_reforge_:\"org_team_size\",product_of_interest__forced_choice_:\"products_of_interest\",company:\"company_name\"};function extractFields(data){if(Array.isArray(data))return data;if(Array.isArray(data?.fields))return data.fields;if(typeof data?.submissionValues===\"object\"){return Object.entries(data.submissionValues).map(([name,value])=>({name,value:String(value)}));}return[];}function getCookie(name){return document.cookie.split(\";\").map(c=>c.trim()).find(c=>c.startsWith(name+\"=\"))?.split(\"=\")[1];}// ─── Segment wrappers (unchanged) ────────────────────────────────────────────\nfunction trackR4TGetInTouchSubmitted(props){console.info(\"[Segment] R4T Get in Touch Submitted\",props);window.analytics?.track?.(\"R4T Get in Touch Submitted\",props);}function trackMarketingFormSubmitted(payload){console.info(\"[Segment] Marketing Form Submitted\",payload);window.analytics?.track?.(\"Marketing Form Submitted\",payload);}// ─── NEW: Send data to HubSpot form ──────────────────────────────────────────\nasync function submitToHubSpot(fields){const hutk=getCookie(\"hubspotutk\");const body={fields,context:{hutk,pageUri:window.location.href,pageName:document.title}};try{console.log(HUBSPOT_ENDPOINT,{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify(body)});const res=await fetch(HUBSPOT_ENDPOINT,{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify(body)});if(!res.ok){const text=await res.text();console.error(`[HubSpot] Submission failed: ${res.status}`,text);}else{console.info(\"[HubSpot] Form submission succeeded\");}}catch(err){console.error(\"[HubSpot] Network error submitting form\",err);}}// ─── The Override ───────────────────────────────────────────────────────────\nexport function withTrackGetInTouch(){useEffect(()=>{if(typeof window===\"undefined\")return;const handler=evt=>{if(evt.data?.type!==\"hsFormCallback\"||evt.data?.eventName!==\"onFormSubmitted\")return;// 1) Normalize HS payload → [{name,value}, …]\nconst fields=extractFields(evt.data.data);if(fields.length===0){console.warn(\"[Segment] No HubSpot fields found\",evt.data);return;}// 2) Build & fire R4T event\nconst lookup=Object.fromEntries(fields.map(f=>[f.name,f.value]));const r4tProps={};Object.entries(FIELD_MAP).forEach(([hsKey,sgKey])=>{if(lookup[hsKey]!=null)r4tProps[sgKey]=lookup[hsKey];});trackR4TGetInTouchSubmitted(r4tProps);// 3) Build & fire Marketing Form Submitted event\nconst formFields=Object.fromEntries(fields.map(f=>[f.name,f.value]));trackMarketingFormSubmitted({context:{page:{url:window.location.href,path:window.location.pathname}},traits:{},properties:{email:formFields.email,form_fields:formFields,form_id:evt.data.data.formId??\"unknown\",form_name:evt.data.data.formName??\"unknown\",form_type:\"page\",location:\"footer\",source:\"marketing site\",type:\"page\",url:window.location.href}});// 4) **NEW** – submit to HubSpot backend\n// void submitToHubSpot(fields) // fire-and-forget\n};window.addEventListener(\"message\",handler);return()=>window.removeEventListener(\"message\",handler);},[]);return{};}import{useContext as __legacyOverrideHOC_useContext}from\"react\";import{DataObserverContext as __legacyOverrideHOC_DataObserverContext}from\"framer\";export function withwithTrackGetInTouch(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...withTrackGetInTouch(props)});};}withwithTrackGetInTouch.displayName=\"withTrackGetInTouch\";\nexport const __FramerMetadata__ = {\"exports\":{\"withTopNavButtonTracking\":{\"type\":\"reactHoc\",\"name\":\"withTopNavButtonTracking\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withTrackGetInTouch\":{\"type\":\"override\",\"name\":\"withTrackGetInTouch\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withButtonTracking\":{\"type\":\"reactHoc\",\"name\":\"withButtonTracking\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withwithTrackGetInTouch\":{\"type\":\"reactHoc\",\"name\":\"withwithTrackGetInTouch\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./segmentTracking.map"],"mappings":"yLAAwE,SAAgB,EAAmB,EAAU,CAAC,OAAO,EAAM,IAAM,CAAC,IAAM,EAAY,GAAO,CACnK,EAAM,iBAAiB,CACvB,IAAM,EAAQ,EAAM,cAAsD,EAA3B,EAAQ,QAAQ,IAAI,EAA2B,aAAa,OAAO,EAAE,UAC9G,EAAQ,CAAC,OAAO,qBAAqB,IAAI,EAAO,SAAS,KAAK,KAAK,EAAO,SAAS,SAAS,SAAS,SAAS,aAAa,OAAO,cAAY,KAAK,EAAQ,cAAc,eAAe,EAAE,aAAa,MAAM,EAAE,cAAc,KAAK,EAAU,aAAa,UAAU,CACzQ,QAAQ,IAAI,cAAc,EAAQ,CAAC,EAAO,WAAW,MAAM,cAAc,EAAQ,CACjF,EAAM,UAAU,EAAM,EAAG,OAAoB,EAAK,EAAU,CAAK,MAAI,GAAG,EAAM,QAAQ,EAAY,CAAC,EAS6H,SAAS,EAAc,EAAK,CAAmO,OAA/N,MAAM,QAAQ,EAAK,CAAQ,EAAQ,MAAM,QAAQ,GAAM,OAAO,CAAQ,EAAK,OAAU,OAAO,GAAM,kBAAmB,SAAiB,OAAO,QAAQ,EAAK,iBAAiB,CAAC,KAAK,CAAC,EAAK,MAAU,CAAC,OAAK,MAAM,OAAO,EAAM,CAAC,EAAE,CAAQ,EAAE,CACve,SAAS,EAA4B,EAAM,CAAC,QAAQ,KAAK,uCAAuC,EAAM,CAAC,EAAO,WAAW,QAAQ,6BAA6B,EAAM,CAAE,SAAS,EAA4B,EAAQ,CAAC,QAAQ,KAAK,qCAAqC,EAAQ,CAAC,EAAO,WAAW,QAAQ,2BAA2B,EAAQ,CAE5U,SAAgB,GAAqB,CAKsE,OALrE,MAAc,CAAC,GAAU,IAAS,OAAY,OAAO,IAAM,EAAQ,GAAK,CAAC,GAAG,EAAI,MAAM,OAAO,kBAAkB,EAAI,MAAM,YAAY,kBAAkB,OAC7L,IAAM,EAAO,EAAc,EAAI,KAAK,KAAK,CAAC,GAAG,EAAO,SAAS,EAAE,CAAC,QAAQ,KAAK,oCAAoC,EAAI,KAAK,CAAC,OAC3H,IAAM,EAAO,OAAO,YAAY,EAAO,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAO,EAAS,EAAE,CAAC,OAAO,QAAQ,EAAU,CAAC,SAAS,CAAC,EAAM,KAAS,CAAI,EAAO,IAAQ,OAAK,EAAS,GAAO,EAAO,KAAS,CAAC,EAA4B,EAAS,CACpO,IAAM,EAAW,OAAO,YAAY,EAAO,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAA4B,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAO,SAAS,KAAK,KAAK,EAAO,SAAS,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,MAAM,EAAW,MAAM,YAAY,EAAW,QAAQ,EAAI,KAAK,KAAK,QAAQ,UAAU,UAAU,EAAI,KAAK,KAAK,UAAU,UAAU,UAAU,OAAO,SAAS,SAAS,OAAO,iBAAiB,KAAK,OAAO,IAAI,EAAO,SAAS,KAAK,CAAC,CAAC,EAEvX,OAA3C,EAAO,iBAAiB,UAAU,EAAQ,KAAW,EAAO,oBAAoB,UAAU,EAAQ,EAAG,EAAE,CAAC,CAAO,EAAE,CAAqJ,SAAgB,EAAwB,EAAE,CAAC,MAAO,KAAQ,EAA+BA,EAAwC,CAAQC,EAAK,EAAE,CAAC,GAAG,EAAM,GAAG,EAAoB,EAAM,CAAC,CAAC,yBAtBtZ,IAA6B,IAsBgM,CARlQ,EAAU,CAAC,UAAU,aAAa,SAAS,YAAY,MAAM,aAAa,6CAA6C,gBAAgB,oCAAoC,uBAAuB,QAAQ,eAAe,CAQsO,EAAwB,YAAY"}