@lcap/builder
Version:
lcap builder utils
66 lines (65 loc) • 2.55 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.processComponentConfigExtends = processComponentConfigExtends;
const lodash_1 = require("lodash");
const shared_1 = require("../../shared");
const logger_1 = __importDefault(require("../../utils/logger"));
const utils_1 = require("../../utils");
exports.default = shared_1.genNaslComponent;
function processComponentConfigExtends(components, lcapUIComponents = []) {
components.map((c) => {
const arr = [c];
if (Array.isArray(c.children)) {
arr.push(...c.children);
}
return arr;
}).flat().filter((c) => Array.isArray(c.extends) && c.extends.length > 0).forEach((component) => {
const extendList = (component.extends || []).map((exd) => {
if (typeof exd === 'string') {
return {
name: exd,
};
}
return exd;
});
extendList.forEach((exd) => {
const { name, excludes = [] } = exd;
if (!name) {
return;
}
const exdComp = (0, utils_1.getComponentConfigByName)(name, [...components, ...lcapUIComponents]);
if (!exdComp || (exdComp.extends && exdComp.extends.length > 0)) {
logger_1.default.warn(`找不到 ${component.name} 继承的组件 ${name} 的配置`);
return;
}
[
'methods',
'slots',
'readableProps',
'props',
'events',
].forEach((key) => {
if (!component[key]) {
component[key] = [];
}
(exdComp[key] || []).forEach((it) => {
const i = component[key].findIndex((c) => c.name === it.name);
let attrName = it.name;
if (key === 'slots') {
attrName = `slot${(0, lodash_1.upperFirst)(attrName)}`;
}
else if (key === 'events') {
attrName = `on${(0, lodash_1.upperFirst)(attrName)}`;
}
if (i !== -1 || excludes.includes(attrName)) {
return;
}
component[key].push(it);
});
});
});
});
}