desy-angular 14.2.0 → 15.1.0

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 (339) hide show
  1. package/README.md +1 -1
  2. package/fesm2022/desy-angular.mjs +1321 -923
  3. package/fesm2022/desy-angular.mjs.map +1 -1
  4. package/index.d.ts +3 -0
  5. package/lib/desy-forms/components/character-count/character-count.component.d.ts +1 -8
  6. package/lib/desy-forms/components/checkboxes/checkboxes-parent.component.d.ts +8 -0
  7. package/lib/desy-forms/components/checkboxes/checkboxes.component.d.ts +26 -0
  8. package/lib/desy-forms/components/date-input/date-input.component.d.ts +13 -7
  9. package/lib/desy-forms/components/datepicker/datepicker.component.d.ts +1 -5
  10. package/lib/desy-forms/components/fieldset/fieldset.component.d.ts +7 -0
  11. package/lib/desy-forms/components/file-upload/file-upload.component.d.ts +5 -0
  12. package/lib/desy-forms/components/input/input.component.d.ts +1 -4
  13. package/lib/desy-forms/components/input-group/input-group.component.d.ts +7 -0
  14. package/lib/desy-forms/components/label/label.component.d.ts +1 -2
  15. package/lib/desy-forms/components/radios/radios-parent.component.d.ts +8 -0
  16. package/lib/desy-forms/components/radios/radios.component.d.ts +26 -0
  17. package/lib/desy-forms/components/search-bar/search-bar.component.d.ts +1 -2
  18. package/lib/desy-forms/components/select/option/option.component.d.ts +2 -2
  19. package/lib/desy-forms/components/textarea/textarea.component.d.ts +1 -3
  20. package/lib/desy-forms/components/tree/tree-item/tree-item.component.d.ts +4 -0
  21. package/lib/desy-forms/components/tree/tree.component.d.ts +62 -2
  22. package/lib/desy-forms/directives/condition.directive.d.ts +5 -0
  23. package/lib/desy-forms/interfaces/select-item-data.d.ts +1 -0
  24. package/lib/desy-nav/components/header/header-mobileText/header-mobile-text.component.d.ts +0 -2
  25. package/lib/desy-nav/components/header/header-offcanvas/header-offcanvas.component.d.ts +7 -0
  26. package/lib/desy-nav/components/menu-navigation/menu-navigation.component.d.ts +0 -2
  27. package/lib/desy-nav/components/menubar/menubar.component.d.ts +7 -2
  28. package/lib/desy-tables/components/table-advanced/components/table-advanced-header-cell.component.d.ts +3 -1
  29. package/lib/desy-tables/components/table-advanced/table-advanced.component.d.ts +57 -1
  30. package/lib/desy-tables/directives/cell.directive.d.ts +3 -0
  31. package/lib/desy-tables/directives/row.directive.d.ts +7 -0
  32. package/lib/desy-tables/interfaces/head-cell-data.d.ts +2 -0
  33. package/lib/desy-views/components/accordion/accordion.component.d.ts +0 -2
  34. package/lib/desy-views/components/details/details.component.d.ts +3 -2
  35. package/lib/desy-views/components/media-object/media-object.component.d.ts +0 -2
  36. package/lib/desy-views/components/status/status.component.d.ts +0 -2
  37. package/lib/desy-views/components/status-item/status-item.component.d.ts +0 -2
  38. package/lib/desy-views/components/tabs/tabs.component.d.ts +0 -2
  39. package/lib/desy-views/components/tooltip/tooltip.component.d.ts +0 -2
  40. package/lib/shared/components/accessibility/accessibility.component.d.ts +4 -3
  41. package/lib/shared/components/accessibility-and-content-required/accessibility-and-content-required.component.d.ts +9 -3
  42. package/lib/shared/components/accessibility-and-text-or-html-required/accessibility-and-text-or-html-required.component.d.ts +7 -3
  43. package/lib/shared/components/content-base/content-base.component.d.ts +3 -0
  44. package/lib/shared/components/spinner/spinner.component.d.ts +0 -2
  45. package/lib/shared/components/text-or-html-required/text-or-html-required.component.d.ts +4 -0
  46. package/lib/shared/decorators/desy-content-child.decorator.d.ts +11 -0
  47. package/lib/shared/decorators/desy-on-input-change.decorator.d.ts +4 -0
  48. package/lib/shared/directives/content-change.directive.d.ts +4 -0
  49. package/lib/shared/directives/custom-inner-content.directive.d.ts +6 -0
  50. package/lib/shared/interfaces/accessibility-data.d.ts +0 -2
  51. package/lib/shared/pipes/external-href.pipe.d.ts +4 -0
  52. package/lib/shared/utils/search-utils.d.ts +10 -0
  53. package/lib/shared/utils/string-utils.d.ts +7 -0
  54. package/package.json +9 -11
  55. package/esm2022/desy-angular.mjs +0 -2
  56. package/esm2022/lib/desy-angular.module.mjs +0 -76
  57. package/esm2022/lib/desy-buttons/components/button/button.component.mjs +0 -118
  58. package/esm2022/lib/desy-buttons/components/button-loader/button-loader.component.mjs +0 -66
  59. package/esm2022/lib/desy-buttons/components/dropdown/dropdown.component.mjs +0 -159
  60. package/esm2022/lib/desy-buttons/components/listbox/listbox-item/listbox-item.component.mjs +0 -39
  61. package/esm2022/lib/desy-buttons/components/listbox/listbox-label/listbox-label.component.mjs +0 -14
  62. package/esm2022/lib/desy-buttons/components/listbox/listbox.component.mjs +0 -334
  63. package/esm2022/lib/desy-buttons/components/pill/pill.component.mjs +0 -83
  64. package/esm2022/lib/desy-buttons/components/toggle/toggle-off-state/toggle-off-state.component.mjs +0 -17
  65. package/esm2022/lib/desy-buttons/components/toggle/toggle-on-state/toggle-on-state.component.mjs +0 -17
  66. package/esm2022/lib/desy-buttons/components/toggle/toggle.component.mjs +0 -62
  67. package/esm2022/lib/desy-buttons/desy-buttons.module.mjs +0 -70
  68. package/esm2022/lib/desy-buttons/interfaces/listbox-item-data.mjs +0 -2
  69. package/esm2022/lib/desy-buttons/interfaces/listbox-label-data.mjs +0 -2
  70. package/esm2022/lib/desy-commons/components/content/content.component.mjs +0 -14
  71. package/esm2022/lib/desy-commons/components/description/description.component.mjs +0 -19
  72. package/esm2022/lib/desy-commons/components/divider/divider.component.mjs +0 -16
  73. package/esm2022/lib/desy-commons/components/icon/icon.component.mjs +0 -16
  74. package/esm2022/lib/desy-commons/components/title/title.component.mjs +0 -17
  75. package/esm2022/lib/desy-commons/desy-commons.module.mjs +0 -24
  76. package/esm2022/lib/desy-commons/interfaces/content-data.mjs +0 -2
  77. package/esm2022/lib/desy-commons/interfaces/description-data.mjs +0 -2
  78. package/esm2022/lib/desy-commons/interfaces/divider-data.mjs +0 -2
  79. package/esm2022/lib/desy-commons/interfaces/icon-data.mjs +0 -2
  80. package/esm2022/lib/desy-commons/interfaces/index.mjs +0 -6
  81. package/esm2022/lib/desy-commons/interfaces/title-data.mjs +0 -2
  82. package/esm2022/lib/desy-forms/components/character-count/character-count.component.mjs +0 -156
  83. package/esm2022/lib/desy-forms/components/checkboxes/checkbox-item/checkbox-item.component.mjs +0 -191
  84. package/esm2022/lib/desy-forms/components/checkboxes/checkboxes-parent.component.mjs +0 -15
  85. package/esm2022/lib/desy-forms/components/checkboxes/checkboxes.component.mjs +0 -275
  86. package/esm2022/lib/desy-forms/components/date-input/date-input-day/date-input-day.component.mjs +0 -55
  87. package/esm2022/lib/desy-forms/components/date-input/date-input-divider/date-input-divider.component.mjs +0 -19
  88. package/esm2022/lib/desy-forms/components/date-input/date-input-item/date-input-item.component.mjs +0 -42
  89. package/esm2022/lib/desy-forms/components/date-input/date-input-month/date-input-month.component.mjs +0 -55
  90. package/esm2022/lib/desy-forms/components/date-input/date-input-year/date-input-year.component.mjs +0 -51
  91. package/esm2022/lib/desy-forms/components/date-input/date-input.component.mjs +0 -303
  92. package/esm2022/lib/desy-forms/components/datepicker/datepicker.component.mjs +0 -190
  93. package/esm2022/lib/desy-forms/components/datepicker/datepicker.pipe.mjs +0 -34
  94. package/esm2022/lib/desy-forms/components/error-message/error-message.component.mjs +0 -32
  95. package/esm2022/lib/desy-forms/components/fieldset/fieldset.component.mjs +0 -59
  96. package/esm2022/lib/desy-forms/components/fieldset/legend/legend.component.mjs +0 -34
  97. package/esm2022/lib/desy-forms/components/file-upload/file-upload.component.mjs +0 -78
  98. package/esm2022/lib/desy-forms/components/form-field/form-field.component.mjs +0 -127
  99. package/esm2022/lib/desy-forms/components/hint/hint.component.mjs +0 -30
  100. package/esm2022/lib/desy-forms/components/input/input.component.mjs +0 -110
  101. package/esm2022/lib/desy-forms/components/input-group/input-group-divider/input-group-divider.component.mjs +0 -20
  102. package/esm2022/lib/desy-forms/components/input-group/input-group-input/input-group-input.component.mjs +0 -59
  103. package/esm2022/lib/desy-forms/components/input-group/input-group-item/input-group-item.component.mjs +0 -42
  104. package/esm2022/lib/desy-forms/components/input-group/input-group-select/input-group-select.component.mjs +0 -51
  105. package/esm2022/lib/desy-forms/components/input-group/input-group.component.mjs +0 -232
  106. package/esm2022/lib/desy-forms/components/label/label.component.mjs +0 -39
  107. package/esm2022/lib/desy-forms/components/radios/radio-item/radio-item.component.mjs +0 -138
  108. package/esm2022/lib/desy-forms/components/radios/radios-parent.component.mjs +0 -15
  109. package/esm2022/lib/desy-forms/components/radios/radios.component.mjs +0 -286
  110. package/esm2022/lib/desy-forms/components/search-bar/search-bar.component.mjs +0 -65
  111. package/esm2022/lib/desy-forms/components/select/option/option.component.mjs +0 -22
  112. package/esm2022/lib/desy-forms/components/select/option-group/option-group.component.mjs +0 -18
  113. package/esm2022/lib/desy-forms/components/select/select-item/select-item.component.mjs +0 -14
  114. package/esm2022/lib/desy-forms/components/select/select.component.mjs +0 -94
  115. package/esm2022/lib/desy-forms/components/template-driven-wrapper/template-driven-wrapper.component.mjs +0 -12
  116. package/esm2022/lib/desy-forms/components/textarea/textarea.component.mjs +0 -86
  117. package/esm2022/lib/desy-forms/components/tree/interfaces/itree-item.mjs +0 -3
  118. package/esm2022/lib/desy-forms/components/tree/interfaces/quit-tree-item-focus-options.mjs +0 -2
  119. package/esm2022/lib/desy-forms/components/tree/tree-checkbox/tree-checkbox.component.mjs +0 -174
  120. package/esm2022/lib/desy-forms/components/tree/tree-item/tree-item.component.mjs +0 -381
  121. package/esm2022/lib/desy-forms/components/tree/tree-items-generator/tree-items-generator.component.mjs +0 -25
  122. package/esm2022/lib/desy-forms/components/tree/tree-sub/tree-sub.component.mjs +0 -16
  123. package/esm2022/lib/desy-forms/components/tree/tree.component.mjs +0 -362
  124. package/esm2022/lib/desy-forms/desy-forms.module.mjs +0 -223
  125. package/esm2022/lib/desy-forms/directives/condition.directive.mjs +0 -34
  126. package/esm2022/lib/desy-forms/interfaces/error-message-data.mjs +0 -2
  127. package/esm2022/lib/desy-forms/interfaces/fieldset-data.mjs +0 -2
  128. package/esm2022/lib/desy-forms/interfaces/hint-data.mjs +0 -2
  129. package/esm2022/lib/desy-forms/interfaces/index.mjs +0 -13
  130. package/esm2022/lib/desy-forms/interfaces/item-checkbox-data.mjs +0 -2
  131. package/esm2022/lib/desy-forms/interfaces/item-date-input-data.mjs +0 -2
  132. package/esm2022/lib/desy-forms/interfaces/item-divider-date-input-data.mjs +0 -2
  133. package/esm2022/lib/desy-forms/interfaces/item-divider-input-group-data.mjs +0 -2
  134. package/esm2022/lib/desy-forms/interfaces/item-input-group-data.mjs +0 -2
  135. package/esm2022/lib/desy-forms/interfaces/item-radio-data.mjs +0 -2
  136. package/esm2022/lib/desy-forms/interfaces/item-radio-with-template-data.mjs +0 -2
  137. package/esm2022/lib/desy-forms/interfaces/label-data.mjs +0 -2
  138. package/esm2022/lib/desy-forms/interfaces/legend-data.mjs +0 -2
  139. package/esm2022/lib/desy-forms/interfaces/select-item-data.mjs +0 -2
  140. package/esm2022/lib/desy-modals/components/dialog/dialog.component.mjs +0 -155
  141. package/esm2022/lib/desy-modals/components/modal/modal-button-loader-primary/modal-button-loader-primary.component.mjs +0 -25
  142. package/esm2022/lib/desy-modals/components/modal/modal-button-loader-secondary/modal-button-loader-secondary.component.mjs +0 -23
  143. package/esm2022/lib/desy-modals/components/modal/modal-button-primary/modal-button-primary.component.mjs +0 -23
  144. package/esm2022/lib/desy-modals/components/modal/modal-button-secondary/modal-button-secondary.component.mjs +0 -23
  145. package/esm2022/lib/desy-modals/components/modal/modal.component.mjs +0 -192
  146. package/esm2022/lib/desy-modals/desy-modals.module.mjs +0 -50
  147. package/esm2022/lib/desy-modals/interfaces/dialog-options.mjs +0 -2
  148. package/esm2022/lib/desy-modals/interfaces/index.mjs +0 -7
  149. package/esm2022/lib/desy-modals/interfaces/modal-button-data.mjs +0 -2
  150. package/esm2022/lib/desy-modals/interfaces/modal-data.mjs +0 -2
  151. package/esm2022/lib/desy-modals/interfaces/modal-icon-data.mjs +0 -2
  152. package/esm2022/lib/desy-modals/interfaces/modal-options.mjs +0 -2
  153. package/esm2022/lib/desy-modals/interfaces/open-dialog-result.mjs +0 -2
  154. package/esm2022/lib/desy-modals/services/dialog.service.mjs +0 -114
  155. package/esm2022/lib/desy-nav/components/breadcrumbs/breadcrumbs-item/breadcrumbs-item.component.mjs +0 -16
  156. package/esm2022/lib/desy-nav/components/breadcrumbs/breadcrumbs.component.mjs +0 -53
  157. package/esm2022/lib/desy-nav/components/error-summary/error-summary-item/error-summary-item.component.mjs +0 -19
  158. package/esm2022/lib/desy-nav/components/error-summary/error-summary.component.mjs +0 -67
  159. package/esm2022/lib/desy-nav/components/footer/footer-meta/footer-meta-item/footer-meta-item.component.mjs +0 -25
  160. package/esm2022/lib/desy-nav/components/footer/footer-meta/footer-meta.component.mjs +0 -31
  161. package/esm2022/lib/desy-nav/components/footer/footer-navigation/footer-navigation-item/footer-navigation-item.component.mjs +0 -25
  162. package/esm2022/lib/desy-nav/components/footer/footer-navigation/footer-navigation.component.mjs +0 -21
  163. package/esm2022/lib/desy-nav/components/footer/footer.component.mjs +0 -91
  164. package/esm2022/lib/desy-nav/components/header/header-custom-navigation/header-custom-navigation.component.mjs +0 -15
  165. package/esm2022/lib/desy-nav/components/header/header-dropdown/header-dropdown.component.mjs +0 -46
  166. package/esm2022/lib/desy-nav/components/header/header-mobileText/header-mobile-text.component.mjs +0 -336
  167. package/esm2022/lib/desy-nav/components/header/header-navigation/header-navigation-item/header-navigation-item.component.mjs +0 -31
  168. package/esm2022/lib/desy-nav/components/header/header-navigation/header-navigation.component.mjs +0 -36
  169. package/esm2022/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-button/header-offcanvas-button.component.mjs +0 -20
  170. package/esm2022/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-close-button/header-offcanvas-close-button.component.mjs +0 -15
  171. package/esm2022/lib/desy-nav/components/header/header-offcanvas/header-offcanvas.component.mjs +0 -93
  172. package/esm2022/lib/desy-nav/components/header/header-subnav/header-subnav.component.mjs +0 -41
  173. package/esm2022/lib/desy-nav/components/header/header.component.mjs +0 -119
  174. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-custom-navigation/header-custom-navigation.component.mjs +0 -14
  175. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-dropdown/header-advanced-dropdown.component.mjs +0 -38
  176. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-logo/header-advanced-logo.component.mjs +0 -37
  177. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-sub/header-advanced-sub.component.mjs +0 -42
  178. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-subtitle/header-advanced-subtitle.component.mjs +0 -14
  179. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-super/header-advanced-super.component.mjs +0 -42
  180. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-title/header-advanced-title.component.mjs +0 -19
  181. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-title-container/header-advanced-title-container.component.mjs +0 -38
  182. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced.component.mjs +0 -54
  183. package/esm2022/lib/desy-nav/components/header-mini/header-mini.component.mjs +0 -32
  184. package/esm2022/lib/desy-nav/components/links-list/links-list-icon-right/links-list-icon-right.component.mjs +0 -16
  185. package/esm2022/lib/desy-nav/components/links-list/links-list-item/links-list-item.component.mjs +0 -46
  186. package/esm2022/lib/desy-nav/components/links-list/links-list-item-sub/links-list-item-sub.component.mjs +0 -14
  187. package/esm2022/lib/desy-nav/components/links-list/links-list.component.mjs +0 -44
  188. package/esm2022/lib/desy-nav/components/menu-horizontal/menu-horizontal-item/menu-horizontal-item.component.mjs +0 -42
  189. package/esm2022/lib/desy-nav/components/menu-horizontal/menu-horizontal.component.mjs +0 -76
  190. package/esm2022/lib/desy-nav/components/menu-navigation/components/menu-navigation-item/menu-navigation-item.component.mjs +0 -55
  191. package/esm2022/lib/desy-nav/components/menu-navigation/components/menu-navigation-subitem/menu-navigation-subitem.component.mjs +0 -49
  192. package/esm2022/lib/desy-nav/components/menu-navigation/menu-navigation.component.mjs +0 -858
  193. package/esm2022/lib/desy-nav/components/menu-vertical/menu-vertical-item/menu-vertical-item.component.mjs +0 -44
  194. package/esm2022/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub/menu-vertical-item-sub.component.mjs +0 -18
  195. package/esm2022/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub-item/menu-vertical-item-sub-item.component.mjs +0 -34
  196. package/esm2022/lib/desy-nav/components/menu-vertical/menu-vertical.component.mjs +0 -98
  197. package/esm2022/lib/desy-nav/components/menubar/components/menubar-item/menubar-item.component.mjs +0 -51
  198. package/esm2022/lib/desy-nav/components/menubar/components/menubar-label/menubar-label.component.mjs +0 -14
  199. package/esm2022/lib/desy-nav/components/menubar/components/menubar-subitem/menubar-subitem.component.mjs +0 -36
  200. package/esm2022/lib/desy-nav/components/menubar/components/menubar-subsubitem/menubar-subsubitem.component.mjs +0 -27
  201. package/esm2022/lib/desy-nav/components/menubar/directives/menubaritem.directive.mjs +0 -47
  202. package/esm2022/lib/desy-nav/components/menubar/menubar.component.mjs +0 -966
  203. package/esm2022/lib/desy-nav/components/nav/nav-item/nav-item.component.mjs +0 -43
  204. package/esm2022/lib/desy-nav/components/nav/nav.component.mjs +0 -115
  205. package/esm2022/lib/desy-nav/components/notification/notification-item/notification-item.component.mjs +0 -25
  206. package/esm2022/lib/desy-nav/components/notification/notification.component.mjs +0 -127
  207. package/esm2022/lib/desy-nav/components/skip-link/skip-link.component.mjs +0 -62
  208. package/esm2022/lib/desy-nav/desy-nav.module.mjs +0 -290
  209. package/esm2022/lib/desy-nav/directives/dynamic-heading.directive.mjs +0 -40
  210. package/esm2022/lib/desy-nav/interfaces/breadcrumbs.data.mjs +0 -2
  211. package/esm2022/lib/desy-nav/interfaces/error-summary-data.mjs +0 -2
  212. package/esm2022/lib/desy-nav/interfaces/footer-data.mjs +0 -2
  213. package/esm2022/lib/desy-nav/interfaces/footer-logo.mjs +0 -10
  214. package/esm2022/lib/desy-nav/interfaces/header-advanced-logo.mjs +0 -7
  215. package/esm2022/lib/desy-nav/interfaces/header-dropdown-data.mjs +0 -2
  216. package/esm2022/lib/desy-nav/interfaces/header-mobile-text-data.mjs +0 -2
  217. package/esm2022/lib/desy-nav/interfaces/header-navigation-data.mjs +0 -2
  218. package/esm2022/lib/desy-nav/interfaces/header-navigation-item-data.mjs +0 -2
  219. package/esm2022/lib/desy-nav/interfaces/header-offcanvas-data.mjs +0 -2
  220. package/esm2022/lib/desy-nav/interfaces/header-skiplink-data.mjs +0 -2
  221. package/esm2022/lib/desy-nav/interfaces/header-subnav-data.mjs +0 -2
  222. package/esm2022/lib/desy-nav/interfaces/index.mjs +0 -21
  223. package/esm2022/lib/desy-nav/interfaces/menu-horizontal-item-data.mjs +0 -2
  224. package/esm2022/lib/desy-nav/interfaces/menu-horizontal-item-event-data.mjs +0 -2
  225. package/esm2022/lib/desy-nav/interfaces/menu-navigation-item-sub-item-sub-item.mjs +0 -2
  226. package/esm2022/lib/desy-nav/interfaces/menu-navigation-item-sub-item.mjs +0 -2
  227. package/esm2022/lib/desy-nav/interfaces/menu-navigation.mjs +0 -2
  228. package/esm2022/lib/desy-nav/interfaces/menu-vertical-items-data.mjs +0 -2
  229. package/esm2022/lib/desy-nav/interfaces/menu-vertical-sub-data.mjs +0 -2
  230. package/esm2022/lib/desy-nav/interfaces/menu-vertical-sub-items-data.mjs +0 -2
  231. package/esm2022/lib/desy-nav/interfaces/menubar-item-sub-item-sub-item.mjs +0 -2
  232. package/esm2022/lib/desy-nav/interfaces/menubar-item-sub-item.mjs +0 -2
  233. package/esm2022/lib/desy-nav/interfaces/menubar-item-sub.mjs +0 -2
  234. package/esm2022/lib/desy-nav/interfaces/menubar-item.mjs +0 -2
  235. package/esm2022/lib/desy-nav/interfaces/nav-item-event.data.mjs +0 -2
  236. package/esm2022/lib/desy-nav/interfaces/nav-item.data.mjs +0 -2
  237. package/esm2022/lib/desy-nav/interfaces/notification-items-data.mjs +0 -2
  238. package/esm2022/lib/desy-nav/interfaces/notification-options.mjs +0 -2
  239. package/esm2022/lib/desy-pagination/components/pagination/pagination.component.mjs +0 -242
  240. package/esm2022/lib/desy-pagination/components/pagination-item-perpage/pagination-item-perpage.component.mjs +0 -19
  241. package/esm2022/lib/desy-pagination/components/pagination-listbox-label/pagination-listbox-label.component.mjs +0 -17
  242. package/esm2022/lib/desy-pagination/desy-pagination.module.mjs +0 -25
  243. package/esm2022/lib/desy-pagination/interfaces/pagination-item.data.mjs +0 -2
  244. package/esm2022/lib/desy-tables/components/table/components/table-caption.component.mjs +0 -17
  245. package/esm2022/lib/desy-tables/components/table/components/table-cell.component.mjs +0 -23
  246. package/esm2022/lib/desy-tables/components/table/components/table-footer.component.mjs +0 -18
  247. package/esm2022/lib/desy-tables/components/table/components/table-header.component.mjs +0 -18
  248. package/esm2022/lib/desy-tables/components/table/components/table-row.component.mjs +0 -18
  249. package/esm2022/lib/desy-tables/components/table/table.component.mjs +0 -120
  250. package/esm2022/lib/desy-tables/components/table-advanced/components/table-advanced-footer-cell.component.mjs +0 -23
  251. package/esm2022/lib/desy-tables/components/table-advanced/components/table-advanced-footer.component.mjs +0 -27
  252. package/esm2022/lib/desy-tables/components/table-advanced/components/table-advanced-header-cell.component.mjs +0 -56
  253. package/esm2022/lib/desy-tables/components/table-advanced/components/table-advanced-header.component.mjs +0 -18
  254. package/esm2022/lib/desy-tables/components/table-advanced/components/table-advanced-row-cell.component.mjs +0 -23
  255. package/esm2022/lib/desy-tables/components/table-advanced/components/table-advanced-row.component.mjs +0 -27
  256. package/esm2022/lib/desy-tables/components/table-advanced/components/table-advanced-select.component.mjs +0 -28
  257. package/esm2022/lib/desy-tables/components/table-advanced/table-advanced.component.mjs +0 -516
  258. package/esm2022/lib/desy-tables/desy-tables.module.mjs +0 -100
  259. package/esm2022/lib/desy-tables/directives/cell.directive.mjs +0 -25
  260. package/esm2022/lib/desy-tables/directives/focus-clicked-cell.directive.mjs +0 -89
  261. package/esm2022/lib/desy-tables/directives/row.directive.mjs +0 -22
  262. package/esm2022/lib/desy-tables/interfaces/cell-data.mjs +0 -2
  263. package/esm2022/lib/desy-tables/interfaces/head-cell-data.mjs +0 -7
  264. package/esm2022/lib/desy-tables/interfaces/index.mjs +0 -5
  265. package/esm2022/lib/desy-tables/interfaces/recalculate-table-params.mjs +0 -2
  266. package/esm2022/lib/desy-tables/interfaces/row-data.mjs +0 -2
  267. package/esm2022/lib/desy-tables/interfaces/wrapper-data.mjs +0 -2
  268. package/esm2022/lib/desy-views/components/accordion/accordion-header/accordion-header.component.mjs +0 -17
  269. package/esm2022/lib/desy-views/components/accordion/accordion-item/accordion-item.component.mjs +0 -61
  270. package/esm2022/lib/desy-views/components/accordion/accordion.component.mjs +0 -447
  271. package/esm2022/lib/desy-views/components/accordion-history/accordion-history-item/accordion-history-item.component.mjs +0 -41
  272. package/esm2022/lib/desy-views/components/accordion-history/accordion-history.component.mjs +0 -20
  273. package/esm2022/lib/desy-views/components/accordion-history/accordion-item-hide-button/accordion-item-hide-button.component.mjs +0 -17
  274. package/esm2022/lib/desy-views/components/accordion-history/accordion-item-show-button/accordion-item-show-button.component.mjs +0 -17
  275. package/esm2022/lib/desy-views/components/alert/alert.component.mjs +0 -82
  276. package/esm2022/lib/desy-views/components/card/card-sectors/card-left.component.mjs +0 -21
  277. package/esm2022/lib/desy-views/components/card/card-sectors/card-right.component.mjs +0 -21
  278. package/esm2022/lib/desy-views/components/card/card-sectors/card-sub.component.mjs +0 -21
  279. package/esm2022/lib/desy-views/components/card/card-sectors/card-super.component.mjs +0 -21
  280. package/esm2022/lib/desy-views/components/card/card.component.mjs +0 -48
  281. package/esm2022/lib/desy-views/components/collapsible/collapsible.component.mjs +0 -66
  282. package/esm2022/lib/desy-views/components/description-list/definition/definition.component.mjs +0 -19
  283. package/esm2022/lib/desy-views/components/description-list/description-item/description-item.component.mjs +0 -36
  284. package/esm2022/lib/desy-views/components/description-list/description-list.component.mjs +0 -29
  285. package/esm2022/lib/desy-views/components/description-list/term/term.component.mjs +0 -19
  286. package/esm2022/lib/desy-views/components/details/details.component.mjs +0 -43
  287. package/esm2022/lib/desy-views/components/item/item-content-bottom/item-content-bottom.component.mjs +0 -17
  288. package/esm2022/lib/desy-views/components/item/item-content-right/item-content-right.component.mjs +0 -15
  289. package/esm2022/lib/desy-views/components/item/item-item/item-item.component.mjs +0 -15
  290. package/esm2022/lib/desy-views/components/item/item.component.mjs +0 -122
  291. package/esm2022/lib/desy-views/components/media-object/media-object-figure/media-object-figure.component.mjs +0 -12
  292. package/esm2022/lib/desy-views/components/media-object/media-object.component.mjs +0 -369
  293. package/esm2022/lib/desy-views/components/status/status.component.mjs +0 -366
  294. package/esm2022/lib/desy-views/components/status-item/status-item.component.mjs +0 -401
  295. package/esm2022/lib/desy-views/components/tabs/panel/panel.component.mjs +0 -19
  296. package/esm2022/lib/desy-views/components/tabs/tab-item/tab-item.component.mjs +0 -41
  297. package/esm2022/lib/desy-views/components/tabs/tabs.component.mjs +0 -446
  298. package/esm2022/lib/desy-views/components/tooltip/tooltip-content/tooltip-content.component.mjs +0 -12
  299. package/esm2022/lib/desy-views/components/tooltip/tooltip.component.mjs +0 -450
  300. package/esm2022/lib/desy-views/desy-views.module.mjs +0 -181
  301. package/esm2022/lib/desy-views/interfaces/accordion-header.data.mjs +0 -2
  302. package/esm2022/lib/desy-views/interfaces/accordion-item.data.mjs +0 -2
  303. package/esm2022/lib/desy-views/interfaces/alert-options.mjs +0 -2
  304. package/esm2022/lib/desy-views/interfaces/description-item.data.mjs +0 -2
  305. package/esm2022/lib/desy-views/interfaces/index.mjs +0 -11
  306. package/esm2022/lib/desy-views/interfaces/open-alert-result.mjs +0 -2
  307. package/esm2022/lib/desy-views/interfaces/status-data.mjs +0 -2
  308. package/esm2022/lib/desy-views/interfaces/status-icon-data.mjs +0 -2
  309. package/esm2022/lib/desy-views/interfaces/status-item-title-data.mjs +0 -2
  310. package/esm2022/lib/desy-views/interfaces/tabs-items-data.mjs +0 -2
  311. package/esm2022/lib/desy-views/interfaces/tabs-panel-data.mjs +0 -2
  312. package/esm2022/lib/desy-views/interfaces/term-definition.data.mjs +0 -2
  313. package/esm2022/lib/desy-views/services/alert.service.mjs +0 -88
  314. package/esm2022/lib/shared/components/accessibility/accessibility-attributes.mjs +0 -78
  315. package/esm2022/lib/shared/components/accessibility/accessibility.component.mjs +0 -164
  316. package/esm2022/lib/shared/components/accessibility-and-content-required/accessibility-and-content-required.component.mjs +0 -168
  317. package/esm2022/lib/shared/components/accessibility-and-text-or-html-required/accessibility-and-text-or-html-required.component.mjs +0 -165
  318. package/esm2022/lib/shared/components/content-base/content-base.component.mjs +0 -21
  319. package/esm2022/lib/shared/components/index.mjs +0 -7
  320. package/esm2022/lib/shared/components/spinner/spinner.component.mjs +0 -329
  321. package/esm2022/lib/shared/components/text-or-html-required/text-or-html-required.component.mjs +0 -18
  322. package/esm2022/lib/shared/decorators/desy-content-child.decorator.mjs +0 -34
  323. package/esm2022/lib/shared/decorators/desy-on-input-change.decorator.mjs +0 -15
  324. package/esm2022/lib/shared/directives/accessibility-directive.mjs +0 -54
  325. package/esm2022/lib/shared/directives/attribute-change.directive.mjs +0 -50
  326. package/esm2022/lib/shared/directives/click-outside.directive.mjs +0 -40
  327. package/esm2022/lib/shared/directives/content-change.directive.mjs +0 -41
  328. package/esm2022/lib/shared/directives/custom-inner-content.directive.mjs +0 -63
  329. package/esm2022/lib/shared/directives/inner-content.directive.mjs +0 -37
  330. package/esm2022/lib/shared/interfaces/accessibility-data.mjs +0 -2
  331. package/esm2022/lib/shared/pipes/external-href.pipe.mjs +0 -28
  332. package/esm2022/lib/shared/pipes/inner-html.pipe.mjs +0 -21
  333. package/esm2022/lib/shared/pipes/make-html-list.pipe.mjs +0 -20
  334. package/esm2022/lib/shared/shared.module.mjs +0 -86
  335. package/esm2022/lib/shared/sharedExternal.module.mjs +0 -20
  336. package/esm2022/lib/shared/utils/focus-utils.mjs +0 -50
  337. package/esm2022/lib/shared/utils/search-utils.mjs +0 -70
  338. package/esm2022/lib/shared/utils/string-utils.mjs +0 -13
  339. package/esm2022/public-api.mjs +0 -225
