refactor(lib): forward ref closes #1050

This commit is contained in:
moklick
2021-03-30 12:20:44 +02:00
parent 7b9d5eea13
commit 4a3a6a3a62
+12 -5
View File
@@ -1,4 +1,4 @@
import React, { useMemo, CSSProperties, HTMLAttributes, MouseEvent, WheelEvent } from 'react'; import React, { useMemo, CSSProperties, HTMLAttributes, MouseEvent, WheelEvent, forwardRef } from 'react';
import cc from 'classcat'; import cc from 'classcat';
import GraphView from '../GraphView'; import GraphView from '../GraphView';
@@ -119,7 +119,11 @@ export interface ReactFlowProps extends Omit<HTMLAttributes<HTMLDivElement>, 'on
edgeTypesId?: string; edgeTypesId?: string;
} }
const ReactFlow = ({ export type ReactFlowRefType = HTMLDivElement;
const ReactFlow = forwardRef<ReactFlowRefType, ReactFlowProps>(
(
{
elements = [], elements = [],
className, className,
nodeTypes = defaultNodeTypes, nodeTypes = defaultNodeTypes,
@@ -190,13 +194,15 @@ const ReactFlow = ({
nodeTypesId = '1', nodeTypesId = '1',
edgeTypesId = '1', edgeTypesId = '1',
...rest ...rest
}: ReactFlowProps) => { },
ref
) => {
const nodeTypesParsed = useMemo(() => createNodeTypes(nodeTypes), [nodeTypesId]); const nodeTypesParsed = useMemo(() => createNodeTypes(nodeTypes), [nodeTypesId]);
const edgeTypesParsed = useMemo(() => createEdgeTypes(edgeTypes), [edgeTypesId]); const edgeTypesParsed = useMemo(() => createEdgeTypes(edgeTypes), [edgeTypesId]);
const reactFlowClasses = cc(['react-flow', className]); const reactFlowClasses = cc(['react-flow', className]);
return ( return (
<div {...rest} className={reactFlowClasses}> <div {...rest} ref={ref} className={reactFlowClasses}>
<Wrapper> <Wrapper>
<GraphView <GraphView
onLoad={onLoad} onLoad={onLoad}
@@ -269,7 +275,8 @@ const ReactFlow = ({
</Wrapper> </Wrapper>
</div> </div>
); );
}; }
);
ReactFlow.displayName = 'ReactFlow'; ReactFlow.displayName = 'ReactFlow';