diff --git a/src/NodeRenderer/NodeTypes/wrapNode.js b/src/NodeRenderer/NodeTypes/wrapNode.js index 70b2d503..edf9d2ce 100644 --- a/src/NodeRenderer/NodeTypes/wrapNode.js +++ b/src/NodeRenderer/NodeTypes/wrapNode.js @@ -16,7 +16,7 @@ export default NodeComponent => (props) => { const { position } = __rg; const { id } = data; const [ x, y, k ] = graphContext.state.transform; - const selected = graphContext.state.selectedNodes.includes(id); + const selected = graphContext.state.selectedNodeIds.includes(id); const nodeClasses = cx('react-graph__node', { selected }); useEffect(() => { diff --git a/src/Selection/index.js b/src/Selection/index.js index e6cf73f3..81794caf 100644 --- a/src/Selection/index.js +++ b/src/Selection/index.js @@ -10,13 +10,14 @@ const initialRect = { y: 0, width: 0, height: 0, - draw: false + draw: false, + fixed: false }; export default () => { const selectionPane = useRef(null); const [rect, setRect] = useState(initialRect); - const { dispatch } = useContext(GraphContext); + const { dispatch, state } = useContext(GraphContext); useEffect(() => { function onMouseDown(evt) { @@ -56,8 +57,16 @@ export default () => { } function onMouseUp() { - setRect(initialRect); - dispatch(setSelection(false)); + setRect((r) => { + const nextRect = { + ...r, + fixed: true + }; + + dispatch(updateSelection(nextRect)); + + return nextRect; + }); } selectionPane.current.addEventListener('mousedown', onMouseDown); @@ -71,18 +80,21 @@ export default () => { }; }, []); + const selectionRect = rect.fixed ? state.selectedNodesBbox : rect; + console.log(selectionRect) + return (