@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.
Files changed (317) hide show
  1. package/lib/components/actions/index.d.ts.map +1 -1
  2. package/lib/components/actions/index.js +22 -2
  3. package/lib/components/actions/index.js.map +1 -1
  4. package/lib/components/tree/tree.module.less +0 -1
  5. package/lib/contextkey/testing.d.ts +0 -1
  6. package/lib/contextkey/testing.d.ts.map +1 -1
  7. package/lib/contextkey/testing.js +1 -2
  8. package/lib/contextkey/testing.js.map +1 -1
  9. package/lib/menu/next/menu.contrib.interface.d.ts +2 -3
  10. package/lib/menu/next/menu.contrib.interface.d.ts.map +1 -1
  11. package/lib/menu/next/menu.contrib.interface.js.map +1 -1
  12. package/lib/preferences/preference-configurations.js +1 -1
  13. package/lib/preferences/preference-configurations.js.map +1 -1
  14. package/lib/react-providers/config-provider.d.ts +0 -4
  15. package/lib/react-providers/config-provider.d.ts.map +1 -1
  16. package/lib/react-providers/config-provider.js.map +1 -1
  17. package/lib/services/storage-service.d.ts.map +1 -1
  18. package/lib/services/storage-service.js +1 -7
  19. package/lib/services/storage-service.js.map +1 -1
  20. package/lib/utils/label.d.ts.map +1 -1
  21. package/lib/utils/label.js +9 -16
  22. package/lib/utils/label.js.map +1 -1
  23. package/package.json +6 -7
  24. package/src/application/application-state-service.ts +0 -54
  25. package/src/application/application.service.ts +0 -51
  26. package/src/application/index.ts +0 -2
  27. package/src/authentication/authentication.contribution.ts +0 -35
  28. package/src/authentication/authentication.service.ts +0 -517
  29. package/src/bootstrap/app.ts +0 -745
  30. package/src/bootstrap/app.view.tsx +0 -88
  31. package/src/bootstrap/connection.ts +0 -116
  32. package/src/bootstrap/index.ts +0 -3
  33. package/src/bootstrap/inner-providers.ts +0 -297
  34. package/src/bootstrap/lifecycle.service.ts +0 -19
  35. package/src/browser-module.ts +0 -24
  36. package/src/common/common.command.ts +0 -977
  37. package/src/common/common.contribution.ts +0 -343
  38. package/src/common/common.define.ts +0 -55
  39. package/src/common/common.module.ts +0 -33
  40. package/src/common/common.storage.ts +0 -22
  41. package/src/common/container-id.ts +0 -12
  42. package/src/common/index.ts +0 -4
  43. package/src/components/actions/index.tsx +0 -486
  44. package/src/components/actions/placements.ts +0 -47
  45. package/src/components/actions/styles.module.less +0 -144
  46. package/src/components/badge/index.tsx +0 -1
  47. package/src/components/index.ts +0 -26
  48. package/src/components/layout/box-panel.tsx +0 -88
  49. package/src/components/layout/default-layout.tsx +0 -61
  50. package/src/components/layout/index.ts +0 -4
  51. package/src/components/layout/layout.ts +0 -80
  52. package/src/components/layout/split-panel.service.ts +0 -56
  53. package/src/components/layout/split-panel.tsx +0 -296
  54. package/src/components/layout/styles.module.less +0 -21
  55. package/src/components/loading/index.ts +0 -1
  56. package/src/components/loading/loading.less +0 -14
  57. package/src/components/loading/loading.view.tsx +0 -7
  58. package/src/components/loading/media/loading-dark.svg +0 -52
  59. package/src/components/loading/media/loading-hc.svg +0 -52
  60. package/src/components/loading/media/loading.svg +0 -52
  61. package/src/components/popover/styles.module.less +0 -81
  62. package/src/components/portal/index.tsx +0 -13
  63. package/src/components/progressbar/index.tsx +0 -16
  64. package/src/components/progressbar/styles.module.less +0 -31
  65. package/src/components/recycle-tree/index.ts +0 -1
  66. package/src/components/recycle-tree/recycle-tree.view.tsx +0 -368
  67. package/src/components/resize/resize.module.less +0 -78
  68. package/src/components/resize/resize.tsx +0 -663
  69. package/src/components/scroll/index.tsx +0 -386
  70. package/src/components/scroll/scroll.module.less +0 -108
  71. package/src/components/scrollbar/index.ts +0 -1
  72. package/src/components/scrollbar/scrollbar.less +0 -36
  73. package/src/components/scrollbar/scrollbar.view.ts +0 -8
  74. package/src/components/select/index.tsx +0 -12
  75. package/src/components/select/styles.less +0 -6
  76. package/src/components/tree/index.ts +0 -3
  77. package/src/components/tree/tree-node.view.tsx +0 -546
  78. package/src/components/tree/tree.module.less +0 -297
  79. package/src/components/tree/tree.view.tsx +0 -486
  80. package/src/context-key.ts +0 -48
  81. package/src/contextkey/dialog.ts +0 -3
  82. package/src/contextkey/explorer.ts +0 -26
  83. package/src/contextkey/index.ts +0 -6
  84. package/src/contextkey/outline.ts +0 -4
  85. package/src/contextkey/resource.ts +0 -61
  86. package/src/contextkey/terminal.ts +0 -7
  87. package/src/contextkey/testing.ts +0 -9
  88. package/src/contextkey/workspace.ts +0 -7
  89. package/src/core-preferences.ts +0 -318
  90. package/src/dom/index.ts +0 -176
  91. package/src/encoding-registry.ts +0 -83
  92. package/src/extensions/extensions-point.service.ts +0 -78
  93. package/src/extensions/index.ts +0 -3
  94. package/src/extensions/schema/browserViews.ts +0 -96
  95. package/src/extensions/schema/menu.ts +0 -245
  96. package/src/extensions/schema/opensumiExtensionPackageSchema.ts +0 -12
  97. package/src/extensions/schema/toolbar.ts +0 -338
  98. package/src/extensions/schema/vscodeExtensionPackageSchema.ts +0 -330
  99. package/src/fs/index.ts +0 -12
  100. package/src/hash-calculate/hash-calculate.contribution.ts +0 -19
  101. package/src/index.ts +0 -42
  102. package/src/keybinding/index.ts +0 -1
  103. package/src/keybinding/keybinding.ts +0 -908
  104. package/src/keyboard/index.ts +0 -3
  105. package/src/keyboard/keyboard-layout-provider.ts +0 -412
  106. package/src/keyboard/keyboard-layout-service.ts +0 -449
  107. package/src/keyboard/keys.ts +0 -748
  108. package/src/keyboard/layouts/_.contribution.ts +0 -24
  109. package/src/keyboard/layouts/cz.win.ts +0 -168
  110. package/src/keyboard/layouts/de-swiss.win.ts +0 -168
  111. package/src/keyboard/layouts/de.darwin.ts +0 -131
  112. package/src/keyboard/layouts/de.linux.ts +0 -186
  113. package/src/keyboard/layouts/de.win.ts +0 -168
  114. package/src/keyboard/layouts/dk.win.ts +0 -168
  115. package/src/keyboard/layouts/dvorak.darwin.ts +0 -131
  116. package/src/keyboard/layouts/en-belgian.win.ts +0 -168
  117. package/src/keyboard/layouts/en-ext.darwin.ts +0 -131
  118. package/src/keyboard/layouts/en-in.win.ts +0 -168
  119. package/src/keyboard/layouts/en-intl.darwin.ts +0 -131
  120. package/src/keyboard/layouts/en-intl.win.ts +0 -168
  121. package/src/keyboard/layouts/en-uk.darwin.ts +0 -131
  122. package/src/keyboard/layouts/en-uk.win.ts +0 -168
  123. package/src/keyboard/layouts/en.darwin.ts +0 -139
  124. package/src/keyboard/layouts/en.linux.ts +0 -186
  125. package/src/keyboard/layouts/en.win.ts +0 -173
  126. package/src/keyboard/layouts/es-latin.win.ts +0 -168
  127. package/src/keyboard/layouts/es.darwin.ts +0 -131
  128. package/src/keyboard/layouts/es.linux.ts +0 -186
  129. package/src/keyboard/layouts/es.win.ts +0 -168
  130. package/src/keyboard/layouts/fr.darwin.ts +0 -131
  131. package/src/keyboard/layouts/fr.linux.ts +0 -186
  132. package/src/keyboard/layouts/fr.win.ts +0 -168
  133. package/src/keyboard/layouts/hu.win.ts +0 -168
  134. package/src/keyboard/layouts/it.darwin.ts +0 -131
  135. package/src/keyboard/layouts/it.win.ts +0 -168
  136. package/src/keyboard/layouts/jp-roman.darwin.ts +0 -131
  137. package/src/keyboard/layouts/jp.darwin.ts +0 -131
  138. package/src/keyboard/layouts/ko.darwin.ts +0 -131
  139. package/src/keyboard/layouts/layout.contribution.darwin.ts +0 -23
  140. package/src/keyboard/layouts/layout.contribution.linux.ts +0 -12
  141. package/src/keyboard/layouts/layout.contribution.ts +0 -9
  142. package/src/keyboard/layouts/layout.contribution.win.ts +0 -29
  143. package/src/keyboard/layouts/no.win.ts +0 -168
  144. package/src/keyboard/layouts/pl.darwin.ts +0 -131
  145. package/src/keyboard/layouts/pl.win.ts +0 -168
  146. package/src/keyboard/layouts/pt-br.win.ts +0 -169
  147. package/src/keyboard/layouts/pt.darwin.ts +0 -131
  148. package/src/keyboard/layouts/pt.win.ts +0 -168
  149. package/src/keyboard/layouts/ru.darwin.ts +0 -131
  150. package/src/keyboard/layouts/ru.linux.ts +0 -186
  151. package/src/keyboard/layouts/ru.win.ts +0 -168
  152. package/src/keyboard/layouts/sv.darwin.ts +0 -131
  153. package/src/keyboard/layouts/sv.win.ts +0 -168
  154. package/src/keyboard/layouts/thai.win.ts +0 -168
  155. package/src/keyboard/layouts/tr.win.ts +0 -168
  156. package/src/keyboard/layouts/zh-hans.darwin.ts +0 -131
  157. package/src/layout/accordion/tab-bar-toolbar.tsx +0 -59
  158. package/src/layout/accordion/view-context-key.registry.ts +0 -34
  159. package/src/layout/constants.ts +0 -7
  160. package/src/layout/index.ts +0 -5
  161. package/src/layout/layout-hooks.ts +0 -68
  162. package/src/layout/layout-state.ts +0 -107
  163. package/src/layout/layout.interface.ts +0 -101
  164. package/src/layout/layout.ts +0 -80
  165. package/src/layout/view-id.ts +0 -18
  166. package/src/logger/browser-logger.ts +0 -51
  167. package/src/logger/index.ts +0 -1
  168. package/src/markdown/index.tsx +0 -62
  169. package/src/menu/next/base.ts +0 -513
  170. package/src/menu/next/ctxmenu-service.ts +0 -188
  171. package/src/menu/next/index.ts +0 -10
  172. package/src/menu/next/menu-id.ts +0 -86
  173. package/src/menu/next/menu-service.ts +0 -252
  174. package/src/menu/next/menu-util.ts +0 -77
  175. package/src/menu/next/menu.contrib.interface.ts +0 -79
  176. package/src/menu/next/menu.interface.ts +0 -253
  177. package/src/menu/next/menubar-service.ts +0 -211
  178. package/src/menu/next/renderer/ctxmenu/base.ts +0 -18
  179. package/src/menu/next/renderer/ctxmenu/browser.ts +0 -45
  180. package/src/menu/next/renderer/ctxmenu/electron.ts +0 -207
  181. package/src/menu/next/toolbar-action.service.ts +0 -132
  182. package/src/monaco/index.ts +0 -128
  183. package/src/opener/command-opener.ts +0 -42
  184. package/src/opener/default-opener.ts +0 -31
  185. package/src/opener/http-opener.ts +0 -25
  186. package/src/opener/index.ts +0 -19
  187. package/src/opener/opener.contribution.ts +0 -57
  188. package/src/opener/opener.service.ts +0 -66
  189. package/src/preferences/early-preferences.ts +0 -117
  190. package/src/preferences/index.ts +0 -9
  191. package/src/preferences/preference-configurations.ts +0 -77
  192. package/src/preferences/preference-contribution.ts +0 -401
  193. package/src/preferences/preference-provider.ts +0 -414
  194. package/src/preferences/preference-proxy.ts +0 -292
  195. package/src/preferences/preference-scope.ts +0 -3
  196. package/src/preferences/preference-service.ts +0 -571
  197. package/src/preferences/settings.ts +0 -53
  198. package/src/preferences/types.ts +0 -111
  199. package/src/progress/index.ts +0 -58
  200. package/src/progress/progress-bar.tsx +0 -22
  201. package/src/progress/progress-indicator.ts +0 -90
  202. package/src/progress/progress.module.less +0 -46
  203. package/src/progress/progress.service.tsx +0 -429
  204. package/src/quick-open/index.ts +0 -655
  205. package/src/quick-open/recent-files.ts +0 -68
  206. package/src/raw-context-key.ts +0 -116
  207. package/src/react-hooks/event.tsx +0 -80
  208. package/src/react-hooks/hot-key.tsx +0 -58
  209. package/src/react-hooks/index.ts +0 -3
  210. package/src/react-hooks/injectable-hooks.tsx +0 -35
  211. package/src/react-hooks/portal-hooks.tsx +0 -38
  212. package/src/react-providers/config-provider.tsx +0 -263
  213. package/src/react-providers/index.tsx +0 -2
  214. package/src/react-providers/slot.module.less +0 -19
  215. package/src/react-providers/slot.tsx +0 -242
  216. package/src/services/clipboard.service.ts +0 -97
  217. package/src/services/credentials-service.ts +0 -91
  218. package/src/services/crypto-service.ts +0 -23
  219. package/src/services/external-uri.service.ts +0 -68
  220. package/src/services/index.ts +0 -7
  221. package/src/services/label-service.ts +0 -386
  222. package/src/services/status-bar-service.ts +0 -108
  223. package/src/services/storage-service.ts +0 -197
  224. package/src/style/codicons/README.md +0 -22
  225. package/src/style/codicons/codicon-animations.css +0 -15
  226. package/src/style/codicons/generator.js +0 -15
  227. package/src/style/entry.less +0 -25
  228. package/src/style/icon/fileicons/file-default.svg +0 -1
  229. package/src/style/icon/fileicons/folder-default.svg +0 -1
  230. package/src/style/icon/fileicons.less +0 -20
  231. package/src/style/icon/icon.ts +0 -543
  232. package/src/style/icon/ide-iconfont.ts +0 -13
  233. package/src/style/icon/index.less +0 -54
  234. package/src/style/icon/seti.woff +0 -0
  235. package/src/style/icon/symbol-icons/boolean-dark.svg +0 -3
  236. package/src/style/icon/symbol-icons/boolean-light.svg +0 -3
  237. package/src/style/icon/symbol-icons/class-dark.svg +0 -3
  238. package/src/style/icon/symbol-icons/class-light.svg +0 -3
  239. package/src/style/icon/symbol-icons/constant-dark.svg +0 -4
  240. package/src/style/icon/symbol-icons/constant-light.svg +0 -4
  241. package/src/style/icon/symbol-icons/enumerator-dark.svg +0 -3
  242. package/src/style/icon/symbol-icons/enumerator-item-dark.svg +0 -3
  243. package/src/style/icon/symbol-icons/enumerator-item-light.svg +0 -3
  244. package/src/style/icon/symbol-icons/enumerator-light.svg +0 -3
  245. package/src/style/icon/symbol-icons/event-dark.svg +0 -3
  246. package/src/style/icon/symbol-icons/event-light.svg +0 -3
  247. package/src/style/icon/symbol-icons/field-dark.svg +0 -3
  248. package/src/style/icon/symbol-icons/field-light.svg +0 -3
  249. package/src/style/icon/symbol-icons/file-dark.svg +0 -3
  250. package/src/style/icon/symbol-icons/file-light.svg +0 -3
  251. package/src/style/icon/symbol-icons/indexer-dark.svg +0 -3
  252. package/src/style/icon/symbol-icons/indexer-light.svg +0 -3
  253. package/src/style/icon/symbol-icons/interface-dark.svg +0 -3
  254. package/src/style/icon/symbol-icons/interface-light.svg +0 -3
  255. package/src/style/icon/symbol-icons/keyword-dark.svg +0 -3
  256. package/src/style/icon/symbol-icons/keyword-light.svg +0 -3
  257. package/src/style/icon/symbol-icons/method-dark.svg +0 -3
  258. package/src/style/icon/symbol-icons/method-light.svg +0 -3
  259. package/src/style/icon/symbol-icons/namespace-dark.svg +0 -3
  260. package/src/style/icon/symbol-icons/namespace-light.svg +0 -3
  261. package/src/style/icon/symbol-icons/numeric-dark.svg +0 -3
  262. package/src/style/icon/symbol-icons/numeric-light.svg +0 -3
  263. package/src/style/icon/symbol-icons/operator-dark.svg +0 -3
  264. package/src/style/icon/symbol-icons/operator-light.svg +0 -3
  265. package/src/style/icon/symbol-icons/property-dark.svg +0 -3
  266. package/src/style/icon/symbol-icons/property-light.svg +0 -3
  267. package/src/style/icon/symbol-icons/snippet-dark.svg +0 -3
  268. package/src/style/icon/symbol-icons/snippet-light.svg +0 -3
  269. package/src/style/icon/symbol-icons/string-dark.svg +0 -3
  270. package/src/style/icon/symbol-icons/string-light.svg +0 -3
  271. package/src/style/icon/symbol-icons/structure-dark.svg +0 -3
  272. package/src/style/icon/symbol-icons/structure-light.svg +0 -3
  273. package/src/style/icon/symbol-icons/symbol-icons.css +0 -284
  274. package/src/style/icon/symbol-icons/template-dark.svg +0 -3
  275. package/src/style/icon/symbol-icons/template-light.svg +0 -3
  276. package/src/style/icon/symbol-icons/variable-dark.svg +0 -3
  277. package/src/style/icon/symbol-icons/variable-light.svg +0 -3
  278. package/src/style/icon.less +0 -8
  279. package/src/style/index.less +0 -14
  280. package/src/style/monaco-override.less +0 -116
  281. package/src/style/normalize.less +0 -92
  282. package/src/style/octicons/octicons-cdn.css +0 -720
  283. package/src/style/octicons/octicons.css +0 -714
  284. package/src/style/octicons/octicons.html +0 -1882
  285. package/src/style/octicons/octicons.svg +0 -582
  286. package/src/style/octicons/octicons.ttf +0 -0
  287. package/src/style/override.less +0 -97
  288. package/src/style/toolbar.less +0 -199
  289. package/src/style/utilities.less +0 -8
  290. package/src/style/variable.less +0 -8
  291. package/src/terminal/index.ts +0 -7
  292. package/src/toolbar/components/auto-complete.tsx +0 -0
  293. package/src/toolbar/components/button.tsx +0 -440
  294. package/src/toolbar/components/index.ts +0 -2
  295. package/src/toolbar/components/select.tsx +0 -189
  296. package/src/toolbar/index.ts +0 -3
  297. package/src/toolbar/toolbar.popover.registry.ts +0 -32
  298. package/src/toolbar/toolbar.registry.ts +0 -352
  299. package/src/toolbar/toolbar.tsx +0 -710
  300. package/src/toolbar/types.ts +0 -383
  301. package/src/tree/index.ts +0 -3
  302. package/src/tree/tree-expansion.ts +0 -25
  303. package/src/tree/tree-selection.ts +0 -89
  304. package/src/tree/tree.ts +0 -294
  305. package/src/utils/create-overlay.tsx +0 -53
  306. package/src/utils/electron.ts +0 -92
  307. package/src/utils/env.ts +0 -26
  308. package/src/utils/icon.ts +0 -13
  309. package/src/utils/index.ts +0 -7
  310. package/src/utils/json.ts +0 -251
  311. package/src/utils/label.tsx +0 -36
  312. package/src/utils/parse.ts +0 -72
  313. package/src/utils/react-hooks.ts +0 -118
  314. package/src/variable/index.ts +0 -1
  315. package/src/variable/variable.ts +0 -84
  316. package/src/window/index.ts +0 -34
  317. 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
- }
@@ -1,7 +0,0 @@
1
- export * from './label-service';
2
- export * from './storage-service';
3
- export * from './status-bar-service';
4
- export * from './clipboard.service';
5
- export * from './external-uri.service';
6
- export * from './credentials-service';
7
- export * from './crypto-service';