@xterm/xterm 5.6.0-beta.7 → 5.6.0-beta.70
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -3
- package/css/xterm.css +71 -4
- package/lib/xterm.js +1 -1
- package/lib/xterm.js.map +1 -1
- package/lib/xterm.mjs +53 -0
- package/lib/xterm.mjs.map +7 -0
- package/package.json +43 -33
- package/src/browser/AccessibilityManager.ts +53 -25
- package/src/browser/{Terminal.ts → CoreBrowserTerminal.ts} +135 -146
- package/src/browser/Linkifier.ts +26 -14
- package/src/browser/LocalizableStrings.ts +15 -4
- package/src/browser/{Types.d.ts → Types.ts} +67 -15
- package/src/browser/Viewport.ts +143 -370
- package/src/browser/decorations/BufferDecorationRenderer.ts +14 -9
- package/src/browser/decorations/OverviewRulerRenderer.ts +40 -44
- package/src/browser/public/Terminal.ts +25 -19
- package/src/browser/renderer/dom/DomRenderer.ts +14 -16
- package/src/browser/renderer/shared/CharAtlasUtils.ts +4 -0
- package/src/browser/renderer/shared/CustomGlyphs.ts +6 -0
- package/src/browser/renderer/shared/DevicePixelObserver.ts +1 -2
- package/src/browser/renderer/shared/TextureAtlas.ts +3 -3
- package/src/browser/renderer/shared/{Types.d.ts → Types.ts} +4 -4
- package/src/browser/services/CharSizeService.ts +6 -6
- package/src/browser/services/CoreBrowserService.ts +15 -15
- package/src/browser/services/LinkProviderService.ts +2 -2
- package/src/browser/services/RenderService.ts +20 -20
- package/src/browser/services/SelectionService.ts +8 -8
- package/src/browser/services/Services.ts +13 -13
- package/src/browser/services/ThemeService.ts +17 -56
- package/src/browser/shared/Constants.ts +8 -0
- package/src/common/CircularList.ts +5 -5
- package/src/common/CoreTerminal.ts +35 -41
- package/src/common/InputHandler.ts +34 -28
- package/src/common/{Types.d.ts → Types.ts} +11 -17
- package/src/common/buffer/Buffer.ts +5 -1
- package/src/common/buffer/BufferSet.ts +5 -5
- package/src/common/buffer/Marker.ts +4 -4
- package/src/common/buffer/{Types.d.ts → Types.ts} +2 -2
- package/src/common/input/WriteBuffer.ts +3 -3
- package/src/common/parser/EscapeSequenceParser.ts +4 -4
- package/src/common/public/BufferNamespaceApi.ts +3 -3
- package/src/common/services/BufferService.ts +7 -7
- package/src/common/services/CoreMouseService.ts +5 -3
- package/src/common/services/CoreService.ts +6 -6
- package/src/common/services/DecorationService.ts +8 -9
- package/src/common/services/LogService.ts +2 -2
- package/src/common/services/OptionsService.ts +5 -5
- package/src/common/services/Services.ts +24 -17
- package/src/common/services/UnicodeService.ts +2 -2
- package/src/vs/base/browser/browser.ts +141 -0
- package/src/vs/base/browser/canIUse.ts +49 -0
- package/src/vs/base/browser/dom.ts +2369 -0
- package/src/vs/base/browser/fastDomNode.ts +316 -0
- package/src/vs/base/browser/globalPointerMoveMonitor.ts +112 -0
- package/src/vs/base/browser/iframe.ts +135 -0
- package/src/vs/base/browser/keyboardEvent.ts +213 -0
- package/src/vs/base/browser/mouseEvent.ts +229 -0
- package/src/vs/base/browser/touch.ts +372 -0
- package/src/vs/base/browser/ui/scrollbar/abstractScrollbar.ts +303 -0
- package/src/vs/base/browser/ui/scrollbar/horizontalScrollbar.ts +114 -0
- package/src/vs/base/browser/ui/scrollbar/scrollableElement.ts +720 -0
- package/src/vs/base/browser/ui/scrollbar/scrollableElementOptions.ts +165 -0
- package/src/vs/base/browser/ui/scrollbar/scrollbarArrow.ts +114 -0
- package/src/vs/base/browser/ui/scrollbar/scrollbarState.ts +243 -0
- package/src/vs/base/browser/ui/scrollbar/scrollbarVisibilityController.ts +118 -0
- package/src/vs/base/browser/ui/scrollbar/verticalScrollbar.ts +116 -0
- package/src/vs/base/browser/ui/widget.ts +57 -0
- package/src/vs/base/browser/window.ts +14 -0
- package/src/vs/base/common/arrays.ts +887 -0
- package/src/vs/base/common/arraysFind.ts +202 -0
- package/src/vs/base/common/assert.ts +71 -0
- package/src/vs/base/common/async.ts +1992 -0
- package/src/vs/base/common/cancellation.ts +148 -0
- package/src/vs/base/common/charCode.ts +450 -0
- package/src/vs/base/common/collections.ts +140 -0
- package/src/vs/base/common/decorators.ts +130 -0
- package/src/vs/base/common/equals.ts +146 -0
- package/src/vs/base/common/errors.ts +303 -0
- package/src/vs/base/common/event.ts +1778 -0
- package/src/vs/base/common/functional.ts +32 -0
- package/src/vs/base/common/hash.ts +316 -0
- package/src/vs/base/common/iterator.ts +159 -0
- package/src/vs/base/common/keyCodes.ts +526 -0
- package/src/vs/base/common/keybindings.ts +284 -0
- package/src/vs/base/common/lazy.ts +47 -0
- package/src/vs/base/common/lifecycle.ts +801 -0
- package/src/vs/base/common/linkedList.ts +142 -0
- package/src/vs/base/common/map.ts +202 -0
- package/src/vs/base/common/numbers.ts +98 -0
- package/src/vs/base/common/observable.ts +76 -0
- package/src/vs/base/common/observableInternal/api.ts +31 -0
- package/src/vs/base/common/observableInternal/autorun.ts +281 -0
- package/src/vs/base/common/observableInternal/base.ts +489 -0
- package/src/vs/base/common/observableInternal/debugName.ts +145 -0
- package/src/vs/base/common/observableInternal/derived.ts +428 -0
- package/src/vs/base/common/observableInternal/lazyObservableValue.ts +146 -0
- package/src/vs/base/common/observableInternal/logging.ts +328 -0
- package/src/vs/base/common/observableInternal/promise.ts +209 -0
- package/src/vs/base/common/observableInternal/utils.ts +610 -0
- package/src/vs/base/common/platform.ts +281 -0
- package/src/vs/base/common/scrollable.ts +522 -0
- package/src/vs/base/common/sequence.ts +34 -0
- package/src/vs/base/common/stopwatch.ts +43 -0
- package/src/vs/base/common/strings.ts +557 -0
- package/src/vs/base/common/symbols.ts +9 -0
- package/src/vs/base/common/uint.ts +59 -0
- package/src/vs/patches/nls.ts +90 -0
- package/src/vs/typings/base-common.d.ts +20 -0
- package/src/vs/typings/require.d.ts +42 -0
- package/src/vs/typings/thenable.d.ts +12 -0
- package/src/vs/typings/vscode-globals-nls.d.ts +36 -0
- package/src/vs/typings/vscode-globals-product.d.ts +33 -0
- package/typings/xterm.d.ts +59 -15
- package/src/browser/Lifecycle.ts +0 -33
- package/src/common/EventEmitter.ts +0 -78
- package/src/common/Lifecycle.ts +0 -108
- /package/src/browser/selection/{Types.d.ts → Types.ts} +0 -0
- /package/src/common/parser/{Types.d.ts → Types.ts} +0 -0
package/src/browser/Linkifier.ts
CHANGED
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
* @license MIT
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { addDisposableDomListener } from 'browser/Lifecycle';
|
|
7
6
|
import { IBufferCellPosition, ILink, ILinkDecorations, ILinkWithState, ILinkifier2, ILinkifierEvent } from 'browser/Types';
|
|
8
|
-
import {
|
|
9
|
-
import { Disposable, disposeArray, getDisposeArrayDisposable, toDisposable } from 'common/Lifecycle';
|
|
7
|
+
import { Disposable, dispose, toDisposable } from 'vs/base/common/lifecycle';
|
|
10
8
|
import { IDisposable } from 'common/Types';
|
|
11
9
|
import { IBufferService } from 'common/services/Services';
|
|
12
10
|
import { ILinkProviderService, IMouseService, IRenderService } from './services/Services';
|
|
11
|
+
import { Emitter } from 'vs/base/common/event';
|
|
12
|
+
import { addDisposableListener } from 'vs/base/browser/dom';
|
|
13
13
|
|
|
14
14
|
export class Linkifier extends Disposable implements ILinkifier2 {
|
|
15
15
|
public get currentLink(): ILinkWithState | undefined { return this._currentLink; }
|
|
@@ -23,9 +23,9 @@ export class Linkifier extends Disposable implements ILinkifier2 {
|
|
|
23
23
|
private _activeProviderReplies: Map<Number, ILinkWithState[] | undefined> | undefined;
|
|
24
24
|
private _activeLine: number = -1;
|
|
25
25
|
|
|
26
|
-
private readonly _onShowLinkUnderline = this.
|
|
26
|
+
private readonly _onShowLinkUnderline = this._register(new Emitter<ILinkifierEvent>());
|
|
27
27
|
public readonly onShowLinkUnderline = this._onShowLinkUnderline.event;
|
|
28
|
-
private readonly _onHideLinkUnderline = this.
|
|
28
|
+
private readonly _onHideLinkUnderline = this._register(new Emitter<ILinkifierEvent>());
|
|
29
29
|
public readonly onHideLinkUnderline = this._onHideLinkUnderline.event;
|
|
30
30
|
|
|
31
31
|
constructor(
|
|
@@ -36,24 +36,25 @@ export class Linkifier extends Disposable implements ILinkifier2 {
|
|
|
36
36
|
@ILinkProviderService private readonly _linkProviderService: ILinkProviderService
|
|
37
37
|
) {
|
|
38
38
|
super();
|
|
39
|
-
this.
|
|
40
|
-
|
|
39
|
+
this._register(toDisposable(() => {
|
|
40
|
+
dispose(this._linkCacheDisposables);
|
|
41
|
+
this._linkCacheDisposables.length = 0;
|
|
41
42
|
this._lastMouseEvent = undefined;
|
|
42
43
|
// Clear out link providers as they could easily cause an embedder memory leak
|
|
43
44
|
this._activeProviderReplies?.clear();
|
|
44
45
|
}));
|
|
45
46
|
// Listen to resize to catch the case where it's resized and the cursor is out of the viewport.
|
|
46
|
-
this.
|
|
47
|
+
this._register(this._bufferService.onResize(() => {
|
|
47
48
|
this._clearCurrentLink();
|
|
48
49
|
this._wasResized = true;
|
|
49
50
|
}));
|
|
50
|
-
this.
|
|
51
|
+
this._register(addDisposableListener(this._element, 'mouseleave', () => {
|
|
51
52
|
this._isMouseOut = true;
|
|
52
53
|
this._clearCurrentLink();
|
|
53
54
|
}));
|
|
54
|
-
this.
|
|
55
|
-
this.
|
|
56
|
-
this.
|
|
55
|
+
this._register(addDisposableListener(this._element, 'mousemove', this._handleMouseMove.bind(this)));
|
|
56
|
+
this._register(addDisposableListener(this._element, 'mousedown', this._handleMouseDown.bind(this)));
|
|
57
|
+
this._register(addDisposableListener(this._element, 'mouseup', this._handleMouseUp.bind(this)));
|
|
57
58
|
}
|
|
58
59
|
|
|
59
60
|
private _handleMouseMove(event: MouseEvent): void {
|
|
@@ -226,7 +227,7 @@ export class Linkifier extends Disposable implements ILinkifier2 {
|
|
|
226
227
|
return;
|
|
227
228
|
}
|
|
228
229
|
|
|
229
|
-
if (this._mouseDownLink
|
|
230
|
+
if (this._mouseDownLink && linkEquals(this._mouseDownLink.link, this._currentLink.link) && this._linkAtPosition(this._currentLink.link, position)) {
|
|
230
231
|
this._currentLink.link.activate(event, this._currentLink.link.text);
|
|
231
232
|
}
|
|
232
233
|
}
|
|
@@ -240,7 +241,8 @@ export class Linkifier extends Disposable implements ILinkifier2 {
|
|
|
240
241
|
if (!startRow || !endRow || (this._currentLink.link.range.start.y >= startRow && this._currentLink.link.range.end.y <= endRow)) {
|
|
241
242
|
this._linkLeave(this._element, this._currentLink.link, this._lastMouseEvent);
|
|
242
243
|
this._currentLink = undefined;
|
|
243
|
-
|
|
244
|
+
dispose(this._linkCacheDisposables);
|
|
245
|
+
this._linkCacheDisposables.length = 0;
|
|
244
246
|
}
|
|
245
247
|
}
|
|
246
248
|
|
|
@@ -389,3 +391,13 @@ export class Linkifier extends Disposable implements ILinkifier2 {
|
|
|
389
391
|
return { x1, y1, x2, y2, cols: this._bufferService.cols, fg };
|
|
390
392
|
}
|
|
391
393
|
}
|
|
394
|
+
|
|
395
|
+
function linkEquals(a: ILink, b: ILink): boolean {
|
|
396
|
+
return (
|
|
397
|
+
a.text === b.text &&
|
|
398
|
+
a.range.start.x === b.range.start.x &&
|
|
399
|
+
a.range.start.y === b.range.start.y &&
|
|
400
|
+
a.range.end.x === b.range.end.x &&
|
|
401
|
+
a.range.end.y === b.range.end.y
|
|
402
|
+
);
|
|
403
|
+
}
|
|
@@ -5,8 +5,19 @@
|
|
|
5
5
|
|
|
6
6
|
// This file contains strings that get exported in the API so they can be localized
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
let promptLabelInternal = 'Terminal input';
|
|
9
|
+
const promptLabel = {
|
|
10
|
+
get: () => promptLabelInternal,
|
|
11
|
+
set: (value: string) => promptLabelInternal = value
|
|
12
|
+
};
|
|
10
13
|
|
|
11
|
-
|
|
12
|
-
|
|
14
|
+
let tooMuchOutputInternal = 'Too much output to announce, navigate to rows manually to read';
|
|
15
|
+
const tooMuchOutput = {
|
|
16
|
+
get: () => tooMuchOutputInternal,
|
|
17
|
+
set: (value: string) => tooMuchOutputInternal = value
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export {
|
|
21
|
+
promptLabel,
|
|
22
|
+
tooMuchOutput
|
|
23
|
+
};
|
|
@@ -3,10 +3,11 @@
|
|
|
3
3
|
* @license MIT
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { IEvent } from 'common/EventEmitter';
|
|
7
6
|
import { CharData, IColor, ICoreTerminal, ITerminalOptions } from 'common/Types';
|
|
8
7
|
import { IBuffer } from 'common/buffer/Types';
|
|
9
8
|
import { IDisposable, Terminal as ITerminalApi } from '@xterm/xterm';
|
|
9
|
+
import { channels, css } from 'common/Color';
|
|
10
|
+
import type { Event } from 'vs/base/common/event';
|
|
10
11
|
|
|
11
12
|
/**
|
|
12
13
|
* A portion of the public API that are implemented identially internally and simply passed through.
|
|
@@ -18,16 +19,15 @@ export interface ITerminal extends InternalPassthroughApis, ICoreTerminal {
|
|
|
18
19
|
browser: IBrowser;
|
|
19
20
|
buffer: IBuffer;
|
|
20
21
|
linkifier: ILinkifier2 | undefined;
|
|
21
|
-
viewport: IViewport | undefined;
|
|
22
22
|
options: Required<ITerminalOptions>;
|
|
23
23
|
|
|
24
|
-
onBlur:
|
|
25
|
-
onFocus:
|
|
26
|
-
onA11yChar:
|
|
27
|
-
onA11yTab:
|
|
28
|
-
onWillOpen:
|
|
24
|
+
onBlur: Event<void>;
|
|
25
|
+
onFocus: Event<void>;
|
|
26
|
+
onA11yChar: Event<string>;
|
|
27
|
+
onA11yTab: Event<number>;
|
|
28
|
+
onWillOpen: Event<HTMLElement>;
|
|
29
29
|
|
|
30
|
-
cancel(ev:
|
|
30
|
+
cancel(ev: MouseEvent | WheelEvent | KeyboardEvent | InputEvent, force?: boolean): boolean | void;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
export type CustomKeyEventHandler = (event: KeyboardEvent) => boolean;
|
|
@@ -66,6 +66,10 @@ export interface IColorSet {
|
|
|
66
66
|
selectionBackgroundOpaque: IColor;
|
|
67
67
|
selectionInactiveBackgroundTransparent: IColor;
|
|
68
68
|
selectionInactiveBackgroundOpaque: IColor;
|
|
69
|
+
scrollbarSliderBackground: IColor;
|
|
70
|
+
scrollbarSliderHoverBackground: IColor;
|
|
71
|
+
scrollbarSliderActiveBackground: IColor;
|
|
72
|
+
overviewRulerBorder: IColor;
|
|
69
73
|
ansi: IColor[];
|
|
70
74
|
/** Maps original colors to colors that respect minimum contrast ratio. */
|
|
71
75
|
contrastCache: IColorContrastCache;
|
|
@@ -94,7 +98,7 @@ export interface IPartialColorSet {
|
|
|
94
98
|
|
|
95
99
|
export interface IViewport extends IDisposable {
|
|
96
100
|
scrollBarWidth: number;
|
|
97
|
-
readonly onRequestScrollLines:
|
|
101
|
+
readonly onRequestScrollLines: Event<{ amount: number, suppressScrollEvent: boolean }>;
|
|
98
102
|
syncScrollArea(immediate?: boolean, force?: boolean): void;
|
|
99
103
|
getLinesScrolled(ev: WheelEvent): number;
|
|
100
104
|
getBufferElements(startLine: number, endLine?: number): { bufferElements: HTMLElement[], cursorElement?: HTMLElement };
|
|
@@ -124,12 +128,12 @@ export interface ILinkWithState {
|
|
|
124
128
|
}
|
|
125
129
|
|
|
126
130
|
export interface ILinkifier2 extends IDisposable {
|
|
127
|
-
onShowLinkUnderline:
|
|
128
|
-
onHideLinkUnderline:
|
|
131
|
+
onShowLinkUnderline: Event<ILinkifierEvent>;
|
|
132
|
+
onHideLinkUnderline: Event<ILinkifierEvent>;
|
|
129
133
|
readonly currentLink: ILinkWithState | undefined;
|
|
130
134
|
}
|
|
131
135
|
|
|
132
|
-
interface ILink {
|
|
136
|
+
export interface ILink {
|
|
133
137
|
range: IBufferRange;
|
|
134
138
|
text: string;
|
|
135
139
|
decorations?: ILinkDecorations;
|
|
@@ -139,17 +143,17 @@ interface ILink {
|
|
|
139
143
|
dispose?(): void;
|
|
140
144
|
}
|
|
141
145
|
|
|
142
|
-
interface ILinkDecorations {
|
|
146
|
+
export interface ILinkDecorations {
|
|
143
147
|
pointerCursor: boolean;
|
|
144
148
|
underline: boolean;
|
|
145
149
|
}
|
|
146
150
|
|
|
147
|
-
interface IBufferRange {
|
|
151
|
+
export interface IBufferRange {
|
|
148
152
|
start: IBufferCellPosition;
|
|
149
153
|
end: IBufferCellPosition;
|
|
150
154
|
}
|
|
151
155
|
|
|
152
|
-
interface IBufferCellPosition {
|
|
156
|
+
export interface IBufferCellPosition {
|
|
153
157
|
x: number;
|
|
154
158
|
y: number;
|
|
155
159
|
}
|
|
@@ -172,3 +176,51 @@ export interface IRenderDebouncerWithCallback extends IRenderDebouncer {
|
|
|
172
176
|
export interface IBufferElementProvider {
|
|
173
177
|
provideBufferElements(): DocumentFragment | HTMLElement;
|
|
174
178
|
}
|
|
179
|
+
|
|
180
|
+
// An IIFE to generate DEFAULT_ANSI_COLORS.
|
|
181
|
+
export const DEFAULT_ANSI_COLORS = Object.freeze((() => {
|
|
182
|
+
const colors = [
|
|
183
|
+
// dark:
|
|
184
|
+
css.toColor('#2e3436'),
|
|
185
|
+
css.toColor('#cc0000'),
|
|
186
|
+
css.toColor('#4e9a06'),
|
|
187
|
+
css.toColor('#c4a000'),
|
|
188
|
+
css.toColor('#3465a4'),
|
|
189
|
+
css.toColor('#75507b'),
|
|
190
|
+
css.toColor('#06989a'),
|
|
191
|
+
css.toColor('#d3d7cf'),
|
|
192
|
+
// bright:
|
|
193
|
+
css.toColor('#555753'),
|
|
194
|
+
css.toColor('#ef2929'),
|
|
195
|
+
css.toColor('#8ae234'),
|
|
196
|
+
css.toColor('#fce94f'),
|
|
197
|
+
css.toColor('#729fcf'),
|
|
198
|
+
css.toColor('#ad7fa8'),
|
|
199
|
+
css.toColor('#34e2e2'),
|
|
200
|
+
css.toColor('#eeeeec')
|
|
201
|
+
];
|
|
202
|
+
|
|
203
|
+
// Fill in the remaining 240 ANSI colors.
|
|
204
|
+
// Generate colors (16-231)
|
|
205
|
+
const v = [0x00, 0x5f, 0x87, 0xaf, 0xd7, 0xff];
|
|
206
|
+
for (let i = 0; i < 216; i++) {
|
|
207
|
+
const r = v[(i / 36) % 6 | 0];
|
|
208
|
+
const g = v[(i / 6) % 6 | 0];
|
|
209
|
+
const b = v[i % 6];
|
|
210
|
+
colors.push({
|
|
211
|
+
css: channels.toCss(r, g, b),
|
|
212
|
+
rgba: channels.toRgba(r, g, b)
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
// Generate greys (232-255)
|
|
217
|
+
for (let i = 0; i < 24; i++) {
|
|
218
|
+
const c = 8 + i * 10;
|
|
219
|
+
colors.push({
|
|
220
|
+
css: channels.toCss(c, c, c),
|
|
221
|
+
rgba: channels.toRgba(c, c, c)
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
return colors;
|
|
226
|
+
})());
|