groove-dev 0.16.1 → 0.16.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.
- package/node_modules/@groove-dev/daemon/src/index.js +25 -7
- package/node_modules/@groove-dev/daemon/src/terminal-pty.js +129 -0
- package/node_modules/@groove-dev/gui/dist/assets/{index-Gfb8Zxy9.css → index-BhjOFLBc.css} +32 -1
- package/node_modules/@groove-dev/gui/dist/assets/index-DeXW9EFU.js +153 -0
- package/node_modules/@groove-dev/gui/dist/index.html +2 -2
- package/node_modules/@groove-dev/gui/package.json +3 -0
- package/node_modules/@groove-dev/gui/src/components/EditorTabs.jsx +1 -1
- package/node_modules/@groove-dev/gui/src/components/FileTree.jsx +0 -14
- package/node_modules/@groove-dev/gui/src/components/Terminal.jsx +154 -0
- package/node_modules/@groove-dev/gui/src/views/FileEditor.jsx +100 -39
- package/node_modules/@xterm/addon-fit/LICENSE +19 -0
- package/node_modules/@xterm/addon-fit/README.md +24 -0
- package/node_modules/@xterm/addon-fit/lib/addon-fit.js +2 -0
- package/node_modules/@xterm/addon-fit/lib/addon-fit.js.map +1 -0
- package/node_modules/@xterm/addon-fit/lib/addon-fit.mjs +18 -0
- package/node_modules/@xterm/addon-fit/lib/addon-fit.mjs.map +7 -0
- package/node_modules/@xterm/addon-fit/package.json +26 -0
- package/node_modules/@xterm/addon-fit/src/FitAddon.ts +92 -0
- package/node_modules/@xterm/addon-fit/typings/addon-fit.d.ts +55 -0
- package/node_modules/@xterm/addon-web-links/LICENSE +19 -0
- package/node_modules/@xterm/addon-web-links/README.md +21 -0
- package/node_modules/@xterm/addon-web-links/lib/addon-web-links.js +2 -0
- package/node_modules/@xterm/addon-web-links/lib/addon-web-links.js.map +1 -0
- package/node_modules/@xterm/addon-web-links/lib/addon-web-links.mjs +18 -0
- package/node_modules/@xterm/addon-web-links/lib/addon-web-links.mjs.map +7 -0
- package/node_modules/@xterm/addon-web-links/package.json +26 -0
- package/node_modules/@xterm/addon-web-links/src/WebLinkProvider.ts +199 -0
- package/node_modules/@xterm/addon-web-links/src/WebLinksAddon.ts +58 -0
- package/node_modules/@xterm/addon-web-links/typings/addon-web-links.d.ts +57 -0
- package/node_modules/@xterm/xterm/LICENSE +21 -0
- package/node_modules/@xterm/xterm/README.md +243 -0
- package/node_modules/@xterm/xterm/css/xterm.css +285 -0
- package/node_modules/@xterm/xterm/lib/xterm.js +2 -0
- package/node_modules/@xterm/xterm/lib/xterm.js.map +1 -0
- package/node_modules/@xterm/xterm/lib/xterm.mjs +53 -0
- package/node_modules/@xterm/xterm/lib/xterm.mjs.map +7 -0
- package/node_modules/@xterm/xterm/package.json +111 -0
- package/node_modules/@xterm/xterm/src/browser/AccessibilityManager.ts +435 -0
- package/node_modules/@xterm/xterm/src/browser/Clipboard.ts +93 -0
- package/node_modules/@xterm/xterm/src/browser/ColorContrastCache.ts +34 -0
- package/node_modules/@xterm/xterm/src/browser/CoreBrowserTerminal.ts +1339 -0
- package/node_modules/@xterm/xterm/src/browser/Linkifier.ts +403 -0
- package/node_modules/@xterm/xterm/src/browser/LocalizableStrings.ts +23 -0
- package/node_modules/@xterm/xterm/src/browser/OscLinkProvider.ts +129 -0
- package/node_modules/@xterm/xterm/src/browser/RenderDebouncer.ts +84 -0
- package/node_modules/@xterm/xterm/src/browser/TimeBasedDebouncer.ts +86 -0
- package/node_modules/@xterm/xterm/src/browser/Types.ts +226 -0
- package/node_modules/@xterm/xterm/src/browser/Viewport.ts +192 -0
- package/node_modules/@xterm/xterm/src/browser/decorations/BufferDecorationRenderer.ts +139 -0
- package/node_modules/@xterm/xterm/src/browser/decorations/ColorZoneStore.ts +117 -0
- package/node_modules/@xterm/xterm/src/browser/decorations/OverviewRulerRenderer.ts +214 -0
- package/node_modules/@xterm/xterm/src/browser/input/CompositionHelper.ts +248 -0
- package/node_modules/@xterm/xterm/src/browser/input/Mouse.ts +54 -0
- package/node_modules/@xterm/xterm/src/browser/input/MoveToCell.ts +251 -0
- package/node_modules/@xterm/xterm/src/browser/public/Terminal.ts +275 -0
- package/node_modules/@xterm/xterm/src/browser/renderer/dom/DomRenderer.ts +542 -0
- package/node_modules/@xterm/xterm/src/browser/renderer/dom/DomRendererRowFactory.ts +546 -0
- package/node_modules/@xterm/xterm/src/browser/renderer/dom/WidthCache.ts +167 -0
- package/node_modules/@xterm/xterm/src/browser/renderer/shared/Constants.ts +6 -0
- package/node_modules/@xterm/xterm/src/browser/renderer/shared/RendererUtils.ts +95 -0
- package/node_modules/@xterm/xterm/src/browser/renderer/shared/SelectionRenderModel.ts +93 -0
- package/node_modules/@xterm/xterm/src/browser/renderer/shared/Types.ts +84 -0
- package/node_modules/@xterm/xterm/src/browser/selection/SelectionModel.ts +144 -0
- package/node_modules/@xterm/xterm/src/browser/selection/Types.ts +15 -0
- package/node_modules/@xterm/xterm/src/browser/services/CharSizeService.ts +127 -0
- package/node_modules/@xterm/xterm/src/browser/services/CharacterJoinerService.ts +339 -0
- package/node_modules/@xterm/xterm/src/browser/services/CoreBrowserService.ts +137 -0
- package/node_modules/@xterm/xterm/src/browser/services/LinkProviderService.ts +28 -0
- package/node_modules/@xterm/xterm/src/browser/services/MouseService.ts +46 -0
- package/node_modules/@xterm/xterm/src/browser/services/RenderService.ts +376 -0
- package/node_modules/@xterm/xterm/src/browser/services/SelectionService.ts +1039 -0
- package/node_modules/@xterm/xterm/src/browser/services/Services.ts +158 -0
- package/node_modules/@xterm/xterm/src/browser/services/ThemeService.ts +198 -0
- package/node_modules/@xterm/xterm/src/browser/shared/Constants.ts +8 -0
- package/node_modules/@xterm/xterm/src/common/CircularList.ts +241 -0
- package/node_modules/@xterm/xterm/src/common/Clone.ts +23 -0
- package/node_modules/@xterm/xterm/src/common/Color.ts +376 -0
- package/node_modules/@xterm/xterm/src/common/CoreTerminal.ts +283 -0
- package/node_modules/@xterm/xterm/src/common/InputHandler.ts +3495 -0
- package/node_modules/@xterm/xterm/src/common/MultiKeyMap.ts +42 -0
- package/node_modules/@xterm/xterm/src/common/Platform.ts +44 -0
- package/node_modules/@xterm/xterm/src/common/SortedList.ts +194 -0
- package/node_modules/@xterm/xterm/src/common/TaskQueue.ts +166 -0
- package/node_modules/@xterm/xterm/src/common/TypedArrayUtils.ts +17 -0
- package/node_modules/@xterm/xterm/src/common/Types.ts +552 -0
- package/node_modules/@xterm/xterm/src/common/WindowsMode.ts +27 -0
- package/node_modules/@xterm/xterm/src/common/buffer/AttributeData.ts +211 -0
- package/node_modules/@xterm/xterm/src/common/buffer/Buffer.ts +662 -0
- package/node_modules/@xterm/xterm/src/common/buffer/BufferLine.ts +551 -0
- package/node_modules/@xterm/xterm/src/common/buffer/BufferRange.ts +13 -0
- package/node_modules/@xterm/xterm/src/common/buffer/BufferReflow.ts +226 -0
- package/node_modules/@xterm/xterm/src/common/buffer/BufferSet.ts +134 -0
- package/node_modules/@xterm/xterm/src/common/buffer/CellData.ts +94 -0
- package/node_modules/@xterm/xterm/src/common/buffer/Constants.ts +157 -0
- package/node_modules/@xterm/xterm/src/common/buffer/Marker.ts +43 -0
- package/node_modules/@xterm/xterm/src/common/buffer/Types.ts +52 -0
- package/node_modules/@xterm/xterm/src/common/data/Charsets.ts +256 -0
- package/node_modules/@xterm/xterm/src/common/data/EscapeSequences.ts +153 -0
- package/node_modules/@xterm/xterm/src/common/input/Keyboard.ts +373 -0
- package/node_modules/@xterm/xterm/src/common/input/TextDecoder.ts +346 -0
- package/node_modules/@xterm/xterm/src/common/input/UnicodeV6.ts +145 -0
- package/node_modules/@xterm/xterm/src/common/input/WriteBuffer.ts +247 -0
- package/node_modules/@xterm/xterm/src/common/input/XParseColor.ts +80 -0
- package/node_modules/@xterm/xterm/src/common/parser/Constants.ts +58 -0
- package/node_modules/@xterm/xterm/src/common/parser/DcsParser.ts +192 -0
- package/node_modules/@xterm/xterm/src/common/parser/EscapeSequenceParser.ts +792 -0
- package/node_modules/@xterm/xterm/src/common/parser/OscParser.ts +238 -0
- package/node_modules/@xterm/xterm/src/common/parser/Params.ts +229 -0
- package/node_modules/@xterm/xterm/src/common/parser/Types.ts +275 -0
- package/node_modules/@xterm/xterm/src/common/public/AddonManager.ts +53 -0
- package/node_modules/@xterm/xterm/src/common/public/BufferApiView.ts +35 -0
- package/node_modules/@xterm/xterm/src/common/public/BufferLineApiView.ts +29 -0
- package/node_modules/@xterm/xterm/src/common/public/BufferNamespaceApi.ts +36 -0
- package/node_modules/@xterm/xterm/src/common/public/ParserApi.ts +37 -0
- package/node_modules/@xterm/xterm/src/common/public/UnicodeApi.ts +27 -0
- package/node_modules/@xterm/xterm/src/common/services/BufferService.ts +154 -0
- package/node_modules/@xterm/xterm/src/common/services/CharsetService.ts +34 -0
- package/node_modules/@xterm/xterm/src/common/services/CoreMouseService.ts +365 -0
- package/node_modules/@xterm/xterm/src/common/services/CoreService.ts +92 -0
- package/node_modules/@xterm/xterm/src/common/services/DecorationService.ts +140 -0
- package/node_modules/@xterm/xterm/src/common/services/InstantiationService.ts +85 -0
- package/node_modules/@xterm/xterm/src/common/services/LogService.ts +124 -0
- package/node_modules/@xterm/xterm/src/common/services/OptionsService.ts +212 -0
- package/node_modules/@xterm/xterm/src/common/services/OscLinkService.ts +115 -0
- package/node_modules/@xterm/xterm/src/common/services/ServiceRegistry.ts +49 -0
- package/node_modules/@xterm/xterm/src/common/services/Services.ts +396 -0
- package/node_modules/@xterm/xterm/src/common/services/UnicodeService.ts +111 -0
- package/node_modules/@xterm/xterm/src/vs/base/browser/browser.ts +141 -0
- package/node_modules/@xterm/xterm/src/vs/base/browser/canIUse.ts +49 -0
- package/node_modules/@xterm/xterm/src/vs/base/browser/dom.ts +2369 -0
- package/node_modules/@xterm/xterm/src/vs/base/browser/fastDomNode.ts +316 -0
- package/node_modules/@xterm/xterm/src/vs/base/browser/globalPointerMoveMonitor.ts +112 -0
- package/node_modules/@xterm/xterm/src/vs/base/browser/iframe.ts +135 -0
- package/node_modules/@xterm/xterm/src/vs/base/browser/keyboardEvent.ts +213 -0
- package/node_modules/@xterm/xterm/src/vs/base/browser/mouseEvent.ts +229 -0
- package/node_modules/@xterm/xterm/src/vs/base/browser/touch.ts +372 -0
- package/node_modules/@xterm/xterm/src/vs/base/browser/ui/scrollbar/abstractScrollbar.ts +303 -0
- package/node_modules/@xterm/xterm/src/vs/base/browser/ui/scrollbar/horizontalScrollbar.ts +114 -0
- package/node_modules/@xterm/xterm/src/vs/base/browser/ui/scrollbar/scrollableElement.ts +720 -0
- package/node_modules/@xterm/xterm/src/vs/base/browser/ui/scrollbar/scrollableElementOptions.ts +165 -0
- package/node_modules/@xterm/xterm/src/vs/base/browser/ui/scrollbar/scrollbarArrow.ts +114 -0
- package/node_modules/@xterm/xterm/src/vs/base/browser/ui/scrollbar/scrollbarState.ts +243 -0
- package/node_modules/@xterm/xterm/src/vs/base/browser/ui/scrollbar/scrollbarVisibilityController.ts +118 -0
- package/node_modules/@xterm/xterm/src/vs/base/browser/ui/scrollbar/verticalScrollbar.ts +116 -0
- package/node_modules/@xterm/xterm/src/vs/base/browser/ui/widget.ts +57 -0
- package/node_modules/@xterm/xterm/src/vs/base/browser/window.ts +14 -0
- package/node_modules/@xterm/xterm/src/vs/base/common/arrays.ts +887 -0
- package/node_modules/@xterm/xterm/src/vs/base/common/arraysFind.ts +202 -0
- package/node_modules/@xterm/xterm/src/vs/base/common/assert.ts +71 -0
- package/node_modules/@xterm/xterm/src/vs/base/common/async.ts +1992 -0
- package/node_modules/@xterm/xterm/src/vs/base/common/cancellation.ts +148 -0
- package/node_modules/@xterm/xterm/src/vs/base/common/charCode.ts +450 -0
- package/node_modules/@xterm/xterm/src/vs/base/common/collections.ts +140 -0
- package/node_modules/@xterm/xterm/src/vs/base/common/decorators.ts +130 -0
- package/node_modules/@xterm/xterm/src/vs/base/common/equals.ts +146 -0
- package/node_modules/@xterm/xterm/src/vs/base/common/errors.ts +303 -0
- package/node_modules/@xterm/xterm/src/vs/base/common/event.ts +1778 -0
- package/node_modules/@xterm/xterm/src/vs/base/common/functional.ts +32 -0
- package/node_modules/@xterm/xterm/src/vs/base/common/hash.ts +316 -0
- package/node_modules/@xterm/xterm/src/vs/base/common/iterator.ts +159 -0
- package/node_modules/@xterm/xterm/src/vs/base/common/keyCodes.ts +526 -0
- package/node_modules/@xterm/xterm/src/vs/base/common/keybindings.ts +284 -0
- package/node_modules/@xterm/xterm/src/vs/base/common/lazy.ts +47 -0
- package/node_modules/@xterm/xterm/src/vs/base/common/lifecycle.ts +801 -0
- package/node_modules/@xterm/xterm/src/vs/base/common/linkedList.ts +142 -0
- package/node_modules/@xterm/xterm/src/vs/base/common/map.ts +202 -0
- package/node_modules/@xterm/xterm/src/vs/base/common/numbers.ts +98 -0
- package/node_modules/@xterm/xterm/src/vs/base/common/observable.ts +76 -0
- package/node_modules/@xterm/xterm/src/vs/base/common/observableInternal/api.ts +31 -0
- package/node_modules/@xterm/xterm/src/vs/base/common/observableInternal/autorun.ts +281 -0
- package/node_modules/@xterm/xterm/src/vs/base/common/observableInternal/base.ts +489 -0
- package/node_modules/@xterm/xterm/src/vs/base/common/observableInternal/debugName.ts +145 -0
- package/node_modules/@xterm/xterm/src/vs/base/common/observableInternal/derived.ts +428 -0
- package/node_modules/@xterm/xterm/src/vs/base/common/observableInternal/lazyObservableValue.ts +146 -0
- package/node_modules/@xterm/xterm/src/vs/base/common/observableInternal/logging.ts +328 -0
- package/node_modules/@xterm/xterm/src/vs/base/common/observableInternal/promise.ts +209 -0
- package/node_modules/@xterm/xterm/src/vs/base/common/observableInternal/utils.ts +610 -0
- package/node_modules/@xterm/xterm/src/vs/base/common/platform.ts +281 -0
- package/node_modules/@xterm/xterm/src/vs/base/common/scrollable.ts +522 -0
- package/node_modules/@xterm/xterm/src/vs/base/common/sequence.ts +34 -0
- package/node_modules/@xterm/xterm/src/vs/base/common/stopwatch.ts +43 -0
- package/node_modules/@xterm/xterm/src/vs/base/common/strings.ts +557 -0
- package/node_modules/@xterm/xterm/src/vs/base/common/symbols.ts +9 -0
- package/node_modules/@xterm/xterm/src/vs/base/common/uint.ts +59 -0
- package/node_modules/@xterm/xterm/src/vs/patches/nls.ts +90 -0
- package/node_modules/@xterm/xterm/src/vs/typings/base-common.d.ts +20 -0
- package/node_modules/@xterm/xterm/src/vs/typings/require.d.ts +42 -0
- package/node_modules/@xterm/xterm/src/vs/typings/vscode-globals-nls.d.ts +36 -0
- package/node_modules/@xterm/xterm/src/vs/typings/vscode-globals-product.d.ts +33 -0
- package/node_modules/@xterm/xterm/typings/xterm.d.ts +1957 -0
- package/package.json +1 -1
- package/packages/daemon/src/index.js +25 -7
- package/packages/daemon/src/terminal-pty.js +129 -0
- package/packages/gui/dist/assets/{index-Gfb8Zxy9.css → index-BhjOFLBc.css} +32 -1
- package/packages/gui/dist/assets/index-DeXW9EFU.js +153 -0
- package/packages/gui/dist/index.html +2 -2
- package/packages/gui/package.json +3 -0
- package/packages/gui/src/components/EditorTabs.jsx +1 -1
- package/packages/gui/src/components/FileTree.jsx +0 -14
- package/packages/gui/src/components/Terminal.jsx +154 -0
- package/packages/gui/src/views/FileEditor.jsx +100 -39
- package/node_modules/@groove-dev/gui/dist/assets/index-BQSznoq0.js +0 -103
- package/packages/gui/dist/assets/index-BQSznoq0.js +0 -103
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2019 The xterm.js authors. All rights reserved.
|
|
3
|
+
* @license MIT
|
|
4
|
+
*/
|
|
5
|
+
import { IUnicodeVersionProvider, UnicodeCharProperties, UnicodeCharWidth } from 'common/services/Services';
|
|
6
|
+
import { UnicodeService } from 'common/services/UnicodeService';
|
|
7
|
+
|
|
8
|
+
const BMP_COMBINING = [
|
|
9
|
+
[0x0300, 0x036F], [0x0483, 0x0486], [0x0488, 0x0489],
|
|
10
|
+
[0x0591, 0x05BD], [0x05BF, 0x05BF], [0x05C1, 0x05C2],
|
|
11
|
+
[0x05C4, 0x05C5], [0x05C7, 0x05C7], [0x0600, 0x0603],
|
|
12
|
+
[0x0610, 0x0615], [0x064B, 0x065E], [0x0670, 0x0670],
|
|
13
|
+
[0x06D6, 0x06E4], [0x06E7, 0x06E8], [0x06EA, 0x06ED],
|
|
14
|
+
[0x070F, 0x070F], [0x0711, 0x0711], [0x0730, 0x074A],
|
|
15
|
+
[0x07A6, 0x07B0], [0x07EB, 0x07F3], [0x0901, 0x0902],
|
|
16
|
+
[0x093C, 0x093C], [0x0941, 0x0948], [0x094D, 0x094D],
|
|
17
|
+
[0x0951, 0x0954], [0x0962, 0x0963], [0x0981, 0x0981],
|
|
18
|
+
[0x09BC, 0x09BC], [0x09C1, 0x09C4], [0x09CD, 0x09CD],
|
|
19
|
+
[0x09E2, 0x09E3], [0x0A01, 0x0A02], [0x0A3C, 0x0A3C],
|
|
20
|
+
[0x0A41, 0x0A42], [0x0A47, 0x0A48], [0x0A4B, 0x0A4D],
|
|
21
|
+
[0x0A70, 0x0A71], [0x0A81, 0x0A82], [0x0ABC, 0x0ABC],
|
|
22
|
+
[0x0AC1, 0x0AC5], [0x0AC7, 0x0AC8], [0x0ACD, 0x0ACD],
|
|
23
|
+
[0x0AE2, 0x0AE3], [0x0B01, 0x0B01], [0x0B3C, 0x0B3C],
|
|
24
|
+
[0x0B3F, 0x0B3F], [0x0B41, 0x0B43], [0x0B4D, 0x0B4D],
|
|
25
|
+
[0x0B56, 0x0B56], [0x0B82, 0x0B82], [0x0BC0, 0x0BC0],
|
|
26
|
+
[0x0BCD, 0x0BCD], [0x0C3E, 0x0C40], [0x0C46, 0x0C48],
|
|
27
|
+
[0x0C4A, 0x0C4D], [0x0C55, 0x0C56], [0x0CBC, 0x0CBC],
|
|
28
|
+
[0x0CBF, 0x0CBF], [0x0CC6, 0x0CC6], [0x0CCC, 0x0CCD],
|
|
29
|
+
[0x0CE2, 0x0CE3], [0x0D41, 0x0D43], [0x0D4D, 0x0D4D],
|
|
30
|
+
[0x0DCA, 0x0DCA], [0x0DD2, 0x0DD4], [0x0DD6, 0x0DD6],
|
|
31
|
+
[0x0E31, 0x0E31], [0x0E34, 0x0E3A], [0x0E47, 0x0E4E],
|
|
32
|
+
[0x0EB1, 0x0EB1], [0x0EB4, 0x0EB9], [0x0EBB, 0x0EBC],
|
|
33
|
+
[0x0EC8, 0x0ECD], [0x0F18, 0x0F19], [0x0F35, 0x0F35],
|
|
34
|
+
[0x0F37, 0x0F37], [0x0F39, 0x0F39], [0x0F71, 0x0F7E],
|
|
35
|
+
[0x0F80, 0x0F84], [0x0F86, 0x0F87], [0x0F90, 0x0F97],
|
|
36
|
+
[0x0F99, 0x0FBC], [0x0FC6, 0x0FC6], [0x102D, 0x1030],
|
|
37
|
+
[0x1032, 0x1032], [0x1036, 0x1037], [0x1039, 0x1039],
|
|
38
|
+
[0x1058, 0x1059], [0x1160, 0x11FF], [0x135F, 0x135F],
|
|
39
|
+
[0x1712, 0x1714], [0x1732, 0x1734], [0x1752, 0x1753],
|
|
40
|
+
[0x1772, 0x1773], [0x17B4, 0x17B5], [0x17B7, 0x17BD],
|
|
41
|
+
[0x17C6, 0x17C6], [0x17C9, 0x17D3], [0x17DD, 0x17DD],
|
|
42
|
+
[0x180B, 0x180D], [0x18A9, 0x18A9], [0x1920, 0x1922],
|
|
43
|
+
[0x1927, 0x1928], [0x1932, 0x1932], [0x1939, 0x193B],
|
|
44
|
+
[0x1A17, 0x1A18], [0x1B00, 0x1B03], [0x1B34, 0x1B34],
|
|
45
|
+
[0x1B36, 0x1B3A], [0x1B3C, 0x1B3C], [0x1B42, 0x1B42],
|
|
46
|
+
[0x1B6B, 0x1B73], [0x1DC0, 0x1DCA], [0x1DFE, 0x1DFF],
|
|
47
|
+
[0x200B, 0x200F], [0x202A, 0x202E], [0x2060, 0x2063],
|
|
48
|
+
[0x206A, 0x206F], [0x20D0, 0x20EF], [0x302A, 0x302F],
|
|
49
|
+
[0x3099, 0x309A], [0xA806, 0xA806], [0xA80B, 0xA80B],
|
|
50
|
+
[0xA825, 0xA826], [0xFB1E, 0xFB1E], [0xFE00, 0xFE0F],
|
|
51
|
+
[0xFE20, 0xFE23], [0xFEFF, 0xFEFF], [0xFFF9, 0xFFFB]
|
|
52
|
+
];
|
|
53
|
+
const HIGH_COMBINING = [
|
|
54
|
+
[0x10A01, 0x10A03], [0x10A05, 0x10A06], [0x10A0C, 0x10A0F],
|
|
55
|
+
[0x10A38, 0x10A3A], [0x10A3F, 0x10A3F], [0x1D167, 0x1D169],
|
|
56
|
+
[0x1D173, 0x1D182], [0x1D185, 0x1D18B], [0x1D1AA, 0x1D1AD],
|
|
57
|
+
[0x1D242, 0x1D244], [0xE0001, 0xE0001], [0xE0020, 0xE007F],
|
|
58
|
+
[0xE0100, 0xE01EF]
|
|
59
|
+
];
|
|
60
|
+
|
|
61
|
+
// BMP lookup table, lazy initialized during first addon loading
|
|
62
|
+
let table: Uint8Array;
|
|
63
|
+
|
|
64
|
+
function bisearch(ucs: number, data: number[][]): boolean {
|
|
65
|
+
let min = 0;
|
|
66
|
+
let max = data.length - 1;
|
|
67
|
+
let mid;
|
|
68
|
+
if (ucs < data[0][0] || ucs > data[max][1]) {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
while (max >= min) {
|
|
72
|
+
mid = (min + max) >> 1;
|
|
73
|
+
if (ucs > data[mid][1]) {
|
|
74
|
+
min = mid + 1;
|
|
75
|
+
} else if (ucs < data[mid][0]) {
|
|
76
|
+
max = mid - 1;
|
|
77
|
+
} else {
|
|
78
|
+
return true;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export class UnicodeV6 implements IUnicodeVersionProvider {
|
|
85
|
+
public readonly version = '6';
|
|
86
|
+
|
|
87
|
+
constructor() {
|
|
88
|
+
// init lookup table once
|
|
89
|
+
if (!table) {
|
|
90
|
+
table = new Uint8Array(65536);
|
|
91
|
+
table.fill(1);
|
|
92
|
+
table[0] = 0;
|
|
93
|
+
// control chars
|
|
94
|
+
table.fill(0, 1, 32);
|
|
95
|
+
table.fill(0, 0x7f, 0xa0);
|
|
96
|
+
|
|
97
|
+
// apply wide char rules first
|
|
98
|
+
// wide chars
|
|
99
|
+
table.fill(2, 0x1100, 0x1160);
|
|
100
|
+
table[0x2329] = 2;
|
|
101
|
+
table[0x232a] = 2;
|
|
102
|
+
table.fill(2, 0x2e80, 0xa4d0);
|
|
103
|
+
table[0x303f] = 1; // wrongly in last line
|
|
104
|
+
|
|
105
|
+
table.fill(2, 0xac00, 0xd7a4);
|
|
106
|
+
table.fill(2, 0xf900, 0xfb00);
|
|
107
|
+
table.fill(2, 0xfe10, 0xfe1a);
|
|
108
|
+
table.fill(2, 0xfe30, 0xfe70);
|
|
109
|
+
table.fill(2, 0xff00, 0xff61);
|
|
110
|
+
table.fill(2, 0xffe0, 0xffe7);
|
|
111
|
+
|
|
112
|
+
// apply combining last to ensure we overwrite
|
|
113
|
+
// wrongly wide set chars:
|
|
114
|
+
// the original algo evals combining first and falls
|
|
115
|
+
// through to wide check so we simply do here the opposite
|
|
116
|
+
// combining 0
|
|
117
|
+
for (let r = 0; r < BMP_COMBINING.length; ++r) {
|
|
118
|
+
table.fill(0, BMP_COMBINING[r][0], BMP_COMBINING[r][1] + 1);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
public wcwidth(num: number): UnicodeCharWidth {
|
|
124
|
+
if (num < 32) return 0;
|
|
125
|
+
if (num < 127) return 1;
|
|
126
|
+
if (num < 65536) return table[num] as UnicodeCharWidth;
|
|
127
|
+
if (bisearch(num, HIGH_COMBINING)) return 0;
|
|
128
|
+
if ((num >= 0x20000 && num <= 0x2fffd) || (num >= 0x30000 && num <= 0x3fffd)) return 2;
|
|
129
|
+
return 1;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
public charProperties(codepoint: number, preceding: UnicodeCharProperties): UnicodeCharProperties {
|
|
133
|
+
let width = this.wcwidth(codepoint);
|
|
134
|
+
let shouldJoin = width === 0 && preceding !== 0;
|
|
135
|
+
if (shouldJoin) {
|
|
136
|
+
const oldWidth = UnicodeService.extractWidth(preceding);
|
|
137
|
+
if (oldWidth === 0) {
|
|
138
|
+
shouldJoin = false;
|
|
139
|
+
} else if (oldWidth > width) {
|
|
140
|
+
width = oldWidth;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return UnicodeService.createPropertyValue(0, width, shouldJoin);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2019 The xterm.js authors. All rights reserved.
|
|
4
|
+
* @license MIT
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { Disposable } from 'vs/base/common/lifecycle';
|
|
8
|
+
import { Emitter } from 'vs/base/common/event';
|
|
9
|
+
|
|
10
|
+
declare const setTimeout: (handler: () => void, timeout?: number) => void;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Safety watermark to avoid memory exhaustion and browser engine crash on fast data input.
|
|
14
|
+
* Enable flow control to avoid this limit and make sure that your backend correctly
|
|
15
|
+
* propagates this to the underlying pty. (see docs for further instructions)
|
|
16
|
+
* Since this limit is meant as a safety parachute to prevent browser crashs,
|
|
17
|
+
* it is set to a very high number. Typically xterm.js gets unresponsive with
|
|
18
|
+
* a 100 times lower number (>500 kB).
|
|
19
|
+
*/
|
|
20
|
+
const DISCARD_WATERMARK = 50000000; // ~50 MB
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* The max number of ms to spend on writes before allowing the renderer to
|
|
24
|
+
* catch up with a 0ms setTimeout. A value of < 33 to keep us close to
|
|
25
|
+
* 30fps, and a value of < 16 to try to run at 60fps. Of course, the real FPS
|
|
26
|
+
* depends on the time it takes for the renderer to draw the frame.
|
|
27
|
+
*/
|
|
28
|
+
const WRITE_TIMEOUT_MS = 12;
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Threshold of max held chunks in the write buffer, that were already processed.
|
|
32
|
+
* This is a tradeoff between extensive write buffer shifts (bad runtime) and high
|
|
33
|
+
* memory consumption by data thats not used anymore.
|
|
34
|
+
*/
|
|
35
|
+
const WRITE_BUFFER_LENGTH_THRESHOLD = 50;
|
|
36
|
+
|
|
37
|
+
export class WriteBuffer extends Disposable {
|
|
38
|
+
private _writeBuffer: (string | Uint8Array)[] = [];
|
|
39
|
+
private _callbacks: ((() => void) | undefined)[] = [];
|
|
40
|
+
private _pendingData = 0;
|
|
41
|
+
private _bufferOffset = 0;
|
|
42
|
+
private _isSyncWriting = false;
|
|
43
|
+
private _syncCalls = 0;
|
|
44
|
+
private _didUserInput = false;
|
|
45
|
+
|
|
46
|
+
private readonly _onWriteParsed = this._register(new Emitter<void>());
|
|
47
|
+
public readonly onWriteParsed = this._onWriteParsed.event;
|
|
48
|
+
|
|
49
|
+
constructor(private _action: (data: string | Uint8Array, promiseResult?: boolean) => void | Promise<boolean>) {
|
|
50
|
+
super();
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
public handleUserInput(): void {
|
|
54
|
+
this._didUserInput = true;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* @deprecated Unreliable, to be removed soon.
|
|
59
|
+
*/
|
|
60
|
+
public writeSync(data: string | Uint8Array, maxSubsequentCalls?: number): void {
|
|
61
|
+
// stop writeSync recursions with maxSubsequentCalls argument
|
|
62
|
+
// This is dangerous to use as it will lose the current data chunk
|
|
63
|
+
// and return immediately.
|
|
64
|
+
if (maxSubsequentCalls !== undefined && this._syncCalls > maxSubsequentCalls) {
|
|
65
|
+
// comment next line if a whole loop block should only contain x `writeSync` calls
|
|
66
|
+
// (total flat vs. deep nested limit)
|
|
67
|
+
this._syncCalls = 0;
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
// append chunk to buffer
|
|
71
|
+
this._pendingData += data.length;
|
|
72
|
+
this._writeBuffer.push(data);
|
|
73
|
+
this._callbacks.push(undefined);
|
|
74
|
+
|
|
75
|
+
// increase recursion counter
|
|
76
|
+
this._syncCalls++;
|
|
77
|
+
// exit early if another writeSync loop is active
|
|
78
|
+
if (this._isSyncWriting) {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
this._isSyncWriting = true;
|
|
82
|
+
|
|
83
|
+
// force sync processing on pending data chunks to avoid in-band data scrambling
|
|
84
|
+
// does the same as innerWrite but without event loop
|
|
85
|
+
// we have to do it here as single loop steps to not corrupt loop subject
|
|
86
|
+
// by another writeSync call triggered from _action
|
|
87
|
+
let chunk: string | Uint8Array | undefined;
|
|
88
|
+
while (chunk = this._writeBuffer.shift()) {
|
|
89
|
+
this._action(chunk);
|
|
90
|
+
const cb = this._callbacks.shift();
|
|
91
|
+
if (cb) cb();
|
|
92
|
+
}
|
|
93
|
+
// reset to avoid reprocessing of chunks with scheduled innerWrite call
|
|
94
|
+
// stopping scheduled innerWrite by offset > length condition
|
|
95
|
+
this._pendingData = 0;
|
|
96
|
+
this._bufferOffset = 0x7FFFFFFF;
|
|
97
|
+
|
|
98
|
+
// allow another writeSync to loop
|
|
99
|
+
this._isSyncWriting = false;
|
|
100
|
+
this._syncCalls = 0;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
public write(data: string | Uint8Array, callback?: () => void): void {
|
|
104
|
+
if (this._pendingData > DISCARD_WATERMARK) {
|
|
105
|
+
throw new Error('write data discarded, use flow control to avoid losing data');
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// schedule chunk processing for next event loop run
|
|
109
|
+
if (!this._writeBuffer.length) {
|
|
110
|
+
this._bufferOffset = 0;
|
|
111
|
+
|
|
112
|
+
// If this is the first write call after the user has done some input,
|
|
113
|
+
// parse it immediately to minimize input latency,
|
|
114
|
+
// otherwise schedule for the next event
|
|
115
|
+
if (this._didUserInput) {
|
|
116
|
+
this._didUserInput = false;
|
|
117
|
+
this._pendingData += data.length;
|
|
118
|
+
this._writeBuffer.push(data);
|
|
119
|
+
this._callbacks.push(callback);
|
|
120
|
+
this._innerWrite();
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
setTimeout(() => this._innerWrite());
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
this._pendingData += data.length;
|
|
128
|
+
this._writeBuffer.push(data);
|
|
129
|
+
this._callbacks.push(callback);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Inner write call, that enters the sliced chunk processing by timing.
|
|
134
|
+
*
|
|
135
|
+
* `lastTime` indicates, when the last _innerWrite call had started.
|
|
136
|
+
* It is used to aggregate async handler execution under a timeout constraint
|
|
137
|
+
* effectively lowering the redrawing needs, schematically:
|
|
138
|
+
*
|
|
139
|
+
* macroTask _innerWrite:
|
|
140
|
+
* if (performance.now() - (lastTime | 0) < WRITE_TIMEOUT_MS):
|
|
141
|
+
* schedule microTask _innerWrite(lastTime)
|
|
142
|
+
* else:
|
|
143
|
+
* schedule macroTask _innerWrite(0)
|
|
144
|
+
*
|
|
145
|
+
* overall execution order on task queues:
|
|
146
|
+
*
|
|
147
|
+
* macrotasks: [...] --> _innerWrite(0) --> [...] --> screenUpdate --> [...]
|
|
148
|
+
* m t: |
|
|
149
|
+
* i a: [...]
|
|
150
|
+
* c s: |
|
|
151
|
+
* r k: while < timeout:
|
|
152
|
+
* o s: _innerWrite(timeout)
|
|
153
|
+
*
|
|
154
|
+
* `promiseResult` depicts the promise resolve value of an async handler.
|
|
155
|
+
* This value gets carried forward through all saved stack states of the
|
|
156
|
+
* paused parser for proper continuation.
|
|
157
|
+
*
|
|
158
|
+
* Note, for pure sync code `lastTime` and `promiseResult` have no meaning.
|
|
159
|
+
*/
|
|
160
|
+
protected _innerWrite(lastTime: number = 0, promiseResult: boolean = true): void {
|
|
161
|
+
const startTime = lastTime || performance.now();
|
|
162
|
+
while (this._writeBuffer.length > this._bufferOffset) {
|
|
163
|
+
const data = this._writeBuffer[this._bufferOffset];
|
|
164
|
+
const result = this._action(data, promiseResult);
|
|
165
|
+
if (result) {
|
|
166
|
+
/**
|
|
167
|
+
* If we get a promise as return value, we re-schedule the continuation
|
|
168
|
+
* as thenable on the promise and exit right away.
|
|
169
|
+
*
|
|
170
|
+
* The exit here means, that we block input processing at the current active chunk,
|
|
171
|
+
* the exact execution position within the chunk is preserved by the saved
|
|
172
|
+
* stack content in InputHandler and EscapeSequenceParser.
|
|
173
|
+
*
|
|
174
|
+
* Resuming happens automatically from that saved stack state.
|
|
175
|
+
* Also the resolved promise value is passed along the callstack to
|
|
176
|
+
* `EscapeSequenceParser.parse` to correctly resume the stopped handler loop.
|
|
177
|
+
*
|
|
178
|
+
* Exceptions on async handlers will be logged to console async, but do not interrupt
|
|
179
|
+
* the input processing (continues with next handler at the current input position).
|
|
180
|
+
*/
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* If a promise takes long to resolve, we should schedule continuation behind setTimeout.
|
|
184
|
+
* This might already be too late, if our .then enters really late (executor + prev thens
|
|
185
|
+
* took very long). This cannot be solved here for the handler itself (it is the handlers
|
|
186
|
+
* responsibility to slice hard work), but we can at least schedule a screen update as we
|
|
187
|
+
* gain control.
|
|
188
|
+
*/
|
|
189
|
+
const continuation: (r: boolean) => void = (r: boolean) => performance.now() - startTime >= WRITE_TIMEOUT_MS
|
|
190
|
+
? setTimeout(() => this._innerWrite(0, r))
|
|
191
|
+
: this._innerWrite(startTime, r);
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* Optimization considerations:
|
|
195
|
+
* The continuation above favors FPS over throughput by eval'ing `startTime` on resolve.
|
|
196
|
+
* This might schedule too many screen updates with bad throughput drops (in case a slow
|
|
197
|
+
* resolving handler sliced its work properly behind setTimeout calls). We cannot spot
|
|
198
|
+
* this condition here, also the renderer has no way to spot nonsense updates either.
|
|
199
|
+
* FIXME: A proper fix for this would track the FPS at the renderer entry level separately.
|
|
200
|
+
*
|
|
201
|
+
* If favoring of FPS shows bad throughtput impact, use the following instead. It favors
|
|
202
|
+
* throughput by eval'ing `startTime` upfront pulling at least one more chunk into the
|
|
203
|
+
* current microtask queue (executed before setTimeout).
|
|
204
|
+
*/
|
|
205
|
+
// const continuation: (r: boolean) => void = performance.now() - startTime >=
|
|
206
|
+
// WRITE_TIMEOUT_MS
|
|
207
|
+
// ? r => setTimeout(() => this._innerWrite(0, r))
|
|
208
|
+
// : r => this._innerWrite(startTime, r);
|
|
209
|
+
|
|
210
|
+
// Handle exceptions synchronously to current band position, idea:
|
|
211
|
+
// 1. spawn a single microtask which we allow to throw hard
|
|
212
|
+
// 2. spawn a promise immediately resolving to `true`
|
|
213
|
+
// (executed on the same queue, thus properly aligned before continuation happens)
|
|
214
|
+
result.catch(err => {
|
|
215
|
+
queueMicrotask(() => {throw err;});
|
|
216
|
+
return Promise.resolve(false);
|
|
217
|
+
}).then(continuation);
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
const cb = this._callbacks[this._bufferOffset];
|
|
222
|
+
if (cb) cb();
|
|
223
|
+
this._bufferOffset++;
|
|
224
|
+
this._pendingData -= data.length;
|
|
225
|
+
|
|
226
|
+
if (performance.now() - startTime >= WRITE_TIMEOUT_MS) {
|
|
227
|
+
break;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
if (this._writeBuffer.length > this._bufferOffset) {
|
|
231
|
+
// Allow renderer to catch up before processing the next batch
|
|
232
|
+
// trim already processed chunks if we are above threshold
|
|
233
|
+
if (this._bufferOffset > WRITE_BUFFER_LENGTH_THRESHOLD) {
|
|
234
|
+
this._writeBuffer = this._writeBuffer.slice(this._bufferOffset);
|
|
235
|
+
this._callbacks = this._callbacks.slice(this._bufferOffset);
|
|
236
|
+
this._bufferOffset = 0;
|
|
237
|
+
}
|
|
238
|
+
setTimeout(() => this._innerWrite());
|
|
239
|
+
} else {
|
|
240
|
+
this._writeBuffer.length = 0;
|
|
241
|
+
this._callbacks.length = 0;
|
|
242
|
+
this._pendingData = 0;
|
|
243
|
+
this._bufferOffset = 0;
|
|
244
|
+
}
|
|
245
|
+
this._onWriteParsed.fire();
|
|
246
|
+
}
|
|
247
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2021 The xterm.js authors. All rights reserved.
|
|
3
|
+
* @license MIT
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
// 'rgb:' rule - matching: r/g/b | rr/gg/bb | rrr/ggg/bbb | rrrr/gggg/bbbb (hex digits)
|
|
8
|
+
const RGB_REX = /^([\da-f])\/([\da-f])\/([\da-f])$|^([\da-f]{2})\/([\da-f]{2})\/([\da-f]{2})$|^([\da-f]{3})\/([\da-f]{3})\/([\da-f]{3})$|^([\da-f]{4})\/([\da-f]{4})\/([\da-f]{4})$/;
|
|
9
|
+
// '#...' rule - matching any hex digits
|
|
10
|
+
const HASH_REX = /^[\da-f]+$/;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Parse color spec to RGB values (8 bit per channel).
|
|
14
|
+
* See `man xparsecolor` for details about certain format specifications.
|
|
15
|
+
*
|
|
16
|
+
* Supported formats:
|
|
17
|
+
* - rgb:<red>/<green>/<blue> with <red>, <green>, <blue> in h | hh | hhh | hhhh
|
|
18
|
+
* - #RGB, #RRGGBB, #RRRGGGBBB, #RRRRGGGGBBBB
|
|
19
|
+
*
|
|
20
|
+
* All other formats like rgbi: or device-independent string specifications
|
|
21
|
+
* with float numbering are not supported.
|
|
22
|
+
*/
|
|
23
|
+
export function parseColor(data: string): [number, number, number] | undefined {
|
|
24
|
+
if (!data) return;
|
|
25
|
+
// also handle uppercases
|
|
26
|
+
let low = data.toLowerCase();
|
|
27
|
+
if (low.indexOf('rgb:') === 0) {
|
|
28
|
+
// 'rgb:' specifier
|
|
29
|
+
low = low.slice(4);
|
|
30
|
+
const m = RGB_REX.exec(low);
|
|
31
|
+
if (m) {
|
|
32
|
+
const base = m[1] ? 15 : m[4] ? 255 : m[7] ? 4095 : 65535;
|
|
33
|
+
return [
|
|
34
|
+
Math.round(parseInt(m[1] || m[4] || m[7] || m[10], 16) / base * 255),
|
|
35
|
+
Math.round(parseInt(m[2] || m[5] || m[8] || m[11], 16) / base * 255),
|
|
36
|
+
Math.round(parseInt(m[3] || m[6] || m[9] || m[12], 16) / base * 255)
|
|
37
|
+
];
|
|
38
|
+
}
|
|
39
|
+
} else if (low.indexOf('#') === 0) {
|
|
40
|
+
// '#' specifier
|
|
41
|
+
low = low.slice(1);
|
|
42
|
+
if (HASH_REX.exec(low) && [3, 6, 9, 12].includes(low.length)) {
|
|
43
|
+
const adv = low.length / 3;
|
|
44
|
+
const result: [number, number, number] = [0, 0, 0];
|
|
45
|
+
for (let i = 0; i < 3; ++i) {
|
|
46
|
+
const c = parseInt(low.slice(adv * i, adv * i + adv), 16);
|
|
47
|
+
result[i] = adv === 1 ? c << 4 : adv === 2 ? c : adv === 3 ? c >> 4 : c >> 8;
|
|
48
|
+
}
|
|
49
|
+
return result;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Named colors are currently not supported due to the large addition to the xterm.js bundle size
|
|
54
|
+
// they would add. In order to support named colors, we would need some way of optionally loading
|
|
55
|
+
// additional payloads so startup/download time is not bloated (see #3530).
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// pad hex output to requested bit width
|
|
59
|
+
function pad(n: number, bits: number): string {
|
|
60
|
+
const s = n.toString(16);
|
|
61
|
+
const s2 = s.length < 2 ? '0' + s : s;
|
|
62
|
+
switch (bits) {
|
|
63
|
+
case 4:
|
|
64
|
+
return s[0];
|
|
65
|
+
case 8:
|
|
66
|
+
return s2;
|
|
67
|
+
case 12:
|
|
68
|
+
return (s2 + s2).slice(0, 3);
|
|
69
|
+
default:
|
|
70
|
+
return s2 + s2;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Convert a given color to rgb:../../.. string of `bits` depth.
|
|
76
|
+
*/
|
|
77
|
+
export function toRgbString(color: [number, number, number], bits: number = 16): string {
|
|
78
|
+
const [r, g, b] = color;
|
|
79
|
+
return `rgb:${pad(r, bits)}/${pad(g, bits)}/${pad(b, bits)}`;
|
|
80
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2017 The xterm.js authors. All rights reserved.
|
|
3
|
+
* @license MIT
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Internal states of EscapeSequenceParser.
|
|
8
|
+
*/
|
|
9
|
+
export const enum ParserState {
|
|
10
|
+
GROUND = 0,
|
|
11
|
+
ESCAPE = 1,
|
|
12
|
+
ESCAPE_INTERMEDIATE = 2,
|
|
13
|
+
CSI_ENTRY = 3,
|
|
14
|
+
CSI_PARAM = 4,
|
|
15
|
+
CSI_INTERMEDIATE = 5,
|
|
16
|
+
CSI_IGNORE = 6,
|
|
17
|
+
SOS_PM_APC_STRING = 7,
|
|
18
|
+
OSC_STRING = 8,
|
|
19
|
+
DCS_ENTRY = 9,
|
|
20
|
+
DCS_PARAM = 10,
|
|
21
|
+
DCS_IGNORE = 11,
|
|
22
|
+
DCS_INTERMEDIATE = 12,
|
|
23
|
+
DCS_PASSTHROUGH = 13
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Internal actions of EscapeSequenceParser.
|
|
28
|
+
*/
|
|
29
|
+
export const enum ParserAction {
|
|
30
|
+
IGNORE = 0,
|
|
31
|
+
ERROR = 1,
|
|
32
|
+
PRINT = 2,
|
|
33
|
+
EXECUTE = 3,
|
|
34
|
+
OSC_START = 4,
|
|
35
|
+
OSC_PUT = 5,
|
|
36
|
+
OSC_END = 6,
|
|
37
|
+
CSI_DISPATCH = 7,
|
|
38
|
+
PARAM = 8,
|
|
39
|
+
COLLECT = 9,
|
|
40
|
+
ESC_DISPATCH = 10,
|
|
41
|
+
CLEAR = 11,
|
|
42
|
+
DCS_HOOK = 12,
|
|
43
|
+
DCS_PUT = 13,
|
|
44
|
+
DCS_UNHOOK = 14
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Internal states of OscParser.
|
|
49
|
+
*/
|
|
50
|
+
export const enum OscState {
|
|
51
|
+
START = 0,
|
|
52
|
+
ID = 1,
|
|
53
|
+
PAYLOAD = 2,
|
|
54
|
+
ABORT = 3
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// payload limit for OSC and DCS
|
|
58
|
+
export const PAYLOAD_LIMIT = 10000000;
|