{"version":3,"file":"covalent-core-breadcrumbs.mjs","sources":["../../../../libs/angular/breadcrumbs/src/breadcrumb/breadcrumb.component.html","../../../../libs/angular/breadcrumbs/src/breadcrumb/breadcrumb.component.ts","../../../../libs/angular/breadcrumbs/src/breadcrumbs.component.html","../../../../libs/angular/breadcrumbs/src/breadcrumbs.component.ts","../../../../libs/angular/breadcrumbs/src/breadcrumbs.module.ts","../../../../libs/angular/breadcrumbs/src/covalent-core-breadcrumbs.ts"],"sourcesContent":["<span\n  class=\"td-breadcrumb-text\"\n  [class.td-breadcrumb-truncated]=\"shouldTruncate\"\n  [matTooltip]=\"shouldTruncate ? fullText : ''\"\n  [matTooltipDisabled]=\"!shouldTruncate\"\n  [attr.aria-label]=\"shouldTruncate ? fullText : ''\"\n>\n  <ng-content></ng-content>\n</span>\n<mat-icon\n  *ngIf=\"displayIcon\"\n  class=\"td-breadcrumb-separator-icon\"\n  [style.cursor]=\"'default'\"\n  (click)=\"_handleIconClick($event)\"\n  >{{ separatorIcon }}</mat-icon\n>\n","import { CommonModule } from '@angular/common';\nimport {\n  Component,\n  ElementRef,\n  HostBinding,\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  inject,\n} from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n  selector: 'td-breadcrumb, a[td-breadcrumb]',\n  styleUrls: ['./breadcrumb.component.scss'],\n  templateUrl: './breadcrumb.component.html',\n  standalone: true,\n  imports: [CommonModule, MatIcon, MatTooltipModule],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdBreadcrumbComponent implements AfterViewInit {\n  private _changeDetectorRef = inject(ChangeDetectorRef);\n\n  private _displayCrumb = true;\n  private _width = 0;\n  private _displayIcon = true;\n  private _separatorIcon = 'chevron_right';\n  private _shouldTruncate = false;\n  private _maxWidth?: number;\n\n  public elementRef = inject(ElementRef);\n  public fullText = '';\n  public flexOrder = 0;\n  public isCurrentPage = false;\n\n  @HostBinding('attr.aria-current')\n  get ariaCurrent(): string | null {\n    return this.isCurrentPage ? 'page' : null;\n  }\n\n  @HostBinding('class.mdc-button') matButtonClass = true;\n  @HostBinding('class.td-breadcrumb') tdBreadCrumbClass = true;\n\n  // Sets the icon url shown between breadcrumbs. Defaults to 'chevron_right'\n  public get separatorIcon(): string {\n    return this._separatorIcon;\n  }\n  public set separatorIcon(separatorIcon: string) {\n    this._separatorIcon = separatorIcon;\n    setTimeout(() => {\n      this._changeDetectorRef.markForCheck();\n    });\n  }\n\n  // Should show the right chevron or not before the label\n  public get displayIcon(): boolean {\n    return this._displayIcon;\n  }\n  public set displayIcon(displayIcon: boolean) {\n    this._displayIcon = displayIcon;\n    setTimeout(() => {\n      this._changeDetectorRef.markForCheck();\n    });\n  }\n\n  get shouldTruncate(): boolean {\n    return this._shouldTruncate;\n  }\n\n  set shouldTruncate(shouldTruncate: boolean) {\n    this._shouldTruncate = shouldTruncate;\n    setTimeout(() => {\n      this._changeDetectorRef.markForCheck();\n    });\n  }\n\n  get maxWidth(): number | undefined {\n    return this._maxWidth;\n  }\n\n  set maxWidth(maxWidth: number | undefined) {\n    this._maxWidth = maxWidth;\n    setTimeout(() => {\n      this._changeDetectorRef.markForCheck();\n    });\n  }\n\n  get displayCrumb(): boolean {\n    return this._displayCrumb;\n  }\n\n  /**\n   * Whether to display the crumb or not\n   */\n  set displayCrumb(shouldDisplay: boolean) {\n    this._displayCrumb = shouldDisplay;\n    setTimeout(() => {\n      this._changeDetectorRef.markForCheck();\n    });\n  }\n\n  /**\n   * Width of the DOM element of the crumb\n   */\n  get width(): number {\n    return this._width;\n  }\n\n  /**\n   * Gets the display style of the crumb\n   */\n  @HostBinding('style.display')\n  get displayBinding(): string | undefined {\n    // Set the display to none on the component, just in case the end user is hiding\n    // and showing them instead of the component doing itself for reasons like responsive\n    return this._displayCrumb ? undefined : 'none';\n  }\n\n  @HostBinding('style.max-width.px')\n  get maxWidthBinding(): number | undefined {\n    return this._shouldTruncate ? this._maxWidth : undefined;\n  }\n\n  @HostBinding('style.order')\n  get orderBinding(): number {\n    return this.flexOrder;\n  }\n\n  ngAfterViewInit(): void {\n    // set the width from the actual rendered DOM element\n    setTimeout(() => {\n      this._width = (<HTMLElement>(\n        this.elementRef.nativeElement\n      )).getBoundingClientRect().width;\n      const textSpan = this.elementRef.nativeElement.querySelector(\n        '.td-breadcrumb-text',\n      );\n      if (textSpan) {\n        this.fullText = textSpan.textContent?.trim() || '';\n      }\n      this._changeDetectorRef.markForCheck();\n    });\n  }\n\n  /**\n   * Stop click propagation when clicking on icon\n   */\n  _handleIconClick(event: Event): void {\n    event.stopPropagation();\n    event.preventDefault();\n  }\n}\n","<ng-content></ng-content>\n\n<button\n  *ngIf=\"showOverflowButton\"\n  mat-icon-button\n  [matMenuTriggerFor]=\"overflowMenu\"\n  [attr.aria-label]=\"overflowButtonAriaLabel\"\n  [style.order]=\"overflowButtonOrder\"\n  class=\"td-breadcrumbs-overflow-button\"\n  [attr.data-test-id]=\"'breadcrumb-overflow-button'\"\n>\n  <mat-icon>more_horiz</mat-icon>\n</button>\n<mat-icon\n  *ngIf=\"showOverflowButton\"\n  class=\"td-breadcrumb-separator-icon\"\n  [style.order]=\"overflowButtonOrder\"\n  color=\"primary\"\n  aria-hidden=\"true\"\n>\n  {{ separatorIcon }}\n</mat-icon>\n\n<mat-menu #overflowMenu=\"matMenu\" class=\"td-breadcrumb-overflow-menu\">\n  <button\n    *ngFor=\"let item of overflowMenuItems\"\n    mat-menu-item\n    (click)=\"handleOverflowItemClick(item)\"\n    [attr.data-test-id]=\"'breadcrumb-overflow-menu-item-' + getItemText(item)\"\n    [attr.aria-label]=\"'Navigate to ' + getItemText(item)\"\n  >\n    {{ getItemText(item) }}\n  </button>\n</mat-menu>\n","import {\n  Component,\n  ContentChildren,\n  QueryList,\n  OnInit,\n  OnDestroy,\n  ChangeDetectionStrategy,\n  AfterContentInit,\n  ChangeDetectorRef,\n  ElementRef,\n  Input,\n  HostBinding,\n  AfterViewInit,\n  ViewChild,\n  inject,\n} from '@angular/core';\n\nimport { fromEvent, Subject } from 'rxjs';\nimport { debounceTime, startWith, takeUntil } from 'rxjs/operators';\nimport { MatMenuTrigger, MatMenuModule } from '@angular/material/menu';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CommonModule } from '@angular/common';\n\nimport { TdBreadcrumbComponent } from './breadcrumb/breadcrumb.component';\n\n@Component({\n  selector: 'td-breadcrumbs',\n  styleUrls: ['./breadcrumbs.component.scss'],\n  templateUrl: './breadcrumbs.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [CommonModule, MatMenuModule, MatButtonModule, MatIconModule],\n})\nexport class TdBreadcrumbsComponent\n  implements OnInit, AfterContentInit, AfterViewInit, OnDestroy\n{\n  private _elementRef = inject(ElementRef);\n  private _changeDetectorRef = inject(ChangeDetectorRef);\n  private _resizing = false;\n  private _separatorIcon = 'chevron_right';\n  private _destroy$ = new Subject<void>();\n\n  /**\n   * Maximum width ratio for the last breadcrumb when truncation is needed.\n   * Set to 35% of available width to ensure last breadcrumb doesn't dominate the space\n   * while still being readable.\n   */\n  private readonly LAST_BREADCRUMB_MAX_WIDTH_RATIO = 0.35;\n\n  @HostBinding('class.td-breadcrumbs') tdBreadCrumbsClass = true;\n  @HostBinding('attr.role') role = 'navigation';\n  @HostBinding('attr.aria-label') ariaLabel = 'Breadcrumb';\n\n  // all the sub components, which are the individual breadcrumbs\n  @ContentChildren(TdBreadcrumbComponent, { descendants: true })\n  _breadcrumbs!: QueryList<TdBreadcrumbComponent>;\n  // the list of hidden breadcrumbs not shown right now (responsive)\n  hiddenBreadcrumbs: TdBreadcrumbComponent[] = [];\n  overflowMenuItems: TdBreadcrumbComponent[] = [];\n  showOverflowButton = false;\n  overflowButtonOrder = 50;\n\n  @ViewChild(MatMenuTrigger) overflowMenuTrigger?: MatMenuTrigger;\n\n  /**\n   * Sets the icon url shown between breadcrumbs. Defaults to 'chevron_right'.\n   */\n  @Input() public set separatorIcon(separatorIcon: string) {\n    this._separatorIcon = separatorIcon;\n    this.setCrumbIcons();\n  }\n  public get separatorIcon(): string {\n    return this._separatorIcon;\n  }\n\n  @Input() size?:\n    | 'headline1'\n    | 'headline2'\n    | 'headline3'\n    | 'headline4'\n    | 'headline5'\n    | 'headline6'\n    | 'subtitle1'\n    | 'subtitle2'\n    | 'body1'\n    | 'body2'\n    | 'button'\n    | 'caption';\n\n  @HostBinding('style.font-family')\n  get fontFamily(): string | undefined {\n    return this.size\n      ? `var(--cv-typography-${this.size}-font-family)`\n      : undefined;\n  }\n\n  @HostBinding('style.font-size')\n  get fontSize(): string | undefined {\n    return this.size\n      ? `var(--cv-typography-${this.size}-font-size)`\n      : undefined;\n  }\n\n  @HostBinding('style.font-weight')\n  get fontWeight(): string | undefined {\n    return this.size\n      ? `var(--cv-typography-${this.size}-font-weight)`\n      : undefined;\n  }\n\n  @HostBinding('style.line-height')\n  get lineHeight(): string | undefined {\n    return this.size\n      ? `var(--cv-typography-${this.size}-line-height)`\n      : undefined;\n  }\n\n  ngOnInit(): void {\n    fromEvent(window, 'resize')\n      .pipe(debounceTime(10), takeUntil(this._destroy$))\n      .subscribe(() => {\n        if (!this._resizing) {\n          this._resizing = true;\n          setTimeout(() => {\n            this._calculateVisibility();\n            this._resizing = false;\n            this._changeDetectorRef.markForCheck();\n          }, 100);\n        }\n      });\n  }\n\n  ngAfterViewInit(): void {\n    this._waitToCalculateVisibility();\n  }\n\n  ngAfterContentInit(): void {\n    this._breadcrumbs.changes\n      .pipe(startWith(this._breadcrumbs), takeUntil(this._destroy$))\n      .subscribe(() => {\n        this._waitToCalculateVisibility();\n        setTimeout(() => {\n          this.setCrumbIcons();\n          this._changeDetectorRef.markForCheck();\n        });\n      });\n  }\n\n  ngOnDestroy(): void {\n    this._destroy$.next();\n    this._destroy$.complete();\n  }\n\n  /*\n   * Current width of the element container\n   */\n  get nativeElementWidth(): number {\n    const element: HTMLElement = <HTMLElement>this._elementRef.nativeElement;\n    // Need to take into account border, margin and padding that might be around all the crumbs\n    const style: CSSStyleDeclaration = window.getComputedStyle(element);\n    const borderLeft: number = parseInt(style.borderLeft, 10);\n    const borderRight: number = parseInt(style.borderRight, 10);\n    const marginLeft: number = parseInt(style.marginLeft, 10);\n    const marginRight: number = parseInt(style.marginRight, 10);\n    const paddingLeft: number = parseInt(style.paddingLeft, 10);\n    const paddingRight: number = parseInt(style.paddingRight, 10);\n\n    return (\n      element.getBoundingClientRect().width -\n      borderLeft -\n      borderRight -\n      marginLeft -\n      marginRight -\n      paddingLeft -\n      paddingRight\n    );\n  }\n\n  /**\n   * The total count of individual breadcrumbs\n   */\n  get count(): number {\n    return this._breadcrumbs ? this._breadcrumbs.length : 0;\n  }\n\n  get overflowButtonAriaLabel(): string {\n    const count = this.hiddenBreadcrumbs.length;\n    return `Show ${count} hidden breadcrumb${count > 1 ? 's' : ''}`;\n  }\n\n  handleOverflowItemClick(item: TdBreadcrumbComponent): void {\n    const nativeElement = item.elementRef?.nativeElement;\n    if (nativeElement) {\n      nativeElement.click();\n    }\n  }\n\n  getItemText(item: TdBreadcrumbComponent): string {\n    return item.fullText || '';\n  }\n\n  /**\n   * Set the crumb icon separators\n   */\n  private setCrumbIcons(): void {\n    if (this._breadcrumbs) {\n      const breadcrumbArray: TdBreadcrumbComponent[] =\n        this._breadcrumbs.toArray();\n\n      setTimeout(() => {\n        breadcrumbArray.forEach(\n          (breadcrumb: TdBreadcrumbComponent, index: number) => {\n            breadcrumb.separatorIcon = this.separatorIcon;\n            breadcrumb.displayIcon = true;\n            breadcrumb.isCurrentPage = index === breadcrumbArray.length - 1;\n          },\n        );\n        this._changeDetectorRef.markForCheck();\n      });\n    }\n  }\n\n  private _calculateVisibility(): void {\n    const crumbsArray: TdBreadcrumbComponent[] = this._breadcrumbs.toArray();\n    const totalBreadcrumbs = crumbsArray.length;\n\n    // Reset all orders when there are 2 or fewer breadcrumbs\n    if (totalBreadcrumbs <= 2) {\n      crumbsArray.forEach((breadcrumb: TdBreadcrumbComponent) => {\n        breadcrumb.displayCrumb = true;\n        breadcrumb.shouldTruncate = false;\n        breadcrumb.maxWidth = undefined;\n        breadcrumb.flexOrder = 0; // Default order\n      });\n      this.showOverflowButton = false;\n      this.overflowMenuItems = [];\n      this.hiddenBreadcrumbs = [];\n      this._changeDetectorRef.markForCheck();\n      return;\n    }\n\n    const firstCrumb = crumbsArray[0];\n    const lastCrumb = crumbsArray[totalBreadcrumbs - 1];\n    const containerWidth = this.nativeElementWidth;\n    const totalRequiredWidth = crumbsArray.reduce(\n      (sum, crumb) => sum + crumb.width,\n      0,\n    );\n\n    if (totalRequiredWidth <= containerWidth) {\n      crumbsArray.forEach(\n        (breadcrumb: TdBreadcrumbComponent, index: number) => {\n          breadcrumb.displayCrumb = true;\n          breadcrumb.shouldTruncate = false;\n          breadcrumb.maxWidth = undefined;\n          breadcrumb.flexOrder =\n            index === 0\n              ? 0\n              : index === totalBreadcrumbs - 1\n                ? 1000\n                : index * 10; // Assign orders based on index for middle crumbs\n        },\n      );\n\n      this.showOverflowButton = false;\n      this.overflowMenuItems = [];\n      this.hiddenBreadcrumbs = [];\n      this._changeDetectorRef.markForCheck();\n      return;\n    }\n\n    const overflowButtonWidth = 48;\n    const availableWidth = containerWidth - overflowButtonWidth;\n    const visibleMiddleCrumbs: number[] = [];\n    let requiredWidth = firstCrumb.width + lastCrumb.width;\n\n    // Try to fit breadcrumbs from right to left (favoring more recent items)\n    for (let i = totalBreadcrumbs - 2; i >= 1; i--) {\n      const breadcrumb = crumbsArray[i];\n      if (requiredWidth + breadcrumb.width <= availableWidth) {\n        requiredWidth += breadcrumb.width;\n        visibleMiddleCrumbs.unshift(i);\n      }\n    }\n\n    // Apply visibility and flexbox orders\n    const hiddenBreadcrumbs: TdBreadcrumbComponent[] = [];\n    let currentOrder = 10; // Start orders at 10 for middle breadcrumbs\n\n    crumbsArray.forEach((breadcrumb: TdBreadcrumbComponent, index: number) => {\n      if (index === 0) {\n        // First breadcrumb - always visible, always first\n        breadcrumb.displayCrumb = true;\n        breadcrumb.shouldTruncate = false;\n        breadcrumb.maxWidth = undefined;\n        breadcrumb.flexOrder = 0;\n      } else if (index === totalBreadcrumbs - 1) {\n        // Last breadcrumb - always visible, always last\n        breadcrumb.displayCrumb = true;\n        breadcrumb.shouldTruncate = false;\n        breadcrumb.flexOrder = 1000;\n      } else if (visibleMiddleCrumbs.includes(index)) {\n        // Visible middle breadcrumbs - assign incremental orders\n        breadcrumb.displayCrumb = true;\n        breadcrumb.shouldTruncate = false;\n        breadcrumb.maxWidth = undefined;\n        breadcrumb.flexOrder = currentOrder;\n        currentOrder += 10;\n      } else {\n        // Hidden breadcrumbs\n        breadcrumb.displayCrumb = false;\n        breadcrumb.shouldTruncate = false;\n        breadcrumb.maxWidth = undefined;\n        breadcrumb.flexOrder = 0; // Doesn't matter, it's hidden\n        hiddenBreadcrumbs.push(breadcrumb);\n      }\n    });\n\n    // Overflow button order comes after visible middle breadcrumbs\n    this.overflowButtonOrder = currentOrder;\n\n    // Truncate last breadcrumb if too long\n    const lastBreadcrumbMaxWidth =\n      availableWidth * this.LAST_BREADCRUMB_MAX_WIDTH_RATIO;\n    if (lastCrumb.width > lastBreadcrumbMaxWidth) {\n      lastCrumb.shouldTruncate = true;\n      lastCrumb.maxWidth = lastBreadcrumbMaxWidth;\n    } else {\n      // Ensure maxWidth is reset if last breadcrumb doesn't need truncation\n      lastCrumb.maxWidth = undefined;\n    }\n\n    this.showOverflowButton = hiddenBreadcrumbs.length > 0;\n    this.overflowMenuItems = hiddenBreadcrumbs;\n    this.hiddenBreadcrumbs = hiddenBreadcrumbs;\n    this._changeDetectorRef.markForCheck();\n  }\n\n  private _waitToCalculateVisibility(): void {\n    setTimeout(() => {\n      this._calculateVisibility();\n    });\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { TdBreadcrumbsComponent } from './breadcrumbs.component';\nimport { TdBreadcrumbComponent } from './breadcrumb/breadcrumb.component';\n\n/**\n * @deprecated This module is deprecated and will be removed in future versions.\n * Please migrate to using standalone components as soon as possible.\n */\n@NgModule({\n  imports: [TdBreadcrumbsComponent, TdBreadcrumbComponent],\n  exports: [TdBreadcrumbsComponent, TdBreadcrumbComponent],\n})\nexport class CovalentBreadcrumbsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2"],"mappings":"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"}