chore(node-toolbar): cleanup
This commit is contained in:
@@ -1,13 +1,17 @@
|
|||||||
import { NodeToolbar, useNodes } from 'reactflow';
|
import { NodeToolbar, ReactFlowState, useStore } from 'reactflow';
|
||||||
|
|
||||||
|
const selectedNodesSelector = (state: ReactFlowState) =>
|
||||||
|
Array.from(state.nodeInternals.values())
|
||||||
|
.filter((node) => node.selected)
|
||||||
|
.map((node) => node.id);
|
||||||
|
|
||||||
export default function SelectedNodesToolbar() {
|
export default function SelectedNodesToolbar() {
|
||||||
const nodes = useNodes();
|
const selectedNodeIds = useStore(selectedNodesSelector);
|
||||||
const selectedNodeIds = nodes.filter((node) => node.selected).map((node) => node.id);
|
|
||||||
const isVisible = selectedNodeIds.length > 1;
|
const isVisible = selectedNodeIds.length > 1;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<NodeToolbar nodeId={selectedNodeIds} isVisible={isVisible}>
|
<NodeToolbar nodeId={selectedNodeIds} isVisible={isVisible}>
|
||||||
<button>Group selected nodes</button>
|
<button>Selection action</button>
|
||||||
</NodeToolbar>
|
</NodeToolbar>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -72,17 +72,19 @@ function NodeToolbar({
|
|||||||
offset = 10,
|
offset = 10,
|
||||||
...rest
|
...rest
|
||||||
}: NodeToolbarProps) {
|
}: NodeToolbarProps) {
|
||||||
const nodeIds: string[] = typeof nodeId === 'string' ? [nodeId] : nodeId;
|
|
||||||
const nodesSelector = useCallback(
|
const nodesSelector = useCallback(
|
||||||
(state: ReactFlowState): Node[] =>
|
(state: ReactFlowState): Node[] => {
|
||||||
nodeIds.reduce<Node[]>((acc, id) => {
|
const nodeIds: string[] = typeof nodeId === 'string' ? [nodeId] : nodeId;
|
||||||
|
|
||||||
|
return nodeIds.reduce<Node[]>((acc, id) => {
|
||||||
const node = state.nodeInternals.get(id);
|
const node = state.nodeInternals.get(id);
|
||||||
if (node) {
|
if (node) {
|
||||||
acc.push(node);
|
acc.push(node);
|
||||||
}
|
}
|
||||||
return acc;
|
return acc;
|
||||||
}, [] as Node[]),
|
}, [] as Node[]);
|
||||||
[nodeIds]
|
},
|
||||||
|
[nodeId]
|
||||||
);
|
);
|
||||||
const nodes = useStore(nodesSelector, nodesEqualityFn);
|
const nodes = useStore(nodesSelector, nodesEqualityFn);
|
||||||
const { transform, nodeOrigin, selectedNodesCount } = useStore(storeSelector, shallow);
|
const { transform, nodeOrigin, selectedNodesCount } = useStore(storeSelector, shallow);
|
||||||
|
|||||||
Reference in New Issue
Block a user