@formily/reactive
Version:
> Web Reactive Library Like Mobx
39 lines • 1.55 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.observe = void 0;
var environment_1 = require("./environment");
var externals_1 = require("./externals");
var checkers_1 = require("./checkers");
var tree_1 = require("./tree");
var observe = function (target, observer, deep) {
if (deep === void 0) { deep = true; }
var addListener = function (target) {
var raw = (0, externals_1.raw)(target);
var node = (0, tree_1.getDataNode)(raw);
var listener = function (operation) {
var targetRaw = (0, externals_1.raw)(operation.target);
var targetNode = (0, tree_1.getDataNode)(targetRaw);
if (deep) {
if (node.contains(targetNode)) {
observer(new tree_1.DataChange(operation, targetNode));
return;
}
}
if (node === targetNode ||
(node.targetRaw === targetRaw && node.key === operation.key)) {
observer(new tree_1.DataChange(operation, targetNode));
}
};
if (node && (0, checkers_1.isFn)(observer)) {
environment_1.ObserverListeners.add(listener);
}
return function () {
environment_1.ObserverListeners.delete(listener);
};
};
if (target && typeof target !== 'object')
throw Error("Can not observe ".concat(typeof target, " type."));
return addListener(target);
};
exports.observe = observe;
//# sourceMappingURL=observe.js.map
;