@wendongfly/zihi 1.1.0 → 1.1.2

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.
Files changed (157) hide show
  1. package/dist/index.js +1 -1
  2. package/dist/lib/xterm/README.md +27 -14
  3. package/dist/lib/xterm/css/xterm.css +81 -5
  4. package/dist/lib/xterm/lib/xterm.js +1 -1
  5. package/dist/lib/xterm/lib/xterm.js.map +1 -1
  6. package/dist/lib/xterm/lib/xterm.mjs +53 -0
  7. package/dist/lib/xterm/lib/xterm.mjs.map +7 -0
  8. package/dist/lib/xterm/package.json +49 -38
  9. package/dist/lib/xterm/src/browser/AccessibilityManager.ts +185 -50
  10. package/dist/lib/xterm/src/browser/CoreBrowserTerminal.ts +1339 -0
  11. package/dist/lib/xterm/src/browser/Linkifier.ts +403 -0
  12. package/dist/lib/xterm/src/browser/LocalizableStrings.ts +15 -4
  13. package/dist/lib/xterm/src/browser/OscLinkProvider.ts +2 -1
  14. package/dist/lib/xterm/src/browser/RenderDebouncer.ts +6 -5
  15. package/dist/lib/xterm/src/browser/TimeBasedDebouncer.ts +2 -2
  16. package/dist/lib/xterm/src/browser/Types.ts +226 -0
  17. package/dist/lib/xterm/src/browser/Viewport.ts +148 -357
  18. package/dist/lib/xterm/src/browser/decorations/BufferDecorationRenderer.ts +17 -12
  19. package/dist/lib/xterm/src/browser/decorations/OverviewRulerRenderer.ts +47 -52
  20. package/dist/lib/xterm/src/browser/input/CompositionHelper.ts +5 -3
  21. package/dist/lib/xterm/src/browser/input/MoveToCell.ts +3 -1
  22. package/dist/lib/xterm/src/browser/public/Terminal.ts +39 -24
  23. package/dist/lib/xterm/src/browser/renderer/dom/DomRenderer.ts +76 -40
  24. package/dist/lib/xterm/src/browser/renderer/dom/DomRendererRowFactory.ts +47 -23
  25. package/dist/lib/xterm/src/browser/renderer/dom/WidthCache.ts +19 -9
  26. package/dist/lib/xterm/src/browser/renderer/shared/Constants.ts +0 -8
  27. package/dist/lib/xterm/src/browser/renderer/shared/RendererUtils.ts +38 -1
  28. package/dist/lib/xterm/src/browser/renderer/shared/SelectionRenderModel.ts +6 -4
  29. package/dist/lib/xterm/src/browser/renderer/shared/Types.ts +84 -0
  30. package/dist/lib/xterm/src/browser/selection/Types.ts +15 -0
  31. package/dist/lib/xterm/src/browser/services/CharSizeService.ts +57 -32
  32. package/dist/lib/xterm/src/browser/services/CoreBrowserService.ts +108 -4
  33. package/dist/lib/xterm/src/browser/services/LinkProviderService.ts +28 -0
  34. package/dist/lib/xterm/src/browser/services/RenderService.ts +132 -40
  35. package/dist/lib/xterm/src/browser/services/SelectionService.ts +19 -9
  36. package/dist/lib/xterm/src/browser/services/Services.ts +36 -16
  37. package/dist/lib/xterm/src/browser/services/ThemeService.ts +19 -58
  38. package/dist/lib/xterm/src/browser/shared/Constants.ts +8 -0
  39. package/dist/lib/xterm/src/common/CircularList.ts +5 -5
  40. package/dist/lib/xterm/src/common/Color.ts +34 -14
  41. package/dist/lib/xterm/src/common/CoreTerminal.ts +40 -41
  42. package/dist/lib/xterm/src/common/InputHandler.ts +177 -125
  43. package/dist/lib/xterm/src/common/Platform.ts +2 -1
  44. package/dist/lib/xterm/src/common/SortedList.ts +86 -10
  45. package/dist/lib/xterm/src/common/TaskQueue.ts +7 -7
  46. package/dist/lib/xterm/src/common/Types.ts +552 -0
  47. package/dist/lib/xterm/src/common/buffer/AttributeData.ts +15 -0
  48. package/dist/lib/xterm/src/common/buffer/Buffer.ts +15 -7
  49. package/dist/lib/xterm/src/common/buffer/BufferLine.ts +53 -22
  50. package/dist/lib/xterm/src/common/buffer/BufferRange.ts +1 -1
  51. package/dist/lib/xterm/src/common/buffer/BufferReflow.ts +9 -6
  52. package/dist/lib/xterm/src/common/buffer/BufferSet.ts +5 -5
  53. package/dist/lib/xterm/src/common/buffer/Constants.ts +10 -2
  54. package/dist/lib/xterm/src/common/buffer/Marker.ts +4 -4
  55. package/dist/lib/xterm/src/common/buffer/Types.ts +52 -0
  56. package/dist/lib/xterm/src/common/input/Keyboard.ts +2 -27
  57. package/dist/lib/xterm/src/common/input/UnicodeV6.ts +18 -5
  58. package/dist/lib/xterm/src/common/input/WriteBuffer.ts +9 -8
  59. package/dist/lib/xterm/src/common/parser/EscapeSequenceParser.ts +13 -13
  60. package/dist/lib/xterm/src/common/parser/Types.ts +275 -0
  61. package/dist/lib/xterm/src/common/public/AddonManager.ts +1 -1
  62. package/dist/lib/xterm/src/common/public/BufferApiView.ts +1 -1
  63. package/dist/lib/xterm/src/common/public/BufferLineApiView.ts +1 -1
  64. package/dist/lib/xterm/src/common/public/BufferNamespaceApi.ts +4 -4
  65. package/dist/lib/xterm/src/common/public/ParserApi.ts +1 -1
  66. package/dist/lib/xterm/src/common/public/UnicodeApi.ts +1 -1
  67. package/dist/lib/xterm/src/common/services/BufferService.ts +14 -11
  68. package/dist/lib/xterm/src/common/services/CoreMouseService.ts +53 -6
  69. package/dist/lib/xterm/src/common/services/CoreService.ts +13 -8
  70. package/dist/lib/xterm/src/common/services/DecorationService.ts +11 -11
  71. package/dist/lib/xterm/src/common/services/InstantiationService.ts +1 -1
  72. package/dist/lib/xterm/src/common/services/LogService.ts +2 -2
  73. package/dist/lib/xterm/src/common/services/OptionsService.ts +16 -5
  74. package/dist/lib/xterm/src/common/services/ServiceRegistry.ts +1 -1
  75. package/dist/lib/xterm/src/common/services/Services.ts +73 -19
  76. package/dist/lib/xterm/src/common/services/UnicodeService.ts +30 -5
  77. package/dist/lib/xterm/src/vs/base/browser/browser.ts +141 -0
  78. package/dist/lib/xterm/src/vs/base/browser/canIUse.ts +49 -0
  79. package/dist/lib/xterm/src/vs/base/browser/dom.ts +2369 -0
  80. package/dist/lib/xterm/src/vs/base/browser/fastDomNode.ts +316 -0
  81. package/dist/lib/xterm/src/vs/base/browser/globalPointerMoveMonitor.ts +112 -0
  82. package/dist/lib/xterm/src/vs/base/browser/iframe.ts +135 -0
  83. package/dist/lib/xterm/src/vs/base/browser/keyboardEvent.ts +213 -0
  84. package/dist/lib/xterm/src/vs/base/browser/mouseEvent.ts +229 -0
  85. package/dist/lib/xterm/src/vs/base/browser/touch.ts +372 -0
  86. package/dist/lib/xterm/src/vs/base/browser/ui/scrollbar/abstractScrollbar.ts +303 -0
  87. package/dist/lib/xterm/src/vs/base/browser/ui/scrollbar/horizontalScrollbar.ts +114 -0
  88. package/dist/lib/xterm/src/vs/base/browser/ui/scrollbar/scrollableElement.ts +720 -0
  89. package/dist/lib/xterm/src/vs/base/browser/ui/scrollbar/scrollableElementOptions.ts +165 -0
  90. package/dist/lib/xterm/src/vs/base/browser/ui/scrollbar/scrollbarArrow.ts +114 -0
  91. package/dist/lib/xterm/src/vs/base/browser/ui/scrollbar/scrollbarState.ts +243 -0
  92. package/dist/lib/xterm/src/vs/base/browser/ui/scrollbar/scrollbarVisibilityController.ts +118 -0
  93. package/dist/lib/xterm/src/vs/base/browser/ui/scrollbar/verticalScrollbar.ts +116 -0
  94. package/dist/lib/xterm/src/vs/base/browser/ui/widget.ts +57 -0
  95. package/dist/lib/xterm/src/vs/base/browser/window.ts +14 -0
  96. package/dist/lib/xterm/src/vs/base/common/arrays.ts +887 -0
  97. package/dist/lib/xterm/src/vs/base/common/arraysFind.ts +202 -0
  98. package/dist/lib/xterm/src/vs/base/common/assert.ts +71 -0
  99. package/dist/lib/xterm/src/vs/base/common/async.ts +1992 -0
  100. package/dist/lib/xterm/src/vs/base/common/cancellation.ts +148 -0
  101. package/dist/lib/xterm/src/vs/base/common/charCode.ts +450 -0
  102. package/dist/lib/xterm/src/vs/base/common/collections.ts +140 -0
  103. package/dist/lib/xterm/src/vs/base/common/decorators.ts +130 -0
  104. package/dist/lib/xterm/src/vs/base/common/equals.ts +146 -0
  105. package/dist/lib/xterm/src/vs/base/common/errors.ts +303 -0
  106. package/dist/lib/xterm/src/vs/base/common/event.ts +1778 -0
  107. package/dist/lib/xterm/src/vs/base/common/functional.ts +32 -0
  108. package/dist/lib/xterm/src/vs/base/common/hash.ts +316 -0
  109. package/dist/lib/xterm/src/vs/base/common/iterator.ts +159 -0
  110. package/dist/lib/xterm/src/vs/base/common/keyCodes.ts +526 -0
  111. package/dist/lib/xterm/src/vs/base/common/keybindings.ts +284 -0
  112. package/dist/lib/xterm/src/vs/base/common/lazy.ts +47 -0
  113. package/dist/lib/xterm/src/vs/base/common/lifecycle.ts +801 -0
  114. package/dist/lib/xterm/src/vs/base/common/linkedList.ts +142 -0
  115. package/dist/lib/xterm/src/vs/base/common/map.ts +202 -0
  116. package/dist/lib/xterm/src/vs/base/common/numbers.ts +98 -0
  117. package/dist/lib/xterm/src/vs/base/common/observable.ts +76 -0
  118. package/dist/lib/xterm/src/vs/base/common/observableInternal/api.ts +31 -0
  119. package/dist/lib/xterm/src/vs/base/common/observableInternal/autorun.ts +281 -0
  120. package/dist/lib/xterm/src/vs/base/common/observableInternal/base.ts +489 -0
  121. package/dist/lib/xterm/src/vs/base/common/observableInternal/debugName.ts +145 -0
  122. package/dist/lib/xterm/src/vs/base/common/observableInternal/derived.ts +428 -0
  123. package/dist/lib/xterm/src/vs/base/common/observableInternal/lazyObservableValue.ts +146 -0
  124. package/dist/lib/xterm/src/vs/base/common/observableInternal/logging.ts +328 -0
  125. package/dist/lib/xterm/src/vs/base/common/observableInternal/promise.ts +209 -0
  126. package/dist/lib/xterm/src/vs/base/common/observableInternal/utils.ts +610 -0
  127. package/dist/lib/xterm/src/vs/base/common/platform.ts +281 -0
  128. package/dist/lib/xterm/src/vs/base/common/scrollable.ts +522 -0
  129. package/dist/lib/xterm/src/vs/base/common/sequence.ts +34 -0
  130. package/dist/lib/xterm/src/vs/base/common/stopwatch.ts +43 -0
  131. package/dist/lib/xterm/src/vs/base/common/strings.ts +557 -0
  132. package/dist/lib/xterm/src/vs/base/common/symbols.ts +9 -0
  133. package/dist/lib/xterm/src/vs/base/common/uint.ts +59 -0
  134. package/dist/lib/xterm/src/vs/patches/nls.ts +90 -0
  135. package/dist/lib/xterm/src/vs/typings/base-common.d.ts +20 -0
  136. package/dist/lib/xterm/src/vs/typings/require.d.ts +42 -0
  137. package/dist/lib/xterm/src/vs/typings/vscode-globals-nls.d.ts +36 -0
  138. package/dist/lib/xterm/src/vs/typings/vscode-globals-product.d.ts +33 -0
  139. package/dist/lib/xterm/typings/xterm.d.ts +156 -43
  140. package/dist/lib/xterm-fit/README.md +5 -5
  141. package/dist/lib/xterm-fit/lib/addon-fit.js +2 -0
  142. package/dist/lib/xterm-fit/lib/addon-fit.js.map +1 -0
  143. package/dist/lib/xterm-fit/lib/addon-fit.mjs +18 -0
  144. package/dist/lib/xterm-fit/lib/addon-fit.mjs.map +7 -0
  145. package/dist/lib/xterm-fit/package.json +9 -9
  146. package/dist/lib/xterm-fit/src/FitAddon.ts +7 -4
  147. package/dist/lib/xterm-fit/typings/addon-fit.d.ts +55 -0
  148. package/dist/lib/xterm-links/README.md +5 -5
  149. package/dist/lib/xterm-links/lib/addon-web-links.js +2 -0
  150. package/dist/lib/xterm-links/lib/addon-web-links.js.map +1 -0
  151. package/dist/lib/xterm-links/lib/addon-web-links.mjs +18 -0
  152. package/dist/lib/xterm-links/lib/addon-web-links.mjs.map +7 -0
  153. package/dist/lib/xterm-links/package.json +9 -9
  154. package/dist/lib/xterm-links/src/WebLinkProvider.ts +16 -15
  155. package/dist/lib/xterm-links/src/WebLinksAddon.ts +4 -3
  156. package/dist/lib/xterm-links/typings/addon-web-links.d.ts +57 -0
  157. package/package.json +5 -6
