UNPKG

d3-graph-controller

Version:

A TypeScript library for visualizing and simulating directed, interactive graphs.

66 lines (65 loc) 2.1 kB
import { NodeTypeToken } from '../model/graph.mjs'; import { GraphLink } from '../model/link.mjs'; import { GraphNode } from '../model/node.mjs'; /** * Simulation force. */ export interface Force<Subject> { /** * Whether the force is enabled. */ readonly enabled: boolean; /** * The strength of the force. * Can be a static number or a function receiving the force's subject and returning a number. */ readonly strength: number | ((subject: Subject) => number); } /** * Simulation force applied to nodes. */ export type NodeForce<T extends NodeTypeToken, Node extends GraphNode<T>> = Force<Node>; /** * Collision force applied to nodes. */ export interface CollisionForce<T extends NodeTypeToken, Node extends GraphNode<T>> extends NodeForce<T, Node> { /** * Multiplier of the node radius. * Tip: Large values can drastically reduce link intersection. */ readonly radiusMultiplier: number; } /** * Simulation force applied to links. */ export interface LinkForce<T extends NodeTypeToken, Node extends GraphNode<T>, Link extends GraphLink<T, Node>> extends Force<Link> { /** * Define the length of a link for the simulation. */ readonly length: number | ((link: Link) => number); } /** * Simulation force configuration. */ export interface SimulationForceConfig<T extends NodeTypeToken, Node extends GraphNode<T>, Link extends GraphLink<T, Node>> { /** * Centering force applied to nodes. */ readonly centering: false | NodeForce<T, Node>; /** * Charge force applied to nodes. */ readonly charge: false | NodeForce<T, Node>; /** * Collision force applied to nodes. */ readonly collision: false | CollisionForce<T, Node>; /** * Link force applied to links. */ readonly link: false | LinkForce<T, Node, Link>; } /** * Create the default force configuration. */ export declare function createDefaultForceConfig<T extends NodeTypeToken, Node extends GraphNode<T>, Link extends GraphLink<T, Node>>(): SimulationForceConfig<T, Node, Link>;