elmer-ui-core
Version:
web app framework
71 lines (70 loc) • 3.53 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.declareComponent = exports.autowired = exports.Injectable = exports.defineReadonlyProperty = void 0;
require("reflect-metadata");
var elmerRegister_1 = require("../core/elmerRegister");
var i18nController_1 = require("../i18n/i18nController");
var globalUtil_1 = require("../init/globalUtil");
var withRoter_1 = require("../widget/router/withRoter");
var globalClassFactory_1 = require("./globalClassFactory");
var defineReadonlyProperty = function (target, propertyKey, propertyValue) {
Object.defineProperty(target, propertyKey, {
configurable: false,
enumerable: true,
value: propertyValue,
writable: false
});
};
exports.defineReadonlyProperty = defineReadonlyProperty;
function Injectable(className) {
if (className === undefined || className === null || className.length <= 0) {
throw new Error("Injectable注入对象必须设置类名。");
}
return function (_constructor) {
var paramTypes = Reflect.getMetadata("design:paramtypes", _constructor);
globalUtil_1.addToClassPool(className, _constructor, function () {
if (paramTypes) {
for (var _i = 0, paramTypes_1 = paramTypes; _i < paramTypes_1.length; _i++) {
var val = paramTypes_1[_i];
if (val === _constructor) {
throw new Error("不能依赖自己");
}
else if (elmerData.classPool.indexOf(val) === -1) {
throw new Error("\u7C7B\u3010" + className + "\u3011construct\u53C2\u6570" + val + "\u6CA1\u6709\u88AB\u6CE8\u518C");
}
}
}
});
};
}
exports.Injectable = Injectable;
function autowired(_constructor, options) {
return function (target, propertyKey) {
target[propertyKey] = globalClassFactory_1.globalClassFactory(_constructor, options);
};
}
exports.autowired = autowired;
function declareComponent(options) {
return function (__contructor) {
var _a;
var i18nController = globalClassFactory_1.globalClassFactory(i18nController_1.I18nController);
__contructor.prototype.selector = elmerRegister_1.formatSelector(options.selector || "");
exports.defineReadonlyProperty(__contructor.prototype, "injectModel", options.model);
exports.defineReadonlyProperty(__contructor.prototype, "injectService", options.service);
exports.defineReadonlyProperty(__contructor.prototype, "connect", options.connect);
exports.defineReadonlyProperty(__contructor.prototype, "i18nConfig", options.i18n);
exports.defineReadonlyProperty(__contructor.prototype, "template", options.template);
options.components && exports.defineReadonlyProperty(__contructor.prototype, "components", options.components);
i18nController.initI18n(__contructor, options.i18n);
if ((_a = options.template) === null || _a === void 0 ? void 0 : _a.fromLoader) {
exports.defineReadonlyProperty(__contructor.prototype, "render", (function () {
return this.htmlCode;
}).bind({ htmlCode: options.template.htmlCode }));
}
if (options.withRouter) {
withRoter_1.withRouter(__contructor, globalClassFactory_1.globalClassFactory);
}
elmerRegister_1.registerComponent(__contructor, options.selector);
};
}
exports.declareComponent = declareComponent;