@pstdio/workbench 0.2.1 → 0.3.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.
Files changed (39) hide show
  1. package/README.md +100 -88
  2. package/dist/context-key-service-W4QEfVdN.js +1031 -0
  3. package/dist/context-key-service-W4QEfVdN.js.map +1 -0
  4. package/dist/extensions.d.ts +739 -275
  5. package/dist/extensions.js +891 -699
  6. package/dist/extensions.js.map +1 -1
  7. package/dist/file-renderer-view-DrrhYnb_.js.map +1 -1
  8. package/dist/index.d.ts +746 -448
  9. package/dist/index.js +2974 -60
  10. package/dist/index.js.map +1 -1
  11. package/dist/layout-types-DMoZz38-.js +100 -0
  12. package/dist/layout-types-DMoZz38-.js.map +1 -0
  13. package/dist/react.d.ts +735 -231
  14. package/dist/react.js +3562 -2584
  15. package/dist/react.js.map +1 -1
  16. package/dist/storage.d.ts +109 -14
  17. package/dist/storage.js +142 -47
  18. package/dist/storage.js.map +1 -1
  19. package/dist/surface-map-C1pOTUmF.js +52 -0
  20. package/dist/surface-map-C1pOTUmF.js.map +1 -0
  21. package/dist/testing.d.ts +685 -198
  22. package/dist/testing.js +46 -34
  23. package/dist/testing.js.map +1 -1
  24. package/dist/webview-runtime.js +5 -1
  25. package/dist/webview-runtime.js.map +1 -1
  26. package/dist/workbench-menu-paths-B_QJzcNU.js +12 -0
  27. package/dist/workbench-menu-paths-B_QJzcNU.js.map +1 -0
  28. package/package.json +6 -7
  29. package/dist/context-key-service-C--cHa0B.js +0 -447
  30. package/dist/context-key-service-C--cHa0B.js.map +0 -1
  31. package/dist/core.d.ts +0 -1885
  32. package/dist/core.js +0 -64
  33. package/dist/core.js.map +0 -1
  34. package/dist/surface-reconcile-DkRf01ro.js +0 -260
  35. package/dist/surface-reconcile-DkRf01ro.js.map +0 -1
  36. package/dist/workbench-core-DFpwi8Lo.js +0 -2264
  37. package/dist/workbench-core-DFpwi8Lo.js.map +0 -1
  38. package/dist/workbench-menu-paths-CQVH6z4_.js +0 -11
  39. package/dist/workbench-menu-paths-CQVH6z4_.js.map +0 -1
@@ -1,2264 +0,0 @@
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