mirror of
https://github.com/wavetermdev/xterm.js.git
synced 2026-08-05 13:43:48 -07:00
Fix tests
This commit is contained in:
@@ -3,7 +3,7 @@
|
|||||||
* @license MIT
|
* @license MIT
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { Terminal as ITerminalApi, ITerminalOptions, IMarker, IDisposable, ILinkMatcherOptions, ITheme, ILocalizableStrings, ITerminalAddon, ISelectionPosition, IBufferNamespace as IBufferNamespaceApi, IParser, ILinkProvider, IUnicodeHandling, FontWeight, IModes } from 'xterm';
|
import { Terminal as ITerminalApi, IMarker, IDisposable, ILinkMatcherOptions, ITheme, ILocalizableStrings, ITerminalAddon, ISelectionPosition, IBufferNamespace as IBufferNamespaceApi, IParser, ILinkProvider, IUnicodeHandling, FontWeight, IModes } from 'xterm';
|
||||||
import { ITerminal } from 'browser/Types';
|
import { ITerminal } from 'browser/Types';
|
||||||
import { Terminal as TerminalCore } from 'browser/Terminal';
|
import { Terminal as TerminalCore } from 'browser/Terminal';
|
||||||
import * as Strings from 'browser/LocalizableStrings';
|
import * as Strings from 'browser/LocalizableStrings';
|
||||||
@@ -12,6 +12,7 @@ import { ParserApi } from 'common/public/ParserApi';
|
|||||||
import { UnicodeApi } from 'common/public/UnicodeApi';
|
import { UnicodeApi } from 'common/public/UnicodeApi';
|
||||||
import { AddonManager } from 'common/public/AddonManager';
|
import { AddonManager } from 'common/public/AddonManager';
|
||||||
import { BufferNamespaceApi } from 'common/public/BufferNamespaceApi';
|
import { BufferNamespaceApi } from 'common/public/BufferNamespaceApi';
|
||||||
|
import { ITerminalOptions } from 'common/Types';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The set of options that only have an effect when set in the Terminal constructor.
|
* The set of options that only have an effect when set in the Terminal constructor.
|
||||||
@@ -23,10 +24,33 @@ export class Terminal implements ITerminalApi {
|
|||||||
private _addonManager: AddonManager;
|
private _addonManager: AddonManager;
|
||||||
private _parser: IParser | undefined;
|
private _parser: IParser | undefined;
|
||||||
private _buffer: BufferNamespaceApi | undefined;
|
private _buffer: BufferNamespaceApi | undefined;
|
||||||
|
private _publicOptions: ITerminalOptions;
|
||||||
|
|
||||||
constructor(options?: ITerminalOptions) {
|
constructor(options?: ITerminalOptions) {
|
||||||
this._core = new TerminalCore(options);
|
this._core = new TerminalCore(options);
|
||||||
this._addonManager = new AddonManager();
|
this._addonManager = new AddonManager();
|
||||||
|
|
||||||
|
this._publicOptions = {};
|
||||||
|
for (const propName in this._core.options) {
|
||||||
|
Object.defineProperty(this._publicOptions, propName, {
|
||||||
|
get: () => {
|
||||||
|
return this._core.options[propName];
|
||||||
|
},
|
||||||
|
set: (value: any) => {
|
||||||
|
this._checkReadonlyOptions(propName);
|
||||||
|
this._core.options[propName] = value;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private _checkReadonlyOptions(propName: string): void {
|
||||||
|
// Throw an error if any constructor only option is modified
|
||||||
|
// from terminal.options
|
||||||
|
// Modifications from anywhere else are allowed
|
||||||
|
if (CONSTRUCTOR_ONLY_OPTIONS.includes(propName)) {
|
||||||
|
throw new Error(`Option "${propName}" can only be set in the constructor`);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private _checkProposedApi(): void {
|
private _checkProposedApi(): void {
|
||||||
@@ -95,11 +119,12 @@ export class Terminal implements ITerminalApi {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
public get options(): ITerminalOptions {
|
public get options(): ITerminalOptions {
|
||||||
return this._core.options;
|
return this._publicOptions;
|
||||||
}
|
}
|
||||||
public set options(options: ITerminalOptions) {
|
public set options(options: ITerminalOptions) {
|
||||||
this._checkReadonlyOptions(options);
|
for (const propName in options) {
|
||||||
this._core.options = options;
|
this._publicOptions[propName] = options[propName];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
public blur(): void {
|
public blur(): void {
|
||||||
this._core.blur();
|
this._core.blur();
|
||||||
@@ -225,7 +250,7 @@ export class Terminal implements ITerminalApi {
|
|||||||
public setOption(key: 'cols' | 'rows', value: number): void;
|
public setOption(key: 'cols' | 'rows', value: number): void;
|
||||||
public setOption(key: string, value: any): void;
|
public setOption(key: string, value: any): void;
|
||||||
public setOption(key: any, value: any): void {
|
public setOption(key: any, value: any): void {
|
||||||
this._checkReadonlyOptions();
|
this._checkReadonlyOptions(key);
|
||||||
this._core.optionsService.setOption(key, value);
|
this._core.optionsService.setOption(key, value);
|
||||||
}
|
}
|
||||||
public refresh(start: number, end: number): void {
|
public refresh(start: number, end: number): void {
|
||||||
@@ -252,15 +277,4 @@ export class Terminal implements ITerminalApi {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private _checkReadonlyOptions(options?: ITerminalOptions): void {
|
|
||||||
// Throw an error if any constructor only option is modified
|
|
||||||
// from terminal.options
|
|
||||||
// Modifications from anywhere else are allowed
|
|
||||||
for (const propName in options) {
|
|
||||||
if (CONSTRUCTOR_ONLY_OPTIONS.includes(propName)) {
|
|
||||||
throw new Error(`Option "${propName}" can only be set in the constructor`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user