import React, { useContext, useMemo } from 'react' import FlowContext from '../../lib/flowContext' import { ArrowDownLeft, ArrowUpRight } from 'lucide-react' const NODE_HAS_INPUT: Record = { config: true, function: true, render: true, variable: false, } const NODE_HAS_OUTPUT: Record = { config: true, function: true, render: true, variable: true, } type Props = { nodeId: string nodeType: 'config' | 'function' | 'render' | 'variable' children?: React.ReactNode } export function NodeFooterEdgeIndicators({ nodeId, nodeType, children }: Props) { const ctx = useContext(FlowContext) const edges = ctx?.edges ?? [] const { inputs, outputs } = useMemo(() => { let inputs = 0 let outputs = 0 for (const e of edges) { if (e.target === nodeId) inputs += 1 if (e.source === nodeId) outputs += 1 } return { inputs, outputs } }, [edges, nodeId]) const showInput = NODE_HAS_INPUT[nodeType] ?? false const showOutput = NODE_HAS_OUTPUT[nodeType] ?? false return (
{showInput && ( {inputs} )} {showOutput && ( {outputs} )} {children != null && ( <> {(showInput || showOutput) && |} {children} )}
) }