@codingame/monaco-vscode-multi-diff-editor-service-override 4.1.0 → 4.1.2

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.
@@ -0,0 +1,11 @@
1
+ function __decorate(decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ }
7
+ function __param(paramIndex, decorator) {
8
+ return function (target, key) { decorator(target, key, paramIndex); }
9
+ }
10
+
11
+ export { __decorate, __param };
@@ -1,6 +1,6 @@
1
1
  import { SyncDescriptor } from 'vscode/vscode/vs/platform/instantiation/common/descriptors';
2
2
  import { IMultiDiffSourceResolverService, MultiDiffSourceResolverService } from 'vscode/vscode/vs/workbench/contrib/multiDiffEditor/browser/multiDiffSourceResolverService';
3
- import 'vscode/vscode/vs/workbench/contrib/multiDiffEditor/browser/multiDiffEditor.contribution';
3
+ import './vscode/src/vs/workbench/contrib/multiDiffEditor/browser/multiDiffEditor.contribution.js';
4
4
 
5
5
  function getServiceOverride() {
6
6
  return {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codingame/monaco-vscode-multi-diff-editor-service-override",
3
- "version": "4.1.0",
3
+ "version": "4.1.2",
4
4
  "keywords": [],
5
5
  "author": {
6
6
  "name": "CodinGame",
@@ -18,6 +18,6 @@
18
18
  "module": "index.js",
19
19
  "types": "index.d.ts",
20
20
  "dependencies": {
21
- "vscode": "npm:@codingame/monaco-vscode-api@4.1.0"
21
+ "vscode": "npm:@codingame/monaco-vscode-api@4.1.2"
22
22
  }
23
23
  }
@@ -0,0 +1,110 @@
1
+ import { Codicon } from 'vscode/vscode/vs/base/common/codicons';
2
+ import { EditorContextKeys } from 'vscode/vscode/vs/editor/common/editorContextKeys';
3
+ import { localize2WithPath } from 'vscode/vscode/vs/nls';
4
+ import { Action2, MenuId } from 'vscode/vscode/vs/platform/actions/common/actions';
5
+ import { ContextKeyExpr } from 'vscode/vscode/vs/platform/contextkey/common/contextkey';
6
+ import { TextFileEditor } from 'vscode/vscode/vs/workbench/contrib/files/browser/editors/textFileEditor';
7
+ import { MultiDiffEditor } from './multiDiffEditor.js';
8
+ import { MultiDiffEditorInput } from 'vscode/vscode/vs/workbench/contrib/multiDiffEditor/browser/multiDiffEditorInput';
9
+ import { IEditorService } from 'vscode/vscode/vs/workbench/services/editor/common/editorService';
10
+
11
+ class GoToFileAction extends Action2 {
12
+ constructor() {
13
+ super({
14
+ id: 'multiDiffEditor.goToFile',
15
+ title: ( localize2WithPath(
16
+ 'vs/workbench/contrib/multiDiffEditor/browser/actions',
17
+ 'goToFile',
18
+ 'Open File'
19
+ )),
20
+ icon: Codicon.goToFile,
21
+ precondition: EditorContextKeys.inMultiDiffEditor,
22
+ menu: {
23
+ when: EditorContextKeys.inMultiDiffEditor,
24
+ id: MenuId.MultiDiffEditorFileToolbar,
25
+ order: 22,
26
+ group: 'navigation',
27
+ },
28
+ });
29
+ }
30
+ async run(accessor, ...args) {
31
+ const uri = args[0];
32
+ const editorService = accessor.get(IEditorService);
33
+ const activeEditorPane = editorService.activeEditorPane;
34
+ let selections = undefined;
35
+ if (activeEditorPane instanceof MultiDiffEditor) {
36
+ const editor = activeEditorPane.tryGetCodeEditor(uri);
37
+ if (editor) {
38
+ selections = editor.editor.getSelections() ?? undefined;
39
+ }
40
+ }
41
+ const editor = await editorService.openEditor({ resource: uri });
42
+ if (selections && (editor instanceof TextFileEditor)) {
43
+ const c = editor.getControl();
44
+ if (c) {
45
+ c.setSelections(selections);
46
+ c.revealLineInCenter(selections[0].selectionStartLineNumber);
47
+ }
48
+ }
49
+ }
50
+ }
51
+ class CollapseAllAction extends Action2 {
52
+ constructor() {
53
+ super({
54
+ id: 'multiDiffEditor.collapseAll',
55
+ title: ( localize2WithPath(
56
+ 'vs/workbench/contrib/multiDiffEditor/browser/actions',
57
+ 'collapseAllDiffs',
58
+ 'Collapse All Diffs'
59
+ )),
60
+ icon: Codicon.collapseAll,
61
+ precondition: ( ContextKeyExpr.and(( ContextKeyExpr.equals('activeEditor', MultiDiffEditor.ID)), ContextKeyExpr.not('multiDiffEditorAllCollapsed'))),
62
+ menu: {
63
+ when: ( ContextKeyExpr.and(( ContextKeyExpr.equals('activeEditor', MultiDiffEditor.ID)), ContextKeyExpr.not('multiDiffEditorAllCollapsed'))),
64
+ id: MenuId.EditorTitle,
65
+ group: 'navigation',
66
+ order: 100
67
+ },
68
+ f1: true,
69
+ });
70
+ }
71
+ async run(accessor, ...args) {
72
+ const editorService = accessor.get(IEditorService);
73
+ const activeEditor = editorService.activeEditor;
74
+ if (activeEditor instanceof MultiDiffEditorInput) {
75
+ const viewModel = await activeEditor.getViewModel();
76
+ viewModel.collapseAll();
77
+ }
78
+ }
79
+ }
80
+ class ExpandAllAction extends Action2 {
81
+ constructor() {
82
+ super({
83
+ id: 'multiDiffEditor.expandAll',
84
+ title: ( localize2WithPath(
85
+ 'vs/workbench/contrib/multiDiffEditor/browser/actions',
86
+ 'ExpandAllDiffs',
87
+ 'Expand All Diffs'
88
+ )),
89
+ icon: Codicon.expandAll,
90
+ precondition: ( ContextKeyExpr.and(( ContextKeyExpr.equals('activeEditor', MultiDiffEditor.ID)), ( ContextKeyExpr.has('multiDiffEditorAllCollapsed')))),
91
+ menu: {
92
+ when: ( ContextKeyExpr.and(( ContextKeyExpr.equals('activeEditor', MultiDiffEditor.ID)), ( ContextKeyExpr.has('multiDiffEditorAllCollapsed')))),
93
+ id: MenuId.EditorTitle,
94
+ group: 'navigation',
95
+ order: 100
96
+ },
97
+ f1: true,
98
+ });
99
+ }
100
+ async run(accessor, ...args) {
101
+ const editorService = accessor.get(IEditorService);
102
+ const activeEditor = editorService.activeEditor;
103
+ if (activeEditor instanceof MultiDiffEditorInput) {
104
+ const viewModel = await activeEditor.getViewModel();
105
+ viewModel.expandAll();
106
+ }
107
+ }
108
+ }
109
+
110
+ export { CollapseAllAction, ExpandAllAction, GoToFileAction };
@@ -0,0 +1,40 @@
1
+ import { localizeWithPath } from 'vscode/vscode/vs/nls';
2
+ import { registerAction2 } from 'vscode/vscode/vs/platform/actions/common/actions';
3
+ import { Extensions } from 'vscode/vscode/vs/platform/configuration/common/configurationRegistry';
4
+ import { SyncDescriptor } from 'vscode/vscode/vs/platform/instantiation/common/descriptors';
5
+ import { Registry } from 'vscode/vscode/vs/platform/registry/common/platform';
6
+ import { EditorPaneDescriptor } from 'vscode/vscode/vs/workbench/browser/editor';
7
+ import { registerWorkbenchContribution2 } from 'vscode/vscode/vs/workbench/common/contributions';
8
+ import { EditorExtensions } from 'vscode/vscode/vs/workbench/common/editor';
9
+ import { MultiDiffEditor } from './multiDiffEditor.js';
10
+ import { MultiDiffEditorResolverContribution, MultiDiffEditorInput, MultiDiffEditorSerializer } from 'vscode/vscode/vs/workbench/contrib/multiDiffEditor/browser/multiDiffEditorInput';
11
+ import { GoToFileAction, CollapseAllAction, ExpandAllAction } from './actions.js';
12
+ import 'vscode/vscode/vs/platform/instantiation/common/instantiation';
13
+ import 'vscode/vscode/vs/base/common/event';
14
+ import 'vscode/vscode/vs/base/common/lifecycle';
15
+ import { OpenScmGroupAction, ScmMultiDiffSourceResolverContribution } from './scmMultiDiffSourceResolver.js';
16
+
17
+ registerAction2(GoToFileAction);
18
+ registerAction2(CollapseAllAction);
19
+ registerAction2(ExpandAllAction);
20
+ ( Registry.as(Extensions.Configuration))
21
+ .registerConfiguration({
22
+ properties: {
23
+ 'multiDiffEditor.experimental.enabled': {
24
+ type: 'boolean',
25
+ default: true,
26
+ description: 'Enable experimental multi diff editor.',
27
+ },
28
+ }
29
+ });
30
+ registerWorkbenchContribution2(MultiDiffEditorResolverContribution.ID, MultiDiffEditorResolverContribution, 1 );
31
+ ( Registry.as(EditorExtensions.EditorPane))
32
+ .registerEditorPane(EditorPaneDescriptor.create(MultiDiffEditor, MultiDiffEditor.ID, ( localizeWithPath(
33
+ 'vs/workbench/contrib/multiDiffEditor/browser/multiDiffEditor.contribution',
34
+ 'name',
35
+ "Multi Diff Editor"
36
+ ))), [( new SyncDescriptor(MultiDiffEditorInput))]);
37
+ ( Registry.as(EditorExtensions.EditorFactory))
38
+ .registerEditorSerializer(MultiDiffEditorInput.ID, MultiDiffEditorSerializer);
39
+ registerAction2(OpenScmGroupAction);
40
+ registerWorkbenchContribution2(ScmMultiDiffSourceResolverContribution.ID, ScmMultiDiffSourceResolverContribution, 1 );
@@ -0,0 +1,119 @@
1
+ import { __decorate, __param } from '../../../../../../../external/tslib/tslib.es6.js';
2
+ import { MultiDiffEditorWidget } from 'vscode/vscode/vs/editor/browser/widget/multiDiffEditor/multiDiffEditorWidget';
3
+ import { ITextResourceConfigurationService } from 'vscode/vscode/vs/editor/common/services/textResourceConfiguration';
4
+ import { IInstantiationService } from 'vscode/vscode/vs/platform/instantiation/common/instantiation';
5
+ import { IStorageService } from 'vscode/vscode/vs/platform/storage/common/storage';
6
+ import { ITelemetryService } from 'vscode/vscode/vs/platform/telemetry/common/telemetry';
7
+ import { IThemeService } from 'vscode/vscode/vs/platform/theme/common/themeService';
8
+ import { ResourceLabel } from 'vscode/vscode/vs/workbench/browser/labels';
9
+ import { AbstractEditorWithViewState } from 'vscode/vscode/vs/workbench/browser/parts/editor/editorWithViewState';
10
+ import { MultiDiffEditorInput } from 'vscode/vscode/vs/workbench/contrib/multiDiffEditor/browser/multiDiffEditorInput';
11
+ import { IEditorGroupsService } from 'vscode/vscode/vs/workbench/services/editor/common/editorGroupsService';
12
+ import { IEditorService } from 'vscode/vscode/vs/workbench/services/editor/common/editorService';
13
+ import { Range } from 'vscode/vscode/vs/editor/common/core/range';
14
+
15
+ var MultiDiffEditor_1;
16
+ let MultiDiffEditor = class MultiDiffEditor extends AbstractEditorWithViewState {
17
+ static { MultiDiffEditor_1 = this; }
18
+ static { this.ID = 'multiDiffEditor'; }
19
+ get viewModel() {
20
+ return this._viewModel;
21
+ }
22
+ constructor(group, instantiationService, telemetryService, themeService, storageService, editorService, editorGroupService, textResourceConfigurationService) {
23
+ super(MultiDiffEditor_1.ID, group, 'multiDiffEditor', telemetryService, instantiationService, storageService, textResourceConfigurationService, themeService, editorService, editorGroupService);
24
+ this._multiDiffEditorWidget = undefined;
25
+ }
26
+ createEditor(parent) {
27
+ this._multiDiffEditorWidget = this._register(this.instantiationService.createInstance(MultiDiffEditorWidget, parent, this.instantiationService.createInstance(WorkbenchUIElementFactory)));
28
+ this._register(this._multiDiffEditorWidget.onDidChangeActiveControl(() => {
29
+ this._onDidChangeControl.fire();
30
+ }));
31
+ }
32
+ async setInput(input, options, context, token) {
33
+ await super.setInput(input, options, context, token);
34
+ this._viewModel = await input.getViewModel();
35
+ this._multiDiffEditorWidget.setViewModel(this._viewModel);
36
+ const viewState = this.loadEditorViewState(input, context);
37
+ if (viewState) {
38
+ this._multiDiffEditorWidget.setViewState(viewState);
39
+ }
40
+ this._applyOptions(options);
41
+ }
42
+ setOptions(options) {
43
+ this._applyOptions(options);
44
+ }
45
+ _applyOptions(options) {
46
+ const viewState = options?.viewState;
47
+ if (!viewState || !viewState.revealData) {
48
+ return;
49
+ }
50
+ this._multiDiffEditorWidget?.reveal(viewState.revealData.resource, {
51
+ range: viewState.revealData.range ? Range.lift(viewState.revealData.range) : undefined,
52
+ highlight: true
53
+ });
54
+ }
55
+ async clearInput() {
56
+ await super.clearInput();
57
+ this._multiDiffEditorWidget.setViewModel(undefined);
58
+ }
59
+ layout(dimension) {
60
+ this._multiDiffEditorWidget.layout(dimension);
61
+ }
62
+ getControl() {
63
+ return this._multiDiffEditorWidget.getActiveControl();
64
+ }
65
+ focus() {
66
+ super.focus();
67
+ this._multiDiffEditorWidget?.getActiveControl()?.focus();
68
+ }
69
+ hasFocus() {
70
+ return this._multiDiffEditorWidget?.getActiveControl()?.hasTextFocus() || super.hasFocus();
71
+ }
72
+ computeEditorViewState(resource) {
73
+ return this._multiDiffEditorWidget.getViewState();
74
+ }
75
+ tracksEditorViewState(input) {
76
+ return input instanceof MultiDiffEditorInput;
77
+ }
78
+ toEditorViewStateResource(input) {
79
+ return input.resource;
80
+ }
81
+ tryGetCodeEditor(resource) {
82
+ return this._multiDiffEditorWidget.tryGetCodeEditor(resource);
83
+ }
84
+ };
85
+ MultiDiffEditor = MultiDiffEditor_1 = ( __decorate([
86
+ ( __param(1, IInstantiationService)),
87
+ ( __param(2, ITelemetryService)),
88
+ ( __param(3, IThemeService)),
89
+ ( __param(4, IStorageService)),
90
+ ( __param(5, IEditorService)),
91
+ ( __param(6, IEditorGroupsService)),
92
+ ( __param(7, ITextResourceConfigurationService))
93
+ ], MultiDiffEditor));
94
+ let WorkbenchUIElementFactory = class WorkbenchUIElementFactory {
95
+ constructor(_instantiationService) {
96
+ this._instantiationService = _instantiationService;
97
+ }
98
+ createResourceLabel(element) {
99
+ const label = this._instantiationService.createInstance(ResourceLabel, element, {});
100
+ return {
101
+ setUri(uri, options = {}) {
102
+ if (!uri) {
103
+ label.element.clear();
104
+ }
105
+ else {
106
+ label.element.setFile(uri, { strikethrough: options.strikethrough });
107
+ }
108
+ },
109
+ dispose() {
110
+ label.dispose();
111
+ }
112
+ };
113
+ }
114
+ };
115
+ WorkbenchUIElementFactory = ( __decorate([
116
+ ( __param(0, IInstantiationService))
117
+ ], WorkbenchUIElementFactory));
118
+
119
+ export { MultiDiffEditor };
@@ -0,0 +1,148 @@
1
+ import { __decorate, __param } from '../../../../../../../external/tslib/tslib.es6.js';
2
+ import { Codicon } from 'vscode/vscode/vs/base/common/codicons';
3
+ import { Event } from 'vscode/vscode/vs/base/common/event';
4
+ import { Disposable } from 'vscode/vscode/vs/base/common/lifecycle';
5
+ import 'vscode/vscode/vs/base/common/observableInternal/derived';
6
+ import 'vscode/vscode/vs/base/common/observableInternal/autorun';
7
+ import { observableFromEvent } from 'vscode/vscode/vs/base/common/observableInternal/utils';
8
+ import 'vscode/vscode/vs/base/common/cancellation';
9
+ import { URI } from 'vscode/vscode/vs/base/common/uri';
10
+ import { localize2WithPath, localizeWithPath } from 'vscode/vscode/vs/nls';
11
+ import { Action2, MenuId } from 'vscode/vscode/vs/platform/actions/common/actions';
12
+ import { ContextKeyExpr } from 'vscode/vscode/vs/platform/contextkey/common/contextkey';
13
+ import { IInstantiationService } from 'vscode/vscode/vs/platform/instantiation/common/instantiation';
14
+ import { IMultiDiffSourceResolverService } from 'vscode/vscode/vs/workbench/contrib/multiDiffEditor/browser/multiDiffSourceResolverService';
15
+ import { ISCMService } from 'vscode/vscode/vs/workbench/contrib/scm/common/scm';
16
+ import { IEditorService } from 'vscode/vscode/vs/workbench/services/editor/common/editorService';
17
+
18
+ var ScmMultiDiffSourceResolver_1;
19
+ let ScmMultiDiffSourceResolver = class ScmMultiDiffSourceResolver {
20
+ static { ScmMultiDiffSourceResolver_1 = this; }
21
+ static { this._scheme = 'scm-multi-diff-source'; }
22
+ static getMultiDiffSourceUri(repositoryUri, groupId) {
23
+ return ( URI.from({
24
+ scheme: ScmMultiDiffSourceResolver_1._scheme,
25
+ query: JSON.stringify({ repositoryUri, groupId }),
26
+ }));
27
+ }
28
+ static parseUri(uri) {
29
+ if (uri.scheme !== ScmMultiDiffSourceResolver_1._scheme) {
30
+ return undefined;
31
+ }
32
+ let query;
33
+ try {
34
+ query = JSON.parse(uri.query);
35
+ }
36
+ catch (e) {
37
+ return undefined;
38
+ }
39
+ if (typeof query !== 'object' || query === null) {
40
+ return undefined;
41
+ }
42
+ const { repositoryUri, groupId } = query;
43
+ if (typeof repositoryUri !== 'string' || typeof groupId !== 'string') {
44
+ return undefined;
45
+ }
46
+ return { repositoryUri: ( URI.parse(repositoryUri)), groupId };
47
+ }
48
+ constructor(_scmService) {
49
+ this._scmService = _scmService;
50
+ }
51
+ canHandleUri(uri) {
52
+ return ScmMultiDiffSourceResolver_1.parseUri(uri) !== undefined;
53
+ }
54
+ async resolveDiffSource(uri) {
55
+ const { repositoryUri, groupId } = ScmMultiDiffSourceResolver_1.parseUri(uri);
56
+ const repository = await promiseFromEventState(this._scmService.onDidAddRepository, () => {
57
+ const repository = [...this._scmService.repositories].find(r => r.provider.rootUri?.toString() === ( repositoryUri.toString()));
58
+ return repository ?? false;
59
+ });
60
+ const group = await promiseFromEventState(repository.provider.onDidChangeResourceGroups, () => {
61
+ const group = repository.provider.groups.find(g => g.id === groupId);
62
+ return group ?? false;
63
+ });
64
+ const resources = observableFromEvent(group.onDidChangeResources, () => ( group.resources.map(e => {
65
+ return {
66
+ original: e.multiDiffEditorOriginalUri,
67
+ modified: e.multiDiffEditorModifiedUri
68
+ };
69
+ })));
70
+ return ( new ScmResolvedMultiDiffSource(resources, {
71
+ scmResourceGroup: groupId,
72
+ scmProvider: repository.provider.contextValue,
73
+ }));
74
+ }
75
+ };
76
+ ScmMultiDiffSourceResolver = ScmMultiDiffSourceResolver_1 = ( __decorate([
77
+ ( __param(0, ISCMService))
78
+ ], ScmMultiDiffSourceResolver));
79
+ class ScmResolvedMultiDiffSource {
80
+ get resources() { return this._resources.get(); }
81
+ constructor(_resources, contextKeys) {
82
+ this._resources = _resources;
83
+ this.contextKeys = contextKeys;
84
+ this.onDidChange = Event.fromObservableLight(this._resources);
85
+ }
86
+ }
87
+ function promiseFromEventState(event, checkState) {
88
+ const state = checkState();
89
+ if (state) {
90
+ return Promise.resolve(state);
91
+ }
92
+ return ( new Promise(resolve => {
93
+ const listener = event(() => {
94
+ const state = checkState();
95
+ if (state) {
96
+ listener.dispose();
97
+ resolve(state);
98
+ }
99
+ });
100
+ }));
101
+ }
102
+ let ScmMultiDiffSourceResolverContribution = class ScmMultiDiffSourceResolverContribution extends Disposable {
103
+ static { this.ID = 'workbench.contrib.scmMultiDiffSourceResolver'; }
104
+ constructor(instantiationService, multiDiffSourceResolverService) {
105
+ super();
106
+ this._register(multiDiffSourceResolverService.registerResolver(instantiationService.createInstance(ScmMultiDiffSourceResolver)));
107
+ }
108
+ };
109
+ ScmMultiDiffSourceResolverContribution = ( __decorate([
110
+ ( __param(0, IInstantiationService)),
111
+ ( __param(1, IMultiDiffSourceResolverService))
112
+ ], ScmMultiDiffSourceResolverContribution));
113
+ class OpenScmGroupAction extends Action2 {
114
+ constructor() {
115
+ super({
116
+ id: 'multiDiffEditor.openScmDiff',
117
+ title: ( localize2WithPath(
118
+ 'vs/workbench/contrib/multiDiffEditor/browser/scmMultiDiffSourceResolver',
119
+ 'viewChanges',
120
+ 'View Changes'
121
+ )),
122
+ icon: Codicon.diffMultiple,
123
+ menu: {
124
+ when: ( ContextKeyExpr.and(( ContextKeyExpr.has('config.multiDiffEditor.experimental.enabled')), ( ContextKeyExpr.has('multiDiffEditorEnableViewChanges')))),
125
+ id: MenuId.SCMResourceGroupContext,
126
+ group: 'inline',
127
+ },
128
+ f1: false,
129
+ });
130
+ }
131
+ async run(accessor, group) {
132
+ const editorService = accessor.get(IEditorService);
133
+ if (!group.provider.rootUri) {
134
+ return;
135
+ }
136
+ const multiDiffSource = ScmMultiDiffSourceResolver.getMultiDiffSourceUri(( group.provider.rootUri.toString()), group.id);
137
+ const label = ( localizeWithPath(
138
+ 'vs/workbench/contrib/multiDiffEditor/browser/scmMultiDiffSourceResolver',
139
+ 'scmDiffLabel',
140
+ '{0}: {1}',
141
+ group.provider.label,
142
+ group.label
143
+ ));
144
+ await editorService.openEditor({ label, multiDiffSource });
145
+ }
146
+ }
147
+
148
+ export { OpenScmGroupAction, ScmMultiDiffSourceResolver, ScmMultiDiffSourceResolverContribution };