@eui/components 21.0.0-alpha.16 → 21.0.0-alpha.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/changelog.html +56 -0
- package/docs/components/EuiAppSidebarMenuComponent.html +39 -1
- package/docs/components/EuiMenuComponent.html +53 -1
- package/docs/components/EuiTreeComponent.html +60 -0
- package/docs/js/search/search_index.js +2 -2
- package/docs/properties.html +1 -1
- package/eui-menu/index.d.ts +1 -0
- package/eui-menu/index.d.ts.map +1 -1
- package/eui-tree/index.d.ts +15 -1
- package/eui-tree/index.d.ts.map +1 -1
- package/fesm2022/eui-components-eui-datepicker.mjs +2 -2
- package/fesm2022/eui-components-eui-datepicker.mjs.map +1 -1
- package/fesm2022/eui-components-eui-menu.mjs +5 -2
- package/fesm2022/eui-components-eui-menu.mjs.map +1 -1
- package/fesm2022/eui-components-eui-tree.mjs +29 -8
- package/fesm2022/eui-components-eui-tree.mjs.map +1 -1
- package/fesm2022/eui-components-layout-eui-app.mjs +13 -3
- package/fesm2022/eui-components-layout-eui-app.mjs.map +1 -1
- package/fesm2022/eui-components-layout-eui-sidebar-toggle.mjs +9 -0
- package/fesm2022/eui-components-layout-eui-sidebar-toggle.mjs.map +1 -1
- package/layout/eui-app/index.d.ts +5 -3
- package/layout/eui-app/index.d.ts.map +1 -1
- package/layout/eui-sidebar-toggle/index.d.ts.map +1 -1
- package/package.json +7 -7
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"eui-components-eui-tree.mjs","sources":["../../eui-tree/eui-tree.model.ts","../../eui-tree/eui-tree.component.ts","../../eui-tree/eui-tree.component.html","../../eui-tree/eui-dropdown-tree.directive.ts","../../eui-tree/eui-tree-helper.ts","../../eui-tree/eui-tree-form-control.directive.ts","../../eui-tree/index.ts","../../eui-tree/eui-components-eui-tree.ts"],"sourcesContent":["import { UxLinkLegacy } from '@eui/core';\n\nexport type TreeDataModel = Array<TreeItemModel>;\n\nexport type TreeItemModel = {\n node: TreeNode;\n children?: TreeDataModel;\n};\n\nexport type TreeNode = {\n // metadata can be block content, or any\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n treeContentBlock: EuiTreeContentBlockModel | any;\n} & SelectionModel &\n ExpandModel;\n\nexport interface EuiTreeContentBlockModel {\n id?: string | number;\n label: string;\n tooltipLabel: string;\n url: string;\n urlExternal: string;\n urlExternalTarget: string;\n typeLabel: string;\n typeClass: string;\n chips?: Array<{ label: string; typeClass?: string; isOutline?: boolean }>;\n iconClass: string;\n iconTypeClass: string;\n iconSvgName?: string;\n rightContent?: {\n iconClass: string;\n iconTypeClass: string;\n iconSvgName?: string;\n badges?: Array<{ label: string; typeClass: string }>;\n chips?: Array<{ label: string; typeClass?: string; isOutline?: boolean }>;\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n contextMenuMetaData?: any;\n };\n metaData: string;\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n}\n\nexport type SelectionModel = {\n selectable?: boolean;\n isSelected?: boolean;\n // if one of sub is selected, it becomes intermediate\n isIndeterminate?: boolean;\n selectConfig?: SelectConfigModel;\n};\n\nexport interface SelectConfigModel extends MultiSelectionLogic, SingleSelectionLogic {\n /*\n If It is true;\n When user select parent, all the children will be selected\n When selection state is changed, If all children is selected parent will be selected as long as noAutoSelectParent is not true\n */\n recursive?: boolean;\n /* when It is true, If all children is selected, parent will not be selected, while recursive is true*/\n noAutoSelectParent?: boolean;\n singleSelect?: boolean;\n}\n\nexport interface MultiSelectionLogic {\n /*\n If It is true;\n When user select parent, all the children will be selected\n When selection state is changed, If all children is selected parent will be selected as long as noAutoSelectParent is not true\n */\n recursive?: boolean;\n /* when It is true, If all children is selected, parent will not be selected, while recursive is true*/\n noAutoSelectParent?: boolean;\n}\n\nexport interface SingleSelectionLogic {\n singleSelect?: boolean;\n}\n\nexport type ExpandModel = {\n isExpanded?: boolean;\n};\n\nexport type EuiTreeSelectionChanges = { added: TreeDataModel; removed: TreeDataModel; selection: TreeDataModel };\n\nexport type TreeDataRunTimeModel = Array<TreeItemRunTimeModel>;\n\nexport type TreeItemRunTimeModel = { index: number; path: string; children?: Array<TreeItemRunTimeModel>; last?: boolean, matched?: boolean };\n\nexport type TreeItemSelectionRecursiveModel = {\n selectionRecursiveState: SelectionRecursiveState;\n children?: Array<TreeItemSelectionRecursiveModel>;\n};\n\nexport type SelectionRecursiveState = 'indeterminate' | 'allSelected' | 'allNotSelected';\n\n// eslint-disable-next-line prefer-arrow/prefer-arrow-functions\nexport function uxTreeNodesMetaDataMapper(oldTree: Array<UxLinkLegacy>): TreeDataModel {\n return oldTree.map((item) => {\n if (item?.typeClass === 'default') {\n // default typeClass will be\n item.typeClass = 'secondary';\n }\n if (item?.badgeLabel) {\n // default typeClass will be\n if (item?.badges?.length > 0) {\n item.badges.push({ label: item?.badgeLabel, typeClass: 'secondary' });\n } else {\n item.badges = [{ label: item?.badgeLabel, typeClass: 'secondary' }];\n }\n }\n return {\n node: {\n treeContentBlock: {\n label: item.label,\n typeLabel: item.typeLabel,\n typeClass: item.typeLabel && !item.typeClass ? 'secondary' : item.typeClass,\n tooltipLabel: item.tooltipLabel,\n url: item.url,\n urlExternal: item.urlExternal,\n urlExternalTarget: item.urlExternal && item.urlExternalTarget ? item.urlExternalTarget : undefined,\n badges: item.badges,\n metadata: item.metadata,\n },\n },\n children: item.children ? uxTreeNodesMetaDataMapper(item.children) : undefined,\n };\n });\n}\n\nexport class EuiTreePagination<T> {\n private data: T[];\n private startPage: number;\n private totalItems: number;\n private renderedPageCount: number;\n private perPage: number;\n private totalPages: number;\n\n constructor(data: T[], startPage: number, renderedPageCount: number, perPage: number) {\n this.data = data;\n this.setCurrentStartPage(startPage);\n this.renderedPageCount = renderedPageCount;\n this.totalItems = this.data.length;\n this.perPage = perPage;\n this.totalPages = Math.ceil(this.totalItems / this.perPage);\n }\n\n public paginateNext(): { startPage: number; data: T[] } {\n if (this.startPage < this.totalPages) {\n this.startPage += 1;\n }\n return this.getViewData();\n }\n\n public paginatePrev(): { startPage: number; data: T[] } {\n if (this.startPage > 1) {\n this.startPage -= 1;\n }\n return this.getViewData();\n }\n\n public getCurrentStartPage(): number {\n return this.startPage;\n }\n\n public setCurrentStartPage(startPage: number): void {\n this.startPage = startPage;\n }\n\n public isAtMax(): boolean {\n return this.totalPages < this.startPage + this.renderedPageCount;\n }\n\n public getViewData(): { startPage: number; data: T[] } {\n const startIndex = (this.startPage - 1) * this.perPage;\n const endIndex = startIndex + this.perPage * this.renderedPageCount;\n const pageData = structuredClone(this.data).slice(startIndex, endIndex);\n return {\n startPage: this.startPage,\n data: pageData,\n };\n }\n}\n\nexport class CustomNodeSelectFnHelper{\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(private compInstance: any) {\n }\n\n select(path: string, isChecked: boolean): void{\n this.compInstance.silentSelect(path, isChecked);\n }\n\n getParents(path: string): Array<string>{\n return this.compInstance.getParentPaths(path);\n }\n\n getTreeItem(path: string): TreeItemModel{\n return this.compInstance.getTreeItem(path);\n }\n\n getSelectionRecursiveState(path: string): TreeItemSelectionRecursiveModel{\n return this.compInstance.getRunTimeSelectionRecursiveState(path);\n }\n\n}\n\nexport type CustomNodeSelectFn = (path: string, isChecked:boolean, treeItem: TreeItemModel, helper: CustomNodeSelectFnHelper) => void;\n","import {\n Component,\n Input,\n ChangeDetectionStrategy,\n EventEmitter,\n Output,\n ViewEncapsulation,\n TemplateRef,\n ChangeDetectorRef,\n SimpleChanges,\n OnInit,\n OnChanges,\n HostBinding,\n OnDestroy,\n booleanAttribute,\n ViewChild,\n inject,\n} from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport {\n SelectionRecursiveState,\n TreeDataModel,\n TreeItemModel,\n TreeDataRunTimeModel,\n TreeItemRunTimeModel,\n TreeItemSelectionRecursiveModel,\n EuiTreeSelectionChanges,\n EuiTreePagination,\n CustomNodeSelectFn,\n CustomNodeSelectFnHelper,\n} from './eui-tree.model';\nimport { FormsModule } from '@angular/forms';\nimport { EUI_INPUT_CHECKBOX } from '@eui/components/eui-input-checkbox';\nimport { EUI_BUTTON } from '@eui/components/eui-button';\nimport { EUI_ICON } from '@eui/components/eui-icon';\nimport { EUI_LABEL } from '@eui/components/eui-label';\nimport { EUI_BADGE } from '@eui/components/eui-badge';\nimport { EUI_CHIP } from '@eui/components/eui-chip';\nimport { EUI_DROPDOWN } from '@eui/components/eui-dropdown';\nimport { NestedTreeControl, CdkTreeModule, CdkTree } from '@angular/cdk/tree';\nimport { ArrayDataSource, SelectionModel } from '@angular/cdk/collections';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ScrollingModule, ScrollDispatcher, CdkScrollable } from '@angular/cdk/scrolling';\nimport { debounceTime, Subscription } from 'rxjs';\nimport { NgFor, NgIf, NgSwitch, NgTemplateOutlet } from '@angular/common';\n\n/**\n * @description\n * The eui-tree can be used to display hierarchy data with optional added behavior inside node templates and interactions\n * that could affect the rendered data such as expand, collapse, direct actions, extra menu actions, etc.\n *\n */\n@Component({\n selector: 'eui-tree',\n templateUrl: './eui-tree.component.html',\n styleUrl: './eui-tree.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n NgIf,\n NgSwitch,\n NgFor,\n NgTemplateOutlet,\n FormsModule,\n TranslateModule,\n ScrollingModule,\n CdkTreeModule,\n RouterModule,\n ...EUI_INPUT_CHECKBOX,\n ...EUI_BUTTON,\n ...EUI_ICON,\n ...EUI_LABEL,\n ...EUI_BADGE,\n ...EUI_CHIP,\n ...EUI_DROPDOWN,\n ],\n})\nexport class EuiTreeComponent implements OnInit, OnChanges, OnDestroy {\n @HostBinding('class')\n public get cssClasses(): string {\n return this.getCssClasses();\n }\n @HostBinding('attr.data-e2e') @Input() e2eAttr = 'eui-tree';\n /**\n * Hierarchy of data to display in the tree\n */\n @Input() nodes: TreeDataModel;\n /**\n * Reference to the `ng-template` used to render node item\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n @Input() nodeTemplateRef: TemplateRef<any>;\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n @Input() nodeContentMetadataTemplateRef: TemplateRef<any>;\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n @Input() rightContextMenuTemplateRef: TemplateRef<any>;\n @Input() customNodeSelectFn: CustomNodeSelectFn;\n /**\n * Icon to display when a node is closed\n *\n * @default 'chevron-forward:sharp'\n */\n @Input() expandedSvgIconClass = 'chevron-forward:sharp';\n /**\n * Icon to display when a node is opened\n *\n * @default 'chevron-down:sharp'\n */\n @Input() collapsedSvgIconClass = 'chevron-down:sharp';\n\n @ViewChild('cdkScrollableRef', { read: CdkScrollable }) cdkScrollableRef: CdkScrollable;\n @ViewChild('treeComponentInstance') public treeComponentInstance: CdkTree<TreeItemRunTimeModel>;\n\n /**\n * Whether the full node display can be clicked to toggle the node.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) isClickTogglingNode = false;\n /**\n * Whether multiple nodes can be selected.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) isMultiselect = false;\n /**\n * Whether only one node can be selected. Select one will unselect the previous selected.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) isSingleSelect = false;\n /**\n * In combination with `isMultiselect`. Whether the selection of a node will automatically select its children.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) isRecursiveSelection = false;\n /**\n * In combination with `isMultiselect`. Whether the selection of all children will automatically select the parent.\n *\n * @default true\n */\n @Input({ transform: booleanAttribute }) isRecursiveParentSelection = true;\n /**\n * Whether the links are underlined on hiver in the tree.\n *\n * @default true\n */\n @Input({ transform: booleanAttribute }) showUnderlinedLinks = false;\n /**\n * Whether the lines are displayed on the left of nodes.\n *\n * @default true\n */\n @Input({ transform: booleanAttribute }) showLines = true;\n /**\n * Whether i18n key can be passed to be translated with `TranslateService`.\n *\n * @default true\n */\n @Input({ transform: booleanAttribute }) autoTranslate = true;\n /**\n * Whether all parents till the selected are highlighted in bold.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) highlightPath = false;\n\n @Output() selectionChange = new EventEmitter<EuiTreeSelectionChanges>();\n @Output() nodeClick = new EventEmitter<TreeItemModel>();\n @Output() nodeToggle = new EventEmitter<TreeItemModel>();\n cdkArrayDataSource: ArrayDataSource<TreeItemRunTimeModel>;\n cdkTreeControl: NestedTreeControl<TreeItemRunTimeModel>;\n renderTree: boolean;\n public uid: string = Math.floor(Math.random() * 1000000000).toString();\n protected _isMultiLevel: boolean;\n private processedNodes: TreeDataModel;\n private treeDataRunTime: TreeDataRunTimeModel;\n private treeDataRunTimeBackup: TreeDataRunTimeModel;\n private runTimeSelectionRecursiveState: Array<TreeItemSelectionRecursiveModel>;\n private selectionModel: SelectionModel<TreeItemRunTimeModel>;\n private tempSelectionModel: SelectionModel<TreeItemRunTimeModel>;\n private selectionModelSubs: Subscription;\n private scrollDispatcherSubs: Subscription;\n private _selection: TreeDataModel;\n private treePagination: EuiTreePagination<TreeItemRunTimeModel>;\n private changeDetectorRef = inject(ChangeDetectorRef);\n private scrollDispatcher = inject(ScrollDispatcher);\n\n ngOnInit(): void {\n this.initTree();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['nodes']?.currentValue !== changes['nodes']?.previousValue) {\n this.renderTree = false;\n this.initTree();\n if(this.treeComponentInstance) {\n this.treeComponentInstance?.renderNodeChanges([]);\n this.treeComponentInstance?.renderNodeChanges(this.treeDataRunTime);\n }\n }\n }\n\n ngOnDestroy(): void {\n if (this.selectionModelSubs) {\n this.selectionModelSubs.unsubscribe();\n }\n if (this.scrollDispatcherSubs) {\n this.scrollDispatcherSubs.unsubscribe();\n }\n }\n\n getSelection(): TreeDataModel {\n return this._selection;\n }\n\n getProcessedNodes(): TreeDataModel {\n return this.processedNodes;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n trackBy(index: number, item: TreeItemRunTimeModel): any {\n return item.path;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n trackByControl(item: TreeItemRunTimeModel): any {\n return item;\n }\n\n getTreeItem(path: string): TreeItemModel {\n const indexArr: Array<number> = this.resolvePath(path);\n let nodeArr = this.processedNodes;\n let node;\n if (nodeArr && Array.isArray(nodeArr)) {\n indexArr?.forEach((pathIndex: number, index) => {\n if (index < indexArr.length - 1) {\n nodeArr = nodeArr && nodeArr[pathIndex]?.children;\n } else {\n node = nodeArr[pathIndex];\n }\n });\n }\n return node;\n }\n\n expandAll(): void {\n this.cdkTreeControl.expandAll();\n this.changeDetectorRef.markForCheck();\n }\n\n expandAt(path: string): void {\n this.getParentPaths(path).reverse().forEach((parentPath)=>{\n this.cdkTreeControl.expand(this.getRunTimeTreeItem(parentPath));\n });\n this.cdkTreeControl.expand(this.getRunTimeTreeItem(path));\n this.changeDetectorRef.detectChanges();\n }\n\n collapseAll(): void {\n this.cdkTreeControl.collapseAll();\n this.changeDetectorRef.markForCheck();\n }\n\n filterTerm(filterInput: string, filterKey?: string, showChildrenOfMatchedItems?: boolean): void {\n if (filterInput !== '' && filterInput !== null && typeof filterInput !== 'undefined') {\n this.treeDataRunTime = this.filterTreeData(structuredClone(this.treeDataRunTimeBackup), filterKey || 'label', filterInput, showChildrenOfMatchedItems);\n this.treeDataRunTime = this.applyRunTimeLastItems(this.treeDataRunTime);\n this.cdkArrayDataSource = new ArrayDataSource(this.treeDataRunTime);\n this.cdkTreeControl = new NestedTreeControl<TreeItemRunTimeModel>((node) => node?.children, { trackBy: this.trackByControl });\n this.cdkTreeControl.dataNodes = this.treeDataRunTime;\n this.renderTree = false;\n this.changeDetectorRef.detectChanges();\n this.renderTree = true;\n this.changeDetectorRef.detectChanges();\n this.expandMatched(this.treeDataRunTime);\n // this.expandAll();\n } else {\n this.treeDataRunTime = structuredClone(this.treeDataRunTimeBackup);\n this.cdkArrayDataSource = new ArrayDataSource(this.treeDataRunTime);\n this.cdkTreeControl = new NestedTreeControl<TreeItemRunTimeModel>((node) => node?.children, { trackBy: this.trackByControl });\n this.cdkTreeControl.dataNodes = this.treeDataRunTime;\n this.renderTree = false;\n this.changeDetectorRef.detectChanges();\n this.renderTree = true;\n this.changeDetectorRef.detectChanges();\n this.expandAll();\n }\n }\n\n setAllSelection(isChecked: boolean): void {\n this.tempSelectionModel = new SelectionModel<TreeItemRunTimeModel>(\n true,\n this.selectionModel.selected,\n true,\n (a, b) => a?.path === b?.path,\n );\n this.setIsCheckedForAll(this.treeDataRunTime, isChecked);\n this.selectionModel.setSelection(...this.tempSelectionModel.selected);\n this.changeDetectorRef.markForCheck();\n }\n\n updateTreeItem(givenTreeItem: TreeItemModel, path: string): void {\n const treeItem = structuredClone(givenTreeItem);\n if (treeItem && path) {\n this.tempSelectionModel = new SelectionModel<TreeItemRunTimeModel>(\n true,\n this.selectionModel.selected,\n true,\n (a, b) => a?.path === b?.path,\n );\n this.setTreeData(path, this.processInputs([treeItem])[0]);\n const pathArr = path.split('.');\n const index = parseInt(pathArr.pop(), 10);\n const treeItemRuntime = this.calculateRunTimeState(treeItem, index, pathArr.join('.'));\n if (treeItemRuntime?.children?.length > 0) {\n treeItemRuntime.children = this.applyRunTimeLastItems(treeItemRuntime.children);\n }\n this.setTreeDataRunTimeBackup(path, treeItemRuntime);\n this.setTreeDataRunTime(path, treeItemRuntime);\n // itemRecursiveSelectionState\n const itemRecursiveSelectionState = this.calculateItemSelectionRecursiveState(treeItem);\n this.setRunTimeSelectionRecursiveStateTree(path, itemRecursiveSelectionState);\n this.syncStateChangesAtPath(path);\n if (this.cdkTreeControl.isExpanded(treeItemRuntime) && !treeItem.node.isExpanded) {\n this.cdkTreeControl.toggle(treeItemRuntime);\n } else if (!this.cdkTreeControl.isExpanded(treeItemRuntime) && treeItem.node.isExpanded) {\n this.cdkTreeControl.expand(treeItemRuntime);\n }\n this.renderInitialExpand(this.getRunTimeTreeItem(path)?.children);\n this.getInitialSelection(this.getRunTimeTreeItem(path)?.children)?.forEach((runTimeItem) => {\n this.selectTreeItem(this.getRunTimeBackupTreeItem(runTimeItem.path));\n });\n this.selectionModel.setSelection(...this.tempSelectionModel.selected);\n // Rendering\n this.changeDetectorRef.detectChanges();\n this.treeComponentInstance.renderNodeChanges([]);\n this.treeComponentInstance.renderNodeChanges(this.treeDataRunTime);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onNodeClick(treeRunTimeItem: TreeItemRunTimeModel, e: any): void {\n if (!this.isMultiselect || e.pointerId !== -1) {\n this.nodeClick.emit(this.getTreeItem(treeRunTimeItem?.path));\n }\n\n if (this.isClickTogglingNode) {\n this.cdkTreeControl.toggle(treeRunTimeItem);\n this.onNodeToggle(treeRunTimeItem);\n }\n }\n\n onNodeToggle(treeRunTimeItem: TreeItemRunTimeModel): void {\n this.getTreeItem(treeRunTimeItem?.path).node.isExpanded = this.cdkTreeControl.isExpanded(treeRunTimeItem);\n this.nodeToggle.emit(this.getTreeItem(treeRunTimeItem?.path));\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nodeSelected(evt: any, path: string): void {\n const item = this.getTreeItem(path);\n const runTimeBackupTreeItem = this.getRunTimeBackupTreeItem(path);\n const renderedRunTimeTreeItem = this.getRunTimeTreeItem(path);\n const node = item?.node;\n this.tempSelectionModel = new SelectionModel<TreeItemRunTimeModel>(\n true,\n this.selectionModel.selected,\n true,\n (a, b) => a?.path === b?.path,\n );\n // console.log(path,item,runTimeTreeItem, renderedRunTimeTreeItem);\n if(this.customNodeSelectFn){\n this.customNodeSelectFn(path, evt.target.checked, item, new CustomNodeSelectFnHelper(this));\n this.selectionModel.setSelection(...this.tempSelectionModel.selected);\n } else if (!node?.selectConfig?.singleSelect) {\n node.isSelected = evt.target.checked;\n node.isIndeterminate = false;\n // If the node is recursive it sets every children with the change.\n if (renderedRunTimeTreeItem?.children && renderedRunTimeTreeItem?.children?.length > 0) {\n if (node?.selectConfig?.recursive) {\n // console.log(renderedRunTimeTreeItem);\n this.setIsCheckedForAll(renderedRunTimeTreeItem?.children, evt.target.checked);\n }\n }\n\n this.setRunTimeSelectionRecursiveStateTree(\n path,\n this.calculateItemSelectionRecursiveState(structuredClone(this.getTreeItem(path))),\n );\n if (renderedRunTimeTreeItem?.children && renderedRunTimeTreeItem?.children?.length >= 0) {\n if (node?.selectConfig?.recursive) {\n // this.setIsCheckedForAll(renderedRunTimeTreeItem?.children, evt.target.checked);\n this.runStateChangesForAll(renderedRunTimeTreeItem?.children);\n }\n this.treeComponentInstance?.renderNodeChanges([]);\n this.treeComponentInstance?.renderNodeChanges(this.treeDataRunTime);\n }\n this.syncStateChangesAtPath(path);\n if (this.getTreeItem(path).node.isSelected) {\n this.selectTreeItem(runTimeBackupTreeItem);\n } else {\n this.deselectTreeItem(runTimeBackupTreeItem);\n }\n const nodePathsSeq = this.getParentPaths(path);\n if (nodePathsSeq.length > 0) {\n nodePathsSeq.forEach((nodePath: string) => {\n const treeItem = this.getTreeItem(nodePath);\n const childStates = this.getRunTimeSelectionRecursiveState(nodePath).children.map((_) => _.selectionRecursiveState);\n this.updateRunTimeSelectionRecursiveState(\n nodePath,\n this.decideSelectionRecursiveState(\n childStates,\n treeItem.node?.isSelected,\n treeItem.node?.selectConfig?.recursive,\n treeItem.node?.selectConfig?.noAutoSelectParent,\n ),\n );\n this.syncStateChangesAtPath(nodePath);\n });\n this.changeDetectorRef.detectChanges();\n } else {\n this.changeDetectorRef.detectChanges();\n }\n this.selectionModel.setSelection(...this.tempSelectionModel.selected);\n } else {\n const prevItem = this.selectionModel.selected[0];\n if (evt.target.checked) {\n if (prevItem) {\n this.getTreeItem(prevItem.path).node.isSelected = false;\n this.selectionModel.deselect(prevItem);\n }\n item.node.isSelected = true;\n this.selectionModel.select(runTimeBackupTreeItem);\n } else {\n item.node.isSelected = false;\n this.selectionModel.deselect(runTimeBackupTreeItem);\n }\n if (this.highlightPath) {\n if (evt.target.checked && prevItem) {\n const prevItemNodePathsSeq = this.getParentPaths(prevItem.path);\n if (prevItemNodePathsSeq.length > 0) {\n prevItemNodePathsSeq.forEach((nodePath: string) => {\n this.updateRunTimeSelectionRecursiveState(nodePath, 'allNotSelected');\n this.syncStateChangesAtPath(nodePath);\n });\n }\n }\n const nodePathsSeq = this.getParentPaths(path);\n if (nodePathsSeq?.length > 0) {\n nodePathsSeq.forEach((nodePath: string) => {\n this.updateRunTimeSelectionRecursiveState(nodePath, evt.target.checked ? 'indeterminate' : 'allNotSelected');\n this.syncStateChangesAtPath(nodePath);\n });\n this.changeDetectorRef.detectChanges();\n }\n }\n }\n }\n\n hasChild = (_: number, item: TreeItemRunTimeModel): boolean => !!item?.children && item?.children?.length >= 0;\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onSelectFn(path: string): (evt: any) => void {\n if (this.getTreeItem(path)?.node?.selectable) {\n const nodeSelected = this.nodeSelected.bind(this);\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (evt: any) => nodeSelected(evt, path);\n }\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (evt: any) => {\n console.warn('treeItemModel.node.selectable is false, you can not implement onSelect');\n };\n }\n\n getRunTimeSelectionRecursiveState(path: string): TreeItemSelectionRecursiveModel {\n const indexArr: Array<number> = this.resolvePath(path);\n let nodeArr = this.runTimeSelectionRecursiveState;\n let node;\n indexArr?.forEach((pathIndex: number, index) => {\n if (index < indexArr.length - 1) {\n nodeArr = nodeArr[pathIndex]?.children;\n } else {\n node = nodeArr[pathIndex];\n }\n });\n return node;\n }\n\n private initTree(): void {\n if (this.nodes) {\n this._isMultiLevel = this.checkIfMultiLevel(this.nodes);\n this.processedNodes = this.processInputs(structuredClone(this.nodes));\n this.treeDataRunTime = this.createTreeDataRuntime(this.processedNodes);\n this.treeDataRunTime = this.applyRunTimeLastItems(this.treeDataRunTime);\n this.runTimeSelectionRecursiveState = this.createRunTimeSelectionRecursiveState(this.processedNodes);\n this.treeDataRunTimeBackup = structuredClone(this.treeDataRunTime);\n // todo It should be configurable, 800, 2 and 400 are hard coded right now\n if (this.treeDataRunTimeBackup.length > 800) {\n this.treePagination = new EuiTreePagination<TreeItemRunTimeModel>(this.treeDataRunTimeBackup, 1, 2, 400);\n const paginatedData = this.treePagination.getViewData().data;\n this.cdkArrayDataSource = new ArrayDataSource<TreeItemRunTimeModel>(paginatedData);\n this.cdkTreeControl = new NestedTreeControl<TreeItemRunTimeModel>((node) => node?.children, {\n trackBy: this.trackByControl,\n });\n this.cdkTreeControl.dataNodes = paginatedData;\n this.runScrollListener();\n } else {\n this.cdkArrayDataSource = new ArrayDataSource<TreeItemRunTimeModel>(this.treeDataRunTime);\n this.cdkTreeControl = new NestedTreeControl<TreeItemRunTimeModel>((node) => node?.children, {\n trackBy: this.trackByControl,\n });\n this.cdkTreeControl.dataNodes = this.treeDataRunTime;\n }\n this.renderInitialExpand(this.treeDataRunTime);\n this.selectionModel = new SelectionModel<TreeItemRunTimeModel>(\n true,\n this.getInitialSelection(this.treeDataRunTime),\n true,\n (a, b) => a?.path === b?.path,\n );\n this._selection = [...this.selectionModel.selected]?.map((item) => this.getTreeItem(item?.path));\n this.renderTree = true;\n if (this.selectionModelSubs) {\n this.selectionModelSubs.unsubscribe();\n }\n this.selectionModelSubs = this.selectionModel.changed.pipe(debounceTime(1)).subscribe((sc) => {\n const selectionChange = {\n added: sc.added.map((_) => this.getTreeItem(_.path)),\n removed: sc.removed.map((_) => this.getTreeItem(_.path)),\n selection: [...this.selectionModel.selected].map((item) => this.getTreeItem(item.path)),\n };\n this._selection = selectionChange.selection;\n this.selectionChange.emit(selectionChange);\n });\n this.changeDetectorRef.markForCheck();\n }\n }\n\n private processInputs(treeData: TreeDataModel): TreeDataModel {\n if (this.isMultiselect) {\n treeData = this.overrideTreeDataModelForSelection(treeData, this.isRecursiveSelection, !this.isRecursiveParentSelection);\n }\n if (this.isSingleSelect) {\n treeData = this.overrideTreeDataModelForSelection(treeData, false, false, true);\n }\n return treeData;\n }\n\n private overrideTreeDataModelForSelection(\n nodeArr: TreeDataModel,\n isRecursive: boolean,\n noAutoSelectParent: boolean,\n singleSelect?: boolean,\n ): TreeDataModel {\n return nodeArr?.map((item: TreeItemModel, index: number) => {\n if (item?.children && item.children.length > 0) {\n return {\n ...item,\n node: {\n ...item.node,\n selectable: typeof item?.node?.selectable === 'undefined' ? true : item?.node?.selectable,\n // isSelected: false,\n // isIndeterminate: false,\n selectConfig: {\n ...item.node.selectConfig,\n recursive:\n typeof item?.node?.selectConfig?.recursive === 'undefined'\n ? !!isRecursive\n : item?.node?.selectConfig?.recursive,\n noAutoSelectParent:\n typeof item?.node?.selectConfig?.noAutoSelectParent === 'undefined'\n ? noAutoSelectParent\n : item?.node?.selectConfig?.noAutoSelectParent,\n singleSelect:\n typeof item?.node?.selectConfig?.singleSelect === 'undefined'\n ? singleSelect\n : item?.node?.selectConfig?.singleSelect,\n },\n },\n children: this.overrideTreeDataModelForSelection(item.children, isRecursive, noAutoSelectParent, singleSelect),\n };\n } else {\n return {\n ...item,\n node: {\n ...item.node,\n selectable: typeof item?.node?.selectable === 'undefined' ? true : item?.node?.selectable,\n selectConfig: {\n ...item.node?.selectConfig,\n singleSelect:\n typeof item?.node?.selectConfig?.singleSelect === 'undefined'\n ? singleSelect\n : item?.node?.selectConfig?.singleSelect,\n },\n },\n };\n }\n });\n }\n\n private runScrollListener(): void {\n /* if (this.scrollDispatcherSubs) { todo\n this.scrollDispatcherSubs.unsubscribe();\n }*/\n this.scrollDispatcherSubs = this.scrollDispatcher.scrolled().subscribe((scrollable: CdkScrollable) => {\n if (scrollable && this.checkIfCurrentScrollable(scrollable)) {\n const isAtBottom =\n scrollable?.getElementRef().nativeElement.scrollTop + scrollable?.getElementRef().nativeElement.clientHeight >=\n scrollable?.getElementRef().nativeElement.scrollHeight;\n const isAtTop = scrollable?.getElementRef().nativeElement.scrollTop === 0;\n // console.log('Element:', this.cdkScrollableRef.getElementRef());\n if (isAtBottom && !this.treePagination.isAtMax()) {\n if (this.nodes.length > 0) {\n this.treeDataRunTime = this.treePagination.paginateNext().data;\n this.treeDataRunTime = this.applyRunTimeLastItems(this.treeDataRunTime);\n this.cdkArrayDataSource = new ArrayDataSource(this.treeDataRunTime);\n this.cdkTreeControl = new NestedTreeControl<TreeItemRunTimeModel>((node) => node?.children, {\n trackBy: this.trackByControl,\n });\n this.cdkTreeControl.dataNodes = this.treeDataRunTime;\n this.renderTree = false;\n this.changeDetectorRef.detectChanges();\n this.renderTree = true;\n this.changeDetectorRef.detectChanges();\n this.expandAll();\n const totalHeight = scrollable.measureScrollOffset('bottom') + scrollable.measureScrollOffset('top');\n const viewportHeight = scrollable.getElementRef().nativeElement.clientHeight;\n const positionToScroll = totalHeight - viewportHeight;\n scrollable.scrollTo({ top: positionToScroll / 2 });\n }\n } else if (isAtTop && this.treePagination.getCurrentStartPage() > 1) {\n if (this.nodes.length > 0) {\n this.treeDataRunTime = this.treePagination.paginatePrev().data;\n this.treeDataRunTime = this.applyRunTimeLastItems(this.treeDataRunTime);\n this.cdkArrayDataSource = new ArrayDataSource(this.treeDataRunTime);\n this.cdkTreeControl = new NestedTreeControl<TreeItemRunTimeModel>((node) => node?.children, {\n trackBy: this.trackByControl,\n });\n this.cdkTreeControl.dataNodes = this.treeDataRunTime;\n this.renderTree = false;\n this.changeDetectorRef.detectChanges();\n this.renderTree = true;\n this.changeDetectorRef.detectChanges();\n this.expandAll();\n const totalHeight = scrollable.measureScrollOffset('bottom') + scrollable.measureScrollOffset('top');\n const viewportHeight = scrollable.getElementRef().nativeElement.clientHeight;\n const positionToScroll = totalHeight - viewportHeight;\n scrollable.scrollTo({ top: positionToScroll / 2 + viewportHeight });\n }\n }\n }\n });\n }\n\n private getSelectionIndexOfItem(runTimeTreeItem: TreeItemRunTimeModel): number {\n return this.selectionModel.selected.findIndex((i) => i?.path === runTimeTreeItem?.path);\n }\n // todo re-think about the access from custom on node select helper\n private silentSelect(path:string, isChecked: boolean): void{\n const runtimeBackupTreeItem = this.getRunTimeBackupTreeItem(path);\n const treeItem = this.getTreeItem(path);\n const node = treeItem.node;\n if (node?.selectable) {\n node.isSelected = isChecked;\n node.isIndeterminate = false;\n if (isChecked) {\n this.tempSelectionModel.select(runtimeBackupTreeItem);\n } else {\n this.tempSelectionModel.deselect(runtimeBackupTreeItem);\n }\n }\n }\n\n private selectTreeItem(runTimeBackupTreeItem: TreeItemRunTimeModel): void {\n this.tempSelectionModel.select(runTimeBackupTreeItem);\n }\n\n private deselectTreeItem(runTimeTreeItem: TreeItemRunTimeModel): void {\n this.tempSelectionModel.deselect(runTimeTreeItem);\n }\n\n private createTreeDataRuntime(nodes: TreeDataModel): TreeDataRunTimeModel {\n return structuredClone(nodes)?.map((item, index) => {\n return this.calculateRunTimeState(item, index);\n });\n }\n\n private applyRunTimeLastItems(items: TreeDataRunTimeModel): TreeDataRunTimeModel {\n return items?.map((item, index) => {\n if (item?.children) {\n return {\n ...item,\n last: items.length === index + 1 ? true : undefined,\n children: item.children?.length > 0 ? this.applyRunTimeLastItems(item.children) : item?.children,\n };\n } else {\n return {\n ...item,\n last: items.length === index + 1 ? true : undefined,\n };\n }\n });\n }\n\n private createRunTimeSelectionRecursiveState(nodes: TreeDataModel): Array<TreeItemSelectionRecursiveModel> {\n return structuredClone(nodes)?.map((item) => this.calculateItemSelectionRecursiveState({ ...item }));\n }\n\n // Creating run time state which includes children selection state for selection tree.\n private calculateItemSelectionRecursiveState(treeItem: TreeItemModel): TreeItemSelectionRecursiveModel {\n const childrenSelectionRecursive: Array<TreeItemSelectionRecursiveModel> = [];\n if (treeItem.children && treeItem.children.length > 0) {\n treeItem.children.forEach((child, index) => {\n childrenSelectionRecursive[index] = this.calculateItemSelectionRecursiveState(child);\n });\n }\n const childStates = childrenSelectionRecursive.map((_) => _.selectionRecursiveState);\n const itemState: SelectionRecursiveState = treeItem.node.selectable ? this.decideSelectionRecursiveState(\n childStates,\n treeItem.node.isSelected,\n treeItem.node?.selectConfig?.recursive,\n treeItem.node?.selectConfig?.noAutoSelectParent,\n ) : undefined;\n return {\n selectionRecursiveState: itemState,\n children: childrenSelectionRecursive,\n };\n }\n\n private decideSelectionRecursiveState(\n childStates: Array<SelectionRecursiveState> = [],\n isSelected: boolean,\n recursive: boolean,\n noAutoSelectParent: boolean,\n ): SelectionRecursiveState {\n let itemState: SelectionRecursiveState = 'indeterminate';\n if (isSelected && childStates.filter((childStates)=>childStates).every((state) => state === 'allSelected')) {\n itemState = 'allSelected';\n } else if (!isSelected && childStates.filter((childStates)=>childStates).every((state) => state === 'allNotSelected')) {\n itemState = 'allNotSelected';\n } else if (recursive && childStates.filter((childStates)=>childStates).every((state) => state === 'allSelected') && !isSelected && !noAutoSelectParent) {\n itemState = 'allSelected';\n } else if (recursive && childStates.filter((childStates)=>childStates).every((state) => state === 'allNotSelected') && isSelected) {\n itemState = 'allNotSelected';\n }\n return itemState;\n }\n\n private syncStateChangesAtPath(nodePath): void {\n const treeItem = this.getTreeItem(nodePath);\n const runTimeBackupTreeItem = this.getRunTimeBackupTreeItem(nodePath);\n const runTimeSelectionRecursiveItem = this.getRunTimeSelectionRecursiveState(nodePath);\n if (treeItem?.node?.selectable && treeItem.node?.selectConfig?.recursive) {\n if (!treeItem.node?.selectConfig?.noAutoSelectParent) {\n treeItem.node = {\n ...treeItem.node,\n isSelected: runTimeSelectionRecursiveItem.selectionRecursiveState === 'allSelected',\n isIndeterminate: runTimeSelectionRecursiveItem.selectionRecursiveState === 'indeterminate',\n };\n } else {\n treeItem.node = {\n ...treeItem.node,\n isSelected: treeItem.node.isSelected && runTimeSelectionRecursiveItem.selectionRecursiveState === 'allSelected',\n isIndeterminate:\n runTimeSelectionRecursiveItem.selectionRecursiveState === 'indeterminate' ||\n (!treeItem.node.isSelected && runTimeSelectionRecursiveItem.selectionRecursiveState === 'allSelected'),\n };\n }\n // console.log(treeItem, treeItem.node.treeContentBlock.label, 'isSelected:' + treeItem.node.isSelected, 'isIndeterminate:' + treeItem.node.isIndeterminate);\n if (treeItem.node.isSelected === true && !this.selectionModel.isSelected(runTimeBackupTreeItem)) {\n this.selectTreeItem(runTimeBackupTreeItem);\n } else if (treeItem.node.isSelected === false && this.selectionModel.isSelected(runTimeBackupTreeItem)) {\n this.deselectTreeItem(runTimeBackupTreeItem);\n }\n }\n }\n\n private setTreeData(path: string, item: TreeItemModel): void {\n const indexArr: Array<number> = this.resolvePath(path);\n let itemArr = this.processedNodes;\n indexArr?.forEach((pathIndex: number, index) => {\n if (index < indexArr.length - 1) {\n itemArr = itemArr[pathIndex]?.children;\n } else {\n itemArr[pathIndex] = item;\n }\n });\n }\n\n private setTreeDataRunTimeBackup(path: string, item: TreeItemRunTimeModel): void {\n const indexArr: Array<number> = this.resolvePath(path);\n let itemArr = this.treeDataRunTimeBackup;\n indexArr.forEach((pathIndex: number, index) => {\n if (index < indexArr.length - 1) {\n itemArr = itemArr[pathIndex]?.children;\n } else {\n itemArr[pathIndex] = item;\n }\n });\n }\n\n private setTreeDataRunTime(path: string, item: TreeItemRunTimeModel): void {\n const oldItem = this.getRunTimeTreeItem(path);\n if(oldItem){\n Object.keys(item)?.forEach(key => {\n oldItem[key] = item[key];\n });\n }\n }\n\n private setRunTimeSelectionRecursiveStateTree(path: string, item: TreeItemSelectionRecursiveModel): void {\n const indexArr: Array<number> = this.resolvePath(path);\n let itemArr = this.runTimeSelectionRecursiveState;\n indexArr.forEach((pathIndex: number, index) => {\n if (index < indexArr.length - 1) {\n itemArr = itemArr[pathIndex]?.children;\n } else {\n itemArr[pathIndex] = item;\n }\n });\n }\n\n private updateRunTimeSelectionRecursiveState(path: string, selectionRecursiveState: SelectionRecursiveState): void {\n const indexArr: Array<number> = this.resolvePath(path);\n let itemArr = this.runTimeSelectionRecursiveState;\n indexArr.forEach((pathIndex: number, index) => {\n if (index < indexArr.length - 1) {\n itemArr = itemArr[pathIndex]?.children;\n } else {\n itemArr[pathIndex] = {\n ...itemArr[pathIndex],\n selectionRecursiveState,\n };\n }\n });\n }\n\n private setIsCheckedForAll(nodeArr: Array<TreeItemRunTimeModel>, isChecked: boolean): void {\n nodeArr.forEach((runTimeItem: TreeItemRunTimeModel, index: number) => {\n const runtimeBackupTreeItem = this.getRunTimeBackupTreeItem(runTimeItem.path);\n const treeItem = this.getTreeItem(runTimeItem.path);\n const node = treeItem.node;\n if (node?.selectable) {\n node.isSelected = isChecked;\n node.isIndeterminate = false;\n if (isChecked) {\n this.selectTreeItem(runtimeBackupTreeItem);\n } else {\n this.deselectTreeItem(runtimeBackupTreeItem);\n }\n }\n if (runTimeItem?.children?.length > 0) {\n this.setIsCheckedForAll(nodeArr[index].children, isChecked);\n }\n });\n }\n\n private runStateChangesForAll(nodeArr: Array<TreeItemRunTimeModel>): void {\n nodeArr?.forEach((runTimeItem: TreeItemRunTimeModel, index: number) => {\n if (runTimeItem?.children?.length >= 0) {\n this.runStateChangesForAll(nodeArr[index].children);\n this.syncSelectionAtPath(runTimeItem);\n }\n });\n }\n\n private syncSelectionAtPath(runTimeTreeItem: TreeItemRunTimeModel): void {\n // It is here for the filter edge case.\n this.syncStateChangesAtPath(runTimeTreeItem.path);\n // Sets isSelected change on the control.\n if (this.getTreeItem(runTimeTreeItem.path).node.isSelected) {\n this.selectTreeItem(this.getRunTimeBackupTreeItem(runTimeTreeItem.path));\n } else {\n this.deselectTreeItem(this.getRunTimeBackupTreeItem(runTimeTreeItem.path));\n }\n }\n\n private resolvePath(path: string): Array<number> {\n return path?.split('.').map((index: string) => parseInt(index, 10));\n }\n\n private getParentPaths(path: string): Array<string> {\n const pathArr = path.split('.');\n const hasParent = pathArr.length > 1;\n // Sets the hasParent If there is a parent, and removes the last element form pathArr.\n if (hasParent) {\n pathArr.pop();\n // Calculates parent path\n const parentPath = pathArr.join('.');\n // Creating node index sequence f.e If path is '1.2' it will be [1,2]\n const nodeIndexSeq = parentPath.split('.').map((indexStr) => parseInt(indexStr, 10));\n // Calculating the node paths array to be re-calculated from bottom to top\n const nodePathsSeq = [];\n nodeIndexSeq.forEach((nodeIndex, index) => {\n nodePathsSeq[index] = nodeIndexSeq.slice(0, index + 1).join('.');\n });\n return nodePathsSeq.reverse();\n } else {\n return [];\n }\n }\n\n private calculateRunTimeState(treeItem: TreeItemModel, index: number, parentPath?: string): TreeItemRunTimeModel {\n const runTimeTreeItem: TreeItemRunTimeModel = {\n path: parentPath ? parentPath + '.' + index : index.toString(),\n index,\n };\n if (treeItem.children && treeItem.children.length >= 0) {\n runTimeTreeItem.children = [];\n treeItem.children.forEach((child, treeItemIndex) => {\n runTimeTreeItem.children[treeItemIndex] = this.calculateRunTimeState(child, treeItemIndex, runTimeTreeItem.path);\n });\n }\n return runTimeTreeItem;\n }\n\n private filterTreeData(runTimeTreeData: TreeDataRunTimeModel, key = 'label', filterStr: string, showChildren: boolean, show?:boolean): TreeDataRunTimeModel {\n return runTimeTreeData.filter((runTimeItem) => {\n const targetData = this.getTreeItem(runTimeItem.path).node.treeContentBlock[key];\n if (\n targetData && this.normalizedStr(targetData)?.includes(this.normalizedStr(filterStr))\n ) {\n if(runTimeItem?.children?.length > 0){\n runTimeItem.children = this.filterTreeData(runTimeItem.children, key, filterStr, showChildren, showChildren);\n }\n Object.assign(runTimeItem,{ matched: true })\n // runTimeItem.matched = true;\n return true;\n } else if (runTimeItem?.children?.length > 0) {\n runTimeItem.children = this.filterTreeData(runTimeItem.children, key, filterStr, showChildren, show);\n runTimeItem.children = runTimeItem.children.length > 0 ? runTimeItem.children : undefined;\n return runTimeItem?.children?.length > 0 || show;\n } else {\n return show;\n }\n });\n }\n\n private normalizedStr(str: string): string {\n return str\n .toLowerCase()\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '');\n }\n\n private getInitialSelection(nodes: TreeDataRunTimeModel): Array<TreeItemRunTimeModel> {\n const selection: Array<TreeItemRunTimeModel> = [];\n this.scanSelection(nodes, selection);\n return selection;\n }\n\n private scanSelection(nodes: TreeDataRunTimeModel, selection: Array<TreeItemRunTimeModel>): void {\n nodes?.forEach((item: TreeItemRunTimeModel) => {\n if (this.getTreeItem(item.path).node?.selectable && this.getTreeItem(item.path).node.isSelected) {\n selection.push(item);\n }\n if (item?.children?.length > 0) {\n this.scanSelection(item.children, selection);\n }\n });\n }\n\n private renderInitialExpand(nodes: TreeDataRunTimeModel): void {\n nodes?.forEach((item: TreeItemRunTimeModel) => {\n if (item?.children?.length > 0) {\n this.renderInitialExpand(item.children);\n }\n if (typeof this.getTreeItem(item.path).node.isExpanded !== 'undefined') {\n if(this.getTreeItem(item.path).node.isExpanded && !this.cdkTreeControl.isExpanded(item)){\n this.expandAt(item.path);\n }else if(!this.getTreeItem(item.path).node.isExpanded && this.cdkTreeControl.isExpanded(item)){\n this.cdkTreeControl.collapse(item);\n }\n }\n });\n }\n\n private expandMatched(nodes: TreeDataRunTimeModel): void {\n nodes.forEach((item: TreeItemRunTimeModel) => {\n if (item.matched) {\n const parentPath = this.getParentPaths(item.path)[0];\n if (parentPath) {\n let parentTreeItem = this.getTreeItem(parentPath);\n parentTreeItem = {\n ...parentTreeItem,\n node: {\n ...parentTreeItem.node,\n isExpanded: true,\n },\n };\n // node.isExpanded = true;\n // console.log(\"here\", parentTreeItem.node.treeContentBlock.label, parentPath, item);\n this.expandAt(parentPath);\n }\n }\n if (item?.children?.length > 0) {\n this.expandMatched(item.children);\n }\n });\n }\n\n private getRunTimeTreeItem(path: string): TreeItemRunTimeModel {\n return this.findRunTimeTreeItem(this.treeDataRunTime, path);\n }\n\n private findRunTimeTreeItem(treeDataRunTime: TreeDataRunTimeModel, path): TreeItemRunTimeModel {\n for (const runTimeItem of treeDataRunTime) {\n if (runTimeItem.path === path) {\n return runTimeItem;\n } else if (runTimeItem?.children?.length > 0) {\n const found = this.findRunTimeTreeItem(runTimeItem.children, path);\n if (found) {\n return found;\n }\n }\n }\n return null;\n }\n\n private getRunTimeBackupTreeItem(path: string): TreeItemRunTimeModel {\n const indexArr: Array<number> = this.resolvePath(path);\n let nodeArr = this.treeDataRunTimeBackup;\n let node;\n if (nodeArr && Array.isArray(nodeArr)) {\n indexArr?.forEach((pathIndex: number, index) => {\n if (index < indexArr.length - 1) {\n nodeArr = nodeArr && nodeArr[pathIndex]?.children;\n } else {\n node = nodeArr[pathIndex];\n }\n });\n }\n return node;\n }\n\n private getCssClasses(): string {\n return [\n 'eui-tree',\n this.isMultiselect ? 'eui-tree--multiselect' : '',\n this._isMultiLevel ? 'eui-tree--with-children' : '',\n this.showLines ? 'eui-tree--show-lines' : '',\n ]\n .join(' ')\n .trim();\n }\n\n private checkIfMultiLevel(tree: TreeDataModel): boolean {\n let isMultiLevel = false;\n tree.forEach((item: TreeItemModel) => {\n if (item?.children?.length >= 0) {\n isMultiLevel = true;\n }\n });\n return isMultiLevel;\n }\n\n private checkIfCurrentScrollable(scrolled: CdkScrollable): boolean {\n return scrolled.getElementRef().nativeElement === this.cdkScrollableRef.getElementRef().nativeElement;\n }\n}\n","<div class=\"eui-ul-rep eui-tree__wrapper\" cdkScrollable #cdkScrollableRef>\n <cdk-tree\n #treeComponentInstance\n [dataSource]=\"cdkArrayDataSource\"\n [treeControl]=\"cdkTreeControl\"\n [trackBy]=\"trackBy\"\n *ngIf=\"renderTree\"\n class=\"eui-cdk-tree\">\n <!-- There are two states of generic cdk-nested-tree-node declarations.\n First one is without child. No sub rendering.\n -->\n <cdk-nested-tree-node *cdkTreeNodeDef=\"let treeRunTimeItemModel\" class=\"eui-cdk-nested-tree-node\">\n <div *ngIf=\"treeRunTimeItemModel\"\n class=\"eui-li-rep eui-tree-node\"\n [class.eui-tree-node--first]=\"treeRunTimeItemModel?.path === '0'\"\n [class.eui-tree-node--last]=\"treeRunTimeItemModel.last\"\n title=\"{{\n getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.tooltipLabel ||\n getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.label\n }}\">\n <div class=\"eui-tree-node-wrapper\"\n (click)=\"onNodeClick(treeRunTimeItemModel, $event)\">\n <div class=\"eui-tree-node-wrapper__container\">\n <!--\n Renders node in default or provided template's context.\n Generates onSelect with onSelectFn for developers to send the events from their custom check events.\n Provides id to be used on generic template\n -->\n <ng-container\n [ngTemplateOutlet]=\"nodeTemplateRef || nodeTemplateDefault\"\n [ngTemplateOutletContext]=\"{\n $implicit: getTreeItem(treeRunTimeItemModel?.path)?.node,\n onSelect: onSelectFn(treeRunTimeItemModel.path),\n id: uid + treeRunTimeItemModel.path,\n path: treeRunTimeItemModel.path\n }\">\n </ng-container>\n </div>\n </div>\n </div>\n </cdk-nested-tree-node>\n <!-- This is the tree node template for expandable nodes -->\n <cdk-nested-tree-node\n *cdkTreeNodeDef=\"let treeRunTimeItemModel; when: hasChild\"\n class=\"eui-cdk-nested-tree-node eui-cdk-nested-tree-node--with-child\">\n <div\n class=\"eui-li-rep eui-tree-node eui-tree-node--with-child\"\n [class.eui-tree-node--first]=\"treeRunTimeItemModel?.path === '0'\"\n [class.eui-tree-node--last]=\"treeRunTimeItemModel.last\"\n *ngIf=\"treeRunTimeItemModel\"\n title=\"{{\n getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.tooltipLabel ||\n getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.label\n }}\">\n <div\n class=\"eui-tree-node-wrapper\">\n <!--Here wraps the node, and listen for node clicks.-->\n <div (click)=\"onNodeClick(treeRunTimeItemModel, $event)\" class=\"eui-tree-node-wrapper__container\">\n <!-- Expand/collapse action button -->\n <button\n tabindex=\"0\"\n euiButton\n euiIconButton\n euiBasicButton\n euiRounded\n euiSizeS\n type=\"button\"\n [attr.aria-label]=\"'Toggle ' + getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.label\"\n (click)=\"onNodeToggle(treeRunTimeItemModel)\"\n cdkTreeNodeToggle\n class=\"eui-tree-node__button\">\n <eui-icon-svg\n *ngIf=\"!cdkTreeControl.isExpanded(treeRunTimeItemModel)\"\n [icon]=\"expandedSvgIconClass\"></eui-icon-svg>\n <eui-icon-svg\n *ngIf=\"cdkTreeControl.isExpanded(treeRunTimeItemModel)\"\n [icon]=\"collapsedSvgIconClass\"></eui-icon-svg>\n </button>\n <!--\n Renders node in default or provided template's context.\n Generates onSelect with onSelectFn for developers to send the events from their custom check events.\n Provides id to be used on generic template\n -->\n <ng-container\n [ngTemplateOutlet]=\"nodeTemplateRef || nodeTemplateDefault\"\n [ngTemplateOutletContext]=\"{\n $implicit: getTreeItem(treeRunTimeItemModel.path)?.node,\n onSelect: onSelectFn(treeRunTimeItemModel.path),\n id: uid + treeRunTimeItemModel.path,\n path: treeRunTimeItemModel.path,\n children: getTreeItem(treeRunTimeItemModel?.path)?.children\n }\">\n </ng-container>\n </div>\n </div>\n <!--uses cdkTreeNodeOutlet to render children nodes, CdkTreeControl is used to control isExpanded state.-->\n <div class=\"eui-ul-rep eui-tree-node\" role=\"group\" *ngIf=\"cdkTreeControl.isExpanded(treeRunTimeItemModel)\">\n <ng-container cdkTreeNodeOutlet></ng-container>\n </div>\n </div>\n </cdk-nested-tree-node>\n </cdk-tree>\n</div>\n\n<ng-template #nodeTemplateDefault let-node let-onSelect=\"onSelect\" let-id=\"id\" let-path=\"path\">\n <ng-container *ngIf=\"node\">\n <div class=\"eui-tree-node-wrapper__container-left\" [class.eui-tree-node-wrapper__container-left--selected]=\"node?.isSelected\">\n <!--input checkbox area-->\n <input\n euiInputCheckBox\n *ngIf=\"node && node.selectable\"\n type=\"checkbox\"\n id=\"{{ id }}\"\n [checked]=\"!!node?.isSelected\"\n [indeterminate]=\"!!node?.isIndeterminate\"\n (change)=\"onSelect($event)\" />\n\n <!--icon area-->\n <ng-container *ngIf=\"node?.treeContentBlock?.iconSvgName\">\n <eui-icon-svg\n icon=\"{{ node?.treeContentBlock?.iconSvgName }}\"\n fillColor=\"{{ node?.treeContentBlock?.iconTypeClass || 'neutral' }}\"\n size=\"s\"\n class=\"eui-u-mr-xs\">\n </eui-icon-svg>\n </ng-container>\n\n <!--chips area-->\n <ng-container *ngIf=\"node?.treeContentBlock?.chips\">\n <eui-chip\n *ngFor=\"let chip of node.treeContentBlock.chips\"\n euiSizeS\n [euiVariant]=\"chip.typeClass || 'secondary'\"\n [euiOutline]=\"chip.isOutline\"\n class=\"eui-chip--rounded eui-u-mr-xs\">\n <span euiLabel>{{ chip.label }}</span>\n </eui-chip>\n </ng-container>\n\n <!--badge (typeLabel & typeClass) area-->\n <ng-container *ngIf=\"node?.treeContentBlock?.typeLabel\" [ngSwitch]=\"node?.treeContentBlock?.typeClass\">\n <eui-badge euiSizeM [euiVariant]=\"node?.treeContentBlock?.typeClass || 'primary'\" class=\"eui-u-flex-no-shrink eui-u-mr-xs\">\n {{ node?.treeContentBlock?.typeLabel }}\n </eui-badge>\n </ng-container>\n </div>\n\n <!--label area-->\n <div class=\"eui-tree-node-wrapper__container-middle\">\n <label\n *ngIf=\"!node?.treeContentBlock?.url && !node?.treeContentBlock?.urlExternal\"\n euiLabel\n for=\"{{ id }}\"\n class=\"eui-u-text-truncate eui-u-p-2xs\"\n [class.eui-label--selected]=\"\n highlightPath\n ? getRunTimeSelectionRecursiveState(path)?.selectionRecursiveState === 'indeterminate' || node?.isSelected\n : node?.isSelected\n \"\n [class.eui-u-cursor-pointer]=\"node?.selectable\">\n {{ autoTranslate ? (node?.treeContentBlock?.label | translate) : node?.treeContentBlock?.label }}\n </label>\n <label *ngIf=\"node?.treeContentBlock?.url\" euiLabel for=\"{{ id }}\" class=\"eui-u-text-truncate eui-u-p-2xs\">\n <a\n class=\"eui-u-text-link\"\n [class.eui-u-text-link-standalone]=\"!showUnderlinedLinks\"\n [routerLink]=\"node?.treeContentBlock?.url\">\n {{ autoTranslate ? (node?.treeContentBlock?.label | translate) : node?.treeContentBlock?.label }}\n </a>\n </label>\n <label *ngIf=\"node?.treeContentBlock?.urlExternal\" euiLabel for=\"{{ id }}\" class=\"eui-u-text-truncate eui-u-p-2xs\">\n <a\n class=\"eui-u-text-link-external\"\n [class.eui-u-text-link-external-standalone]=\"!showUnderlinedLinks\"\n href=\"{{ node?.treeContentBlock?.urlExternal }}\"\n target=\"{{ node?.treeContentBlock?.urlExternalTarget || 'blank' }}\">\n {{ autoTranslate ? (node?.treeContentBlock?.label | translate) : node?.treeContentBlock?.label }}\n </a>\n </label>\n </div>\n\n <div *ngIf=\"node?.treeContentBlock?.rightContent\" class=\"eui-tree-node-wrapper__container-right\">\n <!--badges area-->\n <ng-container *ngFor=\"let badge of node.treeContentBlock.rightContent?.badges\">\n <eui-badge euiOutline [euiVariant]=\"badge.typeClass || 'secondary'\" class=\"eui-u-ml-xs\">\n <span euiLabel>{{ badge.label }}</span>\n </eui-badge>\n </ng-container>\n\n <!--chips area-->\n <ng-container *ngFor=\"let chip of node.treeContentBlock.rightContent?.chips\">\n <eui-chip\n euiSizeS\n [euiVariant]=\"chip.typeClass || 'secondary'\"\n [euiOutline]=\"chip.isOutline\"\n class=\"eui-chip--rounded eui-u-mb-none eui-u-ml-xs\">\n <span euiLabel>{{ chip.label }}</span>\n </eui-chip>\n </ng-container>\n\n <!--Context menu-->\n <ng-container *ngIf=\"node.treeContentBlock.rightContent?.contextMenuMetaData && rightContextMenuTemplateRef\">\n <eui-dropdown class=\"eui-u-ml-xs\">\n <button euiButton euiSizeS euiRounded euiIconButton euiBasicButton euiSecondary [attr.aria-label]=\"'Options menu'\">\n <eui-icon-svg icon=\"ellipsis-vertical:sharp\"></eui-icon-svg>\n </button>\n <eui-dropdown-content>\n <ng-template\n [ngTemplateOutlet]=\"rightContextMenuTemplateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: node?.treeContentBlock?.rightContent?.contextMenuMetaData,\n metadata: node?.treeContentBlock?.rightContent?.contextMenuMetaData\n }\">\n </ng-template>\n </eui-dropdown-content>\n </eui-dropdown>\n </ng-container>\n </div>\n\n <!--metadata, uses the help of ng template to generate dynamic expand variable without handling state -->\n <ng-container\n *ngIf=\"node.treeContentBlock?.metadata && nodeContentMetadataTemplateRef\"\n [ngTemplateOutlet]=\"nodeContentMetadataContainer\"\n [ngTemplateOutletContext]=\"{\n $implicit: { expanded: false }\n }\" />\n <ng-template #nodeContentMetadataContainer let-metaDataContainer>\n <button\n euiButton\n euiBasicButton\n euiIconButton\n euiRounded\n euiSizeS\n type=\"button\"\n aria-label=\"expand collapse tree item\"\n (click)=\"metaDataContainer.expanded = !metaDataContainer.expanded\">\n <eui-icon-svg [icon]=\"metaDataContainer.expanded ? 'chevron-down:sharp' : 'chevron-forward:sharp'\"></eui-icon-svg>\n </button>\n <div *ngIf=\"metaDataContainer.expanded\" class=\"eui-tree-node__metacontent\">\n <!--passing metadata of the node content to provided template-ref:nodeContentMetadataTemplateRef-->\n <ng-template\n [ngTemplateOutlet]=\"nodeContentMetadataTemplateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: node?.treeContentBlock?.metadata,\n metadata: node?.treeContentBlock?.metadata\n }\">\n </ng-template>\n </div>\n </ng-template>\n </ng-container>\n</ng-template>\n","import {\n Directive,\n AfterContentInit,\n ContentChild,\n Input,\n TemplateRef,\n AfterViewInit,\n ChangeDetectorRef,\n ElementRef,\n Renderer2,\n inject,\n} from '@angular/core';\nimport { EuiTreeComponent } from './eui-tree.component';\nimport { TreeDataModel } from './eui-tree.model';\nimport { EuiDropdownComponent } from '@eui/components/eui-dropdown';\n\n@Directive({\n selector: 'eui-dropdown[euiDropdownTree]',\n})\nexport class EuiDropdownTreeDirective implements AfterContentInit, AfterViewInit {\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n @Input() buttonTemplateRef: TemplateRef<any>;\n @ContentChild(EuiTreeComponent, { static: false }) euiTree: EuiTreeComponent;\n\n private buttonLabel: string;\n private buttonViewRef;\n private changeDetectorRef = inject(ChangeDetectorRef);\n private hostElement = inject(ElementRef);\n private renderer = inject(Renderer2);\n private euiDropdown = inject(EuiDropdownComponent, { host: true });\n\n ngAfterContentInit(): void {\n this.buttonLabel = this.createButtonLabel(this.euiTree.getSelection());\n this.euiTree.selectionChange.subscribe((selectionChanges) => {\n this.buttonLabel = this.createButtonLabel(selectionChanges.selection);\n this.buttonViewRef.context.$implicit = this.buttonLabel;\n this.buttonViewRef.detectChanges();\n });\n }\n\n ngAfterViewInit(): void {\n if (this.buttonTemplateRef) {\n const triggerContainer = this.hostElement.nativeElement.querySelector('.eui-dropdown__trigger-container');\n if (!triggerContainer) {\n console.error('Could not find the triggerContainer');\n return;\n }\n while (triggerContainer.firstChild) {\n triggerContainer.removeChild(triggerContainer.firstChild);\n }\n this.buttonViewRef = this.buttonTemplateRef.createEmbeddedView({ $implicit: this.buttonLabel });\n this.buttonViewRef.detectChanges();\n\n this.buttonViewRef.rootNodes.forEach((node) => {\n if (node.nodeType === Node.ELEMENT_NODE) {\n this.renderer.appendChild(triggerContainer, node);\n }\n });\n }\n }\n\n private createButtonLabel(selection: TreeDataModel): string {\n if (selection?.length > 0) {\n return this.euiTree\n .getSelection()\n ?.map((item) => item.node.treeContentBlock.label)\n .join(',') as string;\n }\n return 'No node selected.';\n }\n}\n","import { TreeDataModel, TreeItemModel } from './eui-tree.model';\n\nexport class EuiTreeHelper {\n private readonly treeData: TreeDataModel;\n\n constructor(treeData: TreeDataModel) {\n this.treeData = treeData;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public getPath(value: any, identifierKey = 'node.treeContentBlock.id'): string {\n if(typeof value !=='undefined'){\n const paths: Array<string> = [];\n this.traverse(this.treeData, '', [value], paths, undefined, identifierKey);\n return paths[0];\n }\n return null;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public getPaths(values: Array<any>, identifierKey?: string): Array<string> {\n const paths: Array<string> = [];\n this.traverse(this.treeData, '', values, paths, undefined, identifierKey);\n return paths;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public getItems(values: Array<any>, identifierKey?: string): Array<TreeItemModel> {\n const matchedItems: Array<TreeItemModel> = [];\n this.traverse(this.treeData, '', values, undefined, matchedItems, identifierKey);\n return matchedItems;\n }\n\n private traverse(\n tree: TreeDataModel,\n currentPath: string,\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n values: Array<any>,\n paths?: Array<string>,\n items?: Array<TreeItemModel>,\n identifierKey?: string,\n ): void {\n for (const [i, item] of tree.entries()) {\n const valueToCheck = identifierKey ? this.getValueAtKey(item, identifierKey) : item;\n\n if (values.some((v) => this.deepEqual(v, valueToCheck))) {\n if (paths) paths.push(`${currentPath}${i}`);\n if (items) items.push(item);\n }\n\n if (item.children && item.children.length) {\n this.traverse(item.children, `${currentPath}${i}.`, values, paths, items, identifierKey);\n }\n }\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private getValueAtKey(object: any, key: string): any {\n const keys = key.split('.');\n let current = object;\n for (const k of keys) {\n if (current[k] !== undefined) {\n current = current[k];\n } else {\n return undefined;\n }\n }\n return current;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private deepEqual(obj1: any, obj2: any): boolean {\n if (obj1 === obj2) {\n return true;\n }\n if (typeof obj1 !== 'object' || obj1 === null || typeof obj2 !== 'object' || obj2 === null) {\n return false;\n }\n const keys1 = Object.keys(obj1);\n const keys2 = Object.keys(obj2);\n\n if (keys1.length !== keys2.length) {\n return false;\n }\n for (const key of keys1) {\n if (!keys2.includes(key) || !this.deepEqual(obj1[key], obj2[key])) {\n return false;\n }\n }\n return true;\n }\n}\n","import { Directive, forwardRef, AfterContentInit, Input, NgModule, inject } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { EuiTreeComponent } from './eui-tree.component';\nimport { EuiTreeSelectionChanges, TreeDataModel, TreeItemModel } from './eui-tree.model';\nimport { EuiTreeHelper } from './eui-tree-helper';\n\n@Directive({\n selector: 'eui-tree[euiTreeFormControl]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EuiTreeFormControlDirective),\n multi: true,\n },\n ],\n})\nexport class EuiTreeFormControlDirective implements ControlValueAccessor, AfterContentInit {\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private onChange: (value: any) => void;\n private onTouched: () => void;\n private tree = inject(EuiTreeComponent, { host: true });\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n @Input() euiTreeControlValueSetter: (selection: TreeDataModel) => any = (selection: TreeDataModel) => {\n return new EuiTreeHelper(this.tree.nodes).getItems(selection.map(item=>item.node.treeContentBlock.id), 'node.treeContentBlock.id');\n };\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n @Input() euiTreeControlModelMapper: (model: any, tree?: TreeDataModel) => Array<TreeItemModel> = (model: Array<TreeItemModel>) => {\n return model;\n };\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n writeValue(value: any): void {\n this.tree.setAllSelection(false);\n if (typeof value !== 'undefined' && value !== null && value?.length > 0) {\n const initialItems = this.euiTreeControlModelMapper(value, this.tree.nodes);\n const paths = new EuiTreeHelper(this.tree.nodes).getPaths(initialItems);\n paths.forEach((path: string) => {\n this.tree.nodeSelected({ target: { checked: true } }, path);\n });\n }\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n ngAfterContentInit(): void {\n this.tree.selectionChange.subscribe((selectionChanges: EuiTreeSelectionChanges) => {\n this.onChange(this.euiTreeControlValueSetter(selectionChanges.selection));\n });\n }\n}\n\n","import { EuiTreeComponent } from './eui-tree.component';\n\nexport * from './eui-tree.component';\nexport * from './eui-tree.model';\nexport * from './eui-dropdown-tree.directive';\nexport * from './eui-tree-form-control.directive';\nexport * from './eui-tree-helper';\n\nexport const EUI_TREE = [\n EuiTreeComponent,\n] as const;\n\n// export { EuiTreeComponent as EuiTree } from './eui-tree.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"eui-components-eui-tree.mjs","sources":["../../eui-tree/eui-tree.model.ts","../../eui-tree/eui-tree.component.ts","../../eui-tree/eui-tree.component.html","../../eui-tree/eui-dropdown-tree.directive.ts","../../eui-tree/eui-tree-helper.ts","../../eui-tree/eui-tree-form-control.directive.ts","../../eui-tree/index.ts","../../eui-tree/eui-components-eui-tree.ts"],"sourcesContent":["import { UxLinkLegacy } from '@eui/core';\n\nexport type TreeDataModel = Array<TreeItemModel>;\n\nexport type TreeItemModel = {\n node: TreeNode;\n children?: TreeDataModel;\n};\n\nexport type TreeNode = {\n // metadata can be block content, or any\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n treeContentBlock: EuiTreeContentBlockModel | any;\n} & SelectionModel &\n ExpandModel;\n\nexport interface EuiTreeContentBlockModel {\n id?: string | number;\n label: string;\n tooltipLabel: string;\n url: string;\n urlExternal: string;\n urlExternalTarget: string;\n typeLabel: string;\n typeClass: string;\n chips?: Array<{ label: string; typeClass?: string; isOutline?: boolean }>;\n iconClass: string;\n iconTypeClass: string;\n iconSvgName?: string;\n rightContent?: {\n iconClass: string;\n iconTypeClass: string;\n iconSvgName?: string;\n badges?: Array<{ label: string; typeClass: string }>;\n chips?: Array<{ label: string; typeClass?: string; isOutline?: boolean }>;\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n contextMenuMetaData?: any;\n };\n metaData: string;\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n}\n\nexport type SelectionModel = {\n selectable?: boolean;\n isSelected?: boolean;\n // if one of sub is selected, it becomes intermediate\n isIndeterminate?: boolean;\n selectConfig?: SelectConfigModel;\n};\n\nexport interface SelectConfigModel extends MultiSelectionLogic, SingleSelectionLogic {\n /*\n If It is true;\n When user select parent, all the children will be selected\n When selection state is changed, If all children is selected parent will be selected as long as noAutoSelectParent is not true\n */\n recursive?: boolean;\n /* when It is true, If all children is selected, parent will not be selected, while recursive is true*/\n noAutoSelectParent?: boolean;\n singleSelect?: boolean;\n}\n\nexport interface MultiSelectionLogic {\n /*\n If It is true;\n When user select parent, all the children will be selected\n When selection state is changed, If all children is selected parent will be selected as long as noAutoSelectParent is not true\n */\n recursive?: boolean;\n /* when It is true, If all children is selected, parent will not be selected, while recursive is true*/\n noAutoSelectParent?: boolean;\n}\n\nexport interface SingleSelectionLogic {\n singleSelect?: boolean;\n}\n\nexport type ExpandModel = {\n isExpanded?: boolean;\n};\n\nexport type EuiTreeSelectionChanges = { added: TreeDataModel; removed: TreeDataModel; selection: TreeDataModel };\n\nexport type TreeDataRunTimeModel = Array<TreeItemRunTimeModel>;\n\nexport type TreeItemRunTimeModel = { index: number; path: string; children?: Array<TreeItemRunTimeModel>; last?: boolean, matched?: boolean };\n\nexport type TreeItemSelectionRecursiveModel = {\n selectionRecursiveState: SelectionRecursiveState;\n children?: Array<TreeItemSelectionRecursiveModel>;\n};\n\nexport type SelectionRecursiveState = 'indeterminate' | 'allSelected' | 'allNotSelected';\n\n// eslint-disable-next-line prefer-arrow/prefer-arrow-functions\nexport function uxTreeNodesMetaDataMapper(oldTree: Array<UxLinkLegacy>): TreeDataModel {\n return oldTree.map((item) => {\n if (item?.typeClass === 'default') {\n // default typeClass will be\n item.typeClass = 'secondary';\n }\n if (item?.badgeLabel) {\n // default typeClass will be\n if (item?.badges?.length > 0) {\n item.badges.push({ label: item?.badgeLabel, typeClass: 'secondary' });\n } else {\n item.badges = [{ label: item?.badgeLabel, typeClass: 'secondary' }];\n }\n }\n return {\n node: {\n treeContentBlock: {\n label: item.label,\n typeLabel: item.typeLabel,\n typeClass: item.typeLabel && !item.typeClass ? 'secondary' : item.typeClass,\n tooltipLabel: item.tooltipLabel,\n url: item.url,\n urlExternal: item.urlExternal,\n urlExternalTarget: item.urlExternal && item.urlExternalTarget ? item.urlExternalTarget : undefined,\n badges: item.badges,\n metadata: item.metadata,\n },\n },\n children: item.children ? uxTreeNodesMetaDataMapper(item.children) : undefined,\n };\n });\n}\n\nexport class EuiTreePagination<T> {\n private data: T[];\n private startPage: number;\n private totalItems: number;\n private renderedPageCount: number;\n private perPage: number;\n private totalPages: number;\n\n constructor(data: T[], startPage: number, renderedPageCount: number, perPage: number) {\n this.data = data;\n this.setCurrentStartPage(startPage);\n this.renderedPageCount = renderedPageCount;\n this.totalItems = this.data.length;\n this.perPage = perPage;\n this.totalPages = Math.ceil(this.totalItems / this.perPage);\n }\n\n public paginateNext(): { startPage: number; data: T[] } {\n if (this.startPage < this.totalPages) {\n this.startPage += 1;\n }\n return this.getViewData();\n }\n\n public paginatePrev(): { startPage: number; data: T[] } {\n if (this.startPage > 1) {\n this.startPage -= 1;\n }\n return this.getViewData();\n }\n\n public getCurrentStartPage(): number {\n return this.startPage;\n }\n\n public setCurrentStartPage(startPage: number): void {\n this.startPage = startPage;\n }\n\n public isAtMax(): boolean {\n return this.totalPages < this.startPage + this.renderedPageCount;\n }\n\n public getViewData(): { startPage: number; data: T[] } {\n const startIndex = (this.startPage - 1) * this.perPage;\n const endIndex = startIndex + this.perPage * this.renderedPageCount;\n const pageData = structuredClone(this.data).slice(startIndex, endIndex);\n return {\n startPage: this.startPage,\n data: pageData,\n };\n }\n}\n\nexport class CustomNodeSelectFnHelper{\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(private compInstance: any) {\n }\n\n select(path: string, isChecked: boolean): void{\n this.compInstance.silentSelect(path, isChecked);\n }\n\n getParents(path: string): Array<string>{\n return this.compInstance.getParentPaths(path);\n }\n\n getTreeItem(path: string): TreeItemModel{\n return this.compInstance.getTreeItem(path);\n }\n\n getSelectionRecursiveState(path: string): TreeItemSelectionRecursiveModel{\n return this.compInstance.getRunTimeSelectionRecursiveState(path);\n }\n\n}\n\nexport type CustomNodeSelectFn = (path: string, isChecked:boolean, treeItem: TreeItemModel, helper: CustomNodeSelectFnHelper) => void;\n","import {\n Component,\n Input,\n ChangeDetectionStrategy,\n EventEmitter,\n Output,\n ViewEncapsulation,\n TemplateRef,\n ChangeDetectorRef,\n SimpleChanges,\n OnInit,\n OnChanges,\n HostBinding,\n OnDestroy,\n booleanAttribute,\n ViewChild,\n inject,\n numberAttribute,\n} from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport {\n SelectionRecursiveState,\n TreeDataModel,\n TreeItemModel,\n TreeDataRunTimeModel,\n TreeItemRunTimeModel,\n TreeItemSelectionRecursiveModel,\n EuiTreeSelectionChanges,\n EuiTreePagination,\n CustomNodeSelectFn,\n CustomNodeSelectFnHelper,\n} from './eui-tree.model';\nimport { FormsModule } from '@angular/forms';\nimport { EUI_INPUT_CHECKBOX } from '@eui/components/eui-input-checkbox';\nimport { EUI_BUTTON } from '@eui/components/eui-button';\nimport { EUI_ICON } from '@eui/components/eui-icon';\nimport { EUI_LABEL } from '@eui/components/eui-label';\nimport { EUI_BADGE } from '@eui/components/eui-badge';\nimport { EUI_CHIP } from '@eui/components/eui-chip';\nimport { EUI_DROPDOWN } from '@eui/components/eui-dropdown';\nimport { NestedTreeControl, CdkTreeModule, CdkTree } from '@angular/cdk/tree';\nimport { ArrayDataSource, SelectionModel } from '@angular/cdk/collections';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ScrollingModule, ScrollDispatcher, CdkScrollable } from '@angular/cdk/scrolling';\nimport { debounceTime, Subscription } from 'rxjs';\nimport { NgFor, NgIf, NgSwitch, NgTemplateOutlet } from '@angular/common';\n\n/**\n * @description\n * The eui-tree can be used to display hierarchy data with optional added behavior inside node templates and interactions\n * that could affect the rendered data such as expand, collapse, direct actions, extra menu actions, etc.\n *\n */\n@Component({\n selector: 'eui-tree',\n templateUrl: './eui-tree.component.html',\n styleUrl: './eui-tree.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n NgIf,\n NgSwitch,\n NgFor,\n NgTemplateOutlet,\n FormsModule,\n TranslateModule,\n ScrollingModule,\n CdkTreeModule,\n RouterModule,\n ...EUI_INPUT_CHECKBOX,\n ...EUI_BUTTON,\n ...EUI_ICON,\n ...EUI_LABEL,\n ...EUI_BADGE,\n ...EUI_CHIP,\n ...EUI_DROPDOWN,\n ],\n})\nexport class EuiTreeComponent implements OnInit, OnChanges, OnDestroy {\n @HostBinding('class')\n public get cssClasses(): string {\n return this.getCssClasses();\n }\n @HostBinding('attr.data-e2e') @Input() e2eAttr = 'eui-tree';\n /**\n * Hierarchy of data to display in the tree\n */\n @Input() nodes: TreeDataModel;\n /**\n * Reference to the `ng-template` used to render node item\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n @Input() nodeTemplateRef: TemplateRef<any>;\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n @Input() nodeContentMetadataTemplateRef: TemplateRef<any>;\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n @Input() rightContextMenuTemplateRef: TemplateRef<any>;\n @Input() customNodeSelectFn: CustomNodeSelectFn;\n /**\n * Icon to display when a node is closed\n *\n * @default 'chevron-forward:sharp'\n */\n @Input() expandedSvgIconClass = 'chevron-forward:sharp';\n /**\n * Icon to display when a node is opened\n *\n * @default 'chevron-down:sharp'\n */\n @Input() collapsedSvgIconClass = 'chevron-down:sharp';\n\n @ViewChild('cdkScrollableRef', { read: CdkScrollable }) cdkScrollableRef: CdkScrollable;\n @ViewChild('treeComponentInstance') public treeComponentInstance: CdkTree<TreeItemRunTimeModel>;\n\n /**\n * Whether the full node display can be clicked to toggle the node.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) isClickTogglingNode = false;\n /**\n * Whether multiple nodes can be selected.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) isMultiselect = false;\n /**\n * Whether only one node can be selected. Select one will unselect the previous selected.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) isSingleSelect = false;\n /**\n * In combination with `isMultiselect`. Whether the selection of a node will automatically select its children.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) isRecursiveSelection = false;\n /**\n * In combination with `isMultiselect`. Whether the selection of all children will automatically select the parent.\n *\n * @default true\n */\n @Input({ transform: booleanAttribute }) isRecursiveParentSelection = true;\n /**\n * Whether the links are underlined on hiver in the tree.\n *\n * @default true\n */\n @Input({ transform: booleanAttribute }) showUnderlinedLinks = false;\n /**\n * Whether the lines are displayed on the left of nodes.\n *\n * @default true\n */\n @Input({ transform: booleanAttribute }) showLines = true;\n /**\n * Whether i18n key can be passed to be translated with `TranslateService`.\n *\n * @default true\n */\n @Input({ transform: booleanAttribute }) autoTranslate = true;\n /**\n * Whether all parents till the selected are highlighted in bold.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) highlightPath = false;\n /**\n * Treshold for the virtual scroll to be activated\n *\n * @default 800\n */\n @Input({ transform: numberAttribute }) virtualScrollThreshold = 800;\n /**\n * Size of the virtaul scroll pages\n *\n * @default 400\n */\n @Input({ transform: numberAttribute }) virtualScrollPageSize = 400;\n\n @Output() selectionChange = new EventEmitter<EuiTreeSelectionChanges>();\n @Output() nodeClick = new EventEmitter<TreeItemModel>();\n @Output() nodeToggle = new EventEmitter<TreeItemModel>();\n cdkArrayDataSource: ArrayDataSource<TreeItemRunTimeModel>;\n cdkTreeControl: NestedTreeControl<TreeItemRunTimeModel>;\n renderTree: boolean;\n public uid: string = Math.floor(Math.random() * 1000000000).toString();\n protected _isMultiLevel: boolean;\n private processedNodes: TreeDataModel;\n private treeDataRunTime: TreeDataRunTimeModel;\n private treeDataRunTimeBackup: TreeDataRunTimeModel;\n private runTimeSelectionRecursiveState: Array<TreeItemSelectionRecursiveModel>;\n private selectionModel: SelectionModel<TreeItemRunTimeModel>;\n private tempSelectionModel: SelectionModel<TreeItemRunTimeModel>;\n private selectionModelSubs: Subscription;\n private scrollDispatcherSubs: Subscription;\n private _selection: TreeDataModel;\n private treePagination: EuiTreePagination<TreeItemRunTimeModel>;\n private changeDetectorRef = inject(ChangeDetectorRef);\n private scrollDispatcher = inject(ScrollDispatcher);\n\n ngOnInit(): void {\n this.initTree();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['nodes']?.currentValue !== changes['nodes']?.previousValue) {\n this.renderTree = false;\n this.initTree();\n if(this.treeComponentInstance) {\n this.treeComponentInstance?.renderNodeChanges([]);\n this.treeComponentInstance?.renderNodeChanges(this.treeDataRunTime);\n }\n }\n }\n\n ngOnDestroy(): void {\n if (this.selectionModelSubs) {\n this.selectionModelSubs.unsubscribe();\n }\n if (this.scrollDispatcherSubs) {\n this.scrollDispatcherSubs.unsubscribe();\n }\n }\n\n getSelection(): TreeDataModel {\n return this._selection;\n }\n\n getProcessedNodes(): TreeDataModel {\n return this.processedNodes;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n trackBy(index: number, item: TreeItemRunTimeModel): any {\n return item.path;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n trackByControl(item: TreeItemRunTimeModel): any {\n return item;\n }\n\n getTreeItem(path: string): TreeItemModel {\n const indexArr: Array<number> = this.resolvePath(path);\n let nodeArr = this.processedNodes;\n let node;\n if (nodeArr && Array.isArray(nodeArr)) {\n indexArr?.forEach((pathIndex: number, index) => {\n if (index < indexArr.length - 1) {\n nodeArr = nodeArr && nodeArr[pathIndex]?.children;\n } else {\n node = nodeArr[pathIndex];\n }\n });\n }\n return node;\n }\n\n expandAll(): void {\n this.cdkTreeControl.expandAll();\n this.changeDetectorRef.markForCheck();\n }\n\n expandAt(path: string): void {\n this.getParentPaths(path).reverse().forEach((parentPath)=>{\n this.cdkTreeControl.expand(this.getRunTimeTreeItem(parentPath));\n });\n this.cdkTreeControl.expand(this.getRunTimeTreeItem(path));\n this.changeDetectorRef.detectChanges();\n }\n\n collapseAll(): void {\n this.cdkTreeControl.collapseAll();\n this.changeDetectorRef.markForCheck();\n }\n\n filterTerm(filterInput: string, filterKey?: string, showChildrenOfMatchedItems?: boolean): void {\n if (filterInput !== '' && filterInput !== null && typeof filterInput !== 'undefined') {\n this.treeDataRunTime = this.filterTreeData(structuredClone(this.treeDataRunTimeBackup), filterKey || 'label', filterInput, showChildrenOfMatchedItems);\n this.treeDataRunTime = this.applyRunTimeLastItems(this.treeDataRunTime);\n\n this.treePagination = new EuiTreePagination<TreeItemRunTimeModel>(this.treeDataRunTime, 1, 2, this.virtualScrollPageSize);\n const paginatedData = this.treePagination.getViewData().data;\n\n this.cdkArrayDataSource = new ArrayDataSource(paginatedData);\n this.cdkTreeControl = new NestedTreeControl<TreeItemRunTimeModel>((node) => node?.children, { trackBy: this.trackByControl });\n\n this.cdkTreeControl.dataNodes = this.treeDataRunTime;\n this.renderTree = false;\n this.changeDetectorRef.detectChanges();\n this.renderTree = true;\n this.changeDetectorRef.detectChanges();\n this.expandMatched(paginatedData);\n // this.expandAll();\n } else {\n this.treeDataRunTime = structuredClone(this.treeDataRunTimeBackup);\n\n this.treePagination = new EuiTreePagination<TreeItemRunTimeModel>(this.treeDataRunTime, 1, 2, this.virtualScrollPageSize);\n const paginatedData = this.treePagination.getViewData().data;\n\n this.cdkArrayDataSource = new ArrayDataSource(paginatedData);\n this.cdkTreeControl = new NestedTreeControl<TreeItemRunTimeModel>((node) => node?.children, { trackBy: this.trackByControl });\n this.cdkTreeControl.dataNodes = this.treeDataRunTime;\n this.renderTree = false;\n this.changeDetectorRef.detectChanges();\n this.renderTree = true;\n this.changeDetectorRef.detectChanges();\n this.expandAll();\n }\n }\n\n setAllSelection(isChecked: boolean): void {\n this.tempSelectionModel = new SelectionModel<TreeItemRunTimeModel>(\n true,\n this.selectionModel.selected,\n true,\n (a, b) => a?.path === b?.path,\n );\n this.setIsCheckedForAll(this.treeDataRunTime, isChecked);\n this.selectionModel.setSelection(...this.tempSelectionModel.selected);\n this.changeDetectorRef.markForCheck();\n }\n\n updateTreeItem(givenTreeItem: TreeItemModel, path: string): void {\n const treeItem = structuredClone(givenTreeItem);\n if (treeItem && path) {\n this.tempSelectionModel = new SelectionModel<TreeItemRunTimeModel>(\n true,\n this.selectionModel.selected,\n true,\n (a, b) => a?.path === b?.path,\n );\n this.setTreeData(path, this.processInputs([treeItem])[0]);\n const pathArr = path.split('.');\n const index = parseInt(pathArr.pop(), 10);\n const treeItemRuntime = this.calculateRunTimeState(treeItem, index, pathArr.join('.'));\n if (treeItemRuntime?.children?.length > 0) {\n treeItemRuntime.children = this.applyRunTimeLastItems(treeItemRuntime.children);\n }\n this.setTreeDataRunTimeBackup(path, treeItemRuntime);\n this.setTreeDataRunTime(path, treeItemRuntime);\n // itemRecursiveSelectionState\n const itemRecursiveSelectionState = this.calculateItemSelectionRecursiveState(treeItem);\n this.setRunTimeSelectionRecursiveStateTree(path, itemRecursiveSelectionState);\n this.syncStateChangesAtPath(path);\n if (this.cdkTreeControl.isExpanded(treeItemRuntime) && !treeItem.node.isExpanded) {\n this.cdkTreeControl.toggle(treeItemRuntime);\n } else if (!this.cdkTreeControl.isExpanded(treeItemRuntime) && treeItem.node.isExpanded) {\n this.cdkTreeControl.expand(treeItemRuntime);\n }\n this.renderInitialExpand(this.getRunTimeTreeItem(path)?.children);\n this.getInitialSelection(this.getRunTimeTreeItem(path)?.children)?.forEach((runTimeItem) => {\n this.selectTreeItem(this.getRunTimeBackupTreeItem(runTimeItem.path));\n });\n this.selectionModel.setSelection(...this.tempSelectionModel.selected);\n // Rendering\n this.changeDetectorRef.detectChanges();\n this.treeComponentInstance.renderNodeChanges([]);\n this.treeComponentInstance.renderNodeChanges(this.treeDataRunTime);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onNodeClick(treeRunTimeItem: TreeItemRunTimeModel, e: any): void {\n if (!this.isMultiselect || e.pointerId !== -1) {\n this.nodeClick.emit(this.getTreeItem(treeRunTimeItem?.path));\n }\n\n if (this.isClickTogglingNode) {\n this.cdkTreeControl.toggle(treeRunTimeItem);\n this.onNodeToggle(treeRunTimeItem);\n }\n }\n\n onNodeToggle(treeRunTimeItem: TreeItemRunTimeModel): void {\n this.getTreeItem(treeRunTimeItem?.path).node.isExpanded = this.cdkTreeControl.isExpanded(treeRunTimeItem);\n this.nodeToggle.emit(this.getTreeItem(treeRunTimeItem?.path));\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nodeSelected(evt: any, path: string): void {\n const item = this.getTreeItem(path);\n const runTimeBackupTreeItem = this.getRunTimeBackupTreeItem(path);\n const renderedRunTimeTreeItem = this.getRunTimeTreeItem(path);\n const node = item?.node;\n this.tempSelectionModel = new SelectionModel<TreeItemRunTimeModel>(\n true,\n this.selectionModel.selected,\n true,\n (a, b) => a?.path === b?.path,\n );\n // console.log(path,item,runTimeTreeItem, renderedRunTimeTreeItem);\n if(this.customNodeSelectFn){\n this.customNodeSelectFn(path, evt.target.checked, item, new CustomNodeSelectFnHelper(this));\n this.selectionModel.setSelection(...this.tempSelectionModel.selected);\n } else if (!node?.selectConfig?.singleSelect) {\n node.isSelected = evt.target.checked;\n node.isIndeterminate = false;\n // If the node is recursive it sets every children with the change.\n if (renderedRunTimeTreeItem?.children && renderedRunTimeTreeItem?.children?.length > 0) {\n if (node?.selectConfig?.recursive) {\n // console.log(renderedRunTimeTreeItem);\n this.setIsCheckedForAll(renderedRunTimeTreeItem?.children, evt.target.checked);\n }\n }\n\n this.setRunTimeSelectionRecursiveStateTree(\n path,\n this.calculateItemSelectionRecursiveState(structuredClone(this.getTreeItem(path))),\n );\n if (renderedRunTimeTreeItem?.children && renderedRunTimeTreeItem?.children?.length >= 0) {\n if (node?.selectConfig?.recursive) {\n // this.setIsCheckedForAll(renderedRunTimeTreeItem?.children, evt.target.checked);\n this.runStateChangesForAll(renderedRunTimeTreeItem?.children);\n }\n this.treeComponentInstance?.renderNodeChanges([]);\n this.treeComponentInstance?.renderNodeChanges(this.treeDataRunTime);\n }\n this.syncStateChangesAtPath(path);\n if (this.getTreeItem(path).node.isSelected) {\n this.selectTreeItem(runTimeBackupTreeItem);\n } else {\n this.deselectTreeItem(runTimeBackupTreeItem);\n }\n const nodePathsSeq = this.getParentPaths(path);\n if (nodePathsSeq.length > 0) {\n nodePathsSeq.forEach((nodePath: string) => {\n const treeItem = this.getTreeItem(nodePath);\n const childStates = this.getRunTimeSelectionRecursiveState(nodePath).children.map((_) => _.selectionRecursiveState);\n this.updateRunTimeSelectionRecursiveState(\n nodePath,\n this.decideSelectionRecursiveState(\n childStates,\n treeItem.node?.isSelected,\n treeItem.node?.selectConfig?.recursive,\n treeItem.node?.selectConfig?.noAutoSelectParent,\n ),\n );\n this.syncStateChangesAtPath(nodePath);\n });\n this.changeDetectorRef.detectChanges();\n } else {\n this.changeDetectorRef.detectChanges();\n }\n this.selectionModel.setSelection(...this.tempSelectionModel.selected);\n } else {\n const prevItem = this.selectionModel.selected[0];\n if (evt.target.checked) {\n if (prevItem) {\n this.getTreeItem(prevItem.path).node.isSelected = false;\n this.selectionModel.deselect(prevItem);\n }\n item.node.isSelected = true;\n this.selectionModel.select(runTimeBackupTreeItem);\n } else {\n item.node.isSelected = false;\n this.selectionModel.deselect(runTimeBackupTreeItem);\n }\n if (this.highlightPath) {\n if (evt.target.checked && prevItem) {\n const prevItemNodePathsSeq = this.getParentPaths(prevItem.path);\n if (prevItemNodePathsSeq.length > 0) {\n prevItemNodePathsSeq.forEach((nodePath: string) => {\n this.updateRunTimeSelectionRecursiveState(nodePath, 'allNotSelected');\n this.syncStateChangesAtPath(nodePath);\n });\n }\n }\n const nodePathsSeq = this.getParentPaths(path);\n if (nodePathsSeq?.length > 0) {\n nodePathsSeq.forEach((nodePath: string) => {\n this.updateRunTimeSelectionRecursiveState(nodePath, evt.target.checked ? 'indeterminate' : 'allNotSelected');\n this.syncStateChangesAtPath(nodePath);\n });\n this.changeDetectorRef.detectChanges();\n }\n }\n }\n }\n\n hasChild = (_: number, item: TreeItemRunTimeModel): boolean => !!item?.children && item?.children?.length >= 0;\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onSelectFn(path: string): (evt: any) => void {\n if (this.getTreeItem(path)?.node?.selectable) {\n const nodeSelected = this.nodeSelected.bind(this);\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (evt: any) => nodeSelected(evt, path);\n }\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (evt: any) => {\n console.warn('treeItemModel.node.selectable is false, you can not implement onSelect');\n };\n }\n\n getRunTimeSelectionRecursiveState(path: string): TreeItemSelectionRecursiveModel {\n const indexArr: Array<number> = this.resolvePath(path);\n let nodeArr = this.runTimeSelectionRecursiveState;\n let node;\n indexArr?.forEach((pathIndex: number, index) => {\n if (index < indexArr.length - 1) {\n nodeArr = nodeArr[pathIndex]?.children;\n } else {\n node = nodeArr[pathIndex];\n }\n });\n return node;\n }\n\n private initTree(): void {\n if (this.nodes) {\n this._isMultiLevel = this.checkIfMultiLevel(this.nodes);\n this.processedNodes = this.processInputs(structuredClone(this.nodes));\n this.treeDataRunTime = this.createTreeDataRuntime(this.processedNodes);\n this.treeDataRunTime = this.applyRunTimeLastItems(this.treeDataRunTime);\n this.runTimeSelectionRecursiveState = this.createRunTimeSelectionRecursiveState(this.processedNodes);\n this.treeDataRunTimeBackup = structuredClone(this.treeDataRunTime);\n\n if (this.treeDataRunTimeBackup.length > this.virtualScrollThreshold) {\n this.treePagination = new EuiTreePagination<TreeItemRunTimeModel>(this.treeDataRunTimeBackup, 1, 2, this.virtualScrollPageSize);\n const paginatedData = this.treePagination.getViewData().data;\n this.cdkArrayDataSource = new ArrayDataSource<TreeItemRunTimeModel>(paginatedData);\n this.cdkTreeControl = new NestedTreeControl<TreeItemRunTimeModel>((node) => node?.children, {\n trackBy: this.trackByControl,\n });\n this.cdkTreeControl.dataNodes = paginatedData;\n this.runScrollListener();\n } else {\n this.cdkArrayDataSource = new ArrayDataSource<TreeItemRunTimeModel>(this.treeDataRunTime);\n this.cdkTreeControl = new NestedTreeControl<TreeItemRunTimeModel>((node) => node?.children, {\n trackBy: this.trackByControl,\n });\n this.cdkTreeControl.dataNodes = this.treeDataRunTime;\n }\n this.renderInitialExpand(this.treeDataRunTime);\n this.selectionModel = new SelectionModel<TreeItemRunTimeModel>(\n true,\n this.getInitialSelection(this.treeDataRunTime),\n true,\n (a, b) => a?.path === b?.path,\n );\n this._selection = [...this.selectionModel.selected]?.map((item) => this.getTreeItem(item?.path));\n this.renderTree = true;\n if (this.selectionModelSubs) {\n this.selectionModelSubs.unsubscribe();\n }\n this.selectionModelSubs = this.selectionModel.changed.pipe(debounceTime(1)).subscribe((sc) => {\n const selectionChange = {\n added: sc.added.map((_) => this.getTreeItem(_.path)),\n removed: sc.removed.map((_) => this.getTreeItem(_.path)),\n selection: [...this.selectionModel.selected].map((item) => this.getTreeItem(item.path)),\n };\n this._selection = selectionChange.selection;\n this.selectionChange.emit(selectionChange);\n });\n this.changeDetectorRef.markForCheck();\n }\n }\n\n private processInputs(treeData: TreeDataModel): TreeDataModel {\n if (this.isMultiselect) {\n treeData = this.overrideTreeDataModelForSelection(treeData, this.isRecursiveSelection, !this.isRecursiveParentSelection);\n }\n if (this.isSingleSelect) {\n treeData = this.overrideTreeDataModelForSelection(treeData, false, false, true);\n }\n return treeData;\n }\n\n private overrideTreeDataModelForSelection(\n nodeArr: TreeDataModel,\n isRecursive: boolean,\n noAutoSelectParent: boolean,\n singleSelect?: boolean,\n ): TreeDataModel {\n return nodeArr?.map((item: TreeItemModel, index: number) => {\n if (item?.children && item.children.length > 0) {\n return {\n ...item,\n node: {\n ...item.node,\n selectable: typeof item?.node?.selectable === 'undefined' ? true : item?.node?.selectable,\n // isSelected: false,\n // isIndeterminate: false,\n selectConfig: {\n ...item.node.selectConfig,\n recursive:\n typeof item?.node?.selectConfig?.recursive === 'undefined'\n ? !!isRecursive\n : item?.node?.selectConfig?.recursive,\n noAutoSelectParent:\n typeof item?.node?.selectConfig?.noAutoSelectParent === 'undefined'\n ? noAutoSelectParent\n : item?.node?.selectConfig?.noAutoSelectParent,\n singleSelect:\n typeof item?.node?.selectConfig?.singleSelect === 'undefined'\n ? singleSelect\n : item?.node?.selectConfig?.singleSelect,\n },\n },\n children: this.overrideTreeDataModelForSelection(item.children, isRecursive, noAutoSelectParent, singleSelect),\n };\n } else {\n return {\n ...item,\n node: {\n ...item.node,\n selectable: typeof item?.node?.selectable === 'undefined' ? true : item?.node?.selectable,\n selectConfig: {\n ...item.node?.selectConfig,\n singleSelect:\n typeof item?.node?.selectConfig?.singleSelect === 'undefined'\n ? singleSelect\n : item?.node?.selectConfig?.singleSelect,\n },\n },\n };\n }\n });\n }\n\n private runScrollListener(): void {\n /* if (this.scrollDispatcherSubs) { todo\n this.scrollDispatcherSubs.unsubscribe();\n }*/\n this.scrollDispatcherSubs = this.scrollDispatcher.scrolled().subscribe((scrollable: CdkScrollable) => {\n if (scrollable && this.checkIfCurrentScrollable(scrollable)) {\n const isAtBottom =\n scrollable?.getElementRef().nativeElement.scrollTop + scrollable?.getElementRef().nativeElement.clientHeight >=\n scrollable?.getElementRef().nativeElement.scrollHeight;\n const isAtTop = scrollable?.getElementRef().nativeElement.scrollTop === 0;\n // console.log('Element:', this.cdkScrollableRef.getElementRef());\n if (isAtBottom && !this.treePagination.isAtMax()) {\n if (this.nodes.length > 0) {\n this.treeDataRunTime = this.treePagination.paginateNext().data;\n this.treeDataRunTime = this.applyRunTimeLastItems(this.treeDataRunTime);\n this.cdkArrayDataSource = new ArrayDataSource(this.treeDataRunTime);\n this.cdkTreeControl = new NestedTreeControl<TreeItemRunTimeModel>((node) => node?.children, {\n trackBy: this.trackByControl,\n });\n this.cdkTreeControl.dataNodes = this.treeDataRunTime;\n this.renderTree = false;\n this.changeDetectorRef.detectChanges();\n this.renderTree = true;\n this.changeDetectorRef.detectChanges();\n this.expandAll();\n const totalHeight = scrollable.measureScrollOffset('bottom') + scrollable.measureScrollOffset('top');\n const viewportHeight = scrollable.getElementRef().nativeElement.clientHeight;\n const positionToScroll = totalHeight - viewportHeight;\n scrollable.scrollTo({ top: positionToScroll / 2 });\n }\n } else if (isAtTop && this.treePagination.getCurrentStartPage() > 1) {\n if (this.nodes.length > 0) {\n this.treeDataRunTime = this.treePagination.paginatePrev().data;\n this.treeDataRunTime = this.applyRunTimeLastItems(this.treeDataRunTime);\n this.cdkArrayDataSource = new ArrayDataSource(this.treeDataRunTime);\n this.cdkTreeControl = new NestedTreeControl<TreeItemRunTimeModel>((node) => node?.children, {\n trackBy: this.trackByControl,\n });\n this.cdkTreeControl.dataNodes = this.treeDataRunTime;\n this.renderTree = false;\n this.changeDetectorRef.detectChanges();\n this.renderTree = true;\n this.changeDetectorRef.detectChanges();\n this.expandAll();\n const totalHeight = scrollable.measureScrollOffset('bottom') + scrollable.measureScrollOffset('top');\n const viewportHeight = scrollable.getElementRef().nativeElement.clientHeight;\n const positionToScroll = totalHeight - viewportHeight;\n scrollable.scrollTo({ top: positionToScroll / 2 + viewportHeight });\n }\n }\n }\n });\n }\n\n private getSelectionIndexOfItem(runTimeTreeItem: TreeItemRunTimeModel): number {\n return this.selectionModel.selected.findIndex((i) => i?.path === runTimeTreeItem?.path);\n }\n // todo re-think about the access from custom on node select helper\n private silentSelect(path:string, isChecked: boolean): void{\n const runtimeBackupTreeItem = this.getRunTimeBackupTreeItem(path);\n const treeItem = this.getTreeItem(path);\n const node = treeItem.node;\n if (node?.selectable) {\n node.isSelected = isChecked;\n node.isIndeterminate = false;\n if (isChecked) {\n this.tempSelectionModel.select(runtimeBackupTreeItem);\n } else {\n this.tempSelectionModel.deselect(runtimeBackupTreeItem);\n }\n }\n }\n\n private selectTreeItem(runTimeBackupTreeItem: TreeItemRunTimeModel): void {\n this.tempSelectionModel.select(runTimeBackupTreeItem);\n }\n\n private deselectTreeItem(runTimeTreeItem: TreeItemRunTimeModel): void {\n this.tempSelectionModel.deselect(runTimeTreeItem);\n }\n\n private createTreeDataRuntime(nodes: TreeDataModel): TreeDataRunTimeModel {\n return structuredClone(nodes)?.map((item, index) => {\n return this.calculateRunTimeState(item, index);\n });\n }\n\n private applyRunTimeLastItems(items: TreeDataRunTimeModel): TreeDataRunTimeModel {\n return items?.map((item, index) => {\n if (item?.children) {\n return {\n ...item,\n last: items.length === index + 1 ? true : undefined,\n children: item.children?.length > 0 ? this.applyRunTimeLastItems(item.children) : item?.children,\n };\n } else {\n return {\n ...item,\n last: items.length === index + 1 ? true : undefined,\n };\n }\n });\n }\n\n private createRunTimeSelectionRecursiveState(nodes: TreeDataModel): Array<TreeItemSelectionRecursiveModel> {\n return structuredClone(nodes)?.map((item) => this.calculateItemSelectionRecursiveState({ ...item }));\n }\n\n // Creating run time state which includes children selection state for selection tree.\n private calculateItemSelectionRecursiveState(treeItem: TreeItemModel): TreeItemSelectionRecursiveModel {\n const childrenSelectionRecursive: Array<TreeItemSelectionRecursiveModel> = [];\n if (treeItem.children && treeItem.children.length > 0) {\n treeItem.children.forEach((child, index) => {\n childrenSelectionRecursive[index] = this.calculateItemSelectionRecursiveState(child);\n });\n }\n const childStates = childrenSelectionRecursive.map((_) => _.selectionRecursiveState);\n const itemState: SelectionRecursiveState = treeItem.node.selectable ? this.decideSelectionRecursiveState(\n childStates,\n treeItem.node.isSelected,\n treeItem.node?.selectConfig?.recursive,\n treeItem.node?.selectConfig?.noAutoSelectParent,\n ) : undefined;\n return {\n selectionRecursiveState: itemState,\n children: childrenSelectionRecursive,\n };\n }\n\n private decideSelectionRecursiveState(\n childStates: Array<SelectionRecursiveState> = [],\n isSelected: boolean,\n recursive: boolean,\n noAutoSelectParent: boolean,\n ): SelectionRecursiveState {\n let itemState: SelectionRecursiveState = 'indeterminate';\n if (isSelected && childStates.filter((childStates)=>childStates).every((state) => state === 'allSelected')) {\n itemState = 'allSelected';\n } else if (!isSelected && childStates.filter((childStates)=>childStates).every((state) => state === 'allNotSelected')) {\n itemState = 'allNotSelected';\n } else if (recursive && childStates.filter((childStates)=>childStates).every((state) => state === 'allSelected') && !isSelected && !noAutoSelectParent) {\n itemState = 'allSelected';\n } else if (recursive && childStates.filter((childStates)=>childStates).every((state) => state === 'allNotSelected') && isSelected) {\n itemState = 'allNotSelected';\n }\n return itemState;\n }\n\n private syncStateChangesAtPath(nodePath): void {\n const treeItem = this.getTreeItem(nodePath);\n const runTimeBackupTreeItem = this.getRunTimeBackupTreeItem(nodePath);\n const runTimeSelectionRecursiveItem = this.getRunTimeSelectionRecursiveState(nodePath);\n if (treeItem?.node?.selectable && treeItem.node?.selectConfig?.recursive) {\n if (!treeItem.node?.selectConfig?.noAutoSelectParent) {\n treeItem.node = {\n ...treeItem.node,\n isSelected: runTimeSelectionRecursiveItem.selectionRecursiveState === 'allSelected',\n isIndeterminate: runTimeSelectionRecursiveItem.selectionRecursiveState === 'indeterminate',\n };\n } else {\n treeItem.node = {\n ...treeItem.node,\n isSelected: treeItem.node.isSelected && runTimeSelectionRecursiveItem.selectionRecursiveState === 'allSelected',\n isIndeterminate:\n runTimeSelectionRecursiveItem.selectionRecursiveState === 'indeterminate' ||\n (!treeItem.node.isSelected && runTimeSelectionRecursiveItem.selectionRecursiveState === 'allSelected'),\n };\n }\n // console.log(treeItem, treeItem.node.treeContentBlock.label, 'isSelected:' + treeItem.node.isSelected, 'isIndeterminate:' + treeItem.node.isIndeterminate);\n if (treeItem.node.isSelected === true && !this.selectionModel.isSelected(runTimeBackupTreeItem)) {\n this.selectTreeItem(runTimeBackupTreeItem);\n } else if (treeItem.node.isSelected === false && this.selectionModel.isSelected(runTimeBackupTreeItem)) {\n this.deselectTreeItem(runTimeBackupTreeItem);\n }\n }\n }\n\n private setTreeData(path: string, item: TreeItemModel): void {\n const indexArr: Array<number> = this.resolvePath(path);\n let itemArr = this.processedNodes;\n indexArr?.forEach((pathIndex: number, index) => {\n if (index < indexArr.length - 1) {\n itemArr = itemArr[pathIndex]?.children;\n } else {\n itemArr[pathIndex] = item;\n }\n });\n }\n\n private setTreeDataRunTimeBackup(path: string, item: TreeItemRunTimeModel): void {\n const indexArr: Array<number> = this.resolvePath(path);\n let itemArr = this.treeDataRunTimeBackup;\n indexArr.forEach((pathIndex: number, index) => {\n if (index < indexArr.length - 1) {\n itemArr = itemArr[pathIndex]?.children;\n } else {\n itemArr[pathIndex] = item;\n }\n });\n }\n\n private setTreeDataRunTime(path: string, item: TreeItemRunTimeModel): void {\n const oldItem = this.getRunTimeTreeItem(path);\n if(oldItem){\n Object.keys(item)?.forEach(key => {\n oldItem[key] = item[key];\n });\n }\n }\n\n private setRunTimeSelectionRecursiveStateTree(path: string, item: TreeItemSelectionRecursiveModel): void {\n const indexArr: Array<number> = this.resolvePath(path);\n let itemArr = this.runTimeSelectionRecursiveState;\n indexArr.forEach((pathIndex: number, index) => {\n if (index < indexArr.length - 1) {\n itemArr = itemArr[pathIndex]?.children;\n } else {\n itemArr[pathIndex] = item;\n }\n });\n }\n\n private updateRunTimeSelectionRecursiveState(path: string, selectionRecursiveState: SelectionRecursiveState): void {\n const indexArr: Array<number> = this.resolvePath(path);\n let itemArr = this.runTimeSelectionRecursiveState;\n indexArr.forEach((pathIndex: number, index) => {\n if (index < indexArr.length - 1) {\n itemArr = itemArr[pathIndex]?.children;\n } else {\n itemArr[pathIndex] = {\n ...itemArr[pathIndex],\n selectionRecursiveState,\n };\n }\n });\n }\n\n private setIsCheckedForAll(nodeArr: Array<TreeItemRunTimeModel>, isChecked: boolean): void {\n nodeArr.forEach((runTimeItem: TreeItemRunTimeModel, index: number) => {\n const runtimeBackupTreeItem = this.getRunTimeBackupTreeItem(runTimeItem.path);\n const treeItem = this.getTreeItem(runTimeItem.path);\n const node = treeItem.node;\n if (node?.selectable) {\n node.isSelected = isChecked;\n node.isIndeterminate = false;\n if (isChecked) {\n this.selectTreeItem(runtimeBackupTreeItem);\n } else {\n this.deselectTreeItem(runtimeBackupTreeItem);\n }\n }\n if (runTimeItem?.children?.length > 0) {\n this.setIsCheckedForAll(nodeArr[index].children, isChecked);\n }\n });\n }\n\n private runStateChangesForAll(nodeArr: Array<TreeItemRunTimeModel>): void {\n nodeArr?.forEach((runTimeItem: TreeItemRunTimeModel, index: number) => {\n if (runTimeItem?.children?.length >= 0) {\n this.runStateChangesForAll(nodeArr[index].children);\n this.syncSelectionAtPath(runTimeItem);\n }\n });\n }\n\n private syncSelectionAtPath(runTimeTreeItem: TreeItemRunTimeModel): void {\n // It is here for the filter edge case.\n this.syncStateChangesAtPath(runTimeTreeItem.path);\n // Sets isSelected change on the control.\n if (this.getTreeItem(runTimeTreeItem.path).node.isSelected) {\n this.selectTreeItem(this.getRunTimeBackupTreeItem(runTimeTreeItem.path));\n } else {\n this.deselectTreeItem(this.getRunTimeBackupTreeItem(runTimeTreeItem.path));\n }\n }\n\n private resolvePath(path: string): Array<number> {\n return path?.split('.').map((index: string) => parseInt(index, 10));\n }\n\n private getParentPaths(path: string): Array<string> {\n const pathArr = path.split('.');\n const hasParent = pathArr.length > 1;\n // Sets the hasParent If there is a parent, and removes the last element form pathArr.\n if (hasParent) {\n pathArr.pop();\n // Calculates parent path\n const parentPath = pathArr.join('.');\n // Creating node index sequence f.e If path is '1.2' it will be [1,2]\n const nodeIndexSeq = parentPath.split('.').map((indexStr) => parseInt(indexStr, 10));\n // Calculating the node paths array to be re-calculated from bottom to top\n const nodePathsSeq = [];\n nodeIndexSeq.forEach((nodeIndex, index) => {\n nodePathsSeq[index] = nodeIndexSeq.slice(0, index + 1).join('.');\n });\n return nodePathsSeq.reverse();\n } else {\n return [];\n }\n }\n\n private calculateRunTimeState(treeItem: TreeItemModel, index: number, parentPath?: string): TreeItemRunTimeModel {\n const runTimeTreeItem: TreeItemRunTimeModel = {\n path: parentPath ? parentPath + '.' + index : index.toString(),\n index,\n };\n if (treeItem.children && treeItem.children.length >= 0) {\n runTimeTreeItem.children = [];\n treeItem.children.forEach((child, treeItemIndex) => {\n runTimeTreeItem.children[treeItemIndex] = this.calculateRunTimeState(child, treeItemIndex, runTimeTreeItem.path);\n });\n }\n return runTimeTreeItem;\n }\n\n private filterTreeData(runTimeTreeData: TreeDataRunTimeModel, key = 'label', filterStr: string, showChildren: boolean, show?:boolean): TreeDataRunTimeModel {\n return runTimeTreeData.filter((runTimeItem) => {\n const targetData = this.getTreeItem(runTimeItem.path).node.treeContentBlock[key];\n if (\n targetData && this.normalizedStr(targetData)?.includes(this.normalizedStr(filterStr))\n ) {\n if(runTimeItem?.children?.length > 0){\n runTimeItem.children = this.filterTreeData(runTimeItem.children, key, filterStr, showChildren, showChildren);\n }\n Object.assign(runTimeItem,{ matched: true })\n // runTimeItem.matched = true;\n return true;\n } else if (runTimeItem?.children?.length > 0) {\n runTimeItem.children = this.filterTreeData(runTimeItem.children, key, filterStr, showChildren, show);\n runTimeItem.children = runTimeItem.children.length > 0 ? runTimeItem.children : undefined;\n return runTimeItem?.children?.length > 0 || show;\n } else {\n return show;\n }\n });\n }\n\n private normalizedStr(str: string): string {\n return str\n .toLowerCase()\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '');\n }\n\n private getInitialSelection(nodes: TreeDataRunTimeModel): Array<TreeItemRunTimeModel> {\n const selection: Array<TreeItemRunTimeModel> = [];\n this.scanSelection(nodes, selection);\n return selection;\n }\n\n private scanSelection(nodes: TreeDataRunTimeModel, selection: Array<TreeItemRunTimeModel>): void {\n nodes?.forEach((item: TreeItemRunTimeModel) => {\n if (this.getTreeItem(item.path).node?.selectable && this.getTreeItem(item.path).node.isSelected) {\n selection.push(item);\n }\n if (item?.children?.length > 0) {\n this.scanSelection(item.children, selection);\n }\n });\n }\n\n private renderInitialExpand(nodes: TreeDataRunTimeModel): void {\n nodes?.forEach((item: TreeItemRunTimeModel) => {\n if (item?.children?.length > 0) {\n this.renderInitialExpand(item.children);\n }\n if (typeof this.getTreeItem(item.path).node.isExpanded !== 'undefined') {\n if(this.getTreeItem(item.path).node.isExpanded && !this.cdkTreeControl.isExpanded(item)){\n this.expandAt(item.path);\n }else if(!this.getTreeItem(item.path).node.isExpanded && this.cdkTreeControl.isExpanded(item)){\n this.cdkTreeControl.collapse(item);\n }\n }\n });\n }\n\n private expandMatched(nodes: TreeDataRunTimeModel): void {\n nodes.forEach((item: TreeItemRunTimeModel) => {\n if (item.matched) {\n const parentPath = this.getParentPaths(item.path)[0];\n if (parentPath) {\n let parentTreeItem = this.getTreeItem(parentPath);\n parentTreeItem = {\n ...parentTreeItem,\n node: {\n ...parentTreeItem.node,\n isExpanded: true,\n },\n };\n // node.isExpanded = true;\n // console.log(\"here\", parentTreeItem.node.treeContentBlock.label, parentPath, item);\n this.expandAt(parentPath);\n }\n }\n if (item?.children?.length > 0) {\n this.expandMatched(item.children);\n }\n });\n }\n\n private getRunTimeTreeItem(path: string): TreeItemRunTimeModel {\n return this.findRunTimeTreeItem(this.treeDataRunTime, path);\n }\n\n private findRunTimeTreeItem(treeDataRunTime: TreeDataRunTimeModel, path): TreeItemRunTimeModel {\n for (const runTimeItem of treeDataRunTime) {\n if (runTimeItem.path === path) {\n return runTimeItem;\n } else if (runTimeItem?.children?.length > 0) {\n const found = this.findRunTimeTreeItem(runTimeItem.children, path);\n if (found) {\n return found;\n }\n }\n }\n return null;\n }\n\n private getRunTimeBackupTreeItem(path: string): TreeItemRunTimeModel {\n const indexArr: Array<number> = this.resolvePath(path);\n let nodeArr = this.treeDataRunTimeBackup;\n let node;\n if (nodeArr && Array.isArray(nodeArr)) {\n indexArr?.forEach((pathIndex: number, index) => {\n if (index < indexArr.length - 1) {\n nodeArr = nodeArr && nodeArr[pathIndex]?.children;\n } else {\n node = nodeArr[pathIndex];\n }\n });\n }\n return node;\n }\n\n private getCssClasses(): string {\n return [\n 'eui-tree',\n this.isMultiselect ? 'eui-tree--multiselect' : '',\n this._isMultiLevel ? 'eui-tree--with-children' : '',\n this.showLines ? 'eui-tree--show-lines' : '',\n ]\n .join(' ')\n .trim();\n }\n\n private checkIfMultiLevel(tree: TreeDataModel): boolean {\n let isMultiLevel = false;\n tree.forEach((item: TreeItemModel) => {\n if (item?.children?.length >= 0) {\n isMultiLevel = true;\n }\n });\n return isMultiLevel;\n }\n\n private checkIfCurrentScrollable(scrolled: CdkScrollable): boolean {\n return scrolled.getElementRef().nativeElement === this.cdkScrollableRef.getElementRef().nativeElement;\n }\n}\n","<div class=\"eui-ul-rep eui-tree__wrapper\" cdkScrollable #cdkScrollableRef>\n <cdk-tree\n #treeComponentInstance\n [dataSource]=\"cdkArrayDataSource\"\n [treeControl]=\"cdkTreeControl\"\n [trackBy]=\"trackBy\"\n *ngIf=\"renderTree\"\n class=\"eui-cdk-tree\">\n <!-- There are two states of generic cdk-nested-tree-node declarations.\n First one is without child. No sub rendering.\n -->\n <cdk-nested-tree-node *cdkTreeNodeDef=\"let treeRunTimeItemModel\" class=\"eui-cdk-nested-tree-node\">\n <div *ngIf=\"treeRunTimeItemModel\"\n class=\"eui-li-rep eui-tree-node\"\n [class.eui-tree-node--first]=\"treeRunTimeItemModel?.path === '0'\"\n [class.eui-tree-node--last]=\"treeRunTimeItemModel.last\"\n title=\"{{\n getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.tooltipLabel ||\n getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.label\n }}\">\n <div class=\"eui-tree-node-wrapper\"\n (click)=\"onNodeClick(treeRunTimeItemModel, $event)\">\n <div class=\"eui-tree-node-wrapper__container\">\n <!--\n Renders node in default or provided template's context.\n Generates onSelect with onSelectFn for developers to send the events from their custom check events.\n Provides id to be used on generic template\n -->\n <ng-container\n [ngTemplateOutlet]=\"nodeTemplateRef || nodeTemplateDefault\"\n [ngTemplateOutletContext]=\"{\n $implicit: getTreeItem(treeRunTimeItemModel?.path)?.node,\n onSelect: onSelectFn(treeRunTimeItemModel.path),\n id: uid + treeRunTimeItemModel.path,\n path: treeRunTimeItemModel.path\n }\">\n </ng-container>\n </div>\n </div>\n </div>\n </cdk-nested-tree-node>\n <!-- This is the tree node template for expandable nodes -->\n <cdk-nested-tree-node\n *cdkTreeNodeDef=\"let treeRunTimeItemModel; when: hasChild\"\n class=\"eui-cdk-nested-tree-node eui-cdk-nested-tree-node--with-child\">\n <div\n class=\"eui-li-rep eui-tree-node eui-tree-node--with-child\"\n [class.eui-tree-node--first]=\"treeRunTimeItemModel?.path === '0'\"\n [class.eui-tree-node--last]=\"treeRunTimeItemModel.last\"\n *ngIf=\"treeRunTimeItemModel\"\n title=\"{{\n getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.tooltipLabel ||\n getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.label\n }}\">\n <div\n class=\"eui-tree-node-wrapper\">\n <!--Here wraps the node, and listen for node clicks.-->\n <div (click)=\"onNodeClick(treeRunTimeItemModel, $event)\" class=\"eui-tree-node-wrapper__container\">\n <!-- Expand/collapse action button -->\n <button\n tabindex=\"0\"\n euiButton\n euiIconButton\n euiBasicButton\n euiRounded\n euiSizeS\n type=\"button\"\n [attr.aria-label]=\"'Toggle ' + getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.label\"\n (click)=\"onNodeToggle(treeRunTimeItemModel)\"\n cdkTreeNodeToggle\n class=\"eui-tree-node__button\">\n <eui-icon-svg\n *ngIf=\"!cdkTreeControl.isExpanded(treeRunTimeItemModel)\"\n [icon]=\"expandedSvgIconClass\"></eui-icon-svg>\n <eui-icon-svg\n *ngIf=\"cdkTreeControl.isExpanded(treeRunTimeItemModel)\"\n [icon]=\"collapsedSvgIconClass\"></eui-icon-svg>\n </button>\n <!--\n Renders node in default or provided template's context.\n Generates onSelect with onSelectFn for developers to send the events from their custom check events.\n Provides id to be used on generic template\n -->\n <ng-container\n [ngTemplateOutlet]=\"nodeTemplateRef || nodeTemplateDefault\"\n [ngTemplateOutletContext]=\"{\n $implicit: getTreeItem(treeRunTimeItemModel.path)?.node,\n onSelect: onSelectFn(treeRunTimeItemModel.path),\n id: uid + treeRunTimeItemModel.path,\n path: treeRunTimeItemModel.path,\n children: getTreeItem(treeRunTimeItemModel?.path)?.children\n }\">\n </ng-container>\n </div>\n </div>\n <!--uses cdkTreeNodeOutlet to render children nodes, CdkTreeControl is used to control isExpanded state.-->\n <div class=\"eui-ul-rep eui-tree-node\" role=\"group\" *ngIf=\"cdkTreeControl.isExpanded(treeRunTimeItemModel)\">\n <ng-container cdkTreeNodeOutlet></ng-container>\n </div>\n </div>\n </cdk-nested-tree-node>\n </cdk-tree>\n</div>\n\n<ng-template #nodeTemplateDefault let-node let-onSelect=\"onSelect\" let-id=\"id\" let-path=\"path\">\n <ng-container *ngIf=\"node\">\n <div class=\"eui-tree-node-wrapper__container-left\" [class.eui-tree-node-wrapper__container-left--selected]=\"node?.isSelected\">\n <!--input checkbox area-->\n <input\n euiInputCheckBox\n *ngIf=\"node && node.selectable\"\n type=\"checkbox\"\n id=\"{{ id }}\"\n [checked]=\"!!node?.isSelected\"\n [indeterminate]=\"!!node?.isIndeterminate\"\n (change)=\"onSelect($event)\" />\n\n <!--icon area-->\n <ng-container *ngIf=\"node?.treeContentBlock?.iconSvgName\">\n <eui-icon-svg\n icon=\"{{ node?.treeContentBlock?.iconSvgName }}\"\n fillColor=\"{{ node?.treeContentBlock?.iconTypeClass || 'neutral' }}\"\n size=\"s\"\n class=\"eui-u-mr-xs\">\n </eui-icon-svg>\n </ng-container>\n\n <!--chips area-->\n <ng-container *ngIf=\"node?.treeContentBlock?.chips\">\n <eui-chip\n *ngFor=\"let chip of node.treeContentBlock.chips\"\n euiSizeS\n [euiVariant]=\"chip.typeClass || 'secondary'\"\n [euiOutline]=\"chip.isOutline\"\n class=\"eui-chip--rounded eui-u-mr-xs\">\n <span euiLabel>{{ chip.label }}</span>\n </eui-chip>\n </ng-container>\n\n <!--badge (typeLabel & typeClass) area-->\n <ng-container *ngIf=\"node?.treeContentBlock?.typeLabel\" [ngSwitch]=\"node?.treeContentBlock?.typeClass\">\n <eui-badge euiSizeM [euiVariant]=\"node?.treeContentBlock?.typeClass || 'primary'\" class=\"eui-u-flex-no-shrink eui-u-mr-xs\">\n {{ node?.treeContentBlock?.typeLabel }}\n </eui-badge>\n </ng-container>\n </div>\n\n <!--label area-->\n <div class=\"eui-tree-node-wrapper__container-middle\">\n <label\n *ngIf=\"!node?.treeContentBlock?.url && !node?.treeContentBlock?.urlExternal\"\n euiLabel\n for=\"{{ id }}\"\n class=\"eui-u-text-truncate eui-u-p-2xs\"\n [class.eui-label--selected]=\"\n highlightPath\n ? getRunTimeSelectionRecursiveState(path)?.selectionRecursiveState === 'indeterminate' || node?.isSelected\n : node?.isSelected\n \"\n [class.eui-u-cursor-pointer]=\"node?.selectable\">\n {{ autoTranslate ? (node?.treeContentBlock?.label | translate) : node?.treeContentBlock?.label }}\n </label>\n <label *ngIf=\"node?.treeContentBlock?.url\" euiLabel for=\"{{ id }}\" class=\"eui-u-text-truncate eui-u-p-2xs\">\n <a\n class=\"eui-u-text-link\"\n [class.eui-u-text-link-standalone]=\"!showUnderlinedLinks\"\n [routerLink]=\"node?.treeContentBlock?.url\">\n {{ autoTranslate ? (node?.treeContentBlock?.label | translate) : node?.treeContentBlock?.label }}\n </a>\n </label>\n <label *ngIf=\"node?.treeContentBlock?.urlExternal\" euiLabel for=\"{{ id }}\" class=\"eui-u-text-truncate eui-u-p-2xs\">\n <a\n class=\"eui-u-text-link-external\"\n [class.eui-u-text-link-external-standalone]=\"!showUnderlinedLinks\"\n href=\"{{ node?.treeContentBlock?.urlExternal }}\"\n target=\"{{ node?.treeContentBlock?.urlExternalTarget || 'blank' }}\">\n {{ autoTranslate ? (node?.treeContentBlock?.label | translate) : node?.treeContentBlock?.label }}\n </a>\n </label>\n </div>\n\n <div *ngIf=\"node?.treeContentBlock?.rightContent\" class=\"eui-tree-node-wrapper__container-right\">\n <!--badges area-->\n <ng-container *ngFor=\"let badge of node.treeContentBlock.rightContent?.badges\">\n <eui-badge euiOutline [euiVariant]=\"badge.typeClass || 'secondary'\" class=\"eui-u-ml-xs\">\n <span euiLabel>{{ badge.label }}</span>\n </eui-badge>\n </ng-container>\n\n <!--chips area-->\n <ng-container *ngFor=\"let chip of node.treeContentBlock.rightContent?.chips\">\n <eui-chip\n euiSizeS\n [euiVariant]=\"chip.typeClass || 'secondary'\"\n [euiOutline]=\"chip.isOutline\"\n class=\"eui-chip--rounded eui-u-mb-none eui-u-ml-xs\">\n <span euiLabel>{{ chip.label }}</span>\n </eui-chip>\n </ng-container>\n\n <!--Context menu-->\n <ng-container *ngIf=\"node.treeContentBlock.rightContent?.contextMenuMetaData && rightContextMenuTemplateRef\">\n <eui-dropdown class=\"eui-u-ml-xs\">\n <button euiButton euiSizeS euiRounded euiIconButton euiBasicButton euiSecondary [attr.aria-label]=\"'Options menu'\">\n <eui-icon-svg icon=\"ellipsis-vertical:sharp\"></eui-icon-svg>\n </button>\n <eui-dropdown-content>\n <ng-template\n [ngTemplateOutlet]=\"rightContextMenuTemplateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: node?.treeContentBlock?.rightContent?.contextMenuMetaData,\n metadata: node?.treeContentBlock?.rightContent?.contextMenuMetaData\n }\">\n </ng-template>\n </eui-dropdown-content>\n </eui-dropdown>\n </ng-container>\n </div>\n\n <!--metadata, uses the help of ng template to generate dynamic expand variable without handling state -->\n <ng-container\n *ngIf=\"node.treeContentBlock?.metadata && nodeContentMetadataTemplateRef\"\n [ngTemplateOutlet]=\"nodeContentMetadataContainer\"\n [ngTemplateOutletContext]=\"{\n $implicit: { expanded: false }\n }\" />\n <ng-template #nodeContentMetadataContainer let-metaDataContainer>\n <button\n euiButton\n euiBasicButton\n euiIconButton\n euiRounded\n euiSizeS\n type=\"button\"\n aria-label=\"expand collapse tree item\"\n (click)=\"metaDataContainer.expanded = !metaDataContainer.expanded\">\n <eui-icon-svg [icon]=\"metaDataContainer.expanded ? 'chevron-down:sharp' : 'chevron-forward:sharp'\"></eui-icon-svg>\n </button>\n <div *ngIf=\"metaDataContainer.expanded\" class=\"eui-tree-node__metacontent\">\n <!--passing metadata of the node content to provided template-ref:nodeContentMetadataTemplateRef-->\n <ng-template\n [ngTemplateOutlet]=\"nodeContentMetadataTemplateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: node?.treeContentBlock?.metadata,\n metadata: node?.treeContentBlock?.metadata\n }\">\n </ng-template>\n </div>\n </ng-template>\n </ng-container>\n</ng-template>\n","import {\n Directive,\n AfterContentInit,\n ContentChild,\n Input,\n TemplateRef,\n AfterViewInit,\n ChangeDetectorRef,\n ElementRef,\n Renderer2,\n inject,\n} from '@angular/core';\nimport { EuiTreeComponent } from './eui-tree.component';\nimport { TreeDataModel } from './eui-tree.model';\nimport { EuiDropdownComponent } from '@eui/components/eui-dropdown';\n\n@Directive({\n selector: 'eui-dropdown[euiDropdownTree]',\n})\nexport class EuiDropdownTreeDirective implements AfterContentInit, AfterViewInit {\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n @Input() buttonTemplateRef: TemplateRef<any>;\n @ContentChild(EuiTreeComponent, { static: false }) euiTree: EuiTreeComponent;\n\n private buttonLabel: string;\n private buttonViewRef;\n private changeDetectorRef = inject(ChangeDetectorRef);\n private hostElement = inject(ElementRef);\n private renderer = inject(Renderer2);\n private euiDropdown = inject(EuiDropdownComponent, { host: true });\n\n ngAfterContentInit(): void {\n this.buttonLabel = this.createButtonLabel(this.euiTree.getSelection());\n this.euiTree.selectionChange.subscribe((selectionChanges) => {\n this.buttonLabel = this.createButtonLabel(selectionChanges.selection);\n this.buttonViewRef.context.$implicit = this.buttonLabel;\n this.buttonViewRef.detectChanges();\n });\n }\n\n ngAfterViewInit(): void {\n if (this.buttonTemplateRef) {\n const triggerContainer = this.hostElement.nativeElement.querySelector('.eui-dropdown__trigger-container');\n if (!triggerContainer) {\n console.error('Could not find the triggerContainer');\n return;\n }\n while (triggerContainer.firstChild) {\n triggerContainer.removeChild(triggerContainer.firstChild);\n }\n this.buttonViewRef = this.buttonTemplateRef.createEmbeddedView({ $implicit: this.buttonLabel });\n this.buttonViewRef.detectChanges();\n\n this.buttonViewRef.rootNodes.forEach((node) => {\n if (node.nodeType === Node.ELEMENT_NODE) {\n this.renderer.appendChild(triggerContainer, node);\n }\n });\n }\n }\n\n private createButtonLabel(selection: TreeDataModel): string {\n if (selection?.length > 0) {\n return this.euiTree\n .getSelection()\n ?.map((item) => item.node.treeContentBlock.label)\n .join(',') as string;\n }\n return 'No node selected.';\n }\n}\n","import { TreeDataModel, TreeItemModel } from './eui-tree.model';\n\nexport class EuiTreeHelper {\n private readonly treeData: TreeDataModel;\n\n constructor(treeData: TreeDataModel) {\n this.treeData = treeData;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public getPath(value: any, identifierKey = 'node.treeContentBlock.id'): string {\n if(typeof value !=='undefined'){\n const paths: Array<string> = [];\n this.traverse(this.treeData, '', [value], paths, undefined, identifierKey);\n return paths[0];\n }\n return null;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public getPaths(values: Array<any>, identifierKey?: string): Array<string> {\n const paths: Array<string> = [];\n this.traverse(this.treeData, '', values, paths, undefined, identifierKey);\n return paths;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public getItems(values: Array<any>, identifierKey?: string): Array<TreeItemModel> {\n const matchedItems: Array<TreeItemModel> = [];\n this.traverse(this.treeData, '', values, undefined, matchedItems, identifierKey);\n return matchedItems;\n }\n\n private traverse(\n tree: TreeDataModel,\n currentPath: string,\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n values: Array<any>,\n paths?: Array<string>,\n items?: Array<TreeItemModel>,\n identifierKey?: string,\n ): void {\n for (const [i, item] of tree.entries()) {\n const valueToCheck = identifierKey ? this.getValueAtKey(item, identifierKey) : item;\n\n if (values.some((v) => this.deepEqual(v, valueToCheck))) {\n if (paths) paths.push(`${currentPath}${i}`);\n if (items) items.push(item);\n }\n\n if (item.children && item.children.length) {\n this.traverse(item.children, `${currentPath}${i}.`, values, paths, items, identifierKey);\n }\n }\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private getValueAtKey(object: any, key: string): any {\n const keys = key.split('.');\n let current = object;\n for (const k of keys) {\n if (current[k] !== undefined) {\n current = current[k];\n } else {\n return undefined;\n }\n }\n return current;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private deepEqual(obj1: any, obj2: any): boolean {\n if (obj1 === obj2) {\n return true;\n }\n if (typeof obj1 !== 'object' || obj1 === null || typeof obj2 !== 'object' || obj2 === null) {\n return false;\n }\n const keys1 = Object.keys(obj1);\n const keys2 = Object.keys(obj2);\n\n if (keys1.length !== keys2.length) {\n return false;\n }\n for (const key of keys1) {\n if (!keys2.includes(key) || !this.deepEqual(obj1[key], obj2[key])) {\n return false;\n }\n }\n return true;\n }\n}\n","import { Directive, forwardRef, AfterContentInit, Input, NgModule, inject } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { EuiTreeComponent } from './eui-tree.component';\nimport { EuiTreeSelectionChanges, TreeDataModel, TreeItemModel } from './eui-tree.model';\nimport { EuiTreeHelper } from './eui-tree-helper';\n\n@Directive({\n selector: 'eui-tree[euiTreeFormControl]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EuiTreeFormControlDirective),\n multi: true,\n },\n ],\n})\nexport class EuiTreeFormControlDirective implements ControlValueAccessor, AfterContentInit {\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private onChange: (value: any) => void;\n private onTouched: () => void;\n private tree = inject(EuiTreeComponent, { host: true });\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n @Input() euiTreeControlValueSetter: (selection: TreeDataModel) => any = (selection: TreeDataModel) => {\n return new EuiTreeHelper(this.tree.nodes).getItems(selection.map(item=>item.node.treeContentBlock.id), 'node.treeContentBlock.id');\n };\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n @Input() euiTreeControlModelMapper: (model: any, tree?: TreeDataModel) => Array<TreeItemModel> = (model: Array<TreeItemModel>) => {\n return model;\n };\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n writeValue(value: any): void {\n this.tree.setAllSelection(false);\n if (typeof value !== 'undefined' && value !== null && value?.length > 0) {\n const initialItems = this.euiTreeControlModelMapper(value, this.tree.nodes);\n const paths = new EuiTreeHelper(this.tree.nodes).getPaths(initialItems);\n paths.forEach((path: string) => {\n this.tree.nodeSelected({ target: { checked: true } }, path);\n });\n }\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n ngAfterContentInit(): void {\n this.tree.selectionChange.subscribe((selectionChanges: EuiTreeSelectionChanges) => {\n this.onChange(this.euiTreeControlValueSetter(selectionChanges.selection));\n });\n }\n}\n\n","import { EuiTreeComponent } from './eui-tree.component';\n\nexport * from './eui-tree.component';\nexport * from './eui-tree.model';\nexport * from './eui-dropdown-tree.directive';\nexport * from './eui-tree-form-control.directive';\nexport * from './eui-tree-helper';\n\nexport const EUI_TREE = [\n EuiTreeComponent,\n] as const;\n\n// export { EuiTreeComponent as EuiTree } from './eui-tree.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|