Remove a11y event dep, introduce forwardEvent helper

This commit is contained in:
Daniel Imms
2020-04-25 16:45:46 -07:00
parent e9db1ecd1f
commit 3897950e22
4 changed files with 20 additions and 13 deletions
+6 -2
View File
@@ -238,6 +238,10 @@ export class InputHandler extends Disposable implements IInputHandler {
public get onScroll(): IEvent<number> { return this._onScroll.event; }
private _onTitleChange = new EventEmitter<string>();
public get onTitleChange(): IEvent<string> { return this._onTitleChange.event; }
private _onA11yChar = new EventEmitter<string>();
public get onA11yChar(): IEvent<string> { return this._onA11yChar.event; }
private _onA11yTab = new EventEmitter<number>();
public get onA11yTab(): IEvent<number> { return this._onA11yTab.event; }
constructor(
private _terminal: IInputHandlingTerminal,
@@ -520,7 +524,7 @@ export class InputHandler extends Disposable implements IInputHandler {
}
if (screenReaderMode) {
this._terminal.onA11yCharEmitter.fire(stringFromCodePoint(code));
this._onA11yChar.fire(stringFromCodePoint(code));
}
// insert combining char at last cursor position
@@ -738,7 +742,7 @@ export class InputHandler extends Disposable implements IInputHandler {
const originalX = this._bufferService.buffer.x;
this._bufferService.buffer.x = this._bufferService.buffer.nextStop();
if (this._optionsService.options.screenReaderMode) {
this._terminal.onA11yTabEmitter.fire(this._bufferService.buffer.x - originalX);
this._onA11yTab.fire(this._bufferService.buffer.x - originalX);
}
}
+10 -8
View File
@@ -41,7 +41,7 @@ import { ITheme, IMarker, IDisposable, ISelectionPosition, ILinkProvider } from
import { DomRenderer } from 'browser/renderer/dom/DomRenderer';
import { IKeyboardEvent, KeyboardResultType, IBufferLine, IAttributeData, CoreMouseEventType, CoreMouseButton, CoreMouseAction, ITerminalOptions } from 'common/Types';
import { evaluateKeyboardEvent } from 'common/input/Keyboard';
import { EventEmitter, IEvent } from 'common/EventEmitter';
import { EventEmitter, IEvent, forwardEvent } from 'common/EventEmitter';
import { DEFAULT_ATTR_DATA } from 'common/buffer/BufferLine';
import { ColorManager } from 'browser/ColorManager';
import { RenderService } from 'browser/services/RenderService';
@@ -133,10 +133,10 @@ export class Terminal extends CoreTerminal implements ITerminal, IInputHandlingT
public get onFocus(): IEvent<void> { return this._onFocus.event; }
private _onBlur = new EventEmitter<void>();
public get onBlur(): IEvent<void> { return this._onBlur.event; }
public onA11yCharEmitter = new EventEmitter<string>();
public get onA11yChar(): IEvent<string> { return this.onA11yCharEmitter.event; }
public onA11yTabEmitter = new EventEmitter<number>();
public get onA11yTab(): IEvent<number> { return this.onA11yTabEmitter.event; }
private _onA11yCharEmitter = new EventEmitter<string>();
public get onA11yChar(): IEvent<string> { return this._onA11yCharEmitter.event; }
private _onA11yTabEmitter = new EventEmitter<number>();
public get onA11yTab(): IEvent<number> { return this._onA11yTabEmitter.event; }
/**
* Creates a new `Terminal` object.
@@ -180,9 +180,11 @@ export class Terminal extends CoreTerminal implements ITerminal, IInputHandlingT
this._inputHandler.onRequestBell(() => this.bell());
this._inputHandler.onRequestRefreshRows((start, end) => this.refresh(start, end));
this._inputHandler.onRequestReset(() => this.reset());
this._inputHandler.onCursorMove(() => this._onCursorMove.fire());
this._inputHandler.onLineFeed(() => this._onLineFeed.fire());
this._inputHandler.onTitleChange(title => this._onTitleChange.fire(title));
forwardEvent(this._inputHandler.onCursorMove, this._onCursorMove);
forwardEvent(this._inputHandler.onLineFeed, this._onLineFeed);
forwardEvent(this._inputHandler.onTitleChange, this._onTitleChange);
forwardEvent(this._inputHandler.onA11yChar, this._onA11yCharEmitter);
forwardEvent(this._inputHandler.onA11yTab, this._onA11yTabEmitter);
this.register(this._inputHandler);
}
-3
View File
@@ -23,9 +23,6 @@ export type LineData = CharData[];
export interface IInputHandlingTerminal {
viewport: IViewport;
onA11yCharEmitter: IEventEmitter<string>;
onA11yTabEmitter: IEventEmitter<number>;
scroll(eraseAttr: IAttributeData, isWrapped?: boolean): void;
is(term: string): boolean;
resize(x: number, y: number): void;
+4
View File
@@ -63,3 +63,7 @@ export class EventEmitter<T, U = void> implements IEventEmitter<T, U> {
this._disposed = true;
}
}
export function forwardEvent<T>(from: IEvent<T>, to: IEventEmitter<T>): void {
from(e => to.fire(e));
}