import type { IARCProps, LogicalArcGraph, IGraphConnectionActions, IGraphEdge, IProcessedGraphNode, WCRectangle, GraphNodeId } from '@adam-sv/arc'; import { EdgeDirection } from '.'; import type { IGraphRenderContext } from '../Graph'; export type IEdgeRouterMode = 'straight' | 'straight-corners' | 'straight-midpoints-corners' | 'smart'; export interface IEdgeDataGeometry { arrowHeadPoints: string; edge: IGraphEdge; pathD: string; /** arrowHeadDirection will be used in CSS to make sure the arrowhead grows correctly when hovered. * * However, our logic only supports classNames within the `EdgeDirection` type, other names will have to be handled manually. */ arrowHeadDirection?: EdgeDirection | string; } export interface IEdgeRouterProps extends IARCProps { coordinateSpace: DOMRect; edgeMode: IEdgeRouterMode; edgeSpacing?: number; groupPadding?: number; getEdgeClassName?: (edge: IGraphEdge) => string | undefined; getPosition: (node: IProcessedGraphNode) => WCRectangle; getContentPosition?: (node: IProcessedGraphNode) => WCRectangle; graph: LogicalArcGraph; graphContext?: IGraphRenderContext; connectionActions?: IGraphConnectionActions; debug?: boolean; edgeRouterTimeAllowed?: number; }