Skip to content

Commit

Permalink
refactor(connectionLine): create connection line type enum
Browse files Browse the repository at this point in the history
  • Loading branch information
moklick committed May 29, 2020
1 parent 714c916 commit c620d0f
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 15 deletions.
10 changes: 5 additions & 5 deletions src/components/ConnectionLine/index.tsx
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import React, { useEffect, useState, CSSProperties } from 'react';
import cx from 'classnames';

import { ElementId, Node, Transform, HandleElement, Position } from '../../types';
import { ElementId, Node, Transform, HandleElement, Position, ConnectionLineType } from '../../types';

interface ConnectionLineProps {
connectionSourceId: ElementId;
connectionPositionX: number;
connectionPositionY: number;
connectionLineType?: string | null;
connectionLineType: ConnectionLineType;
nodes: Node[];
transform: Transform;
isInteractive: boolean;
Expand All @@ -17,10 +17,10 @@ interface ConnectionLineProps {

export default ({
connectionSourceId,
connectionLineStyle = {},
connectionLineStyle,
connectionPositionX,
connectionPositionY,
connectionLineType,
connectionLineType = ConnectionLineType.Bezier,
nodes = [],
className,
transform,
Expand Down Expand Up @@ -60,7 +60,7 @@ export default ({

let dAttr: string = '';

if (connectionLineType === 'bezier') {
if (connectionLineType === ConnectionLineType.Bezier) {
if (sourceHandle?.position === Position.Left || sourceHandle?.position === Position.Right) {
const xOffset = Math.abs(targetX - sourceX) / 2;
const centerX = targetX < sourceX ? targetX + xOffset : targetX - xOffset;
Expand Down
4 changes: 2 additions & 2 deletions src/container/EdgeRenderer/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@ import React, { memo, CSSProperties } from 'react';
import { useStoreState } from '../../store/hooks';
import ConnectionLine from '../../components/ConnectionLine/index';
import { isEdge } from '../../utils/graph';
import { XYPosition, Position, Edge, Node, ElementId, HandleElement, Elements } from '../../types';
import { XYPosition, Position, Edge, Node, ElementId, HandleElement, Elements, ConnectionLineType } from '../../types';

interface EdgeRendererProps {
width: number;
height: number;
edgeTypes: any;
connectionLineType: ConnectionLineType;
connectionLineStyle?: CSSProperties;
connectionLineType?: string;
onElementClick?: (element: Node | Edge) => void;
}

Expand Down
15 changes: 12 additions & 3 deletions src/container/GraphView/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,16 @@ import useGlobalKeyHandler from '../../hooks/useGlobalKeyHandler';
import useElementUpdater from '../../hooks/useElementUpdater';
import { getDimensions } from '../../utils';
import { fitView, zoomIn, zoomOut, project } from '../../utils/graph';
import { Elements, NodeTypesType, EdgeTypesType, OnLoadFunc, Node, Edge, Connection } from '../../types';
import {
Elements,
NodeTypesType,
EdgeTypesType,
OnLoadFunc,
Node,
Edge,
Connection,
ConnectionLineType,
} from '../../types';

export interface GraphViewProps {
elements: Elements;
Expand All @@ -26,8 +35,8 @@ export interface GraphViewProps {
selectionKeyCode: number;
nodeTypes: NodeTypesType;
edgeTypes: EdgeTypesType;
connectionLineType: string;
connectionLineStyle: CSSProperties;
connectionLineType: ConnectionLineType;
connectionLineStyle?: CSSProperties;
deleteKeyCode: number;
snapToGrid: boolean;
snapGrid: [number, number];
Expand Down
18 changes: 13 additions & 5 deletions src/container/ReactFlow/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,16 @@ import StraightEdge from '../../components/Edges/StraightEdge';
import StepEdge from '../../components/Edges/StepEdge';
import { createEdgeTypes } from '../EdgeRenderer/utils';
import store from '../../store';
import { Elements, NodeTypesType, EdgeTypesType, OnLoadFunc, Node, Edge, Connection } from '../../types';
import {
Elements,
NodeTypesType,
EdgeTypesType,
OnLoadFunc,
Node,
Edge,
Connection,
ConnectionLineType,
} from '../../types';

import '../../style.css';

Expand All @@ -36,8 +45,8 @@ export interface ReactFlowProps extends Omit<HTMLAttributes<HTMLDivElement>, 'on
onSelectionChange?: (elements: Elements | null) => void;
nodeTypes: NodeTypesType;
edgeTypes: EdgeTypesType;
connectionLineType: string;
connectionLineStyle: CSSProperties;
connectionLineType: ConnectionLineType;
connectionLineStyle?: CSSProperties;
deleteKeyCode: number;
selectionKeyCode: number;
snapToGrid: boolean;
Expand Down Expand Up @@ -119,8 +128,7 @@ ReactFlow.defaultProps = {
straight: StraightEdge,
step: StepEdge,
},
connectionLineType: 'bezier',
connectionLineStyle: {},
connectionLineType: ConnectionLineType.Bezier,
deleteKeyCode: 8,
selectionKeyCode: 16,
snapToGrid: false,
Expand Down
5 changes: 5 additions & 0 deletions src/types/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,11 @@ export interface Connection {
target: ElementId | null;
}

export enum ConnectionLineType {
Bezier = 'bezier',
Straight = 'straight',
}

export type OnConnectFunc = (connection: Connection) => void;

export interface HandleElement extends XYPosition, Dimensions {
Expand Down

0 comments on commit c620d0f

Please sign in to comment.