Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Expose API method for writing to application side (#4948) #4953

Merged
merged 11 commits into from
Feb 2, 2024
9 changes: 9 additions & 0 deletions src/browser/Terminal.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1191,6 +1191,15 @@

return false;
}

Check warning on line 1194 in src/browser/Terminal.ts

View workflow job for this annotation

GitHub Actions / lint

Trailing spaces not allowed
/**
* Input data to application side.

Check warning on line 1196 in src/browser/Terminal.ts

View workflow job for this annotation

GitHub Actions / lint

Expected JSDoc block to be aligned
* The data is treated the same way as typed input at the terminal (will appear in the onData event).

Check warning on line 1197 in src/browser/Terminal.ts

View workflow job for this annotation

GitHub Actions / lint

This line has a comment length of 105. Maximum allowed is 100
*/
public input(data: string): void {
jerch marked this conversation as resolved.
Show resolved Hide resolved
this.coreService.triggerDataEvent(data, true);
return this.write(data);
jerch marked this conversation as resolved.
Show resolved Hide resolved
}

/**
* Resizes the terminal.
Expand Down
3 changes: 3 additions & 0 deletions src/browser/TestUtils.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,9 @@ export class MockTerminal implements ITerminal {
public focus(): void {
throw new Error('Method not implemented.');
}
public input(data: string): void {
throw new Error('Method not implemented.');
}
public resize(columns: number, rows: number): void {
throw new Error('Method not implemented.');
}
Expand Down
3 changes: 3 additions & 0 deletions src/browser/public/Terminal.ts
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,9 @@ export class Terminal extends Disposable implements ITerminalApi {
public focus(): void {
this._core.focus();
}
public input(data: string): void {
jerch marked this conversation as resolved.
Show resolved Hide resolved
this._core.input(data);
}
public resize(columns: number, rows: number): void {
this._verifyIntegers(columns, rows);
this._core.resize(columns, rows);
Expand Down
1 change: 1 addition & 0 deletions test/playwright/TestUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,7 @@ export class TerminalProxy implements ITerminalProxyCustomMethods, PlaywrightApi
return new Promise(r => term.writeln(typeof data === 'string' ? data : new Uint8Array(data), r));
}, [await this.getHandle(), typeof data === 'string' ? data : Array.from(data)] as const);
}
public async input(data: string): Promise<void> { return this.evaluate(([term]) => term.input(data)); }
public async resize(cols: number, rows: number): Promise<void> { return this._page.evaluate(([term, cols, rows]) => term.resize(cols, rows), [await this.getHandle(), cols, rows] as const); }
public async registerMarker(y?: number | undefined): Promise<IMarker> { return this._page.evaluate(([term, y]) => term.registerMarker(y), [await this.getHandle(), y] as const); }
public async registerDecoration(decorationOptions: IDecorationOptions): Promise<IDecoration | undefined> { return this._page.evaluate(([term, decorationOptions]) => term.registerDecoration(decorationOptions), [await this.getHandle(), decorationOptions] as const); }
Expand Down
6 changes: 6 additions & 0 deletions typings/xterm.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -962,6 +962,12 @@ declare module '@xterm/xterm' {
* Focus the terminal.
*/
focus(): void;

/**
* Input data to application side.
* The data is treated the same way as typed input at the terminal (will appear in the onData event).
*/
input(data: string): void;
jerch marked this conversation as resolved.
Show resolved Hide resolved

/**
* Resizes the terminal. It's best practice to debounce calls to resize,
Expand Down
Loading