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