{"version":3,"file":"HS_Form_Component.DXFgvffv.mjs","names":["useRef","useState","__esmMin","init_npm_react_18_3_1","window","init_ssg_sandbox_shims","ce","init_jsx_runtime","c","p","_e","de","addPropertyControls","useTracking","ControlType","RenderTarget","init_framer_CaDWdxiz","HS_Form_Component","props","track","trackedRef","boxRef","mounted","setMounted","isCanvas","ready","setReady","visible","fadeIn","show","onReady","detail","event","formId","loadTimer","onFrameLoad","watchFrame","frame","observer","fallback","FADE_FALLBACK_MS","trackingId","onSuccess","portalId","region","src","script","init_HS_Form_Component"],"sources":["https:/framerusercontent.com/modules/U3LblWFuwe9ucjCgFqqo/cfwnvxsYoq5ytA9pJM6Q/HS_Form_Component.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useRef,useState}from\"react\";import{addPropertyControls,ControlType,RenderTarget,useTracking}from\"framer\";/**\n * HubSpot form embed for Framer.\n *\n * Requires this tag in Site Settings -> Custom Code -> start of <head>:\n * <script src=\"https://js.hsforms.net/forms/embed/40882779.js\" defer></script>\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight auto\n */// How long to wait for HubSpot before showing the form anyway, so a\n// missed ready event can never leave the form invisible.\nconst FADE_FALLBACK_MS=4e3;export default function HS_Form_Component(props){const{portalId,formId,region,minHeight,trackingId,fadeIn}=props;const track=useTracking();const trackedRef=useRef(false);const boxRef=useRef(null);// Render the container only after mount. If HubSpot fills a\n// server-rendered container before Framer hydrates, React rebuilds the\n// subtree and destroys the form for good.\nconst[mounted,setMounted]=useState(false);useEffect(()=>setMounted(true),[]);// Opt-in fade: stay hidden until HubSpot says this form is drawn.\n// The canvas always shows the form so it stays editable.\nconst isCanvas=RenderTarget.current()===RenderTarget.canvas;const[ready,setReady]=useState(false);const visible=!fadeIn||isCanvas||ready;useEffect(()=>{if(!fadeIn||isCanvas||!mounted||ready)return;const show=()=>setReady(true);const onReady=event=>{const detail=event.detail;if(!detail||detail.formId===formId)show();};window.addEventListener(\"hs-form-event:on-ready\",onReady);// Backup signal: the form's iframe finished loading.\nlet loadTimer=0;const onFrameLoad=()=>{loadTimer=window.setTimeout(show,300);};const watchFrame=()=>{const frame=boxRef.current?.querySelector(\"iframe\");if(!frame)return false;frame.addEventListener(\"load\",onFrameLoad,{once:true});return true;};const observer=new MutationObserver(()=>{if(watchFrame())observer.disconnect();});if(!watchFrame()&&boxRef.current){observer.observe(boxRef.current,{childList:true,subtree:true});}const fallback=window.setTimeout(show,FADE_FALLBACK_MS);return()=>{window.removeEventListener(\"hs-form-event:on-ready\",onReady);observer.disconnect();window.clearTimeout(loadTimer);window.clearTimeout(fallback);};},[fadeIn,isCanvas,mounted,ready,formId]);useEffect(()=>{if(!trackingId||!formId)return;const onSuccess=event=>{const detail=event.detail;if(!detail||detail.formId!==formId)return;if(trackedRef.current)return;trackedRef.current=true;track(trackingId);};window.addEventListener(\"hs-form-event:on-submission:success\",onSuccess);return()=>window.removeEventListener(\"hs-form-event:on-submission:success\",onSuccess);},[formId,trackingId,track]);useEffect(()=>{trackedRef.current=false;},[portalId,formId,region]);// Load the embed script if it isn't already on the page. No-op on the\n// published site, where the <head> tag above provides it. This exists for\n// the Framer canvas and preview, which don't run Custom Code.\nuseEffect(()=>{if(!portalId)return;const src=`https://js.hsforms.net/forms/embed/${portalId}.js`;if(document.querySelector(`script[src=\"${src}\"]`))return;const script=document.createElement(\"script\");script.src=src;script.defer=true;document.body.appendChild(script);},[portalId]);if(!portalId||!formId)return null;const fadeStyle=fadeIn?{opacity:visible?1:0,transform:visible?\"none\":\"translateY(16px)\",transition:\"opacity 0.6s cubic-bezier(0.22, 1, 0.36, 1), transform 0.6s cubic-bezier(0.22, 1, 0.36, 1)\"}:{};return /*#__PURE__*/_jsxs(\"div\",{ref:boxRef,className:\"hs-form-fade\",style:{width:\"100%\",minHeight,...fadeStyle},children:[/*#__PURE__*/_jsx(\"style\",{children:`@media (prefers-reduced-motion: reduce){.hs-form-fade{transition:none!important;transform:none!important}}`}),mounted&&/*#__PURE__*/_jsx(\"div\",{className:\"hs-form-frame\",\"data-portal-id\":portalId,\"data-form-id\":formId,\"data-region\":region})]});}addPropertyControls(HS_Form_Component,{portalId:{title:\"Portal ID\",type:ControlType.String,placeholder:\"e.g. 40882779\"},formId:{title:\"Form ID\",type:ControlType.String,placeholder:\"e.g. 9fa498b8-...\"},region:{title:\"Region\",type:ControlType.Enum,options:[\"na1\",\"eu1\"],optionTitles:[\"North America (na1)\",\"Europe (eu1)\"]},trackingId:{title:\"Tracking\",type:ControlType.TrackingId},minHeight:{title:\"Min Height\",type:ControlType.Number,defaultValue:250,min:0,step:10,unit:\"px\"},fadeIn:{title:\"Fade In\",type:ControlType.Boolean,defaultValue:false,enabledTitle:\"On Ready\",disabledTitle:\"Off\",description:\"Fades the form in once HubSpot has drawn it.\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"HS_Form_Component\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./HS_Form_Component.map"],"mappings":"A,8NAU2B,SAAwBiB,EAAkB,EAAM,CAAC,GAAK,CAAC,WAAS,SAAO,SAAO,YAAU,aAAW,UAAQC,EAAYC,EAAMN,EAAY,EAAQO,EAAWpB,EAAO,EAAK,EAAQqB,EAAOrB,EAAO,IAAI,EAGxN,CAACsB,EAAQC,GAAYtB,EAAS,EAAK,EAAEK,MAAciB,EAAW,EAAI,EAAE,CAAC,CAAC,EAE3E,IAAMC,EAAST,EAAa,QAAQ,IAAIA,EAAa,OAAY,CAACU,EAAMC,GAAUzB,EAAS,EAAK,EAAQ0B,EAAQ,CAACC,GAAQJ,GAAUC,EAI4X,OAJtXnB,MAAc,CAAC,GAAG,CAACsB,GAAQJ,GAAU,CAACF,GAASG,EAAM,OAAO,IAAMI,MAASH,EAAS,EAAI,EAAQI,EAAQ,GAAO,CAAC,IAAMC,EAAOC,EAAM,QAAU,CAACD,GAAQA,EAAO,SAASE,IAAOJ,EAAK,CAAE,EAAEzB,EAAO,iBAAiB,yBAAyB0B,CAAO,EACvX,IAAII,EAAU,EAAQC,MAAgB,CAAC,EAAU/B,EAAO,WAAWyB,EAAK,GAAG,CAAE,EAAQO,MAAe,CAAC,IAAMC,EAAMhB,EAAO,SAAS,cAAc,QAAQ,EAAgF,OAA1EgB,GAAmBA,EAAM,iBAAiB,OAAOF,EAAY,CAAC,KAAK,EAAI,CAAC,EAAS,IAApE,EAAyE,EAAQG,EAAS,IAAI,qBAAqB,CAAIF,EAAW,GAAEE,EAAS,WAAW,CAAE,CAAC,EAAK,CAACF,EAAW,GAAGf,EAAO,SAASiB,EAAS,QAAQjB,EAAO,QAAQ,CAAC,UAAU,GAAK,QAAQ,EAAI,CAAC,EAAG,IAAMkB,EAASnC,EAAO,WAAWyB,EAAKW,CAAgB,EAAE,UAAU,CAACpC,EAAO,oBAAoB,yBAAyB0B,CAAO,EAAEQ,EAAS,WAAW,EAAElC,EAAO,aAAa8B,CAAS,EAAE9B,EAAO,aAAamC,CAAQ,CAAE,CAAE,EAAE,CAACX,EAAOJ,EAASF,EAAQG,EAAMQ,CAAM,CAAC,EAAE3B,MAAc,CAAC,GAAG,CAACmC,GAAY,CAACR,EAAO,OAAO,IAAMS,EAAU,GAAO,CAAC,IAAMX,EAAOC,EAAM,OAAWD,GAAQA,EAAO,SAASE,IAAiBb,EAAW,UAAe,EAAW,QAAQ,GAAKD,EAAMsB,CAAU,GAAE,EAA2E,OAAzErC,EAAO,iBAAiB,sCAAsCsC,CAAS,MAAYtC,EAAO,oBAAoB,sCAAsCsC,CAAS,CAAE,EAAE,CAACT,EAAOQ,EAAWtB,CAAK,CAAC,EAAEb,MAAc,CAAC,EAAW,QAAQ,EAAM,EAAE,CAACqC,EAASV,EAAOW,CAAM,CAAC,EAGznCtC,MAAc,CAAC,GAAG,CAACqC,EAAS,OAAO,IAAME,EAAI,sCAAsCF,EAAS,KAAK,GAAG,SAAS,cAAc,eAAeE,EAAI,GAAG,EAAE,OAAO,IAAMC,EAAO,SAAS,cAAc,QAAQ,EAAE,EAAO,IAAID,EAAI,EAAO,MAAM,GAAK,SAAS,KAAK,YAAYC,CAAM,CAAE,EAAE,CAACH,CAAQ,CAAC,EAAK,CAACA,GAAU,CAACV,EAAc,KAA6N,gBAAM,MAAM,CAAC,IAAIZ,EAAO,UAAU,eAAe,MAAM,CAAC,MAAM,OAAO,YAAU,GAAvRO,EAAO,CAAC,QAAQ,KAAY,UAAUD,EAAQ,OAAO,mBAAmB,WAAW,4FAA4F,EAAE,CAAC,CAAiH,EAAE,SAAS,CAAc,gBAAK,QAAQ,CAAC,SAAS,4GAA4G,CAAC,EAAEL,GAAsB,gBAAK,MAAM,CAAC,UAAU,gBAAgB,iBAAiBqB,EAAS,eAAeV,EAAO,cAAcW,CAAM,CAAC,CAAC,CAAC,CAAC,CAAE,C,oDAT74B,EAAiB,IAS63BhC,EAAoBK,EAAkB,CAAC,SAAS,CAAC,MAAM,YAAY,KAAKH,EAAY,OAAO,YAAY,eAAe,EAAE,OAAO,CAAC,MAAM,UAAU,KAAKA,EAAY,OAAO,YAAY,mBAAmB,EAAE,OAAO,CAAC,MAAM,SAAS,KAAKA,EAAY,KAAK,QAAQ,CAAC,MAAM,KAAK,EAAE,aAAa,CAAC,sBAAsB,cAAc,CAAC,EAAE,WAAW,CAAC,MAAM,WAAW,KAAKA,EAAY,UAAU,EAAE,UAAU,CAAC,MAAM,aAAa,KAAKA,EAAY,OAAO,aAAa,IAAI,IAAI,EAAE,KAAK,GAAG,KAAK,IAAI,EAAE,OAAO,CAAC,MAAM,UAAU,KAAKA,EAAY,QAAQ,aAAa,GAAM,aAAa,WAAW,cAAc,MAAM,YAAY,8CAA8C,CAAC,CAAC,C"}