@xterm/xterm 6.1.0-beta.28 → 6.1.0-beta.280

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 (181) hide show
  1. package/README.md +62 -38
  2. package/css/xterm.css +29 -22
  3. package/lib/xterm.js +1 -1
  4. package/lib/xterm.js.map +1 -1
  5. package/lib/xterm.mjs +8 -34
  6. package/lib/xterm.mjs.map +4 -4
  7. package/package.json +56 -45
  8. package/src/browser/AccessibilityManager.ts +18 -13
  9. package/src/browser/Clipboard.ts +8 -5
  10. package/src/browser/ColorContrastCache.ts +3 -3
  11. package/src/browser/CoreBrowserTerminal.ts +179 -348
  12. package/src/browser/Dom.ts +178 -0
  13. package/src/browser/Linkifier.ts +14 -14
  14. package/src/browser/OscLinkProvider.ts +86 -18
  15. package/src/browser/RenderDebouncer.ts +7 -9
  16. package/src/browser/TimeBasedDebouncer.ts +12 -5
  17. package/src/browser/Types.ts +16 -14
  18. package/src/browser/Viewport.ts +58 -23
  19. package/src/browser/decorations/BufferDecorationRenderer.ts +3 -3
  20. package/src/browser/decorations/ColorZoneStore.ts +1 -1
  21. package/src/browser/decorations/OverviewRulerRenderer.ts +36 -20
  22. package/src/browser/input/CompositionHelper.ts +47 -11
  23. package/src/browser/input/Mouse.ts +5 -9
  24. package/src/browser/input/MoveToCell.ts +3 -3
  25. package/src/browser/public/Terminal.ts +33 -36
  26. package/src/browser/renderer/dom/DomRenderer.ts +265 -89
  27. package/src/browser/renderer/dom/DomRendererRowFactory.ts +34 -27
  28. package/src/browser/renderer/dom/WidthCache.ts +57 -55
  29. package/src/browser/renderer/shared/Constants.ts +7 -0
  30. package/src/browser/renderer/shared/RendererUtils.ts +1 -1
  31. package/src/browser/renderer/shared/SelectionRenderModel.ts +2 -2
  32. package/src/browser/renderer/shared/TextBlinkStateManager.ts +97 -0
  33. package/src/browser/renderer/shared/Types.ts +10 -4
  34. package/src/browser/scrollable/abstractScrollbar.ts +300 -0
  35. package/src/browser/scrollable/fastDomNode.ts +126 -0
  36. package/src/browser/scrollable/globalPointerMoveMonitor.ts +90 -0
  37. package/src/browser/scrollable/horizontalScrollbar.ts +85 -0
  38. package/src/browser/scrollable/mouseEvent.ts +292 -0
  39. package/src/browser/scrollable/scrollable.ts +486 -0
  40. package/src/browser/scrollable/scrollableElement.ts +581 -0
  41. package/src/browser/scrollable/scrollableElementOptions.ts +161 -0
  42. package/src/browser/scrollable/scrollbarArrow.ts +110 -0
  43. package/src/browser/scrollable/scrollbarState.ts +246 -0
  44. package/src/browser/scrollable/scrollbarVisibilityController.ts +113 -0
  45. package/src/browser/scrollable/touch.ts +485 -0
  46. package/src/browser/scrollable/verticalScrollbar.ts +143 -0
  47. package/src/browser/scrollable/widget.ts +23 -0
  48. package/src/browser/selection/SelectionModel.ts +1 -1
  49. package/src/browser/services/CharSizeService.ts +4 -4
  50. package/src/browser/services/CharacterJoinerService.ts +13 -11
  51. package/src/browser/services/CoreBrowserService.ts +7 -5
  52. package/src/browser/services/KeyboardService.ts +67 -0
  53. package/src/browser/services/LinkProviderService.ts +3 -3
  54. package/src/browser/services/MouseCoordsService.ts +47 -0
  55. package/src/browser/services/MouseService.ts +619 -23
  56. package/src/browser/services/RenderService.ts +33 -21
  57. package/src/browser/services/SelectionService.ts +72 -54
  58. package/src/browser/services/Services.ts +44 -21
  59. package/src/browser/services/ThemeService.ts +9 -9
  60. package/src/common/Async.ts +141 -0
  61. package/src/common/CircularList.ts +24 -3
  62. package/src/common/Color.ts +13 -5
  63. package/src/common/CoreTerminal.ts +61 -35
  64. package/src/common/Event.ts +118 -0
  65. package/src/common/InputHandler.ts +286 -105
  66. package/src/common/Lifecycle.ts +113 -0
  67. package/src/common/Platform.ts +15 -5
  68. package/src/common/SortedList.ts +8 -4
  69. package/src/common/StringBuilder.ts +67 -0
  70. package/src/common/TaskQueue.ts +17 -8
  71. package/src/common/Types.ts +68 -206
  72. package/src/common/Version.ts +1 -1
  73. package/src/common/WindowsMode.ts +2 -2
  74. package/src/common/buffer/AttributeData.ts +3 -2
  75. package/src/common/buffer/Buffer.ts +47 -32
  76. package/src/common/buffer/BufferLine.ts +175 -100
  77. package/src/common/buffer/BufferLineStringCache.ts +69 -0
  78. package/src/common/buffer/BufferReflow.ts +7 -4
  79. package/src/common/buffer/BufferSet.ts +13 -9
  80. package/src/common/buffer/CellData.ts +61 -4
  81. package/src/common/buffer/Constants.ts +13 -13
  82. package/src/common/buffer/Marker.ts +4 -4
  83. package/src/common/buffer/Types.ts +153 -3
  84. package/src/common/data/Charsets.ts +4 -7
  85. package/src/common/data/EscapeSequences.ts +71 -70
  86. package/src/common/input/Keyboard.ts +17 -10
  87. package/src/common/input/KittyKeyboard.ts +526 -0
  88. package/src/common/input/TextDecoder.ts +3 -3
  89. package/src/common/input/UnicodeV6.ts +3 -2
  90. package/src/common/input/Win32InputMode.ts +297 -0
  91. package/src/common/input/WriteBuffer.ts +108 -39
  92. package/src/common/input/XParseColor.ts +2 -2
  93. package/src/common/parser/ApcParser.ts +196 -0
  94. package/src/common/parser/Constants.ts +14 -4
  95. package/src/common/parser/DcsParser.ts +15 -16
  96. package/src/common/parser/EscapeSequenceParser.ts +214 -72
  97. package/src/common/parser/OscParser.ts +14 -15
  98. package/src/common/parser/Params.ts +31 -12
  99. package/src/common/parser/Types.ts +40 -30
  100. package/src/common/public/BufferApiView.ts +3 -3
  101. package/src/common/public/BufferLineApiView.ts +4 -4
  102. package/src/common/public/BufferNamespaceApi.ts +5 -5
  103. package/src/common/public/ParserApi.ts +5 -2
  104. package/src/common/public/UnicodeApi.ts +1 -1
  105. package/src/common/services/BufferService.ts +17 -13
  106. package/src/common/services/CharsetService.ts +6 -2
  107. package/src/common/services/CoreService.ts +23 -10
  108. package/src/common/services/DecorationService.ts +260 -15
  109. package/src/common/services/InstantiationService.ts +2 -2
  110. package/src/common/services/LogService.ts +2 -32
  111. package/src/common/services/{CoreMouseService.ts → MouseStateService.ts} +22 -133
  112. package/src/common/services/OptionsService.ts +17 -7
  113. package/src/common/services/OscLinkService.ts +3 -2
  114. package/src/common/services/ServiceRegistry.ts +14 -8
  115. package/src/common/services/Services.ts +54 -50
  116. package/src/common/services/UnicodeService.ts +6 -11
  117. package/typings/xterm.d.ts +329 -34
  118. package/src/common/Clone.ts +0 -23
  119. package/src/common/TypedArrayUtils.ts +0 -17
  120. package/src/vs/base/browser/browser.ts +0 -141
  121. package/src/vs/base/browser/canIUse.ts +0 -49
  122. package/src/vs/base/browser/dom.ts +0 -2369
  123. package/src/vs/base/browser/fastDomNode.ts +0 -316
  124. package/src/vs/base/browser/globalPointerMoveMonitor.ts +0 -112
  125. package/src/vs/base/browser/iframe.ts +0 -135
  126. package/src/vs/base/browser/keyboardEvent.ts +0 -213
  127. package/src/vs/base/browser/mouseEvent.ts +0 -229
  128. package/src/vs/base/browser/touch.ts +0 -372
  129. package/src/vs/base/browser/ui/scrollbar/abstractScrollbar.ts +0 -303
  130. package/src/vs/base/browser/ui/scrollbar/horizontalScrollbar.ts +0 -114
  131. package/src/vs/base/browser/ui/scrollbar/scrollableElement.ts +0 -720
  132. package/src/vs/base/browser/ui/scrollbar/scrollableElementOptions.ts +0 -165
  133. package/src/vs/base/browser/ui/scrollbar/scrollbarArrow.ts +0 -114
  134. package/src/vs/base/browser/ui/scrollbar/scrollbarState.ts +0 -243
  135. package/src/vs/base/browser/ui/scrollbar/scrollbarVisibilityController.ts +0 -118
  136. package/src/vs/base/browser/ui/scrollbar/verticalScrollbar.ts +0 -116
  137. package/src/vs/base/browser/ui/widget.ts +0 -57
  138. package/src/vs/base/browser/window.ts +0 -14
  139. package/src/vs/base/common/arrays.ts +0 -887
  140. package/src/vs/base/common/arraysFind.ts +0 -202
  141. package/src/vs/base/common/assert.ts +0 -71
  142. package/src/vs/base/common/async.ts +0 -1992
  143. package/src/vs/base/common/cancellation.ts +0 -148
  144. package/src/vs/base/common/charCode.ts +0 -450
  145. package/src/vs/base/common/collections.ts +0 -140
  146. package/src/vs/base/common/decorators.ts +0 -130
  147. package/src/vs/base/common/equals.ts +0 -146
  148. package/src/vs/base/common/errors.ts +0 -303
  149. package/src/vs/base/common/event.ts +0 -1778
  150. package/src/vs/base/common/functional.ts +0 -32
  151. package/src/vs/base/common/hash.ts +0 -316
  152. package/src/vs/base/common/iterator.ts +0 -159
  153. package/src/vs/base/common/keyCodes.ts +0 -526
  154. package/src/vs/base/common/keybindings.ts +0 -284
  155. package/src/vs/base/common/lazy.ts +0 -47
  156. package/src/vs/base/common/lifecycle.ts +0 -801
  157. package/src/vs/base/common/linkedList.ts +0 -142
  158. package/src/vs/base/common/map.ts +0 -202
  159. package/src/vs/base/common/numbers.ts +0 -98
  160. package/src/vs/base/common/observable.ts +0 -76
  161. package/src/vs/base/common/observableInternal/api.ts +0 -31
  162. package/src/vs/base/common/observableInternal/autorun.ts +0 -281
  163. package/src/vs/base/common/observableInternal/base.ts +0 -489
  164. package/src/vs/base/common/observableInternal/debugName.ts +0 -145
  165. package/src/vs/base/common/observableInternal/derived.ts +0 -428
  166. package/src/vs/base/common/observableInternal/lazyObservableValue.ts +0 -146
  167. package/src/vs/base/common/observableInternal/logging.ts +0 -328
  168. package/src/vs/base/common/observableInternal/promise.ts +0 -209
  169. package/src/vs/base/common/observableInternal/utils.ts +0 -610
  170. package/src/vs/base/common/platform.ts +0 -281
  171. package/src/vs/base/common/scrollable.ts +0 -522
  172. package/src/vs/base/common/sequence.ts +0 -34
  173. package/src/vs/base/common/stopwatch.ts +0 -43
  174. package/src/vs/base/common/strings.ts +0 -557
  175. package/src/vs/base/common/symbols.ts +0 -9
  176. package/src/vs/base/common/uint.ts +0 -59
  177. package/src/vs/patches/nls.ts +0 -90
  178. package/src/vs/typings/base-common.d.ts +0 -20
  179. package/src/vs/typings/require.d.ts +0 -42
  180. package/src/vs/typings/vscode-globals-nls.d.ts +0 -36
  181. package/src/vs/typings/vscode-globals-product.d.ts +0 -33
