refactor(lib): forward ref closes #1050
This commit is contained in:
@@ -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';
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user