dagre-compound
Version:
A multi-level compound graph layout library based on dagre
83 lines (82 loc) • 1.92 kB
TypeScript
import { Edge, GraphEdge, GraphLabel, graphlib } from 'dagre';
import { BaseNode } from '../core/graph';
import { Hierarchy } from '../core/hierarchy';
import { SafeAny } from './any';
export interface GraphOptions {
directed?: boolean | undefined;
multigraph?: boolean | undefined;
compound?: boolean | undefined;
}
export interface IGraphLabel extends GraphLabel {
name?: string;
type?: string | number;
}
export declare enum NodeType {
META = 0,
NODE = 1,
BRIDGE = 2
}
export declare enum InclusionType {
INCLUDE = 0,
EXCLUDE = 1,
UNSPECIFIED = 2
}
export declare enum GraphType {
META = 0,
CORE = 1,
BRIDGE = 2
}
export interface GraphDef {
nodes: NodeDef[];
}
export interface NodeDef {
name: SafeAny;
inputs: NodeInputDef[];
path: SafeAny[];
attr?: AttrDef;
width?: number;
height?: number;
}
export interface NodeInputDef {
name: SafeAny;
attr?: AttrDef;
}
export interface AttrDef {
[key: string]: SafeAny;
}
export interface BaseEdge {
w: SafeAny;
v: SafeAny;
name?: string;
}
export interface BridgeNode extends Node {
inbound: boolean;
}
export interface Node {
name: SafeAny;
path?: SafeAny[];
type: NodeType;
isGroupNode: boolean;
cardinality: number;
parentNode: Node;
include: InclusionType;
attr: AttrDef;
width?: number;
height?: number;
}
export interface MetaNode extends GroupNode {
depth: number;
path: SafeAny[];
getFirstChild(): GroupNode | Node;
getChildren(): Array<GroupNode | BaseNode>;
leaves(): SafeAny[];
}
export interface MetaEdge extends Edge, GraphEdge {
baseEdgeList: BaseEdge[];
inbound?: boolean;
addBaseEdge(edge: BaseEdge, h: Hierarchy): void;
}
export interface GroupNode extends Node {
metaGraph: graphlib.Graph<GroupNode | BaseNode>;
bridgeGraph: graphlib.Graph<GroupNode | BaseNode>;
}