{"version":3,"file":"fundamental-ngx-core-tree.mjs","sources":["../../../../libs/core/tree/data-source/tree-data-source.ts","../../../../libs/core/tree/data-source/tree-data-source-parser.ts","../../../../libs/core/tree/directives/tree-item-def.directive.ts","../../../../libs/core/tree/directives/tree-item.directive.ts","../../../../libs/core/tree/models/base-tree-item.class.ts","../../../../libs/core/tree/tree.service.ts","../../../../libs/core/tree/tree.component.ts","../../../../libs/core/tree/tree.component.html","../../../../libs/core/tree/components/tree-item/tree-item.component.ts","../../../../libs/core/tree/components/tree-item/tree-item.component.html","../../../../libs/core/tree/directives/tree-item-button.directive.ts","../../../../libs/core/tree/directives/tree-item-icon.directive.ts","../../../../libs/core/tree/tree.module.ts","../../../../libs/core/tree/tokens.ts","../../../../libs/core/tree/fundamental-ngx-core-tree.ts"],"sourcesContent":["import { AbstractDataProvider, BaseDataSource, DataProvider } from '@fundamental-ngx/cdk/data-source';\nimport { Observable } from 'rxjs';\n\nexport class FdTreeDataSource<T> extends BaseDataSource<T> {\n    /** @hidden */\n    limitless = true;\n    /** @hidden */\n    constructor(public dataProvider: AbstractDataProvider<T>) {\n        super(dataProvider);\n    }\n}\n\nexport class ArrayTreeDataSource<T> extends FdTreeDataSource<T> {\n    /** @hidden */\n    constructor(data: T[]) {\n        super(new DataProvider(data));\n    }\n}\n\nexport class ObservableTreeDataSource<T> extends FdTreeDataSource<T> {\n    /** @hidden */\n    constructor(data: Observable<T[]>) {\n        super(new DataProvider(data));\n    }\n}\n\n/**\n * Type of acceptable objects as a datasource for the Multi-Combo Box component.\n */\nexport type FdTreeAcceptableDataSource<T = any> = FdTreeDataSource<T> | Observable<T[]> | T[];\nexport type FdTreeItemType<Type extends FdTreeAcceptableDataSource> =\n    Type extends BaseDataSource<infer X>\n        ? X\n        : Type extends Array<infer X>\n          ? X\n          : Type extends Observable<infer X>\n            ? X extends Array<infer V>\n                ? V\n                : X\n            : Type;\n","import { DataSourceParser, isDataSource } from '@fundamental-ngx/cdk/data-source';\nimport { isObservable } from 'rxjs';\nimport {\n    ArrayTreeDataSource,\n    FdTreeAcceptableDataSource,\n    FdTreeDataSource,\n    ObservableTreeDataSource\n} from './tree-data-source';\n\nexport class TreeDataSourceParser<T> implements DataSourceParser<T, FdTreeDataSource<T>> {\n    /**\n     * Transforms plain array or observable into DataSource class.\n     * @param source\n     */\n    parse(source: FdTreeAcceptableDataSource<T>): FdTreeDataSource<T> | undefined {\n        if (isDataSource(source)) {\n            return source as FdTreeDataSource<T>;\n        }\n\n        if (Array.isArray(source)) {\n            return new ArrayTreeDataSource<T>(source);\n        }\n\n        if (isObservable(source)) {\n            return new ObservableTreeDataSource<T>(source);\n        }\n\n        return undefined;\n    }\n}\n","import { Directive, Input, TemplateRef, inject } from '@angular/core';\nimport { TreeItem } from '../models/tree-item';\nimport { TreeItemDefContext } from '../models/tree-item-def-context';\n\n@Directive({\n    selector: '[fdTreeItemDef]',\n    standalone: true\n})\nexport class TreeItemDefDirective<T extends TreeItem = TreeItem> {\n    /**\n     * @hidden\n     * Used for type support.\n     */\n    @Input()\n    fdTreeItemDefAs: T;\n    /** Template reference. */\n    readonly templateRef = inject<TemplateRef<TreeItemDefContext<T>>>(TemplateRef);\n    /** @hidden */\n    static ngTemplateContextGuard(dir: TreeItemDefDirective, ctx: TreeItemDefContext): ctx is TreeItemDefContext {\n        return true;\n    }\n}\n","import { Directive, Injector, OnDestroy } from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { BaseTreeItem } from '../models/base-tree-item.class';\nimport { TreeItem } from '../models/tree-item';\n\n@Directive({\n    selector: '[fdTreeItem]',\n    exportAs: 'fdTreeItem',\n    standalone: true\n})\nexport class TreeItemDirective<T extends TreeItem, P> implements OnDestroy {\n    /** Tree item component instance. */\n    treeItem: Nullable<BaseTreeItem<T, P>>;\n\n    /** Injector to be used in a tree item component, to resolve a tree item directive. */\n    readonly injector: Injector;\n\n    /** @hidden */\n    constructor(injector: Injector) {\n        this.injector = Injector.create({ providers: [], parent: injector });\n    }\n\n    /** Sets tree item. */\n    setTreeItem(item: Nullable<BaseTreeItem<T, P>>): void {\n        this.treeItem = item;\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this.treeItem = null;\n    }\n}\n","import { Directive, ElementRef } from '@angular/core';\nimport { Nullable, SelectableItemToken } from '@fundamental-ngx/cdk/utils';\nimport { FdTreeAcceptableDataSource } from '../data-source/tree-data-source';\nimport { TreeItem, TreeItemState } from './tree-item';\n\n/**\n * Abstract base class for tree item components.\n * Defines the contract for tree item implementations with navigation, selection, and hierarchy support.\n * @template T - The tree item type extending TreeItem\n * @template P - The value type of the tree item (defaults to any)\n */\n@Directive()\nexport abstract class BaseTreeItem<T extends TreeItem = TreeItem, P = any>\n    implements Partial<SelectableItemToken<HTMLElement, P>>\n{\n    /**\n     * The data value associated with this tree item.\n     */\n    abstract value: P;\n\n    /**\n     * Unique identifier for the tree item.\n     */\n    abstract id: string;\n\n    /**\n     * ID of the parent tree item, or null if this is a root item.\n     */\n    abstract parentId: Nullable<string>;\n\n    /**\n     * Whether the tree item can be navigated to via keyboard or mouse interaction.\n     */\n    abstract navigatable: boolean;\n\n    /**\n     * Current state of the tree item (e.g., loading, error, success).\n     */\n    abstract state: Nullable<TreeItemState>;\n\n    /**\n     * Data source for child nodes, can be an array or DataSource instance.\n     */\n    abstract childNodes: FdTreeAcceptableDataSource<T>;\n\n    /**\n     * Whether the content text should wrap to multiple lines.\n     */\n    abstract wrapContent: boolean;\n\n    /**\n     * Whether the tree item is currently expanded to show its children.\n     */\n    abstract expanded: boolean;\n\n    /**\n     * The hierarchical level of this item in the tree (root level is 1).\n     */\n    abstract level: number;\n\n    /**\n     * Array of child tree items.\n     */\n    abstract children: T[];\n\n    /**\n     * Whether the tree item has children defined via content projection.\n     */\n    abstract hasProjectedChildren: boolean;\n\n    /**\n     * Whether the tree item has any children (projected or from data source).\n     */\n    abstract hasChildren: boolean;\n\n    /**\n     * Reference to the focusable container element of the tree item.\n     */\n    abstract itemContainer: Nullable<ElementRef>;\n\n    /**\n     * Whether the tree item can receive keyboard focus for navigation.\n     */\n    abstract keyboardAccessible: boolean;\n\n    /**\n     * Reference to the selectable item directive for selection management.\n     */\n    abstract selectableListItem: SelectableItemToken;\n\n    /**\n     * Whether the tree item has children provided by a DataSource.\n     */\n    abstract hasDsChildren: boolean;\n\n    /**\n     * Whether children from DataSource have finished loading.\n     */\n    abstract childrenLoaded: boolean;\n\n    /**\n     * Reference to the host element of the tree item.\n     */\n    abstract elementRef: ElementRef;\n\n    /**\n     * Sets focus on the tree item.\n     */\n    abstract focus(): void;\n\n    /**\n     * Updates the ARIA position information for the item.\n     * @param totalItemsCount - Total number of items in the set\n     * @param currentIndex - Current position index (0-based)\n     */\n    abstract setPosition(totalItemsCount: number, currentIndex: number): void;\n\n    /**\n     * Sets the tabindex value for the item's container element.\n     * @param value - The tabindex value (typically 0 for focusable, -1 for not focusable)\n     */\n    abstract setContainerTabIndex(value: number): void;\n}\n","import { Injectable, Signal, TemplateRef, signal } from '@angular/core';\nimport { Nullable, uuidv4 } from '@fundamental-ngx/cdk/utils';\nimport { Subject } from 'rxjs';\nimport { BaseTreeItem } from './models/base-tree-item.class';\nimport { SelectionPlacement, SelectionType } from './models/selection-type';\nimport { TreeItem, TreeItemGeneric } from './models/tree-item';\nimport { TreeItemDefContext } from './models/tree-item-def-context';\n\nexport interface SelectionModeModel {\n    mode: SelectionType;\n    placement: SelectionPlacement;\n}\n\n@Injectable()\nexport class TreeService {\n    /** Tree item template ref. */\n    treeItemTemplateRef: Nullable<TemplateRef<TreeItemDefContext>>;\n\n    /** Currently focused tree item. */\n    focusedTreeItem: Nullable<BaseTreeItem>;\n\n    /** Current expanded level. */\n    get expandedLevel(): Signal<number | undefined> {\n        return this._expandedLevel.asReadonly();\n    }\n\n    /** Tree selection mode. */\n    get selectionMode(): Signal<SelectionModeModel> {\n        return this._selectionMode$.asReadonly();\n    }\n\n    /** Whether to show navigation indicator. */\n    get navigationIndicator(): Signal<boolean> {\n        return this._navigationIndicator$.asReadonly();\n    }\n\n    /**\n     * @hidden\n     */\n    readonly detectChanges = new Subject<void>();\n\n    /** @hidden */\n    private readonly _expandableItems = new Map<number, { [key: string]: boolean }>();\n\n    /** @hidden */\n    private readonly _selectionMode$ = signal<SelectionModeModel>({ mode: 'none', placement: 'none' });\n\n    /** @hidden */\n    private readonly _expandedLevel = signal<number | undefined>(undefined);\n\n    /** @hidden */\n    private readonly _navigationIndicator$ = signal(false);\n\n    /** Sets whether the navigation indicator should be visible. */\n    setNavigationIndicator(value: boolean): void {\n        this._navigationIndicator$.set(value);\n    }\n\n    /** @hidden */\n    normalizeTreeItems<T extends TreeItem = TreeItem>(\n        items: Nullable<T[]>,\n        parentId: string | null = null,\n        level = 1\n    ): TreeItem<TreeItemGeneric<T>>[] {\n        if (!items) {\n            return [];\n        }\n        return [...items].map((item: T) => ({\n            ...item,\n            ...{\n                level,\n                parentId,\n                renderer: this.treeItemTemplateRef,\n                id: item.id || uuidv4()\n            }\n        }));\n    }\n\n    /**\n     * Adds expandable item to the object of expandable items.\n     * @param id\n     * @param level\n     */\n    addExpandableItem(id: string, level: number, expanded: boolean): void {\n        const levelCollection = this._expandableItems.get(level) || {};\n        levelCollection[id] = expanded;\n        this._expandableItems.set(level, levelCollection);\n        this._emitNewExpandedLevel();\n    }\n\n    /**\n     * Removes expandable item from the object of expandable items.\n     * @param id\n     * @param level\n     */\n    removeExpandableItem(id: string, level: number): void {\n        const levelCollection = this._expandableItems.get(level) || {};\n        delete levelCollection[id];\n        this._expandableItems.set(level, levelCollection);\n        this._emitNewExpandedLevel();\n    }\n\n    /**\n     * Sets selection mode and it's placement.\n     * @param mode Selection mode.\n     * @param placement Selection control placement.\n     */\n    setSelectionMode(mode: SelectionType, placement: SelectionPlacement): void {\n        this._selectionMode$.set({ mode, placement });\n    }\n\n    /** @hidden */\n    private _emitNewExpandedLevel(): void {\n        // We need to go from level 1 to deeper level since level 4 may be expanded, yet level 2 not.\n        const levels = Array.from(this._expandableItems.keys()).sort();\n        let lastLevel: number | undefined;\n\n        for (const level of levels) {\n            const levelExpandableItems = this._expandableItems.get(level)!;\n\n            if (Object.values(levelExpandableItems).every((v) => !v)) {\n                break;\n            }\n\n            lastLevel = level;\n        }\n\n        this._expandedLevel.set(lastLevel);\n    }\n}\n","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport { DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ContentChild,\n    ContentChildren,\n    DestroyRef,\n    ElementRef,\n    EventEmitter,\n    HostListener,\n    Input,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    Output,\n    QueryList,\n    SimpleChanges,\n    ViewChildren,\n    ViewEncapsulation,\n    effect,\n    inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DataSourceDirective, FD_DATA_SOURCE_TRANSFORMER } from '@fundamental-ngx/cdk/data-source';\nimport { CvaDirective } from '@fundamental-ngx/cdk/forms';\nimport {\n    CssClassBuilder,\n    KeyUtil,\n    Nullable,\n    RtlService,\n    SelectComponentRootToken,\n    SelectableItemDirective,\n    SelectableListValueType,\n    SelectionService,\n    applyCssClass,\n    range\n} from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { SkeletonComponent } from '@fundamental-ngx/core/skeleton';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { Subscription, filter, fromEvent, startWith, switchMap } from 'rxjs';\nimport { FdTreeAcceptableDataSource, FdTreeDataSource, FdTreeItemType } from './data-source/tree-data-source';\nimport { TreeDataSourceParser } from './data-source/tree-data-source-parser';\nimport { TreeItemDefDirective } from './directives/tree-item-def.directive';\nimport { TreeItemDirective } from './directives/tree-item.directive';\nimport { BaseTreeItem } from './models/base-tree-item.class';\nimport { SelectionPlacement, SelectionType } from './models/selection-type';\nimport { TreeItem, TreeItemGeneric } from './models/tree-item';\nimport { TreeService } from './tree.service';\n\n@Component({\n    selector: 'fd-tree',\n    templateUrl: './tree.component.html',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    styleUrl: './tree.component.scss',\n    hostDirectives: [\n        {\n            directive: DataSourceDirective,\n            inputs: ['dataSource'],\n            outputs: ['dataChanged']\n        },\n        {\n            directive: CvaDirective,\n            inputs: ['name', 'id', 'state', 'stateMessage', 'disabled', 'readonly']\n        }\n    ],\n    host: {\n        role: 'tree'\n    },\n    providers: [\n        contentDensityObserverProviders(),\n        TreeService,\n        SelectionService,\n        {\n            provide: FD_DATA_SOURCE_TRANSFORMER,\n            useClass: TreeDataSourceParser\n        }\n    ],\n    imports: [NgTemplateOutlet, SkeletonComponent, TreeItemDirective, SelectableItemDirective, FdTranslatePipe]\n})\nexport class TreeComponent<P extends FdTreeAcceptableDataSource, T extends TreeItem = FdTreeItemType<P>>\n    implements CssClassBuilder, OnInit, OnChanges, AfterViewInit, SelectComponentRootToken, OnDestroy\n{\n    /** @hidden */\n    @Input()\n    class: string;\n\n    /**\n     * Whether the tree should be borderless.\n     */\n    @Input()\n    noBorder = false;\n\n    /** Type of tree items selection. */\n    @Input()\n    selection: SelectionType = 'none';\n\n    /** Placement of the selection control. */\n    @Input()\n    selectionPlacement: SelectionPlacement = 'none';\n\n    /**\n     * Whether the sections should be dependent for selection mode.\n     * If true, selection control will shift, according to the level.\n     * If false, selection control will stay on the same place ignoring the item level.\n     */\n    @Input()\n    independentSections = false;\n\n    /**\n     * Whether the Tree component has navigation indicators.\n     */\n    @Input()\n    set navigationIndicator(value: boolean) {\n        if (value === this._navigationIndicator) {\n            return;\n        }\n        this._navigationIndicator = value;\n        this._treeService.setNavigationIndicator(value);\n    }\n\n    get navigationIndicator(): boolean {\n        return this._navigationIndicator;\n    }\n\n    /** Event emitted when data loading is started. */\n    @Output()\n    dataRequested = new EventEmitter<boolean>();\n\n    /** Event emitted when data loading is finished. */\n    @Output()\n    dataReceived = new EventEmitter<boolean>();\n\n    /** Event emitted when selected state changed. */\n    @Output()\n    selectedChange = new EventEmitter<any>();\n\n    /** Tree item template definition. */\n    @ContentChild(TreeItemDefDirective)\n    set treeItemDef(value: Nullable<TreeItemDefDirective>) {\n        this._treeItemDef = value;\n        // Set new renderer\n        this._treeService.treeItemTemplateRef = value?.templateRef;\n        this._items = this._treeService.normalizeTreeItems(this._items);\n    }\n\n    get treeItemDef(): Nullable<TreeItemDefDirective> {\n        return this._treeItemDef;\n    }\n\n    /** @hidden */\n    @ViewChildren(TreeItemDirective)\n    _treeItemDirectives: QueryList<TreeItemDirective<TreeItem, any>>;\n\n    /** @hidden */\n    @ContentChildren(BaseTreeItem, { descendants: true })\n    readonly _projectedTreeItems: QueryList<BaseTreeItem>;\n\n    /** @hidden */\n    _items: TreeItem<TreeItemGeneric<T>>[] = [];\n\n    /** @hidden */\n    get multiple(): boolean {\n        return this.selection === 'multiple';\n    }\n\n    /** @hidden */\n    get toggle(): boolean {\n        return true;\n    }\n\n    /**\n     * @hidden\n     * Used for skeleton to appear before first meaningful data being loaded.\n     */\n    _initialDataLoaded = false;\n\n    /** @hidden */\n    readonly loadingRange = range(5);\n\n    /** @hidden */\n    readonly elementRef = inject(ElementRef);\n\n    /** @hidden */\n    readonly _treeService = inject(TreeService);\n\n    /** @hidden */\n    private _navigationIndicator = false;\n\n    /** @hidden */\n    private _treeItemDef: Nullable<TreeItemDefDirective>;\n\n    /** @hidden */\n    private readonly _contentDensityObserver = inject(ContentDensityObserver);\n\n    /** @hidden */\n    private readonly _dataSourceDirective = inject<DataSourceDirective<T, FdTreeDataSource<T>>>(DataSourceDirective);\n\n    /** @hidden */\n    private readonly _destroyRef = inject(DestroyRef);\n\n    /** @hidden */\n    private readonly _selectionService = inject(SelectionService);\n\n    /** @hidden */\n    private readonly _rtlService = inject(RtlService, {\n        optional: true\n    });\n\n    /** @hidden */\n    private readonly _cvaDirective = inject(CvaDirective);\n\n    /** @hidden */\n    private readonly _cdr = inject(ChangeDetectorRef);\n\n    /** @hidden */\n    private _dsSubscription: Subscription | null = null;\n\n    /** @hidden */\n    private _expandedLevel: number | undefined;\n\n    /** @hidden */\n    private _focusKeyManager: FocusKeyManager<BaseTreeItem>;\n\n    /**\n     * @hidden\n     * Sorted tree item components.\n     */\n    private _sortedTreeItems: BaseTreeItem[] = [];\n\n    /**\n     * @hidden\n     * All tree item components.\n     */\n    private _allItems: BaseTreeItem[] = [];\n\n    /** @hidden */\n    private _eventSub: Subscription;\n\n    /** @hidden */\n    private _selectionSub: Subscription | undefined;\n\n    /** @hidden */\n    constructor() {\n        this._selectionService.registerRootComponent(this);\n        this._contentDensityObserver.subscribe();\n\n        effect(() => {\n            this._expandedLevel = this._treeService.expandedLevel();\n            this.buildComponentCssClass();\n        });\n    }\n\n    /** @hidden */\n    @applyCssClass\n    buildComponentCssClass(): string[] {\n        return [\n            this.class,\n            this._expandedLevel ? `expanded-level-${this._expandedLevel}` : '',\n            this.noBorder ? 'fd-tree--no-border' : '',\n            this._items.length === 0 && this._initialDataLoaded ? 'fd-tree--no-data' : '',\n            this.independentSections ? 'fd-tree--independent-multi-selection' : '',\n            'fd-tree'\n        ];\n    }\n\n    /**\n     * @hidden\n     * Keyboard navigation\n     * @param event Keyboard event.\n     */\n    @HostListener('keydown', ['$event'])\n    protected _onKeyUp(event: KeyboardEvent): void {\n        if (KeyUtil.isKeyCode(event, [DOWN_ARROW, UP_ARROW])) {\n            if (event.defaultPrevented) {\n                return;\n            }\n            event.preventDefault();\n            this._focusKeyManager?.onKeydown(event);\n        }\n    }\n\n    /** @hidden */\n    ngOnInit(): void {\n        this._openDataStream();\n        this.buildComponentCssClass();\n\n        this._treeService.detectChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n            this._cdr.markForCheck();\n        });\n\n        if (this.selection !== 'none') {\n            this._selectionService.setValue(this._cvaDirective.value);\n\n            this._cvaDirective.ngControl?.valueChanges?.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n                this._selectionService.setValue(this._cvaDirective.value);\n            });\n        }\n    }\n\n    /** @hidden */\n    ngOnChanges(changes: SimpleChanges): void {\n        this.buildComponentCssClass();\n\n        if ('selection' in changes || 'selectionPlacement' in changes) {\n            this._treeService.setSelectionMode(this.selection, this.selectionPlacement);\n            this._setSelectionListener();\n        }\n    }\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        this._listenToTreeItemsChanges();\n        this._listenToTreeItemDirectiveChanges();\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this._dsSubscription?.unsubscribe();\n        this._eventSub?.unsubscribe();\n        this._selectionSub?.unsubscribe();\n    }\n\n    /** @hidden */\n    _onItemFocused(treeItem: BaseTreeItem): void {\n        let focusedIndex = -1;\n        this._sortedTreeItems.forEach((item, index) => {\n            const isFocused = treeItem === item;\n            item.setContainerTabIndex(isFocused ? 0 : -1);\n            if (isFocused) {\n                focusedIndex = index;\n            }\n        });\n\n        if (focusedIndex === -1) {\n            return;\n        }\n\n        this._focusKeyManager.setActiveItem(focusedIndex);\n        this._cdr.markForCheck();\n    }\n\n    /** @hidden */\n    _onItemKeyDown(event: KeyboardEvent, treeItem: Nullable<BaseTreeItem>): void {\n        if (!treeItem) {\n            return;\n        }\n\n        const isRtl = this._rtlService?.rtl() ?? false;\n        const expandKey = isRtl ? LEFT_ARROW : RIGHT_ARROW;\n        const collapseKey = isRtl ? RIGHT_ARROW : LEFT_ARROW;\n\n        if (KeyUtil.isKeyCode(event, expandKey) && (treeItem.hasDsChildren || treeItem.hasProjectedChildren)) {\n            if (event.defaultPrevented) {\n                return;\n            }\n            event.preventDefault();\n\n            this._expandTreeSection(treeItem);\n            return;\n        }\n\n        if (KeyUtil.isKeyCode(event, collapseKey)) {\n            if (event.defaultPrevented) {\n                return;\n            }\n            event.preventDefault();\n\n            this._collapseTreeSection(treeItem);\n            return;\n        }\n    }\n\n    /** @hidden */\n    _trackFn(index: number, item: TreeItem<TreeItemGeneric<T>>): string {\n        return item.id;\n    }\n\n    /**\n     * @hidden\n     * Select list interface method implementation.\n     * Sets value for control value accessor and emits it.\n     * @param value value of the selection.\n     */\n    onChange(value: SelectableListValueType<any>): void {\n        this._cvaDirective.setValue(value, true);\n    }\n\n    /** @hidden */\n    private _expandTreeSection(treeItem: BaseTreeItem): void {\n        if (treeItem.expanded) {\n            // Shift focus on the first child item\n            const itemIndex = this._sortedTreeItems.findIndex((item) => item.id === treeItem.id);\n            const nextItem = this._sortedTreeItems[itemIndex + 1];\n            if (nextItem?.parentId === treeItem.id) {\n                this._focusKeyManager.setActiveItem(itemIndex + 1);\n            }\n\n            return;\n        }\n\n        treeItem.expanded = true;\n        this._cdr.markForCheck();\n    }\n\n    /** @hidden */\n    private _collapseTreeSection(treeItem: BaseTreeItem): void {\n        if (!treeItem.expanded && treeItem.parentId) {\n            const parentItemIndex = this._sortedTreeItems.findIndex((item) => item.id === treeItem.parentId);\n\n            if (parentItemIndex > -1) {\n                this._focusKeyManager.setActiveItem(parentItemIndex);\n                return;\n            }\n        }\n        treeItem.expanded = false;\n        this._cdr.markForCheck();\n    }\n\n    /** @hidden */\n    private _openDataStream(): void {\n        this._dsSubscription?.unsubscribe();\n        this._dsSubscription = new Subscription();\n        this._dsSubscription.add(\n            this._dataSourceDirective.dataSourceProvider?.dataRequested.subscribe(this.dataRequested)\n        );\n        this._dsSubscription.add(\n            this._dataSourceDirective.dataSourceProvider?.dataReceived.subscribe(this.dataReceived)\n        );\n\n        this._dsSubscription.add(\n            this._dataSourceDirective.dataSourceProvider?.dataReceived\n                .pipe(\n                    filter((received) => received),\n                    switchMap(() => this._dataSourceDirective.dataChanged$)\n                )\n                .subscribe((data) => {\n                    this._initialDataLoaded = true;\n                    this._items = this._treeService.normalizeTreeItems(data);\n                    this.buildComponentCssClass();\n\n                    this._cdr.markForCheck();\n                })\n        );\n\n        this._dataSourceDirective.dataSourceProvider?.match();\n    }\n\n    /** @hidden */\n    private _setupEventListeners(): void {\n        this._eventSub?.unsubscribe();\n        this._eventSub = new Subscription();\n\n        this._sortedTreeItems.forEach((item) => {\n            this._eventSub.add(\n                fromEvent<KeyboardEvent>(item.elementRef.nativeElement, 'keydown').subscribe((event) => {\n                    this._onItemKeyDown(event, item);\n                })\n            );\n            this._eventSub.add(\n                fromEvent(item.itemContainer?.nativeElement, 'focus').subscribe(() => {\n                    this._onItemFocused(item);\n                })\n            );\n        });\n    }\n\n    /** @hidden */\n    private _sortTreeItems(items: BaseTreeItem[]): BaseTreeItem[] {\n        const components: BaseTreeItem[] = [];\n        const rootItems = items.filter((item) => item.level === 1);\n\n        rootItems.forEach((treeItem, index) => {\n            treeItem.setPosition(rootItems.length, index + 1);\n        });\n\n        items.forEach((item) => {\n            if (!item || components.includes(item)) {\n                return;\n            }\n\n            components.push(item);\n\n            if (item.children.length === 0) {\n                return;\n            }\n\n            const childItems = this._sortTreeItems(this._allItems.filter((i) => i.parentId === item.id));\n\n            childItems.forEach((treeItem, index) => {\n                treeItem.setPosition(childItems.length, index + 1);\n            });\n\n            components.push(...childItems);\n        });\n\n        return components;\n    }\n\n    /** @hidden */\n    private _setSelectionListener(): void {\n        this._selectionSub?.unsubscribe();\n        if (this.selection !== 'none') {\n            this._selectionService.setValue(this._cvaDirective.value);\n\n            this._selectionSub = this._cvaDirective.ngControl?.valueChanges\n                ?.pipe(takeUntilDestroyed(this._destroyRef))\n                .subscribe(() => {\n                    this._selectionService.setValue(this._cvaDirective.value);\n                });\n        }\n    }\n\n    /** @hidden */\n    private _listenToTreeItemDirectiveChanges(): void {\n        this._treeItemDirectives.changes\n            .pipe(\n                startWith(null),\n                filter(() => this.treeItemDef !== undefined),\n                takeUntilDestroyed(this._destroyRef)\n            )\n            .subscribe(() => {\n                this._allItems = this._treeItemDirectives.toArray().map((item) => item.treeItem!);\n                const flattenedItems = this._sortTreeItems(this._allItems);\n                this._setFlattenedItems(flattenedItems);\n            });\n    }\n\n    /** @hidden */\n    private _listenToTreeItemsChanges(): void {\n        this._projectedTreeItems.changes\n            .pipe(\n                startWith(null),\n                filter(() => !this.treeItemDef),\n                takeUntilDestroyed(this._destroyRef)\n            )\n            .subscribe(() => {\n                this._allItems = this._projectedTreeItems.toArray();\n                const flattenedItems = this._sortTreeItems(this._allItems);\n                this._setFlattenedItems(flattenedItems);\n            });\n    }\n\n    /** @hidden */\n    private _setFlattenedItems(items: BaseTreeItem[]): void {\n        this._sortedTreeItems = items;\n\n        const activeItem = this._focusKeyManager?.activeItem;\n        const newActiveItemIndex = items.findIndex((item) => item === activeItem);\n        this._focusKeyManager?.destroy();\n\n        this._focusKeyManager = new FocusKeyManager(items)\n            .withVerticalOrientation(true)\n            .skipPredicate((item) => !item.keyboardAccessible);\n\n        if (newActiveItemIndex > -1) {\n            this._focusKeyManager.setActiveItem(newActiveItemIndex);\n        }\n\n        this._selectionService.initialize(this._sortedTreeItems.map((item) => item.selectableListItem));\n\n        this._setupEventListeners();\n    }\n}\n","<ng-template #dataSourceRenderer>\n    <ng-template\n        [ngTemplateOutlet]=\"!_initialDataLoaded ? loadingRenderer : dataLoadedTpl\"\n        [ngTemplateOutletContext]=\"{ $implicit: 1 }\"\n    ></ng-template>\n    <ng-template #loadingRenderer let-level>\n        @for (_ of loadingRange; track $index) {\n            <div role=\"treeitem\" [attr.aria-level]=\"level\" class=\"fd-tree__item\">\n                <div class=\"fd-tree__item-container\">\n                    <div class=\"fd-tree__content\">\n                        <span class=\"fd-tree__text\">\n                            <fd-skeleton type=\"text\" width=\"100px\" textLines=\"1\"></fd-skeleton>\n                        </span>\n                    </div>\n                </div>\n            </div>\n        }\n    </ng-template>\n    <ng-template #dataLoadedTpl>\n        @if (_items.length > 0 && treeItemDef) {\n            @for (item of _items; track _trackFn($index, item)) {\n                <ng-template\n                    [ngTemplateOutlet]=\"renderer\"\n                    [ngTemplateOutletContext]=\"{ $implicit: item }\"\n                ></ng-template>\n            }\n        } @else {\n            <div role=\"treeitem\" aria-level=\"1\" class=\"fd-tree__item\">\n                <div class=\"fd-tree__item-container\">\n                    <div class=\"fd-tree__content\">\n                        <span class=\"fd-tree__text\">{{ ('coreTree.noData' | fdTranslate)() }}</span>\n                    </div>\n                </div>\n            </div>\n        }\n    </ng-template>\n    <ng-template #renderer let-item>\n        <ng-container fdTreeItem fdkSelectableItem #treeItemDirective=\"fdTreeItem\">\n            <ng-template\n                [ngTemplateOutlet]=\"item.renderer\"\n                [ngTemplateOutletContext]=\"{ $implicit: item }\"\n                [ngTemplateOutletInjector]=\"treeItemDirective.injector\"\n            ></ng-template>\n        </ng-container>\n        @if (\n            treeItemDirective.treeItem?.hasDsChildren &&\n            !!treeItemDirective.treeItem?.expanded &&\n            !treeItemDirective.treeItem?.childrenLoaded\n        ) {\n            <ng-template\n                [ngTemplateOutlet]=\"loadingRenderer\"\n                [ngTemplateOutletContext]=\"{ $implicit: item.level + 1 }\"\n            ></ng-template>\n        }\n        @if (treeItemDirective.treeItem?.children; as childItems) {\n            @if (childItems && childItems.length > 0 && !!treeItemDirective?.treeItem?.expanded) {\n                <div class=\"fd-tree\">\n                    @for (child of childItems; track _trackFn($index, child)) {\n                        <ng-template\n                            [ngTemplateOutlet]=\"renderer\"\n                            [ngTemplateOutletContext]=\"{ $implicit: child }\"\n                        ></ng-template>\n                    }\n                </div>\n            }\n        }\n    </ng-template>\n</ng-template>\n<ng-template #projectedContentRenderer>\n    <ng-content select=\"fd-tree-item\"></ng-content>\n</ng-template>\n<ng-template [ngTemplateOutlet]=\"treeItemDef ? dataSourceRenderer : projectedContentRenderer\"></ng-template>\n","import { NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ContentChildren,\n    DestroyRef,\n    ElementRef,\n    EventEmitter,\n    HostBinding,\n    Input,\n    OnDestroy,\n    OnInit,\n    Output,\n    QueryList,\n    ViewChild,\n    ViewEncapsulation,\n    inject,\n    input\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { DataSource, DataSourceDirective } from '@fundamental-ngx/cdk/data-source';\nimport {\n    ClickedDirective,\n    FDK_SELECTABLE_ITEM_PROVIDER,\n    HasElementRef,\n    Nullable,\n    SelectableItemDirective,\n    SelectableItemToken,\n    uuidv4\n} from '@fundamental-ngx/cdk/utils';\nimport { CheckboxComponent } from '@fundamental-ngx/core/checkbox';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { RadioButtonComponent } from '@fundamental-ngx/core/radio';\nimport { SkeletonComponent } from '@fundamental-ngx/core/skeleton';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { Observable, Subject, distinctUntilChanged, filter, startWith, switchMap } from 'rxjs';\nimport { FdTreeAcceptableDataSource, FdTreeDataSource } from '../../data-source/tree-data-source';\nimport { TreeItemDirective } from '../../directives/tree-item.directive';\nimport { BaseTreeItem } from '../../models/base-tree-item.class';\nimport { TreeItem, TreeItemState } from '../../models/tree-item';\nimport { TreeService } from '../../tree.service';\n\n@Component({\n    selector: 'fd-tree-item',\n    templateUrl: './tree-item.component.html',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    hostDirectives: [DataSourceDirective],\n    host: {\n        class: 'fd-tree__item',\n        role: 'presentation'\n    },\n    providers: [\n        {\n            provide: FDK_SELECTABLE_ITEM_PROVIDER,\n            useExisting: TreeItemComponent\n        },\n        {\n            provide: BaseTreeItem,\n            useExisting: TreeItemComponent\n        }\n    ],\n    imports: [\n        SelectableItemDirective,\n        NgClass,\n        NgStyle,\n        ClickedDirective,\n        NgTemplateOutlet,\n        IconComponent,\n        SkeletonComponent,\n        CheckboxComponent,\n        FormsModule,\n        RadioButtonComponent,\n        FdTranslatePipe\n    ]\n})\nexport class TreeItemComponent<T extends TreeItem = TreeItem, P = any>\n    extends BaseTreeItem<T, P>\n    implements Partial<SelectableItemToken<HTMLElement, P>>, OnInit, AfterViewInit, OnDestroy, HasElementRef\n{\n    /**\n     * Tree item value.\n     */\n    @Input()\n    value: P;\n    /**\n     * Tree item ID.\n     */\n    @Input()\n    id = uuidv4();\n\n    /**\n     * Tree item aria label.\n     */\n    @HostBinding('attr.aria-label')\n    @Input()\n    ariaLabel: string;\n\n    /**\n     * Tree item parent ID.\n     */\n    @Input()\n    set parentId(value: Nullable<string>) {\n        this._parentId = value;\n    }\n\n    get parentId(): Nullable<string> {\n        return this._parentId || this._parentTreeItem?.id;\n    }\n\n    /**\n     * Whether the tree item is navigatable.\n     */\n    @Input()\n    navigatable = false;\n\n    /**\n     * Tree item state.\n     */\n    @Input()\n    state: Nullable<TreeItemState>;\n\n    /**\n     * Tree item child nodes data source.\n     */\n    @Input()\n    childNodes: FdTreeAcceptableDataSource<T> = [];\n\n    /**\n     * Whether to wrap content.\n     */\n    @Input()\n    wrapContent = false;\n\n    /**\n     * Tree item level.\n     */\n    @Input()\n    @HostBinding('attr.aria-level')\n    set level(value: number) {\n        this._level = value;\n    }\n\n    get level(): number {\n        return this._level || (this._parentTreeItem !== null ? this._parentTreeItem.level + 1 : 1);\n    }\n\n    /**\n     * Whether the tree item is expanded.\n     */\n    @Input()\n    set expanded(value: boolean) {\n        if (value === this._expanded) {\n            return;\n        }\n        this._treeService.addExpandableItem(this.id, this.level, value);\n        this._expanded = value;\n\n        if (value) {\n            setTimeout(() => {\n                this._treeService.detectChanges.next();\n                this._dataSourceDirective.dataSourceProvider?.match();\n            });\n        } else {\n            this.children = [];\n            this.childrenLoaded = false;\n            this._treeService.detectChanges.next();\n        }\n\n        this._cdr.detectChanges();\n    }\n\n    get expanded(): boolean {\n        return this._expanded;\n    }\n\n    /**\n     * Event emitted when user clicks on tree item.\n     */\n    @Output()\n    readonly treeItemClick = new EventEmitter<MouseEvent | KeyboardEvent>();\n\n    /**\n     * Event emitted when `expanded` state changes.\n     */\n    @Output()\n    expandedChange = new EventEmitter<boolean>();\n\n    /** Tree item focusable container. */\n    @ViewChild('itemContainer', { read: ElementRef })\n    itemContainer: Nullable<ElementRef<HTMLElement>>;\n\n    /** Selectable item. */\n    @ViewChild(SelectableItemDirective)\n    selectableListItem: SelectableItemToken;\n\n    /** @hidden */\n    @ContentChildren(BaseTreeItem)\n    _projectedTreeItems: QueryList<BaseTreeItem>;\n\n    /**\n     * @hidden\n     * Selection state.\n     */\n    _selectionState = false;\n\n    /** @hidden */\n    children: T[] = [];\n\n    /** @hidden */\n    childrenLoaded = false;\n\n    /** @Hidden */\n    _containerTabIndex = 0;\n\n    /** @hidden */\n    _setSize: number;\n    /** @hidden */\n    _currentPosition: number;\n\n    /** @hidden */\n    _totalChildrenLoaded = false;\n\n    /** Clicked behavior implementation. */\n    clicked: Observable<MouseEvent | KeyboardEvent>;\n\n    /** @hidden */\n    readonly elementRef = inject(ElementRef);\n\n    /** @hidden */\n    readonly _treeService = inject(TreeService);\n\n    /** Whether the tree item has any type of child nodes. */\n    get hasChildren(): boolean {\n        return !!this.childNodes || this.hasProjectedChildren;\n    }\n\n    /** Whether the tree item has content-projected child nodes. */\n    get hasProjectedChildren(): boolean {\n        return this._projectedTreeItems && this._projectedTreeItems.length > 0;\n    }\n\n    /** Whether the tree item has data source children. */\n    get hasDsChildren(): boolean {\n        return this._dsChildrenNumber > 0;\n    }\n    /** Whether the item is accessible via keyboard. */\n    get keyboardAccessible(): boolean {\n        return this._parentTreeItem === null\n            ? true\n            : this._parentTreeItem.keyboardAccessible && this._parentTreeItem.expanded;\n    }\n\n    /**\n     * Custom background color\n     */\n    backgroundColor = input<string>();\n\n    /**\n     * Custom styles\n     */\n    customStyles = input<object>();\n\n    /** @hidden */\n    private _parentId: Nullable<string>;\n\n    /** @hidden */\n    private _level: number;\n\n    /** @hidden */\n    private _expanded = false;\n    /** @hidden */\n    private _dsChildrenNumber = 0;\n\n    /** @hidden */\n    private readonly _clicked$ = new Subject<MouseEvent | KeyboardEvent>();\n\n    /** @hidden */\n    private readonly _treeItemDir = inject<TreeItemDirective<T, P>>(TreeItemDirective, {\n        optional: true\n    });\n\n    /** @hidden */\n    private readonly _dataSourceDirective = inject<DataSourceDirective<T, FdTreeDataSource<T>>>(DataSourceDirective);\n\n    /** @hidden */\n    private readonly _cdr = inject(ChangeDetectorRef);\n\n    /** @hidden */\n    private readonly _destroyRef = inject(DestroyRef);\n\n    /** @hidden */\n    private readonly _parentTreeItem = inject(TreeItemComponent, {\n        optional: true,\n        skipSelf: true\n    });\n\n    /** @hidden */\n    constructor() {\n        super();\n        this._treeItemDir?.setTreeItem(this);\n        this.clicked = this._clicked$.asObservable();\n    }\n\n    /** @hidden */\n    ngOnInit(): void {\n        this._dataSourceDirective.dataSource = this.childNodes as DataSource<T, FdTreeDataSource<T>>;\n        this._treeService.addExpandableItem(this.id, this.level, this.expanded);\n\n        this._dataSourceDirective.dataSourceProvider\n            ?.getTotalItems()\n            .pipe(takeUntilDestroyed(this._destroyRef))\n            .subscribe((totalItems) => {\n                this._dsChildrenNumber = totalItems;\n                this._totalChildrenLoaded = true;\n                this._cdr.detectChanges();\n            });\n\n        this._dataSourceDirective.dataSourceProvider?.dataReceived\n            .pipe(\n                filter((received) => received),\n                switchMap(() => this._dataSourceDirective.dataChanged$),\n                takeUntilDestroyed(this._destroyRef)\n            )\n            .subscribe((data) => {\n                this.children = this._treeService.normalizeTreeItems(data, this.id, this.level + 1) as T[];\n                this.childrenLoaded = true;\n                setTimeout(() => {\n                    this._treeService.detectChanges.next();\n                    this._cdr.detectChanges();\n                });\n            });\n    }\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        this._projectedTreeItems.changes\n            .pipe(startWith(null), distinctUntilChanged(), takeUntilDestroyed(this._destroyRef))\n            .subscribe(() => {\n                this._cdr.detectChanges();\n                this._projectedTreeItems.forEach((treeItem, index) => {\n                    treeItem.setPosition(this._projectedTreeItems.length, index + 1);\n                });\n            });\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this._treeService.removeExpandableItem(this.id, this.level!);\n    }\n\n    /**\n     * Sets position of the current item in the set.\n     * @param totalItems Total items amount in the set.\n     * @param currentIndex Current item position in the set.\n     */\n    setPosition(totalItems: number, currentIndex: number): void {\n        this._setSize = totalItems;\n        this._currentPosition = currentIndex;\n    }\n\n    /** Method to focus on the tree item. */\n    focus(): void {\n        this.itemContainer?.nativeElement.focus();\n    }\n\n    /** Method for setting the focusable tabindex. */\n    setContainerTabIndex(value: number): void {\n        this._containerTabIndex = value;\n        this._cdr.markForCheck();\n    }\n\n    /** @hidden */\n    _toggleExpandState(event: MouseEvent): void {\n        // Do not bubble up to selection change event.\n        event.stopImmediatePropagation();\n        this.expanded = !this.expanded;\n        this.expandedChange.emit(this.expanded);\n        this.focus();\n    }\n\n    /** @hidden */\n    _onClick(event: MouseEvent | KeyboardEvent): void {\n        event.stopImmediatePropagation();\n\n        this._clicked$.next(event);\n        this.treeItemClick.emit(event);\n    }\n\n    /** @hidden */\n    _setSelected(selected: boolean): void {\n        this._selectionState = selected;\n    }\n}\n","<div\n    class=\"fd-tree__item-container\"\n    [attr.tabindex]=\"_containerTabIndex\"\n    (fdkClicked)=\"_onClick($event)\"\n    fdkSelectableItem\n    (selected)=\"_setSelected($event)\"\n    [value]=\"value\"\n    [attr.aria-haspopup]=\"children.length > 0 || hasProjectedChildren\"\n    [attr.aria-expanded]=\"expanded\"\n    [attr.aria-setsize]=\"_setSize\"\n    [attr.aria-posinset]=\"_currentPosition\"\n    role=\"treeitem\"\n    [attr.aria-level]=\"level\"\n    [style.background-color]=\"backgroundColor()\"\n    [ngStyle]=\"customStyles()\"\n    #itemContainer\n    [ngClass]=\"[\n        state ? 'has-highlight-indicator has-highlight-indicator--' + state : '',\n        navigatable ? 'fd-tree__item-container--active' : '',\n        wrapContent ? 'fd-tree__content--wrap' : ''\n    ]\"\n>\n    @if (_treeService.selectionMode().placement === 'left') {\n        <ng-template [ngTemplateOutlet]=\"selection\"></ng-template>\n    }\n    @if (hasChildren) {\n        @if (hasDsChildren || hasProjectedChildren) {\n            <span\n                (click)=\"_toggleExpandState($event)\"\n                class=\"fd-tree__expander\"\n                aria-hidden=\"true\"\n                role=\"presentation\"\n                [attr.aria-label]=\"((expanded ? 'coreTree.collapse' : 'coreTree.expand') | fdTranslate)()\"\n                [class.is-expanded]=\"expanded\"\n            >\n                <fd-icon\n                    class=\"fd-tree__icon\"\n                    [glyph]=\"expanded ? 'navigation-down-arrow' : 'navigation-right-arrow'\"\n                ></fd-icon>\n            </span>\n        }\n        @if (!_totalChildrenLoaded) {\n            <div class=\"fd-tree__expander fd-tree__expander--loading\">\n                <fd-skeleton type=\"rectangle\" width=\"1rem\" height=\"1rem\"></fd-skeleton>\n            </div>\n        }\n        @if (_treeService.selectionMode().placement === 'afterExpand') {\n            <ng-template [ngTemplateOutlet]=\"selection\"></ng-template>\n        }\n    }\n    <div class=\"fd-tree__content\">\n        <ng-content select=\"[fdTreeItemIcon]\"></ng-content>\n        <ng-content select=\"[fdTreeItemText]\"></ng-content>\n    </div>\n    <ng-content select=\"[fdTreeItemButton]\"></ng-content>\n    @if (_treeService.selectionMode().placement === 'right') {\n        <ng-template [ngTemplateOutlet]=\"selection\"></ng-template>\n    }\n    @if (navigatable && _treeService.navigationIndicator()) {\n        <fd-icon glyph=\"slim-arrow-right\" class=\"fd-tree__icon fd-tree__icon--navigation\"></fd-icon>\n    }\n</div>\n@if (hasProjectedChildren && expanded) {\n    <div class=\"fd-tree\">\n        <ng-content select=\"fd-tree-item\"></ng-content>\n    </div>\n}\n<ng-template #selection>\n    <div class=\"fd-form-item\">\n        @if (_treeService.selectionMode().mode === 'multiple') {\n            <fd-checkbox\n                [(ngModel)]=\"_selectionState\"\n                [ngModelOptions]=\"{ standalone: true }\"\n                [standalone]=\"true\"\n                tabIndexValue=\"-1\"\n            ></fd-checkbox>\n        }\n        @if (_treeService.selectionMode().mode === 'single') {\n            <fd-radio-button\n                [(ngModel)]=\"_selectionState\"\n                [ngModelOptions]=\"{ standalone: true }\"\n                [selectedValue]=\"_selectionState\"\n                [value]=\"true\"\n                tabIndex=\"-1\"\n                [standalone]=\"true\"\n                tabIndexValue=\"-1\"\n            ></fd-radio-button>\n        }\n    </div>\n</ng-template>\n","import { Directive } from '@angular/core';\n\n@Directive({\n    selector: '[fdTreeItemButton]',\n    host: {\n        class: 'fd-tree__button'\n    },\n    standalone: true\n})\nexport class TreeItemButtonDirective {}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n    selector: '[fdTreeItemIcon]',\n    host: {\n        class: 'fd-tree__icon'\n    },\n    standalone: true\n})\nexport class TreeItemIconDirective {\n    /** @hidden */\n    @HostBinding('attr.role')\n    protected readonly _role = 'presentation';\n\n    /** @hidden */\n    @HostBinding('attr.aria-hidden')\n    protected readonly _ariaHidden = true;\n}\n\n@Directive({\n    selector: '[fdTreeItemText]',\n    host: {\n        class: 'fd-tree__text'\n    },\n    standalone: true\n})\nexport class TreeItemTextDirective {}\n","import { NgModule } from '@angular/core';\nimport { TreeItemComponent } from './components/tree-item/tree-item.component';\nimport { TreeItemButtonDirective } from './directives/tree-item-button.directive';\nimport { TreeItemDefDirective } from './directives/tree-item-def.directive';\nimport { TreeItemIconDirective, TreeItemTextDirective } from './directives/tree-item-icon.directive';\nimport { TreeItemDirective } from './directives/tree-item.directive';\nimport { TreeComponent } from './tree.component';\n\nconst components = [\n    TreeComponent,\n    TreeItemComponent,\n    TreeItemDefDirective,\n    TreeItemDirective,\n    TreeItemIconDirective,\n    TreeItemTextDirective,\n    TreeItemButtonDirective\n];\n\n/**\n * @deprecated\n *\n * Use direct imports of `TreeComponent`,\n        `TreeItemComponent`,\n        `TreeItemDefDirective`,\n        `TreeItemDirective`,\n        `TreeItemIconDirective`,\n        `TreeItemTextDirective`,\n        `TreeItemButtonDirective`\n */\n@NgModule({\n    imports: [...components],\n    exports: [...components]\n})\nexport class TreeModule {}\n","import { InjectionToken } from '@angular/core';\n\nexport const FD_TREE_ITEM = new InjectionToken('FdTreeItem');\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2"],"mappings":"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"}