new NodeObject( [parent])
These objects, or types of them, are used in composite patterns.
Each instance of module:qi-nodes.NodeObject is aware of
it's own position within a tree of objects. If any tree has a root,
that root is propagated to all leaves of that tree.
When a leaf is removed from a rooted tree, the previous root
reference is removed for all objects contained in that leaf.
Parameters:
| Name | Type | Argument | Description |
|---|---|---|---|
parent |
Object |
<optional> |
Optional parent object to append this object to |
Members
-
childCount :Object
-
Number of children in this object.
Type:
- Object
-
firstChild :Object
-
Reference to the first child object of this object.
Should never be falsey if this object has 1 or more children.Type:
- Object
-
lastChild :Object
-
Reference to the last child object of this object.
Should never be falsey if this object has 1 or more children.Type:
- Object
-
nextSibling :Object
-
Reference to the next object relative to this object
within the list of child objects of its parent.
Should always be falsey if this object has no parent.
If this object has a parent and this value is falsey,
then this object is the last child of its parent.Type:
- Object
-
parent :Object
-
Reference to this object's parent object.
Should never be falsey if this object is a child to another object.Type:
- Object
-
previousSibling :Object
-
Reference to the previous object relative to this object
within the list of child objects of its parent.
If this object has a parent and this value is falsey,
then this object is the first child of its parent.Type:
- Object
-
root :Object
-
When an object is rooted, this property is a reference to itself.
This is a unique property that is propagated through the leaves
of an object tree, but only from an object with its root set
to a truthy value.Type:
- Object
Methods
-
append(node [, parent])
-
Add the specified object as the
module:qi-nodes.NodeObject#lastChildof the parent object.
An object cannot be added to itself.Parameters:
Name Type Argument Description nodeObject The object to add to this object
parentObject <optional>
The object to add the object to, defaults to this object
Throws:
Returns:
The object added
- Type
- Object
-
appendTo(parent [, node])
-
Add the object as the
module:qi-nodes.NodeObject#lastChildof the specified parent object.
An object cannot be added to itself.Parameters:
Name Type Argument Description parentObject The object to add the object to
nodeObject <optional>
The object to add, defaults to this object
Throws:
Returns:
The object added
- Type
- Object
-
create( [parent])
-
Factory method that creates objects from this.constructor.prototype.
Parameters:
Name Type Argument Description parentObject <optional>
Optional parent object to append this object to
Returns:
Instance of this.constructor.prototype optionally added to parent
- Type
- *
-
createRoot()
-
Helper factory method that creates a new rooted object.
This means that it's root property is a reference to itself.Returns:
created rooted object
-
destroy( [recursive] [, node])
-
module:qi-nodes.NodeObject#emptythe object's children,
andmodule:qi-nodes.NodeObject#removeit from its parent.
This essentially sets all properties to null that make this object a node.Parameters:
Name Type Argument Description recursiveboolean <optional>
If true, will recursively empty all children, defaults to false
nodeObject <optional>
The object to destroy, defaults to this object
Returns:
The object destroyed
- Type
- Object
-
eachChildFrom(fn [, node] [, thisObject])
-
Recursively iterate over each object down through all it's leaves.
Parameters:
Name Type Argument Description fnfunction The function to invoke for each object iterated
nodeObject <optional>
The starting object, defaults to this object
thisObjectObject <optional>
Callback function context, defaults to node
Returns:
The starting object
- Type
- Object
-
eachChildTo(fn [, node] [, thisObject])
-
Recursively iterate over each object up through all it's leaves.
Parameters:
Name Type Argument Description fnfunction The function to invoke for each object iterated
nodeObject <optional>
The starting object, defaults to this object
thisObjectObject <optional>
Callback function context, defaults to node
Returns:
The starting object
- Type
- Object
-
eachParentFrom(fn [, node] [, thisObject])
-
Recursively iterate over each object up through all it's parents.
Parameters:
Name Type Argument Description fnfunction The function to invoke for each object iterated
nodeObject <optional>
The starting object, defaults to this object
thisObjectObject <optional>
Callback function context, defaults to node
Returns:
The starting object
- Type
- Object
-
eachParentTo(fn [, node] [, thisObject])
-
Recursively iterate over each object down through all it's parents.
Parameters:
Name Type Argument Description fnfunction The function to invoke for each object iterated
nodeObject <optional>
The starting object, defaults to this object
thisObjectObject <optional>
Callback function context, defaults to node
Returns:
The starting object
- Type
- Object
-
empty( [recursive] [, node])
-
Remove all the object's children, but leaves its
module:qi-nodes.NodeObject#parentintact.Parameters:
Name Type Argument Description recursiveboolean <optional>
If true, will recursively empty all children, defaults to false
nodeObject <optional>
The object to empty, defaults to this object
Returns:
The object emptied
- Type
- Object
-
insertAfter(sibling [, node])
-
Add the object as the
module:qi-nodes.NodeObject#nextSiblingof the specified sibling object.
The sibling specified must be a child of a parent object.
An object cannot be added to itself.Parameters:
Name Type Argument Description siblingObject The object to insert the object after
nodeObject <optional>
The object to add, defaults to this object
Throws:
Returns:
The object added
- Type
- Object
-
insertBefore(sibling [, node])
-
Add the object as the
module:qi-nodes.NodeObject#previousSiblingof the specified sibling object.
The sibling specified must be a child of a parent object.
An object cannot be added to itself.Parameters:
Name Type Argument Description siblingObject The object to insert the object before
nodeObject <optional>
The object to add, defaults to this object
Throws:
Returns:
The object added
- Type
- Object
-
prepend(node [, parent])
-
Add the specified object as the
module:qi-nodes.NodeObject#firstChildof the parent object.
An object cannot be added to itself.Parameters:
Name Type Argument Description nodeObject The object to add to this object
parentObject <optional>
The object to add the object to, defaults to this object
Throws:
Returns:
The object added
- Type
- Object
-
prependTo(parent [, node])
-
Add the object as the
module:qi-nodes.NodeObject#firstChildof the specified parent object.
An object cannot be added to itself.Parameters:
Name Type Argument Description parentObject The object to add the object to
nodeObject <optional>
The object to add, defaults to this object
Throws:
Returns:
The object added
- Type
- Object
-
remove( [child])
-
Remove the child object from its
module:qi-nodes.NodeObject#parent, but leaves its children intact.Parameters:
Name Type Argument Description childObject <optional>
The object to remove, defaults to this object
Returns:
The object removed
- Type
- Object
-
swap(node1 [, node2])
-
Swap one object's position with another object's.
Parameters:
Name Type Argument Description node1Object The object to swap with node2
node2Object <optional>
The object to swap with node1, defaults to this object
Returns:
node1 object
- Type
- Object