@codingame/monaco-vscode-xterm-common 37.2.0 → 37.3.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 (51) hide show
  1. package/package.json +3 -3
  2. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalInstance.d.ts +3 -3
  3. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalInstance.js +39 -39
  4. package/vscode/src/vs/workbench/contrib/terminalContrib/stickyScroll/browser/terminalStickyScrollContribution.js +3 -3
  5. package/vscode/src/vs/platform/terminal/common/capabilities/naiveCwdDetectionCapability.d.ts +0 -11
  6. package/vscode/src/vs/platform/terminal/common/capabilities/naiveCwdDetectionCapability.js +0 -26
  7. package/vscode/src/vs/platform/terminal/common/environmentVariable.d.ts +0 -86
  8. package/vscode/src/vs/platform/terminal/common/environmentVariable.js +0 -10
  9. package/vscode/src/vs/platform/terminal/common/environmentVariableCollection.d.ts +0 -17
  10. package/vscode/src/vs/platform/terminal/common/environmentVariableCollection.js +0 -218
  11. package/vscode/src/vs/platform/terminal/common/terminalRecorder.d.ts +0 -14
  12. package/vscode/src/vs/platform/terminal/common/terminalRecorder.js +0 -84
  13. package/vscode/src/vs/workbench/contrib/terminal/browser/agentHostOutputChannel.d.ts +0 -22
  14. package/vscode/src/vs/workbench/contrib/terminal/browser/agentHostOutputChannel.js +0 -48
  15. package/vscode/src/vs/workbench/contrib/terminal/browser/agentHostPty.d.ts +0 -129
  16. package/vscode/src/vs/workbench/contrib/terminal/browser/agentHostPty.js +0 -439
  17. package/vscode/src/vs/workbench/contrib/terminal/browser/agentHostTerminalService.d.ts +0 -77
  18. package/vscode/src/vs/workbench/contrib/terminal/browser/agentHostTerminalService.js +0 -345
  19. package/vscode/src/vs/workbench/contrib/terminal/browser/ahpTerminalCommandSource.d.ts +0 -111
  20. package/vscode/src/vs/workbench/contrib/terminal/browser/ahpTerminalCommandSource.js +0 -138
  21. package/vscode/src/vs/workbench/contrib/terminal/browser/environmentVariableInfo.d.ts +0 -28
  22. package/vscode/src/vs/workbench/contrib/terminal/browser/environmentVariableInfo.js +0 -119
  23. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalActions.d.ts +0 -104
  24. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalActions.js +0 -1643
  25. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalContextMenu.d.ts +0 -19
  26. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalContextMenu.js +0 -54
  27. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalIconPicker.d.ts +0 -12
  28. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalIconPicker.js +0 -78
  29. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalProcessManager.d.ts +0 -144
  30. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalProcessManager.js +0 -806
  31. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalResizeDebouncer.d.ts +0 -17
  32. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalResizeDebouncer.js +0 -83
  33. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalStatusList.d.ts +0 -57
  34. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalStatusList.js +0 -139
  35. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalTabsList.d.ts +0 -45
  36. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalTabsList.js +0 -804
  37. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalTooltip.d.ts +0 -9
  38. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalTooltip.js +0 -75
  39. package/vscode/src/vs/workbench/contrib/terminal/browser/xterm/lineDataEventAddon.d.ts +0 -17
  40. package/vscode/src/vs/workbench/contrib/terminal/browser/xterm/lineDataEventAddon.js +0 -61
  41. package/vscode/src/vs/workbench/contrib/terminal/common/basePty.d.ts +0 -38
  42. package/vscode/src/vs/workbench/contrib/terminal/common/basePty.js +0 -127
  43. package/vscode/src/vs/workbench/contrib/terminal/common/terminalEnvironment.d.ts +0 -38
  44. package/vscode/src/vs/workbench/contrib/terminal/common/terminalEnvironment.js +0 -321
  45. package/vscode/src/vs/workbench/contrib/terminal/common/terminalStorageKeys.d.ts +0 -12
  46. package/vscode/src/vs/workbench/contrib/terminal/common/terminalStorageKeys.js +0 -17
  47. package/vscode/src/vs/workbench/contrib/terminalContrib/stickyScroll/browser/media/stickyScroll.css +0 -49
  48. package/vscode/src/vs/workbench/contrib/terminalContrib/stickyScroll/browser/terminalStickyScrollColorRegistry.d.ts +0 -2
  49. package/vscode/src/vs/workbench/contrib/terminalContrib/stickyScroll/browser/terminalStickyScrollColorRegistry.js +0 -25
  50. package/vscode/src/vs/workbench/contrib/terminalContrib/stickyScroll/browser/terminalStickyScrollOverlay.d.ts +0 -58
  51. package/vscode/src/vs/workbench/contrib/terminalContrib/stickyScroll/browser/terminalStickyScrollOverlay.js +0 -462
