@codingame/monaco-vscode-views-service-override 2.1.4 → 2.2.0-next.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.
Files changed (107) hide show
  1. package/index.d.ts +11 -9
  2. package/index.js +8 -6
  3. package/package.json +11 -11
  4. package/tools/views.d.ts +102 -0
  5. package/tools/views.js +253 -0
  6. package/views.d.ts +4 -99
  7. package/views.js +52 -280
  8. package/external/rollup-plugin-styles/dist/runtime/inject-css.js +0 -3
  9. package/vscode/src/vs/base/browser/ui/centered/centeredViewLayout.js +0 -180
  10. package/vscode/src/vs/base/browser/ui/grid/grid.js +0 -494
  11. package/vscode/src/vs/base/browser/ui/grid/gridview.css.js +0 -6
  12. package/vscode/src/vs/base/browser/ui/grid/gridview.js +0 -1112
  13. package/vscode/src/vs/base/common/codicons.d.ts +0 -579
  14. package/vscode/src/vs/platform/webview/common/mimeTypes.js +0 -24
  15. package/vscode/src/vs/platform/webview/common/webviewPortMapping.js +0 -64
  16. package/vscode/src/vs/workbench/api/browser/viewsExtensionPoint.js +0 -790
  17. package/vscode/src/vs/workbench/browser/actions/listCommands.js +0 -764
  18. package/vscode/src/vs/workbench/browser/layout.d.ts +0 -26
  19. package/vscode/src/vs/workbench/browser/parts/activitybar/activitybarPart.js +0 -612
  20. package/vscode/src/vs/workbench/browser/parts/activitybar/media/activityaction.css.js +0 -6
  21. package/vscode/src/vs/workbench/browser/parts/activitybar/media/activitybarpart.css.js +0 -6
  22. package/vscode/src/vs/workbench/browser/parts/auxiliarybar/auxiliaryBarPart.js +0 -150
  23. package/vscode/src/vs/workbench/browser/parts/auxiliarybar/media/auxiliaryBarPart.css.js +0 -6
  24. package/vscode/src/vs/workbench/browser/parts/compositeBar.js +0 -605
  25. package/vscode/src/vs/workbench/browser/parts/compositePart.js +0 -335
  26. package/vscode/src/vs/workbench/browser/parts/editor/auxiliaryEditorPart.js +0 -223
  27. package/vscode/src/vs/workbench/browser/parts/editor/editor.contribution.js +0 -1407
  28. package/vscode/src/vs/workbench/browser/parts/editor/editorConfiguration.js +0 -186
  29. package/vscode/src/vs/workbench/browser/parts/editor/editorDropTarget.js +0 -511
  30. package/vscode/src/vs/workbench/browser/parts/editor/editorPane.d.ts +0 -112
  31. package/vscode/src/vs/workbench/browser/parts/editor/editorPart.js +0 -1020
  32. package/vscode/src/vs/workbench/browser/parts/editor/editorParts.js +0 -391
  33. package/vscode/src/vs/workbench/browser/parts/editor/media/editordroptarget.css.js +0 -6
  34. package/vscode/src/vs/workbench/browser/parts/media/compositepart.css.js +0 -6
  35. package/vscode/src/vs/workbench/browser/parts/media/paneCompositePart.css.js +0 -6
  36. package/vscode/src/vs/workbench/browser/parts/paneCompositeBar.js +0 -645
  37. package/vscode/src/vs/workbench/browser/parts/paneCompositePart.js +0 -379
  38. package/vscode/src/vs/workbench/browser/parts/paneCompositePartService.js +0 -68
  39. package/vscode/src/vs/workbench/browser/parts/panel/panelPart.js +0 -146
  40. package/vscode/src/vs/workbench/browser/parts/sidebar/media/sidebarpart.css.js +0 -6
  41. package/vscode/src/vs/workbench/browser/parts/sidebar/sidebarPart.js +0 -222
  42. package/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchy.contribution.js +0 -299
  43. package/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyPeek.js +0 -365
  44. package/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree.js +0 -135
  45. package/vscode/src/vs/workbench/contrib/callHierarchy/browser/media/callHierarchy.css.js +0 -6
  46. package/vscode/src/vs/workbench/contrib/customEditor/browser/customEditor.contribution.js +0 -17
  47. package/vscode/src/vs/workbench/contrib/customEditor/browser/customEditorInputFactory.js +0 -145
  48. package/vscode/src/vs/workbench/contrib/customEditor/browser/customEditors.js +0 -214
  49. package/vscode/src/vs/workbench/contrib/customEditor/browser/media/customEditor.css.js +0 -6
  50. package/vscode/src/vs/workbench/contrib/customEditor/common/contributedCustomEditors.js +0 -78
  51. package/vscode/src/vs/workbench/contrib/customEditor/common/customEditorModelManager.js +0 -63
  52. package/vscode/src/vs/workbench/contrib/customEditor/common/extensionPoint.js +0 -119
  53. package/vscode/src/vs/workbench/contrib/externalUriOpener/common/externalUriOpener.contribution.js +0 -6
  54. package/vscode/src/vs/workbench/contrib/files/browser/editors/binaryFileEditor.js +0 -79
  55. package/vscode/src/vs/workbench/contrib/files/browser/editors/fileEditorHandler.js +0 -74
  56. package/vscode/src/vs/workbench/contrib/files/browser/editors/textFileEditor.js +0 -256
  57. package/vscode/src/vs/workbench/contrib/files/browser/editors/textFileEditorTracker.js +0 -99
  58. package/vscode/src/vs/workbench/contrib/files/browser/editors/textFileSaveErrorHandler.js +0 -444
  59. package/vscode/src/vs/workbench/contrib/files/browser/explorerService.js +0 -432
  60. package/vscode/src/vs/workbench/contrib/files/browser/fileActions.contribution.js +0 -786
  61. package/vscode/src/vs/workbench/contrib/files/browser/fileCommands.js +0 -488
  62. package/vscode/src/vs/workbench/contrib/files/browser/files.contribution.js +0 -522
  63. package/vscode/src/vs/workbench/contrib/files/browser/workspaceWatcher.js +0 -152
  64. package/vscode/src/vs/workbench/contrib/files/common/dirtyFilesIndicator.js +0 -63
  65. package/vscode/src/vs/workbench/contrib/languageStatus/browser/languageStatus.contribution.js +0 -409
  66. package/vscode/src/vs/workbench/contrib/languageStatus/browser/media/languageStatus.css.js +0 -6
  67. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/commands/commands.js +0 -693
  68. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/commands/devCommands.js +0 -240
  69. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/mergeEditor.contribution.js +0 -77
  70. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/mergeEditorSerializer.js +0 -42
  71. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/colors.js +0 -71
  72. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/conflictActions.js +0 -348
  73. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/editorGutter.js +0 -98
  74. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/editors/baseCodeEditorView.js +0 -146
  75. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/editors/codeEditorView.js +0 -105
  76. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/editors/inputCodeEditorView.js +0 -401
  77. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/editors/resultCodeEditorView.js +0 -197
  78. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/fixedZoneWidget.js +0 -41
  79. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/lineAlignment.js +0 -128
  80. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/media/mergeEditor.css.js +0 -6
  81. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/mergeEditor.js +0 -612
  82. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/scrollSynchronizer.js +0 -158
  83. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/viewModel.js +0 -264
  84. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/viewZones.js +0 -173
  85. package/vscode/src/vs/workbench/contrib/typeHierarchy/browser/media/typeHierarchy.css.js +0 -6
  86. package/vscode/src/vs/workbench/contrib/typeHierarchy/browser/typeHierarchy.contribution.js +0 -282
  87. package/vscode/src/vs/workbench/contrib/typeHierarchy/browser/typeHierarchyPeek.js +0 -360
  88. package/vscode/src/vs/workbench/contrib/typeHierarchy/browser/typeHierarchyTree.js +0 -133
  89. package/vscode/src/vs/workbench/contrib/webview/browser/overlayWebview.js +0 -290
  90. package/vscode/src/vs/workbench/contrib/webview/browser/resourceLoading.js +0 -96
  91. package/vscode/src/vs/workbench/contrib/webview/browser/themeing.js +0 -88
  92. package/vscode/src/vs/workbench/contrib/webview/browser/webview.contribution.js +0 -79
  93. package/vscode/src/vs/workbench/contrib/webview/browser/webviewElement.js +0 -648
  94. package/vscode/src/vs/workbench/contrib/webview/browser/webviewFindWidget.js +0 -65
  95. package/vscode/src/vs/workbench/contrib/webview/browser/webviewService.js +0 -59
  96. package/vscode/src/vs/workbench/contrib/webviewPanel/browser/webviewCommands.js +0 -142
  97. package/vscode/src/vs/workbench/contrib/webviewPanel/browser/webviewEditorInputSerializer.js +0 -121
  98. package/vscode/src/vs/workbench/contrib/webviewPanel/browser/webviewPanel.contribution.js +0 -68
  99. package/vscode/src/vs/workbench/contrib/webviewView/browser/webviewViewPane.js +0 -235
  100. package/vscode/src/vs/workbench/services/activity/browser/activityService.js +0 -145
  101. package/vscode/src/vs/workbench/services/editor/browser/editorResolverService.js +0 -670
  102. package/vscode/src/vs/workbench/services/history/browser/historyService.js +0 -1484
  103. package/vscode/src/vs/workbench/services/progress/browser/media/progressService.css.js +0 -6
  104. package/vscode/src/vs/workbench/services/progress/browser/progressService.js +0 -523
  105. package/vscode/src/vs/workbench/services/untitled/common/untitledTextEditorHandler.js +0 -101
  106. package/vscode/src/vs/workbench/services/views/browser/viewDescriptorService.js +0 -713
  107. package/vscode/src/vs/workbench/services/views/common/viewContainerModel.js +0 -598
