import React, { useState, ChangeEvent } from "react"; import Box from "@mui/material/Box"; import Button from "@mui/material/Button"; import IconButton from "@mui/material/IconButton"; import List from "@mui/material/List"; import ListItem from "@mui/material/ListItem"; import ListItemButton from "@mui/material/ListItemButton"; import ListItemIcon from "@mui/material/ListItemIcon"; import ListItemText from "@mui/material/ListItemText"; import Modal from "@mui/material/Modal"; import Paper from "@mui/material/Paper"; import Stack from "@mui/material/Stack"; import TextField from "@mui/material/TextField"; import Tooltip from "@mui/material/Tooltip"; import Typography from "@mui/material/Typography"; import FolderIcon from "@mui/icons-material/Folder"; import RefreshIcon from "@mui/icons-material/Refresh"; import UploadFileIcon from "@mui/icons-material/UploadFile"; import UploadIcon from "@mui/icons-material/Upload"; import InsertDriveFileIcon from "@mui/icons-material/InsertDriveFile"; import CreateNewFolderIcon from "@mui/icons-material/CreateNewFolder"; import MoreButton from "./MoreButton"; import { Node } from "./types"; interface FileSystemManagerProps { path: string; nodes: Node[]; onFileUpload: ( isText: boolean ) => (event: ChangeEvent) => Promise; onDirClick: (name: string) => () => Promise; onFileClick: (name: string) => (option: string) => Promise; onDirCreate: (name: string) => () => Promise; onRefresh: () => Promise; onLoadSamples: () => Promise; } const modalStyle = { position: "absolute" as "absolute", top: "50%", left: "50%", transform: "translate(-50%, -50%)", width: 400, bgcolor: "background.paper", p: 4, }; export const options = [ { text: "Download", key: "download" }, { text: "Download as Text File", key: "download-text" }, { text: "Delete", key: "delete" }, ]; export default function FileSystemManager({ path = "/", nodes = [], onFileUpload = () => () => Promise.resolve(), onFileClick = () => () => Promise.resolve(), onDirClick = () => () => Promise.resolve(), onDirCreate = () => () => Promise.resolve(), onRefresh = () => Promise.resolve(), onLoadSamples = () => Promise.resolve(), }: FileSystemManagerProps) { const [open, setOpen] = useState(false); const [dirName, setDirName] = useState(""); const handleModalOpen = () => setOpen(true); const handleModalClose = () => setOpen(false); return ( <> <> File System: {}} aria-label="upload-text" component="label" size="small" > { setDirName(""); handleModalOpen(); }} aria-label="create-a-new-folder" size="small" > {`Path: ${path}`} {nodes.map(({ name, isDir }, index) => isDir ? ( ) : ( } > ) )} Folder Name: setDirName(event.target.value)} /> ); }