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[]; oldName: string; newName: string; renameOpen: boolean; onNewNameChange: () => (event: ChangeEvent) => Promise; onCloseRenameModal: () => () => Promise; onFileUpload: ( isText: boolean ) => (event: ChangeEvent) => Promise; onDirClick: (name: string) => () => Promise; onFileClick: (name: string) => (option: string) => Promise; onDirCreate: (name: string) => () => Promise; onRename: (old_name: string, new_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: "Rename", key: "rename" }, { text: "Download", key: "download" }, { text: "Download as Text File", key: "download-text" }, { text: "Delete", key: "delete" }, ]; export default function FileSystemManager({ path = "/", nodes = [], oldName = "", newName = "", renameOpen = false, onNewNameChange = () => () => Promise.resolve(), onCloseRenameModal = () => () => Promise.resolve(), onFileUpload = () => () => Promise.resolve(), onFileClick = () => () => Promise.resolve(), onDirClick = () => () => Promise.resolve(), onDirCreate = () => () => Promise.resolve(), onRename = () => () => Promise.resolve(), onRefresh = () => Promise.resolve(), onLoadSamples = () => Promise.resolve(), }: FileSystemManagerProps) { const [newFolderOpen, setNewFolderOpen] = useState(false); const [dirName, setDirName] = useState(""); const handleNewFolderModalOpen = () => setNewFolderOpen(true); const handleNewFolderModalClose = () => setNewFolderOpen(false); return ( <> <> File System: {}} aria-label="upload-text" component="label" size="small" > { setDirName(""); handleNewFolderModalOpen(); }} aria-label="create-a-new-folder" size="small" > {`Path: ${path}`} {nodes.map(({ name, isDir }, index) => isDir ? ( ) : ( } > ) )} Folder Name: setDirName(event.target.value)} /> New Name: ); }