UNPKG

@formily/reactive

Version:

> Web Reactive Library Like Mobx

39 lines 1.55 kB
"use strict"; 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