@xterm/xterm 6.1.0-beta.20 → 6.1.0-beta.200

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/README.md +60 -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 +25 -14
  8. package/src/browser/AccessibilityManager.ts +6 -3
  9. package/src/browser/Clipboard.ts +6 -3
  10. package/src/browser/CoreBrowserTerminal.ts +147 -318
  11. package/src/browser/Dom.ts +178 -0
  12. package/src/browser/Linkifier.ts +11 -11
  13. package/src/browser/OscLinkProvider.ts +3 -1
  14. package/src/browser/RenderDebouncer.ts +2 -2
  15. package/src/browser/TimeBasedDebouncer.ts +2 -2
  16. package/src/browser/Types.ts +12 -11
  17. package/src/browser/Viewport.ts +55 -20
  18. package/src/browser/decorations/BufferDecorationRenderer.ts +1 -1
  19. package/src/browser/decorations/OverviewRulerRenderer.ts +33 -17
  20. package/src/browser/input/CompositionHelper.ts +44 -8
  21. package/src/browser/public/Terminal.ts +25 -28
  22. package/src/browser/renderer/dom/DomRenderer.ts +205 -41
  23. package/src/browser/renderer/dom/DomRendererRowFactory.ts +19 -13
  24. package/src/browser/renderer/dom/WidthCache.ts +54 -52
  25. package/src/browser/renderer/shared/Constants.ts +7 -0
  26. package/src/browser/renderer/shared/TextBlinkStateManager.ts +97 -0
  27. package/src/browser/renderer/shared/Types.ts +8 -2
  28. package/src/browser/scrollable/abstractScrollbar.ts +300 -0
  29. package/src/browser/scrollable/fastDomNode.ts +126 -0
  30. package/src/browser/scrollable/globalPointerMoveMonitor.ts +90 -0
  31. package/src/browser/scrollable/horizontalScrollbar.ts +85 -0
  32. package/src/browser/scrollable/mouseEvent.ts +292 -0
  33. package/src/browser/scrollable/scrollable.ts +486 -0
  34. package/src/browser/scrollable/scrollableElement.ts +579 -0
  35. package/src/browser/scrollable/scrollableElementOptions.ts +161 -0
  36. package/src/browser/scrollable/scrollbarArrow.ts +110 -0
  37. package/src/browser/scrollable/scrollbarState.ts +246 -0
  38. package/src/browser/scrollable/scrollbarVisibilityController.ts +113 -0
  39. package/src/browser/scrollable/touch.ts +485 -0
  40. package/src/browser/scrollable/verticalScrollbar.ts +143 -0
  41. package/src/browser/scrollable/widget.ts +23 -0
  42. package/src/browser/services/CharSizeService.ts +2 -2
  43. package/src/browser/services/CoreBrowserService.ts +7 -5
  44. package/src/browser/services/KeyboardService.ts +67 -0
  45. package/src/browser/services/LinkProviderService.ts +1 -1
  46. package/src/browser/services/MouseCoordsService.ts +47 -0
  47. package/src/browser/services/MouseService.ts +518 -25
  48. package/src/browser/services/RenderService.ts +22 -15
  49. package/src/browser/services/SelectionService.ts +16 -8
  50. package/src/browser/services/Services.ts +40 -17
  51. package/src/browser/services/ThemeService.ts +2 -2
  52. package/src/common/Async.ts +105 -0
  53. package/src/common/CircularList.ts +2 -2
  54. package/src/common/Color.ts +8 -0
  55. package/src/common/CoreTerminal.ts +28 -18
  56. package/src/common/Event.ts +118 -0
  57. package/src/common/InputHandler.ts +256 -36
  58. package/src/common/Lifecycle.ts +113 -0
  59. package/src/common/Platform.ts +13 -3
  60. package/src/common/SortedList.ts +7 -3
  61. package/src/common/TaskQueue.ts +14 -5
  62. package/src/common/Types.ts +35 -15
  63. package/src/common/Version.ts +9 -0
  64. package/src/common/buffer/Buffer.ts +20 -14
  65. package/src/common/buffer/BufferLine.ts +4 -5
  66. package/src/common/buffer/BufferSet.ts +7 -6
  67. package/src/common/buffer/CellData.ts +57 -0
  68. package/src/common/buffer/Marker.ts +2 -2
  69. package/src/common/buffer/Types.ts +6 -2
  70. package/src/common/data/EscapeSequences.ts +71 -70
  71. package/src/common/input/Keyboard.ts +14 -7
  72. package/src/common/input/KittyKeyboard.ts +519 -0
  73. package/src/common/input/Win32InputMode.ts +297 -0
  74. package/src/common/input/WriteBuffer.ts +34 -2
  75. package/src/common/input/XParseColor.ts +2 -2
  76. package/src/common/parser/ApcParser.ts +245 -0
  77. package/src/common/parser/Constants.ts +22 -4
  78. package/src/common/parser/DcsParser.ts +5 -5
  79. package/src/common/parser/EscapeSequenceParser.ts +155 -43
  80. package/src/common/parser/OscParser.ts +5 -5
  81. package/src/common/parser/Types.ts +34 -1
  82. package/src/common/public/BufferLineApiView.ts +2 -2
  83. package/src/common/public/BufferNamespaceApi.ts +2 -2
  84. package/src/common/public/ParserApi.ts +3 -0
  85. package/src/common/services/BufferService.ts +8 -5
  86. package/src/common/services/CharsetService.ts +4 -0
  87. package/src/common/services/CoreService.ts +18 -4
  88. package/src/common/services/DecorationService.ts +24 -8
  89. package/src/common/services/LogService.ts +1 -31
  90. package/src/common/services/{CoreMouseService.ts → MouseStateService.ts} +21 -132
  91. package/src/common/services/OptionsService.ts +13 -4
  92. package/src/common/services/Services.ts +47 -40
  93. package/src/common/services/UnicodeService.ts +1 -1
  94. package/typings/xterm.d.ts +316 -32
  95. package/src/common/TypedArrayUtils.ts +0 -17
  96. package/src/vs/base/browser/browser.ts +0 -141
  97. package/src/vs/base/browser/canIUse.ts +0 -49
  98. package/src/vs/base/browser/dom.ts +0 -2369
  99. package/src/vs/base/browser/fastDomNode.ts +0 -316
  100. package/src/vs/base/browser/globalPointerMoveMonitor.ts +0 -112
  101. package/src/vs/base/browser/iframe.ts +0 -135
  102. package/src/vs/base/browser/keyboardEvent.ts +0 -213
  103. package/src/vs/base/browser/mouseEvent.ts +0 -229
  104. package/src/vs/base/browser/touch.ts +0 -372
  105. package/src/vs/base/browser/ui/scrollbar/abstractScrollbar.ts +0 -303
  106. package/src/vs/base/browser/ui/scrollbar/horizontalScrollbar.ts +0 -114
  107. package/src/vs/base/browser/ui/scrollbar/scrollableElement.ts +0 -720
  108. package/src/vs/base/browser/ui/scrollbar/scrollableElementOptions.ts +0 -165
  109. package/src/vs/base/browser/ui/scrollbar/scrollbarArrow.ts +0 -114
  110. package/src/vs/base/browser/ui/scrollbar/scrollbarState.ts +0 -243
  111. package/src/vs/base/browser/ui/scrollbar/scrollbarVisibilityController.ts +0 -118
  112. package/src/vs/base/browser/ui/scrollbar/verticalScrollbar.ts +0 -116
  113. package/src/vs/base/browser/ui/widget.ts +0 -57
  114. package/src/vs/base/browser/window.ts +0 -14
  115. package/src/vs/base/common/arrays.ts +0 -887
  116. package/src/vs/base/common/arraysFind.ts +0 -202
  117. package/src/vs/base/common/assert.ts +0 -71
  118. package/src/vs/base/common/async.ts +0 -1992
  119. package/src/vs/base/common/cancellation.ts +0 -148
  120. package/src/vs/base/common/charCode.ts +0 -450
  121. package/src/vs/base/common/collections.ts +0 -140
  122. package/src/vs/base/common/decorators.ts +0 -130
  123. package/src/vs/base/common/equals.ts +0 -146
  124. package/src/vs/base/common/errors.ts +0 -303
  125. package/src/vs/base/common/event.ts +0 -1778
  126. package/src/vs/base/common/functional.ts +0 -32
  127. package/src/vs/base/common/hash.ts +0 -316
  128. package/src/vs/base/common/iterator.ts +0 -159
  129. package/src/vs/base/common/keyCodes.ts +0 -526
  130. package/src/vs/base/common/keybindings.ts +0 -284
  131. package/src/vs/base/common/lazy.ts +0 -47
  132. package/src/vs/base/common/lifecycle.ts +0 -801
  133. package/src/vs/base/common/linkedList.ts +0 -142
  134. package/src/vs/base/common/map.ts +0 -202
  135. package/src/vs/base/common/numbers.ts +0 -98
  136. package/src/vs/base/common/observable.ts +0 -76
  137. package/src/vs/base/common/observableInternal/api.ts +0 -31
  138. package/src/vs/base/common/observableInternal/autorun.ts +0 -281
  139. package/src/vs/base/common/observableInternal/base.ts +0 -489
  140. package/src/vs/base/common/observableInternal/debugName.ts +0 -145
  141. package/src/vs/base/common/observableInternal/derived.ts +0 -428
  142. package/src/vs/base/common/observableInternal/lazyObservableValue.ts +0 -146
  143. package/src/vs/base/common/observableInternal/logging.ts +0 -328
  144. package/src/vs/base/common/observableInternal/promise.ts +0 -209
  145. package/src/vs/base/common/observableInternal/utils.ts +0 -610
  146. package/src/vs/base/common/platform.ts +0 -281
  147. package/src/vs/base/common/scrollable.ts +0 -522
  148. package/src/vs/base/common/sequence.ts +0 -34
  149. package/src/vs/base/common/stopwatch.ts +0 -43
  150. package/src/vs/base/common/strings.ts +0 -557
  151. package/src/vs/base/common/symbols.ts +0 -9
  152. package/src/vs/base/common/uint.ts +0 -59
  153. package/src/vs/patches/nls.ts +0 -90
  154. package/src/vs/typings/base-common.d.ts +0 -20
  155. package/src/vs/typings/require.d.ts +0 -42
  156. package/src/vs/typings/vscode-globals-nls.d.ts +0 -36
  157. package/src/vs/typings/vscode-globals-product.d.ts +0 -33
