onMouseDown(evt, { nodeId: handleId, setSourceId, setPosition, onConnect, isTarget: target })}
+ onMouseDown={evt => onMouseDown(evt, { nodeId: nodeIdWithHandleId, setSourceId, setPosition, onConnect, isTarget })}
{...rest}
/>
);
diff --git a/src/NodeRenderer/HandleTypes/Handle.js b/src/NodeRenderer/HandleTypes/Handle.js
new file mode 100644
index 00000000..1be0647b
--- /dev/null
+++ b/src/NodeRenderer/HandleTypes/Handle.js
@@ -0,0 +1,39 @@
+import React, { memo, useContext } from 'react';
+import PropTypes from 'prop-types';
+import { useStoreActions, useStoreState } from 'easy-peasy';
+
+import BaseHandle from './BaseHandle';
+import NodeIdContext from '../NodeIdContext'
+
+const Handle = memo((props) => {
+ const nodeId = useContext(NodeIdContext);
+ const { setPosition, setSourceId } = useStoreActions(a => ({
+ setPosition: a.setConnectionPosition,
+ setSourceId: a.setConnectionSourceId
+ }));
+ const onConnect = useStoreState(s => s.onConnect);
+
+ return (
+
+ );
+});
+
+Handle.displayName = 'Handle';
+
+Handle.propTypes = {
+ type: PropTypes.oneOf(['source', 'target']),
+ position: PropTypes.oneOf(['top', 'right', 'bottom', 'left']),
+};
+
+Handle.defaultProps = {
+ type: 'source',
+ position: 'top'
+};
+
+export default Handle;
diff --git a/src/NodeRenderer/HandleTypes/SourceHandle.js b/src/NodeRenderer/HandleTypes/SourceHandle.js
index 10b7d50d..d913dfac 100644
--- a/src/NodeRenderer/HandleTypes/SourceHandle.js
+++ b/src/NodeRenderer/HandleTypes/SourceHandle.js
@@ -14,7 +14,8 @@ const SourceHandle = memo((props) => {
return (
{
return (
(
-
+
{data.label}
-
+
);
diff --git a/src/NodeRenderer/NodeTypes/InputNode.js b/src/NodeRenderer/NodeTypes/InputNode.js
index fbe33935..e45bd739 100644
--- a/src/NodeRenderer/NodeTypes/InputNode.js
+++ b/src/NodeRenderer/NodeTypes/InputNode.js
@@ -1,6 +1,6 @@
import React from 'react';
-import SourceHandle from '../HandleTypes/SourceHandle';
+import Handle from '../HandleTypes/Handle';
const nodeStyles = {
background: '#9999ff',
@@ -15,6 +15,6 @@ export default ({ data, style }) => (
className="react-graph__node-inner"
>
{data.label}
-
+
);
diff --git a/src/NodeRenderer/NodeTypes/OutputNode.js b/src/NodeRenderer/NodeTypes/OutputNode.js
index 785e98be..7f89509c 100644
--- a/src/NodeRenderer/NodeTypes/OutputNode.js
+++ b/src/NodeRenderer/NodeTypes/OutputNode.js
@@ -1,6 +1,6 @@
import React from 'react';
-import TargetHandle from '../HandleTypes/TargetHandle';
+import Handle from '../HandleTypes/TargetHandle';
const nodeStyles = {
background: '#55dd99',
@@ -11,7 +11,7 @@ const nodeStyles = {
export default ({ data, style }) => (