{"version":3,"file":"WithFormValidation.V1-7slDR.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,KAAK,CAE8C,OAF7C,MAAc,CAAC,GAAG,CAAC,EAAa,QAAQ,OAAO,IAAI,EAAiB,EAAE,CAAO,GAAe,EAAS,IAAa,CAAC,IAAM,EAAM,EAAa,SAAS,cAAc,EAAS,CAA4T,OAAxT,GAAO,CAAC,EAAM,QAAQ,oBAAoB,EAAM,iBAAiB,QAAQ,EAAW,CAAC,EAAM,iBAAiB,OAAO,EAAW,CAAC,EAAM,QAAQ,mBAAmB,WAAiB,CAAC,EAAM,oBAAoB,QAAQ,EAAW,CAAC,EAAM,oBAAoB,OAAO,EAAW,CAAC,OAAO,EAAM,QAAQ,yBAAgC,IACzkB,EAAoB,GAAG,CAAC,IAAM,EAAI,EAAE,OAAO,MAAM,QAAQ,gBAAgB,GAAG,CAAC,GAAG,IAAM,GAAG,OAAO,EAAE,OAAO,kBAAkB,GAAG,CAAK,WAAW,KAAK,EAAI,CAAwF,gBAAgB,KAAK,EAAI,CAA0D,EAAE,OAAO,kBAAkB,GAAG,CAAtF,EAAE,OAAO,kBAAkB,sBAAsB,CAAlK,EAAE,OAAO,kBAAkB,gDAAgD,EAAsI,EAAgB,GAAG,CAAC,IAAM,EAAI,EAAE,OAAO,MAAM,QAAQ,MAAM,GAAG,CAAC,GAAG,IAAM,GAAG,OAAO,EAAE,OAAO,kBAAkB,GAAG,CAAkB,oBAAmC,KAAK,EAAI,CAA6E,EAAE,OAAO,kBAAkB,GAAG,CAAzG,EAAE,OAAO,kBAAkB,yCAAyC,EAA+C,EAAc,GAAG,CAAC,IAAM,EAAI,EAAE,OAAO,MAAM,MAAM,CAAC,GAAG,IAAM,GAAG,OAAO,EAAE,OAAO,kBAAkB,GAAG,CAAoB,6BAA8C,KAAK,EAAI,CAAyE,EAAE,OAAO,kBAAkB,GAAG,CAArG,EAAE,OAAO,kBAAkB,qCAAqC,EAA+C,EAAa,GAAG,CAAC,IAAM,EAAI,EAAE,OAAO,MAAM,MAAM,CAAC,GAAG,IAAM,GAAG,OAAO,EAAE,OAAO,kBAAkB,GAAG,CAAI,EAAI,OAAO,EAAG,EAAE,OAAO,kBAAkB,qCAAqC,CAAO,EAAE,OAAO,kBAAkB,GAAG,EACroC,EAAU,eAD2pC,CAAC,EAAiB,KAAK,EAAc,sBAAsB,EAAoB,CAAC,CAAC,EAAiB,KAAK,EAAc,oBAAoB,EAAgB,CAAC,CAAC,EAAiB,KAAK,EAAc,sBAAsB,EAAc,CAAC,CAAC,EAAiB,KAAK,EAAc,qBAAqB,EAAa,CAAC,CAAC,IAAM,EAAK,EAAa,SAAS,cAAc,OAAO,CAAI,GAAM,CAAC,EAAK,QAAQ,wBAAwP,EAAK,iBAAiB,SAAhO,GAAO,CAAK,EAAK,eAAe,GAAE,EAAM,gBAAgB,CAAC,EAAM,iBAAiB,CAAc,EAAK,iBAAiB,QAAQ,CAAQ,QAAQ,GAAO,CAAK,EAAM,SAAS,OAAM,EAAM,gBAAgB,EAAG,GAAoD,CAAC,EAAK,QAAQ,sBAAsB,SACr0D,IAAI,CAAC,UAAU,CAAC,aAAa,EAAU,CAAC,EAAiB,QAAQ,GAAS,GAAS,CAAC,GAAK,EAAE,CAAC,CAAqB,EAAK,MAAM,CAAC,IAAI,EAAa,MAAM,CAAC,QAAQ,WAAW,CAAC,SAAsB,EAAK,EAAU,CAAC,GAAG,EAAM,CAAC,CAAC,CAAC,mBAH7N,IAAoC"}