@eui/components 18.2.0-snapshot-1724773712587 → 18.2.0-snapshot-1724856639646

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.
Files changed (490) hide show
  1. package/directives/eui-clearable.directive.d.ts.map +1 -1
  2. package/directives/eui-loading.directive.d.ts.map +1 -1
  3. package/directives/eui-maxlength.directive.d.ts.map +1 -1
  4. package/directives/eui-scroll-handler.directive.d.ts.map +1 -1
  5. package/directives/eui-smooth-scroll.directive.d.ts.map +1 -1
  6. package/directives/eui-tooltip/eui-tooltip.directive.d.ts.map +1 -1
  7. package/docs/components/EuiTimelineComponent.html +3 -117
  8. package/docs/components/EuiTimelineItemComponent.html +42 -1
  9. package/docs/dependencies.html +39 -39
  10. package/docs/js/search/search_index.js +2 -2
  11. package/esm2022/directives/eui-arrow-key-navigable.directive.mjs +3 -3
  12. package/esm2022/directives/eui-clearable.directive.mjs +3 -3
  13. package/esm2022/directives/eui-has-permission.directive.mjs +7 -7
  14. package/esm2022/directives/eui-loading.directive.mjs +3 -3
  15. package/esm2022/directives/eui-maxlength.directive.mjs +7 -7
  16. package/esm2022/directives/eui-resizable/eui-resizable.component.mjs +3 -3
  17. package/esm2022/directives/eui-resizable/eui-resizable.directive.mjs +3 -3
  18. package/esm2022/directives/eui-resizable/eui-resizable.module.mjs +4 -4
  19. package/esm2022/directives/eui-scroll-handler.directive.mjs +10 -10
  20. package/esm2022/directives/eui-smooth-scroll.directive.mjs +10 -10
  21. package/esm2022/directives/eui-template.directive.mjs +7 -7
  22. package/esm2022/directives/eui-tooltip/container/eui-tooltip-container.component.mjs +3 -3
  23. package/esm2022/directives/eui-tooltip/eui-tooltip.directive.mjs +3 -3
  24. package/esm2022/directives/eui-tooltip/eui-tooltip.module.mjs +4 -4
  25. package/esm2022/eui-accordion/eui-accordion-item.component.mjs +6 -6
  26. package/esm2022/eui-accordion/eui-accordion.component.mjs +3 -3
  27. package/esm2022/eui-accordion/eui-accordion.module.mjs +4 -4
  28. package/esm2022/eui-alert/components/eui-alert-title.component.mjs +3 -3
  29. package/esm2022/eui-alert/eui-alert.component.mjs +3 -3
  30. package/esm2022/eui-alert/eui-alert.module.mjs +4 -4
  31. package/esm2022/eui-all/eui-all.module.mjs +4 -4
  32. package/esm2022/eui-autocomplete/eui-autocomplete-option/eui-autocomplete-option.component.mjs +3 -3
  33. package/esm2022/eui-autocomplete/eui-autocomplete-option-group/eui-autocomplete-option-group.component.mjs +3 -3
  34. package/esm2022/eui-autocomplete/eui-autocomplete.component.mjs +3 -3
  35. package/esm2022/eui-autocomplete/eui-autocomplete.module.mjs +4 -4
  36. package/esm2022/eui-avatar/avatar-badge/avatar-badge.component.mjs +3 -3
  37. package/esm2022/eui-avatar/avatar-icon/avatar-icon.component.mjs +3 -3
  38. package/esm2022/eui-avatar/avatar-image/avatar-image.component.mjs +3 -3
  39. package/esm2022/eui-avatar/avatar-text/avatar-text.component.mjs +3 -3
  40. package/esm2022/eui-avatar/eui-avatar-list.component.mjs +3 -3
  41. package/esm2022/eui-avatar/eui-avatar.component.mjs +3 -3
  42. package/esm2022/eui-avatar/eui-avatar.module.mjs +4 -4
  43. package/esm2022/eui-badge/eui-badge.component.mjs +3 -3
  44. package/esm2022/eui-badge/eui-badge.module.mjs +4 -4
  45. package/esm2022/eui-block-content/eui-block-content.component.mjs +3 -3
  46. package/esm2022/eui-block-content/eui-block-content.module.mjs +4 -4
  47. package/esm2022/eui-block-document/eui-block-document.component.mjs +3 -3
  48. package/esm2022/eui-block-document/eui-block-document.module.mjs +4 -4
  49. package/esm2022/eui-breadcrumb/breadcrumb.component.mjs +3 -3
  50. package/esm2022/eui-breadcrumb/breadcrumb.module.mjs +4 -4
  51. package/esm2022/eui-breadcrumb/breadcrumb.service.mjs +3 -3
  52. package/esm2022/eui-breadcrumb/item/breadcrumb-item.component.mjs +3 -3
  53. package/esm2022/eui-button/eui-button.component.mjs +7 -7
  54. package/esm2022/eui-button-group/eui-button-group.component.mjs +7 -7
  55. package/esm2022/eui-button-v2/eui-button-v2.component.mjs +7 -7
  56. package/esm2022/eui-card/components/eui-card-content/eui-card-content.component.mjs +3 -3
  57. package/esm2022/eui-card/components/eui-card-footer/eui-card-footer-action-buttons.component.mjs +3 -3
  58. package/esm2022/eui-card/components/eui-card-footer/eui-card-footer-action-icons.component.mjs +3 -3
  59. package/esm2022/eui-card/components/eui-card-footer/eui-card-footer-menu-content.component.mjs +3 -3
  60. package/esm2022/eui-card/components/eui-card-footer/eui-card-footer-menu.component.mjs +3 -3
  61. package/esm2022/eui-card/components/eui-card-footer/eui-card-footer.component.mjs +3 -3
  62. package/esm2022/eui-card/components/eui-card-header/eui-card-header-left-content.component.mjs +3 -3
  63. package/esm2022/eui-card/components/eui-card-header/eui-card-header-right-content.component.mjs +3 -3
  64. package/esm2022/eui-card/components/eui-card-header/eui-card-header-subtitle.component.mjs +3 -3
  65. package/esm2022/eui-card/components/eui-card-header/eui-card-header-title.component.mjs +3 -3
  66. package/esm2022/eui-card/components/eui-card-header/eui-card-header.component.mjs +3 -3
  67. package/esm2022/eui-card/components/eui-card-header-body/eui-card-header-body.component.mjs +3 -3
  68. package/esm2022/eui-card/components/eui-card-media/eui-card-media.component.mjs +3 -3
  69. package/esm2022/eui-card/eui-card.component.mjs +3 -3
  70. package/esm2022/eui-card/eui-card.module.mjs +4 -4
  71. package/esm2022/eui-card/services/ui-state.service.mjs +3 -3
  72. package/esm2022/eui-chip/eui-chip.component.mjs +3 -3
  73. package/esm2022/eui-chip/eui-chip.module.mjs +4 -4
  74. package/esm2022/eui-chip-list/eui-chip-list.component.mjs +6 -6
  75. package/esm2022/eui-chip-list/eui-chip-list.module.mjs +4 -4
  76. package/esm2022/eui-chip-list/services/eui-chip-list-drag.service.mjs +3 -3
  77. package/esm2022/eui-dashboard-button/eui-dashboard-button.component.mjs +13 -13
  78. package/esm2022/eui-dashboard-card/eui-dashboard-card-content/dashboard-card-content.component.mjs +3 -3
  79. package/esm2022/eui-dashboard-card/eui-dashboard-card.component.mjs +8 -8
  80. package/esm2022/eui-date-range-selector/eui-date-range-selector.component.mjs +3 -3
  81. package/esm2022/eui-date-range-selector/eui-date-range-selector.module.mjs +4 -4
  82. package/esm2022/eui-date-range-selector/eui-time-range-picker/eui-time-range-picker.component.mjs +3 -3
  83. package/esm2022/eui-datepicker/eui-datepicker.component.mjs +15 -15
  84. package/esm2022/eui-datepicker/eui-datepicker.module.mjs +4 -4
  85. package/esm2022/eui-dialog/container/eui-dialog-container.component.mjs +3 -3
  86. package/esm2022/eui-dialog/eui-dialog.component.mjs +9 -9
  87. package/esm2022/eui-dialog/eui-dialog.module.mjs +4 -4
  88. package/esm2022/eui-dialog/services/eui-dialog.service.mjs +3 -3
  89. package/esm2022/eui-dimmer/dimmer.component.mjs +3 -3
  90. package/esm2022/eui-dimmer/dimmer.module.mjs +4 -4
  91. package/esm2022/eui-disable-content/eui-disable-content.component.mjs +7 -7
  92. package/esm2022/eui-discussion-thread/eui-discussion-thread-item.component.mjs +3 -3
  93. package/esm2022/eui-discussion-thread/eui-discussion-thread.component.mjs +3 -3
  94. package/esm2022/eui-discussion-thread/eui-discussion-thread.module.mjs +4 -4
  95. package/esm2022/eui-dropdown/directives/eui-dropdown-content.directive.mjs +3 -3
  96. package/esm2022/eui-dropdown/dropdown-item/eui-dropdown-item.component.mjs +3 -3
  97. package/esm2022/eui-dropdown/eui-dropdown.component.mjs +3 -3
  98. package/esm2022/eui-dropdown/eui-dropdown.module.mjs +8 -8
  99. package/esm2022/eui-dropdown/eui-dropdown.service.mjs +3 -3
  100. package/esm2022/eui-feedback-message/eui-feedback-message.component.mjs +3 -3
  101. package/esm2022/eui-feedback-message/eui-feedback-message.module.mjs +4 -4
  102. package/esm2022/eui-fieldset/eui-fieldset.component.mjs +9 -9
  103. package/esm2022/eui-fieldset/eui-fieldset.module.mjs +4 -4
  104. package/esm2022/eui-file-upload/eui-file-upload.component.mjs +3 -3
  105. package/esm2022/eui-file-upload/eui-file-upload.module.mjs +4 -4
  106. package/esm2022/eui-file-upload/file-preview/file-preview.component.mjs +3 -3
  107. package/esm2022/eui-file-upload/pipes/filesize.pipe.mjs +3 -3
  108. package/esm2022/eui-file-upload/progress/eui-file-upload-progress.component.mjs +3 -3
  109. package/esm2022/eui-file-upload/utils/eui-file-upload.utils.mjs +3 -3
  110. package/esm2022/eui-growl/eui-growl.component.mjs +3 -3
  111. package/esm2022/eui-growl/eui-growl.module.mjs +4 -4
  112. package/esm2022/eui-icon/eui-icon-svg.component.mjs +7 -7
  113. package/esm2022/eui-icon-button/eui-icon-button.component.mjs +3 -3
  114. package/esm2022/eui-icon-button/eui-icon-button.module.mjs +4 -4
  115. package/esm2022/eui-icon-button-expander/eui-icon-button-expander.component.mjs +3 -3
  116. package/esm2022/eui-icon-button-expander/eui-icon-button-expander.module.mjs +4 -4
  117. package/esm2022/eui-icon-color/eui-icon-color.component.mjs +7 -7
  118. package/esm2022/eui-icon-input/eui-icon-input.component.mjs +3 -3
  119. package/esm2022/eui-icon-input/eui-icon-input.module.mjs +4 -4
  120. package/esm2022/eui-icon-state/eui-icon-state.component.mjs +3 -3
  121. package/esm2022/eui-icon-state/eui-icon-state.module.mjs +4 -4
  122. package/esm2022/eui-icon-toggle/eui-icon-toggle.component.mjs +3 -3
  123. package/esm2022/eui-icon-toggle/eui-icon-toggle.module.mjs +4 -4
  124. package/esm2022/eui-input-checkbox/eui-input-checkbox.component.mjs +3 -3
  125. package/esm2022/eui-input-checkbox/eui-input-checkbox.module.mjs +4 -4
  126. package/esm2022/eui-input-group/eui-input-group.component.mjs +3 -3
  127. package/esm2022/eui-input-group/eui-input-group.module.mjs +4 -4
  128. package/esm2022/eui-input-number/eui-input-number.component.mjs +3 -3
  129. package/esm2022/eui-input-number/eui-input-number.module.mjs +8 -8
  130. package/esm2022/eui-input-number/eui-number-control.directive.mjs +3 -3
  131. package/esm2022/eui-input-radio/eui-input-radio.component.mjs +3 -3
  132. package/esm2022/eui-input-radio/eui-input-radio.module.mjs +4 -4
  133. package/esm2022/eui-input-text/eui-input-text.component.mjs +3 -3
  134. package/esm2022/eui-input-text/eui-input-text.module.mjs +4 -4
  135. package/esm2022/eui-label/eui-label.component.mjs +7 -7
  136. package/esm2022/eui-language-selector/language-selector.component.mjs +3 -3
  137. package/esm2022/eui-language-selector/language-selector.module.mjs +4 -4
  138. package/esm2022/eui-language-selector/modal-selector/modal-selector.component.mjs +3 -3
  139. package/esm2022/eui-list/eui-list-item/eui-list-item.component.mjs +3 -3
  140. package/esm2022/eui-list/eui-list.component.mjs +3 -3
  141. package/esm2022/eui-list/eui-list.module.mjs +4 -4
  142. package/esm2022/eui-menu/eui-menu-item.component.mjs +3 -3
  143. package/esm2022/eui-menu/eui-menu.component.mjs +3 -3
  144. package/esm2022/eui-menu/eui-menu.module.mjs +4 -4
  145. package/esm2022/eui-message-box/eui-message-box.component.mjs +6 -6
  146. package/esm2022/eui-message-box/eui-message-box.module.mjs +4 -4
  147. package/esm2022/eui-message-box/services/eui-message-box.service.mjs +3 -3
  148. package/esm2022/eui-overlay/components/eui-overlay-body/eui-overlay-body.component.mjs +3 -3
  149. package/esm2022/eui-overlay/components/eui-overlay-footer/eui-overlay-footer.component.mjs +3 -3
  150. package/esm2022/eui-overlay/components/eui-overlay-header/eui-overlay-header-title/eui-overlay-header-title.component.mjs +3 -3
  151. package/esm2022/eui-overlay/components/eui-overlay-header/eui-overlay-header.component.mjs +3 -3
  152. package/esm2022/eui-overlay/eui-overlay.component.mjs +3 -3
  153. package/esm2022/eui-overlay/eui-overlay.module.mjs +4 -4
  154. package/esm2022/eui-page/components/eui-page-breadcrumb/eui-page-breadcrumb.component.mjs +3 -3
  155. package/esm2022/eui-page/components/eui-page-column/eui-page-column.component.mjs +21 -21
  156. package/esm2022/eui-page/components/eui-page-columns/eui-page-columns.component.mjs +3 -3
  157. package/esm2022/eui-page/components/eui-page-content/eui-page-content.component.mjs +3 -3
  158. package/esm2022/eui-page/components/eui-page-footer/eui-page-footer.component.mjs +3 -3
  159. package/esm2022/eui-page/components/eui-page-header/components/eui-page-header-action-items.component.mjs +3 -3
  160. package/esm2022/eui-page/components/eui-page-header/components/eui-page-header-body.component.mjs +3 -3
  161. package/esm2022/eui-page/components/eui-page-header/components/eui-page-header-sub-label.component.mjs +3 -3
  162. package/esm2022/eui-page/components/eui-page-header/eui-page-header.component.mjs +3 -3
  163. package/esm2022/eui-page/components/eui-page-hero-header/eui-page-hero-header.component.mjs +3 -3
  164. package/esm2022/eui-page/components/eui-page-top-content/eui-page-top-content.component.mjs +3 -3
  165. package/esm2022/eui-page/eui-page.component.mjs +3 -3
  166. package/esm2022/eui-page/eui-page.module.mjs +4 -4
  167. package/esm2022/eui-paginator/eui-paginator.component.mjs +3 -3
  168. package/esm2022/eui-paginator/eui-paginator.module.mjs +4 -4
  169. package/esm2022/eui-popover/directives/eui-popover-arrow-position.directive.mjs +3 -3
  170. package/esm2022/eui-popover/eui-popover.component.mjs +3 -3
  171. package/esm2022/eui-popover/eui-popover.module.mjs +4 -4
  172. package/esm2022/eui-progress-bar/eui-progress-bar.component.mjs +3 -3
  173. package/esm2022/eui-progress-bar/eui-progress-bar.module.mjs +4 -4
  174. package/esm2022/eui-progress-circle/eui-progress-circle.component.mjs +7 -7
  175. package/esm2022/eui-select/eui-select-control.directive.mjs +3 -3
  176. package/esm2022/eui-select/eui-select-multiple.directive.mjs +3 -3
  177. package/esm2022/eui-select/eui-select-mutli-option.directive.mjs +3 -3
  178. package/esm2022/eui-select/eui-select-option.directive.mjs +3 -3
  179. package/esm2022/eui-select/eui-select.component.mjs +3 -3
  180. package/esm2022/eui-select/eui-select.module.mjs +4 -4
  181. package/esm2022/eui-sidebar-menu/eui-sidebar-menu.component.mjs +3 -3
  182. package/esm2022/eui-sidebar-menu/eui-sidebar-menu.module.mjs +4 -4
  183. package/esm2022/eui-skeleton/eui-skeleton.component.mjs +3 -3
  184. package/esm2022/eui-skeleton/eui-skeleton.module.mjs +4 -4
  185. package/esm2022/eui-slide-toggle/eui-slide-toggle.component.mjs +3 -3
  186. package/esm2022/eui-slide-toggle/eui-slide-toggle.module.mjs +4 -4
  187. package/esm2022/eui-split-button/eui-split-button.component.mjs +3 -3
  188. package/esm2022/eui-split-button/eui-split-button.module.mjs +4 -4
  189. package/esm2022/eui-table/directives/eui-table-sticky-columns.directive.mjs +3 -3
  190. package/esm2022/eui-table/eui-table.component.mjs +3 -3
  191. package/esm2022/eui-table/eui-table.module.mjs +4 -4
  192. package/esm2022/eui-table/expandable-row/eui-table-expandable-row.component.mjs +3 -3
  193. package/esm2022/eui-table/filter/eui-table-filter.component.mjs +3 -3
  194. package/esm2022/eui-table/pipes/eui-table-highlight-filter.pipe.mjs +3 -3
  195. package/esm2022/eui-table/selectable-header/eui-table-selectable-header.component.mjs +3 -3
  196. package/esm2022/eui-table/selectable-row/eui-table-selectable-row.component.mjs +3 -3
  197. package/esm2022/eui-table/services/eui-table-selectable-row.service.mjs +3 -3
  198. package/esm2022/eui-table/services/eui-table-sort.service.mjs +3 -3
  199. package/esm2022/eui-table/sortable-col/eui-table-sortable-col.component.mjs +3 -3
  200. package/esm2022/eui-table-v2/directives/eui-table-v2-expandable-row.directive.mjs +3 -3
  201. package/esm2022/eui-table-v2/directives/eui-table-v2-sticky-col.directive.mjs +3 -3
  202. package/esm2022/eui-table-v2/eui-table-v2.component.mjs +3 -3
  203. package/esm2022/eui-table-v2/eui-table-v2.module.mjs +4 -4
  204. package/esm2022/eui-table-v2/filter/eui-table-v2-filter.component.mjs +3 -3
  205. package/esm2022/eui-table-v2/pipes/eui-table-v2-highlight.pipe.mjs +3 -3
  206. package/esm2022/eui-table-v2/selectable-header/eui-table-v2-selectable-header.component.mjs +3 -3
  207. package/esm2022/eui-table-v2/selectable-row/eui-table-v2-selectable-row.component.mjs +3 -3
  208. package/esm2022/eui-table-v2/services/eui-table-v2-selectable-row.service.mjs +3 -3
  209. package/esm2022/eui-table-v2/services/eui-table-v2-sort.service.mjs +3 -3
  210. package/esm2022/eui-table-v2/sortable-col/eui-table-v2-sortable-col.component.mjs +3 -3
  211. package/esm2022/eui-tabs/eui-tab/eui-tab.component.mjs +3 -3
  212. package/esm2022/eui-tabs/eui-tab-content/eui-tab-content.component.mjs +3 -3
  213. package/esm2022/eui-tabs/eui-tab-label/eui-tab-label.component.mjs +6 -6
  214. package/esm2022/eui-tabs/eui-tabs.component.mjs +6 -6
  215. package/esm2022/eui-tabs/eui-tabs.module.mjs +4 -4
  216. package/esm2022/eui-textarea/auto-resize.directive.mjs +3 -3
  217. package/esm2022/eui-textarea/eui-textarea.component.mjs +3 -3
  218. package/esm2022/eui-textarea/eui-textarea.module.mjs +4 -4
  219. package/esm2022/eui-timebar/eui-timebar.component.mjs +7 -7
  220. package/esm2022/eui-timeline/eui-timeline-item.component.mjs +19 -7
  221. package/esm2022/eui-timeline/eui-timeline.component.mjs +10 -45
  222. package/esm2022/eui-timeline/eui-timeline.module.mjs +4 -4
  223. package/esm2022/eui-timepicker/eui-timepicker.component.mjs +3 -3
  224. package/esm2022/eui-timepicker/eui-timepicker.module.mjs +4 -4
  225. package/esm2022/eui-tree/eui-dropdown-tree.directive.mjs +7 -7
  226. package/esm2022/eui-tree/eui-tree-form-control.directive.mjs +7 -7
  227. package/esm2022/eui-tree/eui-tree.component.mjs +7 -7
  228. package/esm2022/eui-tree-list/eui-tree-list-item.component.mjs +12 -12
  229. package/esm2022/eui-tree-list/eui-tree-list.component.mjs +3 -3
  230. package/esm2022/eui-tree-list/eui-tree-list.module.mjs +4 -4
  231. package/esm2022/eui-tree-list/item-content/item-content.component.mjs +3 -3
  232. package/esm2022/eui-tree-list/toolbar/toolbar.component.mjs +3 -3
  233. package/esm2022/eui-user-profile/user-profile-card/user-profile-card.component.mjs +3 -3
  234. package/esm2022/eui-user-profile/user-profile-menu/user-profile-menu.component.mjs +3 -3
  235. package/esm2022/eui-user-profile/user-profile-menu-item/user-profile-menu-item.component.mjs +3 -3
  236. package/esm2022/eui-user-profile/user-profile.component.mjs +3 -3
  237. package/esm2022/eui-user-profile/user-profile.module.mjs +4 -4
  238. package/esm2022/eui-wizard/eui-wizard-step.component.mjs +3 -3
  239. package/esm2022/eui-wizard/eui-wizard.component.mjs +3 -3
  240. package/esm2022/eui-wizard/eui-wizard.module.mjs +4 -4
  241. package/esm2022/eui-wizard/services/eui-wizard.service.mjs +3 -3
  242. package/esm2022/externals/charts/chart/chart.component.mjs +3 -3
  243. package/esm2022/externals/charts/eui-charts.module.mjs +4 -4
  244. package/esm2022/externals/eui-editor/counters/eui-editor-counters.component.mjs +3 -3
  245. package/esm2022/externals/eui-editor/directives/eui-editor-maxlength.directive.mjs +3 -3
  246. package/esm2022/externals/eui-editor/eui-editor.component.mjs +9 -9
  247. package/esm2022/externals/eui-editor/eui-editor.module.mjs +4 -4
  248. package/esm2022/externals/eui-editor/html-view/eui-editor-html-view.component.mjs +3 -3
  249. package/esm2022/externals/eui-editor/image-url-dialog/image-url-dialog.component.mjs +3 -3
  250. package/esm2022/externals/eui-editor/json-view/eui-editor-json-view.component.mjs +3 -3
  251. package/esm2022/externals/quill/loader.service.mjs +3 -3
  252. package/esm2022/externals/quill/quill-editor.component.mjs +3 -3
  253. package/esm2022/externals/quill/quill.module.mjs +4 -4
  254. package/esm2022/layout/eui-app/eui-app-breadcrumb/breadcrumb.component.mjs +3 -3
  255. package/esm2022/layout/eui-app/eui-app-breadcrumb/breadcrumb.module.mjs +4 -4
  256. package/esm2022/layout/eui-app/eui-app-footer/footer.component.mjs +3 -3
  257. package/esm2022/layout/eui-app/eui-app-footer/footer.module.mjs +4 -4
  258. package/esm2022/layout/eui-app/eui-app-header/header.component.mjs +3 -3
  259. package/esm2022/layout/eui-app/eui-app-header/header.module.mjs +4 -4
  260. package/esm2022/layout/eui-app/eui-app-sidebar/sidebar-body/sidebar-body.component.mjs +3 -3
  261. package/esm2022/layout/eui-app/eui-app-sidebar/sidebar-drawer/sidebar-drawer.component.mjs +3 -3
  262. package/esm2022/layout/eui-app/eui-app-sidebar/sidebar-footer/sidebar-footer.component.mjs +3 -3
  263. package/esm2022/layout/eui-app/eui-app-sidebar/sidebar-header/sidebar-header.component.mjs +3 -3
  264. package/esm2022/layout/eui-app/eui-app-sidebar/sidebar-header-user-profile/sidebar-header-user-profile.component.mjs +3 -3
  265. package/esm2022/layout/eui-app/eui-app-sidebar/sidebar-menu/sidebar-menu.component.mjs +3 -3
  266. package/esm2022/layout/eui-app/eui-app-sidebar/sidebar.component.mjs +3 -3
  267. package/esm2022/layout/eui-app/eui-app-sidebar/sidebar.module.mjs +4 -4
  268. package/esm2022/layout/eui-app/eui-app-toolbar/toolbar.component.mjs +3 -3
  269. package/esm2022/layout/eui-app/eui-app-toolbar/toolbar.module.mjs +4 -4
  270. package/esm2022/layout/eui-app/eui-app-top-message/top-message.component.mjs +3 -3
  271. package/esm2022/layout/eui-app/eui-app-top-message/top-message.module.mjs +4 -4
  272. package/esm2022/layout/eui-app/eui-app.component.mjs +6 -6
  273. package/esm2022/layout/eui-app/eui-app.module.mjs +4 -4
  274. package/esm2022/layout/eui-footer/footer.component.mjs +3 -3
  275. package/esm2022/layout/eui-footer/footer.module.mjs +4 -4
  276. package/esm2022/layout/eui-header/header-app/header-app-name-logo.component.mjs +3 -3
  277. package/esm2022/layout/eui-header/header-app/header-app-name.component.mjs +3 -3
  278. package/esm2022/layout/eui-header/header-app/header-app-subtitle.component.mjs +3 -3
  279. package/esm2022/layout/eui-header/header-app/header-app.component.mjs +3 -3
  280. package/esm2022/layout/eui-header/header-environment/header-environment.component.mjs +3 -3
  281. package/esm2022/layout/eui-header/header-logo/header-logo.component.mjs +3 -3
  282. package/esm2022/layout/eui-header/header-right-content/header-right-content.component.mjs +3 -3
  283. package/esm2022/layout/eui-header/header-search/header-search.component.mjs +3 -3
  284. package/esm2022/layout/eui-header/header-user-profile/header-user-profile.component.mjs +3 -3
  285. package/esm2022/layout/eui-header/header.component.mjs +3 -3
  286. package/esm2022/layout/eui-header/header.module.mjs +4 -4
  287. package/esm2022/layout/eui-layout.module.mjs +4 -4
  288. package/esm2022/layout/eui-notifications/eui-notification-item.component.mjs +3 -3
  289. package/esm2022/layout/eui-notifications/eui-notifications.component.mjs +3 -3
  290. package/esm2022/layout/eui-notifications/eui-notifications.module.mjs +4 -4
  291. package/esm2022/layout/eui-notifications-v2/eui-notification-item.component.mjs +3 -3
  292. package/esm2022/layout/eui-notifications-v2/eui-notifications.component.mjs +3 -3
  293. package/esm2022/layout/eui-notifications-v2/eui-notifications.module.mjs +4 -4
  294. package/esm2022/layout/eui-sidebar-toggle/sidebar-toggle.component.mjs +3 -3
  295. package/esm2022/layout/eui-sidebar-toggle/sidebar-toggle.module.mjs +4 -4
  296. package/esm2022/layout/eui-toolbar/toolbar-app/toolbar-app.component.mjs +3 -3
  297. package/esm2022/layout/eui-toolbar/toolbar-center/toolbar-center.component.mjs +3 -3
  298. package/esm2022/layout/eui-toolbar/toolbar-environment/toolbar-environment.component.mjs +3 -3
  299. package/esm2022/layout/eui-toolbar/toolbar-item/toolbar-item.component.mjs +3 -3
  300. package/esm2022/layout/eui-toolbar/toolbar-items/toolbar-items.component.mjs +3 -3
  301. package/esm2022/layout/eui-toolbar/toolbar-logo/toolbar-logo.component.mjs +3 -3
  302. package/esm2022/layout/eui-toolbar/toolbar-menu/toolbar-menu.component.mjs +3 -3
  303. package/esm2022/layout/eui-toolbar/toolbar-navbar/toolbar-navbar.component.mjs +3 -3
  304. package/esm2022/layout/eui-toolbar/toolbar-navbar-item/toolbar-navbar-item.component.mjs +3 -3
  305. package/esm2022/layout/eui-toolbar/toolbar-search/toolbar-search.component.mjs +3 -3
  306. package/esm2022/layout/eui-toolbar/toolbar-selector/toolbar-selector.component.mjs +3 -3
  307. package/esm2022/layout/eui-toolbar/toolbar.component.mjs +3 -3
  308. package/esm2022/layout/eui-toolbar/toolbar.module.mjs +4 -4
  309. package/esm2022/pipes/eui-is-empty.pipe.mjs +7 -7
  310. package/esm2022/pipes/eui-truncate.pipe.mjs +7 -7
  311. package/esm2022/shared/base/base-states.directive.mjs +3 -3
  312. package/esm2022/shared/input.directive.mjs +3 -3
  313. package/eui-alert/eui-alert.component.d.ts.map +1 -1
  314. package/eui-autocomplete/eui-autocomplete-option/eui-autocomplete-option.component.d.ts.map +1 -1
  315. package/eui-autocomplete/eui-autocomplete.component.d.ts.map +1 -1
  316. package/eui-avatar/eui-avatar.component.d.ts.map +1 -1
  317. package/eui-badge/eui-badge.component.d.ts.map +1 -1
  318. package/eui-block-content/eui-block-content.component.d.ts.map +1 -1
  319. package/eui-block-document/eui-block-document.component.d.ts.map +1 -1
  320. package/eui-button/eui-button.component.d.ts.map +1 -1
  321. package/eui-button-group/eui-button-group.component.d.ts.map +1 -1
  322. package/eui-button-v2/eui-button-v2.component.d.ts.map +1 -1
  323. package/eui-card/components/eui-card-header/eui-card-header.component.d.ts.map +1 -1
  324. package/eui-card/eui-card.component.d.ts.map +1 -1
  325. package/eui-chip/eui-chip.component.d.ts.map +1 -1
  326. package/eui-chip-list/eui-chip-list.component.d.ts.map +1 -1
  327. package/eui-dashboard-card/eui-dashboard-card.component.d.ts.map +1 -1
  328. package/eui-date-range-selector/eui-date-range-selector.component.d.ts.map +1 -1
  329. package/eui-datepicker/eui-datepicker.component.d.ts.map +1 -1
  330. package/eui-dialog/eui-dialog.component.d.ts.map +1 -1
  331. package/eui-dropdown/dropdown-item/eui-dropdown-item.component.d.ts.map +1 -1
  332. package/eui-dropdown/eui-dropdown.component.d.ts.map +1 -1
  333. package/eui-feedback-message/eui-feedback-message.component.d.ts.map +1 -1
  334. package/eui-fieldset/eui-fieldset.component.d.ts.map +1 -1
  335. package/eui-file-upload/eui-file-upload.component.d.ts.map +1 -1
  336. package/eui-growl/eui-growl.component.d.ts.map +1 -1
  337. package/eui-icon/eui-icon-svg.component.d.ts.map +1 -1
  338. package/eui-icon-button/eui-icon-button.component.d.ts.map +1 -1
  339. package/eui-icon-button-expander/eui-icon-button-expander.component.d.ts.map +1 -1
  340. package/eui-icon-input/eui-icon-input.component.d.ts.map +1 -1
  341. package/eui-icon-toggle/eui-icon-toggle.component.d.ts.map +1 -1
  342. package/eui-input-number/eui-input-number.component.d.ts.map +1 -1
  343. package/eui-label/eui-label.component.d.ts.map +1 -1
  344. package/eui-language-selector/language-selector.component.d.ts.map +1 -1
  345. package/eui-list/eui-list-item/eui-list-item.component.d.ts.map +1 -1
  346. package/eui-menu/eui-menu-item.component.d.ts.map +1 -1
  347. package/eui-menu/eui-menu.component.d.ts.map +1 -1
  348. package/eui-message-box/eui-message-box.component.d.ts.map +1 -1
  349. package/eui-overlay/eui-overlay.component.d.ts.map +1 -1
  350. package/eui-page/components/eui-page-column/eui-page-column.component.d.ts.map +1 -1
  351. package/eui-page/components/eui-page-columns/eui-page-columns.component.d.ts.map +1 -1
  352. package/eui-page/components/eui-page-header/eui-page-header.component.d.ts.map +1 -1
  353. package/eui-paginator/eui-paginator.component.d.ts.map +1 -1
  354. package/eui-popover/eui-popover.component.d.ts.map +1 -1
  355. package/eui-progress-bar/eui-progress-bar.component.d.ts.map +1 -1
  356. package/eui-progress-circle/eui-progress-circle.component.d.ts.map +1 -1
  357. package/eui-select/eui-select-option.directive.d.ts.map +1 -1
  358. package/eui-select/eui-select.component.d.ts.map +1 -1
  359. package/eui-sidebar-menu/eui-sidebar-menu.component.d.ts.map +1 -1
  360. package/eui-skeleton/eui-skeleton.component.d.ts.map +1 -1
  361. package/eui-slide-toggle/eui-slide-toggle.component.d.ts.map +1 -1
  362. package/eui-table/eui-table.component.d.ts.map +1 -1
  363. package/eui-table/filter/eui-table-filter.component.d.ts.map +1 -1
  364. package/eui-table/selectable-header/eui-table-selectable-header.component.d.ts.map +1 -1
  365. package/eui-table/selectable-row/eui-table-selectable-row.component.d.ts.map +1 -1
  366. package/eui-table/sortable-col/eui-table-sortable-col.component.d.ts.map +1 -1
  367. package/eui-table-v2/eui-table-v2.component.d.ts.map +1 -1
  368. package/eui-table-v2/selectable-header/eui-table-v2-selectable-header.component.d.ts.map +1 -1
  369. package/eui-table-v2/selectable-row/eui-table-v2-selectable-row.component.d.ts.map +1 -1
  370. package/eui-table-v2/sortable-col/eui-table-v2-sortable-col.component.d.ts.map +1 -1
  371. package/eui-tabs/eui-tab/eui-tab.component.d.ts.map +1 -1
  372. package/eui-tabs/eui-tab-content/eui-tab-content.component.d.ts.map +1 -1
  373. package/eui-tabs/eui-tabs.component.d.ts.map +1 -1
  374. package/eui-textarea/auto-resize.directive.d.ts.map +1 -1
  375. package/eui-textarea/eui-textarea.component.d.ts.map +1 -1
  376. package/eui-timebar/eui-timebar.component.d.ts.map +1 -1
  377. package/eui-timeline/eui-timeline-item.component.d.ts +7 -3
  378. package/eui-timeline/eui-timeline-item.component.d.ts.map +1 -1
  379. package/eui-timeline/eui-timeline.component.d.ts +2 -15
  380. package/eui-timeline/eui-timeline.component.d.ts.map +1 -1
  381. package/eui-timepicker/eui-timepicker.component.d.ts.map +1 -1
  382. package/eui-tree/eui-tree.component.d.ts.map +1 -1
  383. package/eui-tree-list/eui-tree-list-item.component.d.ts.map +1 -1
  384. package/eui-tree-list/eui-tree-list.component.d.ts.map +1 -1
  385. package/eui-tree-list/toolbar/toolbar.component.d.ts.map +1 -1
  386. package/eui-user-profile/user-profile-card/user-profile-card.component.d.ts.map +1 -1
  387. package/eui-user-profile/user-profile.component.d.ts.map +1 -1
  388. package/eui-wizard/eui-wizard-step.component.d.ts.map +1 -1
  389. package/eui-wizard/eui-wizard.component.d.ts.map +1 -1
  390. package/externals/charts/chart/chart.component.d.ts.map +1 -1
  391. package/externals/eui-editor/counters/eui-editor-counters.component.d.ts.map +1 -1
  392. package/externals/quill/quill-editor.component.d.ts.map +1 -1
  393. package/fesm2022/eui-components-directives.mjs +70 -70
  394. package/fesm2022/eui-components-eui-accordion.mjs +13 -13
  395. package/fesm2022/eui-components-eui-alert.mjs +10 -10
  396. package/fesm2022/eui-components-eui-autocomplete.mjs +13 -13
  397. package/fesm2022/eui-components-eui-avatar.mjs +22 -22
  398. package/fesm2022/eui-components-eui-badge.mjs +7 -7
  399. package/fesm2022/eui-components-eui-block-content.mjs +7 -7
  400. package/fesm2022/eui-components-eui-block-document.mjs +7 -7
  401. package/fesm2022/eui-components-eui-breadcrumb.mjs +13 -13
  402. package/fesm2022/eui-components-eui-button-group.mjs +7 -7
  403. package/fesm2022/eui-components-eui-button-v2.mjs +7 -7
  404. package/fesm2022/eui-components-eui-button.mjs +7 -7
  405. package/fesm2022/eui-components-eui-card.mjs +49 -49
  406. package/fesm2022/eui-components-eui-chip-list.mjs +13 -13
  407. package/fesm2022/eui-components-eui-chip-list.mjs.map +1 -1
  408. package/fesm2022/eui-components-eui-chip.mjs +7 -7
  409. package/fesm2022/eui-components-eui-dashboard-button.mjs +13 -13
  410. package/fesm2022/eui-components-eui-dashboard-card.mjs +11 -11
  411. package/fesm2022/eui-components-eui-dashboard-card.mjs.map +1 -1
  412. package/fesm2022/eui-components-eui-date-range-selector.mjs +10 -10
  413. package/fesm2022/eui-components-eui-datepicker.mjs +19 -19
  414. package/fesm2022/eui-components-eui-dialog.mjs +19 -19
  415. package/fesm2022/eui-components-eui-dialog.mjs.map +1 -1
  416. package/fesm2022/eui-components-eui-dimmer.mjs +7 -7
  417. package/fesm2022/eui-components-eui-disable-content.mjs +7 -7
  418. package/fesm2022/eui-components-eui-discussion-thread.mjs +10 -10
  419. package/fesm2022/eui-components-eui-dropdown.mjs +20 -20
  420. package/fesm2022/eui-components-eui-feedback-message.mjs +7 -7
  421. package/fesm2022/eui-components-eui-fieldset.mjs +13 -13
  422. package/fesm2022/eui-components-eui-file-upload.mjs +19 -19
  423. package/fesm2022/eui-components-eui-growl.mjs +7 -7
  424. package/fesm2022/eui-components-eui-icon-button-expander.mjs +7 -7
  425. package/fesm2022/eui-components-eui-icon-button.mjs +7 -7
  426. package/fesm2022/eui-components-eui-icon-color.mjs +7 -7
  427. package/fesm2022/eui-components-eui-icon-input.mjs +7 -7
  428. package/fesm2022/eui-components-eui-icon-state.mjs +7 -7
  429. package/fesm2022/eui-components-eui-icon-toggle.mjs +7 -7
  430. package/fesm2022/eui-components-eui-icon.mjs +7 -7
  431. package/fesm2022/eui-components-eui-input-checkbox.mjs +7 -7
  432. package/fesm2022/eui-components-eui-input-group.mjs +7 -7
  433. package/fesm2022/eui-components-eui-input-number.mjs +14 -14
  434. package/fesm2022/eui-components-eui-input-radio.mjs +7 -7
  435. package/fesm2022/eui-components-eui-input-text.mjs +7 -7
  436. package/fesm2022/eui-components-eui-label.mjs +7 -7
  437. package/fesm2022/eui-components-eui-language-selector.mjs +10 -10
  438. package/fesm2022/eui-components-eui-list.mjs +10 -10
  439. package/fesm2022/eui-components-eui-menu.mjs +10 -10
  440. package/fesm2022/eui-components-eui-message-box.mjs +13 -13
  441. package/fesm2022/eui-components-eui-overlay.mjs +19 -19
  442. package/fesm2022/eui-components-eui-page.mjs +58 -58
  443. package/fesm2022/eui-components-eui-paginator.mjs +7 -7
  444. package/fesm2022/eui-components-eui-popover.mjs +10 -10
  445. package/fesm2022/eui-components-eui-progress-bar.mjs +7 -7
  446. package/fesm2022/eui-components-eui-progress-circle.mjs +7 -7
  447. package/fesm2022/eui-components-eui-select.mjs +19 -19
  448. package/fesm2022/eui-components-eui-sidebar-menu.mjs +7 -7
  449. package/fesm2022/eui-components-eui-skeleton.mjs +7 -7
  450. package/fesm2022/eui-components-eui-slide-toggle.mjs +7 -7
  451. package/fesm2022/eui-components-eui-split-button.mjs +7 -7
  452. package/fesm2022/eui-components-eui-table-v2.mjs +34 -34
  453. package/fesm2022/eui-components-eui-table.mjs +34 -34
  454. package/fesm2022/eui-components-eui-tabs.mjs +22 -22
  455. package/fesm2022/eui-components-eui-textarea.mjs +10 -10
  456. package/fesm2022/eui-components-eui-timebar.mjs +7 -7
  457. package/fesm2022/eui-components-eui-timeline.mjs +50 -73
  458. package/fesm2022/eui-components-eui-timeline.mjs.map +1 -1
  459. package/fesm2022/eui-components-eui-timepicker.mjs +7 -7
  460. package/fesm2022/eui-components-eui-tree-list.mjs +25 -25
  461. package/fesm2022/eui-components-eui-tree.mjs +21 -21
  462. package/fesm2022/eui-components-eui-tree.mjs.map +1 -1
  463. package/fesm2022/eui-components-eui-user-profile.mjs +16 -16
  464. package/fesm2022/eui-components-eui-wizard.mjs +13 -13
  465. package/fesm2022/eui-components-externals-charts.mjs +7 -7
  466. package/fesm2022/eui-components-externals-eui-editor.mjs +28 -28
  467. package/fesm2022/eui-components-externals-quill.mjs +10 -10
  468. package/fesm2022/eui-components-layout.mjs +182 -182
  469. package/fesm2022/eui-components-pipes.mjs +14 -14
  470. package/fesm2022/eui-components-shared.mjs +6 -6
  471. package/fesm2022/eui-components.mjs +4 -4
  472. package/layout/eui-app/eui-app-sidebar/sidebar-header-user-profile/sidebar-header-user-profile.component.d.ts.map +1 -1
  473. package/layout/eui-app/eui-app-sidebar/sidebar-menu/sidebar-menu.component.d.ts.map +1 -1
  474. package/layout/eui-app/eui-app-toolbar/toolbar.component.d.ts.map +1 -1
  475. package/layout/eui-app/eui-app-top-message/top-message.component.d.ts.map +1 -1
  476. package/layout/eui-app/eui-app.component.d.ts.map +1 -1
  477. package/layout/eui-footer/footer.component.d.ts.map +1 -1
  478. package/layout/eui-header/header-user-profile/header-user-profile.component.d.ts.map +1 -1
  479. package/layout/eui-notifications/eui-notification-item.component.d.ts.map +1 -1
  480. package/layout/eui-notifications/eui-notifications.component.d.ts.map +1 -1
  481. package/layout/eui-notifications-v2/eui-notification-item.component.d.ts.map +1 -1
  482. package/layout/eui-notifications-v2/eui-notifications.component.d.ts.map +1 -1
  483. package/layout/eui-toolbar/toolbar-items/toolbar-items.component.d.ts.map +1 -1
  484. package/layout/eui-toolbar/toolbar-navbar-item/toolbar-navbar-item.component.d.ts.map +1 -1
  485. package/layout/eui-toolbar/toolbar-search/toolbar-search.component.d.ts.map +1 -1
  486. package/layout/eui-toolbar/toolbar-selector/toolbar-selector.component.d.ts.map +1 -1
  487. package/layout/eui-toolbar/toolbar.component.d.ts.map +1 -1
  488. package/package.json +3 -3
  489. package/shared/base/base-states.directive.d.ts.map +1 -1
  490. package/shared/input.directive.d.ts.map +1 -1
