UNPKG

elmer-ui-core

Version:

web app framework

71 lines (70 loc) 3.53 kB
"use strict"; 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;