@opensumi/ide-editor 2.27.3-next-1714461024.0 → 2.27.3-next-1714463163.0

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 (62) hide show
  1. package/lib/browser/doc-model/editor-document-model-service.d.ts +3 -1
  2. package/lib/browser/doc-model/editor-document-model-service.d.ts.map +1 -1
  3. package/lib/browser/doc-model/editor-document-model-service.js +6 -1
  4. package/lib/browser/doc-model/editor-document-model-service.js.map +1 -1
  5. package/lib/browser/doc-model/types.d.ts +1 -0
  6. package/lib/browser/doc-model/types.d.ts.map +1 -1
  7. package/lib/browser/doc-model/types.js.map +1 -1
  8. package/lib/browser/editor-collection.service.d.ts +6 -6
  9. package/lib/browser/editor-collection.service.d.ts.map +1 -1
  10. package/lib/browser/editor-collection.service.js.map +1 -1
  11. package/lib/browser/editor-electron.contribution.d.ts +2 -2
  12. package/lib/browser/editor-electron.contribution.d.ts.map +1 -1
  13. package/lib/browser/editor-electron.contribution.js +1 -1
  14. package/lib/browser/editor-electron.contribution.js.map +1 -1
  15. package/lib/browser/editor.decoration.service.d.ts.map +1 -1
  16. package/lib/browser/editor.decoration.service.js +6 -4
  17. package/lib/browser/editor.decoration.service.js.map +1 -1
  18. package/lib/browser/editor.module.less +0 -54
  19. package/lib/browser/hooks/useEditor.d.ts +4 -0
  20. package/lib/browser/hooks/useEditor.d.ts.map +1 -0
  21. package/lib/browser/hooks/useEditor.js +31 -0
  22. package/lib/browser/hooks/useEditor.js.map +1 -0
  23. package/lib/browser/hooks/useInMergeChanges.d.ts +3 -0
  24. package/lib/browser/hooks/useInMergeChanges.d.ts.map +1 -0
  25. package/lib/browser/hooks/useInMergeChanges.js +27 -0
  26. package/lib/browser/hooks/useInMergeChanges.js.map +1 -0
  27. package/lib/browser/merge-conflict/conflict-parser.d.ts +46 -0
  28. package/lib/browser/merge-conflict/conflict-parser.d.ts.map +1 -0
  29. package/lib/browser/merge-conflict/conflict-parser.js +209 -0
  30. package/lib/browser/merge-conflict/conflict-parser.js.map +1 -0
  31. package/lib/browser/merge-conflict/index.d.ts +3 -0
  32. package/lib/browser/merge-conflict/index.d.ts.map +1 -0
  33. package/lib/browser/merge-conflict/index.js +6 -0
  34. package/lib/browser/merge-conflict/index.js.map +1 -0
  35. package/lib/browser/merge-conflict/types.d.ts +60 -0
  36. package/lib/browser/merge-conflict/types.d.ts.map +1 -0
  37. package/lib/browser/merge-conflict/types.js +15 -0
  38. package/lib/browser/merge-conflict/types.js.map +1 -0
  39. package/lib/browser/merge-editor/MergeEditorFloatComponents.d.ts.map +1 -1
  40. package/lib/browser/merge-editor/MergeEditorFloatComponents.js +75 -49
  41. package/lib/browser/merge-editor/MergeEditorFloatComponents.js.map +1 -1
  42. package/lib/browser/merge-editor/merge-editor.module.less +71 -0
  43. package/lib/browser/merge-editor/merge-editor.provider.d.ts.map +1 -1
  44. package/lib/browser/merge-editor/merge-editor.provider.js +3 -0
  45. package/lib/browser/merge-editor/merge-editor.provider.js.map +1 -1
  46. package/lib/common/editor.d.ts +1 -1
  47. package/package.json +14 -14
  48. package/src/browser/doc-model/editor-document-model-service.ts +11 -1
  49. package/src/browser/doc-model/types.ts +4 -0
  50. package/src/browser/editor-collection.service.ts +7 -7
  51. package/src/browser/editor-electron.contribution.ts +1 -2
  52. package/src/browser/editor.decoration.service.ts +6 -4
  53. package/src/browser/editor.module.less +0 -54
  54. package/src/browser/hooks/useEditor.ts +34 -0
  55. package/src/browser/hooks/useInMergeChanges.ts +30 -0
  56. package/src/browser/merge-conflict/conflict-parser.ts +323 -0
  57. package/src/browser/merge-conflict/index.ts +2 -0
  58. package/src/browser/merge-conflict/types.ts +73 -0
  59. package/src/browser/merge-editor/MergeEditorFloatComponents.tsx +109 -74
  60. package/src/browser/merge-editor/merge-editor.module.less +71 -0
  61. package/src/browser/merge-editor/merge-editor.provider.ts +3 -0
  62. package/src/common/editor.ts +1 -1
