@opensumi/ide-editor 3.1.4-next-1719380894.0 → 3.1.4-next-1719541057.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 (48) hide show
  1. package/lib/browser/component.js.map +1 -1
  2. package/lib/browser/editor-collection.service.d.ts +0 -2
  3. package/lib/browser/editor-collection.service.d.ts.map +1 -1
  4. package/lib/browser/editor-collection.service.js +0 -4
  5. package/lib/browser/editor-collection.service.js.map +1 -1
  6. package/lib/browser/fs-resource/fs-editor-doc.d.ts.map +1 -1
  7. package/lib/browser/fs-resource/fs-editor-doc.js +0 -1
  8. package/lib/browser/fs-resource/fs-editor-doc.js.map +1 -1
  9. package/lib/browser/fs-resource/fs-resource.d.ts.map +1 -1
  10. package/lib/browser/fs-resource/fs-resource.js +1 -0
  11. package/lib/browser/fs-resource/fs-resource.js.map +1 -1
  12. package/lib/browser/merge-conflict/types.d.ts +17 -0
  13. package/lib/browser/merge-conflict/types.d.ts.map +1 -1
  14. package/lib/browser/merge-conflict/types.js +6 -1
  15. package/lib/browser/merge-conflict/types.js.map +1 -1
  16. package/lib/browser/merge-editor/MergeEditorFloatComponents.d.ts.map +1 -1
  17. package/lib/browser/merge-editor/MergeEditorFloatComponents.js +40 -7
  18. package/lib/browser/merge-editor/MergeEditorFloatComponents.js.map +1 -1
  19. package/lib/browser/tab.view.d.ts.map +1 -1
  20. package/lib/browser/tab.view.js +1 -1
  21. package/lib/browser/tab.view.js.map +1 -1
  22. package/lib/browser/types.d.ts +2 -2
  23. package/lib/browser/types.d.ts.map +1 -1
  24. package/lib/browser/types.js.map +1 -1
  25. package/lib/common/editor.d.ts +0 -1
  26. package/lib/common/editor.d.ts.map +1 -1
  27. package/lib/common/editor.js.map +1 -1
  28. package/package.json +14 -14
  29. package/src/browser/component.ts +1 -1
  30. package/src/browser/editor-collection.service.ts +0 -6
  31. package/src/browser/fs-resource/fs-editor-doc.ts +0 -4
  32. package/src/browser/fs-resource/fs-resource.ts +1 -0
  33. package/src/browser/merge-conflict/types.ts +21 -0
  34. package/src/browser/merge-editor/MergeEditorFloatComponents.tsx +45 -10
  35. package/src/browser/preference/schema.ts +1 -1
  36. package/src/browser/tab.view.tsx +0 -1
  37. package/src/browser/types.ts +6 -3
  38. package/src/common/editor.ts +0 -2
  39. package/lib/browser/merge-conflict/merge-conflict.model.d.ts +0 -7
  40. package/lib/browser/merge-conflict/merge-conflict.model.d.ts.map +0 -1
  41. package/lib/browser/merge-conflict/merge-conflict.model.js +0 -51
  42. package/lib/browser/merge-conflict/merge-conflict.model.js.map +0 -1
  43. package/lib/browser/merge-conflict/merge-conflict.service.d.ts +0 -14
  44. package/lib/browser/merge-conflict/merge-conflict.service.d.ts.map +0 -1
  45. package/lib/browser/merge-conflict/merge-conflict.service.js +0 -66
  46. package/lib/browser/merge-conflict/merge-conflict.service.js.map +0 -1
  47. package/src/browser/merge-conflict/merge-conflict.model.ts +0 -63
  48. package/src/browser/merge-conflict/merge-conflict.service.ts +0 -65
