UNPKG

@formily/reactive

Version:

> Web Reactive Library Like Mobx

35 lines 1.33 kB
import { ObserverListeners } from './environment'; import { raw as getRaw } from './externals'; import { isFn } from './checkers'; import { DataChange, getDataNode } from './tree'; export var observe = function (target, observer, deep) { if (deep === void 0) { deep = true; } var addListener = function (target) { var raw = getRaw(target); var node = getDataNode(raw); var listener = function (operation) { var targetRaw = getRaw(operation.target); var targetNode = getDataNode(targetRaw); if (deep) { if (node.contains(targetNode)) { observer(new DataChange(operation, targetNode)); return; } } if (node === targetNode || (node.targetRaw === targetRaw && node.key === operation.key)) { observer(new DataChange(operation, targetNode)); } }; if (node && isFn(observer)) { ObserverListeners.add(listener); } return function () { ObserverListeners.delete(listener); }; }; if (target && typeof target !== 'object') throw Error("Can not observe ".concat(typeof target, " type.")); return addListener(target); }; //# sourceMappingURL=observe.js.map