@alauda-fe/common
Version:
Alauda frontend team common codes.
94 lines (93 loc) • 4.28 kB
TypeScript
import { NotificationService, SearchComponent } from '@alauda/ui';
import { ChangeDetectorRef, ElementRef, EventEmitter, OnChanges, OnDestroy, OnInit, SimpleChanges, TemplateRef } from '@angular/core';
import { Subject } from 'rxjs';
import { Terminal } from 'xterm';
import { CanvasAddon } from 'xterm-addon-canvas';
import { WebglAddon } from 'xterm-addon-webgl';
import { ApiGatewayService } from '../../api/public-api';
import { K8sPermissionService } from '../../permission/k8s-permission.service';
import { TranslateService } from '../../translate/public-api';
import { ConnectionStatus } from '../constants';
import { TerminalOption } from '../types';
import * as i0 from "@angular/core";
export declare const BIN_SH = "/bin/sh";
export declare const EXEC_FAILED_MESSAGE_CONTAINERD = "Internal error occurred: error executing command in container";
export declare const EXEC_FAILED_MESSAGE_DOCKER = "OCI runtime exec failed: exec failed: unable to start container process";
export declare const NO_PERMISSION_CODE = 40001;
export declare function initRendererAddon(): WebglAddon | CanvasAddon;
/**
* For dispatching keyboard events automatically to xterm,
* please view https://www.physics.udel.edu/~watson/scen103/ascii.html for reference.
*
* For instance, if you want to dispatch `Ctrl+C` to xterm, you should dispatch `\x03`(aka `\u0003`) to the socket.
*
* ```ts
* socket.send('0' + encode('\u0003'))
* ```
*/
export declare class TerminalComponent implements OnChanges, OnDestroy, OnInit {
private readonly apiGateway;
private readonly notification;
private readonly translate;
private readonly cdr;
private readonly k8sPermission;
private readonly globalNamespace;
ConnectionStatus: typeof ConnectionStatus;
option: TerminalOption;
index: number;
extraButton: TemplateRef<unknown>;
extraContent: TemplateRef<unknown>;
readonly connectionStatusChange: EventEmitter<ConnectionStatus>;
readonly sendData: EventEmitter<string>;
readonly socketReady: EventEmitter<WebSocket>;
readonly fallbackShell: EventEmitter<string>;
anchorRef: ElementRef<HTMLDivElement>;
searchInputRef: SearchComponent;
beforeUnload(event: BeforeUnloadEvent): void;
unload(_event: BeforeUnloadEvent): void;
theme: 'light' | 'dark';
fontSize: number;
searching: boolean;
searchKeyword: string;
coding: string;
connectionStatus: ConnectionStatus;
commandHasRun: boolean;
xterm: Terminal;
private searchAddon;
private fitAddon;
private socket;
private ping;
socket$$: Subject<WebSocket>;
shouldFallBackOnClose: boolean;
get themeClass(): string;
get showLoading(): boolean;
constructor(apiGateway: ApiGatewayService, notification: NotificationService, translate: TranslateService, cdr: ChangeDetectorRef, k8sPermission: K8sPermissionService, globalNamespace: string);
ngOnInit(): void;
ngOnChanges({ option }: SimpleChanges): void;
ngOnDestroy(): void;
focus(): void;
reconnect(): void;
killProcess(): void;
switchTheme(): void;
fontSizeChange(size: number): void;
openSearching(): void;
closeSearching(): void;
onShellKeyDown(event: KeyboardEvent): void;
onSearchInputKeyDown(event: KeyboardEvent): void;
private getSearchOptions;
findNext(): void;
findPrevious(): void;
private initXterm;
private initFitAddon;
private initSearchAddon;
private initSocket;
private readonly initSocketListeners;
private readonly initSocketConnection;
private fallBackOnClose;
private closeSocket;
private resizeRemoteTerminal;
private updateConnectionStatus;
activateTerminal(): void;
static ɵfac: i0.ɵɵFactoryDeclaration<TerminalComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<TerminalComponent, "acl-terminal", never, { "option": { "alias": "option"; "required": false; }; "index": { "alias": "index"; "required": false; }; "extraButton": { "alias": "extraButton"; "required": false; }; "extraContent": { "alias": "extraContent"; "required": false; }; }, { "connectionStatusChange": "connectionStatusChange"; "sendData": "sendData"; "socketReady": "socketReady"; "fallbackShell": "fallbackShell"; }, never, never, false, never>;
}