elmer-ui-core
Version:
web app framework
58 lines (57 loc) • 2.27 kB
JavaScript
;
var __spreadArray = (this && this.__spreadArray) || function (to, from) {
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
to[j] = from[i];
return to;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.autoInit = exports.globalClassFactory = void 0;
var elmer_common_1 = require("elmer-common");
require("reflect-metadata");
function globalClassFactory(_constructor, options) {
var className = _constructor.prototype.className;
var paramTypes = Reflect.getMetadata("design:paramtypes", _constructor);
var argv = [];
var classPoolName;
if (elmer_common_1.StaticCommon.isEmpty(className)) {
if (!elmer_common_1.StaticCommon.isEmpty(options)) {
if (elmer_common_1.StaticCommon.isString(options)) {
className = options;
classPoolName = options;
}
else {
className = options.className;
classPoolName = options.className;
}
}
}
if (!elmer_common_1.StaticCommon.isEmpty(options) && elmer_common_1.StaticCommon.isObject(options)) {
argv = options.argv || [];
}
if (!elmer_common_1.StaticCommon.isEmpty(classPoolName)) {
if (!elmerData.classPool[classPoolName]) {
elmerData.classPool[classPoolName] = _constructor;
}
}
if (elmer_common_1.StaticCommon.isEmpty(className)) {
className = _constructor["className"];
}
if (!elmerData.objPool[className]) {
var paramInstance = Object.prototype.toString.call(paramTypes) === "[object Array]" ? paramTypes.map(function (val) {
if (elmerData.classPool.indexOf(val) === -1) {
throw new Error(val + "\u6CA1\u6709\u88AB\u6CE8\u518C[" + className + "]");
}
else {
return globalClassFactory(val);
}
}) : [];
var obj = new (_constructor.bind.apply(_constructor, __spreadArray([void 0], (Array.concat(paramInstance, argv)))))();
elmerData.objPool[className] = obj;
return obj;
}
else {
return elmerData.objPool[className];
}
}
exports.globalClassFactory = globalClassFactory;
exports.autoInit = globalClassFactory;