@theia/core 1.59.0-next.72 → 1.60.0-next.43

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 (285) hide show
  1. package/README.md +16 -16
  2. package/i18n/nls.cs.json +344 -23
  3. package/i18n/nls.de.json +344 -23
  4. package/i18n/nls.es.json +344 -23
  5. package/i18n/nls.fr.json +344 -23
  6. package/i18n/nls.hu.json +344 -23
  7. package/i18n/nls.it.json +344 -23
  8. package/i18n/nls.ja.json +344 -23
  9. package/i18n/nls.json +344 -23
  10. package/i18n/nls.ko.json +344 -23
  11. package/i18n/nls.pl.json +344 -23
  12. package/i18n/nls.pt-br.json +344 -23
  13. package/i18n/nls.ru.json +344 -23
  14. package/i18n/nls.tr.json +344 -23
  15. package/i18n/nls.zh-cn.json +344 -23
  16. package/i18n/nls.zh-tw.json +344 -23
  17. package/lib/browser/about-dialog.d.ts.map +1 -1
  18. package/lib/browser/about-dialog.js +3 -2
  19. package/lib/browser/about-dialog.js.map +1 -1
  20. package/lib/browser/browser.d.ts +2 -0
  21. package/lib/browser/browser.d.ts.map +1 -1
  22. package/lib/browser/browser.js +6 -1
  23. package/lib/browser/browser.js.map +1 -1
  24. package/lib/browser/catalog.json +207 -14
  25. package/lib/browser/common-frontend-contribution.d.ts +2 -0
  26. package/lib/browser/common-frontend-contribution.d.ts.map +1 -1
  27. package/lib/browser/common-frontend-contribution.js +56 -22
  28. package/lib/browser/common-frontend-contribution.js.map +1 -1
  29. package/lib/browser/common-styling-participants.js +25 -25
  30. package/lib/browser/context-menu-renderer.d.ts +3 -3
  31. package/lib/browser/context-menu-renderer.d.ts.map +1 -1
  32. package/lib/browser/core-preferences.js +5 -5
  33. package/lib/browser/core-preferences.js.map +1 -1
  34. package/lib/browser/menu/browser-context-menu-renderer.d.ts.map +1 -1
  35. package/lib/browser/menu/browser-context-menu-renderer.js +1 -2
  36. package/lib/browser/menu/browser-context-menu-renderer.js.map +1 -1
  37. package/lib/browser/menu/browser-menu-plugin.d.ts +5 -5
  38. package/lib/browser/menu/browser-menu-plugin.d.ts.map +1 -1
  39. package/lib/browser/menu/browser-menu-plugin.js +23 -13
  40. package/lib/browser/menu/browser-menu-plugin.js.map +1 -1
  41. package/lib/browser/preferences/injectable-preference-proxy.d.ts +1 -1
  42. package/lib/browser/preferences/injectable-preference-proxy.d.ts.map +1 -1
  43. package/lib/browser/preferences/preference-contribution.d.ts +1 -1
  44. package/lib/browser/preferences/preference-contribution.d.ts.map +1 -1
  45. package/lib/browser/preferences/preference-provider.d.ts +1 -1
  46. package/lib/browser/preferences/preference-provider.d.ts.map +1 -1
  47. package/lib/browser/preferences/preference-provider.js +1 -1
  48. package/lib/browser/preferences/preference-provider.js.map +1 -1
  49. package/lib/browser/preferences/preference-service.d.ts +1 -1
  50. package/lib/browser/preferences/preference-service.d.ts.map +1 -1
  51. package/lib/browser/preferences/preference-service.js +3 -3
  52. package/lib/browser/preferences/preference-service.js.map +1 -1
  53. package/lib/browser/preferences/preference-validation-service.d.ts +1 -1
  54. package/lib/browser/preferences/preference-validation-service.d.ts.map +1 -1
  55. package/lib/browser/preload/i18n-preload-contribution.d.ts +4 -0
  56. package/lib/browser/preload/i18n-preload-contribution.d.ts.map +1 -1
  57. package/lib/browser/preload/i18n-preload-contribution.js +23 -1
  58. package/lib/browser/preload/i18n-preload-contribution.js.map +1 -1
  59. package/lib/browser/preload/preload-module.d.ts.map +1 -1
  60. package/lib/browser/preload/preload-module.js +5 -3
  61. package/lib/browser/preload/preload-module.js.map +1 -1
  62. package/lib/browser/preload/text-replacement-contribution.d.ts +37 -0
  63. package/lib/browser/preload/text-replacement-contribution.d.ts.map +1 -0
  64. package/lib/browser/preload/text-replacement-contribution.js +20 -0
  65. package/lib/browser/preload/text-replacement-contribution.js.map +1 -0
  66. package/lib/browser/saveable.d.ts +11 -3
  67. package/lib/browser/saveable.d.ts.map +1 -1
  68. package/lib/browser/saveable.js +2 -1
  69. package/lib/browser/saveable.js.map +1 -1
  70. package/lib/browser/shell/application-shell-mouse-tracker.d.ts +1 -1
  71. package/lib/browser/shell/application-shell-mouse-tracker.d.ts.map +1 -1
  72. package/lib/browser/shell/application-shell-mouse-tracker.js +3 -3
  73. package/lib/browser/shell/application-shell-mouse-tracker.js.map +1 -1
  74. package/lib/browser/shell/application-shell.d.ts +10 -7
  75. package/lib/browser/shell/application-shell.d.ts.map +1 -1
  76. package/lib/browser/shell/application-shell.js +24 -21
  77. package/lib/browser/shell/application-shell.js.map +1 -1
  78. package/lib/browser/shell/shell-layout-restorer.d.ts +1 -1
  79. package/lib/browser/shell/shell-layout-restorer.d.ts.map +1 -1
  80. package/lib/browser/shell/side-panel-handler.d.ts +2 -2
  81. package/lib/browser/shell/side-panel-handler.d.ts.map +1 -1
  82. package/lib/browser/shell/side-panel-handler.js +13 -12
  83. package/lib/browser/shell/side-panel-handler.js.map +1 -1
  84. package/lib/browser/shell/side-panel-toolbar.d.ts +2 -2
  85. package/lib/browser/shell/side-panel-toolbar.d.ts.map +1 -1
  86. package/lib/browser/shell/side-panel-toolbar.js +1 -1
  87. package/lib/browser/shell/side-panel-toolbar.js.map +1 -1
  88. package/lib/browser/shell/sidebar-bottom-menu-widget.d.ts.map +1 -1
  89. package/lib/browser/shell/sidebar-bottom-menu-widget.js +2 -1
  90. package/lib/browser/shell/sidebar-bottom-menu-widget.js.map +1 -1
  91. package/lib/browser/shell/sidebar-menu-widget.d.ts.map +1 -1
  92. package/lib/browser/shell/sidebar-menu-widget.js +1 -0
  93. package/lib/browser/shell/sidebar-menu-widget.js.map +1 -1
  94. package/lib/browser/shell/split-panels.d.ts +1 -1
  95. package/lib/browser/shell/split-panels.d.ts.map +1 -1
  96. package/lib/browser/shell/split-panels.js +1 -1
  97. package/lib/browser/shell/split-panels.js.map +1 -1
  98. package/lib/browser/shell/tab-bar-decorator.d.ts +1 -1
  99. package/lib/browser/shell/tab-bar-decorator.d.ts.map +1 -1
  100. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.d.ts +1 -1
  101. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.d.ts.map +1 -1
  102. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js +3 -3
  103. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js.map +1 -1
  104. package/lib/browser/shell/tab-bars.d.ts +18 -12
  105. package/lib/browser/shell/tab-bars.d.ts.map +1 -1
  106. package/lib/browser/shell/tab-bars.js +80 -51
  107. package/lib/browser/shell/tab-bars.js.map +1 -1
  108. package/lib/browser/shell/tab-bars.spec.js +1 -1
  109. package/lib/browser/shell/tab-bars.spec.js.map +1 -1
  110. package/lib/browser/shell/theia-dock-panel.d.ts +2 -2
  111. package/lib/browser/shell/theia-dock-panel.d.ts.map +1 -1
  112. package/lib/browser/shell/theia-dock-panel.js +3 -3
  113. package/lib/browser/shell/theia-dock-panel.js.map +1 -1
  114. package/lib/browser/shell/view-column-service.d.ts +1 -1
  115. package/lib/browser/shell/view-column-service.d.ts.map +1 -1
  116. package/lib/browser/shell/view-column-service.js +1 -1
  117. package/lib/browser/shell/view-column-service.js.map +1 -1
  118. package/lib/browser/shell/view-contribution.d.ts +1 -1
  119. package/lib/browser/shell/view-contribution.d.ts.map +1 -1
  120. package/lib/browser/source-tree/source-tree.d.ts.map +1 -1
  121. package/lib/browser/source-tree/source-tree.js +3 -2
  122. package/lib/browser/source-tree/source-tree.js.map +1 -1
  123. package/lib/browser/source-tree/tree-source.d.ts +1 -0
  124. package/lib/browser/source-tree/tree-source.d.ts.map +1 -1
  125. package/lib/browser/source-tree/tree-source.js.map +1 -1
  126. package/lib/browser/tree/tree-widget.d.ts +1 -1
  127. package/lib/browser/tree/tree-widget.d.ts.map +1 -1
  128. package/lib/browser/tree/tree-widget.js +2 -1
  129. package/lib/browser/tree/tree-widget.js.map +1 -1
  130. package/lib/browser/view-container.d.ts +6 -7
  131. package/lib/browser/view-container.d.ts.map +1 -1
  132. package/lib/browser/view-container.js +31 -27
  133. package/lib/browser/view-container.js.map +1 -1
  134. package/lib/browser/widget-manager.d.ts +1 -1
  135. package/lib/browser/widget-manager.d.ts.map +1 -1
  136. package/lib/browser/widget-manager.js +1 -1
  137. package/lib/browser/widget-manager.js.map +1 -1
  138. package/lib/browser/widget-manager.spec.js +1 -1
  139. package/lib/browser/widget-manager.spec.js.map +1 -1
  140. package/lib/browser/widgets/react-widget.d.ts +1 -1
  141. package/lib/browser/widgets/react-widget.d.ts.map +1 -1
  142. package/lib/browser/widgets/react-widget.js +1 -1
  143. package/lib/browser/widgets/react-widget.js.map +1 -1
  144. package/lib/browser/widgets/widget.d.ts +6 -6
  145. package/lib/browser/widgets/widget.d.ts.map +1 -1
  146. package/lib/browser/widgets/widget.js +10 -8
  147. package/lib/browser/widgets/widget.js.map +1 -1
  148. package/lib/common/i18n/localization.d.ts +2 -3
  149. package/lib/common/i18n/localization.d.ts.map +1 -1
  150. package/lib/common/i18n/localization.js +10 -3
  151. package/lib/common/i18n/localization.js.map +1 -1
  152. package/lib/common/json-schema.d.ts +1 -1
  153. package/lib/common/json-schema.d.ts.map +1 -1
  154. package/lib/common/preferences/preference-schema.d.ts +4 -1
  155. package/lib/common/preferences/preference-schema.d.ts.map +1 -1
  156. package/lib/common/preferences/preference-schema.js.map +1 -1
  157. package/lib/common/theme.d.ts +2 -0
  158. package/lib/common/theme.d.ts.map +1 -1
  159. package/lib/common/theme.js +5 -1
  160. package/lib/common/theme.js.map +1 -1
  161. package/lib/electron-browser/menu/electron-context-menu-renderer.d.ts.map +1 -1
  162. package/lib/electron-browser/menu/electron-context-menu-renderer.js +3 -1
  163. package/lib/electron-browser/menu/electron-context-menu-renderer.js.map +1 -1
  164. package/lib/electron-browser/menu/electron-menu-contribution.d.ts +1 -1
  165. package/lib/electron-browser/menu/electron-menu-contribution.d.ts.map +1 -1
  166. package/lib/electron-browser/menu/electron-menu-contribution.js +6 -4
  167. package/lib/electron-browser/menu/electron-menu-contribution.js.map +1 -1
  168. package/lib/electron-browser/preload.d.ts.map +1 -1
  169. package/lib/electron-browser/preload.js +3 -0
  170. package/lib/electron-browser/preload.js.map +1 -1
  171. package/lib/electron-common/electron-api.d.ts +3 -0
  172. package/lib/electron-common/electron-api.d.ts.map +1 -1
  173. package/lib/electron-common/electron-api.js +2 -1
  174. package/lib/electron-common/electron-api.js.map +1 -1
  175. package/lib/electron-main/electron-api-main.d.ts.map +1 -1
  176. package/lib/electron-main/electron-api-main.js +1 -0
  177. package/lib/electron-main/electron-api-main.js.map +1 -1
  178. package/lib/electron-main/electron-main-application.d.ts +2 -0
  179. package/lib/electron-main/electron-main-application.d.ts.map +1 -1
  180. package/lib/electron-main/electron-main-application.js +3 -0
  181. package/lib/electron-main/electron-main-application.js.map +1 -1
  182. package/lib/node/messaging/websocket-frontend-connection-service.js +1 -1
  183. package/package.json +26 -26
  184. package/shared/@lumino/algorithm/index.d.ts +1 -0
  185. package/shared/@lumino/algorithm/index.js +1 -0
  186. package/shared/@lumino/commands/index.d.ts +1 -0
  187. package/shared/@lumino/commands/index.js +1 -0
  188. package/shared/@lumino/coreutils/index.d.ts +1 -0
  189. package/shared/@lumino/coreutils/index.js +1 -0
  190. package/shared/@lumino/domutils/index.d.ts +1 -0
  191. package/shared/@lumino/domutils/index.js +1 -0
  192. package/shared/@lumino/dragdrop/index.d.ts +1 -0
  193. package/shared/@lumino/dragdrop/index.js +1 -0
  194. package/shared/@lumino/messaging/index.d.ts +1 -0
  195. package/shared/@lumino/messaging/index.js +1 -0
  196. package/shared/@lumino/properties/index.d.ts +1 -0
  197. package/shared/@lumino/properties/index.js +1 -0
  198. package/shared/@lumino/signaling/index.d.ts +1 -0
  199. package/shared/@lumino/signaling/index.js +1 -0
  200. package/shared/@lumino/virtualdom/index.d.ts +1 -0
  201. package/shared/@lumino/virtualdom/index.js +1 -0
  202. package/shared/@lumino/widgets/index.d.ts +1 -0
  203. package/shared/@lumino/widgets/index.js +1 -0
  204. package/src/browser/about-dialog.tsx +3 -2
  205. package/src/browser/browser.ts +6 -1
  206. package/src/browser/common-frontend-contribution.ts +54 -22
  207. package/src/browser/common-styling-participants.ts +25 -25
  208. package/src/browser/context-menu-renderer.ts +3 -3
  209. package/src/browser/core-preferences.ts +5 -5
  210. package/src/browser/menu/browser-context-menu-renderer.ts +1 -2
  211. package/src/browser/menu/browser-menu-plugin.ts +24 -14
  212. package/src/browser/preferences/injectable-preference-proxy.ts +1 -1
  213. package/src/browser/preferences/preference-contribution.ts +1 -1
  214. package/src/browser/preferences/preference-provider.ts +1 -1
  215. package/src/browser/preferences/preference-service.ts +1 -1
  216. package/src/browser/preferences/preference-validation-service.spec.ts +1 -1
  217. package/src/browser/preferences/preference-validation-service.ts +1 -1
  218. package/src/browser/preload/i18n-preload-contribution.ts +22 -2
  219. package/src/browser/preload/preload-module.ts +5 -3
  220. package/src/browser/preload/text-replacement-contribution.ts +53 -0
  221. package/src/browser/saveable.ts +13 -3
  222. package/src/browser/shell/application-shell-mouse-tracker.ts +3 -3
  223. package/src/browser/shell/application-shell.ts +36 -32
  224. package/src/browser/shell/shell-layout-restorer.ts +1 -1
  225. package/src/browser/shell/side-panel-handler.ts +13 -12
  226. package/src/browser/shell/side-panel-toolbar.ts +2 -2
  227. package/src/browser/shell/sidebar-bottom-menu-widget.tsx +2 -1
  228. package/src/browser/shell/sidebar-menu-widget.tsx +1 -0
  229. package/src/browser/shell/split-panels.ts +1 -1
  230. package/src/browser/shell/tab-bar-decorator.ts +1 -1
  231. package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar.tsx +3 -3
  232. package/src/browser/shell/tab-bars.spec.ts +1 -1
  233. package/src/browser/shell/tab-bars.ts +93 -57
  234. package/src/browser/shell/theia-dock-panel.ts +3 -3
  235. package/src/browser/shell/view-column-service.ts +2 -2
  236. package/src/browser/shell/view-contribution.ts +1 -1
  237. package/src/browser/source-tree/source-tree.ts +3 -2
  238. package/src/browser/source-tree/tree-source.ts +1 -0
  239. package/src/browser/style/dialog.css +12 -12
  240. package/src/browser/style/dockpanel.css +19 -19
  241. package/src/browser/style/hover-service.css +1 -0
  242. package/src/browser/style/index.css +3 -3
  243. package/src/browser/style/menus.css +34 -31
  244. package/src/browser/style/sidepanel.css +52 -48
  245. package/src/browser/style/split-widget.css +5 -5
  246. package/src/browser/style/tabs.css +91 -97
  247. package/src/browser/style/view-container.css +14 -14
  248. package/src/browser/tree/tree-widget.tsx +3 -2
  249. package/src/browser/view-container.ts +40 -36
  250. package/src/browser/widget-manager.spec.ts +1 -1
  251. package/src/browser/widget-manager.ts +1 -1
  252. package/src/browser/widgets/react-widget.tsx +1 -1
  253. package/src/browser/widgets/widget.ts +11 -9
  254. package/src/common/i18n/localization.ts +10 -4
  255. package/src/common/i18n/nls.metadata.json +34921 -32708
  256. package/src/common/json-schema.ts +1 -1
  257. package/src/common/preferences/preference-schema.ts +4 -1
  258. package/src/common/theme.ts +6 -0
  259. package/src/electron-browser/menu/electron-context-menu-renderer.ts +3 -1
  260. package/src/electron-browser/menu/electron-menu-contribution.ts +6 -5
  261. package/src/electron-browser/preload.ts +6 -3
  262. package/src/electron-common/electron-api.ts +3 -0
  263. package/src/electron-main/electron-api-main.ts +4 -1
  264. package/src/electron-main/electron-main-application.ts +5 -0
  265. package/src/node/messaging/websocket-frontend-connection-service.ts +1 -2
  266. package/shared/@phosphor/algorithm/index.d.ts +0 -1
  267. package/shared/@phosphor/algorithm/index.js +0 -1
  268. package/shared/@phosphor/commands/index.d.ts +0 -1
  269. package/shared/@phosphor/commands/index.js +0 -1
  270. package/shared/@phosphor/coreutils/index.d.ts +0 -1
  271. package/shared/@phosphor/coreutils/index.js +0 -1
  272. package/shared/@phosphor/domutils/index.d.ts +0 -1
  273. package/shared/@phosphor/domutils/index.js +0 -1
  274. package/shared/@phosphor/dragdrop/index.d.ts +0 -1
  275. package/shared/@phosphor/dragdrop/index.js +0 -1
  276. package/shared/@phosphor/messaging/index.d.ts +0 -1
  277. package/shared/@phosphor/messaging/index.js +0 -1
  278. package/shared/@phosphor/properties/index.d.ts +0 -1
  279. package/shared/@phosphor/properties/index.js +0 -1
  280. package/shared/@phosphor/signaling/index.d.ts +0 -1
  281. package/shared/@phosphor/signaling/index.js +0 -1
  282. package/shared/@phosphor/virtualdom/index.d.ts +0 -1
  283. package/shared/@phosphor/virtualdom/index.js +0 -1
  284. package/shared/@phosphor/widgets/index.d.ts +0 -1
  285. package/shared/@phosphor/widgets/index.js +0 -1
