UNPKG

@miesil/pp-breadcrumbs

Version:

PP-Breadcrumbs is an Angular 7 module generating breadcrumbs based on the routing state.

73 lines 5.87 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { of } from 'rxjs'; import { Injectable } from '@angular/core'; import { template, templateSettings } from 'lodash'; templateSettings.interpolate = /{{([\s\S]+?)}}/g; export class PpBreadcrumbsResolver { /** * @param {?} route * @param {?} state * @return {?} */ resolve(route, state) { /** @type {?} */ const data = route.routeConfig.data; /** @type {?} */ const path = this.getFullPath(route); /** @type {?} */ const rawText = typeof data.breadcrumbs === 'string' ? data.breadcrumbs : data.breadcrumbs.text || data.text || path; return of([ { path: path, text: this.stringFormat(rawText, route.data) } ]); } /** * @param {?} route * @return {?} */ getFullPath(route) { /** @type {?} */ const relativePath = (/** * @param {?} segments * @return {?} */ (segments) => segments.reduce((/** * @param {?} a * @param {?} v * @return {?} */ (a, v) => (a += '/' + v.path)), '')); /** @type {?} */ const fullPath = (/** * @param {?} routes * @return {?} */ (routes) => routes.reduce((/** * @param {?} a * @param {?} v * @return {?} */ (a, v) => (a += relativePath(v.url))), '')); return fullPath(route.pathFromRoot); } /** * @private * @param {?} templateString * @param {?} binding * @return {?} */ stringFormat(templateString, binding) { /** @type {?} */ const compiled = template(templateString); return compiled(binding); } } PpBreadcrumbsResolver.decorators = [ { type: Injectable } ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYnMucmVzb2x2ZXIuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbWllc2lsL3BwLWJyZWFkY3J1bWJzLyIsInNvdXJjZXMiOlsibGliL2JyZWFkY3J1bWJzLnJlc29sdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXRDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUVwRCxnQkFBZ0IsQ0FBQyxXQUFXLEdBQUcsaUJBQWlCLENBQUM7QUFHakQsTUFBTSxPQUFPLHFCQUFxQjs7Ozs7O0lBRWhDLE9BQU8sQ0FBQyxLQUE2QixFQUFFLEtBQTBCOztjQUN6RCxJQUFJLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJOztjQUM3QixJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7O2NBQzlCLE9BQU8sR0FBRyxPQUFPLElBQUksQ0FBQyxXQUFXLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUk7UUFFcEgsT0FBTyxFQUFFLENBQUM7WUFDUjtnQkFDRSxJQUFJLEVBQUUsSUFBSTtnQkFDVixJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQzthQUM3QztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Ozs7O0lBRUQsV0FBVyxDQUFDLEtBQTZCOztjQUNqQyxZQUFZOzs7O1FBQUcsQ0FBQyxRQUFzQixFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTTs7Ozs7UUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUE7O2NBQzdGLFFBQVE7Ozs7UUFBRyxDQUFDLE1BQWdDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNOzs7OztRQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQzlHLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN0QyxDQUFDOzs7Ozs7O0lBRU8sWUFBWSxDQUFDLGNBQXNCLEVBQUUsT0FBWTs7Y0FDakQsUUFBUSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUM7UUFDekMsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0IsQ0FBQzs7O1lBekJGLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSZXNvbHZlLCBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBVcmxTZWdtZW50IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQnJlYWRjcnVtYiB9IGZyb20gJy4vYnJlYWRjcnVtYic7XHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgdGVtcGxhdGUsIHRlbXBsYXRlU2V0dGluZ3MgfSBmcm9tICdsb2Rhc2gnO1xyXG5cclxudGVtcGxhdGVTZXR0aW5ncy5pbnRlcnBvbGF0ZSA9IC97eyhbXFxzXFxTXSs/KX19L2c7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBQcEJyZWFkY3J1bWJzUmVzb2x2ZXIgaW1wbGVtZW50cyBSZXNvbHZlPEJyZWFkY3J1bWJbXT4ge1xyXG5cclxuICByZXNvbHZlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IE9ic2VydmFibGU8QnJlYWRjcnVtYltdPiB8IFByb21pc2U8QnJlYWRjcnVtYltdPiB8IEJyZWFkY3J1bWJbXSB7XHJcbiAgICBjb25zdCBkYXRhID0gcm91dGUucm91dGVDb25maWcuZGF0YTtcclxuICAgIGNvbnN0IHBhdGggPSB0aGlzLmdldEZ1bGxQYXRoKHJvdXRlKTtcclxuICAgIGNvbnN0IHJhd1RleHQgPSB0eXBlb2YgZGF0YS5icmVhZGNydW1icyA9PT0gJ3N0cmluZycgPyBkYXRhLmJyZWFkY3J1bWJzIDogZGF0YS5icmVhZGNydW1icy50ZXh0IHx8IGRhdGEudGV4dCB8fCBwYXRoO1xyXG5cclxuICAgIHJldHVybiBvZihbXHJcbiAgICAgIHtcclxuICAgICAgICBwYXRoOiBwYXRoLFxyXG4gICAgICAgIHRleHQ6IHRoaXMuc3RyaW5nRm9ybWF0KHJhd1RleHQsIHJvdXRlLmRhdGEpXHJcbiAgICAgIH1cclxuICAgIF0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0RnVsbFBhdGgocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgcmVsYXRpdmVQYXRoID0gKHNlZ21lbnRzOiBVcmxTZWdtZW50W10pID0+IHNlZ21lbnRzLnJlZHVjZSgoYSwgdikgPT4gKGEgKz0gJy8nICsgdi5wYXRoKSwgJycpO1xyXG4gICAgY29uc3QgZnVsbFBhdGggPSAocm91dGVzOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90W10pID0+IHJvdXRlcy5yZWR1Y2UoKGEsIHYpID0+IChhICs9IHJlbGF0aXZlUGF0aCh2LnVybCkpLCAnJyk7XHJcbiAgICByZXR1cm4gZnVsbFBhdGgocm91dGUucGF0aEZyb21Sb290KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RyaW5nRm9ybWF0KHRlbXBsYXRlU3RyaW5nOiBzdHJpbmcsIGJpbmRpbmc6IGFueSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBjb21waWxlZCA9IHRlbXBsYXRlKHRlbXBsYXRlU3RyaW5nKTtcclxuICAgIHJldHVybiBjb21waWxlZChiaW5kaW5nKTtcclxuICB9XHJcbn1cclxuIl19