@@ -0,0 +1,275 @@
1
+ /**
2
+ * Copyright (c) 2017 The xterm.js authors. All rights reserved.
3
+ * @license MIT
4
+ */
5
+
6
+ import { IDisposable } from 'common/Types';
7
+ import { ParserState } from 'common/parser/Constants';
8
+
9
+
10
+ /** sequence params serialized to js arrays */
11
+ export type ParamsArray = (number | number[])[];
12
+
13
+ /** Params constructor type. */
14
+ export interface IParamsConstructor {
15
+ new(maxLength: number, maxSubParamsLength: number): IParams;
16
+
17
+ /** create params from ParamsArray */
18
+ fromArray(values: ParamsArray): IParams;
19
+ }
20
+
21
+ /** Interface of Params storage class. */
22
+ export interface IParams {
23
+ /** from ctor */
24
+ maxLength: number;
25
+ maxSubParamsLength: number;
26
+
27
+ /** param values and its length */
28
+ params: Int32Array;
29
+ length: number;
30
+
31
+ /** methods */
32
+ clone(): IParams;
33
+ toArray(): ParamsArray;
34
+ reset(): void;
35
+ addParam(value: number): void;
36
+ addSubParam(value: number): void;
37
+ hasSubParams(idx: number): boolean;
38
+ getSubParams(idx: number): Int32Array | null;
39
+ getSubParamsAll(): {[idx: number]: Int32Array};
40
+ }
41
+
42
+ /**
43
+ * Internal state of EscapeSequenceParser.
44
+ * Used as argument of the error handler to allow
45
+ * introspection at runtime on parse errors.
46
+ * Return it with altered values to recover from
47
+ * faulty states (not yet supported).
48
+ * Set `abort` to `true` to abort the current parsing.
49
+ */
50
+ export interface IParsingState {
51
+ // position in parse string
52
+ position: number;
53
+ // actual character code
54
+ code: number;
55
+ // current parser state
56
+ currentState: ParserState;
57
+ // collect buffer with intermediate characters
58
+ collect: number;
59
+ // params buffer
60
+ params: IParams;
61
+ // should abort (default: false)
62
+ abort: boolean;
63
+ }
64
+
65
+ /**
66
+ * Command handler interfaces.
67
+ */
68
+
69
+ /**
70
+ * CSI handler types.
71
+ * Note: `params` is borrowed.
72
+ */
73
+ export type CsiHandlerType = (params: IParams) => boolean | Promise<boolean>;
74
+ export type CsiFallbackHandlerType = (ident: number, params: IParams) => void;
75
+
76
+ /**
77
+ * DCS handler types.
78
+ */
79
+ export interface IDcsHandler {
80
+ /**
81
+ * Called when a DCS command starts.
82
+ * Prepare needed data structures here.
83
+ * Note: `params` is borrowed.
84
+ */
85
+ hook(params: IParams): void;
86
+ /**
87
+ * Incoming payload chunk.
88
+ * Note: `params` is borrowed.
89
+ */
90
+ put(data: Uint32Array, start: number, end: number): void;
91
+ /**
92
+ * End of DCS command. `success` indicates whether the
93
+ * command finished normally or got aborted, thus final
94
+ * execution of the command should depend on `success`.
95
+ * To save memory also cleanup data structures here.
96
+ */
97
+ unhook(success: boolean): boolean | Promise<boolean>;
98
+ }
99
+ export type DcsFallbackHandlerType = (ident: number, action: 'HOOK' | 'PUT' | 'UNHOOK', payload?: any) => void;
100
+
101
+ /**
102
+ * ESC handler types.
103
+ */
104
+ export type EscHandlerType = () => boolean | Promise<boolean>;
105
+ export type EscFallbackHandlerType = (identifier: number) => void;
106
+
107
+ /**
108
+ * EXECUTE handler types.
109
+ */
110
+ export type ExecuteHandlerType = () => boolean;
111
+ export type ExecuteFallbackHandlerType = (ident: number) => void;
112
+
113
+ /**
114
+ * OSC handler types.
115
+ */
116
+ export interface IOscHandler {
117
+ /**
118
+ * Announces start of this OSC command.
119
+ * Prepare needed data structures here.
120
+ */
121
+ start(): void;
122
+ /**
123
+ * Incoming data chunk.
124
+ * Note: Data is borrowed.
125
+ */
126
+ put(data: Uint32Array, start: number, end: number): void;
127
+ /**
128
+ * End of OSC command. `success` indicates whether the
129
+ * command finished normally or got aborted, thus final
130
+ * execution of the command should depend on `success`.
131
+ * To save memory also cleanup data structures here.
132
+ */
133
+ end(success: boolean): boolean | Promise<boolean>;
134
+ }
135
+ export type OscFallbackHandlerType = (ident: number, action: 'START' | 'PUT' | 'END', payload?: any) => void;
136
+
137
+ /**
138
+ * PRINT handler types.
139
+ */
140
+ export type PrintHandlerType = (data: Uint32Array, start: number, end: number) => void;
141
+ export type PrintFallbackHandlerType = PrintHandlerType;
142
+
143
+
144
+ /**
145
+ * EscapeSequenceParser interface.
146
+ */
147
+ export interface IEscapeSequenceParser extends IDisposable {
148
+ /**
149
+ * Preceding grapheme-join-state.
150
+ * Used for joining grapheme clusters across calls to `print`.
151
+ * Also used by REP to check if repeating a character is allowed.
152
+ * It gets reset by the parser for any valid sequence besides text.
153
+ */
154
+ precedingJoinState: number; // More specifically: UnicodeJoinProperties
155
+
156
+ /**
157
+ * Reset the parser to its initial state (handlers are kept).
158
+ */
159
+ reset(): void;
160
+
161
+ /**
162
+ * Parse UTF32 codepoints in `data` up to `length`.
163
+ * @param data The data to parse.
164
+ */
165
+ parse(data: Uint32Array, length: number, promiseResult?: boolean): void | Promise<boolean>;
166
+
167
+ /**
168
+ * Get string from numercial function identifier `ident`.
169
+ * Useful in fallback handlers which expose the low level
170
+ * numcerical function identifier for debugging purposes.
171
+ * Note: A full back translation to `IFunctionIdentifier`
172
+ * is not implemented.
173
+ */
174
+ identToString(ident: number): string;
175
+
176
+ setPrintHandler(handler: PrintHandlerType): void;
177
+ clearPrintHandler(): void;
178
+
179
+ registerEscHandler(id: IFunctionIdentifier, handler: EscHandlerType): IDisposable;
180
+ clearEscHandler(id: IFunctionIdentifier): void;
181
+ setEscHandlerFallback(handler: EscFallbackHandlerType): void;
182
+
183
+ setExecuteHandler(flag: string, handler: ExecuteHandlerType): void;
184
+ clearExecuteHandler(flag: string): void;
185
+ setExecuteHandlerFallback(handler: ExecuteFallbackHandlerType): void;
186
+
187
+ registerCsiHandler(id: IFunctionIdentifier, handler: CsiHandlerType): IDisposable;
188
+ clearCsiHandler(id: IFunctionIdentifier): void;
189
+ setCsiHandlerFallback(callback: CsiFallbackHandlerType): void;
190
+
191
+ registerDcsHandler(id: IFunctionIdentifier, handler: IDcsHandler): IDisposable;
192
+ clearDcsHandler(id: IFunctionIdentifier): void;
193
+ setDcsHandlerFallback(handler: DcsFallbackHandlerType): void;
194
+
195
+ registerOscHandler(ident: number, handler: IOscHandler): IDisposable;
196
+ clearOscHandler(ident: number): void;
197
+ setOscHandlerFallback(handler: OscFallbackHandlerType): void;
198
+
199
+ setErrorHandler(handler: (state: IParsingState) => IParsingState): void;
200
+ clearErrorHandler(): void;
201
+ }
202
+
203
+ /**
204
+ * Subparser interfaces.
205
+ * The subparsers are instantiated in `EscapeSequenceParser` and
206
+ * called during `EscapeSequenceParser.parse`.
207
+ */
208
+ export interface ISubParser<T, U> extends IDisposable {
209
+ reset(): void;
210
+ registerHandler(ident: number, handler: T): IDisposable;
211
+ clearHandler(ident: number): void;
212
+ setHandlerFallback(handler: U): void;
213
+ put(data: Uint32Array, start: number, end: number): void;
214
+ }
215
+
216
+ export interface IOscParser extends ISubParser<IOscHandler, OscFallbackHandlerType> {
217
+ start(): void;
218
+ end(success: boolean, promiseResult?: boolean): void | Promise<boolean>;
219
+ }
220
+
221
+ export interface IDcsParser extends ISubParser<IDcsHandler, DcsFallbackHandlerType> {
222
+ hook(ident: number, params: IParams): void;
223
+ unhook(success: boolean, promiseResult?: boolean): void | Promise<boolean>;
224
+ }
225
+
226
+ /**
227
+ * Interface to denote a specific ESC, CSI or DCS handler slot.
228
+ * The values are used to create an integer respresentation during handler
229
+ * regristation before passed to the subparsers as `ident`.
230
+ * The integer translation is made to allow a faster handler access
231
+ * in `EscapeSequenceParser.parse`.
232
+ */
233
+ export interface IFunctionIdentifier {
234
+ prefix?: string;
235
+ intermediates?: string;
236
+ final: string;
237
+ }
238
+
239
+ export interface IHandlerCollection<T> {
240
+ [key: string]: T[];
241
+ }
242
+
243
+ /**
244
+ * Types for async parser support.
245
+ */
246
+
247
+ // type of saved stack state in parser
248
+ export const enum ParserStackType {
249
+ NONE = 0,
250
+ FAIL,
251
+ RESET,
252
+ CSI,
253
+ ESC,
254
+ OSC,
255
+ DCS
256
+ }
257
+
258
+ // aggregate of resumable handler lists
259
+ export type ResumableHandlersType = CsiHandlerType[] | EscHandlerType[];
260
+
261
+ // saved stack state of the parser
262
+ export interface IParserStackState {
263
+ state: ParserStackType;
264
+ handlers: ResumableHandlersType;
265
+ handlerPos: number;
266
+ transition: number;
267
+ chunkPos: number;
268
+ }
269
+
270
+ // saved stack state of subparser (OSC and DCS)
271
+ export interface ISubParserStackState {
272
+ paused: boolean;
273
+ loopPosition: number;
274
+ fallThrough: boolean;
275
+ }
@@ -3,7 +3,7 @@
3
3
  * @license MIT
