@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
@@ -15,7 +15,7 @@
15
15
  // *****************************************************************************
16
16
 
17
17
  import { interfaces, injectable, inject, postConstruct } from 'inversify';
18
- import { IIterator, toArray, find, some, every, map, ArrayExt } from '@phosphor/algorithm';
18
+ import { find, some, every, map, ArrayExt } from '@lumino/algorithm';
19
19
  import {
20
20
  Widget, EXPANSION_TOGGLE_CLASS, COLLAPSED_CLASS, CODICON_TREE_ITEM_CLASSES, MessageLoop, Message, SplitPanel,
21
21
  BaseWidget, addEventListener, SplitLayout, LayoutItem, PanelLayout, addKeyListener, waitForRevealed, UnsafeWidgetUtilities, DockPanel, PINNED_CLASS
@@ -34,9 +34,9 @@ import { isEmpty, isObject, nls } from '../common';
34
34
  import { WidgetManager } from './widget-manager';
35
35
  import { Key } from './keys';
36
36
  import { ProgressBarFactory } from './progress-bar-factory';
37
- import { Drag, IDragEvent } from '@phosphor/dragdrop';
38
- import { MimeData } from '@phosphor/coreutils';
39
- import { ElementExt } from '@phosphor/domutils';
37
+ import { Drag } from '@lumino/dragdrop';
38
+ import { MimeData } from '@lumino/coreutils';
39
+ import { ElementExt } from '@lumino/domutils';
40
40
  import { TabBarDecoratorService } from './shell/tab-bar-decorator';
41
41
 
42
42
  export interface ViewContainerTitleOptions {
@@ -224,7 +224,7 @@ export class ViewContainer extends BaseWidget implements StatefulWidget, Applica
224
224
  }
225
225
 
226
226
  protected updateSplitterVisibility(): void {
227
- const className = 'p-first-visible';
227
+ const className = 'lm-first-visible';
228
228
  let firstFound = false;
229
229
  for (const part of this.getParts()) {
230
230
  if (!part.isHidden && !firstFound) {
@@ -717,47 +717,47 @@ export class ViewContainer extends BaseWidget implements StatefulWidget, Applica
717
717
 
718
718
  protected override onBeforeAttach(msg: Message): void {
719
719
  super.onBeforeAttach(msg);
720
- this.node.addEventListener('p-dragenter', this, true);
721
- this.node.addEventListener('p-dragover', this, true);
722
- this.node.addEventListener('p-dragleave', this, true);
723
- this.node.addEventListener('p-drop', this, true);
720
+ this.node.addEventListener('lm-dragenter', this, true);
721
+ this.node.addEventListener('lm-dragover', this, true);
722
+ this.node.addEventListener('lm-dragleave', this, true);
723
+ this.node.addEventListener('lm-drop', this, true);
724
724
  }
725
725
 
726
726
  protected override onAfterDetach(msg: Message): void {
727
727
  super.onAfterDetach(msg);
728
- this.node.removeEventListener('p-dragenter', this, true);
729
- this.node.removeEventListener('p-dragover', this, true);
730
- this.node.removeEventListener('p-dragleave', this, true);
731
- this.node.removeEventListener('p-drop', this, true);
728
+ this.node.removeEventListener('lm-dragenter', this, true);
729
+ this.node.removeEventListener('lm-dragover', this, true);
730
+ this.node.removeEventListener('lm-dragleave', this, true);
731
+ this.node.removeEventListener('lm-drop', this, true);
732
732
  }
733
733
 
734
734
  handleEvent(event: Event): void {
735
735
  switch (event.type) {
736
- case 'p-dragenter':
737
- this.handleDragEnter(event as IDragEvent);
736
+ case 'lm-dragenter':
737
+ this.handleDragEnter(event as Drag.Event);
738
738
  break;
739
- case 'p-dragover':
740
- this.handleDragOver(event as IDragEvent);
739
+ case 'lm-dragover':
740
+ this.handleDragOver(event as Drag.Event);
741
741
  break;
742
- case 'p-dragleave':
743
- this.handleDragLeave(event as IDragEvent);
742
+ case 'lm-dragleave':
743
+ this.handleDragLeave(event as Drag.Event);
744
744
  break;
745
- case 'p-drop':
746
- this.handleDrop(event as IDragEvent);
745
+ case 'lm-drop':
746
+ this.handleDrop(event as Drag.Event);
747
747
  break;
748
748
  }
749
749
  }
750
750
 
751
- handleDragEnter(event: IDragEvent): void {
752
- if (event.mimeData.hasData('application/vnd.phosphor.view-container-factory')) {
751
+ handleDragEnter(event: Drag.Event): void {
752
+ if (event.mimeData.hasData('application/vnd.lumino.view-container-factory')) {
753
753
  event.preventDefault();
754
754
  event.stopPropagation();
755
755
  }
756
756
  }
757
757
 
758
758
  toDisposeOnDragEnd = new DisposableCollection();
759
- handleDragOver(event: IDragEvent): void {
760
- const factory = event.mimeData.getData('application/vnd.phosphor.view-container-factory');
759
+ handleDragOver(event: Drag.Event): void {
760
+ const factory = event.mimeData.getData('application/vnd.lumino.view-container-factory');
761
761
  const widget = factory && factory();
762
762
  if (!(widget instanceof ViewContainerPart)) {
763
763
  return;
@@ -801,17 +801,17 @@ export class ViewContainer extends BaseWidget implements StatefulWidget, Applica
801
801
  event.dropAction = event.proposedAction;
802
802
  };
803
803
 
804
- handleDragLeave(event: IDragEvent): void {
804
+ handleDragLeave(event: Drag.Event): void {
805
805
  this.toDisposeOnDragEnd.dispose();
806
- if (event.mimeData.hasData('application/vnd.phosphor.view-container-factory')) {
806
+ if (event.mimeData.hasData('application/vnd.lumino.view-container-factory')) {
807
807
  event.preventDefault();
808
808
  event.stopPropagation();
809
809
  }
810
810
  };
811
811
 
812
- handleDrop(event: IDragEvent): void {
812
+ handleDrop(event: Drag.Event): void {
813
813
  this.toDisposeOnDragEnd.dispose();
814
- const factory = event.mimeData.getData('application/vnd.phosphor.view-container-factory');
814
+ const factory = event.mimeData.getData('application/vnd.lumino.view-container-factory');
815
815
  const draggedPart = factory && factory();
816
816
  if (!(draggedPart instanceof ViewContainerPart)) {
817
817
  event.dropAction = 'none';
@@ -838,7 +838,7 @@ export class ViewContainer extends BaseWidget implements StatefulWidget, Applica
838
838
  event => {
839
839
  event.preventDefault();
840
840
  const mimeData = new MimeData();
841
- mimeData.setData('application/vnd.phosphor.view-container-factory', () => part);
841
+ mimeData.setData('application/vnd.lumino.view-container-factory', () => part);
842
842
  const clonedHeader = part.headerElement.cloneNode(true) as HTMLElement;
843
843
  clonedHeader.style.width = part.node.style.width;
844
844
  clonedHeader.style.opacity = '0.6';
@@ -848,7 +848,7 @@ export class ViewContainer extends BaseWidget implements StatefulWidget, Applica
848
848
  proposedAction: 'move',
849
849
  supportedActions: 'move'
850
850
  });
851
- part.node.classList.add('p-mod-hidden');
851
+ part.node.classList.add('lm-mod-hidden');
852
852
  drag.start(event.clientX, event.clientY).then(dropAction => {
853
853
  // The promise is resolved when the drag has ended
854
854
  if (dropAction === 'move' && part.currentViewContainerId !== this.id) {
@@ -856,7 +856,7 @@ export class ViewContainer extends BaseWidget implements StatefulWidget, Applica
856
856
  this.lastVisibleState = this.doStoreState();
857
857
  }
858
858
  });
859
- setTimeout(() => { part.node.classList.remove('p-mod-hidden'); }, 0);
859
+ setTimeout(() => { part.node.classList.remove('lm-mod-hidden'); }, 0);
860
860
  }, false));
861
861
  }
862
862
 
@@ -1368,13 +1368,13 @@ export class ViewContainerLayout extends SplitLayout {
1368
1368
  return (this as any)._items as Array<LayoutItem & ViewContainerLayout.Item>;
1369
1369
  }
1370
1370
 
1371
- override iter(): IIterator<ViewContainerPart> {
1371
+ iter(): IterableIterator<ViewContainerPart> {
1372
1372
  return map(this.items, item => item.widget);
1373
1373
  }
1374
1374
 
1375
1375
  // @ts-expect-error TS2611 `SplitLayout.widgets` is declared as `readonly widgets` but is implemented as a getter.
1376
1376
  get widgets(): ViewContainerPart[] {
1377
- return toArray(this.iter());
1377
+ return Array.from(this.iter());
1378
1378
  }
1379
1379
 
1380
1380
  override attachWidget(index: number, widget: ViewContainerPart): void {
@@ -20,7 +20,7 @@ let disableJsDom = enableJSDOM();
20
20
  import { Container, ContainerModule } from 'inversify';
21
21
  import { expect } from 'chai';
22
22
  import { WidgetManager, WidgetFactory } from './widget-manager';
23
- import { Widget } from '@phosphor/widgets';
23
+ import { Widget } from '@lumino/widgets';
24
24
  import { ILogger } from '../common/logger';
25
25
  import { MockLogger } from '../common/test/mock-logger';
26
26
  import { bindContributionProvider } from '../common';
@@ -15,7 +15,7 @@
15
15
  // *****************************************************************************
16
16
 
17
17
  import { inject, named, injectable } from 'inversify';
18
- import { Widget } from '@phosphor/widgets';
18
+ import { Widget } from '@lumino/widgets';
19
19
  import { ILogger, Emitter, Event, ContributionProvider, MaybePromise, WaitUntilEvent } from '../common';
20
20
  import stableJsonStringify = require('fast-json-stable-stringify');
21
21
 
@@ -18,7 +18,7 @@ import * as React from 'react';
18
18
  import { injectable, unmanaged } from 'inversify';
19
19
  import { Disposable } from '../../common';
20
20
  import { BaseWidget, Message } from './widget';
21
- import { Widget } from '@phosphor/widgets';
21
+ import { Widget } from '@lumino/widgets';
22
22
  import { createRoot, Root } from 'react-dom/client';
23
23
 
24
24
  @injectable()
@@ -17,20 +17,20 @@
17
17
  /* eslint-disable @typescript-eslint/no-explicit-any */
18
18
 
19
19
  import { injectable, decorate, unmanaged } from 'inversify';
20
- import { Title, Widget } from '@phosphor/widgets';
21
- import { Message, MessageLoop } from '@phosphor/messaging';
20
+ import { Title, Widget } from '@lumino/widgets';
21
+ import { Message, MessageLoop } from '@lumino/messaging';
22
22
  import { Emitter, Event, Disposable, DisposableCollection, MaybePromise, isObject } from '../../common';
23
23
  import { KeyCode, KeysOrKeyCodes } from '../keyboard/keys';
24
24
 
25
25
  import PerfectScrollbar from 'perfect-scrollbar';
26
26
  import { PreviewableWidget } from '../widgets/previewable-widget';
27
- import { Slot } from '@phosphor/signaling';
27
+ import { Slot } from '@lumino/signaling';
28
28
 
29
29
  decorate(injectable(), Widget);
30
30
  decorate(unmanaged(), Widget, 0);
31
31
 
32
- export * from '@phosphor/widgets';
33
- export * from '@phosphor/messaging';
32
+ export * from '@lumino/widgets';
33
+ export * from '@lumino/messaging';
34
34
 
35
35
  export const ACTION_ITEM = 'action-label';
36
36
 
@@ -62,8 +62,8 @@ export const DEFAULT_SCROLL_OPTIONS: PerfectScrollbar.Options = {
62
62
  };
63
63
 
64
64
  /**
65
- * At a number of places in the code, we have effectively reimplemented Phosphor's Widget.attach and Widget.detach,
66
- * but omitted the checks that Phosphor expects to be performed for those operations. That is a bad idea, because it
65
+ * At a number of places in the code, we have effectively reimplemented Lumino's Widget.attach and Widget.detach,
66
+ * but omitted the checks that Lumino expects to be performed for those operations. That is a bad idea, because it
67
67
  * means that we are telling widgets that they are attached or detached when not all the conditions that should apply
68
68
  * do apply. We should explicitly mark those locations so that we know where we should go fix them later.
69
69
  */
@@ -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;
@@ -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');