{"version":3,"file":"uipath-angular-components-ui-tree-select.mjs","sources":["../../../projects/angular/components/ui-tree-select/src/utils/tree.utils.ts","../../../projects/angular/components/ui-tree-select/src/ui-tree-item/ui-tree-item.component.ts","../../../projects/angular/components/ui-tree-select/src/ui-tree-item/ui-tree-item.component.html","../../../projects/angular/components/ui-tree-select/src/ui-tree-select.component.ts","../../../projects/angular/components/ui-tree-select/src/ui-tree-select.component.html","../../../projects/angular/components/ui-tree-select/src/uipath-angular-components-ui-tree-select.ts"],"sourcesContent":["import { FlatTreeControl } from '@angular/cdk/tree';\nimport { MatTreeFlattener } from '@angular/material/tree';\nimport {\n    IFlatNodeObject, ITreeNode,\n} from '../models/tree.models';\n\nexport class TreeUtils {\n    static treeFlattener = new MatTreeFlattener<ITreeNode, IFlatNodeObject, string | number>(\n        this.nodeTransformer,\n        this.getNodeLevel,\n        this.getIsNodeExpandable,\n        this.getNodeChildren,\n    );\n\n    static nodeTransformer(node: ITreeNode, level: number) {\n        return {\n            key: node.key,\n            name: node.name,\n            data: node.data,\n            level,\n            hasChildren: !!node.children,\n        };\n    }\n\n    static nodeBackTransformer(node: IFlatNodeObject): ITreeNode {\n        return {\n            key: node.key,\n            name: node.name,\n            data: node.data,\n        };\n    }\n\n    static getNodeLevel({ level }: IFlatNodeObject) {\n        return level;\n    }\n\n    static getIsNodeExpandable({ hasChildren }: IFlatNodeObject) {\n        return hasChildren;\n    }\n\n    static getNodeChildren({ children }: ITreeNode) {\n        return children;\n    }\n\n    static getNodeByKey(key: string, level: number, treeControl: FlatTreeControl<IFlatNodeObject, string | number>) {\n        const node = treeControl.dataNodes.find(n => n.key === key);\n        if (!node || node.level !== level) {\n            throw new Error(`Node with key ${key} not found on level ${level} in the data array`);\n        }\n        return node;\n    }\n\n    static getParentNode(activeIndex: number, level: number, dataNodes: IFlatNodeObject[]) {\n        for (let i = activeIndex; i >= 0; i--) {\n            if (dataNodes[i].level < level && dataNodes[i].hasChildren) {\n                return dataNodes[i];\n            }\n        }\n        return null;\n    }\n\n}\n\ntype TreeActionOptions = {\n    emitEvent: boolean;\n};\n\nexport const TREE_ACTION_DEFAULTS: TreeActionOptions = {\n    emitEvent: true,\n};\n","import { FocusableOption } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    EventEmitter,\n    forwardRef,\n    Inject,\n    Input,\n    Output,\n    ViewEncapsulation,\n} from '@angular/core';\nimport { MatListModule } from '@angular/material/list';\n\nimport { IFlatNodeObject } from '../models/tree.models';\n\nconst LIST_ITEM_SELECTOR = '.mat-mdc-list-item';\n\n@Component({\n  standalone: true,\n  imports: [\n    CommonModule,\n    MatListModule,\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  selector: 'ui-tree-item[node]',\n  templateUrl: './ui-tree-item.component.html',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class UiTreeItemComponent implements FocusableOption {\n  @Input()\n  node!: IFlatNodeObject;\n\n  @Input()\n  isSelected = false;\n\n  @Input()\n  isExpanded = false;\n\n  @Output()\n  expanded = new EventEmitter<void>();\n\n  @Output()\n  selected = new EventEmitter<void>();\n\n  constructor(\n    @Inject(forwardRef(() => ElementRef))\n    private readonly _el: ElementRef,\n  ) { }\n\n  click() {\n    this.selected.emit();\n  }\n\n  dblclick() {\n    this.selected.emit();\n    this.expanded.emit();\n  }\n\n  focus() {\n    this._el.nativeElement.querySelector(LIST_ITEM_SELECTOR).focus();\n  }\n\n  getBoundingClientRect() {\n    return this._el.nativeElement.querySelector(LIST_ITEM_SELECTOR).getBoundingClientRect();\n  }\n}\n","<mat-list-item (click)=\"click()\"\n               (dblclick)=\"dblclick()\"\n               [class.selected]=\"isSelected\"\n               [ngClass]=\"'node-level-' + node.level\"\n               [class.node-type-leaf]=\"!node.hasChildren\"\n               [attr.aria-level]=\"node.level\"\n               [attr.aria-expanded]=\"isExpanded\"\n               [attr.aria-selected]=\"isSelected\"\n               matRipple\n               tabindex=\"-1\"\n               role=\"treeitem\"\n               class=\"node tree-item-container\">\n  <ng-content></ng-content>\n</mat-list-item>\n","import {\n    CdkTreeModule, FlatTreeControl,\n} from '@angular/cdk/tree';\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ContentChild,\n    EventEmitter,\n    HostBinding,\n    Input,\n    OnDestroy,\n    Output,\n    QueryList,\n    TrackByFunction,\n    ViewChild,\n    ViewChildren,\n    ViewEncapsulation,\n} from '@angular/core';\n\nimport { MatTreeFlatDataSource } from '@angular/material/tree';\n\nimport { FocusKeyManager } from '@angular/cdk/a11y';\nimport { MatListModule } from '@angular/material/list';\nimport { CommonModule } from '@angular/common';\nimport { UiContentLoaderModule } from '@uipath/angular/directives/ui-content-loader';\nimport {\n    CdkVirtualScrollViewport, ScrollingModule,\n} from '@angular/cdk/scrolling';\nimport {\n    BehaviorSubject, EMPTY, map, Subject, switchMap, take, takeUntil, tap,\n} from 'rxjs';\nimport {\n    ITreeNode, IFlatNodeObject,\n} from './models/tree.models';\nimport {\n    TreeUtils, TREE_ACTION_DEFAULTS,\n} from './utils/tree.utils';\nimport { UiTreeItemComponent } from './ui-tree-item/ui-tree-item.component';\n\n@Component({\n    standalone: true,\n    imports: [\n        CommonModule,\n        MatListModule,\n\n        UiTreeItemComponent,\n        UiContentLoaderModule,\n\n        CdkTreeModule,\n        ScrollingModule,\n    ],\n    selector: 'ui-tree-select',\n    templateUrl: './ui-tree-select.component.html',\n    styleUrls: ['./ui-tree-select.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n})\nexport class UiTreeSelectComponent implements AfterViewInit, OnDestroy {\n\n    @ViewChildren(UiTreeItemComponent)\n    items!: QueryList<UiTreeItemComponent>;\n\n    @ContentChild('headerTemplate')\n    headerTemplate?: any;\n\n    @ContentChild('itemTemplate')\n    itemTemplate?: any;\n\n    @Input()\n    itemSize = 26;\n\n    @Input()\n    expandOnSelect = false;\n\n    @Input()\n    loading = false;\n\n    /**\n     * Path of keys key to the node that will be selected by default. The node must be present in the data array\n     * If the node is a lower level node, the parent nodes must be present in the data array and then they will be expanded automatically\n     */\n    @Input()\n    set initialSelection(value: string[] | null) {\n        this._initialSelection = value ?? [];\n        if (this._initialSelection.length > 0) {\n            this._selectInitialNode();\n        }\n    }\n\n    @HostBinding('style.--ui-tree-select-item-padding')\n    @Input()\n    itemPadding = '20px';\n\n    /**\n     * Emits an array of the selected nodes (keep in mind they are clones of the original nodes)\n     */\n    @Output()\n    selected = new EventEmitter<ITreeNode[]>();\n\n    /**\n     * Emits a clone of the original node when it's expanded\n     */\n    @Output()\n    expanded = new EventEmitter<ITreeNode>();\n\n    /**\n     * Emits a clone of the original node when it's collapsed\n     */\n    @Output()\n    collapsed = new EventEmitter<ITreeNode>();\n\n    /**\n     * An array of nodes. Keep in mind they will be flattened when rendered in the tree\n     */\n    @Input()\n    set data(value: ITreeNode[] | null) {\n        this._dataSource.data = value ?? [];\n    }\n\n    get dataSource() {\n        return this._dataSource;\n    }\n\n    @ViewChild(CdkVirtualScrollViewport)\n    viewport?: CdkVirtualScrollViewport;\n\n    currentSelectedNodes = new Map<string, IFlatNodeObject>();\n\n    private _keyManager!: FocusKeyManager<UiTreeItemComponent>;\n    private _treeControl = new FlatTreeControl<IFlatNodeObject, string | number>(TreeUtils.getNodeLevel, TreeUtils.getIsNodeExpandable, {\n        trackBy: (node) => node.key,\n    });\n    private _dataSource: MatTreeFlatDataSource<ITreeNode, IFlatNodeObject, string | number> = new MatTreeFlatDataSource(\n        this._treeControl,\n        TreeUtils.treeFlattener,\n    );\n\n    private _initialSelection: string[] = [];\n\n    private _connectedData$ = new BehaviorSubject<IFlatNodeObject[]>([]);\n    private _selectNode$ = new Subject<IFlatNodeObject>();\n    private _destroyed$ = new Subject<void>();\n\n    constructor(private _cd: ChangeDetectorRef) {\n        // eslint-disable-next-line rxjs/finnish\n        this.dataSource.connect({ viewChange: EMPTY }).pipe(\n            takeUntil(this._destroyed$),\n        ).subscribe(allData => {\n            this._connectedData$.next(allData);\n        });\n\n        this._selectNode$.pipe(\n            switchMap((node) => this._connectedData$.pipe(\n                take(1),\n                map(allNodes => ({\n                    node,\n                    allNodes,\n                })),\n            )),\n            tap(({ node, allNodes }) => {\n                const nodeIndex = allNodes.findIndex(n => n.key === node.key);\n                if (!this._isNodeInViewport(node)) {\n                    this.viewport?.scrollToIndex(nodeIndex);\n                }\n            }),\n            takeUntil(this._destroyed$),\n        ).subscribe(({ node }) => {\n            const nodeIndex = this._convertKeyToRenderedItemsIndex(node.key);\n            queueMicrotask(() => {\n                this._keyManager.setActiveItem(nodeIndex);\n                this._cd.detectChanges();\n            });\n        });\n    }\n\n    ngAfterViewInit() {\n        this._keyManager = new FocusKeyManager(this.items);\n        if (this._initialSelection.length) {\n            this._selectInitialNode();\n        }\n    }\n\n    ngOnDestroy() {\n        this._destroyed$.next();\n        this._destroyed$.complete();\n    }\n\n    onKeydown(event: KeyboardEvent) {\n        this._preventDefault(event);\n        const activeNode = this._keyManager.activeItem?.node;\n        if (!activeNode) {\n            this._keyManager.onKeydown(event);\n            return;\n        }\n\n        const wasHandled = this._customKeydownHandle(event.key, activeNode);\n        if (!wasHandled) {\n            this._keyManager.onKeydown(event);\n        }\n    }\n\n    isExpanded(node: IFlatNodeObject) {\n        return this._treeControl.isExpanded(node);\n    }\n\n    isSelected(node: IFlatNodeObject) {\n        return this.currentSelectedNodes.has(node.key);\n    }\n\n    trackById(_idx: number, node: IFlatNodeObject): TrackByFunction<IFlatNodeObject> {\n        return node.key as any;\n    }\n\n    select(node: IFlatNodeObject, opts = TREE_ACTION_DEFAULTS) {\n        this._selectNode$.next(node);\n        // NOTE: the `clear` call can be removed to implement multi-select\n        this.currentSelectedNodes.clear();\n\n        this.currentSelectedNodes.set(node.key, node);\n        const selection = Array.from(this.currentSelectedNodes.values())\n            .map(v => TreeUtils.nodeBackTransformer(v))\n            .filter(Boolean) as ITreeNode[];\n\n        if (opts.emitEvent) {\n            this.selected.emit(selection);\n        }\n        if (this.expandOnSelect) {\n            this.expand(node, { emitEvent: true });\n        }\n    }\n\n    expand(node: IFlatNodeObject, opts = TREE_ACTION_DEFAULTS) {\n        if (this._treeControl.isExpanded(node) || !node.hasChildren) {\n            return;\n        }\n        this._treeControl.expand(node);\n        if (opts.emitEvent) {\n            this.expanded.emit(node);\n        }\n    }\n\n    collapse(node: IFlatNodeObject) {\n        if (!this._treeControl.isExpanded(node) || !node.hasChildren) {\n            return;\n        }\n\n        this._treeControl.collapseDescendants(node);\n        this._treeControl.collapse(node);\n        this.collapsed.emit(node);\n    }\n\n    toggle(node: IFlatNodeObject) {\n        return ($event: MouseEvent) => {\n            $event.stopPropagation();\n            if (this._treeControl.isExpanded(node)) {\n                this.collapse(node);\n            } else {\n                this.expand(node);\n            }\n        };\n    }\n\n    collapseAll() {\n        this._treeControl.collapseAll();\n    }\n\n    private _preventDefault(event: KeyboardEvent) {\n        if (event.key === ' ') {\n            event.preventDefault();\n        }\n    }\n\n    private _customKeydownHandle(eventKey: string, activeNode: IFlatNodeObject) {\n        let wasHandled = false;\n        if (['Enter', ' '].includes(eventKey)) {\n            this.select(activeNode);\n            wasHandled = true;\n        }\n        if (['ArrowRight', 'Right'].includes(eventKey)) {\n            this.expand(activeNode);\n            wasHandled = true;\n        }\n        if (['ArrowLeft', 'Left'].includes(eventKey)) {\n            this._handleArrowLeft(activeNode);\n            wasHandled = true;\n        }\n        return wasHandled;\n    }\n\n    private _selectInitialNode() {\n        this._initialSelection.forEach((key, i) => {\n            const node = TreeUtils.getNodeByKey(key, i, this._treeControl);\n\n            if (i < this._initialSelection.length - 1) {\n                this.expand(node, { emitEvent: false });\n                // generally expand doesn't need cd, but in this case we want it\n                // in order to have the children visible for selection or further expansion\n                this._cd.detectChanges();\n            } else {\n                this.select(node, { emitEvent: false });\n            }\n        });\n    }\n\n    private _handleArrowLeft(activeNode: IFlatNodeObject) {\n        if (activeNode.hasChildren && this._treeControl.isExpanded(activeNode)) {\n            this.collapse(activeNode);\n            return;\n        }\n        const activeIndex = this._treeControl.dataNodes.findIndex(n => n.key === activeNode.key);\n        const parent = TreeUtils.getParentNode(activeIndex, activeNode.level, this._treeControl.dataNodes);\n        if (activeNode.level > 0 && parent) {\n            const parentIndex = this._treeControl.dataNodes.findIndex(n => n.key === parent.key);\n            this._keyManager.setActiveItem(parentIndex);\n            this.select(parent);\n        } else {\n            this.collapse(activeNode);\n        }\n    }\n\n    private _isNodeInViewport(node: IFlatNodeObject) {\n        const viewport = this.viewport;\n        if (!viewport) {\n            return false;\n        }\n        const viewportRange = viewport.getRenderedRange();\n        const nodeIndex = this._connectedData$.value.findIndex(n => n.key === node.key);\n        const isInRenderedRange = nodeIndex >= viewportRange.start && nodeIndex <= viewportRange.end;\n        if (!isInRenderedRange) {\n            return false;\n        }\n        const viewportBoundingRect = viewport.elementRef.nativeElement.getBoundingClientRect();\n        const nodeBoundingRect = this.items.find(n => n.node.key === node.key)?.getBoundingClientRect();\n        if (!nodeBoundingRect) {\n            return false;\n        }\n        return ((viewportBoundingRect.top + viewportBoundingRect.height) - nodeBoundingRect.bottom) > 0;\n    }\n\n    /**\n     * The index of an item in the rendered items array (or the list manager items)\n     * is different than the index of an item in the initial data array\n     *\n     * @param key the key of a node\n     * @returns the index of the node in the rendered items array\n     */\n    private _convertKeyToRenderedItemsIndex(key: string) {\n        return this.items.toArray().findIndex(i => i.node.key === key);\n    }\n}\n\n","<div cdkVirtualScrollingElement\n     class=\"ui-tree-select-container\">\n    <ng-template *ngIf=\"headerTemplate\"\n                 [ngTemplateOutlet]=\"headerTemplate\">\n    </ng-template>\n\n    <mat-list role=\"tree\"\n              class=\"tree-container\">\n        <cdk-virtual-scroll-viewport *uiContentLoading=\"loading\"\n                                 (keydown)=\"onKeydown($event)\"\n                                 [itemSize]=\"itemSize\"\n                                 class=\"virtual-scroll-container\"\n                                 tabindex=\"0\">\n            <ng-container *ngIf=\"dataSource.data.length == 0\">\n                <ng-content select=\"[noDataMessage]\"></ng-content>\n            </ng-container>\n            <ng-container *cdkVirtualFor=\"let node of dataSource; let i = index; trackBy: trackById;\">\n                <ui-tree-item (selected)=\"select(node)\"\n                              (collapsed)=\"collapse(node)\"\n                              (expanded)=\"expand(node)\"\n                              [node]=\"node\"\n                              [attr.nodekey]=\"node.key\"\n                              [isExpanded]=\"isExpanded(node)\"\n                              [isSelected]=\"isSelected(node)\">\n                    <ng-template *ngIf=\"itemTemplate\"\n                                 [ngTemplateOutlet]=\"itemTemplate\"\n                                 [ngTemplateOutletContext]=\"{\n                                    node: node,\n                                    expanded: isExpanded(node),\n                                    selected: isSelected(node),\n                                    toggle: toggle(node)\n                                }\">\n                    </ng-template>\n                </ui-tree-item>\n            </ng-container>\n        </cdk-virtual-scroll-viewport>\n    </mat-list>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}