d3-dag
Version:
Layout algorithms for visualizing directed acylic graphs.
65 lines (64 loc) • 2.02 kB
TypeScript
/**
* A {@link Lane} that assigns lanes to minimize edge crossings.
*
* @packageDocumentation
*/
import { Lane } from ".";
import { OptChecking } from "../../layout";
/**
* a lane operator that assigns lanes to minimize edge crossings.
*
* Create with {@link laneOpt}.
*/
export interface LaneOpt extends Lane<unknown, unknown> {
/**
* set whether to used compressed output
*
* If output is compressed then the number of crossings will be minimized
* subject to the fewest number of lanes necessary.
*
* (default: `false`)
*/
compressed(val: boolean): LaneOpt;
/** get the current compressed setting */
compressed(): boolean;
/**
* set whether to also minimize distance between connected nodes
*
* This adds more variables and constraints so will take longer, but will
* likely produce a better layout.
*
* (default: `true`)
*/
dist(val: boolean): LaneOpt;
/** get whether the current layout minimized distance */
dist(): boolean;
/**
* set the large dag handling
*
* Setting to anything but `"fast"` will allow running on larger dags, but
* the layout may run forever, or crash the vm.
*
* (default: `"fast"`)
*/
check(val: OptChecking): LaneOpt;
/** Return the handling of large graphs. */
check(): OptChecking;
/** @internal flag indicating that this is built in to d3dag and shouldn't error in specific instances */
readonly d3dagBuiltin: true;
}
/**
* create a default {@link LaneOpt}
*
* This {@link Lane} operator optimally minimizes edge crossings, but can take
* a long time and may crash on large graphs. The {@link LaneOpt#check} option
* is set to error if the graph is too big. {@link LaneOpt#compressed} and
* {@link LaneOpt#dist} slightly tweak the resulting layout.
*
* @example
*
* ```ts
* const builder = grid().lane(laneOpt().compressed(true));
* ```
*/
export declare function laneOpt(...args: never[]): LaneOpt;