{"version":3,"file":"FileUploadInput.BA7SH5ON.mjs","names":["useRef","useState"],"sources":["https:/framerusercontent.com/modules/hfb23SXEj9W2tQcyBnoO/dmItNFq8NypaZXr0Kmpa/FileUploadInput.js"],"sourcesContent":["// FileUploadInput: Framer file upload input that binds with Framer Form. Uploads to Cloudinary and validates file size (max 5MB).\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useRef,useState,startTransition}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";/**\n * FileUploadInput\n *\n * Framer file upload input that binds with Framer Form. Uploads to Cloudinary and validates file size with 5MB max limit.\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function FileUploadInput(props){const{acceptedTypes,maxSizeMB,errorMessage,buttonText,backgroundColor,textColor,buttonColor,buttonTextColor,borderRadius,borderWidth,borderColor,successBorderColor,cloudName,uploadPreset,folder,apiKey,publicId,required,style}=props;const fileInputRef=useRef(null);const hiddenInputRef=useRef(null);const[selectedFile,setSelectedFile]=useState(null);const[error,setError]=useState(\"\");const[uploading,setUploading]=useState(false);const[uploadedUrl,setUploadedUrl]=useState(\"\");const uploadToCloudinary=async file=>{if(!cloudName||!uploadPreset){startTransition(()=>{setError(\"Cloudinary configuration missing\");});return;}startTransition(()=>{setUploading(true);setError(\"\");});try{const formData=new FormData;formData.append(\"file\",file);formData.append(\"upload_preset\",uploadPreset);if(folder){formData.append(\"folder\",folder);}if(apiKey){formData.append(\"api_key\",apiKey);}if(publicId){formData.append(\"public_id\",publicId);}const response=await fetch(`https://api.cloudinary.com/v1_1/${cloudName}/upload`,{method:\"POST\",body:formData});if(!response.ok){throw new Error(\"Upload failed\");}const data=await response.json();startTransition(()=>{setUploadedUrl(data.secure_url);setUploading(false);});}catch(err){startTransition(()=>{setError(\"Upload failed. Please try again.\");setUploading(false);setSelectedFile(null);setUploadedUrl(\"\");});if(fileInputRef.current){fileInputRef.current.value=\"\";}}};const handleFileChange=e=>{const file=e.target.files?.[0];if(!file){startTransition(()=>{setSelectedFile(null);setError(\"\");setUploadedUrl(\"\");});return;}const maxSizeBytes=maxSizeMB*1024*1024;if(file.size>maxSizeBytes){startTransition(()=>{setSelectedFile(null);setError(errorMessage||`File size must be less than ${maxSizeMB}MB`);setUploadedUrl(\"\");});if(fileInputRef.current){fileInputRef.current.value=\"\";}return;}startTransition(()=>{setSelectedFile(file);setError(\"\");});// Upload immediately\nuploadToCloudinary(file);};const handleButtonClick=()=>{fileInputRef.current?.click();};// Trigger input + change events for Framer Form validation\nuseEffect(()=>{if(!hiddenInputRef.current)return;const input=hiddenInputRef.current;const event=new Event(\"input\",{bubbles:true});const change=new Event(\"change\",{bubbles:true});input.value=uploadedUrl;input.dispatchEvent(event);input.dispatchEvent(change);},[uploadedUrl]);if(RenderTarget.current()===RenderTarget.thumbnail)return null;if(!cloudName||!uploadPreset){return /*#__PURE__*/_jsx(\"div\",{style:{color:\"#c00\",fontSize:13},children:\"⚠️ Invalid Cloudinary configuration. Add Cloud Name and Upload Preset in Property Controls.\"});}return /*#__PURE__*/_jsxs(\"div\",{style:{width:\"100%\",display:\"flex\",flexDirection:\"column\",...style},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:12,padding:\"10px 12px\",backgroundColor,borderRadius,border:`${borderWidth}px solid ${error?\"#c00\":uploadedUrl?successBorderColor:borderColor}`,minHeight:44},children:[/*#__PURE__*/_jsx(\"button\",{type:\"button\",onClick:handleButtonClick,disabled:uploading,style:{padding:\"8px 16px\",backgroundColor:uploading?\"#999\":buttonColor,color:buttonTextColor,border:\"none\",borderRadius:borderRadius-2,fontSize:14,fontWeight:500,cursor:uploading?\"not-allowed\":\"pointer\",whiteSpace:\"nowrap\"},children:buttonText}),/*#__PURE__*/_jsx(\"span\",{style:{fontSize:14,color:selectedFile?textColor:\"#999\",overflow:\"hidden\",textOverflow:\"ellipsis\",whiteSpace:\"nowrap\"},children:uploading?`Uploading ${selectedFile?.name||\"\"}...`:selectedFile?selectedFile.name:\"No file chosen\"}),/*#__PURE__*/_jsx(\"input\",{ref:fileInputRef,type:\"file\",accept:acceptedTypes,onChange:handleFileChange,disabled:uploading,style:{display:\"none\"}})]}),selectedFile&&!uploading&&uploadedUrl&&/*#__PURE__*/_jsxs(\"span\",{style:{fontSize:12,color:\"#22CC66\",marginTop:8},children:[\"✓ Uploaded successfully (\",(selectedFile.size/1024/1024).toFixed(2),\" MB)\"]}),error&&/*#__PURE__*/_jsx(\"span\",{style:{color:\"#c00\",fontSize:13},children:error}),/*#__PURE__*/_jsx(\"input\",{ref:hiddenInputRef,type:\"text\",name:\"fileupload\",value:uploadedUrl,required:required,style:{opacity:0,height:0,width:0,position:\"absolute\"},tabIndex:-1,\"aria-hidden\":\"true\",autoComplete:\"off\"})]});}addPropertyControls(FileUploadInput,{required:{type:ControlType.Boolean,title:\"Required\",defaultValue:true,enabledTitle:\"Yes\",disabledTitle:\"No\"},cloudName:{type:ControlType.String,title:\"Cloud Name\",placeholder:\"dvre9ske8\",defaultValue:\"dvre9ske8\"},uploadPreset:{type:ControlType.String,title:\"Upload Preset\",placeholder:\"ml_default\",defaultValue:\"ml_default\"},folder:{type:ControlType.String,title:\"Folder\",placeholder:\"dev\",defaultValue:\"dev\"},apiKey:{type:ControlType.String,title:\"API Key\",placeholder:\"223257751961888\",defaultValue:\"223257751961888\"},publicId:{type:ControlType.String,title:\"Public ID (PID)\",placeholder:\"8774ae99-5bec-48f8-9814-115fe5fcc2ed\",defaultValue:\"8774ae99-5bec-48f8-9814-115fe5fcc2ed\"},acceptedTypes:{type:ControlType.String,title:\"Accepted Types\",defaultValue:\"image/*,.pdf,.doc,.docx\",placeholder:\"e.g., image/*,.pdf\"},maxSizeMB:{type:ControlType.Number,title:\"Max Size (MB)\",defaultValue:5,min:1,max:50,step:1},errorMessage:{type:ControlType.String,title:\"Error Message\",defaultValue:\"File size must be less than 5MB\"},buttonText:{type:ControlType.String,title:\"Button Text\",defaultValue:\"Choose File\"},backgroundColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"#FFFFFF\"},textColor:{type:ControlType.Color,title:\"Text Color\",defaultValue:\"#000000\"},buttonColor:{type:ControlType.Color,title:\"Button Color\",defaultValue:\"#0099FF\"},buttonTextColor:{type:ControlType.Color,title:\"Button Text\",defaultValue:\"#FFFFFF\"},borderColor:{type:ControlType.Color,title:\"Border Color\",defaultValue:\"#DDDDDD\"},successBorderColor:{type:ControlType.Color,title:\"Success Border\",defaultValue:\"#22CC66\"},borderRadius:{type:ControlType.Number,title:\"Border Radius\",defaultValue:8,min:0,max:32,step:1},borderWidth:{type:ControlType.Number,title:\"Border Width\",defaultValue:1,min:0,max:10,step:1}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FileUploadInput\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./FileUploadInput.map"],"mappings":"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"}