@taiga-ui/addon-doc
Version:
Taiga UI based library for developing documentation portals for Angular libraries.
59 lines • 10.1 kB
JavaScript
import { InjectionToken } from '@angular/core';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { ActivatedRoute, NavigationEnd, Router, Scroll } from '@angular/router';
import { TUI_DOC_PAGES, TUI_DOC_TITLE } from '@taiga-ui/addon-doc/tokens';
import { tuiAutoFocusOptionsProvider } from '@taiga-ui/cdk/directives/auto-focus';
import { tuiIsPresent } from '@taiga-ui/cdk/utils/miscellaneous';
import { tuiLinkOptionsProvider } from '@taiga-ui/core/components/link';
import { tuiScrollbarOptionsProvider } from '@taiga-ui/core/components/scrollbar';
import { filter, map, mergeMap } from 'rxjs';
function labelsProviderFactory(pages) {
return pages
.map(({ section }) => section)
.filter(tuiIsPresent)
.filter((item, index, array) => array.indexOf(item) === index);
}
/**
* Page title
*/
export const NAVIGATION_TITLE = new InjectionToken(ngDevMode ? 'NAVIGATION_TITLE' : '');
/**
* Navigation sections labels for search
*/
export const NAVIGATION_LABELS = new InjectionToken(ngDevMode ? 'NAVIGATION_LABELS' : '');
/**
* Navigation pages
*/
export const NAVIGATION_ITEMS = new InjectionToken(ngDevMode ? 'NAVIGATION_ITEMS' : '');
export const NAVIGATION_PROVIDERS = [
tuiAutoFocusOptionsProvider({ preventScroll: true }),
tuiLinkOptionsProvider({ appearance: 'action-grayscale' }),
{
provide: NAVIGATION_TITLE,
deps: [Router, ActivatedRoute, TUI_DOC_TITLE],
useFactory: (router, activatedRoute, titlePrefix) => router.events.pipe(filter((event) => event instanceof NavigationEnd ||
(event instanceof Scroll
? event.routerEvent instanceof NavigationEnd
: false)), map(() => activatedRoute.firstChild), filter(tuiIsPresent), mergeMap(({ data }) => data), map(({ title }) => `${titlePrefix}${title}`), takeUntilDestroyed()),
},
{
provide: NAVIGATION_LABELS,
deps: [TUI_DOC_PAGES],
useFactory: labelsProviderFactory,
},
{
provide: NAVIGATION_ITEMS,
deps: [TUI_DOC_PAGES],
useFactory: (pages) => {
const labels = labelsProviderFactory(pages);
return [
...labels.map((label) => pages.filter(({ section }) => section === label)),
pages.filter((page) => !page.section),
];
},
},
tuiScrollbarOptionsProvider({
mode: 'hover',
}),
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5wcm92aWRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hZGRvbi1kb2MvY29tcG9uZW50cy9uYXZpZ2F0aW9uL25hdmlnYXRpb24ucHJvdmlkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFOUQsT0FBTyxFQUFDLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzlFLE9BQU8sRUFBQyxhQUFhLEVBQUUsYUFBYSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFeEUsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDaEYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQy9ELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBRWhGLE9BQU8sRUFBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUUzQyxTQUFTLHFCQUFxQixDQUFDLEtBQXVCO0lBQ2xELE9BQU8sS0FBSztTQUNQLEdBQUcsQ0FBQyxDQUFDLEVBQUMsT0FBTyxFQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQztTQUMzQixNQUFNLENBQUMsWUFBWSxDQUFDO1NBQ3BCLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDO0FBQ3ZFLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLElBQUksY0FBYyxDQUM5QyxTQUFTLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ3RDLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLElBQUksY0FBYyxDQUMvQyxTQUFTLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ3ZDLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLElBQUksY0FBYyxDQUM5QyxTQUFTLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ3RDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBZTtJQUM1QywyQkFBMkIsQ0FBQyxFQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUMsQ0FBQztJQUNsRCxzQkFBc0IsQ0FBQyxFQUFDLFVBQVUsRUFBRSxrQkFBa0IsRUFBQyxDQUFDO0lBQ3hEO1FBQ0ksT0FBTyxFQUFFLGdCQUFnQjtRQUN6QixJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUUsY0FBYyxFQUFFLGFBQWEsQ0FBQztRQUM3QyxVQUFVLEVBQUUsQ0FDUixNQUFjLEVBQ2QsY0FBOEIsRUFDOUIsV0FBbUIsRUFDRCxFQUFFLENBQ3BCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNkLE1BQU0sQ0FDRixDQUFDLEtBQVksRUFBRSxFQUFFLENBQ2IsS0FBSyxZQUFZLGFBQWE7WUFDOUIsQ0FBQyxLQUFLLFlBQVksTUFBTTtnQkFDcEIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLFlBQVksYUFBYTtnQkFDNUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUNuQixFQUNELEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLEVBQ3BDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFDcEIsUUFBUSxDQUFDLENBQUMsRUFBQyxJQUFJLEVBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQzFCLEdBQUcsQ0FBQyxDQUFDLEVBQUMsS0FBSyxFQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsV0FBVyxHQUFHLEtBQUssRUFBRSxDQUFDLEVBQzFDLGtCQUFrQixFQUFFLENBQ3ZCO0tBQ1I7SUFDRDtRQUNJLE9BQU8sRUFBRSxpQkFBaUI7UUFDMUIsSUFBSSxFQUFFLENBQUMsYUFBYSxDQUFDO1FBQ3JCLFVBQVUsRUFBRSxxQkFBcUI7S0FDcEM7SUFDRDtRQUNJLE9BQU8sRUFBRSxnQkFBZ0I7UUFDekIsSUFBSSxFQUFFLENBQUMsYUFBYSxDQUFDO1FBQ3JCLFVBQVUsRUFBRSxDQUFDLEtBQXVCLEVBQStCLEVBQUU7WUFDakUsTUFBTSxNQUFNLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFNUMsT0FBTztnQkFDSCxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDLENBQUM7Z0JBQ3hFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQzthQUN4QyxDQUFDO1FBQ04sQ0FBQztLQUNKO0lBQ0QsMkJBQTJCLENBQUM7UUFDeEIsSUFBSSxFQUFFLE9BQU87S0FDaEIsQ0FBQztDQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7UHJvdmlkZXJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtJbmplY3Rpb25Ub2tlbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHR5cGUge0V2ZW50fSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgTmF2aWdhdGlvbkVuZCwgUm91dGVyLCBTY3JvbGx9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1RVSV9ET0NfUEFHRVMsIFRVSV9ET0NfVElUTEV9IGZyb20gJ0B0YWlnYS11aS9hZGRvbi1kb2MvdG9rZW5zJztcbmltcG9ydCB0eXBlIHtUdWlEb2NSb3V0ZVBhZ2VzfSBmcm9tICdAdGFpZ2EtdWkvYWRkb24tZG9jL3R5cGVzJztcbmltcG9ydCB7dHVpQXV0b0ZvY3VzT3B0aW9uc1Byb3ZpZGVyfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RpcmVjdGl2ZXMvYXV0by1mb2N1cyc7XG5pbXBvcnQge3R1aUlzUHJlc2VudH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9taXNjZWxsYW5lb3VzJztcbmltcG9ydCB7dHVpTGlua09wdGlvbnNQcm92aWRlcn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy9saW5rJztcbmltcG9ydCB7dHVpU2Nyb2xsYmFyT3B0aW9uc1Byb3ZpZGVyfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL3Njcm9sbGJhcic7XG5pbXBvcnQgdHlwZSB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2ZpbHRlciwgbWFwLCBtZXJnZU1hcH0gZnJvbSAncnhqcyc7XG5cbmZ1bmN0aW9uIGxhYmVsc1Byb3ZpZGVyRmFjdG9yeShwYWdlczogVHVpRG9jUm91dGVQYWdlcyk6IHJlYWRvbmx5IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gcGFnZXNcbiAgICAgICAgLm1hcCgoe3NlY3Rpb259KSA9PiBzZWN0aW9uKVxuICAgICAgICAuZmlsdGVyKHR1aUlzUHJlc2VudClcbiAgICAgICAgLmZpbHRlcigoaXRlbSwgaW5kZXgsIGFycmF5KSA9PiBhcnJheS5pbmRleE9mKGl0ZW0pID09PSBpbmRleCk7XG59XG5cbi8qKlxuICogUGFnZSB0aXRsZVxuICovXG5leHBvcnQgY29uc3QgTkFWSUdBVElPTl9USVRMRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxPYnNlcnZhYmxlPHN0cmluZz4+KFxuICAgIG5nRGV2TW9kZSA/ICdOQVZJR0FUSU9OX1RJVExFJyA6ICcnLFxuKTtcblxuLyoqXG4gKiBOYXZpZ2F0aW9uIHNlY3Rpb25zIGxhYmVscyBmb3Igc2VhcmNoXG4gKi9cbmV4cG9ydCBjb25zdCBOQVZJR0FUSU9OX0xBQkVMUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxyZWFkb25seSBzdHJpbmdbXT4oXG4gICAgbmdEZXZNb2RlID8gJ05BVklHQVRJT05fTEFCRUxTJyA6ICcnLFxuKTtcblxuLyoqXG4gKiBOYXZpZ2F0aW9uIHBhZ2VzXG4gKi9cbmV4cG9ydCBjb25zdCBOQVZJR0FUSU9OX0lURU1TID0gbmV3IEluamVjdGlvblRva2VuPHJlYWRvbmx5IFR1aURvY1JvdXRlUGFnZXNbXT4oXG4gICAgbmdEZXZNb2RlID8gJ05BVklHQVRJT05fSVRFTVMnIDogJycsXG4pO1xuXG5leHBvcnQgY29uc3QgTkFWSUdBVElPTl9QUk9WSURFUlM6IFByb3ZpZGVyW10gPSBbXG4gICAgdHVpQXV0b0ZvY3VzT3B0aW9uc1Byb3ZpZGVyKHtwcmV2ZW50U2Nyb2xsOiB0cnVlfSksXG4gICAgdHVpTGlua09wdGlvbnNQcm92aWRlcih7YXBwZWFyYW5jZTogJ2FjdGlvbi1ncmF5c2NhbGUnfSksXG4gICAge1xuICAgICAgICBwcm92aWRlOiBOQVZJR0FUSU9OX1RJVExFLFxuICAgICAgICBkZXBzOiBbUm91dGVyLCBBY3RpdmF0ZWRSb3V0ZSwgVFVJX0RPQ19USVRMRV0sXG4gICAgICAgIHVzZUZhY3Rvcnk6IChcbiAgICAgICAgICAgIHJvdXRlcjogUm91dGVyLFxuICAgICAgICAgICAgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICAgICAgdGl0bGVQcmVmaXg6IHN0cmluZyxcbiAgICAgICAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+ID0+XG4gICAgICAgICAgICByb3V0ZXIuZXZlbnRzLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAoZXZlbnQ6IEV2ZW50KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAoZXZlbnQgaW5zdGFuY2VvZiBTY3JvbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGV2ZW50LnJvdXRlckV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZmFsc2UpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgbWFwKCgpID0+IGFjdGl2YXRlZFJvdXRlLmZpcnN0Q2hpbGQpLFxuICAgICAgICAgICAgICAgIGZpbHRlcih0dWlJc1ByZXNlbnQpLFxuICAgICAgICAgICAgICAgIG1lcmdlTWFwKCh7ZGF0YX0pID0+IGRhdGEpLFxuICAgICAgICAgICAgICAgIG1hcCgoe3RpdGxlfSkgPT4gYCR7dGl0bGVQcmVmaXh9JHt0aXRsZX1gKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgICAgICAgICAgICksXG4gICAgfSxcbiAgICB7XG4gICAgICAgIHByb3ZpZGU6IE5BVklHQVRJT05fTEFCRUxTLFxuICAgICAgICBkZXBzOiBbVFVJX0RPQ19QQUdFU10sXG4gICAgICAgIHVzZUZhY3Rvcnk6IGxhYmVsc1Byb3ZpZGVyRmFjdG9yeSxcbiAgICB9LFxuICAgIHtcbiAgICAgICAgcHJvdmlkZTogTkFWSUdBVElPTl9JVEVNUyxcbiAgICAgICAgZGVwczogW1RVSV9ET0NfUEFHRVNdLFxuICAgICAgICB1c2VGYWN0b3J5OiAocGFnZXM6IFR1aURvY1JvdXRlUGFnZXMpOiByZWFkb25seSBUdWlEb2NSb3V0ZVBhZ2VzW10gPT4ge1xuICAgICAgICAgICAgY29uc3QgbGFiZWxzID0gbGFiZWxzUHJvdmlkZXJGYWN0b3J5KHBhZ2VzKTtcblxuICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAuLi5sYWJlbHMubWFwKChsYWJlbCkgPT4gcGFnZXMuZmlsdGVyKCh7c2VjdGlvbn0pID0+IHNlY3Rpb24gPT09IGxhYmVsKSksXG4gICAgICAgICAgICAgICAgcGFnZXMuZmlsdGVyKChwYWdlKSA9PiAhcGFnZS5zZWN0aW9uKSxcbiAgICAgICAgICAgIF07XG4gICAgICAgIH0sXG4gICAgfSxcbiAgICB0dWlTY3JvbGxiYXJPcHRpb25zUHJvdmlkZXIoe1xuICAgICAgICBtb2RlOiAnaG92ZXInLFxuICAgIH0pLFxuXTtcbiJdfQ==