{"version":3,"file":"FileUploadInput.BuggebME.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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"}