package/README.md CHANGED
@@ -1,30 +1,59 @@
1
- # [![xterm.js logo](images/logo-full.png)](https://xtermjs.org)
1
+ # [![xterm.js](images/logo-full.png)](https://xtermjs.org)
2
2
 
3
- Xterm.js is a front-end component written in TypeScript that lets applications bring fully-featured terminals to their users in the browser. It's used by popular projects such as VS Code, Hyper and Theia.
3
+ Xterm.js is a frontend component that enables applications to bring fully-featured terminals to their users in the browser. It's used by popular projects such as [VS Code](https://code.visualstudio.com/) (and its forks), [Tabby](https://tabby.sh/) and [Hyper](https://hyper.is/).
4
4
 
5
5
  ## Features
6
6
 
7
7
  - **Terminal apps just work**: Xterm.js works with most terminal apps such as `bash`, `vim`, and `tmux`, including support for curses-based apps and mouse events.
8
- - **Performant**: Xterm.js is *really* fast, it even includes a GPU-accelerated renderer.
8
+ - **Performant**: Xterm.js is *really* fast and includes an optional GPU-accelerated renderer.
9
9
  - **Rich Unicode support**: Supports CJK, emojis, and IMEs.
10
- - **Self-contained**: Requires zero dependencies to work.
11
- - **Accessible**: Screen reader and minimum contrast ratio support can be turned on.
12
- - **And much more**: Links, theming, addons, well documented API, etc.
10
+ - **Self-contained**: The core library has zero dependencies.
11
+ - **Accessible**: Screen reader mode and minimum contrast ratio support can be turned on.
12
+ - **And much more**: Links, theming, custom glyphs, addons, well documented API, etc.
13
13
 
