UNPKG

pp-breadcrumbs

Version:

PP-Breadcrumbs is an Angular 10 library generating breadcrumbs based on the routing state.

29 lines 4.82 kB
import { of } from 'rxjs'; import { Injectable } from '@angular/core'; import { template } from 'lodash'; export class PpBreadcrumbsResolver { resolve(route, state) { const data = route.routeConfig.data; const path = this.getFullPath(route); const rawText = typeof data.breadcrumbs === 'string' ? data.breadcrumbs : data.breadcrumbs.text || data.text || path; return of([ { path: path, text: this.stringFormat(rawText, route.data) } ]); } getFullPath(route) { const relativePath = (segments) => segments.reduce((a, v) => (a += '/' + v.path), ''); const fullPath = (routes) => routes.reduce((a, v) => (a += relativePath(v.url)), ''); return fullPath(route.pathFromRoot); } stringFormat(templateString, binding) { const compiled = template(templateString, { interpolate: /{{(.+?)}}/g }); return compiled(binding); } } PpBreadcrumbsResolver.decorators = [ { type: Injectable } ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYnMucmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcC1icmVhZGNydW1icy9zcmMvbGliL2JyZWFkY3J1bWJzLnJlc29sdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFcEMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBR2hDLE1BQU0sT0FBTyxxQkFBcUI7SUFFaEMsT0FBTyxDQUFDLEtBQTZCLEVBQUUsS0FBMEI7UUFDL0QsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFDcEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxNQUFNLE9BQU8sR0FBRyxPQUFPLElBQUksQ0FBQyxXQUFXLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQztRQUVySCxPQUFPLEVBQUUsQ0FBQztZQUNSO2dCQUNFLElBQUksRUFBRSxJQUFJO2dCQUNWLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDO2FBQzdDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVTLFdBQVcsQ0FBQyxLQUE2QjtRQUNqRCxNQUFNLFlBQVksR0FBRyxDQUFDLFFBQXNCLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3BHLE1BQU0sUUFBUSxHQUFHLENBQUMsTUFBZ0MsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMvRyxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVTLFlBQVksQ0FBQyxjQUFzQixFQUFFLE9BQVk7UUFDekQsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLGNBQWMsRUFBRSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQ3pFLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNCLENBQUM7OztZQXpCRixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSZXNvbHZlLCBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBVcmxTZWdtZW50fSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQge09ic2VydmFibGUsIG9mfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtCcmVhZGNydW1ifSBmcm9tICcuL2JyZWFkY3J1bWInO1xyXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge3RlbXBsYXRlfSBmcm9tICdsb2Rhc2gnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgUHBCcmVhZGNydW1ic1Jlc29sdmVyIGltcGxlbWVudHMgUmVzb2x2ZTxCcmVhZGNydW1iW10+IHtcclxuXHJcbiAgcmVzb2x2ZShyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPEJyZWFkY3J1bWJbXT4gfCBQcm9taXNlPEJyZWFkY3J1bWJbXT4gfCBCcmVhZGNydW1iW10ge1xyXG4gICAgY29uc3QgZGF0YSA9IHJvdXRlLnJvdXRlQ29uZmlnLmRhdGE7XHJcbiAgICBjb25zdCBwYXRoID0gdGhpcy5nZXRGdWxsUGF0aChyb3V0ZSk7XHJcbiAgICBjb25zdCByYXdUZXh0ID0gdHlwZW9mIGRhdGEuYnJlYWRjcnVtYnMgPT09ICdzdHJpbmcnID8gZGF0YS5icmVhZGNydW1icyA6IGRhdGEuYnJlYWRjcnVtYnMudGV4dCB8fCBkYXRhLnRleHQgfHwgcGF0aDtcclxuXHJcbiAgICByZXR1cm4gb2YoW1xyXG4gICAgICB7XHJcbiAgICAgICAgcGF0aDogcGF0aCxcclxuICAgICAgICB0ZXh0OiB0aGlzLnN0cmluZ0Zvcm1hdChyYXdUZXh0LCByb3V0ZS5kYXRhKVxyXG4gICAgICB9XHJcbiAgICBdKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXRGdWxsUGF0aChyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCByZWxhdGl2ZVBhdGggPSAoc2VnbWVudHM6IFVybFNlZ21lbnRbXSkgPT4gc2VnbWVudHMucmVkdWNlKChhLCB2KSA9PiAoYSArPSAnLycgKyB2LnBhdGgpLCAnJyk7XHJcbiAgICBjb25zdCBmdWxsUGF0aCA9IChyb3V0ZXM6IEFjdGl2YXRlZFJvdXRlU25hcHNob3RbXSkgPT4gcm91dGVzLnJlZHVjZSgoYSwgdikgPT4gKGEgKz0gcmVsYXRpdmVQYXRoKHYudXJsKSksICcnKTtcclxuICAgIHJldHVybiBmdWxsUGF0aChyb3V0ZS5wYXRoRnJvbVJvb3QpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHN0cmluZ0Zvcm1hdCh0ZW1wbGF0ZVN0cmluZzogc3RyaW5nLCBiaW5kaW5nOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgY29tcGlsZWQgPSB0ZW1wbGF0ZSh0ZW1wbGF0ZVN0cmluZywgeyBpbnRlcnBvbGF0ZTogL3t7KC4rPyl9fS9nIH0pO1xyXG4gICAgcmV0dXJuIGNvbXBpbGVkKGJpbmRpbmcpO1xyXG4gIH1cclxufVxyXG4iXX0=