@formily/reactive
Version:
> Web Reactive Library Like Mobx
47 lines • 1.62 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.model = exports.define = void 0;
var checkers_1 = require("./checkers");
var tree_1 = require("./tree");
var observable_1 = require("./observable");
var internals_1 = require("./internals");
var externals_1 = require("./externals");
var action_1 = require("./action");
var environment_1 = require("./environment");
function define(target, annotations) {
if ((0, externals_1.isObservable)(target))
return target;
if (!(0, externals_1.isSupportObservable)(target))
return target;
target[environment_1.ObModelSymbol] = target;
(0, tree_1.buildDataTree)(undefined, undefined, target);
for (var key in annotations) {
var annotation = annotations[key];
if ((0, externals_1.isAnnotation)(annotation)) {
(0, internals_1.getObservableMaker)(annotation)({
target: target,
key: key,
});
}
}
return target;
}
exports.define = define;
function model(target) {
var annotations = Object.keys(target || {}).reduce(function (buf, key) {
var descriptor = Object.getOwnPropertyDescriptor(target, key);
if (descriptor && descriptor.get) {
buf[key] = observable_1.observable.computed;
}
else if ((0, checkers_1.isFn)(target[key])) {
buf[key] = action_1.action;
}
else {
buf[key] = observable_1.observable;
}
return buf;
}, {});
return define(target, annotations);
}
exports.model = model;
//# sourceMappingURL=model.js.map
;