@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,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,6 @@
1
+ import React from 'react';
2
+ import { ViewState } from '@opensumi/ide-core-browser/lib/layout';
3
+ export declare const RefactorPreview: React.FunctionComponent<{
4
+ viewState: ViewState;
5
+ }>;
6
+ //# sourceMappingURL=refactor-preview.d.ts.map
@@ -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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"}