@opensumi/ide-workspace-edit 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 (38) hide show
  1. package/lib/browser/bulk-edit.service.d.ts +18 -0
  2. package/lib/browser/bulk-edit.service.d.ts.map +1 -0
  3. package/lib/browser/bulk-edit.service.js +120 -0
  4. package/lib/browser/bulk-edit.service.js.map +1 -0
  5. package/lib/browser/index.d.ts +18 -0
  6. package/lib/browser/index.d.ts.map +1 -0
  7. package/lib/browser/index.js +112 -0
  8. package/lib/browser/index.js.map +1 -0
  9. package/lib/browser/refactor-preview.d.ts +6 -0
  10. package/lib/browser/refactor-preview.d.ts.map +1 -0
  11. package/lib/browser/refactor-preview.js +129 -0
  12. package/lib/browser/refactor-preview.js.map +1 -0
  13. package/lib/browser/refactor-preview.service.d.ts +31 -0
  14. package/lib/browser/refactor-preview.service.d.ts.map +1 -0
  15. package/lib/browser/refactor-preview.service.js +123 -0
  16. package/lib/browser/refactor-preview.service.js.map +1 -0
  17. package/lib/browser/refactor_preview.module.less +49 -0
  18. package/lib/browser/utils.d.ts +4 -0
  19. package/lib/browser/utils.d.ts.map +1 -0
  20. package/lib/browser/utils.js +16 -0
  21. package/lib/browser/utils.js.map +1 -0
  22. package/lib/browser/workspace-edit.service.d.ts +54 -0
  23. package/lib/browser/workspace-edit.service.d.ts.map +1 -0
  24. package/lib/browser/workspace-edit.service.js +318 -0
  25. package/lib/browser/workspace-edit.service.js.map +1 -0
  26. package/lib/browser/workspace-file.service.d.ts +43 -0
  27. package/lib/browser/workspace-file.service.d.ts.map +1 -0
  28. package/lib/browser/workspace-file.service.js +166 -0
  29. package/lib/browser/workspace-file.service.js.map +1 -0
  30. package/lib/common/index.d.ts +123 -0
  31. package/lib/common/index.d.ts.map +1 -0
  32. package/lib/common/index.js +16 -0
  33. package/lib/common/index.js.map +1 -0
  34. package/lib/index.d.ts +3 -0
  35. package/lib/index.d.ts.map +1 -0
  36. package/lib/index.js +6 -0
  37. package/lib/index.js.map +1 -0
  38. package/package.json +32 -0
