@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,14 +15,14 @@
15
15
  // *****************************************************************************
16
16
 
17
17
  import PerfectScrollbar from 'perfect-scrollbar';
18
- import { TabBar, Title, Widget } from '@phosphor/widgets';
19
- import { VirtualElement, h, VirtualDOM, ElementInlineStyle } from '@phosphor/virtualdom';
18
+ import { TabBar, Title, Widget } from '@lumino/widgets';
19
+ import { VirtualElement, h, VirtualDOM, ElementInlineStyle } from '@lumino/virtualdom';
20
20
  import { Disposable, DisposableCollection, MenuPath, notEmpty, SelectionService, CommandService, nls, ArrayUtils } from '../../common';
21
21
  import { ContextMenuRenderer } from '../context-menu-renderer';
22
- import { Signal, Slot } from '@phosphor/signaling';
23
- import { Message, MessageLoop } from '@phosphor/messaging';
24
- import { ArrayExt } from '@phosphor/algorithm';
25
- import { ElementExt } from '@phosphor/domutils';
22
+ import { Signal, Slot } from '@lumino/signaling';
23
+ import { Message, MessageLoop } from '@lumino/messaging';
24
+ import { ArrayExt } from '@lumino/algorithm';
25
+ import { ElementExt } from '@lumino/domutils';
26
26
  import { TabBarToolbarRegistry, TabBarToolbar } from './tab-bar-toolbar';
27
27
  import { TheiaDockPanel, MAIN_AREA_ID, BOTTOM_AREA_ID } from './theia-dock-panel';
28
28
  import { WidgetDecoration } from '../widget-decoration';
@@ -30,7 +30,7 @@ import { TabBarDecoratorService } from './tab-bar-decorator';
30
30
  import { IconThemeService } from '../icon-theme-service';
31
31
  import { BreadcrumbsRenderer, BreadcrumbsRendererFactory } from '../breadcrumbs/breadcrumbs-renderer';
32
32
  import { NavigatableWidget } from '../navigatable-types';
33
- import { IDragEvent } from '@phosphor/dragdrop';
33
+ import { Drag } from '@lumino/dragdrop';
34
34
  import { LOCKED_CLASS, PINNED_CLASS } from '../widgets/widget';
35
35
  import { CorePreferences } from '../core-preferences';
36
36
  import { HoverService } from '../hover-service';
@@ -39,6 +39,7 @@ import { SelectComponent } from '../widgets/select-component';
39
39
  import { createElement } from 'react';
40
40
  import { PreviewableWidget } from '../widgets/previewable-widget';
41
41
  import { EnhancedPreviewWidget } from '../widgets/enhanced-preview-widget';
42
+ import { isContextMenuEvent } from '../browser';
42
43
  import { ContextKeyService } from '../context-key-service';
43
44
 
44
45
  /** The class name added to hidden content nodes, which are required to render vertical side bars. */
@@ -195,7 +196,7 @@ export class TabBarRenderer extends TabBar.Renderer {
195
196
  this.renderLock(data, isInSidePanel)
196
197
  ),
197
198
  h.div({
198
- className: 'p-TabBar-tabCloseIcon action-label',
199
+ className: 'lm-TabBar-tabCloseIcon action-label',
199
200
  title: closeIconTitle,
200
201
  onclick: this.handleCloseClickEvent
201
202
  })
