{"version":3,"file":"WithCustomHandlerFreeGuide.DmAPotv8.mjs","names":["useRef","__esmMin","init_ssg_sandbox_shims","init_npm_react_18_3_1","de","window","init_jsx_runtime","J","ce","withCustomFormSubmit","WrappedComponent","internalFormRef","formRef","ref","handleSubmit","event","form","submitButton","handleFormSubmission","props","Component","extractFilenameFromHeader","extractFilenameFromUrl","downloadFile","submitToPardot","init_WithCustomHandlerFreeGuide","match","disposition","url","response","downloadUrl","filename","blob","objectUrl","link","error","handlerUrl","formData","entries","pardotHandlerUrl","downloadLink","key","value","stringValue","onSuccess"],"sources":["https:/framerusercontent.com/modules/0tifIRzRuLE2Gq1HJbkz/fVQB1qCGbGTdBDhWoxpg/WithCustomHandlerFreeGuide.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{useRef,useEffect,forwardRef}from\"react\";const extractFilenameFromHeader=disposition=>{const match=disposition.match(/filename\\*?=(?:UTF-8'')?[\"']?([^\"';]+)[\"']?/i);return match?.[1]?decodeURIComponent(match[1]):\"download\";};const extractFilenameFromUrl=url=>{return url.split(\"/\").pop()||\"download\";};const downloadFile=async downloadUrl=>{try{const response=await fetch(downloadUrl);if(!response.ok){throw new Error(`Download failed: ${response.statusText}`);}const disposition=response.headers.get(\"Content-Disposition\");let filename=\"download\";if(disposition?.includes(\"filename=\")){filename=extractFilenameFromHeader(disposition);}else{filename=extractFilenameFromUrl(downloadUrl);}const blob=await response.blob();const objectUrl=URL.createObjectURL(blob);const link=document.createElement(\"a\");link.href=objectUrl;link.download=filename;document.body.appendChild(link);link.click();document.body.removeChild(link);URL.revokeObjectURL(objectUrl);}catch(error){window.open(downloadUrl,\"_blank\",\"noopener,noreferrer\");throw error;}};const submitToPardot=async(handlerUrl,formData)=>{try{const response=await fetch(handlerUrl,{method:\"POST\",headers:{\"Content-Type\":\"application/x-www-form-urlencoded\"},body:formData,mode:\"no-cors\"});if(response.type!==\"opaque\"&&!response.ok){throw new Error(`Pardot submission failed: ${response.statusText}`);}}catch(error){console.error(\"Pardot submission failed:\",error);throw error;}};const handleFormSubmission=async(form,onSuccess)=>{const formData=new FormData(form);const entries=new URLSearchParams;let pardotHandlerUrl=\"\";let downloadLink=\"\";for(const[key,value]of formData.entries()){const stringValue=String(value);entries.append(key,stringValue);if(key===\"pardotHandler\"){pardotHandlerUrl=stringValue;}else if(key===\"downloadLink\"){downloadLink=stringValue;}}try{if(pardotHandlerUrl){await submitToPardot(pardotHandlerUrl,entries);}window.dataLayer=window.dataLayer||[];window.dataLayer.push({event:\"GAEvent\",event_params:{eventCategory:\"form\",eventAction:\"success\",eventLabel:\"freeguide\",data:\"form_success_freeguide\"}});window?.analytics?.formData(\"form\",Object.fromEntries(entries));if(downloadLink){onSuccess?.();await downloadFile(downloadLink);}}catch(error){console.error(\"Form submission error:\",error);onSuccess?.();}};export function withCustomFormSubmit(Component){const WrappedComponent=/*#__PURE__*/forwardRef((props,ref)=>{const internalFormRef=useRef(null);const formRef=ref||internalFormRef;const handleSubmit=async event=>{event.preventDefault();const form=formRef.current;if(!form){console.warn(\"Form reference is null - cannot submit\");return;}const submitButton=form.querySelector('button[type=\"submit\"], input[type=\"submit\"]');if(submitButton){submitButton.disabled=true;}await handleFormSubmission(form,props.onSuccess);};useEffect(()=>{const form=formRef.current;if(!form){console.warn(\"Form not found during effect setup\");return;}form.addEventListener(\"submit\",handleSubmit);return()=>{form.removeEventListener(\"submit\",handleSubmit);};},[props.onSuccess]);return /*#__PURE__*/_jsx(Component,{...props,ref:formRef});});WrappedComponent.displayName=`withCustomFormSubmit(${Component.displayName||Component.name||\"Component\"})`;return WrappedComponent;}\nexport const __FramerMetadata__ = {\"exports\":{\"withCustomFormSubmit\":{\"type\":\"reactHoc\",\"name\":\"withCustomFormSubmit\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./WithCustomHandlerFreeGuide.map"],"mappings":"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"}