@opensumi/ide-file-scheme 3.1.4-next-1719541057.0 → 3.1.4-next-1721010662.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"external.view.d.ts","sourceRoot":"","sources":["../../src/browser/external.view.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAIxE,eAAO,MAAM,qBAAqB,EAAE,oBAAoB,CAAC,IAAI,CAa5D,CAAC"}
1
+ {"version":3,"file":"external.view.d.ts","sourceRoot":"","sources":["../../src/browser/external.view.tsx"],"names":[],"mappings":"AAKA,OAAO,EACL,oBAAoB,EAGrB,MAAM,kCAAkC,CAAC;AAI1C,eAAO,MAAM,qBAAqB,EAAE,oBAAoB,CAAC,IAAI,CAiC5D,CAAC"}
@@ -6,14 +6,35 @@ const react_1 = tslib_1.__importDefault(require("react"));
6
6
  const di_1 = require("@opensumi/di");
7
7
  const ide_core_browser_1 = require("@opensumi/ide-core-browser");
8
8
  const electron_1 = require("@opensumi/ide-core-common/lib/electron");
9
- const style_module_less_1 = tslib_1.__importDefault(require("./style.module.less"));
9
+ const browser_1 = require("@opensumi/ide-editor/lib/browser");
10
+ const prevent_view_1 = require("./prevent.view");
10
11
  const BinaryEditorComponent = (props) => {
11
12
  const srcPath = props.resource.uri.codeUri.fsPath;
12
13
  const injector = (0, ide_core_browser_1.useInjectable)(di_1.INJECTOR_TOKEN);
13
14
  const appConfig = (0, ide_core_browser_1.useInjectable)(ide_core_browser_1.AppConfig);
14
- return (react_1.default.createElement("div", { className: style_module_less_1.default.external },
15
- (0, ide_core_browser_1.localize)('editor.cannotOpenBinary'),
16
- appConfig.isElectronRenderer ? (react_1.default.createElement("a", { onClick: () => injector.get(electron_1.IElectronMainUIService).openPath(srcPath) }, (0, ide_core_browser_1.localize)('editor.openExternal'))) : null));
15
+ const editorService = (0, ide_core_browser_1.useInjectable)(browser_1.WorkbenchEditorService);
16
+ const eventBus = (0, ide_core_browser_1.useInjectable)(ide_core_browser_1.IEventBus);
17
+ const handleClick = () => {
18
+ const current = editorService.currentResource;
19
+ if (!current) {
20
+ return;
21
+ }
22
+ current.metadata = Object.assign(Object.assign({}, current.metadata), { skipPreventBinary: true });
23
+ eventBus.fire(new browser_1.ResourceOpenTypeChangedEvent(current.uri));
24
+ };
25
+ const actions = [
26
+ {
27
+ label: (0, ide_core_browser_1.localize)('editor.file.prevent.stillOpen'),
28
+ onClick: () => handleClick(),
29
+ },
30
+ ];
31
+ if (appConfig.isElectronRenderer) {
32
+ actions.push({
33
+ label: (0, ide_core_browser_1.localize)('editor.openExternal'),
34
+ onClick: () => injector.get(electron_1.IElectronMainUIService).openPath(srcPath),
35
+ });
36
+ }
37
+ return react_1.default.createElement(prevent_view_1.PreventComponent, { description: (0, ide_core_browser_1.localize)('editor.cannotOpenBinary'), actions: actions });
17
38
  };
18
39
  exports.BinaryEditorComponent = BinaryEditorComponent;
19
40
  //# sourceMappingURL=external.view.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"external.view.js","sourceRoot":"","sources":["../../src/browser/external.view.tsx"],"names":[],"mappings":";;;;AAAA,0DAA0B;AAE1B,qCAAwD;AACxD,iEAAgF;AAChF,qEAAgF;AAGhF,oFAAyC;AAElC,MAAM,qBAAqB,GAA+B,CAAC,KAAK,EAAE,EAAE;IACzE,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;IAClD,MAAM,QAAQ,GAAa,IAAA,gCAAa,EAAC,mBAAc,CAAC,CAAC;IACzD,MAAM,SAAS,GAAc,IAAA,gCAAa,EAAC,4BAAS,CAAC,CAAC;IAEtD,OAAO,CACL,uCAAK,SAAS,EAAE,2BAAM,CAAC,QAAQ;QAC5B,IAAA,2BAAQ,EAAC,yBAAyB,CAAC;QACnC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAC9B,qCAAG,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,iCAAsB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAG,IAAA,2BAAQ,EAAC,qBAAqB,CAAC,CAAK,CAChH,CAAC,CAAC,CAAC,IAAI,CACJ,CACP,CAAC;AACJ,CAAC,CAAC;AAbW,QAAA,qBAAqB,yBAahC"}
