@logicflow/extension
Version:
LogicFlow Extensions
124 lines (123 loc) • 3.73 kB
TypeScript
import LogicFlow, { h, BaseEdgeModel } from '@logicflow/core';
import { RectResizeModel, RectResizeView } from '../../NodeResize';
import Point = LogicFlow.Point;
import NodeData = LogicFlow.NodeData;
export declare class GroupNodeModel extends RectResizeModel {
readonly isGroup = true;
/**
* 此分组的子节点Id
*/
children: Set<string>;
/**
* 其子节点是否被禁止通过拖拽移出分组。 默认false,允许拖拽移除分组。
*/
isRestrict?: boolean;
/**
* 分组节点是否允许折叠
*/
foldable?: boolean;
/**
* 折叠后的宽度
*/
foldedWidth: number;
/**
* 折叠后的高度
*/
foldedHeight: number;
/**
* 分组折叠状态
*/
isFolded: boolean;
unfoldedWidth: number;
unfoldedHeight: number;
/**
* children元素上一次折叠的状态缓存
*/
childrenLastFoldStatus: Record<string, boolean>;
initNodeData(data: any): void;
getResizeOutlineStyle(): {
fill: string;
stroke: string;
strokeWidth: number;
strokeDasharray: string;
};
/**
* 折叠分组
* 1. 折叠分组的宽高
* 2. 处理分组子节点
* 3. 处理连线
*/
foldGroup(isFolded: boolean): void;
getAnchorStyle(anchorInfo?: Point): LogicFlow.AnchorTheme;
/**
* 折叠分组的时候,处理分组自身的连线和分组内部子节点上的连线
* 边的分类:
* - 虚拟边:分组被收起时,表示分组本身与外部节点关系的边。
* - 真实边:分组本身或者分组内部节点与外部节点节点(非收起分组)关系的边。
* 如果一个分组,本身与外部节点有M条连线,且内部N个子节点与外部节点有连线,那么这个分组收起时会生成M+N条连线。
* 折叠分组时:
* - 原有的虚拟边删除;
* - 创建一个虚拟边;
* - 真实边则隐藏;
* 展开分组是:
* - 原有的虚拟边删除;
* - 如果目外部点是收起的分组,则创建虚拟边;
* - 如果外部节点是普通节点,则显示真实边;
*/
foldEdge(isFolded: boolean, allEdges: BaseEdgeModel[]): void;
createVirtualEdge(edgeData: any): void;
isInRange({ minX, minY, maxX, maxY }: {
minX: any;
minY: any;
maxX: any;
maxY: any;
}): boolean;
isAllowMoveTo({ minX, minY, maxX, maxY }: {
minX: any;
minY: any;
maxX: any;
maxY: any;
}): {
x: boolean;
y: boolean;
};
setAllowAppendChild(isAllow: any): void;
/**
* 添加分组子节点
* @param id 节点id
*/
addChild(id: string): void;
/**
* 删除分组子节点
* @param id 节点id
*/
removeChild(id: string): void;
getAddableOutlineStyle(): {
stroke: string;
strokeWidth: number;
strokeDasharray: string;
fill: string;
};
getData(): LogicFlow.NodeData;
getHistoryData(): LogicFlow.NodeData;
/**
* 是否允许此节点添加到此分组中
*/
isAllowAppendIn(_nodeData: NodeData): boolean;
/**
* 当groupA被添加到groupB中时,将groupB及groupB所属的group的zIndex减1
*/
toBack(): void;
}
export declare class GroupNode extends RectResizeView {
getControlGroup(): h.JSX.Element | null;
getAddableShape(): h.JSX.Element | null;
getFoldIcon(): h.JSX.Element | null;
getResizeShape(): h.JSX.Element;
}
declare const _default: {
type: string;
view: typeof GroupNode;
model: typeof GroupNodeModel;
};
export default _default;