@@ -1,63 +0,0 @@
1
- import debounce from 'lodash/debounce';
2
- import { useEffect, useMemo, useState } from 'react';
3
-
4
- import { formatLocalize, useInjectable } from '@opensumi/ide-core-browser';
5
- import { DisposableStore, URI } from '@opensumi/ide-utils';
6
-
7
- import { useEditorDocumentModelRef } from '../hooks/useEditor';
8
-
9
- import { MergeConflictService } from './merge-conflict.service';
10
-
11
- export function useMergeConflictModel(uri: URI) {
12
- const editorModel = useEditorDocumentModelRef(uri);
13
-
14
- /**
15
- * 如果是原来就有冲突的文件,当冲突没了之后,仍然显示冲突
16
- */
17
- const [isInitialVisiable, setIsInitialVisiable] = useState(false);
18
- const [conflictsCount, setConflictsCount] = useState(0);
19
-
20
- const mergeConflictService = useInjectable<MergeConflictService>(MergeConflictService);
21
-
22
- const summary = useMemo(
23
- () => formatLocalize('merge-conflicts.merge.conflict.remain', conflictsCount),
24
- [conflictsCount],
25
- );
26
-
27
- useEffect(() => {
28
- const disposables = new DisposableStore();
29
-
30
- if (editorModel) {
31
- const { instance } = editorModel;
32
- const run = () => {
33
- const n = mergeConflictService.scanDocument(instance.getMonacoModel());
34
- setConflictsCount(n);
35
- if (n > 0) {
36
- setIsInitialVisiable(true);
37
- }
38
- };
39
-
40
- const debounceRun = debounce(run, 150);
41
-
42
- disposables.add(
43
- instance.getMonacoModel().onDidChangeContent(() => {
44
- debounceRun();
45
- }),
46
- );
47
-
48
- run();
49
- return () => {
50
- disposables.dispose();
51
- mergeConflictService.clear();
52
- setIsInitialVisiable(false);
53
- setConflictsCount(0);
54
- };
55
- }
56
- }, [editorModel]);
57
-
58
- return {
59
- isVisiable: isInitialVisiable,
60
- summary,
61
- canNavigate: conflictsCount > 0,
62
- };
63
- }
@@ -1,65 +0,0 @@
1
- import { Autowired, Injectable } from '@opensumi/di';
2
- import * as monaco from '@opensumi/ide-monaco';
3
- import { NavigationDirection, findRangeForNavigation } from '@opensumi/ide-monaco/lib/browser/contrib/merge-editor';
4
- import { IMessageService } from '@opensumi/ide-overlay';
5
-
6
- import { IEditor, WorkbenchEditorService } from '../types';
7
-
8
- import { DocumentMergeConflict, MergeConflictParser } from './conflict-parser';
9
-
10
- @Injectable()
11
- export class MergeConflictService {
12
- @Autowired(MergeConflictParser)
13
- parser: MergeConflictParser;
14
-
15
- @Autowired(WorkbenchEditorService)
16
- private readonly editorService: WorkbenchEditorService;
17
-
18
- @Autowired(IMessageService)
19
- private readonly messageService: IMessageService;
20
-
21
- conflicts = [] as DocumentMergeConflict[];
22
-
23
- scanDocument(model: monaco.editor.ITextModel) {
24
- this.conflicts = this.parser.scanDocument(model);
25
- return this.conflicts.length;
26
- }
27
-
28
- clear(): void {
29
- this.conflicts = [];
30
- }
31
-
32
- private async navigate(editor: IEditor, direction: NavigationDirection): Promise<void> {
33
- this.conflicts = this.parser.scanDocument(editor.monacoEditor.getModel()!);
34
- const ranges = this.conflicts.map((conflict) => conflict.range);
35
-
36
- const navigationResult = findRangeForNavigation(direction, ranges, editor.monacoEditor.getPosition()!);
37
-
38
- if (!navigationResult) {
39
- this.messageService.warning('No merge conflicts found in this file');
40
- return;
41
- } else if (!navigationResult.canNavigate) {
42
- this.messageService.warning('No other merge conflicts within this file');
43
- return;
44
- } else if (!navigationResult.range) {
45
- // impossible path
46
- return;
47
- }
48
-
49
- editor.monacoEditor.setPosition(navigationResult.range.getStartPosition());
50
-
51
- // when navigating, we want to show the codelens on the first line of the conflict
52
- const range = navigationResult.range.delta(-1);
53
-
54
- editor.monacoEditor.revealRangeNearTopIfOutsideViewport(range);
55
- editor.monacoEditor.focus();
56
- }
57
-
58
- navigateNext(): Promise<void> {
59
- return this.navigate(this.editorService.currentEditor!, NavigationDirection.Forwards);
60
- }
61
-
62
- navigatePrevious(): Promise<void> {
63
- return this.navigate(this.editorService.currentEditor!, NavigationDirection.Backwards);
64
- }
65
- }