Skip to content

Commit 239bb29

Browse files
liujupingJackLian
authored andcommitted
feat: add skeleton item model
1 parent 9947a36 commit 239bb29

File tree

16 files changed

+83
-13
lines changed

16 files changed

+83
-13
lines changed

packages/designer/src/document/document-model.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ export interface IDocumentModel extends Omit<IPublicModelDocumentModel<
141141

142142
insertNodes(parent: INode, thing: INode[] | IPublicTypeNodeData[], at?: number | null, copy?: boolean): INode[];
143143

144-
open(): DocumentModel;
144+
open(): IDocumentModel;
145145

146146
remove(): void;
147147

packages/designer/src/document/node/props/prop.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ export type UNSET = typeof UNSET;
1616
export interface IProp extends Omit<IPublicModelProp<
1717
INode
1818
>, 'exportSchema' | 'node'>, IPropParent {
19+
spread: boolean;
20+
1921
key: string | number | undefined;
2022

2123
readonly props: IProps;
@@ -42,6 +44,8 @@ export interface IProp extends Omit<IPublicModelProp<
4244

4345
setupItems(): IProp[] | null;
4446

47+
isVirtual(): boolean;
48+
4549
get type(): ValueTypes;
4650

4751
get size(): number;

packages/designer/src/project/project.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { obx, computed, makeObservable, action, IEventBus, createModuleEventBus } from '@alilc/lowcode-editor-core';
22
import { IDesigner } from '../designer';
33
import { DocumentModel, isDocumentModel } from '../document';
4-
import type { IDocumentModel } from "../document";
4+
import type { IDocumentModel } from '../document';
55
import {
66
IPublicTypeComponentsMap,
77
IPublicEnumTransformStage,
@@ -317,13 +317,13 @@ export class Project implements IProject {
317317
doc = this.createDocument();
318318
return doc.open();
319319
}
320-
if (typeof doc === 'string') {
321-
const got = this.documents.find((item) => item.fileName === doc || item.id === doc);
320+
if (typeof doc === 'string' || typeof doc === 'number') {
321+
const got = this.documents.find((item) => item.fileName === String(doc) || String(item.id) === String(doc));
322322
if (got) {
323323
return got.open();
324324
}
325325

326-
const data = this.data.componentsTree.find((data) => data.fileName === doc);
326+
const data = this.data.componentsTree.find((data) => data.fileName === String(doc));
327327
if (data) {
328328
doc = this.createDocument(data);
329329
return doc.open();

packages/editor-skeleton/src/skeleton.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@ export interface ISkeleton extends Omit<IPublicApiSkeleton,
5656
'onShowWidget' |
5757
'onHideWidget' |
5858
'remove' |
59-
'hideArea'
59+
'hideArea' |
60+
'add'
6061
> {
6162
editor: IEditor;
6263

@@ -101,6 +102,8 @@ export interface ISkeleton extends Omit<IPublicApiSkeleton,
101102
): WidgetContainer;
102103

103104
createPanel(config: PanelConfig): Panel;
105+
106+
add(config: IPublicTypeSkeletonConfig, extraConfig?: Record<string, any>): IWidget | Widget | Panel | Stage | Dock | PanelDock | undefined;
104107
}
105108

106109
export class Skeleton {
@@ -440,7 +443,7 @@ export class Skeleton {
440443
return restConfig;
441444
}
442445

443-
add(config: IPublicTypeSkeletonConfig, extraConfig?: Record<string, any>) {
446+
add(config: IPublicTypeSkeletonConfig, extraConfig?: Record<string, any>): IWidget | Widget | Panel | Stage | Dock | PanelDock | undefined {
444447
const parsedConfig = {
445448
...this.parseConfig(config),
446449
...extraConfig,

packages/editor-skeleton/src/widget/panel.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,10 @@ export class Panel implements IWidget {
211211
this.setActive(false);
212212
}
213213

214+
disable() {}
215+
216+
enable(): void {}
217+
214218
show() {
215219
this.setActive(true);
216220
}

packages/engine/src/modules/classes.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import {
1010
Selection,
1111
Prop,
1212
SimulatorHost,
13+
SkeletonItem,
1314
} from '@alilc/lowcode-shell';
1415
import { Node as InnerNode } from '@alilc/lowcode-designer';
1516

@@ -26,4 +27,5 @@ export default {
2627
Selection,
2728
Prop,
2829
SimulatorHost,
30+
SkeletonItem,
2931
};

packages/engine/src/modules/symbols.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
designerCabinSymbol,
1212
propSymbol,
1313
simulatorHostSymbol,
14+
skeletonItemSymbol,
1415
} from '@alilc/lowcode-shell';
1516

1617
export default {
@@ -26,4 +27,5 @@ export default {
2627
designerCabinSymbol,
2728
propSymbol,
2829
simulatorHostSymbol,
30+
skeletonItemSymbol,
2931
};

packages/shell/src/api/skeleton.ts

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@ import {
44
SkeletonEvents,
55
} from '@alilc/lowcode-editor-skeleton';
66
import { skeletonSymbol } from '../symbols';
7-
import { IPublicApiSkeleton, IPublicTypeDisposable, IPublicTypeSkeletonConfig, IPublicTypeWidgetConfigArea } from '@alilc/lowcode-types';
7+
import { IPublicApiSkeleton, IPublicModelSkeletonItem, IPublicTypeDisposable, IPublicTypeSkeletonConfig, IPublicTypeWidgetConfigArea } from '@alilc/lowcode-types';
88
import { getLogger } from '@alilc/lowcode-utils';
9+
import { SkeletonItem } from '../model/skeleton-item';
910

1011
const innerSkeletonSymbol = Symbol('skeleton');
1112

@@ -46,12 +47,15 @@ export class Skeleton implements IPublicApiSkeleton {
4647
* @param extraConfig
4748
* @returns
4849
*/
49-
add(config: IPublicTypeSkeletonConfig, extraConfig?: Record<string, any>) {
50+
add(config: IPublicTypeSkeletonConfig, extraConfig?: Record<string, any>): IPublicModelSkeletonItem | undefined {
5051
const configWithName = {
5152
...config,
5253
pluginName: this.pluginName,
5354
};
54-
return this[skeletonSymbol].add(configWithName, extraConfig);
55+
const item = this[skeletonSymbol].add(configWithName, extraConfig);
56+
if (item) {
57+
return new SkeletonItem(item);
58+
}
5559
}
5660

5761
/**
@@ -68,6 +72,10 @@ export class Skeleton implements IPublicApiSkeleton {
6872
skeleton[normalizeArea(area)].container?.remove(name);
6973
}
7074

75+
getAreaItems(areaName: IPublicTypeWidgetConfigArea): IPublicModelSkeletonItem[] {
76+
return this[skeletonSymbol][normalizeArea(areaName)].container.items?.map(d => new SkeletonItem(d));
77+
}
78+
7179
/**
7280
* 显示面板
7381
* @param name
@@ -193,7 +201,7 @@ export class Skeleton implements IPublicApiSkeleton {
193201
}
194202
}
195203

196-
function normalizeArea(area: IPublicTypeWidgetConfigArea | undefined): 'leftArea' | 'rightArea' | 'topArea' | 'toolbar' | 'mainArea' | 'bottomArea' | 'leftFixedArea' | 'leftFloatArea' | 'stages' {
204+
function normalizeArea(area: IPublicTypeWidgetConfigArea | undefined): 'leftArea' | 'rightArea' | 'topArea' | 'toolbar' | 'mainArea' | 'bottomArea' | 'leftFixedArea' | 'leftFloatArea' | 'stages' | 'subTopArea' {
197205
switch (area) {
198206
case 'leftArea':
199207
case 'left':
@@ -220,6 +228,8 @@ function normalizeArea(area: IPublicTypeWidgetConfigArea | undefined): 'leftArea
220228
return 'leftFloatArea';
221229
case 'stages':
222230
return 'stages';
231+
case 'subTopArea':
232+
return 'subTopArea';
223233
default:
224234
throw new Error(`${area} not supported`);
225235
}

packages/shell/src/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
Clipboard,
1212
SettingField,
1313
Window,
14+
SkeletonItem,
1415
} from './model';
1516
import {
1617
Project,
@@ -66,4 +67,5 @@ export {
6667
SimulatorHost,
6768
Config,
6869
SettingField,
70+
SkeletonItem,
6971
};

packages/shell/src/model/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,4 @@ export * from './plugin-instance';
2020
export * from './window';
2121
export * from './clipboard';
2222
export * from './editor-view';
23+
export * from './skeleton-item';

0 commit comments

Comments
 (0)