dt-intl
Version:
I18N tools for universal javascript apps, easy use & better api;
42 lines • 1.25 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const utils_1 = require("./utils");
const Observer = (obj, defaultKey = 'zh-CN') => {
Object.keys(obj.__data__ || obj).forEach((key) => {
defineReactive(obj, key, defaultKey);
});
return obj;
};
const observe = (value) => {
if (!value || typeof value !== 'object') {
return;
}
Observer(value);
};
const defineReactive = (obj, key, defaultKey) => {
let childObj = observe(obj[key]);
Object.defineProperty(obj, key, {
get() {
if (obj.__data__[key]) {
return (0, utils_1.getProxyObj)(obj.__data__[key]);
}
else if (obj.__metas__[defaultKey][key]) {
return (0, utils_1.getProxyObj)(obj.__metas__[defaultKey][key]);
}
else {
return (0, utils_1.getDefaultProxyString)();
}
},
set(newVal) {
if (obj[key] === newVal) {
return;
}
obj[key] = newVal;
const cb = obj.callback[key];
cb.call(obj);
childObj = observe(newVal);
},
});
};
exports.default = Observer;
//# sourceMappingURL=Observer.js.map