chonky
Version:
A File Browser component for React
37 lines (36 loc) • 1.73 kB
TypeScript
import { AnyObject, Nullable } from 'tsdef';
import { FileAction } from './action.types';
import { FileData } from './file.types';
export declare type FileActionData<Action extends FileAction> = {
id: Action['id'];
action: Action;
payload: Action['__payloadType'];
state: FileActionState<Action['__extraStateType']>;
};
export declare type FileActionState<ExtraState extends object = AnyObject> = {
/**
* The ID of the Chonky instance that dispatched this action. This is useful if
* you're reusing the same action handler for multiple Chonky instances.
*/
instanceId: string;
/**
* All selected files at the time the action was requested. Note that this does not
* reflect the changes applied by action's selection transform, if one is defined.
*/
selectedFiles: FileData[];
/**
* Selected files filtered using actions file filter. If not file filter is defined,
* this is the same as `selectedFiles`. Note that this does not reflect the changes
* applied by action's selection transform, if one is defined.
*/
selectedFilesForAction: FileData[];
/**
* If this action was requested using the file context menu, this field will hold
* the file that user right-clicked on to open the menu. If this action was not
* triggered using the context menu or right click was not on any file, this will be
* `null`.
*/
contextMenuTriggerFile: Nullable<FileData>;
} & ExtraState;
export declare type MapFileActionsToData<U> = U extends FileAction ? FileActionData<U> : never;
export declare type GenericFileActionHandler<T> = (data: MapFileActionsToData<T>) => void | Promise<void>;