1
+ {"version":3,"file":"external.view.js","sourceRoot":"","sources":["../../src/browser/external.view.tsx"],"names":[],"mappings":";;;;AAAA,0DAA0B;AAE1B,qCAAwD;AACxD,iEAA2F;AAC3F,qEAAgF;AAChF,8DAI0C;AAE1C,iDAAkD;AAE3C,MAAM,qBAAqB,GAA+B,CAAC,KAAK,EAAE,EAAE;IACzE,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;IAClD,MAAM,QAAQ,GAAa,IAAA,gCAAa,EAAC,mBAAc,CAAC,CAAC;IACzD,MAAM,SAAS,GAAc,IAAA,gCAAa,EAAC,4BAAS,CAAC,CAAC;IACtD,MAAM,aAAa,GAAG,IAAA,gCAAa,EAAyB,gCAAsB,CAAC,CAAC;IACpF,MAAM,QAAQ,GAAG,IAAA,gCAAa,EAAY,4BAAS,CAAC,CAAC;IAErD,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,MAAM,OAAO,GAAG,aAAa,CAAC,eAAe,CAAC;QAE9C,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO;SACR;QAED,OAAO,CAAC,QAAQ,mCAAQ,OAAO,CAAC,QAAQ,KAAE,iBAAiB,EAAE,IAAI,GAAE,CAAC;QACpE,QAAQ,CAAC,IAAI,CAAC,IAAI,sCAA4B,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG;QACd;YACE,KAAK,EAAE,IAAA,2BAAQ,EAAC,+BAA+B,CAAC;YAChD,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE;SAC7B;KACF,CAAC;IAEF,IAAI,SAAS,CAAC,kBAAkB,EAAE;QAChC,OAAO,CAAC,IAAI,CAAC;YACX,KAAK,EAAE,IAAA,2BAAQ,EAAC,qBAAqB,CAAC;YACtC,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,iCAAsB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;SACtE,CAAC,CAAC;KACJ;IAED,OAAO,8BAAC,+BAAgB,IAAC,WAAW,EAAE,IAAA,2BAAQ,EAAC,yBAAyB,CAAC,EAAE,OAAO,EAAE,OAAO,GAAI,CAAC;AAClG,CAAC,CAAC;AAjCW,QAAA,qBAAqB,yBAiChC"}
@@ -1 +1 @@
1
- {"version":3,"file":"file-scheme.contribution.d.ts","sourceRoot":"","sources":["../../src/browser/file-scheme.contribution.ts"],"names":[],"mappings":"AAGA,OAAO,EAA8B,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EAEvB,mCAAmC,EACpC,MAAM,kCAAkC,CAAC;AAqB1C,qBACa,oCAAqC,YAAW,yBAAyB;IAEpF,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAA6B;IAGxE,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAA+B;IAG5E,OAAO,CAAC,QAAQ,CAAC,wCAAwC,CAA2C;IAGpG,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAiC;IAG1E,OAAO,CAAC,QAAQ,CAAC,8BAA8B,CAAiC;IAEhF,gBAAgB,CAAC,eAAe,EAAE,eAAe;IAKjD,0CAA0C,CAAC,QAAQ,EAAE,mCAAmC;CAOzF;AAED,qBACa,qCAAsC,YAAW,yBAAyB;IAErF,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAqB;IAGvD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAE/C,OAAO,CAAC,cAAc,CAAoD;;IAU1E,uBAAuB,CAAC,uBAAuB,EAAE,uBAAuB;YA4F1D,WAAW;YAYX,eAAe;CAQ9B"}
1
+ {"version":3,"file":"file-scheme.contribution.d.ts","sourceRoot":"","sources":["../../src/browser/file-scheme.contribution.ts"],"names":[],"mappings":"AAGA,OAAO,EAA8B,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EAEvB,mCAAmC,EACpC,MAAM,kCAAkC,CAAC;AAqB1C,qBACa,oCAAqC,YAAW,yBAAyB;IAEpF,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAA6B;IAGxE,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAA+B;IAG5E,OAAO,CAAC,QAAQ,CAAC,wCAAwC,CAA2C;IAGpG,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAiC;IAG1E,OAAO,CAAC,QAAQ,CAAC,8BAA8B,CAAiC;IAEhF,gBAAgB,CAAC,eAAe,EAAE,eAAe;IAKjD,0CAA0C,CAAC,QAAQ,EAAE,mCAAmC;CAOzF;AAED,qBACa,qCAAsC,YAAW,yBAAyB;IAErF,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAqB;IAGvD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAE/C,OAAO,CAAC,cAAc,CAAoD;;IAU1E,uBAAuB,CAAC,uBAAuB,EAAE,uBAAuB;YAuG1D,WAAW;YAYX,eAAe;CAQ9B"}
@@ -94,34 +94,45 @@ let FileSystemEditorComponentContribution = class FileSystemEditorComponentContr
94
94
  });
