@outerlimitstech/ngx-breadcrumbs 18.0.0 → 19.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ <img src="https://user-images.githubusercontent.com/1365728/127748628-47575d74-a2fb-4539-a31e-74d8b435fc21.png" width="30%" >
2
+
1
3
  # @outerlimitstech/ngx-breadcrumbs
2
4
 
3
5
  Angular Library for generating breadcrumbs based on the routing state.
@@ -129,4 +131,4 @@ $breadcrumb-border-radius: 15px !default;
129
131
  }
130
132
  }
131
133
 
132
- ```
134
+ ```
@@ -1,8 +1,9 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, inject, Injector, Component } from '@angular/core';
3
- import { Observable, from, of, BehaviorSubject, filter, mergeMap, distinct, tap, toArray, first, concat } from 'rxjs';
2
+ import { Injectable, signal, inject, Injector, DestroyRef, Component } from '@angular/core';
3
+ import { Observable, from, of, filter, mergeMap, distinct, tap, toArray, first, concat } from 'rxjs';
4
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
5
  import * as i2 from '@angular/router';
5
- import { ActivatedRoute, Router, NavigationEnd, RouterModule } from '@angular/router';
6
+ import { Router, NavigationEnd, RouterModule } from '@angular/router';
6
7
  import * as i1 from '@angular/common';
7
8
  import { CommonModule } from '@angular/common';
8
9
 
@@ -13,10 +14,10 @@ class BreadcrumbsConfig {
13
14
  this.postProcess = options?.postProcess ?? null;
14
15
  this.applyDistinctOn = options?.applyDistinctOn ?? 'text';
15
16
  }
16
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: BreadcrumbsConfig, deps: [{ token: BreadcrumbsConfig }], target: i0.ɵɵFactoryTarget.Injectable });
17
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: BreadcrumbsConfig });
17
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: BreadcrumbsConfig, deps: [{ token: BreadcrumbsConfig }], target: i0.ɵɵFactoryTarget.Injectable });
18
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: BreadcrumbsConfig });
18
19
  }
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: BreadcrumbsConfig, decorators: [{
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: BreadcrumbsConfig, decorators: [{
20
21
  type: Injectable
21
22
  }], ctorParameters: () => [{ type: BreadcrumbsConfig }] });
22
23
 
@@ -109,17 +110,18 @@ class BreadcrumbsResolver {
109
110
  }
110
111
 
111
112
  class BreadcrumbsService {
112
- breadcrumbs = new BehaviorSubject([]);
113
+ breadcrumbs = signal([]);
113
114
  defaultResolver = new BreadcrumbsResolver();
114
- route = inject(ActivatedRoute);
115
115
  router = inject(Router);
116
116
  config = inject(BreadcrumbsConfig);
117
117
  injector = inject(Injector);
118
+ destroyRef = inject(DestroyRef);
118
119
  constructor() {
119
120
  this.initialize();
120
121
  }
121
122
  initialize() {
122
- this.router.events.pipe(filter((x) => x instanceof NavigationEnd)).subscribe(() => {
123
+ this.router.events.pipe(filter((x) => x instanceof NavigationEnd), // || x['routerEvent'] instanceof NavigationEnd
124
+ takeUntilDestroyed(this.destroyRef)).subscribe(() => {
123
125
  const routeRoot = this.router.routerState.snapshot.root;
124
126
  this.resolveCrumbs(routeRoot).pipe(mergeMap((crumbs) => crumbs), this.config.applyDistinctOn != null ? distinct((crumb) => crumb[this.config.applyDistinctOn]) : tap(), toArray(), mergeMap((crumbs) => {
125
127
  if (this.config.postProcess) {
@@ -130,16 +132,11 @@ class BreadcrumbsService {
130
132
  return of(crumbs);
131
133
  }
132
134
  })).subscribe((crumbs) => {
133
- this.breadcrumbs.next(crumbs);
135
+ this.breadcrumbs.set(crumbs);
134
136
  });
135
137
  });
136
138
  }
137
- get crumbs$() {
138
- return this.breadcrumbs;
139
- }
140
- getCrumbs() {
141
- return this.crumbs$;
142
- }
139
+ crumbs = this.breadcrumbs.asReadonly();
143
140
  resolveCrumbs(route) {
144
141
  let crumbs$;
145
142
  const data = route.routeConfig && route.routeConfig.data;
@@ -163,10 +160,10 @@ class BreadcrumbsService {
163
160
  }
164
161
  return crumbs$;
165
162
  }
166
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: BreadcrumbsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
167
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: BreadcrumbsService, providedIn: 'root' });
163
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: BreadcrumbsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
164
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: BreadcrumbsService, providedIn: 'root' });
168
165
  }
