Spaces:
Runtime error
Runtime error
File size: 1,470 Bytes
b801bb1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
import React, { useCallback, useState } from 'react';
import { useDropzone } from 'react-dropzone';
interface FileEmbedderProps {
handleEmbed: (acceptedFiles: File[]) => void;
}
export const FileEmbedder: React.FC<FileEmbedderProps> = ({ handleEmbed }) => {
const [isDragActive, setIsDragActive] = useState(false);
const onDrop = useCallback(
(acceptedFiles: File[]) => {
handleEmbed(acceptedFiles);
setIsDragActive(false);
},
[handleEmbed],
);
const { acceptedFiles, getRootProps, getInputProps, isDragReject } =
useDropzone({
onDrop,
accept: {
'application/pdf': ['.pdf'],
'text/plain': ['.txt', '.md'],
},
onDragEnter: () => setIsDragActive(true),
onDragLeave: () => setIsDragActive(false),
});
const acceptedFileItems = acceptedFiles.map((file: any) => (
<li key={file.name}>
{file.name} - {file.size} bytes
</li>
));
return (
<>
<div
{...getRootProps()}
className={`border-2 border-dashed border-gray-300 p-6 rounded-md cursor-pointer ${
isDragActive ? 'active' : ''
} ${isDragReject ? 'reject' : ''}`}
>
<input {...getInputProps()} />
{isDragActive ? (
<p>Drop the files here...</p>
) : (
<p><u>Click or drag and drop files here (PDF, MD, TXT)</u></p>
)}
</div>
<aside>
<ul>{acceptedFileItems}</ul>
</aside>
</>
);
}; |