@opensumi/ide-editor 2.27.3-next-1714461024.0 → 2.27.3-next-1714464252.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.
- package/lib/browser/doc-model/editor-document-model-service.d.ts +3 -1
- package/lib/browser/doc-model/editor-document-model-service.d.ts.map +1 -1
- package/lib/browser/doc-model/editor-document-model-service.js +6 -1
- package/lib/browser/doc-model/editor-document-model-service.js.map +1 -1
- package/lib/browser/doc-model/types.d.ts +1 -0
- package/lib/browser/doc-model/types.d.ts.map +1 -1
- package/lib/browser/doc-model/types.js.map +1 -1
- package/lib/browser/editor-collection.service.d.ts +6 -6
- package/lib/browser/editor-collection.service.d.ts.map +1 -1
- package/lib/browser/editor-collection.service.js.map +1 -1
- package/lib/browser/editor-electron.contribution.d.ts +2 -2
- package/lib/browser/editor-electron.contribution.d.ts.map +1 -1
- package/lib/browser/editor-electron.contribution.js +1 -1
- package/lib/browser/editor-electron.contribution.js.map +1 -1
- package/lib/browser/editor.decoration.service.d.ts.map +1 -1
- package/lib/browser/editor.decoration.service.js +6 -4
- package/lib/browser/editor.decoration.service.js.map +1 -1
- package/lib/browser/editor.module.less +0 -54
- package/lib/browser/hooks/useEditor.d.ts +4 -0
- package/lib/browser/hooks/useEditor.d.ts.map +1 -0
- package/lib/browser/hooks/useEditor.js +31 -0
- package/lib/browser/hooks/useEditor.js.map +1 -0
- package/lib/browser/hooks/useInMergeChanges.d.ts +3 -0
- package/lib/browser/hooks/useInMergeChanges.d.ts.map +1 -0
- package/lib/browser/hooks/useInMergeChanges.js +27 -0
- package/lib/browser/hooks/useInMergeChanges.js.map +1 -0
- package/lib/browser/merge-conflict/conflict-parser.d.ts +46 -0
- package/lib/browser/merge-conflict/conflict-parser.d.ts.map +1 -0
- package/lib/browser/merge-conflict/conflict-parser.js +209 -0
- package/lib/browser/merge-conflict/conflict-parser.js.map +1 -0
- package/lib/browser/merge-conflict/index.d.ts +3 -0
- package/lib/browser/merge-conflict/index.d.ts.map +1 -0
- package/lib/browser/merge-conflict/index.js +6 -0
- package/lib/browser/merge-conflict/index.js.map +1 -0
- package/lib/browser/merge-conflict/types.d.ts +60 -0
- package/lib/browser/merge-conflict/types.d.ts.map +1 -0
- package/lib/browser/merge-conflict/types.js +15 -0
- package/lib/browser/merge-conflict/types.js.map +1 -0
- package/lib/browser/merge-editor/MergeEditorFloatComponents.d.ts.map +1 -1
- package/lib/browser/merge-editor/MergeEditorFloatComponents.js +75 -49
- package/lib/browser/merge-editor/MergeEditorFloatComponents.js.map +1 -1
- package/lib/browser/merge-editor/merge-editor.module.less +71 -0
- package/lib/browser/merge-editor/merge-editor.provider.d.ts.map +1 -1
- package/lib/browser/merge-editor/merge-editor.provider.js +3 -0
- package/lib/browser/merge-editor/merge-editor.provider.js.map +1 -1
- package/lib/common/editor.d.ts +1 -1
- package/package.json +14 -14
- package/src/browser/doc-model/editor-document-model-service.ts +11 -1
- package/src/browser/doc-model/types.ts +4 -0
- package/src/browser/editor-collection.service.ts +7 -7
- package/src/browser/editor-electron.contribution.ts +1 -2
- package/src/browser/editor.decoration.service.ts +6 -4
- package/src/browser/editor.module.less +0 -54
- package/src/browser/hooks/useEditor.ts +34 -0
- package/src/browser/hooks/useInMergeChanges.ts +30 -0
- package/src/browser/merge-conflict/conflict-parser.ts +323 -0
- package/src/browser/merge-conflict/index.ts +2 -0
- package/src/browser/merge-conflict/types.ts +73 -0
- package/src/browser/merge-editor/MergeEditorFloatComponents.tsx +109 -74
- package/src/browser/merge-editor/merge-editor.module.less +71 -0
- package/src/browser/merge-editor/merge-editor.provider.ts +3 -0
- package/src/common/editor.ts +1 -1
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
.merge_editor_float_container {
|
|
2
|
+
display: flex;
|
|
3
|
+
flex-direction: column;
|
|
4
|
+
background: var(--kt-panelTab-activeBackground);
|
|
5
|
+
box-shadow: inset 1px 1px 3px 0px var(--kt-panelTab-border);
|
|
6
|
+
justify-content: space-between;
|
|
7
|
+
white-space: nowrap;
|
|
8
|
+
// minimap's z-index is 5
|
|
9
|
+
z-index: 6;
|
|
10
|
+
padding: 10px;
|
|
11
|
+
|
|
12
|
+
.merge_editor_float_container_info {
|
|
13
|
+
width: 100%;
|
|
14
|
+
display: flex;
|
|
15
|
+
padding-left: 20px;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.merge_editor_float_container_operation_bar {
|
|
19
|
+
width: 100%;
|
|
20
|
+
display: flex;
|
|
21
|
+
justify-content: flex-end;
|
|
22
|
+
white-space: nowrap;
|
|
23
|
+
padding-top: 4px;
|
|
24
|
+
padding-right: 20px;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.merge_conflict_bottom_btn {
|
|
28
|
+
border: 1px solid var(--kt-button-disableForeground);
|
|
29
|
+
border-radius: 8px;
|
|
30
|
+
padding: 5px 16px;
|
|
31
|
+
background: var(--editor-background);
|
|
32
|
+
color: var(--editor-foreground);
|
|
33
|
+
margin: 0 4px;
|
|
34
|
+
line-height: 22px;
|
|
35
|
+
justify-content: end;
|
|
36
|
+
white-space: nowrap;
|
|
37
|
+
cursor: pointer;
|
|
38
|
+
:global {
|
|
39
|
+
.kt-icon {
|
|
40
|
+
font-size: 12px;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
:first-child {
|
|
44
|
+
margin-right: 8px;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.magic_btn {
|
|
49
|
+
background-image: radial-gradient(circle at -21% -22%, #19cfff, #8429ff);
|
|
50
|
+
border: none;
|
|
51
|
+
font-weight: 500;
|
|
52
|
+
span {
|
|
53
|
+
color: #fff;
|
|
54
|
+
}
|
|
55
|
+
:global {
|
|
56
|
+
.kt-icon {
|
|
57
|
+
color: #fff;
|
|
58
|
+
font-size: 12px;
|
|
59
|
+
margin-right: 8px;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.line_vertical {
|
|
65
|
+
background-color: var(--design-borderColor-common);
|
|
66
|
+
width: 1px;
|
|
67
|
+
min-width: 1px;
|
|
68
|
+
height: 24px;
|
|
69
|
+
margin: 4px;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge-editor.provider.d.ts","sourceRoot":"","sources":["../../../src/browser/merge-editor/merge-editor.provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,YAAY,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG3F,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC5D,qBACa,2BAA4B,SAAQ,YAAa,YAAW,iBAAiB;IACxF,MAAM,SAAiB;IAGvB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAG5C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IAEjD,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"merge-editor.provider.d.ts","sourceRoot":"","sources":["../../../src/browser/merge-editor/merge-editor.provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,YAAY,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG3F,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC5D,qBACa,2BAA4B,SAAQ,YAAa,YAAW,iBAAiB;IACxF,MAAM,SAAiB;IAGvB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAG5C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IAEjD,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IA2BvD,mBAAmB,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,eAAe,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC;CAajH"}
|
|
@@ -18,6 +18,9 @@ let MergeEditorResourceProvider = class MergeEditorResourceProvider extends ide_
|
|
|
18
18
|
const resultEditorUri = new ide_core_browser_1.URI(output);
|
|
19
19
|
const icon = this.labelService.getIcon(resultEditorUri);
|
|
20
20
|
return {
|
|
21
|
+
// 如果设置为 true,再打开时没有找到对应的 provider 会报错
|
|
22
|
+
// TODO: 需要增加一个标记,说明这个资源要在某个插件加载后才能 revive
|
|
23
|
+
supportsRevive: false,
|
|
21
24
|
name,
|
|
22
25
|
icon,
|
|
23
26
|
uri,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge-editor.provider.js","sourceRoot":"","sources":["../../../src/browser/merge-editor/merge-editor.provider.ts"],"names":[],"mappings":";;;;AAAA,qCAAqD;AACrD,iEAA2F;AAC3F,qHAAgH;AAIzG,IAAM,2BAA2B,GAAjC,MAAM,2BAA4B,SAAQ,+BAAY;IAAtD;;QACL,WAAM,GAAG,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"merge-editor.provider.js","sourceRoot":"","sources":["../../../src/browser/merge-editor/merge-editor.provider.ts"],"names":[],"mappings":";;;;AAAA,qCAAqD;AACrD,iEAA2F;AAC3F,qHAAgH;AAIzG,IAAM,2BAA2B,GAAjC,MAAM,2BAA4B,SAAQ,+BAAY;IAAtD;;QACL,WAAM,GAAG,aAAa,CAAC;IAgDzB,CAAC;IAxCQ,eAAe,CAAC,GAAQ;QAC7B,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,cAAc,EAAE,CAAC;QAEpD,IAAI;YACF,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAC/C,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC;YAC3D,MAAM,eAAe,GAAG,IAAI,sBAAG,CAAC,MAAM,CAAC,CAAC;YACxC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;YACxD,OAAO;gBACL,sCAAsC;gBACtC,0CAA0C;gBAC1C,cAAc,EAAE,KAAK;gBACrB,IAAI;gBACJ,IAAI;gBACJ,GAAG;gBACH,QAAQ,EAAE;oBACR,QAAQ;oBACR,MAAM;oBACN,MAAM;oBACN,MAAM;iBACP;aACF,CAAC;SACH;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,KAAK,CAAC,qCAAqC,CAAC,CAAC;SACpD;IACH,CAAC;IAEM,mBAAmB,CAAC,QAAwB,EAAE,eAAmC;QACtF,MAAM,EAAE,YAAY,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QAEvD,IAAI;YACF,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAC/C,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC;YACjC,MAAM,SAAS,GAAG,IAAI,sBAAG,CAAC,MAAM,CAAC,CAAC;YAClC,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YACpD,OAAO,IAAI,CAAC;SACb;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,KAAK,CAAC,qCAAqC,CAAC,CAAC;SACpD;IACH,CAAC;CACF,CAAA;AA9CC;IAAC,IAAA,cAAS,EAAC,+BAAY,CAAC;sCACO,+BAAY;iEAAC;AAE5C;IAAC,IAAA,cAAS,EAAC,yCAAkB,CAAC;sCACO,yCAAkB;uEAAC;AAP7C,2BAA2B;IADvC,IAAA,eAAU,GAAE;GACA,2BAA2B,CAiDvC;AAjDY,kEAA2B"}
|
package/lib/common/editor.d.ts
CHANGED
|
@@ -103,7 +103,7 @@ export declare enum EditorType {
|
|
|
103
103
|
MERGE_EDITOR_DIFF = "MERGE_EDITOR_DIFF"
|
|
104
104
|
}
|
|
105
105
|
/**
|
|
106
|
-
* 一个IEditor代表了一个最小的编辑器单元,可以是CodeEditor中的一个,也可以是DiffEditor中的两个
|
|
106
|
+
* 一个IEditor代表了一个最小的编辑器单元,可以是 CodeEditor 中的一个,也可以是 DiffEditor 中的两个
|
|
107
107
|
*/
|
|
108
108
|
export interface IEditor {
|
|
109
109
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opensumi/ide-editor",
|
|
3
|
-
"version": "2.27.3-next-
|
|
3
|
+
"version": "2.27.3-next-1714464252.0",
|
|
4
4
|
"files": [
|
|
5
5
|
"lib",
|
|
6
6
|
"src"
|
|
@@ -17,21 +17,21 @@
|
|
|
17
17
|
"url": "git@github.com:opensumi/core.git"
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@opensumi/ide-core-common": "2.27.3-next-
|
|
21
|
-
"@opensumi/ide-core-node": "2.27.3-next-
|
|
22
|
-
"@opensumi/ide-file-service": "2.27.3-next-
|
|
23
|
-
"@opensumi/ide-monaco": "2.27.3-next-
|
|
24
|
-
"@opensumi/ide-utils": "2.27.3-next-
|
|
20
|
+
"@opensumi/ide-core-common": "2.27.3-next-1714464252.0",
|
|
21
|
+
"@opensumi/ide-core-node": "2.27.3-next-1714464252.0",
|
|
22
|
+
"@opensumi/ide-file-service": "2.27.3-next-1714464252.0",
|
|
23
|
+
"@opensumi/ide-monaco": "2.27.3-next-1714464252.0",
|
|
24
|
+
"@opensumi/ide-utils": "2.27.3-next-1714464252.0",
|
|
25
25
|
"vscode-oniguruma": "1.5.1"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
|
-
"@opensumi/ide-components": "2.27.3-next-
|
|
29
|
-
"@opensumi/ide-core-browser": "2.27.3-next-
|
|
30
|
-
"@opensumi/ide-dev-tool": "2.27.3-next-
|
|
31
|
-
"@opensumi/ide-overlay": "2.27.3-next-
|
|
32
|
-
"@opensumi/ide-quick-open": "2.27.3-next-
|
|
33
|
-
"@opensumi/ide-theme": "2.27.3-next-
|
|
34
|
-
"@opensumi/ide-workspace": "2.27.3-next-
|
|
28
|
+
"@opensumi/ide-components": "2.27.3-next-1714464252.0",
|
|
29
|
+
"@opensumi/ide-core-browser": "2.27.3-next-1714464252.0",
|
|
30
|
+
"@opensumi/ide-dev-tool": "2.27.3-next-1714464252.0",
|
|
31
|
+
"@opensumi/ide-overlay": "2.27.3-next-1714464252.0",
|
|
32
|
+
"@opensumi/ide-quick-open": "2.27.3-next-1714464252.0",
|
|
33
|
+
"@opensumi/ide-theme": "2.27.3-next-1714464252.0",
|
|
34
|
+
"@opensumi/ide-workspace": "2.27.3-next-1714464252.0"
|
|
35
35
|
},
|
|
36
|
-
"gitHead": "
|
|
36
|
+
"gitHead": "fec3bd7dd5bb0d4005a3f3aa582d8954accc16dc"
|
|
37
37
|
}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { Autowired, INJECTOR_TOKEN, Injectable, Injector } from '@opensumi/di';
|
|
2
2
|
import {
|
|
3
|
+
Dispatcher,
|
|
4
|
+
IDisposable,
|
|
3
5
|
IEditorDocumentChange,
|
|
4
6
|
IEditorDocumentModelSaveResult,
|
|
5
7
|
ILogger,
|
|
@@ -27,6 +29,7 @@ import {
|
|
|
27
29
|
EditorDocumentModelCreationEvent,
|
|
28
30
|
EditorDocumentModelOptionExternalUpdatedEvent,
|
|
29
31
|
IEditorDocumentModelContentRegistry,
|
|
32
|
+
IEditorDocumentModelCreationEventPayload,
|
|
30
33
|
IEditorDocumentModelService,
|
|
31
34
|
IPreferredModelOptions,
|
|
32
35
|
} from './types';
|
|
@@ -67,7 +70,9 @@ export class EditorDocumentModelServiceImpl extends WithEventBus implements IEdi
|
|
|
67
70
|
|
|
68
71
|
private preferredModelOptions = new Map<string, IPreferredModelOptions>();
|
|
69
72
|
|
|
70
|
-
private _ready = new ReadyEvent<void>();
|
|
73
|
+
private _ready = this.registerDispose(new ReadyEvent<void>());
|
|
74
|
+
|
|
75
|
+
private modelCreationEventDispatcher = this.registerDispose(new Dispatcher<void>());
|
|
71
76
|
|
|
72
77
|
constructor() {
|
|
73
78
|
super();
|
|
@@ -83,6 +88,7 @@ export class EditorDocumentModelServiceImpl extends WithEventBus implements IEdi
|
|
|
83
88
|
this._delete(key);
|
|
84
89
|
});
|
|
85
90
|
this._modelReferenceManager.onInstanceCreated((model) => {
|
|
91
|
+
this.modelCreationEventDispatcher.dispatch(model.uri.toString());
|
|
86
92
|
this.eventBus.fire(
|
|
87
93
|
new EditorDocumentModelCreationEvent({
|
|
88
94
|
uri: model.uri,
|
|
@@ -106,6 +112,10 @@ export class EditorDocumentModelServiceImpl extends WithEventBus implements IEdi
|
|
|
106
112
|
);
|
|
107
113
|
}
|
|
108
114
|
|
|
115
|
+
onDocumentModelCreated(uri: string, listener: () => void): IDisposable {
|
|
116
|
+
return this.modelCreationEventDispatcher.on(uri)(listener);
|
|
117
|
+
}
|
|
118
|
+
|
|
109
119
|
private _delete(uri: string | URI): void {
|
|
110
120
|
const modelDisposeDebounceTime = this.preferenceService.get<number>('editor.modelDisposeTime', 3000);
|
|
111
121
|
// debounce
|
|
@@ -14,6 +14,8 @@ import { EOL, EndOfLineSequence } from '@opensumi/ide-monaco/lib/browser/monaco-
|
|
|
14
14
|
import { IEditorDocumentModelContentChange, SaveReason } from '../../common';
|
|
15
15
|
import { IEditorDocumentModel, IEditorDocumentModelRef } from '../../common/editor';
|
|
16
16
|
|
|
17
|
+
import { EditorDocumentModel } from './editor-document-model';
|
|
18
|
+
|
|
17
19
|
export interface IDocModelUpdateOptions extends monaco.editor.ITextModelUpdateOptions {
|
|
18
20
|
detectIndentation?: boolean;
|
|
19
21
|
}
|
|
@@ -119,6 +121,8 @@ export interface IPreferredModelOptions {
|
|
|
119
121
|
}
|
|
120
122
|
|
|
121
123
|
export interface IEditorDocumentModelService {
|
|
124
|
+
onDocumentModelCreated(uri: string, listener: () => void): IDisposable;
|
|
125
|
+
|
|
122
126
|
hasLanguage(languageId: string): boolean;
|
|
123
127
|
|
|
124
128
|
createModelReference(uri: URI, reason?: string): Promise<IEditorDocumentModelRef>;
|
|
@@ -62,7 +62,7 @@ export class EditorCollectionServiceImpl extends WithEventBus implements EditorC
|
|
|
62
62
|
@Autowired(IEditorFeatureRegistry)
|
|
63
63
|
protected readonly editorFeatureRegistry: EditorFeatureRegistryImpl;
|
|
64
64
|
|
|
65
|
-
private _editors: Set<
|
|
65
|
+
private _editors: Set<ISumiEditor> = new Set();
|
|
66
66
|
private _diffEditors: Set<IDiffEditor> = new Set();
|
|
67
67
|
|
|
68
68
|
private _onCodeEditorCreate = new Emitter<ICodeEditor>();
|
|
@@ -100,11 +100,11 @@ export class EditorCollectionServiceImpl extends WithEventBus implements EditorC
|
|
|
100
100
|
return editor;
|
|
101
101
|
}
|
|
102
102
|
|
|
103
|
-
public listEditors():
|
|
103
|
+
public listEditors(): ISumiEditor[] {
|
|
104
104
|
return Array.from(this._editors.values());
|
|
105
105
|
}
|
|
106
106
|
|
|
107
|
-
public addEditors(editors:
|
|
107
|
+
public addEditors(editors: ISumiEditor[]) {
|
|
108
108
|
const beforeSize = this._editors.size;
|
|
109
109
|
editors.forEach((editor) => {
|
|
110
110
|
if (!this._editors.has(editor)) {
|
|
@@ -123,7 +123,7 @@ export class EditorCollectionServiceImpl extends WithEventBus implements EditorC
|
|
|
123
123
|
}
|
|
124
124
|
}
|
|
125
125
|
|
|
126
|
-
public removeEditors(editors:
|
|
126
|
+
public removeEditors(editors: ISumiEditor[]) {
|
|
127
127
|
const beforeSize = this._editors.size;
|
|
128
128
|
editors.forEach((editor) => {
|
|
129
129
|
this._editors.delete(editor);
|
|
@@ -199,7 +199,7 @@ export class EditorCollectionServiceImpl extends WithEventBus implements EditorC
|
|
|
199
199
|
}
|
|
200
200
|
}
|
|
201
201
|
|
|
202
|
-
export type
|
|
202
|
+
export type ISumiEditor = IEditor;
|
|
203
203
|
|
|
204
204
|
export function insertSnippetWithMonacoEditor(
|
|
205
205
|
editor: IMonacoCodeEditor,
|
|
@@ -578,9 +578,9 @@ export class BrowserDiffEditor extends WithEventBus implements IDiffEditor {
|
|
|
578
578
|
return null;
|
|
579
579
|
}
|
|
580
580
|
|
|
581
|
-
public originalEditor:
|
|
581
|
+
public originalEditor: ISumiEditor;
|
|
582
582
|
|
|
583
|
-
public modifiedEditor:
|
|
583
|
+
public modifiedEditor: ISumiEditor;
|
|
584
584
|
|
|
585
585
|
public _disposed: boolean;
|
|
586
586
|
|
|
@@ -3,7 +3,6 @@ import {
|
|
|
3
3
|
ClientAppContribution,
|
|
4
4
|
Domain,
|
|
5
5
|
EDITOR_COMMANDS,
|
|
6
|
-
IClientApp,
|
|
7
6
|
KeybindingContribution,
|
|
8
7
|
KeybindingRegistry,
|
|
9
8
|
electronEnv,
|
|
@@ -44,7 +43,7 @@ export class EditorElectronContribution extends WithEventBus implements ClientAp
|
|
|
44
43
|
/**
|
|
45
44
|
* Return true in order to prevent exit
|
|
46
45
|
*/
|
|
47
|
-
async onWillStop(
|
|
46
|
+
async onWillStop() {
|
|
48
47
|
if (await this.workbenchEditorService.closeAllOnlyConfirmOnce()) {
|
|
49
48
|
return true;
|
|
50
49
|
}
|
|
@@ -127,14 +127,16 @@ export class EditorDecorationCollectionService implements IEditorDecorationColle
|
|
|
127
127
|
disposer.add(this.cssManager.addClass(className, styles));
|
|
128
128
|
disposer.add(this.cssManager.addClass(inlineClassName, inlineStyles));
|
|
129
129
|
if (options.after) {
|
|
130
|
+
const afterClassName = `${key}-after`;
|
|
130
131
|
const styles = this.resolveContentCSSStyle(options.after);
|
|
131
|
-
disposer.add(this.cssManager.addClass(
|
|
132
|
-
afterContentClassName = `${inlineBlockSelector} ${
|
|
132
|
+
disposer.add(this.cssManager.addClass(afterClassName + '::after', styles));
|
|
133
|
+
afterContentClassName = `${inlineBlockSelector} ${afterClassName}`;
|
|
133
134
|
}
|
|
134
135
|
if (options.before) {
|
|
136
|
+
const beforeClassName = `${key}-before`;
|
|
135
137
|
const styles = this.resolveContentCSSStyle(options.before);
|
|
136
|
-
disposer.add(this.cssManager.addClass(
|
|
137
|
-
beforeContentClassName = `${inlineBlockSelector} ${
|
|
138
|
+
disposer.add(this.cssManager.addClass(beforeClassName + '::before', styles));
|
|
139
|
+
beforeContentClassName = `${inlineBlockSelector} ${beforeClassName}`;
|
|
138
140
|
}
|
|
139
141
|
if (options.gutterIconPath) {
|
|
140
142
|
const glyphMarginStyle = this.resolveCSSStyle({
|
|
@@ -568,57 +568,3 @@
|
|
|
568
568
|
}
|
|
569
569
|
|
|
570
570
|
// -------------- styles for editor empty component ends --------------
|
|
571
|
-
|
|
572
|
-
// -------------- styles for merge editor component starts --------------
|
|
573
|
-
.merge_editor_float_container {
|
|
574
|
-
display: flex;
|
|
575
|
-
background: var(--kt-panelTab-activeBackground);
|
|
576
|
-
box-shadow: inset 1px 1px 3px 0px var(--kt-panelTab-border);
|
|
577
|
-
padding: 16px 28px;
|
|
578
|
-
justify-content: end;
|
|
579
|
-
white-space: nowrap;
|
|
580
|
-
.merge_conflict_bottom_btn {
|
|
581
|
-
border: 1px solid var(--kt-button-disableForeground);
|
|
582
|
-
border-radius: 8px;
|
|
583
|
-
padding: 5px 16px;
|
|
584
|
-
background: var(--editor-background);
|
|
585
|
-
margin: 0 4px;
|
|
586
|
-
line-height: 22px;
|
|
587
|
-
justify-content: end;
|
|
588
|
-
white-space: nowrap;
|
|
589
|
-
cursor: pointer;
|
|
590
|
-
:global {
|
|
591
|
-
.kt-icon {
|
|
592
|
-
font-size: 12px;
|
|
593
|
-
}
|
|
594
|
-
}
|
|
595
|
-
:first-child {
|
|
596
|
-
margin-right: 8px;
|
|
597
|
-
}
|
|
598
|
-
}
|
|
599
|
-
|
|
600
|
-
.magic_btn {
|
|
601
|
-
background-image: radial-gradient(circle at -21% -22%, #19cfff, #8429ff);
|
|
602
|
-
border: none;
|
|
603
|
-
font-weight: 500;
|
|
604
|
-
span {
|
|
605
|
-
color: #fff;
|
|
606
|
-
}
|
|
607
|
-
:global {
|
|
608
|
-
.kt-icon {
|
|
609
|
-
color: #fff;
|
|
610
|
-
font-size: 12px;
|
|
611
|
-
margin-right: 8px;
|
|
612
|
-
}
|
|
613
|
-
}
|
|
614
|
-
}
|
|
615
|
-
|
|
616
|
-
.line_vertical {
|
|
617
|
-
background-color: var(--design-borderColor-common);
|
|
618
|
-
width: 1px;
|
|
619
|
-
min-width: 1px;
|
|
620
|
-
height: 24px;
|
|
621
|
-
margin: 4px;
|
|
622
|
-
}
|
|
623
|
-
}
|
|
624
|
-
// -------------- styles for merge editor component ends --------------
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { useEffect, useState } from 'react';
|
|
2
|
+
|
|
3
|
+
import { URI, useInjectable } from '@opensumi/ide-core-browser';
|
|
4
|
+
|
|
5
|
+
import { IEditorDocumentModelService } from '../doc-model/types';
|
|
6
|
+
import { IEditorDocumentModelRef } from '../types';
|
|
7
|
+
|
|
8
|
+
export function useEditorDocumentModelRef(uri: URI) {
|
|
9
|
+
const documentService: IEditorDocumentModelService = useInjectable(IEditorDocumentModelService);
|
|
10
|
+
const [ref, setRef] = useState<IEditorDocumentModelRef | null>(null);
|
|
11
|
+
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
const run = () => {
|
|
14
|
+
const ref = documentService.getModelReference(uri);
|
|
15
|
+
if (ref) {
|
|
16
|
+
setRef(ref);
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
const toDispose = documentService.onDocumentModelCreated(uri.toString(), () => {
|
|
21
|
+
run();
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
run();
|
|
25
|
+
return () => {
|
|
26
|
+
toDispose.dispose();
|
|
27
|
+
if (ref) {
|
|
28
|
+
ref.dispose();
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
}, [uri]);
|
|
32
|
+
|
|
33
|
+
return ref;
|
|
34
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { useEffect, useState } from 'react';
|
|
2
|
+
|
|
3
|
+
import { IContextKeyService, useInjectable } from '@opensumi/ide-core-browser';
|
|
4
|
+
|
|
5
|
+
const contextKey = 'git.mergeChangesObj';
|
|
6
|
+
|
|
7
|
+
export const gitMergeChangesSet = new Set([contextKey]);
|
|
8
|
+
|
|
9
|
+
export function useInMergeChanges(uriStr: string) {
|
|
10
|
+
const contextKeyService = useInjectable<IContextKeyService>(IContextKeyService);
|
|
11
|
+
|
|
12
|
+
const [inMergeChanges, setInMergeChanges] = useState(false);
|
|
13
|
+
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
function run() {
|
|
16
|
+
const mergeChanges = contextKeyService.getValue<Record<string, boolean>>(contextKey) || {};
|
|
17
|
+
setInMergeChanges(mergeChanges[uriStr] || false);
|
|
18
|
+
}
|
|
19
|
+
run();
|
|
20
|
+
|
|
21
|
+
const disposed = contextKeyService.onDidChangeContext(({ payload }) => {
|
|
22
|
+
if (payload.affectsSome(gitMergeChangesSet)) {
|
|
23
|
+
run();
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
return () => disposed.dispose();
|
|
27
|
+
}, [uriStr]);
|
|
28
|
+
|
|
29
|
+
return inMergeChanges;
|
|
30
|
+
}
|