{"version":3,"file":"taiga-ui-kit-components-breadcrumbs.mjs","sources":["../../../projects/kit/components/breadcrumbs/breadcrumbs.options.ts","../../../projects/kit/components/breadcrumbs/breadcrumbs.component.ts","../../../projects/kit/components/breadcrumbs/breadcrumbs.template.html","../../../projects/kit/components/breadcrumbs/taiga-ui-kit-components-breadcrumbs.ts"],"sourcesContent":["import type {Provider} from '@angular/core';\nimport {InjectionToken} from '@angular/core';\nimport {tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiSizeL} from '@taiga-ui/core/types';\n\nexport interface TuiBreadcrumbsOptions {\n    readonly icon: string;\n    readonly size: TuiSizeL;\n    readonly itemsLimit: number;\n}\n\nexport const TUI_BREADCRUMBS_DEFAULT_OPTIONS: TuiBreadcrumbsOptions = {\n    icon: '@tui.chevron-right',\n    size: 'm',\n    itemsLimit: 0,\n};\n\nexport const TUI_BREADCRUMBS_OPTIONS = new InjectionToken(\n    ngDevMode ? 'TUI_BREADCRUMBS_OPTIONS' : '',\n    {\n        factory: () => TUI_BREADCRUMBS_DEFAULT_OPTIONS,\n    },\n);\n\nexport function tuiBreadcrumbsOptionsProvider(\n    options: Partial<TuiBreadcrumbsOptions>,\n): Provider {\n    return tuiProvideOptions(\n        TUI_BREADCRUMBS_OPTIONS,\n        options,\n        TUI_BREADCRUMBS_DEFAULT_OPTIONS,\n    );\n}\n","import {AsyncPipe, NgForOf, NgIf, NgTemplateOutlet} from '@angular/common';\nimport type {QueryList} from '@angular/core';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    ContentChildren,\n    inject,\n    Input,\n    TemplateRef,\n} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {EMPTY_QUERY} from '@taiga-ui/cdk/constants';\nimport {TuiItem} from '@taiga-ui/cdk/directives/item';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiDataList} from '@taiga-ui/core/components/data-list';\nimport {TuiIcon} from '@taiga-ui/core/components/icon';\nimport {tuiLinkOptionsProvider} from '@taiga-ui/core/components/link';\nimport {TuiDropdown} from '@taiga-ui/core/directives/dropdown';\nimport {tuiHintOptionsProvider} from '@taiga-ui/core/directives/hint';\nimport {TUI_COMMON_ICONS} from '@taiga-ui/core/tokens';\nimport {TuiItemsWithMore} from '@taiga-ui/kit/components/items-with-more';\nimport {TUI_MORE_WORD} from '@taiga-ui/kit/tokens';\n\nimport type {TuiBreadcrumbsOptions} from './breadcrumbs.options';\nimport {TUI_BREADCRUMBS_OPTIONS} from './breadcrumbs.options';\n\n@Component({\n    standalone: true,\n    selector: 'tui-breadcrumbs',\n    imports: [\n        AsyncPipe,\n        NgForOf,\n        NgIf,\n        NgTemplateOutlet,\n        TuiButton,\n        TuiDataList,\n        TuiDropdown,\n        TuiIcon,\n        TuiItemsWithMore,\n    ],\n    templateUrl: './breadcrumbs.template.html',\n    styleUrls: ['./breadcrumbs.style.less'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        tuiLinkOptionsProvider({appearance: 'action-grayscale'}),\n        tuiHintOptionsProvider({direction: 'bottom'}),\n    ],\n    host: {\n        '[attr.data-size]': 'size',\n    },\n})\nexport class TuiBreadcrumbs {\n    @ContentChildren(TuiItem, {read: TemplateRef})\n    protected readonly items: QueryList<TemplateRef<Record<string, unknown>>> =\n        EMPTY_QUERY;\n\n    protected readonly options = inject(TUI_BREADCRUMBS_OPTIONS);\n    protected readonly icons = inject(TUI_COMMON_ICONS);\n    protected readonly more = toSignal(inject(TUI_MORE_WORD), {initialValue: ''});\n\n    @Input()\n    public size: TuiBreadcrumbsOptions['size'] = this.options.size;\n\n    @Input()\n    public itemsLimit = this.options.itemsLimit;\n\n    protected get limit(): number {\n        return this.itemsLimit ? this.itemsLimit - 2 : Infinity;\n    }\n\n    protected get offset(): number {\n        return this.itemsLimit === 2 ? 1 : 0;\n    }\n}\n","<ng-container *ngIf=\"items.changes | async\" />\n<ng-container *ngIf=\"itemsLimit > 1; else plain\">\n    <ng-container *ngIf=\"itemsLimit !== 2\">\n        <ng-container [ngTemplateOutlet]=\"items.first\" />\n        <ng-container [ngTemplateOutlet]=\"separator\" />\n    </ng-container>\n    <tui-items-with-more\n        side=\"start\"\n        [itemsLimit]=\"itemsLimit - 2\"\n        [required]=\"items.length + offset - 2\"\n    >\n        <ng-container *ngFor=\"let item of items; let last = last\">\n            <ng-container *ngIf=\"item !== items.first || itemsLimit === 2\">\n                <ng-container *tuiItem>\n                    <ng-container [ngTemplateOutlet]=\"item\" />\n                    <ng-container\n                        *ngIf=\"!last\"\n                        [ngTemplateOutlet]=\"separator\"\n                    />\n                </ng-container>\n            </ng-container>\n        </ng-container>\n        <ng-template\n            let-index\n            tuiMore\n        >\n            <span class=\"t-more\">\n                <button\n                    appearance=\"flat\"\n                    size=\"xs\"\n                    tuiDropdownOpen\n                    tuiIconButton\n                    type=\"button\"\n                    [iconStart]=\"icons.ellipsis\"\n                    [tuiDropdown]=\"dropdown\"\n                >\n                    {{ more() }}\n                </button>\n                <ng-container [ngTemplateOutlet]=\"separator\" />\n            </span>\n            <ng-template #dropdown>\n                <tui-data-list size=\"s\">\n                    <ng-container *ngFor=\"let item of items; let i = index\">\n                        <span\n                            *ngIf=\"i + offset && i <= index && item !== items.last\"\n                            tuiOption\n                            class=\"t-option\"\n                        >\n                            <ng-container [ngTemplateOutlet]=\"item\" />\n                        </span>\n                    </ng-container>\n                </tui-data-list>\n            </ng-template>\n        </ng-template>\n    </tui-items-with-more>\n</ng-container>\n<ng-template #separator>\n    <tui-icon\n        *ngIf=\"options.icon.length > 1; else char\"\n        class=\"t-icon\"\n        [icon]=\"options.icon\"\n    />\n    <ng-template #char>\n        <span class=\"t-char\">{{ options.icon }}</span>\n    </ng-template>\n</ng-template>\n<ng-template #plain>\n    <ng-container *ngFor=\"let item of items; let last = last\">\n        <ng-container [ngTemplateOutlet]=\"item\" />\n        <ng-container\n            *ngIf=\"!last\"\n            [ngTemplateOutlet]=\"separator\"\n        />\n    </ng-container>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}