14
14
  ## What xterm.js is not
15
15
 
16
16
  - Xterm.js is not a terminal application that you can download and use on your computer.
17
- - Xterm.js is not `bash`. Xterm.js can be connected to processes like `bash` and let you interact with them (provide input, receive output).
17
+ - Xterm.js is not `bash`. Xterm.js can be connected to processes like `bash` and let you interact with them (provide input, receive output) through a library like [node-pty](https://github.com/microsoft/node-pty).
18
18
 
19
19
  ## Getting Started
20
20
 
21
- First, you need to install the module, we ship exclusively through [npm](https://www.npmjs.com/), so you need that installed and then add xterm.js as a dependency by running:
21
+ First, you need to install the module. We ship exclusively through [npm](https://www.npmjs.com), so you need that installed and then add [@xterm/xterm](https://www.npmjs.com/package/@xterm/xterm) as a dependency by running:
22
22
 
23
23
  ```bash
24
- npm install @xterm/xterm
24
+ npm install --save @xterm/xterm
25
25
  ```
26
26
 
27
- To start using xterm.js on your browser, add the `xterm.js` and `xterm.css` to the head of your HTML page. Then create a `<div id="terminal"></div>` onto which xterm can attach itself. Finally, instantiate the `Terminal` object and then call the `open` function with the DOM object of the `div`.
27
+ The recommended way to load xterm.js with the ES module syntax, either using TypeScript or a modern JS tooling. Note that both CommonJS and ES module files are shipped with the npm package.
28
+
29
+ ```javascript
30
+ import { Terminal } from '@xterm/xterm';
31
+ ```
32
+
33
+ Then instantiate a `Terminal` object, open it on an element and write to it:
34
+
35
+ ```javascript
36
+ const term = new Terminal();
37
+ term.open(document.getElementById('terminal'));
38
+ term.write('Hello from \x1B[1;3;31mxterm.js\x1B[0m $ ')
39
+ ```
40
+
41
+ Most use cases will hook up input and output to a pseudoterminal API such as [node-pty](https://www.npmjs.com/package/node-pty) which will drive the terminal.
42
+
43
+ ```javascript
44
+ pty.onData(data => term.write(data));
45
+ term.onData(data => pty.write(data));
46
+ ```
47
+
48
+ Then make sure to also include the `css/xterm.css` file, for example in HTML:
49
+
50
+ ```html
51
+ <link rel="stylesheet" href="node_modules/@xterm/xterm/css/xterm.css" />
52
+ ```
53
+
54
+ ### Standalone example
55
+
56
+ Here is a complete standalone example in a HTML file:
28
57
 
29
58
  ```html
30
59
  <!doctype html>
@@ -36,7 +65,7 @@ To start using xterm.js on your browser, add the `xterm.js` and `xterm.css` to t
36
65
  <body>
37
66
  <div id="terminal"></div>
38
67
  <script>
39
- var term = new Terminal();
68
+ const term = new Terminal();
40
69
  term.open(document.getElementById('terminal'));
41
70
  term.write('Hello from \x1B[1;3;31mxterm.js\x1B[0m $ ')
42
71
  </script>
@@ -44,22 +73,12 @@ To start using xterm.js on your browser, add the `xterm.js` and `xterm.css` to t
44
73
  </html>
45
74
  ```
46
75
 
47
- ### Importing
48
-
49
- The recommended way to load xterm.js is via the ES6 module syntax:
50
-
51
- ```javascript
52
- import { Terminal } from '@xterm/xterm';
53
- ```
54
-
55
76
  ### Addons
56
77
 
57
- ⚠️ *This section describes the new addon format introduced in v3.14.0, see [here](https://github.com/xtermjs/xterm.js/blob/3.14.2/README.md#addons) for the instructions on the old format*
58
-
59
78
  Addons are separate modules that extend the `Terminal` by building on the [xterm.js API](https://github.com/xtermjs/xterm.js/blob/master/typings/xterm.d.ts). To use an addon, you first need to install it in your project:
60
79
 
61
80
  ```bash
62
- npm i -S @xterm/addon-web-links
81
+ npm install --save @xterm/addon-web-links
63
82
  ```
64
83
 
65
84
  Then import the addon, instantiate it and call `Terminal.loadAddon`:
@@ -80,50 +99,51 @@ The xterm.js team maintains the following addons, but anyone can build them:
80
99
  - [`@xterm/addon-clipboard`](https://github.com/xtermjs/xterm.js/tree/master/addons/addon-clipboard): Access the browser's clipboard
81
100
  - [`@xterm/addon-fit`](https://github.com/xtermjs/xterm.js/tree/master/addons/addon-fit): Fits the terminal to the containing element
82
101
  - [`@xterm/addon-image`](https://github.com/xtermjs/xterm.js/tree/master/addons/addon-image): Adds image support
102
+ - [`@xterm/addon-ligatures`](https://github.com/xtermjs/xterm.js/tree/master/addons/addon-ligatures): Enables rendering of ligatures
103
+ - [`@xterm/addon-progress`](https://github.com/xtermjs/xterm.js/tree/master/addons/addon-progress): Adds support for the progress API (`OSC 9;4`)
83
104
  - [`@xterm/addon-search`](https://github.com/xtermjs/xterm.js/tree/master/addons/addon-search): Adds search functionality
84
- - [`@xterm/addon-serialize`](https://github.com/xtermjs/xterm.js/tree/master/addons/addon-serialize): Serializes the terminal's buffer to a VT sequences or HTML
105
+ - [`@xterm/addon-serialize`](https://github.com/xtermjs/xterm.js/tree/master/addons/addon-serialize): Serializes the terminal's buffer to VT sequences or HTML
106
+ - [`@xterm/addon-unicode-graphemes`](https://github.com/xtermjs/xterm.js/tree/master/addons/addon-unicode-graphemes): Enhanced unicode support including grapheme clustering (experimental)
85
107
  - [`@xterm/addon-unicode11`](https://github.com/xtermjs/xterm.js/tree/master/addons/addon-unicode11): Updates character widths to their unicode11 values
108
+ - [`@xterm/addon-web-fonts`](https://github.com/xtermjs/xterm.js/tree/master/addons/addon-web-fonts): Easily integrate web fonts
86
109
  - [`@xterm/addon-web-links`](https://github.com/xtermjs/xterm.js/tree/master/addons/addon-web-links): Adds web link detection and interaction
87
110
  - [`@xterm/addon-webgl`](https://github.com/xtermjs/xterm.js/tree/master/addons/addon-webgl): Renders xterm.js using a `canvas` element's webgl2 context
88
111
 
89
112
  ## Browser Support
90
113
 
91
- Since xterm.js is typically implemented as a developer tool, only modern browsers are supported officially. Specifically the latest versions of *Chrome*, *Edge*, *Firefox*, and *Safari*.
92
-
93
- Xterm.js works seamlessly in [Electron](https://electronjs.org/) apps and may even work on earlier versions of the browsers. These are the versions we strive to keep working.
114
+ Since xterm.js is typically implemented as a developer tool, generally only modern evergreen browsers are supported officially. Specifically the latest versions of *Chrome*, *Edge*, *Firefox*, and *Safari*. Xterm.js also works seamlessly in [Electron](https://electronjs.org/) apps and may even work on earlier versions of the browsers. These are the versions we strive to keep working.
94
115
 
95
116
  ### Node.js Support
96
117
 
97
- We also publish [`xterm-headless`](https://www.npmjs.com/package/xterm-headless) which is a stripped down version of xterm.js that runs in Node.js. An example use case for this is to keep track of a terminal's state where the process is running and using the serialize addon so it can get all state restored upon reconnection.
118
+ We also publish [`@xterm/headless`](https://www.npmjs.com/package/@xterm/headless) which is a stripped down version of xterm.js that runs headless in Node.js. An example use case for this is to keep track of a terminal's state where the process is running and using the [serialize addon](https://www.npmjs.com/package/@xterm/addon-serialize) so it can get all state restored upon reconnection.
98
119
 
99
120
  ## API
100
121
 
101
122
  The full API for xterm.js is contained within the [TypeScript declaration file](https://github.com/xtermjs/xterm.js/blob/master/typings/xterm.d.ts), use the branch/tag picker in GitHub (`w`) to navigate to the correct version of the API.
102
123
 
103
- Note that some APIs are marked *experimental*, these are added to enable experimentation with new ideas without committing to support it like a normal [semver](https://semver.org/) API. Note that these APIs can change radically between versions, so be sure to read release notes if you plan on using experimental APIs.
124
+ Some APIs may be marked with *experimental*, these are added to enable experimentation with new ideas without committing to support it like a normal [semver](https://semver.org/) API. Note that these APIs can change radically between versions, so be sure to read release notes if you plan on using experimental APIs.
104
125
 
105
126
  ## Releases
106
127
 
107
- Xterm.js follows a monthly release cycle roughly.
108
-
109
- All current and past releases are available on this repo's [Releases page](https://github.com/sourcelair/xterm.js/releases), you can view the [high-level roadmap on the wiki](https://github.com/xtermjs/xterm.js/wiki/Roadmap) and see what we're working on now by looking through [Milestones](https://github.com/sourcelair/xterm.js/milestones).
128
+ Stable releases are done on an as needed basis. All current and past releases are available on this repo's [releases page](https://github.com/sourcelair/xterm.js/releases), you can see what's planned for upcoming releases looking through the repository [milestones](https://github.com/sourcelair/xterm.js/milestones).
110
129
 
111
130
  ### Beta builds
112
131
 
113
- Our CI releases beta builds to npm for every change that goes into master. Install the latest beta build with:
132
+ Beta releases are continuously published off the `master` branch. Install the latest beta build with:
114
133
 
115
134
  ```bash
116
- npm install -S @xterm/xterm@beta
135
+ npm install --save @xterm/xterm@beta
117
136
  ```
118
137
 
119
- These should generally be stable, but some bugs may slip in. We recommend using the beta build primarily to test out new features and to verify bug fixes.
138
+ The principal implementation (VS Code) typically uses the latest or near the latest beta build. Generally they are quite stable but can potentially contain bugs or breaking changes. If stability is very important we recommend using the beta build primarily to test out new features and to verify bug fixes, unless you're tracking what's landing and are comfortable taking that risk.
120
139
 
121
140
  ## Contributing
122
141
 
123
- You can read the [guide on the wiki](https://github.com/xtermjs/xterm.js/wiki/Contributing) to learn how to contribute and set up xterm.js for development.
142
+ Read [CONTRIBUTING.md](https://github.com/xtermjs/xterm.js/blob/master/CONTRIBUTING.md) to learn how to contribute to the project.
124
143
 
125
144
  ## Real-world uses
126
- Xterm.js is used in several world-class applications to provide great terminal experiences.
145
+
146
+ Xterm.js is used in many world-class applications to provide great terminal experiences.
127
147
 
128
148
  - [**SourceLair**](https://www.sourcelair.com/): In-browser IDE that provides its users with fully-featured Linux terminals based on xterm.js.
129
149
  - [**Microsoft Visual Studio Code**](http://code.visualstudio.com/): Modern, versatile, and powerful open source code editor that provides an integrated terminal based on xterm.js.
@@ -230,14 +250,16 @@ Xterm.js is used in several world-class applications to provide great terminal e
230
250
  - [**ecmaOS**](https://ecmaos.sh): A kernel and suite of applications tying modern web technologies into a browser-based operating system.
231
251
  - [**LabEx**](https://labex.io): Interactive learning platform with hands-on labs and xterm.js-based online terminals, focused on learn-by-doing approach.
232
252
  - [**EmuDevz**](https://afska.github.io/emudevz): A free coding game where players learn how to build an emulator from scratch.
253
+ - [**SSH Connection Manager**](https://github.com/Amtrend/ssh-manager): Modern web-based SSH terminal and SFTP manager with AES-256 encryption, PWA support, and session management.
254
+ - [**WooTTY**](https://github.com/icoretech/wootty): Flawless browser terminal for real operators.
233
255
  - [And much more...](https://github.com/xtermjs/xterm.js/network/dependents?package_id=UGFja2FnZS0xNjYzMjc4OQ%3D%3D)
234
256
 
235
- Do you use xterm.js in your application as well? Please [open a Pull Request](https://github.com/sourcelair/xterm.js/pulls) to include it here. We would love to have it on our list. Note: Please add any new contributions to the end of the list only.
257
+ Do you use xterm.js in your application as well? Please [open a Pull Request](https://github.com/sourcelair/xterm.js/pulls) to include it here. We would love to have it on our list. Please add any new contributions to the end of the list.
236
258
 
237
259
  ## License Agreement
238
260
 
239
261
  If you contribute code to this project, you implicitly allow your code to be distributed under the MIT license. You are also implicitly verifying that all code is your original work.
240
262
 
241
- Copyright (c) 2017-2022, [The xterm.js authors](https://github.com/xtermjs/xterm.js/graphs/contributors) (MIT License)<br>
263
+ Copyright (c) 2017-2026, [The xterm.js authors](https://github.com/xtermjs/xterm.js/graphs/contributors) (MIT License)<br>
242
264
  Copyright (c) 2014-2017, SourceLair, Private Company ([www.sourcelair.com](https://www.sourcelair.com/home)) (MIT License)<br>
243
265
  Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)
package/css/xterm.css CHANGED
@@ -91,8 +91,6 @@
91
91
  }
92
92
 
93
93
  .xterm .xterm-viewport {
94
- /* On OS X this is required in order for the scroll bar to appear fully opaque */
95
- background-color: #000;
96
94
  overflow-y: scroll;
97
95
  cursor: default;
98
96
  position: absolute;
@@ -102,6 +100,11 @@
102
100
  bottom: 0;
103
101
  }
104
102
 
103
+ .xterm:not(.allow-transparency) .xterm-viewport {
104
+ /* On OS X this is required in order for the scroll bar to appear fully opaque */
105
+ background-color: #000;
106
+ }
107
+
105
108
  .xterm .xterm-screen {
106
109
  position: relative;
107
110
  }
@@ -112,15 +115,6 @@
112
115
  top: 0;
113
116
  }
114
117
 
115
- .xterm-char-measure-element {
116
- display: inline-block;
117
- visibility: hidden;
118
- position: absolute;
119
- top: 0;
120
- left: -9999em;
121
- line-height: normal;
122
- }
123
-
124
118
  .xterm.enable-mouse-events {
125
119
  /* When mouse events are enabled (eg. tmux), revert to the standard pointer cursor */
126
120
  cursor: default;
@@ -224,17 +218,30 @@
224
218
  /* Derived from vs/base/browser/ui/scrollbar/media/scrollbar.css */
225
219
 
226
220
  /* xterm.js customization: Override xterm's cursor style */
227
- .xterm .xterm-scrollable-element > .scrollbar {
221
+ .xterm .xterm-scrollable-element > .xterm-scrollbar {
228
222
  cursor: default;
229
223
  }
230
224
 
231
225
  /* Arrows */
232
- .xterm .xterm-scrollable-element > .scrollbar > .scra {
226
+
227
+ .xterm .xterm-scrollable-element > .xterm-scrollbar > .xterm-scra {
233
228
  cursor: pointer;
234
- font-size: 11px !important;
229
+ background-color: var(--vscode-scrollbarSliderBackground, rgba(100, 100, 100, 0.4));
230
+ mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 11 11'><path d='M2.5 8.5 L5.5 2.5 L8.5 8.5 Z' fill='black'/></svg>");
231
+ -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 11 11'><path d='M2.5 8.5 L5.5 2.5 L8.5 8.5 Z' fill='black'/></svg>");
232
+ mask-repeat: no-repeat;
233
+ -webkit-mask-repeat: no-repeat;
234
+ mask-position: center center;
235
+ -webkit-mask-position: center center;
236
+ mask-size: 100% 100%;
237
+ -webkit-mask-size: 100% 100%;
238
+ }
239
+
240
+ .xterm .xterm-scrollable-element > .xterm-scrollbar > .xterm-scra.xterm-arrow-down {
241
+ transform: rotate(180deg);
235
242
  }
236
243
 
237
- .xterm .xterm-scrollable-element > .visible {
244
+ .xterm .xterm-scrollable-element > .xterm-visible {
238
245
  opacity: 1;
239
246
 
240
247
  /* Background rule added for IE9 - to allow clicks on dom node */
@@ -244,20 +251,20 @@
244
251
  /* In front of peek view */
245
252
  z-index: 11;
246
253
  }
247
- .xterm .xterm-scrollable-element > .invisible {
254
+ .xterm .xterm-scrollable-element > .xterm-invisible {
248
255
  opacity: 0;
249
256
  pointer-events: none;
250
257
  }
251
- .xterm .xterm-scrollable-element > .invisible.fade {
258
+ .xterm .xterm-scrollable-element > .xterm-invisible.xterm-fade {
252
259
  transition: opacity 800ms linear;
253
260
  }
254
261
 
255
262
  /* Scrollable Content Inset Shadow */
256
- .xterm .xterm-scrollable-element > .shadow {
263
+ .xterm .xterm-scrollable-element > .xterm-shadow {
257
264
  position: absolute;
258
265
  display: none;
259
266
  }
260
- .xterm .xterm-scrollable-element > .shadow.top {
267
+ .xterm .xterm-scrollable-element > .xterm-shadow.xterm-shadow-top {
261
268
  display: block;
262
269
  top: 0;
263
270
  left: 3px;
@@ -265,7 +272,7 @@
265
272
  width: 100%;
266
273
  box-shadow: var(--vscode-scrollbar-shadow, #000) 0 6px 6px -6px inset;
267
274
  }
268
- .xterm .xterm-scrollable-element > .shadow.left {
275
+ .xterm .xterm-scrollable-element > .xterm-shadow.xterm-shadow-left {
269
276
  display: block;
270
277
  top: 3px;
271
278
  left: 0;
@@ -273,13 +280,13 @@
273
280
  width: 3px;
274
281
  box-shadow: var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset;
275
282
  }
276
- .xterm .xterm-scrollable-element > .shadow.top-left-corner {
283
+ .xterm .xterm-scrollable-element > .xterm-shadow.xterm-shadow-top-left-corner {
277
284
  display: block;
278
285
  top: 0;
279
286
  left: 0;
280
287
  height: 3px;
281
288
  width: 3px;
282
289
  }
283
- .xterm .xterm-scrollable-element > .shadow.top.left {
290
+ .xterm .xterm-scrollable-element > .xterm-shadow.xterm-shadow-top.xterm-shadow-left {
284
291
  box-shadow: var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset;
285
292
  }