feat(handle): onConnect cb

This commit is contained in:
moklick
2019-09-16 18:33:15 +02:00
parent dbf617a9b5
commit 4d97a7939f
3 changed files with 41 additions and 13 deletions
+17 -6
View File
@@ -34094,7 +34094,10 @@
var Consumer = NodeIdContext.Consumer; var Consumer = NodeIdContext.Consumer;
Provider.displayName = 'NodeIdProvider'; Provider.displayName = 'NodeIdProvider';
var Handle = React.memo(function (props) { var Handle = React.memo(function (_ref) {
var onConnect = _ref.onConnect,
rest = _objectWithoutProperties(_ref, ["onConnect"]);
var nodeId = React.useContext(NodeIdContext); var nodeId = React.useContext(NodeIdContext);
var _useStoreActions = useStoreActions(function (a) { var _useStoreActions = useStoreActions(function (a) {
@@ -34106,24 +34109,32 @@
setPosition = _useStoreActions.setPosition, setPosition = _useStoreActions.setPosition,
setSourceId = _useStoreActions.setSourceId; setSourceId = _useStoreActions.setSourceId;
var onConnect = useStoreState(function (s) { var onConnectAction = useStoreState(function (s) {
return s.onConnect; return s.onConnect;
}); });
var onConnectExtended = function onConnectExtended(params) {
onConnectAction(params);
onConnect(params);
};
return React__default.createElement(BaseHandle, _extends$1({ return React__default.createElement(BaseHandle, _extends$1({
nodeId: nodeId, nodeId: nodeId,
setPosition: setPosition, setPosition: setPosition,
setSourceId: setSourceId, setSourceId: setSourceId,
onConnect: onConnect onConnect: onConnectExtended
}, props)); }, rest));
}); });
Handle.displayName = 'Handle'; Handle.displayName = 'Handle';
Handle.propTypes = { Handle.propTypes = {
type: PropTypes.oneOf(['source', 'target']), type: PropTypes.oneOf(['source', 'target']),
position: PropTypes.oneOf(['top', 'right', 'bottom', 'left']) position: PropTypes.oneOf(['top', 'right', 'bottom', 'left']),
onConnect: PropTypes.func
}; };
Handle.defaultProps = { Handle.defaultProps = {
type: 'source', type: 'source',
position: 'top' position: 'top',
onConnect: function onConnect() {}
}; };
var nodeStyles = { var nodeStyles = {
+13 -2
View File
@@ -7,8 +7,19 @@ const SpecialNode = ({ data, styles }) => (
<div <div
style={{ background: '#FFCC00', padding: 10, borderRadius: 2, ...styles }} style={{ background: '#FFCC00', padding: 10, borderRadius: 2, ...styles }}
> >
<Handle type="target" position="top" id="a" style={{ left: 10, background: '#999' }} /> <Handle
<Handle type="target" position="top" id="b" style={{ left: 30, background: '#999' }} /> type="target"
position="top"
id="a"
style={{ left: 10, background: '#999' }}
onConnect={params => console.log('handle onConnect', params)}
/>
<Handle
type="target"
position="top"
id="b"
style={{ left: 30, background: '#999' }}
/>
<div>I am <strong>special</strong>!<br />{data.label}</div> <div>I am <strong>special</strong>!<br />{data.label}</div>
<select onChange={(e) => data.onChange(e.target.value, data)}> <select onChange={(e) => data.onChange(e.target.value, data)}>
<option value="1">1</option> <option value="1">1</option>
+11 -5
View File
@@ -5,21 +5,25 @@ import { useStoreActions, useStoreState } from 'easy-peasy';
import BaseHandle from './BaseHandle'; import BaseHandle from './BaseHandle';
import NodeIdContext from '../NodeIdContext' import NodeIdContext from '../NodeIdContext'
const Handle = memo((props) => { const Handle = memo(({ onConnect, ...rest }) => {
const nodeId = useContext(NodeIdContext); const nodeId = useContext(NodeIdContext);
const { setPosition, setSourceId } = useStoreActions(a => ({ const { setPosition, setSourceId } = useStoreActions(a => ({
setPosition: a.setConnectionPosition, setPosition: a.setConnectionPosition,
setSourceId: a.setConnectionSourceId setSourceId: a.setConnectionSourceId
})); }));
const onConnect = useStoreState(s => s.onConnect); const onConnectAction = useStoreState(s => s.onConnect);
const onConnectExtended = (params) => {
onConnectAction(params);
onConnect(params);
};
return ( return (
<BaseHandle <BaseHandle
nodeId={nodeId} nodeId={nodeId}
setPosition={setPosition} setPosition={setPosition}
setSourceId={setSourceId} setSourceId={setSourceId}
onConnect={onConnect} onConnect={onConnectExtended}
{...props} {...rest}
/> />
); );
}); });
@@ -29,11 +33,13 @@ Handle.displayName = 'Handle';
Handle.propTypes = { Handle.propTypes = {
type: PropTypes.oneOf(['source', 'target']), type: PropTypes.oneOf(['source', 'target']),
position: PropTypes.oneOf(['top', 'right', 'bottom', 'left']), position: PropTypes.oneOf(['top', 'right', 'bottom', 'left']),
onConnect: PropTypes.func
}; };
Handle.defaultProps = { Handle.defaultProps = {
type: 'source', type: 'source',
position: 'top' position: 'top',
onConnect: () => {}
}; };
export default Handle; export default Handle;