{"version":3,"file":"eui-components-eui-breadcrumb.mjs","sources":["../../eui-breadcrumb/item/breadcrumb-item.component.ts","../../eui-breadcrumb/item/breadcrumb-item.component.html","../../eui-breadcrumb/breadcrumb.component.ts","../../eui-breadcrumb/breadcrumb.component.html","../../eui-breadcrumb/item/breadcrumb-item.model.ts","../../eui-breadcrumb/breadcrumb.service.ts","../../eui-breadcrumb/index.ts","../../eui-breadcrumb/eui-components-eui-breadcrumb.ts"],"sourcesContent":["import {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    HostBinding,\n    Input,\n    OnDestroy,\n    OnInit,\n    inject,\n} from '@angular/core';\nimport { NavigationExtras, Router, RouterModule } from '@angular/router';\nimport { injectOptional, LogService } from '@eui/core';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { EUI_ICON } from '@eui/components/eui-icon';\nimport { EUI_ICON_BUTTON } from '@eui/components/eui-icon-button';\n\n/**\n * @description\n * Individual breadcrumb item component representing a single segment in the breadcrumb navigation path.\n * Provides clickable navigation links with optional icons and automatic relationship management with adjacent items.\n * Supports Angular Router navigation with both internal routes and external URLs.\n * Automatically generates unique IDs when not provided and manages collapsed state for responsive layouts.\n * Used within eui-breadcrumb container for hierarchical navigation display.\n * \n * @usageNotes\n * ```html\n * <eui-breadcrumb>\n *   <!-- Home with icon only -->\n *   <eui-breadcrumb-item \n *     link=\"/\" \n *     iconSvgName=\"home:outline\" \n *     ariaLabel=\"Home\">\n *   </eui-breadcrumb-item>\n *   \n *   <!-- Standard item with label -->\n *   <eui-breadcrumb-item \n *     link=\"/products\" \n *     label=\"Products\">\n *   </eui-breadcrumb-item>\n *   \n *   <!-- Item with navigation extras -->\n *   <eui-breadcrumb-item \n *     link=\"/products/search\" \n *     label=\"Search Results\"\n *     [navigationExtras]=\"{ queryParams: { q: 'laptop' } }\">\n *   </eui-breadcrumb-item>\n *   \n *   <!-- Current page (no link) -->\n *   <eui-breadcrumb-item label=\"Product Details\"></eui-breadcrumb-item>\n * </eui-breadcrumb>\n * ```\n *\n * ### Accessibility\n * - Each item is keyboard accessible with Enter/Space activation\n * - ariaLabel provides screen reader context for icon-only items\n * - Non-linked items (current page) are not focusable\n * - Label text is announced by screen readers\n * - Icon and label combination provides visual and semantic meaning\n *\n * ### Notes\n * - Must be used within eui-breadcrumb parent component\n * - id is auto-generated if not provided\n * - link supports string URLs, Angular Router commands (array), or null for non-clickable items\n * - External URLs (starting with 'http') open in same window\n * - navigationExtras passes options to Angular Router (queryParams, fragment, etc.)\n * - iconSvgName follows EUI icon naming convention\n * - Last item in breadcrumb typically has no link (represents current page)\n * - Label may be truncated in responsive layouts\n * - Previous/next relationships are managed automatically by parent component\n */\n@Component({\n    selector: 'eui-breadcrumb-item',\n    templateUrl: 'breadcrumb-item.component.html',\n    styleUrl: './breadcrumb-item.component.scss',\n    changeDetection: ChangeDetectionStrategy.Default,\n    imports: [\n        RouterModule,\n        PortalModule,\n        ...EUI_ICON,\n        ...EUI_ICON_BUTTON,\n    ],\n})\nexport class EuiBreadcrumbItemComponent implements OnDestroy, OnInit {\n    @HostBinding('class') string = 'eui-breadcrumb-item';\n\n    /**\n     * Unique identifier for the breadcrumb item.\n     * Automatically generated if not provided.\n     * Optional.\n     */\n    @Input() id: string;\n\n    /**\n     * Text label displayed for the breadcrumb item.\n     * May be truncated if too long to fit available space.\n     * Required for item display.\n     */\n    @Input() label: string;\n\n    /**\n     * SVG icon name displayed alongside the breadcrumb label.\n     * Follows EUI icon naming convention (e.g., 'home:outline').\n     * Optional.\n     */\n    @Input() iconSvgName: string;\n\n    /**\n     * ARIA label for the breadcrumb item icon for accessibility.\n     * Provides screen reader description of the icon.\n     * @default 'Breadcrumb item icon'\n     */\n    @Input() ariaLabel = 'Breadcrumb item icon';\n\n    /**\n     * Navigation target for the breadcrumb item.\n     * Supports Angular Router commands (array), URL string, or null to disable link.\n     * String starting with 'http' opens as external URL.\n     * Optional - when null/undefined, item is not clickable.\n     */\n    // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    @Input() link: string | any[];\n\n    /**\n     * Additional navigation options passed to Angular Router.\n     * Supports query params, fragments, state, and other NavigationExtras properties.\n     * Optional.\n     */\n    @Input() navigationExtras: NavigationExtras;\n    /** calculated item width */\n    width = 0;\n    hasPrevious = false;\n    hasNext = false;\n\n    /** state of breadcrumb item in case of collapsed */\n    collapsed = false;\n    elementRef = inject(ElementRef);\n\n    private previousCrumb: EuiBreadcrumbItemComponent;\n    private nextCrumb: EuiBreadcrumbItemComponent;\n    private host = inject<ElementRef<HTMLElement>>(ElementRef);\n    private router = inject(Router);\n    private cdr = inject(ChangeDetectorRef);\n    private logService = injectOptional(LogService);\n\n    ngOnInit(): void {\n        // generate a random ID if none exists\n        if (!this.id) {\n            this.id = Math.trunc(Math.random() * 1000).toString();\n        }\n    }\n\n    ngOnDestroy(): void {\n        if (this.logService) {\n            this.logService.info(`Crumb with id:${this.id} destroyed`);\n        }\n    }\n\n    destroy(): void {\n        this.host.nativeElement.remove();\n    }\n\n    /**\n     * Sets the previous breadcrumb item in the navigation chain.\n     * Called internally by parent eui-breadcrumb component to establish item relationships.\n     */\n    setPrevious(breadcrumbItem: EuiBreadcrumbItemComponent): void {\n        this.previousCrumb = breadcrumbItem;\n        this.cdr.detach();\n        this.hasPrevious = breadcrumbItem ? true : false;\n        this.cdr.detectChanges();\n        this.cdr.reattach();\n    }\n\n    /**\n     * Sets the next breadcrumb item in the navigation chain.\n     * Called internally by parent eui-breadcrumb component to establish item relationships.\n     */\n    setNext(breadcrumbItem: EuiBreadcrumbItemComponent): void {\n        this.nextCrumb = breadcrumbItem;\n        this.cdr.detach();\n        this.hasNext = breadcrumbItem ? true : false;\n        this.cdr.detectChanges();\n        this.cdr.reattach();\n    }\n\n    /**\n     * A callback to navigate to the given link using ng-router.\n     *\n     * @param event\n     */\n    onClick(): boolean {\n        if (this.link) {\n            if (typeof this.link === 'string') {\n                if (this.link.startsWith('http')) {\n                    window.location.href = this.link;\n                    return true;\n                }\n                const extra = this.navigationExtras || { skipLocationChange: false };\n                this.router.navigateByUrl(this.link, extra);\n            } else {\n                this.router.navigate(this.link, this.navigationExtras);\n            }\n        }\n    }\n}\n","@if (hasPrevious) {\n    <eui-icon-svg icon=\"eui-chevron-right\" size=\"2xs\" fillColor=\"secondary\" class=\"eui-u-mh-4xs\"/>\n}\n@if (hasNext) {\n    @if (link) {\n        @if (iconSvgName) {\n            <eui-icon-button [icon]=\"iconSvgName\" hasOverflowHover euiPrimary euiRounded size=\"xs\" (buttonClick)=\"onClick()\" ariaLabel=\"Dialog close icon\"/>\n        } @else {\n            <a class=\"eui-u-text-link-standalone\" (click)=\"onClick()\">\n                {{ label }}\n            </a>\n        }\n    } @else {\n        {{ label }}\n    }\n} @else {\n    {{ label }}\n}\n","import {\n    AfterContentInit,\n    Component,\n    ChangeDetectionStrategy,\n    ContentChildren,\n    forwardRef,\n    HostBinding,\n    QueryList,\n    ViewContainerRef,\n    ViewChild,\n    OnDestroy,\n    inject,\n} from '@angular/core';\nimport { EuiBreadcrumbItemComponent } from './item/breadcrumb-item.component';\nimport { startWith, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\n/**\n * @description\n * `eui-breadcrumb` navigation component displaying hierarchical page location with linked path segments.\n * Automatically manages relationships between `eui-breadcrumb` items for proper navigation flow.\n * Detects and coordinates child EuiBreadcrumbItemComponent instances through content projection.\n * Provides semantic navigation structure with automatic previous/next item linking.\n * Typically used for showing user location within site hierarchy and enabling quick navigation to parent pages.\n * \n * @usageNotes\n * #### Basic breadcrumb navigation\n * ```html\n * <eui-breadcrumb>\n *   <eui-breadcrumb-item link=\"/\" iconSvgName=\"home:outline\" ariaLabel=\"Home\"></eui-breadcrumb-item>\n *   <eui-breadcrumb-item link=\"/products\" label=\"Products\"></eui-breadcrumb-item>\n *   <eui-breadcrumb-item link=\"/products/electronics\" label=\"Electronics\"></eui-breadcrumb-item>\n *   <eui-breadcrumb-item label=\"Laptops\"></eui-breadcrumb-item>\n * </eui-breadcrumb>\n * ```\n *\n * #### With navigation extras\n * ```html\n * <eui-breadcrumb>\n *   <eui-breadcrumb-item link=\"/\" iconSvgName=\"home:outline\"></eui-breadcrumb-item>\n *   <eui-breadcrumb-item \n *     link=\"/services\" \n *     label=\"Services\"\n *     [navigationExtras]=\"{ queryParams: { page: 1 } }\">\n *   </eui-breadcrumb-item>\n * </eui-breadcrumb>\n * ```\n *\n * ### Accessibility\n * - Provides semantic navigation structure for screen readers\n * - Each item is keyboard accessible and focusable\n * - ARIA labels on icons provide context for screen reader users\n * - Current page (last item) is typically not linked\n * - Separators between items are handled automatically\n *\n * ### Notes\n * - Must contain eui-breadcrumb-item children for proper functionality\n * - Automatically establishes previous/next relationships between items\n * - Items are rendered in the order they appear in the template\n * - Last item typically represents current page and should not have a link\n * - Supports responsive behavior with automatic item collapsing\n * - Uses Angular Router for navigation when links are provided\n * - External URLs (starting with 'http') open in same window\n */\n@Component({\n    selector: 'eui-breadcrumb',\n    templateUrl: './breadcrumb.component.html',\n    styleUrl: './breadcrumb.component.scss',\n    changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class EuiBreadcrumbComponent implements AfterContentInit, OnDestroy {\n    @HostBinding('class') string = 'eui-breadcrumb';\n\n    /** Query list of breadcrumb items occurrences on the content */\n    @ContentChildren(forwardRef(() => EuiBreadcrumbItemComponent), { descendants: false })\n    private breadcrumbItems: QueryList<EuiBreadcrumbItemComponent>;\n\n    @ViewChild('vcr', { read: ViewContainerRef })\n    private vcr: ViewContainerRef;\n\n    private destroy$: Subject<void> = new Subject<void>();\n\n    /** Observable emitting when the breadcrumb Items List has changed */\n    private breadcrumbItemsListChanged: Subject<void> = new Subject<void>();\n\n    private viewContainerRef = inject(ViewContainerRef);\n\n    ngAfterContentInit(): void {\n        this.breadcrumbItems.changes.pipe(takeUntil(this.destroy$), startWith(true)).subscribe((changes) => {\n            if (changes instanceof QueryList) {\n                this.breadcrumbItems = changes;\n                this.breadcrumbItemsListChanged.next();\n            }\n            this.breadcrumbItems.forEach((item, index, array) => {\n                item.setPrevious(array[index - 1]);\n                item.setNext(array[index + 1]);\n            });\n        });\n    }\n\n    ngOnDestroy(): void {\n        this.destroy$.next();\n        this.destroy$.unsubscribe();\n    }\n}\n","<ng-container #vcr>\n    <ng-content></ng-content>\n</ng-container>\n","import { NavigationExtras } from '@angular/router';\n\n// TODO: replace with tsconfig types\nexport type ArrayElement<A> = A extends readonly (infer T)[] ? T : never;\ntype DeepWriteable<T> = { -readonly [P in keyof T]: DeepWriteable<T[P]> };\ntype Cast<X, Y> = X extends Y ? X : Y;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype FromEntries<T> = T extends [infer Key, any][]\n    // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    ? { [K in Cast<Key, string>]: Extract<ArrayElement<T>, [K, any]>[1] }\n    // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    : { [key in string]: any };\n\nexport type FromEntriesWithReadOnly<T> = FromEntries<DeepWriteable<T>>;\n\ndeclare global {\n    interface ObjectConstructor {\n        fromEntries<T>(obj: T): FromEntriesWithReadOnly<T>;\n    }\n}\n\nexport class BreadCrumbItem {\n    /** A unique ID for each crumb linked to a page */\n    id: string;\n    /** The label of the crumb */\n    label: string;\n\n    /** A URL link. Commands to pass to {@link Router#createUrlTree Router#createUrlTree}.\n     *   - **array**: commands to pass to {@link Router#createUrlTree Router#createUrlTree}.\n     *   - **string**: shorthand for array of commands with just the string, i.e. `['/route']`\n     *   - **null|undefined**: Disables the link by removing the `href`\n     */\n    // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    get link(): string | any[] {\n        return this._link;\n    }\n\n    // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    set link(link: string | any[]) {\n        if (typeof link === 'string') {\n            try {\n                let url: URL;\n                if (!link.startsWith('http')) {\n                    url = new URL(link, 'http://placeholder');\n                    this._link = url.pathname;\n                } else {\n                    url = new URL(link);\n                    this._link = link;\n                }\n                if (!this.navigationExtras) {\n                    this.navigationExtras = {};\n                }\n                this.navigationExtras.fragment = url.hash.replace('#', '');\n                this.navigationExtras.queryParams = Object.fromEntries(\n                    url.search\n                        .replace('?', '')\n                        .split('&')\n                        .map((i) => i.split('=')),\n                );\n            } catch (e) {\n                throw new Error('The given link is not a valid URL');\n            }\n        } else {\n            this._link = link;\n        }\n    }\n\n    /** Extras for Angular Router */\n    navigationExtras?: NavigationExtras;\n    // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    private _link?: string | any[];\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, BehaviorSubject } from 'rxjs';\nimport { BreadCrumbItem } from './item/breadcrumb-item.model';\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class EuiBreadcrumbService {\n    /**\n     * An observable on which observers can be notified on breadcrumb changes\n     */\n    public breadcrumbs$: Observable<BreadCrumbItem[]>;\n    /**\n     * A behavior subject to emit breadcrumb whenever that changes\n     */\n    private breadcrumbsSource$: BehaviorSubject<BreadCrumbItem[]>;\n    /**\n     * An array to hold BreadCrumbItem metadata used to render the BreadCrumbItem\n     */\n    private breadcrumb: BreadCrumbItem[];\n\n    constructor() {\n        this.breadcrumb = [];\n        this.breadcrumbsSource$ = new BehaviorSubject(this.breadcrumb);\n        this.breadcrumbs$ = this.breadcrumbsSource$.asObservable();\n    }\n\n    /**\n     * Adds a new BreadCrumbItem into the breadcrumb\n     *\n     * @param breadCrumbItem The BreadCrumbItem you want to insert in trail\n     * @param [after] The ID of the BreadCrumbItem after given one will be inserted.\n     * @param [removeAfter=false] All crumbs after given ID will be removed.\n     * @throws Will throw an error if given after ID is not found on current trail.\n     */\n    addCrumb(breadCrumbItem: BreadCrumbItem, after?: string, removeAfter = false): void {\n        if (after) {\n            // find ID for which provided BreadCrumbItem will be inserted after\n            const index = this.breadcrumb.findIndex((item) => item.id === after);\n            if (index < 0) {\n                throw new Error(`The provided afterId: ${after}, has not been found in current breadcrumb`);\n            }\n            // in case removeAfter=true then remove all crumbs after given one\n            this.breadcrumb.splice(index, removeAfter ? this.breadcrumb.length - index : 0, breadCrumbItem);\n        } else {\n            const index = this.breadcrumb.findIndex((item) => item.id === breadCrumbItem.id);\n            if (index !== -1) {\n                throw new Error(`The provided id: ${breadCrumbItem.id} is already in current breadcrumb`);\n            }\n            this.breadcrumb.push(breadCrumbItem);\n        }\n\n        // Notify observers\n        this.breadcrumbsSource$.next(this.breadcrumb);\n    }\n\n    /**\n     * Remove a BreadCrumbItem based on a given ID\n     *\n     * @param id Optional: The ID of BreadCrumbItem to be removed\n     *           If no id provided then the last item will be popped.\n     */\n    removeCrumb(id?: string): void {\n        if (id) {\n            this.breadcrumb = this.breadcrumb.filter((item) => item.id !== id);\n        } else {\n            this.breadcrumb.pop();\n        }\n\n        // Notify observers\n        this.breadcrumbsSource$.next(this.breadcrumb);\n    }\n\n    /**\n     * Update a specific entry in the data structure\n     *\n     * @param BreadCrumbItem The BreadCrumbItem to match and update\n     * @throws Will throw an Error if BreadCrumbItem is not part of the breadcrumb\n     */\n    updateCrumb(item: BreadCrumbItem): void {\n        const index = this.breadcrumb.findIndex((c) => c.id === item.id);\n        if (index < 0) {\n            throw new Error(`The provided afterId: ${item.id}, has not been found in current breadcrumb`);\n        }\n        this.breadcrumb.splice(index, 1, item);\n\n        // Notify observers\n        this.breadcrumbsSource$.next(this.breadcrumb);\n    }\n\n    /**\n     * Returns current breadcrumb\n     */\n    getBreadcrumb(): BreadCrumbItem[] {\n        return this.breadcrumb;\n    }\n\n    /**\n     * Sets the breadcrumb\n     */\n    setBreadcrumb(breadcrumb: BreadCrumbItem[]): void {\n        this.breadcrumb = breadcrumb;\n\n        // Notify observers\n        this.breadcrumbsSource$.next(this.breadcrumb);\n    }\n}\n","import { EuiBreadcrumbComponent } from './breadcrumb.component';\nimport { EuiBreadcrumbItemComponent } from './item/breadcrumb-item.component';\n\nexport * from './breadcrumb.component';\nexport * from './item/breadcrumb-item.model';\nexport * from './item/breadcrumb-item.component';\nexport * from './breadcrumb.service';\n\nexport const EUI_BREADCRUMB = [\n    EuiBreadcrumbComponent,\n    EuiBreadcrumbItemComponent,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}