The binding canvas is a canvas that can have an attached rendering function. It will invalidate itself if any bindings used in that rendering function are changed.
Perfoms layout with a bounding box
Represents a difference between two trees
Tracks differences in the viewmodel attached to a controller and its subtree
The dynamic viewmodel lets us define arbitrary properties as bound or computed values. A particular key can only be bound or computed: if it is set as both, the computed version 'wins'.
A controller that does nothing
Converts Positions to actual coordinates
Represents a resource being managed by the resource manager. Resources are removed from the manager when all copies are dropped.
The resource manager is used to track resources of a particular type
Describes an update to the view model
Watches for changes in a viewmodel
Represents a property (a control value that can either be a constant or a viewmodel value)
Represents the value of a property
Controllers represent a portion of the UI and provide a hub for receiving events related to it and connecting the model or viewmodel.
Trait implemented by tree structures that can describe how they differ from another structure.
Trait implemented by types that can be converted to and from a JSON value representation
Trait for types that can be converted to a property
Trait that can be implemented by items that represent a user interface
Represents a viewmodel for a control subtree. ViewModels are used for controls which can be edited and need to have values stored by key in the controller
Returns a bound control that expands the content of any sub-controllers that might be present.
Given an address (a list of subcomponent node indices), finds the path through the controllers that will supply the controller that owns that node.
Computes the difference between two trees
Returns an update for all of the keys in a particular viewmodel
Generates the updates to set the viewmodel for an entire controller tree