feat(core): allow passing node ids as string to getConnectedEdges

Signed-off-by: braks <78412429+bcakmakoglu@users.noreply.github.com>
This commit is contained in:
braks
2023-04-11 20:28:02 +02:00
committed by Braks
parent c1fc2b1e79
commit b3addf63d2
+8 -5
View File
@@ -364,25 +364,28 @@ export function getNodesInside(
}) })
} }
export function getConnectedEdges<N extends Node | { id: string }, E extends Edge>(nodes: N[], edges: E[]) { export function getConnectedEdges<N extends Node | { id: string } | string, E extends Edge>(nodes: N[], edges: E[]) {
const nodeIds = nodes.map((node) => node.id) const nodeIds = nodes.map((node) => (isString(node) ? node : node.id))
return edges.filter((edge) => nodeIds.includes(edge.source) || nodeIds.includes(edge.target)) return edges.filter((edge) => nodeIds.includes(edge.source) || nodeIds.includes(edge.target))
} }
export function getConnectedNodes<N extends Node | { id: string }, E extends Edge>(nodes: N[], edges: E[]) { export function getConnectedNodes<N extends Node | { id: string } | string, E extends Edge>(nodes: N[], edges: E[]) {
const nodeIds = nodes.map((node) => node.id) const nodeIds = nodes.map((node) => (isString(node) ? node : node.id))
const connectedNodeIds = edges.reduce((acc, edge) => { const connectedNodeIds = edges.reduce((acc, edge) => {
if (nodeIds.includes(edge.source)) { if (nodeIds.includes(edge.source)) {
acc.add(edge.target) acc.add(edge.target)
} }
if (nodeIds.includes(edge.target)) { if (nodeIds.includes(edge.target)) {
acc.add(edge.source) acc.add(edge.source)
} }
return acc return acc
}, new Set<string>()) }, new Set<string>())
return nodes.filter((node) => connectedNodeIds.has(node.id)) return nodes.filter((node) => connectedNodeIds.has(isString(node) ? node : node.id))
} }
export function getTransformForBounds( export function getTransformForBounds(