@bespunky/angular-zen
Version:
The Angular tools you always wished were there.
22 lines • 4.38 kB
JavaScript
import { firstUpper } from '../_utils/_string-utils';
import { _RouteComposer_ } from '../_navigation-x.symbols';
// TODO: Warn if multiple composers with the same name were found
export function collectRouteComposersByAutoNavigatorName(route) {
const composer = route[_RouteComposer_];
const autoNavigatorName = `to${firstUpper(composer.name)}`;
const childComposers = collectArrayRouteComposersByAutoNavigatioName(route.children);
return new Map([
[autoNavigatorName, composer],
...(childComposers ?? [])
]);
}
function collectArrayRouteComposersByAutoNavigatioName(routes) {
return routes?.map(collectRouteComposersByAutoNavigatorName)
.reduce((allNestedComposers, childComposers) => new Map([...allNestedComposers, ...childComposers]), new Map());
}
export function extractArgsFromPath(path) {
return path
.split('/')
.filter(segment => segment.startsWith(':'));
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX3V0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXplbi9yb3V0ZXIteC9uYXZpZ2F0aW9uL3NyYy9saWIvcm91dGUtY29tcG9zZXIvX3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFLM0QsaUVBQWlFO0FBQ2pFLE1BQU0sVUFBVSx3Q0FBd0MsQ0FBQyxLQUFzRjtJQUUzSSxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUUsZUFBZSxDQUFFLENBQUM7SUFDMUMsTUFBTSxpQkFBaUIsR0FBRyxLQUFNLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFFLEVBQUUsQ0FBQztJQUU3RCxNQUFNLGNBQWMsR0FBRyw2Q0FBNkMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFckYsT0FBTyxJQUFJLEdBQUcsQ0FBQztRQUNYLENBQUUsaUJBQWlCLEVBQUUsUUFBUSxDQUFFO1FBQy9CLEdBQUcsQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFDO0tBQzVCLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRCxTQUFTLDZDQUE2QyxDQUFDLE1BQTJGO0lBRTlJLE9BQU8sTUFBTSxFQUFFLEdBQUcsQ0FBQyx3Q0FBd0MsQ0FBQztTQUN2RCxNQUFNLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUUsR0FBRyxrQkFBa0IsRUFBRSxHQUFHLGNBQWMsQ0FBRSxDQUFDLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQzFILENBQUM7QUFFRCxNQUFNLFVBQVUsbUJBQW1CLENBQXNCLElBQVU7SUFFL0QsT0FBTyxJQUFJO1NBQ04sS0FBSyxDQUFDLEdBQUcsQ0FBQztTQUNWLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQTBCLENBQUM7QUFDN0UsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJvdXRlQ29tcG9zZXIgfSBmcm9tICcuL3JvdXRlci1jb21wb3Nlcic7XG5pbXBvcnQgeyBmaXJzdFVwcGVyIH0gZnJvbSAnLi4vX3V0aWxzL19zdHJpbmctdXRpbHMnO1xuaW1wb3J0IHsgX1JvdXRlQ29tcG9zZXJfIH0gZnJvbSAnLi4vX25hdmlnYXRpb24teC5zeW1ib2xzJztcblxuaW1wb3J0IHR5cGUgeyBSZWFkb25seVJvdXRlLCBXaXRoUm91dGVDb21wb3NlciB9IGZyb20gJy4uL3R5cGVzL2NvbXBvc2FibGUtcm91dGVzLnR5cGVzJztcbmltcG9ydCB0eXBlIHsgUm91dGVBcmd1bWVudCB9IGZyb20gJy4uL3R5cGVzL3JvdXRlLXBhdGhzLnR5cGVzJztcblxuLy8gVE9ETzogV2FybiBpZiBtdWx0aXBsZSBjb21wb3NlcnMgd2l0aCB0aGUgc2FtZSBuYW1lIHdlcmUgZm91bmRcbmV4cG9ydCBmdW5jdGlvbiBjb2xsZWN0Um91dGVDb21wb3NlcnNCeUF1dG9OYXZpZ2F0b3JOYW1lKHJvdXRlOiBXaXRoUm91dGVDb21wb3Nlcjx1bmtub3duLCBzdHJpbmcsIHN0cmluZz4gJiBSZWFkb25seVJvdXRlPHN0cmluZywgc3RyaW5nLCBhbnk+KTogTWFwPHN0cmluZywgUm91dGVDb21wb3Nlcjx1bmtub3duLCBzdHJpbmcsIHN0cmluZz4+XG57XG4gICAgY29uc3QgY29tcG9zZXIgPSByb3V0ZVsgX1JvdXRlQ29tcG9zZXJfIF07XG4gICAgY29uc3QgYXV0b05hdmlnYXRvck5hbWUgPSBgdG8keyBmaXJzdFVwcGVyKGNvbXBvc2VyLm5hbWUpIH1gO1xuXG4gICAgY29uc3QgY2hpbGRDb21wb3NlcnMgPSBjb2xsZWN0QXJyYXlSb3V0ZUNvbXBvc2Vyc0J5QXV0b05hdmlnYXRpb05hbWUocm91dGUuY2hpbGRyZW4pO1xuXG4gICAgcmV0dXJuIG5ldyBNYXAoW1xuICAgICAgICBbIGF1dG9OYXZpZ2F0b3JOYW1lLCBjb21wb3NlciBdLFxuICAgICAgICAuLi4oY2hpbGRDb21wb3NlcnMgPz8gW10pXG4gICAgXSk7XG59XG5cbmZ1bmN0aW9uIGNvbGxlY3RBcnJheVJvdXRlQ29tcG9zZXJzQnlBdXRvTmF2aWdhdGlvTmFtZShyb3V0ZXM6IChXaXRoUm91dGVDb21wb3Nlcjx1bmtub3duLCBzdHJpbmcsIHN0cmluZz4gJiBSZWFkb25seVJvdXRlPHN0cmluZywgc3RyaW5nLCBhbnk+KVtdKTogTWFwPHN0cmluZywgUm91dGVDb21wb3Nlcjx1bmtub3duLCBzdHJpbmcsIHN0cmluZz4+XG57XG4gICAgcmV0dXJuIHJvdXRlcz8ubWFwKGNvbGxlY3RSb3V0ZUNvbXBvc2Vyc0J5QXV0b05hdmlnYXRvck5hbWUpXG4gICAgICAgIC5yZWR1Y2UoKGFsbE5lc3RlZENvbXBvc2VycywgY2hpbGRDb21wb3NlcnMpID0+IG5ldyBNYXAoWyAuLi5hbGxOZXN0ZWRDb21wb3NlcnMsIC4uLmNoaWxkQ29tcG9zZXJzIF0pLCBuZXcgTWFwKCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdEFyZ3NGcm9tUGF0aDxQYXRoIGV4dGVuZHMgc3RyaW5nPihwYXRoOiBQYXRoKTogUm91dGVBcmd1bWVudDxQYXRoPltdXG57XG4gICAgcmV0dXJuIHBhdGhcbiAgICAgICAgLnNwbGl0KCcvJylcbiAgICAgICAgLmZpbHRlcihzZWdtZW50ID0+IHNlZ21lbnQuc3RhcnRzV2l0aCgnOicpKSBhcyBSb3V0ZUFyZ3VtZW50PFBhdGg+W107XG59Il19