@codingame/monaco-vscode-view-common-service-override 4.5.0-improve-code-splitting.1

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 (114) hide show
  1. package/assets/fake.html +10 -0
  2. package/assets/index-no-csp.html +1230 -0
  3. package/assets/index.html +1231 -0
  4. package/assets/service-worker.js +457 -0
  5. package/index.d.ts +1 -0
  6. package/index.js +1 -0
  7. package/override/vs/workbench/browser/parts/editor/textEditor.js +5 -0
  8. package/override/vs/workbench/browser/parts/editor/textEditor.weak.js +11 -0
  9. package/package.json +32 -0
  10. package/tools/editorAssets.js +4 -0
  11. package/tools/url.js +10 -0
  12. package/viewCommon.d.ts +5 -0
  13. package/viewCommon.js +105 -0
  14. package/vscode/src/vs/base/browser/deviceAccess.js +61 -0
  15. package/vscode/src/vs/base/browser/ui/centered/centeredViewLayout.js +180 -0
  16. package/vscode/src/vs/base/browser/ui/grid/grid.js +494 -0
  17. package/vscode/src/vs/base/browser/ui/grid/gridview.css.js +6 -0
  18. package/vscode/src/vs/base/browser/ui/grid/gridview.js +1113 -0
  19. package/vscode/src/vs/platform/languagePacks/common/localizedStrings.js +12 -0
  20. package/vscode/src/vs/platform/webview/common/mimeTypes.js +24 -0
  21. package/vscode/src/vs/platform/webview/common/webviewPortMapping.js +64 -0
  22. package/vscode/src/vs/workbench/api/browser/viewsExtensionPoint.js +907 -0
  23. package/vscode/src/vs/workbench/browser/actions/listCommands.js +764 -0
  24. package/vscode/src/vs/workbench/browser/actions/navigationActions.js +301 -0
  25. package/vscode/src/vs/workbench/browser/media/style.css.js +6 -0
  26. package/vscode/src/vs/workbench/browser/parts/activitybar/activitybarPart.js +671 -0
  27. package/vscode/src/vs/workbench/browser/parts/activitybar/media/activityaction.css.js +6 -0
  28. package/vscode/src/vs/workbench/browser/parts/activitybar/media/activitybarpart.css.js +6 -0
  29. package/vscode/src/vs/workbench/browser/parts/auxiliarybar/auxiliaryBarPart.js +229 -0
  30. package/vscode/src/vs/workbench/browser/parts/auxiliarybar/media/auxiliaryBarPart.css.js +6 -0
  31. package/vscode/src/vs/workbench/browser/parts/compositeBar.js +606 -0
  32. package/vscode/src/vs/workbench/browser/parts/compositePart.js +346 -0
  33. package/vscode/src/vs/workbench/browser/parts/editor/auxiliaryEditorPart.js +246 -0
  34. package/vscode/src/vs/workbench/browser/parts/editor/editor.contribution.js +1403 -0
  35. package/vscode/src/vs/workbench/browser/parts/editor/editorConfiguration.js +188 -0
  36. package/vscode/src/vs/workbench/browser/parts/editor/editorDropTarget.js +523 -0
  37. package/vscode/src/vs/workbench/browser/parts/editor/editorPart.js +1030 -0
  38. package/vscode/src/vs/workbench/browser/parts/editor/editorParts.js +391 -0
  39. package/vscode/src/vs/workbench/browser/parts/editor/media/editordroptarget.css.js +6 -0
  40. package/vscode/src/vs/workbench/browser/parts/media/compositepart.css.js +6 -0
  41. package/vscode/src/vs/workbench/browser/parts/media/paneCompositePart.css.js +6 -0
  42. package/vscode/src/vs/workbench/browser/parts/paneCompositeBar.js +643 -0
  43. package/vscode/src/vs/workbench/browser/parts/paneCompositePart.js +472 -0
  44. package/vscode/src/vs/workbench/browser/parts/paneCompositePartService.js +68 -0
  45. package/vscode/src/vs/workbench/browser/parts/panel/panelPart.js +160 -0
  46. package/vscode/src/vs/workbench/browser/parts/sidebar/media/sidebarpart.css.js +6 -0
  47. package/vscode/src/vs/workbench/browser/parts/sidebar/sidebarActions.js +39 -0
  48. package/vscode/src/vs/workbench/browser/parts/sidebar/sidebarPart.js +238 -0
  49. package/vscode/src/vs/workbench/browser/style.js +54 -0
  50. package/vscode/src/vs/workbench/browser/window.js +381 -0
  51. package/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchy.contribution.js +300 -0
  52. package/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyPeek.js +367 -0
  53. package/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree.js +135 -0
  54. package/vscode/src/vs/workbench/contrib/callHierarchy/browser/media/callHierarchy.css.js +6 -0
  55. package/vscode/src/vs/workbench/contrib/customEditor/browser/customEditor.contribution.js +18 -0
  56. package/vscode/src/vs/workbench/contrib/customEditor/browser/customEditorInputFactory.js +146 -0
  57. package/vscode/src/vs/workbench/contrib/customEditor/browser/customEditors.js +215 -0
  58. package/vscode/src/vs/workbench/contrib/customEditor/browser/media/customEditor.css.js +6 -0
  59. package/vscode/src/vs/workbench/contrib/customEditor/common/contributedCustomEditors.js +78 -0
  60. package/vscode/src/vs/workbench/contrib/customEditor/common/customEditor.js +56 -0
  61. package/vscode/src/vs/workbench/contrib/customEditor/common/customEditorModelManager.js +63 -0
  62. package/vscode/src/vs/workbench/contrib/customEditor/common/extensionPoint.js +183 -0
  63. package/vscode/src/vs/workbench/contrib/externalUriOpener/common/externalUriOpener.contribution.js +8 -0
  64. package/vscode/src/vs/workbench/contrib/languageStatus/browser/languageStatus.contribution.js +408 -0
  65. package/vscode/src/vs/workbench/contrib/languageStatus/browser/media/languageStatus.css.js +6 -0
  66. package/vscode/src/vs/workbench/contrib/limitIndicator/browser/limitIndicator.contribution.js +147 -0
  67. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/commands/commands.js +635 -0
  68. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/commands/devCommands.js +230 -0
  69. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/mergeEditor.contribution.js +75 -0
  70. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/mergeEditorSerializer.js +42 -0
  71. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/colors.js +81 -0
  72. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/conflictActions.js +350 -0
  73. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/editorGutter.js +100 -0
  74. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/editors/baseCodeEditorView.js +148 -0
  75. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/editors/codeEditorView.js +106 -0
  76. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/editors/inputCodeEditorView.js +403 -0
  77. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/editors/resultCodeEditorView.js +199 -0
  78. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/fixedZoneWidget.js +41 -0
  79. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/lineAlignment.js +128 -0
  80. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/media/mergeEditor.css.js +6 -0
  81. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/mergeEditor.js +619 -0
  82. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/scrollSynchronizer.js +161 -0
  83. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/viewModel.js +266 -0
  84. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/viewZones.js +173 -0
  85. package/vscode/src/vs/workbench/contrib/preferences/browser/keyboardLayoutPicker.js +195 -0
  86. package/vscode/src/vs/workbench/contrib/sash/browser/sash.contribution.js +38 -0
  87. package/vscode/src/vs/workbench/contrib/sash/browser/sash.js +41 -0
  88. package/vscode/src/vs/workbench/contrib/typeHierarchy/browser/media/typeHierarchy.css.js +6 -0
  89. package/vscode/src/vs/workbench/contrib/typeHierarchy/browser/typeHierarchy.contribution.js +283 -0
  90. package/vscode/src/vs/workbench/contrib/typeHierarchy/browser/typeHierarchyPeek.js +362 -0
  91. package/vscode/src/vs/workbench/contrib/typeHierarchy/browser/typeHierarchyTree.js +133 -0
  92. package/vscode/src/vs/workbench/contrib/webview/browser/overlayWebview.js +314 -0
  93. package/vscode/src/vs/workbench/contrib/webview/browser/resourceLoading.js +96 -0
  94. package/vscode/src/vs/workbench/contrib/webview/browser/themeing.js +98 -0
  95. package/vscode/src/vs/workbench/contrib/webview/browser/webviewElement.js +656 -0
  96. package/vscode/src/vs/workbench/contrib/webview/browser/webviewFindWidget.js +65 -0
  97. package/vscode/src/vs/workbench/contrib/webview/browser/webviewService.js +59 -0
  98. package/vscode/src/vs/workbench/contrib/webviewPanel/browser/webviewCommands.js +143 -0
  99. package/vscode/src/vs/workbench/contrib/webviewPanel/browser/webviewEditorInputSerializer.js +121 -0
  100. package/vscode/src/vs/workbench/contrib/webviewPanel/browser/webviewPanel.contribution.js +67 -0
  101. package/vscode/src/vs/workbench/contrib/webviewView/browser/webviewViewPane.js +234 -0
  102. package/vscode/src/vs/workbench/contrib/webviewView/browser/webviewViewService.js +45 -0
  103. package/vscode/src/vs/workbench/services/activity/browser/activityService.js +145 -0
  104. package/vscode/src/vs/workbench/services/auxiliaryWindow/browser/auxiliaryWindowService.js +341 -0
  105. package/vscode/src/vs/workbench/services/driver/browser/driver.js +186 -0
  106. package/vscode/src/vs/workbench/services/editor/browser/editorPaneService.js +13 -0
  107. package/vscode/src/vs/workbench/services/editor/browser/editorResolverService.js +676 -0
  108. package/vscode/src/vs/workbench/services/history/browser/historyService.js +1516 -0
  109. package/vscode/src/vs/workbench/services/progress/browser/media/progressService.css.js +6 -0
  110. package/vscode/src/vs/workbench/services/progress/browser/progressService.js +527 -0
  111. package/vscode/src/vs/workbench/services/untitled/common/untitledTextEditorHandler.js +102 -0
  112. package/vscode/src/vs/workbench/services/untitled/common/untitledTextEditorService.js +133 -0
  113. package/vscode/src/vs/workbench/services/views/browser/viewDescriptorService.js +711 -0
  114. package/vscode/src/vs/workbench/services/views/common/viewContainerModel.js +603 -0
