refactor(nodes): only use node internals

This commit is contained in:
moklick
2021-11-18 13:01:11 +01:00
parent f0e79c634a
commit 0974aa5732
21 changed files with 171 additions and 151 deletions
+3 -3
View File
@@ -27,7 +27,7 @@ interface ConnectionLineProps {
CustomConnectionLineComponent?: ConnectionLineComponent;
}
const selector = (s: ReactFlowState) => ({ nodeInternals: s.nodeInternals, nodes: s.nodes, transform: s.transform });
const selector = (s: ReactFlowState) => ({ nodeInternals: s.nodeInternals, transform: s.transform });
export default ({
connectionNodeId,
@@ -43,9 +43,9 @@ export default ({
const nodeId = connectionNodeId;
const handleId = connectionHandleId;
const { nodeInternals, nodes, transform } = useStore(selector, shallow);
const { nodeInternals, transform } = useStore(selector, shallow);
const sourceNodeInternals = useRef<NodeInternalsItem | undefined>(nodeInternals.get(nodeId));
const sourceNode = useRef<Node | undefined>(nodes.find((n) => n.id === nodeId));
const sourceNode = useRef<Node | undefined>(nodeInternals.get(nodeId));
if (
!sourceNode.current ||
+1 -7
View File
@@ -56,7 +56,7 @@ export default (NodeComponent: ComponentType<NodeProps>) => {
unselectNodesAndEdges,
unsetNodesSelection,
updateNodePosition,
updateNodeDimensions,
// updateNodeDimensions,
} = useStore(selector, shallow);
const nodeElement = useRef<HTMLDivElement>(null);
@@ -201,12 +201,6 @@ export default (NodeComponent: ComponentType<NodeProps>) => {
[node, onNodeDoubleClick]
);
useEffect(() => {
if (nodeElement.current && (!isHidden || !isInitialized)) {
updateNodeDimensions([{ id, nodeElement: nodeElement.current, forceUpdate: true }]);
}
}, [id, isHidden, sourcePosition, targetPosition, type, isInitialized]);
useEffect(() => {
if (nodeElement.current) {
const currNode = nodeElement.current;
+4 -2
View File
@@ -15,12 +15,14 @@ export interface NodesSelectionProps {
onSelectionDragStop?: (event: MouseEvent, nodes: Node[]) => void;
onSelectionContextMenu?: (event: MouseEvent, nodes: Node[]) => void;
}
// @TODO: work with nodeInternals instead of converting it to an array
const selector = (s: ReactFlowState) => ({
transform: s.transform,
selectedNodesBbox: s.selectedNodesBbox,
selectionActive: s.selectionActive,
selectedNodes: s.nodes.filter((n) => n.selected),
selectedNodes: Array.from(s.nodeInternals)
.filter(([_, n]) => n.selected)
.map(([_, n]) => n),
snapToGrid: s.snapToGrid,
snapGrid: s.snapGrid,
updateNodePosition: s.updateNodePosition,
+4 -1
View File
@@ -8,8 +8,11 @@ interface SelectionListenerProps {
onSelectionChange: OnSelectionChangeFunc;
}
// @TODO: work with nodeInternals instead of converting it to an array
const selectedElementsSelector = (s: ReactFlowState) => ({
selectedNodes: s.nodes.filter((n) => n.selected),
selectedNodes: Array.from(s.nodeInternals)
.filter(([_, n]) => n.selected)
.map(([_, node]) => node),
selectedEdges: s.edges.filter((e) => e.selected),
});