@codingame/monaco-vscode-timeline-service-override 14.0.6 → 15.0.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.
- package/package.json +7 -7
- package/vscode/src/vs/workbench/contrib/localHistory/browser/localHistory.js +2 -2
- package/vscode/src/vs/workbench/contrib/localHistory/browser/localHistoryCommands.js +36 -36
- package/vscode/src/vs/workbench/contrib/localHistory/browser/localHistoryTimeline.js +3 -3
- package/vscode/src/vs/workbench/contrib/timeline/browser/timeline.contribution.js +9 -9
- package/vscode/src/vs/workbench/contrib/timeline/browser/timelinePane.d.ts +1 -2
- package/vscode/src/vs/workbench/contrib/timeline/browser/timelinePane.js +55 -47
- package/vscode/src/vs/workbench/contrib/timeline/common/timelineService.d.ts +5 -6
- package/vscode/src/vs/workbench/contrib/timeline/common/timelineService.js +10 -7
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codingame/monaco-vscode-timeline-service-override",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "15.0.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "VSCode public API plugged on the monaco editor - timeline service-override",
|
|
6
6
|
"keywords": [],
|
|
@@ -15,12 +15,12 @@
|
|
|
15
15
|
},
|
|
16
16
|
"type": "module",
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@codingame/monaco-vscode-
|
|
19
|
-
"@codingame/monaco-vscode-65619f8f-0eab-5d8b-855a-43b6353fe527-common": "
|
|
20
|
-
"@codingame/monaco-vscode-
|
|
21
|
-
"@codingame/monaco-vscode-
|
|
22
|
-
"@codingame/monaco-vscode-
|
|
23
|
-
"@codingame/monaco-vscode-
|
|
18
|
+
"@codingame/monaco-vscode-38f25ab8-ea30-5ba9-8a08-ae3308c297c0-common": "15.0.1",
|
|
19
|
+
"@codingame/monaco-vscode-65619f8f-0eab-5d8b-855a-43b6353fe527-common": "15.0.1",
|
|
20
|
+
"@codingame/monaco-vscode-7559b0be-bfa5-5fe6-b731-1973fe9fffa1-common": "15.0.1",
|
|
21
|
+
"@codingame/monaco-vscode-a4c2011e-8775-52bd-abf0-4a3c07a9696b-common": "15.0.1",
|
|
22
|
+
"@codingame/monaco-vscode-api": "15.0.1",
|
|
23
|
+
"@codingame/monaco-vscode-b71b5434-ce96-5581-8993-e8da380bd63f-common": "15.0.1"
|
|
24
24
|
},
|
|
25
25
|
"main": "index.js",
|
|
26
26
|
"module": "index.js",
|
|
@@ -19,7 +19,7 @@ function getLocalHistoryDateFormatter() {
|
|
|
19
19
|
}
|
|
20
20
|
const LOCAL_HISTORY_MENU_CONTEXT_VALUE = 'localHistory:item';
|
|
21
21
|
const LOCAL_HISTORY_MENU_CONTEXT_KEY = ( ContextKeyExpr.equals('timelineItem', LOCAL_HISTORY_MENU_CONTEXT_VALUE));
|
|
22
|
-
const LOCAL_HISTORY_ICON_ENTRY = registerIcon('localHistory-icon', Codicon.circleOutline, ( localize(
|
|
23
|
-
const LOCAL_HISTORY_ICON_RESTORE = registerIcon('localHistory-restore', Codicon.check, ( localize(
|
|
22
|
+
const LOCAL_HISTORY_ICON_ENTRY = registerIcon('localHistory-icon', Codicon.circleOutline, ( localize(7220, "Icon for a local history entry in the timeline view.")));
|
|
23
|
+
const LOCAL_HISTORY_ICON_RESTORE = registerIcon('localHistory-restore', Codicon.check, ( localize(7221, "Icon for restoring contents of a local history entry.")));
|
|
24
24
|
|
|
25
25
|
export { LOCAL_HISTORY_ICON_ENTRY, LOCAL_HISTORY_ICON_RESTORE, LOCAL_HISTORY_MENU_CONTEXT_KEY, LOCAL_HISTORY_MENU_CONTEXT_VALUE, getLocalHistoryDateFormatter };
|
|
@@ -6,7 +6,7 @@ import { Schemas } from '@codingame/monaco-vscode-api/vscode/vs/base/common/netw
|
|
|
6
6
|
import { toErrorMessage } from '@codingame/monaco-vscode-api/vscode/vs/base/common/errorMessage';
|
|
7
7
|
import { CancellationToken, CancellationTokenSource } from '@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation';
|
|
8
8
|
import { IWorkingCopyHistoryService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/workingCopy/common/workingCopyHistory.service';
|
|
9
|
-
import { API_OPEN_DIFF_EDITOR_COMMAND_ID } from '@codingame/monaco-vscode-
|
|
9
|
+
import { API_OPEN_DIFF_EDITOR_COMMAND_ID } from '@codingame/monaco-vscode-38f25ab8-ea30-5ba9-8a08-ae3308c297c0-common/vscode/vs/workbench/browser/parts/editor/editorCommands';
|
|
10
10
|
import { LocalHistoryFileSystemProvider } from './localHistoryFileSystemProvider.js';
|
|
11
11
|
import { ContextKeyExpr, RawContextKey } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey';
|
|
12
12
|
import { IContextKeyService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service';
|
|
@@ -21,8 +21,8 @@ import { IEditorService } from '@codingame/monaco-vscode-api/vscode/vs/workbench
|
|
|
21
21
|
import { ResourceContextKey, ActiveEditorContext } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/contextkeys';
|
|
22
22
|
import { IQuickInputService } from '@codingame/monaco-vscode-api/vscode/vs/platform/quickinput/common/quickInput.service';
|
|
23
23
|
import { getIconClasses } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/services/getIconClasses';
|
|
24
|
-
import { IModelService } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/services/model';
|
|
25
|
-
import { ILanguageService } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/languages/language';
|
|
24
|
+
import { IModelService } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/services/model.service';
|
|
25
|
+
import { ILanguageService } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/languages/language.service';
|
|
26
26
|
import { ILabelService } from '@codingame/monaco-vscode-api/vscode/vs/platform/label/common/label.service';
|
|
27
27
|
import { coalesce } from '@codingame/monaco-vscode-api/vscode/vs/base/common/arrays';
|
|
28
28
|
import { LOCAL_HISTORY_MENU_CONTEXT_KEY, LOCAL_HISTORY_ICON_RESTORE, getLocalHistoryDateFormatter } from './localHistory.js';
|
|
@@ -31,9 +31,9 @@ import { ResourceSet } from '@codingame/monaco-vscode-api/vscode/vs/base/common/
|
|
|
31
31
|
import { IHistoryService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/history/common/history.service';
|
|
32
32
|
import { DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
33
33
|
|
|
34
|
-
const LOCAL_HISTORY_CATEGORY = ( localize2(
|
|
34
|
+
const LOCAL_HISTORY_CATEGORY = ( localize2(7222, 'Local History'));
|
|
35
35
|
const CTX_LOCAL_HISTORY_ENABLED = ( ContextKeyExpr.has('config.workbench.localHistory.enabled'));
|
|
36
|
-
const COMPARE_WITH_FILE_LABEL = ( localize2(
|
|
36
|
+
const COMPARE_WITH_FILE_LABEL = ( localize2(7223, 'Compare with File'));
|
|
37
37
|
registerAction2(class extends Action2 {
|
|
38
38
|
constructor() {
|
|
39
39
|
super({
|
|
@@ -60,7 +60,7 @@ registerAction2(class extends Action2 {
|
|
|
60
60
|
constructor() {
|
|
61
61
|
super({
|
|
62
62
|
id: 'workbench.action.localHistory.compareWithPrevious',
|
|
63
|
-
title: ( localize2(
|
|
63
|
+
title: ( localize2(7224, 'Compare with Previous')),
|
|
64
64
|
menu: {
|
|
65
65
|
id: MenuId.TimelineItemContext,
|
|
66
66
|
group: '1_compare',
|
|
@@ -88,7 +88,7 @@ registerAction2(class extends Action2 {
|
|
|
88
88
|
constructor() {
|
|
89
89
|
super({
|
|
90
90
|
id: 'workbench.action.localHistory.selectForCompare',
|
|
91
|
-
title: ( localize2(
|
|
91
|
+
title: ( localize2(7225, 'Select for Compare')),
|
|
92
92
|
menu: {
|
|
93
93
|
id: MenuId.TimelineItemContext,
|
|
94
94
|
group: '2_compare_with',
|
|
@@ -111,7 +111,7 @@ registerAction2(class extends Action2 {
|
|
|
111
111
|
constructor() {
|
|
112
112
|
super({
|
|
113
113
|
id: 'workbench.action.localHistory.compareWithSelected',
|
|
114
|
-
title: ( localize2(
|
|
114
|
+
title: ( localize2(7226, 'Compare with Selected')),
|
|
115
115
|
menu: {
|
|
116
116
|
id: MenuId.TimelineItemContext,
|
|
117
117
|
group: '2_compare_with',
|
|
@@ -140,7 +140,7 @@ registerAction2(class extends Action2 {
|
|
|
140
140
|
constructor() {
|
|
141
141
|
super({
|
|
142
142
|
id: 'workbench.action.localHistory.open',
|
|
143
|
-
title: ( localize2(
|
|
143
|
+
title: ( localize2(7227, 'Show Contents')),
|
|
144
144
|
menu: {
|
|
145
145
|
id: MenuId.TimelineItemContext,
|
|
146
146
|
group: '3_contents',
|
|
@@ -158,7 +158,7 @@ registerAction2(class extends Action2 {
|
|
|
158
158
|
}
|
|
159
159
|
}
|
|
160
160
|
});
|
|
161
|
-
const RESTORE_CONTENTS_LABEL = ( localize2(
|
|
161
|
+
const RESTORE_CONTENTS_LABEL = ( localize2(7228, 'Restore Contents'));
|
|
162
162
|
registerAction2(class extends Action2 {
|
|
163
163
|
constructor() {
|
|
164
164
|
super({
|
|
@@ -195,7 +195,7 @@ registerAction2(class extends Action2 {
|
|
|
195
195
|
return restore(accessor, item);
|
|
196
196
|
}
|
|
197
197
|
});
|
|
198
|
-
const restoreSaveSource = SaveSourceRegistry.registerSource('localHistoryRestore.source', ( localize(
|
|
198
|
+
const restoreSaveSource = SaveSourceRegistry.registerSource('localHistoryRestore.source', ( localize(7229, "File Restored")));
|
|
199
199
|
async function restore(accessor, item) {
|
|
200
200
|
const fileService = accessor.get(IFileService);
|
|
201
201
|
const dialogService = accessor.get(IDialogService);
|
|
@@ -207,12 +207,12 @@ async function restore(accessor, item) {
|
|
|
207
207
|
const { confirmed } = await dialogService.confirm({
|
|
208
208
|
type: 'warning',
|
|
209
209
|
message: ( localize(
|
|
210
|
-
|
|
210
|
+
7230,
|
|
211
211
|
"Do you want to restore the contents of '{0}'?",
|
|
212
212
|
basename(entry.workingCopy.resource)
|
|
213
213
|
)),
|
|
214
|
-
detail: ( localize(
|
|
215
|
-
primaryButton: ( localize(
|
|
214
|
+
detail: ( localize(7231, "Restoring will discard any unsaved changes.")),
|
|
215
|
+
primaryButton: ( localize(7232, "&&Restore"))
|
|
216
216
|
});
|
|
217
217
|
if (!confirmed) {
|
|
218
218
|
return;
|
|
@@ -229,7 +229,7 @@ async function restore(accessor, item) {
|
|
|
229
229
|
await fileService.cloneFile(entry.location, entry.workingCopy.resource);
|
|
230
230
|
}
|
|
231
231
|
catch (error) {
|
|
232
|
-
await dialogService.error(( localize(
|
|
232
|
+
await dialogService.error(( localize(7233, "Unable to restore '{0}'.", basename(entry.workingCopy.resource))), toErrorMessage(error));
|
|
233
233
|
return;
|
|
234
234
|
}
|
|
235
235
|
if (workingCopies) {
|
|
@@ -249,7 +249,7 @@ registerAction2(class extends Action2 {
|
|
|
249
249
|
constructor() {
|
|
250
250
|
super({
|
|
251
251
|
id: 'workbench.action.localHistory.restoreViaPicker',
|
|
252
|
-
title: ( localize2(
|
|
252
|
+
title: ( localize2(7234, 'Find Entry to Restore')),
|
|
253
253
|
f1: true,
|
|
254
254
|
category: LOCAL_HISTORY_CATEGORY,
|
|
255
255
|
precondition: CTX_LOCAL_HISTORY_ENABLED
|
|
@@ -282,7 +282,7 @@ registerAction2(class extends Action2 {
|
|
|
282
282
|
}
|
|
283
283
|
resourcesSortedByRecency.push(...[...resources].sort((r1, r2) => r1.fsPath < r2.fsPath ? -1 : 1));
|
|
284
284
|
resourcePicker.busy = false;
|
|
285
|
-
resourcePicker.placeholder = ( localize(
|
|
285
|
+
resourcePicker.placeholder = ( localize(7235, "Select the file to show local history for"));
|
|
286
286
|
resourcePicker.matchOnLabel = true;
|
|
287
287
|
resourcePicker.matchOnDescription = true;
|
|
288
288
|
resourcePicker.items = ( [...resourcesSortedByRecency].map(resource => ({
|
|
@@ -306,7 +306,7 @@ registerAction2(class extends Action2 {
|
|
|
306
306
|
const entries = await workingCopyHistoryService.getEntries(resource, cts.token);
|
|
307
307
|
entryPicker.busy = false;
|
|
308
308
|
entryPicker.canAcceptInBackground = true;
|
|
309
|
-
entryPicker.placeholder = ( localize(
|
|
309
|
+
entryPicker.placeholder = ( localize(7236, "Select the local history entry to open"));
|
|
310
310
|
entryPicker.matchOnLabel = true;
|
|
311
311
|
entryPicker.matchOnDescription = true;
|
|
312
312
|
entryPicker.items = ( Array.from(entries).reverse().map(entry => ({
|
|
@@ -330,12 +330,12 @@ registerAction2(class extends Action2 {
|
|
|
330
330
|
}));
|
|
331
331
|
}
|
|
332
332
|
});
|
|
333
|
-
MenuRegistry.appendMenuItem(MenuId.TimelineTitle, { command: { id: 'workbench.action.localHistory.restoreViaPicker', title: ( localize2(
|
|
333
|
+
MenuRegistry.appendMenuItem(MenuId.TimelineTitle, { command: { id: 'workbench.action.localHistory.restoreViaPicker', title: ( localize2(7237, 'Local History: Find Entry to Restore...')) }, group: 'submenu', order: 1, when: CTX_LOCAL_HISTORY_ENABLED });
|
|
334
334
|
registerAction2(class extends Action2 {
|
|
335
335
|
constructor() {
|
|
336
336
|
super({
|
|
337
337
|
id: 'workbench.action.localHistory.rename',
|
|
338
|
-
title: ( localize2(
|
|
338
|
+
title: ( localize2(7238, 'Rename')),
|
|
339
339
|
menu: {
|
|
340
340
|
id: MenuId.TimelineItemContext,
|
|
341
341
|
group: '5_edit',
|
|
@@ -351,9 +351,9 @@ registerAction2(class extends Action2 {
|
|
|
351
351
|
if (entry) {
|
|
352
352
|
const disposables = ( new DisposableStore());
|
|
353
353
|
const inputBox = disposables.add(quickInputService.createInputBox());
|
|
354
|
-
inputBox.title = ( localize(
|
|
354
|
+
inputBox.title = ( localize(7239, "Rename Local History Entry"));
|
|
355
355
|
inputBox.ignoreFocusOut = true;
|
|
356
|
-
inputBox.placeholder = ( localize(
|
|
356
|
+
inputBox.placeholder = ( localize(7240, "Enter the new name of the local history entry"));
|
|
357
357
|
inputBox.value = SaveSourceRegistry.getSourceLabel(entry.source);
|
|
358
358
|
inputBox.show();
|
|
359
359
|
disposables.add(inputBox.onDidAccept(() => {
|
|
@@ -369,7 +369,7 @@ registerAction2(class extends Action2 {
|
|
|
369
369
|
constructor() {
|
|
370
370
|
super({
|
|
371
371
|
id: 'workbench.action.localHistory.delete',
|
|
372
|
-
title: ( localize2(
|
|
372
|
+
title: ( localize2(7241, 'Delete')),
|
|
373
373
|
menu: {
|
|
374
374
|
id: MenuId.TimelineItemContext,
|
|
375
375
|
group: '5_edit',
|
|
@@ -387,13 +387,13 @@ registerAction2(class extends Action2 {
|
|
|
387
387
|
const { confirmed } = await dialogService.confirm({
|
|
388
388
|
type: 'warning',
|
|
389
389
|
message: ( localize(
|
|
390
|
-
|
|
390
|
+
7242,
|
|
391
391
|
"Do you want to delete the local history entry of '{0}' from {1}?",
|
|
392
392
|
entry.workingCopy.name,
|
|
393
393
|
toLocalHistoryEntryDateLabel(entry.timestamp)
|
|
394
394
|
)),
|
|
395
|
-
detail: ( localize(
|
|
396
|
-
primaryButton: ( localize(
|
|
395
|
+
detail: ( localize(7243, "This action is irreversible!")),
|
|
396
|
+
primaryButton: ( localize(7244, "&&Delete")),
|
|
397
397
|
});
|
|
398
398
|
if (!confirmed) {
|
|
399
399
|
return;
|
|
@@ -407,7 +407,7 @@ registerAction2(class extends Action2 {
|
|
|
407
407
|
constructor() {
|
|
408
408
|
super({
|
|
409
409
|
id: 'workbench.action.localHistory.deleteAll',
|
|
410
|
-
title: ( localize2(
|
|
410
|
+
title: ( localize2(7245, 'Delete All')),
|
|
411
411
|
f1: true,
|
|
412
412
|
category: LOCAL_HISTORY_CATEGORY,
|
|
413
413
|
precondition: CTX_LOCAL_HISTORY_ENABLED
|
|
@@ -418,9 +418,9 @@ registerAction2(class extends Action2 {
|
|
|
418
418
|
const workingCopyHistoryService = accessor.get(IWorkingCopyHistoryService);
|
|
419
419
|
const { confirmed } = await dialogService.confirm({
|
|
420
420
|
type: 'warning',
|
|
421
|
-
message: ( localize(
|
|
422
|
-
detail: ( localize(
|
|
423
|
-
primaryButton: ( localize(
|
|
421
|
+
message: ( localize(7246, "Do you want to delete all entries of all files in local history?")),
|
|
422
|
+
detail: ( localize(7247, "This action is irreversible!")),
|
|
423
|
+
primaryButton: ( localize(7248, "&&Delete All")),
|
|
424
424
|
});
|
|
425
425
|
if (!confirmed) {
|
|
426
426
|
return;
|
|
@@ -432,7 +432,7 @@ registerAction2(class extends Action2 {
|
|
|
432
432
|
constructor() {
|
|
433
433
|
super({
|
|
434
434
|
id: 'workbench.action.localHistory.create',
|
|
435
|
-
title: ( localize2(
|
|
435
|
+
title: ( localize2(7249, 'Create Entry')),
|
|
436
436
|
f1: true,
|
|
437
437
|
category: LOCAL_HISTORY_CATEGORY,
|
|
438
438
|
precondition: ( ContextKeyExpr.and(CTX_LOCAL_HISTORY_ENABLED, ActiveEditorContext))
|
|
@@ -450,10 +450,10 @@ registerAction2(class extends Action2 {
|
|
|
450
450
|
}
|
|
451
451
|
const disposables = ( new DisposableStore());
|
|
452
452
|
const inputBox = disposables.add(quickInputService.createInputBox());
|
|
453
|
-
inputBox.title = ( localize(
|
|
453
|
+
inputBox.title = ( localize(7250, "Create Local History Entry"));
|
|
454
454
|
inputBox.ignoreFocusOut = true;
|
|
455
455
|
inputBox.placeholder = ( localize(
|
|
456
|
-
|
|
456
|
+
7251,
|
|
457
457
|
"Enter the new name of the local history entry for '{0}'",
|
|
458
458
|
labelService.getUriBasenameLabel(resource)
|
|
459
459
|
));
|
|
@@ -472,7 +472,7 @@ async function openEntry(entry, editorService, options) {
|
|
|
472
472
|
await editorService.openEditor({
|
|
473
473
|
resource,
|
|
474
474
|
label: ( localize(
|
|
475
|
-
|
|
475
|
+
7252,
|
|
476
476
|
"{0} ({1} • {2})",
|
|
477
477
|
entry.workingCopy.name,
|
|
478
478
|
SaveSourceRegistry.getSourceLabel(entry.source),
|
|
@@ -494,7 +494,7 @@ function toDiffEditorArguments(arg1, arg2, options) {
|
|
|
494
494
|
const resource = arg2;
|
|
495
495
|
modifiedResource = resource;
|
|
496
496
|
label = ( localize(
|
|
497
|
-
|
|
497
|
+
7253,
|
|
498
498
|
"{0} ({1} • {2}) ↔ {3}",
|
|
499
499
|
arg1.workingCopy.name,
|
|
500
500
|
SaveSourceRegistry.getSourceLabel(arg1.source),
|
|
@@ -506,7 +506,7 @@ function toDiffEditorArguments(arg1, arg2, options) {
|
|
|
506
506
|
const modified = arg2;
|
|
507
507
|
modifiedResource = LocalHistoryFileSystemProvider.toLocalHistoryFileSystem({ location: modified.location, associatedResource: modified.workingCopy.resource });
|
|
508
508
|
label = ( localize(
|
|
509
|
-
|
|
509
|
+
7254,
|
|
510
510
|
"{0} ({1} • {2}) ↔ {3} ({4} • {5})",
|
|
511
511
|
arg1.workingCopy.name,
|
|
512
512
|
SaveSourceRegistry.getSourceLabel(arg1.source),
|
|
@@ -7,7 +7,7 @@ import { ITimelineService } from '@codingame/monaco-vscode-api/vscode/vs/workben
|
|
|
7
7
|
import { IWorkingCopyHistoryService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/workingCopy/common/workingCopyHistory.service';
|
|
8
8
|
import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
|
|
9
9
|
import { IPathService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/path/common/pathService.service';
|
|
10
|
-
import { API_OPEN_DIFF_EDITOR_COMMAND_ID } from '@codingame/monaco-vscode-
|
|
10
|
+
import { API_OPEN_DIFF_EDITOR_COMMAND_ID } from '@codingame/monaco-vscode-38f25ab8-ea30-5ba9-8a08-ae3308c297c0-common/vscode/vs/workbench/browser/parts/editor/editorCommands';
|
|
11
11
|
import { IFileService } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service';
|
|
12
12
|
import { LocalHistoryFileSystemProvider } from './localHistoryFileSystemProvider.js';
|
|
13
13
|
import { IWorkbenchEnvironmentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/environment/common/environmentService.service';
|
|
@@ -18,7 +18,7 @@ import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/comm
|
|
|
18
18
|
import { LOCAL_HISTORY_MENU_CONTEXT_VALUE, LOCAL_HISTORY_ICON_ENTRY, getLocalHistoryDateFormatter } from './localHistory.js';
|
|
19
19
|
import { Schemas } from '@codingame/monaco-vscode-api/vscode/vs/base/common/network';
|
|
20
20
|
import { IWorkspaceContextService } from '@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace.service';
|
|
21
|
-
import { getVirtualWorkspaceAuthority } from '@codingame/monaco-vscode-
|
|
21
|
+
import { getVirtualWorkspaceAuthority } from '@codingame/monaco-vscode-7559b0be-bfa5-5fe6-b731-1973fe9fffa1-common/vscode/vs/platform/workspace/common/virtualWorkspace';
|
|
22
22
|
|
|
23
23
|
var LocalHistoryTimeline_1;
|
|
24
24
|
let LocalHistoryTimeline = class LocalHistoryTimeline extends Disposable {
|
|
@@ -35,7 +35,7 @@ let LocalHistoryTimeline = class LocalHistoryTimeline extends Disposable {
|
|
|
35
35
|
this.configurationService = configurationService;
|
|
36
36
|
this.contextService = contextService;
|
|
37
37
|
this.id = 'timeline.localHistory';
|
|
38
|
-
this.label = ( localize(
|
|
38
|
+
this.label = ( localize(7255, "Local History"));
|
|
39
39
|
this.scheme = '*';
|
|
40
40
|
this._onDidChange = this._register(( new Emitter()));
|
|
41
41
|
this.onDidChange = this._onDidChange.event;
|
|
@@ -13,13 +13,13 @@ import { Extensions } from '@codingame/monaco-vscode-api/vscode/vs/platform/conf
|
|
|
13
13
|
import { ContextKeyExpr } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey';
|
|
14
14
|
import { MenuRegistry, MenuId } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions';
|
|
15
15
|
import { CommandsRegistry } from '@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands';
|
|
16
|
-
import { ExplorerFolderContext } from '@codingame/monaco-vscode-
|
|
16
|
+
import { ExplorerFolderContext } from '@codingame/monaco-vscode-a4c2011e-8775-52bd-abf0-4a3c07a9696b-common/vscode/vs/workbench/contrib/files/common/files';
|
|
17
17
|
import { ResourceContextKey } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/contextkeys';
|
|
18
18
|
import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
|
|
19
19
|
import { registerIcon } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/iconRegistry';
|
|
20
20
|
|
|
21
|
-
const timelineViewIcon = registerIcon('timeline-view-icon', Codicon.history, ( localize(
|
|
22
|
-
const timelineOpenIcon = registerIcon('timeline-open', Codicon.history, ( localize(
|
|
21
|
+
const timelineViewIcon = registerIcon('timeline-view-icon', Codicon.history, ( localize(10704, 'View icon of the timeline view.')));
|
|
22
|
+
const timelineOpenIcon = registerIcon('timeline-open', Codicon.history, ( localize(10705, 'Icon for the open timeline action.')));
|
|
23
23
|
class TimelinePaneDescriptor {
|
|
24
24
|
constructor() {
|
|
25
25
|
this.id = TimelinePaneId;
|
|
@@ -40,14 +40,14 @@ const configurationRegistry = ( Registry.as(Extensions.Configuration));
|
|
|
40
40
|
configurationRegistry.registerConfiguration({
|
|
41
41
|
id: 'timeline',
|
|
42
42
|
order: 1001,
|
|
43
|
-
title: ( localize(
|
|
43
|
+
title: ( localize(10706, "Timeline")),
|
|
44
44
|
type: 'object',
|
|
45
45
|
properties: {
|
|
46
46
|
'timeline.pageSize': {
|
|
47
47
|
type: ['number', 'null'],
|
|
48
48
|
default: 50,
|
|
49
49
|
markdownDescription: ( localize(
|
|
50
|
-
|
|
50
|
+
10707,
|
|
51
51
|
"The number of items to show in the Timeline view by default and when loading more items. Setting to `null` will automatically choose a page size based on the visible area of the Timeline view."
|
|
52
52
|
)),
|
|
53
53
|
},
|
|
@@ -55,7 +55,7 @@ configurationRegistry.registerConfiguration({
|
|
|
55
55
|
type: 'boolean',
|
|
56
56
|
default: true,
|
|
57
57
|
description: ( localize(
|
|
58
|
-
|
|
58
|
+
10708,
|
|
59
59
|
"Controls whether the Timeline view will load the next page of items when you scroll to the end of the list."
|
|
60
60
|
)),
|
|
61
61
|
},
|
|
@@ -65,7 +65,7 @@ configurationRegistry.registerConfiguration({
|
|
|
65
65
|
var OpenTimelineAction;
|
|
66
66
|
(function (OpenTimelineAction) {
|
|
67
67
|
OpenTimelineAction.ID = 'files.openTimeline';
|
|
68
|
-
OpenTimelineAction.LABEL = ( localize(
|
|
68
|
+
OpenTimelineAction.LABEL = ( localize(10709, "Open Timeline"));
|
|
69
69
|
function handler() {
|
|
70
70
|
return (accessor, arg) => {
|
|
71
71
|
const service = accessor.get(ITimelineService);
|
|
@@ -85,10 +85,10 @@ MenuRegistry.appendMenuItem(MenuId.ExplorerContext, ({
|
|
|
85
85
|
},
|
|
86
86
|
when: ( ContextKeyExpr.and(( ExplorerFolderContext.toNegated()), ResourceContextKey.HasResource, TimelineHasProviderContext))
|
|
87
87
|
}));
|
|
88
|
-
const timelineFilter = registerIcon('timeline-filter', Codicon.filter, ( localize(
|
|
88
|
+
const timelineFilter = registerIcon('timeline-filter', Codicon.filter, ( localize(10710, 'Icon for the filter timeline action.')));
|
|
89
89
|
MenuRegistry.appendMenuItem(MenuId.TimelineTitle, {
|
|
90
90
|
submenu: MenuId.TimelineFilterSubMenu,
|
|
91
|
-
title: ( localize(
|
|
91
|
+
title: ( localize(10711, "Filter Timeline")),
|
|
92
92
|
group: 'navigation',
|
|
93
93
|
order: 100,
|
|
94
94
|
icon: timelineFilter
|
|
@@ -17,7 +17,6 @@ import { ThemeIcon } from "@codingame/monaco-vscode-api/vscode/vs/base/common/th
|
|
|
17
17
|
import { IViewDescriptorService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/common/views.service";
|
|
18
18
|
import { IProgressService } from "@codingame/monaco-vscode-api/vscode/vs/platform/progress/common/progress.service";
|
|
19
19
|
import { IOpenerService } from "@codingame/monaco-vscode-api/vscode/vs/platform/opener/common/opener.service";
|
|
20
|
-
import { ITelemetryService } from "@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service";
|
|
21
20
|
import { IUriIdentityService } from "@codingame/monaco-vscode-api/vscode/vs/platform/uriIdentity/common/uriIdentity.service";
|
|
22
21
|
import { IExtensionService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensions.service";
|
|
23
22
|
import { IStorageService } from "@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service";
|
|
@@ -71,7 +70,7 @@ export declare class TimelinePane extends ViewPane {
|
|
|
71
70
|
private pendingRequests;
|
|
72
71
|
private timelinesBySource;
|
|
73
72
|
private uri;
|
|
74
|
-
constructor(options: IViewPaneOptions, keybindingService: IKeybindingService, contextMenuService: IContextMenuService, contextKeyService: IContextKeyService, configurationService: IConfigurationService, storageService: IStorageService, viewDescriptorService: IViewDescriptorService, instantiationService: IInstantiationService, editorService: IEditorService, commandService: ICommandService, progressService: IProgressService, timelineService: ITimelineService, openerService: IOpenerService, themeService: IThemeService,
|
|
73
|
+
constructor(options: IViewPaneOptions, keybindingService: IKeybindingService, contextMenuService: IContextMenuService, contextKeyService: IContextKeyService, configurationService: IConfigurationService, storageService: IStorageService, viewDescriptorService: IViewDescriptorService, instantiationService: IInstantiationService, editorService: IEditorService, commandService: ICommandService, progressService: IProgressService, timelineService: ITimelineService, openerService: IOpenerService, themeService: IThemeService, hoverService: IHoverService, labelService: ILabelService, uriIdentityService: IUriIdentityService, extensionService: IExtensionService);
|
|
75
74
|
private _followActiveEditor;
|
|
76
75
|
get followActiveEditor(): boolean;
|
|
77
76
|
set followActiveEditor(value: boolean);
|
|
@@ -39,12 +39,11 @@ import { ActionBar } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/u
|
|
|
39
39
|
import { createActionViewItem, getContextMenuActions } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/browser/menuEntryActionViewItem';
|
|
40
40
|
import { MenuId, registerAction2, Action2, MenuRegistry } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions';
|
|
41
41
|
import { IMenuService } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions.service';
|
|
42
|
-
import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service';
|
|
43
42
|
import { ActionViewItem } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/actionbar/actionViewItems';
|
|
44
43
|
import { ColorScheme } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/theme';
|
|
45
44
|
import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
|
|
46
45
|
import { registerIcon } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/iconRegistry';
|
|
47
|
-
import { API_OPEN_EDITOR_COMMAND_ID, API_OPEN_DIFF_EDITOR_COMMAND_ID } from '@codingame/monaco-vscode-
|
|
46
|
+
import { API_OPEN_EDITOR_COMMAND_ID, API_OPEN_DIFF_EDITOR_COMMAND_ID } from '@codingame/monaco-vscode-38f25ab8-ea30-5ba9-8a08-ae3308c297c0-common/vscode/vs/workbench/browser/parts/editor/editorCommands';
|
|
48
47
|
import { MarshalledId } from '@codingame/monaco-vscode-api/vscode/vs/base/common/marshallingIds';
|
|
49
48
|
import { isString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
|
|
50
49
|
import { renderMarkdownAsPlaintext } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/markdownRenderer';
|
|
@@ -178,7 +177,7 @@ class LoadMoreCommand {
|
|
|
178
177
|
return this.label;
|
|
179
178
|
}
|
|
180
179
|
get label() {
|
|
181
|
-
return this.loading ? ( localize(
|
|
180
|
+
return this.loading ? ( localize(10712, "Loading...")) : ( localize(10713, "Load more"));
|
|
182
181
|
}
|
|
183
182
|
get themeIcon() {
|
|
184
183
|
return undefined;
|
|
@@ -188,9 +187,9 @@ const TimelineFollowActiveEditorContext = ( new RawContextKey('timelineFollowAct
|
|
|
188
187
|
const TimelineExcludeSources = ( new RawContextKey('timelineExcludeSources', '[]', true));
|
|
189
188
|
const TimelineViewFocusedContext = ( new RawContextKey('timelineFocused', true));
|
|
190
189
|
let TimelinePane = class TimelinePane extends ViewPane {
|
|
191
|
-
static { this.TITLE = ( localize2(
|
|
192
|
-
constructor(options, keybindingService, contextMenuService, contextKeyService, configurationService, storageService, viewDescriptorService, instantiationService, editorService, commandService, progressService, timelineService, openerService, themeService,
|
|
193
|
-
super({ ...options, titleMenuId: MenuId.TimelineTitle }, keybindingService, contextMenuService, configurationService, contextKeyService, viewDescriptorService, instantiationService, openerService, themeService,
|
|
190
|
+
static { this.TITLE = ( localize2(10714, "Timeline")); }
|
|
191
|
+
constructor(options, keybindingService, contextMenuService, contextKeyService, configurationService, storageService, viewDescriptorService, instantiationService, editorService, commandService, progressService, timelineService, openerService, themeService, hoverService, labelService, uriIdentityService, extensionService) {
|
|
192
|
+
super({ ...options, titleMenuId: MenuId.TimelineTitle }, keybindingService, contextMenuService, configurationService, contextKeyService, viewDescriptorService, instantiationService, openerService, themeService, hoverService);
|
|
194
193
|
this.storageService = storageService;
|
|
195
194
|
this.editorService = editorService;
|
|
196
195
|
this.commandService = commandService;
|
|
@@ -376,8 +375,9 @@ let TimelinePane = class TimelinePane extends ViewPane {
|
|
|
376
375
|
this._maxItemCount = this.pageSize;
|
|
377
376
|
this.timelinesBySource.clear();
|
|
378
377
|
if (cancelPending) {
|
|
379
|
-
for (const
|
|
380
|
-
tokenSource.
|
|
378
|
+
for (const pendingRequest of ( this.pendingRequests.values())) {
|
|
379
|
+
pendingRequest.request.tokenSource.cancel();
|
|
380
|
+
pendingRequest.dispose();
|
|
381
381
|
}
|
|
382
382
|
this.pendingRequests.clear();
|
|
383
383
|
if (!this.isBodyVisible() && this.tree) {
|
|
@@ -443,28 +443,33 @@ let TimelinePane = class TimelinePane extends ViewPane {
|
|
|
443
443
|
}
|
|
444
444
|
options = { cursor: reset ? undefined : timeline?.cursor, limit: this.pageSize };
|
|
445
445
|
}
|
|
446
|
-
|
|
447
|
-
if (
|
|
448
|
-
options.cursor = request.options.cursor;
|
|
446
|
+
const pendingRequest = this.pendingRequests.get(source);
|
|
447
|
+
if (pendingRequest !== undefined) {
|
|
448
|
+
options.cursor = pendingRequest.request.options.cursor;
|
|
449
449
|
if (typeof options.limit === 'number') {
|
|
450
|
-
if (typeof request.options.limit === 'number') {
|
|
451
|
-
options.limit += request.options.limit;
|
|
450
|
+
if (typeof pendingRequest.request.options.limit === 'number') {
|
|
451
|
+
options.limit += pendingRequest.request.options.limit;
|
|
452
452
|
}
|
|
453
453
|
else {
|
|
454
|
-
options.limit = request.options.limit;
|
|
454
|
+
options.limit = pendingRequest.request.options.limit;
|
|
455
455
|
}
|
|
456
456
|
}
|
|
457
457
|
}
|
|
458
|
-
request?.tokenSource.
|
|
458
|
+
pendingRequest?.request?.tokenSource.cancel();
|
|
459
|
+
pendingRequest?.dispose();
|
|
459
460
|
options.cacheResults = true;
|
|
460
461
|
options.resetCache = reset;
|
|
461
|
-
|
|
462
|
-
|
|
462
|
+
const tokenSource = ( new CancellationTokenSource());
|
|
463
|
+
const newRequest = this.timelineService.getTimeline(source, uri, options, tokenSource);
|
|
464
|
+
if (newRequest === undefined) {
|
|
465
|
+
tokenSource.dispose();
|
|
463
466
|
return false;
|
|
464
467
|
}
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
+
const disposables = ( new DisposableStore());
|
|
469
|
+
this.pendingRequests.set(source, { request: newRequest, dispose: () => disposables.dispose() });
|
|
470
|
+
disposables.add(tokenSource);
|
|
471
|
+
disposables.add(tokenSource.token.onCancellationRequested(() => this.pendingRequests.delete(source)));
|
|
472
|
+
this.handleRequest(newRequest);
|
|
468
473
|
return true;
|
|
469
474
|
}
|
|
470
475
|
updateTimeline(timeline, reset) {
|
|
@@ -484,6 +489,7 @@ let TimelinePane = class TimelinePane extends ViewPane {
|
|
|
484
489
|
response = await this.progressService.withProgress({ location: this.id }, () => request.result);
|
|
485
490
|
}
|
|
486
491
|
finally {
|
|
492
|
+
this.pendingRequests.get(request.source)?.dispose();
|
|
487
493
|
this.pendingRequests.delete(request.source);
|
|
488
494
|
}
|
|
489
495
|
if (response === undefined ||
|
|
@@ -624,7 +630,7 @@ let TimelinePane = class TimelinePane extends ViewPane {
|
|
|
624
630
|
this._isEmpty = !this.hasVisibleItems;
|
|
625
631
|
if (this.uri === undefined) {
|
|
626
632
|
this.updateFilename(undefined);
|
|
627
|
-
this.message = ( localize(
|
|
633
|
+
this.message = ( localize(10715, "The active editor cannot provide timeline information."));
|
|
628
634
|
}
|
|
629
635
|
else if (this._isEmpty) {
|
|
630
636
|
if (this.pendingRequests.size !== 0) {
|
|
@@ -634,24 +640,24 @@ let TimelinePane = class TimelinePane extends ViewPane {
|
|
|
634
640
|
this.updateFilename(this.labelService.getUriBasenameLabel(this.uri));
|
|
635
641
|
const scmProviderCount = this.contextKeyService.getContextKeyValue('scm.providerCount');
|
|
636
642
|
if (this.timelineService.getSources().filter(({ id }) => !( this.excludedSources.has(id))).length === 0) {
|
|
637
|
-
this.message = ( localize(
|
|
643
|
+
this.message = ( localize(10716, "All timeline sources have been filtered out."));
|
|
638
644
|
}
|
|
639
645
|
else {
|
|
640
646
|
if (this.configurationService.getValue('workbench.localHistory.enabled') && !( this.excludedSources.has('timeline.localHistory'))) {
|
|
641
647
|
this.message = ( localize(
|
|
642
|
-
|
|
648
|
+
10717,
|
|
643
649
|
"Local History will track recent changes as you save them unless the file has been excluded or is too large."
|
|
644
650
|
));
|
|
645
651
|
}
|
|
646
652
|
else if (this.excludedSources.size > 0) {
|
|
647
|
-
this.message = ( localize(
|
|
653
|
+
this.message = ( localize(10718, "No filtered timeline information was provided."));
|
|
648
654
|
}
|
|
649
655
|
else {
|
|
650
|
-
this.message = ( localize(
|
|
656
|
+
this.message = ( localize(10719, "No timeline information was provided."));
|
|
651
657
|
}
|
|
652
658
|
}
|
|
653
659
|
if (!scmProviderCount || scmProviderCount === 0) {
|
|
654
|
-
this.message += ' ' + ( localize(
|
|
660
|
+
this.message += ' ' + ( localize(10720, "Source Control has not been configured."));
|
|
655
661
|
}
|
|
656
662
|
}
|
|
657
663
|
}
|
|
@@ -708,16 +714,16 @@ let TimelinePane = class TimelinePane extends ViewPane {
|
|
|
708
714
|
container.classList.add('tree-explorer-viewlet-tree-view', 'timeline-tree-view');
|
|
709
715
|
this.$message = append(this.$container, $('.message'));
|
|
710
716
|
this.$message.classList.add('timeline-subtle');
|
|
711
|
-
this.message = ( localize(
|
|
717
|
+
this.message = ( localize(10715, "The active editor cannot provide timeline information."));
|
|
712
718
|
this.$tree = document.createElement('div');
|
|
713
719
|
this.$tree.classList.add('customview-tree', 'file-icon-themable-tree', 'hide-arrows');
|
|
714
720
|
container.appendChild(this.$tree);
|
|
715
721
|
this.treeRenderer = this.instantiationService.createInstance(TimelineTreeRenderer, this.commands);
|
|
716
|
-
this.treeRenderer.onDidScrollToEnd(item => {
|
|
722
|
+
this._register(this.treeRenderer.onDidScrollToEnd(item => {
|
|
717
723
|
if (this.pageOnScroll) {
|
|
718
724
|
this.loadMore(item);
|
|
719
725
|
}
|
|
720
|
-
});
|
|
726
|
+
}));
|
|
721
727
|
this.tree = this.instantiationService.createInstance((WorkbenchObjectTree), 'TimelinePane', this.$tree, ( new TimelineListVirtualDelegate()), [this.treeRenderer], {
|
|
722
728
|
identityProvider: ( new TimelineIdentityProvider()),
|
|
723
729
|
accessibilityProvider: {
|
|
@@ -725,7 +731,7 @@ let TimelinePane = class TimelinePane extends ViewPane {
|
|
|
725
731
|
if (isLoadMoreCommand(element)) {
|
|
726
732
|
return element.ariaLabel;
|
|
727
733
|
}
|
|
728
|
-
return element.accessibilityInformation ? element.accessibilityInformation.label : ( localize(
|
|
734
|
+
return element.accessibilityInformation ? element.accessibilityInformation.label : ( localize(10721, "{0}: {1}", element.relativeTimeFullWord ?? '', element.label));
|
|
729
735
|
},
|
|
730
736
|
getRole(element) {
|
|
731
737
|
if (isLoadMoreCommand(element)) {
|
|
@@ -734,7 +740,7 @@ let TimelinePane = class TimelinePane extends ViewPane {
|
|
|
734
740
|
return element.accessibilityInformation && element.accessibilityInformation.role ? element.accessibilityInformation.role : 'treeitem';
|
|
735
741
|
},
|
|
736
742
|
getWidgetAriaLabel() {
|
|
737
|
-
return localize(
|
|
743
|
+
return localize(10714, "Timeline");
|
|
738
744
|
}
|
|
739
745
|
},
|
|
740
746
|
keyboardNavigationLabelProvider: ( new TimelineKeyboardNavigationLabelProvider()),
|
|
@@ -794,7 +800,7 @@ let TimelinePane = class TimelinePane extends ViewPane {
|
|
|
794
800
|
setLoadingUriMessage() {
|
|
795
801
|
const file = this.uri && this.labelService.getUriBasenameLabel(this.uri);
|
|
796
802
|
this.updateFilename(file);
|
|
797
|
-
this.message = file ? ( localize(
|
|
803
|
+
this.message = file ? ( localize(10722, "Loading timeline for {0}...", file)) : '';
|
|
798
804
|
}
|
|
799
805
|
onContextMenu(commands, treeEvent) {
|
|
800
806
|
const item = treeEvent.element;
|
|
@@ -849,11 +855,10 @@ TimelinePane = ( __decorate([
|
|
|
849
855
|
( __param(11, ITimelineService)),
|
|
850
856
|
( __param(12, IOpenerService)),
|
|
851
857
|
( __param(13, IThemeService)),
|
|
852
|
-
( __param(14,
|
|
853
|
-
( __param(15,
|
|
854
|
-
( __param(16,
|
|
855
|
-
( __param(17,
|
|
856
|
-
( __param(18, IExtensionService))
|
|
858
|
+
( __param(14, IHoverService)),
|
|
859
|
+
( __param(15, ILabelService)),
|
|
860
|
+
( __param(16, IUriIdentityService)),
|
|
861
|
+
( __param(17, IExtensionService))
|
|
857
862
|
], TimelinePane));
|
|
858
863
|
class TimelineElementTemplate {
|
|
859
864
|
static { this.id = 'TimelineElementTemplate'; }
|
|
@@ -917,7 +922,7 @@ let TimelineTreeRenderer = class TimelineTreeRenderer {
|
|
|
917
922
|
this.onDidScrollToEnd = this._onDidScrollToEnd.event;
|
|
918
923
|
this.templateId = TimelineElementTemplate.id;
|
|
919
924
|
this.actionViewItemProvider = createActionViewItem.bind(undefined, this.instantiationService);
|
|
920
|
-
this._hoverDelegate = this.instantiationService.createInstance(WorkbenchHoverDelegate, 'element', true, {
|
|
925
|
+
this._hoverDelegate = this.instantiationService.createInstance(WorkbenchHoverDelegate, 'element', { instantHover: true }, {
|
|
921
926
|
position: {
|
|
922
927
|
hoverPosition: HoverPosition.RIGHT
|
|
923
928
|
}
|
|
@@ -974,6 +979,9 @@ let TimelineTreeRenderer = class TimelineTreeRenderer {
|
|
|
974
979
|
setTimeout(() => this._onDidScrollToEnd.fire(item), 0);
|
|
975
980
|
}
|
|
976
981
|
}
|
|
982
|
+
disposeElement(element, index, templateData, height) {
|
|
983
|
+
templateData.actionBar.actionRunner.dispose();
|
|
984
|
+
}
|
|
977
985
|
disposeTemplate(template) {
|
|
978
986
|
template.dispose();
|
|
979
987
|
}
|
|
@@ -982,9 +990,9 @@ TimelineTreeRenderer = ( __decorate([
|
|
|
982
990
|
( __param(1, IInstantiationService)),
|
|
983
991
|
( __param(2, IThemeService))
|
|
984
992
|
], TimelineTreeRenderer));
|
|
985
|
-
const timelineRefresh = registerIcon('timeline-refresh', Codicon.refresh, ( localize(
|
|
986
|
-
const timelinePin = registerIcon('timeline-pin', Codicon.pin, ( localize(
|
|
987
|
-
const timelineUnpin = registerIcon('timeline-unpin', Codicon.pinned, ( localize(
|
|
993
|
+
const timelineRefresh = registerIcon('timeline-refresh', Codicon.refresh, ( localize(10723, 'Icon for the refresh timeline action.')));
|
|
994
|
+
const timelinePin = registerIcon('timeline-pin', Codicon.pin, ( localize(10724, 'Icon for the pin timeline action.')));
|
|
995
|
+
const timelineUnpin = registerIcon('timeline-unpin', Codicon.pinned, ( localize(10725, 'Icon for the unpin timeline action.')));
|
|
988
996
|
let TimelinePaneCommands = class TimelinePaneCommands extends Disposable {
|
|
989
997
|
constructor(pane, timelineService, storageService, contextKeyService, menuService) {
|
|
990
998
|
super();
|
|
@@ -998,9 +1006,9 @@ let TimelinePaneCommands = class TimelinePaneCommands extends Disposable {
|
|
|
998
1006
|
constructor() {
|
|
999
1007
|
super({
|
|
1000
1008
|
id: 'timeline.refresh',
|
|
1001
|
-
title: ( localize2(
|
|
1009
|
+
title: ( localize2(10726, "Refresh")),
|
|
1002
1010
|
icon: timelineRefresh,
|
|
1003
|
-
category: ( localize2(
|
|
1011
|
+
category: ( localize2(10714, "Timeline")),
|
|
1004
1012
|
menu: {
|
|
1005
1013
|
id: MenuId.TimelineTitle,
|
|
1006
1014
|
group: 'navigation',
|
|
@@ -1016,9 +1024,9 @@ let TimelinePaneCommands = class TimelinePaneCommands extends Disposable {
|
|
|
1016
1024
|
this._register(MenuRegistry.appendMenuItem(MenuId.TimelineTitle, ({
|
|
1017
1025
|
command: {
|
|
1018
1026
|
id: 'timeline.toggleFollowActiveEditor',
|
|
1019
|
-
title: ( localize2(
|
|
1027
|
+
title: ( localize2(10727, 'Pin the Current Timeline')),
|
|
1020
1028
|
icon: timelinePin,
|
|
1021
|
-
category: ( localize2(
|
|
1029
|
+
category: ( localize2(10714, "Timeline")),
|
|
1022
1030
|
},
|
|
1023
1031
|
group: 'navigation',
|
|
1024
1032
|
order: 98,
|
|
@@ -1027,9 +1035,9 @@ let TimelinePaneCommands = class TimelinePaneCommands extends Disposable {
|
|
|
1027
1035
|
this._register(MenuRegistry.appendMenuItem(MenuId.TimelineTitle, ({
|
|
1028
1036
|
command: {
|
|
1029
1037
|
id: 'timeline.toggleFollowActiveEditor',
|
|
1030
|
-
title: ( localize2(
|
|
1038
|
+
title: ( localize2(10728, 'Unpin the Current Timeline')),
|
|
1031
1039
|
icon: timelineUnpin,
|
|
1032
|
-
category: ( localize2(
|
|
1040
|
+
category: ( localize2(10714, "Timeline")),
|
|
1033
1041
|
},
|
|
1034
1042
|
group: 'navigation',
|
|
1035
1043
|
order: 98,
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { CancellationTokenSource } from "@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation";
|
|
2
|
-
import {
|
|
3
|
-
import { IDisposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
|
|
2
|
+
import { Disposable, IDisposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
|
|
4
3
|
import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
|
|
5
4
|
import { ILogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service";
|
|
6
5
|
import { TimelineChangeEvent, TimelineOptions, TimelineProvidersChangeEvent, TimelineProvider } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/timeline/common/timeline";
|
|
@@ -10,18 +9,18 @@ import { IConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/pl
|
|
|
10
9
|
import { RawContextKey } from "@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey";
|
|
11
10
|
import { IContextKeyService } from "@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service";
|
|
12
11
|
export declare const TimelineHasProviderContext: RawContextKey<boolean>;
|
|
13
|
-
export declare class TimelineService implements ITimelineService {
|
|
12
|
+
export declare class TimelineService extends Disposable implements ITimelineService {
|
|
14
13
|
private readonly logService;
|
|
15
14
|
protected viewsService: IViewsService;
|
|
16
15
|
protected configurationService: IConfigurationService;
|
|
17
16
|
protected contextKeyService: IContextKeyService;
|
|
18
17
|
readonly _serviceBrand: undefined;
|
|
19
18
|
private readonly _onDidChangeProviders;
|
|
20
|
-
readonly onDidChangeProviders: Event<TimelineProvidersChangeEvent>;
|
|
19
|
+
readonly onDidChangeProviders: import("@codingame/monaco-vscode-api/vscode/vs/base/common/event").Event<TimelineProvidersChangeEvent>;
|
|
21
20
|
private readonly _onDidChangeTimeline;
|
|
22
|
-
readonly onDidChangeTimeline: Event<TimelineChangeEvent>;
|
|
21
|
+
readonly onDidChangeTimeline: import("@codingame/monaco-vscode-api/vscode/vs/base/common/event").Event<TimelineChangeEvent>;
|
|
23
22
|
private readonly _onDidChangeUri;
|
|
24
|
-
readonly onDidChangeUri: Event<URI>;
|
|
23
|
+
readonly onDidChangeUri: import("@codingame/monaco-vscode-api/vscode/vs/base/common/event").Event<URI>;
|
|
25
24
|
private readonly hasProviderContext;
|
|
26
25
|
private readonly providers;
|
|
27
26
|
private readonly providerSubscriptions;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
3
3
|
import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
|
|
4
|
+
import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
4
5
|
import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
|
|
5
6
|
import { TimelinePaneId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/timeline/common/timeline';
|
|
6
7
|
import { IViewsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/views/common/viewsService.service';
|
|
@@ -9,17 +10,18 @@ import { RawContextKey } from '@codingame/monaco-vscode-api/vscode/vs/platform/c
|
|
|
9
10
|
import { IContextKeyService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service';
|
|
10
11
|
|
|
11
12
|
const TimelineHasProviderContext = ( new RawContextKey('timelineHasProvider', false));
|
|
12
|
-
let TimelineService = class TimelineService {
|
|
13
|
+
let TimelineService = class TimelineService extends Disposable {
|
|
13
14
|
constructor(logService, viewsService, configurationService, contextKeyService) {
|
|
15
|
+
super();
|
|
14
16
|
this.logService = logService;
|
|
15
17
|
this.viewsService = viewsService;
|
|
16
18
|
this.configurationService = configurationService;
|
|
17
19
|
this.contextKeyService = contextKeyService;
|
|
18
|
-
this._onDidChangeProviders = ( new Emitter());
|
|
20
|
+
this._onDidChangeProviders = this._register(( new Emitter()));
|
|
19
21
|
this.onDidChangeProviders = this._onDidChangeProviders.event;
|
|
20
|
-
this._onDidChangeTimeline = ( new Emitter());
|
|
22
|
+
this._onDidChangeTimeline = this._register(( new Emitter()));
|
|
21
23
|
this.onDidChangeTimeline = this._onDidChangeTimeline.event;
|
|
22
|
-
this._onDidChangeUri = ( new Emitter());
|
|
24
|
+
this._onDidChangeUri = this._register(( new Emitter()));
|
|
23
25
|
this.onDidChangeUri = this._onDidChangeUri.event;
|
|
24
26
|
this.providers = ( new Map());
|
|
25
27
|
this.providerSubscriptions = ( new Map());
|
|
@@ -53,10 +55,10 @@ let TimelineService = class TimelineService {
|
|
|
53
55
|
result.items.sort((a, b) => (b.timestamp - a.timestamp) || b.source.localeCompare(a.source, undefined, { numeric: true, sensitivity: 'base' }));
|
|
54
56
|
return result;
|
|
55
57
|
}),
|
|
56
|
-
options
|
|
58
|
+
options,
|
|
57
59
|
source: provider.id,
|
|
58
|
-
tokenSource
|
|
59
|
-
uri
|
|
60
|
+
tokenSource,
|
|
61
|
+
uri
|
|
60
62
|
};
|
|
61
63
|
}
|
|
62
64
|
registerTimelineProvider(provider) {
|
|
@@ -88,6 +90,7 @@ let TimelineService = class TimelineService {
|
|
|
88
90
|
return;
|
|
89
91
|
}
|
|
90
92
|
this.providers.delete(id);
|
|
93
|
+
this.providerSubscriptions.get(id)?.dispose();
|
|
91
94
|
this.providerSubscriptions.delete(id);
|
|
92
95
|
this.updateHasProviderContext();
|
|
93
96
|
this._onDidChangeProviders.fire({ removed: [id] });
|