mirror of
https://github.com/alibaba/lowcode-engine.git
synced 2025-12-12 11:20:11 +00:00
55 lines
1.1 KiB
TypeScript
55 lines
1.1 KiB
TypeScript
import { PropChangeOptions } from "@ali/lowcode-designer";
|
|
import EventEmitter from "events";
|
|
|
|
export default class Node {
|
|
private emitter: EventEmitter;
|
|
schema: any = {
|
|
props: {},
|
|
};
|
|
hasLoop = false;
|
|
|
|
constructor(schema: any) {
|
|
this.emitter = new EventEmitter();
|
|
this.schema = schema;
|
|
}
|
|
|
|
mockLoop() {
|
|
this.hasLoop = true;
|
|
}
|
|
|
|
onChildrenChange(fn: any) {
|
|
this.emitter.on('onChildrenChange', fn);
|
|
return () => {
|
|
this.emitter.off('onChildrenChange', fn);
|
|
}
|
|
}
|
|
|
|
onPropChange(fn: any) {
|
|
this.emitter.on('onPropChange', fn);
|
|
return () => {
|
|
this.emitter.off('onPropChange', fn);
|
|
}
|
|
}
|
|
|
|
emitPropChange(val: PropChangeOptions) {
|
|
this.schema.props = {
|
|
...this.schema.props,
|
|
[val.key + '']: val.newValue,
|
|
}
|
|
this.emitter?.emit('onPropChange', val);
|
|
}
|
|
|
|
onVisibleChange(fn: any) {
|
|
this.emitter.on('onVisibleChange', fn);
|
|
return () => {
|
|
this.emitter.off('onVisibleChange', fn);
|
|
}
|
|
}
|
|
|
|
emitVisibleChange(val: boolean) {
|
|
this.emitter?.emit('onVisibleChange', val);
|
|
}
|
|
export() {
|
|
return this.schema;
|
|
}
|
|
} |