refactor(edgeWrapper): cleanup
This commit is contained in:
@@ -5,32 +5,33 @@ import { setSelectedElements } from '../../state/actions';
|
|||||||
import { isInputNode } from '../../utils';
|
import { isInputNode } from '../../utils';
|
||||||
|
|
||||||
export default EdgeComponent => {
|
export default EdgeComponent => {
|
||||||
const WrappedEdge = memo((props) => {
|
const EdgeWrapper = memo((props) => {
|
||||||
const {
|
const {
|
||||||
source, target, animated, type,
|
source, target, animated, type,
|
||||||
dispatch, selected, onClick
|
dispatch, selected, onClick
|
||||||
} = props;
|
} = props;
|
||||||
const edgeClasses = cx('react-graph__edge', { selected, animated: animated });
|
const edgeClasses = cx('react-graph__edge', { selected, animated });
|
||||||
|
const onEdgeClick = (evt) => {
|
||||||
|
if (isInputNode(evt)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
dispatch(setSelectedElements({ source, target }));
|
||||||
|
onClick({ source, target, type });
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<g
|
<g
|
||||||
className={edgeClasses}
|
className={edgeClasses}
|
||||||
onClick={(e) => {
|
onClick={onEdgeClick}
|
||||||
if (isInputNode(e)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
dispatch(setSelectedElements({ source, target }));
|
|
||||||
onClick({ source, target, type });
|
|
||||||
}}
|
|
||||||
>
|
>
|
||||||
<EdgeComponent {...props} />
|
<EdgeComponent {...props} />
|
||||||
</g>
|
</g>
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
WrappedEdge.displayName = 'Wrapped Edge';
|
EdgeWrapper.displayName = 'EdgeWrapper';
|
||||||
WrappedEdge.whyDidYouRender = false;
|
EdgeWrapper.whyDidYouRender = false;
|
||||||
|
|
||||||
return WrappedEdge;
|
return EdgeWrapper;
|
||||||
};
|
};
|
||||||
|
|||||||
+4
-6
@@ -2,9 +2,7 @@ export const isFunction = obj => !!(obj && obj.constructor && obj.call && obj.ap
|
|||||||
|
|
||||||
export const isInputNode = e => e && e.target && ['INPUT', 'SELECT', 'TEXTAREA'].includes(e.target.nodeName);
|
export const isInputNode = e => e && e.target && ['INPUT', 'SELECT', 'TEXTAREA'].includes(e.target.nodeName);
|
||||||
|
|
||||||
export const getDimensions = (node) => {
|
export const getDimensions = (node = {}) => ({
|
||||||
return {
|
width: node.offsetWidth,
|
||||||
width: node.offsetWidth,
|
height: node.offsetHeight
|
||||||
height: node.offsetHeight
|
});
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|||||||
Reference in New Issue
Block a user