@foxpage/foxpage-node-sdk
Version:
foxpage node sdk
57 lines (56 loc) • 2.03 kB
JavaScript
;
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.formatePageWithModules = exports.getModuleDSL = void 0;
const foxpage_core_1 = require("@foxpage/foxpage-core");
/**
* get module dsl
* @param dsl origin parsed dsl
* @param moduleIds module ids
* @returns module dsl
*/
function getModuleDSL(dsl, moduleIds) {
if (moduleIds.length === 0) {
return dsl;
}
const _dsl = [];
moduleIds.forEach(id => {
const node = foxpage_core_1.structure.findStructureById(dsl, id);
if (node) {
_dsl.push(node);
}
});
return _dsl.length > 0 ? _dsl : undefined;
}
exports.getModuleDSL = getModuleDSL;
/**
* formate page with modules
* @param page
* @param ctx
* @returns
*/
function formatePageWithModules(page, ctx) {
const { moduleIds } = ctx;
const { schemas = [] } = page, rest = __rest(page, ["schemas"]);
// TODO: entity page component type is react.component
const pageNode = schemas.find(item => item.name === 'page' && item.type === 'dsl.template');
if (!pageNode) {
throw new Error('Page node not valid.');
}
const modules = getModuleDSL(schemas, moduleIds || []);
const { props, children } = pageNode, others = __rest(pageNode, ["props", "children"]);
const _pageNode = Object.assign({ props: {}, children: modules }, others);
const _schemas = [_pageNode];
return Object.assign(Object.assign({}, rest), { schemas: _schemas });
}
exports.formatePageWithModules = formatePageWithModules;