{"version":3,"file":"tapsellorg-angular-material-library-breadcrumbs.mjs","sources":["../../projects/pegah-library/breadcrumbs/breadcrumbs.service.ts","../../projects/pegah-library/breadcrumbs/breadcrumbs.component.ts","../../projects/pegah-library/breadcrumbs/breadcrumbs.component.html","../../projects/pegah-library/breadcrumbs/breadcrumbs.module.ts","../../projects/pegah-library/breadcrumbs/tapsellorg-angular-material-library-breadcrumbs.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, Data, NavigationEnd, Router } from '@angular/router';\nimport { BehaviorSubject } from 'rxjs';\nimport { filter, startWith, takeUntil } from 'rxjs/operators';\nimport { withDestroy } from '@tapsellorg/angular-material-library/src/lib/common';\nimport { PghBreadcrumb } from './models';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class PghBreadcrumbsService extends withDestroy() {\n  private readonly _breadcrumbs$ = new BehaviorSubject<PghBreadcrumb[]>([]);\n  readonly breadcrumbs$ = this._breadcrumbs$.asObservable();\n\n  constructor(private router: Router) {\n    super();\n    this.handleRouterEvents();\n  }\n\n  private handleRouterEvents() {\n    this.router.events\n      .pipe(\n        takeUntil(this._destroyed$),\n        filter(event => event instanceof NavigationEnd),\n        startWith(this.router),\n      )\n      .subscribe(() => {\n        const { root } = this.router.routerState.snapshot;\n        const breadcrumbs: PghBreadcrumb[] = [];\n        this.addBreadcrumb(root, [], breadcrumbs);\n        this._breadcrumbs$.next(breadcrumbs);\n      });\n  }\n\n  private addBreadcrumb(\n    route: ActivatedRouteSnapshot,\n    parentUrl: string[],\n    breadcrumbs: PghBreadcrumb[],\n  ) {\n    if (!route) return;\n    const routeUrl = parentUrl.concat(route.url.map(url => url.path));\n\n    if (route.data?.breadcrumb?.label) {\n      const breadcrumb = {\n        label: this.getLabel(route.data),\n        url: route.data.breadcrumb.dontLink ? undefined : `/${routeUrl.join('/')}`,\n      };\n      breadcrumbs.push(breadcrumb);\n    }\n\n    if (route.firstChild) {\n      this.addBreadcrumb(route.firstChild, routeUrl, breadcrumbs);\n    }\n  }\n\n  private getLabel(data: Data) {\n    return typeof data.breadcrumb.label === 'function'\n      ? data.breadcrumb.label(data)\n      : data.breadcrumb.label;\n  }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { PghBreadcrumbsService } from './breadcrumbs.service';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\n@Component({\n  selector: 'pgh-breadcrumbs',\n  templateUrl: './breadcrumbs.component.html',\n  styleUrls: ['./breadcrumbs.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class PghBreadcrumbsComponent {\n  breadcrumbs = toSignal(this.breadcrumbsService.breadcrumbs$);\n\n  constructor(private readonly breadcrumbsService: PghBreadcrumbsService) {}\n}\n","@if (breadcrumbs() && breadcrumbs()!.length) {\n<nav class=\"pgh-breadcrumbs\" role=\"navigation\">\n  @for (breadcrumb of breadcrumbs(); track breadcrumb; let last = $last) {\n  <span\n    class=\"pgh-crumb\"\n    [attr.aria-current]=\"last ? 'page' : null\"\n    [class.font-weight-bold]=\"last\"\n  >\n    @if (!last && breadcrumb.url) {\n    <a [routerLink]=\"[breadcrumb.url]\">\n      {{ breadcrumb.label }}\n    </a>\n    } @if (last || (!last && !breadcrumb.url)) {\n    {{ breadcrumb.label }}\n    }\n  </span>\n  @if (!last) {\n  <mat-icon class=\"pgh-crumb-divider\" svgIcon=\"chevron_left\" aria-hidden=\"true\"></mat-icon>\n  } }\n</nav>\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PghBreadcrumbsComponent } from './breadcrumbs.component';\nimport { RouterModule } from '@angular/router';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\n@NgModule({\n  declarations: [PghBreadcrumbsComponent],\n  imports: [CommonModule, RouterModule, MatIconModule, MatButtonModule],\n  exports: [PghBreadcrumbsComponent],\n})\nexport class PghBreadcrumbsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.PghBreadcrumbsService","i2"],"mappings":"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"}