in ko4j/src/main/java/org/netbeans/html/ko4j/Knockout.java [314:361]
function koComputed(index, name, readOnly, value) {
function activeGetter() {
return value;
}
var trigger = ko['observable']()['extend']({'notify':'always'});
var bnd = {
'read': function() {
trigger();
var r = activeGetter();
return normalValue(r);;
},
'owner': ret
};
if (!readOnly) {
function write(val) {
var self = ret['ko4j'];
if (!self) return;
var model = val ? val['ko4j'] : null;
self.@org.netbeans.html.ko4j.Knockout::setValue(ILjava/lang/Object;)(index, model ? model : val);
};
bnd['write'] = write;
};
var cmpt = ko['computed'](bnd);
cmpt['valueHasMutated'] = function(val) {
if (arguments.length === 1) {
value = val;
trigger(val);
} else {
var self = ret['ko4j'];
if (self) {
var futureValue = self.@org.netbeans.html.ko4j.Knockout::getValue(I)(index);
Promise.resolve(futureValue).then(function(val, e) {
if (e) {
alert("Cannot call getValue on " + self + " prop: " + name + " error: " + e);
} else {
if (value != val) {
resolvePromises(val, function() {
value = val;
trigger(val);
});
}
}
});
}
}
};
ret[name] = cmpt;
}