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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/assets/fake.html +10 -0
  2. package/assets/index-no-csp.html +1230 -0
  3. package/assets/index.html +1231 -0
  4. package/assets/service-worker.js +457 -0
  5. package/index.d.ts +1 -0
  6. package/index.js +1 -0
  7. package/override/vs/workbench/browser/parts/editor/textEditor.js +5 -0
  8. package/override/vs/workbench/browser/parts/editor/textEditor.weak.js +11 -0
  9. package/package.json +32 -0
  10. package/tools/editorAssets.js +4 -0
  11. package/tools/url.js +10 -0
  12. package/viewCommon.d.ts +5 -0
  13. package/viewCommon.js +105 -0
  14. package/vscode/src/vs/base/browser/deviceAccess.js +61 -0
  15. package/vscode/src/vs/base/browser/ui/centered/centeredViewLayout.js +180 -0
  16. package/vscode/src/vs/base/browser/ui/grid/grid.js +494 -0
  17. package/vscode/src/vs/base/browser/ui/grid/gridview.css.js +6 -0
  18. package/vscode/src/vs/base/browser/ui/grid/gridview.js +1113 -0
  19. package/vscode/src/vs/platform/languagePacks/common/localizedStrings.js +12 -0
  20. package/vscode/src/vs/platform/webview/common/mimeTypes.js +24 -0
  21. package/vscode/src/vs/platform/webview/common/webviewPortMapping.js +64 -0
  22. package/vscode/src/vs/workbench/api/browser/viewsExtensionPoint.js +907 -0
  23. package/vscode/src/vs/workbench/browser/actions/listCommands.js +764 -0
  24. package/vscode/src/vs/workbench/browser/actions/navigationActions.js +301 -0
  25. package/vscode/src/vs/workbench/browser/media/style.css.js +6 -0
  26. package/vscode/src/vs/workbench/browser/parts/activitybar/activitybarPart.js +671 -0
  27. package/vscode/src/vs/workbench/browser/parts/activitybar/media/activityaction.css.js +6 -0
  28. package/vscode/src/vs/workbench/browser/parts/activitybar/media/activitybarpart.css.js +6 -0
  29. package/vscode/src/vs/workbench/browser/parts/auxiliarybar/auxiliaryBarPart.js +229 -0
  30. package/vscode/src/vs/workbench/browser/parts/auxiliarybar/media/auxiliaryBarPart.css.js +6 -0
  31. package/vscode/src/vs/workbench/browser/parts/compositeBar.js +606 -0
  32. package/vscode/src/vs/workbench/browser/parts/compositePart.js +346 -0
  33. package/vscode/src/vs/workbench/browser/parts/editor/auxiliaryEditorPart.js +246 -0
  34. package/vscode/src/vs/workbench/browser/parts/editor/editor.contribution.js +1403 -0
  35. package/vscode/src/vs/workbench/browser/parts/editor/editorConfiguration.js +188 -0
  36. package/vscode/src/vs/workbench/browser/parts/editor/editorDropTarget.js +523 -0
  37. package/vscode/src/vs/workbench/browser/parts/editor/editorPart.js +1030 -0
  38. package/vscode/src/vs/workbench/browser/parts/editor/editorParts.js +391 -0
  39. package/vscode/src/vs/workbench/browser/parts/editor/media/editordroptarget.css.js +6 -0
  40. package/vscode/src/vs/workbench/browser/parts/media/compositepart.css.js +6 -0
  41. package/vscode/src/vs/workbench/browser/parts/media/paneCompositePart.css.js +6 -0
  42. package/vscode/src/vs/workbench/browser/parts/paneCompositeBar.js +643 -0
  43. package/vscode/src/vs/workbench/browser/parts/paneCompositePart.js +472 -0
  44. package/vscode/src/vs/workbench/browser/parts/paneCompositePartService.js +68 -0
  45. package/vscode/src/vs/workbench/browser/parts/panel/panelPart.js +160 -0
  46. package/vscode/src/vs/workbench/browser/parts/sidebar/media/sidebarpart.css.js +6 -0
  47. package/vscode/src/vs/workbench/browser/parts/sidebar/sidebarActions.js +39 -0
  48. package/vscode/src/vs/workbench/browser/parts/sidebar/sidebarPart.js +238 -0
  49. package/vscode/src/vs/workbench/browser/style.js +54 -0
  50. package/vscode/src/vs/workbench/browser/window.js +381 -0
  51. package/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchy.contribution.js +300 -0
  52. package/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyPeek.js +367 -0
  53. package/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree.js +135 -0
  54. package/vscode/src/vs/workbench/contrib/callHierarchy/browser/media/callHierarchy.css.js +6 -0
  55. package/vscode/src/vs/workbench/contrib/customEditor/browser/customEditor.contribution.js +18 -0
  56. package/vscode/src/vs/workbench/contrib/customEditor/browser/customEditorInputFactory.js +146 -0
  57. package/vscode/src/vs/workbench/contrib/customEditor/browser/customEditors.js +215 -0
  58. package/vscode/src/vs/workbench/contrib/customEditor/browser/media/customEditor.css.js +6 -0
  59. package/vscode/src/vs/workbench/contrib/customEditor/common/contributedCustomEditors.js +78 -0
  60. package/vscode/src/vs/workbench/contrib/customEditor/common/customEditor.js +56 -0
  61. package/vscode/src/vs/workbench/contrib/customEditor/common/customEditorModelManager.js +63 -0
  62. package/vscode/src/vs/workbench/contrib/customEditor/common/extensionPoint.js +183 -0
  63. package/vscode/src/vs/workbench/contrib/externalUriOpener/common/externalUriOpener.contribution.js +8 -0
  64. package/vscode/src/vs/workbench/contrib/languageStatus/browser/languageStatus.contribution.js +408 -0
  65. package/vscode/src/vs/workbench/contrib/languageStatus/browser/media/languageStatus.css.js +6 -0
  66. package/vscode/src/vs/workbench/contrib/limitIndicator/browser/limitIndicator.contribution.js +147 -0
  67. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/commands/commands.js +635 -0
  68. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/commands/devCommands.js +230 -0
  69. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/mergeEditor.contribution.js +75 -0
  70. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/mergeEditorSerializer.js +42 -0
  71. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/colors.js +81 -0
  72. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/conflictActions.js +350 -0
  73. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/editorGutter.js +100 -0
  74. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/editors/baseCodeEditorView.js +148 -0
  75. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/editors/codeEditorView.js +106 -0
  76. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/editors/inputCodeEditorView.js +403 -0
  77. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/editors/resultCodeEditorView.js +199 -0
  78. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/fixedZoneWidget.js +41 -0
  79. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/lineAlignment.js +128 -0
  80. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/media/mergeEditor.css.js +6 -0
  81. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/mergeEditor.js +619 -0
  82. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/scrollSynchronizer.js +161 -0
  83. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/viewModel.js +266 -0
  84. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/viewZones.js +173 -0
  85. package/vscode/src/vs/workbench/contrib/preferences/browser/keyboardLayoutPicker.js +195 -0
  86. package/vscode/src/vs/workbench/contrib/sash/browser/sash.contribution.js +38 -0
  87. package/vscode/src/vs/workbench/contrib/sash/browser/sash.js +41 -0
  88. package/vscode/src/vs/workbench/contrib/typeHierarchy/browser/media/typeHierarchy.css.js +6 -0
  89. package/vscode/src/vs/workbench/contrib/typeHierarchy/browser/typeHierarchy.contribution.js +283 -0
  90. package/vscode/src/vs/workbench/contrib/typeHierarchy/browser/typeHierarchyPeek.js +362 -0
  91. package/vscode/src/vs/workbench/contrib/typeHierarchy/browser/typeHierarchyTree.js +133 -0
  92. package/vscode/src/vs/workbench/contrib/webview/browser/overlayWebview.js +314 -0
  93. package/vscode/src/vs/workbench/contrib/webview/browser/resourceLoading.js +96 -0
  94. package/vscode/src/vs/workbench/contrib/webview/browser/themeing.js +98 -0
  95. package/vscode/src/vs/workbench/contrib/webview/browser/webviewElement.js +656 -0
  96. package/vscode/src/vs/workbench/contrib/webview/browser/webviewFindWidget.js +65 -0
  97. package/vscode/src/vs/workbench/contrib/webview/browser/webviewService.js +59 -0
  98. package/vscode/src/vs/workbench/contrib/webviewPanel/browser/webviewCommands.js +143 -0
  99. package/vscode/src/vs/workbench/contrib/webviewPanel/browser/webviewEditorInputSerializer.js +121 -0
  100. package/vscode/src/vs/workbench/contrib/webviewPanel/browser/webviewPanel.contribution.js +67 -0
  101. package/vscode/src/vs/workbench/contrib/webviewView/browser/webviewViewPane.js +234 -0
  102. package/vscode/src/vs/workbench/contrib/webviewView/browser/webviewViewService.js +45 -0
  103. package/vscode/src/vs/workbench/services/activity/browser/activityService.js +145 -0
  104. package/vscode/src/vs/workbench/services/auxiliaryWindow/browser/auxiliaryWindowService.js +341 -0
  105. package/vscode/src/vs/workbench/services/driver/browser/driver.js +186 -0
  106. package/vscode/src/vs/workbench/services/editor/browser/editorPaneService.js +13 -0
  107. package/vscode/src/vs/workbench/services/editor/browser/editorResolverService.js +676 -0
  108. package/vscode/src/vs/workbench/services/history/browser/historyService.js +1516 -0
  109. package/vscode/src/vs/workbench/services/progress/browser/media/progressService.css.js +6 -0
  110. package/vscode/src/vs/workbench/services/progress/browser/progressService.js +527 -0
  111. package/vscode/src/vs/workbench/services/untitled/common/untitledTextEditorHandler.js +102 -0
  112. package/vscode/src/vs/workbench/services/untitled/common/untitledTextEditorService.js +133 -0
  113. package/vscode/src/vs/workbench/services/views/browser/viewDescriptorService.js +711 -0
  114. package/vscode/src/vs/workbench/services/views/common/viewContainerModel.js +603 -0
