@codingame/monaco-vscode-api 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 (194) hide show
  1. package/README.md +24 -0
  2. package/contributions.js +1 -0
  3. package/extensions.d.ts +7 -3
  4. package/extensions.js +28 -8
  5. package/lifecycle.js +11 -3
  6. package/localExtensionHost.js +13 -10
  7. package/missing-services.js +55 -10
  8. package/monaco.js +7 -3
  9. package/package.json +8 -8
  10. package/service-override/tools/views.d.ts +98 -0
  11. package/service-override/tools/views.js +249 -0
  12. package/services.d.ts +4 -2
  13. package/services.js +11 -9
  14. package/vscode/src/vs/base/browser/deviceAccess.js +60 -0
  15. package/vscode/src/vs/base/browser/dom.js +18 -1
  16. package/vscode/src/vs/base/browser/ui/centered/centeredViewLayout.js +178 -0
  17. package/vscode/src/vs/base/browser/ui/grid/grid.js +492 -0
  18. package/vscode/src/vs/base/browser/ui/grid/gridview.css.js +4 -0
  19. package/vscode/src/vs/base/browser/ui/grid/gridview.d.ts +1 -0
  20. package/vscode/src/vs/base/browser/ui/grid/gridview.js +1109 -0
  21. package/vscode/src/vs/base/browser/ui/sash/sash.js +9 -1
  22. package/vscode/src/vs/base/browser/ui/splitview/splitview.d.ts +348 -1
  23. package/vscode/src/vs/base/common/async.js +46 -2
  24. package/vscode/src/vs/base/common/codicons.d.ts +579 -0
  25. package/vscode/src/vs/base/common/event.js +11 -2
  26. package/vscode/src/vs/base/common/keybindingParser.js +87 -0
  27. package/vscode/src/vs/base/common/network.js +1 -2
  28. package/vscode/src/vs/base/common/observableInternal/utils.js +1 -1
  29. package/vscode/src/vs/base/common/platform.js +2 -1
  30. package/vscode/src/vs/base/common/scrollable.d.ts +28 -0
  31. package/vscode/src/vs/editor/browser/widget/multiDiffEditorWidget/colors.js +17 -0
  32. package/vscode/src/vs/editor/browser/widget/multiDiffEditorWidget/diffEditorItemTemplate.js +214 -0
  33. package/vscode/src/vs/editor/browser/widget/multiDiffEditorWidget/multiDiffEditorViewModel.js +84 -0
  34. package/vscode/src/vs/editor/browser/widget/multiDiffEditorWidget/multiDiffEditorWidget.js +54 -0
  35. package/vscode/src/vs/editor/browser/widget/multiDiffEditorWidget/multiDiffEditorWidgetImpl.js +324 -0
  36. package/vscode/src/vs/editor/browser/widget/multiDiffEditorWidget/objectPool.js +46 -0
  37. package/vscode/src/vs/editor/browser/widget/multiDiffEditorWidget/style.css.js +4 -0
  38. package/vscode/src/vs/editor/browser/widget/multiDiffEditorWidget/utils.js +11 -0
  39. package/vscode/src/vs/platform/keyboardLayout/common/keyboardLayout.js +61 -1
  40. package/vscode/src/vs/platform/languagePacks/common/localizedStrings.js +10 -0
  41. package/vscode/src/vs/platform/log/browser/log.js +24 -0
  42. package/vscode/src/vs/platform/product/common/product.js +1 -2
  43. package/vscode/src/vs/platform/userDataSync/common/abstractSynchronizer.js +772 -0
  44. package/vscode/src/vs/platform/userDataSync/common/userDataSyncStoreService.js +551 -0
  45. package/vscode/src/vs/platform/webview/common/mimeTypes.js +22 -0
  46. package/vscode/src/vs/platform/webview/common/webviewPortMapping.js +62 -0
  47. package/vscode/src/vs/workbench/api/browser/viewsExtensionPoint.js +788 -0
  48. package/vscode/src/vs/workbench/browser/actions/listCommands.js +763 -0
  49. package/vscode/src/vs/workbench/browser/layout.d.ts +26 -0
  50. package/vscode/src/vs/workbench/browser/media/style.css.js +1 -1
  51. package/vscode/src/vs/workbench/browser/parts/activitybar/activitybarPart.js +610 -0
  52. package/vscode/src/vs/workbench/browser/parts/activitybar/media/activityaction.css.js +4 -0
  53. package/vscode/src/vs/workbench/browser/parts/activitybar/media/activitybarpart.css.js +4 -0
  54. package/vscode/src/vs/workbench/browser/parts/auxiliarybar/auxiliaryBarPart.js +148 -0
  55. package/vscode/src/vs/workbench/browser/parts/auxiliarybar/media/auxiliaryBarPart.css.js +4 -0
  56. package/vscode/src/vs/workbench/browser/parts/compositeBar.js +603 -0
  57. package/vscode/src/vs/workbench/browser/parts/compositePart.js +333 -0
  58. package/vscode/src/vs/workbench/browser/parts/editor/auxiliaryEditorPart.js +221 -0
  59. package/vscode/src/vs/workbench/browser/parts/editor/editor.contribution.js +1406 -0
  60. package/vscode/src/vs/workbench/browser/parts/editor/editorConfiguration.js +184 -0
  61. package/vscode/src/vs/workbench/browser/parts/editor/editorDropTarget.js +509 -0
  62. package/vscode/src/vs/workbench/browser/parts/editor/editorPane.d.ts +112 -0
  63. package/vscode/src/vs/workbench/browser/parts/editor/editorPart.js +1018 -0
  64. package/vscode/src/vs/workbench/browser/parts/editor/editorParts.js +389 -0
  65. package/vscode/src/vs/workbench/browser/parts/editor/media/editordroptarget.css.js +4 -0
  66. package/vscode/src/vs/workbench/browser/parts/media/compositepart.css.js +4 -0
  67. package/vscode/src/vs/workbench/browser/parts/media/paneCompositePart.css.js +4 -0
  68. package/vscode/src/vs/workbench/browser/parts/notifications/media/notificationsActions.css.js +4 -0
  69. package/vscode/src/vs/workbench/browser/parts/notifications/media/notificationsCenter.css.js +4 -0
  70. package/vscode/src/vs/workbench/browser/parts/notifications/media/notificationsList.css.js +4 -0
  71. package/vscode/src/vs/workbench/browser/parts/notifications/media/notificationsToasts.css.js +4 -0
  72. package/vscode/src/vs/workbench/browser/parts/notifications/notificationsActions.js +213 -0
  73. package/vscode/src/vs/workbench/browser/parts/notifications/notificationsAlerts.js +73 -0
  74. package/vscode/src/vs/workbench/browser/parts/notifications/notificationsCenter.js +307 -0
  75. package/vscode/src/vs/workbench/browser/parts/notifications/notificationsList.js +226 -0
  76. package/vscode/src/vs/workbench/browser/parts/notifications/notificationsStatus.js +218 -0
  77. package/vscode/src/vs/workbench/browser/parts/notifications/notificationsToasts.js +433 -0
  78. package/vscode/src/vs/workbench/browser/parts/notifications/notificationsViewer.js +436 -0
  79. package/vscode/src/vs/workbench/browser/parts/paneCompositeBar.js +643 -0
  80. package/vscode/src/vs/workbench/browser/parts/paneCompositePart.js +377 -0
  81. package/vscode/src/vs/workbench/browser/parts/paneCompositePartService.js +66 -0
  82. package/vscode/src/vs/workbench/browser/parts/panel/panelPart.js +144 -0
  83. package/vscode/src/vs/workbench/browser/parts/sidebar/media/sidebarpart.css.js +4 -0
  84. package/vscode/src/vs/workbench/browser/parts/sidebar/sidebarPart.js +220 -0
  85. package/vscode/src/vs/workbench/browser/window.js +239 -5
  86. package/vscode/src/vs/workbench/common/configuration.js +11 -1
  87. package/vscode/src/vs/workbench/common/theme.js +3 -3
  88. package/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchy.contribution.js +298 -0
  89. package/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyPeek.js +363 -0
  90. package/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree.js +133 -0
  91. package/vscode/src/vs/workbench/contrib/callHierarchy/browser/media/callHierarchy.css.js +4 -0
  92. package/vscode/src/vs/workbench/contrib/comments/browser/commentGlyphWidget.js +90 -0
  93. package/vscode/src/vs/workbench/contrib/comments/browser/commentMenus.js +43 -0
  94. package/vscode/src/vs/workbench/contrib/comments/browser/commentService.js +317 -2
  95. package/vscode/src/vs/workbench/contrib/comments/browser/commentThreadRangeDecorator.js +107 -0
  96. package/vscode/src/vs/workbench/contrib/comments/browser/commentThreadZoneWidget.js +395 -0
  97. package/vscode/src/vs/workbench/contrib/comments/browser/comments.js +3 -0
  98. package/vscode/src/vs/workbench/contrib/comments/browser/commentsController.js +1277 -0
  99. package/vscode/src/vs/workbench/contrib/comments/browser/commentsFilterOptions.js +17 -0
  100. package/vscode/src/vs/workbench/contrib/comments/browser/commentsModel.js +123 -0
  101. package/vscode/src/vs/workbench/contrib/comments/browser/commentsTreeViewer.js +342 -0
  102. package/vscode/src/vs/workbench/contrib/comments/browser/commentsView.js +451 -0
  103. package/vscode/src/vs/workbench/contrib/comments/browser/commentsViewActions.js +176 -0
  104. package/vscode/src/vs/workbench/contrib/comments/browser/media/panel.css.js +4 -0
  105. package/vscode/src/vs/workbench/contrib/comments/common/commentModel.js +35 -0
  106. package/vscode/src/vs/workbench/contrib/customEditor/browser/customEditor.contribution.js +16 -0
  107. package/vscode/src/vs/workbench/contrib/customEditor/browser/customEditorInputFactory.js +143 -0
  108. package/vscode/src/vs/workbench/contrib/customEditor/browser/customEditors.js +212 -0
  109. package/vscode/src/vs/workbench/contrib/customEditor/browser/media/customEditor.css.js +4 -0
  110. package/vscode/src/vs/workbench/contrib/customEditor/common/contributedCustomEditors.js +76 -0
  111. package/vscode/src/vs/workbench/contrib/customEditor/common/customEditorModelManager.js +61 -0
  112. package/vscode/src/vs/workbench/contrib/customEditor/common/extensionPoint.js +117 -0
  113. package/vscode/src/vs/workbench/contrib/editSessions/common/editSessions.js +62 -0
  114. package/vscode/src/vs/workbench/contrib/externalUriOpener/common/externalUriOpener.contribution.js +5 -0
  115. package/vscode/src/vs/workbench/contrib/files/browser/editors/binaryFileEditor.js +77 -0
  116. package/vscode/src/vs/workbench/contrib/files/browser/editors/fileEditorHandler.js +72 -0
  117. package/vscode/src/vs/workbench/contrib/files/browser/editors/textFileEditor.js +254 -0
  118. package/vscode/src/vs/workbench/contrib/files/browser/editors/textFileEditorTracker.js +97 -0
  119. package/vscode/src/vs/workbench/contrib/files/browser/editors/textFileSaveErrorHandler.js +442 -0
  120. package/vscode/src/vs/workbench/contrib/files/browser/explorerService.js +430 -0
  121. package/vscode/src/vs/workbench/contrib/files/browser/explorerViewlet.js +10 -10
  122. package/vscode/src/vs/workbench/contrib/files/browser/fileActions.contribution.js +784 -0
  123. package/vscode/src/vs/workbench/contrib/files/browser/fileCommands.js +487 -0
  124. package/vscode/src/vs/workbench/contrib/files/browser/files.contribution.js +521 -0
  125. package/vscode/src/vs/workbench/contrib/files/browser/workspaceWatcher.js +150 -0
  126. package/vscode/src/vs/workbench/contrib/files/common/dirtyFilesIndicator.js +61 -0
  127. package/vscode/src/vs/workbench/contrib/interactive/browser/interactiveDocumentService.js +25 -1
  128. package/vscode/src/vs/workbench/contrib/interactive/browser/interactiveEditorInput.js +178 -0
  129. package/vscode/src/vs/workbench/contrib/interactive/browser/interactiveHistoryService.js +49 -0
  130. package/vscode/src/vs/workbench/contrib/languageStatus/browser/languageStatus.contribution.js +408 -0
  131. package/vscode/src/vs/workbench/contrib/languageStatus/browser/media/languageStatus.css.js +4 -0
  132. package/vscode/src/vs/workbench/contrib/limitIndicator/browser/limitIndicator.contribution.js +145 -0
  133. package/vscode/src/vs/workbench/contrib/mappedEdits/common/mappedEdits.contribution.js +22 -0
  134. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/commands/commands.js +691 -0
  135. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/commands/devCommands.js +238 -0
  136. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/mergeEditor.contribution.js +76 -0
  137. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/mergeEditorSerializer.js +40 -0
  138. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/colors.js +69 -0
  139. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/conflictActions.js +346 -0
  140. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/editorGutter.js +96 -0
  141. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/editors/baseCodeEditorView.js +144 -0
  142. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/editors/codeEditorView.js +103 -0
  143. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/editors/inputCodeEditorView.js +399 -0
  144. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/editors/resultCodeEditorView.js +195 -0
  145. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/fixedZoneWidget.js +39 -0
  146. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/lineAlignment.js +126 -0
  147. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/media/mergeEditor.css.js +4 -0
  148. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/mergeEditor.js +611 -0
  149. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/scrollSynchronizer.js +156 -0
  150. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/viewModel.js +262 -0
  151. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/view/viewZones.js +171 -0
  152. package/vscode/src/vs/workbench/contrib/multiDiffEditor/browser/multiDiffSourceResolverService.js +41 -0
  153. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/executionStatusBarItemController.js +317 -0
  154. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/notebookVisibleCellObserver.js +56 -0
  155. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindWidget.js +315 -0
  156. package/vscode/src/vs/workbench/contrib/preferences/browser/keyboardLayoutPicker.js +193 -0
  157. package/vscode/src/vs/workbench/contrib/preferences/common/preferences.js +2 -1
  158. package/vscode/src/vs/workbench/contrib/remote/browser/remoteExplorer.js +2 -2
  159. package/vscode/src/vs/workbench/contrib/sash/browser/sash.contribution.js +37 -0
  160. package/vscode/src/vs/workbench/contrib/sash/browser/sash.js +39 -0
  161. package/vscode/src/vs/workbench/contrib/speech/common/speechService.js +138 -2
  162. package/vscode/src/vs/workbench/contrib/tags/browser/workspaceTagsService.js +12 -0
  163. package/vscode/src/vs/workbench/contrib/tags/common/workspaceTags.js +3 -0
  164. package/vscode/src/vs/workbench/contrib/typeHierarchy/browser/media/typeHierarchy.css.js +4 -0
  165. package/vscode/src/vs/workbench/contrib/typeHierarchy/browser/typeHierarchy.contribution.js +281 -0
  166. package/vscode/src/vs/workbench/contrib/typeHierarchy/browser/typeHierarchyPeek.js +358 -0
  167. package/vscode/src/vs/workbench/contrib/typeHierarchy/browser/typeHierarchyTree.js +131 -0
  168. package/vscode/src/vs/workbench/contrib/update/common/update.js +2 -0
  169. package/vscode/src/vs/workbench/contrib/webview/browser/overlayWebview.js +288 -0
  170. package/vscode/src/vs/workbench/contrib/webview/browser/resourceLoading.js +94 -0
  171. package/vscode/src/vs/workbench/contrib/webview/browser/themeing.js +86 -0
  172. package/vscode/src/vs/workbench/contrib/webview/browser/webview.contribution.js +77 -0
  173. package/vscode/src/vs/workbench/contrib/webview/browser/webviewElement.js +646 -0
  174. package/vscode/src/vs/workbench/contrib/webview/browser/webviewFindWidget.js +63 -0
  175. package/vscode/src/vs/workbench/contrib/webview/browser/webviewService.js +57 -0
  176. package/vscode/src/vs/workbench/contrib/webviewPanel/browser/webviewCommands.js +140 -0
  177. package/vscode/src/vs/workbench/contrib/webviewPanel/browser/webviewEditorInputSerializer.js +119 -0
  178. package/vscode/src/vs/workbench/contrib/webviewPanel/browser/webviewPanel.contribution.js +67 -0
  179. package/vscode/src/vs/workbench/contrib/webviewView/browser/webviewViewPane.js +233 -0
  180. package/vscode/src/vs/workbench/contrib/workspace/common/workspace.js +16 -0
  181. package/vscode/src/vs/workbench/services/activity/browser/activityService.js +143 -0
  182. package/vscode/src/vs/workbench/services/auxiliaryWindow/browser/auxiliaryWindowService.js +0 -3
  183. package/vscode/src/vs/workbench/services/driver/browser/driver.js +184 -0
  184. package/vscode/src/vs/workbench/services/editor/browser/editorResolverService.js +668 -0
  185. package/vscode/src/vs/workbench/services/history/browser/historyService.js +1482 -0
  186. package/vscode/src/vs/workbench/services/layout/browser/layoutService.js +17 -1
  187. package/vscode/src/vs/workbench/services/lifecycle/common/lifecycle.js +8 -1
  188. package/vscode/src/vs/workbench/services/progress/browser/media/progressService.css.js +4 -0
  189. package/vscode/src/vs/workbench/services/progress/browser/progressService.js +521 -0
  190. package/vscode/src/vs/workbench/services/textMate/common/TMGrammars.js +102 -0
  191. package/vscode/src/vs/workbench/services/themes/common/tokenClassificationExtensionPoint.js +296 -0
  192. package/vscode/src/vs/workbench/services/untitled/common/untitledTextEditorHandler.js +99 -0
  193. package/vscode/src/vs/workbench/services/views/browser/viewDescriptorService.js +711 -0
  194. package/vscode/src/vs/workbench/services/views/common/viewContainerModel.js +596 -0
