@codingame/monaco-vscode-scm-service-override 23.2.2 → 24.1.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 (23) hide show
  1. package/package.json +2 -14
  2. package/vscode/src/vs/workbench/contrib/scm/browser/activity.js +7 -7
  3. package/vscode/src/vs/workbench/contrib/scm/browser/media/scm.css +44 -23
  4. package/vscode/src/vs/workbench/contrib/scm/browser/menus.js +1 -1
  5. package/vscode/src/vs/workbench/contrib/scm/browser/quickDiffDecorator.js +4 -4
  6. package/vscode/src/vs/workbench/contrib/scm/browser/quickDiffModel.d.ts +1 -1
  7. package/vscode/src/vs/workbench/contrib/scm/browser/quickDiffModel.js +2 -2
  8. package/vscode/src/vs/workbench/contrib/scm/browser/quickDiffWidget.d.ts +1 -1
  9. package/vscode/src/vs/workbench/contrib/scm/browser/quickDiffWidget.js +14 -14
  10. package/vscode/src/vs/workbench/contrib/scm/browser/scm.contribution.js +94 -94
  11. package/vscode/src/vs/workbench/contrib/scm/browser/scmAccessibilityHelp.js +23 -23
  12. package/vscode/src/vs/workbench/contrib/scm/browser/scmHistoryViewPane.d.ts +1 -1
  13. package/vscode/src/vs/workbench/contrib/scm/browser/scmHistoryViewPane.js +151 -110
  14. package/vscode/src/vs/workbench/contrib/scm/browser/scmRepositoriesViewPane.d.ts +9 -2
  15. package/vscode/src/vs/workbench/contrib/scm/browser/scmRepositoriesViewPane.js +139 -50
  16. package/vscode/src/vs/workbench/contrib/scm/browser/scmRepositoryRenderer.js +2 -5
  17. package/vscode/src/vs/workbench/contrib/scm/browser/scmViewPane.d.ts +2 -2
  18. package/vscode/src/vs/workbench/contrib/scm/browser/scmViewPane.js +71 -47
  19. package/vscode/src/vs/workbench/contrib/scm/browser/scmViewPaneContainer.d.ts +1 -1
  20. package/vscode/src/vs/workbench/contrib/scm/browser/scmViewPaneContainer.js +1 -1
  21. package/vscode/src/vs/workbench/contrib/scm/browser/scmViewService.d.ts +2 -2
  22. package/vscode/src/vs/workbench/contrib/scm/browser/scmViewService.js +13 -19
  23. package/vscode/src/vs/workbench/contrib/scm/browser/workingSet.js +1 -1
@@ -3,6 +3,7 @@ import { registerCss } from '@codingame/monaco-vscode-api/css';
3
3
  import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
4
4
  import * as scm from './media/scm.css';
5
5
  import { $, reset, append, h } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
6
+ import { HoverStyle } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/hover/hover';
6
7
  import { IconLabel } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/iconLabel/iconLabel';
7
8
  import { createMatches } from '@codingame/monaco-vscode-api/vscode/vs/base/common/filters';
