chonky
Version:
A File Browser component for React
38 lines (29 loc) • 1.77 kB
text/typescript
import { Nullable, Undefinable } from 'tsdef';
import { ChonkyIconName } from './icons.types';
export interface FileData {
id: string; // (Required) String that uniquely identifies the file
name: string; // (Required) Full name, e.g. `MyImage.jpg`
ext?: string; // File extension, e.g. `.jpg`
isDir?: boolean; // Is a directory, default: false
isHidden?: boolean; // Is a hidden file, default: false
isSymlink?: boolean; // Is a symlink, default: false
isEncrypted?: boolean; // Is encrypted in some way, default: false
openable?: boolean; // Can be opened, default: true
selectable?: boolean; // Can be selected, default: true
draggable?: boolean; // Can be dragged, default: true
droppable?: boolean; // Can have files dropped into it, default: true for folders
dndOpenable?: boolean; // Can be opened by DnD hover, default: true for folders
size?: number; // File size in bytes
modDate?: Date | string; // Last change date (or its string representation)
childrenCount?: number; // Number of files inside of a folder (only for folders)
// Default preview overriding
color?: string; // Color to use for this file
icon?: ChonkyIconName | string | any; // Icon to use for this file
thumbnailUrl?: string; // Automatically load thumbnail from this URL
folderChainIcon?: Nullable<ChonkyIconName | string | any>; // Folder chain icon
[property: string]: any; // Any other user-defined property
}
export type FileArray<FT extends FileData = FileData> = Nullable<FT>[];
export type FileFilter = (file: Nullable<FileData>) => boolean;
export type FileMap<FT extends FileData = FileData> = { [fileId: string]: FT };
export type FileIdTrueMap = { [fileId: string]: Undefinable<true> };