@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.
- package/lib/browser/bulk-edit.service.d.ts +18 -0
- package/lib/browser/bulk-edit.service.d.ts.map +1 -0
- package/lib/browser/bulk-edit.service.js +120 -0
- package/lib/browser/bulk-edit.service.js.map +1 -0
- package/lib/browser/index.d.ts +18 -0
- package/lib/browser/index.d.ts.map +1 -0
- package/lib/browser/index.js +112 -0
- package/lib/browser/index.js.map +1 -0
- package/lib/browser/refactor-preview.d.ts +6 -0
- package/lib/browser/refactor-preview.d.ts.map +1 -0
- package/lib/browser/refactor-preview.js +129 -0
- package/lib/browser/refactor-preview.js.map +1 -0
- package/lib/browser/refactor-preview.service.d.ts +31 -0
- package/lib/browser/refactor-preview.service.d.ts.map +1 -0
- package/lib/browser/refactor-preview.service.js +123 -0
- package/lib/browser/refactor-preview.service.js.map +1 -0
- package/lib/browser/refactor_preview.module.less +49 -0
- package/lib/browser/utils.d.ts +4 -0
- package/lib/browser/utils.d.ts.map +1 -0
- package/lib/browser/utils.js +16 -0
- package/lib/browser/utils.js.map +1 -0
- package/lib/browser/workspace-edit.service.d.ts +54 -0
- package/lib/browser/workspace-edit.service.d.ts.map +1 -0
- package/lib/browser/workspace-edit.service.js +318 -0
- package/lib/browser/workspace-edit.service.js.map +1 -0
- package/lib/browser/workspace-file.service.d.ts +43 -0
- package/lib/browser/workspace-file.service.d.ts.map +1 -0
- package/lib/browser/workspace-file.service.js +166 -0
- package/lib/browser/workspace-file.service.js.map +1 -0
- package/lib/common/index.d.ts +123 -0
- package/lib/common/index.d.ts.map +1 -0
- package/lib/common/index.js +16 -0
- package/lib/common/index.js.map +1 -0
- package/lib/index.d.ts +3 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +6 -0
- package/lib/index.js.map +1 -0
- package/package.json +32 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as monaco from '@opensumi/monaco-editor-core/esm/vs/editor/editor.api';
|
|
2
|
+
import type { IBulkEditPreviewHandler, IBulkEditResult, IBulkEditService, IBulkEditOptions } from '@opensumi/monaco-editor-core/esm/vs/editor/browser/services/bulkEditService';
|
|
3
|
+
import { ResourceEdit } from '@opensumi/monaco-editor-core/esm/vs/editor/browser/services/bulkEditService';
|
|
4
|
+
import { IWorkspaceEditService } from '../common';
|
|
5
|
+
export declare class MonacoBulkEditService implements IBulkEditService {
|
|
6
|
+
_serviceBrand: undefined;
|
|
7
|
+
workspaceEditService: IWorkspaceEditService;
|
|
8
|
+
private readonly logger;
|
|
9
|
+
private _previewHandler?;
|
|
10
|
+
protected getAriaSummary(totalEdits: number, totalFiles: number): string;
|
|
11
|
+
apply(resourceEdits: ResourceEdit[], options?: IBulkEditOptions): Promise<IBulkEditResult & {
|
|
12
|
+
success: boolean;
|
|
13
|
+
}>;
|
|
14
|
+
hasPreviewHandler(): boolean;
|
|
15
|
+
setPreviewHandler(handler: IBulkEditPreviewHandler): monaco.IDisposable;
|
|
16
|
+
private convertWorkspaceEdit;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=bulk-edit.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bulk-edit.service.d.ts","sourceRoot":"","sources":["../../src/browser/bulk-edit.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,uDAAuD,CAAC;AAChF,OAAO,KAAK,EAAE,uBAAuB,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,6EAA6E,CAAC;AAChL,OAAO,EAAE,YAAY,EAAsC,MAAM,6EAA6E,CAAC;AAI/I,OAAO,EAAkB,qBAAqB,EAAwC,MAAM,WAAW,CAAC;AAmBxG,qBACa,qBAAsB,YAAW,gBAAgB;IAC5D,aAAa,EAAE,SAAS,CAAC;IAGzB,oBAAoB,EAAE,qBAAqB,CAAC;IAG5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IAEjC,OAAO,CAAC,eAAe,CAAC,CAA0B;IAElD,SAAS,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM;IAUlE,KAAK,CAAC,aAAa,EAAE,YAAY,EAAE,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,GAAG;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IA0BvH,iBAAiB,IAAI,OAAO;IAI5B,iBAAiB,CAAC,OAAO,EAAE,uBAAuB,GAAG,MAAM,CAAC,WAAW;IAgBvE,OAAO,CAAC,oBAAoB;CA8B7B"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MonacoBulkEditService = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const bulkEditService_1 = require("@opensumi/monaco-editor-core/esm/vs/editor/browser/services/bulkEditService");
|
|
6
|
+
const di_1 = require("@opensumi/di");
|
|
7
|
+
const ide_core_common_1 = require("@opensumi/ide-core-common");
|
|
8
|
+
const common_1 = require("../common");
|
|
9
|
+
const utils_1 = require("./utils");
|
|
10
|
+
function reviveWorkspaceEditDto2(data) {
|
|
11
|
+
if (!data || data.length === 0) {
|
|
12
|
+
return [];
|
|
13
|
+
}
|
|
14
|
+
const result = [];
|
|
15
|
+
for (const edit of (0, ide_core_common_1.revive)(data)) {
|
|
16
|
+
if ((0, utils_1.isResourceFileEdit)(edit)) {
|
|
17
|
+
result.push(new bulkEditService_1.ResourceFileEdit(edit.oldResource, edit.newResource, edit.options, edit.metadata));
|
|
18
|
+
}
|
|
19
|
+
else if ((0, utils_1.isResourceTextEdit)(edit)) {
|
|
20
|
+
result.push(new bulkEditService_1.ResourceTextEdit(edit.resource, edit.textEdit, edit.versionId, edit.metadata));
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return result;
|
|
24
|
+
}
|
|
25
|
+
let MonacoBulkEditService = class MonacoBulkEditService {
|
|
26
|
+
getAriaSummary(totalEdits, totalFiles) {
|
|
27
|
+
if (totalEdits === 0) {
|
|
28
|
+
return 'Made no edits';
|
|
29
|
+
}
|
|
30
|
+
if (totalEdits > 1 && totalFiles > 1) {
|
|
31
|
+
return `Made ${totalEdits} text edits in ${totalFiles} files`;
|
|
32
|
+
}
|
|
33
|
+
return `Made ${totalEdits} text edits in one file`;
|
|
34
|
+
}
|
|
35
|
+
async apply(resourceEdits, options) {
|
|
36
|
+
let edits = reviveWorkspaceEditDto2(resourceEdits);
|
|
37
|
+
if ((options === null || options === void 0 ? void 0 : options.showPreview) && this._previewHandler) {
|
|
38
|
+
try {
|
|
39
|
+
edits = await this._previewHandler(edits, options);
|
|
40
|
+
}
|
|
41
|
+
catch (err) {
|
|
42
|
+
this.logger.error(`Handle refactor preview error: \n ${err.message || err}`);
|
|
43
|
+
return { ariaSummary: err.message, success: false };
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
try {
|
|
47
|
+
const { workspaceEdit, totalEdits, totalFiles } = this.convertWorkspaceEdit(edits);
|
|
48
|
+
await this.workspaceEditService.apply(workspaceEdit);
|
|
49
|
+
return {
|
|
50
|
+
ariaSummary: this.getAriaSummary(totalEdits, totalFiles),
|
|
51
|
+
success: true,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
const errMsg = `Error applying workspace edits: ${err.toString()}`;
|
|
56
|
+
this.logger.error(errMsg);
|
|
57
|
+
return { ariaSummary: errMsg, success: false };
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
hasPreviewHandler() {
|
|
61
|
+
return Boolean(this._previewHandler);
|
|
62
|
+
}
|
|
63
|
+
setPreviewHandler(handler) {
|
|
64
|
+
this._previewHandler = handler;
|
|
65
|
+
const disposePreviewHandler = () => {
|
|
66
|
+
if (this._previewHandler === handler) {
|
|
67
|
+
this._previewHandler = undefined;
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
return {
|
|
71
|
+
dispose() {
|
|
72
|
+
disposePreviewHandler();
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
convertWorkspaceEdit(edit) {
|
|
77
|
+
const workspaceEdit = { edits: [] };
|
|
78
|
+
let totalEdits = 0;
|
|
79
|
+
let totalFiles = 0;
|
|
80
|
+
for (const resourceEdit of edit) {
|
|
81
|
+
if (resourceEdit.resource) {
|
|
82
|
+
const resourceTextEdit = resourceEdit;
|
|
83
|
+
const tmp = {
|
|
84
|
+
resource: ide_core_common_1.URI.from(resourceTextEdit.resource),
|
|
85
|
+
textEdit: resourceTextEdit.textEdit,
|
|
86
|
+
options: {
|
|
87
|
+
dirtyIfInEditor: true,
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
workspaceEdit.edits.push(tmp);
|
|
91
|
+
totalEdits += 1;
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
const resourceFileEdit = resourceEdit;
|
|
95
|
+
const { oldResource, newResource, options = {} } = resourceFileEdit;
|
|
96
|
+
const tmp = {
|
|
97
|
+
oldResource: oldResource ? ide_core_common_1.URI.from(oldResource) : undefined,
|
|
98
|
+
newResource: newResource ? ide_core_common_1.URI.from(newResource) : undefined,
|
|
99
|
+
options,
|
|
100
|
+
};
|
|
101
|
+
workspaceEdit.edits.push(tmp);
|
|
102
|
+
totalFiles += 1;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return { workspaceEdit, totalEdits, totalFiles };
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
(0, tslib_1.__decorate)([
|
|
109
|
+
(0, di_1.Autowired)(common_1.IWorkspaceEditService),
|
|
110
|
+
(0, tslib_1.__metadata)("design:type", Object)
|
|
111
|
+
], MonacoBulkEditService.prototype, "workspaceEditService", void 0);
|
|
112
|
+
(0, tslib_1.__decorate)([
|
|
113
|
+
(0, di_1.Autowired)(ide_core_common_1.ILogger),
|
|
114
|
+
(0, tslib_1.__metadata)("design:type", Object)
|
|
115
|
+
], MonacoBulkEditService.prototype, "logger", void 0);
|
|
116
|
+
MonacoBulkEditService = (0, tslib_1.__decorate)([
|
|
117
|
+
(0, di_1.Injectable)()
|
|
118
|
+
], MonacoBulkEditService);
|
|
119
|
+
exports.MonacoBulkEditService = MonacoBulkEditService;
|
|
120
|
+
//# sourceMappingURL=bulk-edit.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bulk-edit.service.js","sourceRoot":"","sources":["../../src/browser/bulk-edit.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Provider } from '@opensumi/di';
|
|
2
|
+
import { BrowserModule, MonacoContribution, ILogger, TabBarToolbarContribution, ToolbarRegistry, CommandContribution, MonacoOverrideServiceRegistry } from '@opensumi/ide-core-browser';
|
|
3
|
+
import { CommandRegistry } from '@opensumi/ide-core-common';
|
|
4
|
+
import { IBulkEditServiceShape } from '../common';
|
|
5
|
+
import { IRefactorPreviewService } from './refactor-preview.service';
|
|
6
|
+
export declare class WorkspaceEditModule extends BrowserModule {
|
|
7
|
+
providers: Provider[];
|
|
8
|
+
}
|
|
9
|
+
export declare class WorkspaceEditContribution implements MonacoContribution, TabBarToolbarContribution, CommandContribution {
|
|
10
|
+
protected readonly bulkEditService: IBulkEditServiceShape;
|
|
11
|
+
protected readonly logger: ILogger;
|
|
12
|
+
protected readonly refactorPreviewService: IRefactorPreviewService;
|
|
13
|
+
private previewEdit;
|
|
14
|
+
registerOverrideService(registry: MonacoOverrideServiceRegistry): void;
|
|
15
|
+
registerToolbarItems(registry: ToolbarRegistry): void;
|
|
16
|
+
registerCommands(registry: CommandRegistry): void;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAyB,MAAM,cAAc,CAAC;AAG/D,OAAO,EAAE,aAAa,EAAU,kBAAkB,EAAgB,OAAO,EAAE,yBAAyB,EAAE,eAAe,EAAY,mBAAmB,EAAW,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AACjO,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D,OAAO,EAAE,qBAAqB,EAAgD,MAAM,WAAW,CAAC;AAIhG,OAAO,EAAE,uBAAuB,EAA6C,MAAM,4BAA4B,CAAC;AAKhH,qBACa,mBAAoB,SAAQ,aAAa;IACpD,SAAS,EAAE,QAAQ,EAAE,CAkBnB;CACH;AAED,qBACa,yBAA0B,YAAW,kBAAkB,EAAE,yBAAyB,EAAE,mBAAmB;IAGlH,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,qBAAqB,CAAC;IAG1D,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAGnC,SAAS,CAAC,QAAQ,CAAC,sBAAsB,EAAE,uBAAuB,CAAC;YAErD,WAAW;IAczB,uBAAuB,CAAC,QAAQ,EAAE,6BAA6B;IAM/D,oBAAoB,CAAC,QAAQ,EAAE,eAAe;IAgB9C,gBAAgB,CAAC,QAAQ,EAAE,eAAe;CAoB3C"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WorkspaceEditContribution = exports.WorkspaceEditModule = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const di_1 = require("@opensumi/di");
|
|
6
|
+
const ide_core_browser_1 = require("@opensumi/ide-core-browser");
|
|
7
|
+
const common_1 = require("../common");
|
|
8
|
+
const workspace_edit_service_1 = require("./workspace-edit.service");
|
|
9
|
+
const bulk_edit_service_1 = require("./bulk-edit.service");
|
|
10
|
+
const workspace_file_service_1 = require("./workspace-file.service");
|
|
11
|
+
const refactor_preview_service_1 = require("./refactor-preview.service");
|
|
12
|
+
const ClearEditsId = 'refactor-preview.clear.edits';
|
|
13
|
+
const ApplyEditsId = 'refactor-preview.apply.edits';
|
|
14
|
+
let WorkspaceEditModule = class WorkspaceEditModule extends ide_core_browser_1.BrowserModule {
|
|
15
|
+
constructor() {
|
|
16
|
+
super(...arguments);
|
|
17
|
+
this.providers = [
|
|
18
|
+
{
|
|
19
|
+
token: common_1.IWorkspaceEditService,
|
|
20
|
+
useClass: workspace_edit_service_1.WorkspaceEditServiceImpl,
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
token: common_1.IWorkspaceFileService,
|
|
24
|
+
useClass: workspace_file_service_1.WorkspaceFileService,
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
token: refactor_preview_service_1.IRefactorPreviewService,
|
|
28
|
+
useClass: refactor_preview_service_1.RefactorPreviewServiceImpl,
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
token: common_1.IBulkEditServiceShape,
|
|
32
|
+
useClass: bulk_edit_service_1.MonacoBulkEditService,
|
|
33
|
+
},
|
|
34
|
+
WorkspaceEditContribution,
|
|
35
|
+
];
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
WorkspaceEditModule = (0, tslib_1.__decorate)([
|
|
39
|
+
(0, di_1.Injectable)()
|
|
40
|
+
], WorkspaceEditModule);
|
|
41
|
+
exports.WorkspaceEditModule = WorkspaceEditModule;
|
|
42
|
+
let WorkspaceEditContribution = class WorkspaceEditContribution {
|
|
43
|
+
async previewEdit(edits, options) {
|
|
44
|
+
try {
|
|
45
|
+
const filteredEdits = await this.refactorPreviewService.previewEdits(edits);
|
|
46
|
+
return filteredEdits;
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
if (!err) {
|
|
50
|
+
// Canceled
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
this.logger.error(`Preview textEdit error: \n ${err.message}`);
|
|
54
|
+
}
|
|
55
|
+
return edits;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
registerOverrideService(registry) {
|
|
59
|
+
// Monaco BulkEditService
|
|
60
|
+
registry.registerOverrideService(ide_core_browser_1.ServiceNames.BULK_EDIT_SERVICE, this.bulkEditService);
|
|
61
|
+
this.bulkEditService.setPreviewHandler(this.previewEdit.bind(this));
|
|
62
|
+
}
|
|
63
|
+
registerToolbarItems(registry) {
|
|
64
|
+
registry.registerItem({
|
|
65
|
+
id: ClearEditsId,
|
|
66
|
+
viewId: refactor_preview_service_1.PreviewViewId,
|
|
67
|
+
command: ClearEditsId,
|
|
68
|
+
tooltip: (0, ide_core_browser_1.localize)('refactor-preview.title.clear'),
|
|
69
|
+
});
|
|
70
|
+
registry.registerItem({
|
|
71
|
+
id: ApplyEditsId,
|
|
72
|
+
viewId: refactor_preview_service_1.PreviewViewId,
|
|
73
|
+
command: ApplyEditsId,
|
|
74
|
+
tooltip: (0, ide_core_browser_1.localize)('refactor-preview.title.apply'),
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
registerCommands(registry) {
|
|
78
|
+
registry.registerCommand({
|
|
79
|
+
id: ClearEditsId,
|
|
80
|
+
iconClass: (0, ide_core_browser_1.getIcon)('clear'),
|
|
81
|
+
}, {
|
|
82
|
+
execute: () => {
|
|
83
|
+
this.refactorPreviewService.clearAllEdits();
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
registry.registerCommand({
|
|
87
|
+
id: ApplyEditsId,
|
|
88
|
+
iconClass: (0, ide_core_browser_1.getIcon)('check'),
|
|
89
|
+
}, {
|
|
90
|
+
execute: () => {
|
|
91
|
+
this.refactorPreviewService.applyEdits();
|
|
92
|
+
},
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
(0, tslib_1.__decorate)([
|
|
97
|
+
(0, di_1.Autowired)(common_1.IBulkEditServiceShape),
|
|
98
|
+
(0, tslib_1.__metadata)("design:type", Object)
|
|
99
|
+
], WorkspaceEditContribution.prototype, "bulkEditService", void 0);
|
|
100
|
+
(0, tslib_1.__decorate)([
|
|
101
|
+
(0, di_1.Autowired)(ide_core_browser_1.ILogger),
|
|
102
|
+
(0, tslib_1.__metadata)("design:type", Object)
|
|
103
|
+
], WorkspaceEditContribution.prototype, "logger", void 0);
|
|
104
|
+
(0, tslib_1.__decorate)([
|
|
105
|
+
(0, di_1.Autowired)(refactor_preview_service_1.IRefactorPreviewService),
|
|
106
|
+
(0, tslib_1.__metadata)("design:type", Object)
|
|
107
|
+
], WorkspaceEditContribution.prototype, "refactorPreviewService", void 0);
|
|
108
|
+
WorkspaceEditContribution = (0, tslib_1.__decorate)([
|
|
109
|
+
(0, ide_core_browser_1.Domain)(ide_core_browser_1.MonacoContribution, ide_core_browser_1.TabBarToolbarContribution, ide_core_browser_1.CommandContribution)
|
|
110
|
+
], WorkspaceEditContribution);
|
|
111
|
+
exports.WorkspaceEditContribution = WorkspaceEditContribution;
|
|
112
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refactor-preview.d.ts","sourceRoot":"","sources":["../../src/browser/refactor-preview.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B,OAAO,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAsLlE,eAAO,MAAM,eAAe;eAC2B,SAAS;EAmB/D,CAAC"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RefactorPreview = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const monaco = (0, tslib_1.__importStar)(require("@opensumi/monaco-editor-core/esm/vs/editor/editor.api"));
|
|
6
|
+
const react_1 = (0, tslib_1.__importDefault)(require("react"));
|
|
7
|
+
const mobx_react_lite_1 = require("mobx-react-lite");
|
|
8
|
+
const paths = (0, tslib_1.__importStar)(require("@opensumi/ide-core-common/lib/path"));
|
|
9
|
+
const react_hooks_1 = require("@opensumi/ide-core-browser/lib/react-hooks");
|
|
10
|
+
const types_1 = require("@opensumi/ide-editor/lib/browser/doc-model/types");
|
|
11
|
+
const uri_1 = require("@opensumi/ide-core-common/lib/uri");
|
|
12
|
+
const recycle_list_1 = require("@opensumi/ide-components/lib/recycle-list");
|
|
13
|
+
const checkbox_1 = require("@opensumi/ide-components/lib/checkbox");
|
|
14
|
+
const label_service_1 = require("@opensumi/ide-core-browser/lib/services/label-service");
|
|
15
|
+
const refactor_preview_service_1 = require("./refactor-preview.service");
|
|
16
|
+
const refactor_preview_module_less_1 = (0, tslib_1.__importDefault)(require("./refactor_preview.module.less"));
|
|
17
|
+
const localize_1 = require("@opensumi/ide-core-common/lib/localize");
|
|
18
|
+
const utils_1 = require("./utils");
|
|
19
|
+
/**
|
|
20
|
+
* @param range
|
|
21
|
+
* @param textModel
|
|
22
|
+
* @example
|
|
23
|
+
* ```ts
|
|
24
|
+
* const str = `import path from 'path'`;
|
|
25
|
+
*
|
|
26
|
+
* const {
|
|
27
|
+
* leftPad, // import * as
|
|
28
|
+
* base, // path
|
|
29
|
+
* rightPad, // from 'path';
|
|
30
|
+
* } = splitLeftAndRightPadInTextModel(range\/** path range *\/, model);
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
function splitLeftAndRightPadInTextModel(range, textModel) {
|
|
34
|
+
const lineContent = textModel.getLineContent(range.startLineNumber);
|
|
35
|
+
const base = textModel.getValueInRange(range);
|
|
36
|
+
const leftPadRange = new monaco.Range(range.startLineNumber, 0, range.startLineNumber, range.startColumn);
|
|
37
|
+
const rightPadRange = new monaco.Range(range.endLineNumber, range.startColumn + base.length, range.endLineNumber, lineContent.length + 1);
|
|
38
|
+
const leftPad = textModel.getValueInRange(leftPadRange);
|
|
39
|
+
const rightPad = textModel.getValueInRange(rightPadRange);
|
|
40
|
+
return {
|
|
41
|
+
leftPad,
|
|
42
|
+
rightPad,
|
|
43
|
+
base,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
const ResourceIcon = (props) => {
|
|
47
|
+
const labelService = (0, react_hooks_1.useInjectable)(label_service_1.LabelService);
|
|
48
|
+
const iconClass = labelService.getIcon(uri_1.URI.from(props.uri));
|
|
49
|
+
return react_1.default.createElement("span", { className: `file-icon ${iconClass}` });
|
|
50
|
+
};
|
|
51
|
+
const TextEditNode = (0, mobx_react_lite_1.observer)(({ data: item }) => {
|
|
52
|
+
const modelService = (0, react_hooks_1.useInjectable)(types_1.IEditorDocumentModelService);
|
|
53
|
+
const refactorPreviewService = (0, react_hooks_1.useInjectable)(refactor_preview_service_1.IRefactorPreviewService);
|
|
54
|
+
const renderTextEditDiff = () => {
|
|
55
|
+
const model = modelService.getModelReference(uri_1.URI.from(item.resource));
|
|
56
|
+
if (!model) {
|
|
57
|
+
return react_1.default.createElement("div", { className: refactor_preview_module_less_1.default.refactor_preview_node_wrapper }, item.textEdit.text);
|
|
58
|
+
}
|
|
59
|
+
const textModel = model.instance.getMonacoModel();
|
|
60
|
+
const { leftPad, base, rightPad } = splitLeftAndRightPadInTextModel(item.textEdit.range, textModel);
|
|
61
|
+
return (react_1.default.createElement("div", { className: refactor_preview_module_less_1.default.refactor_preview_node_wrapper },
|
|
62
|
+
leftPad,
|
|
63
|
+
react_1.default.createElement("span", { className: refactor_preview_module_less_1.default.refactor_preview_node_base }, base),
|
|
64
|
+
react_1.default.createElement("span", { className: refactor_preview_module_less_1.default.refactor_preview_node_new }, item.textEdit.text),
|
|
65
|
+
rightPad));
|
|
66
|
+
};
|
|
67
|
+
return (react_1.default.createElement("div", { className: refactor_preview_module_less_1.default.resource_node, "data-workspace-edit-type": 'text' },
|
|
68
|
+
react_1.default.createElement(checkbox_1.CheckBox, { checked: refactorPreviewService.selectedFileOrTextEdits.has(item), onChange: (event) => {
|
|
69
|
+
refactorPreviewService.filterEdit(item, event.target.checked);
|
|
70
|
+
} }),
|
|
71
|
+
react_1.default.createElement(ResourceIcon, { uri: item.resource /* monaco#Uri */ }),
|
|
72
|
+
renderTextEditDiff(),
|
|
73
|
+
react_1.default.createElement("span", { className: refactor_preview_module_less_1.default.resource_node_path }, item.resource.path)));
|
|
74
|
+
});
|
|
75
|
+
function mapDescForFileEdit(edit) {
|
|
76
|
+
if (edit.newResource && edit.oldResource) {
|
|
77
|
+
// rename
|
|
78
|
+
return {
|
|
79
|
+
uri: edit.newResource,
|
|
80
|
+
desc: (0, localize_1.localize)('refactor-preview.file.move'),
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
if (edit.newResource && !edit.oldResource) {
|
|
84
|
+
// create
|
|
85
|
+
return {
|
|
86
|
+
uri: edit.newResource,
|
|
87
|
+
desc: (0, localize_1.localize)('refactor-preview.file.create'),
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
if (!edit.newResource && edit.oldResource) {
|
|
91
|
+
return {
|
|
92
|
+
uri: edit.oldResource,
|
|
93
|
+
desc: (0, localize_1.localize)('refactor-preview.file.delete'),
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
return undefined;
|
|
97
|
+
}
|
|
98
|
+
const FileEditNode = (0, mobx_react_lite_1.observer)(({ data: item }) => {
|
|
99
|
+
const refactorPreviewService = (0, react_hooks_1.useInjectable)(refactor_preview_service_1.IRefactorPreviewService);
|
|
100
|
+
const editDesc = mapDescForFileEdit(item);
|
|
101
|
+
if (editDesc === undefined) {
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
const filename = paths.basename(editDesc.uri.fsPath);
|
|
105
|
+
const dirname = paths.dirname(editDesc.uri.fsPath);
|
|
106
|
+
return (react_1.default.createElement("div", { className: refactor_preview_module_less_1.default.resource_node, "data-workspace-edit-type": 'file' },
|
|
107
|
+
react_1.default.createElement(checkbox_1.CheckBox, { checked: refactorPreviewService.selectedFileOrTextEdits.has(item), onChange: (event) => {
|
|
108
|
+
refactorPreviewService.filterEdit(item, event.target.checked);
|
|
109
|
+
} }),
|
|
110
|
+
react_1.default.createElement(ResourceIcon, { uri: editDesc.uri /* monaco#Uri */ }),
|
|
111
|
+
react_1.default.createElement("span", { className: refactor_preview_module_less_1.default.refactor_preview_node_wrapper }, filename),
|
|
112
|
+
react_1.default.createElement("span", { className: refactor_preview_module_less_1.default.resource_node_path },
|
|
113
|
+
dirname,
|
|
114
|
+
" (",
|
|
115
|
+
editDesc.desc,
|
|
116
|
+
")")));
|
|
117
|
+
});
|
|
118
|
+
const RefactorNode = (0, mobx_react_lite_1.observer)((_a) => {
|
|
119
|
+
var { data } = _a, restProps = (0, tslib_1.__rest)(_a, ["data"]);
|
|
120
|
+
if ((0, utils_1.isResourceFileEdit)(data)) {
|
|
121
|
+
return react_1.default.createElement(FileEditNode, Object.assign({ data: data }, restProps));
|
|
122
|
+
}
|
|
123
|
+
return react_1.default.createElement(TextEditNode, Object.assign({ data: data }, restProps));
|
|
124
|
+
});
|
|
125
|
+
exports.RefactorPreview = (0, mobx_react_lite_1.observer)(({ viewState }) => {
|
|
126
|
+
const refactorPreviewService = (0, react_hooks_1.useInjectable)(refactor_preview_service_1.IRefactorPreviewService);
|
|
127
|
+
return (react_1.default.createElement("div", null, refactorPreviewService.edits.length > 0 && (react_1.default.createElement(recycle_list_1.RecycleList, { itemHeight: 23, width: viewState.width, height: viewState.height, data: refactorPreviewService.edits, template: RefactorNode }))));
|
|
128
|
+
});
|
|
129
|
+
//# sourceMappingURL=refactor-preview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refactor-preview.js","sourceRoot":"","sources":["../../src/browser/refactor-preview.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Injector } from '@opensumi/di';
|
|
2
|
+
import { IMainLayoutService } from '@opensumi/ide-main-layout';
|
|
3
|
+
import type { WorkspaceFileEdit, WorkspaceTextEdit } from '@opensumi/monaco-editor-core/esm/vs/editor/common/modes';
|
|
4
|
+
import { ResourceEdit } from '@opensumi/monaco-editor-core/esm/vs/editor/browser/services/bulkEditService';
|
|
5
|
+
import { IDialogService } from '@opensumi/ide-overlay';
|
|
6
|
+
export declare const PreviewViewId = "RefactorPreview";
|
|
7
|
+
export interface IRefactorPreviewService {
|
|
8
|
+
edits: Array<WorkspaceTextEdit | WorkspaceFileEdit>;
|
|
9
|
+
selectedFileOrTextEdits: Set<WorkspaceTextEdit | WorkspaceFileEdit>;
|
|
10
|
+
previewEdits(edit: ResourceEdit[]): Promise<ResourceEdit[]>;
|
|
11
|
+
filterEdit(edit: WorkspaceTextEdit | WorkspaceFileEdit, checked: boolean): void;
|
|
12
|
+
applyEdits(): void;
|
|
13
|
+
clearAllEdits(): void;
|
|
14
|
+
}
|
|
15
|
+
export declare const IRefactorPreviewService: unique symbol;
|
|
16
|
+
export declare class RefactorPreviewServiceImpl implements IRefactorPreviewService {
|
|
17
|
+
edits: Array<WorkspaceTextEdit | WorkspaceFileEdit>;
|
|
18
|
+
selectedFileOrTextEdits: import("mobx").ObservableSet<WorkspaceTextEdit | WorkspaceFileEdit>;
|
|
19
|
+
protected readonly mainLayout: IMainLayoutService;
|
|
20
|
+
protected readonly dialogService: IDialogService;
|
|
21
|
+
protected readonly injector: Injector;
|
|
22
|
+
private previewDeferred;
|
|
23
|
+
private clear;
|
|
24
|
+
private registerRefactorPreviewView;
|
|
25
|
+
private togglePreviewView;
|
|
26
|
+
previewEdits(edits: ResourceEdit[]): Promise<ResourceEdit[]>;
|
|
27
|
+
filterEdit(edit: WorkspaceTextEdit | WorkspaceFileEdit, checked: boolean): void;
|
|
28
|
+
applyEdits(): void;
|
|
29
|
+
clearAllEdits(): void;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=refactor-preview.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refactor-preview.service.d.ts","sourceRoot":"","sources":["../../src/browser/refactor-preview.service.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,QAAQ,EAIT,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,yDAAyD,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,6EAA6E,CAAC;AAC3G,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAIvD,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAE/C,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,KAAK,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,CAAC;IACpD,uBAAuB,EAAE,GAAG,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,CAAC;IAEpE,YAAY,CACV,IAAI,EAAE,YAAY,EAAE,GACnB,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAE3B,UAAU,CAAC,IAAI,EAAE,iBAAiB,GAAG,iBAAiB,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAEhF,UAAU,IAAI,IAAI,CAAC;IAEnB,aAAa,IAAI,IAAI,CAAC;CACvB;AAED,eAAO,MAAM,uBAAuB,eAAoC,CAAC;AAEzE,qBACa,0BAA2B,YAAW,uBAAuB;IAGjE,KAAK,EAAE,KAAK,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,CAAM;IAEzD,uBAAuB,sEAG5B;IAGF,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IAGlD,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,cAAc,CAAC;IAGjD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAEtC,OAAO,CAAC,eAAe,CAEd;IAET,OAAO,CAAC,KAAK;IAOb,OAAO,CAAC,2BAA2B;IAoBnC,OAAO,CAAC,iBAAiB;IAWnB,YAAY,CAChB,KAAK,EAAE,YAAY,EAAE,GACpB,OAAO,CAAC,YAAY,EAAE,CAAC;IAoC1B,UAAU,CAAC,IAAI,EAAE,iBAAiB,GAAG,iBAAiB,EAAE,OAAO,EAAE,OAAO;IAQxE,UAAU,IAAI,IAAI;IAclB,aAAa,IAAI,IAAI;CAQtB"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RefactorPreviewServiceImpl = exports.IRefactorPreviewService = exports.PreviewViewId = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const react_1 = (0, tslib_1.__importDefault)(require("react"));
|
|
6
|
+
const di_1 = require("@opensumi/di");
|
|
7
|
+
const mobx_1 = require("mobx");
|
|
8
|
+
const ide_main_layout_1 = require("@opensumi/ide-main-layout");
|
|
9
|
+
const ide_overlay_1 = require("@opensumi/ide-overlay");
|
|
10
|
+
const ide_core_common_1 = require("@opensumi/ide-core-common");
|
|
11
|
+
const refactor_preview_1 = require("./refactor-preview");
|
|
12
|
+
exports.PreviewViewId = 'RefactorPreview';
|
|
13
|
+
exports.IRefactorPreviewService = Symbol('IRefactorPreviewService');
|
|
14
|
+
let RefactorPreviewServiceImpl = class RefactorPreviewServiceImpl {
|
|
15
|
+
constructor() {
|
|
16
|
+
this.edits = [];
|
|
17
|
+
this.selectedFileOrTextEdits = mobx_1.observable.set([], { deep: false });
|
|
18
|
+
}
|
|
19
|
+
clear() {
|
|
20
|
+
this.togglePreviewView(false);
|
|
21
|
+
this.edits = [];
|
|
22
|
+
this.previewDeferred = null;
|
|
23
|
+
this.selectedFileOrTextEdits.clear();
|
|
24
|
+
}
|
|
25
|
+
registerRefactorPreviewView() {
|
|
26
|
+
const handler = this.mainLayout.getTabbarHandler(exports.PreviewViewId);
|
|
27
|
+
if (handler) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
this.mainLayout.collectTabbarComponent([{
|
|
31
|
+
component: refactor_preview_1.RefactorPreview,
|
|
32
|
+
id: exports.PreviewViewId,
|
|
33
|
+
}], {
|
|
34
|
+
title: (0, ide_core_common_1.localize)('refactor-preview.title', 'REFACTOR PREVIEW'),
|
|
35
|
+
containerId: exports.PreviewViewId,
|
|
36
|
+
hidden: true,
|
|
37
|
+
}, 'bottom');
|
|
38
|
+
}
|
|
39
|
+
togglePreviewView(show) {
|
|
40
|
+
const handler = this.mainLayout.getTabbarHandler(exports.PreviewViewId);
|
|
41
|
+
if (!!show) {
|
|
42
|
+
handler === null || handler === void 0 ? void 0 : handler.show();
|
|
43
|
+
handler === null || handler === void 0 ? void 0 : handler.activate();
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
handler === null || handler === void 0 ? void 0 : handler.hide();
|
|
47
|
+
handler === null || handler === void 0 ? void 0 : handler.deactivate();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async previewEdits(edits) {
|
|
51
|
+
this.registerRefactorPreviewView();
|
|
52
|
+
if (this.previewDeferred) {
|
|
53
|
+
const continued = await this.dialogService.open(react_1.default.createElement("div", null,
|
|
54
|
+
(0, ide_core_common_1.localize)('refactor-preview.overlay.title'),
|
|
55
|
+
react_1.default.createElement("p", null, (0, ide_core_common_1.localize)('refactor-preview.overlay.detail'))), ide_core_common_1.MessageType.Warning, [
|
|
56
|
+
(0, ide_core_common_1.localize)('refactor-preview.overlay.cancel'),
|
|
57
|
+
(0, ide_core_common_1.localize)('refactor-preview.overlay.continue'),
|
|
58
|
+
]);
|
|
59
|
+
if (continued === (0, ide_core_common_1.localize)('refactor-preview.overlay.cancel')) {
|
|
60
|
+
return [];
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
this.togglePreviewView(true);
|
|
64
|
+
this.edits = edits;
|
|
65
|
+
// 默认全选
|
|
66
|
+
edits.forEach((edit) => {
|
|
67
|
+
this.selectedFileOrTextEdits.add(edit);
|
|
68
|
+
});
|
|
69
|
+
this.previewDeferred = new ide_core_common_1.Deferred();
|
|
70
|
+
return this.previewDeferred.promise;
|
|
71
|
+
}
|
|
72
|
+
filterEdit(edit, checked) {
|
|
73
|
+
if (checked) {
|
|
74
|
+
this.selectedFileOrTextEdits.add(edit);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
this.selectedFileOrTextEdits.delete(edit);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
applyEdits() {
|
|
81
|
+
if (!this.previewDeferred) {
|
|
82
|
+
// it's can not be happened
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
const candidate = this.edits.filter((edit) => this.selectedFileOrTextEdits.has(edit));
|
|
86
|
+
this.previewDeferred.resolve(candidate);
|
|
87
|
+
this.clear();
|
|
88
|
+
}
|
|
89
|
+
clearAllEdits() {
|
|
90
|
+
if (!this.previewDeferred) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
this.previewDeferred.resolve([]);
|
|
94
|
+
this.clear();
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
(0, tslib_1.__decorate)([
|
|
98
|
+
mobx_1.observable.shallow,
|
|
99
|
+
(0, tslib_1.__metadata)("design:type", Array)
|
|
100
|
+
], RefactorPreviewServiceImpl.prototype, "edits", void 0);
|
|
101
|
+
(0, tslib_1.__decorate)([
|
|
102
|
+
(0, di_1.Autowired)(ide_main_layout_1.IMainLayoutService),
|
|
103
|
+
(0, tslib_1.__metadata)("design:type", Object)
|
|
104
|
+
], RefactorPreviewServiceImpl.prototype, "mainLayout", void 0);
|
|
105
|
+
(0, tslib_1.__decorate)([
|
|
106
|
+
(0, di_1.Autowired)(ide_overlay_1.IDialogService),
|
|
107
|
+
(0, tslib_1.__metadata)("design:type", Object)
|
|
108
|
+
], RefactorPreviewServiceImpl.prototype, "dialogService", void 0);
|
|
109
|
+
(0, tslib_1.__decorate)([
|
|
110
|
+
(0, di_1.Autowired)(di_1.INJECTOR_TOKEN),
|
|
111
|
+
(0, tslib_1.__metadata)("design:type", di_1.Injector)
|
|
112
|
+
], RefactorPreviewServiceImpl.prototype, "injector", void 0);
|
|
113
|
+
(0, tslib_1.__decorate)([
|
|
114
|
+
mobx_1.action,
|
|
115
|
+
(0, tslib_1.__metadata)("design:type", Function),
|
|
116
|
+
(0, tslib_1.__metadata)("design:paramtypes", [Object, Boolean]),
|
|
117
|
+
(0, tslib_1.__metadata)("design:returntype", void 0)
|
|
118
|
+
], RefactorPreviewServiceImpl.prototype, "filterEdit", null);
|
|
119
|
+
RefactorPreviewServiceImpl = (0, tslib_1.__decorate)([
|
|
120
|
+
(0, di_1.Injectable)()
|
|
121
|
+
], RefactorPreviewServiceImpl);
|
|
122
|
+
exports.RefactorPreviewServiceImpl = RefactorPreviewServiceImpl;
|
|
123
|
+
//# sourceMappingURL=refactor-preview.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refactor-preview.service.js","sourceRoot":"","sources":["../../src/browser/refactor-preview.service.tsx"],"names":[],"mappings":"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"}
|