@opensumi/ide-core-browser 2.21.8-rc-1670567192.0 → 2.21.8
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/components/actions/index.d.ts.map +1 -1
- package/lib/components/actions/index.js +22 -2
- package/lib/components/actions/index.js.map +1 -1
- package/lib/components/tree/tree.module.less +0 -1
- package/lib/contextkey/testing.d.ts +0 -1
- package/lib/contextkey/testing.d.ts.map +1 -1
- package/lib/contextkey/testing.js +1 -2
- package/lib/contextkey/testing.js.map +1 -1
- package/lib/menu/next/menu.contrib.interface.d.ts +2 -3
- package/lib/menu/next/menu.contrib.interface.d.ts.map +1 -1
- package/lib/menu/next/menu.contrib.interface.js.map +1 -1
- package/lib/preferences/preference-configurations.js +1 -1
- package/lib/preferences/preference-configurations.js.map +1 -1
- package/lib/react-providers/config-provider.d.ts +0 -4
- package/lib/react-providers/config-provider.d.ts.map +1 -1
- package/lib/react-providers/config-provider.js.map +1 -1
- package/lib/services/storage-service.d.ts.map +1 -1
- package/lib/services/storage-service.js +1 -7
- package/lib/services/storage-service.js.map +1 -1
- package/lib/utils/label.d.ts.map +1 -1
- package/lib/utils/label.js +9 -16
- package/lib/utils/label.js.map +1 -1
- package/package.json +6 -7
- package/src/application/application-state-service.ts +0 -54
- package/src/application/application.service.ts +0 -51
- package/src/application/index.ts +0 -2
- package/src/authentication/authentication.contribution.ts +0 -35
- package/src/authentication/authentication.service.ts +0 -517
- package/src/bootstrap/app.ts +0 -745
- package/src/bootstrap/app.view.tsx +0 -88
- package/src/bootstrap/connection.ts +0 -116
- package/src/bootstrap/index.ts +0 -3
- package/src/bootstrap/inner-providers.ts +0 -297
- package/src/bootstrap/lifecycle.service.ts +0 -19
- package/src/browser-module.ts +0 -24
- package/src/common/common.command.ts +0 -977
- package/src/common/common.contribution.ts +0 -343
- package/src/common/common.define.ts +0 -55
- package/src/common/common.module.ts +0 -33
- package/src/common/common.storage.ts +0 -22
- package/src/common/container-id.ts +0 -12
- package/src/common/index.ts +0 -4
- package/src/components/actions/index.tsx +0 -486
- package/src/components/actions/placements.ts +0 -47
- package/src/components/actions/styles.module.less +0 -144
- package/src/components/badge/index.tsx +0 -1
- package/src/components/index.ts +0 -26
- package/src/components/layout/box-panel.tsx +0 -88
- package/src/components/layout/default-layout.tsx +0 -61
- package/src/components/layout/index.ts +0 -4
- package/src/components/layout/layout.ts +0 -80
- package/src/components/layout/split-panel.service.ts +0 -56
- package/src/components/layout/split-panel.tsx +0 -296
- package/src/components/layout/styles.module.less +0 -21
- package/src/components/loading/index.ts +0 -1
- package/src/components/loading/loading.less +0 -14
- package/src/components/loading/loading.view.tsx +0 -7
- package/src/components/loading/media/loading-dark.svg +0 -52
- package/src/components/loading/media/loading-hc.svg +0 -52
- package/src/components/loading/media/loading.svg +0 -52
- package/src/components/popover/styles.module.less +0 -81
- package/src/components/portal/index.tsx +0 -13
- package/src/components/progressbar/index.tsx +0 -16
- package/src/components/progressbar/styles.module.less +0 -31
- package/src/components/recycle-tree/index.ts +0 -1
- package/src/components/recycle-tree/recycle-tree.view.tsx +0 -368
- package/src/components/resize/resize.module.less +0 -78
- package/src/components/resize/resize.tsx +0 -663
- package/src/components/scroll/index.tsx +0 -386
- package/src/components/scroll/scroll.module.less +0 -108
- package/src/components/scrollbar/index.ts +0 -1
- package/src/components/scrollbar/scrollbar.less +0 -36
- package/src/components/scrollbar/scrollbar.view.ts +0 -8
- package/src/components/select/index.tsx +0 -12
- package/src/components/select/styles.less +0 -6
- package/src/components/tree/index.ts +0 -3
- package/src/components/tree/tree-node.view.tsx +0 -546
- package/src/components/tree/tree.module.less +0 -297
- package/src/components/tree/tree.view.tsx +0 -486
- package/src/context-key.ts +0 -48
- package/src/contextkey/dialog.ts +0 -3
- package/src/contextkey/explorer.ts +0 -26
- package/src/contextkey/index.ts +0 -6
- package/src/contextkey/outline.ts +0 -4
- package/src/contextkey/resource.ts +0 -61
- package/src/contextkey/terminal.ts +0 -7
- package/src/contextkey/testing.ts +0 -9
- package/src/contextkey/workspace.ts +0 -7
- package/src/core-preferences.ts +0 -318
- package/src/dom/index.ts +0 -176
- package/src/encoding-registry.ts +0 -83
- package/src/extensions/extensions-point.service.ts +0 -78
- package/src/extensions/index.ts +0 -3
- package/src/extensions/schema/browserViews.ts +0 -96
- package/src/extensions/schema/menu.ts +0 -245
- package/src/extensions/schema/opensumiExtensionPackageSchema.ts +0 -12
- package/src/extensions/schema/toolbar.ts +0 -338
- package/src/extensions/schema/vscodeExtensionPackageSchema.ts +0 -330
- package/src/fs/index.ts +0 -12
- package/src/hash-calculate/hash-calculate.contribution.ts +0 -19
- package/src/index.ts +0 -42
- package/src/keybinding/index.ts +0 -1
- package/src/keybinding/keybinding.ts +0 -908
- package/src/keyboard/index.ts +0 -3
- package/src/keyboard/keyboard-layout-provider.ts +0 -412
- package/src/keyboard/keyboard-layout-service.ts +0 -449
- package/src/keyboard/keys.ts +0 -748
- package/src/keyboard/layouts/_.contribution.ts +0 -24
- package/src/keyboard/layouts/cz.win.ts +0 -168
- package/src/keyboard/layouts/de-swiss.win.ts +0 -168
- package/src/keyboard/layouts/de.darwin.ts +0 -131
- package/src/keyboard/layouts/de.linux.ts +0 -186
- package/src/keyboard/layouts/de.win.ts +0 -168
- package/src/keyboard/layouts/dk.win.ts +0 -168
- package/src/keyboard/layouts/dvorak.darwin.ts +0 -131
- package/src/keyboard/layouts/en-belgian.win.ts +0 -168
- package/src/keyboard/layouts/en-ext.darwin.ts +0 -131
- package/src/keyboard/layouts/en-in.win.ts +0 -168
- package/src/keyboard/layouts/en-intl.darwin.ts +0 -131
- package/src/keyboard/layouts/en-intl.win.ts +0 -168
- package/src/keyboard/layouts/en-uk.darwin.ts +0 -131
- package/src/keyboard/layouts/en-uk.win.ts +0 -168
- package/src/keyboard/layouts/en.darwin.ts +0 -139
- package/src/keyboard/layouts/en.linux.ts +0 -186
- package/src/keyboard/layouts/en.win.ts +0 -173
- package/src/keyboard/layouts/es-latin.win.ts +0 -168
- package/src/keyboard/layouts/es.darwin.ts +0 -131
- package/src/keyboard/layouts/es.linux.ts +0 -186
- package/src/keyboard/layouts/es.win.ts +0 -168
- package/src/keyboard/layouts/fr.darwin.ts +0 -131
- package/src/keyboard/layouts/fr.linux.ts +0 -186
- package/src/keyboard/layouts/fr.win.ts +0 -168
- package/src/keyboard/layouts/hu.win.ts +0 -168
- package/src/keyboard/layouts/it.darwin.ts +0 -131
- package/src/keyboard/layouts/it.win.ts +0 -168
- package/src/keyboard/layouts/jp-roman.darwin.ts +0 -131
- package/src/keyboard/layouts/jp.darwin.ts +0 -131
- package/src/keyboard/layouts/ko.darwin.ts +0 -131
- package/src/keyboard/layouts/layout.contribution.darwin.ts +0 -23
- package/src/keyboard/layouts/layout.contribution.linux.ts +0 -12
- package/src/keyboard/layouts/layout.contribution.ts +0 -9
- package/src/keyboard/layouts/layout.contribution.win.ts +0 -29
- package/src/keyboard/layouts/no.win.ts +0 -168
- package/src/keyboard/layouts/pl.darwin.ts +0 -131
- package/src/keyboard/layouts/pl.win.ts +0 -168
- package/src/keyboard/layouts/pt-br.win.ts +0 -169
- package/src/keyboard/layouts/pt.darwin.ts +0 -131
- package/src/keyboard/layouts/pt.win.ts +0 -168
- package/src/keyboard/layouts/ru.darwin.ts +0 -131
- package/src/keyboard/layouts/ru.linux.ts +0 -186
- package/src/keyboard/layouts/ru.win.ts +0 -168
- package/src/keyboard/layouts/sv.darwin.ts +0 -131
- package/src/keyboard/layouts/sv.win.ts +0 -168
- package/src/keyboard/layouts/thai.win.ts +0 -168
- package/src/keyboard/layouts/tr.win.ts +0 -168
- package/src/keyboard/layouts/zh-hans.darwin.ts +0 -131
- package/src/layout/accordion/tab-bar-toolbar.tsx +0 -59
- package/src/layout/accordion/view-context-key.registry.ts +0 -34
- package/src/layout/constants.ts +0 -7
- package/src/layout/index.ts +0 -5
- package/src/layout/layout-hooks.ts +0 -68
- package/src/layout/layout-state.ts +0 -107
- package/src/layout/layout.interface.ts +0 -101
- package/src/layout/layout.ts +0 -80
- package/src/layout/view-id.ts +0 -18
- package/src/logger/browser-logger.ts +0 -51
- package/src/logger/index.ts +0 -1
- package/src/markdown/index.tsx +0 -62
- package/src/menu/next/base.ts +0 -513
- package/src/menu/next/ctxmenu-service.ts +0 -188
- package/src/menu/next/index.ts +0 -10
- package/src/menu/next/menu-id.ts +0 -86
- package/src/menu/next/menu-service.ts +0 -252
- package/src/menu/next/menu-util.ts +0 -77
- package/src/menu/next/menu.contrib.interface.ts +0 -79
- package/src/menu/next/menu.interface.ts +0 -253
- package/src/menu/next/menubar-service.ts +0 -211
- package/src/menu/next/renderer/ctxmenu/base.ts +0 -18
- package/src/menu/next/renderer/ctxmenu/browser.ts +0 -45
- package/src/menu/next/renderer/ctxmenu/electron.ts +0 -207
- package/src/menu/next/toolbar-action.service.ts +0 -132
- package/src/monaco/index.ts +0 -128
- package/src/opener/command-opener.ts +0 -42
- package/src/opener/default-opener.ts +0 -31
- package/src/opener/http-opener.ts +0 -25
- package/src/opener/index.ts +0 -19
- package/src/opener/opener.contribution.ts +0 -57
- package/src/opener/opener.service.ts +0 -66
- package/src/preferences/early-preferences.ts +0 -117
- package/src/preferences/index.ts +0 -9
- package/src/preferences/preference-configurations.ts +0 -77
- package/src/preferences/preference-contribution.ts +0 -401
- package/src/preferences/preference-provider.ts +0 -414
- package/src/preferences/preference-proxy.ts +0 -292
- package/src/preferences/preference-scope.ts +0 -3
- package/src/preferences/preference-service.ts +0 -571
- package/src/preferences/settings.ts +0 -53
- package/src/preferences/types.ts +0 -111
- package/src/progress/index.ts +0 -58
- package/src/progress/progress-bar.tsx +0 -22
- package/src/progress/progress-indicator.ts +0 -90
- package/src/progress/progress.module.less +0 -46
- package/src/progress/progress.service.tsx +0 -429
- package/src/quick-open/index.ts +0 -655
- package/src/quick-open/recent-files.ts +0 -68
- package/src/raw-context-key.ts +0 -116
- package/src/react-hooks/event.tsx +0 -80
- package/src/react-hooks/hot-key.tsx +0 -58
- package/src/react-hooks/index.ts +0 -3
- package/src/react-hooks/injectable-hooks.tsx +0 -35
- package/src/react-hooks/portal-hooks.tsx +0 -38
- package/src/react-providers/config-provider.tsx +0 -263
- package/src/react-providers/index.tsx +0 -2
- package/src/react-providers/slot.module.less +0 -19
- package/src/react-providers/slot.tsx +0 -242
- package/src/services/clipboard.service.ts +0 -97
- package/src/services/credentials-service.ts +0 -91
- package/src/services/crypto-service.ts +0 -23
- package/src/services/external-uri.service.ts +0 -68
- package/src/services/index.ts +0 -7
- package/src/services/label-service.ts +0 -386
- package/src/services/status-bar-service.ts +0 -108
- package/src/services/storage-service.ts +0 -197
- package/src/style/codicons/README.md +0 -22
- package/src/style/codicons/codicon-animations.css +0 -15
- package/src/style/codicons/generator.js +0 -15
- package/src/style/entry.less +0 -25
- package/src/style/icon/fileicons/file-default.svg +0 -1
- package/src/style/icon/fileicons/folder-default.svg +0 -1
- package/src/style/icon/fileicons.less +0 -20
- package/src/style/icon/icon.ts +0 -543
- package/src/style/icon/ide-iconfont.ts +0 -13
- package/src/style/icon/index.less +0 -54
- package/src/style/icon/seti.woff +0 -0
- package/src/style/icon/symbol-icons/boolean-dark.svg +0 -3
- package/src/style/icon/symbol-icons/boolean-light.svg +0 -3
- package/src/style/icon/symbol-icons/class-dark.svg +0 -3
- package/src/style/icon/symbol-icons/class-light.svg +0 -3
- package/src/style/icon/symbol-icons/constant-dark.svg +0 -4
- package/src/style/icon/symbol-icons/constant-light.svg +0 -4
- package/src/style/icon/symbol-icons/enumerator-dark.svg +0 -3
- package/src/style/icon/symbol-icons/enumerator-item-dark.svg +0 -3
- package/src/style/icon/symbol-icons/enumerator-item-light.svg +0 -3
- package/src/style/icon/symbol-icons/enumerator-light.svg +0 -3
- package/src/style/icon/symbol-icons/event-dark.svg +0 -3
- package/src/style/icon/symbol-icons/event-light.svg +0 -3
- package/src/style/icon/symbol-icons/field-dark.svg +0 -3
- package/src/style/icon/symbol-icons/field-light.svg +0 -3
- package/src/style/icon/symbol-icons/file-dark.svg +0 -3
- package/src/style/icon/symbol-icons/file-light.svg +0 -3
- package/src/style/icon/symbol-icons/indexer-dark.svg +0 -3
- package/src/style/icon/symbol-icons/indexer-light.svg +0 -3
- package/src/style/icon/symbol-icons/interface-dark.svg +0 -3
- package/src/style/icon/symbol-icons/interface-light.svg +0 -3
- package/src/style/icon/symbol-icons/keyword-dark.svg +0 -3
- package/src/style/icon/symbol-icons/keyword-light.svg +0 -3
- package/src/style/icon/symbol-icons/method-dark.svg +0 -3
- package/src/style/icon/symbol-icons/method-light.svg +0 -3
- package/src/style/icon/symbol-icons/namespace-dark.svg +0 -3
- package/src/style/icon/symbol-icons/namespace-light.svg +0 -3
- package/src/style/icon/symbol-icons/numeric-dark.svg +0 -3
- package/src/style/icon/symbol-icons/numeric-light.svg +0 -3
- package/src/style/icon/symbol-icons/operator-dark.svg +0 -3
- package/src/style/icon/symbol-icons/operator-light.svg +0 -3
- package/src/style/icon/symbol-icons/property-dark.svg +0 -3
- package/src/style/icon/symbol-icons/property-light.svg +0 -3
- package/src/style/icon/symbol-icons/snippet-dark.svg +0 -3
- package/src/style/icon/symbol-icons/snippet-light.svg +0 -3
- package/src/style/icon/symbol-icons/string-dark.svg +0 -3
- package/src/style/icon/symbol-icons/string-light.svg +0 -3
- package/src/style/icon/symbol-icons/structure-dark.svg +0 -3
- package/src/style/icon/symbol-icons/structure-light.svg +0 -3
- package/src/style/icon/symbol-icons/symbol-icons.css +0 -284
- package/src/style/icon/symbol-icons/template-dark.svg +0 -3
- package/src/style/icon/symbol-icons/template-light.svg +0 -3
- package/src/style/icon/symbol-icons/variable-dark.svg +0 -3
- package/src/style/icon/symbol-icons/variable-light.svg +0 -3
- package/src/style/icon.less +0 -8
- package/src/style/index.less +0 -14
- package/src/style/monaco-override.less +0 -116
- package/src/style/normalize.less +0 -92
- package/src/style/octicons/octicons-cdn.css +0 -720
- package/src/style/octicons/octicons.css +0 -714
- package/src/style/octicons/octicons.html +0 -1882
- package/src/style/octicons/octicons.svg +0 -582
- package/src/style/octicons/octicons.ttf +0 -0
- package/src/style/override.less +0 -97
- package/src/style/toolbar.less +0 -199
- package/src/style/utilities.less +0 -8
- package/src/style/variable.less +0 -8
- package/src/terminal/index.ts +0 -7
- package/src/toolbar/components/auto-complete.tsx +0 -0
- package/src/toolbar/components/button.tsx +0 -440
- package/src/toolbar/components/index.ts +0 -2
- package/src/toolbar/components/select.tsx +0 -189
- package/src/toolbar/index.ts +0 -3
- package/src/toolbar/toolbar.popover.registry.ts +0 -32
- package/src/toolbar/toolbar.registry.ts +0 -352
- package/src/toolbar/toolbar.tsx +0 -710
- package/src/toolbar/types.ts +0 -383
- package/src/tree/index.ts +0 -3
- package/src/tree/tree-expansion.ts +0 -25
- package/src/tree/tree-selection.ts +0 -89
- package/src/tree/tree.ts +0 -294
- package/src/utils/create-overlay.tsx +0 -53
- package/src/utils/electron.ts +0 -92
- package/src/utils/env.ts +0 -26
- package/src/utils/icon.ts +0 -13
- package/src/utils/index.ts +0 -7
- package/src/utils/json.ts +0 -251
- package/src/utils/label.tsx +0 -36
- package/src/utils/parse.ts +0 -72
- package/src/utils/react-hooks.ts +0 -118
- package/src/variable/index.ts +0 -1
- package/src/variable/variable.ts +0 -84
- package/src/window/index.ts +0 -34
- package/src/window/window.service.ts +0 -100
|
@@ -1,242 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
|
|
3
|
-
import { Button } from '@opensumi/ide-components';
|
|
4
|
-
import { getDebugLogger, localize } from '@opensumi/ide-core-common';
|
|
5
|
-
|
|
6
|
-
import { LayoutConfig } from '../bootstrap';
|
|
7
|
-
import { IClientApp } from '../browser-module';
|
|
8
|
-
import { ComponentRegistry, ComponentRegistryInfo } from '../layout/layout.interface';
|
|
9
|
-
import { useInjectable } from '../react-hooks';
|
|
10
|
-
|
|
11
|
-
import { ConfigContext } from './config-provider';
|
|
12
|
-
import styles from './slot.module.less';
|
|
13
|
-
|
|
14
|
-
const logger = getDebugLogger();
|
|
15
|
-
export type SlotLocation = string;
|
|
16
|
-
export const SlotLocation = {
|
|
17
|
-
top: 'top',
|
|
18
|
-
left: 'left',
|
|
19
|
-
right: 'right',
|
|
20
|
-
main: 'main',
|
|
21
|
-
statusBar: 'statusBar',
|
|
22
|
-
bottom: 'bottom',
|
|
23
|
-
extra: 'extra',
|
|
24
|
-
float: 'float',
|
|
25
|
-
action: 'action',
|
|
26
|
-
// @deprecated ->
|
|
27
|
-
bottomBar: 'bottomBar',
|
|
28
|
-
bottomPanel: 'bottomPanel',
|
|
29
|
-
leftBar: 'leftBar',
|
|
30
|
-
leftPanel: 'leftPanel',
|
|
31
|
-
rightBar: 'rightBar',
|
|
32
|
-
rightPanel: 'rightPanel',
|
|
33
|
-
// <- @deprecated
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
export function getSlotLocation(moduleName: string, layoutConfig: LayoutConfig) {
|
|
37
|
-
for (const location of Object.keys(layoutConfig)) {
|
|
38
|
-
if (layoutConfig[location].modules && layoutConfig[location].modules.indexOf(moduleName) > -1) {
|
|
39
|
-
return location;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
getDebugLogger().warn(`没有找到${moduleName}所对应的位置!`);
|
|
43
|
-
return '';
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
export enum TabbarContextKeys {
|
|
47
|
-
activeViewlet = 'activeViewlet',
|
|
48
|
-
activePanel = 'activePanel',
|
|
49
|
-
activeExtendViewlet = 'activeExtendViewlet',
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
export function getTabbarCtxKey(location: string): TabbarContextKeys {
|
|
53
|
-
const standardTabbarCtxKeys = {
|
|
54
|
-
[SlotLocation.left]: TabbarContextKeys.activeViewlet,
|
|
55
|
-
[SlotLocation.right]: TabbarContextKeys.activeExtendViewlet,
|
|
56
|
-
[SlotLocation.bottom]: TabbarContextKeys.activePanel,
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
return standardTabbarCtxKeys[location] || 'activeExtendViewlet';
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
export class ErrorBoundary extends React.Component {
|
|
63
|
-
state = { error: null, errorInfo: null };
|
|
64
|
-
|
|
65
|
-
componentDidCatch(error, errorInfo) {
|
|
66
|
-
this.setState({
|
|
67
|
-
error,
|
|
68
|
-
errorInfo,
|
|
69
|
-
});
|
|
70
|
-
setTimeout(() => {
|
|
71
|
-
throw error; // 让上层错误抓取能捕获这个错误
|
|
72
|
-
});
|
|
73
|
-
logger.error(errorInfo);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
update() {
|
|
77
|
-
this.setState({ error: null, errorInfo: null });
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
render() {
|
|
81
|
-
if (this.state.errorInfo) {
|
|
82
|
-
return (
|
|
83
|
-
<div className={styles.error_message}>
|
|
84
|
-
<h2 className={styles.title}>{localize('view.component.renderedError')}</h2>
|
|
85
|
-
<details className={styles.detial}>
|
|
86
|
-
<div className={styles.label}>{this.state.error && (this.state.error as any).toString()}</div>
|
|
87
|
-
<div className={styles.message}>{(this.state.errorInfo as any).componentStack}</div>
|
|
88
|
-
</details>
|
|
89
|
-
<Button onClick={() => this.update()}>{localize('view.component.tryAgain')}</Button>
|
|
90
|
-
</div>
|
|
91
|
-
);
|
|
92
|
-
}
|
|
93
|
-
return this.props.children;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
export const allSlot: { slot: string; dom: HTMLElement }[] = [];
|
|
98
|
-
|
|
99
|
-
export const SlotDecorator: React.FC<{ slot: string; backgroundColor?: string }> = ({ slot, ...props }) => {
|
|
100
|
-
const ref = React.useRef<HTMLElement>();
|
|
101
|
-
React.useEffect(() => {
|
|
102
|
-
if (ref.current) {
|
|
103
|
-
allSlot.push({ slot, dom: ref.current });
|
|
104
|
-
}
|
|
105
|
-
}, [ref]);
|
|
106
|
-
return (
|
|
107
|
-
<div ref={(ele) => (ref.current = ele!)} className='resize-wrapper'>
|
|
108
|
-
{props.children}
|
|
109
|
-
</div>
|
|
110
|
-
);
|
|
111
|
-
};
|
|
112
|
-
|
|
113
|
-
export interface RendererProps {
|
|
114
|
-
components: ComponentRegistryInfo[];
|
|
115
|
-
}
|
|
116
|
-
export type Renderer = React.ComponentType<RendererProps>;
|
|
117
|
-
|
|
118
|
-
export class SlotRendererRegistry {
|
|
119
|
-
static DefaultRenderer({ components }: RendererProps) {
|
|
120
|
-
return (
|
|
121
|
-
components && (
|
|
122
|
-
<ErrorBoundary>
|
|
123
|
-
{components.map((componentInfo, index: number) => {
|
|
124
|
-
// 默认的只渲染一个
|
|
125
|
-
const Component = componentInfo.views[0].component!;
|
|
126
|
-
return (
|
|
127
|
-
<Component
|
|
128
|
-
{...(componentInfo.options && componentInfo.options.initialProps)}
|
|
129
|
-
key={`${Component.name}-${index}`}
|
|
130
|
-
/>
|
|
131
|
-
);
|
|
132
|
-
})}
|
|
133
|
-
</ErrorBoundary>
|
|
134
|
-
)
|
|
135
|
-
);
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
protected tabbarLocation = new Set<string>();
|
|
139
|
-
|
|
140
|
-
protected rendererRegistry: Map<string, Renderer> = new Map();
|
|
141
|
-
|
|
142
|
-
registerSlotRenderer(slot: string, renderer: Renderer) {
|
|
143
|
-
this.rendererRegistry.set(slot, renderer);
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
getSlotRenderer(slot: string): Renderer {
|
|
147
|
-
return this.rendererRegistry.get(slot) || SlotRendererRegistry.DefaultRenderer;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
addTabbar(slot: string) {
|
|
151
|
-
if (!this.tabbarLocation.has(slot)) {
|
|
152
|
-
this.tabbarLocation.add(slot);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
isTabbar(slot: string) {
|
|
157
|
-
return this.tabbarLocation.has(slot);
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
export const slotRendererRegistry = new SlotRendererRegistry();
|
|
162
|
-
|
|
163
|
-
export interface SlotProps {
|
|
164
|
-
slot: string;
|
|
165
|
-
/**
|
|
166
|
-
* slot 默认的背景色
|
|
167
|
-
*/
|
|
168
|
-
backgroundColor?: string;
|
|
169
|
-
isTabbar?: boolean;
|
|
170
|
-
[key: string]: any;
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
export function SlotRenderer({ slot, isTabbar, ...props }: SlotProps) {
|
|
174
|
-
const componentRegistry = useInjectable<ComponentRegistry>(ComponentRegistry);
|
|
175
|
-
const appConfig = React.useContext(ConfigContext);
|
|
176
|
-
const clientApp = useInjectable<IClientApp>(IClientApp);
|
|
177
|
-
const componentKeys = appConfig.layoutConfig[slot]?.modules ?? [];
|
|
178
|
-
if (isTabbar) {
|
|
179
|
-
slotRendererRegistry.addTabbar(slot);
|
|
180
|
-
}
|
|
181
|
-
if (!componentKeys || !componentKeys.length) {
|
|
182
|
-
getDebugLogger().warn(`No ${slot} view declared by location.`);
|
|
183
|
-
}
|
|
184
|
-
const [componentInfos, setInfos] = React.useState<ComponentRegistryInfo[]>([]);
|
|
185
|
-
const updateComponentInfos = React.useCallback(() => {
|
|
186
|
-
const infos: ComponentRegistryInfo[] = [];
|
|
187
|
-
componentKeys.forEach((token) => {
|
|
188
|
-
const info = componentRegistry.getComponentRegistryInfo(token);
|
|
189
|
-
if (!info) {
|
|
190
|
-
getDebugLogger().warn(`${token} view isn't registered, please check.`);
|
|
191
|
-
} else {
|
|
192
|
-
infos.push(info);
|
|
193
|
-
}
|
|
194
|
-
});
|
|
195
|
-
setInfos(infos);
|
|
196
|
-
}, []);
|
|
197
|
-
React.useEffect(() => {
|
|
198
|
-
// 对于嵌套在模块视图的SlotRenderer,渲染时应用已启动
|
|
199
|
-
clientApp.appInitialized.promise.then(updateComponentInfos);
|
|
200
|
-
}, []);
|
|
201
|
-
|
|
202
|
-
const Renderer = slotRendererRegistry.getSlotRenderer(slot);
|
|
203
|
-
return (
|
|
204
|
-
<ErrorBoundary>
|
|
205
|
-
<SlotDecorator slot={slot} backgroundColor={props.backgroundColor}>
|
|
206
|
-
<Renderer components={componentInfos} {...props} />
|
|
207
|
-
</SlotDecorator>
|
|
208
|
-
</ErrorBoundary>
|
|
209
|
-
);
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
export interface SlotRendererContribution {
|
|
213
|
-
registerRenderer(registry: SlotRendererRegistry): void;
|
|
214
|
-
}
|
|
215
|
-
export const SlotRendererContribution = Symbol('SlotRendererContribution');
|
|
216
|
-
|
|
217
|
-
export interface SlotRendererProps {
|
|
218
|
-
Component: React.ComponentType<any> | React.ComponentType<any>[];
|
|
219
|
-
initialProps?: object;
|
|
220
|
-
}
|
|
221
|
-
// @deprecated
|
|
222
|
-
export function ComponentRenderer({ Component, initialProps }: SlotRendererProps) {
|
|
223
|
-
if (Array.isArray(Component)) {
|
|
224
|
-
return (
|
|
225
|
-
Component && (
|
|
226
|
-
<ErrorBoundary>
|
|
227
|
-
{Component.map((Component, index: number) => (
|
|
228
|
-
<Component {...(initialProps || {})} key={`${Component.name}-${index}`} />
|
|
229
|
-
))}
|
|
230
|
-
</ErrorBoundary>
|
|
231
|
-
)
|
|
232
|
-
);
|
|
233
|
-
} else {
|
|
234
|
-
return (
|
|
235
|
-
Component && (
|
|
236
|
-
<ErrorBoundary>
|
|
237
|
-
<Component {...(initialProps || {})} />
|
|
238
|
-
</ErrorBoundary>
|
|
239
|
-
)
|
|
240
|
-
);
|
|
241
|
-
}
|
|
242
|
-
}
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import { Autowired, Injectable } from '@opensumi/di';
|
|
2
|
-
import { IClipboardService, CLIPBOARD_FILE_TOKEN } from '@opensumi/ide-core-common';
|
|
3
|
-
import { URI } from '@opensumi/ide-core-common';
|
|
4
|
-
|
|
5
|
-
import { ILogger } from '../logger';
|
|
6
|
-
|
|
7
|
-
export { CLIPBOARD_FILE_TOKEN, IClipboardService };
|
|
8
|
-
|
|
9
|
-
@Injectable()
|
|
10
|
-
export class BrowserClipboardService implements IClipboardService {
|
|
11
|
-
@Autowired(ILogger)
|
|
12
|
-
private readonly logger: ILogger;
|
|
13
|
-
|
|
14
|
-
async writeText(text: string): Promise<void> {
|
|
15
|
-
try {
|
|
16
|
-
// 优先使用 clipboard 设置
|
|
17
|
-
// clipboard 在非 https 下会报错
|
|
18
|
-
return await navigator.clipboard.writeText(text);
|
|
19
|
-
} catch (error) {
|
|
20
|
-
this.logger.error(error);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
// Fallback to textarea and execCommand solution
|
|
24
|
-
const activeElement = document.activeElement;
|
|
25
|
-
|
|
26
|
-
const textArea = document.createElement('textarea');
|
|
27
|
-
textArea.setAttribute('aria-hidden', 'true');
|
|
28
|
-
document.body.appendChild(textArea);
|
|
29
|
-
textArea.style.height = '1px';
|
|
30
|
-
textArea.style.width = '1px';
|
|
31
|
-
textArea.style.position = 'absolute';
|
|
32
|
-
|
|
33
|
-
textArea.value = text;
|
|
34
|
-
textArea.focus();
|
|
35
|
-
textArea.select();
|
|
36
|
-
|
|
37
|
-
document.execCommand('copy');
|
|
38
|
-
|
|
39
|
-
if (activeElement instanceof HTMLElement) {
|
|
40
|
-
activeElement.focus();
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
document.body.removeChild(textArea);
|
|
44
|
-
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
async readText(): Promise<string> {
|
|
48
|
-
try {
|
|
49
|
-
if (!navigator.clipboard) {
|
|
50
|
-
throw new Error('当前环境不支持剪贴板API');
|
|
51
|
-
}
|
|
52
|
-
return await navigator.clipboard.readText();
|
|
53
|
-
} catch (error) {
|
|
54
|
-
this.logger.error(error);
|
|
55
|
-
return '';
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
async writeResources(resources: URI[], field = CLIPBOARD_FILE_TOKEN): Promise<void> {
|
|
59
|
-
try {
|
|
60
|
-
localStorage.setItem(field, JSON.stringify(resources.map((uri) => uri.toString())));
|
|
61
|
-
} catch (e) {
|
|
62
|
-
this.logger.error(e);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
async readResources(field = CLIPBOARD_FILE_TOKEN): Promise<URI[]> {
|
|
66
|
-
try {
|
|
67
|
-
const localStorgeUriList = JSON.parse(localStorage.getItem(field) ?? '');
|
|
68
|
-
if (
|
|
69
|
-
!Array.isArray(localStorgeUriList) ||
|
|
70
|
-
!localStorgeUriList.length ||
|
|
71
|
-
!localStorgeUriList.every((str) => typeof str === 'string' && URI.isUriString(str))
|
|
72
|
-
) {
|
|
73
|
-
return [];
|
|
74
|
-
}
|
|
75
|
-
return localStorgeUriList.map((str) => URI.parse(str));
|
|
76
|
-
} catch (e) {
|
|
77
|
-
this.logger.error(e);
|
|
78
|
-
return [];
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
async hasResources(field?: string | undefined): Promise<boolean> {
|
|
82
|
-
try {
|
|
83
|
-
const localStorgeUriList = JSON.parse(localStorage.getItem(field ?? CLIPBOARD_FILE_TOKEN) ?? '');
|
|
84
|
-
if (
|
|
85
|
-
!Array.isArray(localStorgeUriList) ||
|
|
86
|
-
!localStorgeUriList.length ||
|
|
87
|
-
!localStorgeUriList.every((str) => typeof str === 'string' && URI.isUriString(str))
|
|
88
|
-
) {
|
|
89
|
-
return false;
|
|
90
|
-
}
|
|
91
|
-
return true;
|
|
92
|
-
} catch (e) {
|
|
93
|
-
this.logger.error(e);
|
|
94
|
-
return false;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import { Injectable, Autowired } from '@opensumi/di';
|
|
2
|
-
import {
|
|
3
|
-
Emitter,
|
|
4
|
-
ICredentialsChangeEvent,
|
|
5
|
-
INativeCredentialService,
|
|
6
|
-
KeytarServicePath,
|
|
7
|
-
} from '@opensumi/ide-core-common';
|
|
8
|
-
import { Event } from '@opensumi/ide-core-common';
|
|
9
|
-
|
|
10
|
-
export const ICredentialsService = Symbol('ICredentialsService');
|
|
11
|
-
|
|
12
|
-
export interface ICredentialsProvider {
|
|
13
|
-
getPassword(service: string, account: string): Promise<string | null>;
|
|
14
|
-
setPassword(service: string, account: string, password: string): Promise<void>;
|
|
15
|
-
deletePassword(service: string, account: string): Promise<boolean>;
|
|
16
|
-
findPassword(service: string): Promise<string | null>;
|
|
17
|
-
findCredentials(service: string): Promise<Array<{ account: string; password: string }>>;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export interface ICredentialsService extends ICredentialsProvider {
|
|
21
|
-
readonly onDidChangePassword: Event<ICredentialsChangeEvent>;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export interface CredentialsChangeEvent {
|
|
25
|
-
service: string;
|
|
26
|
-
account: string;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
@Injectable()
|
|
30
|
-
export class CredentialsService implements ICredentialsService {
|
|
31
|
-
private onDidChangePasswordEmitter = new Emitter<CredentialsChangeEvent>();
|
|
32
|
-
readonly onDidChangePassword = this.onDidChangePasswordEmitter.event;
|
|
33
|
-
|
|
34
|
-
private credentialsProvider: ICredentialsProvider;
|
|
35
|
-
|
|
36
|
-
@Autowired(KeytarServicePath)
|
|
37
|
-
private readonly keytarService: INativeCredentialService;
|
|
38
|
-
|
|
39
|
-
constructor() {
|
|
40
|
-
this.credentialsProvider = new KeytarCredentialsProvider(this.keytarService);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
async getPassword(service: string, account: string) {
|
|
44
|
-
return this.credentialsProvider.getPassword(service, account);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
async setPassword(service: string, account: string, password: string) {
|
|
48
|
-
await this.credentialsProvider.setPassword(service, account, password);
|
|
49
|
-
|
|
50
|
-
this.onDidChangePasswordEmitter.fire({ service, account });
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
async deletePassword(service: string, account: string) {
|
|
54
|
-
const didDelete = await this.credentialsProvider.deletePassword(service, account);
|
|
55
|
-
this.onDidChangePasswordEmitter.fire({ service, account });
|
|
56
|
-
|
|
57
|
-
return didDelete;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
async findPassword(service: string) {
|
|
61
|
-
return await this.credentialsProvider.findPassword(service);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
async findCredentials(service: string) {
|
|
65
|
-
return await this.credentialsProvider.findCredentials(service);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
class KeytarCredentialsProvider implements ICredentialsProvider {
|
|
70
|
-
constructor(private readonly keytarService: INativeCredentialService) {}
|
|
71
|
-
|
|
72
|
-
deletePassword(service: string, account: string): Promise<boolean> {
|
|
73
|
-
return this.keytarService.deletePassword(service, account);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
findCredentials(service: string): Promise<Array<{ account: string; password: string }>> {
|
|
77
|
-
return this.keytarService.findCredentials(service);
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
async findPassword(service: string) {
|
|
81
|
-
return await this.keytarService.findPassword(service);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
async getPassword(service: string, account: string) {
|
|
85
|
-
return await this.keytarService.getPassword(service, account);
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
async setPassword(service: string, account: string, password: string) {
|
|
89
|
-
return await this.keytarService.setPassword(service, account, password);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { Injectable, Autowired } from '@opensumi/di';
|
|
2
|
-
import { INativeCryptoService, CryptoServicePath } from '@opensumi/ide-core-common';
|
|
3
|
-
|
|
4
|
-
export const ICryptoService = Symbol('ICryptoService');
|
|
5
|
-
|
|
6
|
-
export interface ICryptoService {
|
|
7
|
-
decrypt(hash: string): Promise<string>;
|
|
8
|
-
encrypt(password: string): Promise<string>;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
@Injectable()
|
|
12
|
-
export class CryptoService implements ICryptoService {
|
|
13
|
-
@Autowired(CryptoServicePath)
|
|
14
|
-
private readonly cryptoService: INativeCryptoService;
|
|
15
|
-
|
|
16
|
-
async encrypt(password: string) {
|
|
17
|
-
return await this.cryptoService.encrypt(password);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
async decrypt(hash: string) {
|
|
21
|
-
return await this.cryptoService.decrypt(hash);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { Injectable, Autowired } from '@opensumi/di';
|
|
2
|
-
import { URI } from '@opensumi/ide-core-common';
|
|
3
|
-
|
|
4
|
-
import { AppConfig } from '../react-providers/config-provider';
|
|
5
|
-
|
|
6
|
-
export const IExternalUriService = Symbol('IExternalUriService');
|
|
7
|
-
|
|
8
|
-
export interface IExternalUriService {
|
|
9
|
-
/**
|
|
10
|
-
* 将一个本地(localhost)地址转为远端地址(window.location)
|
|
11
|
-
* @param uri 需要转换的 URI
|
|
12
|
-
*/
|
|
13
|
-
resolveExternalUri(uri: URI): URI;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export interface ILocation {
|
|
17
|
-
address: string;
|
|
18
|
-
port: number;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
@Injectable()
|
|
22
|
-
export class ExternalUriService implements IExternalUriService {
|
|
23
|
-
@Autowired(AppConfig)
|
|
24
|
-
private readonly appConfig: AppConfig;
|
|
25
|
-
|
|
26
|
-
resolveExternalUri(uri: URI): URI {
|
|
27
|
-
const localhost = this.extractLocalHost(uri);
|
|
28
|
-
if (localhost) {
|
|
29
|
-
return this.toRemoteUrl(uri, localhost);
|
|
30
|
-
}
|
|
31
|
-
return uri;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
protected toRemoteUrl(uri: URI, localhost: ILocation): URI {
|
|
35
|
-
const authority = this.toRemoteHost(localhost);
|
|
36
|
-
return URI.from({
|
|
37
|
-
// scheme 默认和当前 scheme 一致
|
|
38
|
-
scheme: URI.parse(window.location.href).scheme,
|
|
39
|
-
authority,
|
|
40
|
-
path: uri.path.toString(),
|
|
41
|
-
fragment: uri.fragment,
|
|
42
|
-
query: uri.query,
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
protected toRemoteHost(localhost: ILocation): string {
|
|
47
|
-
// 默认使用 remoteHostname
|
|
48
|
-
const hostname = this.appConfig.remoteHostname || window.location.hostname;
|
|
49
|
-
return `${hostname}:${localhost.port}`;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* 解析本地地址
|
|
54
|
-
*/
|
|
55
|
-
protected extractLocalHost(uri: URI): { address: string; port: number } | undefined {
|
|
56
|
-
if (uri.scheme !== 'http' && uri.scheme !== 'https') {
|
|
57
|
-
return undefined;
|
|
58
|
-
}
|
|
59
|
-
const localhostMatch = /^(localhost|127\.0\.0\.1|0\.0\.0\.0):(\d+)$/.exec(uri.authority);
|
|
60
|
-
if (!localhostMatch) {
|
|
61
|
-
return undefined;
|
|
62
|
-
}
|
|
63
|
-
return {
|
|
64
|
-
address: localhostMatch[1],
|
|
65
|
-
port: +localhostMatch[2],
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
}
|
package/src/services/index.ts
DELETED