Set of schema names the user has filtered IN. Null means "all".
Node IDs the user has clicked "+N more fields" on.
Derived — the Set of IDs in the focus/hover neighbourhood (null when no highlight active).
Node currently being hovered (for highlight preview).
Cached layout — recomputed when nodes, filter, search or expansion changes.
ReadonlyrootDerived schema summary for the chip row.
Search query string.
Derived — the single selected entity, if any.
Derived — total entities in the input, before any filtering.
Current pan + zoom.
Derived — number of entities currently visible.
Icon for the empty state — honours config.emptyStateIcon when provided.
Title for the empty state — distinguishes "nothing here" from "filtered to nothing".
Whether to render FK field labels along edges. Defaults to ON in
both layouts — the zoom-gate (>=0.55x) keeps the labels off when
the user is zoomed out far enough to see hundreds of entities, so
"noise on dense views" isn't a real concern. Consumers can still
force off via config.showRelationshipLabels: false.
Zoom percentage string for the toolbar readout.
Pick a point along the edge polyline for a label and approximate its width. Returns null for self-loops (no good place to put text). Uses the longest horizontal segment when one exists; falls back to the segment midpoint otherwise.
Path string for an edge — uses the orthogonal polyline from layout.
Number of FK fields — handy aggregate (kept for external API parity).
Short friendly row-count string (e.g. 1248 → "1.2k").
Whether a node should appear dimmed (highlight mode active, node not in set).
Whether an edge is part of the active highlight subgraph.
Whether an edge should appear dimmed.
Whether a node is the current focus (strong border).
Whether a node is a 1-hop neighbour of the focus (medium border).
A callback method that is invoked immediately after Angular has completed initialization of a component's view. It is invoked only once when the view is instantiated.
A callback method that is invoked immediately after the default change detector has checked data-bound properties if at least one has changed, and before the view and content children are checked.
The changed properties.
A callback method that performs custom clean-up, invoked immediately before a directive, pipe, or service instance is destroyed.
Mousedown anywhere on the SVG (background OR a node card). We arm a potential pan and attach window-level move/up listeners so the drag continues even if the cursor leaves the canvas (passes over the focus card, scrollbars, the chrome, etc.).
The actual panning = true flip happens in the move handler once
the cursor crosses DRAG_THRESHOLD — that way short clicks still
register as clicks on cards (no accidental selection-toggle from
a tiny mouse jitter).
Number of PK fields — handy aggregate (kept for external API parity).
Switch between the schema-grid and dagre hierarchical layouts at
runtime. Emits a state change so the consumer can persist the
user's preference (via userStateChange on mj-erd-composite).
Also clears the current focus/selection — switching layouts moves cards to entirely new positions, so the previously-selected entity would otherwise stay highlighted in a different spot with the side panel still open, which is jarring. A clean slate is better.
Optional_restorePositions: booleanOptional_padding: numberOptional_scale: number
Active layout algorithm. Starts from
config.layoutAlgorithm(defaultschema-grid) but can be toggled at runtime viasetLayoutAlgorithm. Exposed so the chrome toggle + saved user state can drive it.