95
95
  editorComponentRegistry.registerEditorComponentResolver((scheme) => (scheme === ide_core_browser_1.Schemes.file || this.fileServiceClient.handlesScheme(scheme) ? 10 : -1), async (resource, results) => {
96
96
  const type = await this.getFileType(resource.uri.toString());
97
- if (type === 'image') {
98
- results.push({
99
- type: browser_1.EditorOpenType.component,
100
- componentId: IMAGE_PREVIEW_COMPONENT_ID,
101
- });
102
- }
103
- if (type === 'video') {
104
- results.push({
105
- type: browser_1.EditorOpenType.component,
106
- componentId: VIDEO_PREVIEW_COMPONENT_ID,
107
- });
108
- }
109
- if (type === 'text') {
110
- const { metadata, uri } = resource;
111
- const stat = await this.fileServiceClient.getFileStat(uri.toString());
112
- await this.preference.ready;
113
- const maxSize = this.preference.get('editor.largeFile') || 4 * 1024 * 1024 * 1024;
114
- if (stat && (stat.size || 0) > maxSize && !(metadata || {}).noPrevent) {
97
+ switch (type) {
98
+ case 'image': {
115
99
  results.push({
116
100
  type: browser_1.EditorOpenType.component,
117
- componentId: LARGE_FILE_PREVENT_COMPONENT_ID,
101
+ componentId: IMAGE_PREVIEW_COMPONENT_ID,
118
102
  });
103
+ break;
119
104
  }
120
- else {
105
+ case 'video': {
121
106
  results.push({
122
- type: browser_1.EditorOpenType.code,
123
- title: (0, ide_core_browser_1.localize)('editorOpenType.code'),
107
+ type: browser_1.EditorOpenType.component,
108
+ componentId: VIDEO_PREVIEW_COMPONENT_ID,
124
109
  });
110
+ break;
111
+ }
112
+ case 'binary':
113
+ case 'text': {
114
+ const { metadata: _metadata, uri } = resource;
115
+ const metadata = _metadata || {};
116
+ // 二进制文件不支持打开
117
+ if (type === 'binary' && !metadata.skipPreventBinary) {
118
+ break;
119
+ }
120
+ const stat = await this.fileServiceClient.getFileStat(uri.toString());
121
+ await this.preference.ready;
122
+ const maxSize = this.preference.getValid('editor.largeFile', 4 * 1024 * 1024 * 1024);
123
+ if (stat && (stat.size || 0) > maxSize && !metadata.skipPreventTooLarge) {
124
+ results.push({
125
+ type: browser_1.EditorOpenType.component,
126
+ componentId: LARGE_FILE_PREVENT_COMPONENT_ID,
127
+ });
128
+ }
129
+ else {
130
+ results.push({
131
+ type: browser_1.EditorOpenType.code,
132
+ title: (0, ide_core_browser_1.localize)('editorOpenType.code'),
133
+ });
134
+ }
135
+ break;
125
136
  }
126
137
  }
127
138
  });
@@ -1 +1 @@
1
- {"version":3,"file":"file-scheme.contribution.js","sourceRoot":"","sources":["../../src/browser/file-scheme.contribution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-scheme.contribution.js","sourceRoot":"","sources":["../../src/browser/file-scheme.contribution.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,12 @@
1
1
  import React from 'react';
2
+ interface PreventComponentProps {
3
+ description: string;
4
+ actions: {
5
+ label: string;
6
+ onClick: () => void;
7
+ }[];
8
+ }
9
+ export declare const PreventComponent: React.FC<PreventComponentProps>;
2
10
  export declare const LargeFilePrevent: () => React.JSX.Element;
11
+ export {};
3
12
  //# sourceMappingURL=prevent.view.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prevent.view.d.ts","sourceRoot":"","sources":["../../src/browser/prevent.view.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,eAAO,MAAM,gBAAgB,yBAqB5B,CAAC"}
1
+ {"version":3,"file":"prevent.view.d.ts","sourceRoot":"","sources":["../../src/browser/prevent.view.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,UAAU,qBAAqB;IAC7B,WAAW,EAAE,MAAM,CAAC;IAEpB,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,IAAI,CAAC;KACrB,EAAE,CAAC;CACL;AACD,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAa5D,CAAC;AAEF,eAAO,MAAM,gBAAgB,yBA0B5B,CAAC"}
@@ -1,12 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LargeFilePrevent = void 0;
3
+ exports.LargeFilePrevent = exports.PreventComponent = void 0;
4
4
  const tslib_1 = require("tslib");
5
+ const classnames_1 = tslib_1.__importDefault(require("classnames"));
5
6
  const react_1 = tslib_1.__importDefault(require("react"));
6
7
  const ide_core_browser_1 = require("@opensumi/ide-core-browser");
8
+ const components_1 = require("@opensumi/ide-core-browser/lib/components");
7
9
  const ide_editor_1 = require("@opensumi/ide-editor");
8
10
  const types_1 = require("@opensumi/ide-editor/lib/browser/types");
9
11
  const style_module_less_1 = tslib_1.__importDefault(require("./style.module.less"));
12
+ const PreventComponent = (props) => (react_1.default.createElement("div", { className: style_module_less_1.default['error-page'] },
13
+ react_1.default.createElement("div", { className: (0, classnames_1.default)(style_module_less_1.default.icon, (0, ide_core_browser_1.getExternalIcon)('warning')) }),
14
+ react_1.default.createElement("div", { className: style_module_less_1.default['description'] }, props.description),
15
+ react_1.default.createElement("div", { className: style_module_less_1.default['actions-wrapper'] }, props.actions.map((action, index) => (react_1.default.createElement(components_1.Button, { key: index, onClick: () => action.onClick(), className: style_module_less_1.default['action-button'] }, action.label))))));
16
+ exports.PreventComponent = PreventComponent;
10
17
  const LargeFilePrevent = () => {
11
18
  const editorService = (0, ide_core_browser_1.useInjectable)(ide_editor_1.WorkbenchEditorService);
12
19
  const eventBus = (0, ide_core_browser_1.useInjectable)(ide_core_browser_1.IEventBus);
@@ -15,12 +22,15 @@ const LargeFilePrevent = () => {
15
22
  if (!current) {
16
23
  return;
17
24
  }
18
- current.metadata = { noPrevent: true };
25
+ current.metadata = Object.assign(Object.assign({}, current.metadata), { skipPreventTooLarge: true });
19
26
  eventBus.fire(new types_1.ResourceOpenTypeChangedEvent(current.uri));
20
27
  };
21
- return (react_1.default.createElement("div", { className: style_module_less_1.default.font },
22
- (0, ide_core_browser_1.localize)('editor.largeFile.prevent'),
23
- react_1.default.createElement("a", { onClick: () => handleClick() }, (0, ide_core_browser_1.localize)('editor.largeFile.prevent.stillOpen'))));
28
+ return (react_1.default.createElement(exports.PreventComponent, { description: (0, ide_core_browser_1.localize)('editor.largeFile.prevent'), actions: [
29
+ {
30
+ label: (0, ide_core_browser_1.localize)('editor.file.prevent.stillOpen'),
31
+ onClick: () => handleClick(),
32
+ },
33
+ ] }));
24
34
  };
25
35
  exports.LargeFilePrevent = LargeFilePrevent;
26
36
  //# sourceMappingURL=prevent.view.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prevent.view.js","sourceRoot":"","sources":["../../src/browser/prevent.view.tsx"],"names":[],"mappings":";;;;AAAA,0DAA0B;AAE1B,iEAAgF;AAChF,qDAA8D;AAC9D,kEAAsF;AAEtF,oFAAyC;AAElC,MAAM,gBAAgB,GAAG,GAAG,EAAE;IACnC,MAAM,aAAa,GAAG,IAAA,gCAAa,EAAyB,mCAAsB,CAAC,CAAC;IACpF,MAAM,QAAQ,GAAG,IAAA,gCAAa,EAAY,4BAAS,CAAC,CAAC;IAErD,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,MAAM,OAAO,GAAG,aAAa,CAAC,eAAe,CAAC;QAE9C,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO;SACR;QAED,OAAO,CAAC,QAAQ,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QACvC,QAAQ,CAAC,IAAI,CAAC,IAAI,oCAA4B,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,CAAC,CAAC;IAEF,OAAO,CACL,uCAAK,SAAS,EAAE,2BAAM,CAAC,IAAI;QACxB,IAAA,2BAAQ,EAAC,0BAA0B,CAAC;QACrC,qCAAG,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,IAAG,IAAA,2BAAQ,EAAC,oCAAoC,CAAC,CAAK,CACjF,CACP,CAAC;AACJ,CAAC,CAAC;AArBW,QAAA,gBAAgB,oBAqB3B"}
1
+ {"version":3,"file":"prevent.view.js","sourceRoot":"","sources":["../../src/browser/prevent.view.tsx"],"names":[],"mappings":";;;;AAAA,oEAA6B;AAC7B,0DAA0B;AAE1B,iEAAiG;AACjG,0EAAmE;AACnE,qDAA8D;AAC9D,kEAAsF;AAEtF,oFAAyC;AAUlC,MAAM,gBAAgB,GAAoC,CAAC,KAA4B,EAAE,EAAE,CAAC,CACjG,uCAAK,SAAS,EAAE,2BAAM,CAAC,YAAY,CAAC;IAClC,uCAAK,SAAS,EAAE,IAAA,oBAAG,EAAC,2BAAM,CAAC,IAAI,EAAE,IAAA,kCAAe,EAAC,SAAS,CAAC,CAAC,GAAQ;IACpE,uCAAK,SAAS,EAAE,2BAAM,CAAC,aAAa,CAAC,IAAG,KAAK,CAAC,WAAW,CAAO;IAEhE,uCAAK,SAAS,EAAE,2BAAM,CAAC,iBAAiB,CAAC,IACtC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CACpC,8BAAC,mBAAM,IAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,2BAAM,CAAC,eAAe,CAAC,IACpF,MAAM,CAAC,KAAK,CACN,CACV,CAAC,CACE,CACF,CACP,CAAC;AAbW,QAAA,gBAAgB,oBAa3B;AAEK,MAAM,gBAAgB,GAAG,GAAG,EAAE;IACnC,MAAM,aAAa,GAAG,IAAA,gCAAa,EAAyB,mCAAsB,CAAC,CAAC;IACpF,MAAM,QAAQ,GAAG,IAAA,gCAAa,EAAY,4BAAS,CAAC,CAAC;IAErD,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,MAAM,OAAO,GAAG,aAAa,CAAC,eAAe,CAAC;QAE9C,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO;SACR;QAED,OAAO,CAAC,QAAQ,mCAAQ,OAAO,CAAC,QAAQ,KAAE,mBAAmB,EAAE,IAAI,GAAE,CAAC;QACtE,QAAQ,CAAC,IAAI,CAAC,IAAI,oCAA4B,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,CAAC,CAAC;IAEF,OAAO,CACL,8BAAC,wBAAgB,IACf,WAAW,EAAE,IAAA,2BAAQ,EAAC,0BAA0B,CAAC,EACjD,OAAO,EAAE;YACP;gBACE,KAAK,EAAE,IAAA,2BAAQ,EAAC,+BAA+B,CAAC;gBAChD,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE;aAC7B;SACF,GACD,CACH,CAAC;AACJ,CAAC,CAAC;AA1BW,QAAA,gBAAgB,oBA0B3B"}
@@ -50,11 +50,42 @@
50
50
  height: 100%;
51
51
  }
52
52
 
53
- .external {
54
- padding: 10px;
55
- }
53
+ .error-page {
54
+ display: flex;
55
+ justify-content: center;
56
+ align-items: center;
57
+
58
+ flex-direction: column;
56
59
 
57
- .font {
58
- padding: 4px;
59
60
  font-size: 12px;
61
+ padding: 10px;
62
+
63
+ height: 100%;
64
+ width: 100%;
65
+
66
+ user-select: none;
67
+
68
+ & .icon {
69
+ font-size: 40px !important;
70
+ color: var(--kt-modalWarningIcon-foreground);
71
+ }
72
+
73
+ .description {
74
+ width: 100%;
75
+ margin-top: 4px;
76
+
77
+ text-align: center;
78
+
79
+ font-size: 14px;
80
+ }
81
+
82
+ & .action-wrapper {
83
+ display: flex;
84
+ width: 100%;
85
+ }
86
+
87
+ & .action-button {
88
+ margin-top: 20px;
89
+ font-size: 13px;
90
+ }
60
91
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opensumi/ide-file-scheme",
3
- "version": "3.1.4-next-1719541057.0",
3
+ "version": "3.1.4-next-1721010662.0",
4
4
  "files": [
5
5
  "lib",
6
6
  "src"
@@ -17,16 +17,16 @@
17
17
  "url": "git@github.com:opensumi/core.git"
18
18
  },
19
19
  "dependencies": {
20
- "@opensumi/ide-core-common": "3.1.4-next-1719541057.0",
21
- "@opensumi/ide-core-node": "3.1.4-next-1719541057.0",
22
- "@opensumi/ide-file-service": "3.1.4-next-1719541057.0"
20
+ "@opensumi/ide-core-common": "3.1.4-next-1721010662.0",
21
+ "@opensumi/ide-core-node": "3.1.4-next-1721010662.0",
22
+ "@opensumi/ide-file-service": "3.1.4-next-1721010662.0"
23
23
  },
24
24
  "devDependencies": {
25
- "@opensumi/ide-core-browser": "3.1.4-next-1719541057.0",
26
- "@opensumi/ide-dev-tool": "3.1.4-next-1719541057.0",
27
- "@opensumi/ide-editor": "3.1.4-next-1719541057.0",
28
- "@opensumi/ide-monaco": "3.1.4-next-1719541057.0",
29
- "@opensumi/ide-overlay": "3.1.4-next-1719541057.0"
25
+ "@opensumi/ide-core-browser": "3.1.4-next-1721010662.0",
26
+ "@opensumi/ide-dev-tool": "3.1.4-next-1721010662.0",
27
+ "@opensumi/ide-editor": "3.1.4-next-1721010662.0",
28
+ "@opensumi/ide-monaco": "3.1.4-next-1721010662.0",
29
+ "@opensumi/ide-overlay": "3.1.4-next-1721010662.0"
30
30
  },
31
- "gitHead": "429bf86d870b5d35a78dbec7f85f30af10778987"
31
+ "gitHead": "79d7fab21f6bdd95c768637f2b5c59cdb98ff28c"
32
32
  }
@@ -1,23 +1,47 @@
1
1
  import React from 'react';
2
2
 
3
3
  import { INJECTOR_TOKEN, Injector } from '@opensumi/di';
4
- import { AppConfig, localize, useInjectable } from '@opensumi/ide-core-browser';
4
+ import { AppConfig, IEventBus, localize, useInjectable } from '@opensumi/ide-core-browser';
5
5
  import { IElectronMainUIService } from '@opensumi/ide-core-common/lib/electron';
6
- import { ReactEditorComponent } from '@opensumi/ide-editor/lib/browser';
6
+ import {
7
+ ReactEditorComponent,
8
+ ResourceOpenTypeChangedEvent,
9
+ WorkbenchEditorService,
10
+ } from '@opensumi/ide-editor/lib/browser';
7
11
 
8
- import styles from './style.module.less';
12
+ import { PreventComponent } from './prevent.view';
9
13
 
10
14
  export const BinaryEditorComponent: ReactEditorComponent<null> = (props) => {
11
15
  const srcPath = props.resource.uri.codeUri.fsPath;
12
16
  const injector: Injector = useInjectable(INJECTOR_TOKEN);
13
17
  const appConfig: AppConfig = useInjectable(AppConfig);
18
+ const editorService = useInjectable<WorkbenchEditorService>(WorkbenchEditorService);
19
+ const eventBus = useInjectable<IEventBus>(IEventBus);
14
20
 
15
- return (
16
- <div className={styles.external}>
17
- {localize('editor.cannotOpenBinary')}
18
- {appConfig.isElectronRenderer ? (
19
- <a onClick={() => injector.get(IElectronMainUIService).openPath(srcPath)}>{localize('editor.openExternal')}</a>
20
- ) : null}
21
- </div>
22
- );
21
+ const handleClick = () => {
22
+ const current = editorService.currentResource;
23
+
24
+ if (!current) {
25
+ return;
26
+ }
27
+
28
+ current.metadata = { ...current.metadata, skipPreventBinary: true };
29
+ eventBus.fire(new ResourceOpenTypeChangedEvent(current.uri));
30
+ };
31
+
32
+ const actions = [
33
+ {
34
+ label: localize('editor.file.prevent.stillOpen'),
35
+ onClick: () => handleClick(),
36
+ },
37
+ ];
38
+
39
+ if (appConfig.isElectronRenderer) {
40
+ actions.push({
41
+ label: localize('editor.openExternal'),
42
+ onClick: () => injector.get(IElectronMainUIService).openPath(srcPath),
43
+ });
44
+ }
45
+
46
+ return <PreventComponent description={localize('editor.cannotOpenBinary')} actions={actions} />;
23
47
  };
@@ -120,36 +120,47 @@ export class FileSystemEditorComponentContribution implements BrowserEditorContr
120
120
  async (resource: IResource<any>, results: IEditorOpenType[]) => {
121
121
  const type = await this.getFileType(resource.uri.toString());
122
122
 
123
- if (type === 'image') {
124
- results.push({
125
- type: EditorOpenType.component,
126
- componentId: IMAGE_PREVIEW_COMPONENT_ID,
127
- });
128
- }
129
-
130
- if (type === 'video') {
131
- results.push({
132
- type: EditorOpenType.component,
133
- componentId: VIDEO_PREVIEW_COMPONENT_ID,
134
- });
135
- }
136
-
137
- if (type === 'text') {
138
- const { metadata, uri } = resource as { uri: URI; metadata: any };
139
- const stat = await this.fileServiceClient.getFileStat(uri.toString());
140
- await this.preference.ready;
141
- const maxSize = this.preference.get<number>('editor.largeFile') || 4 * 1024 * 1024 * 1024;
142
-
143
- if (stat && (stat.size || 0) > maxSize && !(metadata || {}).noPrevent) {
123
+ switch (type) {
124
+ case 'image': {
144
125
  results.push({
145
126
  type: EditorOpenType.component,
146
- componentId: LARGE_FILE_PREVENT_COMPONENT_ID,
127
+ componentId: IMAGE_PREVIEW_COMPONENT_ID,
147
128
  });
148
- } else {
129
+ break;
130
+ }
131
+ case 'video': {
149
132
  results.push({
150
- type: EditorOpenType.code,
151
- title: localize('editorOpenType.code'),
133
+ type: EditorOpenType.component,
134
+ componentId: VIDEO_PREVIEW_COMPONENT_ID,
152
135
  });
136
+ break;
137
+ }
138
+ case 'binary':
139
+ case 'text': {
140
+ const { metadata: _metadata, uri } = resource;
141
+ const metadata = _metadata || {};
142
+
143
+ // 二进制文件不支持打开
144
+ if (type === 'binary' && !metadata.skipPreventBinary) {
145
+ break;
146
+ }
147
+
148
+ const stat = await this.fileServiceClient.getFileStat(uri.toString());
149
+ await this.preference.ready;
150
+ const maxSize = this.preference.getValid<number>('editor.largeFile', 4 * 1024 * 1024 * 1024);
151
+
152
+ if (stat && (stat.size || 0) > maxSize && !metadata.skipPreventTooLarge) {
153
+ results.push({
154
+ type: EditorOpenType.component,
155
+ componentId: LARGE_FILE_PREVENT_COMPONENT_ID,
156
+ });
157
+ } else {
158
+ results.push({
159
+ type: EditorOpenType.code,
160
+ title: localize('editorOpenType.code'),
161
+ });
162
+ }
163
+ break;
153
164
  }
154
165
  }
155
166
  },
@@ -1,11 +1,36 @@
1
+ import cls from 'classnames';
1
2
  import React from 'react';
2
3
 
3
- import { IEventBus, localize, useInjectable } from '@opensumi/ide-core-browser';
4
+ import { IEventBus, getExternalIcon, localize, useInjectable } from '@opensumi/ide-core-browser';
5
+ import { Button } from '@opensumi/ide-core-browser/lib/components';
4
6
  import { WorkbenchEditorService } from '@opensumi/ide-editor';
5
7
  import { ResourceOpenTypeChangedEvent } from '@opensumi/ide-editor/lib/browser/types';
6
8
 
7
9
  import styles from './style.module.less';
8
10
 
11
+ interface PreventComponentProps {
12
+ description: string;
13
+
14
+ actions: {
15
+ label: string;
16
+ onClick: () => void;
17
+ }[];
18
+ }
19
+ export const PreventComponent: React.FC<PreventComponentProps> = (props: PreventComponentProps) => (
20
+ <div className={styles['error-page']}>
21
+ <div className={cls(styles.icon, getExternalIcon('warning'))}></div>
22
+ <div className={styles['description']}>{props.description}</div>
23
+
24
+ <div className={styles['actions-wrapper']}>
25
+ {props.actions.map((action, index) => (
26
+ <Button key={index} onClick={() => action.onClick()} className={styles['action-button']}>
27
+ {action.label}
28
+ </Button>
29
+ ))}
30
+ </div>
31
+ </div>
32
+ );
33
+
9
34
  export const LargeFilePrevent = () => {
10
35
  const editorService = useInjectable<WorkbenchEditorService>(WorkbenchEditorService);
11
36
  const eventBus = useInjectable<IEventBus>(IEventBus);
@@ -17,14 +42,19 @@ export const LargeFilePrevent = () => {
17
42
  return;
18
43
  }
19
44
 
20
- current.metadata = { noPrevent: true };
45
+ current.metadata = { ...current.metadata, skipPreventTooLarge: true };
21
46
  eventBus.fire(new ResourceOpenTypeChangedEvent(current.uri));
22
47
  };
23
48
 
24
49
  return (
25
- <div className={styles.font}>
26
- {localize('editor.largeFile.prevent')}
27
- <a onClick={() => handleClick()}>{localize('editor.largeFile.prevent.stillOpen')}</a>
28
- </div>
50
+ <PreventComponent
51
+ description={localize('editor.largeFile.prevent')}
52
+ actions={[
53
+ {
54
+ label: localize('editor.file.prevent.stillOpen'),
55
+ onClick: () => handleClick(),
56
+ },
57
+ ]}
58
+ />
29
59
  );
30
60
  };
@@ -50,11 +50,42 @@
50
50
  height: 100%;
51
51
  }
52
52
 
53
- .external {
54
- padding: 10px;
55
- }
53
+ .error-page {
54
+ display: flex;
55
+ justify-content: center;
56
+ align-items: center;
57
+
58
+ flex-direction: column;
56
59
 
57
- .font {
58
- padding: 4px;
59
60
  font-size: 12px;
61
+ padding: 10px;
62
+
63
+ height: 100%;
64
+ width: 100%;
65
+
66
+ user-select: none;
67
+
68
+ & .icon {
69
+ font-size: 40px !important;
70
+ color: var(--kt-modalWarningIcon-foreground);
71
+ }
72
+
73
+ .description {
74
+ width: 100%;
75
+ margin-top: 4px;
76
+
77
+ text-align: center;
78
+
79
+ font-size: 14px;
80
+ }
81
+
82
+ & .action-wrapper {
83
+ display: flex;
84
+ width: 100%;
85
+ }
86
+
87
+ & .action-button {
88
+ margin-top: 20px;
89
+ font-size: 13px;
90
+ }
60
91
  }