@opensumi/ide-opened-editor 2.12.1-next-079c1930

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 (43) hide show
  1. package/lib/browser/index.d.ts +6 -0
  2. package/lib/browser/index.d.ts.map +1 -0
  3. package/lib/browser/index.js +35 -0
  4. package/lib/browser/index.js.map +1 -0
  5. package/lib/browser/index.module.less +24 -0
  6. package/lib/browser/opened-editor-node.d.ts +21 -0
  7. package/lib/browser/opened-editor-node.d.ts.map +1 -0
  8. package/lib/browser/opened-editor-node.define.d.ts +30 -0
  9. package/lib/browser/opened-editor-node.define.d.ts.map +1 -0
  10. package/lib/browser/opened-editor-node.define.js +71 -0
  11. package/lib/browser/opened-editor-node.define.js.map +1 -0
  12. package/lib/browser/opened-editor-node.js +128 -0
  13. package/lib/browser/opened-editor-node.js.map +1 -0
  14. package/lib/browser/opened-editor-node.module.less +218 -0
  15. package/lib/browser/opened-editor.contribution.d.ts +16 -0
  16. package/lib/browser/opened-editor.contribution.d.ts.map +1 -0
  17. package/lib/browser/opened-editor.contribution.js +168 -0
  18. package/lib/browser/opened-editor.contribution.js.map +1 -0
  19. package/lib/browser/opened-editor.d.ts +6 -0
  20. package/lib/browser/opened-editor.d.ts.map +1 -0
  21. package/lib/browser/opened-editor.js +86 -0
  22. package/lib/browser/opened-editor.js.map +1 -0
  23. package/lib/browser/services/opened-editor-decoration.service.d.ts +13 -0
  24. package/lib/browser/services/opened-editor-decoration.service.d.ts.map +1 -0
  25. package/lib/browser/services/opened-editor-decoration.service.js +59 -0
  26. package/lib/browser/services/opened-editor-decoration.service.js.map +1 -0
  27. package/lib/browser/services/opened-editor-event.service.d.ts +23 -0
  28. package/lib/browser/services/opened-editor-event.service.d.ts.map +1 -0
  29. package/lib/browser/services/opened-editor-event.service.js +71 -0
  30. package/lib/browser/services/opened-editor-event.service.js.map +1 -0
  31. package/lib/browser/services/opened-editor-model.d.ts +15 -0
  32. package/lib/browser/services/opened-editor-model.d.ts.map +1 -0
  33. package/lib/browser/services/opened-editor-model.js +51 -0
  34. package/lib/browser/services/opened-editor-model.js.map +1 -0
  35. package/lib/browser/services/opened-editor-model.service.d.ts +81 -0
  36. package/lib/browser/services/opened-editor-model.service.d.ts.map +1 -0
  37. package/lib/browser/services/opened-editor-model.service.js +464 -0
  38. package/lib/browser/services/opened-editor-model.service.js.map +1 -0
  39. package/lib/browser/services/opened-editor-tree.service.d.ts +28 -0
  40. package/lib/browser/services/opened-editor-tree.service.d.ts.map +1 -0
  41. package/lib/browser/services/opened-editor-tree.service.js +176 -0
  42. package/lib/browser/services/opened-editor-tree.service.js.map +1 -0
  43. package/package.json +34 -0
