Skip to content

Commit 7d526d1

Browse files
liujupingJackLian
authored andcommitted
feat: modify the usage of resource registration
1 parent d3cc39e commit 7d526d1

29 files changed

Lines changed: 295 additions & 306 deletions

docs/docs/api/model/resource-type.md

Lines changed: 0 additions & 26 deletions
This file was deleted.

docs/docs/api/model/resource.md

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,24 @@ sidebar_position: 12
1515

1616
`@type {string}`
1717

18+
### name
19+
20+
资源名字
21+
22+
`@type {string}`
23+
24+
### type
25+
26+
资源类型
27+
28+
`@type {string}`
29+
30+
### category
31+
32+
资源分类
33+
34+
`@type {string}`
35+
1836
### icon
1937

2038
资源 icon
@@ -25,12 +43,4 @@ sidebar_position: 12
2543

2644
资源配置信息
2745

28-
`@type {Object}`
29-
30-
### resourceType
31-
32-
资源所属的资源类型
33-
34-
`@type {IPublicModelResourceType}`
35-
36-
关联模型 [IPublicModelResourceType](./resource-type)
46+
`@type {Object}`

docs/docs/api/model/window.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,13 @@ sidebar_position: 12
3030

3131
`@type {ReactElement}`
3232

33-
### resourceType
33+
### resource
3434

35-
窗口资源类型
35+
窗口对应资源
3636

37-
`@type {IPublicModelResourceType}`
37+
`@type {IPublicModelResource}`
3838

39-
关联模型 [IPublicModelResourceType](./resource-type)
39+
关联模型 [IPublicModelResource](./resource)
4040

4141
## 方法签名
4242

docs/docs/api/workspace.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,10 @@ get resourceList(): IPublicModelResource;
6464

6565
```typescript
6666
/** 注册资源 */
67-
registerResourceType(name: string, type: 'editor', options: IPublicResourceOptions): void;
67+
registerResourceType(resourceTypeModel: IPublicTypeResourceType): void;
6868
```
6969