@@ -0,0 +1,346 @@
1
+ import { createStyleSheet, isInShadowDOM, h, $, reset } from '../../../../../base/browser/dom.js';
2
+ import { renderLabelWithIcons } from '../../../../../base/browser/ui/iconLabel/iconLabels.js';
3
+ import { hash } from '../../../../../base/common/hash.js';
4
+ import { Disposable } from '../../../../../base/common/lifecycle.js';
5
+ import { EDITOR_FONT_DEFAULTS } from '../../../../../editor/common/config/editorOptions.js';
6
+ import { localizeWithPath } from '../../../../../nls.js';
7
+ import { ModifiedBaseRangeStateKind, ModifiedBaseRangeState } from '../model/modifiedBaseRange.js';
8
+ import { FixedZoneWidget } from './fixedZoneWidget.js';
9
+ import { autorun } from '../../../../../base/common/observableInternal/autorun.js';
10
+ import { derived } from '../../../../../base/common/observableInternal/derived.js';
11
+ import { transaction } from '../../../../../base/common/observableInternal/base.js';
12
+ class ConflictActionsFactory extends Disposable {
13
+ constructor(_editor) {
14
+ super();
15
+ this._editor = _editor;
16
+ this._register(this._editor.onDidChangeConfiguration((e) => {
17
+ if (e.hasChanged(50 ) || e.hasChanged(19 ) || e.hasChanged(18 )) {
18
+ this._updateLensStyle();
19
+ }
20
+ }));
21
+ this._styleClassName = '_conflictActionsFactory_' + ( hash(this._editor.getId()).toString(16));
22
+ this._styleElement = createStyleSheet(isInShadowDOM(this._editor.getContainerDomNode())
23
+ ? this._editor.getContainerDomNode()
24
+ : undefined, undefined, this._store);
25
+ this._updateLensStyle();
26
+ }
27
+ _updateLensStyle() {
28
+ const { codeLensHeight, fontSize } = this._getLayoutInfo();
29
+ const fontFamily = this._editor.getOption(18 );
30
+ const editorFontInfo = this._editor.getOption(50 );
31
+ const fontFamilyVar = `--codelens-font-family${this._styleClassName}`;
32
+ const fontFeaturesVar = `--codelens-font-features${this._styleClassName}`;
33
+ let newStyle = `
34
+ .${this._styleClassName} { line-height: ${codeLensHeight}px; font-size: ${fontSize}px; padding-right: ${Math.round(fontSize * 0.5)}px; font-feature-settings: var(${fontFeaturesVar}) }
35
+ .monaco-workbench .${this._styleClassName} span.codicon { line-height: ${codeLensHeight}px; font-size: ${fontSize}px; }
36
+ `;
37
+ if (fontFamily) {
38
+ newStyle += `${this._styleClassName} { font-family: var(${fontFamilyVar}), ${EDITOR_FONT_DEFAULTS.fontFamily}}`;
39
+ }
40
+ this._styleElement.textContent = newStyle;
41
+ this._editor.getContainerDomNode().style.setProperty(fontFamilyVar, fontFamily ?? 'inherit');
42
+ this._editor.getContainerDomNode().style.setProperty(fontFeaturesVar, editorFontInfo.fontFeatureSettings);
43
+ }
44
+ _getLayoutInfo() {
45
+ const lineHeightFactor = Math.max(1.3, this._editor.getOption(66 ) / this._editor.getOption(52 ));
46
+ let fontSize = this._editor.getOption(19 );
47
+ if (!fontSize || fontSize < 5) {
48
+ fontSize = (this._editor.getOption(52 ) * .9) | 0;
49
+ }
50
+ return {
51
+ fontSize,
52
+ codeLensHeight: (fontSize * lineHeightFactor) | 0,
53
+ };
54
+ }
55
+ createWidget(viewZoneChangeAccessor, lineNumber, items, viewZoneIdsToCleanUp) {
56
+ const layoutInfo = this._getLayoutInfo();
57
+ return ( new ActionsContentWidget(
58
+ this._editor,
59
+ viewZoneChangeAccessor,
60
+ lineNumber,
61
+ layoutInfo.codeLensHeight + 2,
62
+ this._styleClassName,
63
+ items,
64
+ viewZoneIdsToCleanUp
65
+ ));
66
+ }
67
+ }
68
+ class ActionsSource {
69
+ constructor(viewModel, modifiedBaseRange) {
70
+ this.viewModel = viewModel;
71
+ this.modifiedBaseRange = modifiedBaseRange;
72
+ this.itemsInput1 = this.getItemsInput(1);
73
+ this.itemsInput2 = this.getItemsInput(2);
74
+ this.resultItems = derived(this, reader => {
75
+ const viewModel = this.viewModel;
76
+ const modifiedBaseRange = this.modifiedBaseRange;
77
+ const state = viewModel.model.getState(modifiedBaseRange).read(reader);
78
+ const model = viewModel.model;
79
+ const result = [];
80
+ if (state.kind === ModifiedBaseRangeStateKind.unrecognized) {
81
+ result.push({
82
+ text: ( localizeWithPath(
83
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
84
+ 'manualResolution',
85
+ "Manual Resolution"
86
+ )),
87
+ tooltip: ( localizeWithPath(
88
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
89
+ 'manualResolutionTooltip',
90
+ "This conflict has been resolved manually."
91
+ )),
92
+ });
93
+ }
94
+ else if (state.kind === ModifiedBaseRangeStateKind.base) {
95
+ result.push({
96
+ text: ( localizeWithPath(
97
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
98
+ 'noChangesAccepted',
99
+ 'No Changes Accepted'
100
+ )),
101
+ tooltip: ( localizeWithPath(
102
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
103
+ 'noChangesAcceptedTooltip',
104
+ 'The current resolution of this conflict equals the common ancestor of both the right and left changes.'
105
+ )),
106
+ });
107
+ }
108
+ else {
109
+ const labels = [];
110
+ if (state.includesInput1) {
111
+ labels.push(model.input1.title);
112
+ }
113
+ if (state.includesInput2) {
114
+ labels.push(model.input2.title);
115
+ }
116
+ if (state.kind === ModifiedBaseRangeStateKind.both && state.firstInput === 2) {
117
+ labels.reverse();
118
+ }
119
+ result.push({
120
+ text: `${labels.join(' + ')}`
121
+ });
122
+ }
123
+ const stateToggles = [];
124
+ if (state.includesInput1) {
125
+ stateToggles.push(command(( localizeWithPath(
126
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
127
+ 'remove',
128
+ 'Remove {0}',
129
+ model.input1.title
130
+ )), async () => {
131
+ transaction((tx) => {
132
+ model.setState(modifiedBaseRange, state.withInputValue(1, false), true, tx);
133
+ model.telemetry.reportRemoveInvoked(1, state.includesInput(2));
134
+ });
135
+ }, ( localizeWithPath(
136
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
137
+ 'removeTooltip',
138
+ 'Remove {0} from the result document.',
139
+ model.input1.title
140
+ ))));
141
+ }
142
+ if (state.includesInput2) {
143
+ stateToggles.push(command(( localizeWithPath(
144
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
145
+ 'remove',
146
+ 'Remove {0}',
147
+ model.input2.title
148
+ )), async () => {
149
+ transaction((tx) => {
150
+ model.setState(modifiedBaseRange, state.withInputValue(2, false), true, tx);
151
+ model.telemetry.reportRemoveInvoked(2, state.includesInput(1));
152
+ });
153
+ }, ( localizeWithPath(
154
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
155
+ 'removeTooltip',
156
+ 'Remove {0} from the result document.',
157
+ model.input2.title
158
+ ))));
159
+ }
160
+ if (state.kind === ModifiedBaseRangeStateKind.both &&
161
+ state.firstInput === 2) {
162
+ stateToggles.reverse();
163
+ }
164
+ result.push(...stateToggles);
165
+ if (state.kind === ModifiedBaseRangeStateKind.unrecognized) {
166
+ result.push(command(( localizeWithPath(
167
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
168
+ 'resetToBase',
169
+ 'Reset to base'
170
+ )), async () => {
171
+ transaction((tx) => {
172
+ model.setState(modifiedBaseRange, ModifiedBaseRangeState.base, true, tx);
173
+ model.telemetry.reportResetToBaseInvoked();
174
+ });
175
+ }, ( localizeWithPath(
176
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
177
+ 'resetToBaseTooltip',
178
+ 'Reset this conflict to the common ancestor of both the right and left changes.'
179
+ ))));
180
+ }
181
+ return result;
182
+ });
183
+ this.isEmpty = derived(this, reader => {
184
+ return this.itemsInput1.read(reader).length + this.itemsInput2.read(reader).length + this.resultItems.read(reader).length === 0;
185
+ });
186
+ this.inputIsEmpty = derived(this, reader => {
187
+ return this.itemsInput1.read(reader).length + this.itemsInput2.read(reader).length === 0;
188
+ });
189
+ }
190
+ getItemsInput(inputNumber) {
191
+ return derived(reader => {
192
+ const viewModel = this.viewModel;
193
+ const modifiedBaseRange = this.modifiedBaseRange;
194
+ if (!viewModel.model.hasBaseRange(modifiedBaseRange)) {
195
+ return [];
196
+ }
197
+ const state = viewModel.model.getState(modifiedBaseRange).read(reader);
198
+ const handled = viewModel.model.isHandled(modifiedBaseRange).read(reader);
199
+ const model = viewModel.model;
200
+ const result = [];
201
+ const inputData = inputNumber === 1 ? viewModel.model.input1 : viewModel.model.input2;
202
+ const showNonConflictingChanges = viewModel.showNonConflictingChanges.read(reader);
203
+ if (!modifiedBaseRange.isConflicting && handled && !showNonConflictingChanges) {
204
+ return [];
205
+ }
206
+ const otherInputNumber = inputNumber === 1 ? 2 : 1;
207
+ if (state.kind !== ModifiedBaseRangeStateKind.unrecognized && !state.isInputIncluded(inputNumber)) {
208
+ if (!state.isInputIncluded(otherInputNumber) || !this.viewModel.shouldUseAppendInsteadOfAccept.read(reader)) {
209
+ result.push(command(( localizeWithPath(
210
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
211
+ 'accept',
212
+ "Accept {0}",
213
+ inputData.title
214
+ )), async () => {
215
+ transaction((tx) => {
216
+ model.setState(modifiedBaseRange, state.withInputValue(inputNumber, true, false), inputNumber, tx);
217
+ model.telemetry.reportAcceptInvoked(inputNumber, state.includesInput(otherInputNumber));
218
+ });
219
+ }, ( localizeWithPath(
220
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
221
+ 'acceptTooltip',
222
+ "Accept {0} in the result document.",
223
+ inputData.title
224
+ ))));
225
+ if (modifiedBaseRange.canBeCombined) {
226
+ const commandName = modifiedBaseRange.isOrderRelevant
227
+ ? ( localizeWithPath(
228
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
229
+ 'acceptBoth0First',
230
+ "Accept Combination ({0} First)",
231
+ inputData.title
232
+ ))
233
+ : ( localizeWithPath(
234
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
235
+ 'acceptBoth',
236
+ "Accept Combination"
237
+ ));
238
+ result.push(command(commandName, async () => {
239
+ transaction((tx) => {
240
+ model.setState(modifiedBaseRange, ModifiedBaseRangeState.base
241
+ .withInputValue(inputNumber, true)
242
+ .withInputValue(otherInputNumber, true, true), true, tx);
243
+ model.telemetry.reportSmartCombinationInvoked(state.includesInput(otherInputNumber));
244
+ });
245
+ }, ( localizeWithPath(
246
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
247
+ 'acceptBothTooltip',
248
+ "Accept an automatic combination of both sides in the result document."
249
+ ))));
250
+ }
251
+ }
252
+ else {
253
+ result.push(command(( localizeWithPath(
254
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
255
+ 'append',
256
+ "Append {0}",
257
+ inputData.title
258
+ )), async () => {
259
+ transaction((tx) => {
260
+ model.setState(modifiedBaseRange, state.withInputValue(inputNumber, true, false), inputNumber, tx);
261
+ model.telemetry.reportAcceptInvoked(inputNumber, state.includesInput(otherInputNumber));
262
+ });
263
+ }, ( localizeWithPath(
264
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
265
+ 'appendTooltip',
266
+ "Append {0} to the result document.",
267
+ inputData.title
268
+ ))));
269
+ if (modifiedBaseRange.canBeCombined) {
270
+ result.push(command(( localizeWithPath(
271
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
272
+ 'combine',
273
+ "Accept Combination",
274
+ inputData.title
275
+ )), async () => {
276
+ transaction((tx) => {
277
+ model.setState(modifiedBaseRange, state.withInputValue(inputNumber, true, true), inputNumber, tx);
278
+ model.telemetry.reportSmartCombinationInvoked(state.includesInput(otherInputNumber));
279
+ });
280
+ }, ( localizeWithPath(
281
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
282
+ 'acceptBothTooltip',
283
+ "Accept an automatic combination of both sides in the result document."
284
+ ))));
285
+ }
286
+ }
287
+ if (!model.isInputHandled(modifiedBaseRange, inputNumber).read(reader)) {
288
+ result.push(command(( localizeWithPath(
289
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
290
+ 'ignore',
291
+ 'Ignore'
292
+ )), async () => {
293
+ transaction((tx) => {
294
+ model.setInputHandled(modifiedBaseRange, inputNumber, true, tx);
295
+ });
296
+ }, ( localizeWithPath(
297
+ 'vs/workbench/contrib/mergeEditor/browser/view/conflictActions',
298
+ 'markAsHandledTooltip',
299
+ "Don't take this side of the conflict."
300
+ ))));
301
+ }
302
+ }
303
+ return result;
304
+ });
305
+ }
306
+ }
307
+ function command(title, action, tooltip) {
308
+ return {
309
+ text: title,
310
+ action,
311
+ tooltip,
312
+ };
313
+ }
314
+ class ActionsContentWidget extends FixedZoneWidget {
315
+ constructor(editor, viewZoneAccessor, afterLineNumber, height, className, items, viewZoneIdsToCleanUp) {
316
+ super(editor, viewZoneAccessor, afterLineNumber, height, viewZoneIdsToCleanUp);
317
+ this._domNode = h('div.merge-editor-conflict-actions').root;
318
+ this.widgetDomNode.appendChild(this._domNode);
319
+ this._domNode.classList.add(className);
320
+ this._register(autorun(reader => {
321
+ const i = items.read(reader);
322
+ this.setState(i);
323
+ }));
324
+ }
325
+ setState(items) {
326
+ const children = [];
327
+ let isFirst = true;
328
+ for (const item of items) {
329
+ if (isFirst) {
330
+ isFirst = false;
331
+ }
332
+ else {
333
+ children.push($('span', undefined, '\u00a0|\u00a0'));
334
+ }
335
+ const title = renderLabelWithIcons(item.text);
336
+ if (item.action) {
337
+ children.push($('a', { title: item.tooltip, role: 'button', onclick: () => item.action() }, ...title));
338
+ }
339
+ else {
340
+ children.push($('span', { title: item.tooltip }, ...title));
341
+ }
342
+ }
343
+ reset(this._domNode, ...children);
344
+ }
345
+ }
346
+ export { ActionsSource, ConflictActionsFactory };
@@ -0,0 +1,96 @@
1
+ import { h, reset } from '../../../../../base/browser/dom.js';
2
+ import { Disposable, toDisposable } from '../../../../../base/common/lifecycle.js';
3
+ import { LineRange } from '../model/lineRange.js';
4
+ import { observableFromEvent, observableSignalFromEvent, observableSignal } from '../../../../../base/common/observableInternal/utils.js';
5
+ import { autorun } from '../../../../../base/common/observableInternal/autorun.js';
6
+ import { transaction } from '../../../../../base/common/observableInternal/base.js';
7
+ class EditorGutter extends Disposable {
8
+ constructor(_editor, _domNode, itemProvider) {
9
+ super();
10
+ this._editor = _editor;
11
+ this._domNode = _domNode;
12
+ this.itemProvider = itemProvider;
13
+ this.scrollTop = observableFromEvent(this._editor.onDidScrollChange, (e) => this._editor.getScrollTop());
14
+ this.isScrollTopZero = ( this.scrollTop.map((scrollTop) => scrollTop === 0));
15
+ this.modelAttached = observableFromEvent(this._editor.onDidChangeModel, (e) => this._editor.hasModel());
16
+ this.editorOnDidChangeViewZones = observableSignalFromEvent('onDidChangeViewZones', this._editor.onDidChangeViewZones);
17
+ this.editorOnDidContentSizeChange = observableSignalFromEvent('onDidContentSizeChange', this._editor.onDidContentSizeChange);
18
+ this.domNodeSizeChanged = observableSignal('domNodeSizeChanged');
19
+ this.views = ( new Map());
20
+ this._domNode.className = 'gutter monaco-editor';
21
+ const scrollDecoration = this._domNode.appendChild(h('div.scroll-decoration', { role: 'presentation', ariaHidden: 'true', style: { width: '100%' } })
22
+ .root);
23
+ const o = ( new ResizeObserver(() => {
24
+ transaction(tx => {
25
+ this.domNodeSizeChanged.trigger(tx);
26
+ });
27
+ }));
28
+ o.observe(this._domNode);
29
+ this._register(toDisposable(() => o.disconnect()));
30
+ this._register(autorun(reader => {
31
+ scrollDecoration.className = this.isScrollTopZero.read(reader) ? '' : 'scroll-decoration';
32
+ }));
33
+ this._register(autorun(reader => this.render(reader)));
34
+ }
35
+ dispose() {
36
+ super.dispose();
37
+ reset(this._domNode);
38
+ }
39
+ render(reader) {
40
+ if (!this.modelAttached.read(reader)) {
41
+ return;
42
+ }
43
+ this.domNodeSizeChanged.read(reader);
44
+ this.editorOnDidChangeViewZones.read(reader);
45
+ this.editorOnDidContentSizeChange.read(reader);
46
+ const scrollTop = this.scrollTop.read(reader);
47
+ const visibleRanges = this._editor.getVisibleRanges();
48
+ const unusedIds = ( new Set(( this.views.keys())));
49
+ if (visibleRanges.length > 0) {
50
+ const visibleRange = visibleRanges[0];
51
+ const visibleRange2 = ( new LineRange(
52
+ visibleRange.startLineNumber,
53
+ visibleRange.endLineNumber - visibleRange.startLineNumber
54
+ )).deltaEnd(1);
55
+ const gutterItems = this.itemProvider.getIntersectingGutterItems(visibleRange2, reader);
56
+ for (const gutterItem of gutterItems) {
57
+ if (!gutterItem.range.touches(visibleRange2)) {
58
+ continue;
59
+ }
60
+ unusedIds.delete(gutterItem.id);
61
+ let view = this.views.get(gutterItem.id);
62
+ if (!view) {
63
+ const viewDomNode = document.createElement('div');
64
+ this._domNode.appendChild(viewDomNode);
65
+ const itemView = this.itemProvider.createView(gutterItem, viewDomNode);
66
+ view = ( new ManagedGutterItemView(itemView, viewDomNode));
67
+ this.views.set(gutterItem.id, view);
68
+ }
69
+ else {
70
+ view.gutterItemView.update(gutterItem);
71
+ }
72
+ const top = gutterItem.range.startLineNumber <= this._editor.getModel().getLineCount()
73
+ ? this._editor.getTopForLineNumber(gutterItem.range.startLineNumber, true) - scrollTop
74
+ : this._editor.getBottomForLineNumber(gutterItem.range.startLineNumber - 1, false) - scrollTop;
75
+ const bottom = this._editor.getBottomForLineNumber(gutterItem.range.endLineNumberExclusive - 1, true) - scrollTop;
76
+ const height = bottom - top;
77
+ view.domNode.style.top = `${top}px`;
78
+ view.domNode.style.height = `${height}px`;
79
+ view.gutterItemView.layout(top, height, 0, this._domNode.clientHeight);
80
+ }
81
+ }
82
+ for (const id of unusedIds) {
83
+ const view = this.views.get(id);
84
+ view.gutterItemView.dispose();
85
+ this._domNode.removeChild(view.domNode);
86
+ this.views.delete(id);
87
+ }
88
+ }
89
+ }
90
+ class ManagedGutterItemView {
91
+ constructor(gutterItemView, domNode) {
92
+ this.gutterItemView = gutterItemView;
93
+ this.domNode = domNode;
94
+ }
95
+ }
96
+ export { EditorGutter };
@@ -0,0 +1,144 @@
1
+ import { __decorate, __param } from '../../../../../../../../../external/tslib/tslib.es6.js';
2
+ import { reset, h } from '../../../../../../base/browser/dom.js';
3
+ import { renderLabelWithIcons } from '../../../../../../base/browser/ui/iconLabel/iconLabels.js';
4
+ import { BugIndicatingError } from '../../../../../../base/common/errors.js';
5
+ import { MinimapPosition, OverviewRulerLane } from '../../../../../../editor/common/model.js';
6
+ import { localizeWithPath } from '../../../../../../nls.js';
7
+ import { MenuId } from '../../../../../../platform/actions/common/actions.js';
8
+ import { IConfigurationService } from '../../../../../../platform/configuration/common/configuration.js';
9
+ import { IInstantiationService } from '../../../../../../platform/instantiation/common/instantiation.js';
10
+ import { applyObservableDecorations } from '../../utils.js';
11
+ import { handledConflictMinimapOverViewRulerColor, unhandledConflictMinimapOverViewRulerColor } from '../colors.js';
12
+ import { EditorGutter } from '../editorGutter.js';
13
+ import { CodeEditorView, createSelectionsAutorun, TitleMenu } from './codeEditorView.js';
14
+ import { derived } from '../../../../../../base/common/observableInternal/derived.js';
15
+ import { autorunWithStore, autorun } from '../../../../../../base/common/observableInternal/autorun.js';
16
+ let BaseCodeEditorView = class BaseCodeEditorView extends CodeEditorView {
17
+ constructor(viewModel, instantiationService, configurationService) {
18
+ super(instantiationService, viewModel, configurationService);
19
+ this.decorations = derived(this, reader => {
20
+ const viewModel = this.viewModel.read(reader);
21
+ if (!viewModel) {
22
+ return [];
23
+ }
24
+ const model = viewModel.model;
25
+ const textModel = model.base;
26
+ const activeModifiedBaseRange = viewModel.activeModifiedBaseRange.read(reader);
27
+ const showNonConflictingChanges = viewModel.showNonConflictingChanges.read(reader);
28
+ const showDeletionMarkers = this.showDeletionMarkers.read(reader);
29
+ const result = [];
30
+ for (const modifiedBaseRange of model.modifiedBaseRanges.read(reader)) {
31
+ const range = modifiedBaseRange.baseRange;
32
+ if (!range) {
33
+ continue;
34
+ }
35
+ const isHandled = model.isHandled(modifiedBaseRange).read(reader);
36
+ if (!modifiedBaseRange.isConflicting && isHandled && !showNonConflictingChanges) {
37
+ continue;
38
+ }
39
+ const blockClassNames = ['merge-editor-block'];
40
+ let blockPadding = [0, 0, 0, 0];
41
+ if (isHandled) {
42
+ blockClassNames.push('handled');
43
+ }
44
+ if (modifiedBaseRange === activeModifiedBaseRange) {
45
+ blockClassNames.push('focused');
46
+ blockPadding = [0, 2, 0, 2];
47
+ }
48
+ blockClassNames.push('base');
49
+ const inputToDiffAgainst = viewModel.baseShowDiffAgainst.read(reader);
50
+ if (inputToDiffAgainst) {
51
+ for (const diff of modifiedBaseRange.getInputDiffs(inputToDiffAgainst)) {
52
+ const range = diff.inputRange.toInclusiveRange();
53
+ if (range) {
54
+ result.push({
55
+ range,
56
+ options: {
57
+ className: `merge-editor-diff base`,
58
+ description: 'Merge Editor',
59
+ isWholeLine: true,
60
+ }
61
+ });
62
+ }
63
+ for (const diff2 of diff.rangeMappings) {
64
+ if (showDeletionMarkers || !diff2.inputRange.isEmpty()) {
65
+ result.push({
66
+ range: diff2.inputRange,
67
+ options: {
68
+ className: diff2.inputRange.isEmpty() ? `merge-editor-diff-empty-word base` : `merge-editor-diff-word base`,
69
+ description: 'Merge Editor',
70
+ showIfCollapsed: true,
71
+ },
72
+ });
73
+ }
74
+ }
75
+ }
76
+ }
77
+ result.push({
78
+ range: range.toInclusiveRangeOrEmpty(),
79
+ options: {
80
+ showIfCollapsed: true,
81
+ blockClassName: blockClassNames.join(' '),
82
+ blockPadding,
83
+ blockIsAfterEnd: range.startLineNumber > textModel.getLineCount(),
84
+ description: 'Merge Editor',
85
+ minimap: {
86
+ position: MinimapPosition.Gutter,
87
+ color: { id: isHandled ? handledConflictMinimapOverViewRulerColor : unhandledConflictMinimapOverViewRulerColor },
88
+ },
89
+ overviewRuler: modifiedBaseRange.isConflicting ? {
90
+ position: OverviewRulerLane.Center,
91
+ color: { id: isHandled ? handledConflictMinimapOverViewRulerColor : unhandledConflictMinimapOverViewRulerColor },
92
+ } : undefined
93
+ }
94
+ });
95
+ }
96
+ return result;
97
+ });
98
+ this._register(createSelectionsAutorun(this, (baseRange, viewModel) => baseRange));
99
+ this._register(instantiationService.createInstance(TitleMenu, MenuId.MergeBaseToolbar, this.htmlElements.title));
100
+ this._register(autorunWithStore((reader, store) => {
101
+ if (this.checkboxesVisible.read(reader)) {
102
+ store.add(( new EditorGutter(this.editor, this.htmlElements.gutterDiv, {
103
+ getIntersectingGutterItems: (range, reader) => [],
104
+ createView: (item, target) => { throw new BugIndicatingError(); },
105
+ })));
106
+ }
107
+ }));
108
+ this._register(autorun(reader => {
109
+ const vm = this.viewModel.read(reader);
110
+ if (!vm) {
111
+ return;
112
+ }
113
+ this.editor.setModel(vm.model.base);
114
+ reset(this.htmlElements.title, ...renderLabelWithIcons(( localizeWithPath(
115
+ 'vs/workbench/contrib/mergeEditor/browser/view/editors/baseCodeEditorView',
116
+ 'base',
117
+ 'Base'
118
+ ))));
119
+ const baseShowDiffAgainst = vm.baseShowDiffAgainst.read(reader);
120
+ let node = undefined;
121
+ if (baseShowDiffAgainst) {
122
+ const label = ( localizeWithPath(
123
+ 'vs/workbench/contrib/mergeEditor/browser/view/editors/baseCodeEditorView',
124
+ 'compareWith',
125
+ 'Comparing with {0}',
126
+ baseShowDiffAgainst === 1 ? vm.model.input1.title : vm.model.input2.title
127
+ ));
128
+ const tooltip = ( localizeWithPath(
129
+ 'vs/workbench/contrib/mergeEditor/browser/view/editors/baseCodeEditorView',
130
+ 'compareWithTooltip',
131
+ 'Differences are highlighted with a background color.'
132
+ ));
133
+ node = h('span', { title: tooltip }, [label]).root;
134
+ }
135
+ reset(this.htmlElements.description, ...(node ? [node] : []));
136
+ }));
137
+ this._register(applyObservableDecorations(this.editor, this.decorations));
138
+ }
139
+ };
140
+ BaseCodeEditorView = ( __decorate([
141
+ ( __param(1, IInstantiationService)),
142
+ ( __param(2, IConfigurationService))
143
+ ], BaseCodeEditorView));
144
+ export { BaseCodeEditorView };