@@ -0,0 +1,49 @@
1
+ .refactor_preview {
2
+ display: flex;
3
+ }
4
+
5
+ .resource_node {
6
+ display: flex;
7
+ height: 23px;
8
+ line-height: 23px;
9
+ padding: 0px 10px;
10
+ cursor: pointer;
11
+
12
+ .resource_clickable {
13
+ display: flex;
14
+ height: 23px;
15
+ line-height: 23px;
16
+ }
17
+
18
+ &:hover {
19
+ background-color: var(--editor-selectionBackground);
20
+ }
21
+
22
+ .resource_node_path {
23
+ font-size: 12px;
24
+ overflow: hidden;
25
+ text-overflow: ellipsis;
26
+ white-space: nowrap;
27
+ color: var(--descriptionForeground);
28
+ }
29
+ }
30
+
31
+ .refactor_preview_node_wrapper {
32
+ display: inline-block;
33
+ padding: 0px;
34
+ margin: 0px 10px 0px 10px;
35
+ overflow: hidden;
36
+ text-overflow: ellipsis;
37
+ white-space: nowrap;
38
+
39
+ .refactor_preview_node_base {
40
+ height: 16px;
41
+ text-decoration: line-through;
42
+ background-color: var(--diffEditor-removedTextBackground)
43
+ }
44
+
45
+ .refactor_preview_node_new {
46
+ height: 16px;
47
+ background-color: var(--diffEditor-insertedTextBackground)
48
+ }
49
+ }
@@ -0,0 +1,4 @@
1
+ import type { ResourceFileEdit, ResourceTextEdit } from '@opensumi/monaco-editor-core/esm/vs/editor/browser/services/bulkEditService';
2
+ export declare function isResourceFileEdit(thing: any): thing is ResourceFileEdit;
3
+ export declare function isResourceTextEdit(thing: any): thing is ResourceTextEdit;
4
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/browser/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,6EAA6E,CAAC;AAGtI,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,gBAAgB,CAExE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,gBAAgB,CAIxE"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isResourceTextEdit = exports.isResourceFileEdit = void 0;
4
+ const editor_api_1 = require("@opensumi/monaco-editor-core/esm/vs/editor/editor.api");
5
+ const ide_core_common_1 = require("@opensumi/ide-core-common");
6
+ function isResourceFileEdit(thing) {
7
+ return (0, ide_core_common_1.isObject)(thing) && (Boolean(thing.newResource) || Boolean(thing.oldResource));
8
+ }
9
+ exports.isResourceFileEdit = isResourceFileEdit;
10
+ function isResourceTextEdit(thing) {
11
+ // 重写的原因是因为直接用 monaco 存在 Uri.isUri 情况
12
+ // 我们的 Uri 并未 monaco 的 Uri 的 instance
13
+ return (0, ide_core_common_1.isObject)(thing) && editor_api_1.Uri.isUri(thing.resource) && (0, ide_core_common_1.isObject)(thing.textEdit);
14
+ }
15
+ exports.isResourceTextEdit = isResourceTextEdit;
16
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/browser/utils.ts"],"names":[],"mappings":";;;AAAA,sFAA4E;AAE5E,+DAAqD;AAErD,SAAgB,kBAAkB,CAAC,KAAU;IAC3C,OAAO,IAAA,0BAAQ,EAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;AACvF,CAAC;AAFD,gDAEC;AAED,SAAgB,kBAAkB,CAAC,KAAU;IAC3C,qCAAqC;IACrC,qCAAqC;IACrC,OAAO,IAAA,0BAAQ,EAAC,KAAK,CAAC,IAAI,gBAAG,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAA,0BAAQ,EAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAClF,CAAC;AAJD,gDAIC"}
@@ -0,0 +1,54 @@
1
+ import { IResourceTextEdit, IWorkspaceEditService, IWorkspaceEdit, IResourceFileEdit, IWorkspaceFileService } from '../common';
2
+ import { URI, IEventBus } from '@opensumi/ide-core-browser';
3
+ import { WorkbenchEditorService } from '@opensumi/ide-editor';
4
+ import { IEditorDocumentModelService } from '@opensumi/ide-editor/lib/browser';
5
+ export declare class WorkspaceEditServiceImpl implements IWorkspaceEditService {
6
+ private editStack;
7
+ documentModelService: IEditorDocumentModelService;
8
+ workspaceFileService: IWorkspaceFileService;
9
+ editorService: WorkbenchEditorService;
10
+ eventBus: IEventBus;
11
+ apply(edit: IWorkspaceEdit): Promise<void>;
12
+ revertTopFileEdit(): Promise<void>;
13
+ }
14
+ export declare class BulkEdit {
15
+ private edits;
16
+ apply(documentModelService: IEditorDocumentModelService, editorService: WorkbenchEditorService, workspaceFS: IWorkspaceFileService, eventBus: IEventBus): Promise<void>;
17
+ add(edit: IResourceTextEdit | IResourceFileEdit): void;
18
+ revert(onlyFileEdits: true): void;
19
+ }
20
+ export declare class ResourceTextEditTask {
21
+ edits: IResourceTextEdit[];
22
+ resource: URI;
23
+ versionId: number | undefined;
24
+ options: {
25
+ openDirtyInEditor?: boolean;
26
+ dirtyIfInEditor?: boolean;
27
+ };
28
+ constructor(edit: IResourceTextEdit);
29
+ addEdit(edit: IResourceTextEdit): void;
30
+ apply(documentModelService: IEditorDocumentModelService, editorService: WorkbenchEditorService): Promise<void>;
31
+ private editorOperation;
32
+ revert(): Promise<void>;
33
+ }
34
+ export declare class ResourceFileEdit implements IResourceFileEdit {
35
+ oldResource?: URI;
36
+ newResource?: URI;
37
+ options: {
38
+ overwrite?: boolean | undefined;
39
+ ignoreIfNotExists?: boolean | undefined;
40
+ recursive?: boolean | undefined;
41
+ showInEditor?: boolean;
42
+ isDirectory?: boolean;
43
+ copy?: boolean;
44
+ ignoreIfExists?: boolean | undefined;
45
+ };
46
+ constructor(edit: IResourceFileEdit);
47
+ notifyEditor(editorService: WorkbenchEditorService, documentModelService: IEditorDocumentModelService): Promise<any[] | undefined>;
48
+ notifyOnResource(oldResource: URI, newResource: URI, editorService: WorkbenchEditorService, documentModelService: IEditorDocumentModelService): Promise<void>;
49
+ apply(documentModelService: IEditorDocumentModelService, editorService: WorkbenchEditorService, workspaceFS: IWorkspaceFileService, eventBus: IEventBus): Promise<void>;
50
+ private isFileExistError;
51
+ revert(): Promise<void>;
52
+ }
53
+ export declare function isResourceFileEdit(thing: any): thing is ResourceFileEdit;
54
+ //# sourceMappingURL=workspace-edit.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-edit.service.d.ts","sourceRoot":"","sources":["../../src/browser/workspace-edit.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,cAAc,EAAE,iBAAiB,EAAoE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AACjM,OAAO,EAAE,GAAG,EAAE,SAAS,EAA0B,MAAM,4BAA4B,CAAC;AAGpF,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EAAE,2BAA2B,EAA6B,MAAM,kCAAkC,CAAC;AAO1G,qBACa,wBAAyB,YAAW,qBAAqB;IAEpE,OAAO,CAAC,SAAS,CAAkB;IAGnC,oBAAoB,EAAE,2BAA2B,CAAC;IAGlD,oBAAoB,EAAE,qBAAqB,CAAC;IAG5C,aAAa,EAAE,sBAAsB,CAAC;IAGtC,QAAQ,EAAE,SAAS,CAAC;IAEd,KAAK,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAShD,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;CAInC;AAED,qBAAa,QAAQ;IAEnB,OAAO,CAAC,KAAK,CAAuB;IAE9B,KAAK,CAAC,oBAAoB,EAAE,2BAA2B,EAAE,aAAa,EAAE,sBAAsB,EAAE,WAAW,EAAE,qBAAqB,EAAE,QAAQ,EAAE,SAAS;IAU7J,GAAG,CAAC,IAAI,EAAE,iBAAiB,GAAG,iBAAiB;IA+B/C,MAAM,CAAC,aAAa,EAAE,IAAI;CAG3B;AAED,qBAAa,oBAAoB;IAExB,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,QAAQ,EAAE,GAAG,CAAC;IACd,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,OAAO,EAAE;QACd,iBAAiB,CAAC,EAAE,OAAO,CAAA;QAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B,CAAM;gBAEK,IAAI,EAAE,iBAAiB;IAOnC,OAAO,CAAC,IAAI,EAAE,iBAAiB;IAIzB,KAAK,CAAC,oBAAoB,EAAE,2BAA2B,EAAE,aAAa,EAAE,sBAAsB;YAyCtF,eAAe;IAmBvB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAG9B;AAED,qBAAa,gBAAiB,YAAW,iBAAiB;IAExD,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,OAAO,EAAE;QACP,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QAChC,iBAAiB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QACxC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QAChC,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;KACtC,CAAM;gBAEK,IAAI,EAAE,iBAAiB;IAM7B,YAAY,CAAC,aAAa,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,2BAA2B;IAqBrG,gBAAgB,CAAC,WAAW,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,aAAa,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,2BAA2B;IAmC7I,KAAK,CAAC,oBAAoB,EAAE,2BAA2B,EAAE,aAAa,EAAE,sBAAsB,EAAE,WAAW,EAAE,qBAAqB,EAAE,QAAQ,EAAE,SAAS;IA2D7J,OAAO,CAAC,gBAAgB;IAIlB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAE9B;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,gBAAgB,CAExE"}
@@ -0,0 +1,318 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isResourceFileEdit = exports.ResourceFileEdit = exports.ResourceTextEditTask = exports.BulkEdit = exports.WorkspaceEditServiceImpl = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("../common");
6
+ const ide_core_browser_1 = require("@opensumi/ide-core-browser");
7
+ const common_2 = require("@opensumi/ide-file-service/lib/common");
8
+ const di_1 = require("@opensumi/di");
9
+ const ide_editor_1 = require("@opensumi/ide-editor");
10
+ const mobx_1 = require("mobx");
11
+ const browser_1 = require("@opensumi/ide-editor/lib/browser");
12
+ const range_1 = require("@opensumi/monaco-editor-core/esm/vs/editor/common/core/range");
13
+ const types_1 = require("@opensumi/ide-monaco/lib/browser/monaco-api/types");
14
+ let WorkspaceEditServiceImpl = class WorkspaceEditServiceImpl {
15
+ constructor() {
16
+ this.editStack = [];
17
+ }
18
+ async apply(edit) {
19
+ const bulkEdit = new BulkEdit();
20
+ edit.edits.forEach((edit) => {
21
+ bulkEdit.add(edit);
22
+ });
23
+ await bulkEdit.apply(this.documentModelService, this.editorService, this.workspaceFileService, this.eventBus);
24
+ this.editStack.push(bulkEdit);
25
+ }
26
+ revertTopFileEdit() {
27
+ throw new Error('Method not implemented.');
28
+ }
29
+ };
30
+ (0, tslib_1.__decorate)([
31
+ (0, di_1.Autowired)(browser_1.IEditorDocumentModelService),
32
+ (0, tslib_1.__metadata)("design:type", Object)
33
+ ], WorkspaceEditServiceImpl.prototype, "documentModelService", void 0);
34
+ (0, tslib_1.__decorate)([
35
+ (0, di_1.Autowired)(common_1.IWorkspaceFileService),
36
+ (0, tslib_1.__metadata)("design:type", Object)
37
+ ], WorkspaceEditServiceImpl.prototype, "workspaceFileService", void 0);
38
+ (0, tslib_1.__decorate)([
39
+ (0, di_1.Autowired)(),
40
+ (0, tslib_1.__metadata)("design:type", ide_editor_1.WorkbenchEditorService)
41
+ ], WorkspaceEditServiceImpl.prototype, "editorService", void 0);
42
+ (0, tslib_1.__decorate)([
43
+ (0, di_1.Autowired)(ide_core_browser_1.IEventBus),
44
+ (0, tslib_1.__metadata)("design:type", Object)
45
+ ], WorkspaceEditServiceImpl.prototype, "eventBus", void 0);
46
+ WorkspaceEditServiceImpl = (0, tslib_1.__decorate)([
47
+ (0, di_1.Injectable)()
48
+ ], WorkspaceEditServiceImpl);
49
+ exports.WorkspaceEditServiceImpl = WorkspaceEditServiceImpl;
50
+ class BulkEdit {
51
+ constructor() {
52
+ this.edits = [];
53
+ }
54
+ async apply(documentModelService, editorService, workspaceFS, eventBus) {
55
+ for (const edit of this.edits) {
56
+ if (edit instanceof ResourceFileEdit) {
57
+ await edit.apply(documentModelService, editorService, workspaceFS, eventBus);
58
+ }
59
+ else {
60
+ await edit.apply(documentModelService, editorService);
61
+ }
62
+ }
63
+ }
64
+ add(edit) {
65
+ if (isResourceFileEdit(edit)) {
66
+ this.edits.push(new ResourceFileEdit(edit));
67
+ }
68
+ else {
69
+ const last = this.edits[this.edits.length - 1];
70
+ const textEdit = edit;
71
+ if (last && !isResourceFileEdit(last)) {
72
+ // 合并连续同目标的edits
73
+ if (last.resource.toString() === textEdit.resource.toString()) {
74
+ let shouldMerge = false;
75
+ if (last.versionId) {
76
+ if (textEdit.versionId) {
77
+ shouldMerge = textEdit.versionId === last.versionId;
78
+ }
79
+ else {
80
+ shouldMerge = true;
81
+ }
82
+ }
83
+ else {
84
+ if (!textEdit.versionId) {
85
+ shouldMerge = true;
86
+ }
87
+ }
88
+ if (shouldMerge) {
89
+ last.addEdit(edit);
90
+ return;
91
+ }
92
+ }
93
+ }
94
+ this.edits.push(new ResourceTextEditTask(edit));
95
+ }
96
+ }
97
+ revert(onlyFileEdits) {
98
+ }
99
+ }
100
+ exports.BulkEdit = BulkEdit;
101
+ class ResourceTextEditTask {
102
+ constructor(edit) {
103
+ this.options = {};
104
+ this.resource = edit.resource;
105
+ this.versionId = edit.versionId;
106
+ this.options = edit.options || {};
107
+ this.edits = [edit];
108
+ }
109
+ addEdit(edit) {
110
+ this.edits.push(edit);
111
+ }
112
+ async apply(documentModelService, editorService) {
113
+ const docRef = await documentModelService.createModelReference(this.resource, 'bulk-edit');
114
+ const documentModel = docRef.instance;
115
+ const monacoModel = documentModel.getMonacoModel();
116
+ if (this.versionId) {
117
+ if (monacoModel.getVersionId() !== this.versionId) {
118
+ throw new Error('文档版本不一致,无法执行变更');
119
+ }
120
+ }
121
+ const edits = [];
122
+ let newEOL;
123
+ for (const edit of this.edits) {
124
+ if (edit.textEdit.eol && !(0, ide_core_browser_1.isUndefined)(edit.textEdit.eol)) {
125
+ newEOL = edit.textEdit.eol;
126
+ }
127
+ edits.push({
128
+ forceMoveMarkers: true,
129
+ range: range_1.Range.lift(edit.textEdit.range),
130
+ text: edit.textEdit.text,
131
+ });
132
+ }
133
+ if (edits.length > 0) {
134
+ monacoModel.pushStackElement();
135
+ monacoModel.pushEditOperations([], edits, () => []);
136
+ monacoModel.pushStackElement();
137
+ }
138
+ if (newEOL && !(0, ide_core_browser_1.isUndefined)(newEOL)) {
139
+ monacoModel.pushStackElement();
140
+ documentModel.eol = newEOL === types_1.EndOfLineSequence.CRLF ? "\r\n" /* CRLF */ : "\n" /* LF */;
141
+ monacoModel.pushStackElement();
142
+ }
143
+ const shouldSave = await this.editorOperation(editorService);
144
+ if (shouldSave) {
145
+ documentModel.save();
146
+ }
147
+ docRef.dispose();
148
+ }
149
+ // 返回是否保存
150
+ async editorOperation(editorService) {
151
+ if (this.options.openDirtyInEditor) {
152
+ for (const group of editorService.editorGroups) {
153
+ if (group.resources.findIndex((r) => isDocumentUriInResource(r, this.resource)) !== -1) {
154
+ return false;
155
+ }
156
+ }
157
+ editorService.open(this.resource, { backend: true });
158
+ return false;
159
+ }
160
+ else if (this.options.dirtyIfInEditor) {
161
+ for (const group of editorService.editorGroups) {
162
+ if (group.resources.findIndex((r) => isDocumentUriInResource(r, this.resource)) !== -1) {
163
+ return false;
164
+ }
165
+ }
166
+ }
167
+ return true;
168
+ }
169
+ async revert() {
170
+ }
171
+ }
172
+ exports.ResourceTextEditTask = ResourceTextEditTask;
173
+ class ResourceFileEdit {
174
+ constructor(edit) {
175
+ this.options = {};
176
+ this.oldResource = edit.oldResource;
177
+ this.newResource = edit.newResource;
178
+ this.options = edit.options;
179
+ }
180
+ async notifyEditor(editorService, documentModelService) {
181
+ if (this.oldResource && this.newResource) {
182
+ const promises = [];
183
+ const urisToDealWith = new Set();
184
+ editorService.editorGroups.forEach((g) => {
185
+ g.resources.forEach((r) => {
186
+ if (this.oldResource.isEqualOrParent(r.uri)) {
187
+ urisToDealWith.add(r.uri.toString());
188
+ }
189
+ });
190
+ });
191
+ urisToDealWith.forEach((uriString) => {
192
+ const oldResource = new ide_core_browser_1.URI(uriString);
193
+ const subPath = uriString.substr(this.oldResource.toString().length);
194
+ const newResource = new ide_core_browser_1.URI(this.newResource.toString() + subPath);
195
+ promises.push(this.notifyOnResource(oldResource, newResource, editorService, documentModelService));
196
+ });
197
+ return Promise.all(promises);
198
+ }
199
+ }
200
+ async notifyOnResource(oldResource, newResource, editorService, documentModelService) {
201
+ const docRef = documentModelService.getModelReference(oldResource, 'bulk-file-move');
202
+ let dirtyContent;
203
+ let dirtyEOL;
204
+ if (docRef && docRef.instance.dirty) {
205
+ dirtyContent = docRef.instance.getText();
206
+ dirtyEOL = docRef.instance.eol;
207
+ await docRef.instance.revert(true);
208
+ }
209
+ if (docRef) {
210
+ docRef.dispose();
211
+ }
212
+ // 如果之前的文件在编辑器中被打开,重新打开文件
213
+ await Promise.all([editorService.editorGroups.map(async (g) => {
214
+ const index = g.resources.findIndex((r) => r.uri.isEqual(oldResource));
215
+ if (index !== -1) {
216
+ await (0, mobx_1.runInAction)(async () => {
217
+ await g.open(newResource, {
218
+ index,
219
+ backend: !(g.currentResource && g.currentResource.uri.isEqual(oldResource)),
220
+ // 如果旧的是preview模式,应该保持,如果不是,应该不要关闭其他处于preview模式的资源tab
221
+ preview: g.previewURI ? g.previewURI.isEqual(oldResource) : false,
222
+ });
223
+ await g.close(oldResource);
224
+ });
225
+ }
226
+ })]);
227
+ if (dirtyContent) {
228
+ const newDocRef = await documentModelService.createModelReference(newResource, 'bulk-file-move');
229
+ newDocRef.instance.updateContent(dirtyContent, dirtyEOL);
230
+ newDocRef.dispose();
231
+ }
232
+ }
233
+ async apply(documentModelService, editorService, workspaceFS, eventBus) {
234
+ const options = this.options || {};
235
+ if (this.newResource && this.oldResource) {
236
+ if (options.copy) {
237
+ await workspaceFS.copy([{ source: this.oldResource.codeUri, target: this.newResource.codeUri }], options);
238
+ }
239
+ else {
240
+ // rename
241
+ await workspaceFS.move([{ source: this.oldResource.codeUri, target: this.newResource.codeUri }], options);
242
+ await this.notifyEditor(editorService, documentModelService);
243
+ // TODO: 文件夹rename应该带传染性, 但是遍历实现比较坑,先不实现
244
+ eventBus.fire(new common_1.WorkspaceEditDidRenameFileEvent({ oldUri: this.oldResource, newUri: this.newResource }));
245
+ }
246
+ if (options.showInEditor) {
247
+ editorService.open(this.newResource);
248
+ }
249
+ }
250
+ else if (!this.newResource && this.oldResource) {
251
+ // 删除文件
252
+ try {
253
+ // electron windows下moveToTrash大量文件会导致IDE卡死,如果检测到这个情况就不使用moveToTrash
254
+ await workspaceFS.delete([this.oldResource], { useTrash: !(ide_core_browser_1.isWindows && this.oldResource.path.name === 'node_modules') });
255
+ // 默认recursive
256
+ await editorService.close(this.oldResource, true);
257
+ eventBus.fire(new common_1.WorkspaceEditDidDeleteFileEvent({ oldUri: this.oldResource }));
258
+ }
259
+ catch (err) {
260
+ if (common_2.FileSystemError.FileNotFound.is(err) && options.ignoreIfNotExists) {
261
+ // 不抛出错误
262
+ }
263
+ else {
264
+ throw err;
265
+ }
266
+ }
267
+ }
268
+ else if (this.newResource && !this.oldResource) {
269
+ // 创建文件
270
+ try {
271
+ if (options.isDirectory) {
272
+ await workspaceFS.createFolder(this.newResource);
273
+ }
274
+ else {
275
+ await workspaceFS.create(this.newResource, '', { overwrite: options.overwrite });
276
+ }
277
+ }
278
+ catch (err) {
279
+ // FIXME: 不知道为什么这里错误不是 FileSystemError 了,所以换个实现兼容一下
280
+ if (this.isFileExistError(err) && options.ignoreIfExists) {
281
+ // 不抛出错误
282
+ }
283
+ else {
284
+ throw err;
285
+ }
286
+ }
287
+ if (!options.isDirectory && options.showInEditor) {
288
+ editorService.open(this.newResource);
289
+ }
290
+ }
291
+ }
292
+ isFileExistError(err) {
293
+ return err.message.includes('already exists.');
294
+ }
295
+ async revert() {
296
+ }
297
+ }
298
+ exports.ResourceFileEdit = ResourceFileEdit;
299
+ function isResourceFileEdit(thing) {
300
+ return (!!(thing.newResource) || !!(thing.oldResource));
301
+ }
302
+ exports.isResourceFileEdit = isResourceFileEdit;
303
+ /**
304
+ * 当前编辑器的文档是否在指定的编辑器 resource (tab) 中
305
+ * 此处需要额外判断一下 diffEditor 的情况
306
+ * @param resource
307
+ * @param uri
308
+ */
309
+ function isDocumentUriInResource(resource, uri) {
310
+ var _a, _b;
311
+ if ((0, browser_1.isDiffResource)(resource)) {
312
+ return ((_a = resource.metadata) === null || _a === void 0 ? void 0 : _a.modified.isEqual(uri)) || ((_b = resource.metadata) === null || _b === void 0 ? void 0 : _b.original.isEqual(uri));
313
+ }
314
+ else {
315
+ return resource.uri.isEqual(uri);
316
+ }
317
+ }
318
+ //# sourceMappingURL=workspace-edit.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-edit.service.js","sourceRoot":"","sources":["../../src/browser/workspace-edit.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { URI, Uri, Disposable, IDisposable, Event, FileStat } from '@opensumi/ide-core-common';
2
+ import { IProgressService } from '@opensumi/ide-core-browser/lib/progress';
3
+ import { FileOperation, IWorkspaceFileOperationParticipant, IWorkspaceFileService, SourceTargetPair, WorkspaceFileEvent } from '..';
4
+ export declare class WorkspaceFileOperationParticipant extends Disposable {
5
+ progressService: IProgressService;
6
+ participants: IWorkspaceFileOperationParticipant[];
7
+ registerParticipant(participant: IWorkspaceFileOperationParticipant): IDisposable;
8
+ participate(files: {
9
+ source?: Uri;
10
+ target: Uri;
11
+ }[], operation: FileOperation): Promise<void>;
12
+ dispose(): void;
13
+ }
14
+ export declare class WorkspaceFileService implements IWorkspaceFileService {
15
+ private readonly fileService;
16
+ private readonly fileOperationParticipants;
17
+ private correlationIds;
18
+ private readonly _onWillRunWorkspaceFileOperation;
19
+ readonly onWillRunWorkspaceFileOperation: Event<WorkspaceFileEvent>;
20
+ private readonly _onDidFailWorkspaceFileOperation;
21
+ readonly onDidFailWorkspaceFileOperation: Event<WorkspaceFileEvent>;
22
+ private readonly _onDidRunWorkspaceFileOperation;
23
+ readonly onDidRunWorkspaceFileOperation: Event<WorkspaceFileEvent>;
24
+ create(resource: URI, contents?: string, options?: {
25
+ overwrite?: boolean;
26
+ }): Promise<FileStat>;
27
+ createFolder(resource: URI): Promise<FileStat>;
28
+ move(files: Required<SourceTargetPair>[], options?: {
29
+ overwrite?: boolean;
30
+ }): Promise<FileStat[]>;
31
+ copy(files: Required<SourceTargetPair>[], options?: {
32
+ overwrite?: boolean;
33
+ }): Promise<FileStat[]>;
34
+ delete(resources: URI[], options?: {
35
+ useTrash?: boolean;
36
+ recursive?: boolean;
37
+ }): Promise<void>;
38
+ registerFileOperationParticipant(participant: IWorkspaceFileOperationParticipant): IDisposable;
39
+ private runOperationParticipant;
40
+ private doMoveOrCopy;
41
+ private doCreate;
42
+ }
43
+ //# sourceMappingURL=workspace-file.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-file.service.d.ts","sourceRoot":"","sources":["../../src/browser/workspace-file.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,GAAG,EAA8C,UAAU,EAAE,WAAW,EAAgC,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACzK,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAA0B,kCAAkC,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,IAAI,CAAC;AAE5J,qBACa,iCAAkC,SAAQ,UAAU;IAE/D,eAAe,EAAE,gBAAgB,CAAC;IAElC,YAAY,EAAE,kCAAkC,EAAE,CAAM;IAExD,mBAAmB,CAAC,WAAW,EAAE,kCAAkC,GAAG,WAAW;IAU3E,WAAW,CAAC,KAAK,EAAE;QAAE,MAAM,CAAC,EAAE,GAAG,CAAC;QAAC,MAAM,EAAE,GAAG,CAAA;KAAE,EAAE,EAAE,SAAS,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAelG,OAAO;CAGR;AAED,qBACa,oBAAqB,YAAW,qBAAqB;IAEhE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IAGjD,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAoC;IAE9E,OAAO,CAAC,cAAc,CAAK;IAE3B,OAAO,CAAC,QAAQ,CAAC,gCAAgC,CAA0C;IAC3F,SAAgB,+BAA+B,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAA+C;IAEzH,OAAO,CAAC,QAAQ,CAAC,gCAAgC,CAA0C;IAC3F,SAAgB,+BAA+B,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAA+C;IAEzH,OAAO,CAAC,QAAQ,CAAC,+BAA+B,CAA0C;IAC1F,SAAgB,8BAA8B,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAA8C;IAEhH,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE;IAI1E,YAAY,CAAC,QAAQ,EAAE,GAAG;IAI1B,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAIjG,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAI3F,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BpG,gCAAgC,CAAC,WAAW,EAAE,kCAAkC,GAAG,WAAW;IAIrG,OAAO,CAAC,uBAAuB;YAIjB,YAAY;YAkCZ,QAAQ;CA4BvB"}