Merge pull request #4718 from xyflow/fix/use-nodes-data
fix useNodesData returning undefined in svelte flow
This commit is contained in:
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
'@xyflow/svelte': patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Fixed hook useNodesData unexpectedly returning undefined
|
||||||
@@ -21,7 +21,7 @@ export type UppercaseNode = Node<{ text: string }, 'uppercase'>;
|
|||||||
export type MyNode = TextNode | ResultNode | UppercaseNode;
|
export type MyNode = TextNode | ResultNode | UppercaseNode;
|
||||||
|
|
||||||
export function isTextNode(node: any): node is TextNode | UppercaseNode {
|
export function isTextNode(node: any): node is TextNode | UppercaseNode {
|
||||||
return node.type === 'text' || node.type === 'uppercase';
|
return !node || !node.type ? false : node.type === 'text' || node.type === 'uppercase';
|
||||||
}
|
}
|
||||||
|
|
||||||
const nodeTypes = {
|
const nodeTypes = {
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
type ResultNodeType = Node<{}, 'result'>;
|
type ResultNodeType = Node<{}, 'result'>;
|
||||||
|
|
||||||
export function isTextNode(node: any): node is TextNodeType | UppercaseNode {
|
export function isTextNode(node: any): node is TextNodeType | UppercaseNode {
|
||||||
return node.type === 'text' || node.type === 'uppercase';
|
return !node || !node.type ? false : node.type === 'text' || node.type === 'uppercase';
|
||||||
}
|
}
|
||||||
|
|
||||||
export type MyNode = TextNodeType | UppercaseNodeType | ResultNodeType;
|
export type MyNode = TextNodeType | UppercaseNodeType | ResultNodeType;
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ export function useNodesData(nodeIds: any): any {
|
|||||||
const { nodes, nodeLookup } = useStore();
|
const { nodes, nodeLookup } = useStore();
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
let prevNodesData: any[] = [];
|
let prevNodesData: any[] = [];
|
||||||
|
let initialRun = true;
|
||||||
|
|
||||||
return derived([nodes, nodeLookup], ([, nodeLookup], set) => {
|
return derived([nodes, nodeLookup], ([, nodeLookup], set) => {
|
||||||
const nextNodesData = [];
|
const nextNodesData = [];
|
||||||
@@ -39,9 +40,10 @@ export function useNodesData(nodeIds: any): any {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!shallowNodeData(nextNodesData, prevNodesData)) {
|
if (!shallowNodeData(nextNodesData, prevNodesData) || initialRun) {
|
||||||
prevNodesData = nextNodesData;
|
prevNodesData = nextNodesData;
|
||||||
set(isArrayOfIds ? nextNodesData : nextNodesData[0] ?? null);
|
set(isArrayOfIds ? nextNodesData : nextNodesData[0] ?? null);
|
||||||
|
initialRun = false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user