/** * Bidirectional Tidy-Tree Layout Algorithm for Generic Diagrams * * This module provides a layout algorithm implementation using the * non-layered-tidy-tree-layout algorithm for positioning nodes and edges * in tree structures with a bidirectional approach. * * The algorithm creates two separate trees that grow horizontally in opposite * directions from a central root node: * - Left tree: grows horizontally to the left (children alternate: 1st, 3rd, 5th...) * - Right tree: grows horizontally to the right (children alternate: 2nd, 4th, 6th...) * * This creates a balanced, symmetric layout that is ideal for mindmaps, * organizational charts, and other tree-based diagrams. * * The algorithm follows the unified rendering pattern and can be used * by any diagram type that provides compatible LayoutData. */ /** * Render function for the bidirectional tidy-tree layout algorithm * * This function follows the unified rendering pattern used by all layout algorithms. * It takes LayoutData, inserts nodes into DOM, runs the bidirectional tidy-tree layout algorithm, * and renders the positioned elements to the SVG. * * Features: * - Alternates root children between left and right trees * - Left tree grows horizontally to the left (rotated 90° counterclockwise) * - Right tree grows horizontally to the right (rotated 90° clockwise) * - Uses tidy-tree algorithm for optimal spacing within each tree * - Creates symmetric, balanced layouts * - Maintains proper edge connections between all nodes * * Layout Structure: * ``` * [Child 3] ← [Child 1] ← [Root] → [Child 2] → [Child 4] * ↓ ↓ ↓ ↓ * [GrandChild] [GrandChild] [GrandChild] [GrandChild] * ``` * * @param layoutData - Layout data containing nodes, edges, and configuration * @param svg - SVG element to render to * @param helpers - Internal helper functions for rendering * @param options - Rendering options */ export { default } from './layouts.js'; export * from './types.js'; export * from './layout.js'; export { render } from './render.js';