@wendongfly/myhi 1.0.2 → 1.0.3
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/dist/index.js +1 -1
- package/dist/lib/xterm/LICENSE +21 -0
- package/dist/lib/xterm/README.md +225 -0
- package/dist/lib/xterm/css/xterm.css +190 -0
- package/dist/lib/xterm/lib/xterm.js +2 -0
- package/dist/lib/xterm/lib/xterm.js.map +1 -0
- package/dist/lib/xterm/package.json +90 -0
- package/dist/lib/xterm/src/browser/AccessibilityManager.ts +301 -0
- package/dist/lib/xterm/src/browser/Clipboard.ts +99 -0
- package/dist/lib/xterm/src/browser/ColorContrastCache.ts +39 -0
- package/dist/lib/xterm/src/browser/ColorManager.ts +268 -0
- package/dist/lib/xterm/src/browser/Dom.ts +10 -0
- package/dist/lib/xterm/src/browser/Lifecycle.ts +30 -0
- package/dist/lib/xterm/src/browser/Linkifier.ts +356 -0
- package/dist/lib/xterm/src/browser/Linkifier2.ts +397 -0
- package/dist/lib/xterm/src/browser/LocalizableStrings.ts +10 -0
- package/dist/lib/xterm/src/browser/MouseZoneManager.ts +236 -0
- package/dist/lib/xterm/src/browser/RenderDebouncer.ts +82 -0
- package/dist/lib/xterm/src/browser/ScreenDprMonitor.ts +69 -0
- package/dist/lib/xterm/src/browser/Terminal.ts +1447 -0
- package/dist/lib/xterm/src/browser/TimeBasedDebouncer.ts +86 -0
- package/dist/lib/xterm/src/browser/Types.d.ts +317 -0
- package/dist/lib/xterm/src/browser/Viewport.ts +276 -0
- package/dist/lib/xterm/src/browser/decorations/BufferDecorationRenderer.ts +131 -0
- package/dist/lib/xterm/src/browser/decorations/ColorZoneStore.ts +117 -0
- package/dist/lib/xterm/src/browser/decorations/OverviewRulerRenderer.ts +228 -0
- package/dist/lib/xterm/src/browser/input/CompositionHelper.ts +237 -0
- package/dist/lib/xterm/src/browser/input/Mouse.ts +64 -0
- package/dist/lib/xterm/src/browser/input/MoveToCell.ts +249 -0
- package/dist/lib/xterm/src/browser/public/Terminal.ts +298 -0
- package/dist/lib/xterm/src/browser/renderer/BaseRenderLayer.ts +582 -0
- package/dist/lib/xterm/src/browser/renderer/CursorRenderLayer.ts +378 -0
- package/dist/lib/xterm/src/browser/renderer/CustomGlyphs.ts +632 -0
- package/dist/lib/xterm/src/browser/renderer/GridCache.ts +33 -0
- package/dist/lib/xterm/src/browser/renderer/LinkRenderLayer.ts +84 -0
- package/dist/lib/xterm/src/browser/renderer/Renderer.ts +219 -0
- package/dist/lib/xterm/src/browser/renderer/RendererUtils.ts +26 -0
- package/dist/lib/xterm/src/browser/renderer/SelectionRenderLayer.ts +131 -0
- package/dist/lib/xterm/src/browser/renderer/TextRenderLayer.ts +344 -0
- package/dist/lib/xterm/src/browser/renderer/Types.d.ts +109 -0
- package/dist/lib/xterm/src/browser/renderer/atlas/BaseCharAtlas.ts +58 -0
- package/dist/lib/xterm/src/browser/renderer/atlas/CharAtlasCache.ts +95 -0
- package/dist/lib/xterm/src/browser/renderer/atlas/CharAtlasUtils.ts +54 -0
- package/dist/lib/xterm/src/browser/renderer/atlas/Constants.ts +15 -0
- package/dist/lib/xterm/src/browser/renderer/atlas/DynamicCharAtlas.ts +404 -0
- package/dist/lib/xterm/src/browser/renderer/atlas/LRUMap.ts +136 -0
- package/dist/lib/xterm/src/browser/renderer/atlas/Types.d.ts +29 -0
- package/dist/lib/xterm/src/browser/renderer/dom/DomRenderer.ts +403 -0
- package/dist/lib/xterm/src/browser/renderer/dom/DomRendererRowFactory.ts +344 -0
- package/dist/lib/xterm/src/browser/selection/SelectionModel.ts +144 -0
- package/dist/lib/xterm/src/browser/selection/Types.d.ts +15 -0
- package/dist/lib/xterm/src/browser/services/CharSizeService.ts +87 -0
- package/dist/lib/xterm/src/browser/services/CharacterJoinerService.ts +339 -0
- package/dist/lib/xterm/src/browser/services/CoreBrowserService.ts +20 -0
- package/dist/lib/xterm/src/browser/services/MouseService.ts +36 -0
- package/dist/lib/xterm/src/browser/services/RenderService.ts +237 -0
- package/dist/lib/xterm/src/browser/services/SelectionService.ts +1027 -0
- package/dist/lib/xterm/src/browser/services/Services.ts +123 -0
- package/dist/lib/xterm/src/browser/services/SoundService.ts +63 -0
- package/dist/lib/xterm/src/common/CircularList.ts +239 -0
- package/dist/lib/xterm/src/common/Clone.ts +23 -0
- package/dist/lib/xterm/src/common/Color.ts +285 -0
- package/dist/lib/xterm/src/common/CoreTerminal.ts +300 -0
- package/dist/lib/xterm/src/common/EventEmitter.ts +69 -0
- package/dist/lib/xterm/src/common/InputHandler.ts +3230 -0
- package/dist/lib/xterm/src/common/Lifecycle.ts +68 -0
- package/dist/lib/xterm/src/common/Platform.ts +31 -0
- package/dist/lib/xterm/src/common/SortedList.ts +88 -0
- package/dist/lib/xterm/src/common/TypedArrayUtils.ts +50 -0
- package/dist/lib/xterm/src/common/Types.d.ts +489 -0
- package/dist/lib/xterm/src/common/WindowsMode.ts +27 -0
- package/dist/lib/xterm/src/common/buffer/AttributeData.ts +148 -0
- package/dist/lib/xterm/src/common/buffer/Buffer.ts +711 -0
- package/dist/lib/xterm/src/common/buffer/BufferLine.ts +441 -0
- package/dist/lib/xterm/src/common/buffer/BufferRange.ts +13 -0
- package/dist/lib/xterm/src/common/buffer/BufferReflow.ts +220 -0
- package/dist/lib/xterm/src/common/buffer/BufferSet.ts +131 -0
- package/dist/lib/xterm/src/common/buffer/CellData.ts +94 -0
- package/dist/lib/xterm/src/common/buffer/Constants.ts +139 -0
- package/dist/lib/xterm/src/common/buffer/Marker.ts +37 -0
- package/dist/lib/xterm/src/common/buffer/Types.d.ts +64 -0
- package/dist/lib/xterm/src/common/data/Charsets.ts +256 -0
- package/dist/lib/xterm/src/common/data/EscapeSequences.ts +153 -0
- package/dist/lib/xterm/src/common/input/Keyboard.ts +398 -0
- package/dist/lib/xterm/src/common/input/TextDecoder.ts +346 -0
- package/dist/lib/xterm/src/common/input/UnicodeV6.ts +133 -0
- package/dist/lib/xterm/src/common/input/WriteBuffer.ts +229 -0
- package/dist/lib/xterm/src/common/input/XParseColor.ts +80 -0
- package/dist/lib/xterm/src/common/parser/Constants.ts +58 -0
- package/dist/lib/xterm/src/common/parser/DcsParser.ts +192 -0
- package/dist/lib/xterm/src/common/parser/EscapeSequenceParser.ts +796 -0
- package/dist/lib/xterm/src/common/parser/OscParser.ts +238 -0
- package/dist/lib/xterm/src/common/parser/Params.ts +229 -0
- package/dist/lib/xterm/src/common/parser/Types.d.ts +274 -0
- package/dist/lib/xterm/src/common/public/AddonManager.ts +56 -0
- package/dist/lib/xterm/src/common/public/BufferApiView.ts +35 -0
- package/dist/lib/xterm/src/common/public/BufferLineApiView.ts +29 -0
- package/dist/lib/xterm/src/common/public/BufferNamespaceApi.ts +33 -0
- package/dist/lib/xterm/src/common/public/ParserApi.ts +37 -0
- package/dist/lib/xterm/src/common/public/UnicodeApi.ts +27 -0
- package/dist/lib/xterm/src/common/services/BufferService.ts +185 -0
- package/dist/lib/xterm/src/common/services/CharsetService.ts +34 -0
- package/dist/lib/xterm/src/common/services/CoreMouseService.ts +309 -0
- package/dist/lib/xterm/src/common/services/CoreService.ts +92 -0
- package/dist/lib/xterm/src/common/services/DecorationService.ts +139 -0
- package/dist/lib/xterm/src/common/services/DirtyRowService.ts +53 -0
- package/dist/lib/xterm/src/common/services/InstantiationService.ts +83 -0
- package/dist/lib/xterm/src/common/services/LogService.ts +88 -0
- package/dist/lib/xterm/src/common/services/OptionsService.ts +178 -0
- package/dist/lib/xterm/src/common/services/ServiceRegistry.ts +49 -0
- package/dist/lib/xterm/src/common/services/Services.ts +323 -0
- package/dist/lib/xterm/src/common/services/UnicodeService.ts +82 -0
- package/dist/lib/xterm/src/headless/Terminal.ts +170 -0
- package/dist/lib/xterm/src/headless/Types.d.ts +31 -0
- package/dist/lib/xterm/src/headless/public/Terminal.ts +216 -0
- package/dist/lib/xterm/typings/xterm.d.ts +1872 -0
- package/dist/lib/xterm-fit/LICENSE +19 -0
- package/dist/lib/xterm-fit/README.md +24 -0
- package/dist/lib/xterm-fit/lib/xterm-addon-fit.js +2 -0
- package/dist/lib/xterm-fit/lib/xterm-addon-fit.js.map +1 -0
- package/dist/lib/xterm-fit/out/FitAddon.js +58 -0
- package/dist/lib/xterm-fit/out/FitAddon.js.map +1 -0
- package/dist/lib/xterm-fit/out-test/FitAddon.api.js.map +1 -0
- package/dist/lib/xterm-fit/package.json +21 -0
- package/dist/lib/xterm-fit/src/FitAddon.ts +86 -0
- package/dist/lib/xterm-fit/typings/xterm-addon-fit.d.ts +55 -0
- package/dist/lib/xterm-links/LICENSE +19 -0
- package/dist/lib/xterm-links/README.md +21 -0
- package/dist/lib/xterm-links/lib/xterm-addon-web-links.js +2 -0
- package/dist/lib/xterm-links/lib/xterm-addon-web-links.js.map +1 -0
- package/dist/lib/xterm-links/package.json +26 -0
- package/dist/lib/xterm-links/src/WebLinkProvider.ts +145 -0
- package/dist/lib/xterm-links/src/WebLinksAddon.ts +77 -0
- package/dist/lib/xterm-links/typings/xterm-addon-web-links.d.ts +58 -0
- package/package.json +1 -1
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2017 The xterm.js authors. All rights reserved.
|
|
3
|
+
* @license MIT
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { IBuffer, IBufferSet } from 'common/buffer/Types';
|
|
7
|
+
import { IAttributeData } from 'common/Types';
|
|
8
|
+
import { Buffer } from 'common/buffer/Buffer';
|
|
9
|
+
import { EventEmitter, IEvent } from 'common/EventEmitter';
|
|
10
|
+
import { IOptionsService, IBufferService } from 'common/services/Services';
|
|
11
|
+
import { Disposable } from 'common/Lifecycle';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* The BufferSet represents the set of two buffers used by xterm terminals (normal and alt) and
|
|
15
|
+
* provides also utilities for working with them.
|
|
16
|
+
*/
|
|
17
|
+
export class BufferSet extends Disposable implements IBufferSet {
|
|
18
|
+
private _normal!: Buffer;
|
|
19
|
+
private _alt!: Buffer;
|
|
20
|
+
private _activeBuffer!: Buffer;
|
|
21
|
+
|
|
22
|
+
private _onBufferActivate = this.register(new EventEmitter<{activeBuffer: IBuffer, inactiveBuffer: IBuffer}>());
|
|
23
|
+
public get onBufferActivate(): IEvent<{activeBuffer: IBuffer, inactiveBuffer: IBuffer}> { return this._onBufferActivate.event; }
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Create a new BufferSet for the given terminal.
|
|
27
|
+
* @param _terminal - The terminal the BufferSet will belong to
|
|
28
|
+
*/
|
|
29
|
+
constructor(
|
|
30
|
+
private readonly _optionsService: IOptionsService,
|
|
31
|
+
private readonly _bufferService: IBufferService
|
|
32
|
+
) {
|
|
33
|
+
super();
|
|
34
|
+
this.reset();
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
public reset(): void {
|
|
38
|
+
this._normal = new Buffer(true, this._optionsService, this._bufferService);
|
|
39
|
+
this._normal.fillViewportRows();
|
|
40
|
+
|
|
41
|
+
// The alt buffer should never have scrollback.
|
|
42
|
+
// See http://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-The-Alternate-Screen-Buffer
|
|
43
|
+
this._alt = new Buffer(false, this._optionsService, this._bufferService);
|
|
44
|
+
this._activeBuffer = this._normal;
|
|
45
|
+
this._onBufferActivate.fire({
|
|
46
|
+
activeBuffer: this._normal,
|
|
47
|
+
inactiveBuffer: this._alt
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
this.setupTabStops();
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Returns the alt Buffer of the BufferSet
|
|
55
|
+
*/
|
|
56
|
+
public get alt(): Buffer {
|
|
57
|
+
return this._alt;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Returns the normal Buffer of the BufferSet
|
|
62
|
+
*/
|
|
63
|
+
public get active(): Buffer {
|
|
64
|
+
return this._activeBuffer;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Returns the currently active Buffer of the BufferSet
|
|
69
|
+
*/
|
|
70
|
+
public get normal(): Buffer {
|
|
71
|
+
return this._normal;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Sets the normal Buffer of the BufferSet as its currently active Buffer
|
|
76
|
+
*/
|
|
77
|
+
public activateNormalBuffer(): void {
|
|
78
|
+
if (this._activeBuffer === this._normal) {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
this._normal.x = this._alt.x;
|
|
82
|
+
this._normal.y = this._alt.y;
|
|
83
|
+
// The alt buffer should always be cleared when we switch to the normal
|
|
84
|
+
// buffer. This frees up memory since the alt buffer should always be new
|
|
85
|
+
// when activated.
|
|
86
|
+
this._alt.clear();
|
|
87
|
+
this._activeBuffer = this._normal;
|
|
88
|
+
this._onBufferActivate.fire({
|
|
89
|
+
activeBuffer: this._normal,
|
|
90
|
+
inactiveBuffer: this._alt
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Sets the alt Buffer of the BufferSet as its currently active Buffer
|
|
96
|
+
*/
|
|
97
|
+
public activateAltBuffer(fillAttr?: IAttributeData): void {
|
|
98
|
+
if (this._activeBuffer === this._alt) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
// Since the alt buffer is always cleared when the normal buffer is
|
|
102
|
+
// activated, we want to fill it when switching to it.
|
|
103
|
+
this._alt.fillViewportRows(fillAttr);
|
|
104
|
+
this._alt.x = this._normal.x;
|
|
105
|
+
this._alt.y = this._normal.y;
|
|
106
|
+
this._activeBuffer = this._alt;
|
|
107
|
+
this._onBufferActivate.fire({
|
|
108
|
+
activeBuffer: this._alt,
|
|
109
|
+
inactiveBuffer: this._normal
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Resizes both normal and alt buffers, adjusting their data accordingly.
|
|
115
|
+
* @param newCols The new number of columns.
|
|
116
|
+
* @param newRows The new number of rows.
|
|
117
|
+
*/
|
|
118
|
+
public resize(newCols: number, newRows: number): void {
|
|
119
|
+
this._normal.resize(newCols, newRows);
|
|
120
|
+
this._alt.resize(newCols, newRows);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Setup the tab stops.
|
|
125
|
+
* @param i The index to start setting up tab stops from.
|
|
126
|
+
*/
|
|
127
|
+
public setupTabStops(i?: number): void {
|
|
128
|
+
this._normal.setupTabStops(i);
|
|
129
|
+
this._alt.setupTabStops(i);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2018 The xterm.js authors. All rights reserved.
|
|
3
|
+
* @license MIT
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { CharData, ICellData, IExtendedAttrs } from 'common/Types';
|
|
7
|
+
import { stringFromCodePoint } from 'common/input/TextDecoder';
|
|
8
|
+
import { CHAR_DATA_CHAR_INDEX, CHAR_DATA_WIDTH_INDEX, CHAR_DATA_ATTR_INDEX, Content } from 'common/buffer/Constants';
|
|
9
|
+
import { AttributeData, ExtendedAttrs } from 'common/buffer/AttributeData';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* CellData - represents a single Cell in the terminal buffer.
|
|
13
|
+
*/
|
|
14
|
+
export class CellData extends AttributeData implements ICellData {
|
|
15
|
+
/** Helper to create CellData from CharData. */
|
|
16
|
+
public static fromCharData(value: CharData): CellData {
|
|
17
|
+
const obj = new CellData();
|
|
18
|
+
obj.setFromCharData(value);
|
|
19
|
+
return obj;
|
|
20
|
+
}
|
|
21
|
+
/** Primitives from terminal buffer. */
|
|
22
|
+
public content = 0;
|
|
23
|
+
public fg = 0;
|
|
24
|
+
public bg = 0;
|
|
25
|
+
public extended: IExtendedAttrs = new ExtendedAttrs();
|
|
26
|
+
public combinedData = '';
|
|
27
|
+
/** Whether cell contains a combined string. */
|
|
28
|
+
public isCombined(): number {
|
|
29
|
+
return this.content & Content.IS_COMBINED_MASK;
|
|
30
|
+
}
|
|
31
|
+
/** Width of the cell. */
|
|
32
|
+
public getWidth(): number {
|
|
33
|
+
return this.content >> Content.WIDTH_SHIFT;
|
|
34
|
+
}
|
|
35
|
+
/** JS string of the content. */
|
|
36
|
+
public getChars(): string {
|
|
37
|
+
if (this.content & Content.IS_COMBINED_MASK) {
|
|
38
|
+
return this.combinedData;
|
|
39
|
+
}
|
|
40
|
+
if (this.content & Content.CODEPOINT_MASK) {
|
|
41
|
+
return stringFromCodePoint(this.content & Content.CODEPOINT_MASK);
|
|
42
|
+
}
|
|
43
|
+
return '';
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Codepoint of cell
|
|
47
|
+
* Note this returns the UTF32 codepoint of single chars,
|
|
48
|
+
* if content is a combined string it returns the codepoint
|
|
49
|
+
* of the last char in string to be in line with code in CharData.
|
|
50
|
+
* */
|
|
51
|
+
public getCode(): number {
|
|
52
|
+
return (this.isCombined())
|
|
53
|
+
? this.combinedData.charCodeAt(this.combinedData.length - 1)
|
|
54
|
+
: this.content & Content.CODEPOINT_MASK;
|
|
55
|
+
}
|
|
56
|
+
/** Set data from CharData */
|
|
57
|
+
public setFromCharData(value: CharData): void {
|
|
58
|
+
this.fg = value[CHAR_DATA_ATTR_INDEX];
|
|
59
|
+
this.bg = 0;
|
|
60
|
+
let combined = false;
|
|
61
|
+
// surrogates and combined strings need special treatment
|
|
62
|
+
if (value[CHAR_DATA_CHAR_INDEX].length > 2) {
|
|
63
|
+
combined = true;
|
|
64
|
+
}
|
|
65
|
+
else if (value[CHAR_DATA_CHAR_INDEX].length === 2) {
|
|
66
|
+
const code = value[CHAR_DATA_CHAR_INDEX].charCodeAt(0);
|
|
67
|
+
// if the 2-char string is a surrogate create single codepoint
|
|
68
|
+
// everything else is combined
|
|
69
|
+
if (0xD800 <= code && code <= 0xDBFF) {
|
|
70
|
+
const second = value[CHAR_DATA_CHAR_INDEX].charCodeAt(1);
|
|
71
|
+
if (0xDC00 <= second && second <= 0xDFFF) {
|
|
72
|
+
this.content = ((code - 0xD800) * 0x400 + second - 0xDC00 + 0x10000) | (value[CHAR_DATA_WIDTH_INDEX] << Content.WIDTH_SHIFT);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
combined = true;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
combined = true;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
this.content = value[CHAR_DATA_CHAR_INDEX].charCodeAt(0) | (value[CHAR_DATA_WIDTH_INDEX] << Content.WIDTH_SHIFT);
|
|
84
|
+
}
|
|
85
|
+
if (combined) {
|
|
86
|
+
this.combinedData = value[CHAR_DATA_CHAR_INDEX];
|
|
87
|
+
this.content = Content.IS_COMBINED_MASK | (value[CHAR_DATA_WIDTH_INDEX] << Content.WIDTH_SHIFT);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/** Get data as CharData. */
|
|
91
|
+
public getAsCharData(): CharData {
|
|
92
|
+
return [this.fg, this.getChars(), this.getWidth(), this.getCode()];
|
|
93
|
+
}
|
|
94
|
+
}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2019 The xterm.js authors. All rights reserved.
|
|
3
|
+
* @license MIT
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
export const DEFAULT_COLOR = 256;
|
|
7
|
+
export const DEFAULT_ATTR = (0 << 18) | (DEFAULT_COLOR << 9) | (256 << 0);
|
|
8
|
+
|
|
9
|
+
export const CHAR_DATA_ATTR_INDEX = 0;
|
|
10
|
+
export const CHAR_DATA_CHAR_INDEX = 1;
|
|
11
|
+
export const CHAR_DATA_WIDTH_INDEX = 2;
|
|
12
|
+
export const CHAR_DATA_CODE_INDEX = 3;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Null cell - a real empty cell (containing nothing).
|
|
16
|
+
* Note that code should always be 0 for a null cell as
|
|
17
|
+
* several test condition of the buffer line rely on this.
|
|
18
|
+
*/
|
|
19
|
+
export const NULL_CELL_CHAR = '';
|
|
20
|
+
export const NULL_CELL_WIDTH = 1;
|
|
21
|
+
export const NULL_CELL_CODE = 0;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Whitespace cell.
|
|
25
|
+
* This is meant as a replacement for empty cells when needed
|
|
26
|
+
* during rendering lines to preserve correct aligment.
|
|
27
|
+
*/
|
|
28
|
+
export const WHITESPACE_CELL_CHAR = ' ';
|
|
29
|
+
export const WHITESPACE_CELL_WIDTH = 1;
|
|
30
|
+
export const WHITESPACE_CELL_CODE = 32;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Bitmasks for accessing data in `content`.
|
|
34
|
+
*/
|
|
35
|
+
export const enum Content {
|
|
36
|
+
/**
|
|
37
|
+
* bit 1..21 codepoint, max allowed in UTF32 is 0x10FFFF (21 bits taken)
|
|
38
|
+
* read: `codepoint = content & Content.codepointMask;`
|
|
39
|
+
* write: `content |= codepoint & Content.codepointMask;`
|
|
40
|
+
* shortcut if precondition `codepoint <= 0x10FFFF` is met:
|
|
41
|
+
* `content |= codepoint;`
|
|
42
|
+
*/
|
|
43
|
+
CODEPOINT_MASK = 0x1FFFFF,
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* bit 22 flag indication whether a cell contains combined content
|
|
47
|
+
* read: `isCombined = content & Content.isCombined;`
|
|
48
|
+
* set: `content |= Content.isCombined;`
|
|
49
|
+
* clear: `content &= ~Content.isCombined;`
|
|
50
|
+
*/
|
|
51
|
+
IS_COMBINED_MASK = 0x200000, // 1 << 21
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* bit 1..22 mask to check whether a cell contains any string data
|
|
55
|
+
* we need to check for codepoint and isCombined bits to see
|
|
56
|
+
* whether a cell contains anything
|
|
57
|
+
* read: `isEmpty = !(content & Content.hasContent)`
|
|
58
|
+
*/
|
|
59
|
+
HAS_CONTENT_MASK = 0x3FFFFF,
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* bit 23..24 wcwidth value of cell, takes 2 bits (ranges from 0..2)
|
|
63
|
+
* read: `width = (content & Content.widthMask) >> Content.widthShift;`
|
|
64
|
+
* `hasWidth = content & Content.widthMask;`
|
|
65
|
+
* as long as wcwidth is highest value in `content`:
|
|
66
|
+
* `width = content >> Content.widthShift;`
|
|
67
|
+
* write: `content |= (width << Content.widthShift) & Content.widthMask;`
|
|
68
|
+
* shortcut if precondition `0 <= width <= 3` is met:
|
|
69
|
+
* `content |= width << Content.widthShift;`
|
|
70
|
+
*/
|
|
71
|
+
WIDTH_MASK = 0xC00000, // 3 << 22
|
|
72
|
+
WIDTH_SHIFT = 22
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export const enum Attributes {
|
|
76
|
+
/**
|
|
77
|
+
* bit 1..8 blue in RGB, color in P256 and P16
|
|
78
|
+
*/
|
|
79
|
+
BLUE_MASK = 0xFF,
|
|
80
|
+
BLUE_SHIFT = 0,
|
|
81
|
+
PCOLOR_MASK = 0xFF,
|
|
82
|
+
PCOLOR_SHIFT = 0,
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* bit 9..16 green in RGB
|
|
86
|
+
*/
|
|
87
|
+
GREEN_MASK = 0xFF00,
|
|
88
|
+
GREEN_SHIFT = 8,
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* bit 17..24 red in RGB
|
|
92
|
+
*/
|
|
93
|
+
RED_MASK = 0xFF0000,
|
|
94
|
+
RED_SHIFT = 16,
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* bit 25..26 color mode: DEFAULT (0) | P16 (1) | P256 (2) | RGB (3)
|
|
98
|
+
*/
|
|
99
|
+
CM_MASK = 0x3000000,
|
|
100
|
+
CM_DEFAULT = 0,
|
|
101
|
+
CM_P16 = 0x1000000,
|
|
102
|
+
CM_P256 = 0x2000000,
|
|
103
|
+
CM_RGB = 0x3000000,
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* bit 1..24 RGB room
|
|
107
|
+
*/
|
|
108
|
+
RGB_MASK = 0xFFFFFF
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export const enum FgFlags {
|
|
112
|
+
/**
|
|
113
|
+
* bit 27..32
|
|
114
|
+
*/
|
|
115
|
+
INVERSE = 0x4000000,
|
|
116
|
+
BOLD = 0x8000000,
|
|
117
|
+
UNDERLINE = 0x10000000,
|
|
118
|
+
BLINK = 0x20000000,
|
|
119
|
+
INVISIBLE = 0x40000000,
|
|
120
|
+
STRIKETHROUGH = 0x80000000,
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export const enum BgFlags {
|
|
124
|
+
/**
|
|
125
|
+
* bit 27..32 (upper 3 unused)
|
|
126
|
+
*/
|
|
127
|
+
ITALIC = 0x4000000,
|
|
128
|
+
DIM = 0x8000000,
|
|
129
|
+
HAS_EXTENDED = 0x10000000
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
export const enum UnderlineStyle {
|
|
133
|
+
NONE = 0,
|
|
134
|
+
SINGLE = 1,
|
|
135
|
+
DOUBLE = 2,
|
|
136
|
+
CURLY = 3,
|
|
137
|
+
DOTTED = 4,
|
|
138
|
+
DASHED = 5
|
|
139
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2018 The xterm.js authors. All rights reserved.
|
|
3
|
+
* @license MIT
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { EventEmitter, IEvent } from 'common/EventEmitter';
|
|
7
|
+
import { Disposable } from 'common/Lifecycle';
|
|
8
|
+
import { IMarker } from 'common/Types';
|
|
9
|
+
|
|
10
|
+
export class Marker extends Disposable implements IMarker {
|
|
11
|
+
private static _nextId = 1;
|
|
12
|
+
|
|
13
|
+
private _id: number = Marker._nextId++;
|
|
14
|
+
public isDisposed: boolean = false;
|
|
15
|
+
|
|
16
|
+
public get id(): number { return this._id; }
|
|
17
|
+
|
|
18
|
+
private _onDispose = new EventEmitter<void>();
|
|
19
|
+
public get onDispose(): IEvent<void> { return this._onDispose.event; }
|
|
20
|
+
|
|
21
|
+
constructor(
|
|
22
|
+
public line: number
|
|
23
|
+
) {
|
|
24
|
+
super();
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
public dispose(): void {
|
|
28
|
+
if (this.isDisposed) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
this.isDisposed = true;
|
|
32
|
+
this.line = -1;
|
|
33
|
+
// Emit before super.dispose such that dispose listeners get a change to react
|
|
34
|
+
this._onDispose.fire();
|
|
35
|
+
super.dispose();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2019 The xterm.js authors. All rights reserved.
|
|
3
|
+
* @license MIT
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { IAttributeData, ICircularList, IBufferLine, ICellData, IMarker, ICharset, IDisposable } from 'common/Types';
|
|
7
|
+
import { IEvent } from 'common/EventEmitter';
|
|
8
|
+
|
|
9
|
+
// BufferIndex denotes a position in the buffer: [rowIndex, colIndex]
|
|
10
|
+
export type BufferIndex = [number, number];
|
|
11
|
+
|
|
12
|
+
export interface IBufferStringIteratorResult {
|
|
13
|
+
range: { first: number, last: number };
|
|
14
|
+
content: string;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export interface IBufferStringIterator {
|
|
18
|
+
hasNext(): boolean;
|
|
19
|
+
next(): IBufferStringIteratorResult;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export interface IBuffer {
|
|
23
|
+
readonly lines: ICircularList<IBufferLine>;
|
|
24
|
+
ydisp: number;
|
|
25
|
+
ybase: number;
|
|
26
|
+
y: number;
|
|
27
|
+
x: number;
|
|
28
|
+
tabs: any;
|
|
29
|
+
scrollBottom: number;
|
|
30
|
+
scrollTop: number;
|
|
31
|
+
hasScrollback: boolean;
|
|
32
|
+
savedY: number;
|
|
33
|
+
savedX: number;
|
|
34
|
+
savedCharset: ICharset | undefined;
|
|
35
|
+
savedCurAttrData: IAttributeData;
|
|
36
|
+
isCursorInViewport: boolean;
|
|
37
|
+
markers: IMarker[];
|
|
38
|
+
translateBufferLineToString(lineIndex: number, trimRight: boolean, startCol?: number, endCol?: number): string;
|
|
39
|
+
getWrappedRangeForLine(y: number): { first: number, last: number };
|
|
40
|
+
nextStop(x?: number): number;
|
|
41
|
+
prevStop(x?: number): number;
|
|
42
|
+
getBlankLine(attr: IAttributeData, isWrapped?: boolean): IBufferLine;
|
|
43
|
+
stringIndexToBufferIndex(lineIndex: number, stringIndex: number, trimRight?: boolean): number[];
|
|
44
|
+
iterator(trimRight: boolean, startIndex?: number, endIndex?: number, startOverscan?: number, endOverscan?: number): IBufferStringIterator;
|
|
45
|
+
getNullCell(attr?: IAttributeData): ICellData;
|
|
46
|
+
getWhitespaceCell(attr?: IAttributeData): ICellData;
|
|
47
|
+
addMarker(y: number): IMarker;
|
|
48
|
+
clearMarkers(y: number): void;
|
|
49
|
+
clearAllMarkers(): void;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export interface IBufferSet extends IDisposable {
|
|
53
|
+
alt: IBuffer;
|
|
54
|
+
normal: IBuffer;
|
|
55
|
+
active: IBuffer;
|
|
56
|
+
|
|
57
|
+
onBufferActivate: IEvent<{ activeBuffer: IBuffer, inactiveBuffer: IBuffer }>;
|
|
58
|
+
|
|
59
|
+
activateNormalBuffer(): void;
|
|
60
|
+
activateAltBuffer(fillAttr?: IAttributeData): void;
|
|
61
|
+
reset(): void;
|
|
62
|
+
resize(newCols: number, newRows: number): void;
|
|
63
|
+
setupTabStops(i?: number): void;
|
|
64
|
+
}
|