@@ -14,7 +14,7 @@
14
14
  // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
15
  // *****************************************************************************
16
16
 
17
- import { JSONValue } from '@phosphor/coreutils';
17
+ import { JSONValue } from '@lumino/coreutils';
18
18
 
19
19
  export type JsonType = 'string' | 'array' | 'number' | 'integer' | 'object' | 'boolean' | 'null';
20
20
 
@@ -16,7 +16,7 @@
16
16
 
17
17
  /* eslint-disable @typescript-eslint/no-explicit-any */
18
18
 
19
- import { JSONValue } from '@phosphor/coreutils';
19
+ import { JSONValue } from '@lumino/coreutils';
20
20
  import { IJSONSchema } from '../json-schema';
21
21
  import { PreferenceScope } from './preference-scope';
22
22
  import { isObject, isString } from '../types';
@@ -73,7 +73,10 @@ export interface PreferenceItem extends IJSONSchema {
73
73
  */
74
74
  defaultValue?: JSONValue;
75
75
  overridable?: boolean;
76
+ /** If false, the preference will not be included in the schema or the UI. */
76
77
  included?: boolean;
78
+ /** If true, this item will registered as part of the preference schema, but hidden in the preference editor UI. */
79
+ hidden?: boolean;
77
80
  [key: string]: any;
78
81
  }
