Files
xyflow/packages/react/src/container/ReactFlow/Wrapper.tsx
2023-10-05 17:28:05 +02:00

38 lines
879 B
TypeScript

import { useContext, type ReactNode } from 'react';
import StoreContext from '../../contexts/RFStoreContext';
import ReactFlowProvider from '../../components/ReactFlowProvider';
import type { Node, Edge } from '../../types';
function Wrapper({
children,
nodes,
edges,
width,
height,
}: {
children: ReactNode;
nodes?: Node[];
edges?: Edge[];
width?: number;
height?: number;
}) {
const isWrapped = useContext(StoreContext);
if (isWrapped) {
// we need to wrap it with a fragment because it's not allowed for children to be a ReactNode
// https://github.com/DefinitelyTyped/DefinitelyTyped/issues/18051
return <>{children}</>;
}
return (
<ReactFlowProvider nodes={nodes} edges={edges} width={width} height={height}>
{children}
</ReactFlowProvider>
);
}
Wrapper.displayName = 'ReactFlowWrapper';
export default Wrapper;