UNPKG

@mintlify/common

Version:

Commonly shared code within Mintlify

26 lines (25 loc) 995 B
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(); } }