import { BaseType, Selection, SelectionOrTransition, ValueFn } from "d3"; import * as dagre from "dagre"; import * as graphlib from "graphlib"; export as namespace dagreD3; export { dagre as dagre, graphlib as graphlib }; export interface Point { x: number; y: number; } export const intersect: { node: (node: dagre.Node, point: any) => any; circle: ( node: dagre.Node, rx: number, point: Point, ) => Point; ellipse: ( node: dagre.Node, rx: number, ry: number, point: Point, ) => Point; polygon: ( node: dagre.Node, polyPoints: Point[], point: Point, ) => Point; rect: ( node: dagre.Node, point: Point, ) => Point; }; export const render: { new(): Render }; export const util: { isSubgraph: (g: dagre.graphlib.Graph, v: string) => boolean; edgeToId: (e: { v: string; w: string; name: string }) => string; applyStyle: ( dom: Selection, styleFn: ValueFn, ) => void; applyClass: ( dom: Selection, classFn: ValueFn, otherClasses: string, ) => void; applyTransition: ( selection: Selection, g: dagre.graphlib.Graph, ) => SelectionOrTransition; }; export type CreateNodes = ( selection: Selection, g: dagre.graphlib.Graph, shapes: Shapes, ) => SelectionOrTransition; export type CreateClusters = ( selection: Selection, g: dagre.graphlib.Graph, ) => SelectionOrTransition; export type CreateEdgeLabels = ( selection: Selection, g: dagre.graphlib.Graph, ) => SelectionOrTransition; export type CreateEdgePaths = ( selection: Selection, g: dagre.graphlib.Graph, arrows: Arrows, ) => SelectionOrTransition; export type Arrow = ( parent: Selection, id: string, edge: dagre.Edge, type: string, ) => void; export interface Arrows { [arrowStyleName: string]: Arrow; } export type Shape = ( parent: Selection, bbox: any, node: dagre.Node, ) => Selection; export interface Shapes { [shapeStyleName: string]: Shape; } export interface Render { // see https://dagrejs.github.io/project/dagre-d3/latest/demo/user-defined.html for example usage (selection: Selection, g: dagre.graphlib.Graph): void; createNodes(): CreateNodes; createNodes(value: CreateNodes): Render; createClusters(): CreateClusters; createClusters(value: CreateClusters): Render; createEdgeLabels(): CreateEdgeLabels; createEdgeLabels(value: CreateEdgeLabels): Render; createEdgePaths(): CreateEdgePaths; createEdgePaths(value: CreateEdgePaths): Render; arrows(): Arrows; arrows(value: Arrows): Render; shapes(): Shapes; shapes(value: Shapes): Render; }