dockview
Version:
Zero dependency layout manager supporting tabs, grids and splitviews with ReactJS support
155 lines (154 loc) • 5.44 kB
TypeScript
import { Position } from '../dnd/droptarget';
import { IDockviewComponent } from '../dockview/dockviewComponent';
import { Event } from '../events';
import { IGridPanelView } from '../gridview/baseComponentGridview';
import { IViewSize } from '../gridview/gridview';
import { CompositeDisposable, IDisposable } from '../lifecycle';
import { PanelInitParameters, PanelUpdateEvent } from '../panel/types';
import { IGroupPanel } from './groupPanel';
import { GroupviewPanel } from './groupviewPanel';
import { DockviewDropTargets } from './dnd';
export declare enum GroupChangeKind2 {
ADD_PANEL = "ADD_PANEL",
REMOVE_PANEL = "REMOVE_PANEL",
PANEL_ACTIVE = "PANEL_ACTIVE",
GROUP_ACTIVE = "GROUP_ACTIVE"
}
export interface DndService {
canDisplayOverlay(group: IGroupview, event: DragEvent, target: DockviewDropTargets): boolean;
onDrop(group: IGroupview, event: DragEvent, position: Position, index?: number): void;
}
export interface IGroupItem {
id: string;
header: {
element: HTMLElement;
};
body: {
element: HTMLElement;
};
}
interface GroupMoveEvent {
groupId: string;
itemId: string;
target: Position;
index?: number;
}
export interface GroupOptions {
readonly panels?: IGroupPanel[];
readonly activePanel?: IGroupPanel;
readonly id?: string;
tabHeight?: number;
}
export interface GroupviewChangeEvent {
readonly kind: GroupChangeKind2;
readonly panel?: IGroupPanel;
}
export interface GroupPanelViewState {
views: string[];
activeView?: string;
id: string;
}
export interface IGroupview extends IDisposable, IGridPanelView {
readonly isActive: boolean;
readonly size: number;
readonly panels: IGroupPanel[];
readonly tabHeight: number | undefined;
isPanelActive: (panel: IGroupPanel) => boolean;
activePanel: IGroupPanel | undefined;
indexOf(panel: IGroupPanel): number;
openPanel(panel: IGroupPanel, options?: {
index?: number;
skipFocus?: boolean;
}): void;
closePanel(panel: IGroupPanel): Promise<boolean>;
closeAllPanels(): Promise<boolean>;
containsPanel(panel: IGroupPanel): boolean;
removePanel: (panelOrId: IGroupPanel | string) => IGroupPanel;
onDidGroupChange: Event<GroupviewChangeEvent>;
onMove: Event<GroupMoveEvent>;
moveToNext(options?: {
panel?: IGroupPanel;
suppressRoll?: boolean;
}): void;
moveToPrevious(options?: {
panel?: IGroupPanel;
suppressRoll?: boolean;
}): void;
isContentFocused(): boolean;
updateActions(): void;
canDisplayOverlay(event: DragEvent, target: DockviewDropTargets): boolean;
}
export declare class Groupview extends CompositeDisposable implements IGroupview {
private readonly container;
private accessor;
id: string;
private readonly options;
private readonly parent;
private readonly tabsContainer;
private readonly contentContainer;
private readonly dropTarget;
private _activePanel?;
private watermark?;
private _isGroupActive;
private mostRecentlyUsed;
private readonly _onDidChange;
readonly onDidChange: Event<IViewSize | undefined>;
private _width;
private _height;
private _panels;
private readonly _onMove;
readonly onMove: Event<GroupMoveEvent>;
private readonly _onDidGroupChange;
readonly onDidGroupChange: Event<GroupviewChangeEvent>;
get element(): HTMLElement;
get activePanel(): IGroupPanel | undefined;
get tabHeight(): number | undefined;
set tabHeight(height: number | undefined);
get isActive(): boolean;
get panels(): IGroupPanel[];
get size(): number;
get isEmpty(): boolean;
get minimumHeight(): number;
get maximumHeight(): number;
get minimumWidth(): number;
get maximumWidth(): number;
constructor(container: HTMLElement, accessor: IDockviewComponent, id: string, options: GroupOptions, parent: GroupviewPanel);
initialize(): void;
isContentFocused(): boolean;
indexOf(panel: IGroupPanel): number;
toJSON(): GroupPanelViewState;
moveToNext(options?: {
panel?: IGroupPanel;
suppressRoll?: boolean;
}): void;
moveToPrevious(options?: {
panel?: IGroupPanel;
suppressRoll?: boolean;
}): void;
containsPanel(panel: IGroupPanel): boolean;
init(params: PanelInitParameters): void;
update(params: PanelUpdateEvent): void;
focus(): void;
openPanel(panel: IGroupPanel, options?: {
index?: number;
skipFocus?: boolean;
}): void;
removePanel(groupItemOrId: IGroupPanel | string): IGroupPanel;
closeAllPanels(): Promise<boolean>;
closePanel: (panel: IGroupPanel) => Promise<boolean>;
private doClose;
isPanelActive(panel: IGroupPanel): boolean;
updateActions(): void;
setActive(isGroupActive: boolean, skipFocus?: boolean, force?: boolean): void;
layout(width: number, height: number): void;
private _removePanel;
private doRemovePanel;
private doAddPanel;
private doSetActivePanel;
private updateMru;
private updateContainer;
canDisplayOverlay(dragOverEvent: DragEvent, target: DockviewDropTargets): boolean;
private handleDropEvent;
dispose(): void;
}
export {};