@rxflow/base
Version:
BaseFlow - 核心 Flow 组件库
46 lines (44 loc) • 1.5 kB
JavaScript
/**
* @author: yanxianliang
* @date: 2025-07-02 11:40
* @desc: 获取节点类型定义
*
* Copyright (c) 2025 by yanxianliang, All Rights Reserved.
*/
import { useMemo } from "react";
import { InputNode } from "../components/Nodes/InputNode";
import { DefaultNode } from "../components/Nodes/DefaultNode";
import { OutputNode } from "../components/Nodes/OutputNode";
import { GroupNode } from "../components/Nodes/GroupNode";
import { nodeRenderFactory } from "../components/NodeRenderFactory";
/**
* 将外部节点定义解析成 reactflow 需要的结构
*/
export var useNodeTypes = function useNodeTypes(nodeTypeList) {
return useMemo(function () {
// inner nodes
var nodeTypes = {
input: InputNode,
default: DefaultNode,
output: OutputNode,
group: GroupNode
};
if (nodeTypeList && Array.isArray(nodeTypeList)) {
for (var i = 0; i < nodeTypeList.length; i++) {
var item = nodeTypeList[i];
if (item && item.type && item.component) {
var type = item.type,
component = item.component,
defaultSize = item.defaultSize,
measureHandles = item.measureHandles;
var nodeType = nodeRenderFactory(component);
// defaultSize 和 measureHandles绑定
nodeType.defaultSize = defaultSize;
nodeType.measureHandles = measureHandles;
nodeTypes[type] = nodeType; // 高阶组件
}
}
}
return nodeTypes;
}, [nodeTypeList]);
};