@pstdio/workbench 0.12.0 → 0.36.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 +1133 -3590
- package/dist/extensions.js +2053 -2405
- package/dist/extensions.js.map +1 -1
- package/dist/file-renderer-view-DKu2l8bT.js +637 -0
- package/dist/file-renderer-view-DKu2l8bT.js.map +1 -0
- package/dist/index-DSsmgN2a.d.ts +2385 -0
- package/dist/index.d.ts +3 -2624
- package/dist/index.js +5272 -6143
- package/dist/index.js.map +1 -1
- package/dist/kanban-presentation-BWhkLbw3.d.ts +14 -0
- package/dist/navigation-tree-registry-CTidmvVs.js +91 -0
- package/dist/navigation-tree-registry-CTidmvVs.js.map +1 -0
- package/dist/react-BxrTklvM.js +8523 -0
- package/dist/react-BxrTklvM.js.map +1 -0
- package/dist/react.d.ts +398 -2849
- package/dist/react.js +2 -54
- 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-RPeMVtTc.js +908 -0
- package/dist/workbench-renderers-RPeMVtTc.js.map +1 -0
- package/package.json +3 -3
- package/dist/file-renderer-view-BJ3LX04R.js +0 -545
- package/dist/file-renderer-view-BJ3LX04R.js.map +0 -1
- package/dist/index-DwNKY4fO.js +0 -5286
- package/dist/index-DwNKY4fO.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-BAPxtfpZ.js +0 -877
- package/dist/workbench-renderers-BAPxtfpZ.js.map +0 -1
- package/dist/workspaces-DdUPyzkL.js +0 -1886
- package/dist/workspaces-DdUPyzkL.js.map +0 -1
|
@@ -0,0 +1,2385 @@
|
|
|
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 | undefined, signal: AbortSignal): 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 DataTableRendererBadgePalette = "gray" | "red" | "orange" | "yellow" | "green" | "teal" | "blue" | "cyan" | "purple" | "pink";
|
|
805
|
+
type DataTableRendererColumnRenderer = {
|
|
806
|
+
type: "json";
|
|
807
|
+
} | {
|
|
808
|
+
type: "color-scale";
|
|
809
|
+
stops: Array<{
|
|
810
|
+
value: number;
|
|
811
|
+
color: DataTableRendererThemeColor;
|
|
812
|
+
}>;
|
|
813
|
+
} | {
|
|
814
|
+
type: "categorical-color";
|
|
815
|
+
categories: Array<{
|
|
816
|
+
value: string | number | boolean | null;
|
|
817
|
+
color: DataTableRendererThemeColor;
|
|
818
|
+
}>;
|
|
819
|
+
} | {
|
|
820
|
+
type: "badge";
|
|
821
|
+
categories?: Array<{
|
|
822
|
+
value: string | number | boolean | null;
|
|
823
|
+
palette: DataTableRendererBadgePalette;
|
|
824
|
+
}>;
|
|
825
|
+
} | {
|
|
826
|
+
type: "diff";
|
|
827
|
+
} | {
|
|
828
|
+
type: "date";
|
|
829
|
+
} | {
|
|
830
|
+
type: "path";
|
|
831
|
+
};
|
|
832
|
+
interface DataTableRendererColumn {
|
|
833
|
+
id: string;
|
|
834
|
+
label?: string;
|
|
835
|
+
description?: string;
|
|
836
|
+
icon?: unknown;
|
|
837
|
+
hidden?: boolean;
|
|
838
|
+
/** Starts unchecked in the column menu; viewers can still show the column. */
|
|
839
|
+
defaultHidden?: boolean;
|
|
840
|
+
stat?: DataTableRendererColumnStat;
|
|
841
|
+
renderer?: DataTableRendererColumnRenderer;
|
|
842
|
+
}
|
|
843
|
+
interface DataTableRendererRow {
|
|
844
|
+
id: string;
|
|
845
|
+
values: Record<string, unknown>;
|
|
846
|
+
resource?: ResourceRef$1;
|
|
847
|
+
}
|
|
848
|
+
interface DataTableRendererQueryResult {
|
|
849
|
+
rows: DataTableRendererRow[];
|
|
850
|
+
columns?: DataTableRendererColumn[];
|
|
851
|
+
}
|
|
852
|
+
interface DataTableRendererQueryContext {
|
|
853
|
+
resource?: ResourceRef$1;
|
|
854
|
+
modeId?: string;
|
|
855
|
+
}
|
|
856
|
+
interface DataTableRendererRowAction {
|
|
857
|
+
id: string;
|
|
858
|
+
label: string;
|
|
859
|
+
icon?: unknown;
|
|
860
|
+
destructive?: boolean;
|
|
861
|
+
run(row: DataTableRendererRow): Promise<void> | void;
|
|
862
|
+
}
|
|
863
|
+
interface DataTableRendererSelectionAction {
|
|
864
|
+
id: string;
|
|
865
|
+
label: string;
|
|
866
|
+
icon?: unknown;
|
|
867
|
+
destructive?: boolean;
|
|
868
|
+
run(rows: DataTableRendererRow[]): Promise<void> | void;
|
|
869
|
+
}
|
|
870
|
+
interface DataTableRendererContribution {
|
|
871
|
+
id: string;
|
|
872
|
+
title: string;
|
|
873
|
+
resourceKind?: string;
|
|
874
|
+
columns?: DataTableRendererColumn[];
|
|
875
|
+
selectionMode?: "none" | "multiple";
|
|
876
|
+
selectionActions?: DataTableRendererSelectionAction[];
|
|
877
|
+
rowActions?: DataTableRendererRowAction[];
|
|
878
|
+
initialPageSize?: number;
|
|
879
|
+
pageSizeOptions?: number[];
|
|
880
|
+
/** Whether column statistics start visible. Defaults to `true`. */
|
|
881
|
+
defaultShowStats?: boolean;
|
|
882
|
+
emptyTitle?: string;
|
|
883
|
+
emptyDescription?: string;
|
|
884
|
+
/** Context keys that choose which rows the query returns. A change drops the old rows and starts a new read. */
|
|
885
|
+
contextKeys?: string[];
|
|
886
|
+
executeQuery(context: DataTableRendererQueryContext, signal: AbortSignal): Promise<DataTableRendererQueryResult> | DataTableRendererQueryResult;
|
|
887
|
+
subscribe?: (listener: () => void) => Disposable | (() => void);
|
|
888
|
+
onRowActivate?: (row: DataTableRendererRow) => Promise<void> | void;
|
|
889
|
+
}
|
|
890
|
+
interface RegisteredDataTableRendererContribution extends DataTableRendererContribution, RegisteredContributionMetadata {}
|
|
891
|
+
//#endregion
|
|
892
|
+
//#region src/core/registries/renderers/file-renderer-registry.d.ts
|
|
893
|
+
interface FileRendererContent {
|
|
894
|
+
fileName?: string;
|
|
895
|
+
/** Workspace-relative path shown above the file preview. */
|
|
896
|
+
filePath?: string;
|
|
897
|
+
mimeType?: string;
|
|
898
|
+
content?: string;
|
|
899
|
+
dataUrl?: string;
|
|
900
|
+
placeholder?: string;
|
|
901
|
+
/** Override contribution-level save support for one loaded file. */
|
|
902
|
+
editable?: boolean;
|
|
903
|
+
/** Request Monaco for text that automatic dispatch would open as markdown. */
|
|
904
|
+
textRenderer?: "automatic" | "monaco";
|
|
905
|
+
/** Represent a deliberate no-file selection without an editable blank document. */
|
|
906
|
+
emptyState?: {
|
|
907
|
+
title: string;
|
|
908
|
+
description?: string;
|
|
909
|
+
};
|
|
910
|
+
/** Ordered backing-store revision when one is available. */
|
|
911
|
+
revision?: string;
|
|
912
|
+
}
|
|
913
|
+
interface FileRendererRefreshOrigin {
|
|
914
|
+
rendererId: string;
|
|
915
|
+
instanceId: string;
|
|
916
|
+
operationId: string;
|
|
917
|
+
}
|
|
918
|
+
interface FileRendererRefreshEnvelope {
|
|
919
|
+
resourceKey?: string;
|
|
920
|
+
origin?: FileRendererRefreshOrigin;
|
|
921
|
+
revision?: string;
|
|
922
|
+
}
|
|
923
|
+
interface FileRendererSaveResult {
|
|
924
|
+
revision?: string;
|
|
925
|
+
}
|
|
926
|
+
interface FileRendererContribution {
|
|
927
|
+
id: string;
|
|
928
|
+
title: string;
|
|
929
|
+
resourceKind?: string;
|
|
930
|
+
/** Resolve the file's content (and identity) for the bound resource. */
|
|
931
|
+
load(resource: ResourceRef$1 | undefined, signal: AbortSignal): Promise<FileRendererContent> | FileRendererContent;
|
|
932
|
+
/** Persist edited text. Absent ⇒ read-only. Never called for images. */
|
|
933
|
+
save?(resource: ResourceRef$1 | undefined, content: string, origin?: FileRendererRefreshOrigin): Promise<FileRendererSaveResult | undefined> | FileRendererSaveResult | void;
|
|
934
|
+
}
|
|
935
|
+
//#endregion
|
|
936
|
+
//#region src/core/registries/renderers/kanban-renderer-contracts.d.ts
|
|
937
|
+
/**
|
|
938
|
+
* Core-owned contracts for kanban renderer contributions. @pstdio/ui's
|
|
939
|
+
* KanbanRenderer props are structurally identical; the React layer bridges the
|
|
940
|
+
* two, so drift surfaces as a compile error there instead of coupling core's
|
|
941
|
+
* API shape to UI package ownership.
|
|
942
|
+
*/
|
|
943
|
+
type ViewMode = "board" | "list";
|
|
944
|
+
type SortDirection = "asc" | "desc";
|
|
945
|
+
declare const NO_GROUPING = "none";
|
|
946
|
+
declare const MANUAL_ORDERING = "manual";
|
|
947
|
+
interface EnumOption {
|
|
948
|
+
value: string;
|
|
949
|
+
label: string;
|
|
950
|
+
color?: string;
|
|
951
|
+
icon?: string | null;
|
|
952
|
+
}
|
|
953
|
+
/**
|
|
954
|
+
* Reactive options source for enum / enum-multi attributes. Mirrors React's
|
|
955
|
+
* useSyncExternalStore contract so a contribution can hand its options off as
|
|
956
|
+
* a live collection instead of a frozen array.
|
|
957
|
+
*/
|
|
958
|
+
interface EnumOptionsSource {
|
|
959
|
+
subscribe: (listener: () => void) => () => void;
|
|
960
|
+
getSnapshot: () => EnumOption[];
|
|
961
|
+
}
|
|
962
|
+
type EnumOptions = EnumOption[] | EnumOptionsSource;
|
|
963
|
+
type AttributeType = {
|
|
964
|
+
kind: "enum";
|
|
965
|
+
options: EnumOptions;
|
|
966
|
+
} | {
|
|
967
|
+
kind: "enum-multi";
|
|
968
|
+
options: EnumOptions;
|
|
969
|
+
} | {
|
|
970
|
+
kind: "string";
|
|
971
|
+
} | {
|
|
972
|
+
kind: "date";
|
|
973
|
+
} | {
|
|
974
|
+
kind: "number";
|
|
975
|
+
} | {
|
|
976
|
+
kind: "user";
|
|
977
|
+
};
|
|
978
|
+
type AttributeKind = AttributeType["kind"];
|
|
979
|
+
type AttributeDisplayDescriptor = KanbanRendererAttributeDisplay;
|
|
980
|
+
interface AttributeDescriptor<TNode = unknown> {
|
|
981
|
+
id: string;
|
|
982
|
+
label: string;
|
|
983
|
+
type: AttributeType;
|
|
984
|
+
filterable?: boolean;
|
|
985
|
+
groupable?: boolean;
|
|
986
|
+
sortable?: boolean;
|
|
987
|
+
displayable?: boolean;
|
|
988
|
+
editable?: boolean;
|
|
989
|
+
display?: AttributeDisplayDescriptor;
|
|
990
|
+
render?: (value: unknown, row: KanbanRendererRow) => TNode;
|
|
991
|
+
compare?: (a: unknown, b: unknown) => number;
|
|
992
|
+
}
|
|
993
|
+
/**
|
|
994
|
+
* Reactive source for an entire attribute schema. Lets a contribution
|
|
995
|
+
* add/remove/edit attributes at runtime without re-registering.
|
|
996
|
+
*/
|
|
997
|
+
interface AttributesSource<TNode = unknown> {
|
|
998
|
+
subscribe: (listener: () => void) => () => void;
|
|
999
|
+
getSnapshot: () => AttributeDescriptor<TNode>[];
|
|
1000
|
+
}
|
|
1001
|
+
interface KanbanRendererRow {
|
|
1002
|
+
id: string;
|
|
1003
|
+
title: string;
|
|
1004
|
+
/**
|
|
1005
|
+
* Optional navigation handle. When set, the renderer's default click handler
|
|
1006
|
+
* routes through the contribution's onRowActivate (which typically opens the
|
|
1007
|
+
* resource via the workbench).
|
|
1008
|
+
*/
|
|
1009
|
+
resource?: unknown;
|
|
1010
|
+
attributes: Record<string, unknown>;
|
|
1011
|
+
}
|
|
1012
|
+
interface KanbanRendererOrdering {
|
|
1013
|
+
attributeId: string | typeof MANUAL_ORDERING;
|
|
1014
|
+
direction: SortDirection;
|
|
1015
|
+
}
|
|
1016
|
+
interface KanbanRendererSettings {
|
|
1017
|
+
viewMode: ViewMode;
|
|
1018
|
+
columnGrouping: string | typeof NO_GROUPING;
|
|
1019
|
+
rowGrouping: string | typeof NO_GROUPING;
|
|
1020
|
+
ordering: KanbanRendererOrdering;
|
|
1021
|
+
displayProperties: string[];
|
|
1022
|
+
}
|
|
1023
|
+
type KanbanRendererFilterState = Record<string, string[]>;
|
|
1024
|
+
interface KanbanRendererSavedView {
|
|
1025
|
+
id: string;
|
|
1026
|
+
title: string;
|
|
1027
|
+
settings: KanbanRendererSettings;
|
|
1028
|
+
filters: KanbanRendererFilterState;
|
|
1029
|
+
isDefault?: boolean;
|
|
1030
|
+
}
|
|
1031
|
+
type KanbanRendererCreateFieldType = "text" | "longtext" | "markdown" | "number" | "boolean" | "select" | "multi-select" | "files";
|
|
1032
|
+
interface KanbanRendererCreateField {
|
|
1033
|
+
id: string;
|
|
1034
|
+
label: string;
|
|
1035
|
+
description?: string;
|
|
1036
|
+
placeholder?: string;
|
|
1037
|
+
type: KanbanRendererCreateFieldType;
|
|
1038
|
+
required?: boolean;
|
|
1039
|
+
defaultValue?: unknown;
|
|
1040
|
+
options?: EnumOption[];
|
|
1041
|
+
/** `files` fields only. */
|
|
1042
|
+
multiple?: boolean;
|
|
1043
|
+
accept?: string;
|
|
1044
|
+
}
|
|
1045
|
+
/** Chrome copy is supplied by the caller so the dialog ships no strings of its own. */
|
|
1046
|
+
interface KanbanRendererCreateLabels {
|
|
1047
|
+
cancel: string;
|
|
1048
|
+
properties: string;
|
|
1049
|
+
submitError: string;
|
|
1050
|
+
removeFile: string;
|
|
1051
|
+
}
|
|
1052
|
+
interface KanbanRendererCreateRowConfig {
|
|
1053
|
+
title: string;
|
|
1054
|
+
submitLabel: string;
|
|
1055
|
+
fields: KanbanRendererCreateField[];
|
|
1056
|
+
labels: KanbanRendererCreateLabels;
|
|
1057
|
+
}
|
|
1058
|
+
interface KanbanRendererCreateSubmission {
|
|
1059
|
+
columnId: string;
|
|
1060
|
+
columnAttributeId?: string;
|
|
1061
|
+
/** Declared field values, excluding `files` fields — those arrive as `files`. */
|
|
1062
|
+
values: Record<string, unknown>;
|
|
1063
|
+
/** Every editable attribute the user set, keyed by attribute id. */
|
|
1064
|
+
attributeValues: Record<string, unknown>;
|
|
1065
|
+
files: File[];
|
|
1066
|
+
}
|
|
1067
|
+
interface BoardColumnAction<TIcon = unknown> {
|
|
1068
|
+
id: string;
|
|
1069
|
+
label: string;
|
|
1070
|
+
icon: TIcon;
|
|
1071
|
+
}
|
|
1072
|
+
/** Board-column behavior and menu configuration for a resolved column group. */
|
|
1073
|
+
interface BoardColumnConfig<TIcon = unknown> {
|
|
1074
|
+
/** Color palette token used for the column header and group badges. */
|
|
1075
|
+
color?: string;
|
|
1076
|
+
canDragIn?: boolean;
|
|
1077
|
+
canDragOut?: boolean;
|
|
1078
|
+
canCreate?: boolean;
|
|
1079
|
+
actions?: BoardColumnAction<TIcon>[];
|
|
1080
|
+
}
|
|
1081
|
+
/** Row-level context menu action surfaced by the renderer. */
|
|
1082
|
+
interface ResourceContextAction<TNode = unknown> {
|
|
1083
|
+
key: string;
|
|
1084
|
+
label: string;
|
|
1085
|
+
onClick: () => Promise<void> | void;
|
|
1086
|
+
isDisabled?: boolean;
|
|
1087
|
+
icon?: TNode;
|
|
1088
|
+
endContent?: TNode;
|
|
1089
|
+
separatorBefore?: boolean;
|
|
1090
|
+
}
|
|
1091
|
+
//#endregion
|
|
1092
|
+
//#region src/core/registries/renderers/kanban-renderer-registry.d.ts
|
|
1093
|
+
interface KanbanRendererQueryState {
|
|
1094
|
+
settings: KanbanRendererSettings;
|
|
1095
|
+
filters: KanbanRendererFilterState;
|
|
1096
|
+
}
|
|
1097
|
+
interface KanbanRendererContribution<TRow extends KanbanRendererRow = KanbanRendererRow, TNode = unknown, TIcon = unknown> {
|
|
1098
|
+
id: string;
|
|
1099
|
+
title: string;
|
|
1100
|
+
resourceKind?: string;
|
|
1101
|
+
/** Host-owned scope for persisted display settings. */
|
|
1102
|
+
storageScope?: string;
|
|
1103
|
+
/**
|
|
1104
|
+
* Declarative attribute schema. The renderer dispatches filter / group /
|
|
1105
|
+
* sort / display / inline-edit behavior on each descriptor's `type.kind`.
|
|
1106
|
+
*
|
|
1107
|
+
* Pass an `AttributesSource` ({ subscribe, getSnapshot }) instead of a
|
|
1108
|
+
* static array to let the contribution mutate its schema at runtime —
|
|
1109
|
+
* `WorkbenchKanbanView` subscribes so additions / removals / kind changes
|
|
1110
|
+
* propagate live without re-registering the renderer.
|
|
1111
|
+
*/
|
|
1112
|
+
attributes: AttributeDescriptor<TNode>[] | AttributesSource<TNode>;
|
|
1113
|
+
/** Per-board-column overrides (color, drag/create rules, custom actions). */
|
|
1114
|
+
getBoardColumnConfig?: (groupKey: string) => BoardColumnConfig<TIcon>;
|
|
1115
|
+
hideToolbar?: boolean;
|
|
1116
|
+
emptyTitle?: string;
|
|
1117
|
+
emptyDescription?: string;
|
|
1118
|
+
/** Initial settings/filters applied when the kanban renderer mounts. */
|
|
1119
|
+
defaultSettings?: Partial<KanbanRendererSettings>;
|
|
1120
|
+
defaultFilters?: KanbanRendererFilterState;
|
|
1121
|
+
defaultViews?: KanbanRendererSavedView[];
|
|
1122
|
+
defaultActiveViewId?: string;
|
|
1123
|
+
/**
|
|
1124
|
+
* Data source. Receives the current display state so backends can paginate
|
|
1125
|
+
* / filter / sort. The renderer re-applies filter / sort / group locally,
|
|
1126
|
+
* so this can return unfiltered rows in simple cases.
|
|
1127
|
+
*/
|
|
1128
|
+
executeQuery(state: KanbanRendererQueryState, signal: AbortSignal): Promise<TRow[]> | TRow[];
|
|
1129
|
+
subscribe?: (listener: () => void) => Disposable | (() => void);
|
|
1130
|
+
/** Row activation surfaced by the renderer (mirrored from <KanbanRenderer>). */
|
|
1131
|
+
onRowActivate?: (row: TRow) => Promise<void> | void;
|
|
1132
|
+
/** Per-row right-click context menu actions (mirrored from <KanbanRenderer>). */
|
|
1133
|
+
getRowContextMenuActions?: (row: TRow) => ResourceContextAction<TNode>[];
|
|
1134
|
+
/**
|
|
1135
|
+
* Fires for inline attribute edits AND for cross-column drag-to-reorder on
|
|
1136
|
+
* the board (the renderer passes the grouping attribute id + the target
|
|
1137
|
+
* column value).
|
|
1138
|
+
*/
|
|
1139
|
+
onAttributeChange?: (rowId: string, attributeId: string, value: unknown) => Promise<void> | void;
|
|
1140
|
+
/** Manual within-column reorder (only fires when ordering is manual). */
|
|
1141
|
+
onReorder?: (rowId: string, beforeRowId?: string) => Promise<void> | void;
|
|
1142
|
+
createRow?: KanbanRendererCreateRowConfig;
|
|
1143
|
+
onCreateRow?: (submission: KanbanRendererCreateSubmission) => Promise<void> | void;
|
|
1144
|
+
onColumnAction?: (columnId: string, actionId: string) => Promise<void> | void;
|
|
1145
|
+
}
|
|
1146
|
+
//#endregion
|
|
1147
|
+
//#region src/core/registries/menus/menu-registry.d.ts
|
|
1148
|
+
type MenuPath = readonly string[];
|
|
1149
|
+
interface MenuItem {
|
|
1150
|
+
commandId: string;
|
|
1151
|
+
sourceCommandId?: string;
|
|
1152
|
+
label?: string;
|
|
1153
|
+
description?: string;
|
|
1154
|
+
icon?: string;
|
|
1155
|
+
iconSrc?: string;
|
|
1156
|
+
overflowLabel?: string;
|
|
1157
|
+
when?: string;
|
|
1158
|
+
group?: string;
|
|
1159
|
+
order?: number;
|
|
1160
|
+
args?: unknown;
|
|
1161
|
+
readOnly?: boolean;
|
|
1162
|
+
/** Marks a menu action that navigates outside the app, rendered with a trailing external-link icon. */
|
|
1163
|
+
external?: boolean;
|
|
1164
|
+
}
|
|
1165
|
+
interface RegisteredMenuItem extends MenuItem, RegisteredContributionMetadata {
|
|
1166
|
+
path: MenuPath;
|
|
1167
|
+
}
|
|
1168
|
+
interface MenuRegistryStoreState {
|
|
1169
|
+
itemsByPath: Record<string, RegisteredMenuItem[]>;
|
|
1170
|
+
}
|
|
1171
|
+
interface MenuRegistry {
|
|
1172
|
+
menuStore: WorkbenchStore<MenuRegistryStoreState>;
|
|
1173
|
+
registerMenuItem(path: MenuPath, item: MenuItem, metadata?: ContributionMetadata): Disposable;
|
|
1174
|
+
listMenuItems(path: MenuPath): RegisteredMenuItem[];
|
|
1175
|
+
}
|
|
1176
|
+
//#endregion
|
|
1177
|
+
//#region src/core/registries/renderers/tree-renderer-types.d.ts
|
|
1178
|
+
interface TreeQueryContext {
|
|
1179
|
+
signal?: AbortSignal;
|
|
1180
|
+
filter?: string;
|
|
1181
|
+
resource?: ResourceRef$1;
|
|
1182
|
+
/** Widget/view contribution id for trees rendered through a view-backed widget. */
|
|
1183
|
+
viewId?: string;
|
|
1184
|
+
}
|
|
1185
|
+
interface TreeContext extends TreeQueryContext {
|
|
1186
|
+
state: Readonly<TreeRendererState>;
|
|
1187
|
+
refresh(): void;
|
|
1188
|
+
setSelectedNode(nodeId: string | undefined): void;
|
|
1189
|
+
}
|
|
1190
|
+
interface TreeAction {
|
|
1191
|
+
id: string;
|
|
1192
|
+
label?: string;
|
|
1193
|
+
icon?: string;
|
|
1194
|
+
commandId?: string;
|
|
1195
|
+
args?: unknown;
|
|
1196
|
+
params?: CommandParamSchema;
|
|
1197
|
+
submitLabel?: string;
|
|
1198
|
+
when?: string;
|
|
1199
|
+
disabled?: boolean;
|
|
1200
|
+
run?(args?: unknown): Promise<void> | void;
|
|
1201
|
+
}
|
|
1202
|
+
type TreeNodeRowVariant = "empty-state";
|
|
1203
|
+
interface TreeNodeInlineInput {
|
|
1204
|
+
ariaLabel: string;
|
|
1205
|
+
defaultValue?: string;
|
|
1206
|
+
placeholder?: string;
|
|
1207
|
+
onCommit(value: string): Promise<void> | void;
|
|
1208
|
+
onCancel?(): void;
|
|
1209
|
+
}
|
|
1210
|
+
interface TreeNode {
|
|
1211
|
+
id: string;
|
|
1212
|
+
selected?: boolean;
|
|
1213
|
+
/** Host-owned customization boundary. Extension callbacks cannot set it. */
|
|
1214
|
+
moveScope?: string;
|
|
1215
|
+
label: string;
|
|
1216
|
+
icon?: string;
|
|
1217
|
+
iconElement?: unknown;
|
|
1218
|
+
iconColor?: string;
|
|
1219
|
+
iconTooltip?: string;
|
|
1220
|
+
endContent?: unknown;
|
|
1221
|
+
commandId?: string;
|
|
1222
|
+
resource?: ResourceRef$1;
|
|
1223
|
+
target?: NavigationTarget$1;
|
|
1224
|
+
/** Visual row variant for non-data rows such as placeholders. */
|
|
1225
|
+
rowVariant?: TreeNodeRowVariant;
|
|
1226
|
+
inlineInput?: TreeNodeInlineInput;
|
|
1227
|
+
actions?: TreeAction[];
|
|
1228
|
+
contextMenuActions?: TreeAction[];
|
|
1229
|
+
contextMenuPath?: MenuPath;
|
|
1230
|
+
menuPath?: MenuPath;
|
|
1231
|
+
menuPlacement?: "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right-start" | "left-start";
|
|
1232
|
+
showContextMenuTrigger?: boolean;
|
|
1233
|
+
collapsible?: boolean;
|
|
1234
|
+
disabled?: boolean;
|
|
1235
|
+
children?: TreeNode[];
|
|
1236
|
+
description?: string;
|
|
1237
|
+
contextValue?: string;
|
|
1238
|
+
hiddenByDefault?: boolean;
|
|
1239
|
+
/** When true, the node (e.g. a header/footer row) opts in to the tree's hide/show customization menu. */
|
|
1240
|
+
canHide?: boolean;
|
|
1241
|
+
/** When false, the node stays fixed within its Sidenav group. */
|
|
1242
|
+
canReorder?: boolean;
|
|
1243
|
+
/** Allow this node to be moved to another tree location. */
|
|
1244
|
+
canDrag?: boolean;
|
|
1245
|
+
/** Allow movable nodes to be dropped on this node. */
|
|
1246
|
+
canDrop?: boolean;
|
|
1247
|
+
}
|
|
1248
|
+
interface TreeSectionEmptyState {
|
|
1249
|
+
title: string;
|
|
1250
|
+
description?: string;
|
|
1251
|
+
icon?: string;
|
|
1252
|
+
}
|
|
1253
|
+
interface TreeViewSection {
|
|
1254
|
+
id: string;
|
|
1255
|
+
/** Host-owned customization boundary. Extension callbacks cannot set it. */
|
|
1256
|
+
moveScope?: string;
|
|
1257
|
+
label?: string;
|
|
1258
|
+
actions?: TreeAction[];
|
|
1259
|
+
collapsible?: boolean;
|
|
1260
|
+
emptyState?: TreeSectionEmptyState;
|
|
1261
|
+
nodes: TreeNode[];
|
|
1262
|
+
hiddenByDefault?: boolean;
|
|
1263
|
+
/** When true, the section (category) opts in to the tree's hide/show customization menu. */
|
|
1264
|
+
canHide?: boolean;
|
|
1265
|
+
/** When false, the section stays fixed within the Sidenav main region. */
|
|
1266
|
+
canReorder?: boolean;
|
|
1267
|
+
}
|
|
1268
|
+
interface TreeMoveEndpoint {
|
|
1269
|
+
kind: "section" | "node";
|
|
1270
|
+
sectionId: string;
|
|
1271
|
+
id: string;
|
|
1272
|
+
moveScope?: string;
|
|
1273
|
+
}
|
|
1274
|
+
type TreeMovePolicy = (move: {
|
|
1275
|
+
source: TreeMoveEndpoint;
|
|
1276
|
+
destination: TreeMoveEndpoint;
|
|
1277
|
+
}) => boolean;
|
|
1278
|
+
interface TreeRendererContribution {
|
|
1279
|
+
id: string;
|
|
1280
|
+
title: string;
|
|
1281
|
+
icon?: string;
|
|
1282
|
+
searchable?: boolean;
|
|
1283
|
+
searchPlaceholder?: string;
|
|
1284
|
+
when?: string;
|
|
1285
|
+
defaultExpandedSectionIds?: string[];
|
|
1286
|
+
defaultExpandedNodeIds?: string[];
|
|
1287
|
+
getBody(ctx: TreeContext): Promise<TreeViewSection[]> | TreeViewSection[];
|
|
1288
|
+
getHeader?(ctx: TreeContext): Promise<TreeViewSection[]> | TreeViewSection[];
|
|
1289
|
+
getFooter?(ctx: TreeContext): Promise<TreeViewSection[]> | TreeViewSection[];
|
|
1290
|
+
getChildren(node: TreeNode, ctx: TreeContext): Promise<TreeNode[]> | TreeNode[];
|
|
1291
|
+
canMove?: TreeMovePolicy;
|
|
1292
|
+
moveNode?(source: TreeNode, target: TreeNode | undefined, ctx: TreeContext): Promise<void> | void;
|
|
1293
|
+
}
|
|
1294
|
+
interface RegisteredTreeRendererContribution extends TreeRendererContribution, RegisteredContributionMetadata {}
|
|
1295
|
+
interface TreeRendererState {
|
|
1296
|
+
expandedNodeIds: string[];
|
|
1297
|
+
expandedSectionIds: string[];
|
|
1298
|
+
selectedNodeId?: string;
|
|
1299
|
+
loading?: boolean;
|
|
1300
|
+
}
|
|
1301
|
+
interface TreeRendererRefreshEvent {
|
|
1302
|
+
treeId: string;
|
|
1303
|
+
}
|
|
1304
|
+
interface TreeRendererStoreState {
|
|
1305
|
+
trees: Record<string, RegisteredTreeRendererContribution>;
|
|
1306
|
+
statesByTreeId: Record<string, TreeRendererState>;
|
|
1307
|
+
refreshKeysByTreeId: Record<string, number>;
|
|
1308
|
+
}
|
|
1309
|
+
interface PersistedTreeRendererStates {
|
|
1310
|
+
statesByTreeId: Record<string, TreeRendererState>;
|
|
1311
|
+
}
|
|
1312
|
+
interface TreeRendererPersistenceAdapter {
|
|
1313
|
+
getTreeStates(): PersistedTreeRendererStates | undefined;
|
|
1314
|
+
setTreeStates(states: PersistedTreeRendererStates): void;
|
|
1315
|
+
}
|
|
1316
|
+
type TreeRendererImplementation = (input: WorkbenchPanelRenderInput & {
|
|
1317
|
+
treeId: string;
|
|
1318
|
+
}) => unknown;
|
|
1319
|
+
type TreeRendererRefreshListener = (event: TreeRendererRefreshEvent) => void;
|
|
1320
|
+
interface TreeRendererRegistry {
|
|
1321
|
+
treeStore: WorkbenchStore<TreeRendererStoreState>;
|
|
1322
|
+
registerTreeRenderer(view: TreeRendererContribution, metadata?: ContributionMetadata): Disposable;
|
|
1323
|
+
setTreeRendererImplementation(impl: TreeRendererImplementation): void;
|
|
1324
|
+
getTreeRenderer(id: string): RegisteredTreeRendererContribution | undefined;
|
|
1325
|
+
listTreeRenderers(): RegisteredTreeRendererContribution[];
|
|
1326
|
+
getBody(id: string, ctx?: TreeQueryContext): Promise<TreeViewSection[]>;
|
|
1327
|
+
getHeader(id: string, ctx?: TreeQueryContext): Promise<TreeViewSection[]>;
|
|
1328
|
+
getFooter(id: string, ctx?: TreeQueryContext): Promise<TreeViewSection[]>;
|
|
1329
|
+
getChildren(id: string, node: TreeNode, ctx?: TreeQueryContext): Promise<TreeNode[]>;
|
|
1330
|
+
getTreeState(id: string): TreeRendererState;
|
|
1331
|
+
setNodeExpanded(id: string, nodeId: string, expanded: boolean): void;
|
|
1332
|
+
setSectionExpanded(id: string, sectionId: string, expanded: boolean): void;
|
|
1333
|
+
setSelectedNode(id: string, nodeId: string | undefined): void;
|
|
1334
|
+
setLoading(id: string, loading: boolean): void;
|
|
1335
|
+
refresh(id: string): void;
|
|
1336
|
+
onDidRefresh(listener: TreeRendererRefreshListener): Disposable;
|
|
1337
|
+
}
|
|
1338
|
+
//#endregion
|
|
1339
|
+
//#region src/core/registries/views/renderer-read-registry.d.ts
|
|
1340
|
+
interface RendererReadRequest<T> {
|
|
1341
|
+
queryKey: string;
|
|
1342
|
+
load(signal: AbortSignal): Promise<T> | T;
|
|
1343
|
+
onValue(value: T): void;
|
|
1344
|
+
onError(error: unknown): void;
|
|
1345
|
+
}
|
|
1346
|
+
interface RendererReadBinding {
|
|
1347
|
+
request<T>(request: RendererReadRequest<T>, reason?: "refresh" | "retry"): void;
|
|
1348
|
+
dispose(): void;
|
|
1349
|
+
}
|
|
1350
|
+
interface RendererReadRegistry {
|
|
1351
|
+
bind(key: string): RendererReadBinding;
|
|
1352
|
+
dispose(): Promise<void>;
|
|
1353
|
+
}
|
|
1354
|
+
declare const createRendererReadRegistry: (options?: {
|
|
1355
|
+
deadlineMs?: number;
|
|
1356
|
+
}) => RendererReadRegistry;
|
|
1357
|
+
//#endregion
|
|
1358
|
+
//#region src/core/registries/views/view-registry.d.ts
|
|
1359
|
+
declare const workbenchViewIdContextKey = "workbench.view.id";
|
|
1360
|
+
type NativeViewBody<Kind extends string, Contribution> = {
|
|
1361
|
+
kind: Kind;
|
|
1362
|
+
} & Omit<Contribution, "id" | "title" | "icon">;
|
|
1363
|
+
interface WorkbenchReactViewBody {
|
|
1364
|
+
kind: "react";
|
|
1365
|
+
render: WorkbenchRendererRegistration["render"];
|
|
1366
|
+
}
|
|
1367
|
+
type WorkbenchViewBody = WorkbenchReactViewBody | NativeViewBody<"tree", TreeRendererContribution> | NativeViewBody<"file", FileRendererContribution> | NativeViewBody<"controls", ControlsRendererContribution> | NativeViewBody<"kanban", KanbanRendererContribution> | NativeViewBody<"dataTable", DataTableRendererContribution>;
|
|
1368
|
+
interface WorkbenchViewContribution {
|
|
1369
|
+
id: string;
|
|
1370
|
+
title: string;
|
|
1371
|
+
icon?: string;
|
|
1372
|
+
body: WorkbenchViewBody;
|
|
1373
|
+
}
|
|
1374
|
+
type RegisteredWorkbenchView = WorkbenchViewContribution & RegisteredContributionMetadata;
|
|
1375
|
+
interface WorkbenchViewRegistryStoreState {
|
|
1376
|
+
views: Record<string, RegisteredWorkbenchView>;
|
|
1377
|
+
}
|
|
1378
|
+
interface WorkbenchViewRegistry {
|
|
1379
|
+
reads: RendererReadRegistry;
|
|
1380
|
+
store: WorkbenchStore<WorkbenchViewRegistryStoreState>;
|
|
1381
|
+
registerView(view: WorkbenchViewContribution, metadata?: ContributionMetadata): Disposable;
|
|
1382
|
+
getView(viewId: string): RegisteredWorkbenchView | undefined;
|
|
1383
|
+
listViews(): RegisteredWorkbenchView[];
|
|
1384
|
+
refreshView(viewId: string, input?: unknown): void;
|
|
1385
|
+
}
|
|
1386
|
+
interface CreateWorkbenchViewRegistryInput {
|
|
1387
|
+
registerBody(view: WorkbenchViewContribution, metadata?: ContributionMetadata): Disposable & {
|
|
1388
|
+
refresh?(input?: unknown): void;
|
|
1389
|
+
};
|
|
1390
|
+
}
|
|
1391
|
+
declare const createViewRegistry: (input: CreateWorkbenchViewRegistryInput) => WorkbenchViewRegistry;
|
|
1392
|
+
//#endregion
|
|
1393
|
+
//#region src/core/registries/view-menus/view-menu-registry.d.ts
|
|
1394
|
+
interface WorkbenchViewMenuContribution {
|
|
1395
|
+
id: string;
|
|
1396
|
+
ownerViewId: string;
|
|
1397
|
+
viewId: string;
|
|
1398
|
+
side: "left" | "right";
|
|
1399
|
+
priority?: number;
|
|
1400
|
+
mountStrategy?: "active" | "keep-mounted";
|
|
1401
|
+
hiddenByDefault?: boolean;
|
|
1402
|
+
regionSize?: WorkbenchRegionSize;
|
|
1403
|
+
regionCollapsible?: boolean;
|
|
1404
|
+
headerBorderBottom?: boolean;
|
|
1405
|
+
config?: unknown;
|
|
1406
|
+
}
|
|
1407
|
+
interface WorkbenchViewMenuRegistry {
|
|
1408
|
+
registerViewMenu(menu: WorkbenchViewMenuContribution): Disposable;
|
|
1409
|
+
getViewMenu(id: string): WorkbenchViewMenuContribution | undefined;
|
|
1410
|
+
listViewMenus(ownerViewId?: string): WorkbenchViewMenuContribution[];
|
|
1411
|
+
definitionsFor(ownerViewId: string, placementId: string): readonly WorkbenchPanelMenuDefinition[];
|
|
1412
|
+
}
|
|
1413
|
+
//#endregion
|
|
1414
|
+
//#region src/core/registries/views/view-placement.d.ts
|
|
1415
|
+
interface WorkbenchPlacementPresentation {
|
|
1416
|
+
mountStrategy?: WidgetMountStrategy;
|
|
1417
|
+
hiddenByDefault?: boolean;
|
|
1418
|
+
headerBorderBottom?: boolean;
|
|
1419
|
+
tab?: WorkbenchPanelTab;
|
|
1420
|
+
config?: unknown;
|
|
1421
|
+
}
|
|
1422
|
+
//#endregion
|
|
1423
|
+
//#region src/core/registries/pages/page-registry-types.d.ts
|
|
1424
|
+
interface WorkbenchPageSlot extends Omit<PageSlot, "tab"> {
|
|
1425
|
+
readonly isAvailable?: (resource: ResourceRef | undefined) => boolean;
|
|
1426
|
+
readonly tab?: WorkbenchPlacementPresentation["tab"];
|
|
1427
|
+
}
|
|
1428
|
+
type WorkbenchPageMain = PageMain extends (infer Main) ? Main extends PageMain ? Omit<Main, "tab"> & {
|
|
1429
|
+
readonly tab?: WorkbenchPlacementPresentation["tab"];
|
|
1430
|
+
} : never : never;
|
|
1431
|
+
interface WorkbenchPageContribution {
|
|
1432
|
+
id: string;
|
|
1433
|
+
ref: PageRef;
|
|
1434
|
+
title?: Localizable<string>;
|
|
1435
|
+
icon?: string;
|
|
1436
|
+
path: string;
|
|
1437
|
+
modeId: string;
|
|
1438
|
+
parentId?: string;
|
|
1439
|
+
resource?: ResourceConstraint;
|
|
1440
|
+
main: WorkbenchPageMain;
|
|
1441
|
+
slots: readonly WorkbenchPageSlot[];
|
|
1442
|
+
}
|
|
1443
|
+
interface WorkbenchPageResourceCodec {
|
|
1444
|
+
normalize(resource: ResourceRef): ResourceRef;
|
|
1445
|
+
toUri(resource: ResourceRef): string;
|
|
1446
|
+
fromUri(uri: string): ResourceRef | undefined;
|
|
1447
|
+
}
|
|
1448
|
+
interface WorkbenchPageSlotOpenInput {
|
|
1449
|
+
pageId: string;
|
|
1450
|
+
slotId: string;
|
|
1451
|
+
resource?: ResourceRef;
|
|
1452
|
+
open?: PageOpenIntent;
|
|
1453
|
+
}
|
|
1454
|
+
interface WorkbenchPageSlotInstance {
|
|
1455
|
+
instanceKey: string;
|
|
1456
|
+
resource: ResourceRef;
|
|
1457
|
+
section?: FileRendererSectionTarget;
|
|
1458
|
+
open?: PageOpenIntent;
|
|
1459
|
+
}
|
|
1460
|
+
interface WorkbenchPageRuntimeState {
|
|
1461
|
+
openStaticSlotIds: readonly string[];
|
|
1462
|
+
resourceInstances: Readonly<Record<string, readonly WorkbenchPageSlotInstance[]>>;
|
|
1463
|
+
activePrimaryInstanceKey?: string;
|
|
1464
|
+
}
|
|
1465
|
+
interface WorkbenchPageRegistryStoreState<Value> {
|
|
1466
|
+
pages: Readonly<Record<string, WorkbenchPageContribution>>;
|
|
1467
|
+
pageStates: Readonly<Record<string, WorkbenchPageRuntimeState>>;
|
|
1468
|
+
projectId?: string;
|
|
1469
|
+
location?: PageLocation;
|
|
1470
|
+
activeModeId?: string;
|
|
1471
|
+
activePageId?: string;
|
|
1472
|
+
placements: readonly ResolvedOwnedPlacement<Value>[];
|
|
1473
|
+
reconciliation: OwnedPlacementReconciliation<Value>;
|
|
1474
|
+
}
|
|
1475
|
+
interface WorkbenchPageRegistry<Value> {
|
|
1476
|
+
store: WorkbenchStore<WorkbenchPageRegistryStoreState<Value>>;
|
|
1477
|
+
registerPage(page: WorkbenchPageContribution): {
|
|
1478
|
+
dispose(): void;
|
|
1479
|
+
};
|
|
1480
|
+
getPage(pageId: string): WorkbenchPageContribution | undefined;
|
|
1481
|
+
listPages(): WorkbenchPageContribution[];
|
|
1482
|
+
pinPlacement(identity: PlacementIdentity): void;
|
|
1483
|
+
openSlot(input: WorkbenchPageSlotOpenInput): void;
|
|
1484
|
+
}
|
|
1485
|
+
//#endregion
|
|
1486
|
+
//#region src/core/controllers/page-location/page-location-types.d.ts
|
|
1487
|
+
interface WorkbenchPageBrowserEntry {
|
|
1488
|
+
url: string;
|
|
1489
|
+
state?: unknown;
|
|
1490
|
+
}
|
|
1491
|
+
interface WorkbenchPageLocationBrowser {
|
|
1492
|
+
current(): WorkbenchPageBrowserEntry;
|
|
1493
|
+
push(entry: WorkbenchPageBrowserEntry): void;
|
|
1494
|
+
replace(entry: WorkbenchPageBrowserEntry): void;
|
|
1495
|
+
back(): void;
|
|
1496
|
+
forward(): void;
|
|
1497
|
+
onPopState(listener: (entry: WorkbenchPageBrowserEntry) => void): {
|
|
1498
|
+
dispose(): void;
|
|
1499
|
+
};
|
|
1500
|
+
}
|
|
1501
|
+
interface WorkbenchPageLocationPersistence {
|
|
1502
|
+
load(projectId: string): PageLocation | undefined;
|
|
1503
|
+
save(projectId: string, location: PageLocation): void;
|
|
1504
|
+
}
|
|
1505
|
+
interface WorkbenchPageLocationDiagnostic {
|
|
1506
|
+
code: "page-location-unresolved";
|
|
1507
|
+
source: "boot" | "history" | "navigation" | "project-switch";
|
|
1508
|
+
message: string;
|
|
1509
|
+
}
|
|
1510
|
+
type WorkbenchPageNavigationResult = {
|
|
1511
|
+
ok: true;
|
|
1512
|
+
location: PageLocation;
|
|
1513
|
+
} | {
|
|
1514
|
+
ok: false;
|
|
1515
|
+
diagnostic: WorkbenchPageLocationDiagnostic;
|
|
1516
|
+
};
|
|
1517
|
+
interface WorkbenchPageLocationController {
|
|
1518
|
+
historyStore: WorkbenchStore<WorkbenchPageLocationHistoryState>;
|
|
1519
|
+
setProject(projectId: string): void;
|
|
1520
|
+
clearProject(): void;
|
|
1521
|
+
isCurrentProjectUrl(projectId: string): boolean;
|
|
1522
|
+
hasCurrentPageUrl(projectId: string): boolean;
|
|
1523
|
+
boot(projectId: string): WorkbenchPageNavigationResult;
|
|
1524
|
+
switchProject(projectId: string): WorkbenchPageNavigationResult;
|
|
1525
|
+
navigate(target: NavigationTargetPage): WorkbenchPageNavigationResult;
|
|
1526
|
+
replay(location: PageLocation): WorkbenchPageNavigationResult;
|
|
1527
|
+
navigateToParent(): WorkbenchPageNavigationResult;
|
|
1528
|
+
closePlacement(identity: PlacementIdentity): WorkbenchPageNavigationResult;
|
|
1529
|
+
removeResource(resource: ResourceRef, retained: readonly PlacementIdentity[]): void;
|
|
1530
|
+
goBack(): void;
|
|
1531
|
+
goForward(): void;
|
|
1532
|
+
dispose(): void;
|
|
1533
|
+
}
|
|
1534
|
+
interface WorkbenchPageLocationHistoryState {
|
|
1535
|
+
canGoBack: boolean;
|
|
1536
|
+
canGoForward: boolean;
|
|
1537
|
+
}
|
|
1538
|
+
//#endregion
|
|
1539
|
+
//#region src/core/controllers/panel-menus/panel-menu-state-controller.d.ts
|
|
1540
|
+
interface WorkbenchPanelMenuState {
|
|
1541
|
+
openByMenuId: Record<string, boolean>;
|
|
1542
|
+
}
|
|
1543
|
+
interface PersistedWorkbenchPanelMenuState {
|
|
1544
|
+
openByMenuId: Record<string, boolean>;
|
|
1545
|
+
}
|
|
1546
|
+
interface WorkbenchPanelMenuStatePersistenceAdapter {
|
|
1547
|
+
getMenuStates(scope?: string): PersistedWorkbenchPanelMenuState | undefined;
|
|
1548
|
+
setMenuStates(state: PersistedWorkbenchPanelMenuState, scope?: string): void;
|
|
1549
|
+
}
|
|
1550
|
+
type WorkbenchPanelMenuStateChangeListener = (state: WorkbenchPanelMenuState) => void;
|
|
1551
|
+
interface WorkbenchPanelMenuStateController {
|
|
1552
|
+
store: WorkbenchStore<WorkbenchPanelMenuState>;
|
|
1553
|
+
isOpen(menuId: string): boolean;
|
|
1554
|
+
setOpen(menuId: string, open: boolean): void;
|
|
1555
|
+
toggle(menuId: string): void;
|
|
1556
|
+
setPersistenceScope(scope: string | undefined): void;
|
|
1557
|
+
getPersistenceScope(): string | undefined;
|
|
1558
|
+
onDidChange(listener: WorkbenchPanelMenuStateChangeListener): Disposable;
|
|
1559
|
+
}
|
|
1560
|
+
//#endregion
|
|
1561
|
+
//#region src/core/controllers/side-panel/side-panel-controller.d.ts
|
|
1562
|
+
type WorkbenchSidePanelMode = "floating" | "closed" | "attached";
|
|
1563
|
+
type WorkbenchSidePanelChangeListener = (mode: WorkbenchSidePanelMode) => void;
|
|
1564
|
+
interface WorkbenchSidePanelState {
|
|
1565
|
+
mode: WorkbenchSidePanelMode;
|
|
1566
|
+
}
|
|
1567
|
+
interface WorkbenchSidePanelController {
|
|
1568
|
+
canFloat(): boolean;
|
|
1569
|
+
store: WorkbenchStore<WorkbenchSidePanelState>;
|
|
1570
|
+
getMode(): WorkbenchSidePanelMode;
|
|
1571
|
+
setMode(mode: WorkbenchSidePanelMode): void;
|
|
1572
|
+
onDidChange(listener: WorkbenchSidePanelChangeListener): Disposable;
|
|
1573
|
+
}
|
|
1574
|
+
interface WorkbenchSidePanelPersistenceAdapter {
|
|
1575
|
+
getMode(): WorkbenchSidePanelMode | undefined;
|
|
1576
|
+
setMode(mode: WorkbenchSidePanelMode): void;
|
|
1577
|
+
}
|
|
1578
|
+
//#endregion
|
|
1579
|
+
//#region src/core/controllers/shell/shell-controller.d.ts
|
|
1580
|
+
type WorkbenchSidePanelPresentation = WorkbenchSidePanelMode;
|
|
1581
|
+
type WorkbenchShellOpenRegion = "sidenav" | "secondary" | "side";
|
|
1582
|
+
interface WorkbenchShellRegionState {
|
|
1583
|
+
open: boolean;
|
|
1584
|
+
size?: number;
|
|
1585
|
+
}
|
|
1586
|
+
interface WorkbenchShellController {
|
|
1587
|
+
getRegionState(region: WorkbenchRegion): WorkbenchShellRegionState;
|
|
1588
|
+
setRegionOpen(region: WorkbenchShellOpenRegion, open: boolean): void;
|
|
1589
|
+
setRegionSize(region: WorkbenchRegion, size: number): void;
|
|
1590
|
+
getSidePanelPresentation(): WorkbenchSidePanelPresentation;
|
|
1591
|
+
setSidePanelPresentation(presentation: WorkbenchSidePanelPresentation): void;
|
|
1592
|
+
onDidChange(listener: () => void): Disposable;
|
|
1593
|
+
}
|
|
1594
|
+
//#endregion
|
|
1595
|
+
//#region src/core/controllers/terminal/terminal-controller.d.ts
|
|
1596
|
+
interface WorkbenchTerminalSessionRequest {
|
|
1597
|
+
command?: string[];
|
|
1598
|
+
cwd?: string;
|
|
1599
|
+
env?: Record<string, string>;
|
|
1600
|
+
cols: number;
|
|
1601
|
+
rows: number;
|
|
1602
|
+
}
|
|
1603
|
+
interface WorkbenchTerminalSessionExit {
|
|
1604
|
+
code: number | null;
|
|
1605
|
+
signal: string | null;
|
|
1606
|
+
}
|
|
1607
|
+
interface WorkbenchTerminalSessionError {
|
|
1608
|
+
message: string;
|
|
1609
|
+
}
|
|
1610
|
+
interface WorkbenchTerminalSessionAdapter {
|
|
1611
|
+
readonly id: string;
|
|
1612
|
+
write(data: string | Uint8Array): void;
|
|
1613
|
+
resize(cols: number, rows: number): void;
|
|
1614
|
+
kill(signal?: string): Promise<void> | void;
|
|
1615
|
+
onData(handler: (chunk: Uint8Array) => void): () => void;
|
|
1616
|
+
/** Foreground process name updates, when the opener can report them (real PTYs). */
|
|
1617
|
+
onTitle?(handler: (title: string) => void): () => void;
|
|
1618
|
+
onExit(handler: (exit: WorkbenchTerminalSessionExit) => void): () => void;
|
|
1619
|
+
onError(handler: (error: WorkbenchTerminalSessionError) => void): () => void;
|
|
1620
|
+
}
|
|
1621
|
+
type WorkbenchTerminalSessionOpener = (request: WorkbenchTerminalSessionRequest) => Promise<WorkbenchTerminalSessionAdapter>;
|
|
1622
|
+
type WorkbenchTerminalSessionStatus = "running" | "exited" | "killed";
|
|
1623
|
+
interface WorkbenchTerminalSessionModel {
|
|
1624
|
+
id: string;
|
|
1625
|
+
title: string;
|
|
1626
|
+
status: WorkbenchTerminalSessionStatus;
|
|
1627
|
+
exit?: WorkbenchTerminalSessionExit;
|
|
1628
|
+
}
|
|
1629
|
+
interface WorkbenchTerminalState {
|
|
1630
|
+
sessionsById: Record<string, WorkbenchTerminalSessionModel>;
|
|
1631
|
+
}
|
|
1632
|
+
interface WorkbenchTerminalSessionSink {
|
|
1633
|
+
onData?(chunk: Uint8Array): void;
|
|
1634
|
+
onExit?(exit: WorkbenchTerminalSessionExit): void;
|
|
1635
|
+
onError?(error: WorkbenchTerminalSessionError): void;
|
|
1636
|
+
}
|
|
1637
|
+
interface WorkbenchTerminalController {
|
|
1638
|
+
store: WorkbenchStore<WorkbenchTerminalState>;
|
|
1639
|
+
/** True once the host injected a session opener. */
|
|
1640
|
+
isAvailable(): boolean;
|
|
1641
|
+
setSessionOpener(opener: WorkbenchTerminalSessionOpener | null): void;
|
|
1642
|
+
/** Opens a session; the live adapter stays host-side and only the id is returned. */
|
|
1643
|
+
open(input: {
|
|
1644
|
+
bindingId?: string;
|
|
1645
|
+
request: WorkbenchTerminalSessionRequest;
|
|
1646
|
+
title?: string;
|
|
1647
|
+
}): Promise<{
|
|
1648
|
+
sessionId: string;
|
|
1649
|
+
}>;
|
|
1650
|
+
write(input: {
|
|
1651
|
+
sessionId: string;
|
|
1652
|
+
data: string | Uint8Array;
|
|
1653
|
+
}): void;
|
|
1654
|
+
resize(input: {
|
|
1655
|
+
sessionId: string;
|
|
1656
|
+
cols: number;
|
|
1657
|
+
rows: number;
|
|
1658
|
+
}): void;
|
|
1659
|
+
kill(input: {
|
|
1660
|
+
sessionId: string;
|
|
1661
|
+
signal?: string;
|
|
1662
|
+
}): Promise<void>;
|
|
1663
|
+
killBinding(bindingId: string): Promise<void>;
|
|
1664
|
+
subscribe(sessionId: string, sink: WorkbenchTerminalSessionSink): () => void;
|
|
1665
|
+
getSession(sessionId: string): WorkbenchTerminalSessionModel | undefined;
|
|
1666
|
+
listSessions(): WorkbenchTerminalSessionModel[];
|
|
1667
|
+
/** Kills every live session. Called when the owning workbench is torn down. */
|
|
1668
|
+
dispose(): Promise<void>;
|
|
1669
|
+
}
|
|
1670
|
+
//#endregion
|
|
1671
|
+
//#region src/core/registries/command-palette-resources/command-palette-resource-registry.d.ts
|
|
1672
|
+
interface CommandPaletteResourceQueryContext {
|
|
1673
|
+
query: string;
|
|
1674
|
+
limit: number;
|
|
1675
|
+
}
|
|
1676
|
+
interface CommandPaletteResourceResult {
|
|
1677
|
+
id: string;
|
|
1678
|
+
label: string;
|
|
1679
|
+
description?: string;
|
|
1680
|
+
icon?: string;
|
|
1681
|
+
keywords?: string[];
|
|
1682
|
+
group?: string;
|
|
1683
|
+
activate(): void | Promise<void>;
|
|
1684
|
+
}
|
|
1685
|
+
interface CommandPaletteResourceProvider {
|
|
1686
|
+
id: string;
|
|
1687
|
+
title: string;
|
|
1688
|
+
refreshEventIds?: string[];
|
|
1689
|
+
query(context: CommandPaletteResourceQueryContext): Promise<readonly CommandPaletteResourceResult[]>;
|
|
1690
|
+
}
|
|
1691
|
+
interface CommandPaletteResourceProviderResult {
|
|
1692
|
+
providerId: string;
|
|
1693
|
+
title: string;
|
|
1694
|
+
results: readonly CommandPaletteResourceResult[];
|
|
1695
|
+
}
|
|
1696
|
+
interface CommandPaletteResourceRegistryStoreState {
|
|
1697
|
+
providers: Record<string, CommandPaletteResourceProvider>;
|
|
1698
|
+
refreshToken: number;
|
|
1699
|
+
}
|
|
1700
|
+
interface CommandPaletteResourceRegistry {
|
|
1701
|
+
store: WorkbenchStore<CommandPaletteResourceRegistryStoreState>;
|
|
1702
|
+
registerProvider(provider: CommandPaletteResourceProvider): Disposable;
|
|
1703
|
+
listProviders(): CommandPaletteResourceProvider[];
|
|
1704
|
+
queryProviders(context: CommandPaletteResourceQueryContext): Promise<CommandPaletteResourceProviderResult[]>;
|
|
1705
|
+
refresh(): void;
|
|
1706
|
+
}
|
|
1707
|
+
//#endregion
|
|
1708
|
+
//#region src/core/registries/keybindings/keybinding-registry.d.ts
|
|
1709
|
+
interface Keybinding {
|
|
1710
|
+
/** Action the chord executes through the shared navigation executor. */
|
|
1711
|
+
action: NavigationTarget$1;
|
|
1712
|
+
keybinding: KeybindingSequence;
|
|
1713
|
+
when?: string;
|
|
1714
|
+
}
|
|
1715
|
+
type KeybindingSequence = string | string[];
|
|
1716
|
+
interface RegisteredKeybinding extends Keybinding, RegisteredContributionMetadata {}
|
|
1717
|
+
interface KeybindingRegistryStoreState {
|
|
1718
|
+
keybindings: RegisteredKeybinding[];
|
|
1719
|
+
}
|
|
1720
|
+
interface KeybindingRegistry {
|
|
1721
|
+
store: WorkbenchStore<KeybindingRegistryStoreState>;
|
|
1722
|
+
registerKeybinding(keybinding: Keybinding, metadata?: ContributionMetadata): Disposable;
|
|
1723
|
+
listKeybindings(): RegisteredKeybinding[];
|
|
1724
|
+
listActiveKeybindings(): RegisteredKeybinding[];
|
|
1725
|
+
/** Chords bound to plain command actions, for rendering shortcut hints beside commands. */
|
|
1726
|
+
listCommandKeybindings(): {
|
|
1727
|
+
commandId: string;
|
|
1728
|
+
keybinding: KeybindingSequence;
|
|
1729
|
+
}[];
|
|
1730
|
+
}
|
|
1731
|
+
declare const getKeybindingSteps: (keybinding: KeybindingSequence) => string[];
|
|
1732
|
+
//#endregion
|
|
1733
|
+
//#region src/core/registries/placements/owned-placement-lifecycle.d.ts
|
|
1734
|
+
type WorkbenchOwnedPlacementItem = PlacementItem;
|
|
1735
|
+
//#endregion
|
|
1736
|
+
//#region src/core/registries/placements/owned-placement-preparation.d.ts
|
|
1737
|
+
interface OwnedPlacementLocationContext {
|
|
1738
|
+
modeId: string;
|
|
1739
|
+
pageId?: string;
|
|
1740
|
+
projectId?: string;
|
|
1741
|
+
location?: PageLocation;
|
|
1742
|
+
}
|
|
1743
|
+
//#endregion
|
|
1744
|
+
//#region src/core/registries/modes/mode-placement-registry.d.ts
|
|
1745
|
+
interface WorkbenchModePlacementContribution extends WorkbenchPlacementPresentation {
|
|
1746
|
+
readonly id: string;
|
|
1747
|
+
readonly ref: PlacementRef;
|
|
1748
|
+
readonly modeId: string;
|
|
1749
|
+
readonly item: WorkbenchOwnedPlacementItem;
|
|
1750
|
+
readonly region: DockedWorkbenchRegion;
|
|
1751
|
+
readonly order?: number;
|
|
1752
|
+
readonly movableTo?: readonly DockedWorkbenchRegion[];
|
|
1753
|
+
}
|
|
1754
|
+
interface OpenModePlacementTarget {
|
|
1755
|
+
panel: PlacementRef;
|
|
1756
|
+
resource?: ResourceRef$1;
|
|
1757
|
+
open?: PageOpenIntent;
|
|
1758
|
+
}
|
|
1759
|
+
interface WorkbenchModePlacementRegistry {
|
|
1760
|
+
registerPlacement(placement: WorkbenchModePlacementContribution): Disposable;
|
|
1761
|
+
getPlacement(ref: PlacementRef): WorkbenchModePlacementContribution | undefined;
|
|
1762
|
+
listPlacements(modeId?: string): WorkbenchModePlacementContribution[];
|
|
1763
|
+
openPlacement(input: OpenModePlacementTarget): PlacementIdentity;
|
|
1764
|
+
updatePlacement(identity: PlacementIdentity, input: {
|
|
1765
|
+
resource?: ResourceRef$1;
|
|
1766
|
+
title?: string;
|
|
1767
|
+
open?: PageOpenIntent;
|
|
1768
|
+
}): void;
|
|
1769
|
+
closePlacement(identity: PlacementIdentity): void;
|
|
1770
|
+
resolvePlacements(modeId: string, context?: OwnedPlacementLocationContext): readonly ResolvedOwnedPlacement<WorkbenchWidgetPlacement>[];
|
|
1771
|
+
onDidChange(listener: () => void): Disposable;
|
|
1772
|
+
}
|
|
1773
|
+
//#endregion
|
|
1774
|
+
//#region src/core/registries/navigation/navigation-tree-registry.d.ts
|
|
1775
|
+
type NavigationTreeSlot = "header" | "content" | "footer";
|
|
1776
|
+
interface NavigationTreeOwner {
|
|
1777
|
+
kind: "mode" | "page";
|
|
1778
|
+
id: string;
|
|
1779
|
+
extensionId: string;
|
|
1780
|
+
}
|
|
1781
|
+
interface NavigationTreeContext {
|
|
1782
|
+
resource?: ResourceRef$1;
|
|
1783
|
+
signal?: AbortSignal;
|
|
1784
|
+
}
|
|
1785
|
+
interface NavigationTreeContribution {
|
|
1786
|
+
id: string;
|
|
1787
|
+
/** Prefix projected section and node ids when they come from an independent tree renderer. */
|
|
1788
|
+
idScope?: string;
|
|
1789
|
+
owner: NavigationTreeOwner;
|
|
1790
|
+
sourceExtensionId: string;
|
|
1791
|
+
declarationIndex: number;
|
|
1792
|
+
slot?: NavigationTreeSlot;
|
|
1793
|
+
viewId?: string;
|
|
1794
|
+
defaultExpandedSectionIds?: string[];
|
|
1795
|
+
getSections?(context: NavigationTreeContext): Promise<TreeViewSection[]> | TreeViewSection[];
|
|
1796
|
+
getChildren?(node: TreeNode, context: NavigationTreeContext): Promise<TreeNode[]> | TreeNode[];
|
|
1797
|
+
}
|
|
1798
|
+
interface NavigationTreeRegistry {
|
|
1799
|
+
registerContribution(contribution: NavigationTreeContribution): Disposable;
|
|
1800
|
+
resolveOwner(kind: NavigationTreeOwner["kind"], id: string): NavigationTreeOwner | undefined;
|
|
1801
|
+
getSections(owner: NavigationTreeOwner, slot?: NavigationTreeSlot, context?: NavigationTreeContext): Promise<TreeViewSection[]>;
|
|
1802
|
+
getChildren(node: TreeNode, context?: NavigationTreeContext): Promise<TreeNode[]>;
|
|
1803
|
+
getDefaultExpandedSectionIds(owner: NavigationTreeOwner): string[];
|
|
1804
|
+
onDidChange(listener: () => void): Disposable;
|
|
1805
|
+
}
|
|
1806
|
+
//#endregion
|
|
1807
|
+
//#region src/core/registries/notifications/notification-registry.d.ts
|
|
1808
|
+
type WorkbenchNotificationLevel = "info" | "success" | "warning" | "error";
|
|
1809
|
+
interface WorkbenchNotificationAction {
|
|
1810
|
+
commandId: string;
|
|
1811
|
+
title: string;
|
|
1812
|
+
args?: unknown;
|
|
1813
|
+
}
|
|
1814
|
+
interface WorkbenchNotification {
|
|
1815
|
+
id?: string;
|
|
1816
|
+
level: WorkbenchNotificationLevel;
|
|
1817
|
+
title: string;
|
|
1818
|
+
message?: string;
|
|
1819
|
+
createdAt?: string;
|
|
1820
|
+
resource?: ResourceRef$1;
|
|
1821
|
+
actions?: WorkbenchNotificationAction[];
|
|
1822
|
+
metadata?: Record<string, unknown>;
|
|
1823
|
+
}
|
|
1824
|
+
interface RegisteredWorkbenchNotification extends RegisteredContributionMetadata {
|
|
1825
|
+
id: string;
|
|
1826
|
+
level: WorkbenchNotificationLevel;
|
|
1827
|
+
title: string;
|
|
1828
|
+
message?: string;
|
|
1829
|
+
createdAt: string;
|
|
1830
|
+
resource?: ResourceRef$1;
|
|
1831
|
+
actions?: WorkbenchNotificationAction[];
|
|
1832
|
+
metadata?: Record<string, unknown>;
|
|
1833
|
+
}
|
|
1834
|
+
type WorkbenchNotificationEvent = {
|
|
1835
|
+
type: "show";
|
|
1836
|
+
id: string;
|
|
1837
|
+
notification: RegisteredWorkbenchNotification;
|
|
1838
|
+
} | {
|
|
1839
|
+
type: "dismiss";
|
|
1840
|
+
id: string;
|
|
1841
|
+
};
|
|
1842
|
+
type WorkbenchNotificationListener = (event: WorkbenchNotificationEvent) => void;
|
|
1843
|
+
interface WorkbenchNotificationStoreState {
|
|
1844
|
+
notifications: Record<string, RegisteredWorkbenchNotification>;
|
|
1845
|
+
}
|
|
1846
|
+
interface NotificationRegistry {
|
|
1847
|
+
store: WorkbenchStore<WorkbenchNotificationStoreState>;
|
|
1848
|
+
show(notification: WorkbenchNotification, metadata?: ContributionMetadata): RegisteredWorkbenchNotification;
|
|
1849
|
+
dismiss(id: string): boolean;
|
|
1850
|
+
clear(): void;
|
|
1851
|
+
listNotifications(): RegisteredWorkbenchNotification[];
|
|
1852
|
+
subscribe(listener: WorkbenchNotificationListener): Disposable;
|
|
1853
|
+
}
|
|
1854
|
+
//#endregion
|
|
1855
|
+
//#region src/core/registries/overlays/overlay-registry.d.ts
|
|
1856
|
+
interface WorkbenchOverlayContribution extends Omit<WorkbenchPlacementPresentation, "mountStrategy"> {
|
|
1857
|
+
id: string;
|
|
1858
|
+
viewId: string;
|
|
1859
|
+
closable?: boolean;
|
|
1860
|
+
}
|
|
1861
|
+
interface OpenWorkbenchOverlayInput {
|
|
1862
|
+
resource?: ResourceRef$1;
|
|
1863
|
+
title?: string;
|
|
1864
|
+
}
|
|
1865
|
+
interface WorkbenchOverlayRegistry {
|
|
1866
|
+
registerOverlay(overlay: WorkbenchOverlayContribution): Disposable;
|
|
1867
|
+
getOverlay(id: string): WorkbenchOverlayContribution | undefined;
|
|
1868
|
+
listOverlays(): WorkbenchOverlayContribution[];
|
|
1869
|
+
openOverlay(id: string, input?: OpenWorkbenchOverlayInput): string;
|
|
1870
|
+
closeOverlay(instanceId: string): void;
|
|
1871
|
+
}
|
|
1872
|
+
//#endregion
|
|
1873
|
+
//#region src/core/registries/placeholders/placeholder-registry.d.ts
|
|
1874
|
+
interface WorkbenchPlaceholderContribution {
|
|
1875
|
+
id: string;
|
|
1876
|
+
viewId: string;
|
|
1877
|
+
title?: string;
|
|
1878
|
+
region: WorkbenchRegion;
|
|
1879
|
+
regionSize?: WorkbenchRegionSize;
|
|
1880
|
+
regionCollapsible?: boolean;
|
|
1881
|
+
config?: unknown;
|
|
1882
|
+
}
|
|
1883
|
+
interface WorkbenchPlaceholderRegistry {
|
|
1884
|
+
registerPlaceholder(placeholder: WorkbenchPlaceholderContribution, metadata?: ContributionMetadata): Disposable;
|
|
1885
|
+
}
|
|
1886
|
+
//#endregion
|
|
1887
|
+
//#region src/core/registries/placements/shell-placement-registry.d.ts
|
|
1888
|
+
interface WorkbenchShellPlacementContribution extends WorkbenchPlacementPresentation {
|
|
1889
|
+
readonly id: string;
|
|
1890
|
+
readonly item: WorkbenchOwnedPlacementItem;
|
|
1891
|
+
readonly region: WorkbenchRegion;
|
|
1892
|
+
readonly order?: number;
|
|
1893
|
+
}
|
|
1894
|
+
interface OpenWorkbenchShellPlacementInput {
|
|
1895
|
+
placementId: string;
|
|
1896
|
+
resource?: ResourceRef$1;
|
|
1897
|
+
open?: PageOpenIntent;
|
|
1898
|
+
title?: string;
|
|
1899
|
+
}
|
|
1900
|
+
interface WorkbenchShellPlacementRegistry {
|
|
1901
|
+
registerPlacement(placement: WorkbenchShellPlacementContribution): Disposable;
|
|
1902
|
+
getPlacement(placementId: string): WorkbenchShellPlacementContribution | undefined;
|
|
1903
|
+
listPlacements(): WorkbenchShellPlacementContribution[];
|
|
1904
|
+
openPlacement(input: OpenWorkbenchShellPlacementInput): PlacementIdentity;
|
|
1905
|
+
updatePlacement(identity: PlacementIdentity, input: {
|
|
1906
|
+
resource?: ResourceRef$1;
|
|
1907
|
+
title?: string;
|
|
1908
|
+
open?: PageOpenIntent;
|
|
1909
|
+
}): void;
|
|
1910
|
+
closePlacement(identity: PlacementIdentity): void;
|
|
1911
|
+
resolvePlacements(context?: OwnedPlacementLocationContext): readonly ResolvedOwnedPlacement<WorkbenchWidgetPlacement>[];
|
|
1912
|
+
onDidChange(listener: () => void): Disposable;
|
|
1913
|
+
}
|
|
1914
|
+
//#endregion
|
|
1915
|
+
//#region src/core/registries/preferences/preference-registry.d.ts
|
|
1916
|
+
type PreferenceScope = "default" | "user" | "project" | "repo" | "workspace" | "extension" | "session";
|
|
1917
|
+
type PreferenceValue = boolean | number | string | string[] | number[] | boolean[] | Record<string, unknown>;
|
|
1918
|
+
interface PreferencePropertySchema {
|
|
1919
|
+
type: "boolean" | "number" | "string" | "array" | "object";
|
|
1920
|
+
enum?: PreferenceValue[];
|
|
1921
|
+
default?: PreferenceValue;
|
|
1922
|
+
scope: PreferenceScope;
|
|
1923
|
+
description?: string;
|
|
1924
|
+
}
|
|
1925
|
+
interface PreferenceSchemaContribution {
|
|
1926
|
+
properties: Record<string, PreferencePropertySchema>;
|
|
1927
|
+
}
|
|
1928
|
+
interface PreferenceScopeRef {
|
|
1929
|
+
scope: PreferenceScope;
|
|
1930
|
+
scopeId?: string;
|
|
1931
|
+
}
|
|
1932
|
+
interface PreferencePersistenceAdapter {
|
|
1933
|
+
getValue(name: string, scope: PreferenceScopeRef): PreferenceValue | undefined;
|
|
1934
|
+
setValue(name: string, value: PreferenceValue, scope: PreferenceScopeRef): void;
|
|
1935
|
+
}
|
|
1936
|
+
type RegisteredPreferenceSchema = PreferencePropertySchema & {
|
|
1937
|
+
ownerId: string;
|
|
1938
|
+
source: string;
|
|
1939
|
+
};
|
|
1940
|
+
interface PreferenceRegistryStoreState {
|
|
1941
|
+
schemas: Record<string, RegisteredPreferenceSchema>;
|
|
1942
|
+
}
|
|
1943
|
+
interface PreferenceRegistry {
|
|
1944
|
+
store: WorkbenchStore<PreferenceRegistryStoreState>;
|
|
1945
|
+
registerSchema(schema: PreferenceSchemaContribution, metadata?: ContributionMetadata): Disposable;
|
|
1946
|
+
getSchema(name: string): RegisteredPreferenceSchema | undefined;
|
|
1947
|
+
setValue(name: string, value: PreferenceValue, scope: PreferenceScopeRef): void;
|
|
1948
|
+
getValue(name: string, scope?: PreferenceScopeRef): PreferenceValue | undefined;
|
|
1949
|
+
}
|
|
1950
|
+
//#endregion
|
|
1951
|
+
//#region src/core/registries/settings/settings-registry.d.ts
|
|
1952
|
+
/** Settings are stored either per-user (global) or per-project. Projectless surfaces show only global entries. */
|
|
1953
|
+
type SettingsScope = "global" | "project";
|
|
1954
|
+
/** A "+ create"-style action surfaced on a section or a collection's parent node. */
|
|
1955
|
+
interface SettingsAction {
|
|
1956
|
+
id: string;
|
|
1957
|
+
label: string;
|
|
1958
|
+
icon?: string;
|
|
1959
|
+
run(): void | Promise<void>;
|
|
1960
|
+
}
|
|
1961
|
+
/** An ordered sidenav container. Headerless when `title` is omitted. */
|
|
1962
|
+
interface SettingsSectionContribution {
|
|
1963
|
+
id: string;
|
|
1964
|
+
title?: string;
|
|
1965
|
+
order?: number;
|
|
1966
|
+
scope?: SettingsScope;
|
|
1967
|
+
actions?: SettingsAction[];
|
|
1968
|
+
}
|
|
1969
|
+
type RegisteredSettingsSection = SettingsSectionContribution & RegisteredContributionMetadata;
|
|
1970
|
+
/** A preference this panel edits; a bare string uses the preference name as its label. */
|
|
1971
|
+
type SettingsPanelPreference = string | {
|
|
1972
|
+
name: string;
|
|
1973
|
+
label?: string;
|
|
1974
|
+
};
|
|
1975
|
+
interface SettingsPanelBase {
|
|
1976
|
+
id: string;
|
|
1977
|
+
title: string;
|
|
1978
|
+
description?: string;
|
|
1979
|
+
/** Section id this panel belongs to. */
|
|
1980
|
+
section?: string;
|
|
1981
|
+
icon?: string;
|
|
1982
|
+
/** Lower sorts first; ties fall back to contribution priority then registration order. */
|
|
1983
|
+
order?: number;
|
|
1984
|
+
scope?: SettingsScope;
|
|
1985
|
+
when?: string;
|
|
1986
|
+
}
|
|
1987
|
+
/** Auto-rendered as a param editor from the registered preference schema. */
|
|
1988
|
+
interface SchemaSettingsPanel extends SettingsPanelBase {
|
|
1989
|
+
kind: "schema";
|
|
1990
|
+
preferences: SettingsPanelPreference[];
|
|
1991
|
+
/** "live" persists on change (default); "apply" stages edits behind Save/Discard. */
|
|
1992
|
+
save?: "live" | "apply";
|
|
1993
|
+
}
|
|
1994
|
+
interface ViewSettingsPanel extends SettingsPanelBase {
|
|
1995
|
+
kind: "view";
|
|
1996
|
+
viewId: string;
|
|
1997
|
+
}
|
|
1998
|
+
interface SettingsCollectionGroupBy<TItem> {
|
|
1999
|
+
key(item: TItem): string;
|
|
2000
|
+
order?: string[];
|
|
2001
|
+
label(key: string): string;
|
|
2002
|
+
icon?(key: string): string | undefined;
|
|
2003
|
+
}
|
|
2004
|
+
/**
|
|
2005
|
+
* A data-driven list of items, each opening a contributor-supplied editor. The
|
|
2006
|
+
* framework knows nothing about what an item is — it only calls these hooks.
|
|
2007
|
+
*/
|
|
2008
|
+
interface CollectionSettingsPanel<TItem = unknown> extends SettingsPanelBase {
|
|
2009
|
+
kind: "collection";
|
|
2010
|
+
viewId: string;
|
|
2011
|
+
items(): TItem[] | Promise<TItem[]>;
|
|
2012
|
+
itemId(item: TItem): string;
|
|
2013
|
+
itemLabel(item: TItem): string;
|
|
2014
|
+
itemIcon?(item: TItem): string | undefined;
|
|
2015
|
+
groupBy?: SettingsCollectionGroupBy<TItem>;
|
|
2016
|
+
actions?: SettingsAction[];
|
|
2017
|
+
}
|
|
2018
|
+
type SettingsPanelContribution = SchemaSettingsPanel | ViewSettingsPanel | CollectionSettingsPanel;
|
|
2019
|
+
type RegisteredSettingsPanel = SettingsPanelContribution & RegisteredContributionMetadata;
|
|
2020
|
+
interface SettingsRegistryStoreState {
|
|
2021
|
+
sections: Record<string, RegisteredSettingsSection>;
|
|
2022
|
+
panels: Record<string, RegisteredSettingsPanel>;
|
|
2023
|
+
/** Bumped by refresh() so the surface re-reads collection items() after backing data changes. */
|
|
2024
|
+
revision: number;
|
|
2025
|
+
}
|
|
2026
|
+
interface SettingsRegistry {
|
|
2027
|
+
store: WorkbenchStore<SettingsRegistryStoreState>;
|
|
2028
|
+
registerSection(section: SettingsSectionContribution, metadata?: ContributionMetadata): Disposable;
|
|
2029
|
+
registerPanel<TItem = unknown>(panel: SchemaSettingsPanel | ViewSettingsPanel | CollectionSettingsPanel<TItem>, metadata?: ContributionMetadata): Disposable;
|
|
2030
|
+
getSection(id: string): RegisteredSettingsSection | undefined;
|
|
2031
|
+
getPanel(id: string): RegisteredSettingsPanel | undefined;
|
|
2032
|
+
listSections(): RegisteredSettingsSection[];
|
|
2033
|
+
listPanels(): RegisteredSettingsPanel[];
|
|
2034
|
+
resolveCollectionItem(panelId: string, itemId: string): Promise<unknown | undefined>;
|
|
2035
|
+
getCollectionItem(panelId: string, itemId: string): unknown | undefined;
|
|
2036
|
+
/** Signal that a collection's backing data changed so the surface refreshes. */
|
|
2037
|
+
refresh(): void;
|
|
2038
|
+
}
|
|
2039
|
+
//#endregion
|
|
2040
|
+
//#region src/core/registries/status-bar/status-bar-registry.d.ts
|
|
2041
|
+
type WorkbenchStatusBarSlot = "leading" | "trailing";
|
|
2042
|
+
interface WorkbenchStatusBarItem {
|
|
2043
|
+
id: string;
|
|
2044
|
+
viewId: string;
|
|
2045
|
+
slot: WorkbenchStatusBarSlot;
|
|
2046
|
+
order?: number;
|
|
2047
|
+
isVisible?(): boolean;
|
|
2048
|
+
}
|
|
2049
|
+
interface WorkbenchStatusBarRegistryState {
|
|
2050
|
+
items: Record<string, WorkbenchStatusBarItem>;
|
|
2051
|
+
}
|
|
2052
|
+
interface WorkbenchStatusBarRegistry {
|
|
2053
|
+
store: WorkbenchStore<WorkbenchStatusBarRegistryState>;
|
|
2054
|
+
registerItem(item: WorkbenchStatusBarItem): Disposable;
|
|
2055
|
+
getItem(id: string): WorkbenchStatusBarItem | undefined;
|
|
2056
|
+
listItems(): WorkbenchStatusBarItem[];
|
|
2057
|
+
listVisibleItems(slot?: WorkbenchStatusBarSlot): WorkbenchStatusBarItem[];
|
|
2058
|
+
}
|
|
2059
|
+
interface CreateWorkbenchStatusBarRegistryInput {
|
|
2060
|
+
hasView(viewId: string): boolean;
|
|
2061
|
+
}
|
|
2062
|
+
declare const createStatusBarRegistry: (input: CreateWorkbenchStatusBarRegistryInput) => WorkbenchStatusBarRegistry;
|
|
2063
|
+
//#endregion
|
|
2064
|
+
//#region src/core/registries/statuses/status-registry.d.ts
|
|
2065
|
+
interface WorkflowStatus {
|
|
2066
|
+
id: string;
|
|
2067
|
+
label: string;
|
|
2068
|
+
color: string;
|
|
2069
|
+
icon?: string | null;
|
|
2070
|
+
sortOrder: number;
|
|
2071
|
+
isDefault?: boolean;
|
|
2072
|
+
actions?: readonly string[];
|
|
2073
|
+
}
|
|
2074
|
+
interface WorkflowStatusAction {
|
|
2075
|
+
id: string;
|
|
2076
|
+
label: string;
|
|
2077
|
+
icon?: string;
|
|
2078
|
+
}
|
|
2079
|
+
interface WorkbenchStatusSetContribution {
|
|
2080
|
+
id: string;
|
|
2081
|
+
title: string;
|
|
2082
|
+
actions?: readonly WorkflowStatusAction[];
|
|
2083
|
+
query(): Promise<readonly WorkflowStatus[]> | readonly WorkflowStatus[];
|
|
2084
|
+
save?(statuses: readonly WorkflowStatus[]): Promise<readonly WorkflowStatus[]> | readonly WorkflowStatus[];
|
|
2085
|
+
}
|
|
2086
|
+
type RegisteredWorkbenchStatusSet = WorkbenchStatusSetContribution & RegisteredContributionMetadata;
|
|
2087
|
+
interface WorkbenchStatusRegistryState {
|
|
2088
|
+
statusSets: Record<string, RegisteredWorkbenchStatusSet>;
|
|
2089
|
+
values: Record<string, readonly WorkflowStatus[]>;
|
|
2090
|
+
}
|
|
2091
|
+
interface WorkbenchStatusRegistry {
|
|
2092
|
+
store: WorkbenchStore<WorkbenchStatusRegistryState>;
|
|
2093
|
+
registerStatusSet(contribution: WorkbenchStatusSetContribution, metadata?: ContributionMetadata): Disposable;
|
|
2094
|
+
getStatusSet(id: string): RegisteredWorkbenchStatusSet | undefined;
|
|
2095
|
+
listStatusSets(): RegisteredWorkbenchStatusSet[];
|
|
2096
|
+
getStatuses(id: string): readonly WorkflowStatus[] | undefined;
|
|
2097
|
+
load(id: string): Promise<readonly WorkflowStatus[]>;
|
|
2098
|
+
query(id: string): Promise<readonly WorkflowStatus[]>;
|
|
2099
|
+
save(id: string, statuses: readonly WorkflowStatus[]): Promise<readonly WorkflowStatus[]>;
|
|
2100
|
+
}
|
|
2101
|
+
declare const createStatusRegistry: () => WorkbenchStatusRegistry;
|
|
2102
|
+
//#endregion
|
|
2103
|
+
//#region src/core/registries/themes/file-icon-theme-contracts.d.ts
|
|
2104
|
+
/**
|
|
2105
|
+
* Core-owned contract for file icon theme registrations. Structurally identical
|
|
2106
|
+
* to @pstdio/ui's FileIconThemePreferenceOption; the React layer bridges the two
|
|
2107
|
+
* so core does not depend on UI package ownership.
|
|
2108
|
+
*/
|
|
2109
|
+
interface FileIconThemeFont {
|
|
2110
|
+
fontFamily: string;
|
|
2111
|
+
src: {
|
|
2112
|
+
url: string;
|
|
2113
|
+
format?: string;
|
|
2114
|
+
}[];
|
|
2115
|
+
weight?: string;
|
|
2116
|
+
style?: string;
|
|
2117
|
+
}
|
|
2118
|
+
interface FileIconThemePreferenceOption {
|
|
2119
|
+
id: string;
|
|
2120
|
+
title?: string;
|
|
2121
|
+
definitions: Record<string, unknown>;
|
|
2122
|
+
fileExtensions: Record<string, string>;
|
|
2123
|
+
fileNames: Record<string, string>;
|
|
2124
|
+
defaults: {
|
|
2125
|
+
file?: string;
|
|
2126
|
+
folder?: string;
|
|
2127
|
+
};
|
|
2128
|
+
fonts: FileIconThemeFont[];
|
|
2129
|
+
}
|
|
2130
|
+
//#endregion
|
|
2131
|
+
//#region src/core/registries/themes/file-icon-theme-registry.d.ts
|
|
2132
|
+
interface WorkbenchFileIconThemeStoreState {
|
|
2133
|
+
themes: readonly FileIconThemePreferenceOption[];
|
|
2134
|
+
}
|
|
2135
|
+
interface FileIconThemeRegistry {
|
|
2136
|
+
store: WorkbenchStore<WorkbenchFileIconThemeStoreState>;
|
|
2137
|
+
register(themes: readonly FileIconThemePreferenceOption[]): Disposable;
|
|
2138
|
+
listThemes(): readonly FileIconThemePreferenceOption[];
|
|
2139
|
+
}
|
|
2140
|
+
//#endregion
|
|
2141
|
+
//#region src/core/registries/themes/theme-contracts.d.ts
|
|
2142
|
+
/**
|
|
2143
|
+
* Core-owned contract for theme registrations. Structurally identical to
|
|
2144
|
+
* @pstdio/ui's ThemePreferenceOption; the React layer bridges the two so core
|
|
2145
|
+
* does not depend on UI package ownership.
|
|
2146
|
+
*/
|
|
2147
|
+
type ThemePreference = string;
|
|
2148
|
+
type ThemePreferenceMode = "light" | "dark";
|
|
2149
|
+
type ThemePreferenceTokens = Record<string, string>;
|
|
2150
|
+
interface ThemePreferenceOption {
|
|
2151
|
+
id: ThemePreference;
|
|
2152
|
+
title?: string;
|
|
2153
|
+
mode: ThemePreferenceMode;
|
|
2154
|
+
tokens?: ThemePreferenceTokens;
|
|
2155
|
+
monacoTheme?: unknown;
|
|
2156
|
+
}
|
|
2157
|
+
//#endregion
|
|
2158
|
+
//#region src/core/registries/themes/theme-registry.d.ts
|
|
2159
|
+
interface WorkbenchThemeStoreState {
|
|
2160
|
+
themes: readonly ThemePreferenceOption[];
|
|
2161
|
+
}
|
|
2162
|
+
interface ThemeRegistry {
|
|
2163
|
+
store: WorkbenchStore<WorkbenchThemeStoreState>;
|
|
2164
|
+
register(themes: readonly ThemePreferenceOption[]): Disposable;
|
|
2165
|
+
listThemes(): readonly ThemePreferenceOption[];
|
|
2166
|
+
}
|
|
2167
|
+
//#endregion
|
|
2168
|
+
//#region src/core/workbench-core-types.d.ts
|
|
2169
|
+
type WorkbenchLayoutModel = LayoutModel & MenuRegistry;
|
|
2170
|
+
type WorkbenchModuleLayoutModel = Omit<WorkbenchLayoutModel, "registerPanel" | "registerWidget" | "openPanel" | "openWidget" | "registerPlaceholder" | "registerPanelMenu">;
|
|
2171
|
+
type WorkbenchTreeViews = Pick<TreeRendererRegistry, "getTreeState" | "setNodeExpanded" | "setSectionExpanded" | "setSelectedNode">;
|
|
2172
|
+
interface WorkbenchCoreContributionContext {
|
|
2173
|
+
pinPlacement(identity: import("@pstdio/sdk/extensions").PlacementIdentity): void;
|
|
2174
|
+
closePlacement(identity: import("@pstdio/sdk/extensions").PlacementIdentity): void;
|
|
2175
|
+
breadcrumbs: WorkbenchBreadcrumbController;
|
|
2176
|
+
commandPalette: WorkbenchCommandPaletteController;
|
|
2177
|
+
commandPaletteResources: CommandPaletteResourceRegistry;
|
|
2178
|
+
commands: CommandRegistry;
|
|
2179
|
+
composition: WorkbenchCompositionController;
|
|
2180
|
+
context: ContextKeyService;
|
|
2181
|
+
focus: WorkbenchFocusController;
|
|
2182
|
+
keybindings: KeybindingRegistry;
|
|
2183
|
+
layout: WorkbenchModuleLayoutModel;
|
|
2184
|
+
modes: WorkbenchModeRegistry;
|
|
2185
|
+
modePlacements: WorkbenchModePlacementRegistry;
|
|
2186
|
+
shellPlacements: WorkbenchShellPlacementRegistry;
|
|
2187
|
+
navigation: NavigationRegistry;
|
|
2188
|
+
navigationTrees: NavigationTreeRegistry;
|
|
2189
|
+
notifications: NotificationRegistry;
|
|
2190
|
+
overlays: WorkbenchOverlayRegistry;
|
|
2191
|
+
placeholders: WorkbenchPlaceholderRegistry;
|
|
2192
|
+
pageLocations: WorkbenchPageLocationController;
|
|
2193
|
+
pages: WorkbenchPageRegistry<WorkbenchWidgetPlacement>;
|
|
2194
|
+
panelMenuState: WorkbenchPanelMenuStateController;
|
|
2195
|
+
preferences: PreferenceRegistry;
|
|
2196
|
+
treeViews: WorkbenchTreeViews;
|
|
2197
|
+
resources: ResourceRegistry;
|
|
2198
|
+
views: WorkbenchViewRegistry;
|
|
2199
|
+
viewMenus: WorkbenchViewMenuRegistry;
|
|
2200
|
+
settings: SettingsRegistry;
|
|
2201
|
+
statusBar: WorkbenchStatusBarRegistry;
|
|
2202
|
+
statuses: WorkbenchStatusRegistry;
|
|
2203
|
+
shell: WorkbenchShellController;
|
|
2204
|
+
sidePanel: WorkbenchSidePanelController;
|
|
2205
|
+
terminal: WorkbenchTerminalController;
|
|
2206
|
+
themes: ThemeRegistry;
|
|
2207
|
+
fileIconThemes: FileIconThemeRegistry;
|
|
2208
|
+
getPrimaryResource(): ResourceRef$1 | undefined;
|
|
2209
|
+
onDidChangePrimaryResource(listener: (resource: ResourceRef$1 | undefined) => void): Disposable;
|
|
2210
|
+
getActiveResource(): ResourceRef$1 | undefined;
|
|
2211
|
+
onDidChangeActiveResource(listener: (resource: ResourceRef$1 | undefined) => void): Disposable;
|
|
2212
|
+
registerChildModule(module: WorkbenchModuleContribution): Disposable;
|
|
2213
|
+
}
|
|
2214
|
+
interface WorkbenchSnapshot {
|
|
2215
|
+
layout: WorkbenchLayout;
|
|
2216
|
+
}
|
|
2217
|
+
interface WorkbenchPersistenceAdapter {
|
|
2218
|
+
getSnapshot(scope?: string): WorkbenchSnapshot | undefined;
|
|
2219
|
+
setSnapshot(snapshot: WorkbenchSnapshot, scope?: string): void;
|
|
2220
|
+
flush?(): void;
|
|
2221
|
+
dispose?(): void;
|
|
2222
|
+
}
|
|
2223
|
+
interface WorkbenchHost {
|
|
2224
|
+
getSnapshot(): WorkbenchSnapshot;
|
|
2225
|
+
restoreSnapshot(snapshot: WorkbenchSnapshot): void;
|
|
2226
|
+
setPersistenceScope(scope: string | undefined, input?: {
|
|
2227
|
+
carryRegions?: readonly WorkbenchRegion[];
|
|
2228
|
+
}): void;
|
|
2229
|
+
getPersistenceScope(): string | undefined;
|
|
2230
|
+
}
|
|
2231
|
+
interface WorkbenchCore extends WorkbenchCoreContributionContext {
|
|
2232
|
+
dispose(): Promise<void>;
|
|
2233
|
+
host: WorkbenchHost;
|
|
2234
|
+
layout: WorkbenchLayoutModel;
|
|
2235
|
+
registerModule(module: WorkbenchModuleContribution): Disposable;
|
|
2236
|
+
unregisterModule(moduleId: string): void;
|
|
2237
|
+
}
|
|
2238
|
+
type WorkbenchModuleContext = WorkbenchCoreContributionContext;
|
|
2239
|
+
type WorkbenchModuleContributionContext = WorkbenchModuleContext;
|
|
2240
|
+
interface WorkbenchPagePersistenceScopeInput {
|
|
2241
|
+
currentScope?: string;
|
|
2242
|
+
modeId?: string;
|
|
2243
|
+
pageId?: string;
|
|
2244
|
+
projectId?: string;
|
|
2245
|
+
resource?: ResourceRef$1;
|
|
2246
|
+
}
|
|
2247
|
+
interface WorkbenchPagePersistenceScope {
|
|
2248
|
+
scope?: string;
|
|
2249
|
+
carryRegions?: readonly WorkbenchRegion[];
|
|
2250
|
+
}
|
|
2251
|
+
interface createWorkbenchInput {
|
|
2252
|
+
isInScope?: (resource: ResourceRef$1, primary: ResourceRef$1 | undefined) => boolean;
|
|
2253
|
+
layoutPersistence?: LayoutPersistenceAdapter;
|
|
2254
|
+
pageLocationBrowser?: WorkbenchPageLocationBrowser;
|
|
2255
|
+
pageLocationPersistence?: WorkbenchPageLocationPersistence;
|
|
2256
|
+
resolvePagePersistenceScope?(input: WorkbenchPagePersistenceScopeInput): WorkbenchPagePersistenceScope;
|
|
2257
|
+
pageResources?: WorkbenchPageResourceCodec;
|
|
2258
|
+
persistence?: WorkbenchPersistenceAdapter;
|
|
2259
|
+
preferencePersistence?: PreferencePersistenceAdapter;
|
|
2260
|
+
treePersistence?: TreeRendererPersistenceAdapter;
|
|
2261
|
+
panelMenuStatePersistence?: WorkbenchPanelMenuStatePersistenceAdapter;
|
|
2262
|
+
defaultPanelOpenByRegionId?: Partial<Record<WorkbenchRegion, boolean>>;
|
|
2263
|
+
/** Host-level region layout policy. The active mode's regionSettings win over it. */
|
|
2264
|
+
regionSettings?: Partial<Record<WorkbenchRegion, WorkbenchRegionSettings>>;
|
|
2265
|
+
sidePanelPersistence?: WorkbenchSidePanelPersistenceAdapter;
|
|
2266
|
+
/** Default floating policy. The active mode may override it. */
|
|
2267
|
+
floatingPanels?: "visible" | "hidden";
|
|
2268
|
+
initialSidePanelMode?: WorkbenchSidePanelMode;
|
|
2269
|
+
startPage?: PageRef;
|
|
2270
|
+
}
|
|
2271
|
+
type WorkbenchModuleActivationResult = Disposable | readonly Disposable[] | undefined;
|
|
2272
|
+
interface WorkbenchModuleContribution {
|
|
2273
|
+
id: string;
|
|
2274
|
+
source?: ContributionSource;
|
|
2275
|
+
ownerId?: string;
|
|
2276
|
+
activate(ctx: WorkbenchModuleContributionContext): WorkbenchModuleActivationResult;
|
|
2277
|
+
}
|
|
2278
|
+
//#endregion
|
|
2279
|
+
//#region src/core/workbench-core.d.ts
|
|
2280
|
+
declare const createWorkbench: (input?: createWorkbenchInput) => WorkbenchCore;
|
|
2281
|
+
//#endregion
|
|
2282
|
+
//#region src/core/registries/modes/mode-layout.d.ts
|
|
2283
|
+
declare const getWorkbenchModePanelForRegion: (region: WorkbenchRegion) => "main" | "secondary" | "side" | undefined;
|
|
2284
|
+
declare const isWorkbenchModePanelAvailable: (mode: WorkbenchModeContribution | undefined, panel: WorkbenchPanelRegion) => boolean;
|
|
2285
|
+
//#endregion
|
|
2286
|
+
//#region src/core/registries/modes/mode-registry.d.ts
|
|
2287
|
+
type WorkbenchModeActivationContext = WorkbenchCoreContributionContext;
|
|
2288
|
+
type WorkbenchModeActivationResult = Disposable | readonly Disposable[] | undefined;
|
|
2289
|
+
interface WorkbenchModeAddablePanel {
|
|
2290
|
+
panelId: string;
|
|
2291
|
+
region: WorkbenchPanelRegion;
|
|
2292
|
+
allowedRegions?: readonly WorkbenchRegion[];
|
|
2293
|
+
pinned?: boolean;
|
|
2294
|
+
}
|
|
2295
|
+
interface WorkbenchModeAddablePanelContext {
|
|
2296
|
+
layout: WorkbenchLayout;
|
|
2297
|
+
resource?: ResourceRef$1;
|
|
2298
|
+
}
|
|
2299
|
+
interface WorkbenchModeContribution {
|
|
2300
|
+
id: string;
|
|
2301
|
+
label?: string;
|
|
2302
|
+
defaultTheme?: string;
|
|
2303
|
+
floatingPanels?: "visible" | "hidden";
|
|
2304
|
+
chrome?: Partial<Record<"nav" | "sidenav" | "activity" | "status", string | false>>;
|
|
2305
|
+
panels?: readonly WorkbenchPanelRegion[];
|
|
2306
|
+
/** Region-level layout policy while this mode is active. */
|
|
2307
|
+
regionSettings?: Partial<Record<WorkbenchRegion, WorkbenchRegionSettings>>;
|
|
2308
|
+
resourceKinds?: readonly string[];
|
|
2309
|
+
defaultResource?: ResourceRef$1 | (() => Promise<ResourceRef$1 | undefined> | ResourceRef$1 | undefined);
|
|
2310
|
+
listAddablePanels?(context: WorkbenchModeAddablePanelContext): readonly WorkbenchModeAddablePanel[];
|
|
2311
|
+
activate(ctx: WorkbenchModeActivationContext): WorkbenchModeActivationResult;
|
|
2312
|
+
seed?(ctx: WorkbenchModeActivationContext): void;
|
|
2313
|
+
enter?(ctx: WorkbenchModeActivationContext): WorkbenchModeActivationResult;
|
|
2314
|
+
reconcile?(ctx: WorkbenchModeActivationContext): void;
|
|
2315
|
+
}
|
|
2316
|
+
type WorkbenchModeChangeListener = () => void;
|
|
2317
|
+
interface WorkbenchModeStoreState {
|
|
2318
|
+
modes: Record<string, WorkbenchModeContribution>;
|
|
2319
|
+
activeModeId: string | undefined;
|
|
2320
|
+
}
|
|
2321
|
+
interface WorkbenchModeRegistry {
|
|
2322
|
+
store: WorkbenchStore<WorkbenchModeStoreState>;
|
|
2323
|
+
dispose(): void;
|
|
2324
|
+
registerMode(mode: WorkbenchModeContribution): Disposable;
|
|
2325
|
+
getMode(id: string): WorkbenchModeContribution | undefined;
|
|
2326
|
+
listModes(): WorkbenchModeContribution[];
|
|
2327
|
+
getActiveModeId(): string | undefined;
|
|
2328
|
+
isTransitioning(): boolean;
|
|
2329
|
+
setActiveMode(id: string | undefined, input?: {
|
|
2330
|
+
deferSeed?: boolean;
|
|
2331
|
+
}): void;
|
|
2332
|
+
seedActiveMode(): void;
|
|
2333
|
+
onDidChangeActive(listener: WorkbenchModeChangeListener): Disposable;
|
|
2334
|
+
}
|
|
2335
|
+
//#endregion
|
|
2336
|
+
//#region src/core/controllers/composition/composition-controller.d.ts
|
|
2337
|
+
interface WorkbenchCompositionAddablePanel extends WorkbenchModeAddablePanel {
|
|
2338
|
+
contribution: RegisteredWidgetContribution;
|
|
2339
|
+
open?(resource?: ResourceRef$1): void;
|
|
2340
|
+
}
|
|
2341
|
+
interface WorkbenchCompositionRegionPanels {
|
|
2342
|
+
open: readonly WorkbenchWidgetPlacement[];
|
|
2343
|
+
addable: readonly WorkbenchCompositionAddablePanel[];
|
|
2344
|
+
closable: readonly string[];
|
|
2345
|
+
}
|
|
2346
|
+
interface WorkbenchCompositionController {
|
|
2347
|
+
panelsFor(region: WorkbenchPanelRegion): WorkbenchCompositionRegionPanels;
|
|
2348
|
+
}
|
|
2349
|
+
//#endregion
|
|
2350
|
+
//#region src/core/registries/layout/surface-map.d.ts
|
|
2351
|
+
type AnchorId = "primary" | "secondary" | "attached";
|
|
2352
|
+
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";
|
|
2353
|
+
//#endregion
|
|
2354
|
+
//#region src/core/registries/menus/workbench-menu-paths.d.ts
|
|
2355
|
+
declare const headerLeadingMenuPath: (region: string) => MenuPath;
|
|
2356
|
+
declare const headerTrailingMenuPath: (region: string) => MenuPath;
|
|
2357
|
+
declare const workbenchRegionTabLeadingMenuPath: (region: string) => MenuPath;
|
|
2358
|
+
declare const workbenchRegionTabAddMenuPath: (region: string) => MenuPath;
|
|
2359
|
+
declare const workbenchCommandPaletteMenuPath: readonly ["workbench", "commandPalette"];
|
|
2360
|
+
declare const workbenchTopHeaderLeadingMenuPath: MenuPath;
|
|
2361
|
+
declare const workbenchTopHeaderTrailingMenuPath: MenuPath;
|
|
2362
|
+
declare const resourceContextMenuPath: (resourceKind: string) => MenuPath;
|
|
2363
|
+
//#endregion
|
|
2364
|
+
//#region src/core/registries/resources/resource-icons.d.ts
|
|
2365
|
+
declare const standardResourceIcons: {
|
|
2366
|
+
readonly project: "folder-root";
|
|
2367
|
+
readonly workspace: "computer";
|
|
2368
|
+
readonly worktree: "git-pull-request-draft";
|
|
2369
|
+
readonly settings: "settings";
|
|
2370
|
+
readonly kanbanRenderer: "table-properties";
|
|
2371
|
+
};
|
|
2372
|
+
type StandardResourceIcon = (typeof standardResourceIcons)[keyof typeof standardResourceIcons];
|
|
2373
|
+
//#endregion
|
|
2374
|
+
//#region src/core/registries/views/renderer-read-key.d.ts
|
|
2375
|
+
declare const rendererReadKey: (placement: WorkbenchPanelInstance, lane?: string) => string;
|
|
2376
|
+
//#endregion
|
|
2377
|
+
//#region src/core/registries/views/settle-read-batch.d.ts
|
|
2378
|
+
declare const settleReadBatch: <T>(tasks: ((signal: AbortSignal) => Promise<T> | T)[], signal?: AbortSignal) => Promise<Awaited<T>[]>;
|
|
2379
|
+
//#endregion
|
|
2380
|
+
//#region src/core/shared/store/workbench-batch.d.ts
|
|
2381
|
+
/** Commit related stores before their subscribers read the resulting workbench state. */
|
|
2382
|
+
declare const batchWorkbenchChanges: <Result>(commit: () => Result) => Result;
|
|
2383
|
+
//#endregion
|
|
2384
|
+
export { WorkbenchStatusBarItem as $, resourceHierarchyCycleCode as $i, AttributeDescriptor as $n, WorkbenchPanelTab as $r, WorkbenchTerminalSessionError as $t, WorkbenchHost as A, CommandRegistry as Ai, createViewRegistry as An, DataTableRendererQueryContext as Ar, WorkbenchNotification as At, ThemePreference as B, ResourceRegistry as Bi, TreeNode as Bn, ControlsRendererLayout as Br, WorkbenchModePlacementRegistry as Bt, WorkbenchModeContribution as C, WorkbenchCommandPaletteController as Ci, WorkbenchViewMenuRegistry as Cn, FileRendererRefreshOrigin as Cr, WorkbenchShellPlacementRegistry as Ct, createWorkbench as D, CommandParamDescriptor as Di, WorkbenchViewContribution as Dn, DataTableRendererColumnRenderer as Dr, WorkbenchOverlayRegistry as Dt, isWorkbenchModePanelAvailable as E, CommandHandler as Ei, WorkbenchViewBody as En, DataTableRendererColumn as Er, WorkbenchOverlayContribution as Et, WorkbenchPagePersistenceScopeInput as F, ResourceBrowseEntry as Fi, createRendererReadRegistry as Fn, DataTableRendererThemeColor as Fr, NavigationTreeContribution as Ft, FileIconThemeFont as G, workbenchResourceMetadataContextKey as Gi, TreeRendererState as Gn, WorkbenchFocusRegionId as Gr, getKeybindingSteps as Gt, ThemePreferenceOption as H, createWorkbenchSelectionResourceMetadata as Hi, TreeQueryContext as Hn, ControlsUpdateValueInput as Hr, Keybinding as Ht, WorkbenchPersistenceAdapter as I, ResourceKindContribution as Ii, TreeAction as In, RegisteredDataTableRendererContribution as Ir, NavigationTreeOwner as It, WorkbenchStatusRegistryState as J, ResourceHierarchyCycle as Ji, MenuPath as Jn, RegisteredWidgetContribution as Jr, CommandPaletteResourceQueryContext as Jt, FileIconThemePreferenceOption as K, workbenchResourceTypeContextKey as Ki, TreeViewSection as Kn, LayoutPersistenceAdapter as Kr, CommandPaletteResourceProvider as Kt, WorkbenchSnapshot as L, ResourceListContext as Li, TreeContext as Ln, ControlsApplyInput as Lr, NavigationTreeRegistry as Lt, WorkbenchModuleContribution as M, WorkbenchCommandExecutionError as Mi, RendererReadBinding as Mn, DataTableRendererRow as Mr, WorkbenchNotificationEvent as Mt, WorkbenchModuleContributionContext as N, WorkbenchBreadcrumbController as Ni, RendererReadRegistry as Nn, DataTableRendererRowAction as Nr, WorkbenchNotificationLevel as Nt, WorkbenchCore as O, CommandParamOption as Oi, WorkbenchViewRegistry as On, DataTableRendererColumnStat as Or, NotificationRegistry as Ot, WorkbenchPagePersistenceScope as P, WorkbenchBreadcrumbItem as Pi, RendererReadRequest as Pn, DataTableRendererSelectionAction as Pr, NavigationTreeContext as Pt, createStatusRegistry as Q, isWorkbenchViewHierarchyNode as Qi, KanbanRendererQueryState as Qn, WorkbenchPanelMountStrategy as Qr, WorkbenchTerminalSessionAdapter as Qt, createWorkbenchInput as R, ResourceProvider as Ri, TreeMoveEndpoint as Rn, ControlsQueryResult$1 as Rr, NavigationTreeSlot as Rt, WorkbenchModeAddablePanelContext as S, NavigationTargetPanel$1 as Si, WorkbenchViewMenuContribution as Sn, FileRendererRefreshEnvelope as Sr, WorkbenchShellPlacementContribution as St, getWorkbenchModePanelForRegion as T, Command as Ti, WorkbenchReactViewBody as Tn, DataTableRendererBadgePalette as Tr, WorkbenchPlaceholderRegistry as Tt, ThemePreferenceTokens as U, getWorkbenchSelectionResourceKeys as Ui, TreeRendererContribution as Un, WorkbenchPanelRenderInput as Ur, KeybindingRegistry as Ut, ThemePreferenceMode as V, createWorkbenchResourceContextValues as Vi, TreeNodeInlineInput as Vn, ControlsResetInput as Vr, WorkbenchOwnedPlacementItem as Vt, FileIconThemeRegistry as W, workbenchResourceIdContextKey as Wi, TreeRendererPersistenceAdapter as Wn, WorkbenchFocusController as Wr, KeybindingSequence as Wt, WorkflowStatus as X, WorkbenchHierarchyNode as Xi, RegisteredMenuItem as Xn, WorkbenchLayout as Xr, CommandPaletteResourceResult as Xt, WorkbenchStatusSetContribution as Y, ResourceHierarchyProvider as Yi, MenuRegistry as Yn, WorkbenchCommandTarget as Yr, CommandPaletteResourceRegistry as Yt, WorkflowStatusAction as Z, WorkbenchViewHierarchyNode as Zi, KanbanRendererContribution as Zn, WorkbenchPanelInstance as Zr, WorkbenchTerminalController as Zt, resolveAnchorRegion as _, NavigationRegistry as _i, WorkbenchPageLocationDiagnostic as _n, ResourceContextAction as _r, PreferenceRegistry as _t, standardResourceIcons as a, matchesContextExpression as aa, WorkbenchTabRetention as ai, WorkbenchTerminalSessionStatus as an, BoardColumnConfig as ar, SchemaSettingsPanel as at, WorkbenchModeActivationResult as b, NavigationTargetCompound as bi, WorkbenchPageContribution as bn, FileRendererContent as br, PreferenceScopeRef as bt, headerLeadingMenuPath as c, WorkbenchWidgetTab as ci, WorkbenchShellOpenRegion as cn, EnumOptionsSource as cr, SettingsPanelBase as ct, workbenchCommandPaletteMenuPath as d, WorkbenchPanelRegion as di, WorkbenchSidePanelMode as dn, KanbanRendererCreateRowConfig as dr, SettingsRegistry as dt, ContributionMetadata as ea, WorkbenchRegionSize as ei, WorkbenchTerminalSessionExit as en, AttributeDisplayDescriptor as er, WorkbenchStatusBarRegistry as et, workbenchRegionTabAddMenuPath as f, WorkbenchRegion as fi, WorkbenchSidePanelPersistenceAdapter as fn, KanbanRendererCreateSubmission as fr, SettingsScope as ft, AnchorId as g, NavigationParser as gi, WorkbenchPageLocationController as gn, KanbanRendererSettings as gr, PreferencePropertySchema as gt, workbenchTopHeaderTrailingMenuPath as h, NavigationDispatcherContext as hi, WorkbenchPageLocationBrowser as hn, KanbanRendererRow as hr, PreferencePersistenceAdapter as ht, StandardResourceIcon as i, ContextKeyValue as ia, WorkbenchTabPosition as ii, WorkbenchTerminalSessionSink as in, BoardColumnAction as ir, CollectionSettingsPanel as it, WorkbenchModuleContext as j, WorkbenchCommandExecutionContext as ji, workbenchViewIdContextKey as jn, DataTableRendererQueryResult as jr, WorkbenchNotificationAction as jt, WorkbenchCoreContributionContext as k, CommandParamSchema as ki, WorkbenchViewRegistryStoreState as kn, DataTableRendererContribution as kr, RegisteredWorkbenchNotification as kt, headerTrailingMenuPath as l, WorkbenchPanelMenuRegion as li, WorkbenchShellRegionState as ln, KanbanRendererCreateField as lr, SettingsPanelContribution as lt, workbenchTopHeaderLeadingMenuPath as m, workbenchRegions as mi, WorkbenchPageBrowserEntry as mn, KanbanRendererOrdering as mr, ViewSettingsPanel as mt, settleReadBatch as n, ContextKeyScope as na, WorkbenchTabMenuGroup as ni, WorkbenchTerminalSessionOpener as nn, AttributeType as nr, WorkbenchStatusBarSlot as nt, DockedWorkbenchRegion$1 as o, WorkbenchStore as oa, WorkbenchTabSnapshot as oi, WorkbenchTerminalState as on, EnumOption as or, SettingsAction as ot, workbenchRegionTabLeadingMenuPath as p, workbenchPanelRegions as pi, WorkbenchPanelMenuStatePersistenceAdapter as pn, KanbanRendererFilterState as pr, SettingsSectionContribution as pt, WorkbenchStatusRegistry as q, workbenchSelectionResourceKeyMetadataKey as qi, MenuItem as qn, RegisteredPlaceholderContribution as qr, CommandPaletteResourceProviderResult as qt, rendererReadKey as r, ContextKeyService as ra, WorkbenchTabMenuRow as ri, WorkbenchTerminalSessionRequest as rn, AttributesSource as rr, createStatusBarRegistry as rt, dockedWorkbenchRegions as s, Disposable as sa, WorkbenchWidgetPlacement as si, WorkbenchShellController as sn, EnumOptions as sr, SettingsCollectionGroupBy as st, batchWorkbenchChanges as t, ContributionSource as ta, WorkbenchTabAction as ti, WorkbenchTerminalSessionModel as tn, AttributeKind as tr, WorkbenchStatusBarRegistryState as tt, resourceContextMenuPath as u, WorkbenchPanelMenuSide as ui, WorkbenchSidePanelPresentation as un, KanbanRendererCreateFieldType as ur, SettingsPanelPreference as ut, defaultPageResourceCodec as v, NavigationTarget$1 as vi, WorkbenchPageLocationPersistence as vn, SortDirection as vr, PreferenceSchemaContribution as vt, WorkbenchModeRegistry as w, WorkbenchCommandPaletteOpenInput as wi, RegisteredWorkbenchView as wn, FileRendererSaveResult as wr, WorkbenchPlaceholderContribution as wt, WorkbenchModeAddablePanel as x, NavigationTargetItem as xi, WorkbenchPlacementPresentation as xn, FileRendererContribution as xr, PreferenceValue as xt, WorkbenchModeActivationContext as y, NavigationTargetCommand as yi, WorkbenchPageNavigationResult as yn, ViewMode as yr, PreferenceScope as yt, ThemeRegistry as z, ResourceRef$1 as zi, TreeMovePolicy as zn, ControlsRendererContribution as zr, WorkbenchModePlacementContribution as zt };
|
|
2385
|
+
export {};
|