@pstdio/workbench 0.5.0 → 0.7.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 +66 -72
- package/dist/composition-resolver-types-CWykPyEK.js +241 -0
- package/dist/composition-resolver-types-CWykPyEK.js.map +1 -0
- package/dist/extensions.d.ts +380 -29
- package/dist/extensions.js +1366 -883
- package/dist/extensions.js.map +1 -1
- package/dist/file-renderer-view-B6_iR4EN.js +496 -0
- package/dist/file-renderer-view-B6_iR4EN.js.map +1 -0
- package/dist/file-section-navigation-CfYqVObc.js +30 -0
- package/dist/file-section-navigation-CfYqVObc.js.map +1 -0
- package/dist/index.d.ts +305 -17
- package/dist/index.js +2343 -2083
- package/dist/index.js.map +1 -1
- package/dist/layout-types-DMoZz38-.js.map +1 -1
- package/dist/react.d.ts +190 -16
- package/dist/react.js +2473 -2374
- package/dist/react.js.map +1 -1
- package/dist/storage.js +132 -155
- package/dist/storage.js.map +1 -1
- package/dist/testing.d.ts +177 -14
- package/dist/webview-runtime.js +1 -1
- package/dist/webview-runtime.js.map +1 -1
- package/dist/workbench-built-ins-BncLJfQA.js +1175 -0
- package/dist/workbench-built-ins-BncLJfQA.js.map +1 -0
- package/dist/workbench-menu-paths-Bb0ICxeG.js +20 -0
- package/dist/workbench-menu-paths-Bb0ICxeG.js.map +1 -0
- package/package.json +4 -4
- package/dist/context-key-service-B2K9LAec.js +0 -1034
- package/dist/context-key-service-B2K9LAec.js.map +0 -1
- package/dist/file-renderer-view-DrrhYnb_.js +0 -171
- package/dist/file-renderer-view-DrrhYnb_.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
|
@@ -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 role?: WorkbenchWidgetRole;\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 closable: boolean;\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 = Omit<WidgetContribution, \"role\"> & WorkbenchPanelMenusContribution;\n\nexport type WorkbenchSubPanelContribution = Omit<WidgetContribution, \"region\" | \"fallbackRegion\" | \"role\"> & {\n region: WorkbenchPanelRegion;\n fallbackRegion?: WorkbenchPanelRegion;\n} & WorkbenchPanelMenusContribution;\n\nexport type WorkbenchPanelMenuContribution = Omit<WidgetContribution, \"region\" | \"fallbackRegion\" | \"role\"> & {\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 role: WorkbenchWidgetRole;\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 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 pinned?: 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}\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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"}
|
package/dist/react.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { BoxProps } from '@chakra-ui/react';
|
|
|
2
2
|
import { ComponentType } from 'react';
|
|
3
3
|
import { Context } from 'react';
|
|
4
4
|
import { FileIconThemePreferenceOption as FileIconThemePreferenceOption_2 } from '@pstdio/ui';
|
|
5
|
+
import { FileUploadValue } from '@pstdio/ui';
|
|
5
6
|
import { IconProps } from '@chakra-ui/react';
|
|
6
7
|
import { JSX } from 'react/jsx-runtime';
|
|
7
8
|
import { JSXElementConstructor } from 'react';
|
|
@@ -111,7 +112,13 @@ declare interface Command {
|
|
|
111
112
|
params?: CommandParamSchema;
|
|
112
113
|
}
|
|
113
114
|
|
|
115
|
+
export declare interface CommandFilesParamValue {
|
|
116
|
+
refs: string[];
|
|
117
|
+
uploads: FileUploadValue[];
|
|
118
|
+
}
|
|
119
|
+
|
|
114
120
|
declare interface CommandHandler<TArgs = unknown, TResult = unknown> {
|
|
121
|
+
prepareArgs?(args: TArgs, context?: WorkbenchCommandExecutionContext, onArgsChange?: (args: TArgs) => void): TArgs | Promise<TArgs>;
|
|
115
122
|
execute(args: TArgs, context?: WorkbenchCommandExecutionContext): TResult | Promise<TResult>;
|
|
116
123
|
isEnabled?(args: TArgs): boolean;
|
|
117
124
|
isVisible?(args: TArgs): boolean;
|
|
@@ -168,6 +175,8 @@ declare interface CommandParamDescriptor {
|
|
|
168
175
|
options?: CommandParamOption[];
|
|
169
176
|
templateType?: string;
|
|
170
177
|
resourceType?: string;
|
|
178
|
+
accept?: string;
|
|
179
|
+
multiple?: boolean;
|
|
171
180
|
metadata?: Record<string, unknown>;
|
|
172
181
|
}
|
|
173
182
|
|
|
@@ -208,7 +217,7 @@ declare interface CommandParamsRequest {
|
|
|
208
217
|
context?: WorkbenchCommandExecutionContext;
|
|
209
218
|
}
|
|
210
219
|
|
|
211
|
-
export declare type CommandParamValue = string | boolean | string[] | undefined;
|
|
220
|
+
export declare type CommandParamValue = string | boolean | string[] | CommandFilesParamValue | undefined;
|
|
212
221
|
|
|
213
222
|
declare interface CommandRegistry {
|
|
214
223
|
store: WorkbenchStore<CommandRegistryStoreState>;
|
|
@@ -218,6 +227,7 @@ declare interface CommandRegistry {
|
|
|
218
227
|
isCommandEnabled(id: string, args?: unknown): boolean;
|
|
219
228
|
isCommandVisible(id: string, args?: unknown): boolean;
|
|
220
229
|
isCommandToggled(id: string, args?: unknown): boolean;
|
|
230
|
+
prepareCommandArgs(id: string, args: unknown, context?: WorkbenchCommandExecutionContext, onArgsChange?: (args: unknown) => void): Promise<unknown>;
|
|
221
231
|
executeCommand(id: string, args?: unknown, context?: WorkbenchCommandExecutionContext): Promise<unknown>;
|
|
222
232
|
onDidExecuteError(listener: WorkbenchCommandExecutionErrorListener): Disposable_2;
|
|
223
233
|
}
|
|
@@ -341,6 +351,8 @@ declare interface ControlsUpdateValueInput {
|
|
|
341
351
|
resource?: ResourceRef;
|
|
342
352
|
}
|
|
343
353
|
|
|
354
|
+
export declare const createCommandFilesParamValue: (input?: Partial<CommandFilesParamValue>) => CommandFilesParamValue;
|
|
355
|
+
|
|
344
356
|
export declare const createControllerTerminalBridge: (terminal: WorkbenchTerminalController, options?: ControllerTerminalBridgeOptions) => TerminalBridge;
|
|
345
357
|
|
|
346
358
|
export declare const createTreeContextMenuItems: (input: CreateTreeContextMenuItemsInput) => ListRowActionMenuItem[];
|
|
@@ -448,7 +460,7 @@ declare interface DataTableRendererContribution {
|
|
|
448
460
|
emptyDescription?: string;
|
|
449
461
|
executeQuery(context: DataTableRendererQueryContext): Promise<DataTableRendererQueryResult> | DataTableRendererQueryResult;
|
|
450
462
|
subscribe?: (listener: () => void) => Disposable_2 | (() => void);
|
|
451
|
-
|
|
463
|
+
onRowActivate?: (row: DataTableRendererRow) => Promise<void> | void;
|
|
452
464
|
}
|
|
453
465
|
|
|
454
466
|
declare type DataTableRendererImplementation = (input: WorkbenchPanelRenderInput & {
|
|
@@ -575,10 +587,23 @@ declare interface FileIconThemeRegistry {
|
|
|
575
587
|
|
|
576
588
|
declare interface FileRendererContent {
|
|
577
589
|
fileName?: string;
|
|
590
|
+
/** Workspace-relative path shown above the file preview. */
|
|
591
|
+
filePath?: string;
|
|
578
592
|
mimeType?: string;
|
|
579
593
|
content?: string;
|
|
580
594
|
dataUrl?: string;
|
|
581
595
|
placeholder?: string;
|
|
596
|
+
/** Override contribution-level save support for one loaded file. */
|
|
597
|
+
editable?: boolean;
|
|
598
|
+
/** Request Monaco for text that automatic dispatch would open as markdown. */
|
|
599
|
+
textRenderer?: "automatic" | "monaco";
|
|
600
|
+
/** Represent a deliberate no-file selection without an editable blank document. */
|
|
601
|
+
emptyState?: {
|
|
602
|
+
title: string;
|
|
603
|
+
description?: string;
|
|
604
|
+
};
|
|
605
|
+
/** Ordered backing-store revision when one is available. */
|
|
606
|
+
revision?: string;
|
|
582
607
|
}
|
|
583
608
|
|
|
584
609
|
declare interface FileRendererContribution {
|
|
@@ -588,35 +613,53 @@ declare interface FileRendererContribution {
|
|
|
588
613
|
/** Resolve the file's content (and identity) for the bound resource. */
|
|
589
614
|
load(resource: ResourceRef | undefined): Promise<FileRendererContent> | FileRendererContent;
|
|
590
615
|
/** Persist edited text. Absent ⇒ read-only. Never called for images. */
|
|
591
|
-
save?(resource: ResourceRef | undefined, content: string): Promise<
|
|
616
|
+
save?(resource: ResourceRef | undefined, content: string, origin?: FileRendererRefreshOrigin): Promise<FileRendererSaveResult | undefined> | FileRendererSaveResult | void;
|
|
592
617
|
}
|
|
593
618
|
|
|
594
619
|
declare type FileRendererImplementation = (input: WorkbenchPanelRenderInput & {
|
|
595
620
|
fileRendererId: string;
|
|
596
621
|
}) => unknown;
|
|
597
622
|
|
|
598
|
-
declare interface
|
|
623
|
+
declare interface FileRendererRefreshEnvelope {
|
|
624
|
+
resourceUri?: string;
|
|
625
|
+
origin?: FileRendererRefreshOrigin;
|
|
626
|
+
revision?: string;
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
declare interface FileRendererRefreshEvent extends FileRendererRefreshEnvelope {
|
|
599
630
|
fileRendererId: string;
|
|
600
631
|
}
|
|
601
632
|
|
|
602
633
|
declare type FileRendererRefreshListener = (event: FileRendererRefreshEvent) => void;
|
|
603
634
|
|
|
635
|
+
declare interface FileRendererRefreshOrigin {
|
|
636
|
+
rendererId: string;
|
|
637
|
+
instanceId: string;
|
|
638
|
+
operationId: string;
|
|
639
|
+
}
|
|
640
|
+
|
|
604
641
|
declare interface FileRendererRegistry {
|
|
605
642
|
fileRendererStore: WorkbenchStore<FileRendererStoreState>;
|
|
606
643
|
registerFileRenderer(contribution: FileRendererContribution, metadata?: ContributionMetadata): Disposable_2;
|
|
607
644
|
setFileRendererImplementation(impl: FileRendererImplementation): void;
|
|
608
645
|
getFileRenderer(id: string): RegisteredFileRendererContribution | undefined;
|
|
609
646
|
listFileRenderers(): RegisteredFileRendererContribution[];
|
|
610
|
-
refreshFileRenderer(id: string): void;
|
|
647
|
+
refreshFileRenderer(id: string, event?: FileRendererRefreshEnvelope): void;
|
|
611
648
|
onDidRefreshFileRenderer(listener: FileRendererRefreshListener): Disposable_2;
|
|
612
649
|
}
|
|
613
650
|
|
|
651
|
+
declare interface FileRendererSaveResult {
|
|
652
|
+
revision?: string;
|
|
653
|
+
}
|
|
654
|
+
|
|
614
655
|
declare interface FileRendererStoreState {
|
|
615
656
|
renderers: Record<string, RegisteredFileRendererContribution>;
|
|
616
657
|
}
|
|
617
658
|
|
|
618
659
|
declare interface HistoryController {
|
|
619
660
|
store: WorkbenchStore<HistoryStoreState>;
|
|
661
|
+
/** Snapshot the history for a compound navigation; the returned function restores it. */
|
|
662
|
+
createCheckpoint(): () => void;
|
|
620
663
|
goBack(): HistoryEntry | undefined;
|
|
621
664
|
goForward(): HistoryEntry | undefined;
|
|
622
665
|
goPrevious(): HistoryEntry | undefined;
|
|
@@ -638,12 +681,16 @@ declare interface HistoryStoreState {
|
|
|
638
681
|
hydrating: boolean;
|
|
639
682
|
}
|
|
640
683
|
|
|
684
|
+
export declare const isCommandFilesParamValue: (value: unknown) => value is CommandFilesParamValue;
|
|
685
|
+
|
|
641
686
|
export declare const isSettingsScopeVisible: (scope: SettingsScope | undefined, hasProjectScope: boolean) => boolean;
|
|
642
687
|
|
|
643
688
|
declare interface KanbanRendererContribution<TRow extends KanbanRendererRow = KanbanRendererRow> {
|
|
644
689
|
id: string;
|
|
645
690
|
title: string;
|
|
646
691
|
resourceKind?: string;
|
|
692
|
+
/** Host-owned scope for persisted display settings. */
|
|
693
|
+
storageScope?: string;
|
|
647
694
|
/**
|
|
648
695
|
* Declarative attribute schema. The renderer dispatches filter / group /
|
|
649
696
|
* sort / display / inline-edit behavior on each descriptor's `type.kind`.
|
|
@@ -671,8 +718,8 @@ declare interface KanbanRendererContribution<TRow extends KanbanRendererRow = Ka
|
|
|
671
718
|
*/
|
|
672
719
|
executeQuery(state: KanbanRendererQueryState): Promise<TRow[]> | TRow[];
|
|
673
720
|
subscribe?: (listener: () => void) => Disposable_2 | (() => void);
|
|
674
|
-
/** Row
|
|
675
|
-
|
|
721
|
+
/** Row activation surfaced by the renderer (mirrored from <KanbanRenderer>). */
|
|
722
|
+
onRowActivate?: (row: TRow) => Promise<void> | void;
|
|
676
723
|
/** Per-row right-click context menu actions (mirrored from <KanbanRenderer>). */
|
|
677
724
|
getRowContextMenuActions?: (row: TRow) => ResourceContextAction[];
|
|
678
725
|
/**
|
|
@@ -766,7 +813,7 @@ declare interface KanbanRendererRow {
|
|
|
766
813
|
title: string;
|
|
767
814
|
/**
|
|
768
815
|
* Optional navigation handle. When set, the renderer's default click handler
|
|
769
|
-
* routes through the contribution's
|
|
816
|
+
* routes through the contribution's onRowActivate (which typically opens the
|
|
770
817
|
* resource via the workbench).
|
|
771
818
|
*/
|
|
772
819
|
resource?: unknown;
|
|
@@ -871,6 +918,16 @@ declare interface LayoutModel {
|
|
|
871
918
|
carryRegionState?: readonly WorkbenchRegion_2[];
|
|
872
919
|
}): void;
|
|
873
920
|
getPersistenceScope(): LayoutScope | undefined;
|
|
921
|
+
/** True when the current persistence scope already stores a layout. A new scope returns false. */
|
|
922
|
+
/** Whether anything is stored for the active scope right now. */
|
|
923
|
+
hasPersistedLayout(): boolean;
|
|
924
|
+
/**
|
|
925
|
+
* Whether the active scope was entered with a layout the user already had. Unlike
|
|
926
|
+
* `hasPersistedLayout`, writes made while entering a mode do not change the answer.
|
|
927
|
+
*/
|
|
928
|
+
enteredWithPersistedLayout(): boolean;
|
|
929
|
+
/** Moves owned panel menus beside their owner's current region and removes orphan menus. */
|
|
930
|
+
reconcilePanelMenus(): void;
|
|
874
931
|
onWillChangePersistenceScope(listener: (scope: LayoutScope | undefined) => void): {
|
|
875
932
|
dispose(): void;
|
|
876
933
|
};
|
|
@@ -987,6 +1044,7 @@ declare interface OpenWidgetInput {
|
|
|
987
1044
|
resource?: ResourceRef;
|
|
988
1045
|
title?: string;
|
|
989
1046
|
region?: WorkbenchRegion_2;
|
|
1047
|
+
role?: WorkbenchWidgetRole;
|
|
990
1048
|
ownerId?: string;
|
|
991
1049
|
source?: ContributionSource;
|
|
992
1050
|
pinned?: boolean;
|
|
@@ -1004,7 +1062,9 @@ declare interface OpenWorkbenchPanelInput {
|
|
|
1004
1062
|
resource?: ResourceRef;
|
|
1005
1063
|
title?: string;
|
|
1006
1064
|
region?: WorkbenchRegion_2;
|
|
1065
|
+
role?: WorkbenchWidgetRole;
|
|
1007
1066
|
pinned?: boolean;
|
|
1067
|
+
closable?: boolean;
|
|
1008
1068
|
mountStrategy?: WorkbenchPanelMountStrategy;
|
|
1009
1069
|
hiddenByDefault?: boolean;
|
|
1010
1070
|
tab?: WorkbenchPanelTab;
|
|
@@ -1078,7 +1138,7 @@ declare interface PreferenceScopeRef {
|
|
|
1078
1138
|
declare type PreferenceValue = boolean | number | string | string[] | number[] | boolean[] | Record<string, unknown>;
|
|
1079
1139
|
|
|
1080
1140
|
/** Narrows an editor value back to what a command param can carry. */
|
|
1081
|
-
export declare const readCommandParamValue: (value: ParamValue) => CommandParamValue;
|
|
1141
|
+
export declare const readCommandParamValue: (value: ParamValue, entry?: CommandParamEntry) => CommandParamValue;
|
|
1082
1142
|
|
|
1083
1143
|
declare interface RegisteredCommand extends RegisteredContributionMetadata {
|
|
1084
1144
|
command: Command;
|
|
@@ -1141,7 +1201,6 @@ declare type RegisteredWidgetContribution = Omit<WidgetContribution, "priority"
|
|
|
1141
1201
|
ownedPanelMenuIds?: readonly string[];
|
|
1142
1202
|
singleton: boolean;
|
|
1143
1203
|
reuse: WidgetReusePolicy;
|
|
1144
|
-
role: WorkbenchWidgetRole;
|
|
1145
1204
|
} & RegisteredContributionMetadata;
|
|
1146
1205
|
|
|
1147
1206
|
declare interface RegisteredWorkbenchNotification extends RegisteredContributionMetadata {
|
|
@@ -1157,7 +1216,9 @@ declare interface RegisteredWorkbenchNotification extends RegisteredContribution
|
|
|
1157
1216
|
|
|
1158
1217
|
declare type ResolvedResourceHierarchyProvider = Required<ResourceHierarchyProvider>;
|
|
1159
1218
|
|
|
1160
|
-
declare type ResolvedResourcePresenter =
|
|
1219
|
+
declare type ResolvedResourcePresenter = Omit<ResourcePresenter, "priority"> & {
|
|
1220
|
+
priority: number;
|
|
1221
|
+
};
|
|
1161
1222
|
|
|
1162
1223
|
declare interface ResourceBrowseEntry {
|
|
1163
1224
|
resource: ResourceRef;
|
|
@@ -1179,6 +1240,14 @@ declare interface ResourceContextAction {
|
|
|
1179
1240
|
separatorBefore?: boolean;
|
|
1180
1241
|
}
|
|
1181
1242
|
|
|
1243
|
+
declare interface ResourceHierarchyCycle {
|
|
1244
|
+
code: typeof resourceHierarchyCycleCode;
|
|
1245
|
+
path: ResourceRef[];
|
|
1246
|
+
repeatedUri: string;
|
|
1247
|
+
}
|
|
1248
|
+
|
|
1249
|
+
declare const resourceHierarchyCycleCode = "resource_hierarchy_cycle";
|
|
1250
|
+
|
|
1182
1251
|
declare interface ResourceHierarchyProvider {
|
|
1183
1252
|
id: string;
|
|
1184
1253
|
priority?: number;
|
|
@@ -1211,6 +1280,7 @@ declare interface ResourcePresenter {
|
|
|
1211
1280
|
priority?: number;
|
|
1212
1281
|
canOpen(resource: ResourceRef): boolean;
|
|
1213
1282
|
open(resource: ResourceRef, input: OpenResourceInput): WorkbenchPanelInstance | Promise<WorkbenchPanelInstance>;
|
|
1283
|
+
afterOpen?(resource: ResourceRef, instance: WorkbenchPanelInstance, input: OpenResourceInput): void;
|
|
1214
1284
|
}
|
|
1215
1285
|
|
|
1216
1286
|
declare interface ResourceProvider {
|
|
@@ -1251,6 +1321,7 @@ declare interface ResourceRegistry {
|
|
|
1251
1321
|
registerHierarchyProvider(provider: ResourceHierarchyProvider): Disposable_2;
|
|
1252
1322
|
listHierarchyProviders(): ResolvedResourceHierarchyProvider[];
|
|
1253
1323
|
walkHierarchy(resource: ResourceRef | undefined): ResourceRef[];
|
|
1324
|
+
onDidDetectHierarchyCycle(listener: (cycle: ResourceHierarchyCycle) => void): Disposable_2;
|
|
1254
1325
|
isOpeningResource(): boolean;
|
|
1255
1326
|
openResource(resource: ResourceRef, input?: OpenResourceInput): Promise<WorkbenchPanelInstance>;
|
|
1256
1327
|
onDidOpenResource(listener: (resource: ResourceRef) => void): Disposable_2;
|
|
@@ -1440,11 +1511,13 @@ declare interface TreeNode {
|
|
|
1440
1511
|
target?: NavigationTarget;
|
|
1441
1512
|
/** Visual row variant for non-data rows such as placeholders. */
|
|
1442
1513
|
rowVariant?: TreeNodeRowVariant;
|
|
1514
|
+
inlineInput?: TreeNodeInlineInput;
|
|
1443
1515
|
actions?: TreeAction[];
|
|
1444
1516
|
contextMenuActions?: TreeAction[];
|
|
1445
1517
|
contextMenuPath?: MenuPath;
|
|
1446
1518
|
menuPath?: MenuPath;
|
|
1447
1519
|
menuPlacement?: "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right-start" | "left-start";
|
|
1520
|
+
showContextMenuTrigger?: boolean;
|
|
1448
1521
|
collapsible?: boolean;
|
|
1449
1522
|
disabled?: boolean;
|
|
1450
1523
|
children?: TreeNode[];
|
|
@@ -1455,6 +1528,18 @@ declare interface TreeNode {
|
|
|
1455
1528
|
canHide?: boolean;
|
|
1456
1529
|
/** When false, the node stays fixed within its Sidenav group. */
|
|
1457
1530
|
canReorder?: boolean;
|
|
1531
|
+
/** Allow this node to be moved to another tree location. */
|
|
1532
|
+
canDrag?: boolean;
|
|
1533
|
+
/** Allow movable nodes to be dropped on this node. */
|
|
1534
|
+
canDrop?: boolean;
|
|
1535
|
+
}
|
|
1536
|
+
|
|
1537
|
+
declare interface TreeNodeInlineInput {
|
|
1538
|
+
ariaLabel: string;
|
|
1539
|
+
defaultValue?: string;
|
|
1540
|
+
placeholder?: string;
|
|
1541
|
+
onCommit(value: string): Promise<void> | void;
|
|
1542
|
+
onCancel?(): void;
|
|
1458
1543
|
}
|
|
1459
1544
|
|
|
1460
1545
|
declare type TreeNodeRowVariant = "empty-state";
|
|
@@ -1463,6 +1548,8 @@ declare interface TreeRendererContribution {
|
|
|
1463
1548
|
id: string;
|
|
1464
1549
|
title: string;
|
|
1465
1550
|
icon?: string;
|
|
1551
|
+
searchable?: boolean;
|
|
1552
|
+
searchPlaceholder?: string;
|
|
1466
1553
|
when?: string;
|
|
1467
1554
|
defaultExpandedSectionIds?: string[];
|
|
1468
1555
|
defaultExpandedNodeIds?: string[];
|
|
@@ -1470,6 +1557,7 @@ declare interface TreeRendererContribution {
|
|
|
1470
1557
|
getHeader?(ctx: TreeContext): Promise<TreeNode[]> | TreeNode[];
|
|
1471
1558
|
getFooter?(ctx: TreeContext): Promise<TreeNode[]> | TreeNode[];
|
|
1472
1559
|
getChildren(node: TreeNode, ctx: TreeContext): Promise<TreeNode[]> | TreeNode[];
|
|
1560
|
+
moveNode?(source: TreeNode, target: TreeNode | undefined, ctx: TreeContext): Promise<void> | void;
|
|
1473
1561
|
}
|
|
1474
1562
|
|
|
1475
1563
|
declare type TreeRendererImplementation = (input: WorkbenchPanelRenderInput & {
|
|
@@ -1576,7 +1664,6 @@ declare interface WidgetContribution {
|
|
|
1576
1664
|
priority?: number;
|
|
1577
1665
|
rendererId: string;
|
|
1578
1666
|
openCommandId?: string;
|
|
1579
|
-
role?: WorkbenchWidgetRole;
|
|
1580
1667
|
eligibleLocations?: WorkbenchLocationEligibility;
|
|
1581
1668
|
panelMenuOwner?: WorkbenchPanelMenuOwner;
|
|
1582
1669
|
tab?: WorkbenchWidgetTab;
|
|
@@ -1713,6 +1800,20 @@ declare interface WorkbenchCommandParamsRequest {
|
|
|
1713
1800
|
context?: WorkbenchCommandExecutionContext;
|
|
1714
1801
|
}
|
|
1715
1802
|
|
|
1803
|
+
declare interface WorkbenchCompositionAddablePanel extends WorkbenchModeAddablePanel {
|
|
1804
|
+
contribution: RegisteredWidgetContribution;
|
|
1805
|
+
}
|
|
1806
|
+
|
|
1807
|
+
declare interface WorkbenchCompositionController {
|
|
1808
|
+
panelsFor(region: WorkbenchPanelRegion): WorkbenchCompositionRegionPanels;
|
|
1809
|
+
}
|
|
1810
|
+
|
|
1811
|
+
declare interface WorkbenchCompositionRegionPanels {
|
|
1812
|
+
open: readonly WorkbenchWidgetPlacement[];
|
|
1813
|
+
addable: readonly WorkbenchCompositionAddablePanel[];
|
|
1814
|
+
closable: readonly string[];
|
|
1815
|
+
}
|
|
1816
|
+
|
|
1716
1817
|
declare interface WorkbenchCore extends WorkbenchCoreContributionContext {
|
|
1717
1818
|
host: WorkbenchHost;
|
|
1718
1819
|
registerModule(module: WorkbenchModuleContribution): Disposable_2;
|
|
@@ -1724,6 +1825,7 @@ declare interface WorkbenchCoreContributionContext {
|
|
|
1724
1825
|
commandPalette: WorkbenchCommandPaletteController;
|
|
1725
1826
|
commandPaletteResources: CommandPaletteResourceRegistry;
|
|
1726
1827
|
commands: CommandRegistry;
|
|
1828
|
+
composition: WorkbenchCompositionController;
|
|
1727
1829
|
context: ContextKeyService;
|
|
1728
1830
|
focus: WorkbenchFocusController;
|
|
1729
1831
|
history: HistoryController;
|
|
@@ -1732,6 +1834,7 @@ declare interface WorkbenchCoreContributionContext {
|
|
|
1732
1834
|
layout: WorkbenchLayoutModel;
|
|
1733
1835
|
modes: WorkbenchModeRegistry;
|
|
1734
1836
|
navigation: NavigationRegistry;
|
|
1837
|
+
navigator: WorkbenchNavigator;
|
|
1735
1838
|
notifications: NotificationRegistry;
|
|
1736
1839
|
panels: WorkbenchPanelsController;
|
|
1737
1840
|
preferences: PreferenceRegistry;
|
|
@@ -1859,7 +1962,7 @@ declare interface WorkbenchLayoutStoreState {
|
|
|
1859
1962
|
placeholders: Partial<Record<WorkbenchRegion_2, RegisteredPlaceholderContribution>>;
|
|
1860
1963
|
}
|
|
1861
1964
|
|
|
1862
|
-
declare type WorkbenchLocationContribution =
|
|
1965
|
+
declare type WorkbenchLocationContribution = WidgetContribution & WorkbenchPanelMenusContribution;
|
|
1863
1966
|
|
|
1864
1967
|
declare interface WorkbenchLocationEligibility {
|
|
1865
1968
|
modeIds?: string[];
|
|
@@ -1900,15 +2003,31 @@ declare type WorkbenchModeActivationContext = WorkbenchCoreContributionContext;
|
|
|
1900
2003
|
|
|
1901
2004
|
declare type WorkbenchModeActivationResult = Disposable_2 | readonly Disposable_2[] | undefined;
|
|
1902
2005
|
|
|
2006
|
+
declare interface WorkbenchModeAddablePanel {
|
|
2007
|
+
panelId: string;
|
|
2008
|
+
region: WorkbenchPanelRegion;
|
|
2009
|
+
allowedRegions?: readonly WorkbenchRegion_2[];
|
|
2010
|
+
pinned?: boolean;
|
|
2011
|
+
}
|
|
2012
|
+
|
|
2013
|
+
declare interface WorkbenchModeAddablePanelContext {
|
|
2014
|
+
layout: WorkbenchLayout;
|
|
2015
|
+
resource?: ResourceRef;
|
|
2016
|
+
}
|
|
2017
|
+
|
|
1903
2018
|
declare type WorkbenchModeChangeListener = () => void;
|
|
1904
2019
|
|
|
1905
2020
|
declare interface WorkbenchModeContribution {
|
|
1906
2021
|
id: string;
|
|
1907
2022
|
label?: string;
|
|
1908
2023
|
panels?: readonly WorkbenchPanelRegion[];
|
|
2024
|
+
resourceKinds?: readonly string[];
|
|
2025
|
+
defaultResource?: ResourceRef | (() => Promise<ResourceRef | undefined> | ResourceRef | undefined);
|
|
2026
|
+
listAddablePanels?(context: WorkbenchModeAddablePanelContext): readonly WorkbenchModeAddablePanel[];
|
|
1909
2027
|
activate(ctx: WorkbenchModeActivationContext): WorkbenchModeActivationResult;
|
|
1910
2028
|
seed?(ctx: WorkbenchModeActivationContext): void;
|
|
1911
2029
|
enter?(ctx: WorkbenchModeActivationContext): WorkbenchModeActivationResult;
|
|
2030
|
+
reconcile?(ctx: WorkbenchModeActivationContext): void;
|
|
1912
2031
|
}
|
|
1913
2032
|
|
|
1914
2033
|
declare interface WorkbenchModeRegistry {
|
|
@@ -1955,6 +2074,14 @@ export declare interface WorkbenchModuleHostRegistration {
|
|
|
1955
2074
|
disposable: Disposable_2;
|
|
1956
2075
|
}
|
|
1957
2076
|
|
|
2077
|
+
declare interface WorkbenchNavigationCommit {
|
|
2078
|
+
modeId: string | undefined;
|
|
2079
|
+
resource: ResourceRef | undefined;
|
|
2080
|
+
replaceActive: boolean;
|
|
2081
|
+
}
|
|
2082
|
+
|
|
2083
|
+
declare type WorkbenchNavigationDiagnosticCode = "navigation_mode_missing" | "navigation_resource_missing" | "navigation_resource_incompatible" | "navigation_default_missing" | "navigation_target_stale";
|
|
2084
|
+
|
|
1958
2085
|
declare interface WorkbenchNavigationEntry {
|
|
1959
2086
|
entryId: string;
|
|
1960
2087
|
recordedAt: number;
|
|
@@ -1969,6 +2096,53 @@ declare interface WorkbenchNavigationEntry {
|
|
|
1969
2096
|
closedSubPanel?: WorkbenchClosedSubPanel;
|
|
1970
2097
|
}
|
|
1971
2098
|
|
|
2099
|
+
declare type WorkbenchNavigationResult = {
|
|
2100
|
+
ok: true;
|
|
2101
|
+
modeId: string | undefined;
|
|
2102
|
+
resource: ResourceRef | undefined;
|
|
2103
|
+
} | {
|
|
2104
|
+
ok: false;
|
|
2105
|
+
code: WorkbenchNavigationDiagnosticCode;
|
|
2106
|
+
message: string;
|
|
2107
|
+
};
|
|
2108
|
+
|
|
2109
|
+
declare interface WorkbenchNavigationTarget {
|
|
2110
|
+
modeId?: string;
|
|
2111
|
+
resource?: ResourceRef;
|
|
2112
|
+
replaceActive?: boolean;
|
|
2113
|
+
}
|
|
2114
|
+
|
|
2115
|
+
declare interface WorkbenchNavigator {
|
|
2116
|
+
configure(hooks: WorkbenchNavigatorHostHooks): void;
|
|
2117
|
+
getSelectedResource(): ResourceRef | undefined;
|
|
2118
|
+
open(target: WorkbenchNavigationTarget): Promise<WorkbenchNavigationResult>;
|
|
2119
|
+
commitContext(input: WorkbenchNavigatorCommitInput): WorkbenchNavigationResult;
|
|
2120
|
+
getLastResource(projectId: string | undefined, modeId: string): ResourceRef | undefined;
|
|
2121
|
+
forgetResource(uri: string): void;
|
|
2122
|
+
onDidCommit(listener: (commit: WorkbenchNavigationCommit) => void): {
|
|
2123
|
+
dispose(): void;
|
|
2124
|
+
};
|
|
2125
|
+
}
|
|
2126
|
+
|
|
2127
|
+
declare interface WorkbenchNavigatorCommitInput {
|
|
2128
|
+
modeId?: string | null;
|
|
2129
|
+
resource?: ResourceRef | null;
|
|
2130
|
+
replaceActive?: boolean;
|
|
2131
|
+
present?: boolean;
|
|
2132
|
+
}
|
|
2133
|
+
|
|
2134
|
+
declare interface WorkbenchNavigatorHostHooks {
|
|
2135
|
+
getProjectId?(): string | undefined;
|
|
2136
|
+
getSelectedResource?(): ResourceRef | undefined;
|
|
2137
|
+
interpretSelection?(resource: ResourceRef): ResourceRef | undefined;
|
|
2138
|
+
applySelection?(resource: ResourceRef | undefined): void;
|
|
2139
|
+
applyScope?(commit: WorkbenchNavigationCommit): void;
|
|
2140
|
+
applyBreadcrumb?(resource: ResourceRef | undefined): void;
|
|
2141
|
+
presentResource?(resource: ResourceRef, input: {
|
|
2142
|
+
replaceActive: boolean;
|
|
2143
|
+
}): Promise<unknown> | unknown;
|
|
2144
|
+
}
|
|
2145
|
+
|
|
1972
2146
|
declare interface WorkbenchNotification {
|
|
1973
2147
|
id?: string;
|
|
1974
2148
|
level: WorkbenchNotificationLevel;
|
|
@@ -2021,6 +2195,7 @@ export declare interface WorkbenchOverlayWidgetConfig {
|
|
|
2021
2195
|
scrollBehavior?: "inside" | "outside";
|
|
2022
2196
|
closeOnEscape?: boolean;
|
|
2023
2197
|
closeOnInteractOutside?: boolean;
|
|
2198
|
+
/** Controls dialog semantics. Every workbench overlay blocks background pointer input. */
|
|
2024
2199
|
modal?: boolean;
|
|
2025
2200
|
preventScroll?: boolean;
|
|
2026
2201
|
trapFocus?: boolean;
|
|
@@ -2041,7 +2216,6 @@ declare interface WorkbenchPanelContribution {
|
|
|
2041
2216
|
region: WorkbenchRegion_2;
|
|
2042
2217
|
fallbackRegion?: WorkbenchRegion_2;
|
|
2043
2218
|
rendererId: string;
|
|
2044
|
-
closable: boolean;
|
|
2045
2219
|
singleton?: boolean;
|
|
2046
2220
|
reuse?: WorkbenchPanelReusePolicy;
|
|
2047
2221
|
mountStrategy?: WorkbenchPanelMountStrategy;
|
|
@@ -2097,7 +2271,7 @@ declare interface WorkbenchPanelInstance_2 {
|
|
|
2097
2271
|
tab?: WorkbenchPanelTab_2;
|
|
2098
2272
|
}
|
|
2099
2273
|
|
|
2100
|
-
declare type WorkbenchPanelMenuContribution = Omit<WidgetContribution, "region" | "fallbackRegion"
|
|
2274
|
+
declare type WorkbenchPanelMenuContribution = Omit<WidgetContribution, "region" | "fallbackRegion"> & {
|
|
2101
2275
|
region: WorkbenchPanelMenuRegion;
|
|
2102
2276
|
fallbackRegion?: WorkbenchPanelMenuRegion;
|
|
2103
2277
|
};
|
|
@@ -2355,7 +2529,7 @@ declare type WorkbenchStoreSelector<TState, TValue> = (state: TState) => TValue;
|
|
|
2355
2529
|
|
|
2356
2530
|
declare type WorkbenchStoreSelectorListener<TValue> = (value: TValue, previousValue: TValue) => void;
|
|
2357
2531
|
|
|
2358
|
-
declare type WorkbenchSubPanelContribution = Omit<WidgetContribution, "region" | "fallbackRegion"
|
|
2532
|
+
declare type WorkbenchSubPanelContribution = Omit<WidgetContribution, "region" | "fallbackRegion"> & {
|
|
2359
2533
|
region: WorkbenchPanelRegion;
|
|
2360
2534
|
fallbackRegion?: WorkbenchPanelRegion;
|
|
2361
2535
|
} & WorkbenchPanelMenusContribution;
|