How erikbrinkman/d3-dag works
d3-dag is a TypeScript library for laying out directed acyclic graphs. A caller creates or parses a graph, chooses a layout operator (including the dagre-compatible adapter), and receives node coordinates and link points on the graph. The Sugiyama operator assigns layers, reduces crossings, then assigns coordinates; Grid and Zherebko offer alternative layouts. The graph API also supports construction, traversal, and serialization. Several algorithm-family connections are documented or visible through imports, but their internal calls were not sampled, so those links are marked unverified.
Main entry points: sugiyama/index.ts Sugiyama layout · dagre.ts Dagre adapter · grid/index.ts Grid layout · zherebko/index.ts Zherebko layout
Components 19
Graph model
- DAG model
src/graph/index.ts - Graph builders
src/graph - Graph JSON
src/graph/json.ts
Layout APIs
- Dagre adapter
src/dagre.ts - Sugiyama layout
src/sugiyama/index.ts
Sugiyama stages
- Layer assignment
src/sugiyama/layering - Layer expansion
src/sugiyama/sugify.ts - Crossing reduction
src/sugiyama/decross - Coordinate assignment
src/sugiyama/coord
Alternative layouts
- Grid layout
src/grid/index.ts - Zherebko layout
src/zherebko/index.ts - Grid lane ordering
src/grid/lane - Topological ordering
src/zherebko/greedy.ts
Shared utilities
- Layout sizing
src/layout.ts - Layout tweaks
src/tweaks.ts - Iterator helpers
src/iters.ts - Collection helpers
src/collections.ts
Other components
- Library caller
- Laid-out graph
Connections 28
- Library caller → Graph builders: builds or parses
README.md - Graph builders → DAG model: creates
src/graph/stratify.ts - Library caller → Dagre adapter: chooses adapter
README.md - Library caller → Sugiyama layout: chooses operator
README.md - Library caller → Grid layout: chooses operator
README.md - Library caller → Zherebko layout: chooses operator
README.md - Dagre adapter → DAG model: uses graph
src/dagre.ts - Dagre adapter → Sugiyama layout: delegates layout
src/dagre.ts - Dagre adapter → Grid layout: delegates layout
src/dagre.ts - Sugiyama layout → Layer assignment: assigns layers
src/sugiyama/index.ts - Sugiyama layout → Layer expansion: expands layers
src/sugiyama/index.ts - Sugiyama layout → Crossing reduction: reduces crossings
src/sugiyama/index.ts - Sugiyama layout → Coordinate assignment: assigns coordinates
src/sugiyama/index.ts - Grid layout → Grid lane ordering: orders lanes
src/grid/index.ts - Zherebko layout → Topological ordering: orders nodes
src/zherebko/index.ts - Sugiyama layout → Layout sizing: uses sizing
src/sugiyama/index.ts - Grid layout → Layout tweaks: applies tweaks
src/grid/index.ts - Sugiyama layout → Layout tweaks: applies tweaks
src/sugiyama/index.ts - Zherebko layout → Layout tweaks: applies tweaks
src/zherebko/index.ts - DAG model → Graph JSON: serializes through
src/graph/index.ts - Sugiyama layout → Laid-out graph: returns layout
README.md - Grid layout → Laid-out graph: returns layout
README.md - Zherebko layout → Laid-out graph: returns layout
README.md - Dagre adapter → Laid-out graph: returns layout
README.md - Layer assignment → Iterator helpers: uses helpers
src/sugiyama/layering/simplex.ts - Crossing reduction → Iterator helpers: uses helpers
src/sugiyama/decross/opt.ts - Coordinate assignment → Iterator helpers: uses helpers
src/sugiyama/coord/simplex.ts - DAG model → Collection helpers: uses collections
src/graph/index.ts