|
|
|
@@ -1,12 +1,4 @@
|
|
|
|
|
import {
|
|
|
|
|
isNodeBase,
|
|
|
|
|
isEdgeBase,
|
|
|
|
|
addEdgeBase,
|
|
|
|
|
getOutgoersBase,
|
|
|
|
|
getIncomersBase,
|
|
|
|
|
updateEdgeBase,
|
|
|
|
|
getConnectedEdgesBase
|
|
|
|
|
} from '@xyflow/system';
|
|
|
|
|
import { isNodeBase, isEdgeBase } from '@xyflow/system';
|
|
|
|
|
|
|
|
|
|
import type { Edge, Node } from '$lib/types';
|
|
|
|
|
|
|
|
|
@@ -17,7 +9,8 @@ import type { Edge, Node } from '$lib/types';
|
|
|
|
|
* @param element - The element to test
|
|
|
|
|
* @returns A boolean indicating whether the element is an Node
|
|
|
|
|
*/
|
|
|
|
|
export const isNode = isNodeBase<Node>;
|
|
|
|
|
export const isNode = <NodeType extends Node = Node>(element: unknown): element is NodeType =>
|
|
|
|
|
isNodeBase<NodeType>(element);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Test whether an object is useable as an Edge
|
|
|
|
@@ -26,52 +19,5 @@ export const isNode = isNodeBase<Node>;
|
|
|
|
|
* @param element - The element to test
|
|
|
|
|
* @returns A boolean indicating whether the element is an Edge
|
|
|
|
|
*/
|
|
|
|
|
export const isEdge = isEdgeBase<Edge>;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Pass in a node, and get connected nodes where edge.source === node.id
|
|
|
|
|
* @public
|
|
|
|
|
* @param node - The node to get the connected nodes from
|
|
|
|
|
* @param nodes - The array of all nodes
|
|
|
|
|
* @param edges - The array of all edges
|
|
|
|
|
* @returns An array of nodes that are connected over eges where the source is the given node
|
|
|
|
|
*/
|
|
|
|
|
export const getOutgoers = getOutgoersBase<Node, Edge>;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Pass in a node, and get connected nodes where edge.target === node.id
|
|
|
|
|
* @public
|
|
|
|
|
* @param node - The node to get the connected nodes from
|
|
|
|
|
* @param nodes - The array of all nodes
|
|
|
|
|
* @param edges - The array of all edges
|
|
|
|
|
* @returns An array of nodes that are connected over eges where the target is the given node
|
|
|
|
|
*/
|
|
|
|
|
export const getIncomers = getIncomersBase<Node, Edge>;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* This util is a convenience function to add a new Edge to an array of edges
|
|
|
|
|
* @remarks It also performs some validation to make sure you don't add an invalid edge or duplicate an existing one.
|
|
|
|
|
* @public
|
|
|
|
|
* @param edgeParams - Either an Edge or a Connection you want to add
|
|
|
|
|
* @param edges - The array of all current edges
|
|
|
|
|
* @returns A new array of edges with the new edge added
|
|
|
|
|
*/
|
|
|
|
|
export const addEdge = addEdgeBase<Edge>;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* A handy utility to update an existing Edge with new properties
|
|
|
|
|
* @param oldEdge - The edge you want to update
|
|
|
|
|
* @param newConnection - The new connection you want to update the edge with
|
|
|
|
|
* @param edges - The array of all current edges
|
|
|
|
|
* @param options.shouldReplaceId - should the id of the old edge be replaced with the new connection id
|
|
|
|
|
* @returns the updated edges array
|
|
|
|
|
*/
|
|
|
|
|
export const updateEdge = updateEdgeBase<Edge>;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get all connecting edges for a given set of nodes
|
|
|
|
|
* @param nodes - Nodes you want to get the connected edges for
|
|
|
|
|
* @param edges - All edges
|
|
|
|
|
* @returns Array of edges that connect any of the given nodes with each other
|
|
|
|
|
*/
|
|
|
|
|
export const getConnectedEdges = getConnectedEdgesBase<Node, Edge>;
|
|
|
|
|
export const isEdge = <EdgeType extends Edge = Edge>(element: unknown): element is EdgeType =>
|
|
|
|
|
isEdgeBase<EdgeType>(element);
|
|
|
|
|