Spaces:
Build error
Build error
import { | |
memo, | |
useMemo, | |
} from 'react' | |
import type { NodeProps } from 'reactflow' | |
import type { Node } from '../types' | |
import { CUSTOM_NODE } from '../constants' | |
import { | |
NodeComponentMap, | |
PanelComponentMap, | |
} from './constants' | |
import BaseNode from './_base/node' | |
import BasePanel from './_base/panel' | |
const CustomNode = (props: NodeProps) => { | |
const nodeData = props.data | |
const NodeComponent = NodeComponentMap[nodeData.type] | |
return ( | |
<> | |
<BaseNode { ...props }> | |
<NodeComponent /> | |
</BaseNode> | |
</> | |
) | |
} | |
CustomNode.displayName = 'CustomNode' | |
export const Panel = memo((props: Node) => { | |
const nodeClass = props.type | |
const nodeData = props.data | |
const PanelComponent = useMemo(() => { | |
if (nodeClass === CUSTOM_NODE) | |
return PanelComponentMap[nodeData.type] | |
return () => null | |
}, [nodeClass, nodeData.type]) | |
if (nodeClass === CUSTOM_NODE) { | |
return ( | |
<BasePanel key={props.id} {...props}> | |
<PanelComponent /> | |
</BasePanel> | |
) | |
} | |
return null | |
}) | |
Panel.displayName = 'Panel' | |
export default memo(CustomNode) | |