@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.
- package/README.md +10 -10
- package/lib/browser/about-dialog.d.ts.map +1 -1
- package/lib/browser/about-dialog.js +2 -1
- package/lib/browser/about-dialog.js.map +1 -1
- package/lib/browser/browser.d.ts +2 -0
- package/lib/browser/browser.d.ts.map +1 -1
- package/lib/browser/browser.js +6 -1
- package/lib/browser/browser.js.map +1 -1
- package/lib/browser/catalog.json +157 -13
- package/lib/browser/common-frontend-contribution.d.ts.map +1 -1
- package/lib/browser/common-frontend-contribution.js +24 -22
- package/lib/browser/common-frontend-contribution.js.map +1 -1
- package/lib/browser/common-styling-participants.js +25 -25
- package/lib/browser/menu/browser-context-menu-renderer.d.ts.map +1 -1
- package/lib/browser/menu/browser-context-menu-renderer.js +1 -2
- package/lib/browser/menu/browser-context-menu-renderer.js.map +1 -1
- package/lib/browser/menu/browser-menu-plugin.d.ts +5 -5
- package/lib/browser/menu/browser-menu-plugin.d.ts.map +1 -1
- package/lib/browser/menu/browser-menu-plugin.js +23 -13
- package/lib/browser/menu/browser-menu-plugin.js.map +1 -1
- package/lib/browser/preferences/injectable-preference-proxy.d.ts +1 -1
- package/lib/browser/preferences/injectable-preference-proxy.d.ts.map +1 -1
- package/lib/browser/preferences/preference-contribution.d.ts +1 -1
- package/lib/browser/preferences/preference-contribution.d.ts.map +1 -1
- package/lib/browser/preferences/preference-provider.d.ts +1 -1
- package/lib/browser/preferences/preference-provider.d.ts.map +1 -1
- package/lib/browser/preferences/preference-provider.js +1 -1
- package/lib/browser/preferences/preference-provider.js.map +1 -1
- package/lib/browser/preferences/preference-service.d.ts +1 -1
- package/lib/browser/preferences/preference-service.d.ts.map +1 -1
- package/lib/browser/preferences/preference-service.js +3 -3
- package/lib/browser/preferences/preference-service.js.map +1 -1
- package/lib/browser/preferences/preference-validation-service.d.ts +1 -1
- package/lib/browser/preferences/preference-validation-service.d.ts.map +1 -1
- package/lib/browser/saveable.d.ts +11 -3
- package/lib/browser/saveable.d.ts.map +1 -1
- package/lib/browser/saveable.js +2 -1
- package/lib/browser/saveable.js.map +1 -1
- package/lib/browser/shell/application-shell-mouse-tracker.d.ts +1 -1
- package/lib/browser/shell/application-shell-mouse-tracker.d.ts.map +1 -1
- package/lib/browser/shell/application-shell-mouse-tracker.js +3 -3
- package/lib/browser/shell/application-shell-mouse-tracker.js.map +1 -1
- package/lib/browser/shell/application-shell.d.ts +10 -7
- package/lib/browser/shell/application-shell.d.ts.map +1 -1
- package/lib/browser/shell/application-shell.js +24 -21
- package/lib/browser/shell/application-shell.js.map +1 -1
- package/lib/browser/shell/shell-layout-restorer.d.ts +1 -1
- package/lib/browser/shell/shell-layout-restorer.d.ts.map +1 -1
- package/lib/browser/shell/side-panel-handler.d.ts +2 -2
- package/lib/browser/shell/side-panel-handler.d.ts.map +1 -1
- package/lib/browser/shell/side-panel-handler.js +11 -11
- package/lib/browser/shell/side-panel-handler.js.map +1 -1
- package/lib/browser/shell/side-panel-toolbar.d.ts +2 -2
- package/lib/browser/shell/side-panel-toolbar.d.ts.map +1 -1
- package/lib/browser/shell/side-panel-toolbar.js +1 -1
- package/lib/browser/shell/side-panel-toolbar.js.map +1 -1
- package/lib/browser/shell/split-panels.d.ts +1 -1
- package/lib/browser/shell/split-panels.d.ts.map +1 -1
- package/lib/browser/shell/split-panels.js +1 -1
- package/lib/browser/shell/split-panels.js.map +1 -1
- package/lib/browser/shell/tab-bar-decorator.d.ts +1 -1
- package/lib/browser/shell/tab-bar-decorator.d.ts.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.d.ts +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.d.ts.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js.map +1 -1
- package/lib/browser/shell/tab-bars.d.ts +18 -12
- package/lib/browser/shell/tab-bars.d.ts.map +1 -1
- package/lib/browser/shell/tab-bars.js +79 -51
- package/lib/browser/shell/tab-bars.js.map +1 -1
- package/lib/browser/shell/tab-bars.spec.js +1 -1
- package/lib/browser/shell/tab-bars.spec.js.map +1 -1
- package/lib/browser/shell/theia-dock-panel.d.ts +2 -2
- package/lib/browser/shell/theia-dock-panel.d.ts.map +1 -1
- package/lib/browser/shell/theia-dock-panel.js +3 -3
- package/lib/browser/shell/theia-dock-panel.js.map +1 -1
- package/lib/browser/shell/view-column-service.d.ts +1 -1
- package/lib/browser/shell/view-column-service.d.ts.map +1 -1
- package/lib/browser/shell/view-column-service.js +1 -1
- package/lib/browser/shell/view-column-service.js.map +1 -1
- package/lib/browser/shell/view-contribution.d.ts +1 -1
- package/lib/browser/shell/view-contribution.d.ts.map +1 -1
- package/lib/browser/source-tree/source-tree.d.ts.map +1 -1
- package/lib/browser/source-tree/source-tree.js +3 -2
- package/lib/browser/source-tree/source-tree.js.map +1 -1
- package/lib/browser/source-tree/tree-source.d.ts +1 -0
- package/lib/browser/source-tree/tree-source.d.ts.map +1 -1
- package/lib/browser/source-tree/tree-source.js.map +1 -1
- package/lib/browser/tree/tree-widget.d.ts +1 -1
- package/lib/browser/tree/tree-widget.d.ts.map +1 -1
- package/lib/browser/tree/tree-widget.js +1 -1
- package/lib/browser/tree/tree-widget.js.map +1 -1
- package/lib/browser/view-container.d.ts +6 -7
- package/lib/browser/view-container.d.ts.map +1 -1
- package/lib/browser/view-container.js +25 -25
- package/lib/browser/view-container.js.map +1 -1
- package/lib/browser/widget-manager.d.ts +1 -1
- package/lib/browser/widget-manager.d.ts.map +1 -1
- package/lib/browser/widget-manager.js +1 -1
- package/lib/browser/widget-manager.js.map +1 -1
- package/lib/browser/widget-manager.spec.js +1 -1
- package/lib/browser/widget-manager.spec.js.map +1 -1
- package/lib/browser/widgets/react-widget.d.ts +1 -1
- package/lib/browser/widgets/react-widget.d.ts.map +1 -1
- package/lib/browser/widgets/react-widget.js +1 -1
- package/lib/browser/widgets/react-widget.js.map +1 -1
- package/lib/browser/widgets/widget.d.ts +6 -6
- package/lib/browser/widgets/widget.d.ts.map +1 -1
- package/lib/browser/widgets/widget.js +6 -6
- package/lib/browser/widgets/widget.js.map +1 -1
- package/lib/common/json-schema.d.ts +1 -1
- package/lib/common/json-schema.d.ts.map +1 -1
- package/lib/common/preferences/preference-schema.d.ts +4 -1
- package/lib/common/preferences/preference-schema.d.ts.map +1 -1
- package/lib/common/preferences/preference-schema.js.map +1 -1
- package/lib/common/theme.d.ts +2 -0
- package/lib/common/theme.d.ts.map +1 -1
- package/lib/common/theme.js +5 -1
- package/lib/common/theme.js.map +1 -1
- package/lib/electron-browser/menu/electron-menu-contribution.d.ts +1 -1
- package/lib/electron-browser/menu/electron-menu-contribution.d.ts.map +1 -1
- package/lib/electron-browser/menu/electron-menu-contribution.js +6 -4
- package/lib/electron-browser/menu/electron-menu-contribution.js.map +1 -1
- package/lib/electron-browser/preload.d.ts.map +1 -1
- package/lib/electron-browser/preload.js +3 -0
- package/lib/electron-browser/preload.js.map +1 -1
- package/lib/electron-common/electron-api.d.ts +3 -0
- package/lib/electron-common/electron-api.d.ts.map +1 -1
- package/lib/electron-common/electron-api.js +2 -1
- package/lib/electron-common/electron-api.js.map +1 -1
- package/lib/electron-main/electron-api-main.d.ts.map +1 -1
- package/lib/electron-main/electron-api-main.js +1 -0
- package/lib/electron-main/electron-api-main.js.map +1 -1
- package/lib/electron-main/electron-main-application.d.ts +2 -0
- package/lib/electron-main/electron-main-application.d.ts.map +1 -1
- package/lib/electron-main/electron-main-application.js +3 -0
- package/lib/electron-main/electron-main-application.js.map +1 -1
- package/lib/node/messaging/websocket-frontend-connection-service.js +1 -1
- package/package.json +24 -24
- package/shared/@lumino/algorithm/index.d.ts +1 -0
- package/shared/@lumino/algorithm/index.js +1 -0
- package/shared/@lumino/commands/index.d.ts +1 -0
- package/shared/@lumino/commands/index.js +1 -0
- package/shared/@lumino/coreutils/index.d.ts +1 -0
- package/shared/@lumino/coreutils/index.js +1 -0
- package/shared/@lumino/domutils/index.d.ts +1 -0
- package/shared/@lumino/domutils/index.js +1 -0
- package/shared/@lumino/dragdrop/index.d.ts +1 -0
- package/shared/@lumino/dragdrop/index.js +1 -0
- package/shared/@lumino/messaging/index.d.ts +1 -0
- package/shared/@lumino/messaging/index.js +1 -0
- package/shared/@lumino/properties/index.d.ts +1 -0
- package/shared/@lumino/properties/index.js +1 -0
- package/shared/@lumino/signaling/index.d.ts +1 -0
- package/shared/@lumino/signaling/index.js +1 -0
- package/shared/@lumino/virtualdom/index.d.ts +1 -0
- package/shared/@lumino/virtualdom/index.js +1 -0
- package/shared/@lumino/widgets/index.d.ts +1 -0
- package/shared/@lumino/widgets/index.js +1 -0
- package/src/browser/about-dialog.tsx +2 -1
- package/src/browser/browser.ts +6 -1
- package/src/browser/common-frontend-contribution.ts +24 -22
- package/src/browser/common-styling-participants.ts +25 -25
- package/src/browser/menu/browser-context-menu-renderer.ts +1 -2
- package/src/browser/menu/browser-menu-plugin.ts +24 -14
- package/src/browser/preferences/injectable-preference-proxy.ts +1 -1
- package/src/browser/preferences/preference-contribution.ts +1 -1
- package/src/browser/preferences/preference-provider.ts +1 -1
- package/src/browser/preferences/preference-service.ts +1 -1
- package/src/browser/preferences/preference-validation-service.spec.ts +1 -1
- package/src/browser/preferences/preference-validation-service.ts +1 -1
- package/src/browser/saveable.ts +13 -3
- package/src/browser/shell/application-shell-mouse-tracker.ts +3 -3
- package/src/browser/shell/application-shell.ts +36 -32
- package/src/browser/shell/shell-layout-restorer.ts +1 -1
- package/src/browser/shell/side-panel-handler.ts +11 -11
- package/src/browser/shell/side-panel-toolbar.ts +2 -2
- package/src/browser/shell/split-panels.ts +1 -1
- package/src/browser/shell/tab-bar-decorator.ts +1 -1
- package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar.tsx +1 -1
- package/src/browser/shell/tab-bars.spec.ts +1 -1
- package/src/browser/shell/tab-bars.ts +92 -57
- package/src/browser/shell/theia-dock-panel.ts +3 -3
- package/src/browser/shell/view-column-service.ts +2 -2
- package/src/browser/shell/view-contribution.ts +1 -1
- package/src/browser/source-tree/source-tree.ts +3 -2
- package/src/browser/source-tree/tree-source.ts +1 -0
- package/src/browser/style/dialog.css +12 -12
- package/src/browser/style/dockpanel.css +19 -19
- package/src/browser/style/hover-service.css +1 -0
- package/src/browser/style/index.css +3 -3
- package/src/browser/style/menus.css +34 -31
- package/src/browser/style/sidepanel.css +52 -48
- package/src/browser/style/split-widget.css +5 -5
- package/src/browser/style/tabs.css +91 -97
- package/src/browser/style/view-container.css +14 -14
- package/src/browser/tree/tree-widget.tsx +2 -2
- package/src/browser/view-container.ts +34 -34
- package/src/browser/widget-manager.spec.ts +1 -1
- package/src/browser/widget-manager.ts +1 -1
- package/src/browser/widgets/react-widget.tsx +1 -1
- package/src/browser/widgets/widget.ts +7 -7
- package/src/common/json-schema.ts +1 -1
- package/src/common/preferences/preference-schema.ts +4 -1
- package/src/common/theme.ts +6 -0
- package/src/electron-browser/menu/electron-menu-contribution.ts +6 -5
- package/src/electron-browser/preload.ts +6 -3
- package/src/electron-common/electron-api.ts +3 -0
- package/src/electron-main/electron-api-main.ts +4 -1
- package/src/electron-main/electron-main-application.ts +5 -0
- package/src/node/messaging/websocket-frontend-connection-service.ts +1 -2
- package/shared/@phosphor/algorithm/index.d.ts +0 -1
- package/shared/@phosphor/algorithm/index.js +0 -1
- package/shared/@phosphor/commands/index.d.ts +0 -1
- package/shared/@phosphor/commands/index.js +0 -1
- package/shared/@phosphor/coreutils/index.d.ts +0 -1
- package/shared/@phosphor/coreutils/index.js +0 -1
- package/shared/@phosphor/domutils/index.d.ts +0 -1
- package/shared/@phosphor/domutils/index.js +0 -1
- package/shared/@phosphor/dragdrop/index.d.ts +0 -1
- package/shared/@phosphor/dragdrop/index.js +0 -1
- package/shared/@phosphor/messaging/index.d.ts +0 -1
- package/shared/@phosphor/messaging/index.js +0 -1
- package/shared/@phosphor/properties/index.d.ts +0 -1
- package/shared/@phosphor/properties/index.js +0 -1
- package/shared/@phosphor/signaling/index.d.ts +0 -1
- package/shared/@phosphor/signaling/index.js +0 -1
- package/shared/@phosphor/virtualdom/index.d.ts +0 -1
- package/shared/@phosphor/virtualdom/index.js +0 -1
- package/shared/@phosphor/widgets/index.d.ts +0 -1
- 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 {
|
|
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
|
|
38
|
-
import { MimeData } from '@
|
|
39
|
-
import { ElementExt } from '@
|
|
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 = '
|
|
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('
|
|
721
|
-
this.node.addEventListener('
|
|
722
|
-
this.node.addEventListener('
|
|
723
|
-
this.node.addEventListener('
|
|
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('
|
|
729
|
-
this.node.removeEventListener('
|
|
730
|
-
this.node.removeEventListener('
|
|
731
|
-
this.node.removeEventListener('
|
|
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 '
|
|
737
|
-
this.handleDragEnter(event as
|
|
736
|
+
case 'lm-dragenter':
|
|
737
|
+
this.handleDragEnter(event as Drag.Event);
|
|
738
738
|
break;
|
|
739
|
-
case '
|
|
740
|
-
this.handleDragOver(event as
|
|
739
|
+
case 'lm-dragover':
|
|
740
|
+
this.handleDragOver(event as Drag.Event);
|
|
741
741
|
break;
|
|
742
|
-
case '
|
|
743
|
-
this.handleDragLeave(event as
|
|
742
|
+
case 'lm-dragleave':
|
|
743
|
+
this.handleDragLeave(event as Drag.Event);
|
|
744
744
|
break;
|
|
745
|
-
case '
|
|
746
|
-
this.handleDrop(event as
|
|
745
|
+
case 'lm-drop':
|
|
746
|
+
this.handleDrop(event as Drag.Event);
|
|
747
747
|
break;
|
|
748
748
|
}
|
|
749
749
|
}
|
|
750
750
|
|
|
751
|
-
handleDragEnter(event:
|
|
752
|
-
if (event.mimeData.hasData('application/vnd.
|
|
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:
|
|
760
|
-
const factory = event.mimeData.getData('application/vnd.
|
|
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:
|
|
804
|
+
handleDragLeave(event: Drag.Event): void {
|
|
805
805
|
this.toDisposeOnDragEnd.dispose();
|
|
806
|
-
if (event.mimeData.hasData('application/vnd.
|
|
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:
|
|
812
|
+
handleDrop(event: Drag.Event): void {
|
|
813
813
|
this.toDisposeOnDragEnd.dispose();
|
|
814
|
-
const factory = event.mimeData.getData('application/vnd.
|
|
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.
|
|
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('
|
|
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('
|
|
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
|
-
|
|
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
|
|
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 '@
|
|
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 '@
|
|
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 '@
|
|
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 '@
|
|
21
|
-
import { Message, MessageLoop } from '@
|
|
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 '@
|
|
27
|
+
import { Slot } from '@lumino/signaling';
|
|
28
28
|
|
|
29
29
|
decorate(injectable(), Widget);
|
|
30
30
|
decorate(unmanaged(), Widget, 0);
|
|
31
31
|
|
|
32
|
-
export * from '@
|
|
33
|
-
export * from '@
|
|
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
|
|
66
|
-
* but omitted the checks that
|
|
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 '@
|
|
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 '@
|
|
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 {
|
package/src/common/theme.ts
CHANGED
|
@@ -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
|
|
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('
|
|
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');
|