polyv-live-cli
Version:
CLI tool for managing PolyV live streaming services.
76 lines • 2.23 kB
TypeScript
import { EventEmitter } from 'events';
export interface PanelConfig {
id: string;
title: string;
component: any;
position: {
top: number | string;
left: number | string;
width: number | string;
height: number | string;
};
zIndex?: number;
resizable?: boolean;
movable?: boolean;
border?: {
type?: string;
fg?: string;
bg?: string;
};
visible?: boolean;
state?: 'minimized' | 'maximized' | 'normal' | 'fullscreen';
}
export interface LayoutPreset {
name: string;
description: string;
panels: PanelConfig[];
minSize: {
width: number;
height: number;
};
}
export interface LayoutState {
currentLayout: string;
panelStates: Map<string, PanelConfig>;
fullscreenPanel?: string;
history: string[];
}
export declare class LayoutManager {
private screen;
private eventBus;
private layouts;
private currentState;
private panels;
private originalPositions;
constructor(screen: any, eventBus: EventEmitter);
private initializeDefaultLayouts;
private setupEventHandlers;
registerPanel(panelId: string, component: any): void;
unregisterPanel(panelId: string): void;
switchLayout(layoutName: string): void;
private applyLayout;
private applyPanelConfig;
private calculatePosition;
toggleFullscreen(panelId: string): void;
private enterFullscreen;
private exitFullscreen;
minimizePanel(panelId: string): void;
maximizePanel(panelId: string): void;
restorePanel(panelId: string): void;
private hidePanel;
private storeCurrentStates;
private handleScreenResize;
private findAndSwitchToCompatibleLayout;
private getTerminalSize;
getAvailableLayouts(): string[];
getCurrentLayout(): string;
getLayoutInfo(layoutName?: string): LayoutPreset | null;
getPanelState(panelId: string): PanelConfig | null;
isFullscreen(): boolean;
getFullscreenPanel(): string | undefined;
addLayoutPreset(preset: LayoutPreset): void;
removeLayoutPreset(layoutName: string): void;
saveCurrentState(): LayoutPreset;
destroy(): void;
}
//# sourceMappingURL=layout-manager.d.ts.map