@mintlify/common
Version:
Commonly shared code within Mintlify
48 lines (47 loc) • 1.61 kB
JavaScript
import { divisions, } from '@mintlify/validation';
import { readObjectArrayProperty } from '../divisions/iterateObjectArrayProperty.js';
import { replaceSlashIndex } from '../slug/replaceSlashIndex.js';
function getFirstFromPageOrGroup(entry) {
if (typeof entry === 'string') {
return replaceSlashIndex(entry);
}
if ('hidden' in entry && entry.hidden)
return undefined;
return getFirstPageFromNavConfig(entry);
}
export function getFirstPageFromNavConfig(nav) {
if (!nav || typeof nav !== 'object')
return undefined;
if ('pages' in nav && nav.pages) {
if ('root' in nav && typeof nav.root === 'string') {
return replaceSlashIndex(nav.root);
}
for (const page of nav.pages) {
const result = getFirstFromPageOrGroup(page);
if (result !== undefined)
return result;
}
}
if ('groups' in nav) {
for (const group of nav.groups) {
if (group.hidden)
continue;
const result = getFirstPageFromNavConfig(group);
if (result !== undefined)
return result;
}
}
for (const key of divisions) {
const items = readObjectArrayProperty(nav, key);
if (!items)
continue;
for (const item of items) {
if (typeof item === 'object' && 'hidden' in item && item.hidden)
continue;
const result = getFirstPageFromNavConfig(item);
if (result !== undefined)
return result;
}
}
return undefined;
}