@@ -1,804 +0,0 @@
1
-
2
- import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
- import { WorkbenchList } from '@codingame/monaco-vscode-api/vscode/vs/platform/list/browser/listService';
4
- import { IListService } from '@codingame/monaco-vscode-api/vscode/vs/platform/list/browser/listService.service';
5
- import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
6
- import { IContextKeyService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service';
7
- import { IKeybindingService } from '@codingame/monaco-vscode-api/vscode/vs/platform/keybinding/common/keybinding.service';
8
- import { IThemeService } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/themeService.service';
9
- import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
10
- import { TerminalDataTransfers } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal';
11
- import { ITerminalService, ITerminalGroupService, ITerminalEditingService, ITerminalConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal.service';
12
- import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
13
- import { $ as $$1, append, addDisposableListener, EventType, addStandardDisposableListener } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
14
- import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
15
- import { ActionBar } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/actionbar/actionbar';
16
- import { MenuItemAction } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions';
17
- import { MenuEntryActionViewItem } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/browser/menuEntryActionViewItem';
18
- import { TerminalCommandId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/common/terminal';
19
- import { TerminalLocation, TerminalSettingId } from '@codingame/monaco-vscode-api/vscode/vs/platform/terminal/common/terminal';
20
- import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
21
- import { Action } from '@codingame/monaco-vscode-api/vscode/vs/base/common/actions';
22
- import { ResourceLabels, DEFAULT_LABELS_CONTAINER } from '@codingame/monaco-vscode-api/vscode/vs/workbench/browser/labels';
23
- import { IDecorationsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/decorations/common/decorations.service';
24
- import { IHoverService } from '@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service';
25
- import Severity from '@codingame/monaco-vscode-api/vscode/vs/base/common/severity';
26
- import { dispose, toDisposable, DisposableStore, Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
27
- import { ListDragOverEffectPosition, ListDragOverEffectType } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/list/list';
28
- import { DataTransfers } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dnd';
29
- import { disposableTimeout } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
30
- import { NativeDragAndDropData, ElementsDragAndDropData } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/list/listView';
31
- import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
32
- import { getIconId, getColorClass, getUriClasses } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminalIcon';
33
- import { IContextViewService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextview/browser/contextView.service';
34
- import { InputBox, MessageType } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/inputbox/inputBox';
35
- import { createSingleCallFunction } from '@codingame/monaco-vscode-api/vscode/vs/base/common/functional';
36
- import { KeyCode } from '@codingame/monaco-vscode-api/vscode/vs/base/common/keyCodes';
37
- import { containsDragType, CodeDataTransfers, getPathForFile } from '@codingame/monaco-vscode-api/vscode/vs/platform/dnd/browser/dnd';
38
- import { terminalStrings } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/common/terminalStrings';
39
- import { ILifecycleService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/lifecycle/common/lifecycle.service';
40
- import { TerminalContextKeys } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/common/terminalContextKey';
41
- import { getTerminalResourcesFromDragEvent, parseTerminalUri } from '@codingame/monaco-vscode-xterm-addons-common/vscode/vs/workbench/contrib/terminal/browser/terminalUri';
42
- import { getInstanceHoverInfo } from './terminalTooltip.js';
43
- import { defaultInputBoxStyles } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/browser/defaultStyles';
44
- import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
45
- import { Schemas } from '@codingame/monaco-vscode-api/vscode/vs/base/common/network';
46
- import { getColorForSeverity } from './terminalStatusList.js';
47
- import { TerminalContextActionRunner } from './terminalContextMenu.js';
48
- import { HoverPosition } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/hover/hoverWidget';
49
- import { ICommandService } from '@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service';
50
- import { StorageScope } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage';
51
- import { IStorageService } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service';
52
- import { TerminalStorageKeys } from '../common/terminalStorageKeys.js';
53
- import { isObject } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
54
-
55
- const $ = $$1;
56
- var TerminalTabsListSizes;
57
- (function(TerminalTabsListSizes) {
58
- TerminalTabsListSizes[TerminalTabsListSizes["TabHeight"] = 22] = "TabHeight";
59
- TerminalTabsListSizes[TerminalTabsListSizes["NarrowViewWidth"] = 46] = "NarrowViewWidth";
60
- TerminalTabsListSizes[TerminalTabsListSizes["WideViewMinimumWidth"] = 80] = "WideViewMinimumWidth";
61
- TerminalTabsListSizes[TerminalTabsListSizes["DefaultWidth"] = 120] = "DefaultWidth";
62
- TerminalTabsListSizes[TerminalTabsListSizes["MidpointViewWidth"] = 63] = "MidpointViewWidth";
63
- TerminalTabsListSizes[TerminalTabsListSizes["ActionbarMinimumWidth"] = 105] = "ActionbarMinimumWidth";
64
- TerminalTabsListSizes[TerminalTabsListSizes["MaximumWidth"] = 500] = "MaximumWidth";
65
- })(TerminalTabsListSizes || (TerminalTabsListSizes = {}));
66
- let TerminalTabList = class TerminalTabList extends WorkbenchList {
67
- get hasText() {
68
- return this._hasText;
69
- }
70
- get hasActionBar() {
71
- return this._hasActionBar;
72
- }
73
- constructor(
74
- container,
75
- contextKeyService,
76
- listService,
77
- _configurationService,
78
- _terminalService,
79
- _terminalGroupService,
80
- _terminalEditingService,
81
- instantiationService,
82
- decorationsService,
83
- _themeService,
84
- _storageService,
85
- lifecycleService,
86
- _hoverService
87
- ) {
88
- super("TerminalTabsList", container, {
89
- getHeight: () => TerminalTabsListSizes.TabHeight,
90
- getTemplateId: () => "terminal.tabs"
91
- }, [instantiationService.createInstance(
92
- TerminalTabsRenderer,
93
- container,
94
- instantiationService.createInstance(ResourceLabels, DEFAULT_LABELS_CONTAINER),
95
- () => this.getSelectedElements(),
96
- {
97
- getHasText: () => this.hasText,
98
- getHasActionBar: () => this.hasActionBar
99
- }
100
- )], {
101
- horizontalScrolling: false,
102
- supportDynamicHeights: false,
103
- selectionNavigation: true,
104
- identityProvider: {
105
- getId: e => e?.instanceId
106
- },
107
- accessibilityProvider: instantiationService.createInstance(TerminalTabsAccessibilityProvider),
108
- smoothScrolling: _configurationService.getValue("workbench.list.smoothScrolling"),
109
- multipleSelectionSupport: true,
110
- paddingBottom: TerminalTabsListSizes.TabHeight,
111
- dnd: instantiationService.createInstance(TerminalTabsDragAndDrop),
112
- openOnSingleClick: true
113
- }, contextKeyService, listService, _configurationService, instantiationService);
114
- this._configurationService = _configurationService;
115
- this._terminalService = _terminalService;
116
- this._terminalGroupService = _terminalGroupService;
117
- this._terminalEditingService = _terminalEditingService;
118
- this._themeService = _themeService;
119
- this._storageService = _storageService;
120
- this._hoverService = _hoverService;
121
- this._hasText = true;
122
- this._hasActionBar = true;
123
- const instanceDisposables = [
124
- this._terminalGroupService.onDidChangeInstances(() => this.refresh()),
125
- this._terminalGroupService.onDidChangeGroups(() => this.refresh()),
126
- this._terminalGroupService.onDidShow(() => this.refresh()),
127
- this._terminalGroupService.onDidChangeInstanceCapability(() => this.refresh()),
128
- this._terminalService.onAnyInstanceTitleChange(() => this.refresh()),
129
- this._terminalService.onAnyInstanceIconChange(() => this.refresh()),
130
- this._terminalService.onAnyInstancePrimaryStatusChange(() => this.refresh()),
131
- this._terminalService.onDidChangeConnectionState(() => this.refresh()),
132
- this._themeService.onDidColorThemeChange(() => this.refresh()),
133
- this._terminalGroupService.onDidChangeActiveInstance(e => {
134
- if (e) {
135
- const i = this._terminalGroupService.instances.indexOf(e);
136
- this.setSelection([i]);
137
- this.reveal(i);
138
- }
139
- this.refresh();
140
- }),
141
- this._storageService.onDidChangeValue(
142
- StorageScope.APPLICATION,
143
- TerminalStorageKeys.TabsShowDetailed,
144
- this.disposables
145
- )(() => this.refresh())
146
- ];
147
- this.disposables.add(lifecycleService.onWillShutdown(e => {
148
- dispose(instanceDisposables);
149
- instanceDisposables.length = 0;
150
- }));
151
- this.disposables.add(toDisposable(() => {
152
- dispose(instanceDisposables);
153
- instanceDisposables.length = 0;
154
- }));
155
- this.disposables.add(this.onMouseDblClick(async e => {
156
- if (!e.element) {
157
- e.browserEvent.preventDefault();
158
- e.browserEvent.stopPropagation();
159
- const instance = await this._terminalService.createTerminal({
160
- location: TerminalLocation.Panel
161
- });
162
- this._terminalGroupService.setActiveInstance(instance);
163
- await instance.focusWhenReady();
164
- return;
165
- }
166
- if (this._terminalEditingService.getEditingTerminal()?.instanceId === e.element.instanceId) {
167
- return;
168
- }
169
- if (this._getFocusMode() === "doubleClick" && this.getFocus().length === 1) {
170
- e.element.focus(true);
171
- }
172
- }));
173
- this.disposables.add(this.onMouseClick(async e => {
174
- if (this._terminalEditingService.getEditingTerminal()?.instanceId === e.element?.instanceId) {
175
- return;
176
- }
177
- if (e.browserEvent.altKey && e.element) {
178
- await this._terminalService.createTerminal({
179
- location: {
180
- parentTerminal: e.element
181
- }
182
- });
183
- } else if (this._getFocusMode() === "singleClick") {
184
- if (this.getSelection().length <= 1) {
185
- e.element?.focus(true);
186
- }
187
- }
188
- }));
189
- this.disposables.add(this.onContextMenu(e => {
190
- if (!e.element) {
191
- this.setSelection([]);
192
- return;
193
- }
194
- const selection = this.getSelectedElements();
195
- if (!selection || !selection.find(s => e.element === s)) {
196
- this.setFocus(e.index !== undefined ? [e.index] : []);
197
- }
198
- }));
199
- this._terminalTabsSingleSelectedContextKey = TerminalContextKeys.tabsSingularSelection.bindTo(contextKeyService);
200
- this._isSplitContextKey = TerminalContextKeys.splitTerminalTabFocused.bindTo(contextKeyService);
201
- this.disposables.add(this.onDidChangeSelection(e => this._updateContextKey()));
202
- this.disposables.add(this.onDidChangeFocus(() => this._updateContextKey()));
203
- this.disposables.add(this.onDidOpen(async e => {
204
- const instance = e.element;
205
- if (!instance) {
206
- return;
207
- }
208
- this._terminalGroupService.setActiveInstance(instance);
209
- if (!e.editorOptions.preserveFocus) {
210
- await instance.focusWhenReady();
211
- }
212
- }));
213
- if (!this._decorationsProvider) {
214
- this._decorationsProvider = this.disposables.add(instantiationService.createInstance(TabDecorationsProvider));
215
- this.disposables.add(decorationsService.registerDecorationsProvider(this._decorationsProvider));
216
- }
217
- this.refresh();
218
- }
219
- _getFocusMode() {
220
- return this._configurationService.getValue(TerminalSettingId.TabsFocusMode);
221
- }
222
- refresh(cancelEditing = true) {
223
- if (cancelEditing && this._terminalEditingService.isEditable(undefined)) {
224
- this.domFocus();
225
- }
226
- this.splice(0, this.length, this._terminalGroupService.instances.slice());
227
- }
228
- focusHover() {
229
- const instance = this.getSelectedElements()[0];
230
- if (!instance) {
231
- return;
232
- }
233
- this._hoverService.showInstantHover({
234
- ...getInstanceHoverInfo(instance, this._storageService),
235
- target: this.getHTMLElement(),
236
- trapFocus: true
237
- }, true);
238
- }
239
- _updateContextKey() {
240
- this._terminalTabsSingleSelectedContextKey.set(this.getSelectedElements().length === 1);
241
- const instance = this.getFocusedElements();
242
- this._isSplitContextKey.set(
243
- instance.length > 0 && this._terminalGroupService.instanceIsSplit(instance[0])
244
- );
245
- }
246
- layout(height, width) {
247
- super.layout(height, width);
248
- const actualWidth = width ?? this.getHTMLElement().clientWidth;
249
- const newHasText = actualWidth >= TerminalTabsListSizes.MidpointViewWidth;
250
- const newHasActionBar = actualWidth > TerminalTabsListSizes.ActionbarMinimumWidth;
251
- if (this._hasText !== newHasText || this._hasActionBar !== newHasActionBar) {
252
- this._hasText = newHasText;
253
- this._hasActionBar = newHasActionBar;
254
- this.refresh();
255
- }
256
- }
257
- };
258
- TerminalTabList = ( __decorate([( __param(1, IContextKeyService)), ( __param(2, IListService)), ( __param(3, IConfigurationService)), ( __param(4, ITerminalService)), ( __param(5, ITerminalGroupService)), ( __param(6, ITerminalEditingService)), ( __param(7, IInstantiationService)), ( __param(8, IDecorationsService)), ( __param(9, IThemeService)), ( __param(10, IStorageService)), ( __param(11, ILifecycleService)), ( __param(12, IHoverService))], TerminalTabList));
259
- let TerminalTabsRenderer = class TerminalTabsRenderer {
260
- constructor(
261
- _container,
262
- _labels,
263
- _getSelection,
264
- _getVisibilityState,
265
- _instantiationService,
266
- _terminalConfigurationService,
267
- _terminalService,
268
- _terminalGroupService,
269
- _terminalEditingService,
270
- _hoverService,
271
- _keybindingService,
272
- _listService,
273
- _storageService,
274
- _themeService,
275
- _contextViewService,
276
- _commandService
277
- ) {
278
- this._labels = _labels;
279
- this._getSelection = _getSelection;
280
- this._getVisibilityState = _getVisibilityState;
281
- this._instantiationService = _instantiationService;
282
- this._terminalConfigurationService = _terminalConfigurationService;
283
- this._terminalService = _terminalService;
284
- this._terminalGroupService = _terminalGroupService;
285
- this._terminalEditingService = _terminalEditingService;
286
- this._hoverService = _hoverService;
287
- this._keybindingService = _keybindingService;
288
- this._listService = _listService;
289
- this._storageService = _storageService;
290
- this._themeService = _themeService;
291
- this._contextViewService = _contextViewService;
292
- this._commandService = _commandService;
293
- this.templateId = "terminal.tabs";
294
- }
295
- renderTemplate(container) {
296
- const element = append(container, $(".terminal-tabs-entry"));
297
- const context = {};
298
- const templateDisposables = ( new DisposableStore());
299
- const label = templateDisposables.add(this._labels.create(element, {
300
- supportHighlights: true,
301
- supportDescriptionHighlights: true,
302
- supportIcons: true,
303
- hoverDelegate: {
304
- delay: 0,
305
- showHover: options => {
306
- return this._hoverService.showDelayedHover({
307
- ...options,
308
- actions: context.hoverActions,
309
- target: element,
310
- appearance: {
311
- showPointer: true
312
- },
313
- position: {
314
- hoverPosition: this._terminalConfigurationService.config.tabs.location === "left" ? HoverPosition.RIGHT : HoverPosition.LEFT
315
- }
316
- }, {
317
- groupId: "terminal-tabs-list"
318
- });
319
- }
320
- }
321
- }));
322
- const actionsContainer = append(label.element, $(".actions"));
323
- const actionBar = templateDisposables.add(( new ActionBar(actionsContainer, {
324
- actionRunner: templateDisposables.add(( new TerminalContextActionRunner())),
325
- actionViewItemProvider: (action, options) => action instanceof MenuItemAction ? templateDisposables.add(
326
- this._instantiationService.createInstance(MenuEntryActionViewItem, action, {
327
- hoverDelegate: options.hoverDelegate
328
- })
329
- ) : undefined
330
- })));
331
- return {
332
- element,
333
- label,
334
- actionBar,
335
- context,
336
- elementDisposables: ( new DisposableStore()),
337
- templateDisposables
338
- };
339
- }
340
- renderElement(instance, index, template) {
341
- const hasText = this._getVisibilityState.getHasText();
342
- const hasActionBar = this._getVisibilityState.getHasActionBar();
343
- const group = this._terminalGroupService.getGroupForInstance(instance);
344
- if (!group) {
345
- throw ( new Error(`Could not find group for instance "${instance.instanceId}"`));
346
- }
347
- template.element.classList.toggle("has-text", hasText);
348
- template.element.classList.toggle("is-active", this._terminalGroupService.activeInstance === instance);
349
- let prefix = "";
350
- if (group.terminalInstances.length > 1) {
351
- const terminalIndex = group.terminalInstances.indexOf(instance);
352
- if (terminalIndex === 0) {
353
- prefix = `┌ `;
354
- } else if (terminalIndex === group.terminalInstances.length - 1) {
355
- prefix = `└ `;
356
- } else {
357
- prefix = `├ `;
358
- }
359
- }
360
- const hoverInfo = getInstanceHoverInfo(instance, this._storageService);
361
- template.context.hoverActions = hoverInfo.actions;
362
- const iconId = this._instantiationService.invokeFunction(getIconId, instance);
363
- let label = "";
364
- if (!hasText) {
365
- const primaryStatus = instance.statusList.primary;
366
- if (primaryStatus && primaryStatus.severity > Severity.Ignore) {
367
- label = `${prefix}$(${primaryStatus.icon?.id || iconId})`;
368
- } else {
369
- label = `${prefix}$(${iconId})`;
370
- }
371
- } else {
372
- this.fillActionBar(instance, template);
373
- label = prefix;
374
- if (instance.icon) {
375
- label += `$(${iconId}) ${instance.title}`;
376
- }
377
- }
378
- if (!hasActionBar) {
379
- template.actionBar.clear();
380
- }
381
- template.elementDisposables.add(addDisposableListener(template.element, EventType.AUXCLICK, e => {
382
- e.stopImmediatePropagation();
383
- if (e.button === 1 ) {
384
- this._terminalService.safeDisposeTerminal(instance);
385
- }
386
- }));
387
- const extraClasses = [];
388
- const colorClass = getColorClass(instance);
389
- if (colorClass) {
390
- extraClasses.push(colorClass);
391
- }
392
- const uriClasses = getUriClasses(instance, this._themeService.getColorTheme().type);
393
- if (uriClasses) {
394
- extraClasses.push(...uriClasses);
395
- }
396
- template.label.setResource({
397
- resource: instance.resource,
398
- name: label,
399
- description: hasText ? instance.description : undefined
400
- }, {
401
- fileDecorations: {
402
- colors: true,
403
- badges: hasText
404
- },
405
- title: {
406
- markdown: hoverInfo.content,
407
- markdownNotSupportedFallback: undefined
408
- },
409
- extraClasses
410
- });
411
- const editableData = this._terminalEditingService.getEditableData(instance);
412
- template.label.element.classList.toggle("editable-tab", !!editableData);
413
- if (editableData) {
414
- template.elementDisposables.add(this._renderInputBox(
415
- template.label.element.querySelector(".monaco-icon-label-container"),
416
- instance,
417
- editableData
418
- ));
419
- template.actionBar.clear();
420
- }
421
- }
422
- _renderInputBox(container, instance, editableData) {
423
- const value = instance.title || "";
424
- const inputBox = ( new InputBox(container, this._contextViewService, {
425
- validationOptions: {
426
- validation: value => {
427
- const message = editableData.validationMessage(value);
428
- if (!message || message.severity !== Severity.Error) {
429
- return null;
430
- }
431
- return {
432
- content: message.content,
433
- formatContent: true,
434
- type: MessageType.ERROR
435
- };
436
- }
437
- },
438
- ariaLabel: ( localize(16984, "Type terminal name. Press Enter to confirm or Escape to cancel.")),
439
- inputBoxStyles: defaultInputBoxStyles
440
- }));
441
- inputBox.element.style.height = "22px";
442
- inputBox.value = value;
443
- inputBox.focus();
444
- inputBox.select({
445
- start: 0,
446
- end: value.length
447
- });
448
- const done = createSingleCallFunction((success, finishEditing) => {
449
- inputBox.element.style.display = "none";
450
- const value = inputBox.value;
451
- dispose(toDispose);
452
- inputBox.element.remove();
453
- if (finishEditing) {
454
- editableData.onFinish(value, success);
455
- }
456
- });
457
- const showInputBoxNotification = () => {
458
- if (inputBox.isInputValid()) {
459
- const message = editableData.validationMessage(inputBox.value);
460
- if (message) {
461
- inputBox.showMessage({
462
- content: message.content,
463
- formatContent: true,
464
- type: message.severity === Severity.Info ? MessageType.INFO : message.severity === Severity.Warning ? MessageType.WARNING : MessageType.ERROR
465
- });
466
- } else {
467
- inputBox.hideMessage();
468
- }
469
- }
470
- };
471
- showInputBoxNotification();
472
- const toDispose = [
473
- inputBox,
474
- addStandardDisposableListener(inputBox.inputElement, EventType.KEY_DOWN, e => {
475
- e.stopPropagation();
476
- if (e.equals(KeyCode.Enter)) {
477
- done(inputBox.isInputValid(), true);
478
- } else if (e.equals(KeyCode.Escape)) {
479
- done(false, true);
480
- }
481
- }),
482
- addStandardDisposableListener(inputBox.inputElement, EventType.KEY_UP, e => {
483
- showInputBoxNotification();
484
- }),
485
- addDisposableListener(inputBox.inputElement, EventType.BLUR, () => {
486
- done(inputBox.isInputValid(), true);
487
- })
488
- ];
489
- return toDisposable(() => {
490
- done(false, false);
491
- });
492
- }
493
- disposeElement(instance, index, templateData) {
494
- templateData.elementDisposables.clear();
495
- templateData.actionBar.clear();
496
- }
497
- disposeTemplate(templateData) {
498
- templateData.elementDisposables.dispose();
499
- templateData.templateDisposables.dispose();
500
- }
501
- fillActionBar(instance, template) {
502
- const actions = [template.elementDisposables.add(( new Action(
503
- TerminalCommandId.SplitActiveTab,
504
- terminalStrings.split.short,
505
- ThemeIcon.asClassName(Codicon.splitHorizontal),
506
- true,
507
- async () => {
508
- this._runForSelectionOrInstance(instance, async e => {
509
- this._terminalService.createTerminal({
510
- location: {
511
- parentTerminal: e
512
- }
513
- });
514
- });
515
- }
516
- )))];
517
- if (instance.shellLaunchConfig.tabActions) {
518
- for (const action of instance.shellLaunchConfig.tabActions) {
519
- actions.push(template.elementDisposables.add(( new Action(
520
- action.id,
521
- action.label,
522
- action.icon ? ThemeIcon.asClassName(action.icon) : undefined,
523
- true,
524
- async () => {
525
- this._runForSelectionOrInstance(instance, e => this._commandService.executeCommand(action.id, instance));
526
- }
527
- ))));
528
- }
529
- }
530
- actions.push(template.elementDisposables.add(( new Action(
531
- TerminalCommandId.KillActiveTab,
532
- terminalStrings.kill.short,
533
- ThemeIcon.asClassName(Codicon.trashcan),
534
- true,
535
- async () => {
536
- this._runForSelectionOrInstance(instance, e => this._terminalService.safeDisposeTerminal(e));
537
- }
538
- ))));
539
- template.actionBar.clear();
540
- for (const action of actions) {
541
- template.actionBar.push(action, {
542
- icon: true,
543
- label: false,
544
- keybinding: this._keybindingService.lookupKeybinding(action.id)?.getLabel()
545
- });
546
- }
547
- }
548
- _runForSelectionOrInstance(instance, callback) {
549
- const selection = this._getSelection();
550
- if (selection.includes(instance)) {
551
- for (const s of selection) {
552
- if (s) {
553
- callback(s);
554
- }
555
- }
556
- } else {
557
- callback(instance);
558
- }
559
- this._terminalGroupService.focusTabs();
560
- this._listService.lastFocusedList?.focusNext();
561
- }
562
- };
563
- TerminalTabsRenderer = ( __decorate([( __param(4, IInstantiationService)), ( __param(5, ITerminalConfigurationService)), ( __param(6, ITerminalService)), ( __param(7, ITerminalGroupService)), ( __param(8, ITerminalEditingService)), ( __param(9, IHoverService)), ( __param(10, IKeybindingService)), ( __param(11, IListService)), ( __param(12, IStorageService)), ( __param(13, IThemeService)), ( __param(14, IContextViewService)), ( __param(15, ICommandService))], TerminalTabsRenderer));
564
- let TerminalTabsAccessibilityProvider = class TerminalTabsAccessibilityProvider {
565
- constructor(_terminalGroupService) {
566
- this._terminalGroupService = _terminalGroupService;
567
- }
568
- getWidgetAriaLabel() {
569
- return localize(16985, "Terminal tabs");
570
- }
571
- getAriaLabel(instance) {
572
- let ariaLabel = "";
573
- const tab = this._terminalGroupService.getGroupForInstance(instance);
574
- if (tab && tab.terminalInstances?.length > 1) {
575
- const terminalIndex = tab.terminalInstances.indexOf(instance);
576
- ariaLabel = ( localize(
577
- 16986,
578
- "Terminal {0} {1}, split {2} of {3}",
579
- instance.instanceId,
580
- instance.title,
581
- terminalIndex + 1,
582
- tab.terminalInstances.length
583
- ));
584
- } else {
585
- ariaLabel = ( localize(16987, "Terminal {0} {1}", instance.instanceId, instance.title));
586
- }
587
- return ariaLabel;
588
- }
589
- };
590
- TerminalTabsAccessibilityProvider = ( __decorate([( __param(0, ITerminalGroupService))], TerminalTabsAccessibilityProvider));
591
- let TerminalTabsDragAndDrop = class TerminalTabsDragAndDrop extends Disposable {
592
- constructor(
593
- _terminalService,
594
- _terminalGroupService,
595
- _terminalEditingService,
596
- _listService
597
- ) {
598
- super();
599
- this._terminalService = _terminalService;
600
- this._terminalGroupService = _terminalGroupService;
601
- this._terminalEditingService = _terminalEditingService;
602
- this._listService = _listService;
603
- this._autoFocusDisposable = Disposable.None;
604
- this._primaryBackend = this._terminalService.getPrimaryBackend();
605
- }
606
- getDragURI(instance) {
607
- if (this._terminalEditingService.getEditingTerminal()?.instanceId === instance.instanceId) {
608
- return null;
609
- }
610
- return ( instance.resource.toString());
611
- }
612
- getDragLabel(elements, originalEvent) {
613
- return elements.length === 1 ? elements[0].title : undefined;
614
- }
615
- onDragLeave() {
616
- this._autoFocusInstance = undefined;
617
- this._autoFocusDisposable.dispose();
618
- this._autoFocusDisposable = Disposable.None;
619
- }
620
- onDragStart(data, originalEvent) {
621
- if (!originalEvent.dataTransfer) {
622
- return;
623
- }
624
- const dndData = data.getData();
625
- if (!Array.isArray(dndData)) {
626
- return;
627
- }
628
- const terminals = dndData.filter(isTerminalInstance);
629
- if (terminals.length > 0) {
630
- originalEvent.dataTransfer.setData(TerminalDataTransfers.Terminals, JSON.stringify(( terminals.map(e => ( e.resource.toString())))));
631
- }
632
- }
633
- onDragOver(data, targetInstance, targetIndex, targetSector, originalEvent) {
634
- if (data instanceof NativeDragAndDropData) {
635
- if (!containsDragType(
636
- originalEvent,
637
- DataTransfers.FILES,
638
- DataTransfers.RESOURCES,
639
- TerminalDataTransfers.Terminals,
640
- CodeDataTransfers.FILES
641
- )) {
642
- return false;
643
- }
644
- }
645
- const didChangeAutoFocusInstance = this._autoFocusInstance !== targetInstance;
646
- if (didChangeAutoFocusInstance) {
647
- this._autoFocusDisposable.dispose();
648
- this._autoFocusInstance = targetInstance;
649
- }
650
- if (!targetInstance && !containsDragType(originalEvent, TerminalDataTransfers.Terminals)) {
651
- return data instanceof ElementsDragAndDropData;
652
- }
653
- if (didChangeAutoFocusInstance && targetInstance) {
654
- this._autoFocusDisposable = disposableTimeout(() => {
655
- this._terminalService.setActiveInstance(targetInstance);
656
- this._autoFocusInstance = undefined;
657
- }, 500, this._store);
658
- }
659
- return {
660
- feedback: targetIndex ? [targetIndex] : undefined,
661
- accept: true,
662
- effect: {
663
- type: ListDragOverEffectType.Move,
664
- position: ListDragOverEffectPosition.Over
665
- }
666
- };
667
- }
668
- async drop(data, targetInstance, targetIndex, targetSector, originalEvent) {
669
- this._autoFocusDisposable.dispose();
670
- this._autoFocusInstance = undefined;
671
- let sourceInstances;
672
- const promises = [];
673
- const resources = getTerminalResourcesFromDragEvent(originalEvent);
674
- if (resources) {
675
- for (const uri of resources) {
676
- const instance = this._terminalService.getInstanceFromResource(uri);
677
- if (instance) {
678
- if (Array.isArray(sourceInstances)) {
679
- sourceInstances.push(instance);
680
- } else {
681
- sourceInstances = [instance];
682
- }
683
- this._terminalService.moveToTerminalView(instance);
684
- } else if (this._primaryBackend) {
685
- const terminalIdentifier = parseTerminalUri(uri);
686
- if (terminalIdentifier.instanceId) {
687
- promises.push(
688
- this._primaryBackend.requestDetachInstance(terminalIdentifier.workspaceId, terminalIdentifier.instanceId)
689
- );
690
- }
691
- }
692
- }
693
- }
694
- if (promises.length) {
695
- let processes = await Promise.all(promises);
696
- processes = processes.filter(p => p !== undefined);
697
- let lastInstance;
698
- for (const attachPersistentProcess of processes) {
699
- lastInstance = await this._terminalService.createTerminal({
700
- config: {
701
- attachPersistentProcess
702
- }
703
- });
704
- }
705
- if (lastInstance) {
706
- this._terminalService.setActiveInstance(lastInstance);
707
- }
708
- return;
709
- }
710
- if (sourceInstances === undefined) {
711
- if (!(data instanceof ElementsDragAndDropData)) {
712
- this._handleExternalDrop(targetInstance, originalEvent);
713
- return;
714
- }
715
- const draggedElement = data.getData();
716
- if (!draggedElement || !Array.isArray(draggedElement)) {
717
- return;
718
- }
719
- sourceInstances = [];
720
- for (const e of draggedElement) {
721
- if (isTerminalInstance(e)) {
722
- sourceInstances.push(e);
723
- }
724
- }
725
- }
726
- if (!targetInstance) {
727
- this._terminalGroupService.moveGroupToEnd(sourceInstances);
728
- this._terminalService.setActiveInstance(sourceInstances[0]);
729
- const targetGroup = this._terminalGroupService.getGroupForInstance(sourceInstances[0]);
730
- if (targetGroup) {
731
- const index = this._terminalGroupService.groups.indexOf(targetGroup);
732
- this._listService.lastFocusedList?.setSelection([index]);
733
- }
734
- return;
735
- }
736
- this._terminalGroupService.moveGroup(sourceInstances, targetInstance);
737
- this._terminalService.setActiveInstance(sourceInstances[0]);
738
- const targetGroup = this._terminalGroupService.getGroupForInstance(sourceInstances[0]);
739
- if (targetGroup) {
740
- const index = this._terminalGroupService.groups.indexOf(targetGroup);
741
- this._listService.lastFocusedList?.setSelection([index]);
742
- }
743
- }
744
- async _handleExternalDrop(instance, e) {
745
- if (!instance || !e.dataTransfer) {
746
- return;
747
- }
748
- let resource;
749
- const rawResources = e.dataTransfer.getData(DataTransfers.RESOURCES);
750
- if (rawResources) {
751
- resource = ( URI.parse(JSON.parse(rawResources)[0]));
752
- }
753
- const rawCodeFiles = e.dataTransfer.getData(CodeDataTransfers.FILES);
754
- if (!resource && rawCodeFiles) {
755
- resource = URI.file(JSON.parse(rawCodeFiles)[0]);
756
- }
757
- if (!resource && e.dataTransfer.files.length > 0 && getPathForFile(e.dataTransfer.files[0])) {
758
- resource = URI.file(getPathForFile(e.dataTransfer.files[0]));
759
- }
760
- if (!resource) {
761
- return;
762
- }
763
- this._terminalService.setActiveInstance(instance);
764
- instance.focus();
765
- await instance.sendPath(resource, false);
766
- }
767
- };
768
- TerminalTabsDragAndDrop = ( __decorate([( __param(0, ITerminalService)), ( __param(1, ITerminalGroupService)), ( __param(2, ITerminalEditingService)), ( __param(3, IListService))], TerminalTabsDragAndDrop));
769
- let TabDecorationsProvider = class TabDecorationsProvider extends Disposable {
770
- constructor(_terminalService) {
771
- super();
772
- this._terminalService = _terminalService;
773
- this.label = ( localize(16988, "Terminal"));
774
- this._onDidChange = this._register(( new Emitter()));
775
- this.onDidChange = this._onDidChange.event;
776
- this._register(
777
- this._terminalService.onAnyInstancePrimaryStatusChange(e => this._onDidChange.fire([e.resource]))
778
- );
779
- }
780
- provideDecorations(resource) {
781
- if (resource.scheme !== Schemas.vscodeTerminal) {
782
- return undefined;
783
- }
784
- const instance = this._terminalService.getInstanceFromResource(resource);
785
- if (!instance) {
786
- return undefined;
787
- }
788
- const primaryStatus = instance?.statusList?.primary;
789
- if (!primaryStatus?.icon) {
790
- return undefined;
791
- }
792
- return {
793
- color: getColorForSeverity(primaryStatus.severity),
794
- letter: primaryStatus.icon,
795
- tooltip: primaryStatus.tooltip
796
- };
797
- }
798
- };
799
- TabDecorationsProvider = ( __decorate([( __param(0, ITerminalService))], TabDecorationsProvider));
800
- function isTerminalInstance(obj) {
801
- return isObject(obj) && "instanceId" in obj;
802
- }
803
-
804
- export { TerminalTabList, TerminalTabsListSizes };