import "@flowgram.ai/free-layout-editor/index.css" import { useNodeRender, WorkflowNodeRenderer, type WorkflowNodeProps, } from "@flowgram.ai/free-layout-editor" import { useLayoutEffect } from "react" import { cn } from "@/lib/utils" import { useWorkflowPortAdd } from "./workflow-port-add-context" export function FlowgramNodeRenderer(props: WorkflowNodeProps) { const { selected, node, form } = useNodeRender() const requestPortAdd = useWorkflowPortAdd() const nodeType = String(node.flowNodeType ?? "") useLayoutEffect(() => { if (nodeType !== "condition") return const frame = window.requestAnimationFrame(() => { node.ports.updateDynamicPorts() }) return () => window.cancelAnimationFrame(frame) }) return ( { if (port.portType !== "output" || typeof event === "function") { return } event.stopPropagation() requestPortAdd?.({ sourcePort: port, event }) }} > {form?.render()} ) }