UNPKG

@formily/reactive

Version:

> Web Reactive Library Like Mobx

52 lines 1.5 kB
import { ObModelSymbol } from '../environment'; import { createAnnotation } from '../internals'; import { buildDataTree } from '../tree'; import { bindTargetKeyWithCurrentReaction, runReactionsFromTargetKey, } from '../reaction'; export var ref = createAnnotation(function (_a) { var target = _a.target, key = _a.key, value = _a.value; var store = { value: target ? target[key] : value, }; var proxy = {}; var context = target ? target : store; var property = target ? key : 'value'; function get() { bindTargetKeyWithCurrentReaction({ target: context, key: property, type: 'get', }); return store.value; } function set(value) { var oldValue = store.value; store.value = value; if (oldValue !== value) { runReactionsFromTargetKey({ target: context, key: property, type: 'set', oldValue: oldValue, value: value, }); } } if (target) { Object.defineProperty(target, key, { get: get, set: set, enumerable: true, }); return target; } else { Object.defineProperty(proxy, 'value', { set: set, get: get, }); buildDataTree(target, key, store); proxy[ObModelSymbol] = store; } return proxy; }); //# sourceMappingURL=ref.js.map