{"version":3,"file":"ngx-signal-breadcrumb.mjs","sources":["../../../projects/ngx-signal-breadcrumb/src/lib/ngx-signal-breadcrumb.service.ts","../../../projects/ngx-signal-breadcrumb/src/public-api.ts","../../../projects/ngx-signal-breadcrumb/src/ngx-signal-breadcrumb.ts"],"sourcesContent":["import { Injectable, signal } from '@angular/core';\nimport { Router, ActivatedRoute, NavigationEnd } from '@angular/router';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { filter } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class NgxSignalBreadcrumbService<T> {\n  breadcrumbs = signal<T[]>([]);\n  constructor(private router: Router, private activatedRoute: ActivatedRoute) {\n    this.initBreadcrumbs();\n  }\n\n  private initBreadcrumbs() {\n    this.getBreadcrumbs(this.activatedRoute.root);\n    this.router.events\n      .pipe(\n        takeUntilDestroyed(),\n        filter((event) => event instanceof NavigationEnd)\n      )\n      .subscribe(() => {\n        this.getBreadcrumbs(this.activatedRoute.root);\n      });\n  }\n\n  private getBreadcrumbs(route: ActivatedRoute) {\n    const children: ActivatedRoute[] = route.children;\n\n    if (children.length === 0) {\n      return;\n    }\n\n    for (const child of children) {\n      child.data.subscribe((data) => {\n        const breadcrumbs = data['breadcrumbs'];\n        if (breadcrumbs && breadcrumbs.length) {\n          this.breadcrumbs.set(breadcrumbs);\n        }\n      });\n\n      this.getBreadcrumbs(child);\n    }\n  }\n\n  updateAllBreadcrumbs(breadcrumbs: T[]) {\n    this.breadcrumbs.set(breadcrumbs);\n  }\n\n  updateBreadcrumbAtIndex(index: number, breadcrumb: T) {\n    this.breadcrumbs.update((breadcrumbs) => {\n      const updatedBreadcrumbs = [...breadcrumbs];\n      updatedBreadcrumbs[index] = breadcrumb;\n      return updatedBreadcrumbs;\n    });\n  }\n\n  pushBreadcrumb(breadcrumb: T) {\n    this.breadcrumbs.update((breadcrumbs) => [...breadcrumbs, breadcrumb]);\n  }\n}\n","/*\n * Public API Surface of ngx-signal-breadcrumb\n */\n\nexport * from './lib/ngx-signal-breadcrumb.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;MAQa,0BAA0B,CAAA;IAErC,WAAoB,CAAA,MAAc,EAAU,cAA8B,EAAA;QAAtD,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QAAU,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;AAD1E,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAM,EAAE,CAAC,CAAC;QAE5B,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;IAEO,eAAe,GAAA;QACrB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,CAAC,MAAM;AACf,aAAA,IAAI,CACH,kBAAkB,EAAE,EACpB,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,YAAY,aAAa,CAAC,CAClD;aACA,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAChD,SAAC,CAAC,CAAC;KACN;AAEO,IAAA,cAAc,CAAC,KAAqB,EAAA;AAC1C,QAAA,MAAM,QAAQ,GAAqB,KAAK,CAAC,QAAQ,CAAC;AAElD,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YACzB,OAAO;AACR,SAAA;AAED,QAAA,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;YAC5B,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AAC5B,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;AACxC,gBAAA,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,EAAE;AACrC,oBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACnC,iBAAA;AACH,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC5B,SAAA;KACF;AAED,IAAA,oBAAoB,CAAC,WAAgB,EAAA;AACnC,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;KACnC;IAED,uBAAuB,CAAC,KAAa,EAAE,UAAa,EAAA;QAClD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,WAAW,KAAI;AACtC,YAAA,MAAM,kBAAkB,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC;AAC5C,YAAA,kBAAkB,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC;AACvC,YAAA,OAAO,kBAAkB,CAAC;AAC5B,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,cAAc,CAAC,UAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,WAAW,KAAK,CAAC,GAAG,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;KACxE;+GAnDU,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,cAFzB,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAEP,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAHtC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACPD;;AAEG;;ACFH;;AAEG;;;;"}