import { SafeHtml } from '@angular/platform-browser'
import { BaseTerminalTabComponent } from './components/baseTerminalTab.component'
/**
* Extend to automatically run actions on new terminals
*/
export abstract class TerminalDecorator {
/**
* Called when a new terminal tab starts
*/
attach (terminal: BaseTerminalTabComponent): void { } // tslint:disable-line no-empty
/**
* Called before a terminal tab is destroyed
*/
detach (terminal: BaseTerminalTabComponent): void { } // tslint:disable-line no-empty
}
export interface ResizeEvent {
columns: number
rows: number
}
export interface SessionOptions {
name?: string
command: string
args: string[]
cwd?: string
env?: {[id: string]: string}
width?: number
height?: number
pauseAfterExit?: boolean
runAsAdministrator?: boolean
}
export interface Profile {
name: string,
sessionOptions: SessionOptions,
isBuiltin?: boolean
icon?: SafeHtml
}
export interface ITerminalColorScheme {
name: string
foreground: string
background: string
cursor: string
colors: string[]
}
/**
* Extend to add more terminal color schemes
*/
export abstract class TerminalColorSchemeProvider {
abstract async getSchemes (): Promise
}
/**
* Extend to add more terminal context menu items
*/
export abstract class TerminalContextMenuItemProvider {
weight: number
abstract async getItems (tab: BaseTerminalTabComponent): Promise
}
export interface IShell {
id: string
name?: string
command: string
args?: string[]
env: {[id: string]: string}
/**
* Base path to which shell's internal FS is relative
* Currently used for WSL only
*/
fsBase?: string
/**
* SVG icon
*/
icon?: SafeHtml
hidden?: boolean
}
/**
* Extend to add support for more shells
*/
export abstract class ShellProvider {
abstract async provide (): Promise
}