elmer-ui-core
Version:
web app framework
58 lines (57 loc) • 2.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.registerComponent = exports.formatSelector = void 0;
var formatSelector = function (selectorName) {
var dName = selectorName.replace(/([A-Z])/g, "-$1").replace(/^([a-z])/i, "-$1").toLowerCase();
dName = /^\-/.test(dName) ? dName : "-" + dName;
dName = "eui" + dName;
return dName;
};
exports.formatSelector = formatSelector;
var registerComponent = function (widgets, domName) {
var register = function (widgetFactory, domNameValue) {
var domName = widgetFactory.toString();
var fMatch = domName.match(/^function\s*([a-z0-9_\-]*)\s*\(/i);
if (fMatch) {
var dName = fMatch[1];
dName = domNameValue && domNameValue.length > 0 ? domNameValue : dName;
dName = exports.formatSelector(dName);
var saveData = elmerData.components || {};
if (!saveData[dName]) {
Object.defineProperty(widgetFactory, "selector", {
configurable: false,
enumerable: true,
value: dName,
writable: false
});
Object.defineProperty(elmerData.components, dName, {
configurable: false,
enumerable: true,
value: widgetFactory,
writable: false
});
}
}
else {
throw new Error("未定义组件名称!");
}
};
if (typeof widgets === "object") {
Object.keys(widgets).map(function (wKey) {
var factory = widgets[wKey];
if (typeof factory === "function") {
register(factory, wKey);
}
else {
throw new Error("The register component " + wKey + " must be a function");
}
});
}
else if (typeof widgets === "function") {
register(widgets, domName);
}
else {
throw new Error("The Register component is muse be a constructor or a object");
}
};
exports.registerComponent = registerComponent;