feat(edge-labels): add div based renderer

This commit is contained in:
moklick
2022-11-02 14:38:37 +01:00
parent 674127a3eb
commit 095e1fbe81
10 changed files with 352 additions and 0 deletions
@@ -0,0 +1,15 @@
import { useRef } from 'react';
import type { ReactNode } from 'react';
import { createPortal } from 'react-dom';
function EdgeLabelRenderer({ children }: { children: ReactNode }) {
const wrapperRef = useRef(document.getElementById('edgelabel-portal'));
if (!wrapperRef.current) {
return null;
}
return createPortal(children, wrapperRef.current);
}
export default EdgeLabelRenderer;
@@ -158,6 +158,8 @@ const GraphView = ({
disableKeyboardA11y={disableKeyboardA11y}
rfId={rfId}
/>
<div className="react-flow__edgelabel-renderer" id="edgelabel-portal" />
<NodeRenderer
nodeTypes={nodeTypes}
onNodeClick={onNodeClick}
+1
View File
@@ -24,6 +24,7 @@ export { applyNodeChanges, applyEdgeChanges } from './utils/changes';
export { getMarkerEnd } from './components/Edges/utils';
export { default as ReactFlowProvider } from './components/ReactFlowProvider';
export { default as Panel } from './components/Panel';
export { default as EdgeLabelRenderer } from './components/EdgeLabelRenderer';
export { default as useReactFlow } from './hooks/useReactFlow';
export { default as useUpdateNodeInternals } from './hooks/useUpdateNodeInternals';
+7
View File
@@ -220,3 +220,10 @@
stroke-dashoffset: 10;
}
}
.react-flow__edgelabel-renderer {
position: absolute;
width: 100%;
height: 100%;
pointer-events: none;
}