True if this node can be expanded to show more neighbors.
Nodes that were inserted by expanding this node.
All invisible neighboring nodes (upstream and downstream). Will be unions if called on a person. Will be persons if called on a union.
True if this node represents a person.
True if this node represents a union (family).
All neighboring nodes (upstream and downstream).
All visible downstream nodes. Will be unions if called on a person. Will be persons if called on a union.
All visible neighboring nodes (upstream and downstream). Will be unions if called on a person. Will be persons if called on a union.
All visible upstream nodes. Will be unions if called on a person. Will be persons if called on a union.
All visible partner nodes (other parents of shared children). Will always be persons.
Handles a click event on this node, toggling expansion/collapse.
Collapses this node, hiding its neighbors and previously inserted nodes.
If true, resets the insertedBy property of hidden neighbors.
Expands this node to show its neighbors and previously inserted nodes.
If true, marks newly visible neighbors as inserted by this node.
Returns the IDs of all visible parent nodes.
Extends GraphNode with additional properties and methods for interactive family tree visualization. ClickableNode instances represent nodes in the graph that can be expanded, collapsed, and interacted with. In an ideal world, this would be a class definition. Unfortunately, d3-dag doesn't do classes, so we're stuck with this ugly hack. We extend d3-dag's node definition with custom methods and properties by using JavaScript's prototype augmentation feature (see augmentD3DAGNodeClass).