UNPKG

@formily/reactive

Version:

> Web Reactive Library Like Mobx

127 lines 3.89 kB
import { isValid, isFn, isMap, isWeakMap, isSet, isWeakSet, isPlainObj, isArr, } from './checkers'; import { ProxyRaw, MakeObModelSymbol, DependencyCollected, ObModelSymbol, } from './environment'; import { getDataNode } from './tree'; var RAW_TYPE = Symbol('RAW_TYPE'); var OBSERVABLE_TYPE = Symbol('OBSERVABLE_TYPE'); var hasOwnProperty = Object.prototype.hasOwnProperty; export var isObservable = function (target) { return ProxyRaw.has(target) || !!(target === null || target === void 0 ? void 0 : target[ObModelSymbol]); }; export var isAnnotation = function (target) { return target && !!target[MakeObModelSymbol]; }; export var isSupportObservable = function (target) { if (!isValid(target)) return false; if (isArr(target)) return true; if (isPlainObj(target)) { if (target[RAW_TYPE]) { return false; } if (target[OBSERVABLE_TYPE]) { return true; } if ('$$typeof' in target && '_owner' in target) { return false; } if (target['_isAMomentObject']) { return false; } if (target['_isJSONSchemaObject']) { return false; } if (isFn(target['toJS'])) { return false; } if (isFn(target['toJSON'])) { return false; } return true; } if (isMap(target) || isWeakMap(target) || isSet(target) || isWeakSet(target)) return true; return false; }; export var markRaw = function (target) { if (!target) return; if (isFn(target)) { target.prototype[RAW_TYPE] = true; } else { target[RAW_TYPE] = true; } return target; }; export var markObservable = function (target) { if (!target) return; if (isFn(target)) { target.prototype[OBSERVABLE_TYPE] = true; } else { target[OBSERVABLE_TYPE] = true; } return target; }; export var raw = function (target) { if (target === null || target === void 0 ? void 0 : target[ObModelSymbol]) return target[ObModelSymbol]; return ProxyRaw.get(target) || target; }; export var toJS = function (values) { var visited = new WeakSet(); var _toJS = function (values) { if (visited.has(values)) { return values; } if (values && values[RAW_TYPE]) return values; if (isArr(values)) { if (isObservable(values)) { visited.add(values); var res_1 = []; values.forEach(function (item) { res_1.push(_toJS(item)); }); visited.delete(values); return res_1; } } else if (isPlainObj(values)) { if (isObservable(values)) { visited.add(values); var res = {}; for (var key in values) { if (hasOwnProperty.call(values, key)) { res[key] = _toJS(values[key]); } } visited.delete(values); return res; } } return values; }; return _toJS(values); }; export var contains = function (target, property) { var targetRaw = raw(target); var propertyRaw = raw(property); if (targetRaw === propertyRaw) return true; var targetNode = getDataNode(targetRaw); var propertyNode = getDataNode(propertyRaw); if (!targetNode) return false; if (!propertyNode) return false; return targetNode.contains(propertyNode); }; export var hasCollected = function (callback) { DependencyCollected.value = false; callback === null || callback === void 0 ? void 0 : callback(); return DependencyCollected.value; }; //# sourceMappingURL=externals.js.map