@mintlify/common
Version:
Commonly shared code within Mintlify
26 lines (25 loc) • 995 B
JavaScript
const MAX_RECURSION_DEPTH = 100;
export function generatePathToBreadcrumbsMap(navigation) {
const pathToBreadcrumbs = new Map();
for (const group of navigation) {
generatePathToBreadcrumbsMapRecursive(group, [], pathToBreadcrumbs);
}
return pathToBreadcrumbs;
}
export function generatePathToBreadcrumbsMapRecursive(navGroup, currentBreadcrumbs, map, depth = 0) {
if (depth >= MAX_RECURSION_DEPTH)
return;
currentBreadcrumbs.push(navGroup.group);
if ('pages' in navGroup && Array.isArray(navGroup.pages)) {
for (const entry of navGroup.pages) {
if (typeof entry !== 'string') {
generatePathToBreadcrumbsMapRecursive(entry, currentBreadcrumbs, map, depth + 1);
}
else {
const nonEmptyBreadcrumbs = currentBreadcrumbs.filter((crumb) => !!crumb.trim());
map.set(entry, [...nonEmptyBreadcrumbs]);
}
}
currentBreadcrumbs.pop();
}
}