mirror of
https://github.com/alibaba/lowcode-engine.git
synced 2026-03-05 09:47:20 +00:00
42 lines
1.2 KiB
TypeScript
42 lines
1.2 KiB
TypeScript
import { IExclusiveGroup } from '@alilc/lowcode-designer';
|
|
import { IPublicModelExclusiveGroup, IPublicModelNode } from '@alilc/lowcode-types';
|
|
import { conditionGroupSymbol, nodeSymbol } from '../symbols';
|
|
import { Node } from './node';
|
|
|
|
export class ConditionGroup implements IPublicModelExclusiveGroup {
|
|
private [conditionGroupSymbol]: IExclusiveGroup | null;
|
|
|
|
constructor(conditionGroup: IExclusiveGroup | null) {
|
|
this[conditionGroupSymbol] = conditionGroup;
|
|
}
|
|
|
|
get id() {
|
|
return this[conditionGroupSymbol]?.id;
|
|
}
|
|
|
|
get title() {
|
|
return this[conditionGroupSymbol]?.title;
|
|
}
|
|
|
|
get firstNode() {
|
|
return Node.create(this[conditionGroupSymbol]?.firstNode);
|
|
}
|
|
|
|
setVisible(node: IPublicModelNode) {
|
|
this[conditionGroupSymbol]?.setVisible((node as any)[nodeSymbol] ? (node as any)[nodeSymbol] : node);
|
|
}
|
|
|
|
static create(conditionGroup: IExclusiveGroup | null) {
|
|
if (!conditionGroup) {
|
|
return null;
|
|
}
|
|
// @ts-ignore
|
|
if (conditionGroup[conditionGroupSymbol]) {
|
|
return (conditionGroup as any)[conditionGroupSymbol];
|
|
}
|
|
const shellConditionGroup = new ConditionGroup(conditionGroup);
|
|
// @ts-ignore
|
|
shellConditionGroup[conditionGroupSymbol] = shellConditionGroup;
|
|
return shellConditionGroup;
|
|
}
|
|
} |