@opensumi/ide-terminal-next 2.12.1-next-079c1930

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 (282) hide show
  1. package/README.md +89 -0
  2. package/lib/browser/component/resize.delegate.d.ts +14 -0
  3. package/lib/browser/component/resize.delegate.d.ts.map +1 -0
  4. package/lib/browser/component/resize.delegate.js +47 -0
  5. package/lib/browser/component/resize.delegate.js.map +1 -0
  6. package/lib/browser/component/resize.module.less +55 -0
  7. package/lib/browser/component/resize.view.d.ts +16 -0
  8. package/lib/browser/component/resize.view.d.ts.map +1 -0
  9. package/lib/browser/component/resize.view.js +40 -0
  10. package/lib/browser/component/resize.view.js.map +1 -0
  11. package/lib/browser/component/tab.item.d.ts +7 -0
  12. package/lib/browser/component/tab.item.d.ts.map +1 -0
  13. package/lib/browser/component/tab.item.js +61 -0
  14. package/lib/browser/component/tab.item.js.map +1 -0
  15. package/lib/browser/component/tab.module.less +112 -0
  16. package/lib/browser/component/tab.view.d.ts +4 -0
  17. package/lib/browser/component/tab.view.d.ts.map +1 -0
  18. package/lib/browser/component/tab.view.js +30 -0
  19. package/lib/browser/component/tab.view.js.map +1 -0
  20. package/lib/browser/component/terminal.module.less +69 -0
  21. package/lib/browser/component/terminal.select.d.ts +4 -0
  22. package/lib/browser/component/terminal.select.d.ts.map +1 -0
  23. package/lib/browser/component/terminal.select.js +21 -0
  24. package/lib/browser/component/terminal.select.js.map +1 -0
  25. package/lib/browser/component/terminal.variable.d.ts +8 -0
  26. package/lib/browser/component/terminal.variable.d.ts.map +1 -0
  27. package/lib/browser/component/terminal.variable.js +44 -0
  28. package/lib/browser/component/terminal.variable.js.map +1 -0
  29. package/lib/browser/component/terminal.view.d.ts +5 -0
  30. package/lib/browser/component/terminal.view.d.ts.map +1 -0
  31. package/lib/browser/component/terminal.view.js +68 -0
  32. package/lib/browser/component/terminal.view.js.map +1 -0
  33. package/lib/browser/component/terminal.widget.d.ts +10 -0
  34. package/lib/browser/component/terminal.widget.d.ts.map +1 -0
  35. package/lib/browser/component/terminal.widget.js +51 -0
  36. package/lib/browser/component/terminal.widget.js.map +1 -0
  37. package/lib/browser/component/variable.module.less +15 -0
  38. package/lib/browser/contribution/index.d.ts +7 -0
  39. package/lib/browser/contribution/index.d.ts.map +1 -0
  40. package/lib/browser/contribution/index.js +10 -0
  41. package/lib/browser/contribution/index.js.map +1 -0
  42. package/lib/browser/contribution/terminal.command.d.ts +20 -0
  43. package/lib/browser/contribution/terminal.command.d.ts.map +1 -0
  44. package/lib/browser/contribution/terminal.command.js +215 -0
  45. package/lib/browser/contribution/terminal.command.js.map +1 -0
  46. package/lib/browser/contribution/terminal.keybinding.d.ts +5 -0
  47. package/lib/browser/contribution/terminal.keybinding.d.ts.map +1 -0
  48. package/lib/browser/contribution/terminal.keybinding.js +55 -0
  49. package/lib/browser/contribution/terminal.keybinding.js.map +1 -0
  50. package/lib/browser/contribution/terminal.lifecycle.d.ts +15 -0
  51. package/lib/browser/contribution/terminal.lifecycle.d.ts.map +1 -0
  52. package/lib/browser/contribution/terminal.lifecycle.js +47 -0
  53. package/lib/browser/contribution/terminal.lifecycle.js.map +1 -0
  54. package/lib/browser/contribution/terminal.menu.d.ts +19 -0
  55. package/lib/browser/contribution/terminal.menu.d.ts.map +1 -0
  56. package/lib/browser/contribution/terminal.menu.js +144 -0
  57. package/lib/browser/contribution/terminal.menu.js.map +1 -0
  58. package/lib/browser/contribution/terminal.network.d.ts +11 -0
  59. package/lib/browser/contribution/terminal.network.d.ts.map +1 -0
  60. package/lib/browser/contribution/terminal.network.js +44 -0
  61. package/lib/browser/contribution/terminal.network.js.map +1 -0
  62. package/lib/browser/contribution/terminal.view.d.ts +7 -0
  63. package/lib/browser/contribution/terminal.view.d.ts.map +1 -0
  64. package/lib/browser/contribution/terminal.view.js +55 -0
  65. package/lib/browser/contribution/terminal.view.js.map +1 -0
  66. package/lib/browser/index.d.ts +10 -0
  67. package/lib/browser/index.d.ts.map +1 -0
  68. package/lib/browser/index.js +105 -0
  69. package/lib/browser/index.js.map +1 -0
  70. package/lib/browser/links/base.d.ts +8 -0
  71. package/lib/browser/links/base.d.ts.map +1 -0
  72. package/lib/browser/links/base.js +13 -0
  73. package/lib/browser/links/base.js.map +1 -0
  74. package/lib/browser/links/external-link-provider-adapter.d.ts +18 -0
  75. package/lib/browser/links/external-link-provider-adapter.d.ts.map +1 -0
  76. package/lib/browser/links/external-link-provider-adapter.js +56 -0
  77. package/lib/browser/links/external-link-provider-adapter.js.map +1 -0
  78. package/lib/browser/links/helpers.d.ts +7 -0
  79. package/lib/browser/links/helpers.d.ts.map +1 -0
  80. package/lib/browser/links/helpers.js +129 -0
  81. package/lib/browser/links/helpers.js.map +1 -0
  82. package/lib/browser/links/link-manager.d.ts +61 -0
  83. package/lib/browser/links/link-manager.d.ts.map +1 -0
  84. package/lib/browser/links/link-manager.js +252 -0
  85. package/lib/browser/links/link-manager.js.map +1 -0
  86. package/lib/browser/links/link.d.ts +24 -0
  87. package/lib/browser/links/link.d.ts.map +1 -0
  88. package/lib/browser/links/link.js +92 -0
  89. package/lib/browser/links/link.js.map +1 -0
  90. package/lib/browser/links/protocol-link-provider.d.ts +11 -0
  91. package/lib/browser/links/protocol-link-provider.d.ts.map +1 -0
  92. package/lib/browser/links/protocol-link-provider.js +53 -0
  93. package/lib/browser/links/protocol-link-provider.js.map +1 -0
  94. package/lib/browser/links/validated-local-link-provider.d.ts +31 -0
  95. package/lib/browser/links/validated-local-link-provider.d.ts.map +1 -0
  96. package/lib/browser/links/validated-local-link-provider.js +137 -0
  97. package/lib/browser/links/validated-local-link-provider.js.map +1 -0
  98. package/lib/browser/terminal.addon.d.ts +42 -0
  99. package/lib/browser/terminal.addon.d.ts.map +1 -0
  100. package/lib/browser/terminal.addon.js +169 -0
  101. package/lib/browser/terminal.addon.js.map +1 -0
  102. package/lib/browser/terminal.api.d.ts +34 -0
  103. package/lib/browser/terminal.api.d.ts.map +1 -0
  104. package/lib/browser/terminal.api.js +132 -0
  105. package/lib/browser/terminal.api.js.map +1 -0
  106. package/lib/browser/terminal.client.d.ts +114 -0
  107. package/lib/browser/terminal.client.d.ts.map +1 -0
  108. package/lib/browser/terminal.client.js +518 -0
  109. package/lib/browser/terminal.client.js.map +1 -0
  110. package/lib/browser/terminal.color.d.ts +20 -0
  111. package/lib/browser/terminal.color.d.ts.map +1 -0
  112. package/lib/browser/terminal.color.js +172 -0
  113. package/lib/browser/terminal.color.js.map +1 -0
  114. package/lib/browser/terminal.context-key.d.ts +10 -0
  115. package/lib/browser/terminal.context-key.d.ts.map +1 -0
  116. package/lib/browser/terminal.context-key.js +28 -0
  117. package/lib/browser/terminal.context-key.js.map +1 -0
  118. package/lib/browser/terminal.context-menu.d.ts +15 -0
  119. package/lib/browser/terminal.context-menu.d.ts.map +1 -0
  120. package/lib/browser/terminal.context-menu.js +75 -0
  121. package/lib/browser/terminal.context-menu.js.map +1 -0
  122. package/lib/browser/terminal.controller.d.ts +68 -0
  123. package/lib/browser/terminal.controller.d.ts.map +1 -0
  124. package/lib/browser/terminal.controller.js +367 -0
  125. package/lib/browser/terminal.controller.js.map +1 -0
  126. package/lib/browser/terminal.environment.service.d.ts +27 -0
  127. package/lib/browser/terminal.environment.service.d.ts.map +1 -0
  128. package/lib/browser/terminal.environment.service.js +144 -0
  129. package/lib/browser/terminal.environment.service.js.map +1 -0
  130. package/lib/browser/terminal.error.d.ts +10 -0
  131. package/lib/browser/terminal.error.d.ts.map +1 -0
  132. package/lib/browser/terminal.error.js +58 -0
  133. package/lib/browser/terminal.error.js.map +1 -0
  134. package/lib/browser/terminal.ext.host.proxy.d.ts +58 -0
  135. package/lib/browser/terminal.ext.host.proxy.d.ts.map +1 -0
  136. package/lib/browser/terminal.ext.host.proxy.js +104 -0
  137. package/lib/browser/terminal.ext.host.proxy.js.map +1 -0
  138. package/lib/browser/terminal.input.d.ts +6 -0
  139. package/lib/browser/terminal.input.d.ts.map +1 -0
  140. package/lib/browser/terminal.input.js +32 -0
  141. package/lib/browser/terminal.input.js.map +1 -0
  142. package/lib/browser/terminal.network.d.ts +32 -0
  143. package/lib/browser/terminal.network.d.ts.map +1 -0
  144. package/lib/browser/terminal.network.js +150 -0
  145. package/lib/browser/terminal.network.js.map +1 -0
  146. package/lib/browser/terminal.preference.d.ts +26 -0
  147. package/lib/browser/terminal.preference.d.ts.map +1 -0
  148. package/lib/browser/terminal.preference.js +80 -0
  149. package/lib/browser/terminal.preference.js.map +1 -0
  150. package/lib/browser/terminal.render.d.ts +13 -0
  151. package/lib/browser/terminal.render.d.ts.map +1 -0
  152. package/lib/browser/terminal.render.js +25 -0
  153. package/lib/browser/terminal.render.js.map +1 -0
  154. package/lib/browser/terminal.restore.d.ts +10 -0
  155. package/lib/browser/terminal.restore.d.ts.map +1 -0
  156. package/lib/browser/terminal.restore.js +41 -0
  157. package/lib/browser/terminal.restore.js.map +1 -0
  158. package/lib/browser/terminal.search.d.ts +15 -0
  159. package/lib/browser/terminal.search.d.ts.map +1 -0
  160. package/lib/browser/terminal.search.js +53 -0
  161. package/lib/browser/terminal.search.js.map +1 -0
  162. package/lib/browser/terminal.service.d.ts +60 -0
  163. package/lib/browser/terminal.service.d.ts.map +1 -0
  164. package/lib/browser/terminal.service.js +212 -0
  165. package/lib/browser/terminal.service.js.map +1 -0
  166. package/lib/browser/terminal.theme.d.ts +7 -0
  167. package/lib/browser/terminal.theme.d.ts.map +1 -0
  168. package/lib/browser/terminal.theme.js +50 -0
  169. package/lib/browser/terminal.theme.js.map +1 -0
  170. package/lib/browser/terminal.view.d.ts +99 -0
  171. package/lib/browser/terminal.view.d.ts.map +1 -0
  172. package/lib/browser/terminal.view.js +358 -0
  173. package/lib/browser/terminal.view.js.map +1 -0
  174. package/lib/common/api.d.ts +20 -0
  175. package/lib/common/api.d.ts.map +1 -0
  176. package/lib/common/api.js +5 -0
  177. package/lib/common/api.js.map +1 -0
  178. package/lib/common/client.d.ts +163 -0
  179. package/lib/common/client.d.ts.map +1 -0
  180. package/lib/common/client.js +5 -0
  181. package/lib/common/client.js.map +1 -0
  182. package/lib/common/commands.d.ts +92 -0
  183. package/lib/common/commands.d.ts.map +1 -0
  184. package/lib/common/commands.js +97 -0
  185. package/lib/common/commands.js.map +1 -0
  186. package/lib/common/controller.d.ts +86 -0
  187. package/lib/common/controller.d.ts.map +1 -0
  188. package/lib/common/controller.js +7 -0
  189. package/lib/common/controller.js.map +1 -0
  190. package/lib/common/environmentVariable.d.ts +118 -0
  191. package/lib/common/environmentVariable.d.ts.map +1 -0
  192. package/lib/common/environmentVariable.js +27 -0
  193. package/lib/common/environmentVariable.js.map +1 -0
  194. package/lib/common/environmentVariableCollection.d.ts +10 -0
  195. package/lib/common/environmentVariableCollection.d.ts.map +1 -0
  196. package/lib/common/environmentVariableCollection.js +136 -0
  197. package/lib/common/environmentVariableCollection.js.map +1 -0
  198. package/lib/common/error.d.ts +30 -0
  199. package/lib/common/error.d.ts.map +1 -0
  200. package/lib/common/error.js +5 -0
  201. package/lib/common/error.js.map +1 -0
  202. package/lib/common/extension.d.ts +108 -0
  203. package/lib/common/extension.d.ts.map +1 -0
  204. package/lib/common/extension.js +52 -0
  205. package/lib/common/extension.js.map +1 -0
  206. package/lib/common/index.d.ts +17 -0
  207. package/lib/common/index.d.ts.map +1 -0
  208. package/lib/common/index.js +21 -0
  209. package/lib/common/index.js.map +1 -0
  210. package/lib/common/link-computer.d.ts +56 -0
  211. package/lib/common/link-computer.d.ts.map +1 -0
  212. package/lib/common/link-computer.js +273 -0
  213. package/lib/common/link-computer.js.map +1 -0
  214. package/lib/common/menu.d.ts +5 -0
  215. package/lib/common/menu.d.ts.map +1 -0
  216. package/lib/common/menu.js +9 -0
  217. package/lib/common/menu.js.map +1 -0
  218. package/lib/common/network.d.ts +48 -0
  219. package/lib/common/network.d.ts.map +1 -0
  220. package/lib/common/network.js +10 -0
  221. package/lib/common/network.js.map +1 -0
  222. package/lib/common/preference.d.ts +33 -0
  223. package/lib/common/preference.d.ts.map +1 -0
  224. package/lib/common/preference.js +18 -0
  225. package/lib/common/preference.js.map +1 -0
  226. package/lib/common/pty.d.ts +205 -0
  227. package/lib/common/pty.d.ts.map +1 -0
  228. package/lib/common/pty.js +8 -0
  229. package/lib/common/pty.js.map +1 -0
  230. package/lib/common/render.d.ts +24 -0
  231. package/lib/common/render.d.ts.map +1 -0
  232. package/lib/common/render.js +10 -0
  233. package/lib/common/render.js.map +1 -0
  234. package/lib/common/resize.d.ts +39 -0
  235. package/lib/common/resize.d.ts.map +1 -0
  236. package/lib/common/resize.js +3 -0
  237. package/lib/common/resize.js.map +1 -0
  238. package/lib/common/restore.d.ts +6 -0
  239. package/lib/common/restore.d.ts.map +1 -0
  240. package/lib/common/restore.js +5 -0
  241. package/lib/common/restore.js.map +1 -0
  242. package/lib/common/service.d.ts +88 -0
  243. package/lib/common/service.d.ts.map +1 -0
  244. package/lib/common/service.js +6 -0
  245. package/lib/common/service.js.map +1 -0
  246. package/lib/common/shell.d.ts +10 -0
  247. package/lib/common/shell.d.ts.map +1 -0
  248. package/lib/common/shell.js +14 -0
  249. package/lib/common/shell.js.map +1 -0
  250. package/lib/common/theme.d.ts +6 -0
  251. package/lib/common/theme.d.ts.map +1 -0
  252. package/lib/common/theme.js +5 -0
  253. package/lib/common/theme.js.map +1 -0
  254. package/lib/common/utils.d.ts +4 -0
  255. package/lib/common/utils.d.ts.map +1 -0
  256. package/lib/common/utils.js +21 -0
  257. package/lib/common/utils.js.map +1 -0
  258. package/lib/index.d.ts +2 -0
  259. package/lib/index.d.ts.map +1 -0
  260. package/lib/index.js +5 -0
  261. package/lib/index.js.map +1 -0
  262. package/lib/node/index.d.ts +10 -0
  263. package/lib/node/index.d.ts.map +1 -0
  264. package/lib/node/index.js +35 -0
  265. package/lib/node/index.js.map +1 -0
  266. package/lib/node/pty.d.ts +11 -0
  267. package/lib/node/pty.d.ts.map +1 -0
  268. package/lib/node/pty.js +54 -0
  269. package/lib/node/pty.js.map +1 -0
  270. package/lib/node/shell.d.ts +3 -0
  271. package/lib/node/shell.d.ts.map +1 -0
  272. package/lib/node/shell.js +28 -0
  273. package/lib/node/shell.js.map +1 -0
  274. package/lib/node/terminal.service.client.d.ts +34 -0
  275. package/lib/node/terminal.service.client.d.ts.map +1 -0
  276. package/lib/node/terminal.service.client.js +111 -0
  277. package/lib/node/terminal.service.client.js.map +1 -0
  278. package/lib/node/terminal.service.d.ts +28 -0
  279. package/lib/node/terminal.service.d.ts.map +1 -0
  280. package/lib/node/terminal.service.js +136 -0
  281. package/lib/node/terminal.service.js.map +1 -0
  282. package/package.json +58 -0
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Microsoft Corporation. All rights reserved.
4
+ * Licensed under the MIT License. See License.txt in the project root for license information.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ // Some code copued and modified from https://github.com/microsoft/vscode/blob/1.44.0/src/vs/workbench/contrib/terminal/browser/links/terminalLinkHelpers.ts
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.positionIsInRange = exports.getXtermLineContent = exports.convertBufferRangeToViewport = exports.convertLinkRangeToBuffer = void 0;
9
+ function convertLinkRangeToBuffer(lines, bufferWidth, range, startLine) {
10
+ const bufferRange = {
11
+ start: {
12
+ x: range.startColumn,
13
+ y: range.startLineNumber + startLine,
14
+ },
15
+ end: {
16
+ x: range.endColumn - 1,
17
+ y: range.endLineNumber + startLine,
18
+ },
19
+ };
20
+ // Shift start range right for each wide character before the link
21
+ let startOffset = 0;
22
+ const startWrappedLineCount = Math.ceil(range.startColumn / bufferWidth);
23
+ for (let y = 0; y < Math.min(startWrappedLineCount); y++) {
24
+ const lineLength = Math.min(bufferWidth, range.startColumn - y * bufferWidth);
25
+ let lineOffset = 0;
26
+ const line = lines[y];
27
+ // Sanity check for line, apparently this can happen but it's not clear under what
28
+ // circumstances this happens. Continue on, skipping the remainder of start offset if this
29
+ // happens to minimize impact.
30
+ if (!line) {
31
+ break;
32
+ }
33
+ for (let x = 0; x < Math.min(bufferWidth, lineLength + lineOffset); x++) {
34
+ const cell = line.getCell(x);
35
+ const width = cell.getWidth();
36
+ if (width === 2) {
37
+ lineOffset++;
38
+ }
39
+ const char = cell.getChars();
40
+ if (char.length > 1) {
41
+ lineOffset -= char.length - 1;
42
+ }
43
+ }
44
+ startOffset += lineOffset;
45
+ }
46
+ // Shift end range right for each wide character inside the link
47
+ let endOffset = 0;
48
+ const endWrappedLineCount = Math.ceil(range.endColumn / bufferWidth);
49
+ for (let y = Math.max(0, startWrappedLineCount - 1); y < endWrappedLineCount; y++) {
50
+ const start = (y === startWrappedLineCount - 1 ? (range.startColumn + startOffset) % bufferWidth : 0);
51
+ const lineLength = Math.min(bufferWidth, range.endColumn + startOffset - y * bufferWidth);
52
+ const startLineOffset = (y === startWrappedLineCount - 1 ? startOffset : 0);
53
+ let lineOffset = 0;
54
+ const line = lines[y];
55
+ // Sanity check for line, apparently this can happen but it's not clear under what
56
+ // circumstances this happens. Continue on, skipping the remainder of start offset if this
57
+ // happens to minimize impact.
58
+ if (!line) {
59
+ break;
60
+ }
61
+ for (let x = start; x < Math.min(bufferWidth, lineLength + lineOffset + startLineOffset); x++) {
62
+ const cell = line.getCell(x);
63
+ const width = cell.getWidth();
64
+ // Offset for 0 cells following wide characters
65
+ if (width === 2) {
66
+ lineOffset++;
67
+ }
68
+ // Offset for early wrapping when the last cell in row is a wide character
69
+ if (x === bufferWidth - 1 && cell.getChars() === '') {
70
+ lineOffset++;
71
+ }
72
+ }
73
+ endOffset += lineOffset;
74
+ }
75
+ // Apply the width character offsets to the result
76
+ bufferRange.start.x += startOffset;
77
+ bufferRange.end.x += startOffset + endOffset;
78
+ // Convert back to wrapped lines
79
+ while (bufferRange.start.x > bufferWidth) {
80
+ bufferRange.start.x -= bufferWidth;
81
+ bufferRange.start.y++;
82
+ }
83
+ while (bufferRange.end.x > bufferWidth) {
84
+ bufferRange.end.x -= bufferWidth;
85
+ bufferRange.end.y++;
86
+ }
87
+ return bufferRange;
88
+ }
89
+ exports.convertLinkRangeToBuffer = convertLinkRangeToBuffer;
90
+ function convertBufferRangeToViewport(bufferRange, viewportY) {
91
+ return {
92
+ start: {
93
+ x: bufferRange.start.x - 1,
94
+ y: bufferRange.start.y - viewportY - 1,
95
+ },
96
+ end: {
97
+ x: bufferRange.end.x - 1,
98
+ y: bufferRange.end.y - viewportY - 1,
99
+ },
100
+ };
101
+ }
102
+ exports.convertBufferRangeToViewport = convertBufferRangeToViewport;
103
+ function getXtermLineContent(buffer, lineStart, lineEnd, cols) {
104
+ let content = '';
105
+ for (let i = lineStart; i <= lineEnd; i++) {
106
+ // Make sure only 0 to cols are considered as resizing when windows mode is enabled will
107
+ // retain buffer data outside of the terminal width as reflow is disabled.
108
+ const line = buffer.getLine(i);
109
+ if (line) {
110
+ content += line.translateToString(true, 0, cols);
111
+ }
112
+ }
113
+ return content;
114
+ }
115
+ exports.getXtermLineContent = getXtermLineContent;
116
+ function positionIsInRange(position, range) {
117
+ if (position.y < range.start.y || position.y > range.end.y) {
118
+ return false;
119
+ }
120
+ if (position.y === range.start.y && position.x < range.start.x) {
121
+ return false;
122
+ }
123
+ if (position.y === range.end.y && position.x > range.end.x) {
124
+ return false;
125
+ }
126
+ return true;
127
+ }
128
+ exports.positionIsInRange = positionIsInRange;
129
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/browser/links/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ import { Terminal } from 'xterm';
2
+ import { Disposable, IDisposable } from '@opensumi/ide-core-common';
3
+ import { ITerminalClient, ITerminalExternalLinkProvider } from '../../common';
4
+ import { TerminalClient } from '../terminal.client';
5
+ export declare type XtermLinkMatcherHandler = (event: MouseEvent | undefined, link: string) => Promise<void>;
6
+ export interface ITextEditorSelection {
7
+ readonly startLineNumber: number;
8
+ readonly startColumn: number;
9
+ readonly endLineNumber?: number;
10
+ readonly endColumn?: number;
11
+ }
12
+ /**
13
+ * An object responsible for managing registration of link matchers and link providers.
14
+ */
15
+ export declare class TerminalLinkManager extends Disposable {
16
+ private _xterm;
17
+ private _client;
18
+ private _processCwd;
19
+ private _standardLinkProviders;
20
+ private _standardLinkProvidersDisposables;
21
+ private _editorService;
22
+ private _openerService;
23
+ private _fileService;
24
+ private readonly _fileSystem;
25
+ private _getHomeDirPromise;
26
+ constructor(_xterm: Terminal, _client: TerminalClient);
27
+ set processCwd(processCwd: string);
28
+ private _registerStandardLinkProviders;
29
+ registerExternalLinkProvider(instance: ITerminalClient, linkProvider: ITerminalExternalLinkProvider): IDisposable;
30
+ protected _wrapLinkHandler(handler: (event: MouseEvent | undefined, link: string) => void): XtermLinkMatcherHandler;
31
+ protected get _localLinkRegex(): RegExp;
32
+ private _handleLocalLink;
33
+ private _handleHypertextLink;
34
+ private _handleProtocolLink;
35
+ protected _isLinkActivationModifierDown(event: MouseEvent): boolean;
36
+ private get osPath();
37
+ /**
38
+ * 获取用户目录
39
+ */
40
+ private _getUserHomeDir;
41
+ private _getUserHomeDirOnce;
42
+ protected _preprocessPath(link: string): Promise<string | null>;
43
+ private _resolvePath;
44
+ /**
45
+ * Returns line and column number of URl if that is present.
46
+ *
47
+ * @param link Url link which may contain line and column number.
48
+ */
49
+ extractLineColumnInfo(link: string): LineColumnInfo;
50
+ /**
51
+ * Returns url from link as link may contain line and column information.
52
+ *
53
+ * @param link url link which may contain line and column number.
54
+ */
55
+ extractLinkUrl(link: string): string | null;
56
+ }
57
+ export interface LineColumnInfo {
58
+ lineNumber: number;
59
+ columnNumber: number;
60
+ }
61
+ //# sourceMappingURL=link-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link-manager.d.ts","sourceRoot":"","sources":["../../../src/browser/links/link-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAiB,MAAM,OAAO,CAAC;AAEhD,OAAO,EAAO,UAAU,EAAE,WAAW,EAAwC,MAAM,2BAA2B,CAAC;AAS/G,OAAO,EAAE,eAAe,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,oBAAY,uBAAuB,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAErG,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,qBACa,mBAAoB,SAAQ,UAAU;IAoB/C,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO;IApBjB,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,sBAAsB,CAAuB;IACrD,OAAO,CAAC,iCAAiC,CAA8B;IAGvE,OAAO,CAAC,cAAc,CAAyB;IAG/C,OAAO,CAAC,cAAc,CAAiB;IAGvC,OAAO,CAAC,YAAY,CAAqB;IAGzC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IAEjD,OAAO,CAAC,kBAAkB,CAAkB;gBAGlC,MAAM,EAAE,QAAQ,EAChB,OAAO,EAAE,cAAc;IAuBjC,IAAW,UAAU,CAAC,UAAU,EAAE,MAAM,EAEvC;IAED,OAAO,CAAC,8BAA8B;IAQ/B,4BAA4B,CAAC,QAAQ,EAAE,eAAe,EAAE,YAAY,EAAE,6BAA6B,GAAG,WAAW;IAQxH,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,uBAAuB;IAenH,SAAS,KAAK,eAAe,IAAI,MAAM,CAItC;YAEa,gBAAgB;IAgB9B,OAAO,CAAC,oBAAoB;YAId,mBAAmB;IAiBjC,SAAS,CAAC,6BAA6B,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO;IAInE,OAAO,KAAK,MAAM,GAKjB;IAED;;OAEG;YACW,eAAe;IAS7B,OAAO,CAAC,mBAAmB;cAOX,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;YAmCvD,YAAY;IAuB1B;;;;OAIG;IACI,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc;IA6B1D;;;;OAIG;IACI,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAOnD;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB"}
@@ -0,0 +1,252 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TerminalLinkManager = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const xterm_1 = require("xterm");
6
+ const di_1 = require("@opensumi/di");
7
+ const ide_core_common_1 = require("@opensumi/ide-core-common");
8
+ const platform_1 = require("@opensumi/ide-core-common/lib/platform");
9
+ const path_1 = require("@opensumi/ide-core-common/lib/path");
10
+ const ide_core_browser_1 = require("@opensumi/ide-core-browser");
11
+ const ide_file_service_1 = require("@opensumi/ide-file-service");
12
+ const common_1 = require("@opensumi/ide-editor/lib/common");
13
+ const protocol_link_provider_1 = require("./protocol-link-provider");
14
+ const validated_local_link_provider_1 = require("./validated-local-link-provider");
15
+ const external_link_provider_adapter_1 = require("./external-link-provider-adapter");
16
+ const terminal_client_1 = require("../terminal.client");
17
+ /**
18
+ * An object responsible for managing registration of link matchers and link providers.
19
+ */
20
+ let TerminalLinkManager = class TerminalLinkManager extends ide_core_common_1.Disposable {
21
+ constructor(_xterm, _client) {
22
+ super();
23
+ this._xterm = _xterm;
24
+ this._client = _client;
25
+ this._standardLinkProviders = [];
26
+ this._standardLinkProvidersDisposables = new ide_core_common_1.DisposableCollection();
27
+ // Protocol links
28
+ const wrappedActivateCallback = this._wrapLinkHandler((_, link) => this._handleProtocolLink(link));
29
+ const protocolProvider = new protocol_link_provider_1.TerminalProtocolLinkProvider(this._xterm, wrappedActivateCallback);
30
+ this._standardLinkProviders.push(protocolProvider);
31
+ // Validated local links
32
+ const wrappedTextLinkActivateCallback = this._wrapLinkHandler((_, link) => this._handleLocalLink(link));
33
+ const validatedProvider = new validated_local_link_provider_1.TerminalValidatedLocalLinkProvider(this._xterm, this._client, wrappedTextLinkActivateCallback, this._wrapLinkHandler.bind(this), async (link, cb) => cb(await this._resolvePath(link)));
34
+ this._standardLinkProviders.push(validatedProvider);
35
+ this._registerStandardLinkProviders();
36
+ }
37
+ set processCwd(processCwd) {
38
+ this._processCwd = processCwd;
39
+ }
40
+ _registerStandardLinkProviders() {
41
+ this._standardLinkProvidersDisposables.dispose();
42
+ this._standardLinkProvidersDisposables = new ide_core_common_1.DisposableCollection();
43
+ for (const p of this._standardLinkProviders) {
44
+ this._standardLinkProvidersDisposables.push(this._xterm.registerLinkProvider(p));
45
+ }
46
+ }
47
+ registerExternalLinkProvider(instance, linkProvider) {
48
+ const wrappedLinkProvider = new external_link_provider_adapter_1.TerminalExternalLinkProviderAdapter(this._xterm, instance, linkProvider, this._wrapLinkHandler.bind(this));
49
+ const newLinkProvider = this._xterm.registerLinkProvider(wrappedLinkProvider);
50
+ // Re-register the standard link providers so they are a lower priority that the new one
51
+ this._registerStandardLinkProviders();
52
+ return newLinkProvider;
53
+ }
54
+ _wrapLinkHandler(handler) {
55
+ return async (event, link) => {
56
+ // Prevent default electron link handling so Alt+Click mode works normally
57
+ event === null || event === void 0 ? void 0 : event.preventDefault();
58
+ // Require correct modifier on click
59
+ if (event && !this._isLinkActivationModifierDown(event)) {
60
+ return;
61
+ }
62
+ // Just call the handler if there is no before listener
63
+ handler(event, link);
64
+ };
65
+ }
66
+ get _localLinkRegex() {
67
+ const baseLocalLinkClause = this._client.os === platform_1.OperatingSystem.Windows ? validated_local_link_provider_1.winLocalLinkClause : validated_local_link_provider_1.unixLocalLinkClause;
68
+ // Append line and column number regex
69
+ return new RegExp(`${baseLocalLinkClause}(${validated_local_link_provider_1.lineAndColumnClause})`);
70
+ }
71
+ async _handleLocalLink(link) {
72
+ // TODO: This gets resolved again but doesn't need to as it's already validated
73
+ const resolvedLink = await this._resolvePath(link);
74
+ if (!resolvedLink) {
75
+ return;
76
+ }
77
+ const lineColumnInfo = this.extractLineColumnInfo(link);
78
+ const range = {
79
+ startLineNumber: lineColumnInfo.lineNumber,
80
+ endLineNumber: lineColumnInfo.lineNumber,
81
+ startColumn: lineColumnInfo.columnNumber,
82
+ endColumn: lineColumnInfo.columnNumber,
83
+ };
84
+ await this._editorService.open(resolvedLink.uri, { range });
85
+ }
86
+ _handleHypertextLink(url) {
87
+ this._openerService.open(url);
88
+ }
89
+ async _handleProtocolLink(link) {
90
+ // Check if it's a file:/// link, hand off to local link handler so to open an editor and
91
+ // respect line/col attachment
92
+ const uri = ide_core_common_1.URI.parse(link);
93
+ if (uri.scheme === 'file') {
94
+ // Just using fsPath here is unsafe: https://github.com/microsoft/vscode/issues/109076
95
+ // fsPath 是基于当前环境判断 sep 的,连接远程服务时,如果当前系统为 Windows,
96
+ // 而 uri 来自远程 Linux,则会出现生成的链接 sep 不正确,导致打开文件失败。
97
+ const fsPath = ide_core_common_1.FileUri.fsPath(uri);
98
+ this._handleLocalLink(((this._client.os !== platform_1.OperatingSystem.Windows) && platform_1.isWindows) ? fsPath.replace(/\\/g, path_1.posix.sep) : fsPath);
99
+ return;
100
+ }
101
+ // Open as a web link if it's not a file
102
+ this._handleHypertextLink(link);
103
+ }
104
+ _isLinkActivationModifierDown(event) {
105
+ return ide_core_common_1.isOSX ? event.metaKey : event.ctrlKey;
106
+ }
107
+ get osPath() {
108
+ if (this._client.os === platform_1.OperatingSystem.Windows) {
109
+ return path_1.win32;
110
+ }
111
+ return path_1.posix;
112
+ }
113
+ /**
114
+ * 获取用户目录
115
+ */
116
+ async _getUserHomeDir() {
117
+ const homeDirStat = await this._fileSystem.getCurrentUserHome();
118
+ if (!homeDirStat) {
119
+ throw new Error('Unable to get user home directory');
120
+ }
121
+ const homeDirPath = await this._fileSystem.getFsPath(homeDirStat.uri);
122
+ return homeDirPath;
123
+ }
124
+ _getUserHomeDirOnce() {
125
+ if (!this._getHomeDirPromise) {
126
+ this._getHomeDirPromise = this._getUserHomeDir();
127
+ }
128
+ return this._getHomeDirPromise;
129
+ }
130
+ async _preprocessPath(link) {
131
+ if (link.charAt(0) === '~') {
132
+ // Resolve ~ -> userHome
133
+ const userHome = await this._getUserHomeDirOnce();
134
+ if (!userHome) {
135
+ return null;
136
+ }
137
+ link = this.osPath.join(userHome, link.substring(1));
138
+ }
139
+ else if (link.charAt(0) !== '/' && link.charAt(0) !== '~') {
140
+ // Resolve workspace path . | .. | <relative_path> -> <path>/. | <path>/.. | <path>/<relative_path>
141
+ if (this._client.os === platform_1.OperatingSystem.Windows) {
142
+ if (!link.match('^' + validated_local_link_provider_1.winDrivePrefix) && !link.startsWith('\\\\?\\')) {
143
+ if (!this._processCwd) {
144
+ // Abort if no workspace is open
145
+ return null;
146
+ }
147
+ link = this.osPath.join(this._processCwd, link);
148
+ }
149
+ else {
150
+ // Remove \\?\ from paths so that they share the same underlying
151
+ // uri and don't open multiple tabs for the same file
152
+ link = link.replace(/^\\\\\?\\/, '');
153
+ }
154
+ }
155
+ else {
156
+ if (!this._processCwd) {
157
+ // Abort if no workspace is open
158
+ return null;
159
+ }
160
+ link = this.osPath.join(this._processCwd, link);
161
+ }
162
+ }
163
+ link = this.osPath.normalize(link);
164
+ return link;
165
+ }
166
+ async _resolvePath(link) {
167
+ const preprocessedLink = await this._preprocessPath(link);
168
+ if (!preprocessedLink) {
169
+ return undefined;
170
+ }
171
+ const linkUrl = this.extractLinkUrl(preprocessedLink);
172
+ if (!linkUrl) {
173
+ return undefined;
174
+ }
175
+ try {
176
+ const uri = ide_core_common_1.URI.file(linkUrl);
177
+ const stat = await this._fileService.getFileStat(uri.toString());
178
+ if (stat) {
179
+ return { uri, isDirectory: stat.isDirectory };
180
+ }
181
+ }
182
+ catch (_a) {
183
+ // Errors in parsing the path
184
+ return undefined;
185
+ }
186
+ }
187
+ /**
188
+ * Returns line and column number of URl if that is present.
189
+ *
190
+ * @param link Url link which may contain line and column number.
191
+ */
192
+ extractLineColumnInfo(link) {
193
+ const matches = this._localLinkRegex.exec(link);
194
+ const lineColumnInfo = {
195
+ lineNumber: 1,
196
+ columnNumber: 1,
197
+ };
198
+ if (!matches) {
199
+ return lineColumnInfo;
200
+ }
201
+ const lineAndColumnMatchIndex = this._client.os === platform_1.OperatingSystem.Windows ? validated_local_link_provider_1.winLineAndColumnMatchIndex : validated_local_link_provider_1.unixLineAndColumnMatchIndex;
202
+ for (let i = 0; i < validated_local_link_provider_1.lineAndColumnClause.length; i++) {
203
+ const lineMatchIndex = lineAndColumnMatchIndex + (validated_local_link_provider_1.lineAndColumnClauseGroupCount * i);
204
+ const rowNumber = matches[lineMatchIndex];
205
+ if (rowNumber) {
206
+ lineColumnInfo['lineNumber'] = parseInt(rowNumber, 10);
207
+ // Check if column number exists
208
+ const columnNumber = matches[lineMatchIndex + 2];
209
+ if (columnNumber) {
210
+ lineColumnInfo['columnNumber'] = parseInt(columnNumber, 10);
211
+ }
212
+ break;
213
+ }
214
+ }
215
+ return lineColumnInfo;
216
+ }
217
+ /**
218
+ * Returns url from link as link may contain line and column information.
219
+ *
220
+ * @param link url link which may contain line and column number.
221
+ */
222
+ extractLinkUrl(link) {
223
+ const matches = this._localLinkRegex.exec(link);
224
+ if (!matches) {
225
+ return null;
226
+ }
227
+ return matches[1];
228
+ }
229
+ };
230
+ (0, tslib_1.__decorate)([
231
+ (0, di_1.Autowired)(),
232
+ (0, tslib_1.__metadata)("design:type", common_1.WorkbenchEditorService)
233
+ ], TerminalLinkManager.prototype, "_editorService", void 0);
234
+ (0, tslib_1.__decorate)([
235
+ (0, di_1.Autowired)(ide_core_browser_1.IOpenerService),
236
+ (0, tslib_1.__metadata)("design:type", Object)
237
+ ], TerminalLinkManager.prototype, "_openerService", void 0);
238
+ (0, tslib_1.__decorate)([
239
+ (0, di_1.Autowired)(ide_file_service_1.IFileServiceClient),
240
+ (0, tslib_1.__metadata)("design:type", Object)
241
+ ], TerminalLinkManager.prototype, "_fileService", void 0);
242
+ (0, tslib_1.__decorate)([
243
+ (0, di_1.Autowired)(ide_file_service_1.IFileServiceClient),
244
+ (0, tslib_1.__metadata)("design:type", Object)
245
+ ], TerminalLinkManager.prototype, "_fileSystem", void 0);
246
+ TerminalLinkManager = (0, tslib_1.__decorate)([
247
+ (0, di_1.Injectable)({ multiple: true }),
248
+ (0, tslib_1.__metadata)("design:paramtypes", [xterm_1.Terminal,
249
+ terminal_client_1.TerminalClient])
250
+ ], TerminalLinkManager);
251
+ exports.TerminalLinkManager = TerminalLinkManager;
252
+ //# sourceMappingURL=link-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link-manager.js","sourceRoot":"","sources":["../../../src/browser/links/link-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { IBufferRange, ILink, ILinkDecorations, Terminal } from 'xterm';
2
+ import { Disposable, Event } from '@opensumi/ide-core-common';
3
+ export declare class TerminalLink extends Disposable implements ILink {
4
+ private readonly _xterm;
5
+ readonly range: IBufferRange;
6
+ readonly text: string;
7
+ private readonly _viewportY;
8
+ private readonly _activateCallback;
9
+ private readonly _isHighConfidenceLink;
10
+ decorations: ILinkDecorations;
11
+ private _hoverListeners;
12
+ private readonly _onInvalidated;
13
+ get onInvalidated(): Event<void>;
14
+ constructor(_xterm: Terminal, range: IBufferRange, text: string, _viewportY: number, _activateCallback: (event: MouseEvent | undefined, uri: string) => void, _isHighConfidenceLink: boolean);
15
+ dispose(): void;
16
+ activate(event: MouseEvent | undefined, text: string): void;
17
+ private _addDisposableListener;
18
+ hover(event: MouseEvent, text: string): void;
19
+ leave(): void;
20
+ private _enableDecorations;
21
+ private _disableDecorations;
22
+ private _isModifierDown;
23
+ }
24
+ //# sourceMappingURL=link.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../../src/browser/links/link.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAiC,KAAK,EAAS,MAAM,2BAA2B,CAAC;AAEpG,qBAAa,YAAa,SAAQ,UAAW,YAAW,KAAK;IASzD,OAAO,CAAC,QAAQ,CAAC,MAAM;aACP,KAAK,EAAE,YAAY;aACnB,IAAI,EAAE,MAAM;IAC5B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IAbxC,WAAW,EAAE,gBAAgB,CAAC;IAE9B,OAAO,CAAC,eAAe,CAAmC;IAE1D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAuB;IACtD,IAAW,aAAa,IAAI,KAAK,CAAC,IAAI,CAAC,CAAsC;gBAG1D,MAAM,EAAE,QAAQ,EACjB,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,EAClB,iBAAiB,EAAE,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,EACvE,qBAAqB,EAAE,OAAO;IASjD,OAAO,IAAI,IAAI;IAMf,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAI3D,OAAO,CAAC,sBAAsB;IAO9B,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAgC5C,KAAK,IAAI,IAAI;IAKb,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,eAAe;CAGxB"}
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TerminalLink = void 0;
4
+ const ide_core_common_1 = require("@opensumi/ide-core-common");
5
+ class TerminalLink extends ide_core_common_1.Disposable {
6
+ constructor(_xterm, range, text, _viewportY, _activateCallback, _isHighConfidenceLink) {
7
+ super();
8
+ this._xterm = _xterm;
9
+ this.range = range;
10
+ this.text = text;
11
+ this._viewportY = _viewportY;
12
+ this._activateCallback = _activateCallback;
13
+ this._isHighConfidenceLink = _isHighConfidenceLink;
14
+ this._onInvalidated = new ide_core_common_1.Emitter();
15
+ this.decorations = {
16
+ pointerCursor: false,
17
+ underline: this._isHighConfidenceLink,
18
+ };
19
+ }
20
+ get onInvalidated() { return this._onInvalidated.event; }
21
+ dispose() {
22
+ var _a;
23
+ super.dispose();
24
+ (_a = this._hoverListeners) === null || _a === void 0 ? void 0 : _a.dispose();
25
+ this._hoverListeners = undefined;
26
+ }
27
+ activate(event, text) {
28
+ this._activateCallback(event, text);
29
+ }
30
+ _addDisposableListener(node, type, handler) {
31
+ node.addEventListener(type, handler);
32
+ return ide_core_common_1.Disposable.create(() => {
33
+ node.removeEventListener(type, handler);
34
+ });
35
+ }
36
+ hover(event, text) {
37
+ // Listen for modifier before handing it off to the hover to handle so it gets disposed correctly
38
+ this._hoverListeners = new ide_core_common_1.DisposableCollection();
39
+ this._hoverListeners.push(this._addDisposableListener(document, 'keydown', (e) => {
40
+ if (!e.repeat && this._isModifierDown(e)) {
41
+ this._enableDecorations();
42
+ }
43
+ }));
44
+ this._hoverListeners.push(this._addDisposableListener(document, 'keyup', (e) => {
45
+ if (!e.repeat && !this._isModifierDown(e)) {
46
+ this._disableDecorations();
47
+ }
48
+ }));
49
+ // Listen for when the terminal renders on the same line as the link
50
+ this._hoverListeners.push(this._xterm.onRender((e) => {
51
+ const viewportRangeY = this.range.start.y - this._viewportY;
52
+ if (viewportRangeY >= e.start && viewportRangeY <= e.end) {
53
+ this._onInvalidated.fire();
54
+ }
55
+ }));
56
+ this._hoverListeners.push(this._addDisposableListener(document, 'mousemove', (e) => {
57
+ // Update decorations
58
+ if (this._isModifierDown(e)) {
59
+ this._enableDecorations();
60
+ }
61
+ else {
62
+ this._disableDecorations();
63
+ }
64
+ }));
65
+ }
66
+ leave() {
67
+ var _a;
68
+ (_a = this._hoverListeners) === null || _a === void 0 ? void 0 : _a.dispose();
69
+ this._hoverListeners = undefined;
70
+ }
71
+ _enableDecorations() {
72
+ if (!this.decorations.pointerCursor) {
73
+ this.decorations.pointerCursor = true;
74
+ }
75
+ if (!this.decorations.underline) {
76
+ this.decorations.underline = true;
77
+ }
78
+ }
79
+ _disableDecorations() {
80
+ if (this.decorations.pointerCursor) {
81
+ this.decorations.pointerCursor = false;
82
+ }
83
+ if (this.decorations.underline !== this._isHighConfidenceLink) {
84
+ this.decorations.underline = this._isHighConfidenceLink;
85
+ }
86
+ }
87
+ _isModifierDown(event) {
88
+ return ide_core_common_1.isOSX ? event.metaKey : event.ctrlKey;
89
+ }
90
+ }
91
+ exports.TerminalLink = TerminalLink;
92
+ //# sourceMappingURL=link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.js","sourceRoot":"","sources":["../../../src/browser/links/link.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { Terminal } from 'xterm';
2
+ import { TerminalLink } from './link';
3
+ import { TerminalBaseLinkProvider } from './base';
4
+ export declare class TerminalProtocolLinkProvider extends TerminalBaseLinkProvider {
5
+ private readonly _xterm;
6
+ private readonly _activateCallback;
7
+ private _linkComputerTarget;
8
+ constructor(_xterm: Terminal, _activateCallback: (event: MouseEvent | undefined, uri: string) => void);
9
+ protected _provideLinks(y: number): TerminalLink[];
10
+ }
11
+ //# sourceMappingURL=protocol-link-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol-link-provider.d.ts","sourceRoot":"","sources":["../../../src/browser/links/protocol-link-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAe,MAAM,OAAO,CAAC;AAGnD,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,wBAAwB,EAAE,MAAM,QAAQ,CAAC;AAElD,qBAAa,4BAA6B,SAAQ,wBAAwB;IAItE,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAJpC,OAAO,CAAC,mBAAmB,CAAkC;gBAG1C,MAAM,EAAE,QAAQ,EAChB,iBAAiB,EAAE,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI;IAK1F,SAAS,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE;CA4BnD"}