@theia/core 1.39.0 → 1.40.1

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 (68) hide show
  1. package/README.md +6 -6
  2. package/i18n/nls.cs.json +10 -1
  3. package/i18n/nls.de.json +10 -1
  4. package/i18n/nls.es.json +10 -1
  5. package/i18n/nls.fr.json +10 -1
  6. package/i18n/nls.hu.json +10 -1
  7. package/i18n/nls.it.json +10 -1
  8. package/i18n/nls.ja.json +10 -1
  9. package/i18n/nls.json +10 -1
  10. package/i18n/nls.pl.json +10 -1
  11. package/i18n/nls.pt-br.json +10 -1
  12. package/i18n/nls.pt-pt.json +10 -1
  13. package/i18n/nls.ru.json +10 -1
  14. package/i18n/nls.zh-cn.json +10 -1
  15. package/lib/browser/core-preferences.d.ts +1 -1
  16. package/lib/browser/core-preferences.d.ts.map +1 -1
  17. package/lib/browser/core-preferences.js +9 -3
  18. package/lib/browser/core-preferences.js.map +1 -1
  19. package/lib/browser/dialogs.d.ts.map +1 -1
  20. package/lib/browser/dialogs.js +4 -1
  21. package/lib/browser/dialogs.js.map +1 -1
  22. package/lib/browser/hover-service.d.ts +5 -0
  23. package/lib/browser/hover-service.d.ts.map +1 -1
  24. package/lib/browser/hover-service.js +11 -0
  25. package/lib/browser/hover-service.js.map +1 -1
  26. package/lib/browser/keybinding.d.ts +1 -0
  27. package/lib/browser/keybinding.d.ts.map +1 -1
  28. package/lib/browser/keybinding.js +13 -8
  29. package/lib/browser/keybinding.js.map +1 -1
  30. package/lib/browser/shell/application-shell.d.ts.map +1 -1
  31. package/lib/browser/shell/application-shell.js +4 -0
  32. package/lib/browser/shell/application-shell.js.map +1 -1
  33. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.d.ts +5 -0
  34. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.d.ts.map +1 -1
  35. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js +42 -1
  36. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js.map +1 -1
  37. package/lib/browser/shell/tab-bars.d.ts +1 -0
  38. package/lib/browser/shell/tab-bars.d.ts.map +1 -1
  39. package/lib/browser/shell/tab-bars.js +57 -4
  40. package/lib/browser/shell/tab-bars.js.map +1 -1
  41. package/lib/browser/view-container.d.ts +1 -0
  42. package/lib/browser/view-container.d.ts.map +1 -1
  43. package/lib/browser/view-container.js +14 -0
  44. package/lib/browser/view-container.js.map +1 -1
  45. package/lib/browser/widgets/previewable-widget.d.ts +9 -0
  46. package/lib/browser/widgets/previewable-widget.d.ts.map +1 -0
  47. package/lib/browser/widgets/previewable-widget.js +31 -0
  48. package/lib/browser/widgets/previewable-widget.js.map +1 -0
  49. package/lib/browser/widgets/widget.d.ts +3 -1
  50. package/lib/browser/widgets/widget.d.ts.map +1 -1
  51. package/lib/browser/widgets/widget.js +3 -0
  52. package/lib/browser/widgets/widget.js.map +1 -1
  53. package/package.json +6 -6
  54. package/src/browser/core-preferences.ts +10 -4
  55. package/src/browser/dialogs.ts +3 -1
  56. package/src/browser/hover-service.ts +18 -0
  57. package/src/browser/keybinding.ts +14 -9
  58. package/src/browser/shell/application-shell.ts +4 -0
  59. package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar.tsx +38 -2
  60. package/src/browser/shell/tab-bars.ts +58 -2
  61. package/src/browser/style/hover-service.css +2 -0
  62. package/src/browser/style/menus.css +6 -2
  63. package/src/browser/style/tabs.css +225 -119
  64. package/src/browser/style/view-container.css +4 -0
  65. package/src/browser/view-container.ts +12 -0
  66. package/src/browser/widgets/previewable-widget.ts +31 -0
  67. package/src/browser/widgets/widget.ts +6 -1
  68. package/src/common/i18n/nls.metadata.json +7069 -6671
@@ -9,7 +9,10 @@
9
9
  --theia-private-horizontal-tab-scrollbar-height: 5px;
10
10
  --theia-tabbar-toolbar-z-index: 1001;
11
11
  --theia-toolbar-active-transform-scale: 1.272019649;
