@opensumi/ide-terminal-next 3.7.2-next-1740052080.0 → 3.7.2-next-1740054042.0

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 (244) hide show
  1. package/LICENSE +21 -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 +46 -0
  5. package/lib/browser/component/resize.delegate.js.map +1 -0
  6. package/lib/browser/component/resize.module.less +77 -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 +55 -0
  10. package/lib/browser/component/resize.view.js.map +1 -0
  11. package/lib/browser/component/search.module.less +61 -0
  12. package/lib/browser/component/search.view.d.ts +3 -0
  13. package/lib/browser/component/search.view.d.ts.map +1 -0
  14. package/lib/browser/component/search.view.js +89 -0
  15. package/lib/browser/component/search.view.js.map +1 -0
  16. package/lib/browser/component/tab.item.d.ts +7 -0
  17. package/lib/browser/component/tab.item.d.ts.map +1 -0
  18. package/lib/browser/component/tab.item.js +121 -0
  19. package/lib/browser/component/tab.item.js.map +1 -0
  20. package/lib/browser/component/tab.module.less +174 -0
  21. package/lib/browser/component/tab.view.d.ts +4 -0
  22. package/lib/browser/component/tab.view.d.ts.map +1 -0
  23. package/lib/browser/component/tab.view.js +65 -0
  24. package/lib/browser/component/tab.view.js.map +1 -0
  25. package/lib/browser/component/terminal.module.less +50 -0
  26. package/lib/browser/component/terminal.variable.d.ts +8 -0
  27. package/lib/browser/component/terminal.variable.d.ts.map +1 -0
  28. package/lib/browser/component/terminal.variable.js +44 -0
  29. package/lib/browser/component/terminal.variable.js.map +1 -0
  30. package/lib/browser/component/terminal.view.d.ts +5 -0
  31. package/lib/browser/component/terminal.view.d.ts.map +1 -0
  32. package/lib/browser/component/terminal.view.js +63 -0
  33. package/lib/browser/component/terminal.view.js.map +1 -0
  34. package/lib/browser/component/terminal.widget.d.ts +10 -0
  35. package/lib/browser/component/terminal.widget.d.ts.map +1 -0
  36. package/lib/browser/component/terminal.widget.js +65 -0
  37. package/lib/browser/component/terminal.widget.js.map +1 -0
  38. package/lib/browser/component/variable.module.less +15 -0
  39. package/lib/browser/contribution/index.d.ts.map +1 -0
  40. package/lib/browser/contribution/index.js +11 -0
  41. package/lib/browser/contribution/index.js.map +1 -0
  42. package/lib/browser/contribution/terminal.command.js +328 -0
  43. package/lib/browser/contribution/terminal.keybinding.js +87 -0
  44. package/lib/browser/contribution/terminal.lifecycle.js +52 -0
  45. package/lib/browser/contribution/terminal.menu.js +168 -0
  46. package/lib/browser/contribution/terminal.network.js +44 -0
  47. package/lib/browser/contribution/terminal.preference.js +43 -0
  48. package/lib/browser/contribution/terminal.view.js +57 -0
  49. package/lib/browser/index.js +124 -0
  50. package/lib/browser/links/base.d.ts +8 -0
  51. package/lib/browser/links/base.d.ts.map +1 -0
  52. package/lib/browser/links/base.js +13 -0
  53. package/lib/browser/links/base.js.map +1 -0
  54. package/lib/browser/links/external-link-provider-adapter.d.ts +21 -0
  55. package/lib/browser/links/external-link-provider-adapter.d.ts.map +1 -0
  56. package/lib/browser/links/external-link-provider-adapter.js +74 -0
  57. package/lib/browser/links/external-link-provider-adapter.js.map +1 -0
  58. package/lib/browser/links/helpers.d.ts +7 -0
  59. package/lib/browser/links/helpers.d.ts.map +1 -0
  60. package/lib/browser/links/helpers.js +128 -0
  61. package/lib/browser/links/helpers.js.map +1 -0
  62. package/lib/browser/links/link-manager.d.ts +92 -0
  63. package/lib/browser/links/link-manager.d.ts.map +1 -0
  64. package/lib/browser/links/link-manager.js +342 -0
  65. package/lib/browser/links/link-manager.js.map +1 -0
  66. package/lib/browser/links/link.d.ts +31 -0
  67. package/lib/browser/links/link.d.ts.map +1 -0
  68. package/lib/browser/links/link.js +136 -0
  69. package/lib/browser/links/link.js.map +1 -0
  70. package/lib/browser/links/protocol-link-provider.d.ts +14 -0
  71. package/lib/browser/links/protocol-link-provider.d.ts.map +1 -0
  72. package/lib/browser/links/protocol-link-provider.js +71 -0
  73. package/lib/browser/links/protocol-link-provider.js.map +1 -0
  74. package/lib/browser/links/validated-local-link-provider.d.ts +41 -0
  75. package/lib/browser/links/validated-local-link-provider.d.ts.map +1 -0
  76. package/lib/browser/links/validated-local-link-provider.js +235 -0
  77. package/lib/browser/links/validated-local-link-provider.js.map +1 -0
  78. package/lib/browser/links/word-link-provider.d.ts +29 -0
  79. package/lib/browser/links/word-link-provider.d.ts.map +1 -0
  80. package/lib/browser/links/word-link-provider.js +153 -0
  81. package/lib/browser/links/word-link-provider.js.map +1 -0
  82. package/lib/browser/terminal.addon.js +83 -0
  83. package/lib/browser/terminal.api.js +162 -0
  84. package/lib/browser/terminal.client.js +680 -0
  85. package/lib/browser/terminal.color.js +240 -0
  86. package/lib/browser/terminal.context-key.js +29 -0
  87. package/lib/browser/terminal.context-menu.js +96 -0
  88. package/lib/browser/terminal.controller.js +669 -0
  89. package/lib/browser/terminal.environment.service.js +153 -0
  90. package/lib/browser/terminal.error.js +61 -0
  91. package/lib/browser/terminal.ext.host.proxy.js +108 -0
  92. package/lib/browser/terminal.hover.manager.js +85 -0
  93. package/lib/browser/terminal.input.js +32 -0
  94. package/lib/browser/terminal.internal.service.js +107 -0
  95. package/lib/browser/terminal.network.js +150 -0
  96. package/lib/browser/terminal.preference.js +136 -0
  97. package/lib/browser/terminal.profile.internal.js +104 -0
  98. package/lib/browser/terminal.profile.js +211 -0
  99. package/lib/browser/terminal.render.js +25 -0
  100. package/lib/browser/terminal.restore.js +49 -0
  101. package/lib/browser/terminal.search.js +109 -0
  102. package/lib/browser/terminal.service.js +163 -0
  103. package/lib/common/api.d.ts +22 -0
  104. package/lib/common/api.d.ts.map +1 -0
  105. package/lib/common/api.js +5 -0
  106. package/lib/common/api.js.map +1 -0
  107. package/lib/common/client.d.ts +199 -0
  108. package/lib/common/client.d.ts.map +1 -0
  109. package/lib/common/client.js +6 -0
  110. package/lib/common/client.js.map +1 -0
  111. package/lib/common/controller.d.ts +149 -0
  112. package/lib/common/controller.d.ts.map +1 -0
  113. package/lib/common/controller.js +8 -0
  114. package/lib/common/controller.js.map +1 -0
  115. package/lib/common/environmentVariable.d.ts +116 -0
  116. package/lib/common/environmentVariable.d.ts.map +1 -0
  117. package/lib/common/environmentVariable.js +30 -0
  118. package/lib/common/environmentVariable.js.map +1 -0
  119. package/lib/common/environmentVariableCollection.d.ts +9 -0
  120. package/lib/common/environmentVariableCollection.d.ts.map +1 -0
  121. package/lib/common/environmentVariableCollection.js +140 -0
  122. package/lib/common/environmentVariableCollection.js.map +1 -0
  123. package/lib/common/error.d.ts +41 -0
  124. package/lib/common/error.d.ts.map +1 -0
  125. package/lib/common/error.js +13 -0
  126. package/lib/common/error.js.map +1 -0
  127. package/lib/common/extension.d.ts +139 -0
  128. package/lib/common/extension.d.ts.map +1 -0
  129. package/lib/common/extension.js +57 -0
  130. package/lib/common/extension.js.map +1 -0
  131. package/lib/common/index.d.ts +17 -0
  132. package/lib/common/index.d.ts.map +1 -0
  133. package/lib/common/index.js +20 -0
  134. package/lib/common/index.js.map +1 -0
  135. package/lib/common/link-computer.d.ts +56 -0
  136. package/lib/common/link-computer.d.ts.map +1 -0
  137. package/lib/common/link-computer.js +282 -0
  138. package/lib/common/link-computer.js.map +1 -0
  139. package/lib/common/network.d.ts +48 -0
  140. package/lib/common/network.d.ts.map +1 -0
  141. package/lib/common/network.js +10 -0
  142. package/lib/common/network.js.map +1 -0
  143. package/lib/common/preference.d.ts +134 -0
  144. package/lib/common/preference.d.ts.map +1 -0
  145. package/lib/common/preference.js +199 -0
  146. package/lib/common/preference.js.map +1 -0
  147. package/lib/common/process.d.ts +8 -0
  148. package/lib/common/process.d.ts.map +1 -0
  149. package/lib/common/process.js +3 -0
  150. package/lib/common/process.js.map +1 -0
  151. package/lib/common/profile.d.ts +99 -0
  152. package/lib/common/profile.d.ts.map +1 -0
  153. package/lib/common/profile.js +27 -0
  154. package/lib/common/profile.js.map +1 -0
  155. package/lib/common/pty.d.ts +525 -0
  156. package/lib/common/pty.d.ts.map +1 -0
  157. package/lib/common/pty.js +28 -0
  158. package/lib/common/pty.js.map +1 -0
  159. package/lib/common/render.d.ts +29 -0
  160. package/lib/common/render.d.ts.map +1 -0
  161. package/lib/common/render.js +10 -0
  162. package/lib/common/render.js.map +1 -0
  163. package/lib/common/resize.d.ts +43 -0
  164. package/lib/common/resize.d.ts.map +1 -0
  165. package/lib/common/resize.js +3 -0
  166. package/lib/common/resize.js.map +1 -0
  167. package/lib/common/restore.d.ts +6 -0
  168. package/lib/common/restore.d.ts.map +1 -0
  169. package/lib/common/restore.js +5 -0
  170. package/lib/common/restore.js.map +1 -0
  171. package/lib/common/service.d.ts +96 -0
  172. package/lib/common/service.d.ts.map +1 -0
  173. package/lib/common/service.js +6 -0
  174. package/lib/common/service.js.map +1 -0
  175. package/lib/common/shell.d.ts +11 -0
  176. package/lib/common/shell.d.ts.map +1 -0
  177. package/lib/common/shell.js +14 -0
  178. package/lib/common/shell.js.map +1 -0
  179. package/lib/common/theme.d.ts +6 -0
  180. package/lib/common/theme.d.ts.map +1 -0
  181. package/lib/common/theme.js +5 -0
  182. package/lib/common/theme.js.map +1 -0
  183. package/lib/common/utils.d.ts +4 -0
  184. package/lib/common/utils.d.ts.map +1 -0
  185. package/lib/common/utils.js +15 -0
  186. package/lib/common/utils.js.map +1 -0
  187. package/lib/common/xterm.d.ts +27 -0
  188. package/lib/common/xterm.d.ts.map +1 -0
  189. package/lib/common/xterm.js +10 -0
  190. package/lib/common/xterm.js.map +1 -0
  191. package/lib/index.js +5 -0
  192. package/lib/node/data-store.d.ts +13 -0
  193. package/lib/node/data-store.d.ts.map +1 -0
  194. package/lib/node/data-store.js +6 -0
  195. package/lib/node/data-store.js.map +1 -0
  196. package/lib/node/index.d.ts +10 -0
  197. package/lib/node/index.d.ts.map +1 -0
  198. package/lib/node/index.js +64 -0
  199. package/lib/node/index.js.map +1 -0
  200. package/lib/node/pty.d.ts +42 -0
  201. package/lib/node/pty.d.ts.map +1 -0
  202. package/lib/node/pty.js +277 -0
  203. package/lib/node/pty.js.map +1 -0
  204. package/lib/node/pty.manager.d.ts +52 -0
  205. package/lib/node/pty.manager.d.ts.map +1 -0
  206. package/lib/node/pty.manager.js +157 -0
  207. package/lib/node/pty.manager.js.map +1 -0
  208. package/lib/node/pty.manager.remote.d.ts +23 -0
  209. package/lib/node/pty.manager.remote.d.ts.map +1 -0
  210. package/lib/node/pty.manager.remote.js +124 -0
  211. package/lib/node/pty.manager.remote.js.map +1 -0
  212. package/lib/node/pty.proxy.d.ts +45 -0
  213. package/lib/node/pty.proxy.d.ts.map +1 -0
  214. package/lib/node/pty.proxy.js +277 -0
  215. package/lib/node/pty.proxy.js.map +1 -0
  216. package/lib/node/pty.proxy.remote.exec.d.ts +2 -0
  217. package/lib/node/pty.proxy.remote.exec.d.ts.map +1 -0
  218. package/lib/node/pty.proxy.remote.exec.js +7 -0
  219. package/lib/node/pty.proxy.remote.exec.js.map +1 -0
  220. package/lib/node/shell-integration.service.d.ts +24 -0
  221. package/lib/node/shell-integration.service.d.ts.map +1 -0
  222. package/lib/node/shell-integration.service.js +187 -0
  223. package/lib/node/shell-integration.service.js.map +1 -0
  224. package/lib/node/shell.d.ts +20 -0
  225. package/lib/node/shell.d.ts.map +1 -0
  226. package/lib/node/shell.js +199 -0
  227. package/lib/node/shell.js.map +1 -0
  228. package/lib/node/terminal.process.service.d.ts +5 -0
  229. package/lib/node/terminal.process.service.d.ts.map +1 -0
  230. package/lib/node/terminal.process.service.js +15 -0
  231. package/lib/node/terminal.process.service.js.map +1 -0
  232. package/lib/node/terminal.profile.service.d.ts +19 -0
  233. package/lib/node/terminal.profile.service.d.ts.map +1 -0
  234. package/lib/node/terminal.profile.service.js +228 -0
  235. package/lib/node/terminal.profile.service.js.map +1 -0
  236. package/lib/node/terminal.service.client.d.ts +51 -0
  237. package/lib/node/terminal.service.client.d.ts.map +1 -0
  238. package/lib/node/terminal.service.client.js +159 -0
  239. package/lib/node/terminal.service.client.js.map +1 -0
  240. package/lib/node/terminal.service.d.ts +30 -0
  241. package/lib/node/terminal.service.d.ts.map +1 -0
  242. package/lib/node/terminal.service.js +246 -0
  243. package/lib/node/terminal.service.js.map +1 -0
  244. package/package.json +18 -18
