@pstdio/workbench 0.11.4 → 0.35.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.
- package/dist/extensions.d.ts +1132 -3575
- package/dist/extensions.js +2049 -2397
- package/dist/extensions.js.map +1 -1
- package/dist/file-renderer-view-CZhPOpNc.js +628 -0
- package/dist/file-renderer-view-CZhPOpNc.js.map +1 -0
- package/dist/index-DDmpcM-n.d.ts +2336 -0
- package/dist/index.d.ts +3 -2621
- package/dist/index.js +5366 -6049
- package/dist/index.js.map +1 -1
- package/dist/kanban-presentation-CX6Smht6.d.ts +14 -0
- package/dist/react-C8jwnIWT.js +8356 -0
- package/dist/react-C8jwnIWT.js.map +1 -0
- package/dist/react.d.ts +398 -2846
- package/dist/react.js +2 -5269
- package/dist/storage.d.ts +48 -282
- package/dist/storage.js +218 -225
- package/dist/storage.js.map +1 -1
- package/dist/webview-runtime.d.ts +8 -7
- package/dist/webview-runtime.js +10 -11
- package/dist/webview-runtime.js.map +1 -1
- package/dist/workbench-renderers-BK6g8mG_.js +803 -0
- package/dist/workbench-renderers-BK6g8mG_.js.map +1 -0
- package/package.json +3 -3
- package/dist/file-renderer-view-Bfmw6RxV.js +0 -515
- package/dist/file-renderer-view-Bfmw6RxV.js.map +0 -1
- package/dist/react.js.map +0 -1
- package/dist/workbench-menu-paths-B_QJzcNU.js +0 -12
- package/dist/workbench-menu-paths-B_QJzcNU.js.map +0 -1
- package/dist/workbench-renderers-BhgHQ-Ne.js +0 -871
- package/dist/workbench-renderers-BhgHQ-Ne.js.map +0 -1
- package/dist/workspaces-B9HZHIbz.js +0 -1875
- package/dist/workspaces-B9HZHIbz.js.map +0 -1
|
@@ -0,0 +1,2336 @@
|
|
|
1
|
+
import { ControlValue, ControlValueMap, ControlsQueryResult, ControlsQueryResult as ControlsQueryResult$1, DockedWorkbenchRegion, DockedWorkbenchRegion as DockedWorkbenchRegion$1, FileRendererSectionTarget, KanbanRendererAttributeDisplay, Localizable, ModeRegionSettings, NavigationTargetPage, NavigationTargetPanel, PageLocation, PageMain, PageOpenIntent, PageRef, PageSlot, PlacementIdentity, PlacementItem, PlacementRef, ResourceConstraint, ResourceRef, ResourceRef as ResourceRef$1, defaultPageResourceCodec, dockedWorkbenchRegions } from "@pstdio/sdk/extensions";
|
|
2
|
+
//#region src/core/shared/disposable.d.ts
|
|
3
|
+
interface Disposable {
|
|
4
|
+
dispose(): void;
|
|
5
|
+
}
|
|
6
|
+
//#endregion
|
|
7
|
+
//#region src/core/shared/store/workbench-store.d.ts
|
|
8
|
+
type WorkbenchStoreSelector<TState, TValue> = (state: TState) => TValue;
|
|
9
|
+
type WorkbenchStoreListener<TState> = (state: TState, previousState: TState) => void;
|
|
10
|
+
type WorkbenchStoreSelectorListener<TValue> = (value: TValue, previousValue: TValue) => void;
|
|
11
|
+
interface WorkbenchStore<TState> {
|
|
12
|
+
getState(): TState;
|
|
13
|
+
getInitialState(): TState;
|
|
14
|
+
subscribe(listener: WorkbenchStoreListener<TState>): () => void;
|
|
15
|
+
subscribeSelector<TValue>(selector: WorkbenchStoreSelector<TState, TValue>, listener: WorkbenchStoreSelectorListener<TValue>, options?: {
|
|
16
|
+
equalityFn?: (left: TValue, right: TValue) => boolean;
|
|
17
|
+
fireImmediately?: boolean;
|
|
18
|
+
}): () => void;
|
|
19
|
+
}
|
|
20
|
+
//#endregion
|
|
21
|
+
//#region src/core/shared/context/context-key-service.d.ts
|
|
22
|
+
type ContextKeyValue = boolean | number | string | undefined;
|
|
23
|
+
interface ContextKeyStoreState {
|
|
24
|
+
values: Record<string, ContextKeyValue>;
|
|
25
|
+
}
|
|
26
|
+
interface ContextKeyScope extends Disposable {
|
|
27
|
+
ownerId: string;
|
|
28
|
+
set(key: string, value: ContextKeyValue): void;
|
|
29
|
+
get(key: string): ContextKeyValue;
|
|
30
|
+
delete(key: string): void;
|
|
31
|
+
}
|
|
32
|
+
interface ContextKeyService {
|
|
33
|
+
store: WorkbenchStore<ContextKeyStoreState>;
|
|
34
|
+
set(key: string, value: ContextKeyValue): void;
|
|
35
|
+
get(key: string): ContextKeyValue;
|
|
36
|
+
delete(key: string): void;
|
|
37
|
+
createScope(ownerId: string): ContextKeyScope;
|
|
38
|
+
deleteOwner(ownerId: string): void;
|
|
39
|
+
snapshot(): Record<string, ContextKeyValue>;
|
|
40
|
+
matches(expression?: string): boolean;
|
|
41
|
+
}
|
|
42
|
+
declare const matchesContextExpression: (values: Record<string, ContextKeyValue>, expression?: string) => boolean;
|
|
43
|
+
//#endregion
|
|
44
|
+
//#region src/core/shared/contributions/metadata.d.ts
|
|
45
|
+
type ContributionSource = "module" | "extension";
|
|
46
|
+
interface ContributionMetadata {
|
|
47
|
+
source?: ContributionSource;
|
|
48
|
+
ownerId?: string;
|
|
49
|
+
priority?: number;
|
|
50
|
+
}
|
|
51
|
+
interface RegisteredContributionMetadata {
|
|
52
|
+
source: ContributionSource;
|
|
53
|
+
ownerId: string;
|
|
54
|
+
priority: number;
|
|
55
|
+
}
|
|
56
|
+
//#endregion
|
|
57
|
+
//#region src/core/registries/resources/resource-hierarchy.d.ts
|
|
58
|
+
interface WorkbenchViewHierarchyNode {
|
|
59
|
+
type: "view";
|
|
60
|
+
viewId: string;
|
|
61
|
+
label?: string;
|
|
62
|
+
icon?: string;
|
|
63
|
+
}
|
|
64
|
+
type WorkbenchHierarchyNode = ResourceRef$1 | WorkbenchViewHierarchyNode;
|
|
65
|
+
declare const isWorkbenchViewHierarchyNode: (node: WorkbenchHierarchyNode) => node is WorkbenchViewHierarchyNode;
|
|
66
|
+
interface ResourceHierarchyProvider {
|
|
67
|
+
id: string;
|
|
68
|
+
priority?: number;
|
|
69
|
+
canResolve(resource: ResourceRef$1): boolean;
|
|
70
|
+
getParent(resource: ResourceRef$1): WorkbenchHierarchyNode | undefined;
|
|
71
|
+
}
|
|
72
|
+
type ResolvedResourceHierarchyProvider = Required<ResourceHierarchyProvider>;
|
|
73
|
+
declare const resourceHierarchyCycleCode = "resource_hierarchy_cycle";
|
|
74
|
+
interface ResourceHierarchyCycle {
|
|
75
|
+
code: typeof resourceHierarchyCycleCode;
|
|
76
|
+
path: WorkbenchHierarchyNode[];
|
|
77
|
+
repeatedUri: string;
|
|
78
|
+
}
|
|
79
|
+
//#endregion
|
|
80
|
+
//#region src/core/registries/resources/resource-registry.d.ts
|
|
81
|
+
declare const workbenchResourceTypeContextKey = "workbench.resource.type";
|
|
82
|
+
declare const workbenchResourceIdContextKey = "workbench.resource.id";
|
|
83
|
+
declare const workbenchResourceMetadataContextKey: (key: string) => string;
|
|
84
|
+
declare const workbenchSelectionResourceKeyMetadataKey = "workbench.selectionResourceKey";
|
|
85
|
+
declare const createWorkbenchResourceContextValues: (resource: ResourceRef | undefined) => Record<string, ContextKeyValue>;
|
|
86
|
+
declare const createWorkbenchSelectionResourceMetadata: (resource: ResourceRef) => {
|
|
87
|
+
"workbench.selectionResourceKey": string;
|
|
88
|
+
};
|
|
89
|
+
declare const getWorkbenchSelectionResourceKeys: (resource: ResourceRef | undefined) => string[];
|
|
90
|
+
interface ResourceKindContribution {
|
|
91
|
+
kind: string;
|
|
92
|
+
label: string;
|
|
93
|
+
icon?: string;
|
|
94
|
+
}
|
|
95
|
+
interface RegisteredResourceKind extends ResourceKindContribution, RegisteredContributionMetadata {}
|
|
96
|
+
interface ResourceBrowseEntry {
|
|
97
|
+
resource: ResourceRef;
|
|
98
|
+
searchText?: string;
|
|
99
|
+
description?: string;
|
|
100
|
+
group?: string;
|
|
101
|
+
order?: number;
|
|
102
|
+
activate?: (resource: ResourceRef) => unknown | Promise<unknown>;
|
|
103
|
+
}
|
|
104
|
+
interface ResourceListContext {
|
|
105
|
+
primary?: ResourceRef;
|
|
106
|
+
}
|
|
107
|
+
interface ResourceProvider {
|
|
108
|
+
id: string;
|
|
109
|
+
kind: string;
|
|
110
|
+
list(query: string, context: ResourceListContext): readonly ResourceBrowseEntry[];
|
|
111
|
+
}
|
|
112
|
+
interface ResourceRegistryStoreState {
|
|
113
|
+
kinds: Record<string, RegisteredResourceKind>;
|
|
114
|
+
providers: Record<string, ResourceProvider>;
|
|
115
|
+
hierarchyProviders: Record<string, ResolvedResourceHierarchyProvider>;
|
|
116
|
+
}
|
|
117
|
+
interface ResourceRegistry {
|
|
118
|
+
removed(resource: ResourceRef): void;
|
|
119
|
+
onWillRemove(listener: (resource: ResourceRef) => readonly PlacementIdentity[]): Disposable;
|
|
120
|
+
store: WorkbenchStore<ResourceRegistryStoreState>;
|
|
121
|
+
registerKind(kind: ResourceKindContribution, metadata?: ContributionMetadata): Disposable;
|
|
122
|
+
getKind(kind: string): RegisteredResourceKind | undefined;
|
|
123
|
+
listKinds(): RegisteredResourceKind[];
|
|
124
|
+
registerProvider(provider: ResourceProvider): Disposable;
|
|
125
|
+
listProviders(): ResourceProvider[];
|
|
126
|
+
listResources(query: string): readonly ResourceBrowseEntry[];
|
|
127
|
+
registerHierarchyProvider(provider: ResourceHierarchyProvider): Disposable;
|
|
128
|
+
listHierarchyProviders(): ResolvedResourceHierarchyProvider[];
|
|
129
|
+
walkHierarchy(resource: ResourceRef | undefined): WorkbenchHierarchyNode[];
|
|
130
|
+
onDidDetectHierarchyCycle(listener: (cycle: ResourceHierarchyCycle) => void): Disposable;
|
|
131
|
+
}
|
|
132
|
+
//#endregion
|
|
133
|
+
//#region src/core/controllers/breadcrumbs/breadcrumb-registry.d.ts
|
|
134
|
+
interface WorkbenchBreadcrumbItem {
|
|
135
|
+
title: unknown;
|
|
136
|
+
icon?: string;
|
|
137
|
+
indicator?: "session-status";
|
|
138
|
+
url?: string;
|
|
139
|
+
onClick?: () => void;
|
|
140
|
+
resource?: ResourceRef$1;
|
|
141
|
+
}
|
|
142
|
+
type WorkbenchBreadcrumbChangeListener = () => void;
|
|
143
|
+
interface WorkbenchBreadcrumbState {
|
|
144
|
+
items: WorkbenchBreadcrumbItem[] | undefined;
|
|
145
|
+
}
|
|
146
|
+
interface WorkbenchBreadcrumbController {
|
|
147
|
+
store: WorkbenchStore<WorkbenchBreadcrumbState>;
|
|
148
|
+
setItems(items: WorkbenchBreadcrumbItem[]): Disposable;
|
|
149
|
+
clearItems(): void;
|
|
150
|
+
getItems(): WorkbenchBreadcrumbItem[] | undefined;
|
|
151
|
+
onDidChange(listener: WorkbenchBreadcrumbChangeListener): Disposable;
|
|
152
|
+
}
|
|
153
|
+
//#endregion
|
|
154
|
+
//#region src/core/registries/commands/command-registry.d.ts
|
|
155
|
+
interface WorkbenchCommandExecutionError {
|
|
156
|
+
commandId: string;
|
|
157
|
+
args: unknown;
|
|
158
|
+
error: unknown;
|
|
159
|
+
}
|
|
160
|
+
type WorkbenchCommandExecutionErrorListener = (event: WorkbenchCommandExecutionError) => void;
|
|
161
|
+
interface WorkbenchCommandExecutionContext {
|
|
162
|
+
resource?: ResourceRef$1;
|
|
163
|
+
source?: "panel-add";
|
|
164
|
+
}
|
|
165
|
+
interface CommandParamOption {
|
|
166
|
+
label: string;
|
|
167
|
+
value: string;
|
|
168
|
+
icon?: string;
|
|
169
|
+
}
|
|
170
|
+
interface CommandParamDescriptor {
|
|
171
|
+
type: string;
|
|
172
|
+
label?: string;
|
|
173
|
+
description?: string;
|
|
174
|
+
required?: boolean;
|
|
175
|
+
defaultValue?: unknown;
|
|
176
|
+
options?: CommandParamOption[];
|
|
177
|
+
templateType?: string;
|
|
178
|
+
resourceType?: string;
|
|
179
|
+
accept?: string;
|
|
180
|
+
multiple?: boolean;
|
|
181
|
+
metadata?: Record<string, unknown>;
|
|
182
|
+
resolvedFrom?: "resource";
|
|
183
|
+
}
|
|
184
|
+
type CommandParamSchema = Record<string, CommandParamDescriptor>;
|
|
185
|
+
interface Command {
|
|
186
|
+
id: string;
|
|
187
|
+
label: string;
|
|
188
|
+
category?: string;
|
|
189
|
+
description?: string;
|
|
190
|
+
icon?: string;
|
|
191
|
+
when?: string;
|
|
192
|
+
params?: CommandParamSchema;
|
|
193
|
+
}
|
|
194
|
+
interface CommandHandler<TArgs = unknown, TResult = unknown> {
|
|
195
|
+
prepareArgs?(args: TArgs, context?: WorkbenchCommandExecutionContext, onArgsChange?: (args: TArgs) => void): TArgs | Promise<TArgs>;
|
|
196
|
+
execute(args: TArgs, context?: WorkbenchCommandExecutionContext): TResult | Promise<TResult>;
|
|
197
|
+
isEnabled?(args: TArgs): boolean;
|
|
198
|
+
isVisible?(args: TArgs): boolean;
|
|
199
|
+
isToggled?(args: TArgs): boolean;
|
|
200
|
+
}
|
|
201
|
+
interface RegisteredCommand extends RegisteredContributionMetadata {
|
|
202
|
+
command: Command;
|
|
203
|
+
handler: CommandHandler;
|
|
204
|
+
}
|
|
205
|
+
interface CommandRegistryStoreState {
|
|
206
|
+
commands: Record<string, RegisteredCommand>;
|
|
207
|
+
}
|
|
208
|
+
interface CommandRegistry {
|
|
209
|
+
store: WorkbenchStore<CommandRegistryStoreState>;
|
|
210
|
+
registerCommand<TArgs = unknown, TResult = unknown>(command: Command, handler: CommandHandler<TArgs, TResult>, metadata?: ContributionMetadata): Disposable;
|
|
211
|
+
getCommand(id: string): RegisteredCommand | undefined;
|
|
212
|
+
listCommands(): RegisteredCommand[];
|
|
213
|
+
isCommandEnabled(id: string, args?: unknown): boolean;
|
|
214
|
+
isCommandVisible(id: string, args?: unknown): boolean;
|
|
215
|
+
isCommandToggled(id: string, args?: unknown): boolean;
|
|
216
|
+
prepareCommandArgs(id: string, args: unknown, context?: WorkbenchCommandExecutionContext, onArgsChange?: (args: unknown) => void): Promise<unknown>;
|
|
217
|
+
executeCommand(id: string, args?: unknown, context?: WorkbenchCommandExecutionContext): Promise<unknown>;
|
|
218
|
+
onDidExecuteError(listener: WorkbenchCommandExecutionErrorListener): Disposable;
|
|
219
|
+
}
|
|
220
|
+
//#endregion
|
|
221
|
+
//#region src/core/controllers/command-palette/command-palette-controller.d.ts
|
|
222
|
+
type WorkbenchCommandPaletteChangeListener = (open: boolean) => void;
|
|
223
|
+
type WorkbenchCommandPaletteView = "main" | "theme";
|
|
224
|
+
interface WorkbenchCommandParamsRequest {
|
|
225
|
+
record: {
|
|
226
|
+
command: {
|
|
227
|
+
id: string;
|
|
228
|
+
label: string;
|
|
229
|
+
params?: CommandParamSchema;
|
|
230
|
+
};
|
|
231
|
+
};
|
|
232
|
+
label: string;
|
|
233
|
+
args?: unknown;
|
|
234
|
+
context?: WorkbenchCommandExecutionContext;
|
|
235
|
+
}
|
|
236
|
+
interface WorkbenchCommandPaletteState {
|
|
237
|
+
open: boolean;
|
|
238
|
+
view: WorkbenchCommandPaletteView;
|
|
239
|
+
initialQuery: string;
|
|
240
|
+
paramsRequest: WorkbenchCommandParamsRequest | null;
|
|
241
|
+
}
|
|
242
|
+
interface WorkbenchCommandPaletteOpenInput {
|
|
243
|
+
view?: WorkbenchCommandPaletteView;
|
|
244
|
+
initialQuery?: string;
|
|
245
|
+
}
|
|
246
|
+
interface WorkbenchCommandPaletteController {
|
|
247
|
+
store: WorkbenchStore<WorkbenchCommandPaletteState>;
|
|
248
|
+
isOpen(): boolean;
|
|
249
|
+
getView(): WorkbenchCommandPaletteView;
|
|
250
|
+
getInitialQuery(): string;
|
|
251
|
+
getParamsRequest(): WorkbenchCommandParamsRequest | null;
|
|
252
|
+
open(input?: WorkbenchCommandPaletteOpenInput): void;
|
|
253
|
+
close(): void;
|
|
254
|
+
toggle(): void;
|
|
255
|
+
requestParams(request: WorkbenchCommandParamsRequest): void;
|
|
256
|
+
clearParams(): void;
|
|
257
|
+
onDidChange(listener: WorkbenchCommandPaletteChangeListener): Disposable;
|
|
258
|
+
}
|
|
259
|
+
//#endregion
|
|
260
|
+
//#region src/core/registries/navigation/navigation-registry.d.ts
|
|
261
|
+
/** Core-only panel ref for host-owned shell placements. Extensions cannot address them. */
|
|
262
|
+
interface ShellPlacementRef {
|
|
263
|
+
kind: "shell-placement";
|
|
264
|
+
id: string;
|
|
265
|
+
}
|
|
266
|
+
interface NavigationTargetShellPanel {
|
|
267
|
+
kind: "panel";
|
|
268
|
+
panel: ShellPlacementRef;
|
|
269
|
+
resource?: NavigationTargetPanel["resource"];
|
|
270
|
+
open?: NavigationTargetPanel["open"];
|
|
271
|
+
title?: string;
|
|
272
|
+
}
|
|
273
|
+
type NavigationTargetPanel$1 = NavigationTargetPanel | NavigationTargetShellPanel;
|
|
274
|
+
type NavigationTargetPage$1 = NavigationTargetPage;
|
|
275
|
+
type DistributiveOmit<T, K extends PropertyKey> = T extends unknown ? Omit<T, K> : never;
|
|
276
|
+
interface NavigationTargetCommand {
|
|
277
|
+
kind: "command";
|
|
278
|
+
commandId: string;
|
|
279
|
+
args?: unknown;
|
|
280
|
+
}
|
|
281
|
+
interface NavigationTargetHref {
|
|
282
|
+
kind: "href";
|
|
283
|
+
href: string;
|
|
284
|
+
}
|
|
285
|
+
type NavigationTargetItem = NavigationTargetPage$1 | NavigationTargetPanel$1 | NavigationTargetCommand | NavigationTargetHref;
|
|
286
|
+
interface NavigationTargetCompound {
|
|
287
|
+
kind: "compound";
|
|
288
|
+
targets: readonly (NavigationTargetPage$1 | NavigationTargetPanel$1)[];
|
|
289
|
+
}
|
|
290
|
+
type NavigationTarget$1 = NavigationTargetItem | NavigationTargetCompound;
|
|
291
|
+
interface NavigationParser {
|
|
292
|
+
id: string;
|
|
293
|
+
priority?: number;
|
|
294
|
+
canParse(location: string): boolean;
|
|
295
|
+
parse(location: string): NavigationTarget$1;
|
|
296
|
+
}
|
|
297
|
+
type RegisteredNavigationParser = Omit<NavigationParser, "priority"> & RegisteredContributionMetadata;
|
|
298
|
+
interface NavigationDispatcherContext {
|
|
299
|
+
canOpenPanel?(target: NavigationTargetPanel$1): boolean;
|
|
300
|
+
canExecuteCommand?(commandId: string): boolean;
|
|
301
|
+
prepareNavigation?(targets: readonly (NavigationTargetPage$1 | NavigationTargetPanel$1)[]): {
|
|
302
|
+
commit(): unknown;
|
|
303
|
+
};
|
|
304
|
+
openPanelTarget?(target: NavigationTargetPanel$1): unknown;
|
|
305
|
+
openPageTarget?(target: NavigationTargetPage$1): unknown;
|
|
306
|
+
executeCommand(commandId: string, args?: unknown): Promise<unknown> | unknown;
|
|
307
|
+
openHref?(href: string): Promise<unknown> | unknown;
|
|
308
|
+
}
|
|
309
|
+
interface NavigationRegistryStoreState {
|
|
310
|
+
parsers: Record<string, RegisteredNavigationParser>;
|
|
311
|
+
}
|
|
312
|
+
interface NavigationRegistry {
|
|
313
|
+
store: WorkbenchStore<NavigationRegistryStoreState>;
|
|
314
|
+
registerParser(parser: NavigationParser, metadata?: ContributionMetadata): Disposable;
|
|
315
|
+
listParsers(): RegisteredNavigationParser[];
|
|
316
|
+
resolveLocation(location: string): NavigationTarget$1;
|
|
317
|
+
openTarget(target: NavigationTarget$1): Promise<readonly unknown[]>;
|
|
318
|
+
/** Opens a page location through the shared executor. */
|
|
319
|
+
openPage(target: Omit<NavigationTargetPage$1, "kind">): Promise<readonly unknown[]>;
|
|
320
|
+
/** Opens or activates an owned panel through the shared executor. */
|
|
321
|
+
openPanel(target: DistributiveOmit<NavigationTargetPanel$1, "kind">): Promise<readonly unknown[]>;
|
|
322
|
+
navigate(location: string): Promise<readonly unknown[]>;
|
|
323
|
+
}
|
|
324
|
+
//#endregion
|
|
325
|
+
//#region src/core/registries/layout/layout-regions.d.ts
|
|
326
|
+
declare const workbenchRegions: readonly ["nav", "activity", "sidenav", "main-header", "main-left-menu", "main", "main-right-menu", "secondary-header", "secondary-left-menu", "secondary", "secondary-right-menu", "side-header", "side-left-menu", "side", "side-right-menu", "status", "overlay"];
|
|
327
|
+
type WorkbenchRegion = (typeof workbenchRegions)[number];
|
|
328
|
+
declare const workbenchPanelRegions: readonly ["main", "secondary", "side"];
|
|
329
|
+
type WorkbenchPanelRegion = (typeof workbenchPanelRegions)[number];
|
|
330
|
+
type WorkbenchPanelMenuSide = "left" | "right";
|
|
331
|
+
declare const workbenchPanelMenuRegions: {
|
|
332
|
+
readonly main: {
|
|
333
|
+
readonly left: "main-left-menu";
|
|
334
|
+
readonly right: "main-right-menu";
|
|
335
|
+
};
|
|
336
|
+
readonly secondary: {
|
|
337
|
+
readonly left: "secondary-left-menu";
|
|
338
|
+
readonly right: "secondary-right-menu";
|
|
339
|
+
};
|
|
340
|
+
readonly side: {
|
|
341
|
+
readonly left: "side-left-menu";
|
|
342
|
+
readonly right: "side-right-menu";
|
|
343
|
+
};
|
|
344
|
+
};
|
|
345
|
+
type WorkbenchPanelMenuRegion = (typeof workbenchPanelMenuRegions)[WorkbenchPanelRegion][WorkbenchPanelMenuSide];
|
|
346
|
+
//#endregion
|
|
347
|
+
//#region src/core/registries/layout/layout-types.d.ts
|
|
348
|
+
interface WorkbenchRegionSize {
|
|
349
|
+
defaultPx?: number;
|
|
350
|
+
minPx?: number;
|
|
351
|
+
maxPx?: number;
|
|
352
|
+
}
|
|
353
|
+
/** Region-level layout policy owned by the active mode or the host, never by a placement. */
|
|
354
|
+
type WorkbenchRegionSettings = ModeRegionSettings;
|
|
355
|
+
type WidgetReusePolicy = "resource" | "none";
|
|
356
|
+
type WidgetMountStrategy = "active" | "keep-mounted";
|
|
357
|
+
type WorkbenchPanelReusePolicy = WidgetReusePolicy;
|
|
358
|
+
type WorkbenchPanelMountStrategy = WidgetMountStrategy;
|
|
359
|
+
type WorkbenchWidgetRole = "content" | "location" | "sub-panel" | "panel-menu";
|
|
360
|
+
type WorkbenchTabRetention = "preview" | "persistent";
|
|
361
|
+
type WorkbenchTabPosition = "start" | "end" | {
|
|
362
|
+
beforeWidgetId: string;
|
|
363
|
+
} | {
|
|
364
|
+
afterWidgetId: string;
|
|
365
|
+
};
|
|
366
|
+
interface WorkbenchLocationEligibility {
|
|
367
|
+
modeIds?: string[];
|
|
368
|
+
resourceKinds?: string[];
|
|
369
|
+
resourceIds?: string[];
|
|
370
|
+
canOpen?(resource: ResourceRef$1): boolean;
|
|
371
|
+
canOpenLocation?(location: {
|
|
372
|
+
resource?: ResourceRef$1;
|
|
373
|
+
viewId?: string;
|
|
374
|
+
}): boolean;
|
|
375
|
+
}
|
|
376
|
+
type WorkbenchPanelMenuOwner = {
|
|
377
|
+
level: "panel";
|
|
378
|
+
contributionId?: string;
|
|
379
|
+
} | {
|
|
380
|
+
level: "sub-panel";
|
|
381
|
+
contributionId: string;
|
|
382
|
+
};
|
|
383
|
+
interface WorkbenchCommandTarget {
|
|
384
|
+
commandId: string;
|
|
385
|
+
args?: unknown;
|
|
386
|
+
}
|
|
387
|
+
type WorkbenchTabAction = ({
|
|
388
|
+
kind: "command";
|
|
389
|
+
} & WorkbenchCommandTarget) | {
|
|
390
|
+
kind: "navigation";
|
|
391
|
+
target: NavigationTarget$1;
|
|
392
|
+
};
|
|
393
|
+
interface WorkbenchTabMenuRow {
|
|
394
|
+
id: string;
|
|
395
|
+
label: string;
|
|
396
|
+
icon?: string;
|
|
397
|
+
iconColor?: string;
|
|
398
|
+
selected?: boolean;
|
|
399
|
+
disabled?: boolean;
|
|
400
|
+
action?: WorkbenchTabAction;
|
|
401
|
+
}
|
|
402
|
+
interface WorkbenchTabMenuGroup {
|
|
403
|
+
id: string;
|
|
404
|
+
rows: readonly WorkbenchTabMenuRow[];
|
|
405
|
+
}
|
|
406
|
+
interface WorkbenchTabSnapshot {
|
|
407
|
+
label?: string;
|
|
408
|
+
icon?: string;
|
|
409
|
+
indicator?: {
|
|
410
|
+
icon: string;
|
|
411
|
+
color?: string;
|
|
412
|
+
label?: string;
|
|
413
|
+
};
|
|
414
|
+
menu?: readonly WorkbenchTabMenuGroup[];
|
|
415
|
+
}
|
|
416
|
+
interface WorkbenchWidgetTab {
|
|
417
|
+
getSnapshot(instance: WorkbenchPanelInstance): WorkbenchTabSnapshot;
|
|
418
|
+
subscribe?(listener: () => void): {
|
|
419
|
+
dispose(): void;
|
|
420
|
+
} | (() => void);
|
|
421
|
+
refreshEvents?: readonly string[];
|
|
422
|
+
}
|
|
423
|
+
type WorkbenchPanelTab = WorkbenchWidgetTab;
|
|
424
|
+
interface WidgetContribution {
|
|
425
|
+
id: string;
|
|
426
|
+
title: string;
|
|
427
|
+
icon?: string;
|
|
428
|
+
region: WorkbenchRegion;
|
|
429
|
+
fallbackRegion?: WorkbenchRegion;
|
|
430
|
+
singleton?: boolean;
|
|
431
|
+
reuse?: WidgetReusePolicy;
|
|
432
|
+
mountStrategy?: WidgetMountStrategy;
|
|
433
|
+
closable?: boolean;
|
|
434
|
+
hiddenByDefault?: boolean;
|
|
435
|
+
regionSize?: WorkbenchRegionSize;
|
|
436
|
+
regionCollapsible?: boolean;
|
|
437
|
+
headerBorderBottom?: boolean;
|
|
438
|
+
resourceKinds?: string[];
|
|
439
|
+
priority?: number;
|
|
440
|
+
rendererId: string;
|
|
441
|
+
openCommand?: WorkbenchCommandTarget;
|
|
442
|
+
eligibleLocations?: WorkbenchLocationEligibility;
|
|
443
|
+
panelMenuOwner?: WorkbenchPanelMenuOwner;
|
|
444
|
+
tab?: WorkbenchWidgetTab;
|
|
445
|
+
config?: unknown;
|
|
446
|
+
canOpen?(resource: ResourceRef$1): boolean;
|
|
447
|
+
}
|
|
448
|
+
interface WorkbenchPanelMenuDefinition {
|
|
449
|
+
id: string;
|
|
450
|
+
title: string;
|
|
451
|
+
icon?: string;
|
|
452
|
+
side: WorkbenchPanelMenuSide;
|
|
453
|
+
singleton?: boolean;
|
|
454
|
+
reuse?: WorkbenchPanelReusePolicy;
|
|
455
|
+
mountStrategy?: WorkbenchPanelMountStrategy;
|
|
456
|
+
hiddenByDefault?: boolean;
|
|
457
|
+
regionSize?: WorkbenchRegionSize;
|
|
458
|
+
regionCollapsible?: boolean;
|
|
459
|
+
headerBorderBottom?: boolean;
|
|
460
|
+
rendererId: string;
|
|
461
|
+
priority?: number;
|
|
462
|
+
config?: unknown;
|
|
463
|
+
}
|
|
464
|
+
interface WorkbenchPanelContribution {
|
|
465
|
+
id: string;
|
|
466
|
+
title: string;
|
|
467
|
+
icon?: string;
|
|
468
|
+
region: WorkbenchRegion;
|
|
469
|
+
fallbackRegion?: WorkbenchRegion;
|
|
470
|
+
rendererId: string;
|
|
471
|
+
singleton?: boolean;
|
|
472
|
+
reuse?: WorkbenchPanelReusePolicy;
|
|
473
|
+
mountStrategy?: WorkbenchPanelMountStrategy;
|
|
474
|
+
closable?: boolean;
|
|
475
|
+
hiddenByDefault?: boolean;
|
|
476
|
+
regionSize?: WorkbenchRegionSize;
|
|
477
|
+
regionCollapsible?: boolean;
|
|
478
|
+
headerBorderBottom?: boolean;
|
|
479
|
+
resourceKinds?: string[];
|
|
480
|
+
eligibleLocations?: WorkbenchLocationEligibility;
|
|
481
|
+
priority?: number;
|
|
482
|
+
openCommand?: WorkbenchCommandTarget;
|
|
483
|
+
tab?: WorkbenchPanelTab;
|
|
484
|
+
config?: unknown;
|
|
485
|
+
canOpen?(resource: ResourceRef$1): boolean;
|
|
486
|
+
ownerId?: string;
|
|
487
|
+
source?: ContributionSource;
|
|
488
|
+
panelMenus?: readonly WorkbenchPanelMenuDefinition[];
|
|
489
|
+
}
|
|
490
|
+
type WorkbenchPanelMenuContribution = Omit<WidgetContribution, "region" | "fallbackRegion"> & {
|
|
491
|
+
region: WorkbenchPanelMenuRegion;
|
|
492
|
+
fallbackRegion?: WorkbenchPanelMenuRegion;
|
|
493
|
+
};
|
|
494
|
+
type RegisteredWidgetContribution = Omit<WidgetContribution, "priority" | "singleton" | "reuse"> & {
|
|
495
|
+
ownedPanelMenuIds?: readonly string[];
|
|
496
|
+
singleton: boolean;
|
|
497
|
+
reuse: WidgetReusePolicy;
|
|
498
|
+
} & RegisteredContributionMetadata;
|
|
499
|
+
interface PlaceholderContribution {
|
|
500
|
+
id: string;
|
|
501
|
+
title: string;
|
|
502
|
+
region: WorkbenchRegion;
|
|
503
|
+
rendererId: string;
|
|
504
|
+
regionSize?: WorkbenchRegionSize;
|
|
505
|
+
regionCollapsible?: boolean;
|
|
506
|
+
config?: unknown;
|
|
507
|
+
priority?: number;
|
|
508
|
+
}
|
|
509
|
+
type RegisteredPlaceholderContribution = Omit<PlaceholderContribution, "priority"> & RegisteredContributionMetadata;
|
|
510
|
+
interface WorkbenchWidgetPlacement {
|
|
511
|
+
widgetId: string;
|
|
512
|
+
contributionId: string;
|
|
513
|
+
placementIdentity?: PlacementIdentity;
|
|
514
|
+
viewId?: string;
|
|
515
|
+
ownerId?: string;
|
|
516
|
+
source?: ContributionSource;
|
|
517
|
+
resource?: ResourceRef$1;
|
|
518
|
+
section?: FileRendererSectionTarget;
|
|
519
|
+
resourceKey?: string;
|
|
520
|
+
ownerResourceKey?: string;
|
|
521
|
+
title?: string;
|
|
522
|
+
pinned?: boolean;
|
|
523
|
+
closable?: boolean;
|
|
524
|
+
mountStrategy?: WidgetMountStrategy;
|
|
525
|
+
hiddenByDefault?: boolean;
|
|
526
|
+
tabRetention?: WorkbenchTabRetention;
|
|
527
|
+
tab?: WorkbenchWidgetTab;
|
|
528
|
+
role?: WorkbenchWidgetRole;
|
|
529
|
+
}
|
|
530
|
+
interface WorkbenchPanelInstance {
|
|
531
|
+
instanceId: string;
|
|
532
|
+
panelId: string;
|
|
533
|
+
placementIdentity?: PlacementIdentity;
|
|
534
|
+
viewId?: string;
|
|
535
|
+
ownerId?: string;
|
|
536
|
+
source?: ContributionSource;
|
|
537
|
+
resource?: ResourceRef$1;
|
|
538
|
+
section?: FileRendererSectionTarget;
|
|
539
|
+
resourceKey?: string;
|
|
540
|
+
ownerResourceKey?: string;
|
|
541
|
+
title?: string;
|
|
542
|
+
pinned?: boolean;
|
|
543
|
+
closable: boolean;
|
|
544
|
+
mountStrategy?: WorkbenchPanelMountStrategy;
|
|
545
|
+
hiddenByDefault?: boolean;
|
|
546
|
+
tabRetention?: WorkbenchTabRetention;
|
|
547
|
+
tab?: WorkbenchPanelTab;
|
|
548
|
+
}
|
|
549
|
+
interface WorkbenchRegionState {
|
|
550
|
+
id: WorkbenchRegion;
|
|
551
|
+
visible: boolean;
|
|
552
|
+
size?: number;
|
|
553
|
+
widgets: WorkbenchWidgetPlacement[];
|
|
554
|
+
activeWidgetId?: string;
|
|
555
|
+
}
|
|
556
|
+
interface WorkbenchLayout {
|
|
557
|
+
regions: Record<WorkbenchRegion, WorkbenchRegionState>;
|
|
558
|
+
locationSubPanelSelections?: Record<string, Partial<Record<WorkbenchPanelRegion, string>>>;
|
|
559
|
+
activeWidgetId?: string;
|
|
560
|
+
activeLocationWidgetId?: string;
|
|
561
|
+
activeResourceKey?: string;
|
|
562
|
+
}
|
|
563
|
+
interface WorkbenchLayoutStoreState {
|
|
564
|
+
layout: WorkbenchLayout;
|
|
565
|
+
widgets: Record<string, RegisteredWidgetContribution>;
|
|
566
|
+
placeholders: Partial<Record<WorkbenchRegion, RegisteredPlaceholderContribution>>;
|
|
567
|
+
}
|
|
568
|
+
interface OpenWidgetInput {
|
|
569
|
+
viewId?: string | null;
|
|
570
|
+
resource?: ResourceRef$1 | null;
|
|
571
|
+
title?: string;
|
|
572
|
+
region?: WorkbenchRegion;
|
|
573
|
+
role?: WorkbenchWidgetRole;
|
|
574
|
+
ownerId?: string;
|
|
575
|
+
source?: ContributionSource;
|
|
576
|
+
pinned?: boolean;
|
|
577
|
+
closable?: boolean;
|
|
578
|
+
mountStrategy?: WidgetMountStrategy;
|
|
579
|
+
hiddenByDefault?: boolean;
|
|
580
|
+
tabRetention?: WorkbenchTabRetention;
|
|
581
|
+
tabPosition?: WorkbenchTabPosition;
|
|
582
|
+
tab?: WorkbenchWidgetTab;
|
|
583
|
+
replaceActive?: boolean;
|
|
584
|
+
replaceWidgetId?: string;
|
|
585
|
+
}
|
|
586
|
+
type WorkbenchPanelOpenStrategy = {
|
|
587
|
+
kind: "persistent";
|
|
588
|
+
position?: WorkbenchTabPosition;
|
|
589
|
+
} | {
|
|
590
|
+
kind: "replace-active";
|
|
591
|
+
} | {
|
|
592
|
+
kind: "replace-panel";
|
|
593
|
+
instanceId: string;
|
|
594
|
+
retention?: WorkbenchTabRetention;
|
|
595
|
+
} | {
|
|
596
|
+
kind: "preview";
|
|
597
|
+
position?: WorkbenchTabPosition;
|
|
598
|
+
};
|
|
599
|
+
interface OpenWorkbenchPanelInput {
|
|
600
|
+
/** Set by the view registry. Low-level layout callers should leave this undefined. */
|
|
601
|
+
viewId?: string | null;
|
|
602
|
+
/** `null` explicitly clears an existing singleton placement's resource binding. */
|
|
603
|
+
resource?: ResourceRef$1 | null;
|
|
604
|
+
title?: string;
|
|
605
|
+
region?: WorkbenchRegion;
|
|
606
|
+
role?: WorkbenchWidgetRole;
|
|
607
|
+
pinned?: boolean;
|
|
608
|
+
closable?: boolean;
|
|
609
|
+
mountStrategy?: WorkbenchPanelMountStrategy;
|
|
610
|
+
hiddenByDefault?: boolean;
|
|
611
|
+
tab?: WorkbenchPanelTab;
|
|
612
|
+
strategy?: WorkbenchPanelOpenStrategy;
|
|
613
|
+
}
|
|
614
|
+
//#endregion
|
|
615
|
+
//#region src/core/registries/layout/layout-model-types.d.ts
|
|
616
|
+
type LayoutScope = string;
|
|
617
|
+
interface LayoutPersistenceAdapter {
|
|
618
|
+
getLayout(scope?: LayoutScope): WorkbenchLayout | undefined;
|
|
619
|
+
setLayout(layout: WorkbenchLayout, scope?: LayoutScope): void;
|
|
620
|
+
listScopes?(projectId: string): LayoutScope[];
|
|
621
|
+
transformLayouts?(projectId: string, transform: (layout: WorkbenchLayout, scope: LayoutScope) => WorkbenchLayout | undefined): void;
|
|
622
|
+
getCompatibilityMarker?(key: string): string | undefined;
|
|
623
|
+
setCompatibilityMarker?(key: string, value: string): void;
|
|
624
|
+
advanceWriteGeneration?(): number;
|
|
625
|
+
flush?(): void;
|
|
626
|
+
dispose?(): void;
|
|
627
|
+
}
|
|
628
|
+
interface LayoutModel {
|
|
629
|
+
store: WorkbenchStore<WorkbenchLayoutStoreState>;
|
|
630
|
+
registerPlaceholder(placeholder: PlaceholderContribution, metadata?: ContributionMetadata): {
|
|
631
|
+
dispose(): void;
|
|
632
|
+
};
|
|
633
|
+
registerPanel(panel: WorkbenchPanelContribution, metadata?: ContributionMetadata): {
|
|
634
|
+
dispose(): void;
|
|
635
|
+
};
|
|
636
|
+
registerWidget(widget: WidgetContribution, metadata?: ContributionMetadata): {
|
|
637
|
+
dispose(): void;
|
|
638
|
+
};
|
|
639
|
+
registerPanelMenu(panelMenu: WorkbenchPanelMenuContribution, metadata?: ContributionMetadata): {
|
|
640
|
+
dispose(): void;
|
|
641
|
+
};
|
|
642
|
+
unregisterWidget(id: string, options?: {
|
|
643
|
+
removePlacements?: boolean;
|
|
644
|
+
persist?: boolean;
|
|
645
|
+
}): void;
|
|
646
|
+
getPlaceholder(regionId: WorkbenchRegion): RegisteredPlaceholderContribution | undefined;
|
|
647
|
+
getWidget(id: string): RegisteredWidgetContribution | undefined;
|
|
648
|
+
getPanel(id: string): WorkbenchPanelContribution | undefined;
|
|
649
|
+
getRegionSize(regionId: WorkbenchRegion): WorkbenchRegionSize | undefined;
|
|
650
|
+
getRegionSettings(regionId: WorkbenchRegion): WorkbenchRegionSettings | undefined;
|
|
651
|
+
getRegionCollapsible(regionId: WorkbenchRegion): boolean;
|
|
652
|
+
getRegionHeaderBorderBottom(regionId: WorkbenchRegion): boolean;
|
|
653
|
+
setRegionVisible(regionId: WorkbenchRegion, visible: boolean): void;
|
|
654
|
+
setRegionSize(regionId: WorkbenchRegion, size: number): void;
|
|
655
|
+
listPlaceholders(): RegisteredPlaceholderContribution[];
|
|
656
|
+
listWidgets(): RegisteredWidgetContribution[];
|
|
657
|
+
listPanels(): WorkbenchPanelContribution[];
|
|
658
|
+
listPanelInstances(region?: WorkbenchRegion): WorkbenchPanelInstance[];
|
|
659
|
+
getActivePanel(region?: WorkbenchRegion): WorkbenchPanelInstance | undefined;
|
|
660
|
+
openWidget(id: string, input?: OpenWidgetInput): WorkbenchWidgetPlacement;
|
|
661
|
+
openPanel(id: string, input?: OpenWorkbenchPanelInput): WorkbenchPanelInstance;
|
|
662
|
+
updatePanel(instanceId: string, input: OpenWorkbenchPanelInput): WorkbenchPanelInstance;
|
|
663
|
+
reorderPanel(instanceId: string, position: WorkbenchTabPosition): void;
|
|
664
|
+
activatePanel(instanceId: string): WorkbenchPanelInstance;
|
|
665
|
+
closePanel(instanceId: string): WorkbenchPanelInstance | undefined;
|
|
666
|
+
updateWidgetPlacement(widgetId: string, input: OpenWidgetInput): WorkbenchWidgetPlacement;
|
|
667
|
+
reorderWidget(widgetId: string, position: WorkbenchTabPosition): void;
|
|
668
|
+
expirePreviewTabs(ownerResourceKey?: string): void;
|
|
669
|
+
activateWidget(widgetId: string): WorkbenchWidgetPlacement;
|
|
670
|
+
setRegionActiveWidget(regionId: WorkbenchRegion, widgetId: string | undefined): void;
|
|
671
|
+
closeWidget(widgetId: string): WorkbenchWidgetPlacement | undefined;
|
|
672
|
+
removeWidgetPlacement(widgetId: string): WorkbenchWidgetPlacement | undefined;
|
|
673
|
+
clearRegion(regionId: WorkbenchRegion): void;
|
|
674
|
+
resetRegions(): void;
|
|
675
|
+
getLayout(): WorkbenchLayout;
|
|
676
|
+
restoreLayout(layout: WorkbenchLayout): void;
|
|
677
|
+
setPersistenceScope(scope: LayoutScope | undefined, input?: {
|
|
678
|
+
carryRegionState?: readonly WorkbenchRegion[];
|
|
679
|
+
}): void;
|
|
680
|
+
getPersistenceScope(): LayoutScope | undefined;
|
|
681
|
+
/** True when the current persistence scope already stores a layout. A new scope returns false. */
|
|
682
|
+
/** Whether anything is stored for the active scope right now. */
|
|
683
|
+
hasPersistedLayout(): boolean;
|
|
684
|
+
/**
|
|
685
|
+
* Whether the active scope was entered with a layout the user already had. Unlike
|
|
686
|
+
* `hasPersistedLayout`, writes made while entering a mode do not change the answer.
|
|
687
|
+
*/
|
|
688
|
+
enteredWithPersistedLayout(): boolean;
|
|
689
|
+
/** Moves owned panel menus beside their owner's current region and removes orphan menus. */
|
|
690
|
+
reconcilePanelMenus(): void;
|
|
691
|
+
onWillChangePersistenceScope(listener: (scope: LayoutScope | undefined) => void): {
|
|
692
|
+
dispose(): void;
|
|
693
|
+
};
|
|
694
|
+
onDidChangePersistenceScope(listener: (scope: LayoutScope | undefined) => void): {
|
|
695
|
+
dispose(): void;
|
|
696
|
+
};
|
|
697
|
+
}
|
|
698
|
+
//#endregion
|
|
699
|
+
//#region src/core/controllers/focus/focus-controller.d.ts
|
|
700
|
+
declare const workbenchFocusRegions: readonly ["activity", "sidenav", "main", "secondary", "side", "status"];
|
|
701
|
+
type WorkbenchFocusRegionId = (typeof workbenchFocusRegions)[number];
|
|
702
|
+
type WorkbenchFocusChangeListener = (region: WorkbenchFocusRegionId | undefined) => void;
|
|
703
|
+
interface WorkbenchFocusState {
|
|
704
|
+
activeRegion: WorkbenchFocusRegionId | undefined;
|
|
705
|
+
}
|
|
706
|
+
interface WorkbenchFocusController {
|
|
707
|
+
store: WorkbenchStore<WorkbenchFocusState>;
|
|
708
|
+
setActiveRegion(region: WorkbenchFocusRegionId): void;
|
|
709
|
+
clearFocus(): void;
|
|
710
|
+
getActiveRegion(): WorkbenchFocusRegionId | undefined;
|
|
711
|
+
onDidChange(listener: WorkbenchFocusChangeListener): Disposable;
|
|
712
|
+
}
|
|
713
|
+
//#endregion
|
|
714
|
+
//#region src/core/registries/layout/placement-reconciliation.d.ts
|
|
715
|
+
interface ResolvedOwnedPlacement<Value = unknown> {
|
|
716
|
+
identity: PlacementIdentity;
|
|
717
|
+
region: WorkbenchRegion;
|
|
718
|
+
order: number;
|
|
719
|
+
value: Value;
|
|
720
|
+
}
|
|
721
|
+
interface OwnedPlacementUpdate<Value> {
|
|
722
|
+
current: ResolvedOwnedPlacement<Value>;
|
|
723
|
+
desired: ResolvedOwnedPlacement<Value>;
|
|
724
|
+
}
|
|
725
|
+
interface OwnedPlacementReconciliation<Value> {
|
|
726
|
+
add: readonly ResolvedOwnedPlacement<Value>[];
|
|
727
|
+
retain: readonly ResolvedOwnedPlacement<Value>[];
|
|
728
|
+
update: readonly OwnedPlacementUpdate<Value>[];
|
|
729
|
+
activate: readonly ResolvedOwnedPlacement<Value>[];
|
|
730
|
+
remove: readonly ResolvedOwnedPlacement<Value>[];
|
|
731
|
+
}
|
|
732
|
+
//#endregion
|
|
733
|
+
//#region src/core/registries/renderers/renderer-registry.d.ts
|
|
734
|
+
interface WorkbenchPanelRenderInput {
|
|
735
|
+
workbench: WorkbenchCore;
|
|
736
|
+
panel: WorkbenchPanelContribution | PlaceholderContribution | RegisteredPlaceholderContribution;
|
|
737
|
+
instance: WorkbenchPanelInstance;
|
|
738
|
+
refresh: () => void;
|
|
739
|
+
}
|
|
740
|
+
interface WorkbenchRendererRegistration {
|
|
741
|
+
id: string;
|
|
742
|
+
render: (input: WorkbenchPanelRenderInput) => unknown;
|
|
743
|
+
}
|
|
744
|
+
//#endregion
|
|
745
|
+
//#region src/core/registries/renderers/controls-renderer-registry.d.ts
|
|
746
|
+
type ControlsRendererRegion = "main-right-menu" | "secondary" | "overlay";
|
|
747
|
+
interface ControlsRendererLayout {
|
|
748
|
+
region?: ControlsRendererRegion;
|
|
749
|
+
defaultPx?: number;
|
|
750
|
+
minPx?: number;
|
|
751
|
+
maxPx?: number;
|
|
752
|
+
}
|
|
753
|
+
interface ControlsUpdateValueInput {
|
|
754
|
+
controlId: string;
|
|
755
|
+
value: ControlValue;
|
|
756
|
+
values: ControlValueMap;
|
|
757
|
+
resource?: ResourceRef$1;
|
|
758
|
+
}
|
|
759
|
+
interface ControlsApplyInput {
|
|
760
|
+
values: ControlValueMap;
|
|
761
|
+
resource?: ResourceRef$1;
|
|
762
|
+
}
|
|
763
|
+
interface ControlsResetInput {
|
|
764
|
+
controlIds?: string[];
|
|
765
|
+
resource?: ResourceRef$1;
|
|
766
|
+
}
|
|
767
|
+
interface ControlsRendererContribution {
|
|
768
|
+
id: string;
|
|
769
|
+
title: string;
|
|
770
|
+
resourceKind?: string;
|
|
771
|
+
emptyTitle?: string;
|
|
772
|
+
emptyDescription?: string;
|
|
773
|
+
layout?: ControlsRendererLayout;
|
|
774
|
+
defaultValues?: ControlValueMap;
|
|
775
|
+
/** Load the control declarations + current values for the active resource. */
|
|
776
|
+
executeQuery(resource?: ResourceRef$1): Promise<ControlsQueryResult> | ControlsQueryResult;
|
|
777
|
+
/** Live-save a single control edit. Omit for explicit-apply or read-only panels. */
|
|
778
|
+
updateValue?(input: ControlsUpdateValueInput): Promise<void> | void;
|
|
779
|
+
/** Commit the full value map from a sticky footer. */
|
|
780
|
+
apply?(input: ControlsApplyInput): Promise<void> | void;
|
|
781
|
+
/** Reset some or all controls to their defaults. */
|
|
782
|
+
reset?(input: ControlsResetInput): Promise<void> | void;
|
|
783
|
+
subscribe?: (listener: () => void) => Disposable | (() => void);
|
|
784
|
+
}
|
|
785
|
+
//#endregion
|
|
786
|
+
//#region src/core/registries/renderers/data-table-renderer-registry.d.ts
|
|
787
|
+
interface DataTableRendererThemeColor {
|
|
788
|
+
light: string;
|
|
789
|
+
dark: string;
|
|
790
|
+
foreground?: {
|
|
791
|
+
light: string;
|
|
792
|
+
dark: string;
|
|
793
|
+
};
|
|
794
|
+
}
|
|
795
|
+
type DataTableRendererColumnStat = {
|
|
796
|
+
type: "unique";
|
|
797
|
+
} | {
|
|
798
|
+
type: "histogram";
|
|
799
|
+
bins?: number;
|
|
800
|
+
} | {
|
|
801
|
+
type: "top-values";
|
|
802
|
+
limit?: number;
|
|
803
|
+
};
|
|
804
|
+
type DataTableRendererColumnRenderer = {
|
|
805
|
+
type: "json";
|
|
806
|
+
} | {
|
|
807
|
+
type: "color-scale";
|
|
808
|
+
stops: Array<{
|
|
809
|
+
value: number;
|
|
810
|
+
color: DataTableRendererThemeColor;
|
|
811
|
+
}>;
|
|
812
|
+
} | {
|
|
813
|
+
type: "categorical-color";
|
|
814
|
+
categories: Array<{
|
|
815
|
+
value: string | number | boolean | null;
|
|
816
|
+
color: DataTableRendererThemeColor;
|
|
817
|
+
}>;
|
|
818
|
+
};
|
|
819
|
+
interface DataTableRendererColumn {
|
|
820
|
+
id: string;
|
|
821
|
+
label?: string;
|
|
822
|
+
description?: string;
|
|
823
|
+
icon?: unknown;
|
|
824
|
+
hidden?: boolean;
|
|
825
|
+
stat?: DataTableRendererColumnStat;
|
|
826
|
+
renderer?: DataTableRendererColumnRenderer;
|
|
827
|
+
}
|
|
828
|
+
interface DataTableRendererRow {
|
|
829
|
+
id: string;
|
|
830
|
+
values: Record<string, unknown>;
|
|
831
|
+
resource?: ResourceRef$1;
|
|
832
|
+
}
|
|
833
|
+
interface DataTableRendererQueryResult {
|
|
834
|
+
rows: DataTableRendererRow[];
|
|
835
|
+
columns?: DataTableRendererColumn[];
|
|
836
|
+
}
|
|
837
|
+
interface DataTableRendererQueryContext {
|
|
838
|
+
resource?: ResourceRef$1;
|
|
839
|
+
modeId?: string;
|
|
840
|
+
}
|
|
841
|
+
interface DataTableRendererRowAction {
|
|
842
|
+
id: string;
|
|
843
|
+
label: string;
|
|
844
|
+
icon?: unknown;
|
|
845
|
+
destructive?: boolean;
|
|
846
|
+
run(row: DataTableRendererRow): Promise<void> | void;
|
|
847
|
+
}
|
|
848
|
+
interface DataTableRendererSelectionAction {
|
|
849
|
+
id: string;
|
|
850
|
+
label: string;
|
|
851
|
+
icon?: unknown;
|
|
852
|
+
destructive?: boolean;
|
|
853
|
+
run(rows: DataTableRendererRow[]): Promise<void> | void;
|
|
854
|
+
}
|
|
855
|
+
interface DataTableRendererContribution {
|
|
856
|
+
id: string;
|
|
857
|
+
title: string;
|
|
858
|
+
resourceKind?: string;
|
|
859
|
+
columns?: DataTableRendererColumn[];
|
|
860
|
+
selectionMode?: "none" | "multiple";
|
|
861
|
+
selectionActions?: DataTableRendererSelectionAction[];
|
|
862
|
+
rowActions?: DataTableRendererRowAction[];
|
|
863
|
+
initialPageSize?: number;
|
|
864
|
+
pageSizeOptions?: number[];
|
|
865
|
+
emptyTitle?: string;
|
|
866
|
+
emptyDescription?: string;
|
|
867
|
+
executeQuery(context: DataTableRendererQueryContext): Promise<DataTableRendererQueryResult> | DataTableRendererQueryResult;
|
|
868
|
+
subscribe?: (listener: () => void) => Disposable | (() => void);
|
|
869
|
+
onRowActivate?: (row: DataTableRendererRow) => Promise<void> | void;
|
|
870
|
+
}
|
|
871
|
+
interface RegisteredDataTableRendererContribution extends DataTableRendererContribution, RegisteredContributionMetadata {}
|
|
872
|
+
//#endregion
|
|
873
|
+
//#region src/core/registries/renderers/file-renderer-registry.d.ts
|
|
874
|
+
interface FileRendererContent {
|
|
875
|
+
fileName?: string;
|
|
876
|
+
/** Workspace-relative path shown above the file preview. */
|
|
877
|
+
filePath?: string;
|
|
878
|
+
mimeType?: string;
|
|
879
|
+
content?: string;
|
|
880
|
+
dataUrl?: string;
|
|
881
|
+
placeholder?: string;
|
|
882
|
+
/** Override contribution-level save support for one loaded file. */
|
|
883
|
+
editable?: boolean;
|
|
884
|
+
/** Request Monaco for text that automatic dispatch would open as markdown. */
|
|
885
|
+
textRenderer?: "automatic" | "monaco";
|
|
886
|
+
/** Represent a deliberate no-file selection without an editable blank document. */
|
|
887
|
+
emptyState?: {
|
|
888
|
+
title: string;
|
|
889
|
+
description?: string;
|
|
890
|
+
};
|
|
891
|
+
/** Ordered backing-store revision when one is available. */
|
|
892
|
+
revision?: string;
|
|
893
|
+
}
|
|
894
|
+
interface FileRendererRefreshOrigin {
|
|
895
|
+
rendererId: string;
|
|
896
|
+
instanceId: string;
|
|
897
|
+
operationId: string;
|
|
898
|
+
}
|
|
899
|
+
interface FileRendererRefreshEnvelope {
|
|
900
|
+
resourceKey?: string;
|
|
901
|
+
origin?: FileRendererRefreshOrigin;
|
|
902
|
+
revision?: string;
|
|
903
|
+
}
|
|
904
|
+
interface FileRendererSaveResult {
|
|
905
|
+
revision?: string;
|
|
906
|
+
}
|
|
907
|
+
interface FileRendererContribution {
|
|
908
|
+
id: string;
|
|
909
|
+
title: string;
|
|
910
|
+
resourceKind?: string;
|
|
911
|
+
/** Resolve the file's content (and identity) for the bound resource. */
|
|
912
|
+
load(resource: ResourceRef$1 | undefined): Promise<FileRendererContent> | FileRendererContent;
|
|
913
|
+
/** Persist edited text. Absent ⇒ read-only. Never called for images. */
|
|
914
|
+
save?(resource: ResourceRef$1 | undefined, content: string, origin?: FileRendererRefreshOrigin): Promise<FileRendererSaveResult | undefined> | FileRendererSaveResult | void;
|
|
915
|
+
}
|
|
916
|
+
//#endregion
|
|
917
|
+
//#region src/core/registries/renderers/kanban-renderer-contracts.d.ts
|
|
918
|
+
/**
|
|
919
|
+
* Core-owned contracts for kanban renderer contributions. @pstdio/ui's
|
|
920
|
+
* KanbanRenderer props are structurally identical; the React layer bridges the
|
|
921
|
+
* two, so drift surfaces as a compile error there instead of coupling core's
|
|
922
|
+
* API shape to UI package ownership.
|
|
923
|
+
*/
|
|
924
|
+
type ViewMode = "board" | "list";
|
|
925
|
+
type SortDirection = "asc" | "desc";
|
|
926
|
+
declare const NO_GROUPING = "none";
|
|
927
|
+
declare const MANUAL_ORDERING = "manual";
|
|
928
|
+
interface EnumOption {
|
|
929
|
+
value: string;
|
|
930
|
+
label: string;
|
|
931
|
+
color?: string;
|
|
932
|
+
icon?: string | null;
|
|
933
|
+
}
|
|
934
|
+
/**
|
|
935
|
+
* Reactive options source for enum / enum-multi attributes. Mirrors React's
|
|
936
|
+
* useSyncExternalStore contract so a contribution can hand its options off as
|
|
937
|
+
* a live collection instead of a frozen array.
|
|
938
|
+
*/
|
|
939
|
+
interface EnumOptionsSource {
|
|
940
|
+
subscribe: (listener: () => void) => () => void;
|
|
941
|
+
getSnapshot: () => EnumOption[];
|
|
942
|
+
}
|
|
943
|
+
type EnumOptions = EnumOption[] | EnumOptionsSource;
|
|
944
|
+
type AttributeType = {
|
|
945
|
+
kind: "enum";
|
|
946
|
+
options: EnumOptions;
|
|
947
|
+
} | {
|
|
948
|
+
kind: "enum-multi";
|
|
949
|
+
options: EnumOptions;
|
|
950
|
+
} | {
|
|
951
|
+
kind: "string";
|
|
952
|
+
} | {
|
|
953
|
+
kind: "date";
|
|
954
|
+
} | {
|
|
955
|
+
kind: "number";
|
|
956
|
+
} | {
|
|
957
|
+
kind: "user";
|
|
958
|
+
};
|
|
959
|
+
type AttributeKind = AttributeType["kind"];
|
|
960
|
+
type AttributeDisplayDescriptor = KanbanRendererAttributeDisplay;
|
|
961
|
+
interface AttributeDescriptor<TNode = unknown> {
|
|
962
|
+
id: string;
|
|
963
|
+
label: string;
|
|
964
|
+
type: AttributeType;
|
|
965
|
+
filterable?: boolean;
|
|
966
|
+
groupable?: boolean;
|
|
967
|
+
sortable?: boolean;
|
|
968
|
+
displayable?: boolean;
|
|
969
|
+
editable?: boolean;
|
|
970
|
+
display?: AttributeDisplayDescriptor;
|
|
971
|
+
render?: (value: unknown, row: KanbanRendererRow) => TNode;
|
|
972
|
+
compare?: (a: unknown, b: unknown) => number;
|
|
973
|
+
}
|
|
974
|
+
/**
|
|
975
|
+
* Reactive source for an entire attribute schema. Lets a contribution
|
|
976
|
+
* add/remove/edit attributes at runtime without re-registering.
|
|
977
|
+
*/
|
|
978
|
+
interface AttributesSource<TNode = unknown> {
|
|
979
|
+
subscribe: (listener: () => void) => () => void;
|
|
980
|
+
getSnapshot: () => AttributeDescriptor<TNode>[];
|
|
981
|
+
}
|
|
982
|
+
interface KanbanRendererRow {
|
|
983
|
+
id: string;
|
|
984
|
+
title: string;
|
|
985
|
+
/**
|
|
986
|
+
* Optional navigation handle. When set, the renderer's default click handler
|
|
987
|
+
* routes through the contribution's onRowActivate (which typically opens the
|
|
988
|
+
* resource via the workbench).
|
|
989
|
+
*/
|
|
990
|
+
resource?: unknown;
|
|
991
|
+
attributes: Record<string, unknown>;
|
|
992
|
+
}
|
|
993
|
+
interface KanbanRendererOrdering {
|
|
994
|
+
attributeId: string | typeof MANUAL_ORDERING;
|
|
995
|
+
direction: SortDirection;
|
|
996
|
+
}
|
|
997
|
+
interface KanbanRendererSettings {
|
|
998
|
+
viewMode: ViewMode;
|
|
999
|
+
columnGrouping: string | typeof NO_GROUPING;
|
|
1000
|
+
rowGrouping: string | typeof NO_GROUPING;
|
|
1001
|
+
ordering: KanbanRendererOrdering;
|
|
1002
|
+
displayProperties: string[];
|
|
1003
|
+
}
|
|
1004
|
+
type KanbanRendererFilterState = Record<string, string[]>;
|
|
1005
|
+
interface KanbanRendererSavedView {
|
|
1006
|
+
id: string;
|
|
1007
|
+
title: string;
|
|
1008
|
+
settings: KanbanRendererSettings;
|
|
1009
|
+
filters: KanbanRendererFilterState;
|
|
1010
|
+
isDefault?: boolean;
|
|
1011
|
+
}
|
|
1012
|
+
type KanbanRendererCreateFieldType = "text" | "longtext" | "markdown" | "number" | "boolean" | "select" | "multi-select" | "files";
|
|
1013
|
+
interface KanbanRendererCreateField {
|
|
1014
|
+
id: string;
|
|
1015
|
+
label: string;
|
|
1016
|
+
description?: string;
|
|
1017
|
+
placeholder?: string;
|
|
1018
|
+
type: KanbanRendererCreateFieldType;
|
|
1019
|
+
required?: boolean;
|
|
1020
|
+
defaultValue?: unknown;
|
|
1021
|
+
options?: EnumOption[];
|
|
1022
|
+
/** `files` fields only. */
|
|
1023
|
+
multiple?: boolean;
|
|
1024
|
+
accept?: string;
|
|
1025
|
+
}
|
|
1026
|
+
/** Chrome copy is supplied by the caller so the dialog ships no strings of its own. */
|
|
1027
|
+
interface KanbanRendererCreateLabels {
|
|
1028
|
+
cancel: string;
|
|
1029
|
+
properties: string;
|
|
1030
|
+
submitError: string;
|
|
1031
|
+
removeFile: string;
|
|
1032
|
+
}
|
|
1033
|
+
interface KanbanRendererCreateRowConfig {
|
|
1034
|
+
title: string;
|
|
1035
|
+
submitLabel: string;
|
|
1036
|
+
fields: KanbanRendererCreateField[];
|
|
1037
|
+
labels: KanbanRendererCreateLabels;
|
|
1038
|
+
}
|
|
1039
|
+
interface KanbanRendererCreateSubmission {
|
|
1040
|
+
columnId: string;
|
|
1041
|
+
columnAttributeId?: string;
|
|
1042
|
+
/** Declared field values, excluding `files` fields — those arrive as `files`. */
|
|
1043
|
+
values: Record<string, unknown>;
|
|
1044
|
+
/** Every editable attribute the user set, keyed by attribute id. */
|
|
1045
|
+
attributeValues: Record<string, unknown>;
|
|
1046
|
+
files: File[];
|
|
1047
|
+
}
|
|
1048
|
+
interface BoardColumnAction<TIcon = unknown> {
|
|
1049
|
+
id: string;
|
|
1050
|
+
label: string;
|
|
1051
|
+
icon: TIcon;
|
|
1052
|
+
}
|
|
1053
|
+
/** Board-column behavior and menu configuration for a resolved column group. */
|
|
1054
|
+
interface BoardColumnConfig<TIcon = unknown> {
|
|
1055
|
+
/** Color palette token used for the column header and group badges. */
|
|
1056
|
+
color?: string;
|
|
1057
|
+
canDragIn?: boolean;
|
|
1058
|
+
canDragOut?: boolean;
|
|
1059
|
+
canCreate?: boolean;
|
|
1060
|
+
actions?: BoardColumnAction<TIcon>[];
|
|
1061
|
+
}
|
|
1062
|
+
/** Row-level context menu action surfaced by the renderer. */
|
|
1063
|
+
interface ResourceContextAction<TNode = unknown> {
|
|
1064
|
+
key: string;
|
|
1065
|
+
label: string;
|
|
1066
|
+
onClick: () => Promise<void> | void;
|
|
1067
|
+
isDisabled?: boolean;
|
|
1068
|
+
icon?: TNode;
|
|
1069
|
+
endContent?: TNode;
|
|
1070
|
+
separatorBefore?: boolean;
|
|
1071
|
+
}
|
|
1072
|
+
//#endregion
|
|
1073
|
+
//#region src/core/registries/renderers/kanban-renderer-registry.d.ts
|
|
1074
|
+
interface KanbanRendererQueryState {
|
|
1075
|
+
settings: KanbanRendererSettings;
|
|
1076
|
+
filters: KanbanRendererFilterState;
|
|
1077
|
+
}
|
|
1078
|
+
interface KanbanRendererContribution<TRow extends KanbanRendererRow = KanbanRendererRow, TNode = unknown, TIcon = unknown> {
|
|
1079
|
+
id: string;
|
|
1080
|
+
title: string;
|
|
1081
|
+
resourceKind?: string;
|
|
1082
|
+
/** Host-owned scope for persisted display settings. */
|
|
1083
|
+
storageScope?: string;
|
|
1084
|
+
/**
|
|
1085
|
+
* Declarative attribute schema. The renderer dispatches filter / group /
|
|
1086
|
+
* sort / display / inline-edit behavior on each descriptor's `type.kind`.
|
|
1087
|
+
*
|
|
1088
|
+
* Pass an `AttributesSource` ({ subscribe, getSnapshot }) instead of a
|
|
1089
|
+
* static array to let the contribution mutate its schema at runtime —
|
|
1090
|
+
* `WorkbenchKanbanView` subscribes so additions / removals / kind changes
|
|
1091
|
+
* propagate live without re-registering the renderer.
|
|
1092
|
+
*/
|
|
1093
|
+
attributes: AttributeDescriptor<TNode>[] | AttributesSource<TNode>;
|
|
1094
|
+
/** Per-board-column overrides (color, drag/create rules, custom actions). */
|
|
1095
|
+
getBoardColumnConfig?: (groupKey: string) => BoardColumnConfig<TIcon>;
|
|
1096
|
+
hideToolbar?: boolean;
|
|
1097
|
+
emptyTitle?: string;
|
|
1098
|
+
emptyDescription?: string;
|
|
1099
|
+
/** Initial settings/filters applied when the kanban renderer mounts. */
|
|
1100
|
+
defaultSettings?: Partial<KanbanRendererSettings>;
|
|
1101
|
+
defaultFilters?: KanbanRendererFilterState;
|
|
1102
|
+
defaultViews?: KanbanRendererSavedView[];
|
|
1103
|
+
defaultActiveViewId?: string;
|
|
1104
|
+
/**
|
|
1105
|
+
* Data source. Receives the current display state so backends can paginate
|
|
1106
|
+
* / filter / sort. The renderer re-applies filter / sort / group locally,
|
|
1107
|
+
* so this can return unfiltered rows in simple cases.
|
|
1108
|
+
*/
|
|
1109
|
+
executeQuery(state: KanbanRendererQueryState): Promise<TRow[]> | TRow[];
|
|
1110
|
+
subscribe?: (listener: () => void) => Disposable | (() => void);
|
|
1111
|
+
/** Row activation surfaced by the renderer (mirrored from <KanbanRenderer>). */
|
|
1112
|
+
onRowActivate?: (row: TRow) => Promise<void> | void;
|
|
1113
|
+
/** Per-row right-click context menu actions (mirrored from <KanbanRenderer>). */
|
|
1114
|
+
getRowContextMenuActions?: (row: TRow) => ResourceContextAction<TNode>[];
|
|
1115
|
+
/**
|
|
1116
|
+
* Fires for inline attribute edits AND for cross-column drag-to-reorder on
|
|
1117
|
+
* the board (the renderer passes the grouping attribute id + the target
|
|
1118
|
+
* column value).
|
|
1119
|
+
*/
|
|
1120
|
+
onAttributeChange?: (rowId: string, attributeId: string, value: unknown) => Promise<void> | void;
|
|
1121
|
+
/** Manual within-column reorder (only fires when ordering is manual). */
|
|
1122
|
+
onReorder?: (rowId: string, beforeRowId?: string) => Promise<void> | void;
|
|
1123
|
+
createRow?: KanbanRendererCreateRowConfig;
|
|
1124
|
+
onCreateRow?: (submission: KanbanRendererCreateSubmission) => Promise<void> | void;
|
|
1125
|
+
onColumnAction?: (columnId: string, actionId: string) => Promise<void> | void;
|
|
1126
|
+
}
|
|
1127
|
+
//#endregion
|
|
1128
|
+
//#region src/core/registries/menus/menu-registry.d.ts
|
|
1129
|
+
type MenuPath = readonly string[];
|
|
1130
|
+
interface MenuItem {
|
|
1131
|
+
commandId: string;
|
|
1132
|
+
sourceCommandId?: string;
|
|
1133
|
+
label?: string;
|
|
1134
|
+
description?: string;
|
|
1135
|
+
icon?: string;
|
|
1136
|
+
iconSrc?: string;
|
|
1137
|
+
overflowLabel?: string;
|
|
1138
|
+
when?: string;
|
|
1139
|
+
group?: string;
|
|
1140
|
+
order?: number;
|
|
1141
|
+
args?: unknown;
|
|
1142
|
+
readOnly?: boolean;
|
|
1143
|
+
/** Marks a menu action that navigates outside the app, rendered with a trailing external-link icon. */
|
|
1144
|
+
external?: boolean;
|
|
1145
|
+
}
|
|
1146
|
+
interface RegisteredMenuItem extends MenuItem, RegisteredContributionMetadata {
|
|
1147
|
+
path: MenuPath;
|
|
1148
|
+
}
|
|
1149
|
+
interface MenuRegistryStoreState {
|
|
1150
|
+
itemsByPath: Record<string, RegisteredMenuItem[]>;
|
|
1151
|
+
}
|
|
1152
|
+
interface MenuRegistry {
|
|
1153
|
+
menuStore: WorkbenchStore<MenuRegistryStoreState>;
|
|
1154
|
+
registerMenuItem(path: MenuPath, item: MenuItem, metadata?: ContributionMetadata): Disposable;
|
|
1155
|
+
listMenuItems(path: MenuPath): RegisteredMenuItem[];
|
|
1156
|
+
}
|
|
1157
|
+
//#endregion
|
|
1158
|
+
//#region src/core/registries/renderers/tree-renderer-types.d.ts
|
|
1159
|
+
interface TreeQueryContext {
|
|
1160
|
+
filter?: string;
|
|
1161
|
+
resource?: ResourceRef$1;
|
|
1162
|
+
/** Widget/view contribution id for trees rendered through a view-backed widget. */
|
|
1163
|
+
viewId?: string;
|
|
1164
|
+
}
|
|
1165
|
+
interface TreeContext extends TreeQueryContext {
|
|
1166
|
+
state: Readonly<TreeRendererState>;
|
|
1167
|
+
refresh(): void;
|
|
1168
|
+
setSelectedNode(nodeId: string | undefined): void;
|
|
1169
|
+
}
|
|
1170
|
+
interface TreeAction {
|
|
1171
|
+
id: string;
|
|
1172
|
+
label?: string;
|
|
1173
|
+
icon?: string;
|
|
1174
|
+
commandId?: string;
|
|
1175
|
+
args?: unknown;
|
|
1176
|
+
params?: CommandParamSchema;
|
|
1177
|
+
submitLabel?: string;
|
|
1178
|
+
when?: string;
|
|
1179
|
+
disabled?: boolean;
|
|
1180
|
+
run?(args?: unknown): Promise<void> | void;
|
|
1181
|
+
}
|
|
1182
|
+
type TreeNodeRowVariant = "empty-state";
|
|
1183
|
+
interface TreeNodeInlineInput {
|
|
1184
|
+
ariaLabel: string;
|
|
1185
|
+
defaultValue?: string;
|
|
1186
|
+
placeholder?: string;
|
|
1187
|
+
onCommit(value: string): Promise<void> | void;
|
|
1188
|
+
onCancel?(): void;
|
|
1189
|
+
}
|
|
1190
|
+
interface TreeNode {
|
|
1191
|
+
id: string;
|
|
1192
|
+
selected?: boolean;
|
|
1193
|
+
/** Host-owned customization boundary. Extension callbacks cannot set it. */
|
|
1194
|
+
moveScope?: string;
|
|
1195
|
+
label: string;
|
|
1196
|
+
icon?: string;
|
|
1197
|
+
iconElement?: unknown;
|
|
1198
|
+
iconColor?: string;
|
|
1199
|
+
iconTooltip?: string;
|
|
1200
|
+
endContent?: unknown;
|
|
1201
|
+
commandId?: string;
|
|
1202
|
+
resource?: ResourceRef$1;
|
|
1203
|
+
target?: NavigationTarget$1;
|
|
1204
|
+
/** Visual row variant for non-data rows such as placeholders. */
|
|
1205
|
+
rowVariant?: TreeNodeRowVariant;
|
|
1206
|
+
inlineInput?: TreeNodeInlineInput;
|
|
1207
|
+
actions?: TreeAction[];
|
|
1208
|
+
contextMenuActions?: TreeAction[];
|
|
1209
|
+
contextMenuPath?: MenuPath;
|
|
1210
|
+
menuPath?: MenuPath;
|
|
1211
|
+
menuPlacement?: "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right-start" | "left-start";
|
|
1212
|
+
showContextMenuTrigger?: boolean;
|
|
1213
|
+
collapsible?: boolean;
|
|
1214
|
+
disabled?: boolean;
|
|
1215
|
+
children?: TreeNode[];
|
|
1216
|
+
description?: string;
|
|
1217
|
+
contextValue?: string;
|
|
1218
|
+
hiddenByDefault?: boolean;
|
|
1219
|
+
/** When true, the node (e.g. a header/footer row) opts in to the tree's hide/show customization menu. */
|
|
1220
|
+
canHide?: boolean;
|
|
1221
|
+
/** When false, the node stays fixed within its Sidenav group. */
|
|
1222
|
+
canReorder?: boolean;
|
|
1223
|
+
/** Allow this node to be moved to another tree location. */
|
|
1224
|
+
canDrag?: boolean;
|
|
1225
|
+
/** Allow movable nodes to be dropped on this node. */
|
|
1226
|
+
canDrop?: boolean;
|
|
1227
|
+
}
|
|
1228
|
+
interface TreeSectionEmptyState {
|
|
1229
|
+
title: string;
|
|
1230
|
+
description?: string;
|
|
1231
|
+
icon?: string;
|
|
1232
|
+
}
|
|
1233
|
+
interface TreeViewSection {
|
|
1234
|
+
id: string;
|
|
1235
|
+
/** Host-owned customization boundary. Extension callbacks cannot set it. */
|
|
1236
|
+
moveScope?: string;
|
|
1237
|
+
label?: string;
|
|
1238
|
+
actions?: TreeAction[];
|
|
1239
|
+
collapsible?: boolean;
|
|
1240
|
+
emptyState?: TreeSectionEmptyState;
|
|
1241
|
+
nodes: TreeNode[];
|
|
1242
|
+
hiddenByDefault?: boolean;
|
|
1243
|
+
/** When true, the section (category) opts in to the tree's hide/show customization menu. */
|
|
1244
|
+
canHide?: boolean;
|
|
1245
|
+
/** When false, the section stays fixed within the Sidenav main region. */
|
|
1246
|
+
canReorder?: boolean;
|
|
1247
|
+
}
|
|
1248
|
+
interface TreeMoveEndpoint {
|
|
1249
|
+
kind: "section" | "node";
|
|
1250
|
+
sectionId: string;
|
|
1251
|
+
id: string;
|
|
1252
|
+
moveScope?: string;
|
|
1253
|
+
}
|
|
1254
|
+
type TreeMovePolicy = (move: {
|
|
1255
|
+
source: TreeMoveEndpoint;
|
|
1256
|
+
destination: TreeMoveEndpoint;
|
|
1257
|
+
}) => boolean;
|
|
1258
|
+
interface TreeRendererContribution {
|
|
1259
|
+
id: string;
|
|
1260
|
+
title: string;
|
|
1261
|
+
icon?: string;
|
|
1262
|
+
searchable?: boolean;
|
|
1263
|
+
searchPlaceholder?: string;
|
|
1264
|
+
when?: string;
|
|
1265
|
+
defaultExpandedSectionIds?: string[];
|
|
1266
|
+
defaultExpandedNodeIds?: string[];
|
|
1267
|
+
getBody(ctx: TreeContext): Promise<TreeViewSection[]> | TreeViewSection[];
|
|
1268
|
+
getHeader?(ctx: TreeContext): Promise<TreeViewSection[]> | TreeViewSection[];
|
|
1269
|
+
getFooter?(ctx: TreeContext): Promise<TreeViewSection[]> | TreeViewSection[];
|
|
1270
|
+
getChildren(node: TreeNode, ctx: TreeContext): Promise<TreeNode[]> | TreeNode[];
|
|
1271
|
+
canMove?: TreeMovePolicy;
|
|
1272
|
+
moveNode?(source: TreeNode, target: TreeNode | undefined, ctx: TreeContext): Promise<void> | void;
|
|
1273
|
+
}
|
|
1274
|
+
interface RegisteredTreeRendererContribution extends TreeRendererContribution, RegisteredContributionMetadata {}
|
|
1275
|
+
interface TreeRendererState {
|
|
1276
|
+
expandedNodeIds: string[];
|
|
1277
|
+
expandedSectionIds: string[];
|
|
1278
|
+
selectedNodeId?: string;
|
|
1279
|
+
loading?: boolean;
|
|
1280
|
+
}
|
|
1281
|
+
interface TreeRendererRefreshEvent {
|
|
1282
|
+
treeId: string;
|
|
1283
|
+
}
|
|
1284
|
+
interface TreeRendererStoreState {
|
|
1285
|
+
trees: Record<string, RegisteredTreeRendererContribution>;
|
|
1286
|
+
statesByTreeId: Record<string, TreeRendererState>;
|
|
1287
|
+
refreshKeysByTreeId: Record<string, number>;
|
|
1288
|
+
}
|
|
1289
|
+
interface PersistedTreeRendererStates {
|
|
1290
|
+
statesByTreeId: Record<string, TreeRendererState>;
|
|
1291
|
+
}
|
|
1292
|
+
interface TreeRendererPersistenceAdapter {
|
|
1293
|
+
getTreeStates(): PersistedTreeRendererStates | undefined;
|
|
1294
|
+
setTreeStates(states: PersistedTreeRendererStates): void;
|
|
1295
|
+
}
|
|
1296
|
+
type TreeRendererImplementation = (input: WorkbenchPanelRenderInput & {
|
|
1297
|
+
treeId: string;
|
|
1298
|
+
}) => unknown;
|
|
1299
|
+
type TreeRendererRefreshListener = (event: TreeRendererRefreshEvent) => void;
|
|
1300
|
+
interface TreeRendererRegistry {
|
|
1301
|
+
treeStore: WorkbenchStore<TreeRendererStoreState>;
|
|
1302
|
+
registerTreeRenderer(view: TreeRendererContribution, metadata?: ContributionMetadata): Disposable;
|
|
1303
|
+
setTreeRendererImplementation(impl: TreeRendererImplementation): void;
|
|
1304
|
+
getTreeRenderer(id: string): RegisteredTreeRendererContribution | undefined;
|
|
1305
|
+
listTreeRenderers(): RegisteredTreeRendererContribution[];
|
|
1306
|
+
getBody(id: string, ctx?: TreeQueryContext): Promise<TreeViewSection[]>;
|
|
1307
|
+
getHeader(id: string, ctx?: TreeQueryContext): Promise<TreeViewSection[]>;
|
|
1308
|
+
getFooter(id: string, ctx?: TreeQueryContext): Promise<TreeViewSection[]>;
|
|
1309
|
+
getChildren(id: string, node: TreeNode, ctx?: TreeQueryContext): Promise<TreeNode[]>;
|
|
1310
|
+
getTreeState(id: string): TreeRendererState;
|
|
1311
|
+
setNodeExpanded(id: string, nodeId: string, expanded: boolean): void;
|
|
1312
|
+
setSectionExpanded(id: string, sectionId: string, expanded: boolean): void;
|
|
1313
|
+
setSelectedNode(id: string, nodeId: string | undefined): void;
|
|
1314
|
+
setLoading(id: string, loading: boolean): void;
|
|
1315
|
+
refresh(id: string): void;
|
|
1316
|
+
onDidRefresh(listener: TreeRendererRefreshListener): Disposable;
|
|
1317
|
+
}
|
|
1318
|
+
//#endregion
|
|
1319
|
+
//#region src/core/registries/views/view-registry.d.ts
|
|
1320
|
+
declare const workbenchViewIdContextKey = "workbench.view.id";
|
|
1321
|
+
type NativeViewBody<Kind extends string, Contribution> = {
|
|
1322
|
+
kind: Kind;
|
|
1323
|
+
} & Omit<Contribution, "id" | "title" | "icon">;
|
|
1324
|
+
interface WorkbenchReactViewBody {
|
|
1325
|
+
kind: "react";
|
|
1326
|
+
render: WorkbenchRendererRegistration["render"];
|
|
1327
|
+
}
|
|
1328
|
+
type WorkbenchViewBody = WorkbenchReactViewBody | NativeViewBody<"tree", TreeRendererContribution> | NativeViewBody<"file", FileRendererContribution> | NativeViewBody<"controls", ControlsRendererContribution> | NativeViewBody<"kanban", KanbanRendererContribution> | NativeViewBody<"dataTable", DataTableRendererContribution>;
|
|
1329
|
+
interface WorkbenchViewContribution {
|
|
1330
|
+
id: string;
|
|
1331
|
+
title: string;
|
|
1332
|
+
icon?: string;
|
|
1333
|
+
body: WorkbenchViewBody;
|
|
1334
|
+
}
|
|
1335
|
+
type RegisteredWorkbenchView = WorkbenchViewContribution & RegisteredContributionMetadata;
|
|
1336
|
+
interface WorkbenchViewRegistryStoreState {
|
|
1337
|
+
views: Record<string, RegisteredWorkbenchView>;
|
|
1338
|
+
}
|
|
1339
|
+
interface WorkbenchViewRegistry {
|
|
1340
|
+
store: WorkbenchStore<WorkbenchViewRegistryStoreState>;
|
|
1341
|
+
registerView(view: WorkbenchViewContribution, metadata?: ContributionMetadata): Disposable;
|
|
1342
|
+
getView(viewId: string): RegisteredWorkbenchView | undefined;
|
|
1343
|
+
listViews(): RegisteredWorkbenchView[];
|
|
1344
|
+
refreshView(viewId: string, input?: unknown): void;
|
|
1345
|
+
}
|
|
1346
|
+
interface CreateWorkbenchViewRegistryInput {
|
|
1347
|
+
registerBody(view: WorkbenchViewContribution, metadata?: ContributionMetadata): Disposable & {
|
|
1348
|
+
refresh?(input?: unknown): void;
|
|
1349
|
+
};
|
|
1350
|
+
}
|
|
1351
|
+
declare const createViewRegistry: (input: CreateWorkbenchViewRegistryInput) => WorkbenchViewRegistry;
|
|
1352
|
+
//#endregion
|
|
1353
|
+
//#region src/core/registries/view-menus/view-menu-registry.d.ts
|
|
1354
|
+
interface WorkbenchViewMenuContribution {
|
|
1355
|
+
id: string;
|
|
1356
|
+
ownerViewId: string;
|
|
1357
|
+
viewId: string;
|
|
1358
|
+
side: "left" | "right";
|
|
1359
|
+
priority?: number;
|
|
1360
|
+
mountStrategy?: "active" | "keep-mounted";
|
|
1361
|
+
hiddenByDefault?: boolean;
|
|
1362
|
+
regionSize?: WorkbenchRegionSize;
|
|
1363
|
+
regionCollapsible?: boolean;
|
|
1364
|
+
headerBorderBottom?: boolean;
|
|
1365
|
+
config?: unknown;
|
|
1366
|
+
}
|
|
1367
|
+
interface WorkbenchViewMenuRegistry {
|
|
1368
|
+
registerViewMenu(menu: WorkbenchViewMenuContribution): Disposable;
|
|
1369
|
+
getViewMenu(id: string): WorkbenchViewMenuContribution | undefined;
|
|
1370
|
+
listViewMenus(ownerViewId?: string): WorkbenchViewMenuContribution[];
|
|
1371
|
+
definitionsFor(ownerViewId: string, placementId: string): readonly WorkbenchPanelMenuDefinition[];
|
|
1372
|
+
}
|
|
1373
|
+
//#endregion
|
|
1374
|
+
//#region src/core/registries/views/view-placement.d.ts
|
|
1375
|
+
interface WorkbenchPlacementPresentation {
|
|
1376
|
+
mountStrategy?: WidgetMountStrategy;
|
|
1377
|
+
hiddenByDefault?: boolean;
|
|
1378
|
+
headerBorderBottom?: boolean;
|
|
1379
|
+
tab?: WorkbenchPanelTab;
|
|
1380
|
+
config?: unknown;
|
|
1381
|
+
}
|
|
1382
|
+
//#endregion
|
|
1383
|
+
//#region src/core/registries/pages/page-registry-types.d.ts
|
|
1384
|
+
interface WorkbenchPageSlot extends Omit<PageSlot, "tab"> {
|
|
1385
|
+
readonly tab?: WorkbenchPlacementPresentation["tab"];
|
|
1386
|
+
}
|
|
1387
|
+
type WorkbenchPageMain = PageMain extends (infer Main) ? Main extends PageMain ? Omit<Main, "tab"> & {
|
|
1388
|
+
readonly tab?: WorkbenchPlacementPresentation["tab"];
|
|
1389
|
+
} : never : never;
|
|
1390
|
+
interface WorkbenchPageContribution {
|
|
1391
|
+
id: string;
|
|
1392
|
+
ref: PageRef;
|
|
1393
|
+
title?: Localizable<string>;
|
|
1394
|
+
icon?: string;
|
|
1395
|
+
path: string;
|
|
1396
|
+
modeId: string;
|
|
1397
|
+
parentId?: string;
|
|
1398
|
+
resource?: ResourceConstraint;
|
|
1399
|
+
main: WorkbenchPageMain;
|
|
1400
|
+
slots: readonly WorkbenchPageSlot[];
|
|
1401
|
+
}
|
|
1402
|
+
interface WorkbenchPageResourceCodec {
|
|
1403
|
+
normalize(resource: ResourceRef): ResourceRef;
|
|
1404
|
+
toUri(resource: ResourceRef): string;
|
|
1405
|
+
fromUri(uri: string): ResourceRef | undefined;
|
|
1406
|
+
}
|
|
1407
|
+
interface WorkbenchPageSlotOpenInput {
|
|
1408
|
+
pageId: string;
|
|
1409
|
+
slotId: string;
|
|
1410
|
+
resource?: ResourceRef;
|
|
1411
|
+
open?: PageOpenIntent;
|
|
1412
|
+
}
|
|
1413
|
+
interface WorkbenchPageSlotInstance {
|
|
1414
|
+
instanceKey: string;
|
|
1415
|
+
resource: ResourceRef;
|
|
1416
|
+
section?: FileRendererSectionTarget;
|
|
1417
|
+
open?: PageOpenIntent;
|
|
1418
|
+
}
|
|
1419
|
+
interface WorkbenchPageRuntimeState {
|
|
1420
|
+
openStaticSlotIds: readonly string[];
|
|
1421
|
+
resourceInstances: Readonly<Record<string, readonly WorkbenchPageSlotInstance[]>>;
|
|
1422
|
+
activePrimaryInstanceKey?: string;
|
|
1423
|
+
}
|
|
1424
|
+
interface WorkbenchPageRegistryStoreState<Value> {
|
|
1425
|
+
pages: Readonly<Record<string, WorkbenchPageContribution>>;
|
|
1426
|
+
pageStates: Readonly<Record<string, WorkbenchPageRuntimeState>>;
|
|
1427
|
+
projectId?: string;
|
|
1428
|
+
location?: PageLocation;
|
|
1429
|
+
activeModeId?: string;
|
|
1430
|
+
activePageId?: string;
|
|
1431
|
+
placements: readonly ResolvedOwnedPlacement<Value>[];
|
|
1432
|
+
reconciliation: OwnedPlacementReconciliation<Value>;
|
|
1433
|
+
}
|
|
1434
|
+
interface WorkbenchPageRegistry<Value> {
|
|
1435
|
+
store: WorkbenchStore<WorkbenchPageRegistryStoreState<Value>>;
|
|
1436
|
+
registerPage(page: WorkbenchPageContribution): {
|
|
1437
|
+
dispose(): void;
|
|
1438
|
+
};
|
|
1439
|
+
getPage(pageId: string): WorkbenchPageContribution | undefined;
|
|
1440
|
+
listPages(): WorkbenchPageContribution[];
|
|
1441
|
+
pinPlacement(identity: PlacementIdentity): void;
|
|
1442
|
+
openSlot(input: WorkbenchPageSlotOpenInput): void;
|
|
1443
|
+
}
|
|
1444
|
+
//#endregion
|
|
1445
|
+
//#region src/core/controllers/page-location/page-location-types.d.ts
|
|
1446
|
+
interface WorkbenchPageBrowserEntry {
|
|
1447
|
+
url: string;
|
|
1448
|
+
state?: unknown;
|
|
1449
|
+
}
|
|
1450
|
+
interface WorkbenchPageLocationBrowser {
|
|
1451
|
+
current(): WorkbenchPageBrowserEntry;
|
|
1452
|
+
push(entry: WorkbenchPageBrowserEntry): void;
|
|
1453
|
+
replace(entry: WorkbenchPageBrowserEntry): void;
|
|
1454
|
+
back(): void;
|
|
1455
|
+
forward(): void;
|
|
1456
|
+
onPopState(listener: (entry: WorkbenchPageBrowserEntry) => void): {
|
|
1457
|
+
dispose(): void;
|
|
1458
|
+
};
|
|
1459
|
+
}
|
|
1460
|
+
interface WorkbenchPageLocationPersistence {
|
|
1461
|
+
load(projectId: string): PageLocation | undefined;
|
|
1462
|
+
save(projectId: string, location: PageLocation): void;
|
|
1463
|
+
}
|
|
1464
|
+
interface WorkbenchPageLocationDiagnostic {
|
|
1465
|
+
code: "page-location-unresolved";
|
|
1466
|
+
source: "boot" | "history" | "navigation" | "project-switch";
|
|
1467
|
+
message: string;
|
|
1468
|
+
}
|
|
1469
|
+
type WorkbenchPageNavigationResult = {
|
|
1470
|
+
ok: true;
|
|
1471
|
+
location: PageLocation;
|
|
1472
|
+
} | {
|
|
1473
|
+
ok: false;
|
|
1474
|
+
diagnostic: WorkbenchPageLocationDiagnostic;
|
|
1475
|
+
};
|
|
1476
|
+
interface WorkbenchPageLocationController {
|
|
1477
|
+
historyStore: WorkbenchStore<WorkbenchPageLocationHistoryState>;
|
|
1478
|
+
setProject(projectId: string): void;
|
|
1479
|
+
clearProject(): void;
|
|
1480
|
+
isCurrentProjectUrl(projectId: string): boolean;
|
|
1481
|
+
hasCurrentPageUrl(projectId: string): boolean;
|
|
1482
|
+
boot(projectId: string): WorkbenchPageNavigationResult;
|
|
1483
|
+
switchProject(projectId: string): WorkbenchPageNavigationResult;
|
|
1484
|
+
navigate(target: NavigationTargetPage): WorkbenchPageNavigationResult;
|
|
1485
|
+
replay(location: PageLocation): WorkbenchPageNavigationResult;
|
|
1486
|
+
navigateToParent(): WorkbenchPageNavigationResult;
|
|
1487
|
+
closePlacement(identity: PlacementIdentity): WorkbenchPageNavigationResult;
|
|
1488
|
+
removeResource(resource: ResourceRef, retained: readonly PlacementIdentity[]): void;
|
|
1489
|
+
goBack(): void;
|
|
1490
|
+
goForward(): void;
|
|
1491
|
+
dispose(): void;
|
|
1492
|
+
}
|
|
1493
|
+
interface WorkbenchPageLocationHistoryState {
|
|
1494
|
+
canGoBack: boolean;
|
|
1495
|
+
canGoForward: boolean;
|
|
1496
|
+
}
|
|
1497
|
+
//#endregion
|
|
1498
|
+
//#region src/core/controllers/panel-menus/panel-menu-state-controller.d.ts
|
|
1499
|
+
interface WorkbenchPanelMenuState {
|
|
1500
|
+
openByMenuId: Record<string, boolean>;
|
|
1501
|
+
}
|
|
1502
|
+
interface PersistedWorkbenchPanelMenuState {
|
|
1503
|
+
openByMenuId: Record<string, boolean>;
|
|
1504
|
+
}
|
|
1505
|
+
interface WorkbenchPanelMenuStatePersistenceAdapter {
|
|
1506
|
+
getMenuStates(scope?: string): PersistedWorkbenchPanelMenuState | undefined;
|
|
1507
|
+
setMenuStates(state: PersistedWorkbenchPanelMenuState, scope?: string): void;
|
|
1508
|
+
}
|
|
1509
|
+
type WorkbenchPanelMenuStateChangeListener = (state: WorkbenchPanelMenuState) => void;
|
|
1510
|
+
interface WorkbenchPanelMenuStateController {
|
|
1511
|
+
store: WorkbenchStore<WorkbenchPanelMenuState>;
|
|
1512
|
+
isOpen(menuId: string): boolean;
|
|
1513
|
+
setOpen(menuId: string, open: boolean): void;
|
|
1514
|
+
toggle(menuId: string): void;
|
|
1515
|
+
setPersistenceScope(scope: string | undefined): void;
|
|
1516
|
+
getPersistenceScope(): string | undefined;
|
|
1517
|
+
onDidChange(listener: WorkbenchPanelMenuStateChangeListener): Disposable;
|
|
1518
|
+
}
|
|
1519
|
+
//#endregion
|
|
1520
|
+
//#region src/core/controllers/side-panel/side-panel-controller.d.ts
|
|
1521
|
+
type WorkbenchSidePanelMode = "floating" | "closed" | "attached";
|
|
1522
|
+
type WorkbenchSidePanelChangeListener = (mode: WorkbenchSidePanelMode) => void;
|
|
1523
|
+
interface WorkbenchSidePanelState {
|
|
1524
|
+
mode: WorkbenchSidePanelMode;
|
|
1525
|
+
}
|
|
1526
|
+
interface WorkbenchSidePanelController {
|
|
1527
|
+
canFloat(): boolean;
|
|
1528
|
+
store: WorkbenchStore<WorkbenchSidePanelState>;
|
|
1529
|
+
getMode(): WorkbenchSidePanelMode;
|
|
1530
|
+
setMode(mode: WorkbenchSidePanelMode): void;
|
|
1531
|
+
onDidChange(listener: WorkbenchSidePanelChangeListener): Disposable;
|
|
1532
|
+
}
|
|
1533
|
+
interface WorkbenchSidePanelPersistenceAdapter {
|
|
1534
|
+
getMode(): WorkbenchSidePanelMode | undefined;
|
|
1535
|
+
setMode(mode: WorkbenchSidePanelMode): void;
|
|
1536
|
+
}
|
|
1537
|
+
//#endregion
|
|
1538
|
+
//#region src/core/controllers/shell/shell-controller.d.ts
|
|
1539
|
+
type WorkbenchSidePanelPresentation = WorkbenchSidePanelMode;
|
|
1540
|
+
type WorkbenchShellOpenRegion = "sidenav" | "secondary" | "side";
|
|
1541
|
+
interface WorkbenchShellRegionState {
|
|
1542
|
+
open: boolean;
|
|
1543
|
+
size?: number;
|
|
1544
|
+
}
|
|
1545
|
+
interface WorkbenchShellController {
|
|
1546
|
+
getRegionState(region: WorkbenchRegion): WorkbenchShellRegionState;
|
|
1547
|
+
setRegionOpen(region: WorkbenchShellOpenRegion, open: boolean): void;
|
|
1548
|
+
setRegionSize(region: WorkbenchRegion, size: number): void;
|
|
1549
|
+
getSidePanelPresentation(): WorkbenchSidePanelPresentation;
|
|
1550
|
+
setSidePanelPresentation(presentation: WorkbenchSidePanelPresentation): void;
|
|
1551
|
+
onDidChange(listener: () => void): Disposable;
|
|
1552
|
+
}
|
|
1553
|
+
//#endregion
|
|
1554
|
+
//#region src/core/controllers/terminal/terminal-controller.d.ts
|
|
1555
|
+
interface WorkbenchTerminalSessionRequest {
|
|
1556
|
+
command?: string[];
|
|
1557
|
+
cwd?: string;
|
|
1558
|
+
env?: Record<string, string>;
|
|
1559
|
+
cols: number;
|
|
1560
|
+
rows: number;
|
|
1561
|
+
}
|
|
1562
|
+
interface WorkbenchTerminalSessionExit {
|
|
1563
|
+
code: number | null;
|
|
1564
|
+
signal: string | null;
|
|
1565
|
+
}
|
|
1566
|
+
interface WorkbenchTerminalSessionError {
|
|
1567
|
+
message: string;
|
|
1568
|
+
}
|
|
1569
|
+
interface WorkbenchTerminalSessionAdapter {
|
|
1570
|
+
readonly id: string;
|
|
1571
|
+
write(data: string | Uint8Array): void;
|
|
1572
|
+
resize(cols: number, rows: number): void;
|
|
1573
|
+
kill(signal?: string): Promise<void> | void;
|
|
1574
|
+
onData(handler: (chunk: Uint8Array) => void): () => void;
|
|
1575
|
+
/** Foreground process name updates, when the opener can report them (real PTYs). */
|
|
1576
|
+
onTitle?(handler: (title: string) => void): () => void;
|
|
1577
|
+
onExit(handler: (exit: WorkbenchTerminalSessionExit) => void): () => void;
|
|
1578
|
+
onError(handler: (error: WorkbenchTerminalSessionError) => void): () => void;
|
|
1579
|
+
}
|
|
1580
|
+
type WorkbenchTerminalSessionOpener = (request: WorkbenchTerminalSessionRequest) => Promise<WorkbenchTerminalSessionAdapter>;
|
|
1581
|
+
type WorkbenchTerminalSessionStatus = "running" | "exited" | "killed";
|
|
1582
|
+
interface WorkbenchTerminalSessionModel {
|
|
1583
|
+
id: string;
|
|
1584
|
+
title: string;
|
|
1585
|
+
status: WorkbenchTerminalSessionStatus;
|
|
1586
|
+
exit?: WorkbenchTerminalSessionExit;
|
|
1587
|
+
}
|
|
1588
|
+
interface WorkbenchTerminalState {
|
|
1589
|
+
sessionsById: Record<string, WorkbenchTerminalSessionModel>;
|
|
1590
|
+
}
|
|
1591
|
+
interface WorkbenchTerminalSessionSink {
|
|
1592
|
+
onData?(chunk: Uint8Array): void;
|
|
1593
|
+
onExit?(exit: WorkbenchTerminalSessionExit): void;
|
|
1594
|
+
onError?(error: WorkbenchTerminalSessionError): void;
|
|
1595
|
+
}
|
|
1596
|
+
interface WorkbenchTerminalController {
|
|
1597
|
+
store: WorkbenchStore<WorkbenchTerminalState>;
|
|
1598
|
+
/** True once the host injected a session opener. */
|
|
1599
|
+
isAvailable(): boolean;
|
|
1600
|
+
setSessionOpener(opener: WorkbenchTerminalSessionOpener | null): void;
|
|
1601
|
+
/** Opens a session; the live adapter stays host-side and only the id is returned. */
|
|
1602
|
+
open(input: {
|
|
1603
|
+
bindingId?: string;
|
|
1604
|
+
request: WorkbenchTerminalSessionRequest;
|
|
1605
|
+
title?: string;
|
|
1606
|
+
}): Promise<{
|
|
1607
|
+
sessionId: string;
|
|
1608
|
+
}>;
|
|
1609
|
+
write(input: {
|
|
1610
|
+
sessionId: string;
|
|
1611
|
+
data: string | Uint8Array;
|
|
1612
|
+
}): void;
|
|
1613
|
+
resize(input: {
|
|
1614
|
+
sessionId: string;
|
|
1615
|
+
cols: number;
|
|
1616
|
+
rows: number;
|
|
1617
|
+
}): void;
|
|
1618
|
+
kill(input: {
|
|
1619
|
+
sessionId: string;
|
|
1620
|
+
signal?: string;
|
|
1621
|
+
}): Promise<void>;
|
|
1622
|
+
killBinding(bindingId: string): Promise<void>;
|
|
1623
|
+
subscribe(sessionId: string, sink: WorkbenchTerminalSessionSink): () => void;
|
|
1624
|
+
getSession(sessionId: string): WorkbenchTerminalSessionModel | undefined;
|
|
1625
|
+
listSessions(): WorkbenchTerminalSessionModel[];
|
|
1626
|
+
/** Kills every live session. Called when the owning workbench is torn down. */
|
|
1627
|
+
dispose(): Promise<void>;
|
|
1628
|
+
}
|
|
1629
|
+
//#endregion
|
|
1630
|
+
//#region src/core/registries/command-palette-resources/command-palette-resource-registry.d.ts
|
|
1631
|
+
interface CommandPaletteResourceQueryContext {
|
|
1632
|
+
query: string;
|
|
1633
|
+
limit: number;
|
|
1634
|
+
}
|
|
1635
|
+
interface CommandPaletteResourceResult {
|
|
1636
|
+
id: string;
|
|
1637
|
+
label: string;
|
|
1638
|
+
description?: string;
|
|
1639
|
+
icon?: string;
|
|
1640
|
+
keywords?: string[];
|
|
1641
|
+
group?: string;
|
|
1642
|
+
activate(): void | Promise<void>;
|
|
1643
|
+
}
|
|
1644
|
+
interface CommandPaletteResourceProvider {
|
|
1645
|
+
id: string;
|
|
1646
|
+
title: string;
|
|
1647
|
+
refreshEventIds?: string[];
|
|
1648
|
+
query(context: CommandPaletteResourceQueryContext): Promise<readonly CommandPaletteResourceResult[]>;
|
|
1649
|
+
}
|
|
1650
|
+
interface CommandPaletteResourceProviderResult {
|
|
1651
|
+
providerId: string;
|
|
1652
|
+
title: string;
|
|
1653
|
+
results: readonly CommandPaletteResourceResult[];
|
|
1654
|
+
}
|
|
1655
|
+
interface CommandPaletteResourceRegistryStoreState {
|
|
1656
|
+
providers: Record<string, CommandPaletteResourceProvider>;
|
|
1657
|
+
refreshToken: number;
|
|
1658
|
+
}
|
|
1659
|
+
interface CommandPaletteResourceRegistry {
|
|
1660
|
+
store: WorkbenchStore<CommandPaletteResourceRegistryStoreState>;
|
|
1661
|
+
registerProvider(provider: CommandPaletteResourceProvider): Disposable;
|
|
1662
|
+
listProviders(): CommandPaletteResourceProvider[];
|
|
1663
|
+
queryProviders(context: CommandPaletteResourceQueryContext): Promise<CommandPaletteResourceProviderResult[]>;
|
|
1664
|
+
refresh(): void;
|
|
1665
|
+
}
|
|
1666
|
+
//#endregion
|
|
1667
|
+
//#region src/core/registries/keybindings/keybinding-registry.d.ts
|
|
1668
|
+
interface Keybinding {
|
|
1669
|
+
/** Action the chord executes through the shared navigation executor. */
|
|
1670
|
+
action: NavigationTarget$1;
|
|
1671
|
+
keybinding: KeybindingSequence;
|
|
1672
|
+
when?: string;
|
|
1673
|
+
}
|
|
1674
|
+
type KeybindingSequence = string | string[];
|
|
1675
|
+
interface RegisteredKeybinding extends Keybinding, RegisteredContributionMetadata {}
|
|
1676
|
+
interface KeybindingRegistryStoreState {
|
|
1677
|
+
keybindings: RegisteredKeybinding[];
|
|
1678
|
+
}
|
|
1679
|
+
interface KeybindingRegistry {
|
|
1680
|
+
store: WorkbenchStore<KeybindingRegistryStoreState>;
|
|
1681
|
+
registerKeybinding(keybinding: Keybinding, metadata?: ContributionMetadata): Disposable;
|
|
1682
|
+
listKeybindings(): RegisteredKeybinding[];
|
|
1683
|
+
listActiveKeybindings(): RegisteredKeybinding[];
|
|
1684
|
+
/** Chords bound to plain command actions, for rendering shortcut hints beside commands. */
|
|
1685
|
+
listCommandKeybindings(): {
|
|
1686
|
+
commandId: string;
|
|
1687
|
+
keybinding: KeybindingSequence;
|
|
1688
|
+
}[];
|
|
1689
|
+
}
|
|
1690
|
+
declare const getKeybindingSteps: (keybinding: KeybindingSequence) => string[];
|
|
1691
|
+
//#endregion
|
|
1692
|
+
//#region src/core/registries/placements/owned-placement-lifecycle.d.ts
|
|
1693
|
+
type WorkbenchOwnedPlacementItem = PlacementItem;
|
|
1694
|
+
//#endregion
|
|
1695
|
+
//#region src/core/registries/placements/owned-placement-preparation.d.ts
|
|
1696
|
+
interface OwnedPlacementLocationContext {
|
|
1697
|
+
modeId: string;
|
|
1698
|
+
pageId?: string;
|
|
1699
|
+
projectId?: string;
|
|
1700
|
+
location?: PageLocation;
|
|
1701
|
+
}
|
|
1702
|
+
//#endregion
|
|
1703
|
+
//#region src/core/registries/modes/mode-placement-registry.d.ts
|
|
1704
|
+
interface WorkbenchModePlacementContribution extends WorkbenchPlacementPresentation {
|
|
1705
|
+
readonly id: string;
|
|
1706
|
+
readonly ref: PlacementRef;
|
|
1707
|
+
readonly modeId: string;
|
|
1708
|
+
readonly item: WorkbenchOwnedPlacementItem;
|
|
1709
|
+
readonly region: DockedWorkbenchRegion;
|
|
1710
|
+
readonly order?: number;
|
|
1711
|
+
readonly movableTo?: readonly DockedWorkbenchRegion[];
|
|
1712
|
+
}
|
|
1713
|
+
interface OpenModePlacementTarget {
|
|
1714
|
+
panel: PlacementRef;
|
|
1715
|
+
resource?: ResourceRef$1;
|
|
1716
|
+
open?: PageOpenIntent;
|
|
1717
|
+
}
|
|
1718
|
+
interface WorkbenchModePlacementRegistry {
|
|
1719
|
+
registerPlacement(placement: WorkbenchModePlacementContribution): Disposable;
|
|
1720
|
+
getPlacement(ref: PlacementRef): WorkbenchModePlacementContribution | undefined;
|
|
1721
|
+
listPlacements(modeId?: string): WorkbenchModePlacementContribution[];
|
|
1722
|
+
openPlacement(input: OpenModePlacementTarget): PlacementIdentity;
|
|
1723
|
+
updatePlacement(identity: PlacementIdentity, input: {
|
|
1724
|
+
resource?: ResourceRef$1;
|
|
1725
|
+
title?: string;
|
|
1726
|
+
open?: PageOpenIntent;
|
|
1727
|
+
}): void;
|
|
1728
|
+
closePlacement(identity: PlacementIdentity): void;
|
|
1729
|
+
resolvePlacements(modeId: string, context?: OwnedPlacementLocationContext): readonly ResolvedOwnedPlacement<WorkbenchWidgetPlacement>[];
|
|
1730
|
+
onDidChange(listener: () => void): Disposable;
|
|
1731
|
+
}
|
|
1732
|
+
//#endregion
|
|
1733
|
+
//#region src/core/registries/navigation/navigation-tree-registry.d.ts
|
|
1734
|
+
type NavigationTreeSlot = "header" | "content" | "footer";
|
|
1735
|
+
interface NavigationTreeOwner {
|
|
1736
|
+
kind: "mode" | "page";
|
|
1737
|
+
id: string;
|
|
1738
|
+
extensionId: string;
|
|
1739
|
+
}
|
|
1740
|
+
interface NavigationTreeContext {
|
|
1741
|
+
resource?: ResourceRef$1;
|
|
1742
|
+
}
|
|
1743
|
+
interface NavigationTreeContribution {
|
|
1744
|
+
id: string;
|
|
1745
|
+
/** Prefix projected section and node ids when they come from an independent tree renderer. */
|
|
1746
|
+
idScope?: string;
|
|
1747
|
+
owner: NavigationTreeOwner;
|
|
1748
|
+
sourceExtensionId: string;
|
|
1749
|
+
declarationIndex: number;
|
|
1750
|
+
slot?: NavigationTreeSlot;
|
|
1751
|
+
viewId?: string;
|
|
1752
|
+
defaultExpandedSectionIds?: string[];
|
|
1753
|
+
getSections?(context: NavigationTreeContext): Promise<TreeViewSection[]> | TreeViewSection[];
|
|
1754
|
+
getChildren?(node: TreeNode, context: NavigationTreeContext): Promise<TreeNode[]> | TreeNode[];
|
|
1755
|
+
}
|
|
1756
|
+
interface NavigationTreeRegistry {
|
|
1757
|
+
registerContribution(contribution: NavigationTreeContribution): Disposable;
|
|
1758
|
+
resolveOwner(kind: NavigationTreeOwner["kind"], id: string): NavigationTreeOwner | undefined;
|
|
1759
|
+
getSections(owner: NavigationTreeOwner, slot?: NavigationTreeSlot, context?: NavigationTreeContext): Promise<TreeViewSection[]>;
|
|
1760
|
+
getChildren(node: TreeNode, context?: NavigationTreeContext): Promise<TreeNode[]>;
|
|
1761
|
+
getDefaultExpandedSectionIds(owner: NavigationTreeOwner): string[];
|
|
1762
|
+
onDidChange(listener: () => void): Disposable;
|
|
1763
|
+
}
|
|
1764
|
+
//#endregion
|
|
1765
|
+
//#region src/core/registries/notifications/notification-registry.d.ts
|
|
1766
|
+
type WorkbenchNotificationLevel = "info" | "success" | "warning" | "error";
|
|
1767
|
+
interface WorkbenchNotificationAction {
|
|
1768
|
+
commandId: string;
|
|
1769
|
+
title: string;
|
|
1770
|
+
args?: unknown;
|
|
1771
|
+
}
|
|
1772
|
+
interface WorkbenchNotification {
|
|
1773
|
+
id?: string;
|
|
1774
|
+
level: WorkbenchNotificationLevel;
|
|
1775
|
+
title: string;
|
|
1776
|
+
message?: string;
|
|
1777
|
+
createdAt?: string;
|
|
1778
|
+
resource?: ResourceRef$1;
|
|
1779
|
+
actions?: WorkbenchNotificationAction[];
|
|
1780
|
+
metadata?: Record<string, unknown>;
|
|
1781
|
+
}
|
|
1782
|
+
interface RegisteredWorkbenchNotification extends RegisteredContributionMetadata {
|
|
1783
|
+
id: string;
|
|
1784
|
+
level: WorkbenchNotificationLevel;
|
|
1785
|
+
title: string;
|
|
1786
|
+
message?: string;
|
|
1787
|
+
createdAt: string;
|
|
1788
|
+
resource?: ResourceRef$1;
|
|
1789
|
+
actions?: WorkbenchNotificationAction[];
|
|
1790
|
+
metadata?: Record<string, unknown>;
|
|
1791
|
+
}
|
|
1792
|
+
type WorkbenchNotificationEvent = {
|
|
1793
|
+
type: "show";
|
|
1794
|
+
id: string;
|
|
1795
|
+
notification: RegisteredWorkbenchNotification;
|
|
1796
|
+
} | {
|
|
1797
|
+
type: "dismiss";
|
|
1798
|
+
id: string;
|
|
1799
|
+
};
|
|
1800
|
+
type WorkbenchNotificationListener = (event: WorkbenchNotificationEvent) => void;
|
|
1801
|
+
interface WorkbenchNotificationStoreState {
|
|
1802
|
+
notifications: Record<string, RegisteredWorkbenchNotification>;
|
|
1803
|
+
}
|
|
1804
|
+
interface NotificationRegistry {
|
|
1805
|
+
store: WorkbenchStore<WorkbenchNotificationStoreState>;
|
|
1806
|
+
show(notification: WorkbenchNotification, metadata?: ContributionMetadata): RegisteredWorkbenchNotification;
|
|
1807
|
+
dismiss(id: string): boolean;
|
|
1808
|
+
clear(): void;
|
|
1809
|
+
listNotifications(): RegisteredWorkbenchNotification[];
|
|
1810
|
+
subscribe(listener: WorkbenchNotificationListener): Disposable;
|
|
1811
|
+
}
|
|
1812
|
+
//#endregion
|
|
1813
|
+
//#region src/core/registries/overlays/overlay-registry.d.ts
|
|
1814
|
+
interface WorkbenchOverlayContribution extends Omit<WorkbenchPlacementPresentation, "mountStrategy"> {
|
|
1815
|
+
id: string;
|
|
1816
|
+
viewId: string;
|
|
1817
|
+
closable?: boolean;
|
|
1818
|
+
}
|
|
1819
|
+
interface OpenWorkbenchOverlayInput {
|
|
1820
|
+
resource?: ResourceRef$1;
|
|
1821
|
+
title?: string;
|
|
1822
|
+
}
|
|
1823
|
+
interface WorkbenchOverlayRegistry {
|
|
1824
|
+
registerOverlay(overlay: WorkbenchOverlayContribution): Disposable;
|
|
1825
|
+
getOverlay(id: string): WorkbenchOverlayContribution | undefined;
|
|
1826
|
+
listOverlays(): WorkbenchOverlayContribution[];
|
|
1827
|
+
openOverlay(id: string, input?: OpenWorkbenchOverlayInput): string;
|
|
1828
|
+
closeOverlay(instanceId: string): void;
|
|
1829
|
+
}
|
|
1830
|
+
//#endregion
|
|
1831
|
+
//#region src/core/registries/placeholders/placeholder-registry.d.ts
|
|
1832
|
+
interface WorkbenchPlaceholderContribution {
|
|
1833
|
+
id: string;
|
|
1834
|
+
viewId: string;
|
|
1835
|
+
title?: string;
|
|
1836
|
+
region: WorkbenchRegion;
|
|
1837
|
+
regionSize?: WorkbenchRegionSize;
|
|
1838
|
+
regionCollapsible?: boolean;
|
|
1839
|
+
config?: unknown;
|
|
1840
|
+
}
|
|
1841
|
+
interface WorkbenchPlaceholderRegistry {
|
|
1842
|
+
registerPlaceholder(placeholder: WorkbenchPlaceholderContribution, metadata?: ContributionMetadata): Disposable;
|
|
1843
|
+
}
|
|
1844
|
+
//#endregion
|
|
1845
|
+
//#region src/core/registries/placements/shell-placement-registry.d.ts
|
|
1846
|
+
interface WorkbenchShellPlacementContribution extends WorkbenchPlacementPresentation {
|
|
1847
|
+
readonly id: string;
|
|
1848
|
+
readonly item: WorkbenchOwnedPlacementItem;
|
|
1849
|
+
readonly region: WorkbenchRegion;
|
|
1850
|
+
readonly order?: number;
|
|
1851
|
+
}
|
|
1852
|
+
interface OpenWorkbenchShellPlacementInput {
|
|
1853
|
+
placementId: string;
|
|
1854
|
+
resource?: ResourceRef$1;
|
|
1855
|
+
open?: PageOpenIntent;
|
|
1856
|
+
title?: string;
|
|
1857
|
+
}
|
|
1858
|
+
interface WorkbenchShellPlacementRegistry {
|
|
1859
|
+
registerPlacement(placement: WorkbenchShellPlacementContribution): Disposable;
|
|
1860
|
+
getPlacement(placementId: string): WorkbenchShellPlacementContribution | undefined;
|
|
1861
|
+
listPlacements(): WorkbenchShellPlacementContribution[];
|
|
1862
|
+
openPlacement(input: OpenWorkbenchShellPlacementInput): PlacementIdentity;
|
|
1863
|
+
updatePlacement(identity: PlacementIdentity, input: {
|
|
1864
|
+
resource?: ResourceRef$1;
|
|
1865
|
+
title?: string;
|
|
1866
|
+
open?: PageOpenIntent;
|
|
1867
|
+
}): void;
|
|
1868
|
+
closePlacement(identity: PlacementIdentity): void;
|
|
1869
|
+
resolvePlacements(context?: OwnedPlacementLocationContext): readonly ResolvedOwnedPlacement<WorkbenchWidgetPlacement>[];
|
|
1870
|
+
onDidChange(listener: () => void): Disposable;
|
|
1871
|
+
}
|
|
1872
|
+
//#endregion
|
|
1873
|
+
//#region src/core/registries/preferences/preference-registry.d.ts
|
|
1874
|
+
type PreferenceScope = "default" | "user" | "project" | "repo" | "workspace" | "extension" | "session";
|
|
1875
|
+
type PreferenceValue = boolean | number | string | string[] | number[] | boolean[] | Record<string, unknown>;
|
|
1876
|
+
interface PreferencePropertySchema {
|
|
1877
|
+
type: "boolean" | "number" | "string" | "array" | "object";
|
|
1878
|
+
enum?: PreferenceValue[];
|
|
1879
|
+
default?: PreferenceValue;
|
|
1880
|
+
scope: PreferenceScope;
|
|
1881
|
+
description?: string;
|
|
1882
|
+
}
|
|
1883
|
+
interface PreferenceSchemaContribution {
|
|
1884
|
+
properties: Record<string, PreferencePropertySchema>;
|
|
1885
|
+
}
|
|
1886
|
+
interface PreferenceScopeRef {
|
|
1887
|
+
scope: PreferenceScope;
|
|
1888
|
+
scopeId?: string;
|
|
1889
|
+
}
|
|
1890
|
+
interface PreferencePersistenceAdapter {
|
|
1891
|
+
getValue(name: string, scope: PreferenceScopeRef): PreferenceValue | undefined;
|
|
1892
|
+
setValue(name: string, value: PreferenceValue, scope: PreferenceScopeRef): void;
|
|
1893
|
+
}
|
|
1894
|
+
type RegisteredPreferenceSchema = PreferencePropertySchema & {
|
|
1895
|
+
ownerId: string;
|
|
1896
|
+
source: string;
|
|
1897
|
+
};
|
|
1898
|
+
interface PreferenceRegistryStoreState {
|
|
1899
|
+
schemas: Record<string, RegisteredPreferenceSchema>;
|
|
1900
|
+
}
|
|
1901
|
+
interface PreferenceRegistry {
|
|
1902
|
+
store: WorkbenchStore<PreferenceRegistryStoreState>;
|
|
1903
|
+
registerSchema(schema: PreferenceSchemaContribution, metadata?: ContributionMetadata): Disposable;
|
|
1904
|
+
getSchema(name: string): RegisteredPreferenceSchema | undefined;
|
|
1905
|
+
setValue(name: string, value: PreferenceValue, scope: PreferenceScopeRef): void;
|
|
1906
|
+
getValue(name: string, scope?: PreferenceScopeRef): PreferenceValue | undefined;
|
|
1907
|
+
}
|
|
1908
|
+
//#endregion
|
|
1909
|
+
//#region src/core/registries/settings/settings-registry.d.ts
|
|
1910
|
+
/** Settings are stored either per-user (global) or per-project. Projectless surfaces show only global entries. */
|
|
1911
|
+
type SettingsScope = "global" | "project";
|
|
1912
|
+
/** A "+ create"-style action surfaced on a section or a collection's parent node. */
|
|
1913
|
+
interface SettingsAction {
|
|
1914
|
+
id: string;
|
|
1915
|
+
label: string;
|
|
1916
|
+
icon?: string;
|
|
1917
|
+
run(): void | Promise<void>;
|
|
1918
|
+
}
|
|
1919
|
+
/** An ordered sidenav container. Headerless when `title` is omitted. */
|
|
1920
|
+
interface SettingsSectionContribution {
|
|
1921
|
+
id: string;
|
|
1922
|
+
title?: string;
|
|
1923
|
+
order?: number;
|
|
1924
|
+
scope?: SettingsScope;
|
|
1925
|
+
actions?: SettingsAction[];
|
|
1926
|
+
}
|
|
1927
|
+
type RegisteredSettingsSection = SettingsSectionContribution & RegisteredContributionMetadata;
|
|
1928
|
+
/** A preference this panel edits; a bare string uses the preference name as its label. */
|
|
1929
|
+
type SettingsPanelPreference = string | {
|
|
1930
|
+
name: string;
|
|
1931
|
+
label?: string;
|
|
1932
|
+
};
|
|
1933
|
+
interface SettingsPanelBase {
|
|
1934
|
+
id: string;
|
|
1935
|
+
title: string;
|
|
1936
|
+
description?: string;
|
|
1937
|
+
/** Section id this panel belongs to. */
|
|
1938
|
+
section?: string;
|
|
1939
|
+
icon?: string;
|
|
1940
|
+
/** Lower sorts first; ties fall back to contribution priority then registration order. */
|
|
1941
|
+
order?: number;
|
|
1942
|
+
scope?: SettingsScope;
|
|
1943
|
+
when?: string;
|
|
1944
|
+
}
|
|
1945
|
+
/** Auto-rendered as a param editor from the registered preference schema. */
|
|
1946
|
+
interface SchemaSettingsPanel extends SettingsPanelBase {
|
|
1947
|
+
kind: "schema";
|
|
1948
|
+
preferences: SettingsPanelPreference[];
|
|
1949
|
+
/** "live" persists on change (default); "apply" stages edits behind Save/Discard. */
|
|
1950
|
+
save?: "live" | "apply";
|
|
1951
|
+
}
|
|
1952
|
+
interface ViewSettingsPanel extends SettingsPanelBase {
|
|
1953
|
+
kind: "view";
|
|
1954
|
+
viewId: string;
|
|
1955
|
+
}
|
|
1956
|
+
interface SettingsCollectionGroupBy<TItem> {
|
|
1957
|
+
key(item: TItem): string;
|
|
1958
|
+
order?: string[];
|
|
1959
|
+
label(key: string): string;
|
|
1960
|
+
icon?(key: string): string | undefined;
|
|
1961
|
+
}
|
|
1962
|
+
/**
|
|
1963
|
+
* A data-driven list of items, each opening a contributor-supplied editor. The
|
|
1964
|
+
* framework knows nothing about what an item is — it only calls these hooks.
|
|
1965
|
+
*/
|
|
1966
|
+
interface CollectionSettingsPanel<TItem = unknown> extends SettingsPanelBase {
|
|
1967
|
+
kind: "collection";
|
|
1968
|
+
viewId: string;
|
|
1969
|
+
items(): TItem[] | Promise<TItem[]>;
|
|
1970
|
+
itemId(item: TItem): string;
|
|
1971
|
+
itemLabel(item: TItem): string;
|
|
1972
|
+
itemIcon?(item: TItem): string | undefined;
|
|
1973
|
+
groupBy?: SettingsCollectionGroupBy<TItem>;
|
|
1974
|
+
actions?: SettingsAction[];
|
|
1975
|
+
}
|
|
1976
|
+
type SettingsPanelContribution = SchemaSettingsPanel | ViewSettingsPanel | CollectionSettingsPanel;
|
|
1977
|
+
type RegisteredSettingsPanel = SettingsPanelContribution & RegisteredContributionMetadata;
|
|
1978
|
+
interface SettingsRegistryStoreState {
|
|
1979
|
+
sections: Record<string, RegisteredSettingsSection>;
|
|
1980
|
+
panels: Record<string, RegisteredSettingsPanel>;
|
|
1981
|
+
/** Bumped by refresh() so the surface re-reads collection items() after backing data changes. */
|
|
1982
|
+
revision: number;
|
|
1983
|
+
}
|
|
1984
|
+
interface SettingsRegistry {
|
|
1985
|
+
store: WorkbenchStore<SettingsRegistryStoreState>;
|
|
1986
|
+
registerSection(section: SettingsSectionContribution, metadata?: ContributionMetadata): Disposable;
|
|
1987
|
+
registerPanel<TItem = unknown>(panel: SchemaSettingsPanel | ViewSettingsPanel | CollectionSettingsPanel<TItem>, metadata?: ContributionMetadata): Disposable;
|
|
1988
|
+
getSection(id: string): RegisteredSettingsSection | undefined;
|
|
1989
|
+
getPanel(id: string): RegisteredSettingsPanel | undefined;
|
|
1990
|
+
listSections(): RegisteredSettingsSection[];
|
|
1991
|
+
listPanels(): RegisteredSettingsPanel[];
|
|
1992
|
+
resolveCollectionItem(panelId: string, itemId: string): Promise<unknown | undefined>;
|
|
1993
|
+
getCollectionItem(panelId: string, itemId: string): unknown | undefined;
|
|
1994
|
+
/** Signal that a collection's backing data changed so the surface refreshes. */
|
|
1995
|
+
refresh(): void;
|
|
1996
|
+
}
|
|
1997
|
+
//#endregion
|
|
1998
|
+
//#region src/core/registries/status-bar/status-bar-registry.d.ts
|
|
1999
|
+
type WorkbenchStatusBarSlot = "leading" | "trailing";
|
|
2000
|
+
interface WorkbenchStatusBarItem {
|
|
2001
|
+
id: string;
|
|
2002
|
+
viewId: string;
|
|
2003
|
+
slot: WorkbenchStatusBarSlot;
|
|
2004
|
+
order?: number;
|
|
2005
|
+
isVisible?(): boolean;
|
|
2006
|
+
}
|
|
2007
|
+
interface WorkbenchStatusBarRegistryState {
|
|
2008
|
+
items: Record<string, WorkbenchStatusBarItem>;
|
|
2009
|
+
}
|
|
2010
|
+
interface WorkbenchStatusBarRegistry {
|
|
2011
|
+
store: WorkbenchStore<WorkbenchStatusBarRegistryState>;
|
|
2012
|
+
registerItem(item: WorkbenchStatusBarItem): Disposable;
|
|
2013
|
+
getItem(id: string): WorkbenchStatusBarItem | undefined;
|
|
2014
|
+
listItems(): WorkbenchStatusBarItem[];
|
|
2015
|
+
listVisibleItems(slot?: WorkbenchStatusBarSlot): WorkbenchStatusBarItem[];
|
|
2016
|
+
}
|
|
2017
|
+
interface CreateWorkbenchStatusBarRegistryInput {
|
|
2018
|
+
hasView(viewId: string): boolean;
|
|
2019
|
+
}
|
|
2020
|
+
declare const createStatusBarRegistry: (input: CreateWorkbenchStatusBarRegistryInput) => WorkbenchStatusBarRegistry;
|
|
2021
|
+
//#endregion
|
|
2022
|
+
//#region src/core/registries/statuses/status-registry.d.ts
|
|
2023
|
+
interface WorkflowStatus {
|
|
2024
|
+
id: string;
|
|
2025
|
+
label: string;
|
|
2026
|
+
color: string;
|
|
2027
|
+
icon?: string | null;
|
|
2028
|
+
sortOrder: number;
|
|
2029
|
+
isDefault?: boolean;
|
|
2030
|
+
actions?: readonly string[];
|
|
2031
|
+
}
|
|
2032
|
+
interface WorkflowStatusAction {
|
|
2033
|
+
id: string;
|
|
2034
|
+
label: string;
|
|
2035
|
+
icon?: string;
|
|
2036
|
+
}
|
|
2037
|
+
interface WorkbenchStatusSetContribution {
|
|
2038
|
+
id: string;
|
|
2039
|
+
title: string;
|
|
2040
|
+
actions?: readonly WorkflowStatusAction[];
|
|
2041
|
+
query(): Promise<readonly WorkflowStatus[]> | readonly WorkflowStatus[];
|
|
2042
|
+
save?(statuses: readonly WorkflowStatus[]): Promise<readonly WorkflowStatus[]> | readonly WorkflowStatus[];
|
|
2043
|
+
}
|
|
2044
|
+
type RegisteredWorkbenchStatusSet = WorkbenchStatusSetContribution & RegisteredContributionMetadata;
|
|
2045
|
+
interface WorkbenchStatusRegistryState {
|
|
2046
|
+
statusSets: Record<string, RegisteredWorkbenchStatusSet>;
|
|
2047
|
+
values: Record<string, readonly WorkflowStatus[]>;
|
|
2048
|
+
}
|
|
2049
|
+
interface WorkbenchStatusRegistry {
|
|
2050
|
+
store: WorkbenchStore<WorkbenchStatusRegistryState>;
|
|
2051
|
+
registerStatusSet(contribution: WorkbenchStatusSetContribution, metadata?: ContributionMetadata): Disposable;
|
|
2052
|
+
getStatusSet(id: string): RegisteredWorkbenchStatusSet | undefined;
|
|
2053
|
+
listStatusSets(): RegisteredWorkbenchStatusSet[];
|
|
2054
|
+
getStatuses(id: string): readonly WorkflowStatus[] | undefined;
|
|
2055
|
+
load(id: string): Promise<readonly WorkflowStatus[]>;
|
|
2056
|
+
query(id: string): Promise<readonly WorkflowStatus[]>;
|
|
2057
|
+
save(id: string, statuses: readonly WorkflowStatus[]): Promise<readonly WorkflowStatus[]>;
|
|
2058
|
+
}
|
|
2059
|
+
declare const createStatusRegistry: () => WorkbenchStatusRegistry;
|
|
2060
|
+
//#endregion
|
|
2061
|
+
//#region src/core/registries/themes/file-icon-theme-contracts.d.ts
|
|
2062
|
+
/**
|
|
2063
|
+
* Core-owned contract for file icon theme registrations. Structurally identical
|
|
2064
|
+
* to @pstdio/ui's FileIconThemePreferenceOption; the React layer bridges the two
|
|
2065
|
+
* so core does not depend on UI package ownership.
|
|
2066
|
+
*/
|
|
2067
|
+
interface FileIconThemeFont {
|
|
2068
|
+
fontFamily: string;
|
|
2069
|
+
src: {
|
|
2070
|
+
url: string;
|
|
2071
|
+
format?: string;
|
|
2072
|
+
}[];
|
|
2073
|
+
weight?: string;
|
|
2074
|
+
style?: string;
|
|
2075
|
+
}
|
|
2076
|
+
interface FileIconThemePreferenceOption {
|
|
2077
|
+
id: string;
|
|
2078
|
+
title?: string;
|
|
2079
|
+
definitions: Record<string, unknown>;
|
|
2080
|
+
fileExtensions: Record<string, string>;
|
|
2081
|
+
fileNames: Record<string, string>;
|
|
2082
|
+
defaults: {
|
|
2083
|
+
file?: string;
|
|
2084
|
+
folder?: string;
|
|
2085
|
+
};
|
|
2086
|
+
fonts: FileIconThemeFont[];
|
|
2087
|
+
}
|
|
2088
|
+
//#endregion
|
|
2089
|
+
//#region src/core/registries/themes/file-icon-theme-registry.d.ts
|
|
2090
|
+
interface WorkbenchFileIconThemeStoreState {
|
|
2091
|
+
themes: readonly FileIconThemePreferenceOption[];
|
|
2092
|
+
}
|
|
2093
|
+
interface FileIconThemeRegistry {
|
|
2094
|
+
store: WorkbenchStore<WorkbenchFileIconThemeStoreState>;
|
|
2095
|
+
register(themes: readonly FileIconThemePreferenceOption[]): Disposable;
|
|
2096
|
+
listThemes(): readonly FileIconThemePreferenceOption[];
|
|
2097
|
+
}
|
|
2098
|
+
//#endregion
|
|
2099
|
+
//#region src/core/registries/themes/theme-contracts.d.ts
|
|
2100
|
+
/**
|
|
2101
|
+
* Core-owned contract for theme registrations. Structurally identical to
|
|
2102
|
+
* @pstdio/ui's ThemePreferenceOption; the React layer bridges the two so core
|
|
2103
|
+
* does not depend on UI package ownership.
|
|
2104
|
+
*/
|
|
2105
|
+
type ThemePreference = string;
|
|
2106
|
+
type ThemePreferenceMode = "light" | "dark";
|
|
2107
|
+
type ThemePreferenceTokens = Record<string, string>;
|
|
2108
|
+
interface ThemePreferenceOption {
|
|
2109
|
+
id: ThemePreference;
|
|
2110
|
+
title?: string;
|
|
2111
|
+
mode: ThemePreferenceMode;
|
|
2112
|
+
tokens?: ThemePreferenceTokens;
|
|
2113
|
+
monacoTheme?: unknown;
|
|
2114
|
+
}
|
|
2115
|
+
//#endregion
|
|
2116
|
+
//#region src/core/registries/themes/theme-registry.d.ts
|
|
2117
|
+
interface WorkbenchThemeStoreState {
|
|
2118
|
+
themes: readonly ThemePreferenceOption[];
|
|
2119
|
+
}
|
|
2120
|
+
interface ThemeRegistry {
|
|
2121
|
+
store: WorkbenchStore<WorkbenchThemeStoreState>;
|
|
2122
|
+
register(themes: readonly ThemePreferenceOption[]): Disposable;
|
|
2123
|
+
listThemes(): readonly ThemePreferenceOption[];
|
|
2124
|
+
}
|
|
2125
|
+
//#endregion
|
|
2126
|
+
//#region src/core/workbench-core-types.d.ts
|
|
2127
|
+
type WorkbenchLayoutModel = LayoutModel & MenuRegistry;
|
|
2128
|
+
type WorkbenchModuleLayoutModel = Omit<WorkbenchLayoutModel, "registerPanel" | "registerWidget" | "openPanel" | "openWidget" | "registerPlaceholder" | "registerPanelMenu">;
|
|
2129
|
+
type WorkbenchTreeViews = Pick<TreeRendererRegistry, "getTreeState" | "setNodeExpanded" | "setSectionExpanded" | "setSelectedNode">;
|
|
2130
|
+
interface WorkbenchCoreContributionContext {
|
|
2131
|
+
pinPlacement(identity: import("@pstdio/sdk/extensions").PlacementIdentity): void;
|
|
2132
|
+
closePlacement(identity: import("@pstdio/sdk/extensions").PlacementIdentity): void;
|
|
2133
|
+
breadcrumbs: WorkbenchBreadcrumbController;
|
|
2134
|
+
commandPalette: WorkbenchCommandPaletteController;
|
|
2135
|
+
commandPaletteResources: CommandPaletteResourceRegistry;
|
|
2136
|
+
commands: CommandRegistry;
|
|
2137
|
+
composition: WorkbenchCompositionController;
|
|
2138
|
+
context: ContextKeyService;
|
|
2139
|
+
focus: WorkbenchFocusController;
|
|
2140
|
+
keybindings: KeybindingRegistry;
|
|
2141
|
+
layout: WorkbenchModuleLayoutModel;
|
|
2142
|
+
modes: WorkbenchModeRegistry;
|
|
2143
|
+
modePlacements: WorkbenchModePlacementRegistry;
|
|
2144
|
+
shellPlacements: WorkbenchShellPlacementRegistry;
|
|
2145
|
+
navigation: NavigationRegistry;
|
|
2146
|
+
navigationTrees: NavigationTreeRegistry;
|
|
2147
|
+
notifications: NotificationRegistry;
|
|
2148
|
+
overlays: WorkbenchOverlayRegistry;
|
|
2149
|
+
placeholders: WorkbenchPlaceholderRegistry;
|
|
2150
|
+
pageLocations: WorkbenchPageLocationController;
|
|
2151
|
+
pages: WorkbenchPageRegistry<WorkbenchWidgetPlacement>;
|
|
2152
|
+
panelMenuState: WorkbenchPanelMenuStateController;
|
|
2153
|
+
preferences: PreferenceRegistry;
|
|
2154
|
+
treeViews: WorkbenchTreeViews;
|
|
2155
|
+
resources: ResourceRegistry;
|
|
2156
|
+
views: WorkbenchViewRegistry;
|
|
2157
|
+
viewMenus: WorkbenchViewMenuRegistry;
|
|
2158
|
+
settings: SettingsRegistry;
|
|
2159
|
+
statusBar: WorkbenchStatusBarRegistry;
|
|
2160
|
+
statuses: WorkbenchStatusRegistry;
|
|
2161
|
+
shell: WorkbenchShellController;
|
|
2162
|
+
sidePanel: WorkbenchSidePanelController;
|
|
2163
|
+
terminal: WorkbenchTerminalController;
|
|
2164
|
+
themes: ThemeRegistry;
|
|
2165
|
+
fileIconThemes: FileIconThemeRegistry;
|
|
2166
|
+
getPrimaryResource(): ResourceRef$1 | undefined;
|
|
2167
|
+
onDidChangePrimaryResource(listener: (resource: ResourceRef$1 | undefined) => void): Disposable;
|
|
2168
|
+
getActiveResource(): ResourceRef$1 | undefined;
|
|
2169
|
+
onDidChangeActiveResource(listener: (resource: ResourceRef$1 | undefined) => void): Disposable;
|
|
2170
|
+
registerChildModule(module: WorkbenchModuleContribution): Disposable;
|
|
2171
|
+
}
|
|
2172
|
+
interface WorkbenchSnapshot {
|
|
2173
|
+
layout: WorkbenchLayout;
|
|
2174
|
+
}
|
|
2175
|
+
interface WorkbenchPersistenceAdapter {
|
|
2176
|
+
getSnapshot(scope?: string): WorkbenchSnapshot | undefined;
|
|
2177
|
+
setSnapshot(snapshot: WorkbenchSnapshot, scope?: string): void;
|
|
2178
|
+
flush?(): void;
|
|
2179
|
+
dispose?(): void;
|
|
2180
|
+
}
|
|
2181
|
+
interface WorkbenchHost {
|
|
2182
|
+
getSnapshot(): WorkbenchSnapshot;
|
|
2183
|
+
restoreSnapshot(snapshot: WorkbenchSnapshot): void;
|
|
2184
|
+
setPersistenceScope(scope: string | undefined, input?: {
|
|
2185
|
+
carryRegions?: readonly WorkbenchRegion[];
|
|
2186
|
+
}): void;
|
|
2187
|
+
getPersistenceScope(): string | undefined;
|
|
2188
|
+
}
|
|
2189
|
+
interface WorkbenchCore extends WorkbenchCoreContributionContext {
|
|
2190
|
+
host: WorkbenchHost;
|
|
2191
|
+
layout: WorkbenchLayoutModel;
|
|
2192
|
+
registerModule(module: WorkbenchModuleContribution): Disposable;
|
|
2193
|
+
unregisterModule(moduleId: string): void;
|
|
2194
|
+
}
|
|
2195
|
+
type WorkbenchModuleContext = WorkbenchCoreContributionContext;
|
|
2196
|
+
type WorkbenchModuleContributionContext = WorkbenchModuleContext;
|
|
2197
|
+
interface WorkbenchPagePersistenceScopeInput {
|
|
2198
|
+
currentScope?: string;
|
|
2199
|
+
modeId?: string;
|
|
2200
|
+
pageId?: string;
|
|
2201
|
+
projectId?: string;
|
|
2202
|
+
resource?: ResourceRef$1;
|
|
2203
|
+
}
|
|
2204
|
+
interface WorkbenchPagePersistenceScope {
|
|
2205
|
+
scope?: string;
|
|
2206
|
+
carryRegions?: readonly WorkbenchRegion[];
|
|
2207
|
+
}
|
|
2208
|
+
interface createWorkbenchInput {
|
|
2209
|
+
isInScope?: (resource: ResourceRef$1, primary: ResourceRef$1 | undefined) => boolean;
|
|
2210
|
+
layoutPersistence?: LayoutPersistenceAdapter;
|
|
2211
|
+
pageLocationBrowser?: WorkbenchPageLocationBrowser;
|
|
2212
|
+
pageLocationPersistence?: WorkbenchPageLocationPersistence;
|
|
2213
|
+
resolvePagePersistenceScope?(input: WorkbenchPagePersistenceScopeInput): WorkbenchPagePersistenceScope;
|
|
2214
|
+
pageResources?: WorkbenchPageResourceCodec;
|
|
2215
|
+
persistence?: WorkbenchPersistenceAdapter;
|
|
2216
|
+
preferencePersistence?: PreferencePersistenceAdapter;
|
|
2217
|
+
treePersistence?: TreeRendererPersistenceAdapter;
|
|
2218
|
+
panelMenuStatePersistence?: WorkbenchPanelMenuStatePersistenceAdapter;
|
|
2219
|
+
defaultPanelOpenByRegionId?: Partial<Record<WorkbenchRegion, boolean>>;
|
|
2220
|
+
/** Host-level region layout policy. The active mode's regionSettings win over it. */
|
|
2221
|
+
regionSettings?: Partial<Record<WorkbenchRegion, WorkbenchRegionSettings>>;
|
|
2222
|
+
sidePanelPersistence?: WorkbenchSidePanelPersistenceAdapter;
|
|
2223
|
+
/** Default floating policy. The active mode may override it. */
|
|
2224
|
+
floatingPanels?: "visible" | "hidden";
|
|
2225
|
+
initialSidePanelMode?: WorkbenchSidePanelMode;
|
|
2226
|
+
startPage?: PageRef;
|
|
2227
|
+
}
|
|
2228
|
+
type WorkbenchModuleActivationResult = Disposable | readonly Disposable[] | undefined;
|
|
2229
|
+
interface WorkbenchModuleContribution {
|
|
2230
|
+
id: string;
|
|
2231
|
+
source?: ContributionSource;
|
|
2232
|
+
ownerId?: string;
|
|
2233
|
+
activate(ctx: WorkbenchModuleContributionContext): WorkbenchModuleActivationResult;
|
|
2234
|
+
}
|
|
2235
|
+
//#endregion
|
|
2236
|
+
//#region src/core/workbench-core.d.ts
|
|
2237
|
+
declare const createWorkbench: (input?: createWorkbenchInput) => WorkbenchCore;
|
|
2238
|
+
//#endregion
|
|
2239
|
+
//#region src/core/registries/modes/mode-layout.d.ts
|
|
2240
|
+
declare const getWorkbenchModePanelForRegion: (region: WorkbenchRegion) => "main" | "secondary" | "side" | undefined;
|
|
2241
|
+
declare const isWorkbenchModePanelAvailable: (mode: WorkbenchModeContribution | undefined, panel: WorkbenchPanelRegion) => boolean;
|
|
2242
|
+
//#endregion
|
|
2243
|
+
//#region src/core/registries/modes/mode-registry.d.ts
|
|
2244
|
+
type WorkbenchModeActivationContext = WorkbenchCoreContributionContext;
|
|
2245
|
+
type WorkbenchModeActivationResult = Disposable | readonly Disposable[] | undefined;
|
|
2246
|
+
interface WorkbenchModeAddablePanel {
|
|
2247
|
+
panelId: string;
|
|
2248
|
+
region: WorkbenchPanelRegion;
|
|
2249
|
+
allowedRegions?: readonly WorkbenchRegion[];
|
|
2250
|
+
pinned?: boolean;
|
|
2251
|
+
}
|
|
2252
|
+
interface WorkbenchModeAddablePanelContext {
|
|
2253
|
+
layout: WorkbenchLayout;
|
|
2254
|
+
resource?: ResourceRef$1;
|
|
2255
|
+
}
|
|
2256
|
+
interface WorkbenchModeContribution {
|
|
2257
|
+
id: string;
|
|
2258
|
+
label?: string;
|
|
2259
|
+
defaultTheme?: string;
|
|
2260
|
+
floatingPanels?: "visible" | "hidden";
|
|
2261
|
+
chrome?: Partial<Record<"nav" | "sidenav" | "activity" | "status", string | false>>;
|
|
2262
|
+
panels?: readonly WorkbenchPanelRegion[];
|
|
2263
|
+
/** Region-level layout policy while this mode is active. */
|
|
2264
|
+
regionSettings?: Partial<Record<WorkbenchRegion, WorkbenchRegionSettings>>;
|
|
2265
|
+
resourceKinds?: readonly string[];
|
|
2266
|
+
defaultResource?: ResourceRef$1 | (() => Promise<ResourceRef$1 | undefined> | ResourceRef$1 | undefined);
|
|
2267
|
+
listAddablePanels?(context: WorkbenchModeAddablePanelContext): readonly WorkbenchModeAddablePanel[];
|
|
2268
|
+
activate(ctx: WorkbenchModeActivationContext): WorkbenchModeActivationResult;
|
|
2269
|
+
seed?(ctx: WorkbenchModeActivationContext): void;
|
|
2270
|
+
enter?(ctx: WorkbenchModeActivationContext): WorkbenchModeActivationResult;
|
|
2271
|
+
reconcile?(ctx: WorkbenchModeActivationContext): void;
|
|
2272
|
+
}
|
|
2273
|
+
type WorkbenchModeChangeListener = () => void;
|
|
2274
|
+
interface WorkbenchModeStoreState {
|
|
2275
|
+
modes: Record<string, WorkbenchModeContribution>;
|
|
2276
|
+
activeModeId: string | undefined;
|
|
2277
|
+
}
|
|
2278
|
+
interface WorkbenchModeRegistry {
|
|
2279
|
+
store: WorkbenchStore<WorkbenchModeStoreState>;
|
|
2280
|
+
dispose(): void;
|
|
2281
|
+
registerMode(mode: WorkbenchModeContribution): Disposable;
|
|
2282
|
+
getMode(id: string): WorkbenchModeContribution | undefined;
|
|
2283
|
+
listModes(): WorkbenchModeContribution[];
|
|
2284
|
+
getActiveModeId(): string | undefined;
|
|
2285
|
+
isTransitioning(): boolean;
|
|
2286
|
+
setActiveMode(id: string | undefined, input?: {
|
|
2287
|
+
deferSeed?: boolean;
|
|
2288
|
+
}): void;
|
|
2289
|
+
seedActiveMode(): void;
|
|
2290
|
+
onDidChangeActive(listener: WorkbenchModeChangeListener): Disposable;
|
|
2291
|
+
}
|
|
2292
|
+
//#endregion
|
|
2293
|
+
//#region src/core/controllers/composition/composition-controller.d.ts
|
|
2294
|
+
interface WorkbenchCompositionAddablePanel extends WorkbenchModeAddablePanel {
|
|
2295
|
+
contribution: RegisteredWidgetContribution;
|
|
2296
|
+
open?(resource?: ResourceRef$1): void;
|
|
2297
|
+
}
|
|
2298
|
+
interface WorkbenchCompositionRegionPanels {
|
|
2299
|
+
open: readonly WorkbenchWidgetPlacement[];
|
|
2300
|
+
addable: readonly WorkbenchCompositionAddablePanel[];
|
|
2301
|
+
closable: readonly string[];
|
|
2302
|
+
}
|
|
2303
|
+
interface WorkbenchCompositionController {
|
|
2304
|
+
panelsFor(region: WorkbenchPanelRegion): WorkbenchCompositionRegionPanels;
|
|
2305
|
+
}
|
|
2306
|
+
//#endregion
|
|
2307
|
+
//#region src/core/registries/layout/surface-map.d.ts
|
|
2308
|
+
type AnchorId = "primary" | "secondary" | "attached";
|
|
2309
|
+
declare const resolveAnchorRegion: (anchorId: AnchorId) => "activity" | "sidenav" | "main" | "secondary" | "side" | "status" | "nav" | "main-header" | "main-left-menu" | "main-right-menu" | "secondary-header" | "secondary-left-menu" | "secondary-right-menu" | "side-header" | "side-left-menu" | "side-right-menu" | "overlay";
|
|
2310
|
+
//#endregion
|
|
2311
|
+
//#region src/core/registries/menus/workbench-menu-paths.d.ts
|
|
2312
|
+
declare const headerLeadingMenuPath: (region: string) => MenuPath;
|
|
2313
|
+
declare const headerTrailingMenuPath: (region: string) => MenuPath;
|
|
2314
|
+
declare const workbenchRegionTabLeadingMenuPath: (region: string) => MenuPath;
|
|
2315
|
+
declare const workbenchRegionTabAddMenuPath: (region: string) => MenuPath;
|
|
2316
|
+
declare const workbenchCommandPaletteMenuPath: readonly ["workbench", "commandPalette"];
|
|
2317
|
+
declare const workbenchTopHeaderLeadingMenuPath: MenuPath;
|
|
2318
|
+
declare const workbenchTopHeaderTrailingMenuPath: MenuPath;
|
|
2319
|
+
declare const resourceContextMenuPath: (resourceKind: string) => MenuPath;
|
|
2320
|
+
//#endregion
|
|
2321
|
+
//#region src/core/registries/resources/resource-icons.d.ts
|
|
2322
|
+
declare const standardResourceIcons: {
|
|
2323
|
+
readonly project: "folder-root";
|
|
2324
|
+
readonly workspace: "computer";
|
|
2325
|
+
readonly worktree: "git-pull-request-draft";
|
|
2326
|
+
readonly settings: "settings";
|
|
2327
|
+
readonly kanbanRenderer: "table-properties";
|
|
2328
|
+
};
|
|
2329
|
+
type StandardResourceIcon = (typeof standardResourceIcons)[keyof typeof standardResourceIcons];
|
|
2330
|
+
//#endregion
|
|
2331
|
+
//#region src/core/shared/store/workbench-batch.d.ts
|
|
2332
|
+
/** Commit related stores before their subscribers read the resulting workbench state. */
|
|
2333
|
+
declare const batchWorkbenchChanges: <Result>(commit: () => Result) => Result;
|
|
2334
|
+
//#endregion
|
|
2335
|
+
export { WorkbenchStatusBarRegistryState as $, Disposable as $i, EnumOption as $n, WorkbenchWidgetPlacement as $r, WorkbenchTerminalSessionModel as $t, WorkbenchModuleContribution as A, ResourceProvider as Ai, TreeAction as An, ControlsQueryResult$1 as Ar, WorkbenchNotificationEvent as At, ThemePreferenceOption as B, ResourceHierarchyCycle as Bi, MenuItem as Bn, RegisteredWidgetContribution as Br, Keybinding as Bt, getWorkbenchModePanelForRegion as C, WorkbenchCommandExecutionContext as Ci, WorkbenchReactViewBody as Cn, DataTableRendererQueryResult as Cr, WorkbenchPlaceholderRegistry as Ct, WorkbenchCoreContributionContext as D, ResourceBrowseEntry as Di, WorkbenchViewRegistryStoreState as Dn, DataTableRendererThemeColor as Dr, RegisteredWorkbenchNotification as Dt, WorkbenchCore as E, WorkbenchBreadcrumbItem as Ei, WorkbenchViewRegistry as En, DataTableRendererSelectionAction as Er, NotificationRegistry as Et, WorkbenchSnapshot as F, getWorkbenchSelectionResourceKeys as Fi, TreeNodeInlineInput as Fn, WorkbenchPanelRenderInput as Fr, NavigationTreeRegistry as Ft, WorkbenchStatusRegistry as G, resourceHierarchyCycleCode as Gi, KanbanRendererQueryState as Gn, WorkbenchPanelTab as Gr, CommandPaletteResourceProviderResult as Gt, FileIconThemeRegistry as H, WorkbenchHierarchyNode as Hi, MenuRegistry as Hn, WorkbenchLayout as Hr, KeybindingSequence as Ht, createWorkbenchInput as I, workbenchResourceIdContextKey as Ii, TreeRendererContribution as In, WorkbenchFocusController as Ir, NavigationTreeSlot as It, WorkflowStatus as J, ContextKeyScope as Ji, AttributeKind as Jn, WorkbenchTabMenuGroup as Jr, CommandPaletteResourceResult as Jt, WorkbenchStatusRegistryState as K, ContributionMetadata as Ki, AttributeDescriptor as Kn, WorkbenchRegionSize as Kr, CommandPaletteResourceQueryContext as Kt, ThemeRegistry as L, workbenchResourceMetadataContextKey as Li, TreeRendererPersistenceAdapter as Ln, WorkbenchFocusRegionId as Lr, WorkbenchModePlacementContribution as Lt, WorkbenchPagePersistenceScope as M, ResourceRegistry as Mi, TreeMoveEndpoint as Mn, ControlsRendererLayout as Mr, NavigationTreeContext as Mt, WorkbenchPagePersistenceScopeInput as N, createWorkbenchResourceContextValues as Ni, TreeMovePolicy as Nn, ControlsResetInput as Nr, NavigationTreeContribution as Nt, WorkbenchHost as O, ResourceKindContribution as Oi, createViewRegistry as On, RegisteredDataTableRendererContribution as Or, WorkbenchNotification as Ot, WorkbenchPersistenceAdapter as P, createWorkbenchSelectionResourceMetadata as Pi, TreeNode as Pn, ControlsUpdateValueInput as Pr, NavigationTreeOwner as Pt, WorkbenchStatusBarRegistry as Q, WorkbenchStore as Qi, BoardColumnConfig as Qn, WorkbenchTabSnapshot as Qr, WorkbenchTerminalSessionExit as Qt, ThemePreference as R, workbenchResourceTypeContextKey as Ri, TreeRendererState as Rn, LayoutPersistenceAdapter as Rr, WorkbenchModePlacementRegistry as Rt, WorkbenchModeRegistry as S, CommandRegistry as Si, RegisteredWorkbenchView as Sn, DataTableRendererQueryContext as Sr, WorkbenchPlaceholderContribution as St, createWorkbench as T, WorkbenchBreadcrumbController as Ti, WorkbenchViewContribution as Tn, DataTableRendererRowAction as Tr, WorkbenchOverlayRegistry as Tt, FileIconThemeFont as U, WorkbenchViewHierarchyNode as Ui, RegisteredMenuItem as Un, WorkbenchPanelInstance as Ur, getKeybindingSteps as Ut, ThemePreferenceTokens as V, ResourceHierarchyProvider as Vi, MenuPath as Vn, WorkbenchCommandTarget as Vr, KeybindingRegistry as Vt, FileIconThemePreferenceOption as W, isWorkbenchViewHierarchyNode as Wi, KanbanRendererContribution as Wn, WorkbenchPanelMountStrategy as Wr, CommandPaletteResourceProvider as Wt, createStatusRegistry as X, ContextKeyValue as Xi, AttributesSource as Xn, WorkbenchTabPosition as Xr, WorkbenchTerminalSessionAdapter as Xt, WorkflowStatusAction as Y, ContextKeyService as Yi, AttributeType as Yn, WorkbenchTabMenuRow as Yr, WorkbenchTerminalController as Yt, WorkbenchStatusBarItem as Z, matchesContextExpression as Zi, BoardColumnAction as Zn, WorkbenchTabRetention as Zr, WorkbenchTerminalSessionError as Zt, WorkbenchModeActivationContext as _, Command as _i, WorkbenchPageNavigationResult as _n, FileRendererSaveResult as _r, PreferenceScope as _t, dockedWorkbenchRegions as a, workbenchPanelRegions as ai, WorkbenchShellController as an, KanbanRendererCreateSubmission as ar, SettingsCollectionGroupBy as at, WorkbenchModeAddablePanelContext as b, CommandParamOption as bi, WorkbenchViewMenuContribution as bn, DataTableRendererColumnStat as br, WorkbenchShellPlacementContribution as bt, resourceContextMenuPath as c, NavigationParser as ci, WorkbenchSidePanelPresentation as cn, KanbanRendererRow as cr, SettingsPanelPreference as ct, workbenchRegionTabLeadingMenuPath as d, NavigationTargetCommand as di, WorkbenchPanelMenuStatePersistenceAdapter as dn, SortDirection as dr, SettingsSectionContribution as dt, WorkbenchWidgetTab as ei, WorkbenchTerminalSessionOpener as en, EnumOptions as er, WorkbenchStatusBarSlot as et, workbenchTopHeaderLeadingMenuPath as f, NavigationTargetCompound as fi, WorkbenchPageBrowserEntry as fn, ViewMode as fr, ViewSettingsPanel as ft, defaultPageResourceCodec as g, WorkbenchCommandPaletteOpenInput as gi, WorkbenchPageLocationPersistence as gn, FileRendererRefreshOrigin as gr, PreferenceSchemaContribution as gt, resolveAnchorRegion as h, WorkbenchCommandPaletteController as hi, WorkbenchPageLocationDiagnostic as hn, FileRendererRefreshEnvelope as hr, PreferenceRegistry as ht, DockedWorkbenchRegion$1 as i, WorkbenchRegion as ii, WorkbenchTerminalState as in, KanbanRendererCreateRowConfig as ir, SettingsAction as it, WorkbenchModuleContributionContext as j, ResourceRef$1 as ji, TreeContext as jn, ControlsRendererContribution as jr, WorkbenchNotificationLevel as jt, WorkbenchModuleContext as k, ResourceListContext as ki, workbenchViewIdContextKey as kn, ControlsApplyInput as kr, WorkbenchNotificationAction as kt, workbenchCommandPaletteMenuPath as l, NavigationRegistry as li, WorkbenchSidePanelMode as ln, KanbanRendererSettings as lr, SettingsRegistry as lt, AnchorId as m, NavigationTargetPanel$1 as mi, WorkbenchPageLocationController as mn, FileRendererContribution as mr, PreferencePropertySchema as mt, StandardResourceIcon as n, WorkbenchPanelMenuSide as ni, WorkbenchTerminalSessionSink as nn, KanbanRendererCreateField as nr, CollectionSettingsPanel as nt, headerLeadingMenuPath as o, workbenchRegions as oi, WorkbenchShellOpenRegion as on, KanbanRendererFilterState as or, SettingsPanelBase as ot, workbenchTopHeaderTrailingMenuPath as p, NavigationTargetItem as pi, WorkbenchPageLocationBrowser as pn, FileRendererContent as pr, PreferencePersistenceAdapter as pt, WorkbenchStatusSetContribution as q, ContributionSource as qi, AttributeDisplayDescriptor as qn, WorkbenchTabAction as qr, CommandPaletteResourceRegistry as qt, standardResourceIcons as r, WorkbenchPanelRegion as ri, WorkbenchTerminalSessionStatus as rn, KanbanRendererCreateFieldType as rr, SchemaSettingsPanel as rt, headerTrailingMenuPath as s, NavigationDispatcherContext as si, WorkbenchShellRegionState as sn, KanbanRendererOrdering as sr, SettingsPanelContribution as st, batchWorkbenchChanges as t, WorkbenchPanelMenuRegion as ti, WorkbenchTerminalSessionRequest as tn, EnumOptionsSource as tr, createStatusBarRegistry as tt, workbenchRegionTabAddMenuPath as u, NavigationTarget$1 as ui, WorkbenchSidePanelPersistenceAdapter as un, ResourceContextAction as ur, SettingsScope as ut, WorkbenchModeActivationResult as v, CommandHandler as vi, WorkbenchPageContribution as vn, DataTableRendererColumn as vr, PreferenceScopeRef as vt, isWorkbenchModePanelAvailable as w, WorkbenchCommandExecutionError as wi, WorkbenchViewBody as wn, DataTableRendererRow as wr, WorkbenchOverlayContribution as wt, WorkbenchModeContribution as x, CommandParamSchema as xi, WorkbenchViewMenuRegistry as xn, DataTableRendererContribution as xr, WorkbenchShellPlacementRegistry as xt, WorkbenchModeAddablePanel as y, CommandParamDescriptor as yi, WorkbenchPlacementPresentation as yn, DataTableRendererColumnRenderer as yr, PreferenceValue as yt, ThemePreferenceMode as z, workbenchSelectionResourceKeyMetadataKey as zi, TreeViewSection as zn, RegisteredPlaceholderContribution as zr, WorkbenchOwnedPlacementItem as zt };
|
|
2336
|
+
export {};
|