@@ -0,0 +1,606 @@
1
+ import { __decorate, __param } from 'vscode/external/tslib/tslib.es6.js';
2
+ import { localizeWithPath } from 'vscode/vscode/vs/nls';
3
+ import { toAction } from 'vscode/vscode/vs/base/common/actions';
4
+ import { IInstantiationService } from 'vscode/vscode/vs/platform/instantiation/common/instantiation';
5
+ import { ActionBar } from 'vscode/vscode/vs/base/browser/ui/actionbar/actionbar';
6
+ import { CompositeOverflowActivityAction, CompositeActionViewItem, CompositeOverflowActivityActionViewItem } from 'vscode/vscode/vs/workbench/browser/parts/compositeBarActions';
7
+ import { $, addDisposableListener, EventType, getWindow, isAncestor, EventHelper } from 'vscode/vscode/vs/base/browser/dom';
8
+ import { StandardMouseEvent } from 'vscode/vscode/vs/base/browser/mouseEvent';
9
+ import { IContextMenuService } from 'vscode/vscode/vs/platform/contextview/browser/contextView.service';
10
+ import { Widget } from 'vscode/vscode/vs/base/browser/ui/widget';
11
+ import { isUndefinedOrNull } from 'vscode/vscode/vs/base/common/types';
12
+ import { Emitter } from 'vscode/vscode/vs/base/common/event';
13
+ import { IViewDescriptorService } from 'vscode/vscode/vs/workbench/common/views.service';
14
+ import { CompositeDragAndDropObserver, toggleDropEffect } from 'vscode/vscode/vs/workbench/browser/dnd';
15
+ import { Gesture, EventType as EventType$1 } from 'vscode/vscode/vs/base/browser/touch';
16
+
17
+ class CompositeDragAndDrop {
18
+ constructor(viewDescriptorService, targetContainerLocation, orientation, openComposite, moveComposite, getItems) {
19
+ this.viewDescriptorService = viewDescriptorService;
20
+ this.targetContainerLocation = targetContainerLocation;
21
+ this.orientation = orientation;
22
+ this.openComposite = openComposite;
23
+ this.moveComposite = moveComposite;
24
+ this.getItems = getItems;
25
+ }
26
+ drop(data, targetCompositeId, originalEvent, before) {
27
+ const dragData = data.getData();
28
+ if (dragData.type === 'composite') {
29
+ const currentContainer = this.viewDescriptorService.getViewContainerById(dragData.id);
30
+ const currentLocation = this.viewDescriptorService.getViewContainerLocation(currentContainer);
31
+ if (currentLocation === this.targetContainerLocation) {
32
+ if (targetCompositeId) {
33
+ this.moveComposite(dragData.id, targetCompositeId, before);
34
+ }
35
+ }
36
+ else {
37
+ this.viewDescriptorService.moveViewContainerToLocation(currentContainer, this.targetContainerLocation, this.getTargetIndex(targetCompositeId, before), 'dnd');
38
+ }
39
+ }
40
+ if (dragData.type === 'view') {
41
+ const viewToMove = this.viewDescriptorService.getViewDescriptorById(dragData.id);
42
+ if (viewToMove && viewToMove.canMoveView) {
43
+ this.viewDescriptorService.moveViewToLocation(viewToMove, this.targetContainerLocation, 'dnd');
44
+ const newContainer = this.viewDescriptorService.getViewContainerByViewId(viewToMove.id);
45
+ if (targetCompositeId) {
46
+ this.moveComposite(newContainer.id, targetCompositeId, before);
47
+ }
48
+ this.openComposite(newContainer.id, true).then(composite => {
49
+ composite?.openView(viewToMove.id, true);
50
+ });
51
+ }
52
+ }
53
+ }
54
+ onDragEnter(data, targetCompositeId, originalEvent) {
55
+ return this.canDrop(data, targetCompositeId);
56
+ }
57
+ onDragOver(data, targetCompositeId, originalEvent) {
58
+ return this.canDrop(data, targetCompositeId);
59
+ }
60
+ getTargetIndex(targetId, before2d) {
61
+ if (!targetId) {
62
+ return undefined;
63
+ }
64
+ const items = this.getItems();
65
+ const before = this.orientation === 0 ? before2d?.horizontallyBefore : before2d?.verticallyBefore;
66
+ return items.filter(item => item.visible).findIndex(item => item.id === targetId) + (before ? 0 : 1);
67
+ }
68
+ canDrop(data, targetCompositeId) {
69
+ const dragData = data.getData();
70
+ if (dragData.type === 'composite') {
71
+ const currentContainer = this.viewDescriptorService.getViewContainerById(dragData.id);
72
+ const currentLocation = this.viewDescriptorService.getViewContainerLocation(currentContainer);
73
+ if (currentLocation === this.targetContainerLocation) {
74
+ return dragData.id !== targetCompositeId;
75
+ }
76
+ return true;
77
+ }
78
+ else {
79
+ const viewDescriptor = this.viewDescriptorService.getViewDescriptorById(dragData.id);
80
+ if (!viewDescriptor || !viewDescriptor.canMoveView) {
81
+ return false;
82
+ }
83
+ return true;
84
+ }
85
+ }
86
+ }
87
+ let CompositeBar = class CompositeBar extends Widget {
88
+ constructor(items, options, instantiationService, contextMenuService, viewDescriptorService) {
89
+ super();
90
+ this.options = options;
91
+ this.instantiationService = instantiationService;
92
+ this.contextMenuService = contextMenuService;
93
+ this.viewDescriptorService = viewDescriptorService;
94
+ this._onDidChange = this._register(( new Emitter()));
95
+ this.onDidChange = this._onDidChange.event;
96
+ this.model = ( new CompositeBarModel(items, options));
97
+ this.visibleComposites = [];
98
+ this.compositeSizeInBar = ( new Map());
99
+ this.computeSizes(this.model.visibleItems);
100
+ }
101
+ getCompositeBarItems() {
102
+ return [...this.model.items];
103
+ }
104
+ setCompositeBarItems(items) {
105
+ this.model.setItems(items);
106
+ this.updateCompositeSwitcher();
107
+ }
108
+ getPinnedComposites() {
109
+ return this.model.pinnedItems;
110
+ }
111
+ getVisibleComposites() {
112
+ return this.model.visibleItems;
113
+ }
114
+ create(parent) {
115
+ const actionBarDiv = parent.appendChild($('.composite-bar'));
116
+ this.compositeSwitcherBar = this._register(( new ActionBar(actionBarDiv, {
117
+ actionViewItemProvider: (action, options) => {
118
+ if (action instanceof CompositeOverflowActivityAction) {
119
+ return this.compositeOverflowActionViewItem;
120
+ }
121
+ const item = this.model.findItem(action.id);
122
+ return item && this.instantiationService.createInstance(CompositeActionViewItem, { ...options, draggable: true, colors: this.options.colors, icon: this.options.icon, hoverOptions: this.options.activityHoverOptions, compact: this.options.compact }, action, item.pinnedAction, item.toggleBadgeAction, compositeId => this.options.getContextMenuActionsForComposite(compositeId), () => this.getContextMenuActions(), this.options.dndHandler, this);
123
+ },
124
+ orientation: this.options.orientation,
125
+ ariaLabel: ( localizeWithPath(
126
+ 'vs/workbench/browser/parts/compositeBar',
127
+ 'activityBarAriaLabel',
128
+ "Active View Switcher"
129
+ )),
130
+ ariaRole: 'tablist',
131
+ preventLoopNavigation: this.options.preventLoopNavigation,
132
+ triggerKeys: { keyDown: true }
133
+ })));
134
+ this._register(addDisposableListener(parent, EventType.CONTEXT_MENU, e => this.showContextMenu(getWindow(parent), e)));
135
+ this._register(Gesture.addTarget(parent));
136
+ this._register(addDisposableListener(parent, EventType$1.Contextmenu, e => this.showContextMenu(getWindow(parent), e)));
137
+ let insertDropBefore = undefined;
138
+ this._register(CompositeDragAndDropObserver.INSTANCE.registerTarget(parent, {
139
+ onDragOver: (e) => {
140
+ const visibleItems = this.getVisibleComposites();
141
+ if (!visibleItems.length || (e.eventData.target && isAncestor(e.eventData.target, actionBarDiv))) {
142
+ insertDropBefore = this.updateFromDragging(parent, false, false, true);
143
+ return;
144
+ }
145
+ const insertAtFront = this.insertAtFront(actionBarDiv, e.eventData);
146
+ const target = insertAtFront ? visibleItems[0] : visibleItems[visibleItems.length - 1];
147
+ const validDropTarget = this.options.dndHandler.onDragOver(e.dragAndDropData, target.id, e.eventData);
148
+ toggleDropEffect(e.eventData.dataTransfer, 'move', validDropTarget);
149
+ insertDropBefore = this.updateFromDragging(parent, validDropTarget, insertAtFront, true);
150
+ },
151
+ onDragLeave: (e) => {
152
+ insertDropBefore = this.updateFromDragging(parent, false, false, false);
153
+ },
154
+ onDragEnd: (e) => {
155
+ insertDropBefore = this.updateFromDragging(parent, false, false, false);
156
+ },
157
+ onDrop: (e) => {
158
+ const visibleItems = this.getVisibleComposites();
159
+ if (visibleItems.length) {
160
+ const target = this.insertAtFront(actionBarDiv, e.eventData) ? visibleItems[0] : visibleItems[visibleItems.length - 1];
161
+ this.options.dndHandler.drop(e.dragAndDropData, target.id, e.eventData, insertDropBefore);
162
+ }
163
+ insertDropBefore = this.updateFromDragging(parent, false, false, false);
164
+ }
165
+ }));
166
+ return actionBarDiv;
167
+ }
168
+ insertAtFront(element, event) {
169
+ const rect = element.getBoundingClientRect();
170
+ const posX = event.clientX;
171
+ const posY = event.clientY;
172
+ switch (this.options.orientation) {
173
+ case 0 :
174
+ return posX < rect.left;
175
+ case 1 :
176
+ return posY < rect.top;
177
+ }
178
+ }
179
+ updateFromDragging(element, showFeedback, front, isDragging) {
180
+ element.classList.toggle('dragged-over', isDragging);
181
+ element.classList.toggle('dragged-over-head', showFeedback && front);
182
+ element.classList.toggle('dragged-over-tail', showFeedback && !front);
183
+ if (!showFeedback) {
184
+ return undefined;
185
+ }
186
+ return { verticallyBefore: front, horizontallyBefore: front };
187
+ }
188
+ focus(index) {
189
+ this.compositeSwitcherBar?.focus(index);
190
+ }
191
+ recomputeSizes() {
192
+ this.computeSizes(this.model.visibleItems);
193
+ this.updateCompositeSwitcher();
194
+ }
195
+ layout(dimension) {
196
+ this.dimension = dimension;
197
+ if (dimension.height === 0 || dimension.width === 0) {
198
+ return;
199
+ }
200
+ if (this.compositeSizeInBar.size === 0) {
201
+ this.computeSizes(this.model.visibleItems);
202
+ }
203
+ this.updateCompositeSwitcher();
204
+ }
205
+ addComposite({ id, name, order, requestedIndex }) {
206
+ if (this.model.add(id, name, order, requestedIndex)) {
207
+ this.computeSizes([this.model.findItem(id)]);
208
+ this.updateCompositeSwitcher();
209
+ }
210
+ }
211
+ removeComposite(id) {
212
+ if (this.isPinned(id)) {
213
+ this.unpin(id);
214
+ }
215
+ if (this.model.remove(id)) {
216
+ this.updateCompositeSwitcher();
217
+ }
218
+ }
219
+ hideComposite(id) {
220
+ if (this.model.hide(id)) {
221
+ this.resetActiveComposite(id);
222
+ this.updateCompositeSwitcher();
223
+ }
224
+ }
225
+ activateComposite(id) {
226
+ const previousActiveItem = this.model.activeItem;
227
+ if (this.model.activate(id)) {
228
+ if (this.visibleComposites.indexOf(id) === -1 || (!!this.model.activeItem && !this.model.activeItem.pinned) || (previousActiveItem && !previousActiveItem.pinned)) {
229
+ this.updateCompositeSwitcher();
230
+ }
231
+ }
232
+ }
233
+ deactivateComposite(id) {
234
+ const previousActiveItem = this.model.activeItem;
235
+ if (this.model.deactivate()) {
236
+ if (previousActiveItem && !previousActiveItem.pinned) {
237
+ this.updateCompositeSwitcher();
238
+ }
239
+ }
240
+ }
241
+ async pin(compositeId, open) {
242
+ if (this.model.setPinned(compositeId, true)) {
243
+ this.updateCompositeSwitcher();
244
+ if (open) {
245
+ await this.options.openComposite(compositeId);
246
+ this.activateComposite(compositeId);
247
+ }
248
+ }
249
+ }
250
+ unpin(compositeId) {
251
+ if (this.model.setPinned(compositeId, false)) {
252
+ this.updateCompositeSwitcher();
253
+ this.resetActiveComposite(compositeId);
254
+ }
255
+ }
256
+ areBadgesEnabled(compositeId) {
257
+ return this.viewDescriptorService.getViewContainerBadgeEnablementState(compositeId);
258
+ }
259
+ toggleBadgeEnablement(compositeId) {
260
+ this.viewDescriptorService.setViewContainerBadgeEnablementState(compositeId, !this.areBadgesEnabled(compositeId));
261
+ this.updateCompositeSwitcher();
262
+ const item = this.model.findItem(compositeId);
263
+ if (item) {
264
+ item.activityAction.activity = item.activityAction.activity;
265
+ }
266
+ }
267
+ resetActiveComposite(compositeId) {
268
+ const defaultCompositeId = this.options.getDefaultCompositeId();
269
+ if (!this.model.activeItem || this.model.activeItem.id !== compositeId) {
270
+ return;
271
+ }
272
+ this.deactivateComposite(compositeId);
273
+ if (defaultCompositeId && defaultCompositeId !== compositeId && this.isPinned(defaultCompositeId)) {
274
+ this.options.openComposite(defaultCompositeId, true);
275
+ }
276
+ else {
277
+ this.options.openComposite(this.visibleComposites.filter(cid => cid !== compositeId)[0]);
278
+ }
279
+ }
280
+ isPinned(compositeId) {
281
+ const item = this.model.findItem(compositeId);
282
+ return item?.pinned;
283
+ }
284
+ move(compositeId, toCompositeId, before) {
285
+ if (before !== undefined) {
286
+ const fromIndex = this.model.items.findIndex(c => c.id === compositeId);
287
+ let toIndex = this.model.items.findIndex(c => c.id === toCompositeId);
288
+ if (fromIndex >= 0 && toIndex >= 0) {
289
+ if (!before && fromIndex > toIndex) {
290
+ toIndex++;
291
+ }
292
+ if (before && fromIndex < toIndex) {
293
+ toIndex--;
294
+ }
295
+ if (toIndex < this.model.items.length && toIndex >= 0 && toIndex !== fromIndex) {
296
+ if (this.model.move(this.model.items[fromIndex].id, this.model.items[toIndex].id)) {
297
+ setTimeout(() => this.updateCompositeSwitcher(), 0);
298
+ }
299
+ }
300
+ }
301
+ }
302
+ else {
303
+ if (this.model.move(compositeId, toCompositeId)) {
304
+ setTimeout(() => this.updateCompositeSwitcher(), 0);
305
+ }
306
+ }
307
+ }
308
+ getAction(compositeId) {
309
+ const item = this.model.findItem(compositeId);
310
+ return item?.activityAction;
311
+ }
312
+ computeSizes(items) {
313
+ const size = this.options.compositeSize;
314
+ if (size) {
315
+ items.forEach(composite => this.compositeSizeInBar.set(composite.id, size));
316
+ }
317
+ else {
318
+ const compositeSwitcherBar = this.compositeSwitcherBar;
319
+ if (compositeSwitcherBar && this.dimension && this.dimension.height !== 0 && this.dimension.width !== 0) {
320
+ const currentItemsLength = compositeSwitcherBar.viewItems.length;
321
+ compositeSwitcherBar.push(( items.map(composite => composite.activityAction)));
322
+ items.forEach((composite, index) => this.compositeSizeInBar.set(composite.id, this.options.orientation === 1
323
+ ? compositeSwitcherBar.getHeight(currentItemsLength + index)
324
+ : compositeSwitcherBar.getWidth(currentItemsLength + index)));
325
+ items.forEach(() => compositeSwitcherBar.pull(compositeSwitcherBar.viewItems.length - 1));
326
+ }
327
+ }
328
+ }
329
+ updateCompositeSwitcher() {
330
+ const compositeSwitcherBar = this.compositeSwitcherBar;
331
+ if (!compositeSwitcherBar || !this.dimension) {
332
+ return;
333
+ }
334
+ let compositesToShow = ( this.model.visibleItems.filter(item => item.pinned
335
+ || (this.model.activeItem && this.model.activeItem.id === item.id) ).map(item => item.id));
336
+ let maxVisible = compositesToShow.length;
337
+ const totalComposites = compositesToShow.length;
338
+ let size = 0;
339
+ const limit = this.options.orientation === 1 ? this.dimension.height : this.dimension.width;
340
+ for (let i = 0; i < compositesToShow.length; i++) {
341
+ const compositeSize = this.compositeSizeInBar.get(compositesToShow[i]);
342
+ if (size + compositeSize > limit) {
343
+ maxVisible = i;
344
+ break;
345
+ }
346
+ size += compositeSize;
347
+ }
348
+ if (totalComposites > maxVisible) {
349
+ compositesToShow = compositesToShow.slice(0, maxVisible);
350
+ }
351
+ if (this.model.activeItem && compositesToShow.every(compositeId => !!this.model.activeItem && compositeId !== this.model.activeItem.id)) {
352
+ size += this.compositeSizeInBar.get(this.model.activeItem.id);
353
+ compositesToShow.push(this.model.activeItem.id);
354
+ }
355
+ while (size > limit && compositesToShow.length) {
356
+ const removedComposite = compositesToShow.length > 1 ? compositesToShow.splice(compositesToShow.length - 2, 1)[0] : compositesToShow.pop();
357
+ size -= this.compositeSizeInBar.get(removedComposite);
358
+ }
359
+ if (totalComposites > compositesToShow.length) {
360
+ size += this.options.overflowActionSize;
361
+ }
362
+ while (size > limit && compositesToShow.length) {
363
+ const removedComposite = compositesToShow.length > 1 && compositesToShow[compositesToShow.length - 1] === this.model.activeItem?.id ?
364
+ compositesToShow.splice(compositesToShow.length - 2, 1)[0] : compositesToShow.pop();
365
+ size -= this.compositeSizeInBar.get(removedComposite);
366
+ }
367
+ if (totalComposites === compositesToShow.length && this.compositeOverflowAction) {
368
+ compositeSwitcherBar.pull(compositeSwitcherBar.length() - 1);
369
+ this.compositeOverflowAction.dispose();
370
+ this.compositeOverflowAction = undefined;
371
+ this.compositeOverflowActionViewItem?.dispose();
372
+ this.compositeOverflowActionViewItem = undefined;
373
+ }
374
+ const compositesToRemove = [];
375
+ this.visibleComposites.forEach((compositeId, index) => {
376
+ if (!compositesToShow.includes(compositeId)) {
377
+ compositesToRemove.push(index);
378
+ }
379
+ });
380
+ compositesToRemove.reverse().forEach(index => {
381
+ compositeSwitcherBar.pull(index);
382
+ this.visibleComposites.splice(index, 1);
383
+ });
384
+ compositesToShow.forEach((compositeId, newIndex) => {
385
+ const currentIndex = this.visibleComposites.indexOf(compositeId);
386
+ if (newIndex !== currentIndex) {
387
+ if (currentIndex !== -1) {
388
+ compositeSwitcherBar.pull(currentIndex);
389
+ this.visibleComposites.splice(currentIndex, 1);
390
+ }
391
+ compositeSwitcherBar.push(this.model.findItem(compositeId).activityAction, { label: true, icon: this.options.icon, index: newIndex });
392
+ this.visibleComposites.splice(newIndex, 0, compositeId);
393
+ }
394
+ });
395
+ if (totalComposites > compositesToShow.length && !this.compositeOverflowAction) {
396
+ this.compositeOverflowAction = this._register(this.instantiationService.createInstance(CompositeOverflowActivityAction, () => {
397
+ this.compositeOverflowActionViewItem?.showMenu();
398
+ }));
399
+ this.compositeOverflowActionViewItem = this._register(this.instantiationService.createInstance(CompositeOverflowActivityActionViewItem, this.compositeOverflowAction, () => this.getOverflowingComposites(), () => this.model.activeItem ? this.model.activeItem.id : undefined, compositeId => {
400
+ const item = this.model.findItem(compositeId);
401
+ return item?.activity[0]?.badge;
402
+ }, this.options.getOnCompositeClickAction, this.options.colors, this.options.activityHoverOptions));
403
+ compositeSwitcherBar.push(this.compositeOverflowAction, { label: false, icon: true });
404
+ }
405
+ this._onDidChange.fire();
406
+ }
407
+ getOverflowingComposites() {
408
+ let overflowingIds = ( this.model.visibleItems.filter(item => item.pinned).map(item => item.id));
409
+ if (this.model.activeItem && !this.model.activeItem.pinned) {
410
+ overflowingIds.push(this.model.activeItem.id);
411
+ }
412
+ overflowingIds = overflowingIds.filter(compositeId => !this.visibleComposites.includes(compositeId));
413
+ return ( this.model.visibleItems.filter(c => overflowingIds.includes(c.id)).map(
414
+ item => { return { id: item.id, name: this.getAction(item.id)?.label || item.name }; }
415
+ ));
416
+ }
417
+ showContextMenu(targetWindow, e) {
418
+ EventHelper.stop(e, true);
419
+ const event = ( new StandardMouseEvent(targetWindow, e));
420
+ this.contextMenuService.showContextMenu({
421
+ getAnchor: () => event,
422
+ getActions: () => this.getContextMenuActions(e)
423
+ });
424
+ }
425
+ getContextMenuActions(e) {
426
+ const actions = ( this.model.visibleItems
427
+ .map(({ id, name, activityAction }) => (toAction({
428
+ id,
429
+ label: this.getAction(id).label || name || id,
430
+ checked: this.isPinned(id),
431
+ enabled: activityAction.enabled,
432
+ run: () => {
433
+ if (this.isPinned(id)) {
434
+ this.unpin(id);
435
+ }
436
+ else {
437
+ this.pin(id, true);
438
+ }
439
+ }
440
+ }))));
441
+ this.options.fillExtraContextMenuActions(actions, e);
442
+ return actions;
443
+ }
444
+ };
445
+ CompositeBar = ( __decorate([
446
+ ( __param(2, IInstantiationService)),
447
+ ( __param(3, IContextMenuService)),
448
+ ( __param(4, IViewDescriptorService))
449
+ ], CompositeBar));
450
+ class CompositeBarModel {
451
+ get items() { return this._items; }
452
+ constructor(items, options) {
453
+ this._items = [];
454
+ this.options = options;
455
+ this.setItems(items);
456
+ }
457
+ setItems(items) {
458
+ this._items = [];
459
+ this._items = ( items
460
+ .map(
461
+ i => this.createCompositeBarItem(i.id, i.name, i.order, i.pinned, i.visible)
462
+ ));
463
+ }
464
+ get visibleItems() {
465
+ return this.items.filter(item => item.visible);
466
+ }
467
+ get pinnedItems() {
468
+ return this.items.filter(item => item.visible && item.pinned);
469
+ }
470
+ createCompositeBarItem(id, name, order, pinned, visible) {
471
+ const options = this.options;
472
+ return {
473
+ id, name, pinned, order, visible,
474
+ activity: [],
475
+ get activityAction() {
476
+ return options.getActivityAction(id);
477
+ },
478
+ get pinnedAction() {
479
+ return options.getCompositePinnedAction(id);
480
+ },
481
+ get toggleBadgeAction() {
482
+ return options.getCompositeBadgeAction(id);
483
+ }
484
+ };
485
+ }
486
+ add(id, name, order, requestedIndex) {
487
+ const item = this.findItem(id);
488
+ if (item) {
489
+ let changed = false;
490
+ item.name = name;
491
+ if (!isUndefinedOrNull(order)) {
492
+ changed = item.order !== order;
493
+ item.order = order;
494
+ }
495
+ if (!item.visible) {
496
+ item.visible = true;
497
+ changed = true;
498
+ }
499
+ return changed;
500
+ }
501
+ else {
502
+ const item = this.createCompositeBarItem(id, name, order, true, true);
503
+ if (!isUndefinedOrNull(requestedIndex)) {
504
+ let index = 0;
505
+ let rIndex = requestedIndex;
506
+ while (rIndex > 0 && index < this.items.length) {
507
+ if (this.items[index++].visible) {
508
+ rIndex--;
509
+ }
510
+ }
511
+ this.items.splice(index, 0, item);
512
+ }
513
+ else if (isUndefinedOrNull(order)) {
514
+ this.items.push(item);
515
+ }
516
+ else {
517
+ let index = 0;
518
+ while (index < this.items.length && typeof this.items[index].order === 'number' && this.items[index].order < order) {
519
+ index++;
520
+ }
521
+ this.items.splice(index, 0, item);
522
+ }
523
+ return true;
524
+ }
525
+ }
526
+ remove(id) {
527
+ for (let index = 0; index < this.items.length; index++) {
528
+ if (this.items[index].id === id) {
529
+ this.items.splice(index, 1);
530
+ return true;
531
+ }
532
+ }
533
+ return false;
534
+ }
535
+ hide(id) {
536
+ for (const item of this.items) {
537
+ if (item.id === id) {
538
+ if (item.visible) {
539
+ item.visible = false;
540
+ return true;
541
+ }
542
+ return false;
543
+ }
544
+ }
545
+ return false;
546
+ }
547
+ move(compositeId, toCompositeId) {
548
+ const fromIndex = this.findIndex(compositeId);
549
+ const toIndex = this.findIndex(toCompositeId);
550
+ if (fromIndex === -1 || toIndex === -1) {
551
+ return false;
552
+ }
553
+ const sourceItem = this.items.splice(fromIndex, 1)[0];
554
+ this.items.splice(toIndex, 0, sourceItem);
555
+ sourceItem.pinned = true;
556
+ return true;
557
+ }
558
+ setPinned(id, pinned) {
559
+ for (const item of this.items) {
560
+ if (item.id === id) {
561
+ if (item.pinned !== pinned) {
562
+ item.pinned = pinned;
563
+ return true;
564
+ }
565
+ return false;
566
+ }
567
+ }
568
+ return false;
569
+ }
570
+ activate(id) {
571
+ if (!this.activeItem || this.activeItem.id !== id) {
572
+ if (this.activeItem) {
573
+ this.deactivate();
574
+ }
575
+ for (const item of this.items) {
576
+ if (item.id === id) {
577
+ this.activeItem = item;
578
+ this.activeItem.activityAction.activate();
579
+ return true;
580
+ }
581
+ }
582
+ }
583
+ return false;
584
+ }
585
+ deactivate() {
586
+ if (this.activeItem) {
587
+ this.activeItem.activityAction.deactivate();
588
+ this.activeItem = undefined;
589
+ return true;
590
+ }
591
+ return false;
592
+ }
593
+ findItem(id) {
594
+ return this.items.filter(item => item.id === id)[0];
595
+ }
596
+ findIndex(id) {
597
+ for (let index = 0; index < this.items.length; index++) {
598
+ if (this.items[index].id === id) {
599
+ return index;
600
+ }
601
+ }
602
+ return -1;
603
+ }
604
+ }
605
+
606
+ export { CompositeBar, CompositeDragAndDrop };