@@ -1,105 +0,0 @@
1
- import { __decorate, __param } from '../../../../../../../../../external/tslib/tslib.es6.js';
2
- import { h } from 'vscode/vscode/vs/base/browser/dom';
3
- import { Emitter, Event } from 'vscode/vscode/vs/base/common/event';
4
- import { Disposable } from 'vscode/vscode/vs/base/common/lifecycle';
5
- import { EditorExtensionsRegistry } from 'vscode/vscode/vs/editor/browser/editorExtensions';
6
- import { CodeEditorWidget } from 'vscode/vscode/vs/editor/browser/widget/codeEditorWidget';
7
- import { Selection } from 'vscode/vscode/vs/editor/common/core/selection';
8
- import { CodeLensContribution } from 'vscode/vscode/vs/editor/contrib/codelens/browser/codelensController';
9
- import { FoldingController } from 'vscode/vscode/vs/editor/contrib/folding/browser/folding';
10
- import { MenuWorkbenchToolBar } from 'vscode/vscode/vs/platform/actions/browser/toolbar';
11
- import { IInstantiationService } from 'vscode/vscode/vs/platform/instantiation/common/instantiation';
12
- import { DEFAULT_EDITOR_MIN_DIMENSIONS, DEFAULT_EDITOR_MAX_DIMENSIONS } from 'vscode/vscode/vs/workbench/browser/parts/editor/editor';
13
- import { setStyle, observableConfigValue } from 'vscode/vscode/vs/workbench/contrib/mergeEditor/browser/utils';
14
- import { observableFromEvent } from 'vscode/vscode/vs/base/common/observableInternal/utils';
15
- import { derived } from 'vscode/vscode/vs/base/common/observableInternal/derived';
16
- import { autorun } from 'vscode/vscode/vs/base/common/observableInternal/autorun';
17
-
18
- class CodeEditorView extends Disposable {
19
- updateOptions(newOptions) {
20
- this.editor.updateOptions(newOptions);
21
- }
22
- constructor(instantiationService, viewModel, configurationService) {
23
- super();
24
- this.instantiationService = instantiationService;
25
- this.viewModel = viewModel;
26
- this.configurationService = configurationService;
27
- this.model = ( this.viewModel.map(m => m?.model));
28
- this.htmlElements = h('div.code-view', [
29
- h('div.header@header', [
30
- h('span.title@title'),
31
- h('span.description@description'),
32
- h('span.detail@detail'),
33
- h('span.toolbar@toolbar'),
34
- ]),
35
- h('div.container', [
36
- h('div.gutter@gutterDiv'),
37
- h('div@editor'),
38
- ]),
39
- ]);
40
- this._onDidViewChange = ( new Emitter());
41
- this.view = {
42
- element: this.htmlElements.root,
43
- minimumWidth: DEFAULT_EDITOR_MIN_DIMENSIONS.width,
44
- maximumWidth: DEFAULT_EDITOR_MAX_DIMENSIONS.width,
45
- minimumHeight: DEFAULT_EDITOR_MIN_DIMENSIONS.height,
46
- maximumHeight: DEFAULT_EDITOR_MAX_DIMENSIONS.height,
47
- onDidChange: this._onDidViewChange.event,
48
- layout: (width, height, top, left) => {
49
- setStyle(this.htmlElements.root, { width, height, top, left });
50
- this.editor.layout({
51
- width: width - this.htmlElements.gutterDiv.clientWidth,
52
- height: height - this.htmlElements.header.clientHeight,
53
- });
54
- }
55
- };
56
- this.checkboxesVisible = observableConfigValue('mergeEditor.showCheckboxes', false, this.configurationService);
57
- this.showDeletionMarkers = observableConfigValue('mergeEditor.showDeletionMarkers', true, this.configurationService);
58
- this.useSimplifiedDecorations = observableConfigValue('mergeEditor.useSimplifiedDecorations', false, this.configurationService);
59
- this.editor = this.instantiationService.createInstance(CodeEditorWidget, this.htmlElements.editor, {}, {
60
- contributions: this.getEditorContributions(),
61
- });
62
- this.isFocused = observableFromEvent(Event.any(this.editor.onDidBlurEditorWidget, this.editor.onDidFocusEditorWidget), () => this.editor.hasWidgetFocus());
63
- this.cursorPosition = observableFromEvent(this.editor.onDidChangeCursorPosition, () => this.editor.getPosition());
64
- this.selection = observableFromEvent(this.editor.onDidChangeCursorSelection, () => this.editor.getSelections());
65
- this.cursorLineNumber = ( this.cursorPosition.map(p => p?.lineNumber));
66
- }
67
- getEditorContributions() {
68
- return EditorExtensionsRegistry.getEditorContributions().filter(c => c.id !== FoldingController.ID && c.id !== CodeLensContribution.ID);
69
- }
70
- }
71
- function createSelectionsAutorun(codeEditorView, translateRange) {
72
- const selections = derived(reader => {
73
- const viewModel = codeEditorView.viewModel.read(reader);
74
- if (!viewModel) {
75
- return [];
76
- }
77
- const baseRange = viewModel.selectionInBase.read(reader);
78
- if (!baseRange || baseRange.sourceEditor === codeEditorView) {
79
- return [];
80
- }
81
- return ( baseRange.rangesInBase.map(r => translateRange(r, viewModel)));
82
- });
83
- return autorun(reader => {
84
- const ranges = selections.read(reader);
85
- if (ranges.length === 0) {
86
- return;
87
- }
88
- codeEditorView.editor.setSelections(( ranges.map(r => ( new Selection(r.startLineNumber, r.startColumn, r.endLineNumber, r.endColumn)))));
89
- });
90
- }
91
- let TitleMenu = class TitleMenu extends Disposable {
92
- constructor(menuId, targetHtmlElement, instantiationService) {
93
- super();
94
- const toolbar = instantiationService.createInstance(MenuWorkbenchToolBar, targetHtmlElement, menuId, {
95
- menuOptions: { renderShortTitle: true },
96
- toolbarOptions: { primaryGroup: (g) => g === 'primary' }
97
- });
98
- this._store.add(toolbar);
99
- }
100
- };
101
- TitleMenu = ( __decorate([
102
- ( __param(2, IInstantiationService))
103
- ], TitleMenu));
104
-
105
- export { CodeEditorView, TitleMenu, createSelectionsAutorun };
@@ -1,401 +0,0 @@
1
- import { __decorate, __param } from '../../../../../../../../../external/tslib/tslib.es6.js';
2
- import { reset, addDisposableListener, EventType, h } from 'vscode/vscode/vs/base/browser/dom';
3
- import { renderLabelWithIcons } from 'vscode/vscode/vs/base/browser/ui/iconLabel/iconLabels';
4
- import { Toggle } from 'vscode/vscode/vs/base/browser/ui/toggle/toggle';
5
- import { Separator, Action } from 'vscode/vscode/vs/base/common/actions';
6
- import { Codicon } from 'vscode/vscode/vs/base/common/codicons';
7
- import { Disposable } from 'vscode/vscode/vs/base/common/lifecycle';
8
- import { clamp } from 'vscode/vscode/vs/base/common/numbers';
9
- import { noBreakWhitespace } from 'vscode/vscode/vs/base/common/strings';
10
- import { isDefined } from 'vscode/vscode/vs/base/common/types';
11
- import { MinimapPosition, OverviewRulerLane } from 'vscode/vscode/vs/editor/common/model';
12
- import { localizeWithPath } from 'vscode/vscode/vs/nls';
13
- import { MenuId } from 'vscode/vscode/vs/platform/actions/common/actions';
14
- import { IConfigurationService } from 'vscode/vscode/vs/platform/configuration/common/configuration';
15
- import { IContextMenuService } from 'vscode/vscode/vs/platform/contextview/browser/contextView';
16
- import { IInstantiationService } from 'vscode/vscode/vs/platform/instantiation/common/instantiation';
17
- import { defaultToggleStyles } from 'vscode/vscode/vs/platform/theme/browser/defaultStyles';
18
- import { applyObservableDecorations, setFields } from 'vscode/vscode/vs/workbench/contrib/mergeEditor/browser/utils';
19
- import { handledConflictMinimapOverViewRulerColor, unhandledConflictMinimapOverViewRulerColor } from '../colors.js';
20
- import { EditorGutter } from '../editorGutter.js';
21
- import { CodeEditorView, createSelectionsAutorun, TitleMenu } from './codeEditorView.js';
22
- import { derivedOpts, derived } from 'vscode/vscode/vs/base/common/observableInternal/derived';
23
- import { autorunOpts, autorun } from 'vscode/vscode/vs/base/common/observableInternal/autorun';
24
- import { transaction, observableValue } from 'vscode/vscode/vs/base/common/observableInternal/base';
25
-
26
- let InputCodeEditorView = class InputCodeEditorView extends CodeEditorView {
27
- constructor(inputNumber, viewModel, instantiationService, contextMenuService, configurationService) {
28
- super(instantiationService, viewModel, configurationService);
29
- this.inputNumber = inputNumber;
30
- this.otherInputNumber = this.inputNumber === 1 ? 2 : 1;
31
- this.modifiedBaseRangeGutterItemInfos = derivedOpts({ debugName: `input${this.inputNumber}.modifiedBaseRangeGutterItemInfos` }, reader => {
32
- const viewModel = this.viewModel.read(reader);
33
- if (!viewModel) {
34
- return [];
35
- }
36
- const model = viewModel.model;
37
- const inputNumber = this.inputNumber;
38
- const showNonConflictingChanges = viewModel.showNonConflictingChanges.read(reader);
39
- return ( model.modifiedBaseRanges.read(reader)
40
- .filter((r) => r.getInputDiffs(this.inputNumber).length > 0 && (showNonConflictingChanges || r.isConflicting || !model.isHandled(r).read(reader)))
41
- .map((baseRange, idx) => ( new ModifiedBaseRangeGutterItemModel(( idx.toString()), baseRange, inputNumber, viewModel))));
42
- });
43
- this.decorations = derivedOpts({ debugName: `input${this.inputNumber}.decorations` }, reader => {
44
- const viewModel = this.viewModel.read(reader);
45
- if (!viewModel) {
46
- return [];
47
- }
48
- const model = viewModel.model;
49
- const textModel = (this.inputNumber === 1 ? model.input1 : model.input2).textModel;
50
- const activeModifiedBaseRange = viewModel.activeModifiedBaseRange.read(reader);
51
- const result = ( new Array());
52
- const showNonConflictingChanges = viewModel.showNonConflictingChanges.read(reader);
53
- const showDeletionMarkers = this.showDeletionMarkers.read(reader);
54
- const diffWithThis = viewModel.baseCodeEditorView.read(reader) !== undefined && viewModel.baseShowDiffAgainst.read(reader) === this.inputNumber;
55
- const useSimplifiedDecorations = !diffWithThis && this.useSimplifiedDecorations.read(reader);
56
- for (const modifiedBaseRange of model.modifiedBaseRanges.read(reader)) {
57
- const range = modifiedBaseRange.getInputRange(this.inputNumber);
58
- if (!range) {
59
- continue;
60
- }
61
- const blockClassNames = ['merge-editor-block'];
62
- let blockPadding = [0, 0, 0, 0];
63
- const isHandled = model.isInputHandled(modifiedBaseRange, this.inputNumber).read(reader);
64
- if (isHandled) {
65
- blockClassNames.push('handled');
66
- }
67
- if (modifiedBaseRange === activeModifiedBaseRange) {
68
- blockClassNames.push('focused');
69
- blockPadding = [0, 2, 0, 2];
70
- }
71
- if (modifiedBaseRange.isConflicting) {
72
- blockClassNames.push('conflicting');
73
- }
74
- const inputClassName = this.inputNumber === 1 ? 'input i1' : 'input i2';
75
- blockClassNames.push(inputClassName);
76
- if (!modifiedBaseRange.isConflicting && !showNonConflictingChanges && isHandled) {
77
- continue;
78
- }
79
- if (useSimplifiedDecorations && !isHandled) {
80
- blockClassNames.push('use-simplified-decorations');
81
- }
82
- result.push({
83
- range: range.toInclusiveRangeOrEmpty(),
84
- options: {
85
- showIfCollapsed: true,
86
- blockClassName: blockClassNames.join(' '),
87
- blockPadding,
88
- blockIsAfterEnd: range.startLineNumber > textModel.getLineCount(),
89
- description: 'Merge Editor',
90
- minimap: {
91
- position: MinimapPosition.Gutter,
92
- color: { id: isHandled ? handledConflictMinimapOverViewRulerColor : unhandledConflictMinimapOverViewRulerColor },
93
- },
94
- overviewRuler: modifiedBaseRange.isConflicting ? {
95
- position: OverviewRulerLane.Center,
96
- color: { id: isHandled ? handledConflictMinimapOverViewRulerColor : unhandledConflictMinimapOverViewRulerColor },
97
- } : undefined
98
- }
99
- });
100
- if (!useSimplifiedDecorations && (modifiedBaseRange.isConflicting || !model.isHandled(modifiedBaseRange).read(reader))) {
101
- const inputDiffs = modifiedBaseRange.getInputDiffs(this.inputNumber);
102
- for (const diff of inputDiffs) {
103
- const range = diff.outputRange.toInclusiveRange();
104
- if (range) {
105
- result.push({
106
- range,
107
- options: {
108
- className: `merge-editor-diff ${inputClassName}`,
109
- description: 'Merge Editor',
110
- isWholeLine: true,
111
- }
112
- });
113
- }
114
- if (diff.rangeMappings) {
115
- for (const d of diff.rangeMappings) {
116
- if (showDeletionMarkers || !d.outputRange.isEmpty()) {
117
- result.push({
118
- range: d.outputRange,
119
- options: {
120
- className: d.outputRange.isEmpty() ? `merge-editor-diff-empty-word ${inputClassName}` : `merge-editor-diff-word ${inputClassName}`,
121
- description: 'Merge Editor',
122
- showIfCollapsed: true,
123
- }
124
- });
125
- }
126
- }
127
- }
128
- }
129
- }
130
- }
131
- return result;
132
- });
133
- this.htmlElements.root.classList.add(`input`);
134
- this._register(( new EditorGutter(this.editor, this.htmlElements.gutterDiv, {
135
- getIntersectingGutterItems: (range, reader) => {
136
- if (this.checkboxesVisible.read(reader)) {
137
- return this.modifiedBaseRangeGutterItemInfos.read(reader);
138
- }
139
- else {
140
- return [];
141
- }
142
- },
143
- createView: (item, target) => ( new MergeConflictGutterItemView(item, target, contextMenuService)),
144
- })));
145
- this._register(createSelectionsAutorun(this, (baseRange, viewModel) => viewModel.model.translateBaseRangeToInput(this.inputNumber, baseRange)));
146
- this._register(instantiationService.createInstance(TitleMenu, inputNumber === 1 ? MenuId.MergeInput1Toolbar : MenuId.MergeInput2Toolbar, this.htmlElements.toolbar));
147
- this._register(autorunOpts({ debugName: `input${this.inputNumber}: update labels & text model` }, reader => {
148
- const vm = this.viewModel.read(reader);
149
- if (!vm) {
150
- return;
151
- }
152
- this.editor.setModel(this.inputNumber === 1 ? vm.model.input1.textModel : vm.model.input2.textModel);
153
- const title = this.inputNumber === 1
154
- ? vm.model.input1.title || ( localizeWithPath(
155
- 'vs/workbench/contrib/mergeEditor/browser/view/editors/inputCodeEditorView',
156
- 'input1',
157
- 'Input 1'
158
- ))
159
- : vm.model.input2.title || ( localizeWithPath(
160
- 'vs/workbench/contrib/mergeEditor/browser/view/editors/inputCodeEditorView',
161
- 'input2',
162
- 'Input 2'
163
- ));
164
- const description = this.inputNumber === 1
165
- ? vm.model.input1.description
166
- : vm.model.input2.description;
167
- const detail = this.inputNumber === 1
168
- ? vm.model.input1.detail
169
- : vm.model.input2.detail;
170
- reset(this.htmlElements.title, ...renderLabelWithIcons(title));
171
- reset(this.htmlElements.description, ...(description ? renderLabelWithIcons(description) : []));
172
- reset(this.htmlElements.detail, ...(detail ? renderLabelWithIcons(detail) : []));
173
- }));
174
- this._register(applyObservableDecorations(this.editor, this.decorations));
175
- }
176
- };
177
- InputCodeEditorView = ( __decorate([
178
- ( __param(2, IInstantiationService)),
179
- ( __param(3, IContextMenuService)),
180
- ( __param(4, IConfigurationService))
181
- ], InputCodeEditorView));
182
- class ModifiedBaseRangeGutterItemModel {
183
- constructor(id, baseRange, inputNumber, viewModel) {
184
- this.id = id;
185
- this.baseRange = baseRange;
186
- this.inputNumber = inputNumber;
187
- this.viewModel = viewModel;
188
- this.model = this.viewModel.model;
189
- this.range = this.baseRange.getInputRange(this.inputNumber);
190
- this.enabled = this.model.isUpToDate;
191
- this.toggleState = derived(this, reader => {
192
- const input = this.model
193
- .getState(this.baseRange)
194
- .read(reader)
195
- .getInput(this.inputNumber);
196
- return input === 2 && !this.baseRange.isOrderRelevant
197
- ? 1
198
- : input;
199
- });
200
- this.state = derived(this, reader => {
201
- const active = this.viewModel.activeModifiedBaseRange.read(reader);
202
- if (!this.model.hasBaseRange(this.baseRange)) {
203
- return { handled: false, focused: false };
204
- }
205
- return {
206
- handled: this.model.isHandled(this.baseRange).read(reader),
207
- focused: this.baseRange === active,
208
- };
209
- });
210
- }
211
- setState(value, tx) {
212
- this.viewModel.setState(this.baseRange, this.model
213
- .getState(this.baseRange)
214
- .get()
215
- .withInputValue(this.inputNumber, value), tx, this.inputNumber);
216
- }
217
- toggleBothSides() {
218
- transaction(tx => {
219
- const state = this.model
220
- .getState(this.baseRange)
221
- .get();
222
- this.model.setState(this.baseRange, state
223
- .toggle(this.inputNumber)
224
- .toggle(this.inputNumber === 1 ? 2 : 1), true, tx);
225
- });
226
- }
227
- getContextMenuActions() {
228
- const state = this.model.getState(this.baseRange).get();
229
- const handled = this.model.isHandled(this.baseRange).get();
230
- const update = (newState) => {
231
- transaction(tx => {
232
- return this.viewModel.setState(this.baseRange, newState, tx, this.inputNumber);
233
- });
234
- };
235
- function action(id, label, targetState, checked) {
236
- const action = ( new Action(id, label, undefined, true, () => {
237
- update(targetState);
238
- }));
239
- action.checked = checked;
240
- return action;
241
- }
242
- const both = state.includesInput1 && state.includesInput2;
243
- return [
244
- this.baseRange.input1Diffs.length > 0
245
- ? action('mergeEditor.acceptInput1', ( localizeWithPath(
246
- 'vs/workbench/contrib/mergeEditor/browser/view/editors/inputCodeEditorView',
247
- 'mergeEditor.accept',
248
- 'Accept {0}',
249
- this.model.input1.title
250
- )), state.toggle(1), state.includesInput1)
251
- : undefined,
252
- this.baseRange.input2Diffs.length > 0
253
- ? action('mergeEditor.acceptInput2', ( localizeWithPath(
254
- 'vs/workbench/contrib/mergeEditor/browser/view/editors/inputCodeEditorView',
255
- 'mergeEditor.accept',
256
- 'Accept {0}',
257
- this.model.input2.title
258
- )), state.toggle(2), state.includesInput2)
259
- : undefined,
260
- this.baseRange.isConflicting
261
- ? setFields(action('mergeEditor.acceptBoth', ( localizeWithPath(
262
- 'vs/workbench/contrib/mergeEditor/browser/view/editors/inputCodeEditorView',
263
- 'mergeEditor.acceptBoth',
264
- 'Accept Both'
265
- )), state.withInputValue(1, !both).withInputValue(2, !both), both), { enabled: this.baseRange.canBeCombined })
266
- : undefined,
267
- ( new Separator()),
268
- this.baseRange.isConflicting
269
- ? setFields(action('mergeEditor.swap', ( localizeWithPath(
270
- 'vs/workbench/contrib/mergeEditor/browser/view/editors/inputCodeEditorView',
271
- 'mergeEditor.swap',
272
- 'Swap'
273
- )), state.swap(), false), { enabled: !state.kind && (!both || this.baseRange.isOrderRelevant) })
274
- : undefined,
275
- setFields(( new Action('mergeEditor.markAsHandled', ( localizeWithPath(
276
- 'vs/workbench/contrib/mergeEditor/browser/view/editors/inputCodeEditorView',
277
- 'mergeEditor.markAsHandled',
278
- 'Mark as Handled'
279
- )), undefined, true, () => {
280
- transaction((tx) => {
281
- this.model.setHandled(this.baseRange, !handled, tx);
282
- });
283
- })), { checked: handled }),
284
- ].filter(isDefined);
285
- }
286
- }
287
- class MergeConflictGutterItemView extends Disposable {
288
- constructor(item, target, contextMenuService) {
289
- super();
290
- this.isMultiLine = observableValue(this, false);
291
- this.item = observableValue(this, item);
292
- const checkBox = ( new Toggle({
293
- isChecked: false,
294
- title: '',
295
- icon: Codicon.check,
296
- ...defaultToggleStyles
297
- }));
298
- checkBox.domNode.classList.add('accept-conflict-group');
299
- this._register(addDisposableListener(checkBox.domNode, EventType.MOUSE_DOWN, (e) => {
300
- const item = this.item.get();
301
- if (!item) {
302
- return;
303
- }
304
- if (e.button === 2) {
305
- e.stopPropagation();
306
- e.preventDefault();
307
- contextMenuService.showContextMenu({
308
- getAnchor: () => checkBox.domNode,
309
- getActions: () => item.getContextMenuActions(),
310
- });
311
- }
312
- else if (e.button === 1) {
313
- e.stopPropagation();
314
- e.preventDefault();
315
- item.toggleBothSides();
316
- }
317
- }));
318
- this._register(autorun(reader => {
319
- const item = this.item.read(reader);
320
- const value = item.toggleState.read(reader);
321
- const iconMap = {
322
- [0 ]: { icon: undefined, checked: false, title: ( localizeWithPath(
323
- 'vs/workbench/contrib/mergeEditor/browser/view/editors/inputCodeEditorView',
324
- 'accept.excluded',
325
- "Accept"
326
- )) },
327
- [3 ]: { icon: Codicon.circleFilled, checked: false, title: ( localizeWithPath(
328
- 'vs/workbench/contrib/mergeEditor/browser/view/editors/inputCodeEditorView',
329
- 'accept.conflicting',
330
- "Accept (result is dirty)"
331
- )) },
332
- [1 ]: { icon: Codicon.check, checked: true, title: ( localizeWithPath(
333
- 'vs/workbench/contrib/mergeEditor/browser/view/editors/inputCodeEditorView',
334
- 'accept.first',
335
- "Undo accept"
336
- )) },
337
- [2 ]: { icon: Codicon.checkAll, checked: true, title: ( localizeWithPath(
338
- 'vs/workbench/contrib/mergeEditor/browser/view/editors/inputCodeEditorView',
339
- 'accept.second',
340
- "Undo accept (currently second)"
341
- )) },
342
- };
343
- const state = iconMap[value];
344
- checkBox.setIcon(state.icon);
345
- checkBox.checked = state.checked;
346
- checkBox.setTitle(state.title);
347
- if (!item.enabled.read(reader)) {
348
- checkBox.disable();
349
- }
350
- else {
351
- checkBox.enable();
352
- }
353
- }));
354
- this._register(autorun(reader => {
355
- const state = this.item.read(reader).state.read(reader);
356
- const classNames = [
357
- 'merge-accept-gutter-marker',
358
- state.handled && 'handled',
359
- state.focused && 'focused',
360
- this.isMultiLine.read(reader) ? 'multi-line' : 'single-line',
361
- ];
362
- target.className = classNames.filter(c => typeof c === 'string').join(' ');
363
- }));
364
- this._register(checkBox.onChange(() => {
365
- transaction(tx => {
366
- this.item.get().setState(checkBox.checked, tx);
367
- });
368
- }));
369
- target.appendChild(h('div.background', [noBreakWhitespace]).root);
370
- target.appendChild(this.checkboxDiv = h('div.checkbox', [h('div.checkbox-background', [checkBox.domNode])]).root);
371
- }
372
- layout(top, height, viewTop, viewHeight) {
373
- const checkboxHeight = this.checkboxDiv.clientHeight;
374
- const middleHeight = height / 2 - checkboxHeight / 2;
375
- const margin = checkboxHeight;
376
- let effectiveCheckboxTop = top + middleHeight;
377
- const preferredViewPortRange = [
378
- margin,
379
- viewTop + viewHeight - margin - checkboxHeight
380
- ];
381
- const preferredParentRange = [
382
- top + margin,
383
- top + height - checkboxHeight - margin
384
- ];
385
- if (preferredParentRange[0] < preferredParentRange[1]) {
386
- effectiveCheckboxTop = clamp(effectiveCheckboxTop, preferredViewPortRange[0], preferredViewPortRange[1]);
387
- effectiveCheckboxTop = clamp(effectiveCheckboxTop, preferredParentRange[0], preferredParentRange[1]);
388
- }
389
- this.checkboxDiv.style.top = `${effectiveCheckboxTop - top}px`;
390
- transaction((tx) => {
391
- this.isMultiLine.set(height > 30, tx);
392
- });
393
- }
394
- update(baseRange) {
395
- transaction(tx => {
396
- this.item.set(baseRange, tx);
397
- });
398
- }
399
- }
400
-
401
- export { InputCodeEditorView, MergeConflictGutterItemView, ModifiedBaseRangeGutterItemModel };