@taiga-ui/addon-doc
Version:
Taiga UI based library for developing documentation portals for Angular libraries.
26 lines • 4.22 kB
JavaScript
import { tuiIsRoutePageGroup } from './is-page-group';
export function tuiSortPages(pages, excludeSections = new Set()) {
const sections = Array.from(new Set(pages.map((page) => page.section)));
const sortedPages = pages.slice().sort((a, b) => {
if (excludeSections.has(a.section ?? '') ||
excludeSections.has(b.section ?? '')) {
return 0;
}
const aSectionIndex = sections.indexOf(a.section);
const bSectionIndex = sections.indexOf(b.section);
if (aSectionIndex !== bSectionIndex) {
return aSectionIndex - bSectionIndex;
}
if (a.title > b.title) {
return 1;
}
return a.title.localeCompare(b.title);
});
return sortedPages.map((page) => tuiIsRoutePageGroup(page)
? {
...page,
subPages: tuiSortPages(page.subPages, excludeSections),
}
: page);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1wYWdlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FkZG9uLWRvYy91dGlscy9zb3J0LXBhZ2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRXBELE1BQU0sVUFBVSxZQUFZLENBQ3hCLEtBQW1CLEVBQ25CLGtCQUFrQixJQUFJLEdBQUcsRUFBVTtJQUVuQyxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFeEUsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUM1QyxJQUNJLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7WUFDcEMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxFQUN0QztZQUNFLE9BQU8sQ0FBQyxDQUFDO1NBQ1o7UUFFRCxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsRCxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVsRCxJQUFJLGFBQWEsS0FBSyxhQUFhLEVBQUU7WUFDakMsT0FBTyxhQUFhLEdBQUcsYUFBYSxDQUFDO1NBQ3hDO1FBRUQsSUFBSSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUU7WUFDbkIsT0FBTyxDQUFDLENBQUM7U0FDWjtRQUVELE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDNUIsbUJBQW1CLENBQUMsSUFBSSxDQUFDO1FBQ3JCLENBQUMsQ0FBQztZQUNJLEdBQUcsSUFBSTtZQUNQLFFBQVEsRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUM7U0FDekQ7UUFDSCxDQUFDLENBQUMsSUFBSSxDQUNiLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1R1aURvY1JvdXRlUGFnZSwgVHVpRG9jUm91dGVQYWdlR3JvdXB9IGZyb20gJ0B0YWlnYS11aS9hZGRvbi1kb2MvdHlwZXMnO1xuXG5pbXBvcnQge3R1aUlzUm91dGVQYWdlR3JvdXB9IGZyb20gJy4vaXMtcGFnZS1ncm91cCc7XG5cbmV4cG9ydCBmdW5jdGlvbiB0dWlTb3J0UGFnZXM8VCBleHRlbmRzIFR1aURvY1JvdXRlUGFnZSB8IFR1aURvY1JvdXRlUGFnZUdyb3VwPihcbiAgICBwYWdlczogcmVhZG9ubHkgVFtdLFxuICAgIGV4Y2x1ZGVTZWN0aW9ucyA9IG5ldyBTZXQ8c3RyaW5nPigpLFxuKTogcmVhZG9ubHkgVFtdIHtcbiAgICBjb25zdCBzZWN0aW9ucyA9IEFycmF5LmZyb20obmV3IFNldChwYWdlcy5tYXAoKHBhZ2UpID0+IHBhZ2Uuc2VjdGlvbikpKTtcblxuICAgIGNvbnN0IHNvcnRlZFBhZ2VzID0gcGFnZXMuc2xpY2UoKS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGV4Y2x1ZGVTZWN0aW9ucy5oYXMoYS5zZWN0aW9uID8/ICcnKSB8fFxuICAgICAgICAgICAgZXhjbHVkZVNlY3Rpb25zLmhhcyhiLnNlY3Rpb24gPz8gJycpXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhU2VjdGlvbkluZGV4ID0gc2VjdGlvbnMuaW5kZXhPZihhLnNlY3Rpb24pO1xuICAgICAgICBjb25zdCBiU2VjdGlvbkluZGV4ID0gc2VjdGlvbnMuaW5kZXhPZihiLnNlY3Rpb24pO1xuXG4gICAgICAgIGlmIChhU2VjdGlvbkluZGV4ICE9PSBiU2VjdGlvbkluZGV4KSB7XG4gICAgICAgICAgICByZXR1cm4gYVNlY3Rpb25JbmRleCAtIGJTZWN0aW9uSW5kZXg7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYS50aXRsZSA+IGIudGl0bGUpIHtcbiAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGEudGl0bGUubG9jYWxlQ29tcGFyZShiLnRpdGxlKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBzb3J0ZWRQYWdlcy5tYXAoKHBhZ2UpID0+XG4gICAgICAgIHR1aUlzUm91dGVQYWdlR3JvdXAocGFnZSlcbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgLi4ucGFnZSxcbiAgICAgICAgICAgICAgICAgIHN1YlBhZ2VzOiB0dWlTb3J0UGFnZXMocGFnZS5zdWJQYWdlcywgZXhjbHVkZVNlY3Rpb25zKSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiBwYWdlLFxuICAgICk7XG59XG4iXX0=