| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- import { Observable, Subject, AsyncSubject, ReplaySubject, BehaviorSubject } from 'rxjs'
- import { ResizeEvent } from '../api'
- import { ConfigService, ThemesService, HotkeysService } from 'terminus-core'
- /**
- * Extend to add support for a different VT frontend implementation
- */
- export abstract class Frontend {
- configService: ConfigService
- themesService: ThemesService
- hotkeysService: HotkeysService
- enableResizing = true
- protected ready = new AsyncSubject<void>()
- protected title = new ReplaySubject<string>(1)
- protected alternateScreenActive = new BehaviorSubject<boolean>(false)
- protected mouseEvent = new Subject<MouseEvent>()
- protected bell = new Subject<void>()
- protected contentUpdated = new Subject<void>()
- protected input = new Subject<string>()
- protected resize = new ReplaySubject<ResizeEvent>(1)
- protected dragOver = new Subject<DragEvent>()
- protected drop = new Subject<DragEvent>()
- get ready$ (): Observable<void> { return this.ready }
- get title$ (): Observable<string> { return this.title }
- get alternateScreenActive$ (): Observable<boolean> { return this.alternateScreenActive }
- get mouseEvent$ (): Observable<MouseEvent> { return this.mouseEvent }
- get bell$ (): Observable<void> { return this.bell }
- get contentUpdated$ (): Observable<void> { return this.contentUpdated }
- get input$ (): Observable<string> { return this.input }
- get resize$ (): Observable<ResizeEvent> { return this.resize }
- get dragOver$ (): Observable<DragEvent> { return this.dragOver }
- get drop$ (): Observable<DragEvent> { return this.drop }
- abstract attach (host: HTMLElement): void
- detach (host: HTMLElement): void { } // tslint:disable-line
- destroy (): void {
- for (let o of [
- this.ready,
- this.title,
- this.alternateScreenActive,
- this.mouseEvent,
- this.bell,
- this.contentUpdated,
- this.input,
- this.resize,
- this.dragOver,
- this.drop,
- ]) {
- o.complete()
- }
- }
- abstract getSelection (): string
- abstract copySelection (): void
- abstract clearSelection (): void
- abstract focus (): void
- abstract write (data: string): void
- abstract clear (): void
- abstract visualBell (): void
- abstract scrollToBottom (): void
- abstract configure (): void
- abstract setZoom (zoom: number): void
- }
|