4
4
  */
5
5
 
6
- import { ITerminalAddon, IDisposable, Terminal } from 'xterm';
6
+ import { ITerminalAddon, IDisposable, Terminal } from '@xterm/xterm';
7
7
 
8
8
  export interface ILoadedAddon {
9
9
  instance: ITerminalAddon;
@@ -3,7 +3,7 @@
3
3
  * @license MIT
4
4
  */
5
5
 
6
- import { IBuffer as IBufferApi, IBufferLine as IBufferLineApi, IBufferCell as IBufferCellApi } from 'xterm';
6
+ import { IBuffer as IBufferApi, IBufferLine as IBufferLineApi, IBufferCell as IBufferCellApi } from '@xterm/xterm';
7
7
  import { IBuffer } from 'common/buffer/Types';
8
8
  import { BufferLineApiView } from 'common/public/BufferLineApiView';
9
9
  import { CellData } from 'common/buffer/CellData';
@@ -5,7 +5,7 @@
5
5
 
6
6
  import { CellData } from 'common/buffer/CellData';
7
7
  import { IBufferLine, ICellData } from 'common/Types';
8
- import { IBufferCell as IBufferCellApi, IBufferLine as IBufferLineApi } from 'xterm';
8
+ import { IBufferCell as IBufferCellApi, IBufferLine as IBufferLineApi } from '@xterm/xterm';
9
9
 
10
10
  export class BufferLineApiView implements IBufferLineApi {
11
11
  constructor(private _line: IBufferLine) { }
@@ -3,17 +3,17 @@
3
3
  * @license MIT
4
4
  */
5
5
 
6
- import { IBuffer as IBufferApi, IBufferNamespace as IBufferNamespaceApi } from 'xterm';
6
+ import { IBuffer as IBufferApi, IBufferNamespace as IBufferNamespaceApi } from '@xterm/xterm';
7
7
  import { BufferApiView } from 'common/public/BufferApiView';
8
- import { EventEmitter } from 'common/EventEmitter';
9
8
  import { ICoreTerminal } from 'common/Types';
10
- import { Disposable } from 'common/Lifecycle';
9
+ import { Disposable } from 'vs/base/common/lifecycle';
10
+ import { Emitter } from 'vs/base/common/event';
11
11
 
12
12
  export class BufferNamespaceApi extends Disposable implements IBufferNamespaceApi {
13
13
  private _normal: BufferApiView;
14
14
  private _alternate: BufferApiView;
15
15
 
16
- private readonly _onBufferChange = this.register(new EventEmitter<IBufferApi>());
16
+ private readonly _onBufferChange = this._register(new Emitter<IBufferApi>());
17
17
  public readonly onBufferChange = this._onBufferChange.event;
18
18
 
19
19
  constructor(private _core: ICoreTerminal) {
@@ -4,7 +4,7 @@
4
4
  */
5
5
 
6
6
  import { IParams } from 'common/parser/Types';
7
- import { IDisposable, IFunctionIdentifier, IParser } from 'xterm';
7
+ import { IDisposable, IFunctionIdentifier, IParser } from '@xterm/xterm';
8
8
  import { ICoreTerminal } from 'common/Types';
9
9
 
10
10
  export class ParserApi implements IParser {
@@ -4,7 +4,7 @@
4
4
  */
5
5
 
6
6
  import { ICoreTerminal } from 'common/Types';
7
- import { IUnicodeHandling, IUnicodeVersionProvider } from 'xterm';
7
+ import { IUnicodeHandling, IUnicodeVersionProvider } from '@xterm/xterm';
8
8
 
9
9
  export class UnicodeApi implements IUnicodeHandling {
10
10
  constructor(private _core: ICoreTerminal) { }
@@ -3,12 +3,12 @@
3
3
  * @license MIT
4
4
  */
5
5
 
6
- import { EventEmitter } from 'common/EventEmitter';
7
- import { Disposable } from 'common/Lifecycle';
8
- import { IAttributeData, IBufferLine, ScrollSource } from 'common/Types';
6
+ import { Disposable } from 'vs/base/common/lifecycle';
7
+ import { IAttributeData, IBufferLine } from 'common/Types';
9
8
  import { BufferSet } from 'common/buffer/BufferSet';
10
9
  import { IBuffer, IBufferSet } from 'common/buffer/Types';
11
- import { IBufferService, IOptionsService } from 'common/services/Services';
10
+ import { IBufferService, IOptionsService, type IBufferResizeEvent } from 'common/services/Services';
11
+ import { Emitter } from 'vs/base/common/event';
12
12
 
13
13
  export const MINIMUM_COLS = 2; // Less than 2 can mess with wide chars
14
14
  export const MINIMUM_ROWS = 1;
@@ -22,9 +22,9 @@ export class BufferService extends Disposable implements IBufferService {
22
22
  /** Whether the user is scrolling (locks the scroll position) */
23
23
  public isUserScrolling: boolean = false;
24
24
 
25
- private readonly _onResize = this.register(new EventEmitter<{ cols: number, rows: number }>());
25
+ private readonly _onResize = this._register(new Emitter<IBufferResizeEvent>());
26
26
  public readonly onResize = this._onResize.event;
27
- private readonly _onScroll = this.register(new EventEmitter<number>());
27
+ private readonly _onScroll = this._register(new Emitter<number>());
28
28
  public readonly onScroll = this._onScroll.event;
29
29
 
30
30
  public get buffer(): IBuffer { return this.buffers.active; }
@@ -36,16 +36,19 @@ export class BufferService extends Disposable implements IBufferService {
36
36
  super();
37
37
  this.cols = Math.max(optionsService.rawOptions.cols || 0, MINIMUM_COLS);
38
38
  this.rows = Math.max(optionsService.rawOptions.rows || 0, MINIMUM_ROWS);
39
- this.buffers = this.register(new BufferSet(optionsService, this));
39
+ this.buffers = this._register(new BufferSet(optionsService, this));
40
+ this._register(this.buffers.onBufferActivate(e => {
41
+ this._onScroll.fire(e.activeBuffer.ydisp);
42
+ }));
40
43
  }
41
44
 
42
45
  public resize(cols: number, rows: number): void {
46
+ const colsChanged = this.cols !== cols;
47
+ const rowsChanged = this.rows !== rows;
43
48
  this.cols = cols;
44
49
  this.rows = rows;
45
50
  this.buffers.resize(cols, rows);
46
- // TODO: This doesn't fire when scrollback changes - add a resize event to BufferSet and forward
47
- // event
48
- this._onResize.fire({ cols, rows });
51
+ this._onResize.fire({ cols, rows, colsChanged, rowsChanged });
49
52
  }
50
53
 
51
54
  public reset(): void {
@@ -125,7 +128,7 @@ export class BufferService extends Disposable implements IBufferService {
125
128
  * to avoid unwanted events being handled by the viewport when the event was triggered from the
126
129
  * viewport originally.
127
130
  */
128
- public scrollLines(disp: number, suppressScrollEvent?: boolean, source?: ScrollSource): void {
131
+ public scrollLines(disp: number, suppressScrollEvent?: boolean): void {
129
132
  const buffer = this.buffer;
130
133
  if (disp < 0) {
131
134
  if (buffer.ydisp === 0) {
@@ -2,10 +2,10 @@
2
2
  * Copyright (c) 2019 The xterm.js authors. All rights reserved.
3
3
  * @license MIT
4
4
  */
5
- import { IBufferService, ICoreService, ICoreMouseService } from 'common/services/Services';
6
- import { EventEmitter } from 'common/EventEmitter';
5
+ import { IBufferService, ICoreService, ICoreMouseService, IOptionsService } from 'common/services/Services';
7
6
  import { ICoreMouseProtocol, ICoreMouseEvent, CoreMouseEncoding, CoreMouseEventType, CoreMouseButton, CoreMouseAction } from 'common/Types';
8
- import { Disposable } from 'common/Lifecycle';
7
+ import { Disposable } from 'vs/base/common/lifecycle';
8
+ import { Emitter } from 'vs/base/common/event';
9
9
 
10
10
  /**
11
11
  * Supported default protocols.
@@ -167,18 +167,22 @@ const DEFAULT_ENCODINGS: { [key: string]: CoreMouseEncoding } = {
167
167
  * To send a mouse event call `triggerMouseEvent`.
168
168
  */
169
169
  export class CoreMouseService extends Disposable implements ICoreMouseService {
170
+ public serviceBrand: any;
171
+
170
172
  private _protocols: { [name: string]: ICoreMouseProtocol } = {};
171
173
  private _encodings: { [name: string]: CoreMouseEncoding } = {};
172
174
  private _activeProtocol: string = '';
173
175
  private _activeEncoding: string = '';
174
176
  private _lastEvent: ICoreMouseEvent | null = null;
177
+ private _wheelPartialScroll: number = 0;
175
178
 
176
- private readonly _onProtocolChange = this.register(new EventEmitter<CoreMouseEventType>());
177
- public readonly onProtocolChange = this._onProtocolChange.event;
179
+ private readonly _onProtocolChange = this._register(new Emitter<CoreMouseEventType>());
180
+ public readonly onProtocolChange = this._onProtocolChange.event;
178
181
 
179
182
  constructor(
180
183
  @IBufferService private readonly _bufferService: IBufferService,
181
- @ICoreService private readonly _coreService: ICoreService
184
+ @ICoreService private readonly _coreService: ICoreService,
185
+ @IOptionsService private readonly _optionsService: IOptionsService
182
186
  ) {
183
187
  super();
184
188
  // register default protocols and encodings
@@ -227,6 +231,49 @@ export class CoreMouseService extends Disposable implements ICoreMouseService {
227
231
  this.activeProtocol = 'NONE';
228
232
  this.activeEncoding = 'DEFAULT';
229
233
  this._lastEvent = null;
234
+ this._wheelPartialScroll = 0;
235
+ }
236
+
237
+ /**
238
+ * Processes a wheel event, accounting for partial scrolls for trackpad, mouse scrolls.
239
+ * This prevents hyper-sensitive scrolling in alt buffer.
240
+ */
241
+ public consumeWheelEvent(ev: WheelEvent, cellHeight?: number, dpr?: number): number {
242
+ // Do nothing if it's not a vertical scroll event
243
+ if (ev.deltaY === 0 || ev.shiftKey) {
244
+ return 0;
245
+ }
246
+
247
+ if (cellHeight === undefined || dpr === undefined) {
248
+ return 0;
249
+ }
250
+
251
+ const targetWheelEventPixels = cellHeight / dpr;
252
+ let amount = this._applyScrollModifier(ev.deltaY, ev);
253
+
254
+ if (ev.deltaMode === WheelEvent.DOM_DELTA_PIXEL) {
255
+ amount /= (targetWheelEventPixels + 0.0); // Prevent integer division
256
+
257
+ const isLikelyTrackpad = Math.abs(ev.deltaY) < 50;
258
+ if (isLikelyTrackpad) {
259
+ amount *= 0.3;
260
+ }
261
+
262
+ this._wheelPartialScroll += amount;
263
+ amount = Math.floor(Math.abs(this._wheelPartialScroll)) * (this._wheelPartialScroll > 0 ? 1 : -1);
264
+ this._wheelPartialScroll %= 1;
265
+ } else if (ev.deltaMode === WheelEvent.DOM_DELTA_PAGE) {
266
+ amount *= this._bufferService.rows;
267
+ }
268
+ return amount;
269
+ }
270
+
271
+ private _applyScrollModifier(amount: number, ev: WheelEvent): number {
272
+ // Multiply the scroll speed when the modifier key is pressed
273
+ if (ev.altKey || ev.ctrlKey || ev.shiftKey) {
274
+ return amount * this._optionsService.rawOptions.fastScrollSensitivity * this._optionsService.rawOptions.scrollSensitivity;
275
+ }
276
+ return amount * this._optionsService.rawOptions.scrollSensitivity;
230
277
  }
231
278
 
232
279
  /**
@@ -4,10 +4,10 @@
4
4
  */
5
5
 
6
6
  import { clone } from 'common/Clone';
7
- import { EventEmitter } from 'common/EventEmitter';
8
- import { Disposable } from 'common/Lifecycle';
7
+ import { Disposable } from 'vs/base/common/lifecycle';
9
8
  import { IDecPrivateModes, IModes } from 'common/Types';
10
9
  import { IBufferService, ICoreService, ILogService, IOptionsService } from 'common/services/Services';
10
+ import { Emitter } from 'vs/base/common/event';
11
11
 
12
12
  const DEFAULT_MODES: IModes = Object.freeze({
13
13
  insertMode: false
@@ -17,9 +17,12 @@ const DEFAULT_DEC_PRIVATE_MODES: IDecPrivateModes = Object.freeze({
17
17
  applicationCursorKeys: false,
18
18
  applicationKeypad: false,
19
19
  bracketedPasteMode: false,
20
+ cursorBlink: undefined,
21
+ cursorStyle: undefined,
20
22
  origin: false,
21
23
  reverseWraparound: false,
22
24
  sendFocus: false,
25
+ synchronizedOutput: false,
23
26
  wraparound: true // defaults: xterm - true, vt100 - false
24
27
  });
25
28
 
@@ -31,13 +34,13 @@ export class CoreService extends Disposable implements ICoreService {
31
34
  public modes: IModes;
32
35
  public decPrivateModes: IDecPrivateModes;
33
36
 
34
- private readonly _onData = this.register(new EventEmitter<string>());
37
+ private readonly _onData = this._register(new Emitter<string>());
35
38
  public readonly onData = this._onData.event;
36
- private readonly _onUserInput = this.register(new EventEmitter<void>());
39
+ private readonly _onUserInput = this._register(new Emitter<void>());
37
40
  public readonly onUserInput = this._onUserInput.event;
38
- private readonly _onBinary = this.register(new EventEmitter<string>());
41
+ private readonly _onBinary = this._register(new Emitter<string>());
39
42
  public readonly onBinary = this._onBinary.event;
40
- private readonly _onRequestScrollToBottom = this.register(new EventEmitter<void>());
43
+ private readonly _onRequestScrollToBottom = this._register(new Emitter<void>());
41
44
  public readonly onRequestScrollToBottom = this._onRequestScrollToBottom.event;
42
45
 
43
46
  constructor(
@@ -73,7 +76,8 @@ export class CoreService extends Disposable implements ICoreService {
73
76
  }
74
77
 
75
78
  // Fire onData API
76
- this._logService.debug(`sending data "${data}"`, () => data.split('').map(e => e.charCodeAt(0)));
79
+ this._logService.debug(`sending data "${data}"`);
80
+ this._logService.trace(`sending data (codes)`, () => data.split('').map(e => e.charCodeAt(0)));
77
81
  this._onData.fire(data);
78
82
  }
79
83
 
@@ -81,7 +85,8 @@ export class CoreService extends Disposable implements ICoreService {
81
85
  if (this._optionsService.rawOptions.disableStdin) {
82
86
  return;
83
87
  }
84
- this._logService.debug(`sending binary "${data}"`, () => data.split('').map(e => e.charCodeAt(0)));
88
+ this._logService.debug(`sending binary "${data}"`);
89
+ this._logService.trace(`sending binary (codes)`, () => data.split('').map(e => e.charCodeAt(0)));
85
90
  this._onBinary.fire(data);
86
91
  }
87
92
  }
@@ -4,12 +4,12 @@
4
4
  */
5
5
 
6
6
  import { css } from 'common/Color';
7
- import { EventEmitter } from 'common/EventEmitter';
8
- import { Disposable, toDisposable } from 'common/Lifecycle';
7
+ import { Disposable, DisposableStore, toDisposable } from 'vs/base/common/lifecycle';
9
8
  import { IDecorationService, IInternalDecoration } from 'common/services/Services';
10
9
  import { SortedList } from 'common/SortedList';
11
10
  import { IColor } from 'common/Types';
12
- import { IDecoration, IDecorationOptions, IMarker } from 'xterm';
11
+ import { IDecoration, IDecorationOptions, IMarker } from '@xterm/xterm';
12
+ import { Emitter } from 'vs/base/common/event';
13
13
 
14
14
  // Work variables to avoid garbage collection
15
15
  let $xmin = 0;
@@ -25,9 +25,9 @@ export class DecorationService extends Disposable implements IDecorationService
25
25
  */
26
26
  private readonly _decorations: SortedList<IInternalDecoration> = new SortedList(e => e?.marker.line);
27
27
 
28
- private readonly _onDecorationRegistered = this.register(new EventEmitter<IInternalDecoration>());
28
+ private readonly _onDecorationRegistered = this._register(new Emitter<IInternalDecoration>());
29
29
  public readonly onDecorationRegistered = this._onDecorationRegistered.event;
30
- private readonly _onDecorationRemoved = this.register(new EventEmitter<IInternalDecoration>());
30
+ private readonly _onDecorationRemoved = this._register(new Emitter<IInternalDecoration>());
31
31
  public readonly onDecorationRemoved = this._onDecorationRemoved.event;
32
32
 
33
33
  public get decorations(): IterableIterator<IInternalDecoration> { return this._decorations.values(); }
@@ -35,7 +35,7 @@ export class DecorationService extends Disposable implements IDecorationService
35
35
  constructor() {
36
36
  super();
37
37
 
38
- this.register(toDisposable(() => this.reset()));
38
+ this._register(toDisposable(() => this.reset()));
39
39
  }
40
40
 
41
41
  public registerDecoration(options: IDecorationOptions): IDecoration | undefined {
@@ -45,7 +45,8 @@ export class DecorationService extends Disposable implements IDecorationService
45
45
  const decoration = new Decoration(options);
46
46
  if (decoration) {
47
47
  const markerDispose = decoration.marker.onDispose(() => decoration.dispose());
48
- decoration.onDispose(() => {
48
+ const listener = decoration.onDispose(() => {
49
+ listener.dispose();
49
50
  if (decoration) {
50
51
  if (this._decorations.delete(decoration)) {
51
52
  this._onDecorationRemoved.fire(decoration);
@@ -89,14 +90,13 @@ export class DecorationService extends Disposable implements IDecorationService
89
90
  }
90
91
  }
91
92
 
92
- class Decoration extends Disposable implements IInternalDecoration {
93
+ class Decoration extends DisposableStore implements IInternalDecoration {
93
94
  public readonly marker: IMarker;
94
95
  public element: HTMLElement | undefined;
95
- public get isDisposed(): boolean { return this._isDisposed; }
96
96
 
97
- public readonly onRenderEmitter = this.register(new EventEmitter<HTMLElement>());
97
+ public readonly onRenderEmitter = this.add(new Emitter<HTMLElement>());
98
98
  public readonly onRender = this.onRenderEmitter.event;
99
- private readonly _onDispose = this.register(new EventEmitter<void>());
99
+ private readonly _onDispose = this.add(new Emitter<void>());
100
100
  public readonly onDispose = this._onDispose.event;
101
101
 
102
102
  private _cachedBg: IColor | undefined | null = null;
@@ -67,7 +67,7 @@ export class InstantiationService implements IInstantiationService {
67
67
  for (const dependency of serviceDependencies) {
68
68
  const service = this._services.get(dependency.id);
69
69
  if (!service) {
70
- throw new Error(`[createInstance] ${ctor.name} depends on UNKNOWN service ${dependency.id}.`);
70
+ throw new Error(`[createInstance] ${ctor.name} depends on UNKNOWN service ${dependency.id._id}.`);
71
71
  }
72
72
  serviceArgs.push(service);
73
73
  }
@@ -3,7 +3,7 @@
3
3
  * @license MIT
4
4
  */
5
5
 
6
- import { Disposable } from 'common/Lifecycle';
6
+ import { Disposable } from 'vs/base/common/lifecycle';
7
7
  import { ILogService, IOptionsService, LogLevelEnum } from 'common/services/Services';
8
8
 
9
9
  type LogType = (message?: any, ...optionalParams: any[]) => void;
@@ -42,7 +42,7 @@ export class LogService extends Disposable implements ILogService {
42
42
  ) {
43
43
  super();
44
44
  this._updateLogLevel();
45
- this.register(this._optionsService.onSpecificOptionChange('logLevel', () => this._updateLogLevel()));
45
+ this._register(this._optionsService.onSpecificOptionChange('logLevel', () => this._updateLogLevel()));
46
46
 
47
47
  // For trace logging, assume the latest created log service is valid
48
48
  traceLogger = this;