ractive
Version:
Next-generation DOM manipulation
41 lines (32 loc) • 1.03 kB
JavaScript
import magicAdaptor from 'viewmodel/prototype/get/magicAdaptor';
import arrayAdaptor from 'viewmodel/prototype/get/arrayAdaptor';
var magicArrayAdaptor, MagicArrayWrapper;
if ( magicAdaptor ) {
magicArrayAdaptor = {
filter: function ( object, keypath, ractive ) {
return magicAdaptor.filter( object, keypath, ractive ) && arrayAdaptor.filter( object );
},
wrap: function ( ractive, array, keypath ) {
return new MagicArrayWrapper( ractive, array, keypath );
}
};
MagicArrayWrapper = function ( ractive, array, keypath ) {
this.value = array;
this.magic = true;
this.magicWrapper = magicAdaptor.wrap( ractive, array, keypath );
this.arrayWrapper = arrayAdaptor.wrap( ractive, array, keypath );
};
MagicArrayWrapper.prototype = {
get: function () {
return this.value;
},
teardown: function () {
this.arrayWrapper.teardown();
this.magicWrapper.teardown();
},
reset: function ( value ) {
return this.magicWrapper.reset( value );
}
};
}
export default magicArrayAdaptor;