diff --git a/packages/shell/src/api/workspace.ts b/packages/shell/src/api/workspace.ts index 8192ac67d..d51f670e9 100644 --- a/packages/shell/src/api/workspace.ts +++ b/packages/shell/src/api/workspace.ts @@ -34,6 +34,21 @@ export class Workspace implements IPublicApiWorkspace { return new ShellWindow(this[workspaceSymbol].window); } + get resourceTypeList() { + return Array.from(this[workspaceSymbol].resourceTypeMap.values()).map((d) => { + const { name: resourceName, type: resourceType } = d; + const { + description, + } = d.resourceTypeModel({} as any, {}); + + return { + resourceName, + resourceType, + description, + }; + }); + } + onWindowRendererReady(fn: () => void): IPublicTypeDisposable { return this[workspaceSymbol].onWindowRendererReady(fn); } diff --git a/packages/shell/src/model/resource.ts b/packages/shell/src/model/resource.ts index 43f28fbd8..6a1a07e49 100644 --- a/packages/shell/src/model/resource.ts +++ b/packages/shell/src/model/resource.ts @@ -37,6 +37,10 @@ export class Resource implements IPublicModelResource { return this[resourceSymbol].category; } + get description() { + return this[resourceSymbol].description; + } + get children() { return this[resourceSymbol].children.map((child) => new Resource(child)); } diff --git a/packages/types/src/shell/model/resource.ts b/packages/types/src/shell/model/resource.ts index 1f59845e6..0d791412b 100644 --- a/packages/types/src/shell/model/resource.ts +++ b/packages/types/src/shell/model/resource.ts @@ -19,6 +19,8 @@ export interface IBaseModelResource< get viewName(): string | undefined; + get description(): string | undefined; + get config(): { disableBehaviors?: ('copy' | 'remove')[]; } | undefined; diff --git a/packages/workspace/src/resource.ts b/packages/workspace/src/resource.ts index 4b695d036..1d328b6c6 100644 --- a/packages/workspace/src/resource.ts +++ b/packages/workspace/src/resource.ts @@ -12,6 +12,8 @@ export interface IBaseResource extends IBaseModelResource { skeleton: ISkeleton; + description?: string; + get editorViews(): IPublicTypeEditorView[]; get defaultViewType(): string; diff --git a/packages/workspace/src/workspace.ts b/packages/workspace/src/workspace.ts index 46c8c4a0e..bedae8680 100644 --- a/packages/workspace/src/workspace.ts +++ b/packages/workspace/src/workspace.ts @@ -33,6 +33,8 @@ export interface IWorkspace extends Omit; + getResourceList(): IResource[]; getResourceType(resourceName: string): IResourceType; @@ -55,12 +57,12 @@ export class Workspace implements IWorkspace { enableAutoOpenFirstWindow: boolean; + resourceTypeMap: Map = new Map(); + private emitter: IEventBus = createModuleEventBus('workspace'); private _isActive = false; - private resourceTypeMap: Map = new Map(); - private resourceList: IResource[] = []; get skeleton() {