@qodalis/angular-cli
Version:
Angular wrapper for the @qodalis CLI terminal engine.
174 lines (173 loc) • 7.14 kB
TypeScript
import { ElementRef, EventEmitter, OnDestroy, OnInit, QueryList } from '@angular/core';
import { CliEngineSnapshot, CliPanelConfig, CliPanelPosition, CliPanelState, ICliCommandProcessor, ICliModule, ICliPanelRef } from '@qodalis/cli-core';
import { CliEngine, CliEngineOptions } from '@qodalis/cli';
import { CliComponent } from '../cli/cli.component';
import { CollapsableContentComponent } from '../collapsable-content/collapsable-content.component';
import { TabStatus, GlobalStatus } from './cli-panel-status.service';
import * as i0 from "@angular/core";
export interface TerminalPane {
id: number;
widthPercent: number;
snapshot?: CliEngineSnapshot;
}
export interface TerminalTab {
id: number;
title: string;
isEditing: boolean;
panes: TerminalPane[];
}
export interface TabContextMenu {
visible: boolean;
x: number;
y: number;
tabId: number;
}
export type CliPanelOptions = CliEngineOptions & CliPanelConfig;
/**
* A component that displays the CLI on the bottom of page.
*/
export declare class CliPanelComponent implements OnInit, OnDestroy, ICliPanelRef<CliEngine> {
private readonly elementRef;
/**
* The options for the CLI.
*/
options?: CliPanelOptions;
/**
* Optional list of CLI modules to register with each terminal pane.
*/
modules?: ICliModule[];
/**
* Optional list of command processors to register with each terminal pane.
* This allows passing processors without Angular DI (framework-agnostic pattern).
* @deprecated Use modules instead.
*/
processors?: ICliCommandProcessor[];
onClose: EventEmitter<void>;
collapsed?: boolean;
collapsedChange: EventEmitter<boolean>;
hidden?: boolean;
hiddenChange: EventEmitter<boolean>;
maximized?: boolean;
maximizedChange: EventEmitter<boolean>;
activeTabId?: number;
activeTabIdChange: EventEmitter<number>;
position?: CliPanelPosition;
positionChange: EventEmitter<CliPanelPosition>;
height?: number;
heightChange: EventEmitter<number>;
width?: number;
widthChange: EventEmitter<number>;
onTabAdded: EventEmitter<{
tabId: number;
}>;
onTabClosed: EventEmitter<{
tabId: number;
}>;
onPaneSplit: EventEmitter<{
paneId: number;
tabId: number;
}>;
onPaneClosed: EventEmitter<{
paneId: number;
}>;
collapsableContent: CollapsableContentComponent;
cliComponents: QueryList<CliComponent>;
currentPosition: CliPanelPosition;
themeStyles: Record<string, string>;
visible: boolean;
tabs: TerminalTab[];
tabStatuses: Record<number, TabStatus>;
activePaneId: number;
private _internalActiveTabId;
private _internalCollapsed;
private _internalHidden;
private _internalMaximized;
private _internalHeight;
private _internalWidth;
private nextTabId;
private nextPaneId;
private statusService;
private destroy$;
globalStatus: GlobalStatus;
protected get resolvedCollapsed(): boolean;
protected get resolvedHidden(): boolean;
protected get resolvedMaximized(): boolean;
protected get resolvedActiveTabId(): number;
protected get resolvedHeight(): number;
protected get resolvedWidth(): number;
protected get resolvedPosition(): CliPanelPosition;
contextMenu: TabContextMenu;
paneResizing: boolean;
private paneResizeTabId;
private paneResizeDividerIndex;
private paneResizeStartX;
private paneResizeStartWidths;
private paneResizeContainerWidth;
private static readonly MIN_PANE_WIDTH_PERCENT;
protected terminalHeight: string;
protected initialized: boolean;
private themeObserver?;
constructor(elementRef: ElementRef);
ngOnInit(): void;
ngOnDestroy(): void;
onDocumentClick(event: MouseEvent): void;
onEscapeKey(): void;
onPositionChange(position: CliPanelPosition): void;
onToggle($event: boolean): void;
onContentSizeChange(_event: number): void;
addTab(title?: string): number;
closeTab(id: number): void;
selectTab(id: number): void;
trackByTabId(_index: number, tab: TerminalTab): number;
getTabDotClass(tabId: number): string;
onPaneEngineReady(tabId: number, paneId: number, engine: CliEngine): void;
trackByPaneId(_index: number, pane: TerminalPane): number;
startRename(tab: TerminalTab): void;
onTabDoubleClick(tab: TerminalTab): void;
commitRename(tab: TerminalTab, value: string): void;
onRenameKeydown(event: KeyboardEvent, tab: TerminalTab): void;
onRenameBlur(event: FocusEvent, tab: TerminalTab): void;
onTabContextMenu(event: MouseEvent, tab: TerminalTab): void;
closeContextMenu(): void;
contextMenuRename(): void;
contextMenuDuplicate(): void;
contextMenuClose(): void;
contextMenuCloseOthers(): void;
contextMenuCloseToTheRight(): void;
contextMenuCloseAll(): void;
splitPane(tabId?: number): number;
closePane(paneId: number): void;
contextMenuSplitRight(): void;
onPaneResizeStart(event: MouseEvent, tabId: number, dividerIndex: number): void;
onPaneResizeMove(event: MouseEvent): void;
onPaneResizeEnd(): void;
onPaneClick(tabId: number, paneId: number): void;
open(): void;
collapse(): void;
toggleCollapse(): void;
hide(): void;
unhide(): void;
toggleHide(): void;
close(): void;
maximize(): void;
restore(): void;
toggleMaximize(): void;
resize(dimensions: {
height?: number;
width?: number;
}): void;
setPosition(pos: CliPanelPosition): void;
renameTab(tabId: number, title: string): void;
getEngine(paneId?: number): CliEngine | undefined;
getState(): CliPanelState;
private findTab;
private getEngineForTab;
private cancelAllEditing;
private focusActiveTerminal;
private focusPane;
private normalizePaneWidths;
private setupThemeSync;
private syncThemeFromEngine;
static ɵfac: i0.ɵɵFactoryDeclaration<CliPanelComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<CliPanelComponent, "cli-panel", never, { "options": { "alias": "options"; "required": false; }; "modules": { "alias": "modules"; "required": false; }; "processors": { "alias": "processors"; "required": false; }; "collapsed": { "alias": "collapsed"; "required": false; }; "hidden": { "alias": "hidden"; "required": false; }; "maximized": { "alias": "maximized"; "required": false; }; "activeTabId": { "alias": "activeTabId"; "required": false; }; "position": { "alias": "position"; "required": false; }; "height": { "alias": "height"; "required": false; }; "width": { "alias": "width"; "required": false; }; }, { "onClose": "onClose"; "collapsedChange": "collapsedChange"; "hiddenChange": "hiddenChange"; "maximizedChange": "maximizedChange"; "activeTabIdChange": "activeTabIdChange"; "positionChange": "positionChange"; "heightChange": "heightChange"; "widthChange": "widthChange"; "onTabAdded": "onTabAdded"; "onTabClosed": "onTabClosed"; "onPaneSplit": "onPaneSplit"; "onPaneClosed": "onPaneClosed"; }, never, never, false, never>;
}