{"version":3,"file":"HubSpotForm.DAjlrInm.mjs","names":["useRef"],"sources":["https:/framerusercontent.com/modules/VmWjO7A2Tjuczv0lNqAP/sVzM7DYsRP492F7X9PS5/HubSpotForm.js"],"sourcesContent":["// HubSpot Forms API – Multi-Form Override für Framer\n// Pro Formular gibt es unten eine eigene Override-Funktion (withHubSpot…).\n// Diese dem jeweiligen Form-Element unter Code Overrides zuweisen.\n// Die Sprache (DE/EN) wird automatisch anhand der URL erkannt.\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef}from\"react\";const PORTAL_ID=\"5531642\";const DEBUG=true// Nach erfolgreichem Rollout auf false setzen\n;function log(...args){if(DEBUG)console.log(\"[HubSpot Override]\",...args);}// Framer-Inputnamen → HubSpot interne Property-Namen.\n// Keys sind normalisiert: Kleinbuchstaben, ohne Leerzeichen/Unterstriche.\n// \"Phone Number\", \"phone_number\" und \"PhoneNumber\" matchen also alle.\nconst DEFAULT_FIELD_MAP={email:\"email\",name:\"firstname\",firstname:\"firstname\",vorname:\"firstname\",surname:\"lastname\",lastname:\"lastname\",nachname:\"lastname\",phone:\"phone\",phonenumber:\"phone\",telefon:\"phone\",company:\"company\",companyname:\"company\",firma:\"company\",country:\"country\",countryregion:\"country\",land:\"country\"};// Normalisiert einen Feldnamen: lowercase, ohne Leerzeichen/Unterstriche/Bindestriche\nfunction normalizeKey(key){return key.toLowerCase().replace(/[\\s_-]+/g,\"\");}function getHutk(){return document.cookie.match(/hubspotutk=([^;]+)/)?.[1];}async function submitToHubSpot(form,formGuid,fieldMap){const data=new FormData(form);const fields=[];data.forEach((value,key)=>{if(typeof value!==\"string\"||value.trim()===\"\")return;const mapped=fieldMap[normalizeKey(key)];if(!mapped)return;// Unbekannte Felder überspringen statt falsche Namen raten\nfields.push({name:mapped,value});});if(fields.length===0)return;try{const res=await fetch(`https://api.hsforms.com/submissions/v3/integration/submit/${PORTAL_ID}/${formGuid}`,{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},keepalive:true,body:JSON.stringify({fields,context:{hutk:getHutk(),pageUri:window.location.href,pageName:document.title}})});log(\"HubSpot-Antwort:\",res.status,await res.text());}catch(err){console.warn(\"HubSpot submission failed\",err);}}// Gemeinsame Logik: umhüllt die Komponente und hängt die Listener an.\n// guidByLocale: GUID pro Sprache – entschieden wird anhand der URL\n// (DE-Seiten liegen unter /de/, EN ohne Prefix).\nfunction wrapWithHubSpot(Component,guidByLocale,fieldMap=DEFAULT_FIELD_MAP){return props=>{const ref=useRef(null);useEffect(()=>{const form=ref.current?.querySelector(\"form\");if(!form){log(\"KEIN <form> im Override-Element gefunden!\");return;}log(\"Montiert, Formular gefunden:\",form);let lastSent=0;const send=trigger=>{// Doppelsendung verhindern (submit + click feuern evtl. beide)\nif(Date.now()-lastSent<2e3){log(\"\\xdcbersprungen (bereits gesendet), Trigger:\",trigger);return;}// Sprache anhand der URL entscheiden. Das html-lang-Attribut\n// ist auf den DE-Seiten unzuverlässig und wird nur geloggt.\nconst htmlLang=(document.documentElement.lang||\"\").toLowerCase();const isDE=/^\\/de(\\/|$)/.test(window.location.pathname);const guid=isDE?guidByLocale.de:guidByLocale.en;log(\"Trigger:\",trigger,\"| lang:\",htmlLang,\"| isDE:\",isDE,\"| GUID:\",guid);if(!guid||guid.startsWith(\"GUID\")){log(\"Platzhalter-GUID, sende nicht\");return;}lastSent=Date.now();submitToHubSpot(form,guid,fieldMap);};const onSubmit=()=>send(\"submit-event\");// Fallback: Klick auf den Submit-Button (falls Framer kein\n// natives submit-Event dispatcht). Kurz verzögert, damit\n// Framers eigene Validierung erst durchlaufen kann.\nconst onClick=e=>{const target=e.target;if(!target.closest('button, [type=\"submit\"]'))return;setTimeout(()=>{// Nur senden, wenn das Pflichtfeld gefüllt ist\nconst data=new FormData(form);let hasEmail=false;data.forEach((v,k)=>{if(normalizeKey(k)===\"email\"&&String(v).trim())hasEmail=true;});if(hasEmail)send(\"button-click\");else log(\"Klick ignoriert: kein Email-Wert im Formular\");},150);};form.addEventListener(\"submit\",onSubmit,true);form.addEventListener(\"click\",onClick,true);return()=>{form.removeEventListener(\"submit\",onSubmit,true);form.removeEventListener(\"click\",onClick,true);};},[]);return /*#__PURE__*/_jsx(\"div\",{ref:ref,style:{display:\"contents\"},children:/*#__PURE__*/_jsx(Component,{...props})});};}// ── Overrides pro Formular ───────────────────────────────────────────\n// Diese Funktionen erscheinen in Framer im Override-Dropdown.\n// Pro Formular EIN Override – die Sprache wird automatisch erkannt.\n// Free Trial – Rehab Concept (DE + EN)\nexport function withHubSpotRehab(Component){return wrapWithHubSpot(Component,{de:\"ece38e46-61bb-42af-b7ad-e422c46037b6\",en:\"3bd07c60-de0a-4458-aa94-93fc9779ef60\"});}// Free Trial – Defect Coding (DE + EN)\nexport function withHubSpotDefect(Component){return wrapWithHubSpot(Component,{de:\"e350a673-e076-41d6-9c34-647e02f20994\",en:\"e3f929e7-9bed-41d0-9000-aa51994e38ba\"});}// Newsletter Sign-Up (DE + EN)\nexport function withHubSpotNewsletter(Component){return wrapWithHubSpot(Component,{de:\"8b3da11b-8136-47a9-be95-bf923c635354\",en:\"82d2f716-db9b-44bd-a1e0-6e6eaad181ec\"});}// Vorlage für weitere Formulare – kopieren, umbenennen, GUIDs eintragen.\n// Optional eigenes Field-Mapping als dritter Parameter, falls ein Formular\n// andere Input-Namen hat:\n// export function withHubSpotXY(Component): ComponentType {\n//     return wrapWithHubSpot(\n//         Component,\n//         { de: \"GUID_DE\", en: \"GUID_EN\" },\n//         { \"e-mail\": \"email\", vorname: \"firstname\", nachname: \"lastname\" }\n//     )\n// }\n\nexport const __FramerMetadata__ = {\"exports\":{\"withHubSpotNewsletter\":{\"type\":\"reactHoc\",\"name\":\"withHubSpotNewsletter\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withHubSpotDefect\":{\"type\":\"reactHoc\",\"name\":\"withHubSpotDefect\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withHubSpotRehab\":{\"type\":\"reactHoc\",\"name\":\"withHubSpotRehab\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./HubSpotForm.map"],"mappings":"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"}