@pstdio/workbench 0.1.0

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.
@@ -0,0 +1,2264 @@
1
+ import { g as C, n as w, o as D, p as x, c as oe, d as ae, b as ie, a as ce } from "./context-key-service-C--cHa0B.js";
2
+ import { f as W, e as N, m as O, c as j, h as _, i as M, j as B, k as J, n as de, o as q, p as le, q as ue, g as $, r as ge } from "./surface-reconcile-DkRf01ro.js";
3
+ import { b as K } from "./workbench-menu-paths-CQVH6z4_.js";
4
+ const me = () => {
5
+ const e = C({
6
+ name: "workbench.breadcrumbs",
7
+ initialState: {
8
+ items: void 0
9
+ }
10
+ });
11
+ return {
12
+ store: e,
13
+ setItems(t) {
14
+ return e.setState({
15
+ items: t
16
+ }, !1, "setBreadcrumbItems"), w(() => {
17
+ e.getState().items === t && e.setState({
18
+ items: void 0
19
+ }, !1, "clearBreadcrumbItems");
20
+ });
21
+ },
22
+ clearItems() {
23
+ e.getState().items !== void 0 && e.setState({
24
+ items: void 0
25
+ }, !1, "clearBreadcrumbItems");
26
+ },
27
+ getItems() {
28
+ return e.getState().items;
29
+ },
30
+ onDidChange(t) {
31
+ const a = e.subscribeSelector((o) => o.items, () => t());
32
+ return w(a);
33
+ }
34
+ };
35
+ }, fe = (e = {}) => {
36
+ const t = C({
37
+ name: "workbench.commandPalette",
38
+ initialState: {
39
+ open: e.initialOpen ?? !1,
40
+ view: "main",
41
+ initialQuery: "",
42
+ paramsRequest: null
43
+ }
44
+ }), a = (o) => {
45
+ const c = t.getState();
46
+ c.open === o.open && c.view === o.view && c.initialQuery === o.initialQuery || t.setState({
47
+ ...c,
48
+ ...o
49
+ }, !1, "setCommandPaletteState");
50
+ };
51
+ return {
52
+ store: t,
53
+ isOpen() {
54
+ return t.getState().open;
55
+ },
56
+ getView() {
57
+ return t.getState().view;
58
+ },
59
+ getInitialQuery() {
60
+ return t.getState().initialQuery;
61
+ },
62
+ getParamsRequest() {
63
+ return t.getState().paramsRequest;
64
+ },
65
+ open(o = {}) {
66
+ a({
67
+ open: !0,
68
+ view: o.view ?? "main",
69
+ initialQuery: o.initialQuery ?? ""
70
+ });
71
+ },
72
+ close() {
73
+ a({
74
+ open: !1,
75
+ view: "main",
76
+ initialQuery: ""
77
+ });
78
+ },
79
+ toggle() {
80
+ a({
81
+ open: !t.getState().open,
82
+ view: "main",
83
+ initialQuery: ""
84
+ });
85
+ },
86
+ requestParams(o) {
87
+ t.setState({
88
+ ...t.getState(),
89
+ paramsRequest: o
90
+ }, !1, "requestCommandParams");
91
+ },
92
+ clearParams() {
93
+ t.getState().paramsRequest && t.setState({
94
+ ...t.getState(),
95
+ paramsRequest: null
96
+ }, !1, "clearCommandParams");
97
+ },
98
+ onDidChange(o) {
99
+ const c = t.subscribeSelector((r) => r.open, (r) => o(r));
100
+ return w(c);
101
+ }
102
+ };
103
+ }, he = ["activityBar", "sideBar", "main", "panel", "statusBar"], ye = {
104
+ activityBar: "activityBarFocus",
105
+ sideBar: "sideBarFocus",
106
+ main: "mainFocus",
107
+ panel: "panelFocus",
108
+ statusBar: "statusBarFocus"
109
+ }, Se = (e) => {
110
+ const t = C({
111
+ name: "workbench.focus",
112
+ initialState: {
113
+ activeArea: void 0
114
+ }
115
+ }), a = e.context.createScope("workbench.focus"), o = (c) => {
116
+ a.set("workbenchFocus", c !== void 0), a.set("activeWorkbenchFocusArea", c);
117
+ for (const r of he)
118
+ a.set(ye[r], r === c);
119
+ };
120
+ return o(void 0), {
121
+ store: t,
122
+ setActiveArea(c) {
123
+ t.getState().activeArea !== c && (t.setState({
124
+ activeArea: c
125
+ }, !1, "setActiveWorkbenchFocusArea"), o(c));
126
+ },
127
+ clearFocus() {
128
+ t.getState().activeArea !== void 0 && (t.setState({
129
+ activeArea: void 0
130
+ }, !1, "clearWorkbenchFocusArea"), o(void 0));
131
+ },
132
+ getActiveArea() {
133
+ return t.getState().activeArea;
134
+ },
135
+ onDidChange(c) {
136
+ const r = t.subscribeSelector((n) => n.activeArea, (n) => c(n));
137
+ return w(r);
138
+ }
139
+ };
140
+ }, pe = 50, V = 20, F = (e, t) => !e || !t || e.kind !== t.kind ? !1 : e.kind === "resource" ? e.resource?.uri === t.resource?.uri : e.kind === "mode" ? e.modeId === t.modeId : e.widgetId === t.widgetId, ve = (e) => W(e.getLayout().areas[N("primary")]), Z = (e) => {
141
+ const t = Date.now();
142
+ return {
143
+ entryId: `history-${t}-${e}`,
144
+ recordedAt: t
145
+ };
146
+ }, z = (e, t, a) => ({
147
+ ...Z(t),
148
+ kind: e.resource ? "resource" : "widget",
149
+ modeId: a,
150
+ resource: e.resource,
151
+ widgetId: e.resource ? void 0 : e.widgetId,
152
+ contributionId: e.resource ? void 0 : e.contributionId,
153
+ title: e.title
154
+ }), be = (e, t, a) => ({
155
+ ...Z(t),
156
+ kind: "mode",
157
+ modeId: a,
158
+ title: e?.label ?? a
159
+ }), we = (e) => {
160
+ const t = e.maxEntries ?? pe, a = C({
161
+ name: "workbench.history",
162
+ initialState: {
163
+ entries: [],
164
+ cursor: -1,
165
+ recentlyClosed: []
166
+ }
167
+ });
168
+ let o = 0, c = !1, r = !1, n = !1;
169
+ const l = /* @__PURE__ */ new Set(), y = (d) => {
170
+ const f = a.getState(), S = f.entries[f.cursor];
171
+ if (F(S, d)) return;
172
+ const v = f.entries.slice(0, f.cursor + 1), A = S?.kind === "mode" && d.kind !== "mode" && S.modeId === d.modeId ? [...v.slice(0, -1), d] : [...v, d], E = A.length - t, L = E > 0 ? A.slice(E) : A, T = L.length - 1;
173
+ a.setState({
174
+ ...f,
175
+ entries: L,
176
+ cursor: T
177
+ }, !1, "history.record");
178
+ }, m = (d) => {
179
+ d.pinned || (o += 1, y(z(d, o, e.modes?.getActiveModeId())));
180
+ }, g = () => {
181
+ if (c) return;
182
+ const d = e.modes?.getActiveModeId();
183
+ o += 1, y(be(d ? e.modes?.getMode(d) : void 0, o, d));
184
+ }, s = (d) => {
185
+ o += 1;
186
+ const f = z(d, o, e.modes?.getActiveModeId()), S = a.getState(), v = [...S.recentlyClosed.filter((A) => !F(A, f)), f], R = v.length > V ? v.slice(v.length - V) : v;
187
+ a.setState({
188
+ ...S,
189
+ recentlyClosed: R
190
+ }, !1, "history.recordClosed");
191
+ }, i = (d = e.layout.getLayout()) => {
192
+ const f = /* @__PURE__ */ new Map();
193
+ for (const S of Object.values(d.areas))
194
+ for (const v of S.widgets) f.set(v.widgetId, v);
195
+ return f;
196
+ };
197
+ let u = i();
198
+ const h = () => {
199
+ const d = e.layout.getLayout(), f = i(d);
200
+ for (const [v, R] of u)
201
+ !f.has(v) && R.closable && s(R);
202
+ if (u = f, c) {
203
+ r = !0;
204
+ return;
205
+ }
206
+ const S = ve(e.layout);
207
+ S && m(S);
208
+ };
209
+ e.layout.store.subscribeSelector((d) => d.layout, () => h()), e.modes?.onDidChangeActive(() => g()), e.resources.onDidOpenResource((d) => {
210
+ c || l.has(d.uri) || m({
211
+ widgetId: d.uri,
212
+ contributionId: d.uri,
213
+ title: d.label,
214
+ pinned: !1,
215
+ resource: d
216
+ });
217
+ });
218
+ const p = (d) => {
219
+ c = !0, r = !1, n = !1;
220
+ let f = !1;
221
+ try {
222
+ const S = d();
223
+ if (S && typeof S.finally == "function" && (!r || n)) {
224
+ f = !0, S.then(() => {
225
+ c = !1;
226
+ }, () => {
227
+ c = !1;
228
+ });
229
+ return;
230
+ }
231
+ } finally {
232
+ f || (c = !1);
233
+ }
234
+ }, b = (d) => {
235
+ e.modes && e.modes.getActiveModeId() !== d.modeId && (n = !0, e.modes.setActiveMode(d.modeId));
236
+ }, I = (d) => {
237
+ if (b(d), d.kind !== "mode") {
238
+ if (d.kind === "resource" && d.resource)
239
+ return l.add(d.resource.uri), e.resources.openResource(d.resource, {
240
+ replaceActive: !0
241
+ }).finally(() => {
242
+ d.resource && l.delete(d.resource.uri);
243
+ });
244
+ if (d.kind === "widget" && d.widgetId) {
245
+ const f = e.layout.getLayout();
246
+ return Object.values(f.areas).some((v) => v.widgets.some((R) => R.widgetId === d.widgetId)) ? e.layout.activateWidget(d.widgetId) : e.layout.openWidget(d.contributionId ?? d.widgetId);
247
+ }
248
+ }
249
+ }, P = (d) => {
250
+ const f = a.getState(), S = f.cursor + d, v = f.entries[S];
251
+ if (v)
252
+ return a.setState({
253
+ ...f,
254
+ cursor: S
255
+ }, !1, d < 0 ? "history.goBack" : "history.goForward"), p(() => I(v)), v;
256
+ };
257
+ return {
258
+ store: a,
259
+ goBack() {
260
+ return P(-1);
261
+ },
262
+ goForward() {
263
+ return P(1);
264
+ },
265
+ goPrevious() {
266
+ const d = a.getState(), f = d.entries[d.cursor];
267
+ for (let S = d.entries.length - 1; S >= 0; S -= 1) {
268
+ const v = d.entries[S];
269
+ if (!F(v, f))
270
+ return a.setState({
271
+ ...d,
272
+ cursor: S
273
+ }, !1, "history.goPrevious"), p(() => I(v)), v;
274
+ }
275
+ },
276
+ recentlyClosed() {
277
+ return a.getState().recentlyClosed;
278
+ },
279
+ reopenLastClosed() {
280
+ const d = a.getState(), f = d.recentlyClosed[d.recentlyClosed.length - 1];
281
+ if (f)
282
+ return a.setState({
283
+ ...d,
284
+ recentlyClosed: d.recentlyClosed.slice(0, -1)
285
+ }, !1, "history.reopenLastClosed"), p(() => I(f)), f;
286
+ },
287
+ clear() {
288
+ a.setState({
289
+ entries: [],
290
+ cursor: -1,
291
+ recentlyClosed: []
292
+ }, !1, "history.clear");
293
+ }
294
+ };
295
+ }, Ie = (e) => {
296
+ const t = () => e.persistence?.getLastResource();
297
+ return {
298
+ get: t,
299
+ set: (c) => e.persistence?.setLastResource(c),
300
+ restore: async () => {
301
+ const c = t();
302
+ if (!c) return !1;
303
+ try {
304
+ return await e.openResource(c), !0;
305
+ } catch {
306
+ return !1;
307
+ }
308
+ }
309
+ };
310
+ }, Re = (e = {}) => {
311
+ const t = e.persistence?.getPanelStates(), a = C({
312
+ name: "workbench.panels",
313
+ initialState: {
314
+ openByAreaId: t?.openByAreaId ?? {}
315
+ }
316
+ }), o = () => {
317
+ e.persistence && e.persistence.setPanelStates({
318
+ openByAreaId: a.getState().openByAreaId
319
+ });
320
+ }, c = (r) => a.getState().openByAreaId[r] ?? !0;
321
+ return {
322
+ store: a,
323
+ isOpen: c,
324
+ setOpen(r, n) {
325
+ const l = a.getState();
326
+ (l.openByAreaId[r] ?? !0) !== n && (a.setState({
327
+ openByAreaId: {
328
+ ...l.openByAreaId,
329
+ [r]: n
330
+ }
331
+ }, !1, "setPanelOpen"), o());
332
+ },
333
+ toggle(r) {
334
+ this.setOpen(r, !c(r));
335
+ },
336
+ onDidChange(r) {
337
+ const n = a.subscribe((l) => r(l));
338
+ return w(n);
339
+ }
340
+ };
341
+ }, Pe = (e = {}) => {
342
+ const t = C({
343
+ name: "workbench.sessionPanel",
344
+ initialState: {
345
+ mode: e.initialMode ?? "bubble"
346
+ }
347
+ });
348
+ return {
349
+ store: t,
350
+ getMode() {
351
+ return t.getState().mode;
352
+ },
353
+ setMode(a) {
354
+ t.getState().mode !== a && t.setState({
355
+ mode: a
356
+ }, !1, "setMode");
357
+ },
358
+ onDidChange(a) {
359
+ const o = t.subscribeSelector((c) => c.mode, (c) => a(c));
360
+ return w(o);
361
+ }
362
+ };
363
+ }, Ce = "Terminal", ke = 200, Ae = () => {
364
+ const e = C({
365
+ name: "workbench.terminal",
366
+ initialState: {
367
+ sessionsById: {}
368
+ }
369
+ });
370
+ let t = null;
371
+ const a = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map(), c = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Set(), n = (s, i, u) => {
372
+ const h = e.getState(), p = h.sessionsById[s];
373
+ p && e.setState({
374
+ sessionsById: {
375
+ ...h.sessionsById,
376
+ [s]: {
377
+ ...p,
378
+ ...i
379
+ }
380
+ }
381
+ }, !1, u);
382
+ }, l = (s) => {
383
+ const i = a.get(s);
384
+ if (!i) throw new Error(`Unknown terminal session: ${s}`);
385
+ return i;
386
+ }, y = (s) => {
387
+ a.delete(s), c.delete(s), r.delete(s);
388
+ const i = o.get(s) ?? [];
389
+ o.delete(s);
390
+ for (const u of i) u();
391
+ }, m = (s, i) => {
392
+ if (r.has(s)) return;
393
+ const u = c.get(s);
394
+ u && (u.push(i), u.length > ke && u.shift());
395
+ }, g = async (s) => {
396
+ await l(s.sessionId).kill(s.signal), n(s.sessionId, {
397
+ status: "killed"
398
+ }, "killTerminalSession"), y(s.sessionId);
399
+ };
400
+ return {
401
+ store: e,
402
+ isAvailable: () => t !== null,
403
+ setSessionOpener(s) {
404
+ t = s;
405
+ },
406
+ async open(s) {
407
+ if (!t) throw new Error("Terminal sessions are not available in this workbench host.");
408
+ const i = await t(s.request);
409
+ a.set(i.id, i), c.set(i.id, []);
410
+ const u = [i.onData((b) => m(i.id, b))], h = i.onTitle?.((b) => n(i.id, {
411
+ title: b
412
+ }, "terminalSessionTitleChanged"));
413
+ h && u.push(h), u.push(i.onExit((b) => {
414
+ e.getState().sessionsById[i.id]?.status === "running" && n(i.id, {
415
+ status: "exited",
416
+ exit: b
417
+ }, "terminalSessionExited"), y(i.id);
418
+ })), o.set(i.id, u);
419
+ const p = e.getState();
420
+ return e.setState({
421
+ sessionsById: {
422
+ ...p.sessionsById,
423
+ [i.id]: {
424
+ id: i.id,
425
+ title: s.title ?? Ce,
426
+ status: "running"
427
+ }
428
+ }
429
+ }, !1, "openTerminalSession"), {
430
+ sessionId: i.id
431
+ };
432
+ },
433
+ write(s) {
434
+ l(s.sessionId).write(s.data);
435
+ },
436
+ resize(s) {
437
+ l(s.sessionId).resize(s.cols, s.rows);
438
+ },
439
+ kill: g,
440
+ subscribe(s, i) {
441
+ const u = l(s), h = [];
442
+ if (i.onData) {
443
+ const p = c.get(s) ?? [];
444
+ c.delete(s), r.add(s), h.push(u.onData(i.onData));
445
+ for (const b of p) i.onData(b);
446
+ }
447
+ return h.push(i.onExit ? u.onExit(i.onExit) : void 0, i.onError ? u.onError(i.onError) : void 0), () => {
448
+ for (const p of h) p?.();
449
+ };
450
+ },
451
+ getSession(s) {
452
+ return e.getState().sessionsById[s];
453
+ },
454
+ listSessions() {
455
+ return Object.values(e.getState().sessionsById);
456
+ },
457
+ async dispose() {
458
+ const s = Object.values(e.getState().sessionsById).filter((i) => i.status === "running");
459
+ await Promise.all(s.map((i) => g({
460
+ sessionId: i.id
461
+ })));
462
+ for (const i of Object.values(e.getState().sessionsById)) y(i.id);
463
+ a.clear();
464
+ }
465
+ };
466
+ }, xe = () => {
467
+ const e = C({
468
+ name: "workbench.commandPaletteResources",
469
+ initialState: {
470
+ providers: {},
471
+ refreshToken: 0
472
+ }
473
+ });
474
+ return {
475
+ store: e,
476
+ registerProvider(t) {
477
+ const a = e.getState();
478
+ if (a.providers[t.id])
479
+ throw new Error(`Command palette resource provider already registered: ${t.id}`);
480
+ return e.setState({
481
+ ...a,
482
+ providers: {
483
+ ...a.providers,
484
+ [t.id]: t
485
+ }
486
+ }, !1, "registerProvider"), w(() => {
487
+ const o = e.getState();
488
+ if (o.providers[t.id] !== t) return;
489
+ const {
490
+ [t.id]: c,
491
+ ...r
492
+ } = o.providers;
493
+ e.setState({
494
+ ...o,
495
+ providers: r
496
+ }, !1, "unregisterProvider");
497
+ });
498
+ },
499
+ listProviders() {
500
+ return Object.values(e.getState().providers);
501
+ },
502
+ async queryProviders(t) {
503
+ const a = Object.values(e.getState().providers);
504
+ return Promise.all(a.map(async (o) => {
505
+ try {
506
+ const c = await o.query(t);
507
+ return {
508
+ providerId: o.id,
509
+ title: o.title,
510
+ results: c
511
+ };
512
+ } catch {
513
+ return {
514
+ providerId: o.id,
515
+ title: o.title,
516
+ results: []
517
+ };
518
+ }
519
+ }));
520
+ },
521
+ refresh() {
522
+ const t = e.getState();
523
+ e.setState({
524
+ ...t,
525
+ refreshToken: t.refreshToken + 1
526
+ }, !1, "refresh");
527
+ }
528
+ };
529
+ }, De = (e = {}) => {
530
+ const t = C({
531
+ name: "workbench.commands",
532
+ initialState: {
533
+ commands: {}
534
+ }
535
+ }), a = /* @__PURE__ */ new Set(), o = (r) => {
536
+ const n = t.getState().commands[r];
537
+ if (!n) throw new Error(`Command not registered: ${r}`);
538
+ return n;
539
+ }, c = (r) => {
540
+ for (const n of a) n(r);
541
+ };
542
+ return {
543
+ store: t,
544
+ registerCommand(r, n, l) {
545
+ const y = t.getState();
546
+ if (y.commands[r.id]) throw new Error(`Command already registered: ${r.id}`);
547
+ const m = {
548
+ ...x(l),
549
+ command: r,
550
+ handler: n
551
+ };
552
+ return t.setState({
553
+ commands: {
554
+ ...y.commands,
555
+ [r.id]: m
556
+ }
557
+ }, !1, "registerCommand"), w(() => {
558
+ const g = t.getState();
559
+ if (g.commands[r.id] !== m) return;
560
+ const {
561
+ [r.id]: s,
562
+ ...i
563
+ } = g.commands;
564
+ t.setState({
565
+ commands: i
566
+ }, !1, "unregisterCommand");
567
+ });
568
+ },
569
+ getCommand(r) {
570
+ return t.getState().commands[r];
571
+ },
572
+ listCommands() {
573
+ return Object.values(t.getState().commands).sort(D);
574
+ },
575
+ isCommandEnabled(r, n) {
576
+ return o(r).handler.isEnabled?.(n) ?? !0;
577
+ },
578
+ isCommandVisible(r, n) {
579
+ const l = o(r);
580
+ return e.context?.matches(l.command.when) ? l.handler.isVisible?.(n) ?? !0 : !1;
581
+ },
582
+ isCommandToggled(r, n) {
583
+ return o(r).handler.isToggled?.(n) ?? !1;
584
+ },
585
+ async executeCommand(r, n, l) {
586
+ const y = o(r);
587
+ if (y.handler.isEnabled?.(n) === !1) {
588
+ const m = new Error(`Command is disabled: ${r}`);
589
+ throw c({
590
+ commandId: r,
591
+ args: n,
592
+ error: m
593
+ }), m;
594
+ }
595
+ try {
596
+ return await y.handler.execute(n, l);
597
+ } catch (m) {
598
+ throw c({
599
+ commandId: r,
600
+ args: n,
601
+ error: m
602
+ }), m;
603
+ }
604
+ },
605
+ onDidExecuteError(r) {
606
+ return a.add(r), w(() => {
607
+ a.delete(r);
608
+ });
609
+ }
610
+ };
611
+ }, Be = (e) => {
612
+ const {
613
+ getLayout: t,
614
+ getWidgets: a,
615
+ getPlaceholder: o
616
+ } = e;
617
+ return {
618
+ getAreaSize(c) {
619
+ const r = t().areas[c].size, n = W(t().areas[c]), l = n ? a()[n.contributionId]?.areaSize : o(c)?.areaSize;
620
+ return r === void 0 ? l : {
621
+ ...l,
622
+ defaultPx: r
623
+ };
624
+ },
625
+ getAreaCollapsible(c) {
626
+ const r = W(t().areas[c]);
627
+ return r ? a()[r.contributionId]?.areaCollapsible ?? !0 : o(c)?.areaCollapsible ?? !0;
628
+ },
629
+ getAreaHeaderBorderBottom(c) {
630
+ const r = W(t().areas[c]);
631
+ return r ? a()[r.contributionId]?.headerBorderBottom ?? !0 : !0;
632
+ }
633
+ };
634
+ }, We = (e) => {
635
+ const {
636
+ getPlaceholders: t,
637
+ getWidgets: a
638
+ } = e;
639
+ return {
640
+ listPlaceholders() {
641
+ return Object.values(t()).sort(D);
642
+ },
643
+ listWidgets() {
644
+ return Object.values(a()).sort(D);
645
+ }
646
+ };
647
+ }, Ee = (e) => {
648
+ const {
649
+ store: t,
650
+ getPlaceholders: a,
651
+ getWidgets: o,
652
+ persistLayout: c
653
+ } = e;
654
+ return {
655
+ registerPlaceholder(r, n) {
656
+ if (a()[r.area])
657
+ throw new Error(`Placeholder already registered: ${r.area}`);
658
+ const {
659
+ priority: y,
660
+ ...m
661
+ } = r, g = {
662
+ ...m,
663
+ ...x({
664
+ ...n,
665
+ priority: n?.priority ?? y
666
+ })
667
+ }, s = t.getState();
668
+ return t.setState({
669
+ ...s,
670
+ placeholders: {
671
+ ...s.placeholders,
672
+ [r.area]: g
673
+ }
674
+ }, !1, "registerPlaceholder"), w(() => {
675
+ const i = t.getState();
676
+ if (i.placeholders[r.area] !== g) return;
677
+ const {
678
+ [r.area]: u,
679
+ ...h
680
+ } = i.placeholders;
681
+ t.setState({
682
+ ...i,
683
+ placeholders: h
684
+ }, !1, "unregisterPlaceholder");
685
+ });
686
+ },
687
+ registerWidget(r, n) {
688
+ if (o()[r.id]) throw new Error(`Widget already registered: ${r.id}`);
689
+ const {
690
+ priority: y,
691
+ reuse: m,
692
+ singleton: g,
693
+ ...s
694
+ } = r, i = {
695
+ ...s,
696
+ reuse: m ?? "resource",
697
+ // Panels are singleton by default; widgets opt into tabbed placements
698
+ // by declaring `singleton: false`.
699
+ singleton: g ?? !0,
700
+ ...x({
701
+ ...n,
702
+ priority: n?.priority ?? y
703
+ })
704
+ }, u = t.getState();
705
+ return t.setState({
706
+ ...u,
707
+ widgets: {
708
+ ...u.widgets,
709
+ [r.id]: i
710
+ }
711
+ }, !1, "registerWidget"), w(() => {
712
+ const h = t.getState();
713
+ if (h.widgets[r.id] !== i) return;
714
+ const {
715
+ [r.id]: p,
716
+ ...b
717
+ } = h.widgets, I = J(h.layout, r.id);
718
+ t.setState({
719
+ widgets: b,
720
+ layout: I
721
+ }, !1, "unregisterWidget"), c();
722
+ });
723
+ }
724
+ };
725
+ }, Te = (e, t, a) => {
726
+ if (e.singleton) return q(t, e.id);
727
+ if (e.reuse !== "none")
728
+ return a.resource ? le(t, e.id, a.resource.uri) : q(t, e.id);
729
+ }, Me = (e) => {
730
+ const {
731
+ getLayout: t,
732
+ requireWidget: a,
733
+ applyAndActivate: o
734
+ } = e;
735
+ let c = 0;
736
+ const r = (g, s, i) => {
737
+ const u = M(s.placement, g, i), h = B(t(), s.areaId, (p) => p.map((b, I) => I === s.index ? u : b));
738
+ return o(h, s.areaId, u);
739
+ }, n = (g, s, i, u, h) => {
740
+ const p = M(u, g, h), b = B(t(), s, (I) => I.map((P, d) => d === i ? p : P));
741
+ return o(b, s, p);
742
+ }, l = (g, s, i, u, h) => {
743
+ if (s.areaId !== i) {
744
+ const I = M(s.placement, g, h), P = B(t(), s.areaId, (f) => f.filter((S, v) => v !== s.index), {
745
+ clearActiveWidget: t().areas[s.areaId].activeWidgetId === s.placement.widgetId
746
+ }), d = B(P, i, (f) => {
747
+ if (u < 0) return [...f, I];
748
+ const S = [...f];
749
+ return S.splice(u, 1, I), S;
750
+ });
751
+ return o(d, i, I);
752
+ }
753
+ if (u < 0 || s.index === u)
754
+ return r(g, s, h);
755
+ const p = M(s.placement, g, h), b = B(t(), i, (I) => I.map((P, d) => d === s.index ? p : P).filter((P, d) => d !== u));
756
+ return o(b, i, p);
757
+ }, y = (g, s, i, u) => {
758
+ const p = t().areas[s].widgets.some((d, f) => f !== i && d.widgetId === g.id);
759
+ p && (c += 1);
760
+ const b = p ? `${g.id}:${c}` : g.id, I = ue(b, g, u), P = B(t(), s, (d) => {
761
+ if (i >= 0) {
762
+ const f = [...d];
763
+ return f.splice(i, 1, I), f;
764
+ }
765
+ return [...d, I];
766
+ });
767
+ return o(P, s, I);
768
+ };
769
+ return {
770
+ openWidget: (g, s = {}) => {
771
+ const i = a(g), u = t(), h = s.area ?? i.area ?? i.fallbackArea ?? "main", p = u.areas[h], b = s.replaceActive ? p.widgets.findIndex((d) => d.widgetId === p.activeWidgetId && !d.pinned) : -1, I = b >= 0 ? p.widgets[b] : void 0, P = Te(i, u, s);
772
+ return P ? l(i, P, h, b, s) : I?.contributionId === i.id ? n(i, h, b, I, s) : y(i, h, b, s);
773
+ }
774
+ };
775
+ }, Le = (e = {}) => {
776
+ let t;
777
+ const a = /* @__PURE__ */ new Set(), o = e.persistence?.getLayout(t), c = o ? O(o) : j(), r = C({
778
+ name: "workbench.layout",
779
+ initialState: {
780
+ layout: c,
781
+ widgets: {},
782
+ placeholders: {}
783
+ }
784
+ }), n = () => r.getState().layout, l = () => r.getState().placeholders, y = () => r.getState().widgets, m = (d) => l()[d], g = Be({
785
+ getLayout: n,
786
+ getWidgets: y,
787
+ getPlaceholder: m
788
+ }), s = We({
789
+ getPlaceholders: l,
790
+ getWidgets: y
791
+ }), i = () => {
792
+ e.persistence?.setLayout(n(), t);
793
+ }, u = (d) => {
794
+ const f = y()[d];
795
+ if (!f) throw new Error(`Widget not registered: ${d}`);
796
+ return f;
797
+ }, h = (d) => {
798
+ const f = r.getState();
799
+ f.layout !== d && r.setState({
800
+ ...f,
801
+ layout: d
802
+ }, !1, "setLayout");
803
+ }, p = (d, f) => {
804
+ const S = n(), v = S.areas[d], R = f(v);
805
+ R !== v && (h({
806
+ ...S,
807
+ areas: {
808
+ ...S.areas,
809
+ [d]: R
810
+ }
811
+ }), i());
812
+ }, b = (d, f, S) => (h(de(d, f, S)), i(), S), I = Ee({
813
+ store: r,
814
+ getPlaceholders: l,
815
+ getWidgets: y,
816
+ persistLayout: i
817
+ }), P = Me({
818
+ getLayout: n,
819
+ requireWidget: u,
820
+ applyAndActivate: b
821
+ });
822
+ return {
823
+ store: r,
824
+ registerPlaceholder: I.registerPlaceholder,
825
+ registerWidget: I.registerWidget,
826
+ unregisterWidget(d, f = {}) {
827
+ const S = r.getState();
828
+ if (!S.widgets[d]) return;
829
+ const {
830
+ [d]: v,
831
+ ...R
832
+ } = S.widgets, A = f.removePlacements === !1 ? S.layout : J(S.layout, d);
833
+ r.setState({
834
+ ...S,
835
+ widgets: R,
836
+ layout: A
837
+ }, !1, "unregisterWidget"), f.persist !== !1 && i();
838
+ },
839
+ getWidget(d) {
840
+ return y()[d];
841
+ },
842
+ getPlaceholder: m,
843
+ getAreaSize: g.getAreaSize,
844
+ getAreaCollapsible: g.getAreaCollapsible,
845
+ getAreaHeaderBorderBottom: g.getAreaHeaderBorderBottom,
846
+ setAreaVisible(d, f) {
847
+ p(d, (S) => S.visible === f ? S : {
848
+ ...S,
849
+ visible: f
850
+ });
851
+ },
852
+ setAreaSize(d, f) {
853
+ p(d, (S) => S.size === f ? S : {
854
+ ...S,
855
+ size: f
856
+ });
857
+ },
858
+ listPlaceholders: s.listPlaceholders,
859
+ listWidgets: s.listWidgets,
860
+ openWidget: P.openWidget,
861
+ updateWidgetPlacement(d, f) {
862
+ const S = n();
863
+ for (const v of Object.values(S.areas)) {
864
+ const R = v.widgets.findIndex((T) => T.widgetId === d);
865
+ if (R < 0) continue;
866
+ const A = u(v.widgets[R].contributionId), E = M(v.widgets[R], A, f), L = B(S, v.id, (T) => T.map((se, ne) => ne === R ? E : se));
867
+ return h(L), i(), E;
868
+ }
869
+ throw new Error(`Widget placement not found: ${d}`);
870
+ },
871
+ activateWidget(d) {
872
+ const f = n();
873
+ for (const S of Object.values(f.areas)) {
874
+ const v = S.widgets.find((R) => R.widgetId === d);
875
+ if (v) return b(f, S.id, v);
876
+ }
877
+ throw new Error(`Widget placement not found: ${d}`);
878
+ },
879
+ closeWidget(d) {
880
+ const f = _(n(), d);
881
+ if (!f) throw new Error(`Widget placement not found: ${d}`);
882
+ if (f.closedPlacement.closable !== !0) throw new Error(`Widget cannot be closed: ${d}`);
883
+ return h(f.layout), i(), f.activePlacement;
884
+ },
885
+ removeWidgetPlacement(d) {
886
+ const f = _(n(), d);
887
+ if (f)
888
+ return h(f.layout), i(), f.activePlacement;
889
+ },
890
+ clearArea(d) {
891
+ const f = n(), S = f.areas[d], v = S.activeWidgetId, R = {
892
+ ...f,
893
+ areas: {
894
+ ...f.areas,
895
+ [d]: {
896
+ ...S,
897
+ widgets: [],
898
+ activeWidgetId: void 0
899
+ }
900
+ }
901
+ }, A = v && f.activeWidgetId === v ? {
902
+ ...R,
903
+ activeWidgetId: void 0,
904
+ activeResourceUri: void 0
905
+ } : R;
906
+ h(A), i();
907
+ },
908
+ resetAreas() {
909
+ const d = n(), f = {};
910
+ for (const [S, v] of Object.entries(d.areas))
911
+ f[S] = {
912
+ ...v,
913
+ widgets: [],
914
+ activeWidgetId: void 0
915
+ };
916
+ h({
917
+ areas: f,
918
+ activeWidgetId: void 0,
919
+ activeResourceUri: void 0
920
+ }), i();
921
+ },
922
+ getLayout: n,
923
+ restoreLayout(d) {
924
+ h(O(d)), i();
925
+ },
926
+ setPersistenceScope(d) {
927
+ if (t === d) return;
928
+ e.persistence?.setLayout(n(), t), t = d;
929
+ const f = e.persistence?.getLayout(t), S = f ? O(f) : j(), v = r.getState();
930
+ r.setState({
931
+ ...v,
932
+ layout: S
933
+ }, !1, "setPersistenceScope");
934
+ for (const R of a) R(t);
935
+ },
936
+ getPersistenceScope: () => t,
937
+ onDidChangePersistenceScope(d) {
938
+ return a.add(d), w(() => a.delete(d));
939
+ }
940
+ };
941
+ }, H = (e) => e.join("/"), Oe = (e) => {
942
+ const t = C({
943
+ name: "workbench.menus",
944
+ initialState: {
945
+ itemsByPath: {}
946
+ }
947
+ });
948
+ return {
949
+ menuStore: t,
950
+ registerMenuItem(a, o, c) {
951
+ if (!e.commands.getCommand(o.commandId)) throw new Error(`Menu command not registered: ${o.commandId}`);
952
+ const r = H(a), n = {
953
+ ...x(c),
954
+ ...o,
955
+ path: a
956
+ }, l = t.getState(), y = l.itemsByPath[r] ?? [];
957
+ return t.setState({
958
+ itemsByPath: {
959
+ ...l.itemsByPath,
960
+ [r]: [...y, n]
961
+ }
962
+ }, !1, "registerMenuItem"), w(() => {
963
+ const m = t.getState(), g = m.itemsByPath[r] ?? [], s = g.filter((i) => i !== n);
964
+ s.length !== g.length && t.setState({
965
+ itemsByPath: {
966
+ ...m.itemsByPath,
967
+ [r]: s
968
+ }
969
+ }, !1, "unregisterMenuItem");
970
+ });
971
+ },
972
+ listMenuItems(a) {
973
+ return [...t.getState().itemsByPath[H(a)] ?? []].sort((o, c) => {
974
+ const r = o.order ?? 0, n = c.order ?? 0;
975
+ return r - n || D(o, c);
976
+ });
977
+ }
978
+ };
979
+ }, Fe = (e) => e ? Array.isArray(e) ? [...e] : [e] : [], $e = (e) => {
980
+ const t = C({
981
+ name: "workbench.modes",
982
+ initialState: {
983
+ modes: {},
984
+ activeModeId: void 0
985
+ }
986
+ });
987
+ let a = [], o = /* @__PURE__ */ new Set(), c = /* @__PURE__ */ new Set(), r, n;
988
+ const l = (s) => Object.values(s.areas).flatMap((i) => i.widgets.map((u) => u.widgetId)), y = (s) => {
989
+ for (const i of l(s))
990
+ c.has(i) || o.add(i);
991
+ }, m = (s = {}) => {
992
+ const i = e.resolveContext();
993
+ r?.(), r = void 0;
994
+ for (let u = a.length - 1; u >= 0; u -= 1)
995
+ a[u]?.dispose();
996
+ for (const u of o)
997
+ i.layout.removeWidgetPlacement(u);
998
+ a = [], o = /* @__PURE__ */ new Set(), c = /* @__PURE__ */ new Set(), n?.dispose(), n = void 0, s.publish !== !1 && t.setState({
999
+ ...t.getState(),
1000
+ activeModeId: void 0
1001
+ }, !1, "deactivateMode");
1002
+ }, g = (s) => {
1003
+ const i = e.resolveContext(), u = t.getState().modes[s];
1004
+ if (!u) throw new Error(`Workbench mode not registered: ${s}`);
1005
+ c = new Set(l(i.layout.getLayout()));
1006
+ const p = i.context.createScope("workbench.mode");
1007
+ p.set("activeWorkbenchMode", s), p.set(`workbenchMode.${s}`, !0), n = p, r = i.layout.store.subscribe((b) => y(b.layout)), t.setState({
1008
+ ...t.getState(),
1009
+ activeModeId: s
1010
+ }, !1, "activateMode");
1011
+ try {
1012
+ a = Fe(u.activate(i)), y(i.layout.getLayout());
1013
+ } catch (b) {
1014
+ throw m(), b;
1015
+ }
1016
+ };
1017
+ return {
1018
+ store: t,
1019
+ registerMode(s) {
1020
+ const i = t.getState();
1021
+ if (i.modes[s.id]) throw new Error(`Workbench mode already registered: ${s.id}`);
1022
+ return t.setState({
1023
+ ...i,
1024
+ modes: {
1025
+ ...i.modes,
1026
+ [s.id]: s
1027
+ }
1028
+ }, !1, "registerMode"), w(() => {
1029
+ const u = t.getState();
1030
+ if (u.modes[s.id] !== s) return;
1031
+ u.activeModeId === s.id && m();
1032
+ const {
1033
+ [s.id]: h,
1034
+ ...p
1035
+ } = u.modes;
1036
+ t.setState({
1037
+ ...t.getState(),
1038
+ modes: p
1039
+ }, !1, "unregisterMode");
1040
+ });
1041
+ },
1042
+ getMode(s) {
1043
+ return t.getState().modes[s];
1044
+ },
1045
+ listModes() {
1046
+ return Object.values(t.getState().modes);
1047
+ },
1048
+ getActiveModeId() {
1049
+ return t.getState().activeModeId;
1050
+ },
1051
+ setActiveMode(s) {
1052
+ s !== t.getState().activeModeId && (m({
1053
+ publish: s === void 0
1054
+ }), s !== void 0 && g(s));
1055
+ },
1056
+ onDidChangeActive(s) {
1057
+ const i = t.subscribeSelector((u) => u.activeModeId, () => s());
1058
+ return w(i);
1059
+ }
1060
+ };
1061
+ }, Q = (e, t) => t.priority - e.priority || e.id.localeCompare(t.id), Ne = () => {
1062
+ throw new Error("navigation.openTarget: no dispatcher available (configure resolveDispatcher)");
1063
+ }, je = async (e, t) => e.kind === "resource" ? t.openResource(e.resource, e.input) : e.kind === "view" ? t.openWidget(e.widgetId, e.input) : t.executeCommand(e.commandId, e.args), _e = (e, t) => {
1064
+ if (e.kind === "resource" && t.canOpenResource?.(e.resource) === !1)
1065
+ throw new Error(`Cannot open navigation resource target: ${e.resource.uri}`);
1066
+ if (e.kind === "view" && t.canOpenWidget?.(e.widgetId) === !1)
1067
+ throw new Error(`Cannot open navigation view target: ${e.widgetId}`);
1068
+ if (e.kind === "command" && t.canExecuteCommand?.(e.commandId) === !1)
1069
+ throw new Error(`Cannot open navigation command target: ${e.commandId}`);
1070
+ }, qe = (e) => e.kind === "compound" ? e.targets : [e], Ke = (e = {}) => {
1071
+ const t = e.resolveDispatcher ?? Ne, a = C({
1072
+ name: "workbench.navigation",
1073
+ initialState: {
1074
+ parsers: {},
1075
+ navigators: {}
1076
+ }
1077
+ }), o = (r, n) => {
1078
+ const {
1079
+ [n]: l,
1080
+ ...y
1081
+ } = r;
1082
+ return y;
1083
+ }, c = {
1084
+ store: a,
1085
+ registerParser(r, n) {
1086
+ const l = a.getState();
1087
+ if (l.parsers[r.id]) throw new Error(`Navigation parser already registered: ${r.id}`);
1088
+ const {
1089
+ priority: y,
1090
+ ...m
1091
+ } = r, g = {
1092
+ ...m,
1093
+ ...x({
1094
+ ...n,
1095
+ priority: n?.priority ?? y
1096
+ })
1097
+ };
1098
+ return a.setState({
1099
+ ...l,
1100
+ parsers: {
1101
+ ...l.parsers,
1102
+ [r.id]: g
1103
+ }
1104
+ }, !1, "registerParser"), w(() => {
1105
+ const s = a.getState();
1106
+ s.parsers[r.id] === g && a.setState({
1107
+ ...s,
1108
+ parsers: o(s.parsers, r.id)
1109
+ }, !1, "unregisterParser");
1110
+ });
1111
+ },
1112
+ listParsers() {
1113
+ return Object.values(a.getState().parsers).sort(Q);
1114
+ },
1115
+ resolveLocation(r) {
1116
+ const n = this.listParsers().find((l) => l.canParse(r));
1117
+ if (!n) throw new Error(`No navigation parser registered for location: ${r}`);
1118
+ return n.parse(r);
1119
+ },
1120
+ async openTarget(r) {
1121
+ const n = t(), l = qe(r), y = [];
1122
+ for (const g of l) _e(g, n);
1123
+ const m = r.kind === "compound" ? n.createCheckpoint?.() : void 0;
1124
+ try {
1125
+ for (const g of l) {
1126
+ const s = await je(g, n);
1127
+ y.push(s);
1128
+ }
1129
+ } catch (g) {
1130
+ throw m?.(), g;
1131
+ }
1132
+ return y;
1133
+ },
1134
+ async navigate(r) {
1135
+ return c.openTarget(c.resolveLocation(r));
1136
+ },
1137
+ registerNavigator(r, n) {
1138
+ const l = a.getState();
1139
+ if (l.navigators[r.id]) throw new Error(`Resource navigator already registered: ${r.id}`);
1140
+ const {
1141
+ priority: y,
1142
+ ...m
1143
+ } = r, g = {
1144
+ ...m,
1145
+ ...x({
1146
+ ...n,
1147
+ priority: n?.priority ?? y
1148
+ })
1149
+ };
1150
+ return a.setState({
1151
+ ...l,
1152
+ navigators: {
1153
+ ...l.navigators,
1154
+ [r.id]: g
1155
+ }
1156
+ }, !1, "registerNavigator"), w(() => {
1157
+ const s = a.getState();
1158
+ s.navigators[r.id] === g && a.setState({
1159
+ ...s,
1160
+ navigators: o(s.navigators, r.id)
1161
+ }, !1, "unregisterNavigator");
1162
+ });
1163
+ },
1164
+ listNavigators() {
1165
+ return Object.values(a.getState().navigators).sort(Q);
1166
+ },
1167
+ createHref(r) {
1168
+ const n = this.listNavigators().find((l) => l.createHref && l.canNavigate(r));
1169
+ if (!n?.createHref) throw new Error(`No navigator href registered for resource kind: ${r.kind}`);
1170
+ return n.createHref(r);
1171
+ },
1172
+ async navigateResource(r) {
1173
+ const n = this.listNavigators().find((l) => l.canNavigate(r));
1174
+ if (!n) throw new Error(`No navigator registered for resource kind: ${r.kind}`);
1175
+ return await n.navigate(r);
1176
+ }
1177
+ };
1178
+ return c;
1179
+ }, Ve = () => {
1180
+ const e = C({
1181
+ name: "workbench.notifications",
1182
+ initialState: {
1183
+ notifications: {}
1184
+ }
1185
+ }), t = /* @__PURE__ */ new Set();
1186
+ let a = 0;
1187
+ const o = (c) => {
1188
+ for (const r of t) r(c);
1189
+ };
1190
+ return {
1191
+ store: e,
1192
+ show(c, r) {
1193
+ let n = c.id;
1194
+ n || (a += 1, n = `workbench.notification.${a.toString()}`);
1195
+ const l = {
1196
+ ...x(r),
1197
+ ...c,
1198
+ id: n,
1199
+ createdAt: c.createdAt ?? (/* @__PURE__ */ new Date()).toISOString()
1200
+ }, y = e.getState();
1201
+ return e.setState({
1202
+ notifications: {
1203
+ ...y.notifications,
1204
+ [n]: l
1205
+ }
1206
+ }, !1, "showNotification"), o({
1207
+ type: "show",
1208
+ id: n,
1209
+ notification: l
1210
+ }), l;
1211
+ },
1212
+ dismiss(c) {
1213
+ const r = e.getState();
1214
+ if (!r.notifications[c]) return !1;
1215
+ const {
1216
+ [c]: n,
1217
+ ...l
1218
+ } = r.notifications;
1219
+ return e.setState({
1220
+ notifications: l
1221
+ }, !1, "dismissNotification"), o({
1222
+ type: "dismiss",
1223
+ id: c
1224
+ }), !0;
1225
+ },
1226
+ clear() {
1227
+ const c = Object.keys(e.getState().notifications);
1228
+ e.setState({
1229
+ notifications: {}
1230
+ }, !1, "clearNotifications");
1231
+ for (const r of c) o({
1232
+ type: "dismiss",
1233
+ id: r
1234
+ });
1235
+ },
1236
+ listNotifications() {
1237
+ return Object.values(e.getState().notifications).sort((c, r) => r.createdAt.localeCompare(c.createdAt));
1238
+ },
1239
+ subscribe(c) {
1240
+ return t.add(c), w(() => {
1241
+ t.delete(c);
1242
+ });
1243
+ }
1244
+ };
1245
+ }, U = (e, t) => `${e}:${t.scope}:${t.scopeId ?? ""}`, ze = () => {
1246
+ const e = /* @__PURE__ */ new Map();
1247
+ return {
1248
+ getValue(t, a) {
1249
+ return e.get(U(t, a));
1250
+ },
1251
+ setValue(t, a, o) {
1252
+ e.set(U(t, o), a);
1253
+ }
1254
+ };
1255
+ }, He = (e = {}) => {
1256
+ const t = C({
1257
+ name: "workbench.preferences",
1258
+ initialState: {
1259
+ schemas: {}
1260
+ }
1261
+ }), a = e.persistence ?? ze();
1262
+ return {
1263
+ store: t,
1264
+ registerSchema(o, c) {
1265
+ const r = Object.keys(o.properties), n = t.getState();
1266
+ for (const y of r)
1267
+ if (n.schemas[y]) throw new Error(`Preference schema already registered: ${y}`);
1268
+ const l = {};
1269
+ for (const y of r) {
1270
+ const m = o.properties[y];
1271
+ m && (l[y] = {
1272
+ ...m,
1273
+ ownerId: c?.ownerId ?? "workbench.core",
1274
+ source: c?.source ?? "module"
1275
+ });
1276
+ }
1277
+ return t.setState({
1278
+ schemas: {
1279
+ ...n.schemas,
1280
+ ...l
1281
+ }
1282
+ }, !1, "registerSchema"), w(() => {
1283
+ const m = {
1284
+ ...t.getState().schemas
1285
+ };
1286
+ for (const g of r) delete m[g];
1287
+ t.setState({
1288
+ schemas: m
1289
+ }, !1, "unregisterSchema");
1290
+ });
1291
+ },
1292
+ getSchema(o) {
1293
+ return t.getState().schemas[o];
1294
+ },
1295
+ setValue(o, c, r) {
1296
+ if (!t.getState().schemas[o]) throw new Error(`Preference schema not registered: ${o}`);
1297
+ a.setValue(o, c, r);
1298
+ },
1299
+ getValue(o, c) {
1300
+ if (c) {
1301
+ const n = a.getValue(o, c);
1302
+ if (n !== void 0) return n;
1303
+ }
1304
+ const r = a.getValue(o, {
1305
+ scope: "user"
1306
+ });
1307
+ return r !== void 0 ? r : t.getState().schemas[o]?.default;
1308
+ }
1309
+ };
1310
+ }, Qe = (e) => {
1311
+ const {
1312
+ rendererRegistry: t
1313
+ } = e, a = C({
1314
+ name: "workbench.controlsRenderers",
1315
+ initialState: {
1316
+ renderers: {}
1317
+ }
1318
+ }), o = /* @__PURE__ */ new Set();
1319
+ let c = () => null;
1320
+ const r = (n) => {
1321
+ const l = a.getState().renderers[n];
1322
+ if (!l) throw new Error(`Controls renderer not registered: ${n}`);
1323
+ return l;
1324
+ };
1325
+ return {
1326
+ controlsStore: a,
1327
+ setControlsRendererImplementation(n) {
1328
+ c = n;
1329
+ },
1330
+ registerControlsRenderer(n, l) {
1331
+ const y = a.getState();
1332
+ if (y.renderers[n.id])
1333
+ throw new Error(`Controls renderer already registered: ${n.id}`);
1334
+ const m = {
1335
+ ...x(l),
1336
+ ...n
1337
+ };
1338
+ a.setState({
1339
+ ...y,
1340
+ renderers: {
1341
+ ...y.renderers,
1342
+ [n.id]: m
1343
+ }
1344
+ }, !1, "registerControlsRenderer");
1345
+ const g = t.registerRenderer({
1346
+ id: n.id,
1347
+ render: (s) => c({
1348
+ ...s,
1349
+ controlsRendererId: n.id
1350
+ })
1351
+ });
1352
+ return w(() => {
1353
+ g.dispose();
1354
+ const s = a.getState();
1355
+ if (s.renderers[n.id] !== m) return;
1356
+ const {
1357
+ [n.id]: i,
1358
+ ...u
1359
+ } = s.renderers;
1360
+ a.setState({
1361
+ renderers: u
1362
+ }, !1, "unregisterControlsRenderer");
1363
+ });
1364
+ },
1365
+ getControlsRenderer(n) {
1366
+ return a.getState().renderers[n];
1367
+ },
1368
+ listControlsRenderers() {
1369
+ return Object.values(a.getState().renderers).sort(D);
1370
+ },
1371
+ refreshControlsRenderer(n) {
1372
+ r(n);
1373
+ const l = {
1374
+ controlsRendererId: n
1375
+ };
1376
+ for (const y of o) y(l);
1377
+ },
1378
+ onDidRefreshControlsRenderer(n) {
1379
+ return o.add(n), w(() => {
1380
+ o.delete(n);
1381
+ });
1382
+ }
1383
+ };
1384
+ }, Ue = (e) => {
1385
+ const {
1386
+ rendererRegistry: t
1387
+ } = e, a = C({
1388
+ name: "workbench.dataRenderers",
1389
+ initialState: {
1390
+ renderers: {}
1391
+ }
1392
+ }), o = /* @__PURE__ */ new Set();
1393
+ let c = () => null;
1394
+ const r = (n) => {
1395
+ const l = a.getState().renderers[n];
1396
+ if (!l) throw new Error(`Data renderer not registered: ${n}`);
1397
+ return l;
1398
+ };
1399
+ return {
1400
+ dataStore: a,
1401
+ setDataRendererImplementation(n) {
1402
+ c = n;
1403
+ },
1404
+ registerDataRenderer(n, l) {
1405
+ const y = a.getState();
1406
+ if (y.renderers[n.id]) throw new Error(`Data renderer already registered: ${n.id}`);
1407
+ const m = {
1408
+ ...x(l),
1409
+ ...n
1410
+ };
1411
+ a.setState({
1412
+ ...y,
1413
+ renderers: {
1414
+ ...y.renderers,
1415
+ [n.id]: m
1416
+ }
1417
+ }, !1, "registerDataRenderer");
1418
+ const g = t.registerRenderer({
1419
+ id: n.id,
1420
+ render: (s) => c({
1421
+ ...s,
1422
+ dataRendererId: n.id
1423
+ })
1424
+ });
1425
+ return w(() => {
1426
+ g.dispose();
1427
+ const s = a.getState();
1428
+ if (s.renderers[n.id] !== m) return;
1429
+ const {
1430
+ [n.id]: i,
1431
+ ...u
1432
+ } = s.renderers;
1433
+ a.setState({
1434
+ renderers: u
1435
+ }, !1, "unregisterDataRenderer");
1436
+ });
1437
+ },
1438
+ getDataRenderer(n) {
1439
+ return a.getState().renderers[n];
1440
+ },
1441
+ listDataRenderers() {
1442
+ return Object.values(a.getState().renderers).sort(D);
1443
+ },
1444
+ refreshDataRenderer(n) {
1445
+ r(n);
1446
+ const l = {
1447
+ dataRendererId: n
1448
+ };
1449
+ for (const y of o) y(l);
1450
+ },
1451
+ onDidRefreshDataRenderer(n) {
1452
+ return o.add(n), w(() => {
1453
+ o.delete(n);
1454
+ });
1455
+ }
1456
+ };
1457
+ }, Xe = (e) => {
1458
+ const {
1459
+ rendererRegistry: t
1460
+ } = e, a = C({
1461
+ name: "workbench.fileRenderers",
1462
+ initialState: {
1463
+ renderers: {}
1464
+ }
1465
+ }), o = /* @__PURE__ */ new Set();
1466
+ let c = () => null;
1467
+ const r = (n) => {
1468
+ const l = a.getState().renderers[n];
1469
+ if (!l) throw new Error(`File renderer not registered: ${n}`);
1470
+ return l;
1471
+ };
1472
+ return {
1473
+ fileRendererStore: a,
1474
+ setFileRendererImplementation(n) {
1475
+ c = n;
1476
+ },
1477
+ registerFileRenderer(n, l) {
1478
+ const y = a.getState();
1479
+ if (y.renderers[n.id]) throw new Error(`File renderer already registered: ${n.id}`);
1480
+ const m = {
1481
+ ...x(l),
1482
+ ...n
1483
+ };
1484
+ a.setState({
1485
+ ...y,
1486
+ renderers: {
1487
+ ...y.renderers,
1488
+ [n.id]: m
1489
+ }
1490
+ }, !1, "registerFileRenderer");
1491
+ const g = t.registerRenderer({
1492
+ id: n.id,
1493
+ render: (s) => c({
1494
+ ...s,
1495
+ fileRendererId: n.id
1496
+ })
1497
+ });
1498
+ return w(() => {
1499
+ g.dispose();
1500
+ const s = a.getState();
1501
+ if (s.renderers[n.id] !== m) return;
1502
+ const {
1503
+ [n.id]: i,
1504
+ ...u
1505
+ } = s.renderers;
1506
+ a.setState({
1507
+ renderers: u
1508
+ }, !1, "unregisterFileRenderer");
1509
+ });
1510
+ },
1511
+ getFileRenderer(n) {
1512
+ return a.getState().renderers[n];
1513
+ },
1514
+ listFileRenderers() {
1515
+ return Object.values(a.getState().renderers).sort(D);
1516
+ },
1517
+ refreshFileRenderer(n) {
1518
+ r(n);
1519
+ const l = {
1520
+ fileRendererId: n
1521
+ };
1522
+ for (const y of o) y(l);
1523
+ },
1524
+ onDidRefreshFileRenderer(n) {
1525
+ return o.add(n), w(() => {
1526
+ o.delete(n);
1527
+ });
1528
+ }
1529
+ };
1530
+ }, X = (e) => ({
1531
+ expandedNodeIds: [...e.defaultExpandedNodeIds ?? []],
1532
+ expandedSectionIds: [...e.defaultExpandedSectionIds ?? []]
1533
+ }), Ye = (e, t) => {
1534
+ const a = (t.defaultExpandedSectionIds ?? []).filter((o) => !e.expandedSectionIds.includes(o));
1535
+ return a.length === 0 ? e : {
1536
+ ...e,
1537
+ expandedSectionIds: [...e.expandedSectionIds, ...a]
1538
+ };
1539
+ }, Y = (e, t, a) => a ? e.includes(t) ? e : [...e, t] : e.includes(t) ? e.filter((o) => o !== t) : e, Ge = (e) => {
1540
+ const {
1541
+ rendererRegistry: t,
1542
+ persistence: a
1543
+ } = e, o = a?.getTreeStates(), c = C({
1544
+ name: "workbench.treeRenderers",
1545
+ initialState: {
1546
+ trees: {},
1547
+ statesByTreeId: o?.statesByTreeId ?? {},
1548
+ refreshKeysByTreeId: {}
1549
+ }
1550
+ }), r = /* @__PURE__ */ new Set();
1551
+ let n = () => null;
1552
+ const l = (s) => {
1553
+ const i = c.getState().trees[s];
1554
+ if (!i) throw new Error(`Tree renderer not registered: ${s}`);
1555
+ return i;
1556
+ }, y = (s) => {
1557
+ const i = c.getState(), u = i.statesByTreeId[s];
1558
+ if (u) return u;
1559
+ const h = i.trees[s];
1560
+ if (!h) throw new Error(`Tree renderer not registered: ${s}`);
1561
+ const p = X(h);
1562
+ return c.setState({
1563
+ ...i,
1564
+ statesByTreeId: {
1565
+ ...i.statesByTreeId,
1566
+ [s]: p
1567
+ }
1568
+ }, !1, "ensureTreeState"), p;
1569
+ }, m = () => {
1570
+ if (!a) return;
1571
+ const s = {};
1572
+ for (const [i, u] of Object.entries(c.getState().statesByTreeId)) {
1573
+ const {
1574
+ loading: h,
1575
+ ...p
1576
+ } = u;
1577
+ s[i] = p;
1578
+ }
1579
+ a.setTreeStates({
1580
+ statesByTreeId: s
1581
+ });
1582
+ }, g = (s, i, u) => {
1583
+ const h = y(s), p = i(h);
1584
+ if (p === h) return;
1585
+ const b = c.getState();
1586
+ c.setState({
1587
+ ...b,
1588
+ statesByTreeId: {
1589
+ ...b.statesByTreeId,
1590
+ [s]: p
1591
+ }
1592
+ }, !1, u), m();
1593
+ };
1594
+ return {
1595
+ treeStore: c,
1596
+ setTreeRendererImplementation(s) {
1597
+ n = s;
1598
+ },
1599
+ registerTreeRenderer(s, i) {
1600
+ const u = c.getState();
1601
+ if (u.trees[s.id]) throw new Error(`Tree renderer already registered: ${s.id}`);
1602
+ const h = {
1603
+ ...x(i),
1604
+ ...s
1605
+ }, p = u.statesByTreeId[s.id], b = p ? Ye(p, s) : X(s);
1606
+ c.setState({
1607
+ ...u,
1608
+ trees: {
1609
+ ...u.trees,
1610
+ [s.id]: h
1611
+ },
1612
+ statesByTreeId: {
1613
+ ...u.statesByTreeId,
1614
+ [s.id]: b
1615
+ }
1616
+ }, !1, "registerTreeRenderer");
1617
+ const I = t.registerRenderer({
1618
+ id: s.id,
1619
+ render: (P) => n({
1620
+ ...P,
1621
+ treeId: s.id
1622
+ })
1623
+ });
1624
+ return w(() => {
1625
+ I.dispose();
1626
+ const P = c.getState();
1627
+ if (P.trees[s.id] !== h) return;
1628
+ const {
1629
+ [s.id]: d,
1630
+ ...f
1631
+ } = P.trees, {
1632
+ [s.id]: S,
1633
+ ...v
1634
+ } = P.statesByTreeId, {
1635
+ [s.id]: R,
1636
+ ...A
1637
+ } = P.refreshKeysByTreeId;
1638
+ c.setState({
1639
+ trees: f,
1640
+ statesByTreeId: v,
1641
+ refreshKeysByTreeId: A
1642
+ }, !1, "unregisterTreeRenderer"), m();
1643
+ });
1644
+ },
1645
+ getTreeRenderer(s) {
1646
+ return c.getState().trees[s];
1647
+ },
1648
+ listTreeRenderers() {
1649
+ return Object.values(c.getState().trees).sort(D);
1650
+ },
1651
+ async getBody(s, i = {}) {
1652
+ return await l(s).getBody(i);
1653
+ },
1654
+ async getHeader(s, i = {}) {
1655
+ const u = l(s);
1656
+ return u.getHeader ? await u.getHeader(i) : [];
1657
+ },
1658
+ async getFooter(s, i = {}) {
1659
+ const u = l(s);
1660
+ return u.getFooter ? await u.getFooter(i) : [];
1661
+ },
1662
+ async getChildren(s, i, u = {}) {
1663
+ return await l(s).getChildren(i, u);
1664
+ },
1665
+ getTreeState(s) {
1666
+ const i = y(s);
1667
+ return {
1668
+ expandedNodeIds: [...i.expandedNodeIds],
1669
+ expandedSectionIds: [...i.expandedSectionIds],
1670
+ selectedNodeId: i.selectedNodeId,
1671
+ loading: i.loading
1672
+ };
1673
+ },
1674
+ setNodeExpanded(s, i, u) {
1675
+ l(s), g(s, (h) => {
1676
+ const p = Y(h.expandedNodeIds, i, u);
1677
+ return p === h.expandedNodeIds ? h : {
1678
+ ...h,
1679
+ expandedNodeIds: p
1680
+ };
1681
+ }, "setNodeExpanded");
1682
+ },
1683
+ setSectionExpanded(s, i, u) {
1684
+ l(s), g(s, (h) => {
1685
+ const p = Y(h.expandedSectionIds, i, u);
1686
+ return p === h.expandedSectionIds ? h : {
1687
+ ...h,
1688
+ expandedSectionIds: p
1689
+ };
1690
+ }, "setSectionExpanded");
1691
+ },
1692
+ setSelectedNode(s, i) {
1693
+ l(s), g(s, (u) => u.selectedNodeId === i ? u : {
1694
+ ...u,
1695
+ selectedNodeId: i
1696
+ }, "setSelectedNode");
1697
+ },
1698
+ setLoading(s, i) {
1699
+ l(s);
1700
+ const u = y(s);
1701
+ if (u.loading === i) return;
1702
+ const h = c.getState();
1703
+ c.setState({
1704
+ ...h,
1705
+ statesByTreeId: {
1706
+ ...h.statesByTreeId,
1707
+ [s]: {
1708
+ ...u,
1709
+ loading: i
1710
+ }
1711
+ }
1712
+ }, !1, "setLoading");
1713
+ },
1714
+ refresh(s) {
1715
+ l(s);
1716
+ const i = c.getState(), u = i.refreshKeysByTreeId[s] ?? 0;
1717
+ c.setState({
1718
+ ...i,
1719
+ refreshKeysByTreeId: {
1720
+ ...i.refreshKeysByTreeId,
1721
+ [s]: u + 1
1722
+ }
1723
+ }, !1, "refreshTreeRenderer");
1724
+ const h = {
1725
+ treeId: s
1726
+ };
1727
+ for (const p of r) p(h);
1728
+ },
1729
+ onDidRefresh(s) {
1730
+ return r.add(s), w(() => {
1731
+ r.delete(s);
1732
+ });
1733
+ }
1734
+ };
1735
+ }, G = (e, t) => (e.order ?? 0) - (t.order ?? 0) || D(e, t), Je = () => {
1736
+ const e = C({
1737
+ name: "workbench.settings",
1738
+ initialState: {
1739
+ sections: {},
1740
+ panels: {},
1741
+ revision: 0
1742
+ }
1743
+ });
1744
+ return {
1745
+ store: e,
1746
+ refresh() {
1747
+ const t = e.getState();
1748
+ e.setState({
1749
+ ...t,
1750
+ revision: t.revision + 1
1751
+ }, !1, "refreshSettings");
1752
+ },
1753
+ registerSection(t, a) {
1754
+ const o = e.getState();
1755
+ if (o.sections[t.id]) throw new Error(`Settings section already registered: ${t.id}`);
1756
+ const c = {
1757
+ ...x(a),
1758
+ ...t
1759
+ };
1760
+ return e.setState({
1761
+ ...o,
1762
+ sections: {
1763
+ ...o.sections,
1764
+ [t.id]: c
1765
+ }
1766
+ }, !1, "registerSection"), w(() => {
1767
+ const r = e.getState();
1768
+ if (r.sections[t.id] !== c) return;
1769
+ const {
1770
+ [t.id]: n,
1771
+ ...l
1772
+ } = r.sections;
1773
+ e.setState({
1774
+ ...r,
1775
+ sections: l
1776
+ }, !1, "unregisterSection");
1777
+ });
1778
+ },
1779
+ registerPanel(t, a) {
1780
+ const o = e.getState();
1781
+ if (o.panels[t.id]) throw new Error(`Settings panel already registered: ${t.id}`);
1782
+ const c = {
1783
+ ...x(a),
1784
+ ...t
1785
+ };
1786
+ return e.setState({
1787
+ ...o,
1788
+ panels: {
1789
+ ...o.panels,
1790
+ [t.id]: c
1791
+ }
1792
+ }, !1, "registerPanel"), w(() => {
1793
+ const r = e.getState();
1794
+ if (r.panels[t.id] !== c) return;
1795
+ const {
1796
+ [t.id]: n,
1797
+ ...l
1798
+ } = r.panels;
1799
+ e.setState({
1800
+ ...r,
1801
+ panels: l
1802
+ }, !1, "unregisterPanel");
1803
+ });
1804
+ },
1805
+ getSection(t) {
1806
+ return e.getState().sections[t];
1807
+ },
1808
+ getPanel(t) {
1809
+ return e.getState().panels[t];
1810
+ },
1811
+ listSections() {
1812
+ return Object.values(e.getState().sections).sort(G);
1813
+ },
1814
+ listPanels() {
1815
+ return Object.values(e.getState().panels).sort(G);
1816
+ }
1817
+ };
1818
+ }, Ze = () => {
1819
+ const e = C({
1820
+ name: "workbench.fileIconThemes",
1821
+ initialState: {
1822
+ themes: []
1823
+ }
1824
+ }), t = /* @__PURE__ */ new Set(), a = () => {
1825
+ e.setState({
1826
+ themes: [...t].flat()
1827
+ }, !1, "syncFileIconThemes");
1828
+ };
1829
+ return {
1830
+ store: e,
1831
+ register(o) {
1832
+ return t.add(o), a(), w(() => {
1833
+ t.delete(o) && a();
1834
+ });
1835
+ },
1836
+ listThemes() {
1837
+ return e.getState().themes;
1838
+ }
1839
+ };
1840
+ }, et = () => {
1841
+ const e = C({
1842
+ name: "workbench.themes",
1843
+ initialState: {
1844
+ themes: []
1845
+ }
1846
+ }), t = /* @__PURE__ */ new Set(), a = () => {
1847
+ e.setState({
1848
+ themes: [...t].flat()
1849
+ }, !1, "syncThemes");
1850
+ };
1851
+ return {
1852
+ store: e,
1853
+ register(o) {
1854
+ return t.add(o), a(), w(() => {
1855
+ t.delete(o) && a();
1856
+ });
1857
+ },
1858
+ listThemes() {
1859
+ return e.getState().themes;
1860
+ }
1861
+ };
1862
+ }, tt = (e) => (t) => e.listProviders().some((o) => o.kind === t.kind) ? e.listResources("").some((o) => o.resource.uri === t.uri) : !0, rt = ({
1863
+ layout: e,
1864
+ isInScope: t
1865
+ }) => {
1866
+ const a = e.store.subscribeSelector((o) => W(o.layout.areas[N("primary")])?.resourceUri, () => {
1867
+ const o = e.getLayout(), c = $(o, "primary");
1868
+ for (const r of ge({
1869
+ layout: o,
1870
+ primary: c,
1871
+ isInScope: t
1872
+ }))
1873
+ r.action === "clear" && e.clearArea(r.area);
1874
+ });
1875
+ return w(a);
1876
+ }, st = "left", nt = (e, t, a) => {
1877
+ e.panels.setOpen(t, a), e.layout.setAreaVisible(t, a);
1878
+ }, ot = (e, t) => {
1879
+ nt(e, t, !e.panels.isOpen(t));
1880
+ }, at = [{
1881
+ id: "workbench.toggleCommandPalette",
1882
+ label: "Toggle Command Palette",
1883
+ icon: "Command",
1884
+ keybinding: "Mod+K",
1885
+ execute: (e) => e.commandPalette.toggle()
1886
+ }, {
1887
+ id: "workbench.action.showCommands",
1888
+ label: "Run Command",
1889
+ icon: "Terminal",
1890
+ keybinding: "Alt+Shift+K",
1891
+ execute: (e) => e.commandPalette.open({
1892
+ initialQuery: "> "
1893
+ })
1894
+ }, {
1895
+ id: "workbench.action.changeTheme",
1896
+ label: "Change Theme",
1897
+ icon: "Palette",
1898
+ keybinding: "Alt+Shift+T",
1899
+ execute: (e) => e.commandPalette.open({
1900
+ view: "theme"
1901
+ })
1902
+ }, {
1903
+ id: "workbench.action.navigateBack",
1904
+ label: "Navigate Back",
1905
+ icon: "ArrowLeft",
1906
+ keybinding: "Alt+Shift+ArrowLeft",
1907
+ execute: (e) => {
1908
+ e.history.goBack();
1909
+ }
1910
+ }, {
1911
+ id: "workbench.action.navigateForward",
1912
+ label: "Navigate Forward",
1913
+ icon: "ArrowRight",
1914
+ keybinding: "Alt+Shift+ArrowRight",
1915
+ execute: (e) => {
1916
+ e.history.goForward();
1917
+ }
1918
+ }, {
1919
+ id: "workbench.toggleSideBar",
1920
+ label: "Toggle Sidebar",
1921
+ icon: "PanelLeft",
1922
+ keybinding: "Mod+B",
1923
+ execute: (e) => ot(e, st)
1924
+ }], it = (e) => {
1925
+ for (const t of at)
1926
+ e.commands.registerCommand({
1927
+ id: t.id,
1928
+ label: t.label,
1929
+ category: "Workbench",
1930
+ icon: t.icon,
1931
+ when: "!inputFocus"
1932
+ }, {
1933
+ execute: () => t.execute(e)
1934
+ }), e.keybindings.registerKeybinding({
1935
+ commandId: t.id,
1936
+ keybinding: t.keybinding,
1937
+ when: "!inputFocus"
1938
+ }), e.layout.registerMenuItem(K, {
1939
+ commandId: t.id,
1940
+ group: "Workbench"
1941
+ });
1942
+ e.commands.registerCommand({
1943
+ id: "workbench.action.switchMode",
1944
+ label: "Switch Mode",
1945
+ category: "Workbench",
1946
+ icon: "PanelTop",
1947
+ when: "!inputFocus"
1948
+ }, {
1949
+ execute: (t) => {
1950
+ if (!t?.modeId) {
1951
+ e.commandPalette.open({
1952
+ view: "mode"
1953
+ });
1954
+ return;
1955
+ }
1956
+ if (!e.modes.getMode(t.modeId)) throw new Error(`Workbench mode not registered: ${t.modeId}`);
1957
+ e.modes.setActiveMode(t.modeId);
1958
+ }
1959
+ }), e.layout.registerMenuItem(K, {
1960
+ commandId: "workbench.action.switchMode",
1961
+ group: "Workbench"
1962
+ });
1963
+ }, k = (e, t) => ({
1964
+ ...t,
1965
+ source: e.source,
1966
+ ownerId: e.ownerId
1967
+ }), ee = (e) => e ? Array.isArray(e) ? [...e] : [e] : [], te = (e) => {
1968
+ for (let t = e.length - 1; t >= 0; t -= 1)
1969
+ e[t]?.dispose();
1970
+ }, re = (e, t) => {
1971
+ const a = e.context.createScope(t.ownerId);
1972
+ t.track(a);
1973
+ const o = (r) => (t.track(r), r);
1974
+ return {
1975
+ ...e,
1976
+ onDidChangePrimaryResource: (r) => o(e.onDidChangePrimaryResource(r)),
1977
+ onDidChangeActiveResource: (r) => o(e.onDidChangeActiveResource(r)),
1978
+ breadcrumbs: {
1979
+ ...e.breadcrumbs,
1980
+ setItems: (r) => o(e.breadcrumbs.setItems(r)),
1981
+ onDidChange: (r) => o(e.breadcrumbs.onDidChange(r))
1982
+ },
1983
+ commandPalette: {
1984
+ ...e.commandPalette,
1985
+ onDidChange: (r) => o(e.commandPalette.onDidChange(r))
1986
+ },
1987
+ context: {
1988
+ ...e.context,
1989
+ set: (r, n) => a.set(r, n),
1990
+ delete: (r) => a.delete(r),
1991
+ createScope: (r) => o(e.context.createScope(r))
1992
+ },
1993
+ focus: {
1994
+ ...e.focus,
1995
+ onDidChange: (r) => o(e.focus.onDidChange(r))
1996
+ },
1997
+ commands: {
1998
+ ...e.commands,
1999
+ registerCommand: (r, n, l) => o(e.commands.registerCommand(r, n, k(t, l))),
2000
+ onDidExecuteError: (r) => o(e.commands.onDidExecuteError(r))
2001
+ },
2002
+ keybindings: {
2003
+ ...e.keybindings,
2004
+ registerKeybinding: (r, n) => o(e.keybindings.registerKeybinding(r, k(t, n)))
2005
+ },
2006
+ lastResource: {
2007
+ ...e.lastResource
2008
+ },
2009
+ layout: {
2010
+ ...e.layout,
2011
+ openWidget: (r, n) => {
2012
+ const l = e.layout.openWidget(r, {
2013
+ ...n,
2014
+ ownerId: t.ownerId,
2015
+ source: t.source
2016
+ });
2017
+ return o(w(() => e.layout.removeWidgetPlacement(l.widgetId))), l;
2018
+ },
2019
+ registerPlaceholder: (r, n) => o(e.layout.registerPlaceholder(r, k(t, n))),
2020
+ registerWidget: (r, n) => o(e.layout.registerWidget(r, k(t, n))),
2021
+ registerMenuItem: (r, n, l) => o(e.layout.registerMenuItem(r, n, k(t, l))),
2022
+ onDidChangePersistenceScope: (r) => o(e.layout.onDidChangePersistenceScope(r))
2023
+ },
2024
+ modes: {
2025
+ ...e.modes,
2026
+ registerMode: (r) => o(e.modes.registerMode({
2027
+ ...r,
2028
+ activate: () => {
2029
+ const n = [], l = re(e, {
2030
+ ...t,
2031
+ track: (m) => {
2032
+ n.push(m);
2033
+ }
2034
+ }), y = ee(r.activate(l));
2035
+ return w(() => te([...n, ...y]));
2036
+ }
2037
+ })),
2038
+ onDidChangeActive: (r) => o(e.modes.onDidChangeActive(r))
2039
+ },
2040
+ navigation: {
2041
+ ...e.navigation,
2042
+ registerNavigator: (r, n) => o(e.navigation.registerNavigator(r, k(t, n))),
2043
+ registerParser: (r, n) => o(e.navigation.registerParser(r, k(t, n)))
2044
+ },
2045
+ notifications: {
2046
+ ...e.notifications,
2047
+ show: (r, n) => e.notifications.show(r, k(t, n))
2048
+ },
2049
+ panels: {
2050
+ ...e.panels,
2051
+ onDidChange: (r) => o(e.panels.onDidChange(r))
2052
+ },
2053
+ preferences: {
2054
+ ...e.preferences,
2055
+ registerSchema: (r, n) => o(e.preferences.registerSchema(r, k(t, n)))
2056
+ },
2057
+ renderers: {
2058
+ ...e.renderers,
2059
+ registerRenderer: (r) => o(e.renderers.registerRenderer(r)),
2060
+ registerTreeRenderer: (r, n) => o(e.renderers.registerTreeRenderer(r, k(t, n))),
2061
+ registerDataRenderer: (r, n) => o(e.renderers.registerDataRenderer(r, k(t, n))),
2062
+ registerFileRenderer: (r, n) => o(e.renderers.registerFileRenderer(r, k(t, n))),
2063
+ registerControlsRenderer: (r, n) => o(e.renderers.registerControlsRenderer(r, k(t, n))),
2064
+ onDidChange: (r) => o(e.renderers.onDidChange(r)),
2065
+ onDidRefresh: (r) => o(e.renderers.onDidRefresh(r))
2066
+ },
2067
+ resources: {
2068
+ ...e.resources,
2069
+ registerKind: (r, n) => o(e.resources.registerKind(r, k(t, n))),
2070
+ registerOpener: (r) => o(e.resources.registerOpener(r)),
2071
+ registerProvider: (r) => o(e.resources.registerProvider(r)),
2072
+ onDidOpenResource: (r) => o(e.resources.onDidOpenResource(r))
2073
+ },
2074
+ settings: {
2075
+ ...e.settings,
2076
+ registerSection: (r, n) => o(e.settings.registerSection(r, k(t, n))),
2077
+ registerPanel: (r, n) => o(e.settings.registerPanel(r, k(t, n)))
2078
+ },
2079
+ sessionPanel: {
2080
+ ...e.sessionPanel,
2081
+ onDidChange: (r) => o(e.sessionPanel.onDidChange(r))
2082
+ },
2083
+ themes: {
2084
+ ...e.themes,
2085
+ register: (r) => o(e.themes.register(r))
2086
+ },
2087
+ fileIconThemes: {
2088
+ ...e.fileIconThemes,
2089
+ register: (r) => o(e.fileIconThemes.register(r))
2090
+ }
2091
+ };
2092
+ }, ut = (e = {}) => {
2093
+ const t = oe(), a = De({
2094
+ context: t
2095
+ }), o = /* @__PURE__ */ new Map(), c = ae(e.renderers), r = Ge({
2096
+ rendererRegistry: c,
2097
+ persistence: e.treePersistence
2098
+ }), n = Ue({
2099
+ rendererRegistry: c
2100
+ }), l = Xe({
2101
+ rendererRegistry: c
2102
+ }), y = Qe({
2103
+ rendererRegistry: c
2104
+ }), m = {
2105
+ breadcrumbs: me(),
2106
+ commandPalette: fe(),
2107
+ commands: a,
2108
+ context: t,
2109
+ focus: Se({
2110
+ context: t
2111
+ }),
2112
+ history: void 0,
2113
+ keybindings: ce({
2114
+ commands: a,
2115
+ context: t
2116
+ }),
2117
+ lastResource: Ie({
2118
+ persistence: e.lastResourcePersistence,
2119
+ openResource: (g) => m.resources.openResource(g, {
2120
+ replaceActive: !0
2121
+ })
2122
+ }),
2123
+ layout: {
2124
+ ...Le({
2125
+ persistence: e.layoutPersistence
2126
+ }),
2127
+ ...Oe({
2128
+ commands: a
2129
+ })
2130
+ },
2131
+ modes: void 0,
2132
+ notifications: Ve(),
2133
+ navigation: Ke({
2134
+ resolveDispatcher: () => ({
2135
+ createCheckpoint: () => {
2136
+ const g = m.layout.getLayout();
2137
+ return () => m.layout.restoreLayout(g);
2138
+ },
2139
+ canOpenResource: (g) => {
2140
+ const s = m.resources.store.getState();
2141
+ return !!(s.kinds[g.kind] && Object.values(s.openers).some((i) => i.canOpen(g)));
2142
+ },
2143
+ canOpenWidget: (g) => !!m.layout.getWidget(g),
2144
+ canExecuteCommand: (g) => !!m.commands.getCommand(g),
2145
+ openResource: (g, s) => m.resources.openResource(g, s),
2146
+ openWidget: (g, s) => {
2147
+ const i = m.layout.openWidget(g, s), u = m.layout.getWidget(g), h = s?.area ?? u?.area;
2148
+ return h && (m.layout.setAreaVisible(h, !0), m.panels.isOpen(h) || m.panels.setOpen(h, !0)), i;
2149
+ },
2150
+ executeCommand: (g, s) => m.commands.executeCommand(g, s)
2151
+ })
2152
+ }),
2153
+ panels: Re({
2154
+ persistence: e.panelsPersistence
2155
+ }),
2156
+ preferences: He({
2157
+ persistence: e.preferencePersistence
2158
+ }),
2159
+ renderers: {
2160
+ ...c,
2161
+ ...r,
2162
+ ...n,
2163
+ ...l,
2164
+ ...y
2165
+ },
2166
+ commandPaletteResources: xe(),
2167
+ resources: ie({
2168
+ getPrimary: () => $(m.layout.getLayout(), "primary")
2169
+ }),
2170
+ settings: Je(),
2171
+ sessionPanel: Pe({
2172
+ initialMode: e.initialSessionPanelMode
2173
+ }),
2174
+ terminal: Ae(),
2175
+ themes: et(),
2176
+ fileIconThemes: Ze(),
2177
+ getActiveResource() {
2178
+ const g = m.layout.getLayout().activeWidgetId;
2179
+ if (g)
2180
+ for (const s of Object.values(m.layout.getLayout().areas)) {
2181
+ const i = s.widgets.find((u) => u.widgetId === g);
2182
+ if (i) return i.resource;
2183
+ }
2184
+ },
2185
+ onDidChangeActiveResource(g) {
2186
+ return w(m.layout.store.subscribeSelector((s) => s.layout.activeResourceUri, () => g(m.getActiveResource())));
2187
+ },
2188
+ getPrimaryResource() {
2189
+ return $(m.layout.getLayout(), "primary");
2190
+ },
2191
+ onDidChangePrimaryResource(g) {
2192
+ return w(m.layout.store.subscribeSelector((s) => W(s.layout.areas[N("primary")])?.resourceUri, () => g(m.getPrimaryResource())));
2193
+ },
2194
+ registerModule(g) {
2195
+ if (o.has(g.id)) throw new Error(`Workbench module already registered: ${g.id}`);
2196
+ const s = [], i = {
2197
+ disposable: void 0
2198
+ };
2199
+ i.disposable = w(() => {
2200
+ o.get(g.id) === i && (o.delete(g.id), te(s));
2201
+ }), o.set(g.id, i);
2202
+ try {
2203
+ const u = re(m, {
2204
+ ownerId: g.ownerId ?? g.id,
2205
+ source: g.source ?? "module",
2206
+ track: (h) => {
2207
+ s.push(h);
2208
+ }
2209
+ });
2210
+ s.push(...ee(g.activate(u)));
2211
+ } catch (u) {
2212
+ throw i.disposable.dispose(), u;
2213
+ }
2214
+ return i.disposable;
2215
+ },
2216
+ unregisterModule(g) {
2217
+ o.get(g)?.disposable.dispose();
2218
+ }
2219
+ };
2220
+ return m.modes = $e({
2221
+ resolveContext: () => m
2222
+ }), m.history = we({
2223
+ layout: m.layout,
2224
+ modes: m.modes,
2225
+ resources: m.resources
2226
+ }), m.layout.onDidChangePersistenceScope(() => {
2227
+ const g = m.layout.getLayout();
2228
+ for (const s of Object.values(g.areas))
2229
+ m.panels.setOpen(s.id, s.visible);
2230
+ }), m.onDidChangePrimaryResource((g) => {
2231
+ g && m.lastResource.set(g);
2232
+ }), rt({
2233
+ layout: m.layout,
2234
+ isInScope: e.isInScope ?? tt(m.resources)
2235
+ }), it(m), m;
2236
+ };
2237
+ export {
2238
+ De as a,
2239
+ Qe as b,
2240
+ xe as c,
2241
+ Ue as d,
2242
+ Ze as e,
2243
+ Xe as f,
2244
+ we as g,
2245
+ Le as h,
2246
+ Oe as i,
2247
+ Ke as j,
2248
+ Ve as k,
2249
+ He as l,
2250
+ Je as m,
2251
+ et as n,
2252
+ Ge as o,
2253
+ me as p,
2254
+ fe as q,
2255
+ ut as r,
2256
+ Se as s,
2257
+ Ie as t,
2258
+ $e as u,
2259
+ Re as v,
2260
+ Pe as w,
2261
+ Ae as x,
2262
+ he as y
2263
+ };
2264
+ //# sourceMappingURL=workbench-core-DFpwi8Lo.js.map