UNPKG

ng-terminal

Version:

NgTerminal is a terminal component on Angular 16 or higher.

196 lines (195 loc) 7.45 kB
import { OnInit, ElementRef, EventEmitter, OnDestroy, AfterViewInit, OnChanges, Renderer2, SimpleChanges } from '@angular/core'; import { ITerminalOptions, Terminal } from '@xterm/xterm'; import { NgTerminal } from './ng-terminal'; import { Observable } from 'rxjs'; import { ResizeEvent } from 'angular-resizable-element'; import { LoggingService } from './logging.service'; import * as i0 from "@angular/core"; export declare class NgTerminalComponent implements OnInit, OnChanges, AfterViewInit, NgTerminal, OnDestroy { private renderer; private hostRef; private loggingService; private linearRender; private xterm?; private fitAddon?; private dataSubject; private keySubject; private keyInputSubjectSubscription?; private keyEventSubjectSubscription?; private allLogsSubjectSubscription?; private dataSourceSubscription?; private resizableObservers; private dataSource?; private readonly paddingSize; stylesForResizeBox: Partial<CSSStyleDeclaration>; /** * @deprecated use (data)='' instead. * An emitter emits printable characters pushed from xterm's onData() when a user typed on the terminal. */ keyInputEmitter: EventEmitter<string>; /** * @deprecated use (key)='' instead. * An emitter emits key and keybaord event pushed from xterm's onKey() when a user typed on the terminal. */ keyEventEmitter: EventEmitter<{ key: string; domEvent: KeyboardEvent; }>; /** * An emitter emits printable characters pushed from xterm's onData() when a user typed on the terminal. */ dataEmitter: EventEmitter<string>; /** * An emitter emits key and keybaord event pushed from xterm's onKey() when a user typed on the terminal. */ keyEmitter: EventEmitter<{ key: string; domEvent: KeyboardEvent; }>; /** * A datsource is an observable where NgTerminal reads charactors. */ set _dataSource(dataSource: Observable<string> | undefined); /** * Change the row count of a terminal immediately. */ _rowsInput?: number; /** * Change the column count of a terminal immediately. */ _colsInput?: number; /** * Set the minimum width to limit dragging. */ _minWidthInput?: number; /** * Set the minimum height to limit dragging. */ _minHeightInput?: number; /** * Toggle draggable. */ set draggable(draggable: boolean); /** * An wrapper of {@link ITerminalOptions} for Xterm. */ _xtermOptions: ITerminalOptions & { theme?: { border?: string; }; }; terminalOuter: ElementRef<HTMLDivElement>; resizeBox: ElementRef<HTMLDivElement>; detectBox: ElementRef<HTMLDivElement>; get draggable(): boolean; lastDraggedPosition?: { width: string; height: string; }; _draggable: boolean; _stylesInput: any; setMinWidth(width: number): void; setMinHeight(height: number): void; setDraggable(draggable: boolean): void; setXtermOptions(options: ITerminalOptions & { theme?: { border?: string; }; }): void; setRows(rows: number): void; setCols(cols: number): void; setStyle(styleObject: any): void; handleToCheckLazyContainer?: ReturnType<typeof setInterval>; constructor(renderer: Renderer2, //Render is being used for fast rendering without markForCheck(). hostRef: ElementRef<HTMLElement>, loggingService: LoggingService); private setup; /** * set dimensions */ private setOuterDimensions; private applyStylesToResizeBox; ngOnInit(): void; /** * It creates new terminal in #terminal. */ ngAfterViewInit(): void; ngOnChanges(changes?: SimpleChanges): void; resizeHandleStyleRule?: CSSStyleRule; resizeHandleActiveStyleRule?: CSSStyleRule; /** * It serves a callback function to adjust the dimensions of the xterm-screen, xterm-view, and resize box * after making any changes to the outer box, rows, or columns, or when the resize box is being dragged. * * There several factors that affect dimensions, as I mentioned earlier. * Regardless of whether the draggable feature is on, if new row or column value is input, this value will be applied. * - Draggable = New specified Row/Column value > Full (Default) * @param change This argument represents a single change that occured. * @returns */ private coordinateOuterAndTerminal; /** * apply options to the xterm terminal * @returns */ private doUpdateXtermStyles; /** * If the resize handles are moved, the resize box adjusts to the new dimensions; * otherwise, it defaults to a maximized size. * @param change */ private doAdjustDimensionOfResizeBox; /** * This function uses fitAddon() to adjust the dimension of xterm-screen to character unit * If the draggable value is true or there are no fixed values for the row or column, * it fits the xterm terminal boxes into the resize box; * otherwise, it resizes the xterm terminal with specified row and column values. */ private doAdjustSizeOfXtermScreen; /** * This functions sets width of the resize box, xterm-viewport and xterm-screen with specific pixel values. */ private doUpdateViewportAndResizeBoxWithPixcelUnit; private printDimension; /** * If pushAndHandle() were used, there could be an issue * because it can adjust the size of elements during a loop of ResizeObserver. */ private setupResizeObservers; private observeXtermViewportDimension; lastDetectedWidth: number; private observeHostDimension; /** * clean all resources */ ngOnDestroy(): void; write(chars: string): void; get keyInput(): Observable<string>; onData(): Observable<string>; get keyEventInput(): Observable<{ key: string; domEvent: KeyboardEvent; }>; onKey(): Observable<{ key: string; domEvent: KeyboardEvent; }>; get underlying(): Terminal | undefined; get isDraggableOnEdgeActivated(): boolean; private get scrollBarWidth(); /** * After user coordinate dimensions of terminal, it's called. * @param left * @param top * @param width * @param height */ onResizeEnd(left: number, top: number, width: number, height: number): void; /** * Before onResizeEnd is called, it valiates dimensions to change. * @param re dimension to be submitted from resizable stuff */ validatorFactory(): (re: ResizeEvent) => boolean; private findCssStyleRule; static ɵfac: i0.ɵɵFactoryDeclaration<NgTerminalComponent, never>; static ɵcmp: i0.ɵɵComponentDeclaration<NgTerminalComponent, "ng-terminal", never, { "_dataSource": "dataSource"; "_rowsInput": "rows"; "_colsInput": "cols"; "_minWidthInput": "minWidth"; "_minHeightInput": "minHeight"; "draggable": "draggable"; "_xtermOptions": "xtermOptions"; }, { "keyInputEmitter": "keyInput"; "keyEventEmitter": "keyEvent"; "dataEmitter": "data"; "keyEmitter": "key"; }, never, never, false, never>; }