@pstdio/workbench 0.7.1 → 0.8.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/README.md +1 -1
- package/dist/extensions.d.ts +325 -40
- package/dist/extensions.js +1812 -1439
- package/dist/extensions.js.map +1 -1
- package/dist/index.d.ts +193 -13
- package/dist/index.js +2429 -2014
- package/dist/index.js.map +1 -1
- package/dist/layout-types-DMoZz38-.js.map +1 -1
- package/dist/react.d.ts +178 -10
- package/dist/react.js +2008 -1917
- package/dist/react.js.map +1 -1
- package/dist/storage.d.ts +6 -2
- package/dist/testing.d.ts +167 -8
- package/dist/webview-runtime.js +1 -1
- package/dist/webview-runtime.js.map +1 -1
- package/dist/{workbench-built-ins-BncLJfQA.js → workbench-built-ins-BCJ6-fIM.js} +464 -466
- package/dist/workbench-built-ins-BCJ6-fIM.js.map +1 -0
- package/dist/workbench-menu-paths-D-e7iscN.js +43 -0
- package/dist/workbench-menu-paths-D-e7iscN.js.map +1 -0
- package/dist/workflow-status-settings-DLiu9FZ0.js +144 -0
- package/dist/workflow-status-settings-DLiu9FZ0.js.map +1 -0
- package/package.json +4 -4
- package/dist/icon-B9XolQG8.js +0 -35
- package/dist/icon-B9XolQG8.js.map +0 -1
- package/dist/workbench-built-ins-BncLJfQA.js.map +0 -1
- package/dist/workbench-menu-paths-Bb0ICxeG.js +0 -20
- package/dist/workbench-menu-paths-Bb0ICxeG.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout-types-DMoZz38-.js","sources":["../src/core/registries/layout/widget-id.ts","../src/core/registries/layout/layout-types.ts"],"sourcesContent":["export const resolveUniqueWidgetId = (\n widgetIds: ReadonlySet<string>,\n contributionId: string,\n preferredId = contributionId,\n) => {\n if (!widgetIds.has(preferredId)) return preferredId;\n\n let suffix = 1;\n while (widgetIds.has(`${contributionId}:${suffix}`)) suffix += 1;\n return `${contributionId}:${suffix}`;\n};\n","import type { ContributionSource, RegisteredContributionMetadata } from \"../../shared/contributions/metadata\";\nimport type { ResourceRef } from \"../resources/resource-registry\";\nimport { resolveUniqueWidgetId } from \"./widget-id\";\n\nexport const workbenchRegions = [\n \"nav\",\n \"activity\",\n \"sidenav-header\",\n \"sidenav\",\n \"main-header\",\n \"main-left-menu\",\n \"main\",\n \"main-right-menu\",\n \"secondary-header\",\n \"secondary-left-menu\",\n \"secondary\",\n \"secondary-right-menu\",\n \"side-header\",\n \"side-left-menu\",\n \"side\",\n \"side-right-menu\",\n \"status\",\n \"overlay\",\n] as const;\n\nexport type WorkbenchRegion = (typeof workbenchRegions)[number];\n\nexport const workbenchPanelRegions = [\"main\", \"secondary\", \"side\"] as const satisfies readonly WorkbenchRegion[];\n\nexport type WorkbenchPanelRegion = (typeof workbenchPanelRegions)[number];\n\nexport type WorkbenchPanelMenuSide = \"left\" | \"right\";\n\nexport const workbenchPanelMenuRegions = {\n main: { left: \"main-left-menu\", right: \"main-right-menu\" },\n secondary: { left: \"secondary-left-menu\", right: \"secondary-right-menu\" },\n side: { left: \"side-left-menu\", right: \"side-right-menu\" },\n} as const satisfies Record<WorkbenchPanelRegion, Record<WorkbenchPanelMenuSide, WorkbenchRegion>>;\n\nexport type WorkbenchPanelMenuRegion = (typeof workbenchPanelMenuRegions)[WorkbenchPanelRegion][WorkbenchPanelMenuSide];\n\nconst workbenchPanelByMenuRegion = {\n \"main-left-menu\": \"main\",\n \"main-right-menu\": \"main\",\n \"secondary-left-menu\": \"secondary\",\n \"secondary-right-menu\": \"secondary\",\n \"side-left-menu\": \"side\",\n \"side-right-menu\": \"side\",\n} as const satisfies Record<WorkbenchPanelMenuRegion, WorkbenchPanelRegion>;\n\nexport const getWorkbenchPanelForMenuRegion = (region: WorkbenchPanelMenuRegion) => workbenchPanelByMenuRegion[region];\n\nexport interface WorkbenchRegionSize {\n defaultPx?: number;\n minPx?: number;\n maxPx?: number;\n}\n\nexport type WidgetReusePolicy = \"resource\" | \"none\";\n\nexport type WidgetMountStrategy = \"active\" | \"keep-mounted\";\n\nexport type WorkbenchPanelReusePolicy = WidgetReusePolicy;\n\nexport type WorkbenchPanelMountStrategy = WidgetMountStrategy;\n\nexport type WorkbenchFloatingPanelVisibility = \"visible\" | \"hidden\";\n\nexport type WorkbenchWidgetRole = \"content\" | \"location\" | \"sub-panel\" | \"panel-menu\";\n\nexport type WorkbenchTabRetention = \"preview\" | \"persistent\";\n\nexport type WorkbenchTabPosition = \"start\" | \"end\" | { beforeWidgetId: string } | { afterWidgetId: string };\n\nexport interface WorkbenchLocationEligibility {\n modeIds?: string[];\n resourceKinds?: string[];\n resourceIds?: string[];\n canOpen?(resource: ResourceRef): boolean;\n}\n\nexport type WorkbenchPanelMenuOwner =\n | { level: \"panel\"; contributionId?: string }\n | { level: \"sub-panel\"; contributionId: string };\n\nexport interface WorkbenchWidgetTab {\n contentRendererId?: string;\n /** Custom actions shown when the user activates an already-active tab. */\n customMenuRendererId?: string;\n}\n\nexport type WorkbenchPanelTab = WorkbenchWidgetTab;\n\nexport interface WidgetContribution {\n id: string;\n title: string;\n icon?: string;\n region: WorkbenchRegion;\n fallbackRegion?: WorkbenchRegion;\n singleton?: boolean;\n reuse?: WidgetReusePolicy;\n mountStrategy?: WidgetMountStrategy;\n closable?: boolean;\n // Non-closeable widgets opt into the tab visibility menu; closeable widgets\n // ignore this and use the X button for dismissal.\n hiddenByDefault?: boolean;\n // A Location that presents only its Sub Panels: it renders no tab and no\n // content of its own — establishing it activates its first Sub Panel.\n subPanelsOnly?: boolean;\n regionSize?: WorkbenchRegionSize;\n regionCollapsible?: boolean;\n headerBorderBottom?: boolean;\n floatingPanels?: WorkbenchFloatingPanelVisibility;\n resourceKinds?: string[];\n priority?: number;\n rendererId: string;\n openCommandId?: string;\n eligibleLocations?: WorkbenchLocationEligibility;\n panelMenuOwner?: WorkbenchPanelMenuOwner;\n tab?: WorkbenchWidgetTab;\n config?: unknown;\n canOpen?(resource: ResourceRef): boolean;\n}\n\nexport interface WorkbenchPanelMenuDefinition {\n id: string;\n title: string;\n icon?: string;\n side: WorkbenchPanelMenuSide;\n singleton?: boolean;\n reuse?: WorkbenchPanelReusePolicy;\n mountStrategy?: WorkbenchPanelMountStrategy;\n hiddenByDefault?: boolean;\n regionSize?: WorkbenchRegionSize;\n regionCollapsible?: boolean;\n headerBorderBottom?: boolean;\n rendererId: string;\n priority?: number;\n config?: unknown;\n}\n\ninterface WorkbenchPanelMenusContribution {\n panelMenus?: readonly WorkbenchPanelMenuDefinition[];\n}\n\nexport interface WorkbenchPanelContribution {\n id: string;\n title: string;\n icon?: string;\n region: WorkbenchRegion;\n fallbackRegion?: WorkbenchRegion;\n rendererId: string;\n singleton?: boolean;\n reuse?: WorkbenchPanelReusePolicy;\n mountStrategy?: WorkbenchPanelMountStrategy;\n hiddenByDefault?: boolean;\n subPanelsOnly?: boolean;\n regionSize?: WorkbenchRegionSize;\n regionCollapsible?: boolean;\n headerBorderBottom?: boolean;\n floatingPanels?: WorkbenchFloatingPanelVisibility;\n resourceKinds?: string[];\n eligibleLocations?: WorkbenchLocationEligibility;\n priority?: number;\n openCommandId?: string;\n tab?: WorkbenchPanelTab;\n config?: unknown;\n canOpen?(resource: ResourceRef): boolean;\n ownerId?: string;\n source?: ContributionSource;\n panelMenus?: readonly WorkbenchPanelMenuDefinition[];\n}\n\nexport type WorkbenchLocationContribution = WidgetContribution & WorkbenchPanelMenusContribution;\n\nexport type WorkbenchSubPanelContribution = Omit<WidgetContribution, \"region\" | \"fallbackRegion\"> & {\n region: WorkbenchPanelRegion;\n fallbackRegion?: WorkbenchPanelRegion;\n} & WorkbenchPanelMenusContribution;\n\nexport type WorkbenchPanelMenuContribution = Omit<WidgetContribution, \"region\" | \"fallbackRegion\"> & {\n region: WorkbenchPanelMenuRegion;\n fallbackRegion?: WorkbenchPanelMenuRegion;\n};\n\nexport type RegisteredWidgetContribution = Omit<WidgetContribution, \"priority\" | \"singleton\" | \"reuse\"> & {\n ownedPanelMenuIds?: readonly string[];\n singleton: boolean;\n reuse: WidgetReusePolicy;\n} & RegisteredContributionMetadata;\n\nexport interface PlaceholderContribution {\n id: string;\n title: string;\n region: WorkbenchRegion;\n rendererId: string;\n regionSize?: WorkbenchRegionSize;\n regionCollapsible?: boolean;\n config?: unknown;\n priority?: number;\n}\n\nexport type RegisteredPlaceholderContribution = Omit<PlaceholderContribution, \"priority\"> &\n RegisteredContributionMetadata;\n\nexport interface WorkbenchWidgetPlacement {\n widgetId: string;\n contributionId: string;\n ownerId?: string;\n source?: ContributionSource;\n resource?: ResourceRef;\n resourceUri?: string;\n ownerResourceUri?: string;\n title?: string;\n pinned?: boolean;\n closable?: boolean;\n mountStrategy?: WidgetMountStrategy;\n hiddenByDefault?: boolean;\n tabRetention?: WorkbenchTabRetention;\n tab?: WorkbenchWidgetTab;\n role?: WorkbenchWidgetRole;\n}\n\nexport interface WorkbenchPanelInstance {\n instanceId: string;\n panelId: string;\n ownerId?: string;\n source?: ContributionSource;\n resource?: ResourceRef;\n resourceUri?: string;\n ownerResourceUri?: string;\n title?: string;\n pinned?: boolean;\n closable: boolean;\n mountStrategy?: WorkbenchPanelMountStrategy;\n hiddenByDefault?: boolean;\n tabRetention?: WorkbenchTabRetention;\n tab?: WorkbenchPanelTab;\n}\n\nexport interface WorkbenchRegionState {\n id: WorkbenchRegion;\n visible: boolean;\n size?: number;\n widgets: WorkbenchWidgetPlacement[];\n activeWidgetId?: string;\n}\n\nexport interface WorkbenchLayout {\n regions: Record<WorkbenchRegion, WorkbenchRegionState>;\n locationSubPanelSelections?: Record<string, Partial<Record<WorkbenchPanelRegion, string>>>;\n activeWidgetId?: string;\n activeLocationWidgetId?: string;\n activeResourceUri?: string;\n}\n\nexport interface WorkbenchLayoutStoreState {\n layout: WorkbenchLayout;\n widgets: Record<string, RegisteredWidgetContribution>;\n placeholders: Partial<Record<WorkbenchRegion, RegisteredPlaceholderContribution>>;\n}\n\nexport interface OpenWidgetInput {\n resource?: ResourceRef;\n title?: string;\n region?: WorkbenchRegion;\n // The role this placement takes, when the caller knows it better than the widget\n // does. A panel is a Location in main and a Sub Panel elsewhere, so a placement made\n // by the composition resolver carries the role its region implies.\n role?: WorkbenchWidgetRole;\n ownerId?: string;\n source?: ContributionSource;\n pinned?: boolean;\n closable?: boolean;\n mountStrategy?: WidgetMountStrategy;\n hiddenByDefault?: boolean;\n tabRetention?: WorkbenchTabRetention;\n tabPosition?: WorkbenchTabPosition;\n tab?: WorkbenchWidgetTab;\n replaceActive?: boolean;\n replaceWidgetId?: string;\n}\n\nexport type WorkbenchPanelOpenStrategy =\n | { kind: \"persistent\"; position?: WorkbenchTabPosition }\n | { kind: \"replace-active\" }\n | { kind: \"replace-panel\"; instanceId: string; retention?: WorkbenchTabRetention }\n | { kind: \"preview\"; position?: WorkbenchTabPosition };\n\nexport interface OpenWorkbenchPanelInput {\n resource?: ResourceRef;\n title?: string;\n region?: WorkbenchRegion;\n role?: WorkbenchWidgetRole;\n pinned?: boolean;\n closable?: boolean;\n mountStrategy?: WorkbenchPanelMountStrategy;\n hiddenByDefault?: boolean;\n tab?: WorkbenchPanelTab;\n strategy?: WorkbenchPanelOpenStrategy;\n}\n\nconst createRegionState = (id: WorkbenchRegion, visible: boolean): WorkbenchRegionState => ({\n id,\n visible,\n widgets: [],\n});\n\nexport const createDefaultWorkbenchLayout = (\n regionVisibility: Partial<Record<WorkbenchRegion, boolean>> = {},\n): WorkbenchLayout => {\n const createRegion = (id: WorkbenchRegion) => createRegionState(id, regionVisibility[id] ?? true);\n\n return {\n regions: {\n nav: createRegion(\"nav\"),\n activity: createRegion(\"activity\"),\n \"sidenav-header\": createRegion(\"sidenav-header\"),\n sidenav: createRegion(\"sidenav\"),\n \"main-header\": createRegion(\"main-header\"),\n \"main-left-menu\": createRegion(\"main-left-menu\"),\n main: createRegion(\"main\"),\n \"main-right-menu\": createRegion(\"main-right-menu\"),\n \"secondary-header\": createRegion(\"secondary-header\"),\n \"secondary-left-menu\": createRegion(\"secondary-left-menu\"),\n secondary: createRegion(\"secondary\"),\n \"secondary-right-menu\": createRegion(\"secondary-right-menu\"),\n \"side-header\": createRegion(\"side-header\"),\n \"side-left-menu\": createRegion(\"side-left-menu\"),\n side: createRegion(\"side\"),\n \"side-right-menu\": createRegion(\"side-right-menu\"),\n status: createRegion(\"status\"),\n overlay: createRegion(\"overlay\"),\n },\n };\n};\n\nconst findLastWidgetIndex = (widgets: WorkbenchWidgetPlacement[], widgetId: string) => {\n for (let index = widgets.length - 1; index >= 0; index -= 1) {\n if (widgets[index]?.widgetId === widgetId) return index;\n }\n return -1;\n};\n\nconst normalizeWidgetIds = (layout: WorkbenchLayout) => {\n const widgetIds = new Set<string>();\n const regions = {} as WorkbenchLayout[\"regions\"];\n let activeWidgetId = layout.activeWidgetId;\n let activeResourceUri = layout.activeResourceUri;\n\n for (const [id, region] of Object.entries(layout.regions) as [WorkbenchRegion, WorkbenchRegionState][]) {\n const originalActiveWidgetId = region.activeWidgetId;\n const activeIndex = originalActiveWidgetId ? findLastWidgetIndex(region.widgets, originalActiveWidgetId) : -1;\n const widgets = region.widgets.map((placement) => {\n const widgetId = resolveUniqueWidgetId(widgetIds, placement.contributionId, placement.widgetId);\n widgetIds.add(widgetId);\n return widgetId === placement.widgetId ? placement : { ...placement, widgetId };\n });\n const normalizedActiveWidgetId = activeIndex >= 0 ? widgets[activeIndex]?.widgetId : originalActiveWidgetId;\n regions[id] = { ...region, widgets, activeWidgetId: normalizedActiveWidgetId };\n\n if (originalActiveWidgetId && layout.activeWidgetId === originalActiveWidgetId && activeIndex >= 0) {\n activeWidgetId = normalizedActiveWidgetId;\n activeResourceUri = widgets[activeIndex]?.resourceUri;\n }\n }\n\n return { ...layout, regions, activeWidgetId, activeResourceUri };\n};\n\nexport const mergeWithDefaultRegions = (\n persisted: WorkbenchLayout,\n regionVisibility: Partial<Record<WorkbenchRegion, boolean>> = {},\n): WorkbenchLayout => {\n const defaults = createDefaultWorkbenchLayout(regionVisibility);\n return normalizeWidgetIds({\n ...persisted,\n regions: { ...defaults.regions, ...persisted.regions },\n });\n};\n"],"names":["resolveUniqueWidgetId","widgetIds","contributionId","preferredId","has","suffix","workbenchRegions","workbenchPanelRegions","workbenchPanelMenuRegions","main","left","right","secondary","side","workbenchPanelByMenuRegion","getWorkbenchPanelForMenuRegion","region","createRegionState","id","visible","widgets","createDefaultWorkbenchLayout","regionVisibility","createRegion","regions","nav","activity","sidenav","status","overlay","findLastWidgetIndex","widgetId","index","length","normalizeWidgetIds","layout","Set","activeWidgetId","activeResourceUri","Object","entries","originalActiveWidgetId","activeIndex","map","placement","add","normalizedActiveWidgetId","resourceUri","mergeWithDefaultRegions","persisted","defaults"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"layout-types-DMoZz38-.js","sources":["../src/core/registries/layout/widget-id.ts","../src/core/registries/layout/layout-types.ts"],"sourcesContent":["export const resolveUniqueWidgetId = (\n widgetIds: ReadonlySet<string>,\n contributionId: string,\n preferredId = contributionId,\n) => {\n if (!widgetIds.has(preferredId)) return preferredId;\n\n let suffix = 1;\n while (widgetIds.has(`${contributionId}:${suffix}`)) suffix += 1;\n return `${contributionId}:${suffix}`;\n};\n","import type { ContributionSource, RegisteredContributionMetadata } from \"../../shared/contributions/metadata\";\nimport type { ResourceRef } from \"../resources/resource-registry\";\nimport { resolveUniqueWidgetId } from \"./widget-id\";\n\nexport const workbenchRegions = [\n \"nav\",\n \"activity\",\n \"sidenav-header\",\n \"sidenav\",\n \"main-header\",\n \"main-left-menu\",\n \"main\",\n \"main-right-menu\",\n \"secondary-header\",\n \"secondary-left-menu\",\n \"secondary\",\n \"secondary-right-menu\",\n \"side-header\",\n \"side-left-menu\",\n \"side\",\n \"side-right-menu\",\n \"status\",\n \"overlay\",\n] as const;\n\nexport type WorkbenchRegion = (typeof workbenchRegions)[number];\n\nexport const workbenchPanelRegions = [\"main\", \"secondary\", \"side\"] as const satisfies readonly WorkbenchRegion[];\n\nexport type WorkbenchPanelRegion = (typeof workbenchPanelRegions)[number];\n\nexport type WorkbenchPanelMenuSide = \"left\" | \"right\";\n\nexport const workbenchPanelMenuRegions = {\n main: { left: \"main-left-menu\", right: \"main-right-menu\" },\n secondary: { left: \"secondary-left-menu\", right: \"secondary-right-menu\" },\n side: { left: \"side-left-menu\", right: \"side-right-menu\" },\n} as const satisfies Record<WorkbenchPanelRegion, Record<WorkbenchPanelMenuSide, WorkbenchRegion>>;\n\nexport type WorkbenchPanelMenuRegion = (typeof workbenchPanelMenuRegions)[WorkbenchPanelRegion][WorkbenchPanelMenuSide];\n\nconst workbenchPanelByMenuRegion = {\n \"main-left-menu\": \"main\",\n \"main-right-menu\": \"main\",\n \"secondary-left-menu\": \"secondary\",\n \"secondary-right-menu\": \"secondary\",\n \"side-left-menu\": \"side\",\n \"side-right-menu\": \"side\",\n} as const satisfies Record<WorkbenchPanelMenuRegion, WorkbenchPanelRegion>;\n\nexport const getWorkbenchPanelForMenuRegion = (region: WorkbenchPanelMenuRegion) => workbenchPanelByMenuRegion[region];\n\nexport interface WorkbenchRegionSize {\n defaultPx?: number;\n minPx?: number;\n maxPx?: number;\n}\n\nexport type WidgetReusePolicy = \"resource\" | \"none\";\n\nexport type WidgetMountStrategy = \"active\" | \"keep-mounted\";\n\nexport type WorkbenchPanelReusePolicy = WidgetReusePolicy;\n\nexport type WorkbenchPanelMountStrategy = WidgetMountStrategy;\n\nexport type WorkbenchFloatingPanelVisibility = \"visible\" | \"hidden\";\n\nexport type WorkbenchWidgetRole = \"content\" | \"location\" | \"sub-panel\" | \"panel-menu\";\n\nexport type WorkbenchTabRetention = \"preview\" | \"persistent\";\n\nexport type WorkbenchTabPosition = \"start\" | \"end\" | { beforeWidgetId: string } | { afterWidgetId: string };\n\nexport interface WorkbenchLocationEligibility {\n modeIds?: string[];\n resourceKinds?: string[];\n resourceIds?: string[];\n canOpen?(resource: ResourceRef): boolean;\n canOpenLocation?(location: { resource?: ResourceRef; viewId?: string }): boolean;\n}\n\nexport type WorkbenchPanelMenuOwner =\n | { level: \"panel\"; contributionId?: string }\n | { level: \"sub-panel\"; contributionId: string };\n\nexport interface WorkbenchWidgetTab {\n contentRendererId?: string;\n /** Custom actions shown when the user activates an already-active tab. */\n customMenuRendererId?: string;\n}\n\nexport type WorkbenchPanelTab = WorkbenchWidgetTab;\n\nexport interface WidgetContribution {\n id: string;\n title: string;\n icon?: string;\n region: WorkbenchRegion;\n fallbackRegion?: WorkbenchRegion;\n singleton?: boolean;\n reuse?: WidgetReusePolicy;\n mountStrategy?: WidgetMountStrategy;\n closable?: boolean;\n // Non-closeable widgets opt into the tab visibility menu; closeable widgets\n // ignore this and use the X button for dismissal.\n hiddenByDefault?: boolean;\n // A Location that presents only its Sub Panels: it renders no tab and no\n // content of its own — establishing it activates its first Sub Panel.\n subPanelsOnly?: boolean;\n regionSize?: WorkbenchRegionSize;\n regionCollapsible?: boolean;\n headerBorderBottom?: boolean;\n floatingPanels?: WorkbenchFloatingPanelVisibility;\n resourceKinds?: string[];\n priority?: number;\n rendererId: string;\n openCommandId?: string;\n eligibleLocations?: WorkbenchLocationEligibility;\n panelMenuOwner?: WorkbenchPanelMenuOwner;\n tab?: WorkbenchWidgetTab;\n config?: unknown;\n canOpen?(resource: ResourceRef): boolean;\n}\n\nexport interface WorkbenchPanelMenuDefinition {\n id: string;\n title: string;\n icon?: string;\n side: WorkbenchPanelMenuSide;\n singleton?: boolean;\n reuse?: WorkbenchPanelReusePolicy;\n mountStrategy?: WorkbenchPanelMountStrategy;\n hiddenByDefault?: boolean;\n regionSize?: WorkbenchRegionSize;\n regionCollapsible?: boolean;\n headerBorderBottom?: boolean;\n rendererId: string;\n priority?: number;\n config?: unknown;\n}\n\ninterface WorkbenchPanelMenusContribution {\n panelMenus?: readonly WorkbenchPanelMenuDefinition[];\n}\n\nexport interface WorkbenchPanelContribution {\n id: string;\n title: string;\n icon?: string;\n region: WorkbenchRegion;\n fallbackRegion?: WorkbenchRegion;\n rendererId: string;\n singleton?: boolean;\n reuse?: WorkbenchPanelReusePolicy;\n mountStrategy?: WorkbenchPanelMountStrategy;\n hiddenByDefault?: boolean;\n subPanelsOnly?: boolean;\n regionSize?: WorkbenchRegionSize;\n regionCollapsible?: boolean;\n headerBorderBottom?: boolean;\n floatingPanels?: WorkbenchFloatingPanelVisibility;\n resourceKinds?: string[];\n eligibleLocations?: WorkbenchLocationEligibility;\n priority?: number;\n openCommandId?: string;\n tab?: WorkbenchPanelTab;\n config?: unknown;\n canOpen?(resource: ResourceRef): boolean;\n ownerId?: string;\n source?: ContributionSource;\n panelMenus?: readonly WorkbenchPanelMenuDefinition[];\n}\n\nexport type WorkbenchLocationContribution = WidgetContribution & WorkbenchPanelMenusContribution;\n\nexport type WorkbenchSubPanelContribution = Omit<WidgetContribution, \"region\" | \"fallbackRegion\"> & {\n region: WorkbenchPanelRegion;\n fallbackRegion?: WorkbenchPanelRegion;\n} & WorkbenchPanelMenusContribution;\n\nexport type WorkbenchPanelMenuContribution = Omit<WidgetContribution, \"region\" | \"fallbackRegion\"> & {\n region: WorkbenchPanelMenuRegion;\n fallbackRegion?: WorkbenchPanelMenuRegion;\n};\n\nexport type RegisteredWidgetContribution = Omit<WidgetContribution, \"priority\" | \"singleton\" | \"reuse\"> & {\n ownedPanelMenuIds?: readonly string[];\n singleton: boolean;\n reuse: WidgetReusePolicy;\n} & RegisteredContributionMetadata;\n\nexport interface PlaceholderContribution {\n id: string;\n title: string;\n region: WorkbenchRegion;\n rendererId: string;\n regionSize?: WorkbenchRegionSize;\n regionCollapsible?: boolean;\n config?: unknown;\n priority?: number;\n}\n\nexport type RegisteredPlaceholderContribution = Omit<PlaceholderContribution, \"priority\"> &\n RegisteredContributionMetadata;\n\nexport interface WorkbenchWidgetPlacement {\n widgetId: string;\n contributionId: string;\n viewId?: string;\n ownerId?: string;\n source?: ContributionSource;\n resource?: ResourceRef;\n resourceUri?: string;\n ownerResourceUri?: string;\n title?: string;\n pinned?: boolean;\n closable?: boolean;\n mountStrategy?: WidgetMountStrategy;\n hiddenByDefault?: boolean;\n tabRetention?: WorkbenchTabRetention;\n tab?: WorkbenchWidgetTab;\n role?: WorkbenchWidgetRole;\n}\n\nexport interface WorkbenchPanelInstance {\n instanceId: string;\n panelId: string;\n viewId?: string;\n ownerId?: string;\n source?: ContributionSource;\n resource?: ResourceRef;\n resourceUri?: string;\n ownerResourceUri?: string;\n title?: string;\n pinned?: boolean;\n closable: boolean;\n mountStrategy?: WorkbenchPanelMountStrategy;\n hiddenByDefault?: boolean;\n tabRetention?: WorkbenchTabRetention;\n tab?: WorkbenchPanelTab;\n}\n\nexport interface WorkbenchRegionState {\n id: WorkbenchRegion;\n visible: boolean;\n size?: number;\n widgets: WorkbenchWidgetPlacement[];\n activeWidgetId?: string;\n}\n\nexport interface WorkbenchLayout {\n regions: Record<WorkbenchRegion, WorkbenchRegionState>;\n locationSubPanelSelections?: Record<string, Partial<Record<WorkbenchPanelRegion, string>>>;\n activeWidgetId?: string;\n activeLocationWidgetId?: string;\n activeResourceUri?: string;\n}\n\nexport interface WorkbenchLayoutStoreState {\n layout: WorkbenchLayout;\n widgets: Record<string, RegisteredWidgetContribution>;\n placeholders: Partial<Record<WorkbenchRegion, RegisteredPlaceholderContribution>>;\n}\n\nexport interface OpenWidgetInput {\n viewId?: string | null;\n resource?: ResourceRef | null;\n title?: string;\n region?: WorkbenchRegion;\n // The role this placement takes, when the caller knows it better than the widget\n // does. A panel is a Location in main and a Sub Panel elsewhere, so a placement made\n // by the composition resolver carries the role its region implies.\n role?: WorkbenchWidgetRole;\n ownerId?: string;\n source?: ContributionSource;\n pinned?: boolean;\n closable?: boolean;\n mountStrategy?: WidgetMountStrategy;\n hiddenByDefault?: boolean;\n tabRetention?: WorkbenchTabRetention;\n tabPosition?: WorkbenchTabPosition;\n tab?: WorkbenchWidgetTab;\n replaceActive?: boolean;\n replaceWidgetId?: string;\n}\n\nexport type WorkbenchPanelOpenStrategy =\n | { kind: \"persistent\"; position?: WorkbenchTabPosition }\n | { kind: \"replace-active\" }\n | { kind: \"replace-panel\"; instanceId: string; retention?: WorkbenchTabRetention }\n | { kind: \"preview\"; position?: WorkbenchTabPosition };\n\nexport interface OpenWorkbenchPanelInput {\n /** Set by the view registry. Low-level layout callers should leave this undefined. */\n viewId?: string | null;\n /** `null` explicitly clears an existing singleton placement's resource binding. */\n resource?: ResourceRef | null;\n title?: string;\n region?: WorkbenchRegion;\n role?: WorkbenchWidgetRole;\n pinned?: boolean;\n closable?: boolean;\n mountStrategy?: WorkbenchPanelMountStrategy;\n hiddenByDefault?: boolean;\n tab?: WorkbenchPanelTab;\n strategy?: WorkbenchPanelOpenStrategy;\n}\n\nconst createRegionState = (id: WorkbenchRegion, visible: boolean): WorkbenchRegionState => ({\n id,\n visible,\n widgets: [],\n});\n\nexport const createDefaultWorkbenchLayout = (\n regionVisibility: Partial<Record<WorkbenchRegion, boolean>> = {},\n): WorkbenchLayout => {\n const createRegion = (id: WorkbenchRegion) => createRegionState(id, regionVisibility[id] ?? true);\n\n return {\n regions: {\n nav: createRegion(\"nav\"),\n activity: createRegion(\"activity\"),\n \"sidenav-header\": createRegion(\"sidenav-header\"),\n sidenav: createRegion(\"sidenav\"),\n \"main-header\": createRegion(\"main-header\"),\n \"main-left-menu\": createRegion(\"main-left-menu\"),\n main: createRegion(\"main\"),\n \"main-right-menu\": createRegion(\"main-right-menu\"),\n \"secondary-header\": createRegion(\"secondary-header\"),\n \"secondary-left-menu\": createRegion(\"secondary-left-menu\"),\n secondary: createRegion(\"secondary\"),\n \"secondary-right-menu\": createRegion(\"secondary-right-menu\"),\n \"side-header\": createRegion(\"side-header\"),\n \"side-left-menu\": createRegion(\"side-left-menu\"),\n side: createRegion(\"side\"),\n \"side-right-menu\": createRegion(\"side-right-menu\"),\n status: createRegion(\"status\"),\n overlay: createRegion(\"overlay\"),\n },\n };\n};\n\nconst findLastWidgetIndex = (widgets: WorkbenchWidgetPlacement[], widgetId: string) => {\n for (let index = widgets.length - 1; index >= 0; index -= 1) {\n if (widgets[index]?.widgetId === widgetId) return index;\n }\n return -1;\n};\n\nconst normalizeWidgetIds = (layout: WorkbenchLayout) => {\n const widgetIds = new Set<string>();\n const regions = {} as WorkbenchLayout[\"regions\"];\n let activeWidgetId = layout.activeWidgetId;\n let activeResourceUri = layout.activeResourceUri;\n\n for (const [id, region] of Object.entries(layout.regions) as [WorkbenchRegion, WorkbenchRegionState][]) {\n const originalActiveWidgetId = region.activeWidgetId;\n const activeIndex = originalActiveWidgetId ? findLastWidgetIndex(region.widgets, originalActiveWidgetId) : -1;\n const widgets = region.widgets.map((placement) => {\n const widgetId = resolveUniqueWidgetId(widgetIds, placement.contributionId, placement.widgetId);\n widgetIds.add(widgetId);\n return widgetId === placement.widgetId ? placement : { ...placement, widgetId };\n });\n const normalizedActiveWidgetId = activeIndex >= 0 ? widgets[activeIndex]?.widgetId : originalActiveWidgetId;\n regions[id] = { ...region, widgets, activeWidgetId: normalizedActiveWidgetId };\n\n if (originalActiveWidgetId && layout.activeWidgetId === originalActiveWidgetId && activeIndex >= 0) {\n activeWidgetId = normalizedActiveWidgetId;\n activeResourceUri = widgets[activeIndex]?.resourceUri;\n }\n }\n\n return { ...layout, regions, activeWidgetId, activeResourceUri };\n};\n\nexport const mergeWithDefaultRegions = (\n persisted: WorkbenchLayout,\n regionVisibility: Partial<Record<WorkbenchRegion, boolean>> = {},\n): WorkbenchLayout => {\n const defaults = createDefaultWorkbenchLayout(regionVisibility);\n return normalizeWidgetIds({\n ...persisted,\n regions: { ...defaults.regions, ...persisted.regions },\n });\n};\n"],"names":["resolveUniqueWidgetId","widgetIds","contributionId","preferredId","has","suffix","workbenchRegions","workbenchPanelRegions","workbenchPanelMenuRegions","main","left","right","secondary","side","workbenchPanelByMenuRegion","getWorkbenchPanelForMenuRegion","region","createRegionState","id","visible","widgets","createDefaultWorkbenchLayout","regionVisibility","createRegion","regions","nav","activity","sidenav","status","overlay","findLastWidgetIndex","widgetId","index","length","normalizeWidgetIds","layout","Set","activeWidgetId","activeResourceUri","Object","entries","originalActiveWidgetId","activeIndex","map","placement","add","normalizedActiveWidgetId","resourceUri","mergeWithDefaultRegions","persisted","defaults"],"mappings":"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"}
|
package/dist/react.d.ts
CHANGED
|
@@ -178,6 +178,7 @@ declare interface CommandParamDescriptor {
|
|
|
178
178
|
accept?: string;
|
|
179
179
|
multiple?: boolean;
|
|
180
180
|
metadata?: Record<string, unknown>;
|
|
181
|
+
resolvedFrom?: "resource";
|
|
181
182
|
}
|
|
182
183
|
|
|
183
184
|
export declare interface CommandParamEntry extends CommandParamDescriptor {
|
|
@@ -271,6 +272,7 @@ declare type ContributionSource = "module" | "extension";
|
|
|
271
272
|
declare type ContributionSource_2 = "module" | "extension";
|
|
272
273
|
|
|
273
274
|
declare interface ControllerTerminalBridgeOptions {
|
|
275
|
+
getBindingId?: () => string | undefined;
|
|
274
276
|
getResource?: () => ResourceRef | undefined;
|
|
275
277
|
getTitle?: () => string | undefined;
|
|
276
278
|
}
|
|
@@ -670,6 +672,7 @@ declare interface HistoryController {
|
|
|
670
672
|
restore(): HistoryEntry | undefined;
|
|
671
673
|
flush(): void;
|
|
672
674
|
clear(): void;
|
|
675
|
+
migrateState(transform: (state: HistoryStoreState) => HistoryStoreState): void;
|
|
673
676
|
}
|
|
674
677
|
|
|
675
678
|
declare type HistoryEntry = WorkbenchNavigationEntry;
|
|
@@ -1009,7 +1012,12 @@ declare interface NavigationTargetCompound {
|
|
|
1009
1012
|
targets: readonly NavigationTargetItem[];
|
|
1010
1013
|
}
|
|
1011
1014
|
|
|
1012
|
-
declare
|
|
1015
|
+
declare interface NavigationTargetHref {
|
|
1016
|
+
kind: "href";
|
|
1017
|
+
href: string;
|
|
1018
|
+
}
|
|
1019
|
+
|
|
1020
|
+
declare type NavigationTargetItem = NavigationTargetResource | NavigationTargetView | NavigationTargetPanel | NavigationTargetCommand | NavigationTargetHref;
|
|
1013
1021
|
|
|
1014
1022
|
declare interface NavigationTargetPanel {
|
|
1015
1023
|
kind: "panel";
|
|
@@ -1023,6 +1031,12 @@ declare interface NavigationTargetResource {
|
|
|
1023
1031
|
input?: OpenResourceInput;
|
|
1024
1032
|
}
|
|
1025
1033
|
|
|
1034
|
+
declare interface NavigationTargetView {
|
|
1035
|
+
kind: "view";
|
|
1036
|
+
viewId: string;
|
|
1037
|
+
input?: OpenWorkbenchViewInput;
|
|
1038
|
+
}
|
|
1039
|
+
|
|
1026
1040
|
declare const NO_GROUPING = "none";
|
|
1027
1041
|
|
|
1028
1042
|
export declare const normalizeWorkbenchKeybinding: (keybinding: KeybindingSequence) => KeybindingSequence;
|
|
@@ -1041,7 +1055,8 @@ declare interface OpenResourceInput {
|
|
|
1041
1055
|
}
|
|
1042
1056
|
|
|
1043
1057
|
declare interface OpenWidgetInput {
|
|
1044
|
-
|
|
1058
|
+
viewId?: string | null;
|
|
1059
|
+
resource?: ResourceRef | null;
|
|
1045
1060
|
title?: string;
|
|
1046
1061
|
region?: WorkbenchRegion_2;
|
|
1047
1062
|
role?: WorkbenchWidgetRole;
|
|
@@ -1059,7 +1074,10 @@ declare interface OpenWidgetInput {
|
|
|
1059
1074
|
}
|
|
1060
1075
|
|
|
1061
1076
|
declare interface OpenWorkbenchPanelInput {
|
|
1062
|
-
|
|
1077
|
+
/** Set by the view registry. Low-level layout callers should leave this undefined. */
|
|
1078
|
+
viewId?: string | null;
|
|
1079
|
+
/** `null` explicitly clears an existing singleton placement's resource binding. */
|
|
1080
|
+
resource?: ResourceRef | null;
|
|
1063
1081
|
title?: string;
|
|
1064
1082
|
region?: WorkbenchRegion_2;
|
|
1065
1083
|
role?: WorkbenchWidgetRole;
|
|
@@ -1079,6 +1097,8 @@ declare type OpenWorkbenchTerminalOptions = OpenWorkbenchTerminalInput & {
|
|
|
1079
1097
|
reveal?: boolean;
|
|
1080
1098
|
};
|
|
1081
1099
|
|
|
1100
|
+
declare type OpenWorkbenchViewInput = Omit<OpenWorkbenchPanelInput, "viewId">;
|
|
1101
|
+
|
|
1082
1102
|
declare type ParamValue_2 = Parameters<NonNullable<ParamEditorProps["onChange"]>>[1];
|
|
1083
1103
|
|
|
1084
1104
|
export declare const paramValueToPreference: (schema: PreferencePropertySchema, value: ParamValue_2) => PreferenceValue;
|
|
@@ -1214,6 +1234,10 @@ declare interface RegisteredWorkbenchNotification extends RegisteredContribution
|
|
|
1214
1234
|
metadata?: Record<string, unknown>;
|
|
1215
1235
|
}
|
|
1216
1236
|
|
|
1237
|
+
declare type RegisteredWorkbenchStatusSet = WorkbenchStatusSetContribution & RegisteredContributionMetadata;
|
|
1238
|
+
|
|
1239
|
+
declare type RegisteredWorkbenchView = WorkbenchViewContribution & RegisteredContributionMetadata;
|
|
1240
|
+
|
|
1217
1241
|
declare type ResolvedResourceHierarchyProvider = Required<ResourceHierarchyProvider>;
|
|
1218
1242
|
|
|
1219
1243
|
declare type ResolvedResourcePresenter = Omit<ResourcePresenter, "priority"> & {
|
|
@@ -1242,7 +1266,7 @@ declare interface ResourceContextAction {
|
|
|
1242
1266
|
|
|
1243
1267
|
declare interface ResourceHierarchyCycle {
|
|
1244
1268
|
code: typeof resourceHierarchyCycleCode;
|
|
1245
|
-
path:
|
|
1269
|
+
path: WorkbenchHierarchyNode[];
|
|
1246
1270
|
repeatedUri: string;
|
|
1247
1271
|
}
|
|
1248
1272
|
|
|
@@ -1252,7 +1276,7 @@ declare interface ResourceHierarchyProvider {
|
|
|
1252
1276
|
id: string;
|
|
1253
1277
|
priority?: number;
|
|
1254
1278
|
canResolve(resource: ResourceRef): boolean;
|
|
1255
|
-
getParent(resource: ResourceRef):
|
|
1279
|
+
getParent(resource: ResourceRef): WorkbenchHierarchyNode | undefined;
|
|
1256
1280
|
}
|
|
1257
1281
|
|
|
1258
1282
|
declare interface ResourceKindContribution {
|
|
@@ -1320,7 +1344,7 @@ declare interface ResourceRegistry {
|
|
|
1320
1344
|
listResources(query: string): readonly ResourceBrowseEntry[];
|
|
1321
1345
|
registerHierarchyProvider(provider: ResourceHierarchyProvider): Disposable_2;
|
|
1322
1346
|
listHierarchyProviders(): ResolvedResourceHierarchyProvider[];
|
|
1323
|
-
walkHierarchy(resource: ResourceRef | undefined):
|
|
1347
|
+
walkHierarchy(resource: ResourceRef | undefined): WorkbenchHierarchyNode[];
|
|
1324
1348
|
onDidDetectHierarchyCycle(listener: (cycle: ResourceHierarchyCycle) => void): Disposable_2;
|
|
1325
1349
|
isOpeningResource(): boolean;
|
|
1326
1350
|
openResource(resource: ResourceRef, input?: OpenResourceInput): Promise<WorkbenchPanelInstance>;
|
|
@@ -1816,6 +1840,7 @@ declare interface WorkbenchCompositionRegionPanels {
|
|
|
1816
1840
|
|
|
1817
1841
|
declare interface WorkbenchCore extends WorkbenchCoreContributionContext {
|
|
1818
1842
|
host: WorkbenchHost;
|
|
1843
|
+
layout: WorkbenchLayoutModel;
|
|
1819
1844
|
registerModule(module: WorkbenchModuleContribution): Disposable_2;
|
|
1820
1845
|
unregisterModule(moduleId: string): void;
|
|
1821
1846
|
}
|
|
@@ -1831,7 +1856,7 @@ declare interface WorkbenchCoreContributionContext {
|
|
|
1831
1856
|
history: HistoryController;
|
|
1832
1857
|
keybindings: KeybindingRegistry;
|
|
1833
1858
|
lastResource: WorkbenchLastResourceController;
|
|
1834
|
-
layout:
|
|
1859
|
+
layout: WorkbenchModuleLayoutModel;
|
|
1835
1860
|
modes: WorkbenchModeRegistry;
|
|
1836
1861
|
navigation: NavigationRegistry;
|
|
1837
1862
|
navigator: WorkbenchNavigator;
|
|
@@ -1840,7 +1865,10 @@ declare interface WorkbenchCoreContributionContext {
|
|
|
1840
1865
|
preferences: PreferenceRegistry;
|
|
1841
1866
|
renderers: WorkbenchRenderers;
|
|
1842
1867
|
resources: ResourceRegistry;
|
|
1868
|
+
views: WorkbenchViewRegistry;
|
|
1843
1869
|
settings: SettingsRegistry;
|
|
1870
|
+
statusBar: WorkbenchStatusBarRegistry;
|
|
1871
|
+
statuses: WorkbenchStatusRegistry;
|
|
1844
1872
|
shell: WorkbenchShellController;
|
|
1845
1873
|
sidePanel: WorkbenchSidePanelController;
|
|
1846
1874
|
terminal: WorkbenchTerminalController;
|
|
@@ -1902,6 +1930,8 @@ declare interface WorkbenchHeaderActionsProps {
|
|
|
1902
1930
|
controlSize?: "2xs" | "xs";
|
|
1903
1931
|
}
|
|
1904
1932
|
|
|
1933
|
+
declare type WorkbenchHierarchyNode = ResourceRef | WorkbenchViewHierarchyNode;
|
|
1934
|
+
|
|
1905
1935
|
declare interface WorkbenchHost {
|
|
1906
1936
|
getSnapshot(): WorkbenchSnapshot;
|
|
1907
1937
|
restoreSnapshot(snapshot: WorkbenchSnapshot): void;
|
|
@@ -1969,11 +1999,16 @@ declare interface WorkbenchLocationEligibility {
|
|
|
1969
1999
|
resourceKinds?: string[];
|
|
1970
2000
|
resourceIds?: string[];
|
|
1971
2001
|
canOpen?(resource: ResourceRef): boolean;
|
|
2002
|
+
canOpenLocation?(location: {
|
|
2003
|
+
resource?: ResourceRef;
|
|
2004
|
+
viewId?: string;
|
|
2005
|
+
}): boolean;
|
|
1972
2006
|
}
|
|
1973
2007
|
|
|
1974
2008
|
declare interface WorkbenchLocationRef {
|
|
1975
2009
|
key: string;
|
|
1976
2010
|
modeId?: string;
|
|
2011
|
+
viewId?: string;
|
|
1977
2012
|
resource?: ResourceRef;
|
|
1978
2013
|
contributionId?: string;
|
|
1979
2014
|
instanceKey?: string;
|
|
@@ -2074,6 +2109,8 @@ export declare interface WorkbenchModuleHostRegistration {
|
|
|
2074
2109
|
disposable: Disposable_2;
|
|
2075
2110
|
}
|
|
2076
2111
|
|
|
2112
|
+
declare type WorkbenchModuleLayoutModel = Omit<WorkbenchLayoutModel, "registerWidget">;
|
|
2113
|
+
|
|
2077
2114
|
declare interface WorkbenchNavigationCommit {
|
|
2078
2115
|
modeId: string | undefined;
|
|
2079
2116
|
resource: ResourceRef | undefined;
|
|
@@ -2087,9 +2124,10 @@ declare interface WorkbenchNavigationEntry {
|
|
|
2087
2124
|
recordedAt: number;
|
|
2088
2125
|
location: WorkbenchLocationRef;
|
|
2089
2126
|
selectedSubPanels: Partial<Record<WorkbenchPanelRegion, WorkbenchSubPanelRef>>;
|
|
2090
|
-
kind: "resource" | "widget" | "mode";
|
|
2127
|
+
kind: "resource" | "view" | "widget" | "mode";
|
|
2091
2128
|
modeId?: string;
|
|
2092
2129
|
resource?: ResourceRef;
|
|
2130
|
+
viewId?: string;
|
|
2093
2131
|
widgetId?: string;
|
|
2094
2132
|
contributionId?: string;
|
|
2095
2133
|
title?: string;
|
|
@@ -2240,6 +2278,7 @@ declare interface WorkbenchPanelContribution {
|
|
|
2240
2278
|
declare interface WorkbenchPanelInstance {
|
|
2241
2279
|
instanceId: string;
|
|
2242
2280
|
panelId: string;
|
|
2281
|
+
viewId?: string;
|
|
2243
2282
|
ownerId?: string;
|
|
2244
2283
|
source?: ContributionSource;
|
|
2245
2284
|
resource?: ResourceRef;
|
|
@@ -2257,6 +2296,7 @@ declare interface WorkbenchPanelInstance {
|
|
|
2257
2296
|
declare interface WorkbenchPanelInstance_2 {
|
|
2258
2297
|
instanceId: string;
|
|
2259
2298
|
panelId: string;
|
|
2299
|
+
viewId?: string;
|
|
2260
2300
|
ownerId?: string;
|
|
2261
2301
|
source?: ContributionSource_2;
|
|
2262
2302
|
resource?: ResourceRef_2;
|
|
@@ -2513,6 +2553,52 @@ declare interface WorkbenchSnapshot {
|
|
|
2513
2553
|
layout: WorkbenchLayout;
|
|
2514
2554
|
}
|
|
2515
2555
|
|
|
2556
|
+
declare interface WorkbenchStatusBarItem {
|
|
2557
|
+
id: string;
|
|
2558
|
+
viewId: string;
|
|
2559
|
+
slot: WorkbenchStatusBarSlot;
|
|
2560
|
+
order?: number;
|
|
2561
|
+
isVisible?(): boolean;
|
|
2562
|
+
}
|
|
2563
|
+
|
|
2564
|
+
declare interface WorkbenchStatusBarRegistry {
|
|
2565
|
+
store: WorkbenchStore<WorkbenchStatusBarRegistryState>;
|
|
2566
|
+
registerItem(item: WorkbenchStatusBarItem): Disposable_2;
|
|
2567
|
+
getItem(id: string): WorkbenchStatusBarItem | undefined;
|
|
2568
|
+
listItems(): WorkbenchStatusBarItem[];
|
|
2569
|
+
listVisibleItems(slot?: WorkbenchStatusBarSlot): WorkbenchStatusBarItem[];
|
|
2570
|
+
}
|
|
2571
|
+
|
|
2572
|
+
declare interface WorkbenchStatusBarRegistryState {
|
|
2573
|
+
items: Record<string, WorkbenchStatusBarItem>;
|
|
2574
|
+
}
|
|
2575
|
+
|
|
2576
|
+
declare type WorkbenchStatusBarSlot = "leading" | "trailing";
|
|
2577
|
+
|
|
2578
|
+
declare interface WorkbenchStatusRegistry {
|
|
2579
|
+
store: WorkbenchStore<WorkbenchStatusRegistryState>;
|
|
2580
|
+
registerStatusSet(contribution: WorkbenchStatusSetContribution, metadata?: ContributionMetadata): Disposable_2;
|
|
2581
|
+
getStatusSet(id: string): RegisteredWorkbenchStatusSet | undefined;
|
|
2582
|
+
listStatusSets(): RegisteredWorkbenchStatusSet[];
|
|
2583
|
+
getStatuses(id: string): readonly WorkflowStatus[] | undefined;
|
|
2584
|
+
load(id: string): Promise<readonly WorkflowStatus[]>;
|
|
2585
|
+
query(id: string): Promise<readonly WorkflowStatus[]>;
|
|
2586
|
+
save(id: string, statuses: readonly WorkflowStatus[]): Promise<readonly WorkflowStatus[]>;
|
|
2587
|
+
}
|
|
2588
|
+
|
|
2589
|
+
declare interface WorkbenchStatusRegistryState {
|
|
2590
|
+
statusSets: Record<string, RegisteredWorkbenchStatusSet>;
|
|
2591
|
+
values: Record<string, readonly WorkflowStatus[]>;
|
|
2592
|
+
}
|
|
2593
|
+
|
|
2594
|
+
declare interface WorkbenchStatusSetContribution {
|
|
2595
|
+
id: string;
|
|
2596
|
+
title: string;
|
|
2597
|
+
actions?: readonly WorkflowStatusAction[];
|
|
2598
|
+
query(): Promise<readonly WorkflowStatus[]> | readonly WorkflowStatus[];
|
|
2599
|
+
save?(statuses: readonly WorkflowStatus[]): Promise<readonly WorkflowStatus[]> | readonly WorkflowStatus[];
|
|
2600
|
+
}
|
|
2601
|
+
|
|
2516
2602
|
declare interface WorkbenchStore<TState> {
|
|
2517
2603
|
getState(): TState;
|
|
2518
2604
|
getInitialState(): TState;
|
|
@@ -2557,6 +2643,7 @@ declare interface WorkbenchTerminalController {
|
|
|
2557
2643
|
setSessionOpener(opener: WorkbenchTerminalSessionOpener | null): void;
|
|
2558
2644
|
/** Opens a session; the live adapter stays host-side and only the id is returned. */
|
|
2559
2645
|
open(input: {
|
|
2646
|
+
bindingId?: string;
|
|
2560
2647
|
request: WorkbenchTerminalSessionRequest;
|
|
2561
2648
|
title?: string;
|
|
2562
2649
|
}): Promise<{
|
|
@@ -2575,6 +2662,7 @@ declare interface WorkbenchTerminalController {
|
|
|
2575
2662
|
sessionId: string;
|
|
2576
2663
|
signal?: string;
|
|
2577
2664
|
}): Promise<void>;
|
|
2665
|
+
killBinding(bindingId: string): Promise<void>;
|
|
2578
2666
|
subscribe(sessionId: string, sink: WorkbenchTerminalSessionSink): () => void;
|
|
2579
2667
|
getSession(sessionId: string): WorkbenchTerminalSessionModel | undefined;
|
|
2580
2668
|
listSessions(): WorkbenchTerminalSessionModel[];
|
|
@@ -2586,8 +2674,8 @@ declare interface WorkbenchTerminalController {
|
|
|
2586
2674
|
* Body of the host-owned terminal panel. Chrome (tab, title, close action,
|
|
2587
2675
|
* resize) comes from the workbench `secondary` region; this component only mounts
|
|
2588
2676
|
* the terminal bound to the workbench terminal controller. Collapsing the panel
|
|
2589
|
-
* keeps the terminal mounted.
|
|
2590
|
-
* its
|
|
2677
|
+
* keeps the terminal mounted. Scope changes keep the session alive; the terminal
|
|
2678
|
+
* module ends it when its tab is explicitly closed.
|
|
2591
2679
|
*/
|
|
2592
2680
|
export declare const WorkbenchTerminalPanel: (props: WorkbenchTerminalPanelProps) => JSX.Element;
|
|
2593
2681
|
|
|
@@ -2678,6 +2766,54 @@ declare interface WorkbenchTreeViewProps {
|
|
|
2678
2766
|
onSidenavContextActionsChange?: (actions: ResourceContextAction_2[]) => void;
|
|
2679
2767
|
}
|
|
2680
2768
|
|
|
2769
|
+
declare interface WorkbenchViewContribution {
|
|
2770
|
+
id: string;
|
|
2771
|
+
panelId: string;
|
|
2772
|
+
title?: string;
|
|
2773
|
+
icon?: string;
|
|
2774
|
+
path?: string;
|
|
2775
|
+
pathAliases?: readonly string[];
|
|
2776
|
+
aliases?: readonly string[];
|
|
2777
|
+
resource?: ResourceRef;
|
|
2778
|
+
canResolve?(): boolean;
|
|
2779
|
+
resolveInput?(input: OpenWorkbenchViewInput): OpenWorkbenchPanelInput;
|
|
2780
|
+
}
|
|
2781
|
+
|
|
2782
|
+
declare interface WorkbenchViewHierarchyNode {
|
|
2783
|
+
type: "view";
|
|
2784
|
+
viewId: string;
|
|
2785
|
+
label?: string;
|
|
2786
|
+
icon?: string;
|
|
2787
|
+
}
|
|
2788
|
+
|
|
2789
|
+
declare interface WorkbenchViewOpenEvent {
|
|
2790
|
+
viewId: string;
|
|
2791
|
+
input: OpenWorkbenchViewInput;
|
|
2792
|
+
instance: WorkbenchPanelInstance;
|
|
2793
|
+
}
|
|
2794
|
+
|
|
2795
|
+
declare interface WorkbenchViewRegistry {
|
|
2796
|
+
store: WorkbenchStore<WorkbenchViewRegistryStoreState>;
|
|
2797
|
+
registerView(view: WorkbenchViewContribution, metadata?: ContributionMetadata): Disposable_2;
|
|
2798
|
+
getView(viewId: string): RegisteredWorkbenchView | undefined;
|
|
2799
|
+
listViews(): RegisteredWorkbenchView[];
|
|
2800
|
+
resolveViewId(viewId: string): string | undefined;
|
|
2801
|
+
resolvePath(path: string): {
|
|
2802
|
+
kind: "view";
|
|
2803
|
+
viewId: string;
|
|
2804
|
+
} | undefined;
|
|
2805
|
+
canResolveView(viewId: string): boolean;
|
|
2806
|
+
isOpeningView(): boolean;
|
|
2807
|
+
openView(viewId: string, input?: OpenWorkbenchViewInput): Promise<WorkbenchPanelInstance>;
|
|
2808
|
+
onDidOpenView(listener: (event: WorkbenchViewOpenEvent) => void): Disposable_2;
|
|
2809
|
+
}
|
|
2810
|
+
|
|
2811
|
+
declare interface WorkbenchViewRegistryStoreState {
|
|
2812
|
+
views: Record<string, RegisteredWorkbenchView>;
|
|
2813
|
+
aliases: Record<string, string>;
|
|
2814
|
+
paths: Record<string, string>;
|
|
2815
|
+
}
|
|
2816
|
+
|
|
2681
2817
|
export declare const WorkbenchWidgetHost: (props: WorkbenchWidgetHostProps) => JSX.Element;
|
|
2682
2818
|
|
|
2683
2819
|
declare interface WorkbenchWidgetHostProps {
|
|
@@ -2689,6 +2825,7 @@ declare interface WorkbenchWidgetHostProps {
|
|
|
2689
2825
|
declare interface WorkbenchWidgetPlacement {
|
|
2690
2826
|
widgetId: string;
|
|
2691
2827
|
contributionId: string;
|
|
2828
|
+
viewId?: string;
|
|
2692
2829
|
ownerId?: string;
|
|
2693
2830
|
source?: ContributionSource;
|
|
2694
2831
|
resource?: ResourceRef;
|
|
@@ -2718,4 +2855,35 @@ declare interface WorkbenchWidgetTab_2 {
|
|
|
2718
2855
|
customMenuRendererId?: string;
|
|
2719
2856
|
}
|
|
2720
2857
|
|
|
2858
|
+
declare interface WorkflowStatus {
|
|
2859
|
+
id: string;
|
|
2860
|
+
label: string;
|
|
2861
|
+
color: string;
|
|
2862
|
+
icon?: string | null;
|
|
2863
|
+
sortOrder: number;
|
|
2864
|
+
isDefault?: boolean;
|
|
2865
|
+
board?: WorkflowStatusBoardRules;
|
|
2866
|
+
}
|
|
2867
|
+
|
|
2868
|
+
declare interface WorkflowStatusAction {
|
|
2869
|
+
id: string;
|
|
2870
|
+
label: string;
|
|
2871
|
+
icon?: string;
|
|
2872
|
+
}
|
|
2873
|
+
|
|
2874
|
+
declare interface WorkflowStatusBoardRules {
|
|
2875
|
+
canCreate?: boolean;
|
|
2876
|
+
canDragIn?: boolean;
|
|
2877
|
+
canDragOut?: boolean;
|
|
2878
|
+
actions?: readonly string[];
|
|
2879
|
+
}
|
|
2880
|
+
|
|
2881
|
+
export declare const WorkflowStatusSettings: (props: WorkflowStatusSettingsProps) => JSX.Element;
|
|
2882
|
+
|
|
2883
|
+
declare interface WorkflowStatusSettingsProps {
|
|
2884
|
+
workbench: {
|
|
2885
|
+
statuses: WorkbenchStatusRegistry;
|
|
2886
|
+
};
|
|
2887
|
+
}
|
|
2888
|
+
|
|
2721
2889
|
export { }
|