import { Node, Edge, Connection, ViewportHelperFunctions } from "reactflow"; import dagre from "dagre"; import { UpdateStepType } from "../hooks/useBaseFlow"; import { MagicFlow } from "../types/flow"; export declare const Ranksep = 100; export declare const Nodesep = 100; export declare function getNodeCenter(node: Node): { x: number; y: number; }; export declare function getEdgeHandlePosition(sourceNode: Node, targetNode: Node): { sx: number; sy: number; tx: number; ty: number; }; export declare const getAllPredecessors: (curNode: MagicFlow.Node, nodes: Node[], edges: Edge[], predecessors?: MagicFlow.Node[]) => MagicFlow.Node[]; export declare const getAllPostNodes: (curNode: MagicFlow.Node, nodes: MagicFlow.Node[], edges: Edge[], postNodes?: MagicFlow.Node[]) => MagicFlow.Node[]; export declare function sortByEdges(nodes: MagicFlow.Node[], edges: Edge[]): MagicFlow.Node[]; /** 进行dagre实际布局 */ export declare const dagreLayout: (direction: string, nodes: MagicFlow.Node[], edges: Edge[]) => dagre.graphlib.Graph<{}>; export declare const getLayoutElements: (_nodes: MagicFlow.Node[], _edges: Edge[], direction: string, paramsName: MagicFlow.ParamsName) => { nodes: MagicFlow.Node[]; edges: Edge[]; }; /** * 更新步骤数据 * @type {*} 类型,通过连线还是删除连线 * @connection {*} 当前连线 * @nodeConfig {*} 节点配置 * @returns */ type UpdateTargetNodesStepProps = { type: UpdateStepType; connection: Connection | Edge; nodeConfig: Record; nodes: MagicFlow.Node[]; edges: Edge[]; beforeStep?: number; }; export declare const updateTargetNodesStep: ({ type, connection, nodeConfig, nodes, edges, beforeStep }: UpdateTargetNodesStepProps) => void; /** * 校验是否存在执行节点不在流程运行范围内(如果有节点不会被执行,则会做提示) */ export declare const checkHasNodeOutOfFlow: (nodes: MagicFlow.Node[], edges: Edge[]) => boolean; /** 计算所有节点的中点 */ export declare const calculateMidpoint: (nodes: MagicFlow.Node[]) => { x: number; y: number; }; /** 在分组内新增节点时,获取节点的实际渲染坐标 */ export declare const getSubNodePosition: (event: any, screenToFlowPosition: ViewportHelperFunctions['screenToFlowPosition'], parentNode: MagicFlow.Node) => { x: number; y: number; }; /** * 生成拷贝后的节点和边 * @param nodeConfig 当前节点完整配置 * @param selectionNodes 选中的节点 * @param selectionEdges 选中的边 * @param paramsName 自定义字段 * @returns */ export declare const generatePasteNodesAndEdges: (nodeConfig: Record, selectionNodes: MagicFlow.Node[], selectionEdges: Edge[], paramsName: MagicFlow.ParamsName) => { pasteEdges: Edge[]; pasteNodes: MagicFlow.Node[]; }; export {};