169
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: BreadcrumbsService, decorators: [{
166
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: BreadcrumbsService, decorators: [{
170
167
  type: Injectable,
171
168
  args: [{
172
169
  providedIn: 'root'
@@ -175,17 +172,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
175
172
 
176
173
  class BreadcrumbsComponent {
177
174
  breadcrumbsService = inject(BreadcrumbsService);
178
- crumbs$ = this.breadcrumbsService.getCrumbs();
179
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: BreadcrumbsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
180
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: BreadcrumbsComponent, isStandalone: true, selector: "olt-ngx-breadcrumbs", providers: [
175
+ crumbs = this.breadcrumbsService.crumbs;
176
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: BreadcrumbsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
177
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.18", type: BreadcrumbsComponent, isStandalone: true, selector: "olt-ngx-breadcrumbs", providers: [
181
178
  BreadcrumbsService,
182
179
  {
183
180
  provide: BreadcrumbsConfig,
184
181
  useFactory: () => new BreadcrumbsConfig()
185
182
  }
186
183
  ], ngImport: i0, template: `
187
- <ol *ngIf="crumbs$ | async as crumbs" class="breadcrumbs__container">
188
- <li *ngFor="let crumb of crumbs; let last = last"
184
+ <ol *ngIf="crumbs().length > 0" class="breadcrumbs__container">
185
+ <li *ngFor="let crumb of crumbs(); let last = last"
189
186
  [ngClass]="{ 'breadcrumbs__item--active': last }"
190
187
  class="breadcrumbs__item"
191
188
  >
@@ -193,19 +190,19 @@ class BreadcrumbsComponent {
193
190
  <span *ngIf="last">{{ crumb.text }}</span>
194
191
  </li>
195
192
  </ol>
196
- `, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] });
193
+ `, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] });
197
194
  }
198
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: BreadcrumbsComponent, decorators: [{
195
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: BreadcrumbsComponent, decorators: [{
199
196
  type: Component,
200
- args: [{ selector: 'olt-ngx-breadcrumbs', standalone: true, imports: [CommonModule, RouterModule], providers: [
197
+ args: [{ selector: 'olt-ngx-breadcrumbs', imports: [CommonModule, RouterModule], providers: [
201
198
  BreadcrumbsService,
202
199
  {
203
200
  provide: BreadcrumbsConfig,
204
201
  useFactory: () => new BreadcrumbsConfig()
205
202
  }
206
203
  ], template: `
207
- <ol *ngIf="crumbs$ | async as crumbs" class="breadcrumbs__container">
208
- <li *ngFor="let crumb of crumbs; let last = last"
204
+ <ol *ngIf="crumbs().length > 0" class="breadcrumbs__container">
205
+ <li *ngFor="let crumb of crumbs(); let last = last"
209
206
  [ngClass]="{ 'breadcrumbs__item--active': last }"
210
207
  class="breadcrumbs__item"
211
208
  >
@@ -1 +1 @@
1
- {"version":3,"file":"outerlimitstech-ngx-breadcrumbs.mjs","sources":["../../../projects/ngx-breadcrumbs/src/lib/services/breadcrumbs.config.ts","../../../projects/ngx-breadcrumbs/src/lib/utils/breadcrumbs.utils.ts","../../../projects/ngx-breadcrumbs/src/lib/services/breadcrumbs.resolver.ts","../../../projects/ngx-breadcrumbs/src/lib/services/breadcrumbs.service.ts","../../../projects/ngx-breadcrumbs/src/lib/breadcrumbs.component.ts","../../../projects/ngx-breadcrumbs/src/public-api.ts","../../../projects/ngx-breadcrumbs/src/outerlimitstech-ngx-breadcrumbs.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { Breadcrumb } from '../models/breadcrumb';\r\n\r\nexport type PostProcessFunction = (crumbs: Breadcrumb[]) => Promise<Breadcrumb[]> | Observable<Breadcrumb[]> | Breadcrumb[];\r\n\r\nexport type DistinctKey = keyof Breadcrumb;\r\n\r\n@Injectable()\r\nexport class BreadcrumbsConfig {\r\n public postProcess: PostProcessFunction | null = null;\r\n public applyDistinctOn: DistinctKey | null = 'text';\r\n\r\n constructor(options?: BreadcrumbsConfig) {\r\n this.postProcess = options?.postProcess ?? null;\r\n this.applyDistinctOn = options?.applyDistinctOn ?? 'text';\r\n }\r\n}\r\n","import { Observable, of, from } from 'rxjs';\r\n\r\nexport abstract class BreadcrumbsUtils {\r\n public static stringFormat(rawTemplate: string, data: any): string {\r\n const templateRegex = new RegExp('{{[\\\\s]*[a-zA-Z._]+?[\\\\s]*}}', 'g');\r\n\r\n return rawTemplate.replace(templateRegex, (match) => {\r\n const keyRegex = new RegExp('([a-zA-Z._]+)', 'g');\r\n const key = match.match(keyRegex);\r\n\r\n if (!key || !key.length) {\r\n return match;\r\n }\r\n\r\n const value = BreadcrumbsUtils.leaf(data, key[0]);\r\n\r\n if (!value) {\r\n return key[0];\r\n }\r\n\r\n return value;\r\n });\r\n }\r\n\r\n public static wrapIntoObservable<T>(value: T | Promise<T> | Observable<T>): Observable<T> {\r\n if (value instanceof Observable) {\r\n return value;\r\n }\r\n\r\n if (this.isPromise(value)) {\r\n return from(Promise.resolve(value));\r\n }\r\n\r\n return of(value as T);\r\n }\r\n\r\n private static isPromise(value: any): boolean {\r\n return value && (typeof value.then === 'function');\r\n }\r\n\r\n /**\r\n * Access object nested value by giving a path\r\n *\r\n * @param obj The object you want to access value from\r\n * @param path The value path. e.g: `bar.baz`\r\n * @example\r\n * const obj = { foo: { bar: 'Baz' } };\r\n * const path = 'foo.bar';\r\n * leaf(obj, path) // 'Baz'\r\n */\r\n public static leaf(obj: any, path: string) {\r\n const result = path.split('.').reduce((value, el) => value[el] || {}, obj);\r\n\r\n return BreadcrumbsUtils.isEmptyObject(result) ? null : result;\r\n }\r\n\r\n /**\r\n * checks whether an object is empty or not\r\n *\r\n * @param obj object to extract values from\r\n * @returns boolean\r\n */\r\n public static isEmptyObject(obj: any): boolean {\r\n if (typeof obj === 'object' && Object.prototype.toString.call(obj) === '[object Object]') {\r\n for (const key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n","import type { ActivatedRouteSnapshot, ResolveFn, RouterStateSnapshot, UrlSegment } from '@angular/router';\nimport { Breadcrumb } from '../models/breadcrumb';\nimport { Observable, of } from 'rxjs';\nimport { BreadcrumbsUtils } from '../utils/breadcrumbs.utils';\n\n// export const breadcrumbsResolver: ResolveFn<Breadcrumb[]> = (route, state) => {\n// return new Array<Breadcrumb>();\n// };\n\n\nexport class BreadcrumbsResolver {\n public resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<Breadcrumb[]> | Promise<Breadcrumb[]> | Breadcrumb[] {\n\n \n const textData = route.routeConfig?.data != null ? route.routeConfig?.data['text'] : null;\n const breadcrumbData = route.routeConfig?.data != null ? route.routeConfig?.data['breadcrumbs'] : null;\n\n const path = this.getFullPath(route);\n\n let text = breadcrumbData != null && typeof(breadcrumbData === 'string') ? breadcrumbData : breadcrumbData?.text ?? textData ?? path;\n text = BreadcrumbsUtils.stringFormat(text, route.data);\n\n const crumbs: Breadcrumb[] = [{\n text,\n path\n }];\n\n return of(crumbs);\n }\n\n public getFullPath(route: ActivatedRouteSnapshot): string {\n return this.fetchFullPath(route.pathFromRoot);\n }\n\n private fetchFullPath(routes: ActivatedRouteSnapshot[]): string {\n return routes.reduce((path, route) => path += this.fetchRelativePath(route.url), '');\n }\n\n private fetchRelativePath(urlSegments: UrlSegment[]): string {\n return urlSegments.reduce((path, urlSegment) => path += '/' + urlSegment.path, '');\n }\n}\n\n","import { inject, Injectable, Injector } from '@angular/core';\r\nimport { ActivatedRoute, ActivatedRouteSnapshot, NavigationEnd, Router } from '@angular/router';\r\nimport { BreadcrumbsConfig } from './breadcrumbs.config';\r\nimport { BehaviorSubject, concat, distinct, filter, first, mergeMap, Observable, of, tap, toArray } from 'rxjs';\r\nimport { Breadcrumb } from '../models/breadcrumb';\r\nimport { BreadcrumbsUtils } from '../utils/breadcrumbs.utils';\r\nimport { BreadcrumbsResolver } from './breadcrumbs.resolver';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BreadcrumbsService {\r\n private breadcrumbs = new BehaviorSubject<Breadcrumb[]>([]);\r\n private defaultResolver = new BreadcrumbsResolver();\r\n \r\n private route = inject(ActivatedRoute);\r\n private router = inject(Router);\r\n private config = inject(BreadcrumbsConfig);\r\n private injector = inject(Injector);\r\n \r\n constructor() { \r\n this.initialize();\r\n }\r\n\r\n private initialize() {\r\n this.router.events.pipe(\r\n filter((x) => x instanceof NavigationEnd), // || x['routerEvent'] instanceof NavigationEnd\r\n ).subscribe(() => {\r\n const routeRoot = this.router.routerState.snapshot.root;\r\n\r\n this.resolveCrumbs(routeRoot).pipe(\r\n mergeMap((crumbs: Breadcrumb[]) => crumbs), this.config.applyDistinctOn != null ? distinct((crumb: Breadcrumb) => crumb[this.config.applyDistinctOn!]) : tap(),\r\n toArray(),\r\n mergeMap((crumbs: Breadcrumb[]) => {\r\n if (this.config.postProcess) {\r\n const postProcessedCrumb = this.config.postProcess(crumbs);\r\n return BreadcrumbsUtils.wrapIntoObservable<Breadcrumb[]>(postProcessedCrumb).pipe(first());\r\n } else {\r\n return of(crumbs);\r\n }\r\n })\r\n ).subscribe((crumbs: Breadcrumb[]) => {\r\n this.breadcrumbs.next(crumbs);\r\n });\r\n });\r\n }\r\n\r\n get crumbs$(): Observable<Breadcrumb[]> {\r\n return this.breadcrumbs;\r\n }\r\n\r\n public getCrumbs(): Observable<Breadcrumb[]> {\r\n return this.crumbs$;\r\n }\r\n\r\n private resolveCrumbs(route: ActivatedRouteSnapshot): Observable<Breadcrumb[]> {\r\n let crumbs$: Observable<Breadcrumb[]>;\r\n const data = route.routeConfig && route.routeConfig.data;\r\n const breadcrumbData = data != null ? data['breadcrumbs'] : null;\r\n \r\n if (breadcrumbData != null) {\r\n let resolver: BreadcrumbsResolver;\r\n\r\n if (breadcrumbData.prototype instanceof BreadcrumbsResolver) {\r\n resolver = this.injector.get(breadcrumbData);\r\n } else {\r\n resolver = this.defaultResolver;\r\n }\r\n\r\n const result = resolver.resolve(route, this.router.routerState.snapshot);\r\n crumbs$ = BreadcrumbsUtils.wrapIntoObservable<Breadcrumb[]>(result).pipe(first());\r\n } else {\r\n crumbs$ = of([]);\r\n }\r\n\r\n if (route.firstChild) {\r\n crumbs$ = concat(crumbs$, this.resolveCrumbs(route.firstChild));\r\n }\r\n\r\n return crumbs$;\r\n }\r\n \r\n}\r\n","import { Component, inject } from '@angular/core';\r\nimport { Breadcrumb } from './models/breadcrumb';\r\nimport { Observable } from 'rxjs';\r\nimport { BreadcrumbsService } from './services/breadcrumbs.service';\r\nimport { BreadcrumbsConfig } from './services';\r\nimport { RouterModule } from '@angular/router';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'olt-ngx-breadcrumbs',\r\n standalone: true,\r\n imports: [CommonModule, RouterModule],\r\n providers: [\r\n BreadcrumbsService,\r\n { \r\n provide: BreadcrumbsConfig, \r\n useFactory: () => new BreadcrumbsConfig() \r\n } \r\n ], \r\n template: `\r\n <ol *ngIf=\"crumbs$ | async as crumbs\" class=\"breadcrumbs__container\">\r\n <li *ngFor=\"let crumb of crumbs; let last = last\"\r\n [ngClass]=\"{ 'breadcrumbs__item--active': last }\"\r\n class=\"breadcrumbs__item\"\r\n >\r\n <a *ngIf=\"!last\" [routerLink]=\"crumb.path\">{{ crumb.text }}</a>\r\n <span *ngIf=\"last\">{{ crumb.text }}</span>\r\n </li>\r\n </ol>\r\n `,\r\n styles: ``\r\n})\r\nexport class BreadcrumbsComponent {\r\n breadcrumbsService = inject(BreadcrumbsService);\r\n\r\n public crumbs$: Observable<Breadcrumb[]> = this.breadcrumbsService.getCrumbs();\r\n\r\n \r\n}\r\n","/*\r\n * Public API Surface of ngx-breadcrumbs\r\n */\r\n\r\nexport * from './lib/services/index';\r\nexport * from './lib/breadcrumbs.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"outerlimitstech-ngx-breadcrumbs.mjs","sources":["../../../projects/ngx-breadcrumbs/src/lib/services/breadcrumbs.config.ts","../../../projects/ngx-breadcrumbs/src/lib/utils/breadcrumbs.utils.ts","../../../projects/ngx-breadcrumbs/src/lib/services/breadcrumbs.resolver.ts","../../../projects/ngx-breadcrumbs/src/lib/services/breadcrumbs.service.ts","../../../projects/ngx-breadcrumbs/src/lib/breadcrumbs.component.ts","../../../projects/ngx-breadcrumbs/src/public-api.ts","../../../projects/ngx-breadcrumbs/src/outerlimitstech-ngx-breadcrumbs.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { Breadcrumb } from '../models/breadcrumb';\r\n\r\nexport type PostProcessFunction = (crumbs: Breadcrumb[]) => Promise<Breadcrumb[]> | Observable<Breadcrumb[]> | Breadcrumb[];\r\n\r\nexport type DistinctKey = keyof Breadcrumb;\r\n\r\n@Injectable()\r\nexport class BreadcrumbsConfig {\r\n public postProcess: PostProcessFunction | null = null;\r\n public applyDistinctOn: DistinctKey | null = 'text';\r\n\r\n constructor(options?: BreadcrumbsConfig) {\r\n this.postProcess = options?.postProcess ?? null;\r\n this.applyDistinctOn = options?.applyDistinctOn ?? 'text';\r\n }\r\n}\r\n","import { Observable, of, from } from 'rxjs';\r\n\r\nexport abstract class BreadcrumbsUtils {\r\n public static stringFormat(rawTemplate: string, data: any): string {\r\n const templateRegex = new RegExp('{{[\\\\s]*[a-zA-Z._]+?[\\\\s]*}}', 'g');\r\n\r\n return rawTemplate.replace(templateRegex, (match) => {\r\n const keyRegex = new RegExp('([a-zA-Z._]+)', 'g');\r\n const key = match.match(keyRegex);\r\n\r\n if (!key || !key.length) {\r\n return match;\r\n }\r\n\r\n const value = BreadcrumbsUtils.leaf(data, key[0]);\r\n\r\n if (!value) {\r\n return key[0];\r\n }\r\n\r\n return value;\r\n });\r\n }\r\n\r\n public static wrapIntoObservable<T>(value: T | Promise<T> | Observable<T>): Observable<T> {\r\n if (value instanceof Observable) {\r\n return value;\r\n }\r\n\r\n if (this.isPromise(value)) {\r\n return from(Promise.resolve(value));\r\n }\r\n\r\n return of(value as T);\r\n }\r\n\r\n private static isPromise(value: any): boolean {\r\n return value && (typeof value.then === 'function');\r\n }\r\n\r\n /**\r\n * Access object nested value by giving a path\r\n *\r\n * @param obj The object you want to access value from\r\n * @param path The value path. e.g: `bar.baz`\r\n * @example\r\n * const obj = { foo: { bar: 'Baz' } };\r\n * const path = 'foo.bar';\r\n * leaf(obj, path) // 'Baz'\r\n */\r\n public static leaf(obj: any, path: string) {\r\n const result = path.split('.').reduce((value, el) => value[el] || {}, obj);\r\n\r\n return BreadcrumbsUtils.isEmptyObject(result) ? null : result;\r\n }\r\n\r\n /**\r\n * checks whether an object is empty or not\r\n *\r\n * @param obj object to extract values from\r\n * @returns boolean\r\n */\r\n public static isEmptyObject(obj: any): boolean {\r\n if (typeof obj === 'object' && Object.prototype.toString.call(obj) === '[object Object]') {\r\n for (const key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n","import type { ActivatedRouteSnapshot, ResolveFn, RouterStateSnapshot, UrlSegment } from '@angular/router';\r\nimport { Breadcrumb } from '../models/breadcrumb';\r\nimport { Observable, of } from 'rxjs';\r\nimport { BreadcrumbsUtils } from '../utils/breadcrumbs.utils';\r\n\r\n// export const breadcrumbsResolver: ResolveFn<Breadcrumb[]> = (route, state) => {\r\n// return new Array<Breadcrumb>();\r\n// };\r\n\r\n\r\nexport class BreadcrumbsResolver {\r\n public resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<Breadcrumb[]> | Promise<Breadcrumb[]> | Breadcrumb[] {\r\n\r\n \r\n const textData = route.routeConfig?.data != null ? route.routeConfig?.data['text'] : null;\r\n const breadcrumbData = route.routeConfig?.data != null ? route.routeConfig?.data['breadcrumbs'] : null;\r\n\r\n const path = this.getFullPath(route);\r\n\r\n let text = breadcrumbData != null && typeof(breadcrumbData === 'string') ? breadcrumbData : breadcrumbData?.text ?? textData ?? path;\r\n text = BreadcrumbsUtils.stringFormat(text, route.data);\r\n\r\n const crumbs: Breadcrumb[] = [{\r\n text,\r\n path\r\n }];\r\n\r\n return of(crumbs);\r\n }\r\n\r\n public getFullPath(route: ActivatedRouteSnapshot): string {\r\n return this.fetchFullPath(route.pathFromRoot);\r\n }\r\n\r\n private fetchFullPath(routes: ActivatedRouteSnapshot[]): string {\r\n return routes.reduce((path, route) => path += this.fetchRelativePath(route.url), '');\r\n }\r\n\r\n private fetchRelativePath(urlSegments: UrlSegment[]): string {\r\n return urlSegments.reduce((path, urlSegment) => path += '/' + urlSegment.path, '');\r\n }\r\n}\r\n\r\n","import { DestroyRef, inject, Injectable, Injector, signal } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { ActivatedRouteSnapshot, NavigationEnd, Router } from '@angular/router';\r\nimport { BreadcrumbsConfig } from './breadcrumbs.config';\r\nimport { concat, distinct, filter, first, mergeMap, Observable, of, tap, toArray } from 'rxjs';\r\nimport { Breadcrumb } from '../models/breadcrumb';\r\nimport { BreadcrumbsUtils } from '../utils/breadcrumbs.utils';\r\nimport { BreadcrumbsResolver } from './breadcrumbs.resolver';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BreadcrumbsService {\r\n private breadcrumbs = signal<Breadcrumb[]>([]);\r\n private defaultResolver = new BreadcrumbsResolver();\r\n\r\n private router = inject(Router);\r\n private config = inject(BreadcrumbsConfig);\r\n private injector = inject(Injector);\r\n private destroyRef = inject(DestroyRef);\r\n\r\n constructor() {\r\n this.initialize();\r\n }\r\n\r\n private initialize() {\r\n this.router.events.pipe(\r\n filter((x) => x instanceof NavigationEnd), // || x['routerEvent'] instanceof NavigationEnd\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe(() => {\r\n const routeRoot = this.router.routerState.snapshot.root;\r\n\r\n this.resolveCrumbs(routeRoot).pipe(\r\n mergeMap((crumbs: Breadcrumb[]) => crumbs), this.config.applyDistinctOn != null ? distinct((crumb: Breadcrumb) => crumb[this.config.applyDistinctOn!]) : tap(),\r\n toArray(),\r\n mergeMap((crumbs: Breadcrumb[]) => {\r\n if (this.config.postProcess) {\r\n const postProcessedCrumb = this.config.postProcess(crumbs);\r\n return BreadcrumbsUtils.wrapIntoObservable<Breadcrumb[]>(postProcessedCrumb).pipe(first());\r\n } else {\r\n return of(crumbs);\r\n }\r\n })\r\n ).subscribe((crumbs: Breadcrumb[]) => {\r\n this.breadcrumbs.set(crumbs);\r\n });\r\n });\r\n }\r\n\r\n public readonly crumbs = this.breadcrumbs.asReadonly();\r\n\r\n private resolveCrumbs(route: ActivatedRouteSnapshot): Observable<Breadcrumb[]> {\r\n let crumbs$: Observable<Breadcrumb[]>;\r\n const data = route.routeConfig && route.routeConfig.data;\r\n const breadcrumbData = data != null ? data['breadcrumbs'] : null;\r\n\r\n if (breadcrumbData != null) {\r\n let resolver: BreadcrumbsResolver;\r\n\r\n if (breadcrumbData.prototype instanceof BreadcrumbsResolver) {\r\n resolver = this.injector.get(breadcrumbData);\r\n } else {\r\n resolver = this.defaultResolver;\r\n }\r\n\r\n const result = resolver.resolve(route, this.router.routerState.snapshot);\r\n crumbs$ = BreadcrumbsUtils.wrapIntoObservable<Breadcrumb[]>(result).pipe(first());\r\n } else {\r\n crumbs$ = of([]);\r\n }\r\n\r\n if (route.firstChild) {\r\n crumbs$ = concat(crumbs$, this.resolveCrumbs(route.firstChild));\r\n }\r\n\r\n return crumbs$;\r\n }\r\n\r\n}\r\n","import { Component, inject } from '@angular/core';\r\nimport { BreadcrumbsService } from './services/breadcrumbs.service';\r\nimport { BreadcrumbsConfig } from './services';\r\nimport { RouterModule } from '@angular/router';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'olt-ngx-breadcrumbs',\r\n imports: [CommonModule, RouterModule],\r\n providers: [\r\n BreadcrumbsService,\r\n {\r\n provide: BreadcrumbsConfig,\r\n useFactory: () => new BreadcrumbsConfig()\r\n }\r\n ],\r\n template: `\r\n <ol *ngIf=\"crumbs().length > 0\" class=\"breadcrumbs__container\">\r\n <li *ngFor=\"let crumb of crumbs(); let last = last\"\r\n [ngClass]=\"{ 'breadcrumbs__item--active': last }\"\r\n class=\"breadcrumbs__item\"\r\n >\r\n <a *ngIf=\"!last\" [routerLink]=\"crumb.path\">{{ crumb.text }}</a>\r\n <span *ngIf=\"last\">{{ crumb.text }}</span>\r\n </li>\r\n </ol>\r\n `,\r\n styles: ``\r\n})\r\nexport class BreadcrumbsComponent {\r\n private breadcrumbsService = inject(BreadcrumbsService);\r\n\r\n public crumbs = this.breadcrumbsService.crumbs;\r\n}\r\n","/*\r\n * Public API Surface of ngx-breadcrumbs\r\n */\r\n\r\nexport * from './lib/services/index';\r\nexport * from './lib/breadcrumbs.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1,10 +1,7 @@
1
- import { Breadcrumb } from './models/breadcrumb';
2
- import { Observable } from 'rxjs';
3
- import { BreadcrumbsService } from './services/breadcrumbs.service';
4
1
  import * as i0 from "@angular/core";
5
2
  export declare class BreadcrumbsComponent {
6
- breadcrumbsService: BreadcrumbsService;
7
- crumbs$: Observable<Breadcrumb[]>;
3
+ private breadcrumbsService;
4
+ crumbs: import("@angular/core").Signal<import("./models/breadcrumb").Breadcrumb[]>;
8
5
  static ɵfac: i0.ɵɵFactoryDeclaration<BreadcrumbsComponent, never>;
9
6
  static ɵcmp: i0.ɵɵComponentDeclaration<BreadcrumbsComponent, "olt-ngx-breadcrumbs", never, {}, {}, never, never, true, never>;
10
7
  }
@@ -1,17 +1,15 @@
1
- import { Observable } from 'rxjs';
2
1
  import { Breadcrumb } from '../models/breadcrumb';
3
2
  import * as i0 from "@angular/core";
4
3
  export declare class BreadcrumbsService {
5
4
  private breadcrumbs;
6
5
  private defaultResolver;
7
- private route;
8
6
  private router;
9
7
  private config;
10
8
  private injector;
9
+ private destroyRef;
11
10
  constructor();
12
11
  private initialize;
13
- get crumbs$(): Observable<Breadcrumb[]>;
14
- getCrumbs(): Observable<Breadcrumb[]>;
12
+ readonly crumbs: import("@angular/core").Signal<Breadcrumb[]>;
15
13
  private resolveCrumbs;
16
14
  static ɵfac: i0.ɵɵFactoryDeclaration<BreadcrumbsService, never>;
17
15
  static ɵprov: i0.ɵɵInjectableDeclaration<BreadcrumbsService>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@outerlimitstech/ngx-breadcrumbs",
3
- "version": "18.0.0",
3
+ "version": "19.0.0",
4
4
  "description": "Angular breadcrumbs built on the native Angular router - Clone of @exalif/ngx-breadcrumbs",
5
5
  "bugs": "https://github.com/OuterlimitsTech/olt-ngx-breadcrumbs/issues",
6
6
  "homepage": "https://github.com/OuterlimitsTech/olt-ngx-breadcrumbs#readme",
@@ -16,9 +16,9 @@
16
16
  "ngx-breadcrumbs"
17
17
  ],
18
18
  "peerDependencies": {
19
- "@angular/common": ">=18.0.0",
20
- "@angular/core": ">=18.0.0",
21
- "@angular/router": ">= 18.0.0",
19
+ "@angular/common": ">=19.0.0",
20
+ "@angular/core": ">=19.0.0",
21
+ "@angular/router": ">= 19.0.0",
22
22
  "rxjs": ">= 7.0.0"
23
23
  },
24
24
  "dependencies": {
@@ -33,8 +33,6 @@
33
33
  },
34
34
  ".": {
35
35
  "types": "./index.d.ts",
36
- "esm2022": "./esm2022/outerlimitstech-ngx-breadcrumbs.mjs",
37
- "esm": "./esm2022/outerlimitstech-ngx-breadcrumbs.mjs",
38
36
  "default": "./fesm2022/outerlimitstech-ngx-breadcrumbs.mjs"
39
37
  }
40
38
  }
@@ -1,51 +0,0 @@
1
- import { Component, inject } from '@angular/core';
2
- import { BreadcrumbsService } from './services/breadcrumbs.service';
3
- import { BreadcrumbsConfig } from './services';
4
- import { RouterModule } from '@angular/router';
5
- import { CommonModule } from '@angular/common';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/common";
8
- import * as i2 from "@angular/router";
9
- export class BreadcrumbsComponent {
10
- breadcrumbsService = inject(BreadcrumbsService);
11
- crumbs$ = this.breadcrumbsService.getCrumbs();
12
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: BreadcrumbsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
13
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: BreadcrumbsComponent, isStandalone: true, selector: "olt-ngx-breadcrumbs", providers: [
14
- BreadcrumbsService,
15
- {
16
- provide: BreadcrumbsConfig,
17
- useFactory: () => new BreadcrumbsConfig()
18
- }
19
- ], ngImport: i0, template: `
20
- <ol *ngIf="crumbs$ | async as crumbs" class="breadcrumbs__container">
21
- <li *ngFor="let crumb of crumbs; let last = last"
22
- [ngClass]="{ 'breadcrumbs__item--active': last }"
23
- class="breadcrumbs__item"
24
- >
25
- <a *ngIf="!last" [routerLink]="crumb.path">{{ crumb.text }}</a>
26
- <span *ngIf="last">{{ crumb.text }}</span>
27
- </li>
28
- </ol>
29
- `, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] });
30
- }
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: BreadcrumbsComponent, decorators: [{
32
- type: Component,
33
- args: [{ selector: 'olt-ngx-breadcrumbs', standalone: true, imports: [CommonModule, RouterModule], providers: [
34
- BreadcrumbsService,
35
- {
36
- provide: BreadcrumbsConfig,
37
- useFactory: () => new BreadcrumbsConfig()
38
- }
39
- ], template: `
40
- <ol *ngIf="crumbs$ | async as crumbs" class="breadcrumbs__container">
41
- <li *ngFor="let crumb of crumbs; let last = last"
42
- [ngClass]="{ 'breadcrumbs__item--active': last }"
43
- class="breadcrumbs__item"
44
- >
45
- <a *ngIf="!last" [routerLink]="crumb.path">{{ crumb.text }}</a>
46
- <span *ngIf="last">{{ crumb.text }}</span>
47
- </li>
48
- </ol>
49
- ` }]
50
- }] });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJyZWFkY3J1bWJzL3NyYy9saWIvYnJlYWRjcnVtYnMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR2xELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBMEIvQyxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBRXpDLE9BQU8sR0FBNkIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxDQUFDO3VHQUhwRSxvQkFBb0I7MkZBQXBCLG9CQUFvQixrRUFwQnBCO1lBQ1Qsa0JBQWtCO1lBQ2xCO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLGlCQUFpQixFQUFFO2FBQzFDO1NBQ0YsMEJBQ1M7Ozs7Ozs7Ozs7R0FVVCx5RUFsQlMsWUFBWSxrWkFBRSxZQUFZOzsyRkFxQnpCLG9CQUFvQjtrQkF4QmhDLFNBQVM7K0JBQ0UscUJBQXFCLGNBQ25CLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsYUFDMUI7d0JBQ1Qsa0JBQWtCO3dCQUNsQjs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxpQkFBaUIsRUFBRTt5QkFDMUM7cUJBQ0YsWUFDUzs7Ozs7Ozs7OztHQVVUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQnJlYWRjcnVtYiB9IGZyb20gJy4vbW9kZWxzL2JyZWFkY3J1bWInO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEJyZWFkY3J1bWJzU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvYnJlYWRjcnVtYnMuc2VydmljZSc7XHJcbmltcG9ydCB7IEJyZWFkY3J1bWJzQ29uZmlnIH0gZnJvbSAnLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ29sdC1uZ3gtYnJlYWRjcnVtYnMnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUm91dGVyTW9kdWxlXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIEJyZWFkY3J1bWJzU2VydmljZSxcclxuICAgIHsgXHJcbiAgICAgIHByb3ZpZGU6IEJyZWFkY3J1bWJzQ29uZmlnLCBcclxuICAgICAgdXNlRmFjdG9yeTogKCkgPT4gbmV3IEJyZWFkY3J1bWJzQ29uZmlnKCkgXHJcbiAgICB9ICAgIFxyXG4gIF0sICBcclxuICB0ZW1wbGF0ZTogYFxyXG4gICA8b2wgKm5nSWY9XCJjcnVtYnMkIHwgYXN5bmMgYXMgY3J1bWJzXCIgY2xhc3M9XCJicmVhZGNydW1ic19fY29udGFpbmVyXCI+XHJcbiAgICAgIDxsaSAqbmdGb3I9XCJsZXQgY3J1bWIgb2YgY3J1bWJzOyBsZXQgbGFzdCA9IGxhc3RcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ2JyZWFkY3J1bWJzX19pdGVtLS1hY3RpdmUnOiBsYXN0IH1cIlxyXG4gICAgICAgIGNsYXNzPVwiYnJlYWRjcnVtYnNfX2l0ZW1cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGEgKm5nSWY9XCIhbGFzdFwiIFtyb3V0ZXJMaW5rXT1cImNydW1iLnBhdGhcIj57eyBjcnVtYi50ZXh0IH19PC9hPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwibGFzdFwiPnt7IGNydW1iLnRleHQgfX08L3NwYW4+XHJcbiAgICAgIDwvbGk+XHJcbiAgICA8L29sPlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBgYFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQnJlYWRjcnVtYnNDb21wb25lbnQge1xyXG4gIGJyZWFkY3J1bWJzU2VydmljZSA9IGluamVjdChCcmVhZGNydW1ic1NlcnZpY2UpO1xyXG5cclxuICBwdWJsaWMgY3J1bWJzJDogT2JzZXJ2YWJsZTxCcmVhZGNydW1iW10+ID0gdGhpcy5icmVhZGNydW1ic1NlcnZpY2UuZ2V0Q3J1bWJzKCk7XHJcblxyXG4gIFxyXG59XHJcbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1icmVhZGNydW1icy9zcmMvbGliL21vZGVscy9icmVhZGNydW1iLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEJyZWFkY3J1bWIge1xyXG4gIHRleHQ6IHN0cmluZztcclxuICBwYXRoOiBzdHJpbmc7XHJcbn1cclxuIl19
@@ -1,16 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class BreadcrumbsConfig {
4
- postProcess = null;
5
- applyDistinctOn = 'text';
6
- constructor(options) {
7
- this.postProcess = options?.postProcess ?? null;
8
- this.applyDistinctOn = options?.applyDistinctOn ?? 'text';
9
- }
10
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: BreadcrumbsConfig, deps: [{ token: BreadcrumbsConfig }], target: i0.ɵɵFactoryTarget.Injectable });
11
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: BreadcrumbsConfig });
12
- }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: BreadcrumbsConfig, decorators: [{
14
- type: Injectable
15
- }], ctorParameters: () => [{ type: BreadcrumbsConfig }] });
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYnMuY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJyZWFkY3J1bWJzL3NyYy9saWIvc2VydmljZXMvYnJlYWRjcnVtYnMuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBUzNDLE1BQU0sT0FBTyxpQkFBaUI7SUFDckIsV0FBVyxHQUErQixJQUFJLENBQUM7SUFDL0MsZUFBZSxHQUF1QixNQUFNLENBQUM7SUFFcEQsWUFBWSxPQUEyQjtRQUNyQyxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sRUFBRSxXQUFXLElBQUksSUFBSSxDQUFDO1FBQ2hELElBQUksQ0FBQyxlQUFlLEdBQUcsT0FBTyxFQUFFLGVBQWUsSUFBSSxNQUFNLENBQUM7SUFDNUQsQ0FBQzt1R0FQVSxpQkFBaUI7MkdBQWpCLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFEN0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBCcmVhZGNydW1iIH0gZnJvbSAnLi4vbW9kZWxzL2JyZWFkY3J1bWInO1xyXG5cclxuZXhwb3J0IHR5cGUgUG9zdFByb2Nlc3NGdW5jdGlvbiA9IChjcnVtYnM6IEJyZWFkY3J1bWJbXSkgPT4gUHJvbWlzZTxCcmVhZGNydW1iW10+IHwgT2JzZXJ2YWJsZTxCcmVhZGNydW1iW10+IHwgQnJlYWRjcnVtYltdO1xyXG5cclxuZXhwb3J0IHR5cGUgRGlzdGluY3RLZXkgPSBrZXlvZiBCcmVhZGNydW1iO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQnJlYWRjcnVtYnNDb25maWcge1xyXG4gIHB1YmxpYyBwb3N0UHJvY2VzczogUG9zdFByb2Nlc3NGdW5jdGlvbiB8IG51bGwgPSBudWxsO1xyXG4gIHB1YmxpYyBhcHBseURpc3RpbmN0T246IERpc3RpbmN0S2V5IHwgbnVsbCA9ICd0ZXh0JztcclxuXHJcbiAgY29uc3RydWN0b3Iob3B0aW9ucz86IEJyZWFkY3J1bWJzQ29uZmlnKSB7XHJcbiAgICB0aGlzLnBvc3RQcm9jZXNzID0gb3B0aW9ucz8ucG9zdFByb2Nlc3MgPz8gbnVsbDtcclxuICAgIHRoaXMuYXBwbHlEaXN0aW5jdE9uID0gb3B0aW9ucz8uYXBwbHlEaXN0aW5jdE9uID8/ICd0ZXh0JztcclxuICB9XHJcbn1cclxuIl19
@@ -1,29 +0,0 @@
1
- import { of } from 'rxjs';
2
- import { BreadcrumbsUtils } from '../utils/breadcrumbs.utils';
3
- // export const breadcrumbsResolver: ResolveFn<Breadcrumb[]> = (route, state) => {
4
- // return new Array<Breadcrumb>();
5
- // };
6
- export class BreadcrumbsResolver {
7
- resolve(route, state) {
8
- const textData = route.routeConfig?.data != null ? route.routeConfig?.data['text'] : null;
9
- const breadcrumbData = route.routeConfig?.data != null ? route.routeConfig?.data['breadcrumbs'] : null;
10
- const path = this.getFullPath(route);
11
- let text = breadcrumbData != null && typeof (breadcrumbData === 'string') ? breadcrumbData : breadcrumbData?.text ?? textData ?? path;
12
- text = BreadcrumbsUtils.stringFormat(text, route.data);
13
- const crumbs = [{
14
- text,
15
- path
16
- }];
17
- return of(crumbs);
18
- }
19
- getFullPath(route) {
20
- return this.fetchFullPath(route.pathFromRoot);
21
- }
22
- fetchFullPath(routes) {
23
- return routes.reduce((path, route) => path += this.fetchRelativePath(route.url), '');
24
- }
25
- fetchRelativePath(urlSegments) {
26
- return urlSegments.reduce((path, urlSegment) => path += '/' + urlSegment.path, '');
27
- }
28
- }
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYnMucmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtYnJlYWRjcnVtYnMvc3JjL2xpYi9zZXJ2aWNlcy9icmVhZGNydW1icy5yZXNvbHZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTlELGtGQUFrRjtBQUNsRixvQ0FBb0M7QUFDcEMsS0FBSztBQUdMLE1BQU0sT0FBTyxtQkFBbUI7SUFDdkIsT0FBTyxDQUFDLEtBQTZCLEVBQUUsS0FBMEI7UUFHdEUsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFdBQVcsRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzFGLE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUV2RyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXJDLElBQUksSUFBSSxHQUFHLGNBQWMsSUFBSSxJQUFJLElBQUksT0FBTSxDQUFDLGNBQWMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUUsSUFBSSxJQUFJLFFBQVEsSUFBSSxJQUFJLENBQUM7UUFDckksSUFBSSxHQUFHLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXZELE1BQU0sTUFBTSxHQUFpQixDQUFDO2dCQUM1QixJQUFJO2dCQUNKLElBQUk7YUFDTCxDQUFDLENBQUM7UUFFSCxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRU0sV0FBVyxDQUFDLEtBQTZCO1FBQzlDLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVPLGFBQWEsQ0FBQyxNQUFnQztRQUNwRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRU8saUJBQWlCLENBQUMsV0FBeUI7UUFDakQsT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxFQUFFLENBQUMsSUFBSSxJQUFJLEdBQUcsR0FBRyxVQUFVLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgUmVzb2x2ZUZuLCBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBVcmxTZWdtZW50IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEJyZWFkY3J1bWIgfSBmcm9tICcuLi9tb2RlbHMvYnJlYWRjcnVtYic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQnJlYWRjcnVtYnNVdGlscyB9IGZyb20gJy4uL3V0aWxzL2JyZWFkY3J1bWJzLnV0aWxzJztcblxuLy8gZXhwb3J0IGNvbnN0IGJyZWFkY3J1bWJzUmVzb2x2ZXI6IFJlc29sdmVGbjxCcmVhZGNydW1iW10+ID0gKHJvdXRlLCBzdGF0ZSkgPT4ge1xuLy8gICByZXR1cm4gbmV3IEFycmF5PEJyZWFkY3J1bWI+KCk7XG4vLyB9O1xuXG5cbmV4cG9ydCBjbGFzcyBCcmVhZGNydW1ic1Jlc29sdmVyICB7XG4gIHB1YmxpYyByZXNvbHZlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IE9ic2VydmFibGU8QnJlYWRjcnVtYltdPiB8IFByb21pc2U8QnJlYWRjcnVtYltdPiB8IEJyZWFkY3J1bWJbXSB7XG5cbiAgICBcbiAgICBjb25zdCB0ZXh0RGF0YSA9IHJvdXRlLnJvdXRlQ29uZmlnPy5kYXRhICE9IG51bGwgPyByb3V0ZS5yb3V0ZUNvbmZpZz8uZGF0YVsndGV4dCddIDogbnVsbDtcbiAgICBjb25zdCBicmVhZGNydW1iRGF0YSA9IHJvdXRlLnJvdXRlQ29uZmlnPy5kYXRhICE9IG51bGwgPyByb3V0ZS5yb3V0ZUNvbmZpZz8uZGF0YVsnYnJlYWRjcnVtYnMnXSA6IG51bGw7XG5cbiAgICBjb25zdCBwYXRoID0gdGhpcy5nZXRGdWxsUGF0aChyb3V0ZSk7XG5cbiAgICBsZXQgdGV4dCA9IGJyZWFkY3J1bWJEYXRhICE9IG51bGwgJiYgdHlwZW9mKGJyZWFkY3J1bWJEYXRhID09PSAnc3RyaW5nJykgPyBicmVhZGNydW1iRGF0YSA6IGJyZWFkY3J1bWJEYXRhPy50ZXh0ID8/IHRleHREYXRhID8/IHBhdGg7XG4gICAgdGV4dCA9IEJyZWFkY3J1bWJzVXRpbHMuc3RyaW5nRm9ybWF0KHRleHQsIHJvdXRlLmRhdGEpO1xuXG4gICAgY29uc3QgY3J1bWJzOiBCcmVhZGNydW1iW10gPSBbe1xuICAgICAgdGV4dCxcbiAgICAgIHBhdGhcbiAgICB9XTtcblxuICAgIHJldHVybiBvZihjcnVtYnMpO1xuICB9XG5cbiAgcHVibGljIGdldEZ1bGxQYXRoKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5mZXRjaEZ1bGxQYXRoKHJvdXRlLnBhdGhGcm9tUm9vdCk7XG4gIH1cblxuICBwcml2YXRlIGZldGNoRnVsbFBhdGgocm91dGVzOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90W10pOiBzdHJpbmcge1xuICAgIHJldHVybiByb3V0ZXMucmVkdWNlKChwYXRoLCByb3V0ZSkgPT4gcGF0aCArPSB0aGlzLmZldGNoUmVsYXRpdmVQYXRoKHJvdXRlLnVybCksICcnKTtcbiAgfVxuXG4gIHByaXZhdGUgZmV0Y2hSZWxhdGl2ZVBhdGgodXJsU2VnbWVudHM6IFVybFNlZ21lbnRbXSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHVybFNlZ21lbnRzLnJlZHVjZSgocGF0aCwgdXJsU2VnbWVudCkgPT4gcGF0aCArPSAnLycgKyB1cmxTZWdtZW50LnBhdGgsICcnKTtcbiAgfVxufVxuXG4iXX0=
@@ -1,72 +0,0 @@
1
- import { inject, Injectable, Injector } from '@angular/core';
2
- import { ActivatedRoute, NavigationEnd, Router } from '@angular/router';
3
- import { BreadcrumbsConfig } from './breadcrumbs.config';
4
- import { BehaviorSubject, concat, distinct, filter, first, mergeMap, of, tap, toArray } from 'rxjs';
5
- import { BreadcrumbsUtils } from '../utils/breadcrumbs.utils';
6
- import { BreadcrumbsResolver } from './breadcrumbs.resolver';
7
- import * as i0 from "@angular/core";
8
- export class BreadcrumbsService {
9
- breadcrumbs = new BehaviorSubject([]);
10
- defaultResolver = new BreadcrumbsResolver();
11
- route = inject(ActivatedRoute);
12
- router = inject(Router);
13
- config = inject(BreadcrumbsConfig);
14
- injector = inject(Injector);
15
- constructor() {
16
- this.initialize();
17
- }
18
- initialize() {
19
- this.router.events.pipe(filter((x) => x instanceof NavigationEnd)).subscribe(() => {
20
- const routeRoot = this.router.routerState.snapshot.root;
21
- this.resolveCrumbs(routeRoot).pipe(mergeMap((crumbs) => crumbs), this.config.applyDistinctOn != null ? distinct((crumb) => crumb[this.config.applyDistinctOn]) : tap(), toArray(), mergeMap((crumbs) => {
22
- if (this.config.postProcess) {
23
- const postProcessedCrumb = this.config.postProcess(crumbs);
24
- return BreadcrumbsUtils.wrapIntoObservable(postProcessedCrumb).pipe(first());
25
- }
26
- else {
27
- return of(crumbs);
28
- }
29
- })).subscribe((crumbs) => {
30
- this.breadcrumbs.next(crumbs);
31
- });
32
- });
33
- }
34
- get crumbs$() {
35
- return this.breadcrumbs;
36
- }
37
- getCrumbs() {
38
- return this.crumbs$;
39
- }
40
- resolveCrumbs(route) {
41
- let crumbs$;
42
- const data = route.routeConfig && route.routeConfig.data;
43
- const breadcrumbData = data != null ? data['breadcrumbs'] : null;
44
- if (breadcrumbData != null) {
45
- let resolver;
46
- if (breadcrumbData.prototype instanceof BreadcrumbsResolver) {
47
- resolver = this.injector.get(breadcrumbData);
48
- }
49
- else {
50
- resolver = this.defaultResolver;
51
- }
52
- const result = resolver.resolve(route, this.router.routerState.snapshot);
53
- crumbs$ = BreadcrumbsUtils.wrapIntoObservable(result).pipe(first());
54
- }
55
- else {
56
- crumbs$ = of([]);
57
- }
58
- if (route.firstChild) {
59
- crumbs$ = concat(crumbs$, this.resolveCrumbs(route.firstChild));
60
- }
61
- return crumbs$;
62
- }
63
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: BreadcrumbsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
64
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: BreadcrumbsService, providedIn: 'root' });
65
- }
66
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: BreadcrumbsService, decorators: [{
67
- type: Injectable,
68
- args: [{
69
- providedIn: 'root'
70
- }]
71
- }], ctorParameters: () => [] });
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1icmVhZGNydW1icy9zcmMvbGliL3NlcnZpY2VzL2JyZWFkY3J1bWJzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQTBCLGFBQWEsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFaEgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBSzdELE1BQU0sT0FBTyxrQkFBa0I7SUFDckIsV0FBVyxHQUFHLElBQUksZUFBZSxDQUFlLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELGVBQWUsR0FBRyxJQUFJLG1CQUFtQixFQUFFLENBQUM7SUFFN0MsS0FBSyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMvQixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hCLE1BQU0sR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNuQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXBDO1FBQ0UsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFTyxVQUFVO1FBQ2hCLElBQUks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T0FBTyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7dUdBckVVLGtCQUFrQjsyR0FBbEIsa0JBQWtCLGNBRmpCLE1BQU07OzJGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBCcmVhZGNydW1ic0NvbmZpZyB9IGZyb20gJy4vYnJlYWRjcnVtYnMuY29uZmlnJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb25jYXQsIGRpc3RpbmN0LCBmaWx0ZXIsIGZpcnN0LCBtZXJnZU1hcCwgT2JzZXJ2YWJsZSwgb2YsIHRhcCwgdG9BcnJheSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBCcmVhZGNydW1iIH0gZnJvbSAnLi4vbW9kZWxzL2JyZWFkY3J1bWInO1xyXG5pbXBvcnQgeyBCcmVhZGNydW1ic1V0aWxzIH0gZnJvbSAnLi4vdXRpbHMvYnJlYWRjcnVtYnMudXRpbHMnO1xyXG5pbXBvcnQgeyBCcmVhZGNydW1ic1Jlc29sdmVyIH0gZnJvbSAnLi9icmVhZGNydW1icy5yZXNvbHZlcic7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCcmVhZGNydW1ic1NlcnZpY2Uge1xyXG4gIHByaXZhdGUgYnJlYWRjcnVtYnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEJyZWFkY3J1bWJbXT4oW10pO1xyXG4gICBwcml2YXRlIGRlZmF1bHRSZXNvbHZlciA9IG5ldyBCcmVhZGNydW1ic1Jlc29sdmVyKCk7XHJcbiAgIFxyXG4gIHByaXZhdGUgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xyXG4gIHByaXZhdGUgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcbiAgcHJpdmF0ZSBjb25maWcgPSBpbmplY3QoQnJlYWRjcnVtYnNDb25maWcpO1xyXG4gIHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xyXG4gIFxyXG4gIGNvbnN0cnVjdG9yKCkgeyBcclxuICAgIHRoaXMuaW5pdGlhbGl6ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0aWFsaXplKCkge1xyXG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoXHJcbiAgICAgIGZpbHRlcigoeCkgPT4geCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpLCAvLyB8fCB4Wydyb3V0ZXJFdmVudCddIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZFxyXG4gICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBjb25zdCByb3V0ZVJvb3QgPSB0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdC5yb290O1xyXG5cclxuICAgICAgdGhpcy5yZXNvbHZlQ3J1bWJzKHJvdXRlUm9vdCkucGlwZShcclxuICAgICAgICBtZXJnZU1hcCgoY3J1bWJzOiBCcmVhZGNydW1iW10pID0+IGNydW1icyksIHRoaXMuY29uZmlnLmFwcGx5RGlzdGluY3RPbiAhPSBudWxsID8gZGlzdGluY3QoKGNydW1iOiBCcmVhZGNydW1iKSA9PiBjcnVtYlt0aGlzLmNvbmZpZy5hcHBseURpc3RpbmN0T24hXSkgOiB0YXAoKSxcclxuICAgICAgICB0b0FycmF5KCksXHJcbiAgICAgICAgbWVyZ2VNYXAoKGNydW1iczogQnJlYWRjcnVtYltdKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5jb25maWcucG9zdFByb2Nlc3MpIHtcclxuICAgICAgICAgICAgY29uc3QgcG9zdFByb2Nlc3NlZENydW1iID0gdGhpcy5jb25maWcucG9zdFByb2Nlc3MoY3J1bWJzKTtcclxuICAgICAgICAgICAgcmV0dXJuIEJyZWFkY3J1bWJzVXRpbHMud3JhcEludG9PYnNlcnZhYmxlPEJyZWFkY3J1bWJbXT4ocG9zdFByb2Nlc3NlZENydW1iKS5waXBlKGZpcnN0KCkpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIG9mKGNydW1icyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgKS5zdWJzY3JpYmUoKGNydW1iczogQnJlYWRjcnVtYltdKSA9PiB7XHJcbiAgICAgICAgdGhpcy5icmVhZGNydW1icy5uZXh0KGNydW1icyk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXQgY3J1bWJzJCgpOiBPYnNlcnZhYmxlPEJyZWFkY3J1bWJbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYnJlYWRjcnVtYnM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0Q3J1bWJzKCk6IE9ic2VydmFibGU8QnJlYWRjcnVtYltdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5jcnVtYnMkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXNvbHZlQ3J1bWJzKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogT2JzZXJ2YWJsZTxCcmVhZGNydW1iW10+IHtcclxuICAgIGxldCBjcnVtYnMkOiBPYnNlcnZhYmxlPEJyZWFkY3J1bWJbXT47XHJcbiAgICBjb25zdCBkYXRhID0gcm91dGUucm91dGVDb25maWcgJiYgcm91dGUucm91dGVDb25maWcuZGF0YTtcclxuICAgIGNvbnN0IGJyZWFkY3J1bWJEYXRhID0gZGF0YSAhPSBudWxsID8gZGF0YVsnYnJlYWRjcnVtYnMnXSA6IG51bGw7XHJcbiAgICBcclxuICAgIGlmIChicmVhZGNydW1iRGF0YSAhPSBudWxsKSB7XHJcbiAgICAgIGxldCByZXNvbHZlcjogQnJlYWRjcnVtYnNSZXNvbHZlcjtcclxuXHJcbiAgICAgIGlmIChicmVhZGNydW1iRGF0YS5wcm90b3R5cGUgaW5zdGFuY2VvZiBCcmVhZGNydW1ic1Jlc29sdmVyKSB7XHJcbiAgICAgICAgcmVzb2x2ZXIgPSB0aGlzLmluamVjdG9yLmdldChicmVhZGNydW1iRGF0YSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmVzb2x2ZXIgPSB0aGlzLmRlZmF1bHRSZXNvbHZlcjtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgcmVzdWx0ID0gcmVzb2x2ZXIucmVzb2x2ZShyb3V0ZSwgdGhpcy5yb3V0ZXIucm91dGVyU3RhdGUuc25hcHNob3QpO1xyXG4gICAgICBjcnVtYnMkID0gQnJlYWRjcnVtYnNVdGlscy53cmFwSW50b09ic2VydmFibGU8QnJlYWRjcnVtYltdPihyZXN1bHQpLnBpcGUoZmlyc3QoKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjcnVtYnMkID0gb2YoW10pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChyb3V0ZS5maXJzdENoaWxkKSB7XHJcbiAgICAgIGNydW1icyQgPSBjb25jYXQoY3J1bWJzJCwgdGhpcy5yZXNvbHZlQ3J1bWJzKHJvdXRlLmZpcnN0Q2hpbGQpKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY3J1bWJzJDtcclxuICB9XHJcbiAgXHJcbn1cclxuIl19
@@ -1,4 +0,0 @@
1
- export * from './breadcrumbs.config';
2
- export * from './breadcrumbs.resolver';
3
- export * from './breadcrumbs.service';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtYnJlYWRjcnVtYnMvc3JjL2xpYi9zZXJ2aWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYnJlYWRjcnVtYnMuY29uZmlnJztcclxuZXhwb3J0ICogZnJvbSAnLi9icmVhZGNydW1icy5yZXNvbHZlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vYnJlYWRjcnVtYnMuc2VydmljZSc7XHJcbiJdfQ==
@@ -1,62 +0,0 @@
1
- import { Observable, of, from } from 'rxjs';
2
- export class BreadcrumbsUtils {
3
- static stringFormat(rawTemplate, data) {
4
- const templateRegex = new RegExp('{{[\\s]*[a-zA-Z._]+?[\\s]*}}', 'g');
5
- return rawTemplate.replace(templateRegex, (match) => {
6
- const keyRegex = new RegExp('([a-zA-Z._]+)', 'g');
7
- const key = match.match(keyRegex);
8
- if (!key || !key.length) {
9
- return match;
10
- }
11
- const value = BreadcrumbsUtils.leaf(data, key[0]);
12
- if (!value) {
13
- return key[0];
14
- }
15
- return value;
16
- });
17
- }
18
- static wrapIntoObservable(value) {
19
- if (value instanceof Observable) {
20
- return value;
21
- }
22
- if (this.isPromise(value)) {
23
- return from(Promise.resolve(value));
24
- }
25
- return of(value);
26
- }
27
- static isPromise(value) {
28
- return value && (typeof value.then === 'function');
29
- }
30
- /**
31
- * Access object nested value by giving a path
32
- *
33
- * @param obj The object you want to access value from
34
- * @param path The value path. e.g: `bar.baz`
35
- * @example
36
- * const obj = { foo: { bar: 'Baz' } };
37
- * const path = 'foo.bar';
38
- * leaf(obj, path) // 'Baz'
39
- */
40
- static leaf(obj, path) {
41
- const result = path.split('.').reduce((value, el) => value[el] || {}, obj);
42
- return BreadcrumbsUtils.isEmptyObject(result) ? null : result;
43
- }
44
- /**
45
- * checks whether an object is empty or not
46
- *
47
- * @param obj object to extract values from
48
- * @returns boolean
49
- */
50
- static isEmptyObject(obj) {
51
- if (typeof obj === 'object' && Object.prototype.toString.call(obj) === '[object Object]') {
52
- for (const key in obj) {
53
- if (Object.prototype.hasOwnProperty.call(obj, key)) {
54
- return false;
55
- }
56
- }
57
- return true;
58
- }
59
- return false;
60
- }
61
- }
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYnMudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtYnJlYWRjcnVtYnMvc3JjL2xpYi91dGlscy9icmVhZGNydW1icy51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFNUMsTUFBTSxPQUFnQixnQkFBZ0I7SUFDN0IsTUFBTSxDQUFDLFlBQVksQ0FBQyxXQUFtQixFQUFFLElBQVM7UUFDdkQsTUFBTSxhQUFhLEdBQUcsSUFBSSxNQUFNLENBQUMsOEJBQThCLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFdEUsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2xELE1BQU0sUUFBUSxHQUFHLElBQUksTUFBTSxDQUFDLGVBQWUsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNsRCxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRWxDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3hCLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztZQUVELE1BQU0sS0FBSyxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFbEQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNYLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hCLENBQUM7WUFFRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBSSxLQUFxQztRQUN2RSxJQUFJLEtBQUssWUFBWSxVQUFVLEVBQUUsQ0FBQztZQUNoQyxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMxQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUVELE9BQU8sRUFBRSxDQUFDLEtBQVUsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFTyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQVU7UUFDakMsT0FBTyxLQUFLLElBQUksQ0FBQyxPQUFPLEtBQUssQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNJLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBUSxFQUFFLElBQVk7UUFDdkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRTNFLE9BQU8sZ0JBQWdCLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNoRSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQVE7UUFDbEMsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLGlCQUFpQixFQUFFLENBQUM7WUFDekYsS0FBSyxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDdEIsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ25ELE9BQU8sS0FBSyxDQUFDO2dCQUNmLENBQUM7WUFDSCxDQUFDO1lBRUQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgZnJvbSB9IGZyb20gJ3J4anMnO1xyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJyZWFkY3J1bWJzVXRpbHMge1xyXG4gIHB1YmxpYyBzdGF0aWMgc3RyaW5nRm9ybWF0KHJhd1RlbXBsYXRlOiBzdHJpbmcsIGRhdGE6IGFueSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB0ZW1wbGF0ZVJlZ2V4ID0gbmV3IFJlZ0V4cCgne3tbXFxcXHNdKlthLXpBLVouX10rP1tcXFxcc10qfX0nLCAnZycpO1xyXG5cclxuICAgIHJldHVybiByYXdUZW1wbGF0ZS5yZXBsYWNlKHRlbXBsYXRlUmVnZXgsIChtYXRjaCkgPT4ge1xyXG4gICAgICBjb25zdCBrZXlSZWdleCA9IG5ldyBSZWdFeHAoJyhbYS16QS1aLl9dKyknLCAnZycpO1xyXG4gICAgICBjb25zdCBrZXkgPSBtYXRjaC5tYXRjaChrZXlSZWdleCk7XHJcblxyXG4gICAgICBpZiAoIWtleSB8fCAha2V5Lmxlbmd0aCkge1xyXG4gICAgICAgIHJldHVybiBtYXRjaDtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgdmFsdWUgPSBCcmVhZGNydW1ic1V0aWxzLmxlYWYoZGF0YSwga2V5WzBdKTtcclxuXHJcbiAgICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgICByZXR1cm4ga2V5WzBdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgd3JhcEludG9PYnNlcnZhYmxlPFQ+KHZhbHVlOiBUIHwgUHJvbWlzZTxUPiB8IE9ic2VydmFibGU8VD4pOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE9ic2VydmFibGUpIHtcclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmlzUHJvbWlzZSh2YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIGZyb20oUHJvbWlzZS5yZXNvbHZlKHZhbHVlKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG9mKHZhbHVlIGFzIFQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgaXNQcm9taXNlKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB2YWx1ZSAmJiAodHlwZW9mIHZhbHVlLnRoZW4gPT09ICdmdW5jdGlvbicpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWNjZXNzIG9iamVjdCBuZXN0ZWQgdmFsdWUgYnkgZ2l2aW5nIGEgcGF0aFxyXG4gICAqXHJcbiAgICogQHBhcmFtIG9iaiBUaGUgb2JqZWN0IHlvdSB3YW50IHRvIGFjY2VzcyB2YWx1ZSBmcm9tXHJcbiAgICogQHBhcmFtIHBhdGggVGhlIHZhbHVlIHBhdGguIGUuZzogYGJhci5iYXpgXHJcbiAgICogQGV4YW1wbGVcclxuICAgKiAgIGNvbnN0IG9iaiA9IHsgZm9vOiB7IGJhcjogJ0JheicgfSB9O1xyXG4gICAqICAgY29uc3QgcGF0aCA9ICdmb28uYmFyJztcclxuICAgKiAgIGxlYWYob2JqLCBwYXRoKSAvLyAnQmF6J1xyXG4gICAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgbGVhZihvYmo6IGFueSwgcGF0aDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCByZXN1bHQgPSBwYXRoLnNwbGl0KCcuJykucmVkdWNlKCh2YWx1ZSwgZWwpID0+IHZhbHVlW2VsXSB8fCB7fSwgb2JqKTtcclxuXHJcbiAgICByZXR1cm4gQnJlYWRjcnVtYnNVdGlscy5pc0VtcHR5T2JqZWN0KHJlc3VsdCkgPyBudWxsIDogcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogY2hlY2tzIHdoZXRoZXIgYW4gb2JqZWN0IGlzIGVtcHR5IG9yIG5vdFxyXG4gICAqXHJcbiAgICogQHBhcmFtIG9iaiBvYmplY3QgdG8gZXh0cmFjdCB2YWx1ZXMgZnJvbVxyXG4gICAqIEByZXR1cm5zIGJvb2xlYW5cclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIGlzRW1wdHlPYmplY3Qob2JqOiBhbnkpOiBib29sZWFuIHtcclxuICAgIGlmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKSA9PT0gJ1tvYmplY3QgT2JqZWN0XScpIHtcclxuICAgICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XHJcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0ZXJsaW1pdHN0ZWNoLW5neC1icmVhZGNydW1icy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC1icmVhZGNydW1icy9zcmMvb3V0ZXJsaW1pdHN0ZWNoLW5neC1icmVhZGNydW1icy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -1,6 +0,0 @@
1
- /*
2
- * Public API Surface of ngx-breadcrumbs
3
- */
4
- export * from './lib/services/index';
5
- export * from './lib/breadcrumbs.component';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC1icmVhZGNydW1icy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyw2QkFBNkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBuZ3gtYnJlYWRjcnVtYnNcclxuICovXHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9pbmRleCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JyZWFkY3J1bWJzLmNvbXBvbmVudCc7XHJcbiJdfQ==