@@ -205,7 +206,7 @@ export class TabBarRenderer extends TabBar.Renderer {
205
206
  override createTabClass(data: SideBarRenderData): string {
206
207
  let tabClass = super.createTabClass(data);
207
208
  if (!(data.visible ?? true)) {
208
- tabClass += ' p-mod-invisible';
209
+ tabClass += ' lm-mod-invisible';
209
210
  }
210
211
  return tabClass;
211
212
  }
@@ -280,16 +281,16 @@ export class TabBarRenderer extends TabBar.Renderer {
280
281
  // No need to check for duplicate labels if the tab is rendered in the side panel (title is not displayed),
281
282
  // or if there are less than two files in the tab bar.
282
283
  if (isInSidePanel || (this.tabBar && this.tabBar.titles.length < 2)) {
283
- return h.div({ className: 'p-TabBar-tabLabel', style }, data.title.label);
284
+ return h.div({ className: 'lm-TabBar-tabLabel', style }, data.title.label);
284
285
  }
285
286
  const originalToDisplayedMap = this.findDuplicateLabels([...this.tabBar!.titles]);
286
287
  const labelDetails: string | undefined = originalToDisplayedMap.get(data.title.caption);
287
288
  if (labelDetails) {
288
- return h.div({ className: 'p-TabBar-tabLabelWrapper' },
289
- h.div({ className: 'p-TabBar-tabLabel', style }, data.title.label),
290
- h.div({ className: 'p-TabBar-tabLabelDetails', style }, labelDetails));
289
+ return h.div({ className: 'lm-TabBar-tabLabelWrapper' },
290
+ h.div({ className: 'lm-TabBar-tabLabel', style }, data.title.label),
291
+ h.div({ className: 'lm-TabBar-tabLabelDetails', style }, labelDetails));
291
292
  }
292
- return h.div({ className: 'p-TabBar-tabLabel', style }, data.title.label);
293
+ return h.div({ className: 'lm-TabBar-tabLabel', style }, data.title.label);
293
294
  }
294
295
 
295
296
  protected renderTailDecorations(renderData: SideBarRenderData, isInSidePanel?: boolean): VirtualElement[] {
@@ -314,7 +315,7 @@ export class TabBarRenderer extends TabBar.Renderer {
314
315
  return decorationsToRender.map((decoration, index) => {
315
316
  const { tooltip, data, fontData, color, icon, iconClass } = decoration;
316
317
  const iconToRender = icon ?? iconClass;
317
- const className = ['p-TabBar-tail', 'flex'].join(' ');
318
+ const className = ['lm-TabBar-tail', 'flex'].join(' ');
318
319
  const style = fontData ? fontData : color ? { color } : undefined;
319
320
  const content = (data ? data : iconToRender
320
321
  ? h.span({ className: this.getIconClass(iconToRender, iconToRender === 'circle' ? [WidgetDecoration.Styles.DECORATOR_SIZE_CLASS] : []) })
@@ -336,7 +337,7 @@ export class TabBarRenderer extends TabBar.Renderer {
336
337
 
337
338
  renderLock(data: SideBarRenderData, isInSidePanel?: boolean): VirtualElement {
338
339
  return !isInSidePanel && data.title.className.includes(LOCKED_CLASS)
339
- ? h.div({ className: 'p-TabBar-tabLock' })
340
+ ? h.div({ className: 'lm-TabBar-tabLock' })
340
341
  : h.div({});
341
342
  }
342
343
 
@@ -569,7 +570,7 @@ export class TabBarRenderer extends TabBar.Renderer {
569
570
  visualPreviewDiv.append(clonedNode);
570
571
  const visualPreview = visualPreviewDiv.children.item(visualPreviewDiv.children.length - 1);
571
572
  if (visualPreview instanceof HTMLElement) {
572
- visualPreview.classList.remove('p-mod-hidden');
573
+ visualPreview.classList.remove('lm-mod-hidden');
573
574
  visualPreview.classList.add('enhanced-preview');
574
575
  visualPreview.id = `preview:${widget.id}`;
575
576
 
@@ -636,7 +637,7 @@ export class TabBarRenderer extends TabBar.Renderer {
636
637
  event.preventDefault();
637
638
  let widget: Widget | undefined = undefined;
638
639
  if (this.tabBar) {
639
- const titleIndex = Array.from(this.tabBar.contentNode.getElementsByClassName('p-TabBar-tab'))
640
+ const titleIndex = Array.from(this.tabBar.contentNode.getElementsByClassName('lm-TabBar-tab'))
640
641
  .findIndex(node => node.contains(event.currentTarget as HTMLElement));
641
642
  if (titleIndex !== -1) {
642
643
  widget = this.tabBar.titles[titleIndex].owner;
@@ -687,6 +688,10 @@ export class TabBarRenderer extends TabBar.Renderer {
687
688
 
688
689
  }
689
690
 
691
+ export interface TabBarPrivateMethods {
692
+ _releaseMouse(): void;
693
+ }
694
+
690
695
  /**
691
696
  * A specialized tab bar for the main and bottom areas.
692
697
  */
@@ -731,8 +736,25 @@ export class ScrollableTabBar extends TabBar<Widget> {
731
736
  this.toDispose.dispose();
732
737
  }
733
738
 
739
+ protected override onBeforeAttach(msg: Message): void {
740
+ this.contentNode.addEventListener('pointerdown', this);
741
+ this.contentNode.addEventListener('dblclick', this);
742
+ this.contentNode.addEventListener('keydown', this);
743
+ }
744
+
745
+ protected override onAfterDetach(msg: Message): void {
746
+ this.contentNode.removeEventListener('pointerdown', this);
747
+ this.contentNode.removeEventListener('dblclick', this);
748
+ this.contentNode.removeEventListener('keydown', this);
749
+ this.doReleaseMouse();
750
+ }
751
+
752
+ protected doReleaseMouse(): void {
753
+ (this as unknown as TabBarPrivateMethods)._releaseMouse();
754
+ }
755
+
734
756
  /**
735
- * Restructures the DOM defined in PhosphorJS.
757
+ * Restructures the DOM defined in Lumino.
736
758
  *
737
759
  * By default the tabs (`li`) are contained in the `this.contentNode` (`ul`) which is wrapped in a `div` (`this.node`).
738
760
  * Instead of this structure, we add a container for the `this.contentNode` and for the toolbar.
@@ -741,7 +763,7 @@ export class ScrollableTabBar extends TabBar<Widget> {
741
763
  protected rewireDOM(): void {
742
764
  const contentNode = this.node.getElementsByClassName(ScrollableTabBar.Styles.TAB_BAR_CONTENT)[0];
743
765
  if (!contentNode) {
744
- throw new Error("'this.node' does not have the content as a direct child with class name 'p-TabBar-content'.");
766
+ throw new Error(`'this.node' does not have the content as a direct child with class name '${ScrollableTabBar.Styles.TAB_BAR_CONTENT}'.`);
745
767
  }
746
768
  this.node.removeChild(contentNode);
747
769
  this.contentContainer = document.createElement('div');
@@ -806,14 +828,14 @@ export class ScrollableTabBar extends TabBar<Widget> {
806
828
  if (this.orientation === 'horizontal') {
807
829
  let availableWidth = this.scrollbarHost.clientWidth;
808
830
  let effectiveWidth = availableWidth;
809
- if (!this.openTabsContainer.classList.contains('p-mod-hidden')) {
831
+ if (!this.openTabsContainer.classList.contains('lm-mod-hidden')) {
810
832
  availableWidth += this.openTabsContainer.getBoundingClientRect().width;
811
833
  }
812
834
  if (this.dynamicTabOptions.minimumTabSize * this.titles.length <= availableWidth) {
813
835
  effectiveWidth += this.openTabsContainer.getBoundingClientRect().width;
814
- this.openTabsContainer.classList.add('p-mod-hidden');
836
+ this.openTabsContainer.classList.add('lm-mod-hidden');
815
837
  } else {
816
- this.openTabsContainer.classList.remove('p-mod-hidden');
838
+ this.openTabsContainer.classList.remove('lm-mod-hidden');
817
839
  }
818
840
  this.tabSize = Math.max(Math.min(effectiveWidth / this.titles.length,
819
841
  this.dynamicTabOptions.defaultTabSize), this.dynamicTabOptions.minimumTabSize);
@@ -821,7 +843,7 @@ export class ScrollableTabBar extends TabBar<Widget> {
821
843
  }
822
844
  this.node.classList.add('dynamic-tabs');
823
845
  } else {
824
- this.openTabsContainer.classList.add('p-mod-hidden');
846
+ this.openTabsContainer.classList.add('lm-mod-hidden');
825
847
  this.node.classList.remove('dynamic-tabs');
826
848
  }
827
849
  for (let i = 0, n = this.titles.length; i < n; ++i) {
@@ -904,11 +926,11 @@ export class ScrollableTabBar extends TabBar<Widget> {
904
926
  }
905
927
 
906
928
  /**
907
- * Overrides the `contentNode` property getter in PhosphorJS' TabBar.
929
+ * Overrides the `contentNode` property getter in LuminoJS' TabBar.
908
930
  */
909
931
  // @ts-expect-error TS2611 `TabBar<T>.contentNode` is declared as `readonly contentNode` but is implemented as a getter.
910
932
  get contentNode(): HTMLUListElement {
911
- return this.tabBarContainer.getElementsByClassName(ToolbarAwareTabBar.Styles.TAB_BAR_CONTENT)[0] as HTMLUListElement;
933
+ return this.node.getElementsByClassName(ToolbarAwareTabBar.Styles.TAB_BAR_CONTENT)[0] as HTMLUListElement;
912
934
  }
913
935
 
914
936
  /**
@@ -931,8 +953,8 @@ export namespace ScrollableTabBar {
931
953
  }
932
954
  export namespace Styles {
933
955
 
934
- export const TAB_BAR_CONTENT = 'p-TabBar-content';
935
- export const TAB_BAR_CONTENT_CONTAINER = 'p-TabBar-content-container';
956
+ export const TAB_BAR_CONTENT = 'lm-TabBar-content';
957
+ export const TAB_BAR_CONTENT_CONTAINER = 'lm-TabBar-content-container';
936
958
 
937
959
  }
938
960
  }
@@ -1025,6 +1047,10 @@ export class ToolbarAwareTabBar extends ScrollableTabBar {
1025
1047
 
1026
1048
  override handleEvent(event: Event): void {
1027
1049
  if (event instanceof MouseEvent) {
1050
+ if (isContextMenuEvent(event)) {
1051
+ // Let this bubble up to handle the context menu
1052
+ return;
1053
+ }
1028
1054
  if (this.toolbar && this.toolbar.shouldHandleMouseEvent(event) || this.isOver(event, this.openTabsContainer)) {
1029
1055
  // if the mouse event is over the toolbar part don't handle it.
1030
1056
  return;
@@ -1038,7 +1064,7 @@ export class ToolbarAwareTabBar extends ScrollableTabBar {
1038
1064
  }
1039
1065
 
1040
1066
  /**
1041
- * Restructures the DOM defined in PhosphorJS.
1067
+ * Restructures the DOM defined in Lumino.
1042
1068
  *
1043
1069
  * By default the tabs (`li`) are contained in the `this.contentNode` (`ul`) which is wrapped in a `div` (`this.node`).
1044
1070
  * Instead of this structure, we add a container for the `this.contentNode` and for the toolbar.
@@ -1116,18 +1142,18 @@ export class SideTabBar extends ScrollableTabBar {
1116
1142
 
1117
1143
  protected override onAfterAttach(msg: Message): void {
1118
1144
  this.updateTabs();
1119
- this.node.addEventListener('p-dragenter', this);
1120
- this.node.addEventListener('p-dragover', this);
1121
- this.node.addEventListener('p-dragleave', this);
1122
- document.addEventListener('p-drop', this);
1145
+ this.node.addEventListener('lm-dragenter', this);
1146
+ this.node.addEventListener('lm-dragover', this);
1147
+ this.node.addEventListener('lm-dragleave', this);
1148
+ document.addEventListener('lm-drop', this);
1123
1149
  }
1124
1150
 
1125
1151
  protected override onAfterDetach(msg: Message): void {
1126
1152
  super.onAfterDetach(msg);
1127
- this.node.removeEventListener('p-dragenter', this);
1128
- this.node.removeEventListener('p-dragover', this);
1129
- this.node.removeEventListener('p-dragleave', this);
1130
- document.removeEventListener('p-drop', this);
1153
+ this.node.removeEventListener('lm-dragenter', this);
1154
+ this.node.removeEventListener('lm-dragover', this);
1155
+ this.node.removeEventListener('lm-dragleave', this);
1156
+ document.removeEventListener('lm-drop', this);
1131
1157
  }
1132
1158
 
1133
1159
  protected override onUpdateRequest(msg: Message): void {
@@ -1190,13 +1216,13 @@ export class SideTabBar extends ScrollableTabBar {
1190
1216
  paddingBottom: parseFloat(tabStyle.paddingBottom!)
1191
1217
  };
1192
1218
  // Extract label size from the DOM
1193
- const labelElements = hiddenTab.getElementsByClassName('p-TabBar-tabLabel');
1219
+ const labelElements = hiddenTab.getElementsByClassName('lm-TabBar-tabLabel');
1194
1220
  if (labelElements.length === 1) {
1195
1221
  const label = labelElements[0];
1196
1222
  rd.labelSize = { width: label.clientWidth, height: label.clientHeight };
1197
1223
  }
1198
1224
  // Extract icon size from the DOM
1199
- const iconElements = hiddenTab.getElementsByClassName('p-TabBar-tabIcon');
1225
+ const iconElements = hiddenTab.getElementsByClassName('lm-TabBar-tabIcon');
1200
1226
  if (iconElements.length === 1) {
1201
1227
  const icon = iconElements[0];
1202
1228
  rd.iconSize = { width: icon.clientWidth, height: icon.clientHeight };
@@ -1243,7 +1269,7 @@ export class SideTabBar extends ScrollableTabBar {
1243
1269
  */
1244
1270
  protected hideOverflowingTabs(): number {
1245
1271
  const availableHeight = this.node.clientHeight;
1246
- const invisibleClass = 'p-mod-invisible';
1272
+ const invisibleClass = 'lm-mod-invisible';
1247
1273
  let startIndex = -1;
1248
1274
  const n = this.contentNode.children.length;
1249
1275
  for (let i = 0; i < n; i++) {
@@ -1306,27 +1332,36 @@ export class SideTabBar extends ScrollableTabBar {
1306
1332
  */
1307
1333
  override handleEvent(event: Event): void {
1308
1334
  switch (event.type) {
1309
- case 'mousedown':
1310
- this.onMouseDown(event as MouseEvent);
1311
- super.handleEvent(event);
1335
+ case 'pointerdown':
1336
+ if (!isContextMenuEvent(event as PointerEvent)) {
1337
+ this.onMouseDown(event as PointerEvent);
1338
+ super.handleEvent(event);
1339
+ }
1312
1340
  break;
1313
- case 'mouseup':
1314
- super.handleEvent(event);
1315
- this.onMouseUp(event as MouseEvent);
1341
+ case 'pointerup':
1342
+ if (!isContextMenuEvent(event as PointerEvent)) {
1343
+ super.handleEvent(event);
1344
+ this.onMouseUp(event as PointerEvent);
1345
+ }
1316
1346
  break;
1317
1347
  case 'mousemove':
1318
- this.onMouseMove(event as MouseEvent);
1319
- super.handleEvent(event);
1348
+ if (!isContextMenuEvent(event as PointerEvent)) {
1349
+ this.onMouseMove(event as PointerEvent);
1350
+ super.handleEvent(event);
1351
+ }
1320
1352
  break;
1321
- case 'p-dragenter':
1322
- this.onDragEnter(event as IDragEvent);
1353
+ case 'lm-dragenter':
1354
+ this.onDragEnter(event as Drag.Event);
1323
1355
  break;
1324
- case 'p-dragover':
1325
- this.onDragOver(event as IDragEvent);
1356
+ case 'lm-dragover':
1357
+ this.onDragOver(event as Drag.Event);
1326
1358
  break;
1327
- case 'p-dragleave': case 'p-drop':
1359
+ case 'lm-dragleave': case 'lm-drop':
1328
1360
  this.cancelViewContainerDND();
1329
1361
  break;
1362
+ case 'contextmenu':
1363
+ // Let the event bubble up instead of quashing it in the superclass
1364
+ break;
1330
1365
  default:
1331
1366
  super.handleEvent(event);
1332
1367
  }
@@ -1400,9 +1435,9 @@ export class SideTabBar extends ScrollableTabBar {
1400
1435
  /**
1401
1436
  * Handles `viewContainerPart` drag enter.
1402
1437
  */
1403
- protected onDragEnter = (event: IDragEvent) => {
1438
+ protected onDragEnter = (event: Drag.Event) => {
1404
1439
  this.cancelViewContainerDND();
1405
- if (event.mimeData.getData('application/vnd.phosphor.view-container-factory')) {
1440
+ if (event.mimeData.getData('application/vnd.lumino.view-container-factory')) {
1406
1441
  event.preventDefault();
1407
1442
  event.stopPropagation();
1408
1443
  }
@@ -1412,8 +1447,8 @@ export class SideTabBar extends ScrollableTabBar {
1412
1447
  * Handle `viewContainerPart` drag over,
1413
1448
  * Defines the appropriate `dropAction` and opens the tab on which the mouse stands on for more than 800 ms.
1414
1449
  */
1415
- protected onDragOver = (event: IDragEvent) => {
1416
- const factory = event.mimeData.getData('application/vnd.phosphor.view-container-factory');
1450
+ protected onDragOver = (event: Drag.Event) => {
1451
+ const factory = event.mimeData.getData('application/vnd.lumino.view-container-factory');
1417
1452
  const widget = factory && factory();
1418
1453
  if (!widget) {
1419
1454
  event.dropAction = 'none';
@@ -14,9 +14,9 @@
14
14
  // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
15
  // *****************************************************************************
16
16
 
17
- import { find, toArray } from '@phosphor/algorithm';
18
- import { TabBar, Widget, DockPanel, Title, DockLayout } from '@phosphor/widgets';
19
- import { Signal } from '@phosphor/signaling';
17
+ import { find, toArray } from '@lumino/algorithm';
18
+ import { TabBar, Widget, DockPanel, Title, DockLayout } from '@lumino/widgets';
19
+ import { Signal } from '@lumino/signaling';
20
20
  import { Disposable, DisposableCollection } from '../../common/disposable';
21
21
  import { UnsafeWidgetUtilities } from '../widgets';
22
22
  import { CorePreferences } from '../core-preferences';
@@ -17,8 +17,8 @@
17
17
  import { injectable, inject } from 'inversify';
18
18
  import { Emitter, Event } from '../../common/event';
19
19
  import { ApplicationShell } from './application-shell';
20
- import { toArray } from '@phosphor/algorithm';
21
- import { TabBar, Widget } from '@phosphor/widgets';
20
+ import { toArray } from '@lumino/algorithm';
21
+ import { TabBar, Widget } from '@lumino/widgets';
22
22
 
23
23
  @injectable()
24
24
  export class ViewColumnService {
@@ -15,7 +15,7 @@
15
15
  // *****************************************************************************
16
16
 
17
17
  import { injectable, inject, interfaces, optional, unmanaged } from 'inversify';
18
- import { Widget } from '@phosphor/widgets';
18
+ import { Widget } from '@lumino/widgets';
19
19
  import {
20
20
  MenuModelRegistry, Command, CommandContribution,
21
21
  MenuContribution, CommandRegistry, nls
@@ -49,9 +49,10 @@ export class SourceTree extends TreeImpl {
49
49
  const existing = this.getNode(id);
50
50
  const updated = existing && <TreeElementNode>Object.assign(existing, { element, parent });
51
51
  if (CompositeTreeElement.hasElements(element)) {
52
+ const expand = element.expandByDefault ? element.expandByDefault() : false;
52
53
  if (updated) {
53
54
  if (!ExpandableTreeNode.is(updated)) {
54
- Object.assign(updated, { expanded: false });
55
+ Object.assign(updated, { expanded: expand });
55
56
  }
56
57
  if (!CompositeTreeNode.is(updated)) {
57
58
  Object.assign(updated, { children: [] });
@@ -64,7 +65,7 @@ export class SourceTree extends TreeImpl {
64
65
  id,
65
66
  name,
66
67
  selected: false,
67
- expanded: false,
68
+ expanded: expand,
68
69
  children: []
69
70
  } as TreeElementNode;
70
71
  }
@@ -34,6 +34,7 @@ export interface CompositeTreeElement extends TreeElement {
34
34
  /** default: true */
35
35
  readonly hasElements?: boolean
36
36
  getElements(): MaybePromise<IterableIterator<TreeElement>>
37
+ expandByDefault?(): boolean
37
38
  }
38
39
  export namespace CompositeTreeElement {
39
40
  export function is(element: unknown): element is CompositeTreeElement {
@@ -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
- .p-Widget.dialogOverlay {
17
+ .lm-Widget.dialogOverlay {
18
18
  z-index: 5000;
19
19
  display: flex;
20
20
  flex-direction: column;
@@ -29,7 +29,7 @@
29
29
  font-size: var(--theia-ui-font-size1);
30
30
  padding: 2px;
31
31
  }
32
- .p-Widget.dialogOverlay .dialogBlock {
32
+ .lm-Widget.dialogOverlay .dialogBlock {
33
33
  display: flex;
34
34
  flex-direction: column;
35
35
  min-width: 400px;
@@ -40,7 +40,7 @@
40
40
  overflow: hidden;
41
41
  box-shadow: 0 0px 8px var(--theia-widget-shadow);
42
42
  }
43
- .p-Widget.dialogOverlay .dialogTitle {
43
+ .lm-Widget.dialogOverlay .dialogTitle {
44
44
  display: flex;
45
45
  flex-direction: row;
46
46
  flex-wrap: nowrap;
@@ -54,11 +54,11 @@
54
54
  min-height: 24px;
55
55
  }
56
56
 
57
- .p-Widget.dialogOverlay .dialogTitle i.closeButton {
57
+ .lm-Widget.dialogOverlay .dialogTitle i.closeButton {
58
58
  cursor: pointer;
59
59
  }
60
60
 
61
- .p-Widget.dialogOverlay .dialogContent {
61
+ .lm-Widget.dialogOverlay .dialogContent {
62
62
  display: flex;
63
63
  flex-direction: column;
64
64
  align-items: stretch;
@@ -69,7 +69,7 @@
69
69
  overflow-y: auto;
70
70
  }
71
71
 
72
- .p-Widget.dialogOverlay .dialogControl {
72
+ .lm-Widget.dialogOverlay .dialogControl {
73
73
  padding: calc(var(--theia-ui-padding) * 2);
74
74
  display: flex;
75
75
  flex-direction: row;
@@ -79,24 +79,24 @@
79
79
  min-height: 21px;
80
80
  }
81
81
 
82
- .p-Widget.dialogOverlay.hidden {
82
+ .lm-Widget.dialogOverlay.hidden {
83
83
  display: none;
84
84
  }
85
- .p-Widget.dialogOverlay.dialogErrorMessage {
85
+ .lm-Widget.dialogOverlay.dialogErrorMessage {
86
86
  display: none;
87
87
  }
88
- .p-Widget.dialogOverlay .error {
88
+ .lm-Widget.dialogOverlay .error {
89
89
  color: var(--theia-inputValidation-errorForeground);
90
90
  }
91
- .p-Widget.dialogOverlay .error.main {
91
+ .lm-Widget.dialogOverlay .error.main {
92
92
  color: var(--theia-inputValidation-errorForeground);
93
93
  border-color: var(--theia-inputValidation-errorBorder);
94
94
  }
95
- .p-Widget.dialogOverlay .error > .theia-button.main {
95
+ .lm-Widget.dialogOverlay .error > .theia-button.main {
96
96
  background-color: var(--theia-inputValidation-errorBackground);
97
97
  color: var(--theia-inputValidation-errorForeground);
98
98
  }
99
- .p-Widget.dialogOverlay .error > .dialogErrorMessage {
99
+ .lm-Widget.dialogOverlay .error > .dialogErrorMessage {
100
100
  margin-top: calc(var(--theia-ui-padding) * 3);
101
101
  font-size: var(--theia-ui-font-size1);
102
102
  display: block;
@@ -15,57 +15,57 @@
15
15
  ********************************************************************************/
16
16
 
17
17
  /*
18
- * phosphor.js sets the z-index of its panels to 0, which causes overlay issues
18
+ * Lumino sets the z-index of its panels to 0, which causes overlay issues
19
19
  * See also https://github.com/eclipse-theia/theia/issues/14290
20
20
  */
21
- .p-SplitPanel-child,
22
- .p-DockPanel,
23
- .p-DockPanel-widget {
21
+ .lm-SplitPanel-child,
22
+ .lm-DockPanel,
23
+ .lm-DockPanel-widget {
24
24
  z-index: initial;
25
25
  }
26
26
 
27
- .p-DockPanel.p-SplitPanel-child {
27
+ .lm-DockPanel.lm-SplitPanel-child {
28
28
  padding: 0px;
29
29
  }
30
30
 
31
- .p-DockPanel-widget {
31
+ .lm-DockPanel-widget {
32
32
  min-width: 100px;
33
33
  min-height: 100px;
34
34
  }
35
35
 
36
- .p-DockPanel-handle[data-orientation="vertical"] {
36
+ .lm-DockPanel-handle[data-orientation="vertical"] {
37
37
  min-height: var(--theia-border-width);
38
38
  z-index: 3;
39
39
  }
40
40
 
41
- .p-DockPanel-handle[data-orientation="horizontal"] {
41
+ .lm-DockPanel-handle[data-orientation="horizontal"] {
42
42
  min-width: var(--theia-border-width);
43
43
  }
44
44
 
45
- .p-DockPanel-handle[data-orientation="horizontal"]::after {
45
+ .lm-DockPanel-handle[data-orientation="horizontal"]::after {
46
46
  min-width: var(--theia-sash-width);
47
47
  transform: translateX(0%);
48
48
  left: calc(-1 * var(--theia-sash-width) / 2);
49
49
  }
50
50
 
51
- .p-DockPanel-handle[data-orientation="vertical"]::after {
51
+ .lm-DockPanel-handle[data-orientation="vertical"]::after {
52
52
  min-height: var(--theia-sash-width);
53
53
  width: 100%;
54
54
  transform: translateY(0%);
55
55
  top: calc(-1 * var(--theia-sash-width) / 2);
56
56
  }
57
57
 
58
- .p-DockPanel-handle:hover::after {
58
+ .lm-DockPanel-handle:hover::after {
59
59
  background-color: var(--theia-sash-hoverBorder);
60
60
  transition-delay: var(--theia-sash-hoverDelay);
61
61
  }
62
62
 
63
- .p-DockPanel-handle:active::after {
63
+ .lm-DockPanel-handle:active::after {
64
64
  background-color: var(--theia-sash-activeBorder);
65
65
  transition-delay: 0s !important;
66
66
  }
67
67
 
68
- .p-DockPanel-overlay {
68
+ .lm-DockPanel-overlay {
69
69
  background: var(--theia-editorGroup-dropBackground);
70
70
  border: var(--theia-border-width) dashed var(--theia-contrastActiveBorder);
71
71
  transition-property: top, left, right, bottom;
@@ -73,14 +73,14 @@
73
73
  transition-timing-function: ease;
74
74
  }
75
75
 
76
- .p-DockPanel-overlay.p-mod-root-top,
77
- .p-DockPanel-overlay.p-mod-root-left,
78
- .p-DockPanel-overlay.p-mod-root-right,
79
- .p-DockPanel-overlay.p-mod-root-bottom,
80
- .p-DockPanel-overlay.p-mod-root-center {
76
+ .lm-DockPanel-overlay.lm-mod-root-top,
77
+ .lm-DockPanel-overlay.lm-mod-root-left,
78
+ .lm-DockPanel-overlay.lm-mod-root-right,
79
+ .lm-DockPanel-overlay.lm-mod-root-bottom,
80
+ .lm-DockPanel-overlay.lm-mod-root-center {
81
81
  border-width: 2px;
82
82
  }
83
83
 
84
- .p-DockPanel-overlay.p-mod-root-bottom {
84
+ .lm-DockPanel-overlay.lm-mod-root-bottom {
85
85
  background: var(--theia-panel-dropBackground);
86
86
  }
@@ -29,6 +29,7 @@
29
29
  border: 1px solid var(--theia-editorHoverWidget-border);
30
30
  padding: var(--theia-ui-padding);
31
31
  max-width: var(--theia-hover-max-width);
32
+ z-index: 1000;
32
33
  }
33
34
 
34
35
  .theia-hover .hover-row:not(:first-child):not(:empty) {
@@ -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 url("~@phosphor/widgets/style/index.css");
17
+ @import url("~@lumino/widgets/style/index.css");
18
18
  @import url("~font-awesome/css/font-awesome.min.css");
19
19
 
20
20
  /*-----------------------------------------------------------------------------
@@ -219,11 +219,11 @@ blockquote {
219
219
  font-weight: 700;
220
220
  }
221
221
 
222
- .p-Widget {
222
+ .lm-Widget {
223
223
  font-size: var(--theia-ui-font-size1);
224
224
  }
225
225
 
226
- .p-Widget.p-mod-hidden {
226
+ .lm-Widget.lm-mod-hidden {
227
227
  display: none !important;
228
228
  }
229
229