@@ -0,0 +1,46 @@
1
+ import { Disposable, LRUCache } from '@opensumi/ide-core-common';
2
+ import * as monaco from '@opensumi/ide-monaco';
3
+ import { ICacheDocumentMergeConflict, IDocumentMergeConflictDescriptor, IMergeRegion } from './types';
4
+ export interface IConflictCache {
5
+ id: string;
6
+ range: monaco.Range;
7
+ text: string;
8
+ isResolved: boolean;
9
+ }
10
+ export declare class TextLine {
11
+ lineNumber: number;
12
+ text: string;
13
+ range: monaco.Range;
14
+ rangeIncludingLineBreak: monaco.Range;
15
+ firstNonWhitespaceCharacterIndex: number;
16
+ isEmptyOrWhitespace: boolean;
17
+ constructor(document: monaco.editor.ITextModel, line: number);
18
+ }
19
+ export declare class MergeConflictParser extends Disposable {
20
+ cache: LRUCache<string, DocumentMergeConflict[]>;
21
+ private _conflictTextCaches;
22
+ private _conflictRangeCaches;
23
+ private static createCacheKey;
24
+ scanDocument(document: monaco.editor.ITextModel): DocumentMergeConflict[];
25
+ getConflictText(uri: string): string | undefined;
26
+ getAllConflictsByUri(uri: string): IConflictCache[] | undefined;
27
+ getAllConflicts(): Map<string, IConflictCache[]>;
28
+ setConflictResolved(uri: string, id: string): void;
29
+ deleteConflictText(uri: string): void;
30
+ dispose(): void;
31
+ }
32
+ export declare class DocumentMergeConflict implements ICacheDocumentMergeConflict {
33
+ range: monaco.Range;
34
+ current: IMergeRegion;
35
+ incoming: IMergeRegion;
36
+ commonAncestors: IMergeRegion[];
37
+ splitter: monaco.Range;
38
+ incomingContent: string;
39
+ currentContent: string;
40
+ bothContent: string;
41
+ aiContent?: string;
42
+ defaultContent: string;
43
+ private applied;
44
+ constructor(descriptor: IDocumentMergeConflictDescriptor);
45
+ }
46
+ //# sourceMappingURL=conflict-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conflict-parser.d.ts","sourceRoot":"","sources":["../../../src/browser/merge-conflict/conflict-parser.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAQ,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAC;AAE/C,OAAO,EAAE,2BAA2B,EAAE,gCAAgC,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AActG,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,qBAAa,QAAQ;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;IACpB,uBAAuB,EAAE,MAAM,CAAC,KAAK,CAAC;IACtC,gCAAgC,EAAE,MAAM,CAAC;IACzC,mBAAmB,EAAE,OAAO,CAAC;gBACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM;CAY7D;AAED,qBACa,mBAAoB,SAAQ,UAAU;IACjD,KAAK,4CAAsD;IAE3D,OAAO,CAAC,mBAAmB,CAA6B;IAExD,OAAO,CAAC,oBAAoB,CAAuC;IAEnE,OAAO,CAAC,MAAM,CAAC,cAAc;IAI7B,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU;IAkF/C,eAAe,CAAC,GAAG,EAAE,MAAM;IAG3B,oBAAoB,CAAC,GAAG,EAAE,MAAM;IAIhC,eAAe;IAIf,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAU3C,kBAAkB,CAAC,GAAG,EAAE,MAAM;IAG9B,OAAO;CAIR;AAiID,qBAAa,qBAAsB,YAAW,2BAA2B;IAChE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;IACpB,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,YAAY,CAAC;IACvB,eAAe,EAAE,YAAY,EAAE,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IAC9B,OAAO,CAAC,OAAO,CAAS;gBACZ,UAAU,EAAE,gCAAgC;CAOzD"}
@@ -0,0 +1,209 @@
1
+ "use strict";
2
+ /* ---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Microsoft Corporation. All rights reserved.
4
+ * Licensed under the MIT License. See License.txt in the project root for license information.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ // Some code copied and modified from https://github.com/microsoft/vscode/blob/main/extensions/merge-conflict/src/mergeConflictParser.ts
7
+ var MergeConflictParser_1;
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.DocumentMergeConflict = exports.MergeConflictParser = exports.TextLine = void 0;
10
+ const tslib_1 = require("tslib");
11
+ const di_1 = require("@opensumi/di");
12
+ const ide_core_common_1 = require("@opensumi/ide-core-common");
13
+ const monaco = tslib_1.__importStar(require("@opensumi/ide-monaco"));
14
+ const startHeaderMarker = '<<<<<<<';
15
+ const commonAncestorsMarker = '|||||||';
16
+ const splitterMarker = '=======';
17
+ const endFooterMarker = '>>>>>>>';
18
+ class TextLine {
19
+ constructor(document, line) {
20
+ if (typeof line !== 'number' || line <= 0 || line > document.getLineCount()) {
21
+ throw new Error('Illegal value for `line`');
22
+ }
23
+ this.text = document.getLineContent(line);
24
+ this.firstNonWhitespaceCharacterIndex = /^(\s*)/.exec(this.text)[1].length;
25
+ this.range = new monaco.Range(line, 1, line, this.text.length + 1);
26
+ this.rangeIncludingLineBreak =
27
+ line <= document.getLineCount() ? new monaco.Range(line, 1, line + 1, 1) : this.range;
28
+ this.lineNumber = line;
29
+ this.isEmptyOrWhitespace = this.firstNonWhitespaceCharacterIndex === this.text.length;
30
+ }
31
+ }
32
+ exports.TextLine = TextLine;
33
+ let MergeConflictParser = MergeConflictParser_1 = class MergeConflictParser extends ide_core_common_1.Disposable {
34
+ constructor() {
35
+ super(...arguments);
36
+ this.cache = new ide_core_common_1.LRUCache(100);
37
+ this._conflictTextCaches = new Map();
38
+ this._conflictRangeCaches = new Map();
39
+ }
40
+ static createCacheKey(document) {
41
+ return `${document.uri.toString()}-${document.getAlternativeVersionId()}`;
42
+ }
43
+ scanDocument(document) {
44
+ const cacheKey = MergeConflictParser_1.createCacheKey(document);
45
+ if (this.cache.has(cacheKey)) {
46
+ return this.cache.get(cacheKey);
47
+ }
48
+ // Scan each line in the document, we already know there is at least a <<<<<<< and
49
+ // >>>>>> marker within the document, we need to group these into conflict ranges.
50
+ // We initially build a scan match, that references the lines of the header, splitter
51
+ // and footer. This is then converted into a full descriptor containing all required
52
+ // ranges.
53
+ let currentConflict = null;
54
+ const conflictDescriptors = [];
55
+ const cacheConflictDescriptors = this._conflictTextCaches.get(document.uri.toString());
56
+ for (let i = 0; i < document.getLineCount(); i++) {
57
+ const line = new TextLine(document, i + 1);
58
+ // Ignore empty lines
59
+ if (!line || line.isEmptyOrWhitespace) {
60
+ continue;
61
+ }
62
+ // Is this a start line? <<<<<<<
63
+ if (line.text.startsWith(startHeaderMarker)) {
64
+ if (currentConflict !== null) {
65
+ // Error, we should not see a startMarker before we've seen an endMarker
66
+ currentConflict = null;
67
+ // Give up parsing, anything matched up this to this point will be decorated
68
+ // anything after will not
69
+ break;
70
+ }
71
+ // Create a new conflict starting at this line
72
+ currentConflict = { startHeader: line, commonAncestors: [] };
73
+ }
74
+ // Are we within a conflict block and is this a common ancestors marker? |||||||
75
+ else if (currentConflict && !currentConflict.splitter && line.text.startsWith(commonAncestorsMarker)) {
76
+ currentConflict.commonAncestors.push(line);
77
+ }
78
+ // Are we within a conflict block and is this a splitter? =======
79
+ else if (currentConflict && !currentConflict.splitter && line.text === splitterMarker) {
80
+ currentConflict.splitter = line;
81
+ }
82
+ // Are we within a conflict block and is this a footer? >>>>>>>
83
+ else if (currentConflict && line.text.startsWith(endFooterMarker)) {
84
+ currentConflict.endFooter = line;
85
+ // Create a full descriptor from the lines that we matched. This can return
86
+ // null if the descriptor could not be completed.
87
+ const completeDescriptor = scanItemTolMergeConflictDescriptor(document, currentConflict);
88
+ if (completeDescriptor !== null) {
89
+ conflictDescriptors.push(completeDescriptor);
90
+ }
91
+ // Reset the current conflict to be empty, so we can match the next
92
+ // starting header marker.
93
+ currentConflict = null;
94
+ }
95
+ }
96
+ if (!cacheConflictDescriptors && conflictDescriptors.length) {
97
+ this._conflictTextCaches.set(document.uri.toString(), document.getValue());
98
+ const conflictRanges = [];
99
+ conflictDescriptors.filter(Boolean).forEach((descriptor) => {
100
+ const range = descriptor.range;
101
+ conflictRanges.push({
102
+ id: (0, ide_core_common_1.uuid)(),
103
+ range,
104
+ text: document.getValueInRange(range),
105
+ isResolved: false,
106
+ });
107
+ });
108
+ this._conflictRangeCaches.set(document.uri.toString(), conflictRanges);
109
+ }
110
+ const result = conflictDescriptors === null || conflictDescriptors === void 0 ? void 0 : conflictDescriptors.filter(Boolean).map((descriptor) => new DocumentMergeConflict(descriptor));
111
+ this.cache.set(cacheKey, result);
112
+ return result;
113
+ }
114
+ getConflictText(uri) {
115
+ return this._conflictTextCaches.get(uri);
116
+ }
117
+ getAllConflictsByUri(uri) {
118
+ return this._conflictRangeCaches.get(uri);
119
+ }
120
+ getAllConflicts() {
121
+ return this._conflictRangeCaches;
122
+ }
123
+ setConflictResolved(uri, id) {
124
+ const conflictRanges = this._conflictRangeCaches.get(uri);
125
+ if (conflictRanges) {
126
+ const conflictRange = conflictRanges.find((item) => item.id === id);
127
+ if (conflictRange) {
128
+ conflictRange.isResolved = true;
129
+ }
130
+ }
131
+ }
132
+ deleteConflictText(uri) {
133
+ this._conflictTextCaches.delete(uri);
134
+ }
135
+ dispose() {
136
+ this._conflictTextCaches.clear();
137
+ this._conflictRangeCaches.clear();
138
+ }
139
+ };
140
+ MergeConflictParser = MergeConflictParser_1 = tslib_1.__decorate([
141
+ (0, di_1.Injectable)()
142
+ ], MergeConflictParser);
143
+ exports.MergeConflictParser = MergeConflictParser;
144
+ function scanItemTolMergeConflictDescriptor(document, scanned) {
145
+ // Validate we have all the required lines within the scan item.
146
+ if (!scanned.startHeader || !scanned.splitter || !scanned.endFooter) {
147
+ return null;
148
+ }
149
+ const tokenAfterCurrentBlock = scanned.commonAncestors[0] || scanned.splitter;
150
+ // Assume that descriptor.current.header, descriptor.incoming.header and descriptor.splitter
151
+ // have valid ranges, fill in content and total ranges from these parts.
152
+ // NOTE: We need to shift the decorator range back one character so the splitter does not end up with
153
+ // two decoration colors (current and splitter), if we take the new line from the content into account
154
+ // the decorator will wrap to the next line.
155
+ return {
156
+ current: {
157
+ header: scanned.startHeader.range,
158
+ decoratorContent: new monaco.Range(scanned.startHeader.rangeIncludingLineBreak.endLineNumber, scanned.startHeader.rangeIncludingLineBreak.endColumn, shiftBackOneCharacter(document, tokenAfterCurrentBlock.range.getStartPosition(), scanned.startHeader.rangeIncludingLineBreak.getEndPosition()).lineNumber, shiftBackOneCharacter(document, tokenAfterCurrentBlock.range.getStartPosition(), scanned.startHeader.rangeIncludingLineBreak.getEndPosition()).column),
159
+ // Current content is range between header (shifted for linebreak) and splitter or common ancestors mark start
160
+ content: new monaco.Range(scanned.startHeader.rangeIncludingLineBreak.endLineNumber, scanned.startHeader.rangeIncludingLineBreak.endColumn, tokenAfterCurrentBlock.range.startLineNumber, tokenAfterCurrentBlock.range.startColumn),
161
+ name: scanned.startHeader.text.substring(startHeaderMarker.length + 1),
162
+ },
163
+ commonAncestors: scanned.commonAncestors.map((currentTokenLine, index, commonAncestors) => {
164
+ const nextTokenLine = commonAncestors[index + 1] || scanned.splitter;
165
+ return {
166
+ header: currentTokenLine.range,
167
+ decoratorContent: new monaco.Range(currentTokenLine.rangeIncludingLineBreak.endLineNumber, currentTokenLine.rangeIncludingLineBreak.endColumn, shiftBackOneCharacter(document, nextTokenLine.range.getStartPosition(), currentTokenLine.rangeIncludingLineBreak.getEndPosition()).lineNumber, shiftBackOneCharacter(document, nextTokenLine.range.getStartPosition(), currentTokenLine.rangeIncludingLineBreak.getEndPosition()).lineNumber),
168
+ // Each common ancestors block is range between one common ancestors token
169
+ // (shifted for linebreak) and start of next common ancestors token or splitter
170
+ content: new monaco.Range(currentTokenLine.rangeIncludingLineBreak.endLineNumber, currentTokenLine.rangeIncludingLineBreak.endColumn, nextTokenLine.range.startLineNumber, nextTokenLine.range.startColumn),
171
+ name: currentTokenLine.text.substring(commonAncestorsMarker.length + 1),
172
+ };
173
+ }),
174
+ splitter: scanned.splitter.range,
175
+ incoming: {
176
+ header: scanned.endFooter.range,
177
+ decoratorContent: new monaco.Range(scanned.splitter.rangeIncludingLineBreak.endLineNumber, scanned.splitter.rangeIncludingLineBreak.endColumn, shiftBackOneCharacter(document, scanned.endFooter.range.getStartPosition(), scanned.splitter.rangeIncludingLineBreak.getEndPosition()).lineNumber, shiftBackOneCharacter(document, scanned.endFooter.range.getStartPosition(), scanned.splitter.rangeIncludingLineBreak.getEndPosition()).column),
178
+ // Incoming content is range between splitter (shifted for linebreak) and footer start
179
+ content: new monaco.Range(scanned.splitter.rangeIncludingLineBreak.endLineNumber, scanned.splitter.rangeIncludingLineBreak.endColumn, scanned.endFooter.range.startLineNumber, scanned.endFooter.range.startColumn),
180
+ name: scanned.endFooter.text.substring(endFooterMarker.length + 1),
181
+ },
182
+ // Entire range is between current header start and incoming header end (including line break)
183
+ range: new monaco.Range(scanned.startHeader.range.startLineNumber, scanned.startHeader.range.startColumn, scanned.endFooter.range.endLineNumber, scanned.endFooter.range.endColumn),
184
+ };
185
+ }
186
+ function shiftBackOneCharacter(document, range, unlessEqual) {
187
+ if (range.equals(unlessEqual)) {
188
+ return range;
189
+ }
190
+ let line = range.lineNumber;
191
+ let character = range.column - 1;
192
+ if (character < 0) {
193
+ line--;
194
+ character = new TextLine(document, line).range.endColumn;
195
+ }
196
+ return new monaco.Position(line, character);
197
+ }
198
+ class DocumentMergeConflict {
199
+ constructor(descriptor) {
200
+ this.applied = false;
201
+ this.range = descriptor.range;
202
+ this.current = descriptor.current;
203
+ this.incoming = descriptor.incoming;
204
+ this.commonAncestors = descriptor.commonAncestors;
205
+ this.splitter = descriptor.splitter;
206
+ }
207
+ }
208
+ exports.DocumentMergeConflict = DocumentMergeConflict;
209
+ //# sourceMappingURL=conflict-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conflict-parser.js","sourceRoot":"","sources":["../../../src/browser/merge-conflict/conflict-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './conflict-parser';
2
+ export * from './types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/browser/merge-conflict/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,SAAS,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./conflict-parser"), exports);
5
+ tslib_1.__exportStar(require("./types"), exports);
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/browser/merge-conflict/index.ts"],"names":[],"mappings":";;;AAAA,4DAAkC;AAClC,kDAAwB"}
@@ -0,0 +1,60 @@
1
+ import * as monaco from '@opensumi/ide-monaco';
2
+ export interface IMergeRegion {
3
+ name: string;
4
+ header: monaco.Range;
5
+ content: monaco.Range;
6
+ decoratorContent?: monaco.Range;
7
+ }
8
+ export declare const enum CommitType {
9
+ Current = 0,
10
+ Incoming = 1,
11
+ Both = 2
12
+ }
13
+ export interface IExtensionConfiguration {
14
+ enableCodeLens: boolean;
15
+ enableDecorations: boolean;
16
+ enableEditorOverview: boolean;
17
+ }
18
+ export interface IDocumentMergeConflict extends IDocumentMergeConflictDescriptor {
19
+ commitEdit(type: CommitType, editor: monaco.editor.ITextModel): Thenable<boolean>;
20
+ applyEdit(type: CommitType, document: monaco.editor.ITextModel, edit: {
21
+ replace(range: monaco.Range, newText: string): void;
22
+ }): void;
23
+ }
24
+ export interface IDocumentMergeConflictDescriptor {
25
+ [x: string]: any;
26
+ range: monaco.Range;
27
+ current: IMergeRegion;
28
+ incoming: IMergeRegion;
29
+ commonAncestors: IMergeRegion[];
30
+ splitter: monaco.Range;
31
+ }
32
+ export interface ICacheDocumentMergeConflict extends IDocumentMergeConflictDescriptor {
33
+ incomingContent: string;
34
+ currentContent: string;
35
+ bothContent: string;
36
+ aiContent?: string;
37
+ defaultContent: string;
38
+ }
39
+ export interface IDocumentMergeConflictTracker {
40
+ getConflicts(document: monaco.editor.ITextModel): PromiseLike<IDocumentMergeConflict[]>;
41
+ isPending(document: monaco.editor.ITextModel): boolean;
42
+ forget(document: monaco.editor.ITextModel): void;
43
+ }
44
+ export interface IDocumentMergeConflictTrackerService {
45
+ createTracker(origin: string): IDocumentMergeConflictTracker;
46
+ forget(document: monaco.editor.ITextModel): void;
47
+ }
48
+ export interface IDocumentMergeConflictNavigationResults {
49
+ canNavigate: boolean;
50
+ conflict?: IDocumentMergeConflict;
51
+ }
52
+ export declare enum NavigationDirection {
53
+ Forwards = 0,
54
+ Backwards = 1
55
+ }
56
+ export declare namespace AI_COMMAND {
57
+ const ACCEPT: string;
58
+ const REVERT: string;
59
+ }
60
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/browser/merge-conflict/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAC;AAE/C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC;CACjC;AAED,0BAAkB,UAAU;IAC1B,OAAO,IAAA;IACP,QAAQ,IAAA;IACR,IAAI,IAAA;CACL;AAED,MAAM,WAAW,uBAAuB;IACtC,cAAc,EAAE,OAAO,CAAC;IACxB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,sBAAuB,SAAQ,gCAAgC;IAC9E,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAClF,SAAS,CACP,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAClC,IAAI,EAAE;QAAE,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAC5D,IAAI,CAAC;CACT;AAED,MAAM,WAAW,gCAAgC;IAC/C,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;IACpB,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,YAAY,CAAC;IACvB,eAAe,EAAE,YAAY,EAAE,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC;CACxB;AAGD,MAAM,WAAW,2BAA4B,SAAQ,gCAAgC;IACnF,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AACD,MAAM,WAAW,6BAA6B;IAC5C,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,GAAG,WAAW,CAAC,sBAAsB,EAAE,CAAC,CAAC;IACxF,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC;IACvD,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;CAClD;AAED,MAAM,WAAW,oCAAoC;IACnD,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,6BAA6B,CAAC;IAC7D,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;CAClD;AAED,MAAM,WAAW,uCAAuC;IACtD,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,sBAAsB,CAAC;CACnC;AAED,oBAAY,mBAAmB;IAC7B,QAAQ,IAAA;IACR,SAAS,IAAA;CACV;AAED,yBAAiB,UAAU,CAAC;IAEnB,MAAM,MAAM,QAAgC,CAAC;IAC7C,MAAM,MAAM,QAAgC,CAAC;CACrD"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AI_COMMAND = exports.NavigationDirection = void 0;
4
+ var NavigationDirection;
5
+ (function (NavigationDirection) {
6
+ NavigationDirection[NavigationDirection["Forwards"] = 0] = "Forwards";
7
+ NavigationDirection[NavigationDirection["Backwards"] = 1] = "Backwards";
8
+ })(NavigationDirection = exports.NavigationDirection || (exports.NavigationDirection = {}));
9
+ var AI_COMMAND;
10
+ (function (AI_COMMAND) {
11
+ const MERGE_CONFLICT = 'merge-conflict';
12
+ AI_COMMAND.ACCEPT = `${MERGE_CONFLICT}.ai.accept`;
13
+ AI_COMMAND.REVERT = `${MERGE_CONFLICT}.ai.revert`;
14
+ })(AI_COMMAND = exports.AI_COMMAND || (exports.AI_COMMAND = {}));
15
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/browser/merge-conflict/types.ts"],"names":[],"mappings":";;;AA+DA,IAAY,mBAGX;AAHD,WAAY,mBAAmB;IAC7B,qEAAQ,CAAA;IACR,uEAAS,CAAA;AACX,CAAC,EAHW,mBAAmB,GAAnB,2BAAmB,KAAnB,2BAAmB,QAG9B;AAED,IAAiB,UAAU,CAI1B;AAJD,WAAiB,UAAU;IACzB,MAAM,cAAc,GAAG,gBAAgB,CAAC;IAC3B,iBAAM,GAAG,GAAG,cAAc,YAAY,CAAC;IACvC,iBAAM,GAAG,GAAG,cAAc,YAAY,CAAC;AACtD,CAAC,EAJgB,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAI1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"MergeEditorFloatComponents.d.ts","sourceRoot":"","sources":["../../../src/browser/merge-editor/MergeEditorFloatComponents.tsx"],"names":[],"mappings":"AAGA,OAAO,EAML,GAAG,EAIJ,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAEhD,eAAO,MAAM,0BAA0B,EAAE,oBAAoB,CAAC;IAAE,GAAG,EAAE,GAAG,CAAA;CAAE,CAmHzE,CAAC"}
1
+ {"version":3,"file":"MergeEditorFloatComponents.d.ts","sourceRoot":"","sources":["../../../src/browser/merge-editor/MergeEditorFloatComponents.tsx"],"names":[],"mappings":"AAGA,OAAO,EAOL,GAAG,EAGJ,MAAM,4BAA4B,CAAC;AAMpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAIhD,eAAO,MAAM,0BAA0B,EAAE,oBAAoB,CAAC;IAAE,GAAG,EAAE,GAAG,CAAA;CAAE,CAiJzE,CAAC"}
@@ -5,28 +5,45 @@ const tslib_1 = require("tslib");
5
5
  const react_1 = tslib_1.__importStar(require("react"));
6
6
  const ide_components_1 = require("@opensumi/ide-components");
7
7
  const ide_core_browser_1 = require("@opensumi/ide-core-browser");
8
- const editor_module_less_1 = tslib_1.__importDefault(require("../editor.module.less"));
8
+ const git_1 = require("@opensumi/ide-core-common/lib/commands/git");
9
+ const useEditor_1 = require("../hooks/useEditor");
10
+ const useInMergeChanges_1 = require("../hooks/useInMergeChanges");
11
+ const merge_conflict_1 = require("../merge-conflict");
12
+ const merge_editor_module_less_1 = tslib_1.__importDefault(require("./merge-editor.module.less"));
9
13
  const MergeEditorFloatComponents = ({ resource }) => {
10
14
  const aiNativeConfigService = (0, ide_core_browser_1.useInjectable)(ide_core_browser_1.AINativeConfigService);
11
15
  const commandService = (0, ide_core_browser_1.useInjectable)(ide_core_browser_1.CommandService);
12
16
  const commandRegistry = (0, ide_core_browser_1.useInjectable)(ide_core_browser_1.CommandRegistry);
13
- const contextKeyService = (0, ide_core_browser_1.useInjectable)(ide_core_browser_1.IContextKeyService);
17
+ const mergeConflictParser = (0, ide_core_browser_1.useInjectable)(merge_conflict_1.MergeConflictParser);
18
+ const editorModel = (0, useEditor_1.useEditorDocumentModelRef)(resource.uri);
14
19
  const [isVisiable, setIsVisiable] = (0, react_1.useState)(false);
15
- const gitMergeChangesSet = new Set(['git.mergeChanges']);
20
+ const [conflicts, setConflicts] = (0, react_1.useState)([]);
21
+ const inMergeChanges = (0, useInMergeChanges_1.useInMergeChanges)(resource.uri.toString());
16
22
  (0, react_1.useEffect)(() => {
17
- const run = () => {
18
- const mergeChanges = contextKeyService.getValue('git.mergeChanges') || [];
19
- setIsVisiable(mergeChanges.some((value) => value.toString() === resource.uri.toString()));
20
- };
21
- const disposed = contextKeyService.onDidChangeContext(({ payload }) => {
22
- if (payload.affectsSome(gitMergeChangesSet)) {
23
+ const disposables = new ide_core_browser_1.DisposableStore();
24
+ if (editorModel) {
25
+ const { instance } = editorModel;
26
+ const run = () => {
27
+ const conflicts = mergeConflictParser.scanDocument(instance.getMonacoModel());
28
+ if (conflicts.length > 0) {
29
+ setIsVisiable(true);
30
+ setConflicts(conflicts);
31
+ }
32
+ else {
33
+ setIsVisiable(false);
34
+ setConflicts([]);
35
+ }
36
+ };
37
+ disposables.add(editorModel.instance.getMonacoModel().onDidChangeContent(() => {
23
38
  run();
24
- }
25
- });
26
- run();
27
- return () => disposed.dispose();
28
- }, [resource]);
29
- const [isAiResolving, setIsAiResolving] = (0, react_1.useState)(false);
39
+ }));
40
+ run();
41
+ return () => {
42
+ disposables.dispose();
43
+ };
44
+ }
45
+ }, [editorModel]);
46
+ const [isAIResolving, setIsAIResolving] = (0, react_1.useState)(false);
30
47
  const handleOpenMergeEditor = (0, react_1.useCallback)(async () => {
31
48
  const { uri } = resource;
32
49
  [ide_core_browser_1.SCM_COMMANDS.GIT_OPEN_MERGE_EDITOR, ide_core_browser_1.SCM_COMMANDS._GIT_OPEN_MERGE_EDITOR].forEach(({ id: command }) => {
@@ -35,49 +52,58 @@ const MergeEditorFloatComponents = ({ resource }) => {
35
52
  }
36
53
  });
37
54
  }, [resource]);
38
- const isSupportAiResolve = (0, react_1.useCallback)(() => aiNativeConfigService.capabilities.supportsConflictResolve, [aiNativeConfigService]);
39
- const handlePrev = () => {
40
- commandService.tryExecuteCommand('merge-conflict.previous');
41
- };
42
- const handleNext = () => {
43
- commandService.tryExecuteCommand('merge-conflict.next');
44
- };
55
+ const isSupportAIResolve = (0, react_1.useCallback)(() => aiNativeConfigService.capabilities.supportsConflictResolve, [aiNativeConfigService]);
56
+ const handlePrev = (0, react_1.useCallback)(() => {
57
+ commandService.tryExecuteCommand(git_1.MergeConflictCommands.Previous).then(() => {
58
+ // TODO: 编辑器向上滚动一行
59
+ });
60
+ }, []);
61
+ const handleNext = (0, react_1.useCallback)(() => {
62
+ commandService.tryExecuteCommand(git_1.MergeConflictCommands.Next).then(() => {
63
+ // TODO: 编辑器向上滚动一行
64
+ });
65
+ }, []);
45
66
  const handleAIResolve = (0, react_1.useCallback)(async () => {
46
- setIsAiResolving(true);
47
- if (isAiResolving) {
48
- await commandService.executeCommand('merge-conflict.ai.all-accept-stop', resource.uri);
67
+ setIsAIResolving(true);
68
+ if (isAIResolving) {
69
+ await commandService.executeCommand(ide_core_browser_1.MERGE_CONFLICT_COMMANDS.AI_ALL_ACCEPT_STOP.id, resource.uri);
49
70
  }
50
71
  else {
51
- await commandService.executeCommand('merge-conflict.ai.all-accept', resource.uri);
72
+ await commandService.executeCommand(ide_core_browser_1.MERGE_CONFLICT_COMMANDS.AI_ALL_ACCEPT.id, resource.uri);
52
73
  }
53
- setIsAiResolving(false);
54
- }, [resource, isAiResolving]);
74
+ setIsAIResolving(false);
75
+ }, [resource, isAIResolving]);
55
76
  const handleReset = (0, react_1.useCallback)(() => {
56
- commandService.executeCommand('merge-conflict.ai.all-reset', resource.uri);
77
+ commandService.executeCommand(ide_core_browser_1.MERGE_CONFLICT_COMMANDS.ALL_RESET.id, resource.uri);
57
78
  }, [resource]);
58
79
  if (!isVisiable) {
59
80
  return null;
60
81
  }
61
- return (react_1.default.createElement("div", { className: editor_module_less_1.default.merge_editor_float_container },
62
- react_1.default.createElement("div", { id: 'merge.editor.action.button.accept' },
63
- react_1.default.createElement(ide_components_1.Button, { className: editor_module_less_1.default.merge_conflict_bottom_btn, size: 'large', onClick: handlePrev },
64
- react_1.default.createElement(ide_components_1.Icon, { icon: 'left' }),
65
- react_1.default.createElement("span", null, (0, ide_core_browser_1.localize)('mergeEditor.conflict.prev'))),
66
- react_1.default.createElement(ide_components_1.Button, { className: editor_module_less_1.default.merge_conflict_bottom_btn, size: 'large', onClick: handleNext },
67
- react_1.default.createElement("span", null, (0, ide_core_browser_1.localize)('mergeEditor.conflict.next')),
68
- react_1.default.createElement(ide_components_1.Icon, { icon: 'right' }))),
69
- react_1.default.createElement("span", { className: editor_module_less_1.default.line_vertical }),
70
- react_1.default.createElement(ide_components_1.Button, { id: 'merge.editor.open.tradition', className: editor_module_less_1.default.merge_conflict_bottom_btn, size: 'large', onClick: handleOpenMergeEditor },
71
- react_1.default.createElement(ide_components_1.Icon, { icon: 'swap' }),
72
- react_1.default.createElement("span", null, (0, ide_core_browser_1.localize)('mergeEditor.open.3way'))),
73
- react_1.default.createElement(ide_components_1.Button, { id: 'merge.editor.rest', className: editor_module_less_1.default.merge_conflict_bottom_btn, size: 'large', onClick: handleReset },
74
- react_1.default.createElement(ide_components_1.Icon, { icon: 'discard' }),
75
- react_1.default.createElement("span", null, (0, ide_core_browser_1.localize)('mergeEditor.reset'))),
76
- isSupportAiResolve() && (react_1.default.createElement(ide_components_1.Button, { id: 'merge.editor.conflict.resolve.all', size: 'large', className: `${editor_module_less_1.default.merge_conflict_bottom_btn} ${editor_module_less_1.default.magic_btn}`, onClick: handleAIResolve }, isAiResolving ? (react_1.default.createElement(react_1.default.Fragment, null,
77
- react_1.default.createElement(ide_components_1.Icon, { icon: 'circle-pause' }),
78
- react_1.default.createElement("span", null, (0, ide_core_browser_1.localize)('mergeEditor.conflict.resolve.all.stop')))) : (react_1.default.createElement(react_1.default.Fragment, null,
79
- react_1.default.createElement(ide_components_1.Icon, { icon: 'magic-wand' }),
80
- react_1.default.createElement("span", null, (0, ide_core_browser_1.localize)('mergeEditor.conflict.resolve.all'))))))));
82
+ return (react_1.default.createElement("div", { className: merge_editor_module_less_1.default.merge_editor_float_container },
83
+ react_1.default.createElement("div", { className: merge_editor_module_less_1.default.merge_editor_float_container_info },
84
+ "\u5269\u4F59\u672A\u89E3\u51B3\u51B2\u7A81 ",
85
+ conflicts.length,
86
+ " \u5904"),
87
+ react_1.default.createElement("div", { className: merge_editor_module_less_1.default.merge_editor_float_container_operation_bar },
88
+ react_1.default.createElement("div", { id: 'merge.editor.action.button.nav' },
89
+ react_1.default.createElement(ide_components_1.Button, { className: merge_editor_module_less_1.default.merge_conflict_bottom_btn, size: 'default', onClick: handlePrev },
90
+ react_1.default.createElement(ide_components_1.Icon, { icon: 'left' }),
91
+ react_1.default.createElement("span", null, (0, ide_core_browser_1.localize)('mergeEditor.conflict.prev'))),
92
+ react_1.default.createElement(ide_components_1.Button, { className: merge_editor_module_less_1.default.merge_conflict_bottom_btn, size: 'default', onClick: handleNext },
93
+ react_1.default.createElement("span", null, (0, ide_core_browser_1.localize)('mergeEditor.conflict.next')),
94
+ react_1.default.createElement(ide_components_1.Icon, { icon: 'right' }))),
95
+ react_1.default.createElement("span", { className: merge_editor_module_less_1.default.line_vertical }),
96
+ inMergeChanges && (react_1.default.createElement(ide_components_1.Button, { id: 'merge.editor.open.tradition', className: merge_editor_module_less_1.default.merge_conflict_bottom_btn, size: 'default', onClick: handleOpenMergeEditor },
97
+ react_1.default.createElement(ide_components_1.Icon, { icon: 'swap' }),
98
+ react_1.default.createElement("span", null, (0, ide_core_browser_1.localize)('mergeEditor.open.3way')))),
99
+ react_1.default.createElement(ide_components_1.Button, { id: 'merge.editor.rest', className: merge_editor_module_less_1.default.merge_conflict_bottom_btn, size: 'default', onClick: handleReset },
100
+ react_1.default.createElement(ide_components_1.Icon, { icon: 'discard' }),
101
+ react_1.default.createElement("span", null, (0, ide_core_browser_1.localize)('mergeEditor.reset'))),
102
+ isSupportAIResolve() && (react_1.default.createElement(ide_components_1.Button, { id: 'merge.editor.conflict.resolve.all', size: 'default', className: `${merge_editor_module_less_1.default.merge_conflict_bottom_btn} ${merge_editor_module_less_1.default.magic_btn}`, onClick: handleAIResolve }, isAIResolving ? (react_1.default.createElement(react_1.default.Fragment, null,
103
+ react_1.default.createElement(ide_components_1.Icon, { icon: 'circle-pause' }),
104
+ react_1.default.createElement("span", null, (0, ide_core_browser_1.localize)('mergeEditor.conflict.ai.resolve.all.stop')))) : (react_1.default.createElement(react_1.default.Fragment, null,
105
+ react_1.default.createElement(ide_components_1.Icon, { icon: 'magic-wand' }),
106
+ react_1.default.createElement("span", null, (0, ide_core_browser_1.localize)('mergeEditor.conflict.ai.resolve.all')))))))));
81
107
  };
82
108
  exports.MergeEditorFloatComponents = MergeEditorFloatComponents;
83
109
  //# sourceMappingURL=MergeEditorFloatComponents.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MergeEditorFloatComponents.js","sourceRoot":"","sources":["../../../src/browser/merge-editor/MergeEditorFloatComponents.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MergeEditorFloatComponents.js","sourceRoot":"","sources":["../../../src/browser/merge-editor/MergeEditorFloatComponents.tsx"],"names":[],"mappings":"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"}