{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/xWuRtF9CqtBlCJUewYSQ/gOCHCI1Yp04dPAJuIU9K/WithPolotnoFormValidation.js"],
  "sourcesContent": ["import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{forwardRef,useEffect,useState,useRef,useCallback}from\"react\";// Learn more: https://www.framer.com/developers/overrides/\nfunction debounce(fn,delay){let timer;return(...args)=>{clearTimeout(timer);timer=setTimeout(()=>fn(...args),delay);};}export function withEmailValidation(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[value,setValue]=useState(\"\");const[response,setResponse]=useState(null);const[loading,setLoading]=useState(false);const[validationError,setValidationError]=useState(\"\");const inputRef=useRef(null);const debouncedValidateRef=useRef(null);const validateEmail=useCallback(async email=>{if(!email.trim()){setValidationError(\"\");inputRef.current?.setCustomValidity(\"\");return;}setLoading(true);try{const res=await fetch(`https://api.polotno.com/api/account/validate-email`,{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify({email})});const data=await res.json();setResponse(data);if(data.emailExists){const errorMsg=\"This user already exists. Please log in.\";inputRef.current?.setCustomValidity(errorMsg);setValidationError(errorMsg);}else if(data.freeDomain){const errorMsg=\"Please use your business email.\";inputRef.current?.setCustomValidity(errorMsg);setValidationError(errorMsg);}else{inputRef.current?.setCustomValidity(\"\");setValidationError(\"\");}}catch(err){console.error(\"Fetch error:\",err);setResponse({error:\"Failed to fetch data\"});inputRef.current?.setCustomValidity(\"Validation failed. Please try again.\");setValidationError(\"Validation failed. Please try again.\");}finally{setLoading(false);}},[]);// Initialize debounced function once\nuseEffect(()=>{debouncedValidateRef.current=debounce(validateEmail,500);},[validateEmail]);const handleChange=useCallback(e=>{const newValue=e.target.value;inputRef.current=e.target;inputRef.current.setCustomValidity(\"\");setValidationError(\"\");setValue(newValue);if(newValue.trim()){inputRef.current.setCustomValidity(\"Validating...\");debouncedValidateRef.current?.(newValue);}},[]);return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(Component,{ref:ref,...props,value:value,onChange:handleChange}),loading&&/*#__PURE__*/_jsx(\"p\",{style:{color:\"#666\",fontSize:\"12px\"},children:\"Validating...\"}),validationError&&/*#__PURE__*/_jsx(\"p\",{style:{color:\"#FF0000\",fontSize:\"12px\"},children:validationError})]});});}function capitalizeWords(str){return str.split(\" \").map(word=>word.charAt(0).toUpperCase()+word.slice(1).toLowerCase()).join(\" \");}export function withFormValidation(Component){return function HOC(props){useEffect(()=>{const inputs=[document.querySelector(\"input[name='first-name']\"),document.querySelector(\"input[name='last-name']\")].filter(Boolean);const handleInput=e=>{const input=e.target;// const cursorPosition =\n//     input.selectionStart ?? input.value.length\nconst capitalized=capitalizeWords(input.value);input.value=capitalized;// Optional: restore cursor position\n// input.setSelectionRange(cursorPosition, cursorPosition)\n};// Attach listeners\ninputs.forEach(input=>{input.addEventListener(\"input\",handleInput);});// Cleanup\nreturn()=>{inputs.forEach(input=>{input.removeEventListener(\"input\",handleInput);});};},[]);return /*#__PURE__*/_jsx(Component,{...props});};}export function withTrackingFields(Component){return function HOC(props){useEffect(()=>{const addHiddenInput=(name,value)=>{const form=document.querySelector(\"form\");if(!form||form.querySelector(`input[name=\"${name}\"]`))return;const input=document.createElement(\"input\");input.type=\"hidden\";input.name=name;input.value=value;form.appendChild(input);};try{const currentUrl=window.location.href;const pathHistory=JSON.parse(sessionStorage.getItem(\"pathHistory\")||\"[]\");addHiddenInput(\"current_url\",currentUrl);addHiddenInput(\"conversion_path\",pathHistory.join(\" \u2192 \"));}catch(e){console.error(\"Failed to add tracking fields to form:\",e);}},[]);return /*#__PURE__*/_jsx(Component,{...props});};}\nexport const __FramerMetadata__ = {\"exports\":{\"withEmailValidation\":{\"type\":\"reactHoc\",\"name\":\"withEmailValidation\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withFormValidation\":{\"type\":\"reactHoc\",\"name\":\"withFormValidation\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withTrackingFields\":{\"type\":\"reactHoc\",\"name\":\"withTrackingFields\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./WithPolotnoFormValidation.map"],
  "mappings": "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",
  "names": ["debounce", "fn", "delay", "timer", "args", "withEmailValidation", "Component", "Y", "props", "ref", "value", "setValue", "ye", "response", "setResponse", "loading", "setLoading", "validationError", "setValidationError", "inputRef", "pe", "debouncedValidateRef", "validateEmail", "te", "email", "data", "errorMsg", "err", "ue", "handleChange", "e", "newValue", "u", "l", "p", "capitalizeWords", "str", "word", "withFormValidation", "inputs", "handleInput", "input", "capitalized", "withTrackingFields", "addHiddenInput", "name", "form", "currentUrl", "window", "pathHistory"]
}