@@ -1,141 +0,0 @@
1
- /*---------------------------------------------------------------------------------------------
2
- * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Licensed under the MIT License. See License.txt in the project root for license information.
4
- *--------------------------------------------------------------------------------------------*/
5
-
6
- import { CodeWindow, mainWindow } from 'vs/base/browser/window';
7
- import { Emitter } from 'vs/base/common/event';
8
-
9
- class WindowManager {
10
-
11
- static readonly INSTANCE = new WindowManager();
12
-
13
- // --- Zoom Level
14
-
15
- private readonly mapWindowIdToZoomLevel = new Map<number, number>();
16
-
17
- private readonly _onDidChangeZoomLevel = new Emitter<number>();
18
- readonly onDidChangeZoomLevel = this._onDidChangeZoomLevel.event;
19
-
20
- getZoomLevel(targetWindow: Window): number {
21
- return this.mapWindowIdToZoomLevel.get(this.getWindowId(targetWindow)) ?? 0;
22
- }
23
- setZoomLevel(zoomLevel: number, targetWindow: Window): void {
24
- if (this.getZoomLevel(targetWindow) === zoomLevel) {
25
- return;
26
- }
27
-
28
- const targetWindowId = this.getWindowId(targetWindow);
29
- this.mapWindowIdToZoomLevel.set(targetWindowId, zoomLevel);
30
- this._onDidChangeZoomLevel.fire(targetWindowId);
31
- }
32
-
33
- // --- Zoom Factor
34
-
35
- private readonly mapWindowIdToZoomFactor = new Map<number, number>();
36
-
37
- getZoomFactor(targetWindow: Window): number {
38
- return this.mapWindowIdToZoomFactor.get(this.getWindowId(targetWindow)) ?? 1;
39
- }
40
- setZoomFactor(zoomFactor: number, targetWindow: Window): void {
41
- this.mapWindowIdToZoomFactor.set(this.getWindowId(targetWindow), zoomFactor);
42
- }
43
-
44
- // --- Fullscreen
45
-
46
- private readonly _onDidChangeFullscreen = new Emitter<number>();
47
- readonly onDidChangeFullscreen = this._onDidChangeFullscreen.event;
48
-
49
- private readonly mapWindowIdToFullScreen = new Map<number, boolean>();
50
-
51
- setFullscreen(fullscreen: boolean, targetWindow: Window): void {
52
- if (this.isFullscreen(targetWindow) === fullscreen) {
53
- return;
54
- }
55
-
56
- const windowId = this.getWindowId(targetWindow);
57
- this.mapWindowIdToFullScreen.set(windowId, fullscreen);
58
- this._onDidChangeFullscreen.fire(windowId);
59
- }
60
- isFullscreen(targetWindow: Window): boolean {
61
- return !!this.mapWindowIdToFullScreen.get(this.getWindowId(targetWindow));
62
- }
63
-
64
- private getWindowId(targetWindow: Window): number {
65
- return (targetWindow as CodeWindow).vscodeWindowId;
66
- }
67
- }
68
-
69
- export function addMatchMediaChangeListener(targetWindow: Window, query: string | MediaQueryList, callback: (this: MediaQueryList, ev: MediaQueryListEvent) => any): void {
70
- if (typeof query === 'string') {
71
- query = targetWindow.matchMedia(query);
72
- }
73
- query.addEventListener('change', callback);
74
- }
75
-
76
- /** A zoom index, e.g. 1, 2, 3 */
77
- export function setZoomLevel(zoomLevel: number, targetWindow: Window): void {
78
- WindowManager.INSTANCE.setZoomLevel(zoomLevel, targetWindow);
79
- }
80
- export function getZoomLevel(targetWindow: Window): number {
81
- return WindowManager.INSTANCE.getZoomLevel(targetWindow);
82
- }
83
- export const onDidChangeZoomLevel = WindowManager.INSTANCE.onDidChangeZoomLevel;
84
-
85
- /** The zoom scale for an index, e.g. 1, 1.2, 1.4 */
86
- export function getZoomFactor(targetWindow: Window): number {
87
- return WindowManager.INSTANCE.getZoomFactor(targetWindow);
88
- }
89
- export function setZoomFactor(zoomFactor: number, targetWindow: Window): void {
90
- WindowManager.INSTANCE.setZoomFactor(zoomFactor, targetWindow);
91
- }
92
-
93
- export function setFullscreen(fullscreen: boolean, targetWindow: Window): void {
94
- WindowManager.INSTANCE.setFullscreen(fullscreen, targetWindow);
95
- }
96
- export function isFullscreen(targetWindow: Window): boolean {
97
- return WindowManager.INSTANCE.isFullscreen(targetWindow);
98
- }
99
- export const onDidChangeFullscreen = WindowManager.INSTANCE.onDidChangeFullscreen;
100
-
101
- const userAgent = typeof navigator === 'object' ? navigator.userAgent : '';
102
-
103
- export const isFirefox = (userAgent.indexOf('Firefox') >= 0);
104
- export const isWebKit = (userAgent.indexOf('AppleWebKit') >= 0);
105
- export const isChrome = (userAgent.indexOf('Chrome') >= 0);
106
- export const isSafari = (!isChrome && (userAgent.indexOf('Safari') >= 0));
107
- export const isWebkitWebView = (!isChrome && !isSafari && isWebKit);
108
- export const isElectron = (userAgent.indexOf('Electron/') >= 0);
109
- export const isAndroid = (userAgent.indexOf('Android') >= 0);
110
-
111
- let standalone = false;
112
- if (typeof mainWindow.matchMedia === 'function') {
113
- const standaloneMatchMedia = mainWindow.matchMedia('(display-mode: standalone) or (display-mode: window-controls-overlay)');
114
- const fullScreenMatchMedia = mainWindow.matchMedia('(display-mode: fullscreen)');
115
- standalone = standaloneMatchMedia.matches;
116
- addMatchMediaChangeListener(mainWindow, standaloneMatchMedia, ({ matches }) => {
117
- // entering fullscreen would change standaloneMatchMedia.matches to false
118
- // if standalone is true (running as PWA) and entering fullscreen, skip this change
119
- if (standalone && fullScreenMatchMedia.matches) {
120
- return;
121
- }
122
- // otherwise update standalone (browser to PWA or PWA to browser)
123
- standalone = matches;
124
- });
125
- }
126
- export function isStandalone(): boolean {
127
- return standalone;
128
- }
129
-
130
- // Visible means that the feature is enabled, not necessarily being rendered
131
- // e.g. visible is true even in fullscreen mode where the controls are hidden
132
- // See docs at https://developer.mozilla.org/en-US/docs/Web/API/WindowControlsOverlay/visible
133
- export function isWCOEnabled(): boolean {
134
- return (navigator as any)?.windowControlsOverlay?.visible;
135
- }
136
-
137
- // Returns the bounding rect of the titlebar area if it is supported and defined
138
- // See docs at https://developer.mozilla.org/en-US/docs/Web/API/WindowControlsOverlay/getTitlebarAreaRect
139
- export function getWCOBoundingRect(): DOMRect | undefined {
140
- return (navigator as any)?.windowControlsOverlay?.getTitlebarAreaRect();
141
- }
@@ -1,49 +0,0 @@
1
- /*---------------------------------------------------------------------------------------------
2
- * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Licensed under the MIT License. See License.txt in the project root for license information.
4
- *--------------------------------------------------------------------------------------------*/
5
-
6
- import * as browser from 'vs/base/browser/browser';
7
- import { mainWindow } from 'vs/base/browser/window';
8
- import * as platform from 'vs/base/common/platform';
9
-
10
- export const enum KeyboardSupport {
11
- Always,
12
- FullScreen,
13
- None
14
- }
15
-
16
- const safeNavigator = typeof navigator === 'object' ? navigator : {} as { [key: string]: any };
17
-
18
- /**
19
- * Browser feature we can support in current platform, browser and environment.
20
- */
21
- export const BrowserFeatures = {
22
- clipboard: {
23
- writeText: (
24
- platform.isNative
25
- || (document.queryCommandSupported && document.queryCommandSupported('copy'))
26
- || !!(safeNavigator && safeNavigator.clipboard && safeNavigator.clipboard.writeText)
27
- ),
28
- readText: (
29
- platform.isNative
30
- || !!(safeNavigator && safeNavigator.clipboard && safeNavigator.clipboard.readText)
31
- )
32
- },
33
- keyboard: (() => {
34
- if (platform.isNative || browser.isStandalone()) {
35
- return KeyboardSupport.Always;
36
- }
37
-
38
- if ((<any>safeNavigator).keyboard || browser.isSafari) {
39
- return KeyboardSupport.FullScreen;
40
- }
41
-
42
- return KeyboardSupport.None;
43
- })(),
44
-
45
- // 'ontouchstart' in window always evaluates to true with typescript's modern typings. This causes `window` to be
46
- // `never` later in `window.navigator`. That's why we need the explicit `window as Window` cast
47
- touch: 'ontouchstart' in mainWindow || safeNavigator.maxTouchPoints > 0,
48
- pointerEvents: mainWindow.PointerEvent && ('ontouchstart' in mainWindow || navigator.maxTouchPoints > 0)
49
- };