import Ember from 'ember';

let onChange = Ember.Mixin.create({
  _onChange: Ember.observer('$object', function() {
    let $object = this.get('$object');
    if(!Ember.isEmpty($object)) {
      $object.bind('change', () => {
        this.set('value', $object.value());
      });
    }
  })
});

let onDataBound = Ember.Mixin.create({
  _onDataBound: Ember.observer('$object', function() {
    let $object = this.get('$object');
    if(!Ember.isEmpty($object)) {
      $object.bind('dataBound', () => {
        this.set('value', $object.value());
      });
    }
  })
});

export {onChange, onDataBound};

export default Ember.Mixin.create(onChange, onDataBound);

@@ -19,16 +19,58 @@
 'ember';
+%0Aconst %7BMixin, observer, isEmpty%7D = Ember;
 %0A%0Alet on
@@ -78,22 +78,16 @@
 hange = 
-Ember.
 Mixin.cr
@@ -106,22 +106,16 @@
 Change: 
-Ember.
 observer
@@ -178,38 +178,32 @@
 ject');%0A    if(!
-Ember.
 isEmpty($object)
@@ -331,22 +331,16 @@
 Bound = 
-Ember.
 Mixin.cr
@@ -362,22 +362,16 @@
 aBound: 
-Ember.
 observer
@@ -442,22 +442,16 @@
     if(!
-Ember.
 isEmpty(
@@ -572,16 +572,483 @@
 %7D)%0A%7D);%0A%0A
+let onSelect = Mixin.create(%7B%0A  _onSelect: observer('$object', function() %7B%0A    let $object = this.get('$object');%0A    if(!isEmpty($object)) %7B%0A      $object.bind('select', () =%3E %7B%0A        this.set('value', $object.value());%0A      %7D);%0A    %7D%0A  %7D)%0A%7D);%0A%0Alet value = Mixin.create(%7B%0A  _value: observer('$object', 'value', function() %7B%0A    let $object = this.get('$object'), value = this.get('value');%0A    if(!isEmpty($object)) %7B%0A      $object.value(value);%0A    %7D%0A  %7D)%0A%7D);%0A%0A
 export %7B
@@ -1068,16 +1068,33 @@
 ataBound
+, onSelect, value
 %7D;%0A%0Aexpo
@@ -1144,11 +1144,28 @@
 ataBound
+, onSelect, value
 );%0A

Update value.js