From b22762b47209e884af4e22cc1c8f59e78c78984e Mon Sep 17 00:00:00 2001 From: Ayman Bagabas Date: Thu, 21 Sep 2023 10:26:46 -0400 Subject: [PATCH] Fix tsconfigs, IDisposable, and add comments --- addons/xterm-addon-clipboard/package.json | 2 +- .../xterm-addon-clipboard/src/ClipboardAddon.ts | 9 ++++----- addons/xterm-addon-clipboard/src/tsconfig.json | 2 +- addons/xterm-addon-clipboard/test/tsconfig.json | 6 +++--- src/browser/Terminal.ts | 11 ++++++----- src/browser/TestUtils.test.ts | 5 +---- src/browser/public/Terminal.ts | 7 ++----- test/playwright/TestUtils.ts | 1 - typings/xterm.d.ts | 17 ++++++++--------- 9 files changed, 26 insertions(+), 34 deletions(-) diff --git a/addons/xterm-addon-clipboard/package.json b/addons/xterm-addon-clipboard/package.json index 2929d90f..ccdbf599 100644 --- a/addons/xterm-addon-clipboard/package.json +++ b/addons/xterm-addon-clipboard/package.json @@ -7,7 +7,7 @@ }, "main": "lib/xterm-addon-clipboard.js", "types": "typings/xterm-addon-clipboard.d.ts", - "repository": "https://github.com/xtermjs/xterm.js", + "repository": "https://github.com/xtermjs/xterm.js/tree/master/addons/xterm-addon-clipboard", "license": "MIT", "keywords": [ "terminal", diff --git a/addons/xterm-addon-clipboard/src/ClipboardAddon.ts b/addons/xterm-addon-clipboard/src/ClipboardAddon.ts index 5a89751f..51c113db 100644 --- a/addons/xterm-addon-clipboard/src/ClipboardAddon.ts +++ b/addons/xterm-addon-clipboard/src/ClipboardAddon.ts @@ -4,18 +4,17 @@ */ import { ClipboardProvider } from './ClipboardProvider'; -import { IClipboardProvider, ITerminalAddon, Terminal } from 'xterm'; +import { IClipboardProvider, IDisposable, ITerminalAddon, Terminal } from 'xterm'; export class ClipboardAddon implements ITerminalAddon { - private _terminal: Terminal | undefined; + private _disposable: IDisposable | undefined; constructor(private _provider: IClipboardProvider = new ClipboardProvider()) {} public activate(terminal: Terminal): void { - this._terminal = terminal; - terminal.registerClipboardProvider(this._provider); + this._disposable = terminal.registerClipboardProvider(this._provider); } public dispose(): void { - this._terminal?.deregisterClipboardProvider(); + return this._disposable?.dispose(); } } diff --git a/addons/xterm-addon-clipboard/src/tsconfig.json b/addons/xterm-addon-clipboard/src/tsconfig.json index 7f87b445..55cdc7c5 100644 --- a/addons/xterm-addon-clipboard/src/tsconfig.json +++ b/addons/xterm-addon-clipboard/src/tsconfig.json @@ -1,7 +1,7 @@ { "compilerOptions": { "module": "commonjs", - "target": "es2017", + "target": "es2021", "sourceMap": true, "outDir": "../out", "rootDir": ".", diff --git a/addons/xterm-addon-clipboard/test/tsconfig.json b/addons/xterm-addon-clipboard/test/tsconfig.json index 1e5ab21e..ffa1c5fa 100644 --- a/addons/xterm-addon-clipboard/test/tsconfig.json +++ b/addons/xterm-addon-clipboard/test/tsconfig.json @@ -1,9 +1,9 @@ { "compilerOptions": { "module": "commonjs", - "target": "es2015", + "target": "es2021", "lib": [ - "es2015" + "es2021" ], "rootDir": ".", "outDir": "../out-test", @@ -19,4 +19,4 @@ "./**/*", "../../../typings/xterm.d.ts" ] -} \ No newline at end of file +} diff --git a/src/browser/Terminal.ts b/src/browser/Terminal.ts index edbdda85..12963b4c 100644 --- a/src/browser/Terminal.ts +++ b/src/browser/Terminal.ts @@ -883,12 +883,13 @@ export class Terminal extends CoreTerminal implements ITerminal { return this.linkifier2.registerLinkProvider(linkProvider); } - public registerClipboardProvider(provider: IClipboardProvider): void { + public registerClipboardProvider(provider: IClipboardProvider): IDisposable { this._clipboardProvider = provider; - } - - public deregisterClipboardProvider(): void { - this._clipboardProvider = undefined; + return { + dispose: () => { + this._clipboardProvider = undefined; + } + }; } public registerCharacterJoiner(handler: CharacterJoinerHandler): number { diff --git a/src/browser/TestUtils.test.ts b/src/browser/TestUtils.test.ts index 5a96f0af..e38017e1 100644 --- a/src/browser/TestUtils.test.ts +++ b/src/browser/TestUtils.test.ts @@ -104,10 +104,7 @@ export class MockTerminal implements ITerminal { public registerDecoration(decorationOptions: IDecorationOptions): IDecoration | undefined { throw new Error('Method not implemented.'); } - public registerClipboardProvider(provider: IClipboardProvider): void { - throw new Error('Method not implemented.'); - } - public deregisterClipboardProvider(): void { + public registerClipboardProvider(provider: IClipboardProvider): IDisposable { throw new Error('Method not implemented.'); } public hasSelection(): boolean { diff --git a/src/browser/public/Terminal.ts b/src/browser/public/Terminal.ts index c7495b21..808519a5 100644 --- a/src/browser/public/Terminal.ts +++ b/src/browser/public/Terminal.ts @@ -168,11 +168,8 @@ export class Terminal extends Disposable implements ITerminalApi { this._verifyPositiveIntegers(decorationOptions.x ?? 0, decorationOptions.width ?? 0, decorationOptions.height ?? 0); return this._core.registerDecoration(decorationOptions); } - public registerClipboardProvider(provider: IClipboardProvider): void { - this._core.registerClipboardProvider(provider); - } - public deregisterClipboardProvider(): void { - this._core.deregisterClipboardProvider(); + public registerClipboardProvider(provider: IClipboardProvider): IDisposable { + return this._core.registerClipboardProvider(provider); } public hasSelection(): boolean { return this._core.hasSelection(); diff --git a/test/playwright/TestUtils.ts b/test/playwright/TestUtils.ts index 6b5547d7..d58aa88e 100644 --- a/test/playwright/TestUtils.ts +++ b/test/playwright/TestUtils.ts @@ -78,7 +78,6 @@ type TerminalProxyCustomOverrides = 'buffer' | ( 'registerLinkProvider' | 'registerCharacterJoiner' | 'registerClipboardProvider' | - 'deregisterClipboardProvider' | 'deregisterCharacterJoiner' | 'loadAddon' ); diff --git a/typings/xterm.d.ts b/typings/xterm.d.ts index 10b8939e..0ab9071a 100644 --- a/typings/xterm.d.ts +++ b/typings/xterm.d.ts @@ -1073,12 +1073,7 @@ declare module 'xterm' { * clipboard to read/write clipboard data. * @param provider The provider to register. */ - registerClipboardProvider(provider: IClipboardProvider): void; - - /** - * Deregisters the active clipboard provider. - */ - deregisterClipboardProvider(): void; + registerClipboardProvider(provider: IClipboardProvider): IDisposable; /** * Gets whether the terminal has an active selection. @@ -1873,14 +1868,18 @@ declare module 'xterm' { /** * Sets the clipboard content. * @param selection The clipboard selection to set. - * @param data The base64 encoded data to set. If the data is invalid base64, the clipboard is - * cleared. + * @param data The base64 encoded data to set. If the data is invalid + * base64, the clipboard is cleared. */ writeText(selection: ClipboardSelection, data: string): Promise; } /** - * Clipboard selection type. + * Clipboard selection type. This is used to specify which selection buffer to + * read or write to. + * - SYSTEM `c`: The system clipboard. + * - PRIMARY `p`: The primary clipboard. This is provided for compatibility + * with Linux X11. */ export const enum ClipboardSelection { SYSTEM = 'c',