@@ -0,0 +1,342 @@
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/xterm");
6
+ const di_1 = require("@opensumi/di");
7
+ const ide_core_browser_1 = require("@opensumi/ide-core-browser");
8
+ const ide_core_common_1 = require("@opensumi/ide-core-common");
9
+ const common_1 = require("@opensumi/ide-editor/lib/common");
10
+ const ide_file_service_1 = require("@opensumi/ide-file-service");
11
+ const common_2 = require("../../common");
12
+ const terminal_client_1 = require("../terminal.client");
13
+ const external_link_provider_adapter_1 = require("./external-link-provider-adapter");
14
+ const protocol_link_provider_1 = require("./protocol-link-provider");
15
+ const validated_local_link_provider_1 = require("./validated-local-link-provider");
16
+ const word_link_provider_1 = require("./word-link-provider");
17
+ const { posix, win32 } = ide_core_common_1.path;
18
+ /**
19
+ * An object responsible for managing registration of link matchers and link providers.
20
+ */
21
+ let TerminalLinkManager = class TerminalLinkManager extends ide_core_common_1.Disposable {
22
+ constructor(_xterm, _client) {
23
+ super();
24
+ this._xterm = _xterm;
25
+ this._client = _client;
26
+ this._standardLinkProviders = [];
27
+ this._standardLinkProvidersDisposables = new ide_core_common_1.DisposableCollection();
28
+ // Protocol links
29
+ const wrappedActivateCallback = this._wrapLinkHandler((_, link) => this._handleProtocolLink(link));
30
+ const protocolProvider = this.injector.get(protocol_link_provider_1.TerminalProtocolLinkProvider, [
31
+ this._xterm,
32
+ wrappedActivateCallback,
33
+ this._tooltipCallback.bind(this),
34
+ ]);
35
+ this._standardLinkProviders.push(protocolProvider);
36
+ // Validated local links
37
+ const wrappedTextLinkActivateCallback = this._wrapLinkHandler((_, link) => this._handleLocalLink(link));
38
+ const validatedProvider = this.injector.get(validated_local_link_provider_1.TerminalValidatedLocalLinkProvider, [
39
+ this._xterm,
40
+ this._client,
41
+ wrappedTextLinkActivateCallback,
42
+ this._wrapLinkHandler.bind(this),
43
+ this._tooltipCallback.bind(this),
44
+ async (link, cb) => cb(await this._resolvePath(link)),
45
+ ]);
46
+ this._standardLinkProviders.push(validatedProvider);
47
+ const wordLinkProvider = this.injector.get(word_link_provider_1.TerminalWordLinkProvider, [
48
+ this._xterm,
49
+ async (link, cb) => cb(await this._resolvePath(link)),
50
+ wrappedTextLinkActivateCallback,
51
+ ]);
52
+ this._standardLinkProviders.push(wordLinkProvider);
53
+ this._registerStandardLinkProviders();
54
+ }
55
+ set processCwd(processCwd) {
56
+ this._processCwd = processCwd;
57
+ }
58
+ // user may change the terminal cwd, so we need to get it from the service
59
+ async getTerminalCwd() {
60
+ const cwd = await this.terminalService.getCwd(this._client.id);
61
+ return cwd || this._processCwd;
62
+ }
63
+ _registerStandardLinkProviders() {
64
+ this._standardLinkProvidersDisposables.dispose();
65
+ this._standardLinkProvidersDisposables = new ide_core_common_1.DisposableCollection();
66
+ for (const p of this._standardLinkProviders) {
67
+ this._standardLinkProvidersDisposables.push(this._xterm.registerLinkProvider(p));
68
+ }
69
+ }
70
+ _tooltipCallback(link, viewportRange, modifierDownCallback, modifierUpCallback) {
71
+ const core = this._xterm._core;
72
+ const cellDimensions = {
73
+ width: core._renderService.dimensions.css.cell.width,
74
+ height: core._renderService.dimensions.css.cell.height,
75
+ };
76
+ const terminalDimensions = {
77
+ width: this._xterm.cols,
78
+ height: this._xterm.rows,
79
+ };
80
+ const boundingClientRect = core.element.getBoundingClientRect();
81
+ // Don't pass the mouse event as this avoids the modifier check
82
+ return this._showHover({
83
+ viewportRange,
84
+ cellDimensions,
85
+ terminalDimensions,
86
+ boundingClientRect,
87
+ modifierDownCallback,
88
+ modifierUpCallback,
89
+ }, this._getLinkHoverString(link.text, link.label), (text) => link.activate(undefined, text), link);
90
+ }
91
+ _showHover(targetOptions, text, linkHandler, link) {
92
+ const attached = this._hoverManager.showHover(targetOptions, text, linkHandler);
93
+ link === null || link === void 0 ? void 0 : link.onInvalidated(() => attached.dispose());
94
+ return ide_core_common_1.Disposable.create(() => attached.dispose());
95
+ }
96
+ registerExternalLinkProvider(instance, linkProvider) {
97
+ const wrappedLinkProvider = this.injector.get(external_link_provider_adapter_1.TerminalExternalLinkProviderAdapter, [
98
+ this._xterm,
99
+ instance,
100
+ linkProvider,
101
+ this._wrapLinkHandler.bind(this),
102
+ this._tooltipCallback.bind(this),
103
+ ]);
104
+ const newLinkProvider = this._xterm.registerLinkProvider(wrappedLinkProvider);
105
+ // Re-register the standard link providers so they are a lower priority that the new one
106
+ this._registerStandardLinkProviders();
107
+ return newLinkProvider;
108
+ }
109
+ _wrapLinkHandler(handler) {
110
+ return async (event, link) => {
111
+ // Prevent default electron link handling so Alt+Click mode works normally
112
+ event === null || event === void 0 ? void 0 : event.preventDefault();
113
+ // Require correct modifier on click
114
+ if (event && !this._isLinkActivationModifierDown(event)) {
115
+ return;
116
+ }
117
+ // Just call the handler if there is no before listener
118
+ handler(event, link);
119
+ };
120
+ }
121
+ get _localLinkRegex() {
122
+ const baseLocalLinkClause = this._client.os === ide_core_common_1.OperatingSystem.Windows ? validated_local_link_provider_1.winLocalLinkClause : validated_local_link_provider_1.unixLocalLinkClause;
123
+ // Append line and column number regex
124
+ return new RegExp(`${baseLocalLinkClause}(${validated_local_link_provider_1.lineAndColumnClause})`);
125
+ }
126
+ async _handleLocalLink(link) {
127
+ // TODO: This gets resolved again but doesn't need to as it's already validated
128
+ const resolvedLink = await this._resolvePath(link);
129
+ if (!resolvedLink) {
130
+ return;
131
+ }
132
+ const lineColumnInfo = this.extractLineColumnInfo(link);
133
+ const range = {
134
+ startLineNumber: lineColumnInfo.lineNumber,
135
+ endLineNumber: lineColumnInfo.lineNumber,
136
+ startColumn: lineColumnInfo.columnNumber,
137
+ endColumn: lineColumnInfo.columnNumber,
138
+ };
139
+ await this._editorService.open(resolvedLink.uri, { range });
140
+ }
141
+ _handleHypertextLink(url) {
142
+ this._openerService.open(url);
143
+ }
144
+ async _handleProtocolLink(link) {
145
+ // Check if it's a file:/// link, hand off to local link handler so to open an editor and
146
+ // respect line/col attachment
147
+ const uri = ide_core_common_1.URI.parse(link);
148
+ if (uri.scheme === ide_core_common_1.Schemes.file) {
149
+ // Just using fsPath here is unsafe: https://github.com/microsoft/vscode/issues/109076
150
+ // fsPath 是基于当前环境判断 sep 的,连接远程服务时,如果当前系统为 Windows,
151
+ // 而 uri 来自远程 Linux,则会出现生成的链接 sep 不正确,导致打开文件失败。
152
+ const fsPath = ide_core_common_1.FileUri.fsPath(uri);
153
+ this._handleLocalLink(this._client.os !== ide_core_common_1.OperatingSystem.Windows && ide_core_common_1.isWindows ? fsPath.replace(/\\/g, posix.sep) : fsPath);
154
+ return;
155
+ }
156
+ // Open as a web link if it's not a file
157
+ this._handleHypertextLink(link);
158
+ }
159
+ _isLinkActivationModifierDown(event) {
160
+ return ide_core_common_1.isOSX ? event.metaKey : event.ctrlKey;
161
+ }
162
+ get osPath() {
163
+ if (this._client.os === ide_core_common_1.OperatingSystem.Windows) {
164
+ return win32;
165
+ }
166
+ return posix;
167
+ }
168
+ _getLinkHoverString(uri, label) {
169
+ const multiCursorModifier = this.preferenceService.get('editor.multiCursorModifier');
170
+ let clickLabel = '';
171
+ if (multiCursorModifier === 'ctrlCmd') {
172
+ if (ide_core_common_1.isMacintosh) {
173
+ clickLabel = (0, ide_core_common_1.localize)('terminalLinkHandler.followLinkAlt.mac', 'option + click');
174
+ }
175
+ else {
176
+ clickLabel = (0, ide_core_common_1.localize)('terminalLinkHandler.followLinkAlt', 'alt + click');
177
+ }
178
+ }
179
+ else {
180
+ if (ide_core_common_1.isMacintosh) {
181
+ clickLabel = (0, ide_core_common_1.localize)('terminalLinkHandler.followLinkCmd', 'cmd + click');
182
+ }
183
+ else {
184
+ clickLabel = (0, ide_core_common_1.localize)('terminalLinkHandler.followLinkCtrl', 'ctrl + click');
185
+ }
186
+ }
187
+ const fallbackLabel = (0, ide_core_common_1.localize)('followLink', 'Follow link');
188
+ label = label || fallbackLabel;
189
+ return `${label} (${clickLabel})`;
190
+ }
191
+ /**
192
+ * 获取用户目录
193
+ */
194
+ async _getUserHomeDir() {
195
+ const homeDirStat = await this._fileSystem.getCurrentUserHome();
196
+ if (!homeDirStat) {
197
+ throw new Error('Unable to get user home directory');
198
+ }
199
+ const homeDirPath = await this._fileSystem.getFsPath(homeDirStat.uri);
200
+ return homeDirPath;
201
+ }
202
+ _getUserHomeDirOnce() {
203
+ if (!this._getHomeDirPromise) {
204
+ this._getHomeDirPromise = this._getUserHomeDir();
205
+ }
206
+ return this._getHomeDirPromise;
207
+ }
208
+ async _preprocessPath(link) {
209
+ if (link.charAt(0) === '~') {
210
+ // Resolve ~ -> userHome
211
+ const userHome = await this._getUserHomeDirOnce();
212
+ if (!userHome) {
213
+ return null;
214
+ }
215
+ link = this.osPath.join(userHome, link.substring(1));
216
+ }
217
+ else if (link.charAt(0) !== '/' && link.charAt(0) !== '~') {
218
+ const cwd = await this.getTerminalCwd();
219
+ // Resolve workspace path . | .. | <relative_path> -> <path>/. | <path>/.. | <path>/<relative_path>
220
+ if (this._client.os === ide_core_common_1.OperatingSystem.Windows) {
221
+ if (!link.match('^' + validated_local_link_provider_1.winDrivePrefix) && !link.startsWith('\\\\?\\')) {
222
+ if (!cwd) {
223
+ // Abort if no workspace is open
224
+ return null;
225
+ }
226
+ link = this.osPath.join(cwd, link);
227
+ }
228
+ else {
229
+ // Remove \\?\ from paths so that they share the same underlying
230
+ // uri and don't open multiple tabs for the same file
231
+ link = link.replace(/^\\\\\?\\/, '');
232
+ }
233
+ }
234
+ else {
235
+ if (!cwd) {
236
+ // Abort if no workspace is open
237
+ return null;
238
+ }
239
+ link = this.osPath.join(cwd, link);
240
+ }
241
+ }
242
+ link = this.osPath.normalize(link);
243
+ return link;
244
+ }
245
+ async _resolvePath(link) {
246
+ const preprocessedLink = await this._preprocessPath(link);
247
+ if (!preprocessedLink) {
248
+ return undefined;
249
+ }
250
+ try {
251
+ const uri = ide_core_common_1.URI.file(preprocessedLink);
252
+ const stat = await this._fileService.getFileStat(uri.toString());
253
+ if (stat) {
254
+ return { uri, isDirectory: stat.isDirectory };
255
+ }
256
+ }
257
+ catch (_e) {
258
+ // Errors in parsing the path
259
+ return undefined;
260
+ }
261
+ }
262
+ /**
263
+ * Returns line and column number of URl if that is present.
264
+ *
265
+ * @param link Url link which may contain line and column number.
266
+ */
267
+ extractLineColumnInfo(link) {
268
+ const matches = this._localLinkRegex.exec(link);
269
+ const lineColumnInfo = {
270
+ lineNumber: 1,
271
+ columnNumber: 1,
272
+ };
273
+ if (!matches) {
274
+ return lineColumnInfo;
275
+ }
276
+ const lineAndColumnMatchIndex = this._client.os === ide_core_common_1.OperatingSystem.Windows ? validated_local_link_provider_1.winLineAndColumnMatchIndex : validated_local_link_provider_1.unixLineAndColumnMatchIndex;
277
+ for (let i = 0; i < validated_local_link_provider_1.lineAndColumnClause.length; i++) {
278
+ const lineMatchIndex = lineAndColumnMatchIndex + validated_local_link_provider_1.lineAndColumnClauseGroupCount * i;
279
+ const rowNumber = matches[lineMatchIndex];
280
+ if (rowNumber) {
281
+ lineColumnInfo['lineNumber'] = parseInt(rowNumber, 10);
282
+ // Check if column number exists
283
+ const columnNumber = matches[lineMatchIndex + 2];
284
+ if (columnNumber) {
285
+ lineColumnInfo['columnNumber'] = parseInt(columnNumber, 10);
286
+ }
287
+ break;
288
+ }
289
+ }
290
+ return lineColumnInfo;
291
+ }
292
+ /**
293
+ * Returns url from link as link may contain line and column information.
294
+ *
295
+ * @param link url link which may contain line and column number.
296
+ */
297
+ extractLinkUrl(link) {
298
+ const matches = this._localLinkRegex.exec(link);
299
+ if (!matches) {
300
+ return null;
301
+ }
302
+ return matches[1];
303
+ }
304
+ };
305
+ exports.TerminalLinkManager = TerminalLinkManager;
306
+ tslib_1.__decorate([
307
+ (0, di_1.Autowired)(di_1.INJECTOR_TOKEN),
308
+ tslib_1.__metadata("design:type", di_1.Injector)
309
+ ], TerminalLinkManager.prototype, "injector", void 0);
310
+ tslib_1.__decorate([
311
+ (0, di_1.Autowired)(common_2.ITerminalService),
312
+ tslib_1.__metadata("design:type", Object)
313
+ ], TerminalLinkManager.prototype, "terminalService", void 0);
314
+ tslib_1.__decorate([
315
+ (0, di_1.Autowired)(),
316
+ tslib_1.__metadata("design:type", common_1.WorkbenchEditorService)
317
+ ], TerminalLinkManager.prototype, "_editorService", void 0);
318
+ tslib_1.__decorate([
319
+ (0, di_1.Autowired)(ide_core_browser_1.IOpenerService),
320
+ tslib_1.__metadata("design:type", Object)
321
+ ], TerminalLinkManager.prototype, "_openerService", void 0);
322
+ tslib_1.__decorate([
323
+ (0, di_1.Autowired)(ide_file_service_1.IFileServiceClient),
324
+ tslib_1.__metadata("design:type", Object)
325
+ ], TerminalLinkManager.prototype, "_fileService", void 0);
326
+ tslib_1.__decorate([
327
+ (0, di_1.Autowired)(ide_file_service_1.IFileServiceClient),
328
+ tslib_1.__metadata("design:type", Object)
329
+ ], TerminalLinkManager.prototype, "_fileSystem", void 0);
330
+ tslib_1.__decorate([
331
+ (0, di_1.Autowired)(ide_core_browser_1.PreferenceService),
332
+ tslib_1.__metadata("design:type", Object)
333
+ ], TerminalLinkManager.prototype, "preferenceService", void 0);
334
+ tslib_1.__decorate([
335
+ (0, di_1.Autowired)(common_2.ITerminalHoverManagerService),
336
+ tslib_1.__metadata("design:type", Object)
337
+ ], TerminalLinkManager.prototype, "_hoverManager", void 0);
338
+ exports.TerminalLinkManager = TerminalLinkManager = tslib_1.__decorate([
339
+ (0, di_1.Injectable)({ multiple: true }),
340
+ tslib_1.__metadata("design:paramtypes", [xterm_1.Terminal, terminal_client_1.TerminalClient])
341
+ ], TerminalLinkManager);
342
+ //# 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,31 @@
1
+ import { Disposable, Event, IDisposable } from '@opensumi/ide-core-common';
2
+ import type { IBufferRange, ILink, ILinkDecorations, IViewportRange, Terminal } from '@xterm/xterm';
3
+ export declare const OPEN_FILE_LABEL: string;
4
+ export declare const FOLDER_IN_WORKSPACE_LABEL: string;
5
+ export declare const FOLDER_NOT_IN_WORKSPACE_LABEL: string;
6
+ export declare class TerminalLink extends Disposable implements ILink {
7
+ private readonly _xterm;
8
+ readonly range: IBufferRange;
9
+ readonly text: string;
10
+ private readonly _viewportY;
11
+ private readonly _activateCallback;
12
+ private readonly _tooltipCallback;
13
+ private readonly _isHighConfidenceLink;
14
+ readonly label: string | undefined;
15
+ decorations: ILinkDecorations;
16
+ private readonly preferenceService;
17
+ private _tooltipScheduler;
18
+ private _hoverListeners;
19
+ private _tooltipDisposable;
20
+ private readonly _onInvalidated;
21
+ get onInvalidated(): Event<void>;
22
+ constructor(_xterm: Terminal, range: IBufferRange, text: string, _viewportY: number, _activateCallback: (event: MouseEvent | undefined, uri: string) => void, _tooltipCallback: (link: TerminalLink, viewportRange: IViewportRange, modifierDownCallback?: () => void, modifierUpCallback?: () => void) => IDisposable, _isHighConfidenceLink: boolean, label: string | undefined);
23
+ dispose(): void;
24
+ activate(event: MouseEvent | undefined, text: string): void;
25
+ hover(event: MouseEvent, text: string): void;
26
+ leave(): void;
27
+ private _enableDecorations;
28
+ private _disableDecorations;
29
+ private _isModifierDown;
30
+ }
31
+ //# sourceMappingURL=link.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../../src/browser/links/link.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,UAAU,EAGV,KAAK,EACL,WAAW,EAIZ,MAAM,2BAA2B,CAAC;AAInC,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAKpG,eAAO,MAAM,eAAe,QAAuD,CAAC;AACpF,eAAO,MAAM,yBAAyB,QAA+D,CAAC;AACtG,eAAO,MAAM,6BAA6B,QAA+D,CAAC;AAE1G,qBACa,YAAa,SAAQ,UAAW,YAAW,KAAK;IAgBzD,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,gBAAgB;IAMjC,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS;IA3BpC,WAAW,EAAE,gBAAgB,CAAC;IAG9B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;IAEtD,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,eAAe,CAAmC;IAC1D,OAAO,CAAC,kBAAkB,CAA0B;IAEpD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAuB;IACtD,IAAW,aAAa,IAAI,KAAK,CAAC,IAAI,CAAC,CAEtC;gBAGkB,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,gBAAgB,EAAE,CACjC,IAAI,EAAE,YAAY,EAClB,aAAa,EAAE,cAAc,EAC7B,oBAAoB,CAAC,EAAE,MAAM,IAAI,EACjC,kBAAkB,CAAC,EAAE,MAAM,IAAI,KAC5B,WAAW,EACC,qBAAqB,EAAE,OAAO,EACtC,KAAK,EAAE,MAAM,GAAG,SAAS;IASpC,OAAO,IAAI,IAAI;IAUf,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAI3D,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAoE5C,KAAK,IAAI,IAAI;IASb,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,eAAe;CAGxB"}
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TerminalLink = exports.FOLDER_NOT_IN_WORKSPACE_LABEL = exports.FOLDER_IN_WORKSPACE_LABEL = exports.OPEN_FILE_LABEL = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const di_1 = require("@opensumi/di");
6
+ const ide_core_browser_1 = require("@opensumi/ide-core-browser");
7
+ const ide_core_common_1 = require("@opensumi/ide-core-common");
8
+ const helpers_1 = require("./helpers");
9
+ // default delay time (ms) for showing tooltip when mouse is over a link
10
+ const DEFAULT_HOVER_DELAY = 500;
11
+ exports.OPEN_FILE_LABEL = (0, ide_core_common_1.localize)('terminal.openFile', 'Open file in editor');
12
+ exports.FOLDER_IN_WORKSPACE_LABEL = (0, ide_core_common_1.localize)('terminal.focusFolder', 'Focus folder in explorer');
13
+ exports.FOLDER_NOT_IN_WORKSPACE_LABEL = (0, ide_core_common_1.localize)('terminal.openFolder', 'Open folder in new window');
14
+ let TerminalLink = class TerminalLink extends ide_core_common_1.Disposable {
15
+ get onInvalidated() {
16
+ return this._onInvalidated.event;
17
+ }
18
+ constructor(_xterm, range, text, _viewportY, _activateCallback, _tooltipCallback, _isHighConfidenceLink, label) {
19
+ super();
20
+ this._xterm = _xterm;
21
+ this.range = range;
22
+ this.text = text;
23
+ this._viewportY = _viewportY;
24
+ this._activateCallback = _activateCallback;
25
+ this._tooltipCallback = _tooltipCallback;
26
+ this._isHighConfidenceLink = _isHighConfidenceLink;
27
+ this.label = label;
28
+ this._onInvalidated = new ide_core_common_1.Emitter();
29
+ this.decorations = {
30
+ pointerCursor: false,
31
+ underline: this._isHighConfidenceLink,
32
+ };
33
+ }
34
+ dispose() {
35
+ var _a, _b, _c;
36
+ super.dispose();
37
+ (_a = this._hoverListeners) === null || _a === void 0 ? void 0 : _a.dispose();
38
+ this._hoverListeners = undefined;
39
+ (_b = this._tooltipScheduler) === null || _b === void 0 ? void 0 : _b.dispose();
40
+ this._tooltipScheduler = undefined;
41
+ (_c = this._tooltipDisposable) === null || _c === void 0 ? void 0 : _c.dispose();
42
+ this._tooltipDisposable = undefined;
43
+ }
44
+ activate(event, text) {
45
+ this._activateCallback(event, text);
46
+ }
47
+ hover(event, text) {
48
+ // Listen for modifier before handing it off to the hover to handle so it gets disposed correctly
49
+ this._hoverListeners = new ide_core_common_1.DisposableCollection();
50
+ this._hoverListeners.push((0, ide_core_browser_1.addDisposableListener)(document, 'keydown', (e) => {
51
+ if (!e.repeat && this._isModifierDown(e)) {
52
+ this._enableDecorations();
53
+ }
54
+ }));
55
+ this._hoverListeners.push((0, ide_core_browser_1.addDisposableListener)(document, 'keyup', (e) => {
56
+ if (!e.repeat && !this._isModifierDown(e)) {
57
+ this._disableDecorations();
58
+ }
59
+ }));
60
+ // Listen for when the terminal renders on the same line as the link
61
+ this._hoverListeners.push(this._xterm.onRender((e) => {
62
+ const viewportRangeY = this.range.start.y - this._viewportY;
63
+ if (viewportRangeY >= e.start && viewportRangeY <= e.end) {
64
+ this._onInvalidated.fire();
65
+ }
66
+ }));
67
+ // Only show the tooltip and highlight for high confidence links (not word/search workspace
68
+ // links). Feedback was that this makes using the terminal overly noisy.
69
+ if (this._isHighConfidenceLink) {
70
+ this._tooltipScheduler = new ide_core_common_1.RunOnceScheduler(() => {
71
+ var _a;
72
+ this._tooltipDisposable = this._tooltipCallback(this, (0, helpers_1.convertBufferRangeToViewport)(this.range, this._viewportY), this._isHighConfidenceLink ? () => this._enableDecorations() : undefined, this._isHighConfidenceLink ? () => this._disableDecorations() : undefined);
73
+ // Clear out scheduler until next hover event
74
+ (_a = this._tooltipScheduler) === null || _a === void 0 ? void 0 : _a.dispose();
75
+ this._tooltipScheduler = undefined;
76
+ }, this.preferenceService.get('editor.hover.delay') || DEFAULT_HOVER_DELAY);
77
+ this._tooltipScheduler.schedule();
78
+ }
79
+ const origin = { x: event.pageX, y: event.pageY };
80
+ this._hoverListeners.push((0, ide_core_browser_1.addDisposableListener)(document, 'mousemove', (e) => {
81
+ var _a;
82
+ // Update decorations
83
+ if (this._isModifierDown(e)) {
84
+ this._enableDecorations();
85
+ }
86
+ else {
87
+ this._disableDecorations();
88
+ }
89
+ // Reset the scheduler if the mouse moves too much
90
+ if (Math.abs(e.pageX - origin.x) > window.devicePixelRatio * 2 ||
91
+ Math.abs(e.pageY - origin.y) > window.devicePixelRatio * 2) {
92
+ origin.x = e.pageX;
93
+ origin.y = e.pageY;
94
+ (_a = this._tooltipScheduler) === null || _a === void 0 ? void 0 : _a.schedule();
95
+ }
96
+ }));
97
+ }
98
+ leave() {
99
+ var _a, _b, _c;
100
+ (_a = this._hoverListeners) === null || _a === void 0 ? void 0 : _a.dispose();
101
+ this._hoverListeners = undefined;
102
+ (_b = this._tooltipScheduler) === null || _b === void 0 ? void 0 : _b.dispose();
103
+ this._tooltipScheduler = undefined;
104
+ (_c = this._tooltipDisposable) === null || _c === void 0 ? void 0 : _c.dispose();
105
+ this._tooltipDisposable = undefined;
106
+ }
107
+ _enableDecorations() {
108
+ if (!this.decorations.pointerCursor) {
109
+ this.decorations.pointerCursor = true;
110
+ }
111
+ if (!this.decorations.underline) {
112
+ this.decorations.underline = true;
113
+ }
114
+ }
115
+ _disableDecorations() {
116
+ if (this.decorations.pointerCursor) {
117
+ this.decorations.pointerCursor = false;
118
+ }
119
+ if (this.decorations.underline !== this._isHighConfidenceLink) {
120
+ this.decorations.underline = this._isHighConfidenceLink;
121
+ }
122
+ }
123
+ _isModifierDown(event) {
124
+ return ide_core_common_1.isOSX ? event.metaKey : event.ctrlKey;
125
+ }
126
+ };
127
+ exports.TerminalLink = TerminalLink;
128
+ tslib_1.__decorate([
129
+ (0, di_1.Autowired)(ide_core_browser_1.PreferenceService),
130
+ tslib_1.__metadata("design:type", Object)
131
+ ], TerminalLink.prototype, "preferenceService", void 0);
132
+ exports.TerminalLink = TerminalLink = tslib_1.__decorate([
133
+ (0, di_1.Injectable)({ multiple: true }),
134
+ tslib_1.__metadata("design:paramtypes", [Function, Object, String, Number, Function, Function, Boolean, Object])
135
+ ], TerminalLink);
136
+ //# 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,14 @@
1
+ import { IDisposable } from '@opensumi/ide-core-common';
2
+ import { TerminalBaseLinkProvider } from './base';
3
+ import { TerminalLink } from './link';
4
+ import type { IViewportRange, Terminal } from '@xterm/xterm';
5
+ export declare class TerminalProtocolLinkProvider extends TerminalBaseLinkProvider {
6
+ private readonly _xterm;
7
+ private readonly _activateCallback;
8
+ private readonly _tooltipCallback;
9
+ private _linkComputerTarget;
10
+ private readonly injector;
11
+ constructor(_xterm: Terminal, _activateCallback: (event: MouseEvent | undefined, uri: string) => void, _tooltipCallback: (link: TerminalLink, viewportRange: IViewportRange, modifierDownCallback?: () => void, modifierUpCallback?: () => void) => IDisposable);
12
+ protected _provideLinks(y: number): TerminalLink[];
13
+ }
14
+ //# 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":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAIxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,QAAQ,CAAC;AAElD,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EAAe,cAAc,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE1E,qBACa,4BAA6B,SAAQ,wBAAwB;IAOtE,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IARnC,OAAO,CAAC,mBAAmB,CAAkC;IAG7D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;gBAGjB,MAAM,EAAE,QAAQ,EAChB,iBAAiB,EAAE,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,EACvE,gBAAgB,EAAE,CACjC,IAAI,EAAE,YAAY,EAClB,aAAa,EAAE,cAAc,EAC7B,oBAAoB,CAAC,EAAE,MAAM,IAAI,EACjC,kBAAkB,CAAC,EAAE,MAAM,IAAI,KAC5B,WAAW;IAKlB,SAAS,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE;CAmCnD"}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TerminalProtocolLinkProvider = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const di_1 = require("@opensumi/di");
6
+ const common_1 = require("../../common");
7
+ const base_1 = require("./base");
8
+ const helpers_1 = require("./helpers");
9
+ const link_1 = require("./link");
10
+ let TerminalProtocolLinkProvider = class TerminalProtocolLinkProvider extends base_1.TerminalBaseLinkProvider {
11
+ constructor(_xterm, _activateCallback, _tooltipCallback) {
12
+ super();
13
+ this._xterm = _xterm;
14
+ this._activateCallback = _activateCallback;
15
+ this._tooltipCallback = _tooltipCallback;
16
+ }
17
+ _provideLinks(y) {
18
+ var _a, _b;
19
+ let startLine = y - 1;
20
+ let endLine = startLine;
21
+ const lines = [this._xterm.buffer.active.getLine(startLine)];
22
+ while (startLine >= 0 && ((_a = this._xterm.buffer.active.getLine(startLine)) === null || _a === void 0 ? void 0 : _a.isWrapped)) {
23
+ lines.unshift(this._xterm.buffer.active.getLine(startLine - 1));
24
+ startLine--;
25
+ }
26
+ while (endLine < this._xterm.buffer.active.length && ((_b = this._xterm.buffer.active.getLine(endLine + 1)) === null || _b === void 0 ? void 0 : _b.isWrapped)) {
27
+ lines.push(this._xterm.buffer.active.getLine(endLine + 1));
28
+ endLine++;
29
+ }
30
+ this._linkComputerTarget = new TerminalLinkAdapter(this._xterm, startLine, endLine);
31
+ const links = common_1.LinkComputer.computeLinks(this._linkComputerTarget);
32
+ return links.map((link) => {
33
+ var _a;
34
+ const range = (0, helpers_1.convertLinkRangeToBuffer)(lines, this._xterm.cols, link.range, startLine);
35
+ // Check if the link if within the mouse position
36
+ return this.injector.get(link_1.TerminalLink, [
37
+ this._xterm,
38
+ range,
39
+ ((_a = link.url) === null || _a === void 0 ? void 0 : _a.toString()) || '',
40
+ this._xterm.buffer.active.viewportY,
41
+ this._activateCallback,
42
+ this._tooltipCallback,
43
+ true,
44
+ undefined,
45
+ ]);
46
+ });
47
+ }
48
+ };
49
+ exports.TerminalProtocolLinkProvider = TerminalProtocolLinkProvider;
50
+ tslib_1.__decorate([
51
+ (0, di_1.Autowired)(di_1.INJECTOR_TOKEN),
52
+ tslib_1.__metadata("design:type", di_1.Injector)
53
+ ], TerminalProtocolLinkProvider.prototype, "injector", void 0);
54
+ exports.TerminalProtocolLinkProvider = TerminalProtocolLinkProvider = tslib_1.__decorate([
55
+ (0, di_1.Injectable)({ multiple: true }),
56
+ tslib_1.__metadata("design:paramtypes", [Function, Function, Function])
57
+ ], TerminalProtocolLinkProvider);
58
+ class TerminalLinkAdapter {
59
+ constructor(_xterm, _lineStart, _lineEnd) {
60
+ this._xterm = _xterm;
61
+ this._lineStart = _lineStart;
62
+ this._lineEnd = _lineEnd;
63
+ }
64
+ getLineCount() {
65
+ return 1;
66
+ }
67
+ getLineContent() {
68
+ return (0, helpers_1.getXtermLineContent)(this._xterm.buffer.active, this._lineStart, this._lineEnd, this._xterm.cols);
69
+ }
70
+ }
71
+ //# sourceMappingURL=protocol-link-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol-link-provider.js","sourceRoot":"","sources":["../../../src/browser/links/protocol-link-provider.ts"],"names":[],"mappings":"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"}