{"version":3,"file":"usitsdasdesign-dds-ng-tree.mjs","sources":["../../src/app/dds/tree/constants.ts","../../src/app/dds/tree/tree.token.ts","../../src/app/dds/tree/typings.ts","../../src/app/dds/tree/tree-node/tree-node.component.ts","../../src/app/dds/tree/tree-node/tree-node.component.html","../../src/app/dds/tree/tree/tree.component.ts","../../src/app/dds/tree/tree/tree.component.html","../../src/app/dds/tree/tree.module.ts","../../src/app/dds/tree/usitsdasdesign-dds-ng-tree.ts"],"sourcesContent":["import { ThemeClassesMap, ThemeMapEnum } from '@usitsdasdesign/dds-ng/core/theme';\nimport { Size } from '@usitsdasdesign/dds-ng/shared';\n\nexport const themeClassesMap: ThemeClassesMap = {\n  [ThemeMapEnum.Size]: {\n    [Size.sm]: 'dds-tree_sm',\n    [Size.lg]: 'dds-tree_lg',\n  },\n};\n\nexport const DEFAULT_ARROW_ICON = 'dds-icon_arrow-down';\n","import { InjectionToken } from '@angular/core';\n\nexport const TREE = new InjectionToken('Tree Component');\n","import { Size, Themes } from '@usitsdasdesign/dds-ng/shared';\nimport { TreeNodeComponent } from './tree-node/tree-node.component';\n\nexport interface TreeNodeOptions {\n  isExpanded?: boolean;\n  isActive?: boolean;\n  icon?: string;\n  iconArrow?: string;\n  customClass?: string;\n  isChecked?: boolean;\n  disabled?: boolean;\n  label?: string;\n  children?: TreeNodeOptions[];\n  [key: string]: any;\n}\n\nexport interface TreeList {\n  parent: TreeNodeComponent;\n  children: TreeNodeComponent[];\n}\n\nexport interface TreeOptions {\n  theme?: Themes | string;\n  size?: Size | string;\n  customClass?: string;\n  isCheckboxVisible?: boolean;\n  isInverse?: boolean;\n  items?: TreeNodeOptions[];\n  isRelatedWithChildren?: boolean;\n}\n\nexport enum TreeNodeOffset {\n  sm = 8,\n  md = 12,\n  lg = 16,\n}\n","import { CommonModule } from '@angular/common';\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Inject,\n  Input,\n  OnChanges,\n  Optional,\n  Output,\n  QueryList,\n  Renderer2,\n  SimpleChanges,\n  ViewChild,\n  ViewChildren,\n} from '@angular/core';\nimport { CheckboxComponent } from '@usitsdasdesign/dds-ng/checkbox';\nimport { FocusHandlerModule } from '@usitsdasdesign/dds-ng/core/focus-handler';\nimport { ThemeModule } from '@usitsdasdesign/dds-ng/core/theme';\nimport { AdditionalClass, KeyCodes, Size } from '@usitsdasdesign/dds-ng/shared';\nimport { DEFAULT_ARROW_ICON } from '../constants';\nimport { TREE } from '../tree.token';\nimport type { TreeComponent } from '../tree/tree.component';\nimport { TreeList, TreeNodeOffset, TreeNodeOptions } from '../typings';\n\n@Component({\n  selector: 'dds-tree-node',\n  templateUrl: './tree-node.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [CommonModule, FocusHandlerModule, ThemeModule, CheckboxComponent],\n})\nexport class TreeNodeComponent implements OnChanges, AfterViewInit {\n  // Binds the disabled class to the host element.\n  @HostBinding(`class.${AdditionalClass.disabled}`) @Input() disabled: boolean | undefined;\n\n  // The label of the tree node.\n  @Input() label: string | undefined;\n\n  // The icon of the tree node.\n  @Input() icon: string | undefined;\n\n  // The arrow icon of the tree node.\n  @Input() iconArrow: string | undefined = DEFAULT_ARROW_ICON;\n\n  // Custom CSS class for the tree node.\n  @Input() customClass: string | undefined;\n\n  // Indicates whether the tree node is expanded.\n  @Input() isExpanded: boolean | undefined;\n\n  // Indicates whether the tree node is checked.\n  @Input() isChecked: boolean | undefined;\n\n  // The options for the tree node.\n  @Input() item: TreeNodeOptions | undefined;\n\n  // The child nodes of the tree node.\n  @Input() children: TreeNodeOptions[] | undefined;\n\n  // Sets the active state of the tree node.\n  @Input() set isActive(value: boolean | undefined) {\n    if (value) {\n      this._isActive = value;\n      this.tree?.selectTreeNode(this);\n    }\n  }\n\n  // Gets the active state of the tree node.\n  get isActive(): boolean | undefined {\n    return this._isActive;\n  }\n\n  // Event emitted when the tree node changes.\n  @Output() treeNodeChanged: EventEmitter<boolean> = new EventEmitter();\n\n  // Event emitted when the selected node changes.\n  @Output() selectedNodeChanged = new EventEmitter<TreeNodeComponent>();\n\n  // Query list of child tree node components.\n  @ContentChildren(TreeNodeComponent) treeChildrenComponent: QueryList<TreeNodeComponent>;\n\n  // Reference to the select button element.\n  @ViewChild('selectBtn') selectBtn: ElementRef<HTMLButtonElement>;\n\n  // Reference to the tree node item element.\n  @ViewChild('treeNodeItem') treeNodeItem: ElementRef<HTMLElement>;\n\n  // Reference to the checkbox component.\n  @ViewChild('checkbox') checkbox: CheckboxComponent;\n\n  // Query list of view child tree node components.\n  @ViewChildren(TreeNodeComponent) treeViewChildren: QueryList<TreeNodeComponent>;\n\n  // Indicates whether the checkbox is in an indeterminate state.\n  public indeterminateStatus: boolean;\n\n  // The tree list structure.\n  public treeList: TreeList = {\n    parent: null,\n    children: [],\n  };\n\n  // Indicates whether the tree node is active.\n  public activeStatus: boolean;\n\n  // The offset of the tree node.\n  public nodeOffset: string;\n\n  // The offset of the checkbox.\n  public checkboxOffset: string;\n\n  // Indicates whether the tree node is opened.\n  public isOpened: boolean;\n\n  // Indicates whether the tree node is focused.\n  public isFocused: boolean;\n\n  // The tabindex of the tree node.\n  public tabindex = -1;\n\n  private offset = 0;\n  private _isActive: boolean;\n\n  @HostListener('click', ['$event'])\n  public onClick(event: Event): void {\n    event.stopPropagation();\n  }\n\n  // Gets whether the tree node is the active node.\n  get isActiveNode(): boolean {\n    return this.tree.selectedNode === this;\n  }\n\n  // Gets whether the icon is visible.\n  get isIconVisible(): boolean {\n    return this.icon && !this.tree.isCheckboxVisible;\n  }\n\n  // Gets the checked status of the tree node.\n  private get checkedStatus(): boolean {\n    return this.activeStatus;\n  }\n\n  // Sets the checked status of the tree node.\n  private set checkedStatus(value: boolean) {\n    this.activeStatus = value;\n    this.isChecked = value;\n    this.cdr.markForCheck();\n  }\n\n  constructor(@Optional() @Inject(TREE) public tree: TreeComponent, public cdr: ChangeDetectorRef, private renderer: Renderer2) { }\n\n  public ngOnChanges(changes: SimpleChanges): void {\n    if (changes.isChecked) {\n      this.setCheckboxStates();\n      this.setAfterChanges();\n    }\n\n    if (changes.isActive || changes.isExpanded || changes.isChecked || changes.item) {\n      this.updateItem();\n    }\n  }\n\n  public ngAfterViewInit(): void {\n    this.genTreeList();\n\n    if (this.activeStatus && this.tree.isRelatedWithChildren) {\n      this.setValueChildren(this.treeList.children, true);\n    }\n\n    this.setChildrenOffset(this.treeList);\n    if (this.tree.isRelatedWithChildren) {\n      this.checkActiveCheckbox();\n    }\n    this.tree.addTreeNode(this);\n    this.checkNodeOffset();\n    this.checkCheckboxOffset();\n    this.setCheckboxTabIndex();\n    this.removeAriaExpanded();\n  }\n\n  // Handles the keydown event on the tree node.\n  public handleKeydown(event: KeyboardEvent): void {\n    if (event.keyCode === KeyCodes.TAB) {\n      event.stopPropagation();\n    }\n\n    if (event.keyCode === KeyCodes.ENTER || event.keyCode === KeyCodes.SPACE) {\n      event.preventDefault();\n      this.changeCheckbox(!this.activeStatus);\n\n      if (!this.tree.isCheckboxVisible) {\n        if (this.treeList.children.length > 0 || this.children) {\n          this.toggleTree();\n        } else {\n          this.tree.selectTreeNode(this);\n        }\n      }\n\n      this.selectedNodeChanged.emit(this);\n    }\n  }\n\n  // Focuses the tree node.\n  public focus(): void {\n    this.tabindex = 0;\n    this.renderer.addClass(this.selectBtn.nativeElement, AdditionalClass.keyboardFocus);\n    this.selectBtn?.nativeElement?.focus();\n    this.isFocused = true;\n    this.cdr.detectChanges();\n  }\n\n  // Blurs the tree node.\n  public blur(): void {\n    this.tabindex = -1;\n    this.renderer.removeClass(this.selectBtn.nativeElement, AdditionalClass.keyboardFocus);\n    this.selectBtn.nativeElement.blur();\n    this.isFocused = false;\n    this.tree.wrap.nativeElement.tabIndex = 0;\n    this.cdr.detectChanges();\n  }\n\n  // Sets the offset for the child nodes.\n  public setChildrenOffset(tree: TreeList): void {\n    tree.children.forEach((child: TreeNodeComponent) => {\n      child.increaseOffset();\n      if (child.treeList.children) {\n        this.setChildrenOffset(child.treeList);\n      }\n    });\n  }\n\n  // Increases the offset of the tree node.\n  public increaseOffset(): void {\n    this.offset = this.offset + 1;\n    this.checkNodeOffset();\n    this.checkCheckboxOffset();\n  }\n\n  // Toggles the expanded state of the tree node.\n  public toggleTree(): void {\n    this.isExpanded = !this.isExpanded;\n    this.setOpenedState();\n    this.updateItem();\n    this.cdr.detectChanges();\n  }\n\n  // Stops the propagation of the checkbox event.\n  public stopCheckboxPropagation($event: Event): void {\n    $event.stopPropagation();\n  }\n\n  // Selects the tree node.\n  public selectNode(): void {\n    if (this.treeList.children.length > 0 || this.children) {\n      this.toggleTree();\n    } else if (!this.tree.isCheckboxVisible) {\n      this.tree.selectTreeNode(this);\n    }\n\n    this.selectedNodeChanged.emit(this);\n  }\n\n  // Changes the checkbox value.\n  public changeCheckbox(value: boolean): void {\n    this.activeStatus = value;\n    this.isChecked = value;\n    this.indeterminateStatus = false;\n\n    if (this.treeList.children.length && this.tree.isRelatedWithChildren) {\n      this.setValueChildren(this.treeList.children, value);\n    }\n    if (this.treeList.parent && this.tree.isRelatedWithChildren) {\n      this.treeList.parent.checkActiveCheckbox();\n    }\n\n    this.updateItem();\n\n    if (this.tree.items) {\n      this.tree.nodesUpdated.emit(this.tree.items);\n    }\n\n    this.emitChanges(value);\n  }\n\n  // Checks the active state of the checkbox.\n  public checkActiveCheckbox(): void {\n    let activeCount = 0;\n    let indeterminateStatusChild;\n    let childrenLength = this.treeList.children.length;\n\n    this.treeList.children.forEach((child) => {\n      if ((child.isChecked || child.activeStatus) && !child.disabled) {\n        activeCount++;\n      }\n      if (child.indeterminateStatus) {\n        indeterminateStatusChild = true;\n      }\n      if (child.disabled) {\n        childrenLength--;\n      }\n    });\n\n    if (this.isChecked && !this.treeList.children.length) activeCount++;\n\n    this.setCheckboxValue(indeterminateStatusChild, activeCount, childrenLength);\n\n    if (this.treeList.parent) {\n      this.treeList.parent.checkActiveCheckbox();\n    }\n\n    this.cdr.markForCheck();\n  }\n\n  // Checks the offset of the tree node.\n  public checkNodeOffset(): void {\n    this.nodeOffset =\n      this.offset * TreeNodeOffset[this.tree.size || Size.md] +\n      (this.tree.isCheckboxVisible ? 16 + TreeNodeOffset[this.tree.size || Size.md] * 2 : 0) +\n      'px';\n    this.cdr.detectChanges();\n  }\n\n  // Sets the tabindex of the checkbox.\n  public setCheckboxTabIndex(): void {\n    if (this.checkbox) {\n      this.checkbox.checkboxField.nativeElement.tabIndex = -1;\n    }\n  }\n\n  // Checks the offset of the checkbox.\n  public checkCheckboxOffset(): void {\n    this.checkboxOffset = this.offset * TreeNodeOffset[this.tree.size || Size.md] + TreeNodeOffset[this.tree.size || Size.md] + 'px';\n    this.cdr.detectChanges();\n  }\n\n  // Sets the opened state of the tree node.\n  public setOpenedState(): void {\n    this.isOpened = (this.treeList.parent && this.treeList.parent.isExpanded && this.treeList.parent.isOpened) || !this.treeList.parent;\n  }\n\n  // Updates the item properties.\n  public updateItem(): void {\n    if (this.item && this.isActive !== undefined) this.item.isActive = this.isActive;\n    if (this.item && this.isChecked !== undefined) this.item.isChecked = this.isChecked;\n    if (this.item && this.isExpanded !== undefined) this.item.isExpanded = this.isExpanded;\n  }\n\n  // Emits the changes.\n  private emitChanges(value: boolean): void {\n    this.treeNodeChanged.emit(value);\n  }\n\n  // Sets the value for the child nodes.\n  private setValueChildren(children: TreeNodeComponent[], value: boolean): void {\n    children.forEach((child) => {\n      child.indeterminateStatus = false;\n      child.checkedStatus = value;\n      child.isChecked = value;\n\n      child.updateItem();\n\n      if (child.treeList.children.length) {\n        this.setValueChildren(child.treeList.children, value);\n      }\n    });\n    this.cdr.markForCheck();\n  }\n\n  // Sets the checkbox value.\n  private setCheckboxValue(indeterminateStatus: boolean, activeCount: number, childrenLength: number): void {\n    switch (true) {\n      case indeterminateStatus:\n        this.indeterminateStatus = true;\n        this.isChecked = false;\n        break;\n      case !activeCount:\n        this.indeterminateStatus = false;\n        this.activeStatus = false;\n        this.isChecked = false;\n        break;\n      default:\n        this.indeterminateStatus = activeCount < childrenLength;\n        this.activeStatus = activeCount >= childrenLength;\n        this.isChecked = activeCount >= childrenLength;\n    }\n\n    this.updateItem();\n  }\n\n  // Removes the aria-expanded attribute from the tree node item.\n  private removeAriaExpanded(): void {\n    if (!this.tree.items || !this.tree.items.length) {\n      this.treeNodeItem.nativeElement.removeAttribute('aria-expanded');\n    }\n  }\n\n  // Sets the checkbox states.\n  private setCheckboxStates(): void {\n    if (this.isChecked) {\n      this.indeterminateStatus = false;\n    }\n    if (!this.indeterminateStatus && this.tree.isRelatedWithChildren) {\n      this.setValueChildren(this.treeList.children, this.isChecked);\n    }\n\n    if (this.isChecked !== undefined) {\n      this.activeStatus = this.isChecked;\n    }\n  }\n\n  // Sets the state after changes.\n  private setAfterChanges(): void {\n    if (this.treeList.parent && this.tree.isRelatedWithChildren) {\n      this.treeList.parent.checkActiveCheckbox();\n    }\n  }\n\n  // Generates the tree list.\n  private genTreeList(): void {\n    let treeChildren = [];\n\n    if (this.tree.items) {\n      treeChildren = this.treeViewChildren.toArray();\n    } else {\n      treeChildren = this.treeChildrenComponent.toArray();\n    }\n\n    if (treeChildren.length >= 1) {\n      if (treeChildren.indexOf(this) >= 0) {\n        treeChildren.splice(0, 1);\n      }\n\n      this.treeList.children = treeChildren;\n\n      treeChildren.forEach((item) => {\n        this.isChildActive(item);\n\n        item.treeList.parent = this;\n      });\n\n      this.setOpenedState();\n    }\n  }\n\n  // Checks if the child node is active.\n  private isChildActive(item: TreeNodeComponent): void {\n    if (item.isActive || item.isExpanded) {\n      this.isExpanded = true;\n    }\n  }\n}\n","<div [ngClass]=\"{\n       'dds-tree__item_expanded': isExpanded && !disabled,\n       'dds-tree__item_disabled': disabled,\n       'dds-tree__item_with-icon': isIconVisible\n     }\"\n     class=\"dds-tree__item {{customClass}}\"\n     #treeNodeItem>\n\n  @if (tree.isCheckboxVisible) {\n    <dds-checkbox [value]=\"activeStatus\"\n                  [ngStyle]=\"{'left': checkboxOffset}\"\n                  [isIndeterminate]=\"indeterminateStatus\"\n                  [theme]=\"tree.theme\"\n                  [isInverse]=\"tree.isInverse\"\n                  class=\"dds-tree__checkbox\"\n                  (stateChanged)=\"changeCheckbox($event)\"\n                  (click)=\"stopCheckboxPropagation($event)\"\n                  #checkbox></dds-checkbox>\n  }\n\n  <button [ngClass]=\"{\n            'dds-tree__content_has-children': treeList.children.length,\n            'dds-tree__content_active': isActiveNode && !tree.isCheckboxVisible\n          }\"\n          [ngStyle]=\"{\n            'padding-left': nodeOffset\n          }\"\n          [disabled]=\"disabled\"\n          [attr.aria-expanded]=\"isExpanded && !disabled\"\n          [attr.aria-disabled]=\"disabled\"\n          [attr.tabindex]=\"tabindex\"\n          class=\"dds-tree__content\"\n          role=\"treeitem\"\n          (keydown)=\"handleKeydown($event)\"\n          (blur)=\"blur()\"\n          (click)=\"selectNode()\"\n          #selectBtn>\n    <div class=\"dds-tree__title\">\n      @if (isIconVisible) {\n        <span class=\"dds-tree__icon dds-icon {{icon}}\"></span>\n      }\n\n      <span class=\"dds-tree__text\">\n        {{label}}\n        @if (!label) {\n          <ng-content></ng-content>\n        }\n      </span>\n    </div>\n    @if (treeList.children.length || children) {\n      <span class=\"dds-tree__arrow dds-icon {{iconArrow}}\"></span>\n    }\n  </button>\n\n  @if (isExpanded && !tree.items) {\n    <div role=\"group\"\n         class=\"dds-tree__children\">\n      <ng-content select=\"dds-tree-node\"></ng-content>\n    </div>\n  }\n\n  @if (tree.items) {\n    <div [hidden]=\"!isExpanded\"\n         role=\"group\"\n         class=\"dds-tree__children\">\n      @for (item of children; track item) {\n        <dds-tree-node [isExpanded]=\"item.isExpanded\"\n                       [isChecked]=\"item.isChecked\"\n                       [disabled]=\"item.disabled\"\n                       [isActive]=\"item.isActive\"\n                       [item]=\"item\"\n                       [icon]=\"item.icon\"\n                       [label]=\"item.label\"\n                       [children]=\"item.children\"\n                       [customClass]=\"item.customClass\"></dds-tree-node>\n      }\n    </div>\n  }\n\n</div>","import { CommonModule } from '@angular/common';\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  Output,\n  Renderer2,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { FocusHandlerModule } from '@usitsdasdesign/dds-ng/core/focus-handler';\nimport { ThemeClassesMap, ThemeModule } from '@usitsdasdesign/dds-ng/core/theme';\nimport { KeyCodes, Size, Themes } from '@usitsdasdesign/dds-ng/shared';\nimport { DdsConfigService } from '@usitsdasdesign/dds-ng/shared/dds-config';\nimport { themeClassesMap } from '../constants';\nimport { TreeNodeComponent } from '../tree-node/tree-node.component';\nimport { TREE } from '../tree.token';\nimport { TreeNodeOptions } from '../typings';\n\n@Component({\n  selector: 'dds-tree',\n  templateUrl: './tree.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: TREE,\n      useExisting: TreeComponent,\n    },\n  ],\n  standalone: true,\n  imports: [CommonModule, FocusHandlerModule, ThemeModule, TreeNodeComponent],\n})\nexport class TreeComponent implements AfterViewInit, OnChanges {\n  // The theme of the tree component.\n  @Input() theme: Themes | string | undefined = this.ddsConfig.getConfig().theme;\n\n  // The items to be displayed in the tree.\n  @Input() items: TreeNodeOptions[] | undefined;\n\n  // The size of the tree component.\n  @Input() size: Size | string | undefined = this.ddsConfig.getConfig().size;\n\n  // Custom CSS class for the tree component.\n  @Input() customClass: string | undefined;\n\n  // Flag to show or hide checkboxes.\n  @Input() isCheckboxVisible: boolean | undefined;\n\n  // Flag to set the tree component to inverse mode.\n  @Input() isInverse: boolean | undefined;\n\n  // Flag to relate nodes with their children.\n  @Input() isRelatedWithChildren: boolean | undefined = true;\n\n  // Event emitted when the selected node changes.\n  @Output() selectedNodeChanged = new EventEmitter<TreeNodeComponent>();\n\n  // Event emitted when the nodes are updated.\n  @Output() nodesUpdated = new EventEmitter<TreeNodeOptions[]>();\n\n  // Reference to the wrapper element.\n  @ViewChild('wrap') wrap: ElementRef<HTMLElement>;\n\n  // The currently selected node.\n  public selectedNode: TreeNodeComponent;\n\n  // List of tree nodes.\n  public treeNodes: TreeNodeComponent[] = [];\n\n  // Configuration for theme classes.\n  public themeConfig: ThemeClassesMap = themeClassesMap;\n\n  private letterSearchIndex = 0;\n  private letter = '';\n\n  constructor(public cdr: ChangeDetectorRef, private ddsConfig: DdsConfigService, private renderer: Renderer2) { }\n\n  // Lifecycle hook that is called when any data-bound property of a directive changes.\n  public ngOnChanges(changes: SimpleChanges): void {\n    if (changes.isCheckboxVisible || changes.isInverse) {\n      this.updTreeNodes();\n    }\n  }\n\n  // Lifecycle hook that is called after a component's view has been fully initialized.\n  public ngAfterViewInit(): void {\n    this.updTreeNodes();\n  }\n\n  // Handles keyup events for keyboard navigation.\n  public handleKeyup(event: KeyboardEvent): void {\n    if (event.keyCode === KeyCodes.TAB) {\n      this.moveToFirstNode(true);\n    }\n  }\n\n  // Handles keydown events for keyboard navigation.\n  public handleKeydown(event: KeyboardEvent): void {\n    const focusedItem = this.openedTree().filter((item) => item.isFocused)[0];\n    const charTyped = event.key;\n\n    if (event.keyCode === KeyCodes.ARROW_RIGHT) {\n      event.preventDefault();\n      this.openNode(focusedItem);\n    }\n\n    if (event.keyCode === KeyCodes.ARROW_LEFT) {\n      event.preventDefault();\n      this.closeNode(focusedItem);\n    }\n\n    if (event.keyCode === KeyCodes.ARROW_DOWN) {\n      event.preventDefault();\n      this.moveToNextNode(focusedItem);\n    }\n\n    if (event.keyCode === KeyCodes.ARROW_UP) {\n      event.preventDefault();\n      this.moveToPrevNode(focusedItem);\n    }\n\n    if (event.keyCode === KeyCodes.HOME) {\n      event.preventDefault();\n      this.moveToFirstNode();\n    }\n\n    if (event.keyCode === KeyCodes.END) {\n      event.preventDefault();\n      this.moveToLastNode();\n    }\n\n    if (/^[a-z\\d]$/i.test(charTyped)) {\n      this.moveByFirstLetterNode(charTyped);\n    }\n  }\n\n  // Opens a tree node.\n  public openNode(focusedItem: TreeNodeComponent): void {\n    if (!focusedItem.isExpanded) {\n      focusedItem.toggleTree();\n    } else if (focusedItem.isExpanded && focusedItem.treeList.children.length) {\n      focusedItem.treeList.children[0]?.focus();\n    }\n  }\n\n  // Closes a tree node.\n  public closeNode(focusedItem: TreeNodeComponent): void {\n    if (focusedItem.isExpanded) {\n      focusedItem.toggleTree();\n    } else if (!focusedItem.isExpanded && focusedItem.treeList.parent) {\n      focusedItem.treeList.parent?.focus();\n    }\n  }\n\n  // Moves focus to the first tree node.\n  public moveToFirstNode(isTab = false): void {\n    const firstItem = this.openedTree()[0];\n    firstItem?.focus();\n\n    if (isTab) this.wrap.nativeElement.tabIndex = -1;\n  }\n\n  // Moves focus to the last tree node.\n  public moveToLastNode(): void {\n    const lastItem = this.openedTree()[this.openedTree().length - 1];\n    lastItem?.focus();\n  }\n\n  // Moves focus to the next tree node.\n  public moveToNextNode(focusedItem: TreeNodeComponent): void {\n    const index = this.openedTree().indexOf(focusedItem);\n    const openedTreeLength = this.openedTree().length - 1;\n\n    if (index < openedTreeLength) {\n      this.openedTree()[index + 1]?.focus();\n    } else {\n      this.openedTree()[0]?.focus();\n    }\n  }\n\n  // Moves focus to the previous tree node.\n  public moveToPrevNode(focusedItem: TreeNodeComponent): void {\n    const index = this.openedTree().indexOf(focusedItem);\n\n    if (index > 0) {\n      this.openedTree()[index - 1]?.focus();\n    } else {\n      this.openedTree()[this.openedTree().length - 1]?.focus();\n    }\n  }\n\n  // Moves focus to a tree node by the first letter.\n  public moveByFirstLetterNode(letter: string): void {\n    const filteredList = this.openedTree().filter(\n      (item) => item.selectBtn.nativeElement.innerText.trim().toLowerCase()[0] === letter.toLowerCase()\n    );\n\n    this.letterSearchIndex = letter === this.letter && this.letterSearchIndex < filteredList.length - 1 ? this.letterSearchIndex + 1 : 0;\n    filteredList[this.letterSearchIndex]?.focus();\n    this.letter = letter;\n  }\n\n  // Adds a tree node to the list.\n  public addTreeNode(treeNode: TreeNodeComponent): void {\n    this.treeNodes.push(treeNode);\n  }\n\n  // Removes a tree node from the list.\n  public removeTreeNode(treeNode: TreeNodeComponent): void {\n    this.treeNodes = this.treeNodes.filter((item) => item !== treeNode);\n  }\n\n  // Selects a tree node.\n  public selectTreeNode(treeNode: TreeNodeComponent): void {\n    this.selectedNode = treeNode;\n    this.selectedNodeChanged.emit(treeNode);\n    this.updTreeNodes();\n  }\n\n  // Updates the tree nodes.\n  public updTreeNodes(): void {\n    this.treeNodes.forEach((node: TreeNodeComponent) => node.cdr.detectChanges());\n  }\n\n  // Filters the tree nodes.\n  private filteredTree(): TreeNodeComponent[] {\n    const filteredTree = this.treeNodes.filter((item) => !item.treeList.parent);\n    const flattenTree = this.flatten(filteredTree).filter((item) => !item.disabled);\n    return flattenTree;\n  }\n\n  // Gets the opened tree nodes.\n  private openedTree(): TreeNodeComponent[] {\n    this.filteredTree().forEach((item) => item.setOpenedState());\n    const allOpenedItems = this.filteredTree().filter((item) => item.isOpened && !item.disabled);\n    return allOpenedItems;\n  }\n\n  // Flattens the tree nodes.\n  private flatten(array: TreeNodeComponent[]): TreeNodeComponent[] {\n    const flattend = [];\n    (function flat(arrayToBeFlatten: TreeNodeComponent[]) {\n      arrayToBeFlatten.forEach(function (el) {\n        flattend.push(el);\n        if (el.treeList?.children?.length) flat(el.treeList.children);\n      });\n    })(array);\n    return flattend;\n  }\n}\n","<div [ngClass]=\"{\n       'dds-tree_with-checkbox': isCheckboxVisible,\n       'dds-tree_inverse': isInverse\n     }\"\n     [size]=\"size\"\n     [ddsTheme]=\"themeConfig\"\n     tabindex=\"0\"\n     role=\"tree\"\n     class=\"dds-tree {{customClass}}\"\n     (keyup)=\"handleKeyup($event)\"\n     (keydown)=\"handleKeydown($event)\"\n     #wrap>\n  @if (!items) {\n    <ng-content></ng-content>\n  }\n  @if (items) {\n    @for (item of items; track item) {\n      <dds-tree-node [isExpanded]=\"item.isExpanded\"\n                     [isActive]=\"item.isActive\"\n                     [isChecked]=\"item.isChecked\"\n                     [disabled]=\"item.disabled\"\n                     [item]=\"item\"\n                     [icon]=\"item.icon\"\n                     [label]=\"item.label\"\n                     [children]=\"item.children\"\n                     [customClass]=\"item.customClass\">\n      </dds-tree-node>\n    }\n  }\n</div>","import { NgModule } from '@angular/core';\nimport { TreeNodeComponent } from './tree-node/tree-node.component';\nimport { TreeComponent } from './tree/tree.component';\n\n@NgModule({\n  declarations: [],\n  imports: [TreeComponent, TreeNodeComponent],\n  exports: [TreeComponent, TreeNodeComponent],\n})\nexport class TreeModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2"],"mappings":"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"}