model/observable/observable library

The library provides utility classes in addition to package:observe.

Objects implementing the ObserveAware and ChangeAware interfaces are very similar to objects with Observable, with a much lower verbosity and smaller implementation. Classes using these may be migrated to use Observable instead.

ObservableReference and ObservableComposite provide base classes for complex domain objects that aren't able to implement Observable.

TODO(google): check with jmesserly: how to merge these with package:observe

Classes

Change<T>
Change record with previous and following values.
ChangeAware<T>
Allows listening on change pairs.
ChangeNotificationProvider<T>
Provides notification coalesce support for the other ChangeAware classes.
ObservableComposite<T>
Merges multiple updates of ObserveAwares and emits a single update notification stream.
ObservableReference<T>
A mutable object holder that allows listening on a stream of changes.
ObservableView<T>
A read-only 'view' of something. Allows getting the current value and listening for values and changes.
ObservableViewMixin<T>
Implements methods of ObservableView in terms of the basic value and stream properties.
ObserveAware<T>
Allows listening on changes.

Typedefs

EqualsFn<T> = bool Function(T a, T b)
Compares two objects for reference or content equality.