@@ -0,0 +1,619 @@
1
+ import { __decorate, __param } from 'vscode/external/tslib/tslib.es6.js';
2
+ import { reset } from 'vscode/vscode/vs/base/browser/dom';
3
+ import { SerializableGrid } from '../../../../../base/browser/ui/grid/grid.js';
4
+ import { Color } from 'vscode/vscode/vs/base/common/color';
5
+ import { BugIndicatingError, onUnexpectedError } from 'vscode/vscode/vs/base/common/errors';
6
+ import { Emitter } from 'vscode/vscode/vs/base/common/event';
7
+ import { DisposableStore, MutableDisposable, toDisposable, Disposable } from 'vscode/vscode/vs/base/common/lifecycle';
8
+ import { observableValue, transaction } from 'vscode/vscode/vs/base/common/observableInternal/base';
9
+ import 'vscode/vscode/vs/base/common/observableInternal/derived';
10
+ import { autorunWithStore, autorun } from 'vscode/vscode/vs/base/common/observableInternal/autorun';
11
+ import 'vscode/vscode/vs/base/common/observableInternal/utils';
12
+ import 'vscode/vscode/vs/base/common/cancellation';
13
+ import { isEqual, basename } from 'vscode/vscode/vs/base/common/resources';
14
+ import { isDefined } from 'vscode/vscode/vs/base/common/types';
15
+ import './media/mergeEditor.css.js';
16
+ import { ICodeEditorService } from 'vscode/vscode/vs/editor/browser/services/codeEditorService';
17
+ import { ITextResourceConfigurationService } from 'vscode/vscode/vs/editor/common/services/textResourceConfiguration';
18
+ import { localizeWithPath } from 'vscode/vscode/vs/nls';
19
+ import { IConfigurationService } from 'vscode/vscode/vs/platform/configuration/common/configuration.service';
20
+ import { IContextKeyService } from 'vscode/vscode/vs/platform/contextkey/common/contextkey.service';
21
+ import { IFileService } from 'vscode/vscode/vs/platform/files/common/files.service';
22
+ import { IInstantiationService } from 'vscode/vscode/vs/platform/instantiation/common/instantiation';
23
+ import { IStorageService } from 'vscode/vscode/vs/platform/storage/common/storage.service';
24
+ import { ITelemetryService } from 'vscode/vscode/vs/platform/telemetry/common/telemetry.service';
25
+ import { IThemeService } from 'vscode/vscode/vs/platform/theme/common/themeService.service';
26
+ import '../../../../../../../../override/vs/workbench/browser/parts/editor/textEditor.js';
27
+ import { DEFAULT_EDITOR_ASSOCIATION } from 'vscode/vscode/vs/workbench/common/editor';
28
+ import { applyTextEditorOptions } from 'vscode/vscode/vs/workbench/common/editor/editorOptions';
29
+ import { readTransientState, writeTransientState } from 'vscode/vscode/vs/workbench/contrib/codeEditor/browser/toggleWordWrap';
30
+ import { MergeEditorInput } from 'vscode/vscode/vs/workbench/contrib/mergeEditor/browser/mergeEditorInput';
31
+ import { observableConfigValue, PersistentStore, deepMerge, thenIfNotDisposed } from 'vscode/vscode/vs/workbench/contrib/mergeEditor/browser/utils';
32
+ import { BaseCodeEditorView } from './editors/baseCodeEditorView.js';
33
+ import { ScrollSynchronizer } from './scrollSynchronizer.js';
34
+ import { MergeEditorViewModel } from './viewModel.js';
35
+ import { ViewZoneComputer } from './viewZones.js';
36
+ import { ctxIsMergeEditor, ctxMergeEditorLayout, ctxMergeEditorShowBase, ctxMergeEditorShowBaseAtTop, ctxMergeResultUri, ctxMergeBaseUri, ctxMergeEditorShowNonConflictingChanges } from 'vscode/vscode/vs/workbench/contrib/mergeEditor/common/mergeEditor';
37
+ import { settingsSashBorder } from 'vscode/vscode/vs/workbench/contrib/preferences/common/settingsEditorColorRegistry';
38
+ import { IEditorGroupsService } from 'vscode/vscode/vs/workbench/services/editor/common/editorGroupsService.service';
39
+ import { RegisteredEditorPriority } from 'vscode/vscode/vs/workbench/services/editor/common/editorResolverService';
40
+ import { IEditorResolverService } from 'vscode/vscode/vs/workbench/services/editor/common/editorResolverService.service';
41
+ import { IEditorService } from 'vscode/vscode/vs/workbench/services/editor/common/editorService.service';
42
+ import './colors.js';
43
+ import { InputCodeEditorView } from './editors/inputCodeEditorView.js';
44
+ import { ResultCodeEditorView } from './editors/resultCodeEditorView.js';
45
+ import { AbstractTextEditor } from 'vscode/vscode/vs/workbench/browser/parts/editor/textEditor';
46
+
47
+ var MergeEditor_1, MergeEditorLayoutStore_1;
48
+ let MergeEditor = class MergeEditor extends AbstractTextEditor {
49
+ static { MergeEditor_1 = this; }
50
+ static { this.ID = 'mergeEditor'; }
51
+ get viewModel() {
52
+ return this._viewModel;
53
+ }
54
+ get inputModel() {
55
+ return this._inputModel;
56
+ }
57
+ get model() {
58
+ return this.inputModel.get()?.model;
59
+ }
60
+ get inputsWritable() {
61
+ return !!this._configurationService.getValue('mergeEditor.writableInputs');
62
+ }
63
+ constructor(group, instantiation, contextKeyService, telemetryService, storageService, themeService, textResourceConfigurationService, _configurationService, editorService, editorGroupService, fileService, _codeEditorService, configurationService) {
64
+ super(MergeEditor_1.ID, group, telemetryService, instantiation, storageService, textResourceConfigurationService, themeService, editorService, editorGroupService, fileService);
65
+ this.contextKeyService = contextKeyService;
66
+ this._configurationService = _configurationService;
67
+ this._codeEditorService = _codeEditorService;
68
+ this.configurationService = configurationService;
69
+ this._sessionDisposables = ( new DisposableStore());
70
+ this._viewModel = observableValue(this, undefined);
71
+ this._grid = this._register(( new MutableDisposable()));
72
+ this.input1View = this._register(this.instantiationService.createInstance(InputCodeEditorView, 1, this._viewModel));
73
+ this.baseView = observableValue(this, undefined);
74
+ this.baseViewOptions = observableValue(this, undefined);
75
+ this.input2View = this._register(this.instantiationService.createInstance(InputCodeEditorView, 2, this._viewModel));
76
+ this.inputResultView = this._register(this.instantiationService.createInstance(ResultCodeEditorView, this._viewModel));
77
+ this._layoutMode = this.instantiationService.createInstance(MergeEditorLayoutStore);
78
+ this._layoutModeObs = observableValue(this, this._layoutMode.value);
79
+ this._ctxIsMergeEditor = ctxIsMergeEditor.bindTo(this.contextKeyService);
80
+ this._ctxUsesColumnLayout = ctxMergeEditorLayout.bindTo(this.contextKeyService);
81
+ this._ctxShowBase = ctxMergeEditorShowBase.bindTo(this.contextKeyService);
82
+ this._ctxShowBaseAtTop = ctxMergeEditorShowBaseAtTop.bindTo(this.contextKeyService);
83
+ this._ctxResultUri = ctxMergeResultUri.bindTo(this.contextKeyService);
84
+ this._ctxBaseUri = ctxMergeBaseUri.bindTo(this.contextKeyService);
85
+ this._ctxShowNonConflictingChanges = ctxMergeEditorShowNonConflictingChanges.bindTo(this.contextKeyService);
86
+ this._inputModel = observableValue(this, undefined);
87
+ this.viewZoneComputer = ( new ViewZoneComputer(
88
+ this.input1View.editor,
89
+ this.input2View.editor,
90
+ this.inputResultView.editor
91
+ ));
92
+ this.codeLensesVisible = observableConfigValue('mergeEditor.showCodeLenses', true, this.configurationService);
93
+ this.scrollSynchronizer = this._register(( new ScrollSynchronizer(
94
+ this._viewModel,
95
+ this.input1View,
96
+ this.input2View,
97
+ this.baseView,
98
+ this.inputResultView,
99
+ this._layoutModeObs
100
+ )));
101
+ this._onDidChangeSizeConstraints = ( new Emitter());
102
+ this.onDidChangeSizeConstraints = this._onDidChangeSizeConstraints.event;
103
+ this.baseViewDisposables = this._register(( new DisposableStore()));
104
+ this.showNonConflictingChangesStore = this.instantiationService.createInstance((PersistentStore), 'mergeEditor/showNonConflictingChanges');
105
+ this.showNonConflictingChanges = observableValue(this, this.showNonConflictingChangesStore.get() ?? false);
106
+ }
107
+ dispose() {
108
+ this._sessionDisposables.dispose();
109
+ this._ctxIsMergeEditor.reset();
110
+ this._ctxUsesColumnLayout.reset();
111
+ this._ctxShowNonConflictingChanges.reset();
112
+ super.dispose();
113
+ }
114
+ get minimumWidth() {
115
+ return this._layoutMode.value.kind === 'mixed'
116
+ ? this.input1View.view.minimumWidth + this.input2View.view.minimumWidth
117
+ : this.input1View.view.minimumWidth + this.input2View.view.minimumWidth + this.inputResultView.view.minimumWidth;
118
+ }
119
+ getTitle() {
120
+ if (this.input) {
121
+ return this.input.getName();
122
+ }
123
+ return ( localizeWithPath(
124
+ 'vs/workbench/contrib/mergeEditor/browser/view/mergeEditor',
125
+ 'mergeEditor',
126
+ "Text Merge Editor"
127
+ ));
128
+ }
129
+ createEditorControl(parent, initialOptions) {
130
+ this.rootHtmlElement = parent;
131
+ parent.classList.add('merge-editor');
132
+ this.applyLayout(this._layoutMode.value);
133
+ this.applyOptions(initialOptions);
134
+ }
135
+ updateEditorControlOptions(options) {
136
+ this.applyOptions(options);
137
+ }
138
+ applyOptions(options) {
139
+ const inputOptions = deepMerge(options, {
140
+ minimap: { enabled: false },
141
+ glyphMargin: false,
142
+ lineNumbersMinChars: 2,
143
+ readOnly: !this.inputsWritable
144
+ });
145
+ this.input1View.updateOptions(inputOptions);
146
+ this.input2View.updateOptions(inputOptions);
147
+ this.baseViewOptions.set({ ...this.input2View.editor.getRawOptions() }, undefined);
148
+ this.inputResultView.updateOptions(options);
149
+ }
150
+ getMainControl() {
151
+ return this.inputResultView.editor;
152
+ }
153
+ layout(dimension) {
154
+ this._grid.value?.layout(dimension.width, dimension.height);
155
+ }
156
+ async setInput(input, options, context, token) {
157
+ if (!(input instanceof MergeEditorInput)) {
158
+ throw new BugIndicatingError('ONLY MergeEditorInput is supported');
159
+ }
160
+ await super.setInput(input, options, context, token);
161
+ this._sessionDisposables.clear();
162
+ transaction(tx => {
163
+ this._viewModel.set(undefined, tx);
164
+ this._inputModel.set(undefined, tx);
165
+ });
166
+ const inputModel = await input.resolve();
167
+ const model = inputModel.model;
168
+ const viewModel = this.instantiationService.createInstance(MergeEditorViewModel, model, this.input1View, this.input2View, this.inputResultView, this.baseView, this.showNonConflictingChanges);
169
+ model.telemetry.reportMergeEditorOpened({
170
+ combinableConflictCount: model.combinableConflictCount,
171
+ conflictCount: model.conflictCount,
172
+ baseTop: this._layoutModeObs.get().showBaseAtTop,
173
+ baseVisible: this._layoutModeObs.get().showBase,
174
+ isColumnView: this._layoutModeObs.get().kind === 'columns',
175
+ });
176
+ transaction(tx => {
177
+ this._viewModel.set(viewModel, tx);
178
+ this._inputModel.set(inputModel, tx);
179
+ });
180
+ this._sessionDisposables.add(viewModel);
181
+ this._ctxResultUri.set(( inputModel.resultUri.toString()));
182
+ this._ctxBaseUri.set(( model.base.uri.toString()));
183
+ this._sessionDisposables.add(toDisposable(() => {
184
+ this._ctxBaseUri.reset();
185
+ this._ctxResultUri.reset();
186
+ }));
187
+ this._sessionDisposables.add(autorunWithStore((reader, store) => {
188
+ const baseView = this.baseView.read(reader);
189
+ this.inputResultView.editor.changeViewZones(resultViewZoneAccessor => {
190
+ const layout = this._layoutModeObs.read(reader);
191
+ const shouldAlignResult = layout.kind === 'columns';
192
+ const shouldAlignBase = layout.kind === 'mixed' && !layout.showBaseAtTop;
193
+ this.input1View.editor.changeViewZones(input1ViewZoneAccessor => {
194
+ this.input2View.editor.changeViewZones(input2ViewZoneAccessor => {
195
+ if (baseView) {
196
+ baseView.editor.changeViewZones(baseViewZoneAccessor => {
197
+ store.add(this.setViewZones(reader, viewModel, this.input1View.editor, input1ViewZoneAccessor, this.input2View.editor, input2ViewZoneAccessor, baseView.editor, baseViewZoneAccessor, shouldAlignBase, this.inputResultView.editor, resultViewZoneAccessor, shouldAlignResult));
198
+ });
199
+ }
200
+ else {
201
+ store.add(this.setViewZones(reader, viewModel, this.input1View.editor, input1ViewZoneAccessor, this.input2View.editor, input2ViewZoneAccessor, undefined, undefined, false, this.inputResultView.editor, resultViewZoneAccessor, shouldAlignResult));
202
+ }
203
+ });
204
+ });
205
+ });
206
+ this.scrollSynchronizer.updateScrolling();
207
+ }));
208
+ const viewState = this.loadEditorViewState(input, context);
209
+ if (viewState) {
210
+ this._applyViewState(viewState);
211
+ }
212
+ else {
213
+ this._sessionDisposables.add(thenIfNotDisposed(model.onInitialized, () => {
214
+ const firstConflict = model.modifiedBaseRanges.get().find(r => r.isConflicting);
215
+ if (!firstConflict) {
216
+ return;
217
+ }
218
+ this.input1View.editor.revealLineInCenter(firstConflict.input1Range.startLineNumber);
219
+ transaction(tx => {
220
+ viewModel.setActiveModifiedBaseRange(firstConflict, tx);
221
+ });
222
+ }));
223
+ }
224
+ const mirrorWordWrapTransientState = (candidate) => {
225
+ const candidateState = readTransientState(candidate, this._codeEditorService);
226
+ writeTransientState(model.input2.textModel, candidateState, this._codeEditorService);
227
+ writeTransientState(model.input1.textModel, candidateState, this._codeEditorService);
228
+ writeTransientState(model.resultTextModel, candidateState, this._codeEditorService);
229
+ const baseTextModel = this.baseView.get()?.editor.getModel();
230
+ if (baseTextModel) {
231
+ writeTransientState(baseTextModel, candidateState, this._codeEditorService);
232
+ }
233
+ };
234
+ this._sessionDisposables.add(this._codeEditorService.onDidChangeTransientModelProperty(candidate => {
235
+ mirrorWordWrapTransientState(candidate);
236
+ }));
237
+ mirrorWordWrapTransientState(this.inputResultView.editor.getModel());
238
+ const that = this;
239
+ this._sessionDisposables.add(new (class {
240
+ constructor() {
241
+ this._disposable = ( new DisposableStore());
242
+ for (const model of this.baseInput1Input2()) {
243
+ this._disposable.add(model.onDidChangeContent(() => this._checkBaseInput1Input2AllEmpty()));
244
+ }
245
+ }
246
+ dispose() {
247
+ this._disposable.dispose();
248
+ }
249
+ *baseInput1Input2() {
250
+ yield model.base;
251
+ yield model.input1.textModel;
252
+ yield model.input2.textModel;
253
+ }
254
+ _checkBaseInput1Input2AllEmpty() {
255
+ for (const model of this.baseInput1Input2()) {
256
+ if (model.getValueLength() > 0) {
257
+ return;
258
+ }
259
+ }
260
+ that.editorService.replaceEditors([{ editor: input, replacement: { resource: input.result, options: { preserveFocus: true } }, forceReplaceDirty: true }], that.group);
261
+ }
262
+ }));
263
+ }
264
+ setViewZones(reader, viewModel, input1Editor, input1ViewZoneAccessor, input2Editor, input2ViewZoneAccessor, baseEditor, baseViewZoneAccessor, shouldAlignBase, resultEditor, resultViewZoneAccessor, shouldAlignResult) {
265
+ const input1ViewZoneIds = [];
266
+ const input2ViewZoneIds = [];
267
+ const baseViewZoneIds = [];
268
+ const resultViewZoneIds = [];
269
+ const viewZones = this.viewZoneComputer.computeViewZones(reader, viewModel, {
270
+ codeLensesVisible: this.codeLensesVisible.read(reader),
271
+ showNonConflictingChanges: this.showNonConflictingChanges.read(reader),
272
+ shouldAlignBase,
273
+ shouldAlignResult,
274
+ });
275
+ const disposableStore = ( new DisposableStore());
276
+ if (baseViewZoneAccessor) {
277
+ for (const v of viewZones.baseViewZones) {
278
+ v.create(baseViewZoneAccessor, baseViewZoneIds, disposableStore);
279
+ }
280
+ }
281
+ for (const v of viewZones.resultViewZones) {
282
+ v.create(resultViewZoneAccessor, resultViewZoneIds, disposableStore);
283
+ }
284
+ for (const v of viewZones.input1ViewZones) {
285
+ v.create(input1ViewZoneAccessor, input1ViewZoneIds, disposableStore);
286
+ }
287
+ for (const v of viewZones.input2ViewZones) {
288
+ v.create(input2ViewZoneAccessor, input2ViewZoneIds, disposableStore);
289
+ }
290
+ disposableStore.add({
291
+ dispose: () => {
292
+ input1Editor.changeViewZones(a => {
293
+ for (const zone of input1ViewZoneIds) {
294
+ a.removeZone(zone);
295
+ }
296
+ });
297
+ input2Editor.changeViewZones(a => {
298
+ for (const zone of input2ViewZoneIds) {
299
+ a.removeZone(zone);
300
+ }
301
+ });
302
+ baseEditor?.changeViewZones(a => {
303
+ for (const zone of baseViewZoneIds) {
304
+ a.removeZone(zone);
305
+ }
306
+ });
307
+ resultEditor.changeViewZones(a => {
308
+ for (const zone of resultViewZoneIds) {
309
+ a.removeZone(zone);
310
+ }
311
+ });
312
+ }
313
+ });
314
+ return disposableStore;
315
+ }
316
+ setOptions(options) {
317
+ super.setOptions(options);
318
+ if (options) {
319
+ applyTextEditorOptions(options, this.inputResultView.editor, 0 );
320
+ }
321
+ }
322
+ clearInput() {
323
+ super.clearInput();
324
+ this._sessionDisposables.clear();
325
+ for (const { editor } of [this.input1View, this.input2View, this.inputResultView]) {
326
+ editor.setModel(null);
327
+ }
328
+ }
329
+ focus() {
330
+ super.focus();
331
+ (this.getControl() ?? this.inputResultView.editor).focus();
332
+ }
333
+ hasFocus() {
334
+ for (const { editor } of [this.input1View, this.input2View, this.inputResultView]) {
335
+ if (editor.hasTextFocus()) {
336
+ return true;
337
+ }
338
+ }
339
+ return super.hasFocus();
340
+ }
341
+ setEditorVisible(visible) {
342
+ super.setEditorVisible(visible);
343
+ for (const { editor } of [this.input1View, this.input2View, this.inputResultView]) {
344
+ if (visible) {
345
+ editor.onVisible();
346
+ }
347
+ else {
348
+ editor.onHide();
349
+ }
350
+ }
351
+ this._ctxIsMergeEditor.set(visible);
352
+ }
353
+ getControl() {
354
+ return this.inputResultView.editor;
355
+ }
356
+ get scopedContextKeyService() {
357
+ const control = this.getControl();
358
+ return control?.invokeWithinContext(accessor => accessor.get(IContextKeyService));
359
+ }
360
+ toggleBase() {
361
+ this.setLayout({
362
+ ...this._layoutMode.value,
363
+ showBase: !this._layoutMode.value.showBase
364
+ });
365
+ }
366
+ toggleShowBaseTop() {
367
+ const showBaseTop = this._layoutMode.value.showBase && this._layoutMode.value.showBaseAtTop;
368
+ this.setLayout({
369
+ ...this._layoutMode.value,
370
+ showBaseAtTop: true,
371
+ showBase: !showBaseTop,
372
+ });
373
+ }
374
+ toggleShowBaseCenter() {
375
+ const showBaseCenter = this._layoutMode.value.showBase && !this._layoutMode.value.showBaseAtTop;
376
+ this.setLayout({
377
+ ...this._layoutMode.value,
378
+ showBaseAtTop: false,
379
+ showBase: !showBaseCenter,
380
+ });
381
+ }
382
+ setLayoutKind(kind) {
383
+ this.setLayout({
384
+ ...this._layoutMode.value,
385
+ kind
386
+ });
387
+ }
388
+ setLayout(newLayout) {
389
+ const value = this._layoutMode.value;
390
+ if (JSON.stringify(value) === JSON.stringify(newLayout)) {
391
+ return;
392
+ }
393
+ this.model?.telemetry.reportLayoutChange({
394
+ baseTop: newLayout.showBaseAtTop,
395
+ baseVisible: newLayout.showBase,
396
+ isColumnView: newLayout.kind === 'columns',
397
+ });
398
+ this.applyLayout(newLayout);
399
+ }
400
+ applyLayout(layout) {
401
+ transaction(tx => {
402
+ if (layout.showBase && !this.baseView.get()) {
403
+ this.baseViewDisposables.clear();
404
+ const baseView = this.baseViewDisposables.add(this.instantiationService.createInstance(BaseCodeEditorView, this.viewModel));
405
+ this.baseViewDisposables.add(autorun(reader => {
406
+ const options = this.baseViewOptions.read(reader);
407
+ if (options) {
408
+ baseView.updateOptions(options);
409
+ }
410
+ }));
411
+ this.baseView.set(baseView, tx);
412
+ }
413
+ else if (!layout.showBase && this.baseView.get()) {
414
+ this.baseView.set(undefined, tx);
415
+ this.baseViewDisposables.clear();
416
+ }
417
+ if (layout.kind === 'mixed') {
418
+ this.setGrid([
419
+ layout.showBaseAtTop && layout.showBase ? {
420
+ size: 38,
421
+ data: this.baseView.get().view
422
+ } : undefined,
423
+ {
424
+ size: 38,
425
+ groups: [
426
+ { data: this.input1View.view },
427
+ !layout.showBaseAtTop && layout.showBase ? { data: this.baseView.get().view } : undefined,
428
+ { data: this.input2View.view }
429
+ ].filter(isDefined)
430
+ },
431
+ {
432
+ size: 62,
433
+ data: this.inputResultView.view
434
+ },
435
+ ].filter(isDefined));
436
+ }
437
+ else if (layout.kind === 'columns') {
438
+ this.setGrid([
439
+ layout.showBase ? {
440
+ size: 40,
441
+ data: this.baseView.get().view
442
+ } : undefined,
443
+ {
444
+ size: 60,
445
+ groups: [{ data: this.input1View.view }, { data: this.inputResultView.view }, { data: this.input2View.view }]
446
+ },
447
+ ].filter(isDefined));
448
+ }
449
+ this._layoutMode.value = layout;
450
+ this._ctxUsesColumnLayout.set(layout.kind);
451
+ this._ctxShowBase.set(layout.showBase);
452
+ this._ctxShowBaseAtTop.set(layout.showBaseAtTop);
453
+ this._onDidChangeSizeConstraints.fire();
454
+ this._layoutModeObs.set(layout, tx);
455
+ });
456
+ }
457
+ setGrid(descriptor) {
458
+ let width = -1;
459
+ let height = -1;
460
+ if (this._grid.value) {
461
+ width = this._grid.value.width;
462
+ height = this._grid.value.height;
463
+ }
464
+ this._grid.value = SerializableGrid.from({
465
+ orientation: 0 ,
466
+ size: 100,
467
+ groups: descriptor,
468
+ }, {
469
+ styles: { separatorBorder: this.theme.getColor(settingsSashBorder) ?? Color.transparent },
470
+ proportionalLayout: true
471
+ });
472
+ reset(this.rootHtmlElement, this._grid.value.element);
473
+ if (width !== -1) {
474
+ this._grid.value.layout(width, height);
475
+ }
476
+ }
477
+ _applyViewState(state) {
478
+ if (!state) {
479
+ return;
480
+ }
481
+ this.inputResultView.editor.restoreViewState(state);
482
+ if (state.input1State) {
483
+ this.input1View.editor.restoreViewState(state.input1State);
484
+ }
485
+ if (state.input2State) {
486
+ this.input2View.editor.restoreViewState(state.input2State);
487
+ }
488
+ if (state.focusIndex >= 0) {
489
+ [this.input1View.editor, this.input2View.editor, this.inputResultView.editor][state.focusIndex].focus();
490
+ }
491
+ }
492
+ computeEditorViewState(resource) {
493
+ if (!isEqual(this.inputModel.get()?.resultUri, resource)) {
494
+ return undefined;
495
+ }
496
+ const result = this.inputResultView.editor.saveViewState();
497
+ if (!result) {
498
+ return undefined;
499
+ }
500
+ const input1State = this.input1View.editor.saveViewState() ?? undefined;
501
+ const input2State = this.input2View.editor.saveViewState() ?? undefined;
502
+ const focusIndex = [this.input1View.editor, this.input2View.editor, this.inputResultView.editor].findIndex(editor => editor.hasWidgetFocus());
503
+ return { ...result, input1State, input2State, focusIndex };
504
+ }
505
+ tracksEditorViewState(input) {
506
+ return input instanceof MergeEditorInput;
507
+ }
508
+ toggleShowNonConflictingChanges() {
509
+ this.showNonConflictingChanges.set(!this.showNonConflictingChanges.get(), undefined);
510
+ this.showNonConflictingChangesStore.set(this.showNonConflictingChanges.get());
511
+ this._ctxShowNonConflictingChanges.set(this.showNonConflictingChanges.get());
512
+ }
513
+ };
514
+ MergeEditor = MergeEditor_1 = ( __decorate([
515
+ ( __param(1, IInstantiationService)),
516
+ ( __param(2, IContextKeyService)),
517
+ ( __param(3, ITelemetryService)),
518
+ ( __param(4, IStorageService)),
519
+ ( __param(5, IThemeService)),
520
+ ( __param(6, ITextResourceConfigurationService)),
521
+ ( __param(7, IConfigurationService)),
522
+ ( __param(8, IEditorService)),
523
+ ( __param(9, IEditorGroupsService)),
524
+ ( __param(10, IFileService)),
525
+ ( __param(11, ICodeEditorService)),
526
+ ( __param(12, IConfigurationService))
527
+ ], MergeEditor));
528
+ let MergeEditorLayoutStore = class MergeEditorLayoutStore {
529
+ static { MergeEditorLayoutStore_1 = this; }
530
+ static { this._key = 'mergeEditor/layout'; }
531
+ constructor(_storageService) {
532
+ this._storageService = _storageService;
533
+ this._value = { kind: 'mixed', showBase: false, showBaseAtTop: true };
534
+ const value = _storageService.get(MergeEditorLayoutStore_1._key, 0 , 'mixed');
535
+ if (value === 'mixed' || value === 'columns') {
536
+ this._value = { kind: value, showBase: false, showBaseAtTop: true };
537
+ }
538
+ else if (value) {
539
+ try {
540
+ this._value = JSON.parse(value);
541
+ }
542
+ catch (e) {
543
+ onUnexpectedError(e);
544
+ }
545
+ }
546
+ }
547
+ get value() {
548
+ return this._value;
549
+ }
550
+ set value(value) {
551
+ if (this._value !== value) {
552
+ this._value = value;
553
+ this._storageService.store(MergeEditorLayoutStore_1._key, JSON.stringify(this._value), 0 , 0 );
554
+ }
555
+ }
556
+ };
557
+ MergeEditorLayoutStore = MergeEditorLayoutStore_1 = ( __decorate([
558
+ ( __param(0, IStorageService))
559
+ ], MergeEditorLayoutStore));
560
+ let MergeEditorOpenHandlerContribution = class MergeEditorOpenHandlerContribution extends Disposable {
561
+ constructor(_editorService, codeEditorService) {
562
+ super();
563
+ this._editorService = _editorService;
564
+ this._store.add(codeEditorService.registerCodeEditorOpenHandler(this.openCodeEditorFromMergeEditor.bind(this)));
565
+ }
566
+ async openCodeEditorFromMergeEditor(input, _source, sideBySide) {
567
+ const activePane = this._editorService.activeEditorPane;
568
+ if (!sideBySide
569
+ && input.options
570
+ && activePane instanceof MergeEditor
571
+ && activePane.getControl()
572
+ && activePane.input instanceof MergeEditorInput
573
+ && isEqual(input.resource, activePane.input.result)) {
574
+ const targetEditor = activePane.getControl();
575
+ applyTextEditorOptions(input.options, targetEditor, 0 );
576
+ return targetEditor;
577
+ }
578
+ return null;
579
+ }
580
+ };
581
+ MergeEditorOpenHandlerContribution = ( __decorate([
582
+ ( __param(0, IEditorService)),
583
+ ( __param(1, ICodeEditorService))
584
+ ], MergeEditorOpenHandlerContribution));
585
+ let MergeEditorResolverContribution = class MergeEditorResolverContribution extends Disposable {
586
+ static { this.ID = 'workbench.contrib.mergeEditorResolver'; }
587
+ constructor(editorResolverService, instantiationService) {
588
+ super();
589
+ const mergeEditorInputFactory = (mergeEditor) => {
590
+ return {
591
+ editor: instantiationService.createInstance(MergeEditorInput, mergeEditor.base.resource, {
592
+ uri: mergeEditor.input1.resource,
593
+ title: mergeEditor.input1.label ?? basename(mergeEditor.input1.resource),
594
+ description: mergeEditor.input1.description ?? '',
595
+ detail: mergeEditor.input1.detail
596
+ }, {
597
+ uri: mergeEditor.input2.resource,
598
+ title: mergeEditor.input2.label ?? basename(mergeEditor.input2.resource),
599
+ description: mergeEditor.input2.description ?? '',
600
+ detail: mergeEditor.input2.detail
601
+ }, mergeEditor.result.resource)
602
+ };
603
+ };
604
+ this._register(editorResolverService.registerEditor(`*`, {
605
+ id: DEFAULT_EDITOR_ASSOCIATION.id,
606
+ label: DEFAULT_EDITOR_ASSOCIATION.displayName,
607
+ detail: DEFAULT_EDITOR_ASSOCIATION.providerDisplayName,
608
+ priority: RegisteredEditorPriority.builtin
609
+ }, {}, {
610
+ createMergeEditorInput: mergeEditorInputFactory
611
+ }));
612
+ }
613
+ };
614
+ MergeEditorResolverContribution = ( __decorate([
615
+ ( __param(0, IEditorResolverService)),
616
+ ( __param(1, IInstantiationService))
617
+ ], MergeEditorResolverContribution));
618
+
619
+ export { MergeEditor, MergeEditorOpenHandlerContribution, MergeEditorResolverContribution };