@ant-design/pro-flow
Version:
A React based Flow components
71 lines (70 loc) • 2.63 kB
TypeScript
import { Node, NodeChange } from 'reactflow';
import { StateCreator } from 'zustand';
import { ActionOptions, ActionPayload, FlattenNodes, MetaData, NodeState } from '../../types';
import { FlowEditorStore } from '../actions';
import { NodeDispatch } from '../reducers/node';
/**
* 公共节点操作接口
*/
export interface PublicNodesAction {
/**
* 分发节点操作
* @param payload 节点操作的载荷
* @param options 节点操作的选项
*/
dispatchNodes: (payload: NodeDispatch, options?: ActionOptions) => void;
/**
* 添加节点到指定位置
* @param node 要添加的节点
* @param index 要添加到的位置,默认为末尾
*/
addNode: (node: Node, index?: number) => void;
addNodes: (nodes: Record<string, Node> | Node[], options?: ActionOptions) => void;
/**
* 移除指定 id 的节点
* @param id 要移除的节点 id
*/
deleteNode: (id: string) => void;
/**
* 删除节点元素
* @param id 要删除的节点 id
*/
deleteNodes: (ids: string[]) => void;
/**
* 批量删除节点
* @param ids 要批量删除的节点 id
*/
updateNodeMeta: <T extends keyof MetaData>(id: string, key: T, value: MetaData[T], options?: ActionOptions) => void;
/**
* 更新节点状态
* @param id 要更新的节点 id
* @param key 要更新的状态键名
* @param value 要更新的状态值
* @param options 节点操作的选项
*/
updateNodeState: <T extends keyof NodeState>(id: string, key: T, value: NodeState[T], options?: ActionOptions) => void;
/**
* 更新节点内容
* @param id 要更新的节点 id
* @param key 要更新的内容键名
* @param value 要更新的内容值
* @param options 节点操作的选项
*/
updateNodeContent: <T extends object>(id: string, key: keyof T, value: T[keyof T], options?: ActionOptions) => void;
/**
* 更新节点数据
* @param id 要更新的节点 id
* @param newData 要更新的数据
* @param forceReplace 是否强制替换整个数据
* @param options 节点操作的选项
*/
updateNodeData: <T extends object>(id: string, newData: T, forceReplace?: boolean, options?: ActionOptions) => void;
}
export interface NodesSlice extends PublicNodesAction {
internalUpdateNodes: (flattenNodes: FlattenNodes, payload: ActionPayload) => void;
handleNodesChange: (changes: NodeChange[]) => void;
}
export declare const nodesSlice: StateCreator<FlowEditorStore, [
['zustand/devtools', never]
], [
], NodesSlice>;