import "./FileBrowser.css"; import { type Accessor, type Component, createSignal, For, Show, } from "solid-js"; import { FileIcon, FolderIcon, FolderOpenIcon } from "#/dev/icons/index.ts"; export type BrowserFile = { path: string; isActive: boolean; }; export type BrowserFolder = Map; export type FileHandler = (path: string) => void; function isFolder(entry: BrowserFile | BrowserFolder): entry is BrowserFolder { return typeof (entry as BrowserFolder).size === "number"; } export const FileBrowser: Component<{ root: Accessor; handler: FileHandler; }> = (props) => { const FileEntry: Component<{ name: string; entry: BrowserFile; }> = ({ name, entry }) => { return (
props.handler(entry.path)} > {name}
); }; const FolderEntry: Component<{ folder: BrowserFolder; name: string; open: boolean; }> = ({ folder, name, open }) => { const [isOpen, setIsOpen] = createSignal(open); return ( <>
setIsOpen(!isOpen())}> {isOpen() ? : } {name}
); }; const FileList: Component<{ folder: BrowserFolder }> = (props) => { return ( ); }; return (
); };