@@ -0,0 +1,168 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OpenedEditorContribution = exports.ExplorerOpenedEditorViewId = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const ide_core_browser_1 = require("@opensumi/ide-core-browser");
6
+ const ide_main_layout_1 = require("@opensumi/ide-main-layout");
7
+ const di_1 = require("@opensumi/di");
8
+ const explorer_contribution_1 = require("@opensumi/ide-explorer/lib/browser/explorer-contribution");
9
+ const layout_1 = require("@opensumi/ide-core-browser/lib/layout");
10
+ const ide_editor_1 = require("@opensumi/ide-editor");
11
+ const ide_core_browser_2 = require("@opensumi/ide-core-browser");
12
+ const next_1 = require("@opensumi/ide-core-browser/lib/menu/next");
13
+ const opened_editor_1 = require("./opened-editor");
14
+ const opened_editor_model_service_1 = require("./services/opened-editor-model.service");
15
+ const opened_editor_node_define_1 = require("./opened-editor-node.define");
16
+ exports.ExplorerOpenedEditorViewId = 'file-opened-editor';
17
+ let OpenedEditorContribution = class OpenedEditorContribution {
18
+ async onStart() {
19
+ this.mainLayoutService.collectViewComponent({
20
+ id: exports.ExplorerOpenedEditorViewId,
21
+ name: (0, ide_core_browser_1.localize)('opened.editors.title'),
22
+ weight: 1,
23
+ priority: 10,
24
+ collapsed: true,
25
+ component: opened_editor_1.ExplorerOpenEditorPanel,
26
+ }, explorer_contribution_1.ExplorerContainerId);
27
+ }
28
+ registerCommands(commands) {
29
+ commands.registerCommand(ide_core_browser_1.OPEN_EDITORS_COMMANDS.SAVE_ALL, {
30
+ execute: () => {
31
+ this.workbenchEditorService.saveAll();
32
+ },
33
+ });
34
+ commands.registerCommand(ide_core_browser_1.OPEN_EDITORS_COMMANDS.CLOSE_ALL, {
35
+ execute: () => {
36
+ this.workbenchEditorService.closeAll();
37
+ },
38
+ });
39
+ commands.registerCommand(ide_core_browser_1.OPEN_EDITORS_COMMANDS.CLOSE_BY_GROUP, {
40
+ execute: (node) => {
41
+ this.openedEditorModelService.closeAllByGroup(node);
42
+ },
43
+ });
44
+ commands.registerCommand(ide_core_browser_1.OPEN_EDITORS_COMMANDS.SAVE_BY_GROUP, {
45
+ execute: (node) => {
46
+ this.openedEditorModelService.saveAllByGroup(node);
47
+ },
48
+ });
49
+ commands.registerCommand(ide_core_browser_1.OPEN_EDITORS_COMMANDS.CLOSE, {
50
+ execute: async (node) => {
51
+ let group;
52
+ if (node.parent && opened_editor_node_define_1.EditorFileGroup.is(node.parent)) {
53
+ group = node.parent.group;
54
+ }
55
+ await this.commandService.executeCommand(ide_core_browser_1.EDITOR_COMMANDS.CLOSE.id, { group, uri: node.uri });
56
+ // 提前移除节点
57
+ node.parent.unlinkItem(node);
58
+ },
59
+ });
60
+ commands.registerCommand(ide_core_browser_1.OPEN_EDITORS_COMMANDS.OPEN, {
61
+ execute: (node) => {
62
+ let groupIndex = 0;
63
+ if (node.parent && opened_editor_node_define_1.EditorFileGroup.is(node.parent)) {
64
+ groupIndex = node.parent.group.index;
65
+ }
66
+ this.commandService.executeCommand(ide_core_browser_1.EDITOR_COMMANDS.OPEN_RESOURCE.id, node.uri, { groupIndex });
67
+ },
68
+ });
69
+ commands.registerCommand(ide_core_browser_1.OPEN_EDITORS_COMMANDS.OPEN_TO_THE_SIDE, {
70
+ execute: (node) => {
71
+ let groupIndex = 0;
72
+ if (node.parent && opened_editor_node_define_1.EditorFileGroup.is(node.parent)) {
73
+ groupIndex = node.parent.group.index;
74
+ }
75
+ this.commandService.executeCommand(ide_core_browser_1.EDITOR_COMMANDS.OPEN_RESOURCE.id, node.uri, { groupIndex, split: 4 /** right */ });
76
+ },
77
+ });
78
+ commands.registerCommand(ide_core_browser_1.OPEN_EDITORS_COMMANDS.COMPARE_SELECTED, {
79
+ execute: (node) => {
80
+ this.commandService.executeCommand(ide_core_browser_1.FILE_COMMANDS.COMPARE_SELECTED.id, node.uri, [node.uri]);
81
+ },
82
+ });
83
+ commands.registerCommand(ide_core_browser_1.OPEN_EDITORS_COMMANDS.COPY_PATH, {
84
+ execute: (node) => {
85
+ this.commandService.executeCommand(ide_core_browser_1.FILE_COMMANDS.COPY_PATH.id, node.uri, [node.uri]);
86
+ },
87
+ });
88
+ commands.registerCommand(ide_core_browser_1.OPEN_EDITORS_COMMANDS.COPY_RELATIVE_PATH, {
89
+ execute: (node) => {
90
+ this.commandService.executeCommand(ide_core_browser_1.FILE_COMMANDS.COPY_RELATIVE_PATH.id, node.uri, [node.uri]);
91
+ },
92
+ });
93
+ }
94
+ registerToolbarItems(registry) {
95
+ registry.registerItem({
96
+ id: ide_core_browser_1.OPEN_EDITORS_COMMANDS.SAVE_ALL.id,
97
+ command: ide_core_browser_1.OPEN_EDITORS_COMMANDS.SAVE_ALL.id,
98
+ viewId: exports.ExplorerOpenedEditorViewId,
99
+ label: (0, ide_core_browser_1.localize)('opened.editors.save.all'),
100
+ });
101
+ registry.registerItem({
102
+ id: ide_core_browser_1.OPEN_EDITORS_COMMANDS.CLOSE_ALL.id,
103
+ command: ide_core_browser_1.OPEN_EDITORS_COMMANDS.CLOSE_ALL.id,
104
+ viewId: exports.ExplorerOpenedEditorViewId,
105
+ label: (0, ide_core_browser_1.localize)('opened.editors.close.all'),
106
+ });
107
+ }
108
+ registerMenus(menuRegistry) {
109
+ menuRegistry.registerMenuItem(next_1.MenuId.OpenEditorsContext, {
110
+ command: {
111
+ id: ide_core_browser_1.OPEN_EDITORS_COMMANDS.OPEN.id,
112
+ label: (0, ide_core_browser_1.localize)('opened.editors.open'),
113
+ },
114
+ order: 1,
115
+ group: '1_open',
116
+ });
117
+ menuRegistry.registerMenuItem(next_1.MenuId.OpenEditorsContext, {
118
+ command: {
119
+ id: ide_core_browser_1.OPEN_EDITORS_COMMANDS.OPEN_TO_THE_SIDE.id,
120
+ label: (0, ide_core_browser_1.localize)('opened.editors.openToTheSide'),
121
+ },
122
+ order: 2,
123
+ group: '1_open',
124
+ });
125
+ menuRegistry.registerMenuItem(next_1.MenuId.OpenEditorsContext, {
126
+ command: {
127
+ id: ide_core_browser_1.OPEN_EDITORS_COMMANDS.COMPARE_SELECTED.id,
128
+ label: (0, ide_core_browser_1.localize)('opened.editors.compare'),
129
+ },
130
+ group: '2_operator',
131
+ });
132
+ menuRegistry.registerMenuItem(next_1.MenuId.OpenEditorsContext, {
133
+ command: {
134
+ id: ide_core_browser_1.OPEN_EDITORS_COMMANDS.COPY_PATH.id,
135
+ label: (0, ide_core_browser_1.localize)('opened.editors.copyPath'),
136
+ },
137
+ group: '3_path',
138
+ });
139
+ menuRegistry.registerMenuItem(next_1.MenuId.OpenEditorsContext, {
140
+ command: {
141
+ id: ide_core_browser_1.OPEN_EDITORS_COMMANDS.COPY_RELATIVE_PATH.id,
142
+ label: (0, ide_core_browser_1.localize)('opened.editors.copyRelativePath'),
143
+ },
144
+ group: '3_path',
145
+ });
146
+ }
147
+ };
148
+ (0, tslib_1.__decorate)([
149
+ (0, di_1.Autowired)(ide_main_layout_1.IMainLayoutService),
150
+ (0, tslib_1.__metadata)("design:type", Object)
151
+ ], OpenedEditorContribution.prototype, "mainLayoutService", void 0);
152
+ (0, tslib_1.__decorate)([
153
+ (0, di_1.Autowired)(ide_editor_1.WorkbenchEditorService),
154
+ (0, tslib_1.__metadata)("design:type", ide_editor_1.WorkbenchEditorService)
155
+ ], OpenedEditorContribution.prototype, "workbenchEditorService", void 0);
156
+ (0, tslib_1.__decorate)([
157
+ (0, di_1.Autowired)(opened_editor_model_service_1.OpenedEditorModelService),
158
+ (0, tslib_1.__metadata)("design:type", opened_editor_model_service_1.OpenedEditorModelService)
159
+ ], OpenedEditorContribution.prototype, "openedEditorModelService", void 0);
160
+ (0, tslib_1.__decorate)([
161
+ (0, di_1.Autowired)(ide_core_browser_1.CommandService),
162
+ (0, tslib_1.__metadata)("design:type", Object)
163
+ ], OpenedEditorContribution.prototype, "commandService", void 0);
164
+ OpenedEditorContribution = (0, tslib_1.__decorate)([
165
+ (0, ide_core_browser_1.Domain)(ide_core_browser_2.ClientAppContribution, layout_1.TabBarToolbarContribution, ide_core_browser_1.CommandContribution, next_1.MenuContribution)
166
+ ], OpenedEditorContribution);
167
+ exports.OpenedEditorContribution = OpenedEditorContribution;
168
+ //# sourceMappingURL=opened-editor.contribution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opened-editor.contribution.js","sourceRoot":"","sources":["../../src/browser/opened-editor.contribution.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import { ViewState } from '@opensumi/ide-core-browser';
3
+ export declare const ExplorerOpenEditorPanel: ({ viewState, }: React.PropsWithChildren<{
4
+ viewState: ViewState;
5
+ }>) => JSX.Element;
6
+ //# sourceMappingURL=opened-editor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opened-editor.d.ts","sourceRoot":"","sources":["../../src/browser/opened-editor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AASvD,eAAO,MAAM,uBAAuB;eAEG,SAAS;kBAoH/C,CAAC"}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExplorerOpenEditorPanel = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const react_1 = (0, tslib_1.__importDefault)(require("react"));
6
+ const react_hooks_1 = require("@opensumi/ide-core-browser/lib/react-hooks");
7
+ const ide_core_browser_1 = require("@opensumi/ide-core-browser");
8
+ const ide_components_1 = require("@opensumi/ide-components");
9
+ const opened_editor_model_service_1 = require("./services/opened-editor-model.service");
10
+ const opened_editor_node_1 = require("./opened-editor-node");
11
+ const index_module_less_1 = (0, tslib_1.__importDefault)(require("./index.module.less"));
12
+ const ExplorerOpenEditorPanel = ({ viewState, }) => {
13
+ const OPEN_EDITOR_NODE_HEIGHT = 22;
14
+ const [isReady, setIsReady] = react_1.default.useState(false);
15
+ const { width, height } = viewState;
16
+ const wrapperRef = react_1.default.createRef();
17
+ const openedEditorModelService = (0, react_hooks_1.useInjectable)(opened_editor_model_service_1.OpenedEditorModelService);
18
+ const { decorationService, labelService, commandService } = openedEditorModelService;
19
+ const handleTreeReady = (handle) => {
20
+ openedEditorModelService.handleTreeHandler(Object.assign(Object.assign({}, handle), { getModel: () => openedEditorModelService.treeModel, hasDirectFocus: () => wrapperRef.current === document.activeElement }));
21
+ };
22
+ const handleItemClicked = (ev, item, type) => {
23
+ // 阻止点击事件冒泡
24
+ ev.stopPropagation();
25
+ const { handleItemClick } = openedEditorModelService;
26
+ if (!item) {
27
+ return;
28
+ }
29
+ handleItemClick(item, type);
30
+ };
31
+ const handlerContextMenu = (ev, node) => {
32
+ const { handleContextMenu } = openedEditorModelService;
33
+ handleContextMenu(ev, node);
34
+ };
35
+ const handleOuterContextMenu = (ev) => {
36
+ const { handleContextMenu } = openedEditorModelService;
37
+ // 空白区域右键菜单
38
+ handleContextMenu(ev);
39
+ };
40
+ const handleOuterClick = (ev) => {
41
+ // 空白区域点击,取消焦点状态
42
+ const { enactiveFileDecoration } = openedEditorModelService;
43
+ enactiveFileDecoration();
44
+ };
45
+ const ensureIsReady = async () => {
46
+ await openedEditorModelService.whenReady;
47
+ if (!!openedEditorModelService.treeModel) {
48
+ // 确保数据初始化完毕,减少初始化数据过程中多次刷新视图
49
+ // 这里需要重新取一下treeModel的值确保为最新的TreeModel
50
+ await openedEditorModelService.treeModel.root.ensureLoaded();
51
+ }
52
+ setIsReady(true);
53
+ };
54
+ react_1.default.useEffect(() => {
55
+ ensureIsReady();
56
+ return () => {
57
+ openedEditorModelService.removeFileDecoration();
58
+ };
59
+ }, []);
60
+ react_1.default.useEffect(() => {
61
+ var _a;
62
+ const handleBlur = () => {
63
+ openedEditorModelService.handleTreeBlur();
64
+ };
65
+ (_a = wrapperRef.current) === null || _a === void 0 ? void 0 : _a.addEventListener('blur', handleBlur, true);
66
+ return () => {
67
+ var _a;
68
+ (_a = wrapperRef.current) === null || _a === void 0 ? void 0 : _a.removeEventListener('blur', handleBlur, true);
69
+ openedEditorModelService.handleTreeBlur();
70
+ };
71
+ }, [wrapperRef.current]);
72
+ const renderTreeNode = react_1.default.useCallback((props) => react_1.default.createElement(opened_editor_node_1.EditorTreeNode, { item: props.item, itemType: props.itemType, decorationService: decorationService, labelService: labelService, commandService: commandService, decorations: openedEditorModelService.decorations.getDecorations(props.item), onClick: handleItemClicked, onContextMenu: handlerContextMenu, defaultLeftPadding: 22, leftPadding: 0 }), [openedEditorModelService.treeModel]);
73
+ const renderContent = () => {
74
+ if (!isReady) {
75
+ return react_1.default.createElement("span", { className: index_module_less_1.default.opened_editor_empty_text }, (0, ide_core_browser_1.localize)('opened.editors.empty'));
76
+ }
77
+ else {
78
+ return react_1.default.createElement(ide_components_1.RecycleTree, { height: height, width: width, itemHeight: OPEN_EDITOR_NODE_HEIGHT, onReady: handleTreeReady, model: openedEditorModelService.treeModel, placeholder: () => {
79
+ return react_1.default.createElement("span", { className: index_module_less_1.default.opened_editor_empty_text }, (0, ide_core_browser_1.localize)('opened.editors.empty'));
80
+ } }, renderTreeNode);
81
+ }
82
+ };
83
+ return react_1.default.createElement("div", { className: index_module_less_1.default.opened_editor_container, tabIndex: -1, ref: wrapperRef, onContextMenu: handleOuterContextMenu, onClick: handleOuterClick }, renderContent());
84
+ };
85
+ exports.ExplorerOpenEditorPanel = ExplorerOpenEditorPanel;
86
+ //# sourceMappingURL=opened-editor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opened-editor.js","sourceRoot":"","sources":["../../src/browser/opened-editor.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { FileDecorationsProvider, IFileDecoration } from '@opensumi/ide-core-browser';
2
+ import { IThemeService } from '@opensumi/ide-theme';
3
+ export declare class OpenedEditorDecorationService implements FileDecorationsProvider {
4
+ private readonly decorationsService;
5
+ readonly themeService: IThemeService;
6
+ private disposeCollection;
7
+ private readonly onDidChangeEmitter;
8
+ constructor();
9
+ get onDidChange(): import("@opensumi/ide-core-browser").Event<void>;
10
+ getDecoration(uri: any, hasChildren?: boolean): IFileDecoration;
11
+ dispose(): void;
12
+ }
13
+ //# sourceMappingURL=opened-editor-decoration.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opened-editor-decoration.service.d.ts","sourceRoot":"","sources":["../../../src/browser/services/opened-editor-decoration.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAY,uBAAuB,EAAE,eAAe,EAAiC,MAAM,4BAA4B,CAAC;AAC/H,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,qBACa,6BAA8B,YAAW,uBAAuB;IAG3E,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAsB;IAEzD,SACgB,YAAY,EAAE,aAAa,CAAC;IAE5C,OAAO,CAAC,iBAAiB,CAAoD;IAE7E,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAgC;;IAanE,IAAI,WAAW,qDAEd;IAED,aAAa,CAAC,GAAG,KAAA,EAAE,WAAW,UAAQ;IAoBtC,OAAO;CAIR"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OpenedEditorDecorationService = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const di_1 = require("@opensumi/di");
6
+ const ide_decoration_1 = require("@opensumi/ide-decoration");
7
+ const ide_core_browser_1 = require("@opensumi/ide-core-browser");
8
+ const ide_theme_1 = require("@opensumi/ide-theme");
9
+ let OpenedEditorDecorationService = class OpenedEditorDecorationService {
10
+ constructor() {
11
+ this.disposeCollection = new ide_core_browser_1.DisposableCollection();
12
+ this.onDidChangeEmitter = new ide_core_browser_1.Emitter();
13
+ this.disposeCollection.pushAll([
14
+ this.decorationsService.onDidChangeDecorations(() => {
15
+ this.onDidChangeEmitter.fire();
16
+ }),
17
+ this.themeService.onThemeChange(() => {
18
+ this.onDidChangeEmitter.fire();
19
+ }),
20
+ ]);
21
+ }
22
+ get onDidChange() {
23
+ return this.onDidChangeEmitter.event;
24
+ }
25
+ getDecoration(uri, hasChildren = false) {
26
+ // 转换URI为vscode.uri
27
+ if (uri instanceof ide_core_browser_1.URI) {
28
+ uri = ide_core_browser_1.Uri.parse(uri.toString());
29
+ }
30
+ const decoration = this.decorationsService.getDecoration(uri, hasChildren);
31
+ if (decoration) {
32
+ return Object.assign(Object.assign({}, decoration), {
33
+ // 通过ThemeService获取颜色值
34
+ color: this.themeService.getColor({ id: decoration.color }) });
35
+ }
36
+ return {
37
+ color: '',
38
+ tooltip: '',
39
+ badge: '',
40
+ };
41
+ }
42
+ dispose() {
43
+ this.disposeCollection.dispose();
44
+ }
45
+ };
46
+ (0, tslib_1.__decorate)([
47
+ (0, di_1.Autowired)(ide_decoration_1.IDecorationsService),
48
+ (0, tslib_1.__metadata)("design:type", ide_decoration_1.IDecorationsService)
49
+ ], OpenedEditorDecorationService.prototype, "decorationsService", void 0);
50
+ (0, tslib_1.__decorate)([
51
+ (0, di_1.Autowired)(ide_theme_1.IThemeService),
52
+ (0, tslib_1.__metadata)("design:type", Object)
53
+ ], OpenedEditorDecorationService.prototype, "themeService", void 0);
54
+ OpenedEditorDecorationService = (0, tslib_1.__decorate)([
55
+ (0, di_1.Injectable)(),
56
+ (0, tslib_1.__metadata)("design:paramtypes", [])
57
+ ], OpenedEditorDecorationService);
58
+ exports.OpenedEditorDecorationService = OpenedEditorDecorationService;
59
+ //# sourceMappingURL=opened-editor-decoration.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opened-editor-decoration.service.js","sourceRoot":"","sources":["../../../src/browser/services/opened-editor-decoration.service.ts"],"names":[],"mappings":";;;;AAAA,qCAAqD;AACrD,6DAA+D;AAC/D,iEAA+H;AAC/H,mDAAoD;AAGpD,IAAa,6BAA6B,GAA1C,MAAa,6BAA6B;IAYxC;QAJQ,sBAAiB,GAAyB,IAAI,uCAAoB,EAAE,CAAC;QAE5D,uBAAkB,GAAkB,IAAI,0BAAO,EAAE,CAAC;QAGjE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;YAC7B,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,GAAG,EAAE;gBAClD,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;YACjC,CAAC,CAAC;YACF,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,EAAE;gBACnC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;YACjC,CAAC,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;IACvC,CAAC;IAED,aAAa,CAAC,GAAG,EAAE,WAAW,GAAG,KAAK;QACpC,mBAAmB;QACnB,IAAI,GAAG,YAAY,sBAAG,EAAE;YACtB,GAAG,GAAG,sBAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;SACjC;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAC3E,IAAI,UAAU,EAAE;YACd,OAAO,gCACF,UAAU;gBACb,sBAAsB;gBACtB,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAC,EAAE,EAAE,UAAU,CAAC,KAAe,EAAC,CAAC,GACjD,CAAC;SACtB;QACD,OAAO;YACL,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,EAAE;SACS,CAAC;IACvB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;IACnC,CAAC;CAEF,CAAA;AAhDC;IADC,IAAA,cAAS,EAAC,oCAAmB,CAAC;2CACM,oCAAmB;yEAAC;AAGzD;IADC,IAAA,cAAS,EAAC,yBAAa,CAAC;;mEACmB;AANjC,6BAA6B;IADzC,IAAA,eAAU,GAAE;;GACA,6BAA6B,CAmDzC;AAnDY,sEAA6B"}
@@ -0,0 +1,23 @@
1
+ import { Event, WithEventBus } from '@opensumi/ide-core-browser';
2
+ import { IResource, IEditorGroup, ResourceDecorationChangeEvent, IResourceDecorationChangeEventPayload } from '@opensumi/ide-editor';
3
+ import { EditorGroupOpenEvent } from '@opensumi/ide-editor/lib/browser';
4
+ export declare type OpenedEditorData = IEditorGroup | IResource;
5
+ export interface OpenedEditorEvent {
6
+ group: IEditorGroup;
7
+ resource: IResource;
8
+ }
9
+ export declare class OpenedEditorEventService extends WithEventBus {
10
+ private _onDidChange;
11
+ private _onDidDecorationChange;
12
+ private _onDidActiveChange;
13
+ onDidChange: Event<OpenedEditorEvent | null>;
14
+ onDidDecorationChange: Event<IResourceDecorationChangeEventPayload | null>;
15
+ onDidActiveChange: Event<OpenedEditorEvent | null>;
16
+ constructor();
17
+ onEditorGroupOpenEvent(e: EditorGroupOpenEvent): void;
18
+ onEditorGroupChangeEvent(): void;
19
+ onEditorGroupCloseEvent(): void;
20
+ onEditorGroupDisposeEvent(): void;
21
+ onResourceDecorationChangeEvent(e: ResourceDecorationChangeEvent): void;
22
+ }
23
+ //# sourceMappingURL=opened-editor-event.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opened-editor-event.service.d.ts","sourceRoot":"","sources":["../../../src/browser/services/opened-editor-event.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAW,YAAY,EAAW,MAAM,4BAA4B,CAAC;AACnF,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,6BAA6B,EAAE,qCAAqC,EAAE,MAAM,sBAAsB,CAAC;AAErI,OAAO,EAAE,oBAAoB,EAA0E,MAAM,kCAAkC,CAAC;AAEhJ,oBAAY,gBAAgB,GAAG,YAAY,GAAG,SAAS,CAAC;AACxD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,qBACa,wBAAyB,SAAQ,YAAY;IAExD,OAAO,CAAC,YAAY,CAAoD;IACxE,OAAO,CAAC,sBAAsB,CAAwE;IACtG,OAAO,CAAC,kBAAkB,CAAoD;IAEvE,WAAW,EAAE,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAA2B;IACvE,qBAAqB,EAAE,KAAK,CAAC,qCAAqC,GAAG,IAAI,CAAC,CAAqC;IAC/G,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAiC;;IAO1F,sBAAsB,CAAC,CAAC,EAAE,oBAAoB;IAK9C,wBAAwB;IAKxB,uBAAuB;IAKvB,yBAAyB;IAMzB,+BAA+B,CAAC,CAAC,EAAE,6BAA6B;CAGjE"}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OpenedEditorEventService = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const ide_core_browser_1 = require("@opensumi/ide-core-browser");
6
+ const ide_editor_1 = require("@opensumi/ide-editor");
7
+ const di_1 = require("@opensumi/di");
8
+ const browser_1 = require("@opensumi/ide-editor/lib/browser");
9
+ let OpenedEditorEventService = class OpenedEditorEventService extends ide_core_browser_1.WithEventBus {
10
+ constructor() {
11
+ super();
12
+ this._onDidChange = new ide_core_browser_1.Emitter();
13
+ this._onDidDecorationChange = new ide_core_browser_1.Emitter();
14
+ this._onDidActiveChange = new ide_core_browser_1.Emitter();
15
+ this.onDidChange = this._onDidChange.event;
16
+ this.onDidDecorationChange = this._onDidDecorationChange.event;
17
+ this.onDidActiveChange = this._onDidActiveChange.event;
18
+ }
19
+ onEditorGroupOpenEvent(e) {
20
+ this._onDidActiveChange.fire(e.payload);
21
+ }
22
+ onEditorGroupChangeEvent() {
23
+ this._onDidChange.fire(null);
24
+ }
25
+ onEditorGroupCloseEvent() {
26
+ this._onDidChange.fire(null);
27
+ }
28
+ onEditorGroupDisposeEvent() {
29
+ this._onDidChange.fire(null);
30
+ }
31
+ // 为修改的文件添加dirty装饰
32
+ onResourceDecorationChangeEvent(e) {
33
+ this._onDidDecorationChange.fire(e.payload);
34
+ }
35
+ };
36
+ (0, tslib_1.__decorate)([
37
+ (0, ide_core_browser_1.OnEvent)(browser_1.EditorGroupOpenEvent),
38
+ (0, tslib_1.__metadata)("design:type", Function),
39
+ (0, tslib_1.__metadata)("design:paramtypes", [browser_1.EditorGroupOpenEvent]),
40
+ (0, tslib_1.__metadata)("design:returntype", void 0)
41
+ ], OpenedEditorEventService.prototype, "onEditorGroupOpenEvent", null);
42
+ (0, tslib_1.__decorate)([
43
+ (0, ide_core_browser_1.OnEvent)(browser_1.EditorGroupChangeEvent),
44
+ (0, tslib_1.__metadata)("design:type", Function),
45
+ (0, tslib_1.__metadata)("design:paramtypes", []),
46
+ (0, tslib_1.__metadata)("design:returntype", void 0)
47
+ ], OpenedEditorEventService.prototype, "onEditorGroupChangeEvent", null);
48
+ (0, tslib_1.__decorate)([
49
+ (0, ide_core_browser_1.OnEvent)(browser_1.EditorGroupCloseEvent),
50
+ (0, tslib_1.__metadata)("design:type", Function),
51
+ (0, tslib_1.__metadata)("design:paramtypes", []),
52
+ (0, tslib_1.__metadata)("design:returntype", void 0)
53
+ ], OpenedEditorEventService.prototype, "onEditorGroupCloseEvent", null);
54
+ (0, tslib_1.__decorate)([
55
+ (0, ide_core_browser_1.OnEvent)(browser_1.EditorGroupDisposeEvent),
56
+ (0, tslib_1.__metadata)("design:type", Function),
57
+ (0, tslib_1.__metadata)("design:paramtypes", []),
58
+ (0, tslib_1.__metadata)("design:returntype", void 0)
59
+ ], OpenedEditorEventService.prototype, "onEditorGroupDisposeEvent", null);
60
+ (0, tslib_1.__decorate)([
61
+ (0, ide_core_browser_1.OnEvent)(ide_editor_1.ResourceDecorationChangeEvent),
62
+ (0, tslib_1.__metadata)("design:type", Function),
63
+ (0, tslib_1.__metadata)("design:paramtypes", [ide_editor_1.ResourceDecorationChangeEvent]),
64
+ (0, tslib_1.__metadata)("design:returntype", void 0)
65
+ ], OpenedEditorEventService.prototype, "onResourceDecorationChangeEvent", null);
66
+ OpenedEditorEventService = (0, tslib_1.__decorate)([
67
+ (0, di_1.Injectable)(),
68
+ (0, tslib_1.__metadata)("design:paramtypes", [])
69
+ ], OpenedEditorEventService);
70
+ exports.OpenedEditorEventService = OpenedEditorEventService;
71
+ //# sourceMappingURL=opened-editor-event.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opened-editor-event.service.js","sourceRoot":"","sources":["../../../src/browser/services/opened-editor-event.service.ts"],"names":[],"mappings":";;;;AAAA,iEAAmF;AACnF,qDAAqI;AACrI,qCAA0C;AAC1C,8DAAgJ;AAShJ,IAAa,wBAAwB,GAArC,MAAa,wBAAyB,SAAQ,+BAAY;IAUxD;QACE,KAAK,EAAE,CAAC;QATF,iBAAY,GAAsC,IAAI,0BAAO,EAAE,CAAC;QAChE,2BAAsB,GAA0D,IAAI,0BAAO,EAAE,CAAC;QAC9F,uBAAkB,GAAsC,IAAI,0BAAO,EAAE,CAAC;QAEvE,gBAAW,GAAoC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;QACvE,0BAAqB,GAAwD,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;QAC/G,sBAAiB,GAAoC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;IAI1F,CAAC;IAGD,sBAAsB,CAAC,CAAuB;QAC5C,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAGD,wBAAwB;QACtB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAGD,uBAAuB;QACrB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAGD,yBAAyB;QACvB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,kBAAkB;IAElB,+BAA+B,CAAC,CAAgC;QAC9D,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;CACF,CAAA;AAxBC;IADC,IAAA,0BAAO,EAAC,8BAAoB,CAAC;;kDACJ,8BAAoB;;sEAE7C;AAGD;IADC,IAAA,0BAAO,EAAC,gCAAsB,CAAC;;;;wEAG/B;AAGD;IADC,IAAA,0BAAO,EAAC,+BAAqB,CAAC;;;;uEAG9B;AAGD;IADC,IAAA,0BAAO,EAAC,iCAAuB,CAAC;;;;yEAGhC;AAID;IADC,IAAA,0BAAO,EAAC,0CAA6B,CAAC;;kDACJ,0CAA6B;;+EAE/D;AAtCU,wBAAwB;IADpC,IAAA,eAAU,GAAE;;GACA,wBAAwB,CAuCpC;AAvCY,4DAAwB"}
@@ -0,0 +1,15 @@
1
+ import { TreeModel, CompositeTreeNode } from '@opensumi/ide-components';
2
+ import { Event } from '@opensumi/ide-core-browser';
3
+ import { OpenedEditorDecorationService } from './opened-editor-decoration.service';
4
+ import { EditorFileGroup } from '../opened-editor-node.define';
5
+ export declare class OpenedEditorModel extends TreeModel {
6
+ static DEFAULT_FLUSH_DELAY: number;
7
+ readonly decorationService: OpenedEditorDecorationService;
8
+ private flushDispatchChangeDelayer;
9
+ private onWillUpdateEmitter;
10
+ constructor(root: EditorFileGroup);
11
+ get onWillUpdate(): Event<void>;
12
+ init(root: CompositeTreeNode): void;
13
+ doDispatchChange(): void;
14
+ }
15
+ //# sourceMappingURL=opened-editor-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opened-editor-model.d.ts","sourceRoot":"","sources":["../../../src/browser/services/opened-editor-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAiB,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAEvF,OAAO,EAA6B,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,qBACa,iBAAkB,SAAQ,SAAS;IAE9C,MAAM,CAAC,mBAAmB,SAAO;IAEjC,SACgB,iBAAiB,EAAE,6BAA6B,CAAC;IAEjE,OAAO,CAAC,0BAA0B,CAAsE;IACxG,OAAO,CAAC,mBAAmB,CAAgC;gBAEnC,IAAI,EAAE,eAAe;IAK7C,IAAI,YAAY,IAAI,KAAK,CAAC,IAAI,CAAC,CAE9B;IAED,IAAI,CAAC,IAAI,EAAE,iBAAiB;IAU5B,gBAAgB;CASjB"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ var OpenedEditorModel_1;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.OpenedEditorModel = void 0;
5
+ const tslib_1 = require("tslib");
6
+ const ide_components_1 = require("@opensumi/ide-components");
7
+ const di_1 = require("@opensumi/di");
8
+ const ide_core_browser_1 = require("@opensumi/ide-core-browser");
9
+ const opened_editor_decoration_service_1 = require("./opened-editor-decoration.service");
10
+ const opened_editor_node_define_1 = require("../opened-editor-node.define");
11
+ let OpenedEditorModel = OpenedEditorModel_1 = class OpenedEditorModel extends ide_components_1.TreeModel {
12
+ constructor(root) {
13
+ super();
14
+ this.flushDispatchChangeDelayer = new ide_core_browser_1.ThrottledDelayer(OpenedEditorModel_1.DEFAULT_FLUSH_DELAY);
15
+ this.onWillUpdateEmitter = new ide_core_browser_1.Emitter();
16
+ this.init(root);
17
+ }
18
+ get onWillUpdate() {
19
+ return this.onWillUpdateEmitter.event;
20
+ }
21
+ init(root) {
22
+ this.root = root;
23
+ // 分支更新时通知树刷新, 不是立即更新,而是延迟更新,待树稳定后再更新
24
+ // 100ms的延迟并不能保证树稳定,特别是在node_modules展开的情况下
25
+ // 但在普通使用上已经足够可用,即不会有渲染闪烁问题
26
+ this.root.watcher.on(ide_components_1.TreeNodeEvent.BranchDidUpdate, this.doDispatchChange.bind(this));
27
+ // 主题或装饰器更新时,更新树
28
+ this.decorationService.onDidChange(this.doDispatchChange.bind(this));
29
+ }
30
+ doDispatchChange() {
31
+ if (!this.flushDispatchChangeDelayer.isTriggered()) {
32
+ this.flushDispatchChangeDelayer.cancel();
33
+ }
34
+ this.flushDispatchChangeDelayer.trigger(async () => {
35
+ await this.onWillUpdateEmitter.fireAndAwait();
36
+ this.dispatchChange();
37
+ });
38
+ }
39
+ };
40
+ OpenedEditorModel.DEFAULT_FLUSH_DELAY = 100;
41
+ (0, tslib_1.__decorate)([
42
+ (0, di_1.Autowired)(opened_editor_decoration_service_1.OpenedEditorDecorationService),
43
+ (0, tslib_1.__metadata)("design:type", opened_editor_decoration_service_1.OpenedEditorDecorationService)
44
+ ], OpenedEditorModel.prototype, "decorationService", void 0);
45
+ OpenedEditorModel = OpenedEditorModel_1 = (0, tslib_1.__decorate)([
46
+ (0, di_1.Injectable)({ multiple: true }),
47
+ (0, tslib_1.__param)(0, (0, di_1.Optional)()),
48
+ (0, tslib_1.__metadata)("design:paramtypes", [opened_editor_node_define_1.EditorFileGroup])
49
+ ], OpenedEditorModel);
50
+ exports.OpenedEditorModel = OpenedEditorModel;
51
+ //# sourceMappingURL=opened-editor-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opened-editor-model.js","sourceRoot":"","sources":["../../../src/browser/services/opened-editor-model.ts"],"names":[],"mappings":";;;;;AAAA,6DAAuF;AACvF,qCAA8D;AAC9D,iEAA8E;AAC9E,yFAAmF;AACnF,4EAA+D;AAG/D,IAAa,iBAAiB,yBAA9B,MAAa,iBAAkB,SAAQ,0BAAS;IAU9C,YAAwB,IAAqB;QAC3C,KAAK,EAAE,CAAC;QAJF,+BAA0B,GAAI,IAAI,mCAAgB,CAAO,mBAAiB,CAAC,mBAAmB,CAAC,CAAC;QAChG,wBAAmB,GAAkB,IAAI,0BAAO,EAAE,CAAC;QAIzD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;IACxC,CAAC;IAED,IAAI,CAAC,IAAuB;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,qCAAqC;QACrC,0CAA0C;QAC1C,2BAA2B;QAC3B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,8BAAa,CAAC,eAAe,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACtF,gBAAgB;QAChB,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,WAAW,EAAE,EAAE;YAClD,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,CAAC;SAC1C;QACD,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;YACjD,MAAM,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,CAAC;YAC9C,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AApCQ,qCAAmB,GAAG,GAAG,CAAC;AAGjC;IADC,IAAA,cAAS,EAAC,gEAA6B,CAAC;2CACN,gEAA6B;4DAAC;AALtD,iBAAiB;IAD7B,IAAA,eAAU,EAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;IAWd,wBAAA,IAAA,aAAQ,GAAE,CAAA;kDAAO,2CAAe;GAVlC,iBAAiB,CAsC7B;AAtCY,8CAAiB"}
@@ -0,0 +1,81 @@
1
+ import { DecorationsManager, IRecycleTreeHandle, TreeNodeType } from '@opensumi/ide-components';
2
+ import { URI, IContextKeyService, CommandService, Deferred, Event } from '@opensumi/ide-core-browser';
3
+ import { LabelService } from '@opensumi/ide-core-browser/lib/services';
4
+ import { OpenedEditorModel } from './opened-editor-model';
5
+ import { EditorFile, EditorFileGroup } from '../opened-editor-node.define';
6
+ import { OpenedEditorDecorationService } from './opened-editor-decoration.service';
7
+ import { OpenedEditorEventService } from './opened-editor-event.service';
8
+ import { IEditorGroup, IResource } from '@opensumi/ide-editor/lib/browser';
9
+ export interface IEditorTreeHandle extends IRecycleTreeHandle {
10
+ hasDirectFocus: () => boolean;
11
+ }
12
+ export declare class OpenedEditorModelService {
13
+ private static DEFAULT_FLUSH_FILE_EVENT_DELAY;
14
+ private static DEFAULT_LOCATION_FLUSH_DELAY;
15
+ private readonly injector;
16
+ private readonly ctxMenuRenderer;
17
+ private readonly contextMenuService;
18
+ private readonly contextKeyService;
19
+ private readonly openedEditorService;
20
+ readonly labelService: LabelService;
21
+ readonly decorationService: OpenedEditorDecorationService;
22
+ readonly openedEditorEventService: OpenedEditorEventService;
23
+ private readonly editorService;
24
+ readonly commandService: CommandService;
25
+ private readonly layoutService;
26
+ private _treeModel;
27
+ private _whenReady;
28
+ private _decorations;
29
+ private _openedEditorTreeHandle;
30
+ flushEventQueueDeferred: Deferred<void> | null;
31
+ private _eventFlushTimeout;
32
+ private _changeEventDispatchQueue;
33
+ private selectedDecoration;
34
+ private focusedDecoration;
35
+ private contextMenuDecoration;
36
+ private dirtyDecoration;
37
+ private _focusedFile;
38
+ private _selectedFiles;
39
+ private _contextMenuFile;
40
+ private disposableCollection;
41
+ private onDidRefreshedEmitter;
42
+ private locationDelayer;
43
+ private _contextMenuContextKeyService;
44
+ private _currentDirtyNodes;
45
+ private ignoreRefreshAndActiveTimes;
46
+ constructor();
47
+ get flushEventQueuePromise(): Promise<void> | null;
48
+ get contextMenuContextKeyService(): IContextKeyService;
49
+ get editorTreeHandle(): IEditorTreeHandle;
50
+ get decorations(): DecorationsManager;
51
+ get treeModel(): OpenedEditorModel;
52
+ get whenReady(): Promise<void>;
53
+ get focusedFile(): EditorFileGroup | EditorFile | undefined;
54
+ get contextMenuFile(): EditorFileGroup | EditorFile | undefined;
55
+ get selectedFiles(): (EditorFileGroup | EditorFile)[];
56
+ get onDidRefreshed(): Event<void>;
57
+ initTreeModel(): Promise<void>;
58
+ initDecorations(root: any): void;
59
+ activeFileDecoration: (target: EditorFileGroup | EditorFile, dispatchChange?: boolean) => void;
60
+ selectFileDecoration: (target: EditorFileGroup | EditorFile, dispatchChange?: boolean) => void;
61
+ activeFileActivedDecoration: (target: EditorFileGroup | EditorFile) => void;
62
+ enactiveFileDecoration: () => void;
63
+ removeFileDecoration(): void;
64
+ handleContextMenu: (ev: React.MouseEvent, file?: EditorFileGroup | EditorFile | undefined) => void;
65
+ handleTreeHandler(handle: IEditorTreeHandle): void;
66
+ handleTreeBlur: () => void;
67
+ handleItemClick: (item: EditorFileGroup | EditorFile, type: TreeNodeType) => void;
68
+ /**
69
+ * 刷新指定下的所有子节点
70
+ */
71
+ refresh(node?: EditorFileGroup): Promise<void>;
72
+ private queueChangeEvent;
73
+ flushEventQueue: () => Promise<any> | undefined;
74
+ location: (resource: IResource | URI, group?: IEditorGroup | undefined) => Promise<void>;
75
+ openFile: (node: EditorFile) => void;
76
+ closeFile: (node: EditorFile) => void;
77
+ closeAllByGroup: (node: EditorFileGroup) => void;
78
+ saveAllByGroup: (node: EditorFileGroup) => void;
79
+ private setExplorerTabBarBadge;
80
+ }
81
+ //# sourceMappingURL=opened-editor-model.service.d.ts.map