import type { FC } from 'react'
import type { Edge } from 'reactflow'
import ReactFlow, {
Background,
ReactFlowProvider,
useEdgesState,
useNodesState,
useReactFlow,
} from 'reactflow'
import 'reactflow/dist/style.css'
import {
WorkflowContext,
useWorkflowContext,
} from './context'
import { useWorkflow } from './hooks'
import Header from './header'
import CustomNode, {
Panel,
} from './nodes'
import CustomEdge from './custom-edge'
import type { Node } from './types'
const nodeTypes = {
custom: CustomNode,
}
const edgeTypes = {
custom: CustomEdge,
}
const Workflow = () => {
const {
nodes,
edges,
} = useWorkflowContext()
return (
)
}
type WorkflowWrapProps = {
selectedNodeId?: string
nodes: Node[]
edges: Edge[]
}
const WorkflowWrap: FC = ({
nodes: initialNodes,
edges: initialEdges,
selectedNodeId: initialSelectedNodeId,
}) => {
const reactFlow = useReactFlow()
const [nodes, setNodes] = useNodesState(initialNodes)
const [edges, setEdges] = useEdgesState(initialEdges)
const {
selectedNodeId,
handleSelectedNodeIdChange,
selectedNode,
handleAddNextNode,
} = useWorkflow(
nodes,
edges,
setNodes,
setEdges,
initialSelectedNodeId,
)
return (
)
}
const WorkflowWrapWithReactFlowProvider: FC = ({
selectedNodeId,
nodes,
edges,
}) => {
return (
{selectedNodeId}
)
}
export default WorkflowWrapWithReactFlowProvider