fix: access the edge-label-renderer by reactflow's id
This commit is contained in:
@@ -1,9 +1,13 @@
|
|||||||
import { useRef } from 'react';
|
import { useRef } from 'react';
|
||||||
import type { ReactNode } from 'react';
|
import type { ReactNode } from 'react';
|
||||||
import { createPortal } from 'react-dom';
|
import { createPortal } from 'react-dom';
|
||||||
|
import { useStoreApi } from '../../hooks/useStore';
|
||||||
|
import { getEdgeLabelRendererId } from '../../utils/graph';
|
||||||
|
|
||||||
function EdgeLabelRenderer({ children }: { children: ReactNode }) {
|
function EdgeLabelRenderer({ children }: { children: ReactNode }) {
|
||||||
const wrapperRef = useRef(document.getElementById('edgelabel-portal'));
|
const store = useStoreApi()
|
||||||
|
const state = store.getState()
|
||||||
|
const wrapperRef = useRef(document.getElementById(getEdgeLabelRendererId(state.rfId)));
|
||||||
|
|
||||||
if (!wrapperRef.current) {
|
if (!wrapperRef.current) {
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import EdgeRenderer from '../EdgeRenderer';
|
|||||||
import ViewportWrapper from '../Viewport';
|
import ViewportWrapper from '../Viewport';
|
||||||
import useOnInitHandler from '../../hooks/useOnInitHandler';
|
import useOnInitHandler from '../../hooks/useOnInitHandler';
|
||||||
import type { EdgeTypesWrapped, NodeTypesWrapped, ReactFlowProps } from '../../types';
|
import type { EdgeTypesWrapped, NodeTypesWrapped, ReactFlowProps } from '../../types';
|
||||||
|
import { getEdgeLabelRendererId } from '../../utils/graph';
|
||||||
|
|
||||||
export type GraphViewProps = Omit<ReactFlowProps, 'onSelectionChange' | 'nodes' | 'edges' | 'nodeTypes' | 'edgeTypes'> &
|
export type GraphViewProps = Omit<ReactFlowProps, 'onSelectionChange' | 'nodes' | 'edges' | 'nodeTypes' | 'edgeTypes'> &
|
||||||
Required<
|
Required<
|
||||||
@@ -158,7 +159,7 @@ const GraphView = ({
|
|||||||
disableKeyboardA11y={disableKeyboardA11y}
|
disableKeyboardA11y={disableKeyboardA11y}
|
||||||
rfId={rfId}
|
rfId={rfId}
|
||||||
/>
|
/>
|
||||||
<div className="react-flow__edgelabel-renderer" id="edgelabel-portal" />
|
<div className="react-flow__edgelabel-renderer" id={getEdgeLabelRendererId(rfId)} />
|
||||||
|
|
||||||
<NodeRenderer
|
<NodeRenderer
|
||||||
nodeTypes={nodeTypes}
|
nodeTypes={nodeTypes}
|
||||||
|
|||||||
@@ -223,3 +223,7 @@ export const getTransformForBounds = (
|
|||||||
export const getD3Transition = (selection: D3Selection<Element, unknown, null, undefined>, duration = 0) => {
|
export const getD3Transition = (selection: D3Selection<Element, unknown, null, undefined>, duration = 0) => {
|
||||||
return selection.transition().duration(duration);
|
return selection.transition().duration(duration);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export function getEdgeLabelRendererId(id: string) {
|
||||||
|
return `edgelabel-portal-${id}`
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user