refactor(graphview): extend react flow props

This commit is contained in:
moklick
2020-11-09 22:00:26 +01:00
parent e1ae70e779
commit d06868ecde
3 changed files with 14 additions and 63 deletions
+1
View File
@@ -20,6 +20,7 @@ interface FlowRendererProps
| 'connectionLineType' | 'connectionLineType'
| 'arrowHeadColor' | 'arrowHeadColor'
| 'onlyRenderVisibleNodes' | 'onlyRenderVisibleNodes'
| 'selectNodesOnDrag'
> { > {
children: ReactNode; children: ReactNode;
} }
+10 -60
View File
@@ -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,
+3 -3
View File
@@ -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;