UNPKG

tanuki-ui

Version:

HTML-first React component library with semantic elements, multi-OS themes, and production-ready visual node editor

136 lines (135 loc) 4.1 kB
import { PanelID, TabID, TabMeta, Orientation, SplitDirection } from './types'; export declare enum PanelActionType { ACTIVATE_TAB = "ACTIVATE_TAB", CLOSE_TAB = "CLOSE_TAB", CREATE_TAB = "CREATE_TAB", MOVE_TAB = "MOVE_TAB", REORDER_TAB = "REORDER_TAB", SPLIT_PANEL = "SPLIT_PANEL", CLOSE_PANEL = "CLOSE_PANEL", RESIZE_PANEL = "RESIZE_PANEL", FOCUS_PANEL = "FOCUS_PANEL", START_DRAG = "START_DRAG", SET_DROP_TARGET = "SET_DROP_TARGET", END_DRAG = "END_DRAG", EXECUTE_DROP = "EXECUTE_DROP", PRUNE_EMPTY_NODES = "PRUNE_EMPTY_NODES", RESTORE_TAB = "RESTORE_TAB", SET_STATE = "SET_STATE" } export interface ActivateTabAction { type: PanelActionType.ACTIVATE_TAB; payload: { leafId: PanelID; tabId: TabID; }; } export interface CloseTabAction { type: PanelActionType.CLOSE_TAB; payload: { leafId: PanelID; tabId: TabID; }; } export interface CreateTabAction { type: PanelActionType.CREATE_TAB; payload: { leafId: PanelID; tab: TabMeta; }; } export interface MoveTabAction { type: PanelActionType.MOVE_TAB; payload: { sourceLeafId: PanelID; targetLeafId: PanelID; tabId: TabID; targetIndex?: number; }; } export interface ReorderTabAction { type: PanelActionType.REORDER_TAB; payload: { leafId: PanelID; tabId: TabID; newIndex: number; }; } export interface SplitPanelAction { type: PanelActionType.SPLIT_PANEL; payload: { leafId: PanelID; orientation: Orientation; ratio?: number; }; } export interface ClosePanelAction { type: PanelActionType.CLOSE_PANEL; payload: { panelId: PanelID; }; } export interface ResizePanelAction { type: PanelActionType.RESIZE_PANEL; payload: { panelId: PanelID; sizes: number[]; }; } export interface FocusPanelAction { type: PanelActionType.FOCUS_PANEL; payload: { leafId: PanelID; }; } export interface StartDragAction { type: PanelActionType.START_DRAG; payload: { tabId: TabID; sourceLeafId: PanelID; }; } export interface SetDropTargetAction { type: PanelActionType.SET_DROP_TARGET; payload: { leafId?: PanelID; direction?: SplitDirection; insertIndex?: number; }; } export interface EndDragAction { type: PanelActionType.END_DRAG; } export interface ExecuteDropAction { type: PanelActionType.EXECUTE_DROP; } export interface PruneEmptyNodesAction { type: PanelActionType.PRUNE_EMPTY_NODES; } export interface RestoreTabAction { type: PanelActionType.RESTORE_TAB; } export interface SetStateAction { type: PanelActionType.SET_STATE; payload: { state: any; }; } export type PanelAction = ActivateTabAction | CloseTabAction | CreateTabAction | MoveTabAction | ReorderTabAction | SplitPanelAction | ClosePanelAction | ResizePanelAction | FocusPanelAction | StartDragAction | SetDropTargetAction | EndDragAction | ExecuteDropAction | PruneEmptyNodesAction | RestoreTabAction | SetStateAction; export declare const createPanelActions: (dispatch: React.Dispatch<PanelAction>) => { activateTab: (leafId: PanelID, tabId: TabID) => void; closeTab: (leafId: PanelID, tabId: TabID) => void; createTab: (leafId: PanelID, tab?: TabMeta) => void; moveTab: (sourceLeafId: PanelID, targetLeafId: PanelID, tabId: TabID, targetIndex?: number) => void; reorderTab: (leafId: PanelID, tabId: TabID, newIndex: number) => void; splitPanel: (leafId: PanelID, orientation: Orientation, ratio?: number) => void; closePanel: (panelId: PanelID) => void; resizePanel: (panelId: PanelID, sizes: number[]) => void; focusPanel: (leafId: PanelID) => void; startDrag: (tabId: TabID, sourceLeafId: PanelID) => void; setDropTarget: (leafId?: PanelID, direction?: SplitDirection, insertIndex?: number) => void; endDrag: () => void; executeDrop: () => void; pruneEmptyNodes: () => void; restoreTab: () => void; };