@pstdio/workbench 0.4.0 → 0.6.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 +359 -43
- package/dist/extensions.js +1595 -1044
- package/dist/extensions.js.map +1 -1
- package/dist/file-renderer-view-zpunbE4I.js +432 -0
- package/dist/file-renderer-view-zpunbE4I.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 +287 -19
- package/dist/index.js +2323 -2011
- package/dist/index.js.map +1 -1
- package/dist/layout-types-DMoZz38-.js.map +1 -1
- package/dist/react.d.ts +157 -16
- package/dist/react.js +2675 -2736
- package/dist/react.js.map +1 -1
- package/dist/storage.d.ts +96 -2
- package/dist/storage.js +173 -115
- package/dist/storage.js.map +1 -1
- package/dist/testing.d.ts +146 -14
- package/dist/webview-runtime.js +1 -1
- package/dist/webview-runtime.js.map +1 -1
- package/dist/workbench-built-ins-BtgeB274.js +1171 -0
- package/dist/workbench-built-ins-BtgeB274.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 +3 -3
- package/dist/context-key-service-W4QEfVdN.js +0 -1031
- package/dist/context-key-service-W4QEfVdN.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 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 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: \"activate-or-open\"; position?: WorkbenchTabPosition }\n | { kind: \"replace-active\" }\n | { kind: \"replace-panel\"; instanceId: string }\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
|
@@ -8,6 +8,7 @@ import { JSXElementConstructor } from 'react';
|
|
|
8
8
|
import { ListRowActionMenuItem } from '@pstdio/ui';
|
|
9
9
|
import { Param } from '@pstdio/ui';
|
|
10
10
|
import { ParamEditorProps } from '@pstdio/ui';
|
|
11
|
+
import { ParamValue } from '@pstdio/ui';
|
|
11
12
|
import { ReactElement } from 'react';
|
|
12
13
|
import { ReactNode } from 'react';
|
|
13
14
|
import { ReactPortal } from 'react';
|
|
@@ -185,9 +186,13 @@ export declare interface CommandParamFieldProps {
|
|
|
185
186
|
|
|
186
187
|
export declare type CommandParamFieldRenderer = (props: CommandParamFieldProps) => ReactNode;
|
|
187
188
|
|
|
189
|
+
/** Required params carry the marker in their name — the editor has no required state. */
|
|
190
|
+
export declare const commandParamName: (entry: CommandParamEntry) => string;
|
|
191
|
+
|
|
188
192
|
declare interface CommandParamOption {
|
|
189
193
|
label: string;
|
|
190
194
|
value: string;
|
|
195
|
+
icon?: string;
|
|
191
196
|
}
|
|
192
197
|
|
|
193
198
|
declare type CommandParamSchema = Record<string, CommandParamDescriptor>;
|
|
@@ -443,7 +448,7 @@ declare interface DataTableRendererContribution {
|
|
|
443
448
|
emptyDescription?: string;
|
|
444
449
|
executeQuery(context: DataTableRendererQueryContext): Promise<DataTableRendererQueryResult> | DataTableRendererQueryResult;
|
|
445
450
|
subscribe?: (listener: () => void) => Disposable_2 | (() => void);
|
|
446
|
-
|
|
451
|
+
onRowActivate?: (row: DataTableRendererRow) => Promise<void> | void;
|
|
447
452
|
}
|
|
448
453
|
|
|
449
454
|
declare type DataTableRendererImplementation = (input: WorkbenchPanelRenderInput & {
|
|
@@ -574,6 +579,8 @@ declare interface FileRendererContent {
|
|
|
574
579
|
content?: string;
|
|
575
580
|
dataUrl?: string;
|
|
576
581
|
placeholder?: string;
|
|
582
|
+
/** Ordered backing-store revision when one is available. */
|
|
583
|
+
revision?: string;
|
|
577
584
|
}
|
|
578
585
|
|
|
579
586
|
declare interface FileRendererContribution {
|
|
@@ -583,35 +590,53 @@ declare interface FileRendererContribution {
|
|
|
583
590
|
/** Resolve the file's content (and identity) for the bound resource. */
|
|
584
591
|
load(resource: ResourceRef | undefined): Promise<FileRendererContent> | FileRendererContent;
|
|
585
592
|
/** Persist edited text. Absent ⇒ read-only. Never called for images. */
|
|
586
|
-
save?(resource: ResourceRef | undefined, content: string): Promise<
|
|
593
|
+
save?(resource: ResourceRef | undefined, content: string, origin?: FileRendererRefreshOrigin): Promise<FileRendererSaveResult | undefined> | FileRendererSaveResult | void;
|
|
587
594
|
}
|
|
588
595
|
|
|
589
596
|
declare type FileRendererImplementation = (input: WorkbenchPanelRenderInput & {
|
|
590
597
|
fileRendererId: string;
|
|
591
598
|
}) => unknown;
|
|
592
599
|
|
|
593
|
-
declare interface
|
|
600
|
+
declare interface FileRendererRefreshEnvelope {
|
|
601
|
+
resourceUri?: string;
|
|
602
|
+
origin?: FileRendererRefreshOrigin;
|
|
603
|
+
revision?: string;
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
declare interface FileRendererRefreshEvent extends FileRendererRefreshEnvelope {
|
|
594
607
|
fileRendererId: string;
|
|
595
608
|
}
|
|
596
609
|
|
|
597
610
|
declare type FileRendererRefreshListener = (event: FileRendererRefreshEvent) => void;
|
|
598
611
|
|
|
612
|
+
declare interface FileRendererRefreshOrigin {
|
|
613
|
+
rendererId: string;
|
|
614
|
+
instanceId: string;
|
|
615
|
+
operationId: string;
|
|
616
|
+
}
|
|
617
|
+
|
|
599
618
|
declare interface FileRendererRegistry {
|
|
600
619
|
fileRendererStore: WorkbenchStore<FileRendererStoreState>;
|
|
601
620
|
registerFileRenderer(contribution: FileRendererContribution, metadata?: ContributionMetadata): Disposable_2;
|
|
602
621
|
setFileRendererImplementation(impl: FileRendererImplementation): void;
|
|
603
622
|
getFileRenderer(id: string): RegisteredFileRendererContribution | undefined;
|
|
604
623
|
listFileRenderers(): RegisteredFileRendererContribution[];
|
|
605
|
-
refreshFileRenderer(id: string): void;
|
|
624
|
+
refreshFileRenderer(id: string, event?: FileRendererRefreshEnvelope): void;
|
|
606
625
|
onDidRefreshFileRenderer(listener: FileRendererRefreshListener): Disposable_2;
|
|
607
626
|
}
|
|
608
627
|
|
|
628
|
+
declare interface FileRendererSaveResult {
|
|
629
|
+
revision?: string;
|
|
630
|
+
}
|
|
631
|
+
|
|
609
632
|
declare interface FileRendererStoreState {
|
|
610
633
|
renderers: Record<string, RegisteredFileRendererContribution>;
|
|
611
634
|
}
|
|
612
635
|
|
|
613
636
|
declare interface HistoryController {
|
|
614
637
|
store: WorkbenchStore<HistoryStoreState>;
|
|
638
|
+
/** Snapshot the history for a compound navigation; the returned function restores it. */
|
|
639
|
+
createCheckpoint(): () => void;
|
|
615
640
|
goBack(): HistoryEntry | undefined;
|
|
616
641
|
goForward(): HistoryEntry | undefined;
|
|
617
642
|
goPrevious(): HistoryEntry | undefined;
|
|
@@ -639,6 +664,8 @@ declare interface KanbanRendererContribution<TRow extends KanbanRendererRow = Ka
|
|
|
639
664
|
id: string;
|
|
640
665
|
title: string;
|
|
641
666
|
resourceKind?: string;
|
|
667
|
+
/** Host-owned scope for persisted display settings. */
|
|
668
|
+
storageScope?: string;
|
|
642
669
|
/**
|
|
643
670
|
* Declarative attribute schema. The renderer dispatches filter / group /
|
|
644
671
|
* sort / display / inline-edit behavior on each descriptor's `type.kind`.
|
|
@@ -666,8 +693,8 @@ declare interface KanbanRendererContribution<TRow extends KanbanRendererRow = Ka
|
|
|
666
693
|
*/
|
|
667
694
|
executeQuery(state: KanbanRendererQueryState): Promise<TRow[]> | TRow[];
|
|
668
695
|
subscribe?: (listener: () => void) => Disposable_2 | (() => void);
|
|
669
|
-
/** Row
|
|
670
|
-
|
|
696
|
+
/** Row activation surfaced by the renderer (mirrored from <KanbanRenderer>). */
|
|
697
|
+
onRowActivate?: (row: TRow) => Promise<void> | void;
|
|
671
698
|
/** Per-row right-click context menu actions (mirrored from <KanbanRenderer>). */
|
|
672
699
|
getRowContextMenuActions?: (row: TRow) => ResourceContextAction[];
|
|
673
700
|
/**
|
|
@@ -761,7 +788,7 @@ declare interface KanbanRendererRow {
|
|
|
761
788
|
title: string;
|
|
762
789
|
/**
|
|
763
790
|
* Optional navigation handle. When set, the renderer's default click handler
|
|
764
|
-
* routes through the contribution's
|
|
791
|
+
* routes through the contribution's onRowActivate (which typically opens the
|
|
765
792
|
* resource via the workbench).
|
|
766
793
|
*/
|
|
767
794
|
resource?: unknown;
|
|
@@ -866,6 +893,16 @@ declare interface LayoutModel {
|
|
|
866
893
|
carryRegionState?: readonly WorkbenchRegion_2[];
|
|
867
894
|
}): void;
|
|
868
895
|
getPersistenceScope(): LayoutScope | undefined;
|
|
896
|
+
/** True when the current persistence scope already stores a layout. A new scope returns false. */
|
|
897
|
+
/** Whether anything is stored for the active scope right now. */
|
|
898
|
+
hasPersistedLayout(): boolean;
|
|
899
|
+
/**
|
|
900
|
+
* Whether the active scope was entered with a layout the user already had. Unlike
|
|
901
|
+
* `hasPersistedLayout`, writes made while entering a mode do not change the answer.
|
|
902
|
+
*/
|
|
903
|
+
enteredWithPersistedLayout(): boolean;
|
|
904
|
+
/** Moves owned panel menus beside their owner's current region and removes orphan menus. */
|
|
905
|
+
reconcilePanelMenus(): void;
|
|
869
906
|
onWillChangePersistenceScope(listener: (scope: LayoutScope | undefined) => void): {
|
|
870
907
|
dispose(): void;
|
|
871
908
|
};
|
|
@@ -982,6 +1019,7 @@ declare interface OpenWidgetInput {
|
|
|
982
1019
|
resource?: ResourceRef;
|
|
983
1020
|
title?: string;
|
|
984
1021
|
region?: WorkbenchRegion_2;
|
|
1022
|
+
role?: WorkbenchWidgetRole;
|
|
985
1023
|
ownerId?: string;
|
|
986
1024
|
source?: ContributionSource;
|
|
987
1025
|
pinned?: boolean;
|
|
@@ -999,7 +1037,9 @@ declare interface OpenWorkbenchPanelInput {
|
|
|
999
1037
|
resource?: ResourceRef;
|
|
1000
1038
|
title?: string;
|
|
1001
1039
|
region?: WorkbenchRegion_2;
|
|
1040
|
+
role?: WorkbenchWidgetRole;
|
|
1002
1041
|
pinned?: boolean;
|
|
1042
|
+
closable?: boolean;
|
|
1003
1043
|
mountStrategy?: WorkbenchPanelMountStrategy;
|
|
1004
1044
|
hiddenByDefault?: boolean;
|
|
1005
1045
|
tab?: WorkbenchPanelTab;
|
|
@@ -1014,9 +1054,9 @@ declare type OpenWorkbenchTerminalOptions = OpenWorkbenchTerminalInput & {
|
|
|
1014
1054
|
reveal?: boolean;
|
|
1015
1055
|
};
|
|
1016
1056
|
|
|
1017
|
-
declare type
|
|
1057
|
+
declare type ParamValue_2 = Parameters<NonNullable<ParamEditorProps["onChange"]>>[1];
|
|
1018
1058
|
|
|
1019
|
-
export declare const paramValueToPreference: (schema: PreferencePropertySchema, value:
|
|
1059
|
+
export declare const paramValueToPreference: (schema: PreferencePropertySchema, value: ParamValue_2) => PreferenceValue;
|
|
1020
1060
|
|
|
1021
1061
|
declare interface PlaceholderContribution {
|
|
1022
1062
|
id: string;
|
|
@@ -1072,6 +1112,9 @@ declare interface PreferenceScopeRef {
|
|
|
1072
1112
|
|
|
1073
1113
|
declare type PreferenceValue = boolean | number | string | string[] | number[] | boolean[] | Record<string, unknown>;
|
|
1074
1114
|
|
|
1115
|
+
/** Narrows an editor value back to what a command param can carry. */
|
|
1116
|
+
export declare const readCommandParamValue: (value: ParamValue) => CommandParamValue;
|
|
1117
|
+
|
|
1075
1118
|
declare interface RegisteredCommand extends RegisteredContributionMetadata {
|
|
1076
1119
|
command: Command;
|
|
1077
1120
|
handler: CommandHandler;
|
|
@@ -1133,7 +1176,6 @@ declare type RegisteredWidgetContribution = Omit<WidgetContribution, "priority"
|
|
|
1133
1176
|
ownedPanelMenuIds?: readonly string[];
|
|
1134
1177
|
singleton: boolean;
|
|
1135
1178
|
reuse: WidgetReusePolicy;
|
|
1136
|
-
role: WorkbenchWidgetRole;
|
|
1137
1179
|
} & RegisteredContributionMetadata;
|
|
1138
1180
|
|
|
1139
1181
|
declare interface RegisteredWorkbenchNotification extends RegisteredContributionMetadata {
|
|
@@ -1171,6 +1213,14 @@ declare interface ResourceContextAction {
|
|
|
1171
1213
|
separatorBefore?: boolean;
|
|
1172
1214
|
}
|
|
1173
1215
|
|
|
1216
|
+
declare interface ResourceHierarchyCycle {
|
|
1217
|
+
code: typeof resourceHierarchyCycleCode;
|
|
1218
|
+
path: ResourceRef[];
|
|
1219
|
+
repeatedUri: string;
|
|
1220
|
+
}
|
|
1221
|
+
|
|
1222
|
+
declare const resourceHierarchyCycleCode = "resource_hierarchy_cycle";
|
|
1223
|
+
|
|
1174
1224
|
declare interface ResourceHierarchyProvider {
|
|
1175
1225
|
id: string;
|
|
1176
1226
|
priority?: number;
|
|
@@ -1243,6 +1293,7 @@ declare interface ResourceRegistry {
|
|
|
1243
1293
|
registerHierarchyProvider(provider: ResourceHierarchyProvider): Disposable_2;
|
|
1244
1294
|
listHierarchyProviders(): ResolvedResourceHierarchyProvider[];
|
|
1245
1295
|
walkHierarchy(resource: ResourceRef | undefined): ResourceRef[];
|
|
1296
|
+
onDidDetectHierarchyCycle(listener: (cycle: ResourceHierarchyCycle) => void): Disposable_2;
|
|
1246
1297
|
isOpeningResource(): boolean;
|
|
1247
1298
|
openResource(resource: ResourceRef, input?: OpenResourceInput): Promise<WorkbenchPanelInstance>;
|
|
1248
1299
|
onDidOpenResource(listener: (resource: ResourceRef) => void): Disposable_2;
|
|
@@ -1559,6 +1610,7 @@ declare interface WidgetContribution {
|
|
|
1559
1610
|
mountStrategy?: WidgetMountStrategy;
|
|
1560
1611
|
closable?: boolean;
|
|
1561
1612
|
hiddenByDefault?: boolean;
|
|
1613
|
+
subPanelsOnly?: boolean;
|
|
1562
1614
|
regionSize?: WorkbenchRegionSize;
|
|
1563
1615
|
regionCollapsible?: boolean;
|
|
1564
1616
|
headerBorderBottom?: boolean;
|
|
@@ -1567,7 +1619,6 @@ declare interface WidgetContribution {
|
|
|
1567
1619
|
priority?: number;
|
|
1568
1620
|
rendererId: string;
|
|
1569
1621
|
openCommandId?: string;
|
|
1570
|
-
role?: WorkbenchWidgetRole;
|
|
1571
1622
|
eligibleLocations?: WorkbenchLocationEligibility;
|
|
1572
1623
|
panelMenuOwner?: WorkbenchPanelMenuOwner;
|
|
1573
1624
|
tab?: WorkbenchWidgetTab;
|
|
@@ -1704,6 +1755,20 @@ declare interface WorkbenchCommandParamsRequest {
|
|
|
1704
1755
|
context?: WorkbenchCommandExecutionContext;
|
|
1705
1756
|
}
|
|
1706
1757
|
|
|
1758
|
+
declare interface WorkbenchCompositionAddablePanel extends WorkbenchModeAddablePanel {
|
|
1759
|
+
contribution: RegisteredWidgetContribution;
|
|
1760
|
+
}
|
|
1761
|
+
|
|
1762
|
+
declare interface WorkbenchCompositionController {
|
|
1763
|
+
panelsFor(region: WorkbenchPanelRegion): WorkbenchCompositionRegionPanels;
|
|
1764
|
+
}
|
|
1765
|
+
|
|
1766
|
+
declare interface WorkbenchCompositionRegionPanels {
|
|
1767
|
+
open: readonly WorkbenchWidgetPlacement[];
|
|
1768
|
+
addable: readonly WorkbenchCompositionAddablePanel[];
|
|
1769
|
+
closable: readonly string[];
|
|
1770
|
+
}
|
|
1771
|
+
|
|
1707
1772
|
declare interface WorkbenchCore extends WorkbenchCoreContributionContext {
|
|
1708
1773
|
host: WorkbenchHost;
|
|
1709
1774
|
registerModule(module: WorkbenchModuleContribution): Disposable_2;
|
|
@@ -1715,6 +1780,7 @@ declare interface WorkbenchCoreContributionContext {
|
|
|
1715
1780
|
commandPalette: WorkbenchCommandPaletteController;
|
|
1716
1781
|
commandPaletteResources: CommandPaletteResourceRegistry;
|
|
1717
1782
|
commands: CommandRegistry;
|
|
1783
|
+
composition: WorkbenchCompositionController;
|
|
1718
1784
|
context: ContextKeyService;
|
|
1719
1785
|
focus: WorkbenchFocusController;
|
|
1720
1786
|
history: HistoryController;
|
|
@@ -1723,6 +1789,7 @@ declare interface WorkbenchCoreContributionContext {
|
|
|
1723
1789
|
layout: WorkbenchLayoutModel;
|
|
1724
1790
|
modes: WorkbenchModeRegistry;
|
|
1725
1791
|
navigation: NavigationRegistry;
|
|
1792
|
+
navigator: WorkbenchNavigator;
|
|
1726
1793
|
notifications: NotificationRegistry;
|
|
1727
1794
|
panels: WorkbenchPanelsController;
|
|
1728
1795
|
preferences: PreferenceRegistry;
|
|
@@ -1850,7 +1917,7 @@ declare interface WorkbenchLayoutStoreState {
|
|
|
1850
1917
|
placeholders: Partial<Record<WorkbenchRegion_2, RegisteredPlaceholderContribution>>;
|
|
1851
1918
|
}
|
|
1852
1919
|
|
|
1853
|
-
declare type WorkbenchLocationContribution =
|
|
1920
|
+
declare type WorkbenchLocationContribution = WidgetContribution & WorkbenchPanelMenusContribution;
|
|
1854
1921
|
|
|
1855
1922
|
declare interface WorkbenchLocationEligibility {
|
|
1856
1923
|
modeIds?: string[];
|
|
@@ -1891,15 +1958,31 @@ declare type WorkbenchModeActivationContext = WorkbenchCoreContributionContext;
|
|
|
1891
1958
|
|
|
1892
1959
|
declare type WorkbenchModeActivationResult = Disposable_2 | readonly Disposable_2[] | undefined;
|
|
1893
1960
|
|
|
1961
|
+
declare interface WorkbenchModeAddablePanel {
|
|
1962
|
+
panelId: string;
|
|
1963
|
+
region: WorkbenchPanelRegion;
|
|
1964
|
+
allowedRegions?: readonly WorkbenchRegion_2[];
|
|
1965
|
+
pinned?: boolean;
|
|
1966
|
+
}
|
|
1967
|
+
|
|
1968
|
+
declare interface WorkbenchModeAddablePanelContext {
|
|
1969
|
+
layout: WorkbenchLayout;
|
|
1970
|
+
resource?: ResourceRef;
|
|
1971
|
+
}
|
|
1972
|
+
|
|
1894
1973
|
declare type WorkbenchModeChangeListener = () => void;
|
|
1895
1974
|
|
|
1896
1975
|
declare interface WorkbenchModeContribution {
|
|
1897
1976
|
id: string;
|
|
1898
1977
|
label?: string;
|
|
1899
1978
|
panels?: readonly WorkbenchPanelRegion[];
|
|
1979
|
+
resourceKinds?: readonly string[];
|
|
1980
|
+
defaultResource?: ResourceRef | (() => Promise<ResourceRef | undefined> | ResourceRef | undefined);
|
|
1981
|
+
listAddablePanels?(context: WorkbenchModeAddablePanelContext): readonly WorkbenchModeAddablePanel[];
|
|
1900
1982
|
activate(ctx: WorkbenchModeActivationContext): WorkbenchModeActivationResult;
|
|
1901
1983
|
seed?(ctx: WorkbenchModeActivationContext): void;
|
|
1902
1984
|
enter?(ctx: WorkbenchModeActivationContext): WorkbenchModeActivationResult;
|
|
1985
|
+
reconcile?(ctx: WorkbenchModeActivationContext): void;
|
|
1903
1986
|
}
|
|
1904
1987
|
|
|
1905
1988
|
declare interface WorkbenchModeRegistry {
|
|
@@ -1946,6 +2029,14 @@ export declare interface WorkbenchModuleHostRegistration {
|
|
|
1946
2029
|
disposable: Disposable_2;
|
|
1947
2030
|
}
|
|
1948
2031
|
|
|
2032
|
+
declare interface WorkbenchNavigationCommit {
|
|
2033
|
+
modeId: string | undefined;
|
|
2034
|
+
resource: ResourceRef | undefined;
|
|
2035
|
+
replaceActive: boolean;
|
|
2036
|
+
}
|
|
2037
|
+
|
|
2038
|
+
declare type WorkbenchNavigationDiagnosticCode = "navigation_mode_missing" | "navigation_resource_missing" | "navigation_resource_incompatible" | "navigation_default_missing" | "navigation_target_stale";
|
|
2039
|
+
|
|
1949
2040
|
declare interface WorkbenchNavigationEntry {
|
|
1950
2041
|
entryId: string;
|
|
1951
2042
|
recordedAt: number;
|
|
@@ -1960,6 +2051,53 @@ declare interface WorkbenchNavigationEntry {
|
|
|
1960
2051
|
closedSubPanel?: WorkbenchClosedSubPanel;
|
|
1961
2052
|
}
|
|
1962
2053
|
|
|
2054
|
+
declare type WorkbenchNavigationResult = {
|
|
2055
|
+
ok: true;
|
|
2056
|
+
modeId: string | undefined;
|
|
2057
|
+
resource: ResourceRef | undefined;
|
|
2058
|
+
} | {
|
|
2059
|
+
ok: false;
|
|
2060
|
+
code: WorkbenchNavigationDiagnosticCode;
|
|
2061
|
+
message: string;
|
|
2062
|
+
};
|
|
2063
|
+
|
|
2064
|
+
declare interface WorkbenchNavigationTarget {
|
|
2065
|
+
modeId?: string;
|
|
2066
|
+
resource?: ResourceRef;
|
|
2067
|
+
replaceActive?: boolean;
|
|
2068
|
+
}
|
|
2069
|
+
|
|
2070
|
+
declare interface WorkbenchNavigator {
|
|
2071
|
+
configure(hooks: WorkbenchNavigatorHostHooks): void;
|
|
2072
|
+
getSelectedResource(): ResourceRef | undefined;
|
|
2073
|
+
open(target: WorkbenchNavigationTarget): Promise<WorkbenchNavigationResult>;
|
|
2074
|
+
commitContext(input: WorkbenchNavigatorCommitInput): WorkbenchNavigationResult;
|
|
2075
|
+
getLastResource(projectId: string | undefined, modeId: string): ResourceRef | undefined;
|
|
2076
|
+
forgetResource(uri: string): void;
|
|
2077
|
+
onDidCommit(listener: (commit: WorkbenchNavigationCommit) => void): {
|
|
2078
|
+
dispose(): void;
|
|
2079
|
+
};
|
|
2080
|
+
}
|
|
2081
|
+
|
|
2082
|
+
declare interface WorkbenchNavigatorCommitInput {
|
|
2083
|
+
modeId?: string | null;
|
|
2084
|
+
resource?: ResourceRef | null;
|
|
2085
|
+
replaceActive?: boolean;
|
|
2086
|
+
present?: boolean;
|
|
2087
|
+
}
|
|
2088
|
+
|
|
2089
|
+
declare interface WorkbenchNavigatorHostHooks {
|
|
2090
|
+
getProjectId?(): string | undefined;
|
|
2091
|
+
getSelectedResource?(): ResourceRef | undefined;
|
|
2092
|
+
interpretSelection?(resource: ResourceRef): ResourceRef | undefined;
|
|
2093
|
+
applySelection?(resource: ResourceRef | undefined): void;
|
|
2094
|
+
applyScope?(commit: WorkbenchNavigationCommit): void;
|
|
2095
|
+
applyBreadcrumb?(resource: ResourceRef | undefined): void;
|
|
2096
|
+
presentResource?(resource: ResourceRef, input: {
|
|
2097
|
+
replaceActive: boolean;
|
|
2098
|
+
}): Promise<unknown> | unknown;
|
|
2099
|
+
}
|
|
2100
|
+
|
|
1963
2101
|
declare interface WorkbenchNotification {
|
|
1964
2102
|
id?: string;
|
|
1965
2103
|
level: WorkbenchNotificationLevel;
|
|
@@ -2020,6 +2158,8 @@ export declare interface WorkbenchOverlayWidgetConfig {
|
|
|
2020
2158
|
contentHeight?: string;
|
|
2021
2159
|
contentMaxHeight?: string;
|
|
2022
2160
|
contentMinHeight?: string;
|
|
2161
|
+
contentWidth?: string;
|
|
2162
|
+
contentMaxWidth?: string;
|
|
2023
2163
|
closeTriggerTop?: string;
|
|
2024
2164
|
}
|
|
2025
2165
|
|
|
@@ -2030,11 +2170,11 @@ declare interface WorkbenchPanelContribution {
|
|
|
2030
2170
|
region: WorkbenchRegion_2;
|
|
2031
2171
|
fallbackRegion?: WorkbenchRegion_2;
|
|
2032
2172
|
rendererId: string;
|
|
2033
|
-
closable: boolean;
|
|
2034
2173
|
singleton?: boolean;
|
|
2035
2174
|
reuse?: WorkbenchPanelReusePolicy;
|
|
2036
2175
|
mountStrategy?: WorkbenchPanelMountStrategy;
|
|
2037
2176
|
hiddenByDefault?: boolean;
|
|
2177
|
+
subPanelsOnly?: boolean;
|
|
2038
2178
|
regionSize?: WorkbenchRegionSize;
|
|
2039
2179
|
regionCollapsible?: boolean;
|
|
2040
2180
|
headerBorderBottom?: boolean;
|
|
@@ -2085,7 +2225,7 @@ declare interface WorkbenchPanelInstance_2 {
|
|
|
2085
2225
|
tab?: WorkbenchPanelTab_2;
|
|
2086
2226
|
}
|
|
2087
2227
|
|
|
2088
|
-
declare type WorkbenchPanelMenuContribution = Omit<WidgetContribution, "region" | "fallbackRegion"
|
|
2228
|
+
declare type WorkbenchPanelMenuContribution = Omit<WidgetContribution, "region" | "fallbackRegion"> & {
|
|
2089
2229
|
region: WorkbenchPanelMenuRegion;
|
|
2090
2230
|
fallbackRegion?: WorkbenchPanelMenuRegion;
|
|
2091
2231
|
};
|
|
@@ -2143,13 +2283,14 @@ declare type WorkbenchPanelMountStrategy = WidgetMountStrategy;
|
|
|
2143
2283
|
declare type WorkbenchPanelMountStrategy_2 = WidgetMountStrategy_2;
|
|
2144
2284
|
|
|
2145
2285
|
declare type WorkbenchPanelOpenStrategy = {
|
|
2146
|
-
kind: "
|
|
2286
|
+
kind: "persistent";
|
|
2147
2287
|
position?: WorkbenchTabPosition;
|
|
2148
2288
|
} | {
|
|
2149
2289
|
kind: "replace-active";
|
|
2150
2290
|
} | {
|
|
2151
2291
|
kind: "replace-panel";
|
|
2152
2292
|
instanceId: string;
|
|
2293
|
+
retention?: WorkbenchTabRetention;
|
|
2153
2294
|
} | {
|
|
2154
2295
|
kind: "preview";
|
|
2155
2296
|
position?: WorkbenchTabPosition;
|
|
@@ -2342,7 +2483,7 @@ declare type WorkbenchStoreSelector<TState, TValue> = (state: TState) => TValue;
|
|
|
2342
2483
|
|
|
2343
2484
|
declare type WorkbenchStoreSelectorListener<TValue> = (value: TValue, previousValue: TValue) => void;
|
|
2344
2485
|
|
|
2345
|
-
declare type WorkbenchSubPanelContribution = Omit<WidgetContribution, "region" | "fallbackRegion"
|
|
2486
|
+
declare type WorkbenchSubPanelContribution = Omit<WidgetContribution, "region" | "fallbackRegion"> & {
|
|
2346
2487
|
region: WorkbenchPanelRegion;
|
|
2347
2488
|
fallbackRegion?: WorkbenchPanelRegion;
|
|
2348
2489
|
} & WorkbenchPanelMenusContribution;
|