q-proxyable
Version:
normal utils by qianzhixiang
62 lines (61 loc) • 3.26 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.ProxyableByDefineProperty = exports.ProxyableSinglePropertyByDefineProperty = void 0;
var utils_1 = require("./utils");
var utils_2 = require("./utils");
var common_1 = require("./common");
var proxy_1 = require("./proxy");
function ProxyableSinglePropertyByDefineProperty(value, i, option) {
if (value && typeof value === 'object') {
var handlers_1 = utils_2.addProxyableFlagToTarget(value, option).handlers;
var tempV_1 = value[i];
Object.defineProperty(value, i, {
configurable: true,
get: function () {
var res = proxy_1.ProxyableByProxy(tempV_1);
common_1.GLOBAL_PROXY_HANDLERS.get.forEach(function (handler) { return handler(value, i, res); });
handlers_1 === null || handlers_1 === void 0 ? void 0 : handlers_1.get.forEach(function (handler) { return handler(value, i, res); });
return res;
},
set: function (v) {
var oldV = tempV_1;
tempV_1 = proxy_1.ProxyableByProxy(v);
common_1.GLOBAL_PROXY_HANDLERS.set.forEach(function (handler) { return handler(value, i, tempV_1, oldV); });
handlers_1 === null || handlers_1 === void 0 ? void 0 : handlers_1.set.forEach(function (handler) { return handler(value, i, tempV_1, oldV); });
},
});
}
}
exports.ProxyableSinglePropertyByDefineProperty = ProxyableSinglePropertyByDefineProperty;
function ProxyableByDefineProperty(value, option) {
if (typeof value === 'object') {
if (utils_2.isProxyable(value)) {
option && utils_2.addHandlersToTarget(value, option);
return utils_2.getProxyableTarget(value);
}
var handlers_2 = utils_2.addProxyableFlagToTarget(value, option).handlers;
var _loop_1 = function (i) {
var tempV = value[i];
Object.defineProperty(value, i, {
configurable: true,
get: function () {
var res = (utils_1.suportProxy() ? proxy_1.ProxyableByProxy : ProxyableByDefineProperty)(tempV);
common_1.GLOBAL_PROXY_HANDLERS.get.forEach(function (handler) { return handler(value, i, res); });
handlers_2 === null || handlers_2 === void 0 ? void 0 : handlers_2.get.forEach(function (handler) { return handler(value, i, res); });
return res;
},
set: function (v) {
var oldV = tempV;
tempV = (utils_1.suportProxy() ? proxy_1.ProxyableByProxy : ProxyableByDefineProperty)(v);
common_1.GLOBAL_PROXY_HANDLERS.set.forEach(function (handler) { return handler(value, i, tempV, oldV); });
handlers_2 === null || handlers_2 === void 0 ? void 0 : handlers_2.set.forEach(function (handler) { return handler(value, i, tempV, oldV); });
},
});
};
for (var i in value) {
_loop_1(i);
}
}
return value;
}
exports.ProxyableByDefineProperty = ProxyableByDefineProperty;
;