@theia/output 1.68.0-next.34 → 1.68.0-next.48

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.
@@ -2,21 +2,39 @@ import '../../src/browser/style/output.css';
2
2
  import { SelectionService } from '@theia/core/lib/common/selection-service';
3
3
  import { MonacoEditorProvider } from '@theia/monaco/lib/browser/monaco-editor-provider';
4
4
  import { DisposableCollection } from '@theia/core/lib/common/disposable';
5
- import { Message, BaseWidget, DockPanel, Widget, StatefulWidget } from '@theia/core/lib/browser';
5
+ import { Message, BaseWidget, DockPanel, Widget, StatefulWidget, StorageService } from '@theia/core/lib/browser';
6
6
  import { OutputChannelManager } from './output-channel';
7
7
  import { Emitter, Event } from '@theia/core';
8
8
  export declare class OutputWidget extends BaseWidget implements StatefulWidget {
9
9
  static readonly ID = "outputView";
10
10
  static readonly LABEL: string;
11
+ static readonly SELECTED_CHANNEL_STORAGE_KEY = "output-widget-selected-channel";
11
12
  protected readonly selectionService: SelectionService;
12
13
  protected readonly editorProvider: MonacoEditorProvider;
13
14
  protected readonly outputChannelManager: OutputChannelManager;
15
+ protected readonly storageService: StorageService;
14
16
  protected _state: OutputWidget.State;
15
17
  protected readonly editorContainer: DockPanel;
16
18
  protected readonly toDisposeOnSelectedChannelChanged: DisposableCollection;
17
19
  protected readonly onStateChangedEmitter: Emitter<OutputWidget.State>;
18
20
  constructor();
19
21
  protected init(): void;
22
+ /**
23
+ * Restore the selected channel from storage (used when widget is reopened).
24
+ * State restoration has higher priority, so this only applies if state restoration hasn't already
25
+ * set a selectedChannelName or pendingSelectedChannelName.
26
+ */
27
+ protected restoreSelectedChannelFromStorage(): Promise<void>;
28
+ dispose(): void;
29
+ /**
30
+ * Try to restore the pending channel if it matches the newly added channel.
31
+ */
32
+ protected tryRestorePendingChannel(addedChannelName: string): void;
33
+ /**
34
+ * Clear any pending channel restoration.
35
+ * Called when the user explicitly selects a channel, so we don't override their choice.
36
+ */
37
+ protected clearPendingChannelRestore(): void;
20
38
  storeState(): object;
21
39
  restoreState(oldState: object & Partial<OutputWidget.State>): void;
22
40
  protected get state(): OutputWidget.State;
@@ -44,6 +62,9 @@ export declare class OutputWidget extends BaseWidget implements StatefulWidget {
44
62
  export declare namespace OutputWidget {
45
63
  interface State {
46
64
  locked?: boolean;
65
+ selectedChannelName?: string;
66
+ /** Channel name waiting to be restored when it becomes available */
67
+ pendingSelectedChannelName?: string;
47
68
  }
48
69
  }
49
70
  //# sourceMappingURL=output-widget.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"output-widget.d.ts","sourceRoot":"","sources":["../../src/browser/output-widget.ts"],"names":[],"mappings":"AAgBA,OAAO,oCAAoC,CAAC;AAK5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AACxF,OAAO,EAAc,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACrF,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAe,cAAc,EAAW,MAAM,yBAAyB,CAAC;AAEvH,OAAO,EAAE,oBAAoB,EAAiB,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAa,MAAM,aAAa,CAAC;AAIxD,qBACa,YAAa,SAAQ,UAAW,YAAW,cAAc;IAElE,MAAM,CAAC,QAAQ,CAAC,EAAE,gBAAgB;IAClC,MAAM,CAAC,QAAQ,CAAC,KAAK,SAAmC;IAGxD,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAGtD,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,oBAAoB,CAAC;IAGxD,SAAS,CAAC,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;IAE9D,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,CAAqB;IACzD,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,SAAS,CAAC;IAC9C,SAAS,CAAC,QAAQ,CAAC,iCAAiC,uBAA8B;IAClF,SAAS,CAAC,QAAQ,CAAC,qBAAqB,8BAAqC;;IAiB7E,SAAS,CAAC,IAAI,IAAI,IAAI;IAatB,UAAU,IAAI,MAAM;IAIpB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI;IAQlE,SAAS,KAAK,KAAK,IAAI,YAAY,CAAC,KAAK,CAExC;IAED,SAAS,KAAK,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,EAG5C;cAEe,mBAAmB,CAAC,EAAE,aAAa,EAAE,GAAE;QAAE,aAAa,EAAE,OAAO,CAAA;KAA6B,GAAG,OAAO,CAAC,IAAI,CAAC;cA8BzG,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;cAMrC,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;cASzC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,aAAa,GAAG,IAAI;cAQ7C,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAKlD,IAAI,cAAc,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAE9C;IAED,KAAK,IAAI,IAAI;IAMb,SAAS,IAAI,IAAI;IAYjB,IAAI,IAAI,IAAI;IAIZ,MAAM,IAAI,IAAI;IAId,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,SAAS,CAAC,cAAc,IAAI,IAAI;IAehC,OAAO,KAAK,eAAe,GAE1B;YAEa,kBAAkB;IAShC,OAAO,KAAK,YAAY,GAOvB;IAED,OAAO,KAAK,MAAM,GAEjB;IAED,OAAO,IAAI,MAAM,GAAG,SAAS;CAIhC;AAED,yBAAiB,YAAY,CAAC;IAC1B,UAAiB,KAAK;QAClB,MAAM,CAAC,EAAE,OAAO,CAAC;KACpB;CACJ"}
1
+ {"version":3,"file":"output-widget.d.ts","sourceRoot":"","sources":["../../src/browser/output-widget.ts"],"names":[],"mappings":"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"}
@@ -20,7 +20,6 @@ exports.OutputWidget = void 0;
20
20
  const tslib_1 = require("tslib");
21
21
  require("../../src/browser/style/output.css");
22
22
  const inversify_1 = require("@theia/core/shared/inversify");
23
- const algorithm_1 = require("@theia/core/shared/@lumino/algorithm");
24
23
  const browser_1 = require("@theia/editor/lib/browser");
25
24
  const monaco_editor_1 = require("@theia/monaco/lib/browser/monaco-editor");
26
25
  const selection_service_1 = require("@theia/core/lib/common/selection-service");
@@ -36,6 +35,7 @@ let OutputWidget = class OutputWidget extends browser_2.BaseWidget {
36
35
  static { OutputWidget_1 = this; }
37
36
  static { this.ID = 'outputView'; }
38
37
  static { this.LABEL = nls_1.nls.localizeByDefault('Output'); }
38
+ static { this.SELECTED_CHANNEL_STORAGE_KEY = 'output-widget-selected-channel'; }
39
39
  constructor() {
40
40
  super();
41
41
  this._state = { locked: false };
@@ -54,24 +54,108 @@ let OutputWidget = class OutputWidget extends browser_2.BaseWidget {
54
54
  }
55
55
  init() {
56
56
  this.toDispose.pushAll([
57
- this.outputChannelManager.onChannelAdded(() => this.refreshEditorWidget()),
57
+ this.outputChannelManager.onChannelAdded(({ name }) => {
58
+ this.tryRestorePendingChannel(name);
59
+ this.refreshEditorWidget();
60
+ }),
58
61
  this.outputChannelManager.onChannelDeleted(() => this.refreshEditorWidget()),
59
62
  this.outputChannelManager.onChannelWasHidden(() => this.refreshEditorWidget()),
60
- this.outputChannelManager.onChannelWasShown(({ preserveFocus }) => this.refreshEditorWidget({ preserveFocus: !!preserveFocus })),
63
+ this.outputChannelManager.onChannelWasShown(({ preserveFocus }) => {
64
+ // User explicitly showed a channel, clear any pending restoration
65
+ // so we don't override their choice when the pending channel is registered later
66
+ this.clearPendingChannelRestore();
67
+ this.refreshEditorWidget({ preserveFocus: !!preserveFocus });
68
+ }),
69
+ this.outputChannelManager.onSelectedChannelChanged(() => this.refreshEditorWidget()),
61
70
  this.toDisposeOnSelectedChannelChanged,
62
71
  this.onStateChangedEmitter,
63
72
  this.onStateChanged(() => this.update())
64
73
  ]);
74
+ this.restoreSelectedChannelFromStorage();
65
75
  this.refreshEditorWidget();
66
76
  }
77
+ /**
78
+ * Restore the selected channel from storage (used when widget is reopened).
79
+ * State restoration has higher priority, so this only applies if state restoration hasn't already
80
+ * set a selectedChannelName or pendingSelectedChannelName.
81
+ */
82
+ async restoreSelectedChannelFromStorage() {
83
+ const storedChannelName = await this.storageService.getData(OutputWidget_1.SELECTED_CHANNEL_STORAGE_KEY);
84
+ // Only apply storage restoration if state restoration hasn't provided a channel
85
+ if (storedChannelName && !this._state.selectedChannelName && !this._state.pendingSelectedChannelName) {
86
+ const channel = this.outputChannelManager.getVisibleChannels().find(ch => ch.name === storedChannelName);
87
+ if (channel) {
88
+ this.outputChannelManager.selectedChannel = channel;
89
+ this.refreshEditorWidget();
90
+ }
91
+ else {
92
+ // Channel not yet available, store as pending
93
+ this._state = { ...this._state, pendingSelectedChannelName: storedChannelName };
94
+ }
95
+ }
96
+ }
97
+ dispose() {
98
+ // Save the selected channel to storage before disposing
99
+ const channelName = this.selectedChannel?.name;
100
+ if (channelName) {
101
+ this.storageService.setData(OutputWidget_1.SELECTED_CHANNEL_STORAGE_KEY, channelName);
102
+ }
103
+ super.dispose();
104
+ }
105
+ /**
106
+ * Try to restore the pending channel if it matches the newly added channel.
107
+ */
108
+ tryRestorePendingChannel(addedChannelName) {
109
+ const pendingName = this._state.pendingSelectedChannelName;
110
+ if (pendingName && pendingName === addedChannelName) {
111
+ const channel = this.outputChannelManager.getVisibleChannels().find(ch => ch.name === pendingName);
112
+ if (channel) {
113
+ this.outputChannelManager.selectedChannel = channel;
114
+ this.clearPendingChannelRestore();
115
+ }
116
+ }
117
+ }
118
+ /**
119
+ * Clear any pending channel restoration.
120
+ * Called when the user explicitly selects a channel, so we don't override their choice.
121
+ */
122
+ clearPendingChannelRestore() {
123
+ if (this._state.pendingSelectedChannelName) {
124
+ this._state = { ...this._state, pendingSelectedChannelName: undefined };
125
+ }
126
+ }
67
127
  storeState() {
68
- return this.state;
128
+ const { locked, selectedChannelName } = this.state;
129
+ const result = { locked };
130
+ // Store the selected channel name, preferring the actual current selection
131
+ // over any pending restoration that hasn't completed yet
132
+ if (this.selectedChannel) {
133
+ result.selectedChannelName = this.selectedChannel.name;
134
+ }
135
+ else if (selectedChannelName) {
136
+ result.selectedChannelName = selectedChannelName;
137
+ }
138
+ return result;
69
139
  }
70
140
  restoreState(oldState) {
71
141
  const copy = (0, core_1.deepClone)(this.state);
72
142
  if (oldState.locked) {
73
143
  copy.locked = oldState.locked;
74
144
  }
145
+ if (oldState.selectedChannelName) {
146
+ copy.selectedChannelName = oldState.selectedChannelName;
147
+ // Try to restore the selected channel in the manager if it exists
148
+ const channels = this.outputChannelManager.getVisibleChannels();
149
+ const channel = channels.find(ch => ch.name === oldState.selectedChannelName);
150
+ if (channel) {
151
+ this.outputChannelManager.selectedChannel = channel;
152
+ }
153
+ else {
154
+ // Channel not yet available (e.g., registered by an extension that loads later).
155
+ // Store as pending and wait for it to be added.
156
+ copy.pendingSelectedChannelName = oldState.selectedChannelName;
157
+ }
158
+ }
75
159
  this.state = copy;
76
160
  }
77
161
  get state() {
@@ -127,7 +211,7 @@ let OutputWidget = class OutputWidget extends browser_2.BaseWidget {
127
211
  onResize(message) {
128
212
  super.onResize(message);
129
213
  browser_2.MessageLoop.sendMessage(this.editorContainer, browser_2.Widget.ResizeMessage.UnknownSize);
130
- for (const widget of (0, algorithm_1.toArray)(this.editorContainer.widgets())) {
214
+ for (const widget of this.editorContainer.widgets()) {
131
215
  browser_2.MessageLoop.sendMessage(widget, browser_2.Widget.ResizeMessage.UnknownSize);
132
216
  }
133
217
  }
@@ -189,7 +273,7 @@ let OutputWidget = class OutputWidget extends browser_2.BaseWidget {
189
273
  return new browser_1.EditorWidget(editor, this.selectionService);
190
274
  }
191
275
  get editorWidget() {
192
- for (const widget of (0, algorithm_1.toArray)(this.editorContainer.children())) {
276
+ for (const widget of this.editorContainer.children()) {
193
277
  if (widget instanceof browser_1.EditorWidget) {
194
278
  return widget;
195
279
  }
@@ -216,6 +300,10 @@ tslib_1.__decorate([
216
300
  (0, inversify_1.inject)(output_channel_1.OutputChannelManager),
217
301
  tslib_1.__metadata("design:type", output_channel_1.OutputChannelManager)
218
302
  ], OutputWidget.prototype, "outputChannelManager", void 0);
303
+ tslib_1.__decorate([
304
+ (0, inversify_1.inject)(browser_2.StorageService),
305
+ tslib_1.__metadata("design:type", Object)
306
+ ], OutputWidget.prototype, "storageService", void 0);
219
307
  tslib_1.__decorate([
220
308
  (0, inversify_1.postConstruct)(),
221
309
  tslib_1.__metadata("design:type", Function),
@@ -1 +1 @@
1
- {"version":3,"file":"output-widget.js","sourceRoot":"","sources":["../../src/browser/output-widget.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"output-widget.js","sourceRoot":"","sources":["../../src/browser/output-widget.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@theia/output",
3
- "version": "1.68.0-next.34+e43ded916",
3
+ "version": "1.68.0-next.48+c13611b3f",
4
4
  "description": "Theia - Output Extension",
5
5
  "dependencies": {
6
- "@theia/core": "1.68.0-next.34+e43ded916",
7
- "@theia/editor": "1.68.0-next.34+e43ded916",
8
- "@theia/monaco": "1.68.0-next.34+e43ded916",
6
+ "@theia/core": "1.68.0-next.48+c13611b3f",
7
+ "@theia/editor": "1.68.0-next.48+c13611b3f",
8
+ "@theia/monaco": "1.68.0-next.48+c13611b3f",
9
9
  "@theia/monaco-editor-core": "1.96.302",
10
10
  "p-queue": "^8.0.1",
11
11
  "tslib": "^2.6.2"
@@ -49,5 +49,5 @@
49
49
  "nyc": {
50
50
  "extends": "../../configs/nyc.json"
51
51
  },
52
- "gitHead": "e43ded916743be7826bc3acad9d66241c94a2c52"
52
+ "gitHead": "c13611b3f07bfc3d2c7525d8488283ff3e575422"
53
53
  }
@@ -16,13 +16,12 @@
16
16
 
17
17
  import '../../src/browser/style/output.css';
18
18
  import { inject, injectable, postConstruct } from '@theia/core/shared/inversify';
19
- import { toArray } from '@theia/core/shared/@lumino/algorithm';
20
19
  import { EditorWidget } from '@theia/editor/lib/browser';
21
20
  import { MonacoEditor } from '@theia/monaco/lib/browser/monaco-editor';
22
21
  import { SelectionService } from '@theia/core/lib/common/selection-service';
23
22
  import { MonacoEditorProvider } from '@theia/monaco/lib/browser/monaco-editor-provider';
24
23
  import { Disposable, DisposableCollection } from '@theia/core/lib/common/disposable';
25
- import { Message, BaseWidget, DockPanel, Widget, MessageLoop, StatefulWidget, codicon } from '@theia/core/lib/browser';
24
+ import { Message, BaseWidget, DockPanel, Widget, MessageLoop, StatefulWidget, codicon, StorageService } from '@theia/core/lib/browser';
26
25
  import { OutputUri } from '../common/output-uri';
27
26
  import { OutputChannelManager, OutputChannel } from './output-channel';
28
27
  import { Emitter, Event, deepClone } from '@theia/core';
@@ -34,6 +33,7 @@ export class OutputWidget extends BaseWidget implements StatefulWidget {
34
33
 
35
34
  static readonly ID = 'outputView';
36
35
  static readonly LABEL = nls.localizeByDefault('Output');
36
+ static readonly SELECTED_CHANNEL_STORAGE_KEY = 'output-widget-selected-channel';
37
37
 
38
38
  @inject(SelectionService)
39
39
  protected readonly selectionService: SelectionService;
@@ -44,6 +44,9 @@ export class OutputWidget extends BaseWidget implements StatefulWidget {
44
44
  @inject(OutputChannelManager)
45
45
  protected readonly outputChannelManager: OutputChannelManager;
46
46
 
47
+ @inject(StorageService)
48
+ protected readonly storageService: StorageService;
49
+
47
50
  protected _state: OutputWidget.State = { locked: false };
48
51
  protected readonly editorContainer: DockPanel;
49
52
  protected readonly toDisposeOnSelectedChannelChanged = new DisposableCollection();
@@ -66,19 +69,91 @@ export class OutputWidget extends BaseWidget implements StatefulWidget {
66
69
  @postConstruct()
67
70
  protected init(): void {
68
71
  this.toDispose.pushAll([
69
- this.outputChannelManager.onChannelAdded(() => this.refreshEditorWidget()),
72
+ this.outputChannelManager.onChannelAdded(({ name }) => {
73
+ this.tryRestorePendingChannel(name);
74
+ this.refreshEditorWidget();
75
+ }),
70
76
  this.outputChannelManager.onChannelDeleted(() => this.refreshEditorWidget()),
71
77
  this.outputChannelManager.onChannelWasHidden(() => this.refreshEditorWidget()),
72
- this.outputChannelManager.onChannelWasShown(({ preserveFocus }) => this.refreshEditorWidget({ preserveFocus: !!preserveFocus })),
78
+ this.outputChannelManager.onChannelWasShown(({ preserveFocus }) => {
79
+ // User explicitly showed a channel, clear any pending restoration
80
+ // so we don't override their choice when the pending channel is registered later
81
+ this.clearPendingChannelRestore();
82
+ this.refreshEditorWidget({ preserveFocus: !!preserveFocus });
83
+ }),
84
+ this.outputChannelManager.onSelectedChannelChanged(() => this.refreshEditorWidget()),
73
85
  this.toDisposeOnSelectedChannelChanged,
74
86
  this.onStateChangedEmitter,
75
87
  this.onStateChanged(() => this.update())
76
88
  ]);
89
+ this.restoreSelectedChannelFromStorage();
77
90
  this.refreshEditorWidget();
78
91
  }
79
92
 
93
+ /**
94
+ * Restore the selected channel from storage (used when widget is reopened).
95
+ * State restoration has higher priority, so this only applies if state restoration hasn't already
96
+ * set a selectedChannelName or pendingSelectedChannelName.
97
+ */
98
+ protected async restoreSelectedChannelFromStorage(): Promise<void> {
99
+ const storedChannelName = await this.storageService.getData<string>(OutputWidget.SELECTED_CHANNEL_STORAGE_KEY);
100
+ // Only apply storage restoration if state restoration hasn't provided a channel
101
+ if (storedChannelName && !this._state.selectedChannelName && !this._state.pendingSelectedChannelName) {
102
+ const channel = this.outputChannelManager.getVisibleChannels().find(ch => ch.name === storedChannelName);
103
+ if (channel) {
104
+ this.outputChannelManager.selectedChannel = channel;
105
+ this.refreshEditorWidget();
106
+ } else {
107
+ // Channel not yet available, store as pending
108
+ this._state = { ...this._state, pendingSelectedChannelName: storedChannelName };
109
+ }
110
+ }
111
+ }
112
+
113
+ override dispose(): void {
114
+ // Save the selected channel to storage before disposing
115
+ const channelName = this.selectedChannel?.name;
116
+ if (channelName) {
117
+ this.storageService.setData(OutputWidget.SELECTED_CHANNEL_STORAGE_KEY, channelName);
118
+ }
119
+ super.dispose();
120
+ }
121
+
122
+ /**
123
+ * Try to restore the pending channel if it matches the newly added channel.
124
+ */
125
+ protected tryRestorePendingChannel(addedChannelName: string): void {
126
+ const pendingName = this._state.pendingSelectedChannelName;
127
+ if (pendingName && pendingName === addedChannelName) {
128
+ const channel = this.outputChannelManager.getVisibleChannels().find(ch => ch.name === pendingName);
129
+ if (channel) {
130
+ this.outputChannelManager.selectedChannel = channel;
131
+ this.clearPendingChannelRestore();
132
+ }
133
+ }
134
+ }
135
+
136
+ /**
137
+ * Clear any pending channel restoration.
138
+ * Called when the user explicitly selects a channel, so we don't override their choice.
139
+ */
140
+ protected clearPendingChannelRestore(): void {
141
+ if (this._state.pendingSelectedChannelName) {
142
+ this._state = { ...this._state, pendingSelectedChannelName: undefined };
143
+ }
144
+ }
145
+
80
146
  storeState(): object {
81
- return this.state;
147
+ const { locked, selectedChannelName } = this.state;
148
+ const result: OutputWidget.State = { locked };
149
+ // Store the selected channel name, preferring the actual current selection
150
+ // over any pending restoration that hasn't completed yet
151
+ if (this.selectedChannel) {
152
+ result.selectedChannelName = this.selectedChannel.name;
153
+ } else if (selectedChannelName) {
154
+ result.selectedChannelName = selectedChannelName;
155
+ }
156
+ return result;
82
157
  }
83
158
 
84
159
  restoreState(oldState: object & Partial<OutputWidget.State>): void {
@@ -86,6 +161,19 @@ export class OutputWidget extends BaseWidget implements StatefulWidget {
86
161
  if (oldState.locked) {
87
162
  copy.locked = oldState.locked;
88
163
  }
164
+ if (oldState.selectedChannelName) {
165
+ copy.selectedChannelName = oldState.selectedChannelName;
166
+ // Try to restore the selected channel in the manager if it exists
167
+ const channels = this.outputChannelManager.getVisibleChannels();
168
+ const channel = channels.find(ch => ch.name === oldState.selectedChannelName);
169
+ if (channel) {
170
+ this.outputChannelManager.selectedChannel = channel;
171
+ } else {
172
+ // Channel not yet available (e.g., registered by an extension that loads later).
173
+ // Store as pending and wait for it to be added.
174
+ copy.pendingSelectedChannelName = oldState.selectedChannelName;
175
+ }
176
+ }
89
177
  this.state = copy;
90
178
  }
91
179
 
@@ -146,7 +234,7 @@ export class OutputWidget extends BaseWidget implements StatefulWidget {
146
234
  protected override onResize(message: Widget.ResizeMessage): void {
147
235
  super.onResize(message);
148
236
  MessageLoop.sendMessage(this.editorContainer, Widget.ResizeMessage.UnknownSize);
149
- for (const widget of toArray(this.editorContainer.widgets())) {
237
+ for (const widget of this.editorContainer.widgets()) {
150
238
  MessageLoop.sendMessage(widget, Widget.ResizeMessage.UnknownSize);
151
239
  }
152
240
  }
@@ -219,7 +307,7 @@ export class OutputWidget extends BaseWidget implements StatefulWidget {
219
307
  }
220
308
 
221
309
  private get editorWidget(): EditorWidget | undefined {
222
- for (const widget of toArray(this.editorContainer.children())) {
310
+ for (const widget of this.editorContainer.children()) {
223
311
  if (widget instanceof EditorWidget) {
224
312
  return widget;
225
313
  }
@@ -240,6 +328,9 @@ export class OutputWidget extends BaseWidget implements StatefulWidget {
240
328
  export namespace OutputWidget {
241
329
  export interface State {
242
330
  locked?: boolean;
331
+ selectedChannelName?: string;
332
+ /** Channel name waiting to be restored when it becomes available */
333
+ pendingSelectedChannelName?: string;
243
334
  }
244
335
  }
245
336