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 | Node[], options?: ActionOptions) => void; /** * 移除指定 id 的节点 * @param id 要移除的节点 id */ deleteNode: (id: string) => void; /** * 删除节点元素 * @param id 要删除的节点 id */ deleteNodes: (ids: string[]) => void; /** * 批量删除节点 * @param ids 要批量删除的节点 id */ updateNodeMeta: (id: string, key: T, value: MetaData[T], options?: ActionOptions) => void; /** * 更新节点状态 * @param id 要更新的节点 id * @param key 要更新的状态键名 * @param value 要更新的状态值 * @param options 节点操作的选项 */ updateNodeState: (id: string, key: T, value: NodeState[T], options?: ActionOptions) => void; /** * 更新节点内容 * @param id 要更新的节点 id * @param key 要更新的内容键名 * @param value 要更新的内容值 * @param options 节点操作的选项 */ updateNodeContent: (id: string, key: keyof T, value: T[keyof T], options?: ActionOptions) => void; /** * 更新节点数据 * @param id 要更新的节点 id * @param newData 要更新的数据 * @param forceReplace 是否强制替换整个数据 * @param options 节点操作的选项 */ updateNodeData: (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;