70-
相关类型:[IPublicResourceOptions](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/resource-options.ts)
70+
相关类型:[IPublicTypeResourceType](https://github.com/alibaba/lowcode-engine/blob/main/packages/types/src/shell/type/resource-type.ts)
7171

7272
### onChangeWindows
7373

packages/designer/src/designer/designer.ts

Lines changed: 27 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,14 @@ import { ComponentActions } from '../component-actions';
3939
const logger = new Logger({ level: 'warn', bizName: 'designer' });
4040

4141
export interface DesignerProps {
42+
[key: string]: any;
4243
editor: IPublicModelEditor;
4344
shellModelFactory: IShellModelFactory;
4445
className?: string;
4546
style?: object;
4647
defaultSchema?: IPublicTypeProjectSchema;
4748
hotkeys?: object;
49+
viewName?: string;
4850
simulatorProps?: object | ((document: DocumentModel) => object);
4951
simulatorComponent?: ComponentType<any>;
5052
dragGhostComponent?: ComponentType<any>;
@@ -55,8 +57,6 @@ export interface DesignerProps {
5557
onDragstart?: (e: ILocateEvent) => void;
5658
onDrag?: (e: ILocateEvent) => void;
5759
onDragend?: (e: { dragObject: IPublicModelDragObject; copy: boolean }, loc?: DropLocation) => void;
58-
viewName?: string;
59-
[key: string]: any;
6060
}
6161

6262
export interface IDesigner {
@@ -71,7 +71,9 @@ export interface IDesigner {
7171
}
7272

7373
export class Designer implements IDesigner {
74-
dragon: Dragon;
74+
public dragon: Dragon;
75+
76+
public viewName: string | undefined;
7577

7678
readonly componentActions = new ComponentActions();
7779

@@ -87,6 +89,24 @@ export class Designer implements IDesigner {
8789

8890
readonly shellModelFactory: IShellModelFactory;
8991

92+
private _dropLocation?: DropLocation;
93+
94+
private propsReducers = new Map<IPublicEnumTransformStage, IPublicTypePropsTransducer[]>();
95+
96+
private _lostComponentMetasMap = new Map<string, ComponentMeta>();
97+
98+
private props?: DesignerProps;
99+
100+
private oobxList: OffsetObserver[] = [];
101+
102+
@obx.ref private _componentMetasMap = new Map<string, ComponentMeta>();
103+
104+
@obx.ref private _simulatorComponent?: ComponentType<any>;
105+
106+
@obx.ref private _simulatorProps?: object | ((project: Project) => object);
107+
108+
@obx.ref private _suspensed = false;
109+
90110
get currentDocument() {
91111
return this.project.currentDocument;
92112
}
@@ -99,8 +119,6 @@ export class Designer implements IDesigner {
99119
return this.currentDocument?.selection;
100120
}
101121

102-
viewName: string | undefined;
103-
104122
constructor(props: DesignerProps) {
105123
makeObservable(this);
106124
const { editor, viewName, shellModelFactory } = props;
@@ -234,8 +252,6 @@ export class Designer implements IDesigner {
234252
this.editor.eventBus.emit(`designer.${event}`, ...args);
235253
}
236254

237-
private _dropLocation?: DropLocation;
238-
239255
get dropLocation() {
240256
return this._dropLocation;
241257
}
@@ -270,8 +286,6 @@ export class Designer implements IDesigner {
270286
return new Scroller(scrollable);
271287
}
272288

273-
private oobxList: OffsetObserver[] = [];
274-
275289
createOffsetObserver(nodeInstance: INodeSelector): OffsetObserver | null {
276290
const oobx = createOffsetObserver(nodeInstance);
277291
this.clearOobxList();
@@ -342,8 +356,6 @@ export class Designer implements IDesigner {
342356
return { target, index };
343357
}
344358

345-
private props?: DesignerProps;
346-
347359
setProps(nextProps: DesignerProps) {
348360
const props = this.props ? { ...this.props, ...nextProps } : nextProps;
349361
if (this.props) {
@@ -421,14 +433,10 @@ export class Designer implements IDesigner {
421433
return this.props?.[key];
422434
}
423435

424-
@obx.ref private _simulatorComponent?: ComponentType<any>;
425-
426436
@computed get simulatorComponent(): ComponentType<any> | undefined {
427437
return this._simulatorComponent;
428438
}
429439

430-
@obx.ref private _simulatorProps?: object | ((project: Project) => object);
431-
432440
@computed get simulatorProps(): object {
433441
if (typeof this._simulatorProps === 'function') {
434442
return this._simulatorProps(this.project);
@@ -451,8 +459,6 @@ export class Designer implements IDesigner {
451459
};
452460
}
453461

454-
@obx.ref private _suspensed = false;
455-
456462
get suspensed(): boolean {
457463
return this._suspensed;
458464
}
@@ -473,16 +479,15 @@ export class Designer implements IDesigner {
473479
this.project.load(schema);
474480
}
475481

476-
@obx.ref private _componentMetasMap = new Map<string, ComponentMeta>();
477-
478-
private _lostComponentMetasMap = new Map<string, ComponentMeta>();
479-
480482
buildComponentMetasMap(metas: IPublicTypeComponentMetadata[]) {
481483
metas.forEach((data) => this.createComponentMeta(data));
482484
}
483485

484-
createComponentMeta(data: IPublicTypeComponentMetadata): ComponentMeta {
486+
createComponentMeta(data: IPublicTypeComponentMetadata): ComponentMeta | null {
485487
const key = data.componentName;
488+
if (!key) {
489+
return null;
490+
}
486491
let meta = this._componentMetasMap.get(key);
487492
if (meta) {
488493
meta.setMetadata(data);
@@ -552,8 +557,6 @@ export class Designer implements IDesigner {
552557
return maps;
553558
}
554559

555-
private propsReducers = new Map<IPublicEnumTransformStage, IPublicTypePropsTransducer[]>();
556-
557560
transformProps(props: IPublicTypeCompositeObject | IPublicTypePropsList, node: Node, stage: IPublicEnumTransformStage) {
558561
if (Array.isArray(props)) {
559562
// current not support, make this future

packages/shell/src/api/workspace.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { IPublicApiWorkspace, IPublicResourceList, IPublicResourceOptions } from '@alilc/lowcode-types';
1+
import { IPublicApiWorkspace, IPublicResourceList, IPublicTypeResourceType } from '@alilc/lowcode-types';
22
import { Workspace as InnerWorkSpace } from '@alilc/lowcode-workspace';
33
import { Plugins } from '@alilc/lowcode-shell';
44
import { Window } from '../model/window';
@@ -32,8 +32,8 @@ export class Workspace implements IPublicApiWorkspace {
3232
return new Window(this[workspaceSymbol].window);
3333
}
3434

35-
registerResourceType(name: string, type: 'editor', options: IPublicResourceOptions): void {
36-
this[workspaceSymbol].registerResourceType(name, type, options);
35+
registerResourceType(resourceTypeModel: IPublicTypeResourceType): void {
36+
this[workspaceSymbol].registerResourceType(resourceTypeModel);
3737
}
3838

3939
openEditorWindow(resourceName: string, title: string, extra: Object, viewName?: string) {

packages/shell/src/model/index.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,4 @@ export * from './props';
1414
export * from './selection';
1515
export * from './setting-prop-entry';
1616
export * from './setting-top-entry';
17-
export * from './resource';
18-
export * from './resource-type';
17+
export * from './resource';

packages/shell/src/model/resource-type.ts

Lines changed: 0 additions & 22 deletions
This file was deleted.

packages/shell/src/model/resource.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,15 @@ export class Resource implements IPublicModelResource {
2222
return this[resourceSymbol].options;
2323
}
2424

25-
get resourceType() {
26-
return new ResourceType(this[resourceSymbol].resourceType);
25+
get name() {
26+
return this[resourceSymbol].resourceType.name;
27+
}
28+
29+
get type() {
30+
return this[resourceSymbol].resourceType.type;
31+
}
32+
33+
get category() {
34+
return this[resourceSymbol].category;
2735
}
2836
}

packages/shell/src/model/window.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import { windowSymbol } from '../symbols';
2-
import { IPublicModelWindow } from '@alilc/lowcode-types';
2+
import { IPublicModelResource, IPublicModelWindow } from '@alilc/lowcode-types';
33
import { EditorWindow } from '@alilc/lowcode-workspace';
4-
import { ResourceType } from './resource-type';
4+
import { Resource } from './resource';
55

66
export class Window implements IPublicModelWindow {
77
private readonly [windowSymbol]: EditorWindow;
88

99
get id() {
10-
return this[windowSymbol].id;
10+
return this[windowSymbol]?.id;
1111
}
1212

1313
get title() {
@@ -18,8 +18,8 @@ export class Window implements IPublicModelWindow {
1818
return this[windowSymbol].icon;
1919
}
2020

21-
get resourceType(): ResourceType {
22-
return new ResourceType(this[windowSymbol].resourceType);
21+
get resource(): IPublicModelResource {
22+
return new Resource(this[windowSymbol].resource);
2323
}
2424

2525
constructor(editorWindow: EditorWindow) {

0 commit comments

Comments
 (0)