@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,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;IAwBvD,mBAAmB,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,eAAe,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC;CAajH"}
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;IA6CzB,CAAC;IArCQ,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,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;AA3CC;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,CA8CvC;AA9CY,kEAA2B"}
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"}
@@ -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-1714461024.0",
3
+ "version": "2.27.3-next-1714463163.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-1714461024.0",
21
- "@opensumi/ide-core-node": "2.27.3-next-1714461024.0",
22
- "@opensumi/ide-file-service": "2.27.3-next-1714461024.0",
23
- "@opensumi/ide-monaco": "2.27.3-next-1714461024.0",
24
- "@opensumi/ide-utils": "2.27.3-next-1714461024.0",
20
+ "@opensumi/ide-core-common": "2.27.3-next-1714463163.0",
21
+ "@opensumi/ide-core-node": "2.27.3-next-1714463163.0",
22
+ "@opensumi/ide-file-service": "2.27.3-next-1714463163.0",
23
+ "@opensumi/ide-monaco": "2.27.3-next-1714463163.0",
24
+ "@opensumi/ide-utils": "2.27.3-next-1714463163.0",
25
25
  "vscode-oniguruma": "1.5.1"
26
26
  },
27
27
  "devDependencies": {
28
- "@opensumi/ide-components": "2.27.3-next-1714461024.0",
29
- "@opensumi/ide-core-browser": "2.27.3-next-1714461024.0",
30
- "@opensumi/ide-dev-tool": "2.27.3-next-1714461024.0",
31
- "@opensumi/ide-overlay": "2.27.3-next-1714461024.0",
32
- "@opensumi/ide-quick-open": "2.27.3-next-1714461024.0",
33
- "@opensumi/ide-theme": "2.27.3-next-1714461024.0",
34
- "@opensumi/ide-workspace": "2.27.3-next-1714461024.0"
28
+ "@opensumi/ide-components": "2.27.3-next-1714463163.0",
29
+ "@opensumi/ide-core-browser": "2.27.3-next-1714463163.0",
30
+ "@opensumi/ide-dev-tool": "2.27.3-next-1714463163.0",
31
+ "@opensumi/ide-overlay": "2.27.3-next-1714463163.0",
32
+ "@opensumi/ide-quick-open": "2.27.3-next-1714463163.0",
33
+ "@opensumi/ide-theme": "2.27.3-next-1714463163.0",
34
+ "@opensumi/ide-workspace": "2.27.3-next-1714463163.0"
35
35
  },
36
- "gitHead": "c01da0a090dfb170ba5a97f0e046d5ebf3fc06a7"
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<IMonacoImplEditor> = new 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(): IMonacoImplEditor[] {
103
+ public listEditors(): ISumiEditor[] {
104
104
  return Array.from(this._editors.values());
105
105
  }
106
106
 
107
- public addEditors(editors: IMonacoImplEditor[]) {
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: IMonacoImplEditor[]) {
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 IMonacoImplEditor = IEditor;
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: IMonacoImplEditor;
581
+ public originalEditor: ISumiEditor;
582
582
 
583
- public modifiedEditor: IMonacoImplEditor;
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(app: IClientApp) {
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(key + '::after', styles));
132
- afterContentClassName = `${inlineBlockSelector} ${key}`;
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(key + '::before', styles));
137
- beforeContentClassName = `${inlineBlockSelector} ${key}`;
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
+ }