import { PlainObject } from './common.js'; import { EdgeLabelPos } from './edge-label.js'; import { ID } from './id.js'; import { Point } from './point.js'; import { Size } from './size.js'; interface GraphData { nodes: N[]; edges?: E[]; } interface NodeData extends PlainObject { } interface EdgeData extends PlainObject { } interface GraphNode { id: ID; x: number; y: number; z?: number; /** Applied for compound layout(dagre、antv-dagre、combo-combined) */ parentId?: ID | null; isCombo?: boolean; /** Applied for force-directed layout */ fx?: number | null; fy?: number | null; fz?: number | null; vx?: number; vy?: number; vz?: number; /** Output additional info */ size?: Size; _original: N; [key: string]: any; } interface GraphEdge { id: ID; source: ID; target: ID; sourceNode?: GraphNode; targetNode?: GraphNode; _original: E; /** Only for dagre layout */ points?: Point[]; labelSize?: Size; labelPos?: EdgeLabelPos; labelOffset?: number; weight?: number; minLen?: number; [key: string]: any; } interface Graph { nodes: Map>; edges: Map>; } type LayoutNode = GraphNode; type LayoutEdge = GraphEdge; type LayoutData = Graph; export type { EdgeData, Graph, GraphData, GraphEdge, GraphNode, LayoutData, LayoutEdge, LayoutNode, NodeData };