Provides a generic tree data structure and related functionality.

A tree has a root node, which may contain any number of child nodes, which may themselves contain child nodes, ad infinitum.

Child nodes are lightweight function instances which delegate to the tree for all significant functionality, so trees remain performant and memory-efficient even with thousands and thousands of nodes.

This module is a rollup of the following modules:

  • tree-labelable
    Extension for Tree that adds baked-in support for node labels like you might see in a treeview or menu.
  • tree-lazy
    Provides Plugin.Tree.Lazy, a plugin for Tree.Openable that makes it easy to lazily load and populate the contents of tree nodes the first time they're opened.
  • tree-node
    Provides the Tree.Node class, which represents a tree node contained in a Tree data structure.
  • tree-openable
    Extension for Tree that adds the concept of open/closed state for nodes.
  • tree-selectable
    Extension for Tree that adds the concept of selection state for nodes.
  • tree-sortable
    Extension for Tree that makes nodes sortable.