{"version":3,"file":"FileUploadInput.CVAsmFFi.mjs","names":["useRef","useState","useMemo","useCallback"],"sources":["https:/framerusercontent.com/modules/zcu9MdQqUM9WEzB8sZkS/Rl01f1QeAKur4WZQzIAh/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{useCallback,useMemo,useRef,useState,startTransition}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";/**\n * FileUploadInput\n *\n * Framer file upload input that binds with Framer Form. Supports multiple files.\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,buttonText1,borderRadius,borderWidth,borderColor,required,multiple,fieldName,style}=props;const fileInputRef=useRef(null);const[selectedFiles,setSelectedFiles]=useState([]);const[error,setError]=useState(\"\");const resolvedButtonTextColor=buttonTextColor??buttonText1??\"#FFFFFF\";const isMultipleEnabled=useMemo(()=>{if(typeof multiple===\"boolean\")return multiple;const normalized=String(multiple).trim().toLowerCase();if(!normalized)return false;return normalized===\"true\"||normalized===\"yes\"||normalized===\"on\"||normalized===\"1\";},[multiple]);const getFileIdentity=useCallback(file=>{return`${file.name}__${file.size}__${file.lastModified}`;},[]);const handleFileChange=useCallback(e=>{const incomingFiles=Array.from(e.target.files||[]);const files=isMultipleEnabled?incomingFiles:incomingFiles.slice(0,1);if(!files.length){startTransition(()=>{setError(\"\");});return;}const maxSizeBytes=maxSizeMB*1024*1024;const oversized=files.find(f=>f.size>maxSizeBytes);if(oversized){startTransition(()=>{if(!isMultipleEnabled){setSelectedFiles([]);}setError(errorMessage||`File size must be less than ${maxSizeMB}MB`);});if(fileInputRef.current){fileInputRef.current.value=\"\";}return;}if(isMultipleEnabled){startTransition(()=>{setSelectedFiles(previousFiles=>{const seen=new Set(previousFiles.map(file=>getFileIdentity(file)));const uniqueNewFiles=files.filter(file=>{const identity=getFileIdentity(file);if(seen.has(identity))return false;seen.add(identity);return true;});return[...previousFiles,...uniqueNewFiles];});setError(\"\");});}else{startTransition(()=>{setSelectedFiles(files.slice(0,1));setError(\"\");});}},[errorMessage,getFileIdentity,isMultipleEnabled,maxSizeMB]);const handleButtonClick=useCallback(()=>{fileInputRef.current?.click();},[]);const handleClearFiles=useCallback(()=>{startTransition(()=>{setSelectedFiles([]);setError(\"\");});if(fileInputRef.current){fileInputRef.current.value=\"\";}},[]);if(RenderTarget.current()===RenderTarget.thumbnail)return null;const name=isMultipleEnabled?`${fieldName}[]`:fieldName;const selectedFilesLabel=useMemo(()=>{if(selectedFiles.length===0)return\"No file chosen\";if(selectedFiles.length===1)return selectedFiles[0].name;if(selectedFiles.length===2){return`${selectedFiles[0].name}, ${selectedFiles[1].name}`;}return`${selectedFiles[0].name}, ${selectedFiles[1].name} +${selectedFiles.length-2} more`;},[selectedFiles]);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\":borderColor}`,minHeight:44},children:[/*#__PURE__*/_jsx(\"button\",{type:\"button\",onClick:handleButtonClick,style:{padding:\"8px 16px\",backgroundColor:buttonColor,color:resolvedButtonTextColor,border:\"none\",borderRadius:borderRadius-2,fontSize:14,fontWeight:500,cursor:\"pointer\",whiteSpace:\"nowrap\"},children:buttonText}),/*#__PURE__*/_jsx(\"span\",{style:{fontSize:14,color:selectedFiles.length>0?textColor:\"#999\",overflow:\"hidden\",textOverflow:\"ellipsis\",whiteSpace:\"nowrap\"},children:selectedFilesLabel}),selectedFiles.length>0&&/*#__PURE__*/_jsx(\"button\",{type:\"button\",\"aria-label\":\"Clear selected files\",onClick:handleClearFiles,style:{padding:\"4px 8px\",background:\"transparent\",color:textColor,border:\"none\",borderRadius:borderRadius-2,fontSize:13,lineHeight:1,cursor:\"pointer\",whiteSpace:\"nowrap\"},children:\"Clear\"}),/*#__PURE__*/_jsx(\"input\",{ref:fileInputRef,type:\"file\",name:name,multiple:isMultipleEnabled,accept:acceptedTypes,onChange:handleFileChange,required:required,style:{position:\"absolute\",width:1,height:1,padding:0,margin:-1,overflow:\"hidden\",clip:\"rect(0, 0, 0, 0)\",whiteSpace:\"nowrap\",border:0}})]}),error&&/*#__PURE__*/_jsx(\"span\",{style:{color:\"#c00\",fontSize:13},children:error})]});}addPropertyControls(FileUploadInput,{fieldName:{type:ControlType.String,title:\"Field Name\",defaultValue:\"files\",placeholder:\"e.g., files\"},multiple:{type:ControlType.Boolean,title:\"Multiple\",defaultValue:false},required:{type:ControlType.Boolean,title:\"Required\",defaultValue:true,enabledTitle:\"Yes\",disabledTitle:\"No\"},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\"},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\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./FileUploadInput.map"],"mappings":"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"}