8
9
  import { combinedDisposable, DisposableStore, Disposable, MutableDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
@@ -13,7 +14,6 @@ import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/pl
13
14
  import { ContextKeyExpr } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey';
14
15
  import { IContextKeyService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service';
15
16
  import { IContextMenuService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextview/browser/contextView.service';
16
- import { WorkbenchHoverDelegate } from '@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover';
17
17
  import { IHoverService } from '@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service';
18
18
  import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
19
19
  import { IKeybindingService } from '@codingame/monaco-vscode-api/vscode/vs/platform/keybinding/common/keybinding.service';
@@ -31,17 +31,15 @@ import '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/colors/misc
31
31
  import '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/colors/quickpickColors';
32
32
  import '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/colors/searchColors';
33
33
  import { IThemeService } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/themeService.service';
34
- import { ViewAction, ViewPane, ViewPaneShowActions } from '@codingame/monaco-vscode-501b06ab-3f58-516b-8a1a-c29d375d3da4-common/vscode/vs/workbench/browser/parts/views/viewPane';
34
+ import { ViewAction, ViewPane, ViewPaneShowActions } from '@codingame/monaco-vscode-api/vscode/vs/workbench/browser/parts/views/viewPane';
35
35
  import { ViewContainerLocation } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/views';
36
36
  import { IViewDescriptorService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/views.service';
37
- import { renderSCMHistoryItemGraph, historyItemHoverDefaultLabelBackground, historyItemHoverLabelForeground, SWIMLANE_WIDTH, renderSCMHistoryGraphPlaceholder, getHistoryItemIndex, toISCMHistoryItemViewModelArray } from '@codingame/monaco-vscode-be8ddbb5-094a-5657-b1cc-fe106c94c632-common/vscode/vs/workbench/contrib/scm/browser/scmHistory';
38
- import { getHistoryItemEditorTitle, isSCMHistoryItemViewModelTreeElement, isSCMHistoryItemChangeViewModelTreeElement, isSCMHistoryItemChangeNode, isSCMHistoryItemLoadMoreTreeElement, isSCMRepository, getProviderKey } from '@codingame/monaco-vscode-bc6f260d-ec63-5c95-9446-1ca7d0872719-common/vscode/vs/workbench/contrib/scm/browser/util';
39
- import { SCMIncomingHistoryItemId, SCMOutgoingHistoryItemId } from '@codingame/monaco-vscode-be8ddbb5-094a-5657-b1cc-fe106c94c632-common/vscode/vs/workbench/contrib/scm/common/history';
37
+ import { toHistoryItemHoverContent, renderSCMHistoryItemGraph, historyItemHoverDefaultLabelBackground, historyItemHoverLabelForeground, SWIMLANE_WIDTH, renderSCMHistoryGraphPlaceholder, getHistoryItemIndex, toISCMHistoryItemViewModelArray } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/scm/browser/scmHistory';
38
+ import { getHistoryItemEditorTitle, isSCMHistoryItemViewModelTreeElement, isSCMHistoryItemChangeViewModelTreeElement, isSCMHistoryItemChangeNode, isSCMHistoryItemLoadMoreTreeElement, isSCMRepository, getProviderKey } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/scm/browser/util';
39
+ import { SCMIncomingHistoryItemId, SCMOutgoingHistoryItemId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/scm/common/history';
40
40
  import { HISTORY_VIEW_PANE_ID, ViewMode } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/scm/common/scm';
41
41
  import { ISCMService, ISCMViewService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/scm/common/scm.service';
42
42
  import { stripIcons } from '@codingame/monaco-vscode-api/vscode/vs/base/common/iconLabels';
43
- import { Position } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/layout/browser/layoutService';
44
- import { IWorkbenchLayoutService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/layout/browser/layoutService.service';
45
43
  import { HoverPosition } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/hover/hoverWidget';
46
44
  import { registerAction2, MenuId, Action2, MenuRegistry, isIMenuItem } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions';
47
45
  import { IMenuService } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions.service';
@@ -59,23 +57,24 @@ import { Iterable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/ite
59
57
  import { clamp } from '@codingame/monaco-vscode-api/vscode/vs/base/common/numbers';
60
58
  import { observableConfigValue } from '@codingame/monaco-vscode-api/vscode/vs/platform/observable/common/platformObservableUtils';
61
59
  import { compare } from '@codingame/monaco-vscode-api/vscode/vs/base/common/strings';
62
- import { getDefaultHoverDelegate } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/hover/hoverDelegateFactory';
63
60
  import { StorageScope, StorageTarget } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage';
64
61
  import { IStorageService } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service';
65
62
  import { IExtensionService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensions.service';
66
63
  import { groupBy } from '@codingame/monaco-vscode-api/vscode/vs/base/common/collections';
67
64
  import { getActionBarActions, getFlatContextMenuActions } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/browser/menuEntryActionViewItem';
68
- import { ResourceLabels } from '@codingame/monaco-vscode-3b5a5cd1-d4ff-500a-b609-57e0cd4afa0a-common/vscode/vs/workbench/browser/labels';
65
+ import { ResourceLabels } from '@codingame/monaco-vscode-api/vscode/vs/workbench/browser/labels';
69
66
  import { FileKind } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files';
70
67
  import { WorkbenchToolBar } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/browser/toolbar';
71
68
  import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service';
72
69
  import { basename } from '@codingame/monaco-vscode-api/vscode/vs/base/common/path';
73
70
  import { IEditorService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/editor/common/editorService.service';
74
- import { ScmHistoryItemResolver } from '@codingame/monaco-vscode-aac7027b-326c-513a-95a9-e4eedd151b38-common/vscode/vs/workbench/contrib/multiDiffEditor/browser/scmMultiDiffSourceResolver';
75
- import { ResourceTree } from '@codingame/monaco-vscode-bc6f260d-ec63-5c95-9446-1ca7d0872719-common/vscode/vs/base/common/resourceTree';
71
+ import { ScmHistoryItemResolver } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/multiDiffEditor/browser/scmMultiDiffSourceResolver';
72
+ import { ResourceTree } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resourceTree';
76
73
  import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
77
74
  import { ILabelService } from '@codingame/monaco-vscode-api/vscode/vs/platform/label/common/label.service';
78
75
  import { CodeDataTransfers } from '@codingame/monaco-vscode-api/vscode/vs/platform/dnd/browser/dnd';
76
+ import { IMarkdownRendererService } from '@codingame/monaco-vscode-api/vscode/vs/platform/markdown/browser/markdownRenderer.service';
77
+ import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
79
78
  import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
80
79
  import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableValue';
81
80
  import { derived } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/derived';
@@ -125,23 +124,23 @@ class SCMHistoryItemRefsActionViewItem extends ActionViewItem {
125
124
  icon.classList.add(...ThemeIcon.asClassNameArray(Codicon.gitBranch));
126
125
  const name = $('.name');
127
126
  if (this._historyItemsFilter === 'all') {
128
- name.textContent = ( localize(10425, "All"));
127
+ name.textContent = ( localize(10560, "All"));
129
128
  }
130
129
  else if (this._historyItemsFilter === 'auto') {
131
- name.textContent = ( localize(10426, "Auto"));
130
+ name.textContent = ( localize(10561, "Auto"));
132
131
  }
133
132
  else if (this._historyItemsFilter.length === 1) {
134
133
  name.textContent = this._historyItemsFilter[0].name;
135
134
  }
136
135
  else {
137
- name.textContent = ( localize(10427, "{0} Items", this._historyItemsFilter.length));
136
+ name.textContent = ( localize(10562, "{0} Items", this._historyItemsFilter.length));
138
137
  }
139
138
  reset(this.label, icon, name);
140
139
  }
141
140
  }
142
141
  getTooltip() {
143
142
  if (this._historyItemsFilter === 'all') {
144
- return localize(10428, "All history item references");
143
+ return localize(10563, "All history item references");
145
144
  }
146
145
  else if (this._historyItemsFilter === 'auto') {
147
146
  const historyProvider = this._repository.provider.historyProvider.get();
@@ -163,7 +162,7 @@ registerAction2(class extends ViewAction {
163
162
  constructor() {
164
163
  super({
165
164
  id: PICK_REPOSITORY_ACTION_ID,
166
- title: ( localize(10429, "Repository Picker")),
165
+ title: ( localize(10564, "Repository Picker")),
167
166
  viewId: HISTORY_VIEW_PANE_ID,
168
167
  f1: false,
169
168
  menu: {
@@ -182,7 +181,7 @@ registerAction2(class extends ViewAction {
182
181
  constructor() {
183
182
  super({
184
183
  id: PICK_HISTORY_ITEM_REFS_ACTION_ID,
185
- title: ( localize(10430, "History Item Reference Picker")),
184
+ title: ( localize(10565, "History Item Reference Picker")),
186
185
  icon: Codicon.gitBranch,
187
186
  viewId: HISTORY_VIEW_PANE_ID,
188
187
  precondition: ( ContextKeys.SCMHistoryItemCount.notEqualsTo(0)),
@@ -202,7 +201,7 @@ registerAction2(class extends ViewAction {
202
201
  constructor() {
203
202
  super({
204
203
  id: 'workbench.scm.action.graph.revealCurrentHistoryItem',
205
- title: ( localize(10431, "Go to Current History Item")),
204
+ title: ( localize(10566, "Go to Current History Item")),
206
205
  icon: Codicon.target,
207
206
  viewId: HISTORY_VIEW_PANE_ID,
208
207
  precondition: ( ContextKeyExpr.and(( ContextKeys.SCMHistoryItemCount.notEqualsTo(0)), ( ContextKeys.SCMCurrentHistoryItemRefInFilter.isEqualTo(true)))),
@@ -222,7 +221,7 @@ registerAction2(class extends ViewAction {
222
221
  constructor() {
223
222
  super({
224
223
  id: 'workbench.scm.action.graph.refresh',
225
- title: ( localize(10432, "Refresh")),
224
+ title: ( localize(10567, "Refresh")),
226
225
  viewId: HISTORY_VIEW_PANE_ID,
227
226
  f1: false,
228
227
  icon: Codicon.refresh,
@@ -241,7 +240,7 @@ registerAction2(class extends ViewAction {
241
240
  constructor() {
242
241
  super({
243
242
  id: 'workbench.scm.action.graph.setListViewMode',
244
- title: ( localize(10433, "View as List")),
243
+ title: ( localize(10568, "View as List")),
245
244
  viewId: HISTORY_VIEW_PANE_ID,
246
245
  toggled: ( ContextKeys.SCMHistoryViewMode.isEqualTo(ViewMode.List)),
247
246
  menu: { id: MenuId.SCMHistoryTitle, group: '9_viewmode', order: 1 },
@@ -256,7 +255,7 @@ registerAction2(class extends ViewAction {
256
255
  constructor() {
257
256
  super({
258
257
  id: 'workbench.scm.action.graph.setTreeViewMode',
259
- title: ( localize(10434, "View as Tree")),
258
+ title: ( localize(10569, "View as Tree")),
260
259
  viewId: HISTORY_VIEW_PANE_ID,
261
260
  toggled: ( ContextKeys.SCMHistoryViewMode.isEqualTo(ViewMode.Tree)),
262
261
  menu: { id: MenuId.SCMHistoryTitle, group: '9_viewmode', order: 2 },
@@ -271,7 +270,7 @@ registerAction2(class extends Action2 {
271
270
  constructor() {
272
271
  super({
273
272
  id: 'workbench.scm.action.graph.viewChanges',
274
- title: ( localize(10435, "Open Changes")),
273
+ title: ( localize(10570, "Open Changes")),
275
274
  icon: Codicon.diffMultiple,
276
275
  f1: false,
277
276
  menu: [
@@ -292,35 +291,47 @@ registerAction2(class extends Action2 {
292
291
  }
293
292
  async run(accessor, provider, ...historyItems) {
294
293
  const commandService = accessor.get(ICommandService);
295
- if (!provider || historyItems.length === 0) {
296
- return;
297
- }
298
- const historyItem = historyItems[0];
299
- const historyItemLast = historyItems[historyItems.length - 1];
300
294
  const historyProvider = provider.historyProvider.get();
301
295
  const historyItemRef = historyProvider?.historyItemRef.get();
302
296
  const historyItemRemoteRef = historyProvider?.historyItemRemoteRef.get();
303
- if (historyItems.length > 1) {
304
- const ancestor = await historyProvider?.resolveHistoryItemRefsCommonAncestor([historyItem.id, historyItemLast.id]);
305
- if (!ancestor || (ancestor !== historyItem.id && ancestor !== historyItemLast.id)) {
306
- return;
307
- }
297
+ if (!provider || !historyProvider || !historyItemRef || historyItems.length === 0) {
298
+ return;
308
299
  }
300
+ const historyItem = historyItems[0];
309
301
  let title, historyItemId, historyItemParentId;
310
- if (historyItem.id === SCMIncomingHistoryItemId) {
311
- title = `${historyItem.subject} - ${historyItemRef?.name} \u2194 ${historyItemRemoteRef?.name}`;
312
- historyItemId = historyProvider.historyItemRemoteRef.get().id;
313
- historyItemParentId = historyItem.parentIds[0];
314
- }
315
- else if (historyItem.id === SCMOutgoingHistoryItemId) {
316
- title = `${historyItem.subject} - ${historyItemRemoteRef?.name} \u2194 ${historyItemRef?.name}`;
317
- historyItemId = historyProvider.historyItemRef.get().id;
318
- historyItemParentId = historyItem.parentIds[0];
302
+ if (historyItemRemoteRef && (historyItem.id === SCMIncomingHistoryItemId || historyItem.id === SCMOutgoingHistoryItemId)) {
303
+ const mergeBase = await historyProvider.resolveHistoryItemRefsCommonAncestor([
304
+ historyItemRef.name,
305
+ historyItemRemoteRef.name
306
+ ]);
307
+ if (mergeBase && historyItem.id === SCMIncomingHistoryItemId) {
308
+ title = `${historyItem.subject} - ${historyItemRef.name} \u2194 ${historyItemRemoteRef.name}`;
309
+ historyItemId = historyItemRemoteRef.id;
310
+ historyItemParentId = mergeBase;
311
+ }
312
+ else if (mergeBase && historyItem.id === SCMOutgoingHistoryItemId) {
313
+ title = `${historyItem.subject} - ${historyItemRemoteRef.name} \u2194 ${historyItemRef.name}`;
314
+ historyItemId = historyItemRef.id;
315
+ historyItemParentId = mergeBase;
316
+ }
319
317
  }
320
318
  else {
321
319
  title = getHistoryItemEditorTitle(historyItem);
322
320
  historyItemId = historyItem.id;
323
- historyItemParentId = historyItem.parentIds.length > 0 ? historyItem.parentIds[0] : undefined;
321
+ if (historyItem.parentIds.length > 0) {
322
+ if (historyItem.parentIds[0] === SCMIncomingHistoryItemId && historyItemRemoteRef) {
323
+ historyItemParentId = await historyProvider.resolveHistoryItemRefsCommonAncestor([
324
+ historyItemRef.name,
325
+ historyItemRemoteRef.name
326
+ ]);
327
+ }
328
+ else {
329
+ historyItemParentId = historyItem.parentIds[0];
330
+ }
331
+ }
332
+ }
333
+ if (!title || !historyItemId || !historyItemParentId) {
334
+ return;
324
335
  }
325
336
  const multiDiffSourceUri = ScmHistoryItemResolver.getMultiDiffSourceUri(provider, historyItemId, historyItemParentId, '');
326
337
  commandService.executeCommand('_workbench.openMultiDiffEditor', { title, multiDiffSourceUri });
@@ -330,7 +341,7 @@ registerAction2(class extends Action2 {
330
341
  constructor() {
331
342
  super({
332
343
  id: 'workbench.scm.action.graph.openFile',
333
- title: ( localize(10436, "Open File")),
344
+ title: ( localize(10571, "Open File")),
334
345
  icon: Codicon.goToFile,
335
346
  f1: false,
336
347
  menu: [
@@ -354,10 +365,10 @@ registerAction2(class extends Action2 {
354
365
  }
355
366
  let version;
356
367
  if (historyItem.id === SCMIncomingHistoryItemId) {
357
- version = ( localize(10437, "Incoming Changes"));
368
+ version = ( localize(10572, "Incoming Changes"));
358
369
  }
359
370
  else if (historyItem.id === SCMOutgoingHistoryItemId) {
360
- version = ( localize(10438, "Outgoing Changes"));
371
+ version = ( localize(10573, "Outgoing Changes"));
361
372
  }
362
373
  else {
363
374
  version = historyItem.displayId ?? historyItem.id;
@@ -389,20 +400,20 @@ let HistoryItemRenderer = class HistoryItemRenderer {
389
400
  static { HistoryItemRenderer_1 = this; }
390
401
  static { this.TEMPLATE_ID = 'history-item'; }
391
402
  get templateId() { return HistoryItemRenderer_1.TEMPLATE_ID; }
392
- constructor(hoverDelegate, _commandService, _configurationService, _contextKeyService, _contextMenuService, _hoverService, _keybindingService, _menuService, _telemetryService) {
393
- this.hoverDelegate = hoverDelegate;
403
+ constructor(_viewContainerLocation, _commandService, _configurationService, _contextKeyService, _contextMenuService, _hoverService, _keybindingService, _markdownRendererService, _menuService, _telemetryService) {
404
+ this._viewContainerLocation = _viewContainerLocation;
394
405
  this._commandService = _commandService;
395
406
  this._configurationService = _configurationService;
396
407
  this._contextKeyService = _contextKeyService;
397
408
  this._contextMenuService = _contextMenuService;
398
409
  this._hoverService = _hoverService;
399
410
  this._keybindingService = _keybindingService;
411
+ this._markdownRendererService = _markdownRendererService;
400
412
  this._menuService = _menuService;
401
413
  this._telemetryService = _telemetryService;
402
414
  this._badgesConfig = observableConfigValue('scm.graph.badges', 'filter', this._configurationService);
403
415
  }
404
416
  renderTemplate(container) {
405
- container.parentElement.parentElement.querySelector('.monaco-tl-twistie').classList.add('force-no-twistie');
406
417
  const element = append(container, $('.history-item'));
407
418
  const graphContainer = append(element, $('.graph-container'));
408
419
  const iconLabel = ( new IconLabel(element, {
@@ -426,12 +437,11 @@ let HistoryItemRenderer = class HistoryItemRenderer {
426
437
  const provider = node.element.repository.provider;
427
438
  const historyItemViewModel = node.element.historyItemViewModel;
428
439
  const historyItem = historyItemViewModel.historyItem;
429
- const hoverContent = {
430
- markdown: historyItem.tooltip ?? historyItem.message,
431
- markdownNotSupportedFallback: historyItem.message
432
- };
433
- const historyItemHover = this._hoverService.setupManagedHover(this.hoverDelegate, templateData.element, hoverContent);
440
+ const { content, disposables } = toHistoryItemHoverContent(this._markdownRendererService, historyItem, true);
441
+ const { hoverOptions, hoverLifecycleOptions } = this._getHoverOptions();
442
+ const historyItemHover = this._hoverService.setupDelayedHover(templateData.element, { ...hoverOptions, content }, hoverLifecycleOptions);
434
443
  templateData.elementDisposables.add(historyItemHover);
444
+ templateData.elementDisposables.add(disposables);
435
445
  templateData.graphContainer.textContent = '';
436
446
  templateData.graphContainer.classList.toggle('current', historyItemViewModel.kind === 'HEAD');
437
447
  templateData.graphContainer.classList.toggle('incoming-changes', historyItemViewModel.kind === 'incoming-changes');
@@ -452,7 +462,7 @@ let HistoryItemRenderer = class HistoryItemRenderer {
452
462
  _renderBadges(historyItem, templateData) {
453
463
  templateData.elementDisposables.add(autorun(reader => {
454
464
  const labelConfig = this._badgesConfig.read(reader);
455
- templateData.labelContainer.textContent = '';
465
+ templateData.labelContainer.replaceChildren();
456
466
  const references = historyItem.references ?
457
467
  historyItem.references.slice(0) : [];
458
468
  if (references.length > 0 && references[0].color) {
@@ -504,6 +514,39 @@ let HistoryItemRenderer = class HistoryItemRenderer {
504
514
  elements.description.textContent = showDescription ? historyItemRefs[0].name : '';
505
515
  append(templateData.labelContainer, elements.root);
506
516
  }
517
+ _getHoverOptions() {
518
+ if (this._viewContainerLocation === ViewContainerLocation.Panel) {
519
+ return {
520
+ hoverOptions: {
521
+ additionalClasses: ['history-item-hover'],
522
+ appearance: {
523
+ compact: true
524
+ },
525
+ position: {
526
+ hoverPosition: HoverPosition.RIGHT
527
+ },
528
+ style: HoverStyle.Mouse
529
+ },
530
+ hoverLifecycleOptions: undefined
531
+ };
532
+ }
533
+ return {
534
+ hoverOptions: {
535
+ additionalClasses: ['history-item-hover'],
536
+ appearance: {
537
+ compact: true,
538
+ showPointer: true
539
+ },
540
+ position: {
541
+ hoverPosition: HoverPosition.RIGHT
542
+ },
543
+ style: HoverStyle.Pointer
544
+ },
545
+ hoverLifecycleOptions: {
546
+ groupId: 'scm-history-item'
547
+ }
548
+ };
549
+ }
507
550
  _processMatches(historyItemViewModel, filterData) {
508
551
  if (!filterData) {
509
552
  return [undefined, undefined];
@@ -528,8 +571,9 @@ HistoryItemRenderer = HistoryItemRenderer_1 = ( __decorate([
528
571
  ( __param(4, IContextMenuService)),
529
572
  ( __param(5, IHoverService)),
530
573
  ( __param(6, IKeybindingService)),
531
- ( __param(7, IMenuService)),
532
- ( __param(8, ITelemetryService))
574
+ ( __param(7, IMarkdownRendererService)),
575
+ ( __param(8, IMenuService)),
576
+ ( __param(9, ITelemetryService))
533
577
  ], HistoryItemRenderer));
534
578
  let HistoryItemChangeRenderer = class HistoryItemChangeRenderer {
535
579
  static { HistoryItemChangeRenderer_1 = this; }
@@ -634,7 +678,6 @@ let HistoryItemLoadMoreRenderer = class HistoryItemLoadMoreRenderer {
634
678
  this._configurationService = _configurationService;
635
679
  }
636
680
  renderTemplate(container) {
637
- container.parentElement.parentElement.querySelector('.monaco-tl-twistie').classList.add('force-no-twistie');
638
681
  const element = append(container, $('.history-item-load-more'));
639
682
  const graphPlaceholder = append(element, $('.graph-placeholder'));
640
683
  const historyItemPlaceholderContainer = append(element, $('.history-item-placeholder'));
@@ -655,7 +698,7 @@ let HistoryItemLoadMoreRenderer = class HistoryItemLoadMoreRenderer {
655
698
  templateData.elementDisposables.add(autorun(reader => {
656
699
  const isLoadingMore = this._isLoadingMore.read(reader);
657
700
  const icon = `$(${isLoadingMore ? 'loading~spin' : 'fold-down'})`;
658
- templateData.historyItemPlaceholderLabel.setLabel(( localize(10439, "{0} Load More...", icon)));
701
+ templateData.historyItemPlaceholderLabel.setLabel(( localize(10574, "{0} Load More...", icon)));
659
702
  }));
660
703
  }
661
704
  }
@@ -673,34 +716,6 @@ let HistoryItemLoadMoreRenderer = class HistoryItemLoadMoreRenderer {
673
716
  HistoryItemLoadMoreRenderer = HistoryItemLoadMoreRenderer_1 = ( __decorate([
674
717
  ( __param(2, IConfigurationService))
675
718
  ], HistoryItemLoadMoreRenderer));
676
- let HistoryItemHoverDelegate = class HistoryItemHoverDelegate extends WorkbenchHoverDelegate {
677
- constructor(_viewContainerLocation, layoutService, configurationService, hoverService) {
678
- super(_viewContainerLocation === ViewContainerLocation.Panel ? 'mouse' : 'element', {
679
- instantHover: _viewContainerLocation !== ViewContainerLocation.Panel
680
- }, () => this.getHoverOptions(), configurationService, hoverService);
681
- this._viewContainerLocation = _viewContainerLocation;
682
- this.layoutService = layoutService;
683
- }
684
- getHoverOptions() {
685
- const sideBarPosition = this.layoutService.getSideBarPosition();
686
- let hoverPosition;
687
- if (this._viewContainerLocation === ViewContainerLocation.Sidebar) {
688
- hoverPosition = sideBarPosition === Position.LEFT ? HoverPosition.RIGHT : HoverPosition.LEFT;
689
- }
690
- else if (this._viewContainerLocation === ViewContainerLocation.AuxiliaryBar) {
691
- hoverPosition = sideBarPosition === Position.LEFT ? HoverPosition.LEFT : HoverPosition.RIGHT;
692
- }
693
- else {
694
- hoverPosition = HoverPosition.RIGHT;
695
- }
696
- return { additionalClasses: ['history-item-hover'], position: { hoverPosition, forcePosition: true } };
697
- }
698
- };
699
- HistoryItemHoverDelegate = ( __decorate([
700
- ( __param(1, IWorkbenchLayoutService)),
701
- ( __param(2, IConfigurationService)),
702
- ( __param(3, IHoverService))
703
- ], HistoryItemHoverDelegate));
704
719
  let SCMHistoryViewPaneActionRunner = class SCMHistoryViewPaneActionRunner extends ActionRunner {
705
720
  constructor(_progressService) {
706
721
  super();
@@ -715,7 +730,7 @@ SCMHistoryViewPaneActionRunner = ( __decorate([
715
730
  ], SCMHistoryViewPaneActionRunner));
716
731
  class SCMHistoryTreeAccessibilityProvider {
717
732
  getWidgetAriaLabel() {
718
- return localize(10440, "Source Control History");
733
+ return localize(10575, "Source Control History");
719
734
  }
720
735
  getAriaLabel(element) {
721
736
  if (isSCMRepository(element)) {
@@ -823,11 +838,29 @@ class SCMHistoryTreeDataSource extends Disposable {
823
838
  historyItemId = historyItemViewModel.kind === 'incoming-changes'
824
839
  ? historyItemRemoteRef.id
825
840
  : historyItemRef.id;
826
- historyItemParentId = historyItem.parentIds[0];
841
+ historyItemParentId = await historyProvider.resolveHistoryItemRefsCommonAncestor([
842
+ historyItemRef.name,
843
+ historyItemRemoteRef.name
844
+ ]);
827
845
  }
828
846
  else {
829
847
  historyItemId = historyItem.id;
830
- historyItemParentId = historyItem.parentIds.length > 0 ? historyItem.parentIds[0] : undefined;
848
+ if (historyItem.parentIds.length > 0) {
849
+ if (historyItem.parentIds[0] === SCMIncomingHistoryItemId) {
850
+ const historyItemRef = historyProvider?.historyItemRef.get();
851
+ const historyItemRemoteRef = historyProvider?.historyItemRemoteRef.get();
852
+ if (!historyProvider || !historyItemRef || !historyItemRemoteRef) {
853
+ return [];
854
+ }
855
+ historyItemParentId = await historyProvider.resolveHistoryItemRefsCommonAncestor([
856
+ historyItemRef.name,
857
+ historyItemRemoteRef.name
858
+ ]);
859
+ }
860
+ else {
861
+ historyItemParentId = historyItem.parentIds[0];
862
+ }
863
+ }
831
864
  }
832
865
  const historyItemChanges = (await historyProvider?.provideHistoryItemChanges(historyItemId, historyItemParentId)) ?? [];
833
866
  if (this.viewMode() === ViewMode.List) {
@@ -1191,8 +1224,8 @@ let RepositoryPicker = class RepositoryPicker {
1191
1224
  this._quickInputService = _quickInputService;
1192
1225
  this._scmViewService = _scmViewService;
1193
1226
  this._autoQuickPickItem = {
1194
- label: ( localize(10426, "Auto")),
1195
- description: ( localize(10441, "Show the source control graph for the active repository")),
1227
+ label: ( localize(10561, "Auto")),
1228
+ description: ( localize(10576, "Show the source control graph for the active repository")),
1196
1229
  repository: 'auto'
1197
1230
  };
1198
1231
  }
@@ -1210,7 +1243,7 @@ let RepositoryPicker = class RepositoryPicker {
1210
1243
  repository: r
1211
1244
  }))));
1212
1245
  return this._quickInputService.pick(picks, {
1213
- placeHolder: ( localize(10442, "Select the repository to view, type to filter all repositories"))
1246
+ placeHolder: ( localize(10577, "Select the repository to view, type to filter all repositories"))
1214
1247
  });
1215
1248
  }
1216
1249
  };
@@ -1226,21 +1259,21 @@ let HistoryItemRefPicker = class HistoryItemRefPicker extends Disposable {
1226
1259
  this._quickInputService = _quickInputService;
1227
1260
  this._allQuickPickItem = {
1228
1261
  id: 'all',
1229
- label: ( localize(10425, "All")),
1230
- description: ( localize(10428, "All history item references")),
1262
+ label: ( localize(10560, "All")),
1263
+ description: ( localize(10563, "All history item references")),
1231
1264
  historyItemRef: 'all'
1232
1265
  };
1233
1266
  this._autoQuickPickItem = {
1234
1267
  id: 'auto',
1235
- label: ( localize(10426, "Auto")),
1236
- description: ( localize(10443, "Current history item reference(s)")),
1268
+ label: ( localize(10561, "Auto")),
1269
+ description: ( localize(10578, "Current history item reference(s)")),
1237
1270
  historyItemRef: 'auto'
1238
1271
  };
1239
1272
  }
1240
1273
  async pickHistoryItemRef() {
1241
1274
  const quickPick = this._quickInputService.createQuickPick({ useSeparators: true });
1242
1275
  this._store.add(quickPick);
1243
- quickPick.placeholder = ( localize(10444, "Select one/more history item references to view, type to filter"));
1276
+ quickPick.placeholder = ( localize(10579, "Select one/more history item references to view, type to filter"));
1244
1277
  quickPick.canSelectMany = true;
1245
1278
  quickPick.hideCheckAll = true;
1246
1279
  quickPick.busy = true;
@@ -1372,16 +1405,21 @@ let SCMHistoryViewPane = class SCMHistoryViewPane extends ViewPane {
1372
1405
  ]);
1373
1406
  element.badge.textContent = 'Outdated';
1374
1407
  container.appendChild(element.root);
1375
- this._register(this.hoverService.setupManagedHover(getDefaultHoverDelegate('mouse'), element.root, {
1376
- markdown: {
1377
- value: ( localize(10445, "Please refresh the graph using the refresh action ($(refresh)).")),
1378
- supportThemeIcons: true
1379
- },
1380
- markdownNotSupportedFallback: undefined
1381
- }));
1382
1408
  this._register(autorun(reader => {
1383
1409
  const outdated = this._repositoryOutdated.read(reader);
1384
1410
  element.root.style.display = outdated ? '' : 'none';
1411
+ if (outdated) {
1412
+ reader.store.add(this.hoverService.setupDelayedHover(element.root, {
1413
+ appearance: {
1414
+ compact: true,
1415
+ showPointer: true
1416
+ },
1417
+ content: ( new MarkdownString(( localize(10580, "Please refresh the graph using the refresh action ($(refresh)).")), { supportThemeIcons: true })),
1418
+ position: {
1419
+ hoverPosition: HoverPosition.BELOW
1420
+ }
1421
+ }));
1422
+ }
1385
1423
  }));
1386
1424
  }
1387
1425
  renderBody(container) {
@@ -1574,15 +1612,13 @@ let SCMHistoryViewPane = class SCMHistoryViewPane extends ViewPane {
1574
1612
  }
1575
1613
  _createTree(container) {
1576
1614
  this._treeIdentityProvider = ( new SCMHistoryTreeIdentityProvider());
1577
- const historyItemHoverDelegate = this.instantiationService.createInstance(HistoryItemHoverDelegate, this.viewDescriptorService.getViewLocationById(this.id));
1578
- this._register(historyItemHoverDelegate);
1579
1615
  const resourceLabels = this.instantiationService.createInstance(ResourceLabels, { onDidChangeVisibility: this.onDidChangeBodyVisibility });
1580
1616
  this._register(resourceLabels);
1581
1617
  this._treeDataSource = this.instantiationService.createInstance(SCMHistoryTreeDataSource, () => this._treeViewModel.viewMode.get());
1582
1618
  this._register(this._treeDataSource);
1583
1619
  const compressionEnabled = observableConfigValue('scm.compactFolders', true, this.configurationService);
1584
1620
  this._tree = this.instantiationService.createInstance(WorkbenchCompressibleAsyncDataTree, 'SCM History Tree', container, ( new ListDelegate()), ( new SCMHistoryTreeCompressionDelegate()), [
1585
- this.instantiationService.createInstance(HistoryItemRenderer, historyItemHoverDelegate),
1621
+ this.instantiationService.createInstance(HistoryItemRenderer, this.viewDescriptorService.getViewLocationById(this.id)),
1586
1622
  this.instantiationService.createInstance(HistoryItemChangeRenderer, () => this._treeViewModel.viewMode.get(), resourceLabels),
1587
1623
  this.instantiationService.createInstance(HistoryItemLoadMoreRenderer, this._repositoryIsLoadingMore, () => this._loadMore()),
1588
1624
  ], this._treeDataSource, {
@@ -1593,7 +1629,12 @@ let SCMHistoryViewPane = class SCMHistoryViewPane extends ViewPane {
1593
1629
  dnd: ( new SCMHistoryTreeDragAndDrop()),
1594
1630
  keyboardNavigationLabelProvider: ( new SCMHistoryTreeKeyboardNavigationLabelProvider()),
1595
1631
  horizontalScrolling: false,
1596
- multipleSelectionSupport: false
1632
+ multipleSelectionSupport: false,
1633
+ twistieAdditionalCssClass: (e) => {
1634
+ return isSCMHistoryItemViewModelTreeElement(e) || isSCMHistoryItemLoadMoreTreeElement(e)
1635
+ ? 'force-no-twistie'
1636
+ : undefined;
1637
+ }
1597
1638
  });
1598
1639
  this._register(this._tree);
1599
1640
  this._tree.onDidOpen(this._onDidOpen, this, this._store);
@@ -1617,9 +1658,9 @@ let SCMHistoryViewPane = class SCMHistoryViewPane extends ViewPane {
1617
1658
  const historyItemChange = e.element.historyItemChange;
1618
1659
  const historyItem = e.element.historyItemViewModel.historyItem;
1619
1660
  const historyItemDisplayId = historyItem.id === SCMIncomingHistoryItemId
1620
- ? ( localize(10437, "Incoming Changes"))
1661
+ ? ( localize(10572, "Incoming Changes"))
1621
1662
  : historyItem.id === SCMOutgoingHistoryItemId
1622
- ? ( localize(10438, "Outgoing Changes"))
1663
+ ? ( localize(10573, "Outgoing Changes"))
1623
1664
  : historyItem.displayId ?? historyItem.id;
1624
1665
  const historyItemParentId = historyItem.parentIds.length > 0 ? historyItem.parentIds[0] : undefined;
1625
1666
  const historyItemParentDisplayId = historyItemParentId && historyItem.displayId
@@ -1,4 +1,4 @@
1
- import { ViewPane, IViewPaneOptions } from "@codingame/monaco-vscode-501b06ab-3f58-516b-8a1a-c29d375d3da4-common/vscode/vs/workbench/browser/parts/views/viewPane";
1
+ import { ViewPane, IViewPaneOptions } from "@codingame/monaco-vscode-api/vscode/vs/workbench/browser/parts/views/viewPane";
2
2
  import { ISCMViewService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/scm/common/scm.service";
3
3
  import { ISCMService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/scm/common/scm.service";
4
4
  import { IInstantiationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
@@ -10,9 +10,13 @@ import { IConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/pl
10
10
  import { IViewDescriptorService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/common/views.service";
11
11
  import { IOpenerService } from "@codingame/monaco-vscode-api/vscode/vs/platform/opener/common/opener.service";
12
12
  import { IHoverService } from "@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service";
13
+ import { ICommandService } from "@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service";
14
+ import { IStorageService } from "@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service";
13
15
  export declare class SCMRepositoriesViewPane extends ViewPane {
14
16
  private readonly scmService;
15
17
  private readonly scmViewService;
18
+ private readonly commandService;
19
+ private readonly storageService;
16
20
  private tree;
17
21
  private treeDataSource;
18
22
  private treeIdentityProvider;
@@ -22,13 +26,14 @@ export declare class SCMRepositoriesViewPane extends ViewPane {
22
26
  private readonly providerCountBadgeObs;
23
27
  private readonly visibilityDisposables;
24
28
  private readonly repositoryDisposables;
25
- constructor(options: IViewPaneOptions, scmService: ISCMService, scmViewService: ISCMViewService, keybindingService: IKeybindingService, contextMenuService: IContextMenuService, instantiationService: IInstantiationService, viewDescriptorService: IViewDescriptorService, contextKeyService: IContextKeyService, configurationService: IConfigurationService, openerService: IOpenerService, themeService: IThemeService, hoverService: IHoverService);
29
+ constructor(options: IViewPaneOptions, scmService: ISCMService, scmViewService: ISCMViewService, keybindingService: IKeybindingService, contextMenuService: IContextMenuService, commandService: ICommandService, instantiationService: IInstantiationService, viewDescriptorService: IViewDescriptorService, contextKeyService: IContextKeyService, configurationService: IConfigurationService, openerService: IOpenerService, themeService: IThemeService, hoverService: IHoverService, storageService: IStorageService);
26
30
  protected renderBody(container: HTMLElement): void;
27
31
  protected layoutBody(height: number, width: number): void;
28
32
  focus(): void;
29
33
  private createTree;
30
34
  private onDidAddRepository;
31
35
  private onDidRemoveRepository;
36
+ private onTreeDidOpen;
32
37
  private onTreeContextMenu;
33
38
  private onTreeSelectionChange;
34
39
  private onTreeDidChangeFocus;
@@ -41,5 +46,7 @@ export declare class SCMRepositoriesViewPane extends ViewPane {
41
46
  private updateBodySize;
42
47
  private updateTreeSelection;
43
48
  private getTreeSelection;
49
+ private loadTreeViewState;
50
+ private storeTreeViewState;
44
51
  dispose(): void;
45
52
  }