can-value
Version:
Observable values from other CanJS observables.
35 lines • 1.31 kB
JavaScript
/*can-value@1.1.1#can-value*/
;
var canKey = require('can-key');
var canReflect = require('can-reflect');
var keyObservable = require('can-simple-observable/key/key');
var namespace = require('can-namespace');
var Observation = require('can-observation');
var SimpleObservable = require('can-simple-observable');
var SettableObservable = require('can-simple-observable/settable/settable');
module.exports = namespace.value = {
bind: function (object, keyPath) {
return keyObservable(object, keyPath);
},
from: function (object, keyPath) {
var observationFunction = function () {
return canKey.get(object, keyPath);
};
return new Observation(observationFunction);
},
returnedBy: function (getter, context, initialValue) {
if (getter.length === 1) {
return new SettableObservable(getter, context, initialValue);
} else {
return new Observation(getter, context);
}
},
to: function (object, keyPath) {
var observable = keyObservable(object, keyPath);
var symbolsToAssign = { 'can.getValue': null };
return canReflect.assignSymbols(observable, symbolsToAssign);
},
with: function (initialValue) {
return new SimpleObservable(initialValue);
}
};