File size: 1,106 Bytes
bc20498
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import { derived } from 'svelte/store';
import { shallowNodeData } from '@xyflow/system';
import { useStore } from '../store';
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export function useNodesData(nodeIds) {
    const { nodes, nodeLookup } = useStore();
    // eslint-disable-next-line @typescript-eslint/no-explicit-any
    let prevNodesData = [];
    return derived([nodes, nodeLookup], ([, nodeLookup], set) => {
        const nextNodesData = [];
        const isArrayOfIds = Array.isArray(nodeIds);
        const _nodeIds = isArrayOfIds ? nodeIds : [nodeIds];
        for (const nodeId of _nodeIds) {
            const node = nodeLookup.get(nodeId)?.internals.userNode;
            if (node) {
                nextNodesData.push({
                    id: node.id,
                    type: node.type,
                    data: node.data
                });
            }
        }
        if (!shallowNodeData(nextNodesData, prevNodesData)) {
            prevNodesData = nextNodesData;
            set(isArrayOfIds ? nextNodesData : nextNodesData[0] ?? null);
        }
    });
}