{"version":3,"file":"WithFormValidation.B58HE37D.mjs","names":["useRef"],"sources":["https:/framerusercontent.com/modules/jjxXtXRvp9ltdzhjb05W/M2LTv1oaCn5y3BlcOcZi/WithFormValidation.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef}from\"react\";// Framer needs the ComponentType return hint to show this in the UI\nexport function withFormValidation(Component){return props=>{const containerRef=useRef(null);useEffect(()=>{if(!containerRef.current)return;let cleanupFunctions=[];const addValidation=(selector,validateFn)=>{const input=containerRef.current?.querySelector(selector);if(input&&!input.dataset.validationAttached){input.addEventListener(\"input\",validateFn);input.addEventListener(\"blur\",validateFn);input.dataset.validationAttached=\"true\";return()=>{input.removeEventListener(\"input\",validateFn);input.removeEventListener(\"blur\",validateFn);delete input.dataset.validationAttached;};}return()=>{};};// --- Full Validation Logic ---\nconst validatePhoneNumber=e=>{const val=e.target.value.replace(/[\\s\\-\\(\\)\\.]/g,\"\");if(val===\"\")return e.target.setCustomValidity(\"\");if(!/^\\+?\\d+$/.test(val)){e.target.setCustomValidity(\"Numbers, spaces, dashes, and parentheses only\");}else if(!/^\\+?\\d{7,15}$/.test(val)){e.target.setCustomValidity(\"Must be 7-15 digits\");}else{e.target.setCustomValidity(\"\");}};const validateZipCode=e=>{const val=e.target.value.replace(/\\s/g,\"\");if(val===\"\")return e.target.setCustomValidity(\"\");const zipPattern=/^\\d{5}(-?\\d{4})?$/;if(!zipPattern.test(val)){e.target.setCustomValidity(\"Invalid zip code (12345 or 12345-6789)\");}else{e.target.setCustomValidity(\"\");}};const validateEmail=e=>{const val=e.target.value.trim();if(val===\"\")return e.target.setCustomValidity(\"\");const emailPattern=/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;if(!emailPattern.test(val)){e.target.setCustomValidity(\"Please enter a valid email address\");}else{e.target.setCustomValidity(\"\");}};const validateName=e=>{const val=e.target.value.trim();if(val===\"\")return e.target.setCustomValidity(\"\");if(val.length<2){e.target.setCustomValidity(\"Name must be at least 2 characters\");}else{e.target.setCustomValidity(\"\");}};const attachValidations=()=>{cleanupFunctions.push(addValidation(\"input[name='phone']\",validatePhoneNumber));cleanupFunctions.push(addValidation(\"input[name='zip']\",validateZipCode));cleanupFunctions.push(addValidation(\"input[name='email']\",validateEmail));cleanupFunctions.push(addValidation(\"input[name='name']\",validateName));const form=containerRef.current?.querySelector(\"form\");if(form&&!form.dataset.submitHandlerAttached){const handleFormSubmit=event=>{if(!form.checkValidity()){event.preventDefault();event.stopPropagation();const inputs=form.querySelectorAll(\"input\");inputs.forEach(input=>{if(!input.validity.valid)input.reportValidity();});}};form.addEventListener(\"submit\",handleFormSubmit);form.dataset.submitHandlerAttached=\"true\";}};// Small delay for Framer's layout/animation engine (especially in overlays)\nconst timeoutId=setTimeout(attachValidations,100);return()=>{clearTimeout(timeoutId);cleanupFunctions.forEach(cleanup=>cleanup());};},[]);return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{display:\"contents\"},children:/*#__PURE__*/_jsx(Component,{...props})});};}\nexport const __FramerMetadata__ = {\"exports\":{\"withFormValidation\":{\"type\":\"reactHoc\",\"name\":\"withFormValidation\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./WithFormValidation.map"],"mappings":"yHACA,SAAgB,EAAmB,EAAU,CAAC,MAAO,IAAO,CAAC,IAAM,EAAaA,EAAO,IAAI,EAE+C,OAF7C,MAAc,CAAC,GAAG,CAAC,EAAa,QAAQ,OAAO,IAAI,EAAiB,CAAC,EAAQ,GAAe,EAAS,IAAa,CAAC,IAAM,EAAM,EAAa,SAAS,cAAc,CAAQ,EAA6T,OAAxT,GAAO,CAAC,EAAM,QAAQ,oBAAoB,EAAM,iBAAiB,QAAQ,CAAU,EAAE,EAAM,iBAAiB,OAAO,CAAU,EAAE,EAAM,QAAQ,mBAAmB,WAAiB,CAAC,EAAM,oBAAoB,QAAQ,CAAU,EAAE,EAAM,oBAAoB,OAAO,CAAU,EAAE,OAAO,EAAM,QAAQ,kBAAmB,OAAa,CAAC,CAAE,EAC5kB,EAAoB,GAAG,CAAC,IAAM,EAAI,EAAE,OAAO,MAAM,QAAQ,gBAAgB,EAAE,EAAE,GAAG,IAAM,GAAG,OAAO,EAAE,OAAO,kBAAkB,EAAE,EAAM,WAAW,KAAK,CAAG,EAAyF,gBAAgB,KAAK,CAAG,EAA2D,EAAE,OAAO,kBAAkB,EAAE,EAArF,EAAE,OAAO,kBAAkB,qBAAqB,EAAjK,EAAE,OAAO,kBAAkB,+CAA+C,CAA+H,EAAQ,EAAgB,GAAG,CAAC,IAAM,EAAI,EAAE,OAAO,MAAM,QAAQ,MAAM,EAAE,EAAE,GAAG,IAAM,GAAG,OAAO,EAAE,OAAO,kBAAkB,EAAE,EAA2C,oBAAW,KAAK,CAAG,EAA8E,EAAE,OAAO,kBAAkB,EAAE,EAAxG,EAAE,OAAO,kBAAkB,wCAAwC,CAAwC,EAAQ,EAAc,GAAG,CAAC,IAAM,EAAI,EAAE,OAAO,MAAM,KAAK,EAAE,GAAG,IAAM,GAAG,OAAO,EAAE,OAAO,kBAAkB,EAAE,EAAsD,6BAAa,KAAK,CAAG,EAA0E,EAAE,OAAO,kBAAkB,EAAE,EAApG,EAAE,OAAO,kBAAkB,oCAAoC,CAAwC,EAAQ,EAAa,GAAG,CAAC,IAAM,EAAI,EAAE,OAAO,MAAM,KAAK,EAAE,GAAG,IAAM,GAAG,OAAO,EAAE,OAAO,kBAAkB,EAAE,EAAK,EAAI,OAAO,EAAG,EAAE,OAAO,kBAAkB,oCAAoC,EAAQ,EAAE,OAAO,kBAAkB,EAAE,CAAG,EACvoC,EAAU,eAD2pC,CAAC,EAAiB,KAAK,EAAc,sBAAsB,CAAmB,CAAC,EAAE,EAAiB,KAAK,EAAc,oBAAoB,CAAe,CAAC,EAAE,EAAiB,KAAK,EAAc,sBAAsB,CAAa,CAAC,EAAE,EAAiB,KAAK,EAAc,qBAAqB,CAAY,CAAC,EAAE,IAAM,EAAK,EAAa,SAAS,cAAc,MAAM,EAAK,GAAM,CAAC,EAAK,QAAQ,wBAAwP,EAAK,iBAAiB,SAAhO,GAAO,CAAK,EAAK,cAAc,IAAG,EAAM,eAAe,EAAE,EAAM,gBAAgB,EAA8C,EAA1B,iBAAiB,OAAc,CAAC,CAAC,QAAQ,GAAO,CAAK,EAAM,SAAS,OAAM,EAAM,eAAe,CAAE,CAAC,EAAG,CAAiD,EAAE,EAAK,QAAQ,sBAAsB,OAAQ,EAC70D,GAAG,EAAE,UAAU,CAAC,aAAa,CAAS,EAAE,EAAiB,QAAQ,GAAS,EAAQ,CAAC,CAAE,CAAE,EAAE,CAAC,CAAC,EAAsB,EAAK,MAAM,CAAC,IAAI,EAAa,MAAM,CAAC,QAAQ,UAAU,EAAE,SAAsB,EAAK,EAAU,CAAC,GAAG,CAAK,CAAC,CAAC,CAAC,CAAE,CAAE,iBAHjO,IAAoC"}