79
82
  export interface PreferenceSchemaProperty extends PreferenceItem {
@@ -18,6 +18,8 @@ import { URI } from 'vscode-uri';
18
18
 
19
19
  export type ThemeType = 'light' | 'dark' | 'hc' | 'hcLight';
20
20
 
21
+ export type ThemeMode = 'light' | 'dark';
22
+
21
23
  export interface Theme {
22
24
  readonly id: string;
23
25
  readonly type: ThemeType;
@@ -32,6 +34,10 @@ export function isHighContrast(scheme: ThemeType): boolean {
32
34
  return scheme === 'hc' || scheme === 'hcLight';
33
35
  }
34
36
 
37
+ export function getThemeMode(type: ThemeType): ThemeMode {
38
+ return (type === 'hc' || type === 'dark') ? 'dark' : 'light';
39
+ }
40
+
35
41
  export interface ThemeChangeEvent {
36
42
  readonly newTheme: Theme;
37
43
  readonly oldTheme?: Theme;
@@ -56,6 +56,7 @@ export class ElectronTextInputContextMenuContribution implements FrontendApplica
56
56
  this.contextMenuRenderer.render({
57
57
  anchor: event,
58
58
  menuPath: ElectronTextInputContextMenu.MENU_PATH,
59
+ context: event.target,
59
60
  onHide: () => target.focus()
60
61
  });
61
62
  }
@@ -119,7 +120,8 @@ export class ElectronContextMenuRenderer extends BrowserContextMenuRenderer {
119
120
  const node = (menuAccess as BrowserContextMenuAccess).menu.node;
120
121
  const topPanelHeight = document.getElementById('theia-top-panel')?.clientHeight ?? 0;
121
122
  // ensure the context menu is not displayed outside of the main area
122
- if (node.style.top && parseInt(node.style.top.substring(0, node.style.top.length - 2)) < topPanelHeight) {
123
+ const menuRect = node.getBoundingClientRect();
124
+ if (menuRect.top < topPanelHeight) {
123
125
  node.style.top = `${topPanelHeight}px`;
124
126
  node.style.maxHeight = `calc(${node.style.maxHeight} - ${topPanelHeight}px)`;
125
127
  }
@@ -30,7 +30,7 @@ import { WindowTitleService } from '../../browser/window/window-title-service';
30
30
 
31
31
  import '../../../src/electron-browser/menu/electron-menu-style.css';
32
32
  import { ThemeService } from '../../browser/theming';
33
- import { ThemeChangeEvent } from '../../common/theme';
33
+ import { getThemeMode, ThemeChangeEvent } from '../../common/theme';
34
34
 
35
35
  export namespace ElectronCommands {
36
36
  export const TOGGLE_DEVELOPER_TOOLS = Command.toDefaultLocalizedCommand({
@@ -185,16 +185,16 @@ export class ElectronMenuContribution extends BrowserMenuBarContribution impleme
185
185
  /**
186
186
  * Hides the `theia-top-panel` depending on the selected `titleBarStyle`.
187
187
  * The `theia-top-panel` is used as the container of the main, application menu-bar for the
188
- * browser. Native Electron has it's own.
188
+ * browser. Native Electron has its own.
189
189
  * By default, this method is called on application `onStart`.
190
190
  */
191
191
  protected hideTopPanel(app: FrontendApplication): void {
192
192
  const itr = app.shell.children();
193
193
  let child = itr.next();
194
- while (child) {
194
+ while (!child.done) {
195
195
  // Top panel for the menu contribution is not required for native Electron title bar.
196
- if (child.id === 'theia-top-panel') {
197
- child.setHidden(this.titleBarStyle !== 'custom');
196
+ if (child.value.id === 'theia-top-panel') {
197
+ child.value.setHidden(this.titleBarStyle !== 'custom');
198
198
  break;
199
199
  } else {
200
200
  child = itr.next();
@@ -424,6 +424,7 @@ export class ElectronMenuContribution extends BrowserMenuBarContribution impleme
424
424
  protected handleThemeChange(e: ThemeChangeEvent): void {
425
425
  const backgroundColor = window.getComputedStyle(document.body).backgroundColor;
426
426
  window.electronTheiaCore.setBackgroundColor(backgroundColor);
427
+ window.electronTheiaCore.setTheme(getThemeMode(e.newTheme.type));
427
428
  }
428
429
 
429
430
  }
@@ -27,7 +27,7 @@ import {
27
27
  CHANNEL_REQUEST_RELOAD, CHANNEL_APP_STATE_CHANGED, CHANNEL_SHOW_ITEM_IN_FOLDER, CHANNEL_READ_CLIPBOARD, CHANNEL_WRITE_CLIPBOARD,
28
28
  CHANNEL_KEYBOARD_LAYOUT_CHANGED, CHANNEL_IPC_CONNECTION, InternalMenuDto, CHANNEL_REQUEST_SECONDARY_CLOSE, CHANNEL_SET_BACKGROUND_COLOR,
29
29
  CHANNEL_WC_METADATA, CHANNEL_ABOUT_TO_CLOSE, CHANNEL_OPEN_WITH_SYSTEM_APP,
30
- CHANNEL_OPEN_URL
30
+ CHANNEL_OPEN_URL, CHANNEL_SET_THEME
31
31
  } from '../electron-common/electron-api';
32
32
 
33
33
  // eslint-disable-next-line import/no-extraneous-dependencies
@@ -120,6 +120,9 @@ const api: TheiaCoreAPI = {
120
120
  setBackgroundColor: function (backgroundColor): void {
121
121
  ipcRenderer.send(CHANNEL_SET_BACKGROUND_COLOR, backgroundColor);
122
122
  },
123
+ setTheme: function (theme): void {
124
+ ipcRenderer.send(CHANNEL_SET_THEME, theme);
125
+ },
123
126
  minimize: function (): void {
124
127
  ipcRenderer.send(CHANNEL_MINIMIZE);
125
128
  },
@@ -160,7 +163,7 @@ const api: TheiaCoreAPI = {
160
163
  return Disposable.create(() => ipcRenderer.off(CHANNEL_ON_WINDOW_EVENT, h));
161
164
  },
162
165
  setCloseRequestHandler: function (handler: (stopReason: StopReason) => Promise<boolean>): void {
163
- ipcRenderer.on(CHANNEL_REQUEST_CLOSE, async (event, stopReason, confirmChannel, cancelChannel) => {
166
+ ipcRenderer.on(CHANNEL_REQUEST_CLOSE, async (event: Electron.IpcRendererEvent, stopReason: StopReason, confirmChannel: string, cancelChannel: string) => {
164
167
  try {
165
168
  if (await handler(stopReason)) {
166
169
  event.sender.send(confirmChannel);
@@ -249,7 +252,7 @@ function createDisposableListener(channel: string, handler: (event: any, ...args
249
252
 
250
253
  export function preload(): void {
251
254
  console.log('exposing theia core electron api');
252
- ipcRenderer.on(CHANNEL_INVOKE_MENU, (_, menuId: number, handlerId: number) => {
255
+ ipcRenderer.on(CHANNEL_INVOKE_MENU, (_: Electron.IpcRendererEvent, menuId: number, handlerId: number) => {
253
256
  const map = commandHandlers.get(menuId);
254
257
  if (map) {
255
258
  const handler = map.get(handlerId);
@@ -17,6 +17,7 @@
17
17
  import { NativeKeyboardLayout } from '../common/keyboard/keyboard-layout-provider';
18
18
  import { Disposable } from '../common';
19
19
  import { FrontendApplicationState, StopReason } from '../common/frontend-application-state';
20
+ import { ThemeMode } from '../common/theme';
20
21
 
21
22
  export type MenuRole = ('undo' | 'redo' | 'cut' | 'copy' | 'paste' | 'selectAll' | 'about' | 'services' | 'hide' | 'hideOthers' | 'unhide' | 'quit');
22
23
 
@@ -65,6 +66,7 @@ export interface TheiaCoreAPI {
65
66
  getTitleBarStyleAtStartup(): Promise<string>;
66
67
  setTitleBarStyle(style: string): void;
67
68
  setBackgroundColor(backgroundColor: string): void;
69
+ setTheme(theme: ThemeMode): void;
68
70
  minimize(): void;
69
71
  isMaximized(): boolean; // TODO: this should really be async, since it blocks the renderer process
70
72
  maximize(): void;
@@ -125,6 +127,7 @@ export const CHANNEL_ATTACH_SECURITY_TOKEN = 'AttachSecurityToken';
125
127
  export const CHANNEL_GET_TITLE_STYLE_AT_STARTUP = 'GetTitleStyleAtStartup';
126
128
  export const CHANNEL_SET_TITLE_STYLE = 'SetTitleStyle';
127
129
  export const CHANNEL_SET_BACKGROUND_COLOR = 'SetBackgroundColor';
130
+ export const CHANNEL_SET_THEME = 'SetTheme';
128
131
  export const CHANNEL_CLOSE = 'Close';
129
132
  export const CHANNEL_MINIMIZE = 'Minimize';
130
133
  export const CHANNEL_MAXIMIZE = 'Maximize';
@@ -55,7 +55,8 @@ import {
55
55
  CHANNEL_WC_METADATA,
56
56
  CHANNEL_ABOUT_TO_CLOSE,
57
57
  CHANNEL_OPEN_WITH_SYSTEM_APP,
58
- CHANNEL_OPEN_URL
58
+ CHANNEL_OPEN_URL,
59
+ CHANNEL_SET_THEME
59
60
  } from '../electron-common/electron-api';
60
61
  import { ElectronMainApplication, ElectronMainApplicationContribution } from './electron-main-application';
61
62
  import { Disposable, DisposableCollection, isOSX, MaybePromise } from '../common';
@@ -176,6 +177,8 @@ export class TheiaMainApi implements ElectronMainApplicationContribution {
176
177
 
177
178
  ipcMain.on(CHANNEL_SET_BACKGROUND_COLOR, (event, backgroundColor) => application.setBackgroundColor(event.sender, backgroundColor));
178
179
 
180
+ ipcMain.on(CHANNEL_SET_THEME, (event, theme) => application.setTheme(theme));
181
+
179
182
  ipcMain.on(CHANNEL_MINIMIZE, event => {
180
183
  BrowserWindow.fromWebContents(event.sender)?.minimize();
181
184
  });
@@ -42,6 +42,7 @@ import { createDisposableListener } from './event-utils';
42
42
  import { TheiaRendererAPI } from './electron-api-main';
43
43
  import { StopReason } from '../common/frontend-application-state';
44
44
  import { dynamicRequire } from '../node/dynamic-require';
45
+ import { ThemeMode } from '../common/theme';
45
46
 
46
47
  export { ElectronMainApplicationGlobals };
47
48
 
@@ -277,6 +278,10 @@ export class ElectronMainApplication {
277
278
  this.saveState(webContents);
278
279
  }
279
280
 
281
+ public setTheme(theme: ThemeMode): void {
282
+ nativeTheme.themeSource = theme;
283
+ }
284
+
280
285
  protected saveState(webContents: Electron.WebContents): void {
281
286
  const browserWindow = BrowserWindow.fromWebContents(webContents);
282
287
  if (browserWindow) {
@@ -103,7 +103,7 @@ export class WebsocketFrontendConnectionService implements FrontendConnectionSer
103
103
 
104
104
  handleSocketDisconnect(socket: Socket, channel: ReconnectableSocketChannel, frontEndId: string): void {
105
105
  socket.on('disconnect', evt => {
106
- console.info('socked closed');
106
+ console.info('socket closed');
107
107
  channel.disconnect();
108
108
 
109
109
  const timeout = this.frontendConnectionTimeout();
@@ -183,4 +183,3 @@ class ReconnectableSocketChannel extends AbstractChannel {
183
183
  return writeBuffer;
184
184
  }
185
185
  }
186
-
@@ -1 +0,0 @@
1
- export * from '@phosphor/algorithm';
@@ -1 +0,0 @@
1
- module.exports = require('@phosphor/algorithm');
@@ -1 +0,0 @@
1
- export * from '@phosphor/commands';
@@ -1 +0,0 @@
1
- module.exports = require('@phosphor/commands');
@@ -1 +0,0 @@
1
- export * from '@phosphor/coreutils';
@@ -1 +0,0 @@
1
- module.exports = require('@phosphor/coreutils');
@@ -1 +0,0 @@
1
- export * from '@phosphor/domutils';
@@ -1 +0,0 @@
1
- module.exports = require('@phosphor/domutils');
@@ -1 +0,0 @@
1
- export * from '@phosphor/dragdrop';
@@ -1 +0,0 @@
1
- module.exports = require('@phosphor/dragdrop');
@@ -1 +0,0 @@
1
- export * from '@phosphor/messaging';
@@ -1 +0,0 @@
1
- module.exports = require('@phosphor/messaging');
@@ -1 +0,0 @@
1
- export * from '@phosphor/properties';
@@ -1 +0,0 @@
1
- module.exports = require('@phosphor/properties');
@@ -1 +0,0 @@
1
- export * from '@phosphor/signaling';
@@ -1 +0,0 @@
1
- module.exports = require('@phosphor/signaling');
@@ -1 +0,0 @@
1
- export * from '@phosphor/virtualdom';
@@ -1 +0,0 @@
1
- module.exports = require('@phosphor/virtualdom');
@@ -1 +0,0 @@
1
- export * from '@phosphor/widgets';
@@ -1 +0,0 @@
1
- module.exports = require('@phosphor/widgets');