import * as vec2 from 'zrender/lib/core/vector.js';
|
import { RectLike } from 'zrender/lib/core/BoundingRect.js';
|
interface InputNode {
|
p?: vec2.VectorArray;
|
fixed?: boolean;
|
/**
|
* Weight
|
*/
|
w: number;
|
/**
|
* Repulsion
|
*/
|
rep: number;
|
}
|
interface InputEdge {
|
ignoreForceLayout?: boolean;
|
n1: InputNode;
|
n2: InputNode;
|
/**
|
* Distance
|
*/
|
d: number;
|
}
|
interface LayoutCfg {
|
gravity?: number;
|
friction?: number;
|
rect?: RectLike;
|
}
|
export declare function forceLayout<N extends InputNode, E extends InputEdge>(inNodes: N[], inEdges: E[], opts: LayoutCfg): {
|
warmUp: () => void;
|
setFixed: (idx: number) => void;
|
setUnfixed: (idx: number) => void;
|
/**
|
* Before step hook
|
*/
|
beforeStep: (cb: (nodes: N[], edges: E[]) => void) => void;
|
/**
|
* After step hook
|
*/
|
afterStep: (cb: (nodes: N[], edges: E[], finished: boolean) => void) => void;
|
/**
|
* Some formulas were originally copied from "d3.js"
|
* https://github.com/d3/d3/blob/b516d77fb8566b576088e73410437494717ada26/src/layout/force.js
|
* with some modifications made for this project.
|
* See the license statement at the head of this file.
|
*/
|
step: (cb?: (finished: boolean) => void) => void;
|
};
|
export {};
|