12
- --theia-horizontal-toolbar-height: calc(var(--theia-private-horizontal-tab-height) + var(--theia-private-horizontal-tab-scrollbar-rail-height) / 2);
12
+ --theia-horizontal-toolbar-height: calc(
13
+ var(--theia-private-horizontal-tab-height) +
14
+ var(--theia-private-horizontal-tab-scrollbar-rail-height) / 2
15
+ );
13
16
  --theia-dragover-tab-border-width: 2px;
14
17
  }
15
18
 
@@ -21,7 +24,7 @@
21
24
  font-size: var(--theia-ui-font-size1);
22
25
  }
23
26
 
24
- .p-TabBar[data-orientation='horizontal'] {
27
+ .p-TabBar[data-orientation="horizontal"] {
25
28
  min-height: var(--theia-horizontal-toolbar-height);
26
29
  }
27
30
 
@@ -29,7 +32,7 @@
29
32
  cursor: pointer;
30
33
  }
31
34
 
32
- .p-TabBar[data-orientation='horizontal'] .p-TabBar-tab {
35
+ .p-TabBar[data-orientation="horizontal"] .p-TabBar-tab {
33
36
  flex: none;
34
37
  height: var(--theia-horizontal-toolbar-height);
35
38
  min-width: 35px;
@@ -39,62 +42,63 @@
39
42
  overflow: hidden;
40
43
  }
41
44
 
42
- .p-TabBar[data-orientation='vertical'] .p-TabBar-tab {
45
+ .p-TabBar[data-orientation="vertical"] .p-TabBar-tab {
43
46
  border-top: var(--theia-dragover-tab-border-width) solid transparent !important;
44
47
  border-bottom: var(--theia-dragover-tab-border-width) solid transparent !important;
45
48
  }
46
49
 
47
- .p-TabBar[data-orientation='vertical'] .p-TabBar-tab.drop-target-top {
50
+ .p-TabBar[data-orientation="vertical"] .p-TabBar-tab.drop-target-top {
48
51
  border-top-color: var(--theia-activityBar-activeBorder) !important;
49
52
  }
50
53
 
51
- .p-TabBar[data-orientation='vertical'] .p-TabBar-tab.drop-target-bottom {
54
+ .p-TabBar[data-orientation="vertical"] .p-TabBar-tab.drop-target-bottom {
52
55
  border-bottom-color: var(--theia-activityBar-activeBorder) !important;
53
56
  }
54
57
 
55
- .p-TabBar[data-orientation='horizontal'] .p-TabBar-tab .theia-tab-icon-label,
56
- .p-TabBar-tab.p-mod-drag-image .theia-tab-icon-label {
57
- display: flex;
58
- line-height: var(--theia-content-line-height);
59
- align-items: center;
58
+ .p-TabBar[data-orientation="horizontal"] .p-TabBar-tab .theia-tab-icon-label,
59
+ .p-TabBar-tab.p-mod-drag-image .theia-tab-icon-label {
60
+ display: flex;
61
+ line-height: var(--theia-content-line-height);
62
+ align-items: center;
60
63
  }
61
64
 
62
-
63
65
  /*-----------------------------------------------------------------------------
64
66
  | Tabs in the center area (main and bottom)
65
67
  |----------------------------------------------------------------------------*/
66
68
 
67
69
  #theia-main-content-panel,
68
70
  #theia-main-content-panel .p-Widget.p-DockPanel-widget {
69
- background: var(--theia-editor-background);
71
+ background: var(--theia-editor-background);
70
72
  }
71
73
 
72
- #theia-main-content-panel .p-DockPanel-handle[data-orientation='horizontal'] {
73
- border-left: var(--theia-border-width) solid var(--theia-editorGroup-border);
74
+ #theia-main-content-panel .p-DockPanel-handle[data-orientation="horizontal"] {
75
+ border-left: var(--theia-border-width) solid var(--theia-editorGroup-border);
74
76
  }
75
77
 
76
- #theia-main-content-panel .p-DockPanel-handle[data-orientation='vertical'] + .p-TabBar {
77
- border-top: var(--theia-border-width) solid var(--theia-editorGroup-border);
78
+ #theia-main-content-panel
79
+ .p-DockPanel-handle[data-orientation="vertical"]
80
+ + .p-TabBar {
81
+ border-top: var(--theia-border-width) solid var(--theia-editorGroup-border);
78
82
  }
79
83
 
80
84
  #theia-main-content-panel .p-TabBar .p-TabBar-tab {
81
- border-right: 1px solid var(--theia-tab-border);
82
- border-top: 1px solid transparent;
83
- border-bottom: 1px solid transparent;
84
- background: var(--theia-tab-inactiveBackground);
85
- color: var(--theia-tab-inactiveForeground);
85
+ border-right: 1px solid var(--theia-tab-border);
86
+ border-top: 1px solid transparent;
87
+ border-bottom: 1px solid transparent;
88
+ background: var(--theia-tab-inactiveBackground);
89
+ color: var(--theia-tab-inactiveForeground);
86
90
  }
87
91
 
88
92
  #theia-main-content-panel .p-TabBar:not(.theia-tabBar-active) .p-TabBar-tab {
89
- color: var(--theia-tab-unfocusedInactiveForeground);
93
+ color: var(--theia-tab-unfocusedInactiveForeground);
90
94
  }
91
95
 
92
96
  .p-TabBar.theia-app-centers {
93
- background: var(--theia-editorGroupHeader-tabsBackground);
97
+ background: var(--theia-editorGroupHeader-tabsBackground);
94
98
  }
95
99
 
96
100
  .p-TabBar.theia-app-centers::after {
97
- content: '';
101
+ content: "";
98
102
  position: absolute;
99
103
  bottom: 0;
100
104
  left: 0;
@@ -132,7 +136,12 @@
132
136
 
133
137
  -webkit-appearance: none;
134
138
  -moz-appearance: none;
135
- background-image: linear-gradient(45deg, transparent 50%, var(--theia-icon-foreground) 50%), linear-gradient(135deg, var(--theia-icon-foreground) 50%, transparent 50%);
139
+ background-image: linear-gradient(
140
+ 45deg,
141
+ transparent 50%,
142
+ var(--theia-icon-foreground) 50%
143
+ ),
144
+ linear-gradient(135deg, var(--theia-icon-foreground) 50%, transparent 50%);
136
145
  background-position: calc(100% - 6px) 8px, calc(100% - 2px) 8px, 100% 0;
137
146
  background-size: 4px 5px;
138
147
  background-repeat: no-repeat;
@@ -141,66 +150,70 @@
141
150
 
142
151
  .p-TabBar .p-TabBar-tabIcon,
143
152
  .p-TabBar-tab.p-mod-drag-image .p-TabBar-tabIcon {
144
- width: 15px;
145
- line-height: 1.7;
146
- font-size: 12px;
147
- text-align: center;
148
- background-repeat: no-repeat;
153
+ width: 15px;
154
+ line-height: 1.7;
155
+ font-size: 12px;
156
+ text-align: center;
157
+ background-repeat: no-repeat;
149
158
  }
150
159
 
151
160
  /* common icons */
152
161
  .p-TabBar.theia-app-centers .p-TabBar-tabIcon,
153
162
  .p-TabBar-tab.p-mod-drag-image .p-TabBar-tabIcon {
154
- min-height: 14px;
155
- background-size: 13px;
156
- background-position-y: 3px;
157
- background: var(--theia-icon-foreground);
158
- -webkit-mask-repeat: no-repeat;
159
- -webkit-mask-size: auto 13px;
160
- mask-repeat: no-repeat;
161
- mask-size: auto 13px;
162
- padding-right: 8px;
163
+ min-height: 14px;
164
+ background-size: 13px;
165
+ background-position-y: 3px;
166
+ background: var(--theia-icon-foreground);
167
+ -webkit-mask-repeat: no-repeat;
168
+ -webkit-mask-size: auto 13px;
169
+ mask-repeat: no-repeat;
170
+ mask-size: auto 13px;
171
+ padding-right: 8px;
163
172
  }
164
173
 
165
174
  /* codicons */
166
175
  .p-TabBar.theia-app-centers .p-TabBar-tabIcon.codicon,
167
176
  .p-TabBar-tab.p-mod-drag-image .p-TabBar-tabIcon.codicon {
168
- background: none;
177
+ background: none;
169
178
  }
170
179
 
171
180
  .p-TabBar-tabLock:after {
172
- content: "\ebe7";
173
- opacity: 0.75;
174
- margin-left: 4px;
175
- color: inherit;
176
- font-family: codicon;
177
- font-size: 16px;
178
- font-weight: normal;
179
- display: inline-block;
180
- vertical-align: top;
181
+ content: "\ebe7";
182
+ opacity: 0.75;
183
+ margin-left: 4px;
184
+ color: inherit;
185
+ font-family: codicon;
186
+ font-size: 16px;
187
+ font-weight: normal;
188
+ display: inline-block;
189
+ vertical-align: top;
181
190
  }
182
191
 
183
192
  /* file icons */
184
- .p-TabBar[data-orientation='horizontal'] .p-TabBar-tabIcon.file-icon,
193
+ .p-TabBar[data-orientation="horizontal"] .p-TabBar-tabIcon.file-icon,
185
194
  .p-TabBar-tab.p-mod-drag-image .p-TabBar-tabIcon.file-icon {
186
- background: none;
187
- padding-bottom: 0px;
188
- min-height: 20px;
195
+ background: none;
196
+ padding-bottom: 0px;
197
+ min-height: 20px;
189
198
  }
190
199
 
191
- .p-TabBar[data-orientation='horizontal'] .p-TabBar-tabIcon.fa,
200
+ .p-TabBar[data-orientation="horizontal"] .p-TabBar-tabIcon.fa,
192
201
  .p-TabBar-tab.p-mod-drag-image .p-TabBar-tabIcon.fa {
193
- background: none;
194
- min-height: 0;
195
- height: inherit;
202
+ background: none;
203
+ min-height: 0;
204
+ height: inherit;
196
205
  }
197
206
 
198
- .p-TabBar[data-orientation='vertical'] .p-TabBar-tab.p-mod-invisible {
199
- visibility: hidden;
207
+ .p-TabBar[data-orientation="vertical"] .p-TabBar-tab.p-mod-invisible {
208
+ visibility: hidden;
200
209
  }
201
210
 
202
- .p-TabBar.theia-app-centers .p-TabBar-tab.p-mod-closable > .p-TabBar-tabCloseIcon,
203
- .p-TabBar.theia-app-centers .p-TabBar-tab.theia-mod-pinned > .p-TabBar-tabCloseIcon {
211
+ .p-TabBar.theia-app-centers
212
+ .p-TabBar-tab.p-mod-closable
213
+ > .p-TabBar-tabCloseIcon,
214
+ .p-TabBar.theia-app-centers
215
+ .p-TabBar-tab.theia-mod-pinned
216
+ > .p-TabBar-tabCloseIcon {
204
217
  padding: 2px;
205
218
  margin-top: 2px;
206
219
  margin-left: 4px;
@@ -218,19 +231,31 @@
218
231
  -ms-user-select: none;
219
232
  }
220
233
 
221
- .p-TabBar.theia-app-centers.dynamic-tabs .p-TabBar-tab.p-mod-closable > .p-TabBar-tabCloseIcon,
222
- .p-TabBar.theia-app-centers.dynamic-tabs .p-TabBar-tab.theia-mod-pinned > .p-TabBar-tabCloseIcon {
234
+ .p-TabBar.theia-app-centers.dynamic-tabs
235
+ .p-TabBar-tab.p-mod-closable
236
+ > .p-TabBar-tabCloseIcon,
237
+ .p-TabBar.theia-app-centers.dynamic-tabs
238
+ .p-TabBar-tab.theia-mod-pinned
239
+ > .p-TabBar-tabCloseIcon {
223
240
  /* hide close icon for dynamic tabs strategy*/
224
241
  display: none;
225
242
  }
226
243
 
227
- .p-TabBar.theia-app-centers .p-TabBar-tab.p-mod-current > .p-TabBar-tabCloseIcon,
228
- .p-TabBar.theia-app-centers .p-TabBar-tab:hover.p-mod-closable > .p-TabBar-tabCloseIcon,
229
- .p-TabBar.theia-app-centers .p-TabBar-tab:hover.theia-mod-pinned > .p-TabBar-tabCloseIcon {
244
+ .p-TabBar.theia-app-centers
245
+ .p-TabBar-tab.p-mod-current
246
+ > .p-TabBar-tabCloseIcon,
247
+ .p-TabBar.theia-app-centers
248
+ .p-TabBar-tab:hover.p-mod-closable
249
+ > .p-TabBar-tabCloseIcon,
250
+ .p-TabBar.theia-app-centers
251
+ .p-TabBar-tab:hover.theia-mod-pinned
252
+ > .p-TabBar-tabCloseIcon {
230
253
  display: inline-block;
231
254
  }
232
255
 
233
- .p-TabBar.theia-app-centers .p-TabBar-tab:hover.p-mod-closable > .p-TabBar-tabCloseIcon {
256
+ .p-TabBar.theia-app-centers
257
+ .p-TabBar-tab:hover.p-mod-closable
258
+ > .p-TabBar-tabCloseIcon {
234
259
  border-radius: 5px;
235
260
  background-color: rgba(50%, 50%, 50%, 0.2);
236
261
  }
@@ -240,21 +265,33 @@
240
265
  padding-right: 4px;
241
266
  }
242
267
 
243
- .p-TabBar.theia-app-centers .p-TabBar-tab.p-mod-closable:not(.theia-mod-dirty):hover > .p-TabBar-tabCloseIcon:before,
244
- .p-TabBar.theia-app-centers .p-TabBar-tab.p-mod-closable:not(.theia-mod-dirty).p-TabBar-tab.p-mod-current > .p-TabBar-tabCloseIcon:before,
245
- .p-TabBar.theia-app-centers .p-TabBar-tab.p-mod-closable.theia-mod-dirty > .p-TabBar-tabCloseIcon:hover:before {
268
+ .p-TabBar.theia-app-centers
269
+ .p-TabBar-tab.p-mod-closable:not(.theia-mod-dirty):hover
270
+ > .p-TabBar-tabCloseIcon:before,
271
+ .p-TabBar.theia-app-centers
272
+ .p-TabBar-tab.p-mod-closable:not(.theia-mod-dirty).p-TabBar-tab.p-mod-current
273
+ > .p-TabBar-tabCloseIcon:before,
274
+ .p-TabBar.theia-app-centers
275
+ .p-TabBar-tab.p-mod-closable.theia-mod-dirty
276
+ > .p-TabBar-tabCloseIcon:hover:before {
246
277
  content: "\ea76";
247
278
  }
248
279
 
249
- .p-TabBar.theia-app-centers .p-TabBar-tab.p-mod-closable.theia-mod-dirty > .p-TabBar-tabCloseIcon:before {
280
+ .p-TabBar.theia-app-centers
281
+ .p-TabBar-tab.p-mod-closable.theia-mod-dirty
282
+ > .p-TabBar-tabCloseIcon:before {
250
283
  content: "\ea71";
251
284
  }
252
285
 
253
- .p-TabBar.theia-app-centers .p-TabBar-tab.theia-mod-pinned > .p-TabBar-tabCloseIcon:before {
286
+ .p-TabBar.theia-app-centers
287
+ .p-TabBar-tab.theia-mod-pinned
288
+ > .p-TabBar-tabCloseIcon:before {
254
289
  content: "\eba0";
255
290
  }
256
291
 
257
- .p-TabBar.theia-app-centers .p-TabBar-tab.theia-mod-pinned.theia-mod-dirty > .p-TabBar-tabCloseIcon:before {
292
+ .p-TabBar.theia-app-centers
293
+ .p-TabBar-tab.theia-mod-pinned.theia-mod-dirty
294
+ > .p-TabBar-tabCloseIcon:before {
258
295
  content: "\ebb2";
259
296
  }
260
297
 
@@ -270,8 +307,8 @@
270
307
  font-weight: 600;
271
308
  height: var(--theia-notification-count-height);
272
309
  width: var(--theia-notification-count-width);
273
- padding: calc(var(--theia-ui-padding)/6);
274
- line-height: calc(var(--theia-content-line-height) * 0.70);
310
+ padding: calc(var(--theia-ui-padding) / 6);
311
+ line-height: calc(var(--theia-content-line-height) * 0.7);
275
312
  position: absolute;
276
313
  top: calc(var(--theia-ui-padding) * 4);
277
314
  right: calc(var(--theia-ui-padding) * 1.33);
@@ -279,7 +316,7 @@
279
316
  }
280
317
 
281
318
  .p-TabBar .theia-badge-decorator-horizontal {
282
- background-color:var(--theia-badge-background);
319
+ background-color: var(--theia-badge-background);
283
320
  border-radius: 20px;
284
321
  box-sizing: border-box;
285
322
  color: var(--theia-activityBarBadge-foreground);
@@ -287,7 +324,7 @@
287
324
  font-weight: 400;
288
325
  height: var(--theia-notification-count-height);
289
326
  width: var(--theia-notification-count-width);
290
- padding: calc(var(--theia-ui-padding)/6);
327
+ padding: calc(var(--theia-ui-padding) / 6);
291
328
  line-height: calc(var(--theia-content-line-height) * 0.61);
292
329
  margin-left: var(--theia-ui-padding);
293
330
  text-align: center;
@@ -297,38 +334,75 @@
297
334
  | Perfect scrollbar
298
335
  |----------------------------------------------------------------------------*/
299
336
 
300
- .p-TabBar[data-orientation='horizontal'] .p-TabBar-content-container > .ps__rail-x {
337
+ .p-TabBar[data-orientation="horizontal"]
338
+ .p-TabBar-content-container
339
+ > .ps__rail-x {
301
340
  height: var(--theia-private-horizontal-tab-scrollbar-rail-height);
302
341
  z-index: 1000;
303
342
  }
304
343
 
305
- .p-TabBar[data-orientation='horizontal'] .p-TabBar-content-container > .ps__rail-x > .ps__thumb-x {
344
+ .p-TabBar[data-orientation="horizontal"]
345
+ .p-TabBar-content-container
346
+ > .ps__rail-x
347
+ > .ps__thumb-x {
306
348
  height: var(--theia-private-horizontal-tab-scrollbar-height) !important;
307
- bottom: calc((var(--theia-private-horizontal-tab-scrollbar-rail-height) - var(--theia-private-horizontal-tab-scrollbar-height)) / 2);
308
- }
309
-
310
- .p-TabBar[data-orientation='horizontal'] .p-TabBar-content-container > .ps__rail-x:hover,
311
- .p-TabBar[data-orientation='horizontal'] .p-TabBar-content-container > .ps__rail-x:focus {
349
+ bottom: calc(
350
+ (
351
+ var(--theia-private-horizontal-tab-scrollbar-rail-height) -
352
+ var(--theia-private-horizontal-tab-scrollbar-height)
353
+ ) / 2
354
+ );
355
+ }
356
+
357
+ .p-TabBar[data-orientation="horizontal"]
358
+ .p-TabBar-content-container
359
+ > .ps__rail-x:hover,
360
+ .p-TabBar[data-orientation="horizontal"]
361
+ .p-TabBar-content-container
362
+ > .ps__rail-x:focus {
312
363
  height: var(--theia-private-horizontal-tab-scrollbar-rail-height) !important;
313
364
  }
314
365
 
315
- .p-TabBar[data-orientation='horizontal'] .p-TabBar-content-container > .ps__rail-x:hover > .ps__thumb-x,
316
- .p-TabBar[data-orientation='horizontal'] .p-TabBar-content-container > .ps__rail-x:focus > .ps__thumb-x {
317
- height: calc(var(--theia-private-horizontal-tab-scrollbar-height) / 2) !important;
318
- bottom: calc((var(--theia-private-horizontal-tab-scrollbar-rail-height) - var(--theia-private-horizontal-tab-scrollbar-height)) / 2);
319
- }
320
-
321
- .p-TabBar[data-orientation='vertical'] .p-TabBar-content-container > .ps__rail-y {
366
+ .p-TabBar[data-orientation="horizontal"]
367
+ .p-TabBar-content-container
368
+ > .ps__rail-x:hover
369
+ > .ps__thumb-x,
370
+ .p-TabBar[data-orientation="horizontal"]
371
+ .p-TabBar-content-container
372
+ > .ps__rail-x:focus
373
+ > .ps__thumb-x {
374
+ height: calc(
375
+ var(--theia-private-horizontal-tab-scrollbar-height) / 2
376
+ ) !important;
377
+ bottom: calc(
378
+ (
379
+ var(--theia-private-horizontal-tab-scrollbar-rail-height) -
380
+ var(--theia-private-horizontal-tab-scrollbar-height)
381
+ ) / 2
382
+ );
383
+ }
384
+
385
+ .p-TabBar[data-orientation="vertical"]
386
+ .p-TabBar-content-container
387
+ > .ps__rail-y {
322
388
  width: var(--theia-private-horizontal-tab-scrollbar-rail-height);
323
389
  z-index: 1000;
324
390
  }
325
391
 
326
- .p-TabBar[data-orientation='vertical'] .p-TabBar-content-container > .ps__rail-y > .ps__thumb-y {
392
+ .p-TabBar[data-orientation="vertical"]
393
+ .p-TabBar-content-container
394
+ > .ps__rail-y
395
+ > .ps__thumb-y {
327
396
  width: var(--theia-private-horizontal-tab-scrollbar-height) !important;
328
- right: calc((var(--theia-private-horizontal-tab-scrollbar-rail-height) - var(--theia-private-horizontal-tab-scrollbar-height)) / 2);
397
+ right: calc(
398
+ (
399
+ var(--theia-private-horizontal-tab-scrollbar-rail-height) -
400
+ var(--theia-private-horizontal-tab-scrollbar-height)
401
+ ) / 2
402
+ );
329
403
  }
330
404
 
331
- .p-TabBar[data-orientation='vertical'] .p-TabBar-content-container {
405
+ .p-TabBar[data-orientation="vertical"] .p-TabBar-content-container {
332
406
  display: block;
333
407
  }
334
408
 
@@ -356,7 +430,9 @@
356
430
  |----------------------------------------------------------------------------*/
357
431
 
358
432
  .p-TabBar-toolbar {
359
- z-index: var(--theia-tabbar-toolbar-z-index); /* Due to the scrollbar (`z-index: 1000;`) it has a greater `z-index`. */
433
+ z-index: var(
434
+ --theia-tabbar-toolbar-z-index
435
+ ); /* Due to the scrollbar (`z-index: 1000;`) it has a greater `z-index`. */
360
436
  display: flex;
361
437
  flex-direction: row-reverse;
362
438
  padding: 4px;
@@ -379,8 +455,8 @@
379
455
  }
380
456
 
381
457
  .p-TabBar-toolbar .item.enabled {
382
- opacity: 1.0;
383
- cursor: pointer;
458
+ opacity: 1;
459
+ cursor: pointer;
384
460
  }
385
461
 
386
462
  .p-TabBar-toolbar :not(.item.enabled) .action-label {
@@ -389,15 +465,15 @@
389
465
  }
390
466
 
391
467
  .p-TabBar-toolbar .item.toggled {
392
- border: var(--theia-border-width) var(--theia-inputOption-activeBorder) solid;
393
- background-color: var(--theia-inputOption-activeBackground);
468
+ border: var(--theia-border-width) var(--theia-inputOption-activeBorder) solid;
469
+ background-color: var(--theia-inputOption-activeBackground);
394
470
  }
395
471
 
396
472
  .p-TabBar-toolbar .item > div {
397
- height: 18px;
398
- width: 18px;
399
- background-repeat: no-repeat;
400
- line-height: 18px;
473
+ height: 18px;
474
+ width: 18px;
475
+ background-repeat: no-repeat;
476
+ line-height: 18px;
401
477
  }
402
478
 
403
479
  .p-TabBar-toolbar .item .collapse-all {
@@ -420,7 +496,9 @@
420
496
  background: var(--theia-icon-close) no-repeat;
421
497
  }
422
498
 
423
- #theia-main-content-panel .p-TabBar:not(.theia-tabBar-active) .p-TabBar-toolbar {
499
+ #theia-main-content-panel
500
+ .p-TabBar:not(.theia-tabBar-active)
501
+ .p-TabBar-toolbar {
424
502
  display: none;
425
503
  }
426
504
 
@@ -428,40 +506,50 @@
428
506
  min-width: 100%;
429
507
  }
430
508
 
431
- .p-TabBar.theia-tabBar-multirow[data-orientation='horizontal'] {
432
- min-height: calc(var(--theia-breadcrumbs-height) + var(--theia-horizontal-toolbar-height));
509
+ .p-TabBar.theia-tabBar-multirow[data-orientation="horizontal"] {
510
+ min-height: calc(
511
+ var(--theia-breadcrumbs-height) + var(--theia-horizontal-toolbar-height)
512
+ );
433
513
  flex-direction: column;
434
514
  }
435
515
 
436
- .p-TabBar[data-orientation='horizontal'] .theia-tabBar-tab-row {
516
+ .p-TabBar[data-orientation="horizontal"] .theia-tabBar-tab-row {
437
517
  display: flex;
438
518
  flex-flow: row nowrap;
439
519
  min-width: 100%;
440
520
  }
441
521
 
442
- .p-TabBar[data-orientation='vertical'] .theia-tabBar-tab-row {
522
+ .p-TabBar[data-orientation="vertical"] .theia-tabBar-tab-row {
443
523
  display: flex;
444
524
  flex-flow: column nowrap;
445
525
  height: 100%;
446
526
  }
447
527
 
448
- .p-TabBar[data-orientation='horizontal'] .p-TabBar-content {
528
+ .p-TabBar[data-orientation="horizontal"] .p-TabBar-content {
449
529
  flex-direction: row;
450
530
  }
451
531
 
452
- .p-TabBar[data-orientation='vertical'] .p-TabBar-content {
532
+ .p-TabBar[data-orientation="vertical"] .p-TabBar-content {
453
533
  flex-direction: column;
454
534
  }
455
535
 
456
- .p-TabBar.theia-app-centers[data-orientation='horizontal'].dynamic-tabs .p-TabBar-tabLabel {
536
+ .p-TabBar.theia-app-centers[data-orientation="horizontal"].dynamic-tabs
537
+ .p-TabBar-tabLabel {
457
538
  /* fade out text with dynamic tabs strategy */
458
- mask-image: linear-gradient(to left, rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 1) 15px);
459
- -webkit-mask-image: linear-gradient(to left, rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 1) 15px);
539
+ mask-image: linear-gradient(
540
+ to left,
541
+ rgba(0, 0, 0, 0.3),
542
+ rgba(0, 0, 0, 1) 15px
543
+ );
544
+ -webkit-mask-image: linear-gradient(
545
+ to left,
546
+ rgba(0, 0, 0, 0.3),
547
+ rgba(0, 0, 0, 1) 15px
548
+ );
460
549
  flex: 1;
461
550
  }
462
551
 
463
-
464
- .p-TabBar[data-orientation='horizontal'] .p-TabBar-tab .theia-tab-icon-label {
552
+ .p-TabBar[data-orientation="horizontal"] .p-TabBar-tab .theia-tab-icon-label {
465
553
  flex: 1;
466
554
  overflow: hidden;
467
555
  }
@@ -470,14 +558,30 @@
470
558
  margin: 0px 4px;
471
559
  }
472
560
 
561
+ .enhanced-preview-container {
562
+ margin: 4px 4px;
563
+ pointer-events: none;
564
+ background: var(--theia-editor-background);
565
+ position: relative;
566
+ overflow: hidden;
567
+ }
568
+
569
+ .enhanced-preview {
570
+ transform-origin: top left;
571
+ }
572
+
473
573
  .theia-horizontal-tabBar-hover-title {
474
574
  font-weight: bolder;
575
+ max-width: var(--theia-hover-preview-width);
576
+ word-wrap: break-word;
475
577
  font-size: medium;
476
578
  margin: 0px 0px;
477
579
  }
478
580
 
479
581
  .theia-horizontal-tabBar-hover-caption {
480
582
  font-size: small;
583
+ max-width: var(--theia-hover-preview-width);
584
+ word-wrap: break-word;
481
585
  margin: 0px 0px;
482
586
  margin-top: 4px;
483
587
  }
@@ -485,11 +589,13 @@
485
589
  /*-----------------------------------------------------------------------------
486
590
  | Open tabs dropdown
487
591
  |----------------------------------------------------------------------------*/
488
- .theia-tabBar-open-tabs>.theia-select-component .theia-select-component-label {
592
+ .theia-tabBar-open-tabs
593
+ > .theia-select-component
594
+ .theia-select-component-label {
489
595
  display: none;
490
596
  }
491
597
 
492
- .theia-tabBar-open-tabs>.theia-select-component {
598
+ .theia-tabBar-open-tabs > .theia-select-component {
493
599
  min-width: auto;
494
600
  height: 100%;
495
601
  }
@@ -501,5 +607,5 @@
501
607
  }
502
608
 
503
609
  .theia-tabBar-open-tabs.p-mod-hidden {
504
- display: none
610
+ display: none;
505
611
  }
@@ -188,3 +188,7 @@
188
188
  .theia-view-container-part-title {
189
189
  display: flex;
190
190
  }
191
+
192
+ .no-pointer-events {
193
+ pointer-events: none;
194
+ }
@@ -1234,7 +1234,19 @@ export class ViewContainerPart extends BaseWidget {
1234
1234
  };
1235
1235
  }
1236
1236
 
1237
+ protected handleResize(): void {
1238
+ const handleMouseEnter = () => {
1239
+ this.node?.classList.add('no-pointer-events');
1240
+ setTimeout(() => {
1241
+ this.node?.classList.remove('no-pointer-events');
1242
+ this.node?.removeEventListener('mouseenter', handleMouseEnter);
1243
+ }, 100);
1244
+ };
1245
+ this.node?.addEventListener('mouseenter', handleMouseEnter);
1246
+ }
1247
+
1237
1248
  protected override onResize(msg: Widget.ResizeMessage): void {
1249
+ this.handleResize();
1238
1250
  if (this.wrapped.isAttached && !this.collapsed) {
1239
1251
  MessageLoop.sendMessage(this.wrapped, Widget.ResizeMessage.UnknownSize);
1240
1252
  }
@@ -0,0 +1,31 @@
1
+ // *****************************************************************************
2
+ // Copyright (C) 2023 STMicroelectronics and others.
3
+ //
4
+ // This program and the accompanying materials are made available under the
5
+ // terms of the Eclipse Public License v. 2.0 which is available at
6
+ // http://www.eclipse.org/legal/epl-2.0.
7
+ //
8
+ // This Source Code may also be made available under the following Secondary
9
+ // Licenses when the conditions for such availability set forth in the Eclipse
10
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ // with the GNU Classpath Exception which is available at
12
+ // https://www.gnu.org/software/classpath/license.html.
13
+ //
14
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
+ // *****************************************************************************
16
+
17
+ import { isFunction, isObject } from '../../common';
18
+
19
+ export interface PreviewableWidget {
20
+ loaded?: boolean;
21
+ getPreviewNode(): Node | undefined;
22
+ }
23
+
24
+ export namespace PreviewableWidget {
25
+ export function is(arg: unknown): arg is PreviewableWidget {
26
+ return isObject<PreviewableWidget>(arg) && isFunction(arg.getPreviewNode);
27
+ }
28
+ export function isPreviewable(arg: unknown): arg is PreviewableWidget {
29
+ return isObject<PreviewableWidget>(arg) && isFunction(arg.getPreviewNode) && arg.loaded === true;
30
+ }
31
+ }