@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,350 @@
1
+ import { createStyleSheet, isInShadowDOM, h, $, reset } from 'vscode/vscode/vs/base/browser/dom';
2
+ import { renderLabelWithIcons } from 'vscode/vscode/vs/base/browser/ui/iconLabel/iconLabels';
3
+ import { hash } from 'vscode/vscode/vs/base/common/hash';
4
+ import { Disposable } from 'vscode/vscode/vs/base/common/lifecycle';
5
+ import { transaction } from 'vscode/vscode/vs/base/common/observableInternal/base';
6
+ import { derived } from 'vscode/vscode/vs/base/common/observableInternal/derived';
7
+ import { autorun } from 'vscode/vscode/vs/base/common/observableInternal/autorun';
8
+ import 'vscode/vscode/vs/base/common/observableInternal/utils';
9
+ import 'vscode/vscode/vs/base/common/cancellation';
10
+ import { EDITOR_FONT_DEFAULTS } from 'vscode/vscode/vs/editor/common/config/editorOptions';
11
+ import { localizeWithPath } from 'vscode/vscode/vs/nls';
12
+ import { ModifiedBaseRangeStateKind, ModifiedBaseRangeState } from 'vscode/vscode/vs/workbench/contrib/mergeEditor/browser/model/modifiedBaseRange';
13
+ import { FixedZoneWidget } from './fixedZoneWidget.js';
14
+
15
+ class ConflictActionsFactory extends Disposable {
16
+ constructor(_editor) {
17
+ super();
18
+ this._editor = _editor;
19
+ this._register(this._editor.onDidChangeConfiguration((e) => {
20
+ if (e.hasChanged(50 ) || e.hasChanged(19 ) || e.hasChanged(18 )) {
21
+ this._updateLensStyle();
22
+ }
23
+ }));
24
+ this._styleClassName = '_conflictActionsFactory_' + ( hash(this._editor.getId()).toString(16));
25
+ this._styleElement = createStyleSheet(isInShadowDOM(this._editor.getContainerDomNode())
26
+ ? this._editor.getContainerDomNode()
27
+ : undefined, undefined, this._store);
28
+ this._updateLensStyle();
29
+ }
30
+ _updateLensStyle() {
31
+ const { codeLensHeight, fontSize } = this._getLayoutInfo();
32
+ const fontFamily = this._editor.getOption(18 );
33
+ const editorFontInfo = this._editor.getOption(50 );
34
+ const fontFamilyVar = `--codelens-font-family${this._styleClassName}`;
35
+ const fontFeaturesVar = `--codelens-font-features${this._styleClassName}`;
36
+ let newStyle = `
37
+ .${this._styleClassName} { line-height: ${codeLensHeight}px; font-size: ${fontSize}px; padding-right: ${Math.round(fontSize * 0.5)}px; font-feature-settings: var(${fontFeaturesVar}) }
38
+ .monaco-workbench .${this._styleClassName} span.codicon { line-height: ${codeLensHeight}px; font-size: ${fontSize}px; }
39
+ `;
40
+ if (fontFamily) {
41
+ newStyle += `${this._styleClassName} { font-family: var(${fontFamilyVar}), ${EDITOR_FONT_DEFAULTS.fontFamily}}`;
42
+ }
43
+ this._styleElement.textContent = newStyle;
44
+ this._editor.getContainerDomNode().style.setProperty(fontFamilyVar, fontFamily ?? 'inherit');
45
+ this._editor.getContainerDomNode().style.setProperty(fontFeaturesVar, editorFontInfo.fontFeatureSettings);
46
+ }
47
+ _getLayoutInfo() {
48
+ const lineHeightFactor = Math.max(1.3, this._editor.getOption(67 ) / this._editor.getOption(52 ));
49
+ let fontSize = this._editor.getOption(19 );
50
+ if (!fontSize || fontSize < 5) {
51
+ fontSize = (this._editor.getOption(52 ) * .9) | 0;
52
+ }
53
+ return {
54
+ fontSize,
55
+ codeLensHeight: (fontSize * lineHeightFactor) | 0,
56
+ };
57
+ }
58
+ createWidget(viewZoneChangeAccessor, lineNumber, items, viewZoneIdsToCleanUp) {
59
+ const layoutInfo = this._getLayoutInfo();
60
+ return ( new ActionsContentWidget(
61
+ this._editor,
62
+ viewZoneChangeAccessor,
63
+ lineNumber,
64
+ layoutInfo.codeLensHeight + 2,
65
+ this._styleClassName,
66
+ items,
67
+ viewZoneIdsToCleanUp
68
+ ));
69
+ }
70
+ }
71
+ class ActionsSource {
72
+ constructor(viewModel, modifiedBaseRange) {
73
+ this.viewModel = viewModel;
74
+ this.modifiedBaseRange = modifiedBaseRange;
75
+ this.itemsInput1 = this.getItemsInput(1);
76
+ this.itemsInput2 = this.getItemsInput(2);
77
+ this.resultItems = derived(this, reader => {
78
+ const viewModel = this.viewModel;
79
+ const modifiedBaseRange = this.modifiedBaseRange;
80
+ const state = viewModel.model.getState(modifiedBaseRange).read(reader);
81
+ const model = viewModel.model;
82
+ const result = [];
83
+ if (state.kind === ModifiedBaseRangeStateKind.unrecognized) {
84
+ result.push({
85
+ text: ( localizeWithPath(
86
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
87
+ 'manualResolution',
88
+ "Manual Resolution"
89
+ )),
90
+ tooltip: ( localizeWithPath(
91
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
92
+ 'manualResolutionTooltip',
93
+ "This conflict has been resolved manually."
94
+ )),
95
+ });
96
+ }
97
+ else if (state.kind === ModifiedBaseRangeStateKind.base) {
98
+ result.push({
99
+ text: ( localizeWithPath(
100
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
101
+ 'noChangesAccepted',
102
+ 'No Changes Accepted'
103
+ )),
104
+ tooltip: ( localizeWithPath(
105
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
106
+ 'noChangesAcceptedTooltip',
107
+ 'The current resolution of this conflict equals the common ancestor of both the right and left changes.'
108
+ )),
109
+ });
110
+ }
111
+ else {
112
+ const labels = [];
113
+ if (state.includesInput1) {
114
+ labels.push(model.input1.title);
115
+ }
116
+ if (state.includesInput2) {
117
+ labels.push(model.input2.title);
118
+ }
119
+ if (state.kind === ModifiedBaseRangeStateKind.both && state.firstInput === 2) {
120
+ labels.reverse();
121
+ }
122
+ result.push({
123
+ text: `${labels.join(' + ')}`
124
+ });
125
+ }
126
+ const stateToggles = [];
127
+ if (state.includesInput1) {
128
+ stateToggles.push(command(( localizeWithPath(
129
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
130
+ 'remove',
131
+ 'Remove {0}',
132
+ model.input1.title
133
+ )), async () => {
134
+ transaction((tx) => {
135
+ model.setState(modifiedBaseRange, state.withInputValue(1, false), true, tx);
136
+ model.telemetry.reportRemoveInvoked(1, state.includesInput(2));
137
+ });
138
+ }, ( localizeWithPath(
139
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
140
+ 'removeTooltip',
141
+ 'Remove {0} from the result document.',
142
+ model.input1.title
143
+ ))));
144
+ }
145
+ if (state.includesInput2) {
146
+ stateToggles.push(command(( localizeWithPath(
147
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
148
+ 'remove',
149
+ 'Remove {0}',
150
+ model.input2.title
151
+ )), async () => {
152
+ transaction((tx) => {
153
+ model.setState(modifiedBaseRange, state.withInputValue(2, false), true, tx);
154
+ model.telemetry.reportRemoveInvoked(2, state.includesInput(1));
155
+ });
156
+ }, ( localizeWithPath(
157
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
158
+ 'removeTooltip',
159
+ 'Remove {0} from the result document.',
160
+ model.input2.title
161
+ ))));
162
+ }
163
+ if (state.kind === ModifiedBaseRangeStateKind.both &&
164
+ state.firstInput === 2) {
165
+ stateToggles.reverse();
166
+ }
167
+ result.push(...stateToggles);
168
+ if (state.kind === ModifiedBaseRangeStateKind.unrecognized) {
169
+ result.push(command(( localizeWithPath(
170
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
171
+ 'resetToBase',
172
+ 'Reset to base'
173
+ )), async () => {
174
+ transaction((tx) => {
175
+ model.setState(modifiedBaseRange, ModifiedBaseRangeState.base, true, tx);
176
+ model.telemetry.reportResetToBaseInvoked();
177
+ });
178
+ }, ( localizeWithPath(
179
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
180
+ 'resetToBaseTooltip',
181
+ 'Reset this conflict to the common ancestor of both the right and left changes.'
182
+ ))));
183
+ }
184
+ return result;
185
+ });
186
+ this.isEmpty = derived(this, reader => {
187
+ return this.itemsInput1.read(reader).length + this.itemsInput2.read(reader).length + this.resultItems.read(reader).length === 0;
188
+ });
189
+ this.inputIsEmpty = derived(this, reader => {
190
+ return this.itemsInput1.read(reader).length + this.itemsInput2.read(reader).length === 0;
191
+ });
192
+ }
193
+ getItemsInput(inputNumber) {
194
+ return derived(reader => {
195
+ const viewModel = this.viewModel;
196
+ const modifiedBaseRange = this.modifiedBaseRange;
197
+ if (!viewModel.model.hasBaseRange(modifiedBaseRange)) {
198
+ return [];
199
+ }
200
+ const state = viewModel.model.getState(modifiedBaseRange).read(reader);
201
+ const handled = viewModel.model.isHandled(modifiedBaseRange).read(reader);
202
+ const model = viewModel.model;
203
+ const result = [];
204
+ const inputData = inputNumber === 1 ? viewModel.model.input1 : viewModel.model.input2;
205
+ const showNonConflictingChanges = viewModel.showNonConflictingChanges.read(reader);
206
+ if (!modifiedBaseRange.isConflicting && handled && !showNonConflictingChanges) {
207
+ return [];
208
+ }
209
+ const otherInputNumber = inputNumber === 1 ? 2 : 1;
210
+ if (state.kind !== ModifiedBaseRangeStateKind.unrecognized && !state.isInputIncluded(inputNumber)) {
211
+ if (!state.isInputIncluded(otherInputNumber) || !this.viewModel.shouldUseAppendInsteadOfAccept.read(reader)) {
212
+ result.push(command(( localizeWithPath(
213
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
214
+ 'accept',
215
+ "Accept {0}",
216
+ inputData.title
217
+ )), async () => {
218
+ transaction((tx) => {
219
+ model.setState(modifiedBaseRange, state.withInputValue(inputNumber, true, false), inputNumber, tx);
220
+ model.telemetry.reportAcceptInvoked(inputNumber, state.includesInput(otherInputNumber));
221
+ });
222
+ }, ( localizeWithPath(
223
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
224
+ 'acceptTooltip',
225
+ "Accept {0} in the result document.",
226
+ inputData.title
227
+ ))));
228
+ if (modifiedBaseRange.canBeCombined) {
229
+ const commandName = modifiedBaseRange.isOrderRelevant
230
+ ? ( localizeWithPath(
231
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
232
+ 'acceptBoth0First',
233
+ "Accept Combination ({0} First)",
234
+ inputData.title
235
+ ))
236
+ : ( localizeWithPath(
237
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
238
+ 'acceptBoth',
239
+ "Accept Combination"
240
+ ));
241
+ result.push(command(commandName, async () => {
242
+ transaction((tx) => {
243
+ model.setState(modifiedBaseRange, ModifiedBaseRangeState.base
244
+ .withInputValue(inputNumber, true)
245
+ .withInputValue(otherInputNumber, true, true), true, tx);
246
+ model.telemetry.reportSmartCombinationInvoked(state.includesInput(otherInputNumber));
247
+ });
248
+ }, ( localizeWithPath(
249
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
250
+ 'acceptBothTooltip',
251
+ "Accept an automatic combination of both sides in the result document."
252
+ ))));
253
+ }
254
+ }
255
+ else {
256
+ result.push(command(( localizeWithPath(
257
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
258
+ 'append',
259
+ "Append {0}",
260
+ inputData.title
261
+ )), async () => {
262
+ transaction((tx) => {
263
+ model.setState(modifiedBaseRange, state.withInputValue(inputNumber, true, false), inputNumber, tx);
264
+ model.telemetry.reportAcceptInvoked(inputNumber, state.includesInput(otherInputNumber));
265
+ });
266
+ }, ( localizeWithPath(
267
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
268
+ 'appendTooltip',
269
+ "Append {0} to the result document.",
270
+ inputData.title
271
+ ))));
272
+ if (modifiedBaseRange.canBeCombined) {
273
+ result.push(command(( localizeWithPath(
274
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
275
+ 'combine',
276
+ "Accept Combination",
277
+ inputData.title
278
+ )), async () => {
279
+ transaction((tx) => {
280
+ model.setState(modifiedBaseRange, state.withInputValue(inputNumber, true, true), inputNumber, tx);
281
+ model.telemetry.reportSmartCombinationInvoked(state.includesInput(otherInputNumber));
282
+ });
283
+ }, ( localizeWithPath(
284
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
285
+ 'acceptBothTooltip',
286
+ "Accept an automatic combination of both sides in the result document."
287
+ ))));
288
+ }
289
+ }
290
+ if (!model.isInputHandled(modifiedBaseRange, inputNumber).read(reader)) {
291
+ result.push(command(( localizeWithPath(
292
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
293
+ 'ignore',
294
+ 'Ignore'
295
+ )), async () => {
296
+ transaction((tx) => {
297
+ model.setInputHandled(modifiedBaseRange, inputNumber, true, tx);
298
+ });
299
+ }, ( localizeWithPath(
300
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
301
+ 'markAsHandledTooltip',
302
+ "Don't take this side of the conflict."
303
+ ))));
304
+ }
305
+ }
306
+ return result;
307
+ });
308
+ }
309
+ }
310
+ function command(title, action, tooltip) {
311
+ return {
312
+ text: title,
313
+ action,
314
+ tooltip,
315
+ };
316
+ }
317
+ class ActionsContentWidget extends FixedZoneWidget {
318
+ constructor(editor, viewZoneAccessor, afterLineNumber, height, className, items, viewZoneIdsToCleanUp) {
319
+ super(editor, viewZoneAccessor, afterLineNumber, height, viewZoneIdsToCleanUp);
320
+ this._domNode = h('div.merge-editor-conflict-actions').root;
321
+ this.widgetDomNode.appendChild(this._domNode);
322
+ this._domNode.classList.add(className);
323
+ this._register(autorun(reader => {
324
+ const i = items.read(reader);
325
+ this.setState(i);
326
+ }));
327
+ }
328
+ setState(items) {
329
+ const children = [];
330
+ let isFirst = true;
331
+ for (const item of items) {
332
+ if (isFirst) {
333
+ isFirst = false;
334
+ }
335
+ else {
336
+ children.push($('span', undefined, '\u00a0|\u00a0'));
337
+ }
338
+ const title = renderLabelWithIcons(item.text);
339
+ if (item.action) {
340
+ children.push($('a', { title: item.tooltip, role: 'button', onclick: () => item.action() }, ...title));
341
+ }
342
+ else {
343
+ children.push($('span', { title: item.tooltip }, ...title));
344
+ }
345
+ }
346
+ reset(this._domNode, ...children);
347
+ }
348
+ }
349
+
350
+ export { ActionsSource, ConflictActionsFactory };
@@ -0,0 +1,100 @@
1
+ import { h, reset } from 'vscode/vscode/vs/base/browser/dom';
2
+ import { Disposable, toDisposable } from 'vscode/vscode/vs/base/common/lifecycle';
3
+ import { transaction } from 'vscode/vscode/vs/base/common/observableInternal/base';
4
+ import 'vscode/vscode/vs/base/common/observableInternal/derived';
5
+ import { autorun } from 'vscode/vscode/vs/base/common/observableInternal/autorun';
6
+ import { observableFromEvent, observableSignalFromEvent, observableSignal } from 'vscode/vscode/vs/base/common/observableInternal/utils';
7
+ import 'vscode/vscode/vs/base/common/cancellation';
8
+ import { LineRange } from 'vscode/vscode/vs/workbench/contrib/mergeEditor/browser/model/lineRange';
9
+
10
+ class EditorGutter extends Disposable {
11
+ constructor(_editor, _domNode, itemProvider) {
12
+ super();
13
+ this._editor = _editor;
14
+ this._domNode = _domNode;
15
+ this.itemProvider = itemProvider;
16
+ this.scrollTop = observableFromEvent(this._editor.onDidScrollChange, (e) => this._editor.getScrollTop());
17
+ this.isScrollTopZero = ( this.scrollTop.map((scrollTop) => scrollTop === 0));
18
+ this.modelAttached = observableFromEvent(this._editor.onDidChangeModel, (e) => this._editor.hasModel());
19
+ this.editorOnDidChangeViewZones = observableSignalFromEvent('onDidChangeViewZones', this._editor.onDidChangeViewZones);
20
+ this.editorOnDidContentSizeChange = observableSignalFromEvent('onDidContentSizeChange', this._editor.onDidContentSizeChange);
21
+ this.domNodeSizeChanged = observableSignal('domNodeSizeChanged');
22
+ this.views = ( new Map());
23
+ this._domNode.className = 'gutter monaco-editor';
24
+ const scrollDecoration = this._domNode.appendChild(h('div.scroll-decoration', { role: 'presentation', ariaHidden: 'true', style: { width: '100%' } })
25
+ .root);
26
+ const o = ( new ResizeObserver(() => {
27
+ transaction(tx => {
28
+ this.domNodeSizeChanged.trigger(tx);
29
+ });
30
+ }));
31
+ o.observe(this._domNode);
32
+ this._register(toDisposable(() => o.disconnect()));
33
+ this._register(autorun(reader => {
34
+ scrollDecoration.className = this.isScrollTopZero.read(reader) ? '' : 'scroll-decoration';
35
+ }));
36
+ this._register(autorun(reader => this.render(reader)));
37
+ }
38
+ dispose() {
39
+ super.dispose();
40
+ reset(this._domNode);
41
+ }
42
+ render(reader) {
43
+ if (!this.modelAttached.read(reader)) {
44
+ return;
45
+ }
46
+ this.domNodeSizeChanged.read(reader);
47
+ this.editorOnDidChangeViewZones.read(reader);
48
+ this.editorOnDidContentSizeChange.read(reader);
49
+ const scrollTop = this.scrollTop.read(reader);
50
+ const visibleRanges = this._editor.getVisibleRanges();
51
+ const unusedIds = ( new Set(( this.views.keys())));
52
+ if (visibleRanges.length > 0) {
53
+ const visibleRange = visibleRanges[0];
54
+ const visibleRange2 = ( new LineRange(
55
+ visibleRange.startLineNumber,
56
+ visibleRange.endLineNumber - visibleRange.startLineNumber
57
+ )).deltaEnd(1);
58
+ const gutterItems = this.itemProvider.getIntersectingGutterItems(visibleRange2, reader);
59
+ for (const gutterItem of gutterItems) {
60
+ if (!gutterItem.range.touches(visibleRange2)) {
61
+ continue;
62
+ }
63
+ unusedIds.delete(gutterItem.id);
64
+ let view = this.views.get(gutterItem.id);
65
+ if (!view) {
66
+ const viewDomNode = document.createElement('div');
67
+ this._domNode.appendChild(viewDomNode);
68
+ const itemView = this.itemProvider.createView(gutterItem, viewDomNode);
69
+ view = ( new ManagedGutterItemView(itemView, viewDomNode));
70
+ this.views.set(gutterItem.id, view);
71
+ }
72
+ else {
73
+ view.gutterItemView.update(gutterItem);
74
+ }
75
+ const top = gutterItem.range.startLineNumber <= this._editor.getModel().getLineCount()
76
+ ? this._editor.getTopForLineNumber(gutterItem.range.startLineNumber, true) - scrollTop
77
+ : this._editor.getBottomForLineNumber(gutterItem.range.startLineNumber - 1, false) - scrollTop;
78
+ const bottom = this._editor.getBottomForLineNumber(gutterItem.range.endLineNumberExclusive - 1, true) - scrollTop;
79
+ const height = bottom - top;
80
+ view.domNode.style.top = `${top}px`;
81
+ view.domNode.style.height = `${height}px`;
82
+ view.gutterItemView.layout(top, height, 0, this._domNode.clientHeight);
83
+ }
84
+ }
85
+ for (const id of unusedIds) {
86
+ const view = this.views.get(id);
87
+ view.gutterItemView.dispose();
88
+ this._domNode.removeChild(view.domNode);
89
+ this.views.delete(id);
90
+ }
91
+ }
92
+ }
93
+ class ManagedGutterItemView {
94
+ constructor(gutterItemView, domNode) {
95
+ this.gutterItemView = gutterItemView;
96
+ this.domNode = domNode;
97
+ }
98
+ }
99
+
100
+ export { EditorGutter };
@@ -0,0 +1,148 @@
1
+ import { __decorate, __param } from 'vscode/external/tslib/tslib.es6.js';
2
+ import { reset, h } from 'vscode/vscode/vs/base/browser/dom';
3
+ import { renderLabelWithIcons } from 'vscode/vscode/vs/base/browser/ui/iconLabel/iconLabels';
4
+ import { BugIndicatingError } from 'vscode/vscode/vs/base/common/errors';
5
+ import { derived } from 'vscode/vscode/vs/base/common/observableInternal/derived';
6
+ import { autorunWithStore, autorun } from 'vscode/vscode/vs/base/common/observableInternal/autorun';
7
+ import 'vscode/vscode/vs/base/common/observableInternal/utils';
8
+ import 'vscode/vscode/vs/base/common/cancellation';
9
+ import { OverviewRulerLane } from 'vscode/vscode/vs/editor/common/model';
10
+ import { localizeWithPath } from 'vscode/vscode/vs/nls';
11
+ import { MenuId } from 'vscode/vscode/vs/platform/actions/common/actions';
12
+ import { IConfigurationService } from 'vscode/vscode/vs/platform/configuration/common/configuration.service';
13
+ import { IInstantiationService } from 'vscode/vscode/vs/platform/instantiation/common/instantiation';
14
+ import { applyObservableDecorations } from 'vscode/vscode/vs/workbench/contrib/mergeEditor/browser/utils';
15
+ import { handledConflictMinimapOverViewRulerColor, unhandledConflictMinimapOverViewRulerColor } from '../colors.js';
16
+ import { EditorGutter } from '../editorGutter.js';
17
+ import { CodeEditorView, createSelectionsAutorun, TitleMenu } from './codeEditorView.js';
18
+
19
+ let BaseCodeEditorView = class BaseCodeEditorView extends CodeEditorView {
20
+ constructor(viewModel, instantiationService, configurationService) {
21
+ super(instantiationService, viewModel, configurationService);
22
+ this.decorations = derived(this, reader => {
23
+ const viewModel = this.viewModel.read(reader);
24
+ if (!viewModel) {
25
+ return [];
26
+ }
27
+ const model = viewModel.model;
28
+ const textModel = model.base;
29
+ const activeModifiedBaseRange = viewModel.activeModifiedBaseRange.read(reader);
30
+ const showNonConflictingChanges = viewModel.showNonConflictingChanges.read(reader);
31
+ const showDeletionMarkers = this.showDeletionMarkers.read(reader);
32
+ const result = [];
33
+ for (const modifiedBaseRange of model.modifiedBaseRanges.read(reader)) {
34
+ const range = modifiedBaseRange.baseRange;
35
+ if (!range) {
36
+ continue;
37
+ }
38
+ const isHandled = model.isHandled(modifiedBaseRange).read(reader);
39
+ if (!modifiedBaseRange.isConflicting && isHandled && !showNonConflictingChanges) {
40
+ continue;
41
+ }
42
+ const blockClassNames = ['merge-editor-block'];
43
+ let blockPadding = [0, 0, 0, 0];
44
+ if (isHandled) {
45
+ blockClassNames.push('handled');
46
+ }
47
+ if (modifiedBaseRange === activeModifiedBaseRange) {
48
+ blockClassNames.push('focused');
49
+ blockPadding = [0, 2, 0, 2];
50
+ }
51
+ blockClassNames.push('base');
52
+ const inputToDiffAgainst = viewModel.baseShowDiffAgainst.read(reader);
53
+ if (inputToDiffAgainst) {
54
+ for (const diff of modifiedBaseRange.getInputDiffs(inputToDiffAgainst)) {
55
+ const range = diff.inputRange.toInclusiveRange();
56
+ if (range) {
57
+ result.push({
58
+ range,
59
+ options: {
60
+ className: `merge-editor-diff base`,
61
+ description: 'Merge Editor',
62
+ isWholeLine: true,
63
+ }
64
+ });
65
+ }
66
+ for (const diff2 of diff.rangeMappings) {
67
+ if (showDeletionMarkers || !diff2.inputRange.isEmpty()) {
68
+ result.push({
69
+ range: diff2.inputRange,
70
+ options: {
71
+ className: diff2.inputRange.isEmpty() ? `merge-editor-diff-empty-word base` : `merge-editor-diff-word base`,
72
+ description: 'Merge Editor',
73
+ showIfCollapsed: true,
74
+ },
75
+ });
76
+ }
77
+ }
78
+ }
79
+ }
80
+ result.push({
81
+ range: range.toInclusiveRangeOrEmpty(),
82
+ options: {
83
+ showIfCollapsed: true,
84
+ blockClassName: blockClassNames.join(' '),
85
+ blockPadding,
86
+ blockIsAfterEnd: range.startLineNumber > textModel.getLineCount(),
87
+ description: 'Merge Editor',
88
+ minimap: {
89
+ position: 2 ,
90
+ color: { id: isHandled ? handledConflictMinimapOverViewRulerColor : unhandledConflictMinimapOverViewRulerColor },
91
+ },
92
+ overviewRuler: modifiedBaseRange.isConflicting ? {
93
+ position: OverviewRulerLane.Center,
94
+ color: { id: isHandled ? handledConflictMinimapOverViewRulerColor : unhandledConflictMinimapOverViewRulerColor },
95
+ } : undefined
96
+ }
97
+ });
98
+ }
99
+ return result;
100
+ });
101
+ this._register(createSelectionsAutorun(this, (baseRange, viewModel) => baseRange));
102
+ this._register(instantiationService.createInstance(TitleMenu, MenuId.MergeBaseToolbar, this.htmlElements.title));
103
+ this._register(autorunWithStore((reader, store) => {
104
+ if (this.checkboxesVisible.read(reader)) {
105
+ store.add(( new EditorGutter(this.editor, this.htmlElements.gutterDiv, {
106
+ getIntersectingGutterItems: (range, reader) => [],
107
+ createView: (item, target) => { throw new BugIndicatingError(); },
108
+ })));
109
+ }
110
+ }));
111
+ this._register(autorun(reader => {
112
+ const vm = this.viewModel.read(reader);
113
+ if (!vm) {
114
+ return;
115
+ }
116
+ this.editor.setModel(vm.model.base);
117
+ reset(this.htmlElements.title, ...renderLabelWithIcons(( localizeWithPath(
118
+ 'vs/workbench/contrib/mergeEditor/browser/view/editors/baseCodeEditorView',
119
+ 'base',
120
+ 'Base'
121
+ ))));
122
+ const baseShowDiffAgainst = vm.baseShowDiffAgainst.read(reader);
123
+ let node = undefined;
124
+ if (baseShowDiffAgainst) {
125
+ const label = ( localizeWithPath(
126
+ 'vs/workbench/contrib/mergeEditor/browser/view/editors/baseCodeEditorView',
127
+ 'compareWith',
128
+ 'Comparing with {0}',
129
+ baseShowDiffAgainst === 1 ? vm.model.input1.title : vm.model.input2.title
130
+ ));
131
+ const tooltip = ( localizeWithPath(
132
+ 'vs/workbench/contrib/mergeEditor/browser/view/editors/baseCodeEditorView',
133
+ 'compareWithTooltip',
134
+ 'Differences are highlighted with a background color.'
135
+ ));
136
+ node = h('span', { title: tooltip }, [label]).root;
137
+ }
138
+ reset(this.htmlElements.description, ...(node ? [node] : []));
139
+ }));
140
+ this._register(applyObservableDecorations(this.editor, this.decorations));
141
+ }
142
+ };
143
+ BaseCodeEditorView = ( __decorate([
144
+ ( __param(1, IInstantiationService)),
145
+ ( __param(2, IConfigurationService))
146
+ ], BaseCodeEditorView));
147
+
148
+ export { BaseCodeEditorView };