@@ -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/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 NgModule,\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} from '@angular/core';\nimport { CommonModule } from '@angular/common';\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 { EuiInputCheckboxModule } from '@eui/components/eui-input-checkbox';\nimport { EuiButtonModule } from '@eui/components/eui-button';\nimport { EuiIconModule } from '@eui/components/eui-icon';\nimport { EuiLabelModule } from '@eui/components/eui-label';\nimport { EuiBadgeModule } from '@eui/components/eui-badge';\nimport { EuiChipModule } from '@eui/components/eui-chip';\nimport { EuiDropdownModule } 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 } from 'rxjs';\n\n@Component({\n selector: 'eui-tree',\n templateUrl: './eui-tree.component.html',\n styleUrls: ['./styles/_index.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\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 @Input() nodes: TreeDataModel;\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 /** @deprecated This will be removed in next version of eui in favor of expandedSvgIconClass */\n @Input() expandedIconClass: string;\n /** @deprecated This will be removed in next version of eui in favor of collapsedSvgIconClass */\n @Input() collapsedIconClass: string;\n @Input() expandedSvgIconClass = 'chevron-forward:sharp';\n @Input() collapsedSvgIconClass = 'chevron-down:sharp';\n\n @ViewChild('cdkScrollableRef', { read: CdkScrollable }) cdkScrollableRef: CdkScrollable;\n @ViewChild('treeComponentInstance') public treeComponentInstance: CdkTree<TreeItemRunTimeModel>;\n\n @Input({ transform: booleanAttribute }) isClickTogglingNode = false;\n @Input({ transform: booleanAttribute }) isMultiselect = false;\n @Input({ transform: booleanAttribute }) isSingleSelect = false;\n @Input({ transform: booleanAttribute }) isRecursiveSelection = false;\n @Input({ transform: booleanAttribute }) isRecursiveParentSelection = true;\n @Input({ transform: booleanAttribute }) showUnderlinedLinks = false;\n @Input({ transform: booleanAttribute }) showLines = true;\n @Input({ transform: booleanAttribute }) autoTranslate = true;\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;\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;\n private scrollDispatcherSubs;\n private _selection;\n private treePagination: EuiTreePagination<TreeItemRunTimeModel>;\n\n constructor(private changeDetectorRef: ChangeDetectorRef, private scrollDispatcher: 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 onNodeClick(treeRunTimeItem: TreeItemRunTimeModel): void {\n this.nodeClick.emit(this.getTreeItem(treeRunTimeItem?.path));\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\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n FormsModule,\n TranslateModule,\n EuiInputCheckboxModule,\n CdkTreeModule,\n EuiButtonModule,\n EuiIconModule,\n EuiLabelModule,\n EuiBadgeModule,\n EuiChipModule,\n EuiDropdownModule,\n ScrollingModule,\n ],\n declarations: [EuiTreeComponent],\n exports: [EuiTreeComponent],\n})\nexport class EuiTreeModule {}\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)\">\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)\" class=\"eui-tree-node-wrapper__container\">\n <!-- Expand/collapse action button -->\n <button\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) && !collapsedIconClass\"\n [icon]=\"expandedSvgIconClass\"></eui-icon-svg>\n <eui-icon-svg\n *ngIf=\"cdkTreeControl.isExpanded(treeRunTimeItemModel) && !expandedIconClass\"\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-container>\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 Host,\n AfterContentInit,\n ContentChild,\n Input,\n TemplateRef,\n AfterViewInit,\n ChangeDetectorRef,\n ElementRef,\n Renderer2,\n NgModule,\n} from '@angular/core';\nimport { EuiTreeComponent } from './eui-tree.component';\nimport { TreeDataModel } from './eui-tree.model';\nimport { EuiDropdownComponent } from '@eui/components/eui-dropdown';\nimport { CommonModule } from '@angular/common';\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\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n private hostElement: ElementRef,\n private renderer: Renderer2,\n @Host() private euiDropdown: EuiDropdownComponent,\n ) {}\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\n@NgModule({\n imports: [CommonModule],\n exports: [EuiDropdownTreeDirective],\n declarations: [EuiDropdownTreeDirective],\n})\nexport class EuiDropdownTreeDirectiveModule {}\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, Host, forwardRef, AfterContentInit, Input, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\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\n constructor(@Host() private tree: EuiTreeComponent) {}\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@NgModule({\n imports: [CommonModule],\n exports: [EuiTreeFormControlDirective],\n declarations: [EuiTreeFormControlDirective],\n})\nexport class EuiTreeFormControlDirectiveModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i1.EuiTreeComponent"],"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/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 NgModule,\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} from '@angular/core';\nimport { CommonModule } from '@angular/common';\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 { EuiInputCheckboxModule } from '@eui/components/eui-input-checkbox';\nimport { EuiButtonModule } from '@eui/components/eui-button';\nimport { EuiIconModule } from '@eui/components/eui-icon';\nimport { EuiLabelModule } from '@eui/components/eui-label';\nimport { EuiBadgeModule } from '@eui/components/eui-badge';\nimport { EuiChipModule } from '@eui/components/eui-chip';\nimport { EuiDropdownModule } 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 } from 'rxjs';\n\n@Component({\n selector: 'eui-tree',\n templateUrl: './eui-tree.component.html',\n styleUrls: ['./styles/_index.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\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 @Input() nodes: TreeDataModel;\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 /** @deprecated This will be removed in next version of eui in favor of expandedSvgIconClass */\n @Input() expandedIconClass: string;\n /** @deprecated This will be removed in next version of eui in favor of collapsedSvgIconClass */\n @Input() collapsedIconClass: string;\n @Input() expandedSvgIconClass = 'chevron-forward:sharp';\n @Input() collapsedSvgIconClass = 'chevron-down:sharp';\n\n @ViewChild('cdkScrollableRef', { read: CdkScrollable }) cdkScrollableRef: CdkScrollable;\n @ViewChild('treeComponentInstance') public treeComponentInstance: CdkTree<TreeItemRunTimeModel>;\n\n @Input({ transform: booleanAttribute }) isClickTogglingNode = false;\n @Input({ transform: booleanAttribute }) isMultiselect = false;\n @Input({ transform: booleanAttribute }) isSingleSelect = false;\n @Input({ transform: booleanAttribute }) isRecursiveSelection = false;\n @Input({ transform: booleanAttribute }) isRecursiveParentSelection = true;\n @Input({ transform: booleanAttribute }) showUnderlinedLinks = false;\n @Input({ transform: booleanAttribute }) showLines = true;\n @Input({ transform: booleanAttribute }) autoTranslate = true;\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;\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;\n private scrollDispatcherSubs;\n private _selection;\n private treePagination: EuiTreePagination<TreeItemRunTimeModel>;\n\n constructor(private changeDetectorRef: ChangeDetectorRef, private scrollDispatcher: 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 onNodeClick(treeRunTimeItem: TreeItemRunTimeModel): void {\n this.nodeClick.emit(this.getTreeItem(treeRunTimeItem?.path));\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\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n FormsModule,\n TranslateModule,\n EuiInputCheckboxModule,\n CdkTreeModule,\n EuiButtonModule,\n EuiIconModule,\n EuiLabelModule,\n EuiBadgeModule,\n EuiChipModule,\n EuiDropdownModule,\n ScrollingModule,\n ],\n declarations: [EuiTreeComponent],\n exports: [EuiTreeComponent],\n})\nexport class EuiTreeModule {}\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)\">\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)\" class=\"eui-tree-node-wrapper__container\">\n <!-- Expand/collapse action button -->\n <button\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) && !collapsedIconClass\"\n [icon]=\"expandedSvgIconClass\"></eui-icon-svg>\n <eui-icon-svg\n *ngIf=\"cdkTreeControl.isExpanded(treeRunTimeItemModel) && !expandedIconClass\"\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-container>\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 Host,\n AfterContentInit,\n ContentChild,\n Input,\n TemplateRef,\n AfterViewInit,\n ChangeDetectorRef,\n ElementRef,\n Renderer2,\n NgModule,\n} from '@angular/core';\nimport { EuiTreeComponent } from './eui-tree.component';\nimport { TreeDataModel } from './eui-tree.model';\nimport { EuiDropdownComponent } from '@eui/components/eui-dropdown';\nimport { CommonModule } from '@angular/common';\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\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n private hostElement: ElementRef,\n private renderer: Renderer2,\n @Host() private euiDropdown: EuiDropdownComponent,\n ) {}\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\n@NgModule({\n imports: [CommonModule],\n exports: [EuiDropdownTreeDirective],\n declarations: [EuiDropdownTreeDirective],\n})\nexport class EuiDropdownTreeDirectiveModule {}\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, Host, forwardRef, AfterContentInit, Input, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\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\n constructor(@Host() private tree: EuiTreeComponent) {}\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@NgModule({\n imports: [CommonModule],\n exports: [EuiTreeFormControlDirective],\n declarations: [EuiTreeFormControlDirective],\n})\nexport class EuiTreeFormControlDirectiveModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i1.EuiTreeComponent"],"mappings":"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"}