@@ -1,362 +0,0 @@
1
- import { __decorate, __metadata } from "tslib";
2
- import { ChangeDetectorRef, Component, ContentChildren, EventEmitter, forwardRef, Input, Output, QueryList, TemplateRef, ViewChild, } from '@angular/core';
3
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
- import { DesyContentChild } from '../../../shared/decorators/desy-content-child.decorator';
5
- import { DesyOnInputChange } from '../../../shared/decorators/desy-on-input-change.decorator';
6
- import { FieldsetComponent } from '../fieldset/fieldset.component';
7
- import { FormFieldComponent } from '../form-field/form-field.component';
8
- import { SearchBarComponent } from '../search-bar/search-bar.component';
9
- import { TreeItemComponent } from './tree-item/tree-item.component';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "@angular/common";
12
- import * as i2 from "../../../shared/directives/accessibility-directive";
13
- import * as i3 from "../../../shared/pipes/make-html-list.pipe";
14
- export class TreeComponent extends FormFieldComponent {
15
- constructor(changeDetector) {
16
- super();
17
- this.changeDetector = changeDetector;
18
- this.expandedFirstLevel = true;
19
- this.decoupleChildFromParent = false;
20
- this.disableDefaultSearch = false;
21
- this.searchMatchValuesChange = new EventEmitter();
22
- this.rootItems = [];
23
- this._itemListCheckedSubscriptions = [];
24
- this._itemListQuitFocusSubscriptions = [];
25
- this._alreadyConfiguringItems = false;
26
- }
27
- ngOnDestroy() {
28
- this.clearSubscriptions(this._itemListCheckedSubscriptions);
29
- this.clearSubscriptions(this._itemListQuitFocusSubscriptions);
30
- this._itemListSubscription?.unsubscribe();
31
- this._allItemListSubscription?.unsubscribe();
32
- }
33
- ngOnChanges(changes) {
34
- this.configureAllItems();
35
- }
36
- writeValue(value) {
37
- this.value = value;
38
- this.configureAllItems(true);
39
- this.onChange(this.value);
40
- }
41
- setDisabledState(isDisabled) {
42
- super.setDisabledState(isDisabled);
43
- this.configureAllItems();
44
- }
45
- updateValueFromItems(originItem) {
46
- if (this.type !== 'checkbox') {
47
- const items = this.getAllItemsInOrder();
48
- items.forEach((item) => {
49
- if (item !== originItem && item.checked) {
50
- item.setChecked(false, true);
51
- }
52
- });
53
- }
54
- else if (!this.decoupleChildFromParent) {
55
- this.rootItems.forEach((item) => item.setCheckedAutomaticallyDependingOnChildren());
56
- }
57
- this.value = [];
58
- const items = this.getAllItemsInOrder();
59
- items.forEach((item) => {
60
- if (item.checked) {
61
- this.value.push(item.value);
62
- }
63
- });
64
- this.onChange(this.value);
65
- }
66
- handleItemQuitFocus(options) {
67
- if (options && options.nextElement) {
68
- const items = this.getAllItemsInOrder();
69
- const focusableItems = items.filter((item) => !item.isHidden() && !item.disabled && item.allParentsExpanded);
70
- switch (options.nextElement) {
71
- case 'first':
72
- focusableItems[0].focus();
73
- break;
74
- case 'last':
75
- focusableItems[focusableItems.length - 1].focus();
76
- break;
77
- case 'parent':
78
- const currentSubLevel = options.currentItem.subLevel;
79
- if (currentSubLevel > 0) {
80
- const currentItemIndex = focusableItems.findIndex((item) => item === options.currentItem);
81
- const parent = focusableItems
82
- .slice(0, currentItemIndex)
83
- .reverse()
84
- .find((item) => item.subLevel < currentSubLevel);
85
- if (parent) {
86
- parent.focus();
87
- }
88
- }
89
- break;
90
- case 'firstChild':
91
- case 'next':
92
- if (options.currentItem) {
93
- let currentItemIndex = focusableItems.findIndex((item) => item === options.currentItem);
94
- if (currentItemIndex < focusableItems.length - 1) {
95
- focusableItems[currentItemIndex + 1].focus();
96
- }
97
- }
98
- break;
99
- case 'previous':
100
- if (options.currentItem) {
101
- const currentItemIndex = focusableItems.findIndex((item) => item === options.currentItem);
102
- if (currentItemIndex > 0) {
103
- focusableItems[currentItemIndex - 1].focus();
104
- }
105
- }
106
- break;
107
- }
108
- }
109
- }
110
- onSearch(value) {
111
- if (!this.disableDefaultSearch) {
112
- if (value && value.length > 0) {
113
- this.searchMatchValues = this.allItems.filter((item) => item.matchesText(value)).map((item) => item.value);
114
- }
115
- else {
116
- this.searchMatchValues = null;
117
- }
118
- this.searchMatchValuesChange.emit(this.searchMatchValues);
119
- }
120
- }
121
- configureAllItems(isValueChange = false) {
122
- if (!this._alreadyConfiguringItems) {
123
- this._alreadyConfiguringItems = true;
124
- setTimeout(() => {
125
- if (this.allItems?.length > 0) {
126
- this.clearSubscriptions(this._itemListCheckedSubscriptions);
127
- this.clearSubscriptions(this._itemListQuitFocusSubscriptions);
128
- this.allItems.forEach((item) => {
129
- item.parentName = this.name;
130
- item.type = this.type;
131
- item.inheritedDescribedBy = this.getDescribedByForItems();
132
- item.inheritedExpandedFirstLevel = this.expandedFirstLevel;
133
- item.inheritedDecoupleChildFromParent = this.decoupleChildFromParent;
134
- item.treeDisabled = this.disabled;
135
- if ((this.value && this.value.length > 0) || isValueChange) {
136
- const valueList = this.value ? this.value : [];
137
- item.setChecked(!!valueList.find((v) => v === item.value), true);
138
- }
139
- item.detectChanges();
140
- const checkedSubscription = item.checkedChangeForTree.subscribe(() => this.updateValueFromItems(item));
141
- this._itemListCheckedSubscriptions.push(checkedSubscription);
142
- const quitFocusSubscription = item.quitFocus.subscribe((options) => this.handleItemQuitFocus(options));
143
- this._itemListQuitFocusSubscriptions.push(quitFocusSubscription);
144
- });
145
- this.setErrorInItems(this.hasErrorMessageComponent());
146
- this.buildTree();
147
- if (!this.value) {
148
- this.updateValueFromItems();
149
- }
150
- if (this.searchMatchValues) {
151
- this.onSearchMatchValuesChange();
152
- }
153
- }
154
- if (this.allItems && !this._allItemListSubscription) {
155
- this._allItemListSubscription = this.allItems.changes.subscribe(() => this.configureAllItems());
156
- }
157
- this.changeDetector.detectChanges();
158
- this._alreadyConfiguringItems = false;
159
- });
160
- }
161
- }
162
- onSearchMatchValuesChange() {
163
- if (this.allItems) {
164
- this.allItems.forEach((item) => {
165
- item.inheritedMatchesSearch = true;
166
- });
167
- if (this.searchMatchValues !== null && this.searchMatchValues !== undefined) {
168
- this.allItems.forEach((item) => {
169
- if (this.searchMatchValues.findIndex((value) => item.value === value) < 0) {
170
- item.inheritedMatchesSearch = false;
171
- }
172
- });
173
- }
174
- }
175
- }
176
- getIdPrefix() {
177
- return this.idPrefix ? this.idPrefix : this.name;
178
- }
179
- getDescribedBy() {
180
- let describedBy = '';
181
- if (this.describedBy) {
182
- describedBy = this.describedBy;
183
- }
184
- if (this.hasHintComponent() && this.hintComponent.id) {
185
- describedBy = describedBy + ' ' + this.hintComponent.id;
186
- }
187
- if (this.hasErrorMessageComponent() && this.errorMessageComponent.id) {
188
- describedBy = describedBy + ' ' + this.errorMessageComponent.id;
189
- }
190
- return describedBy;
191
- }
192
- getDescribedByForItems() {
193
- let describedBy;
194
- if (this.hasFieldsetComponent()) {
195
- describedBy = this.fieldsetComponent.describedBy;
196
- }
197
- else {
198
- describedBy = this.getDescribedBy();
199
- }
200
- return describedBy;
201
- }
202
- hasFieldsetComponent() {
203
- return !!this.fieldsetComponent;
204
- }
205
- getHintId() {
206
- return this.idPrefix ? this.idPrefix + '-hint' : this.hintComponent?.id;
207
- }
208
- getErrorId() {
209
- return this.idPrefix ? this.idPrefix + '-error' : this.errorMessageComponent?.id;
210
- }
211
- overrideFieldsetParams(fieldset) {
212
- fieldset.caller = this.innerHtml;
213
- fieldset.errorId = this.getErrorId();
214
- fieldset.describedBy = this.getDescribedBy();
215
- fieldset.detectChanges();
216
- }
217
- overrideSearchBarParams(searchbar) {
218
- const defaultOnChange = searchbar.onChange;
219
- const newOnChange = (value) => {
220
- this.onSearch(value);
221
- defaultOnChange(value);
222
- };
223
- searchbar.registerOnChange(newOnChange);
224
- }
225
- overrideHintParams(hint) {
226
- hint.id = this.getHintId();
227
- hint.detectChanges();
228
- }
229
- overrideErrorMessageParams(errorMessage) {
230
- errorMessage.id = this.getErrorId();
231
- this.setErrorInItems(this.hasErrorMessageComponent());
232
- errorMessage.detectChanges();
233
- }
234
- onDeleteErrorMessage(errorMessage) {
235
- this.setErrorInItems(this.hasErrorMessageComponent());
236
- }
237
- buildTree() {
238
- const itemMap = {};
239
- this.rootItems = [];
240
- this.allItems.forEach((item) => {
241
- const key = item.getKey();
242
- itemMap[key] = item;
243
- if (item.sub) {
244
- item.sub.itemList = [];
245
- }
246
- });
247
- this.allItems.forEach((item) => {
248
- const parentKey = item.getParentKey();
249
- if (parentKey === 'root') {
250
- this.rootItems.push(item);
251
- }
252
- else if (parentKey) {
253
- const sub = itemMap[parentKey].sub;
254
- if (sub) {
255
- sub.itemList.push(item);
256
- }
257
- }
258
- });
259
- let order = 0;
260
- this.rootItems.forEach((item, index) => {
261
- item.setSubLevel(0);
262
- item.setDefaultId(`${this.idPrefix}-${index}`);
263
- item.refreshAllParentsExpandedRecursive(true);
264
- if (!this.decoupleChildFromParent) {
265
- item.setCheckedAutomaticallyDependingOnChildren();
266
- }
267
- order = item.setOrderRecursively(order);
268
- });
269
- }
270
- setErrorInItems(hasError) {
271
- if (this.allItems?.length > 0) {
272
- this.allItems.forEach((item) => {
273
- item.inheritedHasError = hasError;
274
- item.detectChanges();
275
- });
276
- }
277
- }
278
- clearSubscriptions(subscriptionList) {
279
- if (subscriptionList.length > 0) {
280
- subscriptionList.forEach((s) => s.unsubscribe());
281
- subscriptionList.splice(0, subscriptionList.length);
282
- }
283
- }
284
- getAllItemsInOrder() {
285
- let list = [];
286
- if (this.allItems) {
287
- list = this.allItems.toArray().sort((a, b) => (a.orderInTree > b.orderInTree ? 1 : -1));
288
- }
289
- return list;
290
- }
291
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TreeComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
292
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TreeComponent, selector: "desy-tree", inputs: { id: "id", idPrefix: "idPrefix", classes: "classes", name: "name", type: "type", describedBy: "describedBy", formGroupClasses: "formGroupClasses", expandedFirstLevel: "expandedFirstLevel", decoupleChildFromParent: "decoupleChildFromParent", disableDefaultSearch: "disableDefaultSearch", searchMatchValues: "searchMatchValues" }, outputs: { searchMatchValuesChange: "searchMatchValuesChange" }, providers: [
293
- {
294
- provide: NG_VALUE_ACCESSOR,
295
- useExisting: forwardRef(() => TreeComponent),
296
- multi: true,
297
- },
298
- ], queries: [{ propertyName: "allItems", predicate: TreeItemComponent, descendants: true }, { propertyName: "fieldsetComponent", predicate: FieldsetComponent }, { propertyName: "searchBarComponent", predicate: SearchBarComponent }], viewQueries: [{ propertyName: "innerHtml", first: true, predicate: ["innerHtml"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-template #innerHtml>\n <ng-content select=\"desy-hint\"></ng-content>\n <ng-content select=\"desy-error-message\"></ng-content>\n <ng-content select=\"desy-search-bar\"></ng-content>\n <ul\n [attr.id]=\"id ? id : null\"\n [attr.role]=\"role ? role : 'tree'\"\n [desyAppAccessibility]=\"this\">\n <ng-content></ng-content>\n </ul>\n</ng-template>\n\n<!-- tree -->\n<div\n [class]=\"['c-form-group', formGroupClasses] | makeHtmlList\"\n [ngClass]=\"{ 'c-form-group--error': hasErrorsMessage() || formGroupClasses === 'c-form-group--error' }\">\n <ng-container *ngIf=\"hasFieldsetComponent(); else innerHtml\">\n <ng-content select=\"desy-fieldset\"></ng-content>\n </ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.AccessibilityDirective, selector: "[desyAppAccessibility]", inputs: ["desyAppAccessibility"] }, { kind: "pipe", type: i3.MakeHtmlListPipe, name: "makeHtmlList" }] }); }
299
- }
300
- __decorate([
301
- DesyOnInputChange('onSearchMatchValuesChange'),
302
- __metadata("design:type", Array)
303
- ], TreeComponent.prototype, "searchMatchValues", void 0);
304
- __decorate([
305
- DesyOnInputChange('configureAllItems'),
306
- __metadata("design:type", QueryList)
307
- ], TreeComponent.prototype, "allItems", void 0);
308
- __decorate([
309
- DesyContentChild({ onSetCallbackName: 'overrideFieldsetParams' }),
310
- __metadata("design:type", FieldsetComponent)
311
- ], TreeComponent.prototype, "fieldsetComponent", void 0);
312
- __decorate([
313
- DesyContentChild({ onSetCallbackName: 'overrideSearchBarParams' }),
314
- __metadata("design:type", SearchBarComponent)
315
- ], TreeComponent.prototype, "searchBarComponent", void 0);
316
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TreeComponent, decorators: [{
317
- type: Component,
318
- args: [{ selector: 'desy-tree', providers: [
319
- {
320
- provide: NG_VALUE_ACCESSOR,
321
- useExisting: forwardRef(() => TreeComponent),
322
- multi: true,
323
- },
324
- ], template: "<ng-template #innerHtml>\n <ng-content select=\"desy-hint\"></ng-content>\n <ng-content select=\"desy-error-message\"></ng-content>\n <ng-content select=\"desy-search-bar\"></ng-content>\n <ul\n [attr.id]=\"id ? id : null\"\n [attr.role]=\"role ? role : 'tree'\"\n [desyAppAccessibility]=\"this\">\n <ng-content></ng-content>\n </ul>\n</ng-template>\n\n<!-- tree -->\n<div\n [class]=\"['c-form-group', formGroupClasses] | makeHtmlList\"\n [ngClass]=\"{ 'c-form-group--error': hasErrorsMessage() || formGroupClasses === 'c-form-group--error' }\">\n <ng-container *ngIf=\"hasFieldsetComponent(); else innerHtml\">\n <ng-content select=\"desy-fieldset\"></ng-content>\n </ng-container>\n</div>\n" }]
325
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { id: [{
326
- type: Input
327
- }], idPrefix: [{
328
- type: Input
329
- }], classes: [{
330
- type: Input
331
- }], name: [{
332
- type: Input
333
- }], type: [{
334
- type: Input
335
- }], describedBy: [{
336
- type: Input
337
- }], formGroupClasses: [{
338
- type: Input
339
- }], expandedFirstLevel: [{
340
- type: Input
341
- }], decoupleChildFromParent: [{
342
- type: Input
343
- }], disableDefaultSearch: [{
344
- type: Input
345
- }], searchMatchValues: [{
346
- type: Input
347
- }], searchMatchValuesChange: [{
348
- type: Output
349
- }], allItems: [{
350
- type: ContentChildren,
351
- args: [TreeItemComponent, { descendants: true }]
352
- }], fieldsetComponent: [{
353
- type: ContentChildren,
354
- args: [FieldsetComponent]
355
- }], searchBarComponent: [{
356
- type: ContentChildren,
357
- args: [SearchBarComponent]
358
- }], innerHtml: [{
359
- type: ViewChild,
360
- args: ['innerHtml', { static: true }]
361
- }] } });
362
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXN5LWFuZ3VsYXIvc3JjL2xpYi9kZXN5LWZvcm1zL2NvbXBvbmVudHMvdHJlZS90cmVlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc3ktYW5ndWxhci9zcmMvbGliL2Rlc3ktZm9ybXMvY29tcG9uZW50cy90cmVlL3RyZWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUVULFdBQVcsRUFDWCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDM0YsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDOUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7O0FBYXBFLE1BQU0sT0FBTyxhQUFjLFNBQVEsa0JBQXlCO0lBeUMxRCxZQUFvQixjQUFpQztRQUNuRCxLQUFLLEVBQUUsQ0FBQztRQURVLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQS9CNUMsdUJBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQzFCLDRCQUF1QixHQUFHLEtBQUssQ0FBQztR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b0I7c0JBQTVCLEtBQUs7Z0JBSU4saUJBQWlCO3NCQURoQixLQUFLO2dCQUVJLHVCQUF1QjtzQkFBaEMsTUFBTTtnQkFJUCxRQUFRO3NCQURQLGVBQWU7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUt6RCxpQkFBaUI7c0JBRGhCLGVBQWU7dUJBQUMsaUJBQWlCO2dCQUtsQyxrQkFBa0I7c0JBRGpCLGVBQWU7dUJBQUMsa0JBQWtCO2dCQUdPLFNBQVM7c0JBQWxELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEZXN5Q29udGVudENoaWxkIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2RlY29yYXRvcnMvZGVzeS1jb250ZW50LWNoaWxkLmRlY29yYXRvcic7XG5pbXBvcnQgeyBEZXN5T25JbnB1dENoYW5nZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9kZWNvcmF0b3JzL2Rlc3ktb24taW5wdXQtY2hhbmdlLmRlY29yYXRvcic7XG5pbXBvcnQgeyBGaWVsZHNldENvbXBvbmVudCB9IGZyb20gJy4uL2ZpZWxkc2V0L2ZpZWxkc2V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mb3JtLWZpZWxkL2Zvcm0tZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaEJhckNvbXBvbmVudCB9IGZyb20gJy4uL3NlYXJjaC1iYXIvc2VhcmNoLWJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUXVpdFRyZWVJdGVtRm9jdXNPcHRpb25zIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3F1aXQtdHJlZS1pdGVtLWZvY3VzLW9wdGlvbnMnO1xuaW1wb3J0IHsgVHJlZUl0ZW1Db21wb25lbnQgfSBmcm9tICcuL3RyZWUtaXRlbS90cmVlLWl0ZW0uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGVzeS10cmVlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RyZWUuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRyZWVDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVHJlZUNvbXBvbmVudCBleHRlbmRzIEZvcm1GaWVsZENvbXBvbmVudDxhbnlbXT4gaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGlkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGlkUHJlZml4OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNsYXNzZXM6IHN0cmluZztcbiAgQElucHV0KCkgbmFtZTogc3RyaW5nO1xuICBASW5wdXQoKSB0eXBlOiAncmFkaW8nIHwgJ2NoZWNrYm94JyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIGRlc2NyaWJlZEJ5OiBzdHJpbmc7XG5cbiAgQElucHV0KCkgZm9ybUdyb3VwQ2xhc3NlczogYW55O1xuXG4gIEBJbnB1dCgpIGV4cGFuZGVkRmlyc3RMZXZlbCA9IHRydWU7XG4gIEBJbnB1dCgpIGRlY291cGxlQ2hpbGRGcm9tUGFyZW50ID0gZmFsc2U7XG5cbiAgQElucHV0KCkgZGlzYWJsZURlZmF1bHRTZWFyY2ggPSBmYWxzZTtcblxuICBARGVzeU9uSW5wdXRDaGFuZ2UoJ29uU2VhcmNoTWF0Y2hWYWx1ZXNDaGFuZ2UnKVxuICBASW5wdXQoKVxuICBzZWFyY2hNYXRjaFZhbHVlczogc3RyaW5nW107XG4gIEBPdXRwdXQoKSBzZWFyY2hNYXRjaFZhbHVlc0NoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZ1tdPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nW10+KCk7XG5cbiAgQERlc3lPbklucHV0Q2hhbmdlKCdjb25maWd1cmVBbGxJdGVtcycpXG4gIEBDb250ZW50Q2hpbGRyZW4oVHJlZUl0ZW1Db21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgYWxsSXRlbXM6IFF1ZXJ5TGlzdDxUcmVlSXRlbUNvbXBvbmVudD47XG5cbiAgQERlc3lDb250ZW50Q2hpbGQoeyBvblNldENhbGxiYWNrTmFtZTogJ292ZXJyaWRlRmllbGRzZXRQYXJhbXMnIH0pXG4gIEBDb250ZW50Q2hpbGRyZW4oRmllbGRzZXRDb21wb25lbnQpXG4gIGZpZWxkc2V0Q29tcG9uZW50OiBGaWVsZHNldENvbXBvbmVudDtcblxuICBARGVzeUNvbnRlbnRDaGlsZCh7IG9uU2V0Q2FsbGJhY2tOYW1lOiAnb3ZlcnJpZGVTZWFyY2hCYXJQYXJhbXMnIH0pXG4gIEBDb250ZW50Q2hpbGRyZW4oU2VhcmNoQmFyQ29tcG9uZW50KVxuICBzZWFyY2hCYXJDb21wb25lbnQ6IFNlYXJjaEJhckNvbXBvbmVudDtcblxuICBAVmlld0NoaWxkKCdpbm5lckh0bWwnLCB7IHN0YXRpYzogdHJ1ZSB9KSBpbm5lckh0bWw6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgcHJpdmF0ZSByb290SXRlbXM6IFRyZWVJdGVtQ29tcG9uZW50W10gPSBbXTtcbiAgcHJpdmF0ZSBfaXRlbUxpc3RTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBfYWxsSXRlbUxpc3RTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBfaXRlbUxpc3RDaGVja2VkU3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgcHJpdmF0ZSBfaXRlbUxpc3RRdWl0Rm9jdXNTdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBwcml2YXRlIF9hbHJlYWR5Q29uZmlndXJpbmdJdGVtcyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXJTdWJzY3JpcHRpb25zKHRoaXMuX2l0ZW1MaXN0Q2hlY2tlZFN1YnNjcmlwdGlvbnMpO1xuICAgIHRoaXMuY2xlYXJTdWJzY3JpcHRpb25zKHRoaXMuX2l0ZW1MaXN0UXVpdEZvY3VzU3Vic2NyaXB0aW9ucyk7XG4gICAgdGhpcy5faXRlbUxpc3RTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5fYWxsSXRlbUxpc3RTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy5jb25maWd1cmVBbGxJdGVtcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlIHNvYnJlc2NyaWJlIGVsIHZhbG9yIHBhcmEgYWN0dWFsaXphciBsb3MgaXRlbXNcbiAgICogQE92ZXJyaWRlXG4gICAqL1xuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5jb25maWd1cmVBbGxJdGVtcyh0cnVlKTtcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlIHNvYnJlc2NyaWJlIGVsIHZhbG9yIHBhcmEgYWN0dWFsaXphciBsb3MgaXRlbXNcbiAgICovXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHN1cGVyLnNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZCk7XG4gICAgdGhpcy5jb25maWd1cmVBbGxJdGVtcygpO1xuICB9XG5cbiAgLypcbiAgICogRXZlbnRvc1xuICAgKi9cblxuICAvKipcbiAgICogQWN0dWFsaXphIGVsIHZhbG9yIGRlbCBjb21wb25lbnRlIGFsIGNoZWNrcXVlYXJzZSB1biDDrXRlbVxuICAgKiBAcGFyYW0gb3JpZ2luSXRlbSDDrXRlbSBtb2RpZmljYWRvXG4gICAqL1xuICB1cGRhdGVWYWx1ZUZyb21JdGVtcyhvcmlnaW5JdGVtPzogVHJlZUl0ZW1Db21wb25lbnQpOiB2b2lkIHtcbiAgICAvLyBTaSBlcyByYWRpbywgc2UgZGVzYWN0aXZhbiBlbCByZXN0byBkZSBpdGVtcyBjdWFuZG8gc2UgYWN0aXZhIG90cm8gaXRlbVxuICAgIGlmICh0aGlzLnR5cGUgIT09ICdjaGVja2JveCcpIHtcbiAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5nZXRBbGxJdGVtc0luT3JkZXIoKTtcbiAgICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgaWYgKGl0ZW0gIT09IG9yaWdpbkl0ZW0gJiYgaXRlbS5jaGVja2VkKSB7XG4gICAgICAgICAgaXRlbS5zZXRDaGVja2VkKGZhbHNlLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICghdGhpcy5kZWNvdXBsZUNoaWxkRnJvbVBhcmVudCkge1xuICAgICAgdGhpcy5yb290SXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4gaXRlbS5zZXRDaGVja2VkQXV0b21hdGljYWxseURlcGVuZGluZ09uQ2hpbGRyZW4oKSk7XG4gICAgfVxuXG4gICAgdGhpcy52YWx1ZSA9IFtdO1xuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5nZXRBbGxJdGVtc0luT3JkZXIoKTtcbiAgICBpdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBpZiAoaXRlbS5jaGVja2VkKSB7XG4gICAgICAgIHRoaXMudmFsdWUucHVzaChpdGVtLnZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlc3Rpb25hIGN1YW5kbyBlbCBmb2NvIGFiYW5kb25hIHVuIMOtdGVtIGRlc2RlIHVuIGV2ZW50byBkZSB0ZWNsYWRvIGNvbnRyb2xhZG9cbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICovXG4gIGhhbmRsZUl0ZW1RdWl0Rm9jdXMob3B0aW9uczogUXVpdFRyZWVJdGVtRm9jdXNPcHRpb25zKTogdm9pZCB7XG4gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5uZXh0RWxlbWVudCkge1xuICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLmdldEFsbEl0ZW1zSW5PcmRlcigpO1xuICAgICAgY29uc3QgZm9jdXNhYmxlSXRlbXMgPSBpdGVtcy5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtLmlzSGlkZGVuKCkgJiYgIWl0ZW0uZGlzYWJsZWQgJiYgaXRlbS5hbGxQYXJlbnRzRXhwYW5kZWQpO1xuICAgICAgc3dpdGNoIChvcHRpb25zLm5leHRFbGVtZW50KSB7XG4gICAgICAgIGNhc2UgJ2ZpcnN0JzpcbiAgICAgICAgICBmb2N1c2FibGVJdGVtc1swXS5mb2N1cygpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdsYXN0JzpcbiAgICAgICAgICBmb2N1c2FibGVJdGVtc1tmb2N1c2FibGVJdGVtcy5sZW5ndGggLSAxXS5mb2N1cygpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdwYXJlbnQnOlxuICAgICAgICAgIGNvbnN0IGN1cnJlbnRTdWJMZXZlbCA9IG9wdGlvbnMuY3VycmVudEl0ZW0uc3ViTGV2ZWw7XG4gICAgICAgICAgaWYgKGN1cnJlbnRTdWJMZXZlbCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJdGVtSW5kZXggPSBmb2N1c2FibGVJdGVtcy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0gPT09IG9wdGlvbnMuY3VycmVudEl0ZW0pO1xuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gZm9jdXNhYmxlSXRlbXNcbiAgICAgICAgICAgICAgLnNsaWNlKDAsIGN1cnJlbnRJdGVtSW5kZXgpXG4gICAgICAgICAgICAgIC5yZXZlcnNlKClcbiAgICAgICAgICAgICAgLmZpbmQoKGl0ZW0pID0+IGl0ZW0uc3ViTGV2ZWwgPCBjdXJyZW50U3ViTGV2ZWwpO1xuICAgICAgICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICAgICAgICBwYXJlbnQuZm9jdXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2ZpcnN0Q2hpbGQnOlxuICAgICAgICBjYXNlICduZXh0JzpcbiAgICAgICAgICBpZiAob3B0aW9ucy5jdXJyZW50SXRlbSkge1xuICAgICAgICAgICAgbGV0IGN1cnJlbnRJdGVtSW5kZXggPSBmb2N1c2FibGVJdGVtcy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0gPT09IG9wdGlvbnMuY3VycmVudEl0ZW0pO1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRJdGVtSW5kZXggPCBmb2N1c2FibGVJdGVtcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgIGZvY3VzYWJsZUl0ZW1zW2N1cnJlbnRJdGVtSW5kZXggKyAxXS5mb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncHJldmlvdXMnOlxuICAgICAgICAgIGlmIChvcHRpb25zLmN1cnJlbnRJdGVtKSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50SXRlbUluZGV4ID0gZm9jdXNhYmxlSXRlbXMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtID09PSBvcHRpb25zLmN1cnJlbnRJdGVtKTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50SXRlbUluZGV4ID4gMCkge1xuICAgICAgICAgICAgICBmb2N1c2FibGVJdGVtc1tjdXJyZW50SXRlbUluZGV4IC0gMV0uZm9jdXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlYWxpemEgbGEgYsO6c3F1ZWRhIGludGVybmEgZGUgbG9zIGl0ZW1zIGVuIGVsIGNvbXBvbmVudGVcbiAgICogQHBhcmFtIHZhbHVlIHRleHRvIGRlIGLDunNxdWVkYVxuICAgKi9cbiAgb25TZWFyY2godmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlRGVmYXVsdFNlYXJjaCkge1xuICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5zZWFyY2hNYXRjaFZhbHVlcyA9IHRoaXMuYWxsSXRlbXMuZmlsdGVyKChpdGVtKSA9PiBpdGVtLm1hdGNoZXNUZXh0KHZhbHVlKSkubWFwKChpdGVtKSA9PiBpdGVtLnZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VhcmNoTWF0Y2hWYWx1ZXMgPSBudWxsO1xuICAgICAgfVxuICAgICAgdGhpcy5zZWFyY2hNYXRjaFZhbHVlc0NoYW5nZS5lbWl0KHRoaXMuc2VhcmNoTWF0Y2hWYWx1ZXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qXG4gICAqIEV2ZW50b3MgYWwgY2FtYmlhciBwcm9waWVkYWRlc1xuICAgKi9cblxuICAvKipcbiAgICogQ29uZmlndXJhIGxvcyBpdGVtcyBkZWwgw6FyYm9sXG4gICAqL1xuICBjb25maWd1cmVBbGxJdGVtcyhpc1ZhbHVlQ2hhbmdlID0gZmFsc2UpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2FscmVhZHlDb25maWd1cmluZ0l0ZW1zKSB7XG4gICAgICB0aGlzLl9hbHJlYWR5Q29uZmlndXJpbmdJdGVtcyA9IHRydWU7XG5cbiAgICAgIC8vIExvIHJlYWxpemFtb3MgZGVzZGUgdW4gc2V0VGltZW91dCBwYXJhIHF1ZSB0b2RvcyBsb3MgaW5wdXRzLCB2YWx1ZXMgeSBkZW3DoXMgdml2YW4gZW4gcGF6IHkgYXJtb27DrWFcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5hbGxJdGVtcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMuY2xlYXJTdWJzY3JpcHRpb25zKHRoaXMuX2l0ZW1MaXN0Q2hlY2tlZFN1YnNjcmlwdGlvbnMpO1xuICAgICAgICAgIHRoaXMuY2xlYXJTdWJzY3JpcHRpb25zKHRoaXMuX2l0ZW1MaXN0UXVpdEZvY3VzU3Vic2NyaXB0aW9ucyk7XG4gICAgICAgICAgdGhpcy5hbGxJdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpdGVtLnBhcmVudE5hbWUgPSB0aGlzLm5hbWU7XG4gICAgICAgICAgICBpdGVtLnR5cGUgPSB0aGlzLnR5cGU7XG4gICAgICAgICAgICBpdGVtLmluaGVyaXRlZERlc2NyaWJlZEJ5ID0gdGhpcy5nZXREZXNjcmliZWRCeUZvckl0ZW1zKCk7XG4gICAgICAgICAgICBpdGVtLmluaGVyaXRlZEV4cGFuZGVkRmlyc3RMZXZlbCA9IHRoaXMuZXhwYW5kZWRGaXJzdExldmVsO1xuICAgICAgICAgICAgaXRlbS5pbmhlcml0ZWREZWNvdXBsZUNoaWxkRnJvbVBhcmVudCA9IHRoaXMuZGVjb3VwbGVDaGlsZEZyb21QYXJlbnQ7XG4gICAgICAgICAgICBpdGVtLnRyZWVEaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQ7XG4gICAgICAgICAgICBpZiAoKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS5sZW5ndGggPiAwKSB8fCBpc1ZhbHVlQ2hhbmdlKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHZhbHVlTGlzdCA9IHRoaXMudmFsdWUgPyB0aGlzLnZhbHVlIDogW107XG4gICAgICAgICAgICAgIGl0ZW0uc2V0Q2hlY2tlZCghIXZhbHVlTGlzdC5maW5kKCh2KSA9PiB2ID09PSBpdGVtLnZhbHVlKSwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpdGVtLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICAgICAgY29uc3QgY2hlY2tlZFN1YnNjcmlwdGlvbiA9IGl0ZW0uY2hlY2tlZENoYW5nZUZvclRyZWUuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBkYXRlVmFsdWVGcm9tSXRlbXMoaXRlbSkpO1xuICAgICAgICAgICAgdGhpcy5faXRlbUxpc3RDaGVja2VkU3Vic2NyaXB0aW9ucy5wdXNoKGNoZWNrZWRTdWJzY3JpcHRpb24pO1xuXG4gICAgICAgICAgICBjb25zdCBxdWl0Rm9jdXNTdWJzY3JpcHRpb24gPSBpdGVtLnF1aXRGb2N1cy5zdWJzY3JpYmUoKG9wdGlvbnMpID0+IHRoaXMuaGFuZGxlSXRlbVF1aXRGb2N1cyhvcHRpb25zKSk7XG4gICAgICAgICAgICB0aGlzLl9pdGVtTGlzdFF1aXRGb2N1c1N1YnNjcmlwdGlvbnMucHVzaChxdWl0Rm9jdXNTdWJzY3JpcHRpb24pO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgdGhpcy5zZXRFcnJvckluSXRlbXModGhpcy5oYXNFcnJvck1lc3NhZ2VDb21wb25lbnQoKSk7XG5cbiAgICAgICAgICB0aGlzLmJ1aWxkVHJlZSgpO1xuICAgICAgICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZUZyb21JdGVtcygpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLnNlYXJjaE1hdGNoVmFsdWVzKSB7XG4gICAgICAgICAgICB0aGlzLm9uU2VhcmNoTWF0Y2hWYWx1ZXNDaGFuZ2UoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hbGxJdGVtcyAmJiAhdGhpcy5fYWxsSXRlbUxpc3RTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICB0aGlzLl9hbGxJdGVtTGlzdFN1YnNjcmlwdGlvbiA9IHRoaXMuYWxsSXRlbXMuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jb25maWd1cmVBbGxJdGVtcygpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLl9hbHJlYWR5Q29uZmlndXJpbmdJdGVtcyA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1vZGlmaWNhIGxvcyBpdGVtcyB2aXNpYmxlcyBzZWfDum4gZWwgZmlsdHJvIGRlIGLDunNxdWVkYVxuICAgKi9cbiAgb25TZWFyY2hNYXRjaFZhbHVlc0NoYW5nZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hbGxJdGVtcykge1xuICAgICAgdGhpcy5hbGxJdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIGl0ZW0uaW5oZXJpdGVkTWF0Y2hlc1NlYXJjaCA9IHRydWU7XG4gICAgICB9KTtcblxuICAgICAgaWYgKHRoaXMuc2VhcmNoTWF0Y2hWYWx1ZXMgIT09IG51bGwgJiYgdGhpcy5zZWFyY2hNYXRjaFZhbHVlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuYWxsSXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLnNlYXJjaE1hdGNoVmFsdWVzLmZpbmRJbmRleCgodmFsdWUpID0+IGl0ZW0udmFsdWUgPT09IHZhbHVlKSA8IDApIHtcbiAgICAgICAgICAgIGl0ZW0uaW5oZXJpdGVkTWF0Y2hlc1NlYXJjaCA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLypcbiAgICogR2V0dGVycyBhbmQgc2V0dGVyc1xuICAgKi9cblxuICBnZXRJZFByZWZpeCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmlkUHJlZml4ID8gdGhpcy5pZFByZWZpeCA6IHRoaXMubmFtZTtcbiAgfVxuXG4gIGdldERlc2NyaWJlZEJ5KCk6IHN0cmluZyB7XG4gICAgbGV0IGRlc2NyaWJlZEJ5ID0gJyc7XG4gICAgaWYgKHRoaXMuZGVzY3JpYmVkQnkpIHtcbiAgICAgIGRlc2NyaWJlZEJ5ID0gdGhpcy5kZXNjcmliZWRCeTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oYXNIaW50Q29tcG9uZW50KCkgJiYgdGhpcy5oaW50Q29tcG9uZW50LmlkKSB7XG4gICAgICBkZXNjcmliZWRCeSA9IGRlc2NyaWJlZEJ5ICsgJyAnICsgdGhpcy5oaW50Q29tcG9uZW50LmlkO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc0Vycm9yTWVzc2FnZUNvbXBvbmVudCgpICYmIHRoaXMuZXJyb3JNZXNzYWdlQ29tcG9uZW50LmlkKSB7XG4gICAgICBkZXNjcmliZWRCeSA9IGRlc2NyaWJlZEJ5ICsgJyAnICsgdGhpcy5lcnJvck1lc3NhZ2VDb21wb25lbnQuaWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlc2NyaWJlZEJ5O1xuICB9XG5cbiAgLyoqXG4gICAqIERldnVlbHZlIGVsIHZhbG9yIGRlIGRlc2NyaWJlZEJ5IHF1ZSBzZSB0cmFuc21pdGlyw6EgYSBsb3MgaXRlbXNcbiAgICovXG4gIGdldERlc2NyaWJlZEJ5Rm9ySXRlbXMoKTogc3RyaW5nIHtcbiAgICBsZXQgZGVzY3JpYmVkQnk7XG4gICAgaWYgKHRoaXMuaGFzRmllbGRzZXRDb21wb25lbnQoKSkge1xuICAgICAgZGVzY3JpYmVkQnkgPSB0aGlzLmZpZWxkc2V0Q29tcG9uZW50LmRlc2NyaWJlZEJ5O1xuICAgIH0gZWxzZSB7XG4gICAgICBkZXNjcmliZWRCeSA9IHRoaXMuZ2V0RGVzY3JpYmVkQnkoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVzY3JpYmVkQnk7XG4gIH1cblxuICBoYXNGaWVsZHNldENvbXBvbmVudCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmZpZWxkc2V0Q29tcG9uZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlcyBzdXBlci5nZXRIaW50SWQoKTtcbiAgICovXG4gIGdldEhpbnRJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmlkUHJlZml4ID8gdGhpcy5pZFByZWZpeCArICctaGludCcgOiB0aGlzLmhpbnRDb21wb25lbnQ/LmlkO1xuICB9XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlcyBzdXBlci5nZXRIaW50SWQoKTtcbiAgICovXG4gIGdldEVycm9ySWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pZFByZWZpeCA/IHRoaXMuaWRQcmVmaXggKyAnLWVycm9yJyA6IHRoaXMuZXJyb3JNZXNzYWdlQ29tcG9uZW50Py5pZDtcbiAgfVxuXG4gIC8qXG4gICAqIEZ1bmNpb25lcyBwYXJhIHJlZW1wbGF6YXIgZWwgY29udGVuaWRvIGRlbCBmaWVsZHNldCwgbGFiZWwsIGhpbnQgbyBlcnJvcm1lc3NhZ2VcbiAgICovXG5cbiAgb3ZlcnJpZGVGaWVsZHNldFBhcmFtcyhmaWVsZHNldDogRmllbGRzZXRDb21wb25lbnQpOiB2b2lkIHtcbiAgICBmaWVsZHNldC5jYWxsZXIgPSB0aGlzLmlubmVySHRtbDtcbiAgICBmaWVsZHNldC5lcnJvcklkID0gdGhpcy5nZXRFcnJvcklkKCk7XG4gICAgZmllbGRzZXQuZGVzY3JpYmVkQnkgPSB0aGlzLmdldERlc2NyaWJlZEJ5KCk7XG4gICAgZmllbGRzZXQuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgb3ZlcnJpZGVTZWFyY2hCYXJQYXJhbXMoc2VhcmNoYmFyOiBTZWFyY2hCYXJDb21wb25lbnQpOiB2b2lkIHtcbiAgICBjb25zdCBkZWZhdWx0T25DaGFuZ2UgPSBzZWFyY2hiYXIub25DaGFuZ2U7XG4gICAgY29uc3QgbmV3T25DaGFuZ2UgPSAodmFsdWUpID0+IHtcbiAgICAgIHRoaXMub25TZWFyY2godmFsdWUpO1xuICAgICAgZGVmYXVsdE9uQ2hhbmdlKHZhbHVlKTtcbiAgICB9O1xuICAgIHNlYXJjaGJhci5yZWdpc3Rlck9uQ2hhbmdlKG5ld09uQ2hhbmdlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZSBsbGFtYSBkZXNkZSBGb3JtRmllbGRcbiAgICovXG4gIG92ZXJyaWRlSGludFBhcmFtcyhoaW50KTogdm9pZCB7XG4gICAgaGludC5pZCA9IHRoaXMuZ2V0SGludElkKCk7XG4gICAgaGludC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICAvKipcbiAgICogU2UgbGxhbWEgZGVzZGUgRm9ybUZpZWxkXG4gICAqL1xuICBvdmVycmlkZUVycm9yTWVzc2FnZVBhcmFtcyhlcnJvck1lc3NhZ2UpOiB2b2lkIHtcbiAgICBlcnJvck1lc3NhZ2UuaWQgPSB0aGlzLmdldEVycm9ySWQoKTtcbiAgICB0aGlzLnNldEVycm9ySW5JdGVtcyh0aGlzLmhhc0Vycm9yTWVzc2FnZUNvbXBvbmVudCgpKTtcbiAgICBlcnJvck1lc3NhZ2UuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlIGxsYW1hIGRlc2RlIEZvcm1GaWVsZFxuICAgKi9cbiAgb25EZWxldGVFcnJvck1lc3NhZ2UoZXJyb3JNZXNzYWdlKTogdm9pZCB7XG4gICAgdGhpcy5zZXRFcnJvckluSXRlbXModGhpcy5oYXNFcnJvck1lc3NhZ2VDb21wb25lbnQoKSk7XG4gIH1cblxuICAvKlxuICAgKiBNw6l0b2RvcyBwcml2YWRvc1xuICAgKi9cblxuICAvKipcbiAgICogQ29uZmlndXJhIGxhIGVzdHJ1Y3R1cmEgZGVsIMOhcmJvbFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZFRyZWUoKTogdm9pZCB7XG4gICAgLy8gU2UgY3JlYSB1biBtYXBhIHBhcmEgdGVuZXIgYWNjZXNpYmxlcyBsb3MgaXRlbXMgcG9yIGtleSB5IHNlIGJvcnJhbiBsb3MgbGlzdGFkb3MgZXhpc3RlbnRlc1xuICAgIGNvbnN0IGl0ZW1NYXAgPSB7fTtcbiAgICB0aGlzLnJvb3RJdGVtcyA9IFtdO1xuICAgIHRoaXMuYWxsSXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgY29uc3Qga2V5ID0gaXRlbS5nZXRLZXkoKTtcbiAgICAgIGl0ZW1NYXBba2V5XSA9IGl0ZW07XG4gICAgICBpZiAoaXRlbS5zdWIpIHtcbiAgICAgICAgaXRlbS5zdWIuaXRlbUxpc3QgPSBbXTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIFNlIGHDsWFkZW4gbG9zIGl0ZW1zIGEgbG9zIGxpc3RhZG9zIGNvcnJlc3BvbmRpZW50ZXNcbiAgICB0aGlzLmFsbEl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGNvbnN0IHBhcmVudEtleSA9IGl0ZW0uZ2V0UGFyZW50S2V5KCk7XG4gICAgICBpZiAocGFyZW50S2V5ID09PSAncm9vdCcpIHtcbiAgICAgICAgdGhpcy5yb290SXRlbXMucHVzaChpdGVtKTtcbiAgICAgIH0gZWxzZSBpZiAocGFyZW50S2V5KSB7XG4gICAgICAgIGNvbnN0IHN1YiA9IGl0ZW1NYXBbcGFyZW50S2V5XS5zdWI7XG4gICAgICAgIGlmIChzdWIpIHtcbiAgICAgICAgICBzdWIuaXRlbUxpc3QucHVzaChpdGVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gU2UgY29uZmlndXJhbiBsb3MgaXRlbXMgZGVzZGUgcm9vdFxuICAgIGxldCBvcmRlciA9IDA7XG4gICAgdGhpcy5yb290SXRlbXMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgIGl0ZW0uc2V0U3ViTGV2ZWwoMCk7XG4gICAgICBpdGVtLnNldERlZmF1bHRJZChgJHt0aGlzLmlkUHJlZml4fS0ke2luZGV4fWApO1xuICAgICAgaXRlbS5yZWZyZXNoQWxsUGFyZW50c0V4cGFuZGVkUmVjdXJzaXZlKHRydWUpO1xuICAgICAgaWYgKCF0aGlzLmRlY291cGxlQ2hpbGRGcm9tUGFyZW50KSB7XG4gICAgICAgIGl0ZW0uc2V0Q2hlY2tlZEF1dG9tYXRpY2FsbHlEZXBlbmRpbmdPbkNoaWxkcmVuKCk7XG4gICAgICB9XG4gICAgICBvcmRlciA9IGl0ZW0uc2V0T3JkZXJSZWN1cnNpdmVseShvcmRlcik7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2kgdGllbmUgdW4gbWVuc2FqZSBkZSBlcnJvciwgc2UgaW5kaWNhIGEgbG9zIGl0ZW1zXG4gICAqIEBwYXJhbSBoYXNFcnJvclxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBzZXRFcnJvckluSXRlbXMoaGFzRXJyb3I6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hbGxJdGVtcz8ubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5hbGxJdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIGl0ZW0uaW5oZXJpdGVkSGFzRXJyb3IgPSBoYXNFcnJvcjtcbiAgICAgICAgaXRlbS5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTGltcGlhIHVuIGxpc3RhZG8gZGUgc3Vic2NyaXBjaW9uZXNcbiAgICogQHBhcmFtIHN1YnNjcmlwdGlvbkxpc3RcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgY2xlYXJTdWJzY3JpcHRpb25zKHN1YnNjcmlwdGlvbkxpc3Q6IFN1YnNjcmlwdGlvbltdKTogdm9pZCB7XG4gICAgaWYgKHN1YnNjcmlwdGlvbkxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgc3Vic2NyaXB0aW9uTGlzdC5mb3JFYWNoKChzKSA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICAgICAgc3Vic2NyaXB0aW9uTGlzdC5zcGxpY2UoMCwgc3Vic2NyaXB0aW9uTGlzdC5sZW5ndGgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZXZ1ZWx2ZSBsb3MgaXRlbXMgZGVsIMOhcmJvbCBvcmRlbmFkb3NcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgZ2V0QWxsSXRlbXNJbk9yZGVyKCk6IFRyZWVJdGVtQ29tcG9uZW50W10ge1xuICAgIGxldCBsaXN0ID0gW107XG4gICAgaWYgKHRoaXMuYWxsSXRlbXMpIHtcbiAgICAgIGxpc3QgPSB0aGlzLmFsbEl0ZW1zLnRvQXJyYXkoKS5zb3J0KChhLCBiKSA9PiAoYS5vcmRlckluVHJlZSA+IGIub3JkZXJJblRyZWUgPyAxIDogLTEpKTtcbiAgICB9XG4gICAgcmV0dXJuIGxpc3Q7XG4gIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjaW5uZXJIdG1sPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJkZXN5LWhpbnRcIj48L25nLWNvbnRlbnQ+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cImRlc3ktZXJyb3ItbWVzc2FnZVwiPjwvbmctY29udGVudD5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZGVzeS1zZWFyY2gtYmFyXCI+PC9uZy1jb250ZW50PlxuICA8dWxcbiAgICBbYXR0ci5pZF09XCJpZCA/IGlkIDogbnVsbFwiXG4gICAgW2F0dHIucm9sZV09XCJyb2xlID8gcm9sZSA6ICd0cmVlJ1wiXG4gICAgW2Rlc3lBcHBBY2Nlc3NpYmlsaXR5XT1cInRoaXNcIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvdWw+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIHRyZWUgLS0+XG48ZGl2XG4gIFtjbGFzc109XCJbJ2MtZm9ybS1ncm91cCcsIGZvcm1Hcm91cENsYXNzZXNdIHwgbWFrZUh0bWxMaXN0XCJcbiAgW25nQ2xhc3NdPVwieyAnYy1mb3JtLWdyb3VwLS1lcnJvcic6IGhhc0Vycm9yc01lc3NhZ2UoKSB8fCBmb3JtR3JvdXBDbGFzc2VzID09PSAnYy1mb3JtLWdyb3VwLS1lcnJvcicgfVwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzRmllbGRzZXRDb21wb25lbnQoKTsgZWxzZSBpbm5lckh0bWxcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJkZXN5LWZpZWxkc2V0XCI+PC9uZy1jb250ZW50PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19