| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 | 
							- // #ReactiveProperty
 
- // A simple class that provides an reactive property interface
 
- _noopCallback = function() {};
 
- _nonReactive = {
 
-   changed: _noopCallback,
 
-   depend: _noopCallback
 
- };
 
- /**
 
-   * @constructor
 
-   * @param {any} defaultValue Set the default value for the reactive property
 
-   * @param {boolean} [reactive = true] Allow the user to disable reactivity
 
-   *
 
-   * This api should only be in the internal.api.md
 
-   */
 
- ReactiveProperty = function(defaultValue, reactive) {
 
-   var self = this;
 
-   var _deps = (reactive === false)? _nonReactive : new Deps.Dependency();
 
-   /** @property ReactiveProperty.value
 
-     * @private
 
-     * This contains the non reactive value, should only be used as a getter for
 
-     * internal use
 
-     */
 
-   self.value = defaultValue;
 
-   self.onChange = function() {};
 
-   self.changed = function() {
 
-     _deps.changed();
 
-     self.onChange(self.value);
 
-   };
 
-   /**
 
-     * @method ReactiveProperty.get
 
-     * Usage:
 
-     * ```js
 
-     *   var foo = new ReactiveProperty('bar');
 
-     *   foo.get(); // equals "bar"
 
-     * ```
 
-     */
 
-   self.get = function() {
 
-     _deps.depend();
 
-     return self.value;
 
-   };
 
-   /**
 
-     * @method ReactiveProperty.set Set property to value
 
-     * @param {any} value
 
-     * Usage:
 
-     * ```js
 
-     *   var foo = new ReactiveProperty('bar');
 
-     *   foo.set('bar');
 
-     * ```
 
-     */
 
-   self.set = function(value) {
 
-     if (self.value !== value) {
 
-       self.value = value;
 
-       self.changed();
 
-     }
 
-   };
 
-   /**
 
-     * @method ReactiveProperty.dec Decrease numeric property
 
-     * @param {number} [by=1] Value to decrease by
 
-     * Usage:
 
-     * ```js
 
-     *   var foo = new ReactiveProperty('bar');
 
-     *   foo.set(0);
 
-     *   foo.dec(5); // -5
 
-     * ```
 
-     */
 
-   self.dec = function(by) {
 
-     self.value -= by || 1;
 
-     self.changed();
 
-   };
 
-   /**
 
-     * @method ReactiveProperty.inc increase numeric property
 
-     * @param {number} [by=1] Value to increase by
 
-     * Usage:
 
-     * ```js
 
-     *   var foo = new ReactiveProperty('bar');
 
-     *   foo.set(0);
 
-     *   foo.inc(5); // 5
 
-     * ```
 
-     */
 
-   self.inc = function(by) {
 
-     self.value += by || 1;
 
-     self.changed();
 
-   };
 
-   /**
 
-     * @method ReactiveProperty.getset increase numeric property
 
-     * @param {any} [value] Value to set property - if undefined the act like `get`
 
-     * @returns {any} Returns value if no arguments are passed to the function
 
-     * Usage:
 
-     * ```js
 
-     *   var foo = new ReactiveProperty('bar');
 
-     *   foo.getset(5);
 
-     *   foo.getset(); // returns 5
 
-     * ```
 
-     */
 
-   self.getset = function(value) {
 
-     if (typeof value !== 'undefined') {
 
-       self.set(value);
 
-     } else {
 
-       return self.get();
 
-     }
 
-   };
 
-   /**
 
-     * @method ReactiveProperty.toString
 
-     * Usage:
 
-     * ```js
 
-     *   var foo = new ReactiveProperty('bar');
 
-     *   foo.toString(); // returns 'bar'
 
-     * ```
 
-     */
 
-   self.toString = function() {
 
-     var val = self.get();
 
-     return val ? val.toString() : '';
 
-   };
 
-   /**
 
-     * @method ReactiveProperty.toText
 
-     * Usage:
 
-     * ```js
 
-     *   var foo = new ReactiveProperty('bar');
 
-     *   foo.toText(); // returns 'bar'
 
-     * ```
 
-     */
 
-   self.toText = self.toString;
 
- };
 
 
  |