refactor(graphview): extend react flow props
This commit is contained in:
@@ -20,6 +20,7 @@ interface FlowRendererProps
|
|||||||
| 'connectionLineType'
|
| 'connectionLineType'
|
||||||
| 'arrowHeadColor'
|
| 'arrowHeadColor'
|
||||||
| 'onlyRenderVisibleNodes'
|
| 'onlyRenderVisibleNodes'
|
||||||
|
| 'selectNodesOnDrag'
|
||||||
> {
|
> {
|
||||||
children: ReactNode;
|
children: ReactNode;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import React, { useEffect, useRef, memo, CSSProperties, MouseEvent, WheelEvent } from 'react';
|
import React, { useEffect, useRef, memo } from 'react';
|
||||||
|
|
||||||
import { useStoreActions, useStore } from '../../store/hooks';
|
import { useStoreActions, useStore } from '../../store/hooks';
|
||||||
import FlowRenderer from '../FlowRenderer';
|
import FlowRenderer from '../FlowRenderer';
|
||||||
@@ -6,76 +6,26 @@ import NodeRenderer from '../NodeRenderer';
|
|||||||
import EdgeRenderer from '../EdgeRenderer';
|
import EdgeRenderer from '../EdgeRenderer';
|
||||||
import useElementUpdater from '../../hooks/useElementUpdater';
|
import useElementUpdater from '../../hooks/useElementUpdater';
|
||||||
import { onLoadProject, onLoadGetElements, onLoadToObject } from '../../utils/graph';
|
import { onLoadProject, onLoadGetElements, onLoadToObject } from '../../utils/graph';
|
||||||
import {
|
|
||||||
Elements,
|
|
||||||
NodeTypesType,
|
|
||||||
EdgeTypesType,
|
|
||||||
OnLoadFunc,
|
|
||||||
Node,
|
|
||||||
Edge,
|
|
||||||
Connection,
|
|
||||||
ConnectionLineType,
|
|
||||||
ConnectionLineComponent,
|
|
||||||
FlowTransform,
|
|
||||||
OnConnectStartFunc,
|
|
||||||
OnConnectStopFunc,
|
|
||||||
OnConnectEndFunc,
|
|
||||||
TranslateExtent,
|
|
||||||
} from '../../types';
|
|
||||||
import useZoomPanHelper from '../../hooks/useZoomPanHelper';
|
import useZoomPanHelper from '../../hooks/useZoomPanHelper';
|
||||||
|
|
||||||
export interface GraphViewProps {
|
import { ReactFlowProps } from '../ReactFlow';
|
||||||
elements: Elements;
|
|
||||||
onElementClick?: (event: MouseEvent, element: Node | Edge) => void;
|
import { NodeTypesType, EdgeTypesType, ConnectionLineType } from '../../types';
|
||||||
onElementsRemove?: (elements: Elements) => void;
|
|
||||||
onNodeMouseEnter?: (event: MouseEvent, node: Node) => void;
|
export interface GraphViewProps extends Omit<ReactFlowProps, 'onSelectionChange'> {
|
||||||
onNodeMouseMove?: (event: MouseEvent, node: Node) => void;
|
|
||||||
onNodeMouseLeave?: (event: MouseEvent, node: Node) => void;
|
|
||||||
onNodeContextMenu?: (event: MouseEvent, node: Node) => void;
|
|
||||||
onNodeDragStart?: (event: MouseEvent, node: Node) => void;
|
|
||||||
onNodeDragStop?: (event: MouseEvent, node: Node) => void;
|
|
||||||
onConnect?: (connection: Connection | Edge) => void;
|
|
||||||
onConnectStart?: OnConnectStartFunc;
|
|
||||||
onConnectStop?: OnConnectStopFunc;
|
|
||||||
onConnectEnd?: OnConnectEndFunc;
|
|
||||||
onLoad?: OnLoadFunc;
|
|
||||||
onMove?: (flowTransform?: FlowTransform) => void;
|
|
||||||
onMoveStart?: (flowTransform?: FlowTransform) => void;
|
|
||||||
onMoveEnd?: (flowTransform?: FlowTransform) => void;
|
|
||||||
onPaneScroll?: (event?: WheelEvent) => void;
|
|
||||||
onPaneClick?: (event: MouseEvent) => void;
|
|
||||||
onPaneContextMenu?: (event: MouseEvent) => void;
|
|
||||||
onSelectionDragStart?: (event: MouseEvent, nodes: Node[]) => void;
|
|
||||||
onSelectionDrag?: (event: MouseEvent, nodes: Node[]) => void;
|
|
||||||
onSelectionDragStop?: (event: MouseEvent, nodes: Node[]) => void;
|
|
||||||
onSelectionContextMenu?: (event: MouseEvent, nodes: Node[]) => void;
|
|
||||||
selectionKeyCode: number;
|
|
||||||
nodeTypes: NodeTypesType;
|
nodeTypes: NodeTypesType;
|
||||||
edgeTypes: EdgeTypesType;
|
edgeTypes: EdgeTypesType;
|
||||||
connectionLineType: ConnectionLineType;
|
selectionKeyCode: number;
|
||||||
connectionLineStyle?: CSSProperties;
|
|
||||||
connectionLineComponent?: ConnectionLineComponent;
|
|
||||||
deleteKeyCode: number;
|
deleteKeyCode: number;
|
||||||
multiSelectionKeyCode: number;
|
multiSelectionKeyCode: number;
|
||||||
|
connectionLineType: ConnectionLineType;
|
||||||
snapToGrid: boolean;
|
snapToGrid: boolean;
|
||||||
snapGrid: [number, number];
|
snapGrid: [number, number];
|
||||||
onlyRenderVisibleNodes: boolean;
|
onlyRenderVisibleNodes: boolean;
|
||||||
nodesDraggable?: boolean;
|
|
||||||
nodesConnectable?: boolean;
|
|
||||||
elementsSelectable?: boolean;
|
|
||||||
selectNodesOnDrag?: boolean;
|
|
||||||
minZoom?: number;
|
|
||||||
maxZoom?: number;
|
|
||||||
defaultZoom: number;
|
defaultZoom: number;
|
||||||
defaultPosition: [number, number];
|
defaultPosition: [number, number];
|
||||||
translateExtent?: TranslateExtent;
|
|
||||||
arrowHeadColor: string;
|
arrowHeadColor: string;
|
||||||
markerEndId?: string;
|
selectNodesOnDrag: boolean;
|
||||||
zoomOnScroll?: boolean;
|
|
||||||
panOnScroll?: boolean;
|
|
||||||
panOnScrollSpeed?: number;
|
|
||||||
zoomOnDoubleClick?: boolean;
|
|
||||||
paneMoveable?: boolean;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const GraphView = ({
|
const GraphView = ({
|
||||||
@@ -114,7 +64,7 @@ const GraphView = ({
|
|||||||
nodesDraggable,
|
nodesDraggable,
|
||||||
nodesConnectable,
|
nodesConnectable,
|
||||||
elementsSelectable,
|
elementsSelectable,
|
||||||
selectNodesOnDrag = true,
|
selectNodesOnDrag,
|
||||||
minZoom,
|
minZoom,
|
||||||
maxZoom,
|
maxZoom,
|
||||||
defaultZoom,
|
defaultZoom,
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
import { useMemo } from 'react';
|
import { useMemo } from 'react';
|
||||||
import { zoomIdentity } from 'd3-zoom';
|
import { zoomIdentity } from 'd3-zoom';
|
||||||
import { useStoreState, useStore } from '../store/hooks';
|
|
||||||
|
|
||||||
|
import { useStoreState, useStore } from '../store/hooks';
|
||||||
import { clamp } from '../utils';
|
import { clamp } from '../utils';
|
||||||
import { getRectOfNodes } from '../utils/graph';
|
import { getRectOfNodes } from '../utils/graph';
|
||||||
import { FitViewParams, FlowTransform } from '../types';
|
import { FitViewParams, FlowTransform } from '../types';
|
||||||
|
|
||||||
const initialHelpers = {
|
const initialZoomPanHelper = {
|
||||||
zoomIn: null,
|
zoomIn: null,
|
||||||
zoomOut: null,
|
zoomOut: null,
|
||||||
zoomTo: null,
|
zoomTo: null,
|
||||||
@@ -53,7 +53,7 @@ export default () => {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
return initialHelpers;
|
return initialZoomPanHelper;
|
||||||
}, [d3Zoom, d3Selection]);
|
}, [d3Zoom, d3Selection]);
|
||||||
|
|
||||||
return zoomPanHelperFunctions;
|
return zoomPanHelperFunctions;
|
||||||
|
|||||||
Reference in New Issue
Block a user