@theia/core 1.59.0 → 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 (231) hide show
  1. package/README.md +10 -10
  2. package/lib/browser/about-dialog.d.ts.map +1 -1
  3. package/lib/browser/about-dialog.js +2 -1
  4. package/lib/browser/about-dialog.js.map +1 -1
  5. package/lib/browser/browser.d.ts +2 -0
  6. package/lib/browser/browser.d.ts.map +1 -1
  7. package/lib/browser/browser.js +6 -1
  8. package/lib/browser/browser.js.map +1 -1
  9. package/lib/browser/catalog.json +157 -13
  10. package/lib/browser/common-frontend-contribution.d.ts.map +1 -1
  11. package/lib/browser/common-frontend-contribution.js +24 -22
  12. package/lib/browser/common-frontend-contribution.js.map +1 -1
  13. package/lib/browser/common-styling-participants.js +25 -25
  14. package/lib/browser/menu/browser-context-menu-renderer.d.ts.map +1 -1
  15. package/lib/browser/menu/browser-context-menu-renderer.js +1 -2
  16. package/lib/browser/menu/browser-context-menu-renderer.js.map +1 -1
  17. package/lib/browser/menu/browser-menu-plugin.d.ts +5 -5
  18. package/lib/browser/menu/browser-menu-plugin.d.ts.map +1 -1
  19. package/lib/browser/menu/browser-menu-plugin.js +23 -13
  20. package/lib/browser/menu/browser-menu-plugin.js.map +1 -1
  21. package/lib/browser/preferences/injectable-preference-proxy.d.ts +1 -1
  22. package/lib/browser/preferences/injectable-preference-proxy.d.ts.map +1 -1
  23. package/lib/browser/preferences/preference-contribution.d.ts +1 -1
  24. package/lib/browser/preferences/preference-contribution.d.ts.map +1 -1
  25. package/lib/browser/preferences/preference-provider.d.ts +1 -1
  26. package/lib/browser/preferences/preference-provider.d.ts.map +1 -1
  27. package/lib/browser/preferences/preference-provider.js +1 -1
  28. package/lib/browser/preferences/preference-provider.js.map +1 -1
  29. package/lib/browser/preferences/preference-service.d.ts +1 -1
  30. package/lib/browser/preferences/preference-service.d.ts.map +1 -1
  31. package/lib/browser/preferences/preference-service.js +3 -3
  32. package/lib/browser/preferences/preference-service.js.map +1 -1
  33. package/lib/browser/preferences/preference-validation-service.d.ts +1 -1
  34. package/lib/browser/preferences/preference-validation-service.d.ts.map +1 -1
  35. package/lib/browser/saveable.d.ts +11 -3
  36. package/lib/browser/saveable.d.ts.map +1 -1
  37. package/lib/browser/saveable.js +2 -1
  38. package/lib/browser/saveable.js.map +1 -1
  39. package/lib/browser/shell/application-shell-mouse-tracker.d.ts +1 -1
  40. package/lib/browser/shell/application-shell-mouse-tracker.d.ts.map +1 -1
  41. package/lib/browser/shell/application-shell-mouse-tracker.js +3 -3
  42. package/lib/browser/shell/application-shell-mouse-tracker.js.map +1 -1
  43. package/lib/browser/shell/application-shell.d.ts +10 -7
  44. package/lib/browser/shell/application-shell.d.ts.map +1 -1
  45. package/lib/browser/shell/application-shell.js +24 -21
  46. package/lib/browser/shell/application-shell.js.map +1 -1
  47. package/lib/browser/shell/shell-layout-restorer.d.ts +1 -1
  48. package/lib/browser/shell/shell-layout-restorer.d.ts.map +1 -1
  49. package/lib/browser/shell/side-panel-handler.d.ts +2 -2
  50. package/lib/browser/shell/side-panel-handler.d.ts.map +1 -1
  51. package/lib/browser/shell/side-panel-handler.js +11 -11
  52. package/lib/browser/shell/side-panel-handler.js.map +1 -1
  53. package/lib/browser/shell/side-panel-toolbar.d.ts +2 -2
  54. package/lib/browser/shell/side-panel-toolbar.d.ts.map +1 -1
  55. package/lib/browser/shell/side-panel-toolbar.js +1 -1
  56. package/lib/browser/shell/side-panel-toolbar.js.map +1 -1
  57. package/lib/browser/shell/split-panels.d.ts +1 -1
  58. package/lib/browser/shell/split-panels.d.ts.map +1 -1
  59. package/lib/browser/shell/split-panels.js +1 -1
  60. package/lib/browser/shell/split-panels.js.map +1 -1
  61. package/lib/browser/shell/tab-bar-decorator.d.ts +1 -1
  62. package/lib/browser/shell/tab-bar-decorator.d.ts.map +1 -1
  63. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.d.ts +1 -1
  64. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.d.ts.map +1 -1
  65. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js +1 -1
  66. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js.map +1 -1
  67. package/lib/browser/shell/tab-bars.d.ts +18 -12
  68. package/lib/browser/shell/tab-bars.d.ts.map +1 -1
  69. package/lib/browser/shell/tab-bars.js +79 -51
  70. package/lib/browser/shell/tab-bars.js.map +1 -1
  71. package/lib/browser/shell/tab-bars.spec.js +1 -1
  72. package/lib/browser/shell/tab-bars.spec.js.map +1 -1
  73. package/lib/browser/shell/theia-dock-panel.d.ts +2 -2
  74. package/lib/browser/shell/theia-dock-panel.d.ts.map +1 -1
  75. package/lib/browser/shell/theia-dock-panel.js +3 -3
  76. package/lib/browser/shell/theia-dock-panel.js.map +1 -1
  77. package/lib/browser/shell/view-column-service.d.ts +1 -1
  78. package/lib/browser/shell/view-column-service.d.ts.map +1 -1
  79. package/lib/browser/shell/view-column-service.js +1 -1
  80. package/lib/browser/shell/view-column-service.js.map +1 -1
  81. package/lib/browser/shell/view-contribution.d.ts +1 -1
  82. package/lib/browser/shell/view-contribution.d.ts.map +1 -1
  83. package/lib/browser/source-tree/source-tree.d.ts.map +1 -1
  84. package/lib/browser/source-tree/source-tree.js +3 -2
  85. package/lib/browser/source-tree/source-tree.js.map +1 -1
  86. package/lib/browser/source-tree/tree-source.d.ts +1 -0
  87. package/lib/browser/source-tree/tree-source.d.ts.map +1 -1
  88. package/lib/browser/source-tree/tree-source.js.map +1 -1
  89. package/lib/browser/tree/tree-widget.d.ts +1 -1
  90. package/lib/browser/tree/tree-widget.d.ts.map +1 -1
  91. package/lib/browser/tree/tree-widget.js +1 -1
  92. package/lib/browser/tree/tree-widget.js.map +1 -1
  93. package/lib/browser/view-container.d.ts +6 -7
  94. package/lib/browser/view-container.d.ts.map +1 -1
  95. package/lib/browser/view-container.js +25 -25
  96. package/lib/browser/view-container.js.map +1 -1
  97. package/lib/browser/widget-manager.d.ts +1 -1
  98. package/lib/browser/widget-manager.d.ts.map +1 -1
  99. package/lib/browser/widget-manager.js +1 -1
  100. package/lib/browser/widget-manager.js.map +1 -1
  101. package/lib/browser/widget-manager.spec.js +1 -1
  102. package/lib/browser/widget-manager.spec.js.map +1 -1
  103. package/lib/browser/widgets/react-widget.d.ts +1 -1
  104. package/lib/browser/widgets/react-widget.d.ts.map +1 -1
  105. package/lib/browser/widgets/react-widget.js +1 -1
  106. package/lib/browser/widgets/react-widget.js.map +1 -1
  107. package/lib/browser/widgets/widget.d.ts +6 -6
  108. package/lib/browser/widgets/widget.d.ts.map +1 -1
  109. package/lib/browser/widgets/widget.js +6 -6
  110. package/lib/browser/widgets/widget.js.map +1 -1
  111. package/lib/common/json-schema.d.ts +1 -1
  112. package/lib/common/json-schema.d.ts.map +1 -1
  113. package/lib/common/preferences/preference-schema.d.ts +4 -1
  114. package/lib/common/preferences/preference-schema.d.ts.map +1 -1
  115. package/lib/common/preferences/preference-schema.js.map +1 -1
  116. package/lib/common/theme.d.ts +2 -0
  117. package/lib/common/theme.d.ts.map +1 -1
  118. package/lib/common/theme.js +5 -1
  119. package/lib/common/theme.js.map +1 -1
  120. package/lib/electron-browser/menu/electron-menu-contribution.d.ts +1 -1
  121. package/lib/electron-browser/menu/electron-menu-contribution.d.ts.map +1 -1
  122. package/lib/electron-browser/menu/electron-menu-contribution.js +6 -4
  123. package/lib/electron-browser/menu/electron-menu-contribution.js.map +1 -1
  124. package/lib/electron-browser/preload.d.ts.map +1 -1
  125. package/lib/electron-browser/preload.js +3 -0
  126. package/lib/electron-browser/preload.js.map +1 -1
  127. package/lib/electron-common/electron-api.d.ts +3 -0
  128. package/lib/electron-common/electron-api.d.ts.map +1 -1
  129. package/lib/electron-common/electron-api.js +2 -1
  130. package/lib/electron-common/electron-api.js.map +1 -1
  131. package/lib/electron-main/electron-api-main.d.ts.map +1 -1
  132. package/lib/electron-main/electron-api-main.js +1 -0
  133. package/lib/electron-main/electron-api-main.js.map +1 -1
  134. package/lib/electron-main/electron-main-application.d.ts +2 -0
  135. package/lib/electron-main/electron-main-application.d.ts.map +1 -1
  136. package/lib/electron-main/electron-main-application.js +3 -0
  137. package/lib/electron-main/electron-main-application.js.map +1 -1
  138. package/lib/node/messaging/websocket-frontend-connection-service.js +1 -1
  139. package/package.json +24 -24
  140. package/shared/@lumino/algorithm/index.d.ts +1 -0
  141. package/shared/@lumino/algorithm/index.js +1 -0
  142. package/shared/@lumino/commands/index.d.ts +1 -0
  143. package/shared/@lumino/commands/index.js +1 -0
  144. package/shared/@lumino/coreutils/index.d.ts +1 -0
  145. package/shared/@lumino/coreutils/index.js +1 -0
  146. package/shared/@lumino/domutils/index.d.ts +1 -0
  147. package/shared/@lumino/domutils/index.js +1 -0
  148. package/shared/@lumino/dragdrop/index.d.ts +1 -0
  149. package/shared/@lumino/dragdrop/index.js +1 -0
  150. package/shared/@lumino/messaging/index.d.ts +1 -0
  151. package/shared/@lumino/messaging/index.js +1 -0
  152. package/shared/@lumino/properties/index.d.ts +1 -0
  153. package/shared/@lumino/properties/index.js +1 -0
  154. package/shared/@lumino/signaling/index.d.ts +1 -0
  155. package/shared/@lumino/signaling/index.js +1 -0
  156. package/shared/@lumino/virtualdom/index.d.ts +1 -0
  157. package/shared/@lumino/virtualdom/index.js +1 -0
  158. package/shared/@lumino/widgets/index.d.ts +1 -0
  159. package/shared/@lumino/widgets/index.js +1 -0
  160. package/src/browser/about-dialog.tsx +2 -1
  161. package/src/browser/browser.ts +6 -1
  162. package/src/browser/common-frontend-contribution.ts +24 -22
  163. package/src/browser/common-styling-participants.ts +25 -25
  164. package/src/browser/menu/browser-context-menu-renderer.ts +1 -2
  165. package/src/browser/menu/browser-menu-plugin.ts +24 -14
  166. package/src/browser/preferences/injectable-preference-proxy.ts +1 -1
  167. package/src/browser/preferences/preference-contribution.ts +1 -1
  168. package/src/browser/preferences/preference-provider.ts +1 -1
  169. package/src/browser/preferences/preference-service.ts +1 -1
  170. package/src/browser/preferences/preference-validation-service.spec.ts +1 -1
  171. package/src/browser/preferences/preference-validation-service.ts +1 -1
  172. package/src/browser/saveable.ts +13 -3
  173. package/src/browser/shell/application-shell-mouse-tracker.ts +3 -3
  174. package/src/browser/shell/application-shell.ts +36 -32
  175. package/src/browser/shell/shell-layout-restorer.ts +1 -1
  176. package/src/browser/shell/side-panel-handler.ts +11 -11
  177. package/src/browser/shell/side-panel-toolbar.ts +2 -2
  178. package/src/browser/shell/split-panels.ts +1 -1
  179. package/src/browser/shell/tab-bar-decorator.ts +1 -1
  180. package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar.tsx +1 -1
  181. package/src/browser/shell/tab-bars.spec.ts +1 -1
  182. package/src/browser/shell/tab-bars.ts +92 -57
  183. package/src/browser/shell/theia-dock-panel.ts +3 -3
  184. package/src/browser/shell/view-column-service.ts +2 -2
  185. package/src/browser/shell/view-contribution.ts +1 -1
  186. package/src/browser/source-tree/source-tree.ts +3 -2
  187. package/src/browser/source-tree/tree-source.ts +1 -0
  188. package/src/browser/style/dialog.css +12 -12
  189. package/src/browser/style/dockpanel.css +19 -19
  190. package/src/browser/style/hover-service.css +1 -0
  191. package/src/browser/style/index.css +3 -3
  192. package/src/browser/style/menus.css +34 -31
  193. package/src/browser/style/sidepanel.css +52 -48
  194. package/src/browser/style/split-widget.css +5 -5
  195. package/src/browser/style/tabs.css +91 -97
  196. package/src/browser/style/view-container.css +14 -14
  197. package/src/browser/tree/tree-widget.tsx +2 -2
  198. package/src/browser/view-container.ts +34 -34
  199. package/src/browser/widget-manager.spec.ts +1 -1
  200. package/src/browser/widget-manager.ts +1 -1
  201. package/src/browser/widgets/react-widget.tsx +1 -1
  202. package/src/browser/widgets/widget.ts +7 -7
  203. package/src/common/json-schema.ts +1 -1
  204. package/src/common/preferences/preference-schema.ts +4 -1
  205. package/src/common/theme.ts +6 -0
  206. package/src/electron-browser/menu/electron-menu-contribution.ts +6 -5
  207. package/src/electron-browser/preload.ts +6 -3
  208. package/src/electron-common/electron-api.ts +3 -0
  209. package/src/electron-main/electron-api-main.ts +4 -1
  210. package/src/electron-main/electron-main-application.ts +5 -0
  211. package/src/node/messaging/websocket-frontend-connection-service.ts +1 -2
  212. package/shared/@phosphor/algorithm/index.d.ts +0 -1
  213. package/shared/@phosphor/algorithm/index.js +0 -1
  214. package/shared/@phosphor/commands/index.d.ts +0 -1
  215. package/shared/@phosphor/commands/index.js +0 -1
  216. package/shared/@phosphor/coreutils/index.d.ts +0 -1
  217. package/shared/@phosphor/coreutils/index.js +0 -1
  218. package/shared/@phosphor/domutils/index.d.ts +0 -1
  219. package/shared/@phosphor/domutils/index.js +0 -1
  220. package/shared/@phosphor/dragdrop/index.d.ts +0 -1
  221. package/shared/@phosphor/dragdrop/index.js +0 -1
  222. package/shared/@phosphor/messaging/index.d.ts +0 -1
  223. package/shared/@phosphor/messaging/index.js +0 -1
  224. package/shared/@phosphor/properties/index.d.ts +0 -1
  225. package/shared/@phosphor/properties/index.js +0 -1
  226. package/shared/@phosphor/signaling/index.d.ts +0 -1
  227. package/shared/@phosphor/signaling/index.js +0 -1
  228. package/shared/@phosphor/virtualdom/index.d.ts +0 -1
  229. package/shared/@phosphor/virtualdom/index.js +0 -1
  230. package/shared/@phosphor/widgets/index.d.ts +0 -1
  231. package/shared/@phosphor/widgets/index.js +0 -1
package/package.json CHANGED
@@ -1,24 +1,24 @@
1
1
  {
2
2
  "name": "@theia/core",
3
- "version": "1.59.0",
3
+ "version": "1.60.0-next.43+2a13720d2",
4
4
  "description": "Theia is a cloud & desktop IDE framework implemented in TypeScript.",
5
5
  "main": "lib/common/index.js",
6
6
  "typings": "lib/common/index.d.ts",
7
7
  "dependencies": {
8
8
  "@babel/runtime": "^7.10.0",
9
+ "@lumino/algorithm": "^2.0.2",
10
+ "@lumino/commands": "^2.3.1",
11
+ "@lumino/coreutils": "^2.2.0",
12
+ "@lumino/domutils": "^2.0.2",
13
+ "@lumino/dragdrop": "^2.1.5",
14
+ "@lumino/messaging": "^2.0.2",
15
+ "@lumino/properties": "^2.0.2",
16
+ "@lumino/signaling": "^2.1.3",
17
+ "@lumino/virtualdom": "^2.0.2",
18
+ "@lumino/widgets": "2.5.0",
9
19
  "@parcel/watcher": "^2.5.0",
10
- "@phosphor/algorithm": "1",
11
- "@phosphor/commands": "1",
12
- "@phosphor/coreutils": "1",
13
- "@phosphor/domutils": "1",
14
- "@phosphor/dragdrop": "1",
15
- "@phosphor/messaging": "1",
16
- "@phosphor/properties": "1",
17
- "@phosphor/signaling": "1",
18
- "@phosphor/virtualdom": "1",
19
- "@phosphor/widgets": "1",
20
- "@theia/application-package": "1.59.0",
21
- "@theia/request": "1.59.0",
20
+ "@theia/application-package": "1.60.0-next.43+2a13720d2",
21
+ "@theia/request": "1.60.0-next.43+2a13720d2",
22
22
  "@types/body-parser": "^1.16.4",
23
23
  "@types/cookie": "^0.3.3",
24
24
  "@types/dompurify": "^2.2.2",
@@ -93,16 +93,16 @@
93
93
  },
94
94
  "shared": {
95
95
  "export *": [
96
- "@phosphor/algorithm",
97
- "@phosphor/commands",
98
- "@phosphor/coreutils",
99
- "@phosphor/domutils",
100
- "@phosphor/dragdrop",
101
- "@phosphor/messaging",
102
- "@phosphor/properties",
103
- "@phosphor/signaling",
104
- "@phosphor/virtualdom",
105
- "@phosphor/widgets",
96
+ "@lumino/algorithm",
97
+ "@lumino/commands",
98
+ "@lumino/coreutils",
99
+ "@lumino/domutils",
100
+ "@lumino/dragdrop",
101
+ "@lumino/messaging",
102
+ "@lumino/properties",
103
+ "@lumino/signaling",
104
+ "@lumino/virtualdom",
105
+ "@lumino/widgets",
106
106
  "@theia/application-package",
107
107
  "@theia/application-package/lib/api",
108
108
  "@theia/application-package/lib/environment",
@@ -218,5 +218,5 @@
218
218
  "nyc": {
219
219
  "extends": "../../configs/nyc.json"
220
220
  },
221
- "gitHead": "21358137e41342742707f660b8e222f940a27652"
221
+ "gitHead": "2a13720d2d41d8ae6ee4e34cd2dee1c656a18018"
222
222
  }
@@ -0,0 +1 @@
1
+ export * from '@lumino/algorithm';
@@ -0,0 +1 @@
1
+ module.exports = require('@lumino/algorithm');
@@ -0,0 +1 @@
1
+ export * from '@lumino/commands';
@@ -0,0 +1 @@
1
+ module.exports = require('@lumino/commands');
@@ -0,0 +1 @@
1
+ export * from '@lumino/coreutils';
@@ -0,0 +1 @@
1
+ module.exports = require('@lumino/coreutils');
@@ -0,0 +1 @@
1
+ export * from '@lumino/domutils';
@@ -0,0 +1 @@
1
+ module.exports = require('@lumino/domutils');
@@ -0,0 +1 @@
1
+ export * from '@lumino/dragdrop';
@@ -0,0 +1 @@
1
+ module.exports = require('@lumino/dragdrop');
@@ -0,0 +1 @@
1
+ export * from '@lumino/messaging';
@@ -0,0 +1 @@
1
+ module.exports = require('@lumino/messaging');
@@ -0,0 +1 @@
1
+ export * from '@lumino/properties';
@@ -0,0 +1 @@
1
+ module.exports = require('@lumino/properties');
@@ -0,0 +1 @@
1
+ export * from '@lumino/signaling';
@@ -0,0 +1 @@
1
+ module.exports = require('@lumino/signaling');
@@ -0,0 +1 @@
1
+ export * from '@lumino/virtualdom';
@@ -0,0 +1 @@
1
+ module.exports = require('@lumino/virtualdom');
@@ -0,0 +1 @@
1
+ export * from '@lumino/widgets';
@@ -0,0 +1 @@
1
+ module.exports = require('@lumino/widgets');
@@ -94,8 +94,9 @@ export class AboutDialog extends ReactDialog<void> {
94
94
 
95
95
  protected renderExtensions(): React.ReactNode {
96
96
  const extensionsInfos = this.extensionsInfos;
97
+ const listOfExtensions = nls.localize('theia/core/about/listOfExtensions', 'List of extensions');
97
98
  return <>
98
- <h3>List of extensions</h3>
99
+ <h3>{listOfExtensions}</h3>
99
100
  <ul className={ABOUT_EXTENSIONS_CLASS}>
100
101
  {
101
102
  extensionsInfos
@@ -18,7 +18,7 @@
18
18
  * Licensed under the MIT License. See License.txt in the project root for license information.
19
19
  *--------------------------------------------------------------------------------------------*/
20
20
 
21
- import { Disposable, environment } from '../common';
21
+ import { Disposable, environment, isOSX } from '../common';
22
22
 
23
23
  const userAgent = typeof navigator !== 'undefined' ? navigator.userAgent : '';
24
24
 
@@ -237,3 +237,8 @@ export function onDomEvent<K extends keyof HTMLElementEventMap>(
237
237
  element.addEventListener(type, listener, options);
238
238
  return { dispose: () => element.removeEventListener(type, listener, options) };
239
239
  }
240
+
241
+ /** Is a mouse `event` the pointer event that triggers the context menu on this platform? */
242
+ export function isContextMenuEvent(event: MouseEvent): boolean {
243
+ return isOSX && event.ctrlKey && event.button === 0 || event.button === 2;
244
+ }
@@ -493,28 +493,30 @@ export class CommonFrontendContribution implements FrontendApplicationContributi
493
493
  this.preferences.ready.then(() => this.setSashProperties());
494
494
  this.preferences.onPreferenceChanged(e => this.handlePreferenceChange(e, app));
495
495
 
496
- app.shell.leftPanelHandler.addBottomMenu({
497
- id: 'settings-menu',
498
- iconClass: codicon('settings-gear'),
499
- title: nls.localizeByDefault(CommonCommands.MANAGE_CATEGORY),
500
- menuPath: MANAGE_MENU,
501
- order: 0,
502
- });
503
- const accountsMenu: SidebarMenu = {
504
- id: 'accounts-menu',
505
- iconClass: codicon('account'),
506
- title: nls.localizeByDefault('Accounts'),
507
- menuPath: ACCOUNTS_MENU,
508
- order: 1,
509
- onDidBadgeChange: this.authenticationService.onDidUpdateSignInCount
510
- };
511
- this.authenticationService.onDidRegisterAuthenticationProvider(() => {
512
- app.shell.leftPanelHandler.addBottomMenu(accountsMenu);
513
- });
514
- this.authenticationService.onDidUnregisterAuthenticationProvider(() => {
515
- if (this.authenticationService.getProviderIds().length === 0) {
516
- app.shell.leftPanelHandler.removeBottomMenu(accountsMenu.id);
517
- }
496
+ app.shell.initialized.then(() => {
497
+ app.shell.leftPanelHandler.addBottomMenu({
498
+ id: 'settings-menu',
499
+ iconClass: codicon('settings-gear'),
500
+ title: nls.localizeByDefault(CommonCommands.MANAGE_CATEGORY),
501
+ menuPath: MANAGE_MENU,
502
+ order: 0,
503
+ });
504
+ const accountsMenu: SidebarMenu = {
505
+ id: 'accounts-menu',
506
+ iconClass: codicon('account'),
507
+ title: nls.localizeByDefault('Accounts'),
508
+ menuPath: ACCOUNTS_MENU,
509
+ order: 1,
510
+ onDidBadgeChange: this.authenticationService.onDidUpdateSignInCount
511
+ };
512
+ this.authenticationService.onDidRegisterAuthenticationProvider(() => {
513
+ app.shell.leftPanelHandler.addBottomMenu(accountsMenu);
514
+ });
515
+ this.authenticationService.onDidUnregisterAuthenticationProvider(() => {
516
+ if (this.authenticationService.getProviderIds().length === 0) {
517
+ app.shell.leftPanelHandler.removeBottomMenu(accountsMenu.id);
518
+ }
519
+ });
518
520
  });
519
521
  }
520
522
 
@@ -138,14 +138,14 @@ export class MenuStylingParticipant implements StylingParticipant {
138
138
  if (isHighContrast(theme.type) && focusBorder) {
139
139
  // Menu items
140
140
  collector.addRule(`
141
- .p-Menu .p-Menu-item.p-mod-active {
141
+ .lm-Menu .lm-Menu-item.lm-mod-active {
142
142
  outline: 1px solid ${focusBorder};
143
143
  outline-offset: -1px;
144
144
  }
145
- .p-MenuBar .p-MenuBar-item.p-mod-active {
145
+ .lm-MenuBar .lm-MenuBar-item.lm-mod-active {
146
146
  outline: 1px dashed ${focusBorder};
147
147
  }
148
- .p-MenuBar.p-mod-active .p-MenuBar-item.p-mod-active {
148
+ .lm-MenuBar.lm-mod-active .lm-MenuBar-item.lm-mod-active {
149
149
  outline: 1px solid ${focusBorder};
150
150
  }
151
151
  `);
@@ -166,7 +166,7 @@ export class BadgeStylingParticipant implements StylingParticipant {
166
166
  const contrastBorder = theme.getColor('contrastBorder');
167
167
 
168
168
  if (isHighContrast(theme.type) && contrastBorder) {
169
- collector.addRule(`.p-TabBar .theia-badge-decorator-sidebar {
169
+ collector.addRule(`.lm-TabBar .theia-badge-decorator-sidebar {
170
170
  outline: 1px solid ${contrastBorder};
171
171
  }`);
172
172
  }
@@ -182,20 +182,20 @@ export class TabbarStylingParticipant implements StylingParticipant {
182
182
 
183
183
  if (highContrast && focusBorder) {
184
184
  collector.addRule(`
185
- #theia-bottom-content-panel .p-TabBar .p-TabBar-tab,
186
- #theia-main-content-panel .p-TabBar .p-TabBar-tab {
185
+ #theia-bottom-content-panel .lm-TabBar .lm-TabBar-tab,
186
+ #theia-main-content-panel .lm-TabBar .lm-TabBar-tab {
187
187
  outline-offset: -4px;
188
188
  }
189
- #theia-bottom-content-panel .p-TabBar .p-TabBar-tab.p-mod-current,
190
- #theia-main-content-panel .p-TabBar .p-TabBar-tab.p-mod-current {
189
+ #theia-bottom-content-panel .lm-TabBar .lm-TabBar-tab.lm-mod-current,
190
+ #theia-main-content-panel .lm-TabBar .lm-TabBar-tab.lm-mod-current {
191
191
  outline: 1px solid ${focusBorder};
192
192
  }
193
- #theia-bottom-content-panel .p-TabBar:not(.theia-tabBar-active) .p-TabBar-tab.p-mod-current,
194
- #theia-main-content-panel .p-TabBar:not(.theia-tabBar-active) .p-TabBar-tab.p-mod-current {
193
+ #theia-bottom-content-panel .lm-TabBar:not(.theia-tabBar-active) .lm-TabBar-tab.lm-mod-current,
194
+ #theia-main-content-panel .lm-TabBar:not(.theia-tabBar-active) .lm-TabBar-tab.lm-mod-current {
195
195
  outline: 1px dotted ${focusBorder};
196
196
  }
197
- #theia-bottom-content-panel .p-TabBar .p-TabBar-tab:not(.p-mod-current):hover,
198
- #theia-main-content-panel .p-TabBar .p-TabBar-tab:not(.p-mod-current):hover {
197
+ #theia-bottom-content-panel .lm-TabBar .lm-TabBar-tab:not(.lm-mod-current):hover,
198
+ #theia-main-content-panel .lm-TabBar .lm-TabBar-tab:not(.lm-mod-current):hover {
199
199
  outline: 1px dashed ${focusBorder};
200
200
  }
201
201
  `);
@@ -206,13 +206,13 @@ export class TabbarStylingParticipant implements StylingParticipant {
206
206
  const tabActiveBorder = theme.getColor('tab.activeBorder') || (highContrast && contrastBorder) || 'transparent';
207
207
  const tabUnfocusedActiveBorder = theme.getColor('tab.unfocusedActiveBorder') || (highContrast && contrastBorder) || 'transparent';
208
208
  collector.addRule(`
209
- #theia-main-content-panel .p-TabBar .p-TabBar-tab.p-mod-current {
209
+ #theia-main-content-panel .lm-TabBar .lm-TabBar-tab.lm-mod-current {
210
210
  color: var(--theia-tab-activeForeground);
211
211
  ${tabActiveBackground ? `background: ${tabActiveBackground};` : ''}
212
212
  ${tabActiveBorderTop ? `border-top: 1px solid ${tabActiveBorderTop};` : ''}
213
213
  border-bottom: 1px solid ${tabActiveBorder};
214
214
  }
215
- #theia-main-content-panel .p-TabBar:not(.theia-tabBar-active) .p-TabBar-tab.p-mod-current {
215
+ #theia-main-content-panel .lm-TabBar:not(.theia-tabBar-active) .lm-TabBar-tab.lm-mod-current {
216
216
  background: var(--theia-tab-unfocusedActiveBackground);
217
217
  color: var(--theia-tab-unfocusedActiveForeground);
218
218
  ${tabUnfocusedActiveBorderTop ? `border-top: 1px solid ${tabUnfocusedActiveBorderTop};` : ''}
@@ -227,18 +227,18 @@ export class TabbarStylingParticipant implements StylingParticipant {
227
227
  if (tabActiveModifiedBorder || tabInactiveModifiedBorder) {
228
228
  collector.addRule(`
229
229
  body.theia-editor-highlightModifiedTabs
230
- #theia-main-content-panel .p-TabBar .p-TabBar-tab.theia-mod-dirty {
230
+ #theia-main-content-panel .lm-TabBar .lm-TabBar-tab.theia-mod-dirty {
231
231
  border-top: 2px solid ${tabInactiveModifiedBorder};
232
232
  padding-bottom: 1px;
233
233
  }
234
234
 
235
235
  body.theia-editor-highlightModifiedTabs
236
- #theia-main-content-panel .p-TabBar.theia-tabBar-active .p-TabBar-tab.theia-mod-dirty.p-mod-current {
236
+ #theia-main-content-panel .lm-TabBar.theia-tabBar-active .lm-TabBar-tab.theia-mod-dirty.lm-mod-current {
237
237
  border-top: 2px solid ${tabActiveModifiedBorder};
238
238
  }
239
239
 
240
240
  body.theia-editor-highlightModifiedTabs
241
- #theia-main-content-panel .p-TabBar:not(.theia-tabBar-active) .p-TabBar-tab.theia-mod-dirty:not(.p-mod-current) {
241
+ #theia-main-content-panel .lm-TabBar:not(.theia-tabBar-active) .lm-TabBar-tab.theia-mod-dirty:not(.lm-mod-current) {
242
242
  border-top: 2px solid ${tabUnfocusedInactiveModifiedBorder};
243
243
  }
244
244
  `);
@@ -247,12 +247,12 @@ export class TabbarStylingParticipant implements StylingParticipant {
247
247
  // Activity Bar Active Border
248
248
  const activityBarActiveBorder = theme.getColor('activityBar.activeBorder') || 'var(--theia-activityBar-foreground)';
249
249
  collector.addRule(`
250
- .p-TabBar.theia-app-left .p-TabBar-tab.p-mod-current {
250
+ .lm-TabBar.theia-app-left .lm-TabBar-tab.lm-mod-current {
251
251
  border-top-color: transparent;
252
252
  box-shadow: 2px 0 0 ${activityBarActiveBorder} inset;
253
253
  }
254
254
 
255
- .p-TabBar.theia-app-right .p-TabBar-tab.p-mod-current {
255
+ .lm-TabBar.theia-app-right .lm-TabBar-tab.lm-mod-current {
256
256
  border-top-color: transparent;
257
257
  box-shadow: -2px 0 0 ${activityBarActiveBorder} inset;
258
258
  }
@@ -261,7 +261,7 @@ export class TabbarStylingParticipant implements StylingParticipant {
261
261
  const tabHoverBackground = theme.getColor('tab.hoverBackground');
262
262
  if (tabHoverBackground) {
263
263
  collector.addRule(`
264
- #theia-main-content-panel .p-TabBar .p-TabBar-tab:hover {
264
+ #theia-main-content-panel .lm-TabBar .lm-TabBar-tab:hover {
265
265
  background-color: ${tabHoverBackground};
266
266
  }
267
267
  `);
@@ -270,7 +270,7 @@ export class TabbarStylingParticipant implements StylingParticipant {
270
270
  const tabUnfocusedHoverBackground = theme.getColor('tab.unfocusedHoverBackground');
271
271
  if (tabUnfocusedHoverBackground) {
272
272
  collector.addRule(`
273
- #theia-main-content-panel .p-TabBar:not(.theia-tabBar-active) .p-TabBar-tab:hover {
273
+ #theia-main-content-panel .lm-TabBar:not(.theia-tabBar-active) .lm-TabBar-tab:hover {
274
274
  background-color: ${tabUnfocusedHoverBackground};
275
275
  }
276
276
  `);
@@ -280,7 +280,7 @@ export class TabbarStylingParticipant implements StylingParticipant {
280
280
  const tabHoverForeground = theme.getColor('tab.hoverForeground');
281
281
  if (tabHoverForeground) {
282
282
  collector.addRule(`
283
- #theia-main-content-panel .p-TabBar .p-TabBar-tab:hover {
283
+ #theia-main-content-panel .lm-TabBar .lm-TabBar-tab:hover {
284
284
  color: ${tabHoverForeground};
285
285
  }
286
286
  `);
@@ -289,7 +289,7 @@ export class TabbarStylingParticipant implements StylingParticipant {
289
289
  const tabUnfocusedHoverForeground = theme.getColor('tab.unfocusedHoverForeground');
290
290
  if (tabUnfocusedHoverForeground) {
291
291
  collector.addRule(`
292
- #theia-main-content-panel .p-TabBar:not(.theia-tabBar-active) .p-TabBar-tab:hover {
292
+ #theia-main-content-panel .lm-TabBar:not(.theia-tabBar-active) .lm-TabBar-tab:hover {
293
293
  color: ${tabUnfocusedHoverForeground};
294
294
  }
295
295
  `);
@@ -299,7 +299,7 @@ export class TabbarStylingParticipant implements StylingParticipant {
299
299
  const tabHoverBorder = theme.getColor('tab.hoverBorder');
300
300
  if (tabHoverBorder) {
301
301
  collector.addRule(`
302
- #theia-main-content-panel .p-TabBar .p-TabBar-tab:hover {
302
+ #theia-main-content-panel .lm-TabBar .lm-TabBar-tab:hover {
303
303
  box-shadow: 0 1px 0 ${tabHoverBorder} inset;
304
304
  }
305
305
  `);
@@ -308,7 +308,7 @@ export class TabbarStylingParticipant implements StylingParticipant {
308
308
  const tabUnfocusedHoverBorder = theme.getColor('tab.unfocusedHoverBorder');
309
309
  if (tabUnfocusedHoverBorder) {
310
310
  collector.addRule(`
311
- #theia-main-content-panel .p-TabBar:not(.theia-tabBar-active) .p-TabBar-tab:hover {
311
+ #theia-main-content-panel .lm-TabBar:not(.theia-tabBar-active) .lm-TabBar-tab:hover {
312
312
  box-shadow: 0 1px 0 ${tabUnfocusedHoverBorder} inset;
313
313
  }
314
314
  `);
@@ -40,8 +40,7 @@ export class BrowserContextMenuRenderer extends ContextMenuRenderer {
40
40
  if (onHide) {
41
41
  contextMenu.aboutToClose.connect(() => onHide!());
42
42
  }
43
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
44
- contextMenu.open(x, y, undefined, context);
43
+ contextMenu.open(x, y, { host: context?.ownerDocument.body});
45
44
  return new BrowserContextMenuAccess(contextMenu);
46
45
  }
47
46
 
@@ -15,9 +15,8 @@
15
15
  // *****************************************************************************
16
16
 
17
17
  import { injectable, inject } from 'inversify';
18
- import { Menu, MenuBar, Menu as MenuWidget, Widget } from '@phosphor/widgets';
19
- import { CommandRegistry as PhosphorCommandRegistry } from '@phosphor/commands';
20
- import { ElementExt } from '@phosphor/domutils';
18
+ import { Menu, MenuBar, Menu as MenuWidget, Widget } from '@lumino/widgets';
19
+ import { CommandRegistry as LuminoCommandRegistry } from '@lumino/commands';
21
20
  import {
22
21
  CommandRegistry, environment, DisposableCollection, Disposable,
23
22
  MenuModelRegistry, MAIN_MENU_BAR, MenuPath, MenuNode, MenuCommandExecutor, CompoundMenuNode, CompoundMenuNodeRole, CommandMenuNode,
@@ -32,6 +31,7 @@ import { Message, waitForRevealed } from '../widgets';
32
31
  import { ApplicationShell } from '../shell';
33
32
  import { CorePreferences } from '../core-preferences';
34
33
  import { PreferenceService } from '../preferences/preference-service';
34
+ import { ElementExt } from '@lumino/domutils';
35
35
 
36
36
  export abstract class MenuBarWidget extends MenuBar {
37
37
  abstract activateMenu(label: string, ...labels: string[]): Promise<MenuWidget>;
@@ -161,7 +161,7 @@ export class BrowserMainMenuFactory implements MenuWidgetFactory {
161
161
  }
162
162
 
163
163
  export function isMenuElement(element: HTMLElement | null): boolean {
164
- return !!element && element.className.includes('p-Menu');
164
+ return !!element && element.className.includes('lm-Menu');
165
165
  }
166
166
 
167
167
  export class DynamicMenuBarWidget extends MenuBarWidget {
@@ -181,7 +181,8 @@ export class DynamicMenuBarWidget extends MenuBarWidget {
181
181
  // We want to save the focus object for the former case only.
182
182
  if (!this.childMenu) {
183
183
  const { activeElement } = document;
184
- if (activeElement instanceof HTMLElement) {
184
+ // we do not want to restore focus to menus
185
+ if (activeElement instanceof HTMLElement && !isMenuElement(activeElement)) {
185
186
  this.previousFocusedElement = activeElement;
186
187
  }
187
188
  }
@@ -322,14 +323,14 @@ export class DynamicMenuWidget extends MenuWidget {
322
323
  });
323
324
  }
324
325
 
325
- public override open(x: number, y: number, options?: MenuWidget.IOpenOptions, anchor?: HTMLElement): void {
326
+ public override open(x: number, y: number, options?: MenuWidget.IOpenOptions): void {
326
327
  const cb = () => {
327
328
  this.restoreFocusedElement();
328
329
  this.aboutToClose.disconnect(cb);
329
330
  };
330
331
  this.aboutToClose.connect(cb);
331
332
  this.preserveFocusedElement();
332
- super.open(x, y, options, anchor);
333
+ super.open(x, y, options);
333
334
  }
334
335
 
335
336
  protected updateSubMenus(parent: MenuWidget, menu: CompoundMenuNode, commands: MenuCommandRegistry): void {
@@ -337,6 +338,13 @@ export class DynamicMenuWidget extends MenuWidget {
337
338
  while (items[items.length - 1]?.type === 'separator') {
338
339
  items.pop();
339
340
  }
341
+ // Add at least one entry to avoid empty menus.
342
+ // This is needed as Lumino does all kind of checks whether a menu is empty and for example prevents activating it
343
+ // This item will be cleared once the menu is opened via the next update as we don't have empty main menus
344
+ // See https://github.com/jupyterlab/lumino/issues/729
345
+ if (items.length === 0) {
346
+ items.push({ type: 'separator' });
347
+ }
340
348
  for (const item of items) {
341
349
  parent.addItem(item);
342
350
  }
@@ -382,7 +390,7 @@ export class DynamicMenuWidget extends MenuWidget {
382
390
  }
383
391
 
384
392
  protected preserveFocusedElement(previousFocusedElement: Element | null = document.activeElement): boolean {
385
- if (!this.previousFocusedElement && previousFocusedElement instanceof HTMLElement) {
393
+ if (!this.previousFocusedElement && previousFocusedElement instanceof HTMLElement && !isMenuElement(previousFocusedElement)) {
386
394
  this.previousFocusedElement = previousFocusedElement;
387
395
  return true;
388
396
  }
@@ -401,14 +409,16 @@ export class DynamicMenuWidget extends MenuWidget {
401
409
  protected runWithPreservedFocusContext(what: () => void): void {
402
410
  let focusToRestore: HTMLElement | undefined = undefined;
403
411
  const { activeElement } = document;
404
- if (this.previousFocusedElement && activeElement instanceof HTMLElement && this.previousFocusedElement !== activeElement) {
412
+ if (this.previousFocusedElement &&
413
+ activeElement instanceof HTMLElement &&
414
+ this.previousFocusedElement !== activeElement) {
405
415
  focusToRestore = activeElement;
406
416
  this.previousFocusedElement.focus({ preventScroll: true });
407
417
  }
408
418
  try {
409
419
  what();
410
420
  } finally {
411
- if (focusToRestore) {
421
+ if (focusToRestore && !isMenuElement(focusToRestore)) {
412
422
  focusToRestore.focus({ preventScroll: true });
413
423
  }
414
424
  }
@@ -465,9 +475,9 @@ export class BrowserMenuBarContribution implements FrontendApplicationContributi
465
475
  }
466
476
 
467
477
  /**
468
- * Stores Theia-specific action menu nodes instead of PhosphorJS commands with their handlers.
478
+ * Stores Theia-specific action menu nodes instead of Lumino commands with their handlers.
469
479
  */
470
- export class MenuCommandRegistry extends PhosphorCommandRegistry {
480
+ export class MenuCommandRegistry extends LuminoCommandRegistry {
471
481
 
472
482
  protected actions = new Map<string, [MenuNode & CommandMenuNode, unknown[]]>();
473
483
  protected toDispose = new DisposableCollection();
@@ -516,7 +526,7 @@ export class MenuCommandRegistry extends PhosphorCommandRegistry {
516
526
  const unregisterCommand = this.addCommand(id, {
517
527
  execute: () => commandExecutor.executeCommand(menuPath, id, ...args),
518
528
  label: menu.label,
519
- icon: menu.icon,
529
+ iconClass: menu.icon,
520
530
  isEnabled: () => enabled,
521
531
  isVisible: () => visible,
522
532
  isToggled: () => toggled
@@ -532,7 +542,7 @@ export class MenuCommandRegistry extends PhosphorCommandRegistry {
532
542
  this.addKeyBinding({
533
543
  command: id,
534
544
  keys,
535
- selector: '.p-Widget' // We have the PhosphorJS dependency anyway.
545
+ selector: '.lm-Widget' // We have the Lumino dependency anyway.
536
546
  });
537
547
  }
538
548
  return Disposable.create(() => unregisterCommand.dispose());
@@ -19,7 +19,7 @@ import { PreferenceSchema } from '../../common/preferences/preference-schema';
19
19
  import { Disposable, DisposableCollection, Emitter, Event, isObject, MaybePromise } from '../../common';
20
20
  import { PreferenceChangeEvent, PreferenceEventEmitter, PreferenceProxy, PreferenceProxyOptions, PreferenceRetrieval } from './preference-proxy';
21
21
  import { PreferenceChange, PreferenceChangeImpl, PreferenceChanges, PreferenceScope, PreferenceService } from './preference-service';
22
- import { JSONValue } from '@phosphor/coreutils';
22
+ import { JSONValue } from '@lumino/coreutils';
23
23
  import { PreferenceProviderDataChange } from './preference-provider';
24
24
  import { OverridePreferenceName } from './preference-language-override-service';
25
25
 
@@ -28,7 +28,7 @@ import { bindPreferenceConfigurations, PreferenceConfigurations } from './prefer
28
28
  export { PreferenceSchema, PreferenceSchemaProperties, PreferenceDataSchema, PreferenceItem, PreferenceSchemaProperty, PreferenceDataProperty };
29
29
  import { isObject, Mutable } from '../../common/types';
30
30
  import { PreferenceLanguageOverrideService } from './preference-language-override-service';
31
- import { JSONValue } from '@phosphor/coreutils';
31
+ import { JSONValue } from '@lumino/coreutils';
32
32
 
33
33
  /* eslint-disable guard-for-in, @typescript-eslint/no-explicit-any */
34
34
 
@@ -18,7 +18,7 @@
18
18
 
19
19
  import debounce = require('p-debounce');
20
20
  import { injectable, inject } from 'inversify';
21
- import { JSONExt, JSONValue } from '@phosphor/coreutils';
21
+ import { JSONExt, JSONValue } from '@lumino/coreutils';
22
22
  import URI from '../../common/uri';
23
23
  import { Disposable, DisposableCollection, Emitter, Event, isObject } from '../../common';
24
24
  import { Deferred } from '../../common/promise-util';
@@ -24,7 +24,7 @@ import { PreferenceSchemaProvider } from './preference-contribution';
24
24
  import URI from '../../common/uri';
25
25
  import { PreferenceScope } from './preference-scope';
26
26
  import { PreferenceConfigurations } from './preference-configurations';
27
- import { JSONExt, JSONValue } from '@phosphor/coreutils/lib/json';
27
+ import { JSONExt, JSONValue } from '@lumino/coreutils';
28
28
  import { OverridePreferenceName, PreferenceLanguageOverrideService } from './preference-language-override-service';
29
29
 
30
30
  export { PreferenceScope };
@@ -19,7 +19,7 @@ import { PreferenceValidationService } from './preference-validation-service';
19
19
  import { PreferenceItem, PreferenceSchemaProvider } from './preference-contribution';
20
20
  import { PreferenceLanguageOverrideService } from './preference-language-override-service';
21
21
  import * as assert from 'assert';
22
- import { JSONValue } from '@phosphor/coreutils';
22
+ import { JSONValue } from '@lumino/coreutils';
23
23
  import { IJSONSchema, JsonType } from '../../common/json-schema';
24
24
 
25
25
  /* eslint-disable no-null/no-null */
@@ -15,7 +15,7 @@
15
15
  // *****************************************************************************
16
16
 
17
17
  import { PreferenceItem } from '../../common/preferences/preference-schema';
18
- import { JSONObject, JSONValue } from '../../../shared/@phosphor/coreutils';
18
+ import { JSONObject, JSONValue } from '../../../shared/@lumino/coreutils';
19
19
  import { PreferenceSchemaProvider } from './preference-contribution';
20
20
  import { PreferenceLanguageOverrideService } from './preference-language-override-service';
21
21
  import { inject, injectable } from '../../../shared/inversify';