@ng-doc/builder
Version:
<!-- PROJECT LOGO --> <br /> <div align="center"> <a href="https://github.com/ng-doc/ng-doc"> <img src="https://ng-doc.com/assets/images/ng-doc.svg?raw=true" alt="Logo" height="150px"> </a>
55 lines • 1.29 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.getStructuredDocs = getStructuredDocs;
/**
*
* @param pages
* @param items
*/
function getStructuredDocs(items) {
const structuredMap = new Map();
items.forEach((item) => {
addLevel(structuredMap, createLevels(item));
});
return getStructuredDocsFromMap(structuredMap);
}
/**
*
* @param structuredMap
*/
function getStructuredDocsFromMap(structuredMap) {
const structuredDocs = [];
structuredMap.forEach(([map, item]) => {
const children = getStructuredDocsFromMap(map);
structuredDocs.push({ item, children });
});
return structuredDocs;
}
/**
*
* @param structuredMap
* @param levels
*/
function addLevel(structuredMap, levels) {
const [level, ...rest] = levels;
if (level) {
const route = level.route;
const [map, item] = structuredMap.get(route) || [new Map(), level];
structuredMap.set(route, [map, item]);
addLevel(map, rest);
}
}
/**
*
* @param item
*/
function createLevels(item) {
const levels = [];
let level = item;
while (level) {
levels.unshift(level);
level = level.parent;
}
return levels;
}
//# sourceMappingURL=get-structured-docs.js.map
;