{"version":3,"file":"submitResolver.DBMA0tSA.mjs","names":["row","ok","data","serverCid","__legacyOverrideHOC_DataObserverContext","_jsx"],"sources":["https:/framerusercontent.com/modules/bo63fvHZKV4exl4AzKnv/ZbRHXGP6aKY6bR4HgIpJ/submitResolver.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect}from\"react\";/** Intake webhook (n8n) — Heart Check */const INTAKE_URL=\"https://dev.jonaswilbert.com/webhook/67ed9819-1922-48a4-8963-bb5bbc759192\";/** Fixed ref: Heart Check only */const QUIZ_REF=\"heart-check\";/* ======================\n   Small DOM/utility helpers\n   ====================== */const getForm=()=>document.querySelector('form[data-framer-component-type=\"Form\"]')||document.querySelector(\"form\")||null;const getHiddenCIDInput=form=>(form?.querySelector('input[name=\"client_id\"]'))||null;const collectAnswers=form=>{const fd=new FormData(form);const answers={};fd.forEach((v,k)=>answers[k]=typeof v===\"string\"?v:String(v));return answers;};const getStoredCid=()=>{try{return localStorage.getItem(\"cc_cid\")||null;}catch{return null;}};const setStoredCid=cid=>{try{localStorage.setItem(\"cc_cid\",cid);}catch{}};const setHiddenCid=(input,cid)=>{if(input)input.value=cid;};const isUuid=s=>!!s&&/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(s);const makeUuid=()=>crypto?.randomUUID?.()??`cid_${Date.now()}_${Math.random().toString(36).slice(2,10)}`;const makeSubmissionId=()=>crypto?.randomUUID?.()??`sub_${Date.now()}_${Math.random().toString(36).slice(2,10)}`;const redirectWith=(finalCid,subId)=>{const params=new URLSearchParams;params.set(\"ref\",QUIZ_REF);params.set(\"sub\",subId)// always include submission id\n;if(finalCid)params.set(\"cid\",finalCid);location.replace(`/heart-check/loading?${params.toString()}`);};/* ======================\n   Transport helpers\n   ====================== */async function postIntakeFetch(payload,timeoutMs=3e3){try{const ctrl=new AbortController;const timer=setTimeout(()=>ctrl.abort(),timeoutMs);const res=await fetch(INTAKE_URL,{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify(payload),keepalive:true,cache:\"no-store\",signal:ctrl.signal});clearTimeout(timer);if(!res.ok)return{ok:false};const data=await res.json().catch(()=>undefined);return{ok:true,data};}catch{return{ok:false};}}function beaconIntake(payload){try{if(navigator.sendBeacon&&INTAKE_URL.startsWith(\"https://\")){const blob=new Blob([JSON.stringify(payload)],{type:\"application/json\"});return navigator.sendBeacon(INTAKE_URL,blob);}}catch{}return false;}/* ======================\n   Main override\n   ====================== */export function FastRedirectAfterSubmit(){useEffect(()=>{const BIND_KEY=\"__cc_quiz_bound\";if(window[BIND_KEY])return;window[BIND_KEY]=true;const form=getForm();if(!form)return;let fired=false;const onSubmit=async _e=>{if(fired)return;fired=true;const answers=collectAnswers(form);const hiddenInput=getHiddenCIDInput(form);// ---- Submission ID for idempotency and loader fallback\nconst submissionId=makeSubmissionId();// ---- CID priority: hidden -> localStorage\nlet cidSource=\"none\";let finalCid=null;const hiddenCid=(answers[\"client_id\"]||hiddenInput?.value||\"\").toString().trim();if(isUuid(hiddenCid)){finalCid=hiddenCid;cidSource=\"hidden\";}else{const stored=getStoredCid();if(isUuid(stored)){finalCid=stored;cidSource=\"storage\";setHiddenCid(hiddenInput,finalCid);}}// ---- Build initial payload\nconst basePayload={ref:QUIZ_REF,client_id:finalCid,submission_id:submissionId,path:location.pathname,ts_client:Date.now(),answers,debug:{cid_source:cidSource,ua:navigator.userAgent,ts:Date.now()}};// ---- Case A: We already have a CID (hidden/storage) → fire webhook in background & redirect immediately\nif(finalCid){postIntakeFetch(basePayload,1500).then(({ok,data})=>{const row=ok&&(Array.isArray(data)?data[0]:data);if(row){try{const serverCid=(row?.client_id||\"\").toString().trim();if(isUuid(serverCid)&&serverCid!==finalCid){// Reconcile to server (authoritative)\nfinalCid=serverCid;setStoredCid(finalCid);setHiddenCid(hiddenInput,finalCid);// Optional URL correction without reload (if still on the same page):\n// const u = new URL(location.href); u.searchParams.set('cid', finalCid); history.replaceState(null, '', u.toString());\n}if(row?.result_code)localStorage.setItem(\"cc_rc\",String(row.result_code));localStorage.setItem(\"cc_result\",JSON.stringify(row));if(row?.currency)localStorage.setItem(\"cc_currency\",String(row.currency));if(row?.country_param)localStorage.setItem(\"cc_country\",String(row.country_param));}catch{}}else{// best-effort backup\nbeaconIntake(basePayload);}}).catch(()=>{/* already navigating */});redirectWith(finalCid,submissionId);return;}// ---- Case B: No CID → wait for webhook response to obtain it\nconst{ok,data}=await postIntakeFetch(basePayload,4e3);let row=ok&&(Array.isArray(data)?data[0]:data)||null;// Prefer server-provided CID if present\nlet serverCid=(row?.client_id||\"\").toString().trim();if(isUuid(serverCid)){finalCid=serverCid;cidSource=\"response\";}// If still no CID, generate one so client+loader stay aligned; send patched beacon\nif(!finalCid){finalCid=makeUuid();cidSource=\"generated\";const patched={...basePayload,client_id:finalCid,debug:{...basePayload.debug,cid_source:cidSource}};beaconIntake(patched);}// Persist + surface to hidden field\nsetStoredCid(finalCid);setHiddenCid(hiddenInput,finalCid);// Persist other optional fields for UX\ntry{if(row?.result_code)localStorage.setItem(\"cc_rc\",String(row.result_code));if(row)localStorage.setItem(\"cc_result\",JSON.stringify(row));if(row?.currency)localStorage.setItem(\"cc_currency\",String(row.currency));if(row?.country_param)localStorage.setItem(\"cc_country\",String(row.country_param));}catch{}redirectWith(finalCid,submissionId);};// Bind submit (capture to beat other handlers)\nform.addEventListener(\"submit\",onSubmit,{capture:true});// Some libs emit 'formdata' without a classic submit\nconst onFormData=()=>{if(!fired)onSubmit(new Event(\"submit\"));};form.addEventListener(\"formdata\",onFormData,{capture:true});// Last-resort beacon on pagehide if submission didn’t fire\nconst onPageHide=()=>{if(fired)return;try{const submissionId=makeSubmissionId();const answers=collectAnswers(form);const hiddenInput=getHiddenCIDInput(form);const hiddenCid=(answers[\"client_id\"]||hiddenInput?.value||\"\").toString().trim();const stored=getStoredCid();const cid=isUuid(hiddenCid)?hiddenCid:isUuid(stored)?stored:null;const payload={ref:QUIZ_REF,client_id:cid,submission_id:submissionId,path:location.pathname,ts_client:Date.now(),answers,debug:{cid_source:cid?cid===hiddenCid?\"hidden\":\"storage\":\"none\",ua:navigator.userAgent,ts:Date.now()}};beaconIntake(payload);}catch{}};addEventListener(\"pagehide\",onPageHide,{once:true});return()=>{form.removeEventListener(\"submit\",onSubmit,{capture:true});form.removeEventListener(\"formdata\",onFormData,{capture:true});removeEventListener(\"pagehide\",onPageHide);};},[]);return{};}import{useContext as __legacyOverrideHOC_useContext}from\"react\";import{DataObserverContext as __legacyOverrideHOC_DataObserverContext}from\"framer\";export function withFastRedirectAfterSubmit(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...FastRedirectAfterSubmit(props)});};}withFastRedirectAfterSubmit.displayName=\"FastRedirectAfterSubmit\";\nexport const __FramerMetadata__ = {\"exports\":{\"withFastRedirectAfterSubmit\":{\"type\":\"reactHoc\",\"name\":\"withFastRedirectAfterSubmit\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"FastRedirectAfterSubmit\":{\"type\":\"override\",\"name\":\"FastRedirectAfterSubmit\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./submitResolver.map"],"mappings":"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"}