desy-angular 7.1.0 → 8.0.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 (525) hide show
  1. package/README.md +2 -2
  2. package/esm2022/desy-angular.mjs +2 -0
  3. package/{esm2020 → esm2022}/lib/desy-angular.module.mjs +37 -37
  4. package/esm2022/lib/desy-buttons/components/button/button.component.mjs +115 -0
  5. package/esm2022/lib/desy-buttons/components/button-loader/button-loader.component.mjs +63 -0
  6. package/esm2022/lib/desy-buttons/components/dropdown/dropdown.component.mjs +127 -0
  7. package/{esm2020 → esm2022}/lib/desy-buttons/components/listbox/listbox-item/listbox-item.component.mjs +4 -4
  8. package/{esm2020 → esm2022}/lib/desy-buttons/components/listbox/listbox-label/listbox-label.component.mjs +4 -4
  9. package/esm2022/lib/desy-buttons/components/listbox/listbox.component.mjs +334 -0
  10. package/esm2022/lib/desy-buttons/components/pill/pill.component.mjs +80 -0
  11. package/{esm2020 → esm2022}/lib/desy-buttons/components/toggle/toggle-off-state/toggle-off-state.component.mjs +4 -4
  12. package/{esm2020 → esm2022}/lib/desy-buttons/components/toggle/toggle-on-state/toggle-on-state.component.mjs +4 -4
  13. package/esm2022/lib/desy-buttons/components/toggle/toggle.component.mjs +61 -0
  14. package/esm2022/lib/desy-buttons/desy-buttons.module.mjs +81 -0
  15. package/{esm2020 → esm2022}/lib/desy-commons/components/content/content.component.mjs +4 -4
  16. package/{esm2020 → esm2022}/lib/desy-commons/components/description/description.component.mjs +4 -4
  17. package/{esm2020 → esm2022}/lib/desy-commons/components/divider/divider.component.mjs +4 -4
  18. package/{esm2020 → esm2022}/lib/desy-commons/components/icon/icon.component.mjs +4 -4
  19. package/{esm2020 → esm2022}/lib/desy-commons/components/title/title.component.mjs +4 -4
  20. package/esm2022/lib/desy-commons/desy-commons.module.mjs +52 -0
  21. package/{esm2020 → esm2022}/lib/desy-forms/components/character-count/character-count.component.mjs +10 -10
  22. package/esm2022/lib/desy-forms/components/checkboxes/checkbox-item/checkbox-item.component.mjs +222 -0
  23. package/esm2022/lib/desy-forms/components/checkboxes/checkboxes-parent.component.mjs +15 -0
  24. package/esm2022/lib/desy-forms/components/checkboxes/checkboxes.component.mjs +268 -0
  25. package/esm2022/lib/desy-forms/components/date-input/date-input-day/date-input-day.component.mjs +55 -0
  26. package/esm2022/lib/desy-forms/components/date-input/date-input-divider/date-input-divider.component.mjs +19 -0
  27. package/{esm2020 → esm2022}/lib/desy-forms/components/date-input/date-input-item/date-input-item.component.mjs +4 -4
  28. package/esm2022/lib/desy-forms/components/date-input/date-input-month/date-input-month.component.mjs +55 -0
  29. package/esm2022/lib/desy-forms/components/date-input/date-input-year/date-input-year.component.mjs +51 -0
  30. package/esm2022/lib/desy-forms/components/date-input/date-input.component.mjs +293 -0
  31. package/esm2022/lib/desy-forms/components/error-message/error-message.component.mjs +31 -0
  32. package/{esm2020 → esm2022}/lib/desy-forms/components/fieldset/fieldset.component.mjs +10 -8
  33. package/{esm2020 → esm2022}/lib/desy-forms/components/fieldset/legend/legend.component.mjs +4 -4
  34. package/esm2022/lib/desy-forms/components/file-upload/file-upload.component.mjs +67 -0
  35. package/esm2022/lib/desy-forms/components/form-field/form-field.component.mjs +120 -0
  36. package/esm2022/lib/desy-forms/components/hint/hint.component.mjs +29 -0
  37. package/esm2022/lib/desy-forms/components/input/input.component.mjs +98 -0
  38. package/esm2022/lib/desy-forms/components/input-group/input-group-divider/input-group-divider.component.mjs +20 -0
  39. package/esm2022/lib/desy-forms/components/input-group/input-group-input/input-group-input.component.mjs +59 -0
  40. package/{esm2020 → esm2022}/lib/desy-forms/components/input-group/input-group-item/input-group-item.component.mjs +4 -4
  41. package/esm2022/lib/desy-forms/components/input-group/input-group-select/input-group-select.component.mjs +51 -0
  42. package/esm2022/lib/desy-forms/components/input-group/input-group.component.mjs +228 -0
  43. package/esm2022/lib/desy-forms/components/label/label.component.mjs +38 -0
  44. package/esm2022/lib/desy-forms/components/radios/radio-item/radio-item.component.mjs +170 -0
  45. package/esm2022/lib/desy-forms/components/radios/radios-parent.component.mjs +15 -0
  46. package/esm2022/lib/desy-forms/components/radios/radios.component.mjs +281 -0
  47. package/esm2022/lib/desy-forms/components/search-bar/search-bar.component.mjs +60 -0
  48. package/{esm2020 → esm2022}/lib/desy-forms/components/select/option/option.component.mjs +4 -4
  49. package/esm2022/lib/desy-forms/components/select/option-group/option-group.component.mjs +18 -0
  50. package/{esm2020 → esm2022}/lib/desy-forms/components/select/select-item/select-item.component.mjs +4 -4
  51. package/esm2022/lib/desy-forms/components/select/select.component.mjs +92 -0
  52. package/{esm2020 → esm2022}/lib/desy-forms/components/template-driven-wrapper/template-driven-wrapper.component.mjs +4 -4
  53. package/{esm2020 → esm2022}/lib/desy-forms/components/textarea/textarea.component.mjs +12 -13
  54. package/esm2022/lib/desy-forms/components/tree/tree-checkbox/tree-checkbox.component.mjs +173 -0
  55. package/esm2022/lib/desy-forms/components/tree/tree-item/tree-item.component.mjs +377 -0
  56. package/esm2022/lib/desy-forms/components/tree/tree-items-generator/tree-items-generator.component.mjs +25 -0
  57. package/{esm2020 → esm2022}/lib/desy-forms/components/tree/tree-sub/tree-sub.component.mjs +4 -4
  58. package/esm2022/lib/desy-forms/components/tree/tree.component.mjs +356 -0
  59. package/esm2022/lib/desy-forms/desy-forms.module.mjs +207 -0
  60. package/esm2022/lib/desy-forms/directives/condition.directive.mjs +34 -0
  61. package/esm2022/lib/desy-modals/components/dialog/dialog.component.mjs +150 -0
  62. package/esm2022/lib/desy-modals/components/modal/modal-button-loader-primary/modal-button-loader-primary.component.mjs +25 -0
  63. package/esm2022/lib/desy-modals/components/modal/modal-button-loader-secondary/modal-button-loader-secondary.component.mjs +23 -0
  64. package/esm2022/lib/desy-modals/components/modal/modal-button-primary/modal-button-primary.component.mjs +23 -0
  65. package/esm2022/lib/desy-modals/components/modal/modal-button-secondary/modal-button-secondary.component.mjs +23 -0
  66. package/esm2022/lib/desy-modals/components/modal/modal.component.mjs +182 -0
  67. package/esm2022/lib/desy-modals/desy-modals.module.mjs +61 -0
  68. package/esm2022/lib/desy-modals/interfaces/index.mjs +7 -0
  69. package/esm2022/lib/desy-modals/services/dialog.service.mjs +114 -0
  70. package/{esm2020 → esm2022}/lib/desy-nav/components/breadcrumbs/breadcrumbs-item/breadcrumbs-item.component.mjs +4 -4
  71. package/esm2022/lib/desy-nav/components/breadcrumbs/breadcrumbs.component.mjs +48 -0
  72. package/{esm2020 → esm2022}/lib/desy-nav/components/error-summary/error-summary-item/error-summary-item.component.mjs +4 -4
  73. package/esm2022/lib/desy-nav/components/error-summary/error-summary.component.mjs +64 -0
  74. package/{esm2020 → esm2022}/lib/desy-nav/components/footer/footer-meta/footer-meta-item/footer-meta-item.component.mjs +4 -4
  75. package/esm2022/lib/desy-nav/components/footer/footer-meta/footer-meta.component.mjs +31 -0
  76. package/{esm2020 → esm2022}/lib/desy-nav/components/footer/footer-navigation/footer-navigation-item/footer-navigation-item.component.mjs +4 -4
  77. package/esm2022/lib/desy-nav/components/footer/footer-navigation/footer-navigation.component.mjs +19 -0
  78. package/esm2022/lib/desy-nav/components/footer/footer.component.mjs +74 -0
  79. package/{esm2020 → esm2022}/lib/desy-nav/components/header/header-custom-navigation/header-custom-navigation.component.mjs +4 -4
  80. package/esm2022/lib/desy-nav/components/header/header-dropdown/header-dropdown.component.mjs +46 -0
  81. package/{esm2020 → esm2022}/lib/desy-nav/components/header/header-navigation/header-navigation-item/header-navigation-item.component.mjs +4 -4
  82. package/esm2022/lib/desy-nav/components/header/header-navigation/header-navigation.component.mjs +36 -0
  83. package/{esm2020 → esm2022}/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-button/header-offcanvas-button.component.mjs +4 -4
  84. package/{esm2020 → esm2022}/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-close-button/header-offcanvas-close-button.component.mjs +4 -4
  85. package/esm2022/lib/desy-nav/components/header/header-offcanvas/header-offcanvas.component.mjs +93 -0
  86. package/esm2022/lib/desy-nav/components/header/header-subnav/header-subnav.component.mjs +41 -0
  87. package/esm2022/lib/desy-nav/components/header/header.component.mjs +107 -0
  88. package/{esm2020 → esm2022}/lib/desy-nav/components/links-list/links-list-item/links-list-item.component.mjs +4 -4
  89. package/{esm2020 → esm2022}/lib/desy-nav/components/links-list/links-list-item-sub/links-list-item-sub.component.mjs +4 -4
  90. package/esm2022/lib/desy-nav/components/links-list/links-list.component.mjs +42 -0
  91. package/{esm2020 → esm2022}/lib/desy-nav/components/menu-horizontal/menu-horizontal-item/menu-horizontal-item.component.mjs +4 -4
  92. package/esm2022/lib/desy-nav/components/menu-horizontal/menu-horizontal.component.mjs +78 -0
  93. package/esm2022/lib/desy-nav/components/menu-navigation/components/menu-navigation-item/menu-navigation-item.component.mjs +49 -0
  94. package/{esm2020 → esm2022}/lib/desy-nav/components/menu-navigation/components/menu-navigation-subitem/menu-navigation-subitem.component.mjs +4 -4
  95. package/esm2022/lib/desy-nav/components/menu-navigation/menu-navigation.component.mjs +602 -0
  96. package/esm2022/lib/desy-nav/components/menu-vertical/menu-vertical-item/menu-vertical-item.component.mjs +46 -0
  97. package/esm2022/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub/menu-vertical-item-sub.component.mjs +18 -0
  98. package/{esm2020 → esm2022}/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub-item/menu-vertical-item-sub-item.component.mjs +4 -4
  99. package/esm2022/lib/desy-nav/components/menu-vertical/menu-vertical.component.mjs +113 -0
  100. package/esm2022/lib/desy-nav/components/menubar/components/menubar-item/menubar-item.component.mjs +51 -0
  101. package/{esm2020 → esm2022}/lib/desy-nav/components/menubar/components/menubar-label/menubar-label.component.mjs +4 -4
  102. package/esm2022/lib/desy-nav/components/menubar/components/menubar-subitem/menubar-subitem.component.mjs +36 -0
  103. package/{esm2020 → esm2022}/lib/desy-nav/components/menubar/components/menubar-subsubitem/menubar-subsubitem.component.mjs +4 -4
  104. package/esm2022/lib/desy-nav/components/menubar/directives/menubaritem.directive.mjs +45 -0
  105. package/esm2022/lib/desy-nav/components/menubar/menubar.component.mjs +713 -0
  106. package/{esm2020 → esm2022}/lib/desy-nav/components/nav/nav-item/nav-item.component.mjs +4 -4
  107. package/esm2022/lib/desy-nav/components/nav/nav.component.mjs +115 -0
  108. package/{esm2020 → esm2022}/lib/desy-nav/components/notification/notification-item/notification-item.component.mjs +4 -4
  109. package/esm2022/lib/desy-nav/components/notification/notification.component.mjs +143 -0
  110. package/{esm2020 → esm2022}/lib/desy-nav/components/skip-link/skip-link.component.mjs +5 -5
  111. package/{esm2020 → esm2022}/lib/desy-nav/desy-nav.module.mjs +93 -93
  112. package/esm2022/lib/desy-pagination/components/pagination/pagination.component.mjs +191 -0
  113. package/{esm2020 → esm2022}/lib/desy-pagination/components/pagination-item-perpage/pagination-item-perpage.component.mjs +4 -4
  114. package/{esm2020 → esm2022}/lib/desy-pagination/components/pagination-listbox-label/pagination-listbox-label.component.mjs +4 -4
  115. package/{esm2020 → esm2022}/lib/desy-pagination/desy-pagination.module.mjs +15 -15
  116. package/{esm2020 → esm2022}/lib/desy-tables/components/table/components/table-caption.component.mjs +4 -4
  117. package/{esm2020 → esm2022}/lib/desy-tables/components/table/components/table-cell.component.mjs +4 -4
  118. package/esm2022/lib/desy-tables/components/table/components/table-header.component.mjs +18 -0
  119. package/esm2022/lib/desy-tables/components/table/components/table-row.component.mjs +18 -0
  120. package/esm2022/lib/desy-tables/components/table/table.component.mjs +79 -0
  121. package/esm2022/lib/desy-tables/components/table-advanced/components/table-advanced-header-cell.component.mjs +50 -0
  122. package/esm2022/lib/desy-tables/components/table-advanced/components/table-advanced-header.component.mjs +18 -0
  123. package/{esm2020 → esm2022}/lib/desy-tables/components/table-advanced/components/table-advanced-row-cell.component.mjs +4 -4
  124. package/esm2022/lib/desy-tables/components/table-advanced/components/table-advanced-row.component.mjs +27 -0
  125. package/esm2022/lib/desy-tables/components/table-advanced/components/table-advanced-select.component.mjs +28 -0
  126. package/esm2022/lib/desy-tables/components/table-advanced/table-advanced.component.mjs +286 -0
  127. package/{esm2020 → esm2022}/lib/desy-tables/desy-tables.module.mjs +38 -38
  128. package/esm2022/lib/desy-tables/directives/cell.directive.mjs +25 -0
  129. package/esm2022/lib/desy-tables/directives/focus-clicked-cell.directive.mjs +81 -0
  130. package/esm2022/lib/desy-tables/directives/row.directive.mjs +22 -0
  131. package/{esm2020 → esm2022}/lib/desy-views/components/accordion/accordion-header/accordion-header.component.mjs +4 -4
  132. package/esm2022/lib/desy-views/components/accordion/accordion-item/accordion-item.component.mjs +61 -0
  133. package/esm2022/lib/desy-views/components/accordion/accordion.component.mjs +199 -0
  134. package/esm2022/lib/desy-views/components/accordion-history/accordion-history-item/accordion-history-item.component.mjs +41 -0
  135. package/esm2022/lib/desy-views/components/accordion-history/accordion-history.component.mjs +19 -0
  136. package/{esm2020 → esm2022}/lib/desy-views/components/accordion-history/accordion-item-hide-button/accordion-item-hide-button.component.mjs +4 -4
  137. package/{esm2020 → esm2022}/lib/desy-views/components/accordion-history/accordion-item-show-button/accordion-item-show-button.component.mjs +4 -4
  138. package/esm2022/lib/desy-views/components/alert/alert.component.mjs +81 -0
  139. package/esm2022/lib/desy-views/components/collapsible/collapsible.component.mjs +81 -0
  140. package/{esm2020 → esm2022}/lib/desy-views/components/description-list/definition/definition.component.mjs +4 -4
  141. package/esm2022/lib/desy-views/components/description-list/description-item/description-item.component.mjs +36 -0
  142. package/esm2022/lib/desy-views/components/description-list/description-list.component.mjs +28 -0
  143. package/{esm2020 → esm2022}/lib/desy-views/components/description-list/term/term.component.mjs +4 -4
  144. package/{esm2020 → esm2022}/lib/desy-views/components/details/details.component.mjs +4 -4
  145. package/{esm2020 → esm2022}/lib/desy-views/components/item/item-content-bottom/item-content-bottom.component.mjs +4 -4
  146. package/{esm2020 → esm2022}/lib/desy-views/components/item/item-content-right/item-content-right.component.mjs +4 -4
  147. package/{esm2020 → esm2022}/lib/desy-views/components/item/item-item/item-item.component.mjs +4 -4
  148. package/esm2022/lib/desy-views/components/item/item.component.mjs +121 -0
  149. package/{esm2020 → esm2022}/lib/desy-views/components/media-object/media-object-figure/media-object-figure.component.mjs +4 -4
  150. package/esm2022/lib/desy-views/components/media-object/media-object.component.mjs +117 -0
  151. package/{esm2020 → esm2022}/lib/desy-views/components/spinner/spinner.component.mjs +4 -4
  152. package/esm2022/lib/desy-views/components/status/status.component.mjs +107 -0
  153. package/esm2022/lib/desy-views/components/status-item/status-item.component.mjs +148 -0
  154. package/{esm2020 → esm2022}/lib/desy-views/components/tabs/panel/panel.component.mjs +4 -4
  155. package/esm2022/lib/desy-views/components/tabs/tab-item/tab-item.component.mjs +39 -0
  156. package/esm2022/lib/desy-views/components/tabs/tabs.component.mjs +200 -0
  157. package/{esm2020 → esm2022}/lib/desy-views/components/tooltip/tooltip-content/tooltip-content.component.mjs +4 -4
  158. package/esm2022/lib/desy-views/components/tooltip/tooltip.component.mjs +206 -0
  159. package/{esm2020 → esm2022}/lib/desy-views/desy-views.module.mjs +67 -67
  160. package/esm2022/lib/desy-views/services/alert.service.mjs +88 -0
  161. package/esm2022/lib/shared/components/accessibility/accessibility.component.mjs +42 -0
  162. package/{esm2020 → esm2022}/lib/shared/components/accessibility-and-content-required/accessibility-and-content-required.component.mjs +4 -4
  163. package/{esm2020 → esm2022}/lib/shared/components/accessibility-and-text-or-html-required/accessibility-and-text-or-html-required.component.mjs +4 -4
  164. package/esm2022/lib/shared/components/content-base/content-base.component.mjs +21 -0
  165. package/{esm2020 → esm2022}/lib/shared/components/text-or-html-required/text-or-html-required.component.mjs +4 -4
  166. package/esm2022/lib/shared/decorators/desy-content-child.decorator.mjs +30 -0
  167. package/esm2022/lib/shared/decorators/desy-on-input-change.decorator.mjs +15 -0
  168. package/esm2022/lib/shared/directives/attribute-change.directive.mjs +50 -0
  169. package/esm2022/lib/shared/directives/click-outside.directive.mjs +40 -0
  170. package/esm2022/lib/shared/directives/content-change.directive.mjs +41 -0
  171. package/esm2022/lib/shared/directives/custom-inner-content.directive.mjs +44 -0
  172. package/esm2022/lib/shared/directives/inner-content.directive.mjs +37 -0
  173. package/esm2022/lib/shared/pipes/external-href.pipe.mjs +28 -0
  174. package/esm2022/lib/shared/pipes/inner-html.pipe.mjs +21 -0
  175. package/{esm2020 → esm2022}/lib/shared/pipes/make-html-list.pipe.mjs +4 -4
  176. package/esm2022/lib/shared/shared.module.mjs +83 -0
  177. package/esm2022/lib/shared/utils/search-utils.mjs +66 -0
  178. package/esm2022/lib/shared/utils/string-utils.mjs +11 -0
  179. package/esm2022/public-api.mjs +197 -0
  180. package/{fesm2020 → fesm2022}/desy-angular.mjs +1375 -1684
  181. package/fesm2022/desy-angular.mjs.map +1 -0
  182. package/index.d.ts +0 -3
  183. package/lib/desy-buttons/components/button/button.component.d.ts +1 -1
  184. package/lib/desy-buttons/components/button-loader/button-loader.component.d.ts +1 -1
  185. package/lib/desy-buttons/components/dropdown/dropdown.component.d.ts +1 -1
  186. package/lib/desy-buttons/components/listbox/listbox-item/listbox-item.component.d.ts +1 -1
  187. package/lib/desy-buttons/components/listbox/listbox-label/listbox-label.component.d.ts +1 -1
  188. package/lib/desy-buttons/components/listbox/listbox.component.d.ts +1 -1
  189. package/lib/desy-buttons/components/pill/pill.component.d.ts +1 -1
  190. package/lib/desy-buttons/components/toggle/toggle-off-state/toggle-off-state.component.d.ts +1 -1
  191. package/lib/desy-buttons/components/toggle/toggle-on-state/toggle-on-state.component.d.ts +1 -1
  192. package/lib/desy-buttons/components/toggle/toggle.component.d.ts +1 -1
  193. package/lib/desy-commons/components/content/content.component.d.ts +1 -1
  194. package/lib/desy-commons/components/description/description.component.d.ts +1 -1
  195. package/lib/desy-commons/components/divider/divider.component.d.ts +1 -1
  196. package/lib/desy-commons/components/icon/icon.component.d.ts +1 -1
  197. package/lib/desy-commons/components/title/title.component.d.ts +1 -1
  198. package/lib/desy-forms/components/character-count/character-count.component.d.ts +1 -1
  199. package/lib/desy-forms/components/checkboxes/checkbox-item/checkbox-item.component.d.ts +1 -1
  200. package/lib/desy-forms/components/checkboxes/checkboxes-parent.component.d.ts +0 -8
  201. package/lib/desy-forms/components/checkboxes/checkboxes.component.d.ts +1 -27
  202. package/lib/desy-forms/components/date-input/date-input-day/date-input-day.component.d.ts +1 -1
  203. package/lib/desy-forms/components/date-input/date-input-item/date-input-item.component.d.ts +1 -1
  204. package/lib/desy-forms/components/date-input/date-input-month/date-input-month.component.d.ts +1 -1
  205. package/lib/desy-forms/components/date-input/date-input-year/date-input-year.component.d.ts +1 -1
  206. package/lib/desy-forms/components/date-input/date-input.component.d.ts +1 -8
  207. package/lib/desy-forms/components/error-message/error-message.component.d.ts +1 -1
  208. package/lib/desy-forms/components/fieldset/fieldset.component.d.ts +1 -8
  209. package/lib/desy-forms/components/fieldset/legend/legend.component.d.ts +1 -1
  210. package/lib/desy-forms/components/file-upload/file-upload.component.d.ts +1 -6
  211. package/lib/desy-forms/components/form-field/form-field.component.d.ts +1 -1
  212. package/lib/desy-forms/components/hint/hint.component.d.ts +1 -1
  213. package/lib/desy-forms/components/input/input.component.d.ts +1 -1
  214. package/lib/desy-forms/components/input-group/input-group-input/input-group-input.component.d.ts +1 -1
  215. package/lib/desy-forms/components/input-group/input-group-item/input-group-item.component.d.ts +1 -1
  216. package/lib/desy-forms/components/input-group/input-group-select/input-group-select.component.d.ts +1 -1
  217. package/lib/desy-forms/components/input-group/input-group.component.d.ts +1 -8
  218. package/lib/desy-forms/components/label/label.component.d.ts +1 -1
  219. package/lib/desy-forms/components/radios/radio-item/radio-item.component.d.ts +1 -1
  220. package/lib/desy-forms/components/radios/radios-parent.component.d.ts +0 -8
  221. package/lib/desy-forms/components/radios/radios.component.d.ts +1 -27
  222. package/lib/desy-forms/components/search-bar/search-bar.component.d.ts +1 -1
  223. package/lib/desy-forms/components/select/option/option.component.d.ts +1 -1
  224. package/lib/desy-forms/components/select/option-group/option-group.component.d.ts +1 -1
  225. package/lib/desy-forms/components/select/select-item/select-item.component.d.ts +1 -1
  226. package/lib/desy-forms/components/select/select.component.d.ts +1 -1
  227. package/lib/desy-forms/components/textarea/textarea.component.d.ts +1 -1
  228. package/lib/desy-forms/components/tree/tree-checkbox/tree-checkbox.component.d.ts +1 -1
  229. package/lib/desy-forms/components/tree/tree-item/tree-item.component.d.ts +1 -5
  230. package/lib/desy-forms/components/tree/tree-items-generator/tree-items-generator.component.d.ts +6 -2
  231. package/lib/desy-forms/components/tree/tree-sub/tree-sub.component.d.ts +1 -1
  232. package/lib/desy-forms/components/tree/tree.component.d.ts +1 -62
  233. package/lib/desy-forms/directives/condition.directive.d.ts +1 -6
  234. package/lib/desy-modals/components/dialog/dialog.component.d.ts +1 -1
  235. package/lib/desy-modals/components/modal/modal-button-loader-primary/modal-button-loader-primary.component.d.ts +1 -1
  236. package/lib/desy-modals/components/modal/modal-button-loader-secondary/modal-button-loader-secondary.component.d.ts +1 -1
  237. package/lib/desy-modals/components/modal/modal-button-primary/modal-button-primary.component.d.ts +1 -1
  238. package/lib/desy-modals/components/modal/modal-button-secondary/modal-button-secondary.component.d.ts +1 -1
  239. package/lib/desy-modals/components/modal/modal.component.d.ts +1 -1
  240. package/lib/desy-nav/components/breadcrumbs/breadcrumbs-item/breadcrumbs-item.component.d.ts +1 -1
  241. package/lib/desy-nav/components/breadcrumbs/breadcrumbs.component.d.ts +1 -1
  242. package/lib/desy-nav/components/error-summary/error-summary-item/error-summary-item.component.d.ts +1 -1
  243. package/lib/desy-nav/components/error-summary/error-summary.component.d.ts +1 -1
  244. package/lib/desy-nav/components/footer/footer-meta/footer-meta-item/footer-meta-item.component.d.ts +1 -1
  245. package/lib/desy-nav/components/footer/footer-meta/footer-meta.component.d.ts +1 -1
  246. package/lib/desy-nav/components/footer/footer-navigation/footer-navigation-item/footer-navigation-item.component.d.ts +1 -1
  247. package/lib/desy-nav/components/footer/footer-navigation/footer-navigation.component.d.ts +1 -1
  248. package/lib/desy-nav/components/footer/footer.component.d.ts +1 -1
  249. package/lib/desy-nav/components/header/header-dropdown/header-dropdown.component.d.ts +1 -1
  250. package/lib/desy-nav/components/header/header-navigation/header-navigation-item/header-navigation-item.component.d.ts +1 -1
  251. package/lib/desy-nav/components/header/header-navigation/header-navigation.component.d.ts +1 -1
  252. package/lib/desy-nav/components/header/header-offcanvas/header-offcanvas.component.d.ts +1 -8
  253. package/lib/desy-nav/components/header/header-subnav/header-subnav.component.d.ts +1 -1
  254. package/lib/desy-nav/components/header/header.component.d.ts +1 -1
  255. package/lib/desy-nav/components/links-list/links-list-item/links-list-item.component.d.ts +1 -1
  256. package/lib/desy-nav/components/links-list/links-list-item-sub/links-list-item-sub.component.d.ts +1 -1
  257. package/lib/desy-nav/components/links-list/links-list.component.d.ts +1 -1
  258. package/lib/desy-nav/components/menu-horizontal/menu-horizontal-item/menu-horizontal-item.component.d.ts +1 -1
  259. package/lib/desy-nav/components/menu-horizontal/menu-horizontal.component.d.ts +1 -1
  260. package/lib/desy-nav/components/menu-navigation/components/menu-navigation-item/menu-navigation-item.component.d.ts +1 -1
  261. package/lib/desy-nav/components/menu-navigation/components/menu-navigation-subitem/menu-navigation-subitem.component.d.ts +1 -1
  262. package/lib/desy-nav/components/menu-navigation/menu-navigation.component.d.ts +1 -1
  263. package/lib/desy-nav/components/menu-vertical/menu-vertical-item/menu-vertical-item.component.d.ts +1 -1
  264. package/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub/menu-vertical-item-sub.component.d.ts +1 -1
  265. package/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub-item/menu-vertical-item-sub-item.component.d.ts +1 -1
  266. package/lib/desy-nav/components/menu-vertical/menu-vertical.component.d.ts +1 -1
  267. package/lib/desy-nav/components/menubar/components/menubar-item/menubar-item.component.d.ts +1 -1
  268. package/lib/desy-nav/components/menubar/components/menubar-label/menubar-label.component.d.ts +1 -1
  269. package/lib/desy-nav/components/menubar/components/menubar-subitem/menubar-subitem.component.d.ts +1 -1
  270. package/lib/desy-nav/components/menubar/components/menubar-subsubitem/menubar-subsubitem.component.d.ts +1 -1
  271. package/lib/desy-nav/components/menubar/menubar.component.d.ts +1 -8
  272. package/lib/desy-nav/components/nav/nav-item/nav-item.component.d.ts +1 -1
  273. package/lib/desy-nav/components/nav/nav.component.d.ts +1 -1
  274. package/lib/desy-nav/components/notification/notification-item/notification-item.component.d.ts +1 -1
  275. package/lib/desy-nav/components/notification/notification.component.d.ts +1 -1
  276. package/lib/desy-nav/components/skip-link/skip-link.component.d.ts +1 -1
  277. package/lib/desy-pagination/components/pagination/pagination.component.d.ts +1 -1
  278. package/lib/desy-pagination/components/pagination-item-perpage/pagination-item-perpage.component.d.ts +1 -1
  279. package/lib/desy-pagination/components/pagination-listbox-label/pagination-listbox-label.component.d.ts +1 -1
  280. package/lib/desy-tables/components/table/components/table-caption.component.d.ts +1 -1
  281. package/lib/desy-tables/components/table/components/table-cell.component.d.ts +1 -1
  282. package/lib/desy-tables/components/table/table.component.d.ts +1 -1
  283. package/lib/desy-tables/components/table-advanced/components/table-advanced-header-cell.component.d.ts +1 -1
  284. package/lib/desy-tables/components/table-advanced/components/table-advanced-row-cell.component.d.ts +1 -1
  285. package/lib/desy-tables/components/table-advanced/components/table-advanced-row.component.d.ts +1 -1
  286. package/lib/desy-tables/components/table-advanced/components/table-advanced-select.component.d.ts +1 -1
  287. package/lib/desy-tables/components/table-advanced/table-advanced.component.d.ts +1 -56
  288. package/lib/desy-tables/directives/cell.directive.d.ts +1 -4
  289. package/lib/desy-tables/directives/row.directive.d.ts +1 -8
  290. package/lib/desy-views/components/accordion/accordion-header/accordion-header.component.d.ts +1 -1
  291. package/lib/desy-views/components/accordion/accordion-item/accordion-item.component.d.ts +1 -1
  292. package/lib/desy-views/components/accordion/accordion.component.d.ts +1 -1
  293. package/lib/desy-views/components/accordion-history/accordion-history-item/accordion-history-item.component.d.ts +1 -1
  294. package/lib/desy-views/components/accordion-history/accordion-item-hide-button/accordion-item-hide-button.component.d.ts +1 -1
  295. package/lib/desy-views/components/accordion-history/accordion-item-show-button/accordion-item-show-button.component.d.ts +1 -1
  296. package/lib/desy-views/components/alert/alert.component.d.ts +1 -1
  297. package/lib/desy-views/components/collapsible/collapsible.component.d.ts +1 -1
  298. package/lib/desy-views/components/description-list/definition/definition.component.d.ts +1 -1
  299. package/lib/desy-views/components/description-list/description-item/description-item.component.d.ts +1 -1
  300. package/lib/desy-views/components/description-list/description-list.component.d.ts +1 -1
  301. package/lib/desy-views/components/description-list/term/term.component.d.ts +1 -1
  302. package/lib/desy-views/components/details/details.component.d.ts +1 -1
  303. package/lib/desy-views/components/item/item-content-bottom/item-content-bottom.component.d.ts +1 -1
  304. package/lib/desy-views/components/item/item.component.d.ts +1 -1
  305. package/lib/desy-views/components/media-object/media-object.component.d.ts +1 -1
  306. package/lib/desy-views/components/spinner/spinner.component.d.ts +1 -1
  307. package/lib/desy-views/components/status/status.component.d.ts +1 -1
  308. package/lib/desy-views/components/status-item/status-item.component.d.ts +1 -1
  309. package/lib/desy-views/components/tabs/panel/panel.component.d.ts +1 -1
  310. package/lib/desy-views/components/tabs/tab-item/tab-item.component.d.ts +1 -1
  311. package/lib/desy-views/components/tabs/tabs.component.d.ts +1 -1
  312. package/lib/desy-views/components/tooltip/tooltip.component.d.ts +1 -1
  313. package/lib/shared/components/accessibility/accessibility.component.d.ts +1 -4
  314. package/lib/shared/components/accessibility-and-content-required/accessibility-and-content-required.component.d.ts +1 -9
  315. package/lib/shared/components/accessibility-and-text-or-html-required/accessibility-and-text-or-html-required.component.d.ts +1 -7
  316. package/lib/shared/components/content-base/content-base.component.d.ts +0 -3
  317. package/lib/shared/components/text-or-html-required/text-or-html-required.component.d.ts +1 -5
  318. package/lib/shared/decorators/desy-content-child.decorator.d.ts +0 -11
  319. package/lib/shared/decorators/desy-on-input-change.decorator.d.ts +0 -4
  320. package/lib/shared/directives/attribute-change.directive.d.ts +1 -1
  321. package/lib/shared/directives/click-outside.directive.d.ts +1 -1
  322. package/lib/shared/directives/content-change.directive.d.ts +1 -5
  323. package/lib/shared/directives/custom-inner-content.directive.d.ts +1 -7
  324. package/lib/shared/directives/inner-content.directive.d.ts +1 -1
  325. package/lib/shared/pipes/external-href.pipe.d.ts +0 -4
  326. package/lib/shared/utils/search-utils.d.ts +0 -10
  327. package/lib/shared/utils/string-utils.d.ts +0 -7
  328. package/package.json +13 -19
  329. package/esm2020/desy-angular.mjs +0 -5
  330. package/esm2020/lib/desy-buttons/components/button/button.component.mjs +0 -115
  331. package/esm2020/lib/desy-buttons/components/button-loader/button-loader.component.mjs +0 -63
  332. package/esm2020/lib/desy-buttons/components/dropdown/dropdown.component.mjs +0 -125
  333. package/esm2020/lib/desy-buttons/components/listbox/listbox.component.mjs +0 -339
  334. package/esm2020/lib/desy-buttons/components/pill/pill.component.mjs +0 -80
  335. package/esm2020/lib/desy-buttons/components/toggle/toggle.component.mjs +0 -59
  336. package/esm2020/lib/desy-buttons/desy-buttons.module.mjs +0 -82
  337. package/esm2020/lib/desy-commons/desy-commons.module.mjs +0 -53
  338. package/esm2020/lib/desy-forms/components/checkboxes/checkbox-item/checkbox-item.component.mjs +0 -222
  339. package/esm2020/lib/desy-forms/components/checkboxes/checkboxes-parent.component.mjs +0 -23
  340. package/esm2020/lib/desy-forms/components/checkboxes/checkboxes.component.mjs +0 -295
  341. package/esm2020/lib/desy-forms/components/date-input/date-input-day/date-input-day.component.mjs +0 -54
  342. package/esm2020/lib/desy-forms/components/date-input/date-input-divider/date-input-divider.component.mjs +0 -19
  343. package/esm2020/lib/desy-forms/components/date-input/date-input-month/date-input-month.component.mjs +0 -54
  344. package/esm2020/lib/desy-forms/components/date-input/date-input-year/date-input-year.component.mjs +0 -50
  345. package/esm2020/lib/desy-forms/components/date-input/date-input.component.mjs +0 -289
  346. package/esm2020/lib/desy-forms/components/error-message/error-message.component.mjs +0 -31
  347. package/esm2020/lib/desy-forms/components/file-upload/file-upload.component.mjs +0 -72
  348. package/esm2020/lib/desy-forms/components/form-field/form-field.component.mjs +0 -124
  349. package/esm2020/lib/desy-forms/components/hint/hint.component.mjs +0 -29
  350. package/esm2020/lib/desy-forms/components/input/input.component.mjs +0 -99
  351. package/esm2020/lib/desy-forms/components/input-group/input-group-divider/input-group-divider.component.mjs +0 -20
  352. package/esm2020/lib/desy-forms/components/input-group/input-group-input/input-group-input.component.mjs +0 -58
  353. package/esm2020/lib/desy-forms/components/input-group/input-group-select/input-group-select.component.mjs +0 -50
  354. package/esm2020/lib/desy-forms/components/input-group/input-group.component.mjs +0 -229
  355. package/esm2020/lib/desy-forms/components/label/label.component.mjs +0 -38
  356. package/esm2020/lib/desy-forms/components/radios/radio-item/radio-item.component.mjs +0 -173
  357. package/esm2020/lib/desy-forms/components/radios/radios-parent.component.mjs +0 -23
  358. package/esm2020/lib/desy-forms/components/radios/radios.component.mjs +0 -308
  359. package/esm2020/lib/desy-forms/components/search-bar/search-bar.component.mjs +0 -60
  360. package/esm2020/lib/desy-forms/components/select/option-group/option-group.component.mjs +0 -18
  361. package/esm2020/lib/desy-forms/components/select/select.component.mjs +0 -93
  362. package/esm2020/lib/desy-forms/components/tree/tree-checkbox/tree-checkbox.component.mjs +0 -167
  363. package/esm2020/lib/desy-forms/components/tree/tree-item/tree-item.component.mjs +0 -398
  364. package/esm2020/lib/desy-forms/components/tree/tree-items-generator/tree-items-generator.component.mjs +0 -25
  365. package/esm2020/lib/desy-forms/components/tree/tree.component.mjs +0 -433
  366. package/esm2020/lib/desy-forms/desy-forms.module.mjs +0 -209
  367. package/esm2020/lib/desy-forms/directives/condition.directive.mjs +0 -34
  368. package/esm2020/lib/desy-modals/components/dialog/dialog.component.mjs +0 -150
  369. package/esm2020/lib/desy-modals/components/modal/modal-button-loader-primary/modal-button-loader-primary.component.mjs +0 -25
  370. package/esm2020/lib/desy-modals/components/modal/modal-button-loader-secondary/modal-button-loader-secondary.component.mjs +0 -23
  371. package/esm2020/lib/desy-modals/components/modal/modal-button-primary/modal-button-primary.component.mjs +0 -23
  372. package/esm2020/lib/desy-modals/components/modal/modal-button-secondary/modal-button-secondary.component.mjs +0 -23
  373. package/esm2020/lib/desy-modals/components/modal/modal.component.mjs +0 -178
  374. package/esm2020/lib/desy-modals/desy-modals.module.mjs +0 -62
  375. package/esm2020/lib/desy-modals/interfaces/index.mjs +0 -8
  376. package/esm2020/lib/desy-modals/services/dialog.service.mjs +0 -114
  377. package/esm2020/lib/desy-nav/components/breadcrumbs/breadcrumbs.component.mjs +0 -47
  378. package/esm2020/lib/desy-nav/components/error-summary/error-summary.component.mjs +0 -62
  379. package/esm2020/lib/desy-nav/components/footer/footer-meta/footer-meta.component.mjs +0 -30
  380. package/esm2020/lib/desy-nav/components/footer/footer-navigation/footer-navigation.component.mjs +0 -19
  381. package/esm2020/lib/desy-nav/components/footer/footer.component.mjs +0 -71
  382. package/esm2020/lib/desy-nav/components/header/header-dropdown/header-dropdown.component.mjs +0 -45
  383. package/esm2020/lib/desy-nav/components/header/header-navigation/header-navigation.component.mjs +0 -36
  384. package/esm2020/lib/desy-nav/components/header/header-offcanvas/header-offcanvas.component.mjs +0 -95
  385. package/esm2020/lib/desy-nav/components/header/header-subnav/header-subnav.component.mjs +0 -41
  386. package/esm2020/lib/desy-nav/components/header/header.component.mjs +0 -101
  387. package/esm2020/lib/desy-nav/components/links-list/links-list.component.mjs +0 -42
  388. package/esm2020/lib/desy-nav/components/menu-horizontal/menu-horizontal.component.mjs +0 -79
  389. package/esm2020/lib/desy-nav/components/menu-navigation/components/menu-navigation-item/menu-navigation-item.component.mjs +0 -49
  390. package/esm2020/lib/desy-nav/components/menu-navigation/menu-navigation.component.mjs +0 -616
  391. package/esm2020/lib/desy-nav/components/menu-vertical/menu-vertical-item/menu-vertical-item.component.mjs +0 -45
  392. package/esm2020/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub/menu-vertical-item-sub.component.mjs +0 -18
  393. package/esm2020/lib/desy-nav/components/menu-vertical/menu-vertical.component.mjs +0 -113
  394. package/esm2020/lib/desy-nav/components/menubar/components/menubar-item/menubar-item.component.mjs +0 -51
  395. package/esm2020/lib/desy-nav/components/menubar/components/menubar-subitem/menubar-subitem.component.mjs +0 -36
  396. package/esm2020/lib/desy-nav/components/menubar/directives/menubaritem.directive.mjs +0 -45
  397. package/esm2020/lib/desy-nav/components/menubar/menubar.component.mjs +0 -727
  398. package/esm2020/lib/desy-nav/components/nav/nav.component.mjs +0 -116
  399. package/esm2020/lib/desy-nav/components/notification/notification.component.mjs +0 -141
  400. package/esm2020/lib/desy-pagination/components/pagination/pagination.component.mjs +0 -190
  401. package/esm2020/lib/desy-tables/components/table/components/table-header.component.mjs +0 -18
  402. package/esm2020/lib/desy-tables/components/table/components/table-row.component.mjs +0 -18
  403. package/esm2020/lib/desy-tables/components/table/table.component.mjs +0 -78
  404. package/esm2020/lib/desy-tables/components/table-advanced/components/table-advanced-header-cell.component.mjs +0 -47
  405. package/esm2020/lib/desy-tables/components/table-advanced/components/table-advanced-header.component.mjs +0 -18
  406. package/esm2020/lib/desy-tables/components/table-advanced/components/table-advanced-row.component.mjs +0 -27
  407. package/esm2020/lib/desy-tables/components/table-advanced/components/table-advanced-select.component.mjs +0 -28
  408. package/esm2020/lib/desy-tables/components/table-advanced/table-advanced.component.mjs +0 -342
  409. package/esm2020/lib/desy-tables/directives/cell.directive.mjs +0 -28
  410. package/esm2020/lib/desy-tables/directives/focus-clicked-cell.directive.mjs +0 -81
  411. package/esm2020/lib/desy-tables/directives/row.directive.mjs +0 -29
  412. package/esm2020/lib/desy-views/components/accordion/accordion-item/accordion-item.component.mjs +0 -57
  413. package/esm2020/lib/desy-views/components/accordion/accordion.component.mjs +0 -198
  414. package/esm2020/lib/desy-views/components/accordion-history/accordion-history-item/accordion-history-item.component.mjs +0 -39
  415. package/esm2020/lib/desy-views/components/accordion-history/accordion-history.component.mjs +0 -19
  416. package/esm2020/lib/desy-views/components/alert/alert.component.mjs +0 -81
  417. package/esm2020/lib/desy-views/components/collapsible/collapsible.component.mjs +0 -81
  418. package/esm2020/lib/desy-views/components/description-list/description-item/description-item.component.mjs +0 -34
  419. package/esm2020/lib/desy-views/components/description-list/description-list.component.mjs +0 -28
  420. package/esm2020/lib/desy-views/components/item/item.component.mjs +0 -116
  421. package/esm2020/lib/desy-views/components/media-object/media-object.component.mjs +0 -115
  422. package/esm2020/lib/desy-views/components/status/status.component.mjs +0 -106
  423. package/esm2020/lib/desy-views/components/status-item/status-item.component.mjs +0 -143
  424. package/esm2020/lib/desy-views/components/tabs/tab-item/tab-item.component.mjs +0 -37
  425. package/esm2020/lib/desy-views/components/tabs/tabs.component.mjs +0 -199
  426. package/esm2020/lib/desy-views/components/tooltip/tooltip.component.mjs +0 -202
  427. package/esm2020/lib/desy-views/services/alert.service.mjs +0 -88
  428. package/esm2020/lib/shared/components/accessibility/accessibility.component.mjs +0 -45
  429. package/esm2020/lib/shared/components/content-base/content-base.component.mjs +0 -24
  430. package/esm2020/lib/shared/decorators/desy-content-child.decorator.mjs +0 -41
  431. package/esm2020/lib/shared/decorators/desy-on-input-change.decorator.mjs +0 -19
  432. package/esm2020/lib/shared/directives/attribute-change.directive.mjs +0 -50
  433. package/esm2020/lib/shared/directives/click-outside.directive.mjs +0 -40
  434. package/esm2020/lib/shared/directives/content-change.directive.mjs +0 -45
  435. package/esm2020/lib/shared/directives/custom-inner-content.directive.mjs +0 -60
  436. package/esm2020/lib/shared/directives/inner-content.directive.mjs +0 -37
  437. package/esm2020/lib/shared/pipes/external-href.pipe.mjs +0 -32
  438. package/esm2020/lib/shared/pipes/inner-html.pipe.mjs +0 -20
  439. package/esm2020/lib/shared/shared.module.mjs +0 -99
  440. package/esm2020/lib/shared/utils/search-utils.mjs +0 -78
  441. package/esm2020/lib/shared/utils/string-utils.mjs +0 -18
  442. package/esm2020/public-api.mjs +0 -225
  443. package/fesm2015/desy-angular.mjs +0 -11955
  444. package/fesm2015/desy-angular.mjs.map +0 -1
  445. package/fesm2020/desy-angular.mjs.map +0 -1
  446. /package/{esm2020 → esm2022}/lib/desy-buttons/interfaces/listbox-item-data.mjs +0 -0
  447. /package/{esm2020 → esm2022}/lib/desy-buttons/interfaces/listbox-label-data.mjs +0 -0
  448. /package/{esm2020 → esm2022}/lib/desy-commons/interfaces/content-data.mjs +0 -0
  449. /package/{esm2020 → esm2022}/lib/desy-commons/interfaces/description-data.mjs +0 -0
  450. /package/{esm2020 → esm2022}/lib/desy-commons/interfaces/divider-data.mjs +0 -0
  451. /package/{esm2020 → esm2022}/lib/desy-commons/interfaces/icon-data.mjs +0 -0
  452. /package/{esm2020 → esm2022}/lib/desy-commons/interfaces/index.mjs +0 -0
  453. /package/{esm2020 → esm2022}/lib/desy-commons/interfaces/title-data.mjs +0 -0
  454. /package/{esm2020 → esm2022}/lib/desy-forms/components/tree/interfaces/itree-item.mjs +0 -0
  455. /package/{esm2020 → esm2022}/lib/desy-forms/components/tree/interfaces/quit-tree-item-focus-options.mjs +0 -0
  456. /package/{esm2020 → esm2022}/lib/desy-forms/interfaces/accesibility-data.mjs +0 -0
  457. /package/{esm2020 → esm2022}/lib/desy-forms/interfaces/error-message-data.mjs +0 -0
  458. /package/{esm2020 → esm2022}/lib/desy-forms/interfaces/fieldset-data.mjs +0 -0
  459. /package/{esm2020 → esm2022}/lib/desy-forms/interfaces/hint-data.mjs +0 -0
  460. /package/{esm2020 → esm2022}/lib/desy-forms/interfaces/index.mjs +0 -0
  461. /package/{esm2020 → esm2022}/lib/desy-forms/interfaces/item-checkbox-data.mjs +0 -0
  462. /package/{esm2020 → esm2022}/lib/desy-forms/interfaces/item-date-input-data.mjs +0 -0
  463. /package/{esm2020 → esm2022}/lib/desy-forms/interfaces/item-divider-date-input-data.mjs +0 -0
  464. /package/{esm2020 → esm2022}/lib/desy-forms/interfaces/item-divider-input-group-data.mjs +0 -0
  465. /package/{esm2020 → esm2022}/lib/desy-forms/interfaces/item-input-group-data.mjs +0 -0
  466. /package/{esm2020 → esm2022}/lib/desy-forms/interfaces/item-radio-data.mjs +0 -0
  467. /package/{esm2020 → esm2022}/lib/desy-forms/interfaces/item-radio-with-template-data.mjs +0 -0
  468. /package/{esm2020 → esm2022}/lib/desy-forms/interfaces/label-data.mjs +0 -0
  469. /package/{esm2020 → esm2022}/lib/desy-forms/interfaces/legend-data.mjs +0 -0
  470. /package/{esm2020 → esm2022}/lib/desy-forms/interfaces/select-item-data.mjs +0 -0
  471. /package/{esm2020 → esm2022}/lib/desy-modals/interfaces/dialog-options.mjs +0 -0
  472. /package/{esm2020 → esm2022}/lib/desy-modals/interfaces/modal-button-data.mjs +0 -0
  473. /package/{esm2020 → esm2022}/lib/desy-modals/interfaces/modal-data.mjs +0 -0
  474. /package/{esm2020 → esm2022}/lib/desy-modals/interfaces/modal-icon-data.mjs +0 -0
  475. /package/{esm2020 → esm2022}/lib/desy-modals/interfaces/modal-options.mjs +0 -0
  476. /package/{esm2020 → esm2022}/lib/desy-modals/interfaces/open-dialog-result.mjs +0 -0
  477. /package/{esm2020 → esm2022}/lib/desy-nav/interfaces/breadcrumbs.data.mjs +0 -0
  478. /package/{esm2020 → esm2022}/lib/desy-nav/interfaces/error-summary-data.mjs +0 -0
  479. /package/{esm2020 → esm2022}/lib/desy-nav/interfaces/footer-data.mjs +0 -0
  480. /package/{esm2020 → esm2022}/lib/desy-nav/interfaces/header-dropdown-data.mjs +0 -0
  481. /package/{esm2020 → esm2022}/lib/desy-nav/interfaces/header-navigation-data.mjs +0 -0
  482. /package/{esm2020 → esm2022}/lib/desy-nav/interfaces/header-navigation-item-data.mjs +0 -0
  483. /package/{esm2020 → esm2022}/lib/desy-nav/interfaces/header-offcanvas-data.mjs +0 -0
  484. /package/{esm2020 → esm2022}/lib/desy-nav/interfaces/header-skiplink-data.mjs +0 -0
  485. /package/{esm2020 → esm2022}/lib/desy-nav/interfaces/header-subnav-data.mjs +0 -0
  486. /package/{esm2020 → esm2022}/lib/desy-nav/interfaces/index.mjs +0 -0
  487. /package/{esm2020 → esm2022}/lib/desy-nav/interfaces/menu-horizontal-item-data.mjs +0 -0
  488. /package/{esm2020 → esm2022}/lib/desy-nav/interfaces/menu-horizontal-item-event-data.mjs +0 -0
  489. /package/{esm2020 → esm2022}/lib/desy-nav/interfaces/menu-navigation-item-sub-item-sub-item.mjs +0 -0
  490. /package/{esm2020 → esm2022}/lib/desy-nav/interfaces/menu-navigation-item-sub-item.mjs +0 -0
  491. /package/{esm2020 → esm2022}/lib/desy-nav/interfaces/menu-navigation.mjs +0 -0
  492. /package/{esm2020 → esm2022}/lib/desy-nav/interfaces/menu-vertical-items-data.mjs +0 -0
  493. /package/{esm2020 → esm2022}/lib/desy-nav/interfaces/menu-vertical-sub-data.mjs +0 -0
  494. /package/{esm2020 → esm2022}/lib/desy-nav/interfaces/menu-vertical-sub-items-data.mjs +0 -0
  495. /package/{esm2020 → esm2022}/lib/desy-nav/interfaces/menubar-item-sub-item-sub-item.mjs +0 -0
  496. /package/{esm2020 → esm2022}/lib/desy-nav/interfaces/menubar-item-sub-item.mjs +0 -0
  497. /package/{esm2020 → esm2022}/lib/desy-nav/interfaces/menubar-item-sub.mjs +0 -0
  498. /package/{esm2020 → esm2022}/lib/desy-nav/interfaces/menubar-item.mjs +0 -0
  499. /package/{esm2020 → esm2022}/lib/desy-nav/interfaces/nav-item-event.data.mjs +0 -0
  500. /package/{esm2020 → esm2022}/lib/desy-nav/interfaces/nav-item.data.mjs +0 -0
  501. /package/{esm2020 → esm2022}/lib/desy-nav/interfaces/notification-items-data.mjs +0 -0
  502. /package/{esm2020 → esm2022}/lib/desy-nav/interfaces/notification-options.mjs +0 -0
  503. /package/{esm2020 → esm2022}/lib/desy-pagination/interfaces/index.mjs +0 -0
  504. /package/{esm2020 → esm2022}/lib/desy-pagination/interfaces/pagination-item.data.mjs +0 -0
  505. /package/{esm2020 → esm2022}/lib/desy-tables/interfaces/cell-data.mjs +0 -0
  506. /package/{esm2020 → esm2022}/lib/desy-tables/interfaces/head-cell-data.mjs +0 -0
  507. /package/{esm2020 → esm2022}/lib/desy-tables/interfaces/index.mjs +0 -0
  508. /package/{esm2020 → esm2022}/lib/desy-tables/interfaces/recalculate-table-params.mjs +0 -0
  509. /package/{esm2020 → esm2022}/lib/desy-tables/interfaces/row-data.mjs +0 -0
  510. /package/{esm2020 → esm2022}/lib/desy-tables/interfaces/wrapper-data.mjs +0 -0
  511. /package/{esm2020 → esm2022}/lib/desy-views/interfaces/accordion-header.data.mjs +0 -0
  512. /package/{esm2020 → esm2022}/lib/desy-views/interfaces/accordion-item.data.mjs +0 -0
  513. /package/{esm2020 → esm2022}/lib/desy-views/interfaces/alert-options.mjs +0 -0
  514. /package/{esm2020 → esm2022}/lib/desy-views/interfaces/description-item.data.mjs +0 -0
  515. /package/{esm2020 → esm2022}/lib/desy-views/interfaces/index.mjs +0 -0
  516. /package/{esm2020 → esm2022}/lib/desy-views/interfaces/open-alert-result.mjs +0 -0
  517. /package/{esm2020 → esm2022}/lib/desy-views/interfaces/status-data.mjs +0 -0
  518. /package/{esm2020 → esm2022}/lib/desy-views/interfaces/status-icon-data.mjs +0 -0
  519. /package/{esm2020 → esm2022}/lib/desy-views/interfaces/status-item-title-data.mjs +0 -0
  520. /package/{esm2020 → esm2022}/lib/desy-views/interfaces/tabs-items-data.mjs +0 -0
  521. /package/{esm2020 → esm2022}/lib/desy-views/interfaces/tabs-panel-data.mjs +0 -0
  522. /package/{esm2020 → esm2022}/lib/desy-views/interfaces/term-definition.data.mjs +0 -0
  523. /package/{esm2020 → esm2022}/lib/shared/components/index.mjs +0 -0
  524. /package/{esm2020 → esm2022}/lib/shared/interfaces/accesibility-data.mjs +0 -0
  525. /package/{esm2020 → esm2022}/lib/shared/utils/focus-utils.mjs +0 -0
@@ -1,125 +0,0 @@
1
- import { Component, EventEmitter, Input, Output, ViewChild, ElementRef, HostBinding, } from '@angular/core';
2
- import { AccessibilityAndContentRequiredComponent } from '../../../shared/components';
3
- import { FocusUtils } from '../../../shared/utils/focus-utils';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/common";
6
- import * as i2 from "../../../shared/directives/custom-inner-content.directive";
7
- import * as i3 from "ngx-tippy-wrapper";
8
- import * as i4 from "../../../shared/pipes/make-html-list.pipe";
9
- export class DropdownComponent extends AccessibilityAndContentRequiredComponent {
10
- constructor() {
11
- super(...arguments);
12
- this.clickEvent = new EventEmitter();
13
- this.isOpen = false;
14
- this.clickOutsideEnabled = false;
15
- }
16
- ngOnInit() {
17
- let contentTooltip;
18
- if (this.dropdownContent && this.dropdownContent.nativeElement) {
19
- contentTooltip = this.dropdownContent.nativeElement;
20
- this.tippyProperties = {
21
- placement: 'bottom-start',
22
- inlinePositioning: true,
23
- content: contentTooltip,
24
- allowHTML: true,
25
- trigger: 'click',
26
- hideOnClick: true,
27
- interactive: true,
28
- arrow: false,
29
- offset: [0, -10],
30
- theme: '',
31
- plugins: [
32
- {
33
- name: 'hideOnPopperBlur',
34
- defaultValue: true,
35
- fn(instance) {
36
- return {
37
- onCreate() {
38
- instance.popper.addEventListener('focusout', (event) => {
39
- if (instance.props.hideOnPopperBlur &&
40
- event.relatedTarget &&
41
- !instance.popper.contains(event.relatedTarget)) {
42
- instance.hide();
43
- }
44
- });
45
- },
46
- };
47
- }
48
- }, {
49
- name: 'hideOnEsc',
50
- defaultValue: true,
51
- fn({ hide }) {
52
- function onKeyDown(event) {
53
- if (event.key === DropdownComponent.KEY_CODE_ESC) {
54
- hide();
55
- }
56
- }
57
- return {
58
- onShow() {
59
- document.addEventListener('keydown', onKeyDown);
60
- },
61
- onHide() {
62
- document.removeEventListener('keydown', onKeyDown);
63
- },
64
- };
65
- },
66
- }
67
- ],
68
- role: false,
69
- aria: {
70
- content: 'auto',
71
- },
72
- onShown(instance) {
73
- const firstFocusable = FocusUtils.getFirstFocusableElement(contentTooltip);
74
- if (firstFocusable) {
75
- firstFocusable.focus();
76
- }
77
- }
78
- };
79
- }
80
- }
81
- ngOnChanges(changes) {
82
- this.classesContainer = this.classesContainer ? this.classesContainer : 'relative block';
83
- }
84
- onClick(event) {
85
- if (!this.isDisabled()) {
86
- this.clickEvent.emit(event);
87
- }
88
- }
89
- setOpen(isOpen) {
90
- this.isOpen = isOpen;
91
- }
92
- isDisabled() {
93
- return this.disabled ? true : null;
94
- }
95
- }
96
- DropdownComponent.KEY_CODE_ESC = 'Escape';
97
- DropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DropdownComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
98
- DropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: DropdownComponent, selector: "desy-dropdown", inputs: { id: "id", disabled: "disabled", hiddenText: "hiddenText", classesContainer: "classesContainer", classesTooltip: "classesTooltip", caller: "caller", classes: "classes" }, outputs: { clickEvent: "clickEvent" }, host: { properties: { "class": "this.classesContainer" } }, viewQueries: [{ propertyName: "dropdownContent", first: true, predicate: ["dropdownContent"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<button (click)=\"onClick($event)\"\n ngxTippy [tippyProps]=\"tippyProperties\"\n [class]=\"['c-dropdown', classes] | makeHtmlList\"\n [attr.disabled]=\"isDisabled() ? 'disabled' : null\"\n aria-haspopup=\"true\"\n [attr.aria-disabled]=\"isDisabled() ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.id]=\"id ? id : null\"\n [attr.role]=\"role ? role : null\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.tabIndex]=\"isDisabled() ? '-1' : tabindex\">\n <span class=\"inline-flex self-center max-w-xs align-middle truncate\">\n <ng-container *desyCustomInnerContent=\"{ html: html, text: text }\"></ng-container>\n <ng-content></ng-content>\n </span>\n <svg class=\"inline-block -mr-2 align-middle -my-px\" viewBox=\"0 0 96 96\" aria-hidden=\"true\" fill=\"currentColor\" focusable=\"false\" width=\"1.5em\" height=\"1.5em\"><g><path d=\"M46.71 58.037a1.823 1.823 0 002.581 0L62.048 45.28a1.823 1.823 0 00-1.29-3.113H35.243a1.823 1.823 0 00-1.291 3.113z\"/></g></svg>\n</button>\n<span *ngIf=\"hiddenText\" class=\"sr-only\">{{ hiddenText }}</span>\n<div #dropdownContent [class]=\"['-ml-sm mt-2 border border-neutral-base shadow-md bg-white', classesTooltip] | makeHtmlList\">\n <ng-container *ngTemplateOutlet=\"caller\"></ng-container>\n</div>", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.CustomInnerContentDirective, selector: "[desyCustomInnerContent]", inputs: ["desyCustomInnerContent"] }, { kind: "directive", type: i3.NgxTippyDirective, selector: "[ngxTippy]", inputs: ["ngxTippy", "tippyProps", "tippyName", "tippyClassName"] }, { kind: "pipe", type: i4.MakeHtmlListPipe, name: "makeHtmlList" }] });
99
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DropdownComponent, decorators: [{
100
- type: Component,
101
- args: [{ selector: 'desy-dropdown', template: "<button (click)=\"onClick($event)\"\n ngxTippy [tippyProps]=\"tippyProperties\"\n [class]=\"['c-dropdown', classes] | makeHtmlList\"\n [attr.disabled]=\"isDisabled() ? 'disabled' : null\"\n aria-haspopup=\"true\"\n [attr.aria-disabled]=\"isDisabled() ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.id]=\"id ? id : null\"\n [attr.role]=\"role ? role : null\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.tabIndex]=\"isDisabled() ? '-1' : tabindex\">\n <span class=\"inline-flex self-center max-w-xs align-middle truncate\">\n <ng-container *desyCustomInnerContent=\"{ html: html, text: text }\"></ng-container>\n <ng-content></ng-content>\n </span>\n <svg class=\"inline-block -mr-2 align-middle -my-px\" viewBox=\"0 0 96 96\" aria-hidden=\"true\" fill=\"currentColor\" focusable=\"false\" width=\"1.5em\" height=\"1.5em\"><g><path d=\"M46.71 58.037a1.823 1.823 0 002.581 0L62.048 45.28a1.823 1.823 0 00-1.29-3.113H35.243a1.823 1.823 0 00-1.291 3.113z\"/></g></svg>\n</button>\n<span *ngIf=\"hiddenText\" class=\"sr-only\">{{ hiddenText }}</span>\n<div #dropdownContent [class]=\"['-ml-sm mt-2 border border-neutral-base shadow-md bg-white', classesTooltip] | makeHtmlList\">\n <ng-container *ngTemplateOutlet=\"caller\"></ng-container>\n</div>" }]
102
- }], propDecorators: { dropdownContent: [{
103
- type: ViewChild,
104
- args: ['dropdownContent', { read: ElementRef, static: true }]
105
- }], id: [{
106
- type: Input
107
- }], disabled: [{
108
- type: Input
109
- }], hiddenText: [{
110
- type: Input
111
- }], classesContainer: [{
112
- type: Input
113
- }, {
114
- type: HostBinding,
115
- args: ['class']
116
- }], classesTooltip: [{
117
- type: Input
118
- }], caller: [{
119
- type: Input
120
- }], classes: [{
121
- type: Input
122
- }], clickEvent: [{
123
- type: Output
124
- }] } });
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvZGVzeS1idXR0b25zL2NvbXBvbmVudHMvZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvZGVzeS1idXR0b25zL2NvbXBvbmVudHMvZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEVBQ1QsVUFBVSxFQUlWLFdBQVcsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsd0NBQXdDLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7OztBQU0vRCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsd0NBQXdDO0lBSi9FOztRQWtCWSxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUUxQyxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2Ysd0JBQW1CLEdBQUcsS0FBSyxDQUFDO0tBMkY3QjtJQXZGQyxRQUFRO1FBQ04sSUFBSSxjQUEyQixDQUFDO1FBQ2hDLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRTtZQUM5RCxjQUFjLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUE0QixDQUFDO1lBQ25FLElBQUksQ0FBQyxlQUFlLEdBQUc7Z0JBQ3JCLFNBQVMsRUFBRSxjQUFjO2dCQUN6QixpQkFBaUIsRUFBRSxJQUFJO2dCQUN2QixPQUFPLEVBQUUsY0FBYztnQkFDdkIsU0FBUyxFQUFFLElBQUk7Z0JBQ2YsT0FBTyxFQUFFLE9BQU87Z0JBQ2hCLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixXQUFXLEVBQUUsSUFBSTtnQkFDakIsS0FBSyxFQUFFLEtBQUs7Z0JBQ1osTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUNoQixLQUFLLEVBQUUsRUFBRTtnQkFDVCxPQUFPLEVBQUU7b0JBQ1A7d0JBQ0UsSUFBSSxFQUFFLGtCQUFrQjt3QkFDeEIsWUFBWSxFQUFFLElBQUk7d0JBQ2xCLEVBQUUsQ0FBQyxRQUFROzRCQUNULE9BQU87Z0NBQ0wsUUFBUTtvQ0FDTixRQUFRLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO3dDQUNyRCxJQUNFLFFBQVEsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCOzRDQUMvQixLQUFLLENBQUMsYUFBYTs0Q0FDbkIsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEVBQzlDOzRDQUNBLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQzt5Q0FDakI7b0NBQ0gsQ0FBQyxDQUFDLENBQUM7Z0NBQ0wsQ0FBQzs2QkFDRixDQUFDO3dCQUNKLENBQUM7cUJBQ0YsRUFBRTt3QkFDRCxJQUFJLEVBQUUsV0FBVzt3QkFDakIsWUFBWSxFQUFFLElBQUk7d0JBQ2xCLEVBQUUsQ0FBQyxFQUFDLElBQUksRUFBQzs0QkFFUCxTQUFTLFNBQVMsQ0FBQyxLQUFvQjtnQ0FDckMsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLGlCQUFpQixDQUFDLFlBQVksRUFBRTtvQ0FDaEQsSUFBSSxFQUFFLENBQUM7aUNBQ1I7NEJBQ0gsQ0FBQzs0QkFFRCxPQUFPO2dDQUNMLE1BQU07b0NBQ0osUUFBUSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztnQ0FDbEQsQ0FBQztnQ0FDRCxNQUFNO29DQUNKLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0NBQ3JELENBQUM7NkJBQ0YsQ0FBQzt3QkFDSixDQUFDO3FCQUNGO2lCQUNGO2dCQUNELElBQUksRUFBRSxLQUFLO2dCQUNYLElBQUksRUFBRTtvQkFDSixPQUFPLEVBQUUsTUFBTTtpQkFDaEI7Z0JBQ0QsT0FBTyxDQUFDLFFBQVE7b0JBQ2QsTUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFDLHdCQUF3QixDQUFDLGNBQWMsQ0FBQyxDQUFDO29CQUMzRSxJQUFJLGNBQWMsRUFBRTt3QkFDbEIsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO3FCQUN4QjtnQkFDSCxDQUFDO2FBQ0YsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDO0lBQzNGLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBVTtRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFDO1lBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzdCO0lBQ0gsQ0FBQztJQUVELE9BQU8sQ0FBQyxNQUFlO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNyQyxDQUFDOztBQXpHZSw4QkFBWSxHQUFHLFFBQVEsQ0FBQzs4R0FGN0IsaUJBQWlCO2tHQUFqQixpQkFBaUIsMmFBSVUsVUFBVSx1RkN4QmxELGt6REEyQk07MkZEUE8saUJBQWlCO2tCQUo3QixTQUFTOytCQUNFLGVBQWU7OEJBT3lDLGVBQWU7c0JBQWhGLFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRXZELEVBQUU7c0JBQVYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ3lCLGdCQUFnQjtzQkFBOUMsS0FBSzs7c0JBQUksV0FBVzt1QkFBQyxPQUFPO2dCQUNwQixjQUFjO3NCQUF0QixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUksVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBFbGVtZW50UmVmLFxuICBPbkluaXQsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgSG9zdEJpbmRpbmcsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWNjZXNzaWJpbGl0eUFuZENvbnRlbnRSZXF1aXJlZENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9jb21wb25lbnRzJztcbmltcG9ydCB7IEZvY3VzVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvdXRpbHMvZm9jdXMtdXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkZXN5LWRyb3Bkb3duJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBEcm9wZG93bkNvbXBvbmVudCBleHRlbmRzIEFjY2Vzc2liaWxpdHlBbmRDb250ZW50UmVxdWlyZWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIFxuICBzdGF0aWMgcmVhZG9ubHkgS0VZX0NPREVfRVNDID0gJ0VzY2FwZSc7XG5cbiAgQFZpZXdDaGlsZCgnZHJvcGRvd25Db250ZW50JywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSkgZHJvcGRvd25Db250ZW50OiBFbGVtZW50UmVmO1xuXG4gIEBJbnB1dCgpIGlkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuO1xuICBASW5wdXQoKSBoaWRkZW5UZXh0OiBzdHJpbmc7XG4gIEBJbnB1dCgpIEBIb3N0QmluZGluZygnY2xhc3MnKSBjbGFzc2VzQ29udGFpbmVyOiBhbnk7XG4gIEBJbnB1dCgpIGNsYXNzZXNUb29sdGlwOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNhbGxlcjogVGVtcGxhdGVSZWY8YW55PjtcbiAgQElucHV0KCkgY2xhc3Nlczogc3RyaW5nO1xuXG4gIEBPdXRwdXQoKSBjbGlja0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGlzT3BlbiA9IGZhbHNlO1xuICBjbGlja091dHNpZGVFbmFibGVkID0gZmFsc2U7XG5cbiAgdGlwcHlQcm9wZXJ0aWVzOiBhbnk7XG5cbiAgbmdPbkluaXQoKTogYW55IHtcbiAgICBsZXQgY29udGVudFRvb2x0aXA6IEhUTUxFbGVtZW50O1xuICAgIGlmICh0aGlzLmRyb3Bkb3duQ29udGVudCAmJiB0aGlzLmRyb3Bkb3duQ29udGVudC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICBjb250ZW50VG9vbHRpcCA9IHRoaXMuZHJvcGRvd25Db250ZW50Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICB0aGlzLnRpcHB5UHJvcGVydGllcyA9IHtcbiAgICAgICAgcGxhY2VtZW50OiAnYm90dG9tLXN0YXJ0JyxcbiAgICAgICAgaW5saW5lUG9zaXRpb25pbmc6IHRydWUsXG4gICAgICAgIGNvbnRlbnQ6IGNvbnRlbnRUb29sdGlwLFxuICAgICAgICBhbGxvd0hUTUw6IHRydWUsIC8vIE1ha2Ugc3VyZSB5b3UgYXJlIHNhbml0aXppbmcgYW55IHVzZXIgZGF0YSBpZiByZW5kZXJpbmcgSFRNTCB0byBwcmV2ZW50IFhTUyBhdHRhY2tzLlxuICAgICAgICB0cmlnZ2VyOiAnY2xpY2snLFxuICAgICAgICBoaWRlT25DbGljazogdHJ1ZSxcbiAgICAgICAgaW50ZXJhY3RpdmU6IHRydWUsXG4gICAgICAgIGFycm93OiBmYWxzZSxcbiAgICAgICAgb2Zmc2V0OiBbMCwgLTEwXSxcbiAgICAgICAgdGhlbWU6ICcnLFxuICAgICAgICBwbHVnaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ2hpZGVPblBvcHBlckJsdXInLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiB0cnVlLFxuICAgICAgICAgICAgZm4oaW5zdGFuY2UpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvbkNyZWF0ZSgpIHtcbiAgICAgICAgICAgICAgICAgIGluc3RhbmNlLnBvcHBlci5hZGRFdmVudExpc3RlbmVyKCdmb2N1c291dCcsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UucHJvcHMuaGlkZU9uUG9wcGVyQmx1ciAmJlxuICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnJlbGF0ZWRUYXJnZXQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhaW5zdGFuY2UucG9wcGVyLmNvbnRhaW5zKGV2ZW50LnJlbGF0ZWRUYXJnZXQpXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LCB7XG4gICAgICAgICAgICBuYW1lOiAnaGlkZU9uRXNjJyxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogdHJ1ZSxcbiAgICAgICAgICAgIGZuKHtoaWRlfSk6IGFueSB7XG5cbiAgICAgICAgICAgICAgZnVuY3Rpb24gb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gRHJvcGRvd25Db21wb25lbnQuS0VZX0NPREVfRVNDKSB7XG4gICAgICAgICAgICAgICAgICBoaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvblNob3coKTogdm9pZCB7XG4gICAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgb25LZXlEb3duKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG9uSGlkZSgpOiB2b2lkIHtcbiAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBvbktleURvd24pO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgcm9sZTogZmFsc2UsXG4gICAgICAgIGFyaWE6IHtcbiAgICAgICAgICBjb250ZW50OiAnYXV0bycsXG4gICAgICAgIH0sXG4gICAgICAgIG9uU2hvd24oaW5zdGFuY2UpOiB2b2lkIHtcbiAgICAgICAgICBjb25zdCBmaXJzdEZvY3VzYWJsZSA9IEZvY3VzVXRpbHMuZ2V0Rmlyc3RGb2N1c2FibGVFbGVtZW50KGNvbnRlbnRUb29sdGlwKTtcbiAgICAgICAgICBpZiAoZmlyc3RGb2N1c2FibGUpIHtcbiAgICAgICAgICAgIGZpcnN0Rm9jdXNhYmxlLmZvY3VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICB0aGlzLmNsYXNzZXNDb250YWluZXIgPSB0aGlzLmNsYXNzZXNDb250YWluZXIgPyB0aGlzLmNsYXNzZXNDb250YWluZXIgOiAncmVsYXRpdmUgYmxvY2snO1xuICB9XG5cbiAgb25DbGljayhldmVudDogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzRGlzYWJsZWQoKSl7XG4gICAgICB0aGlzLmNsaWNrRXZlbnQuZW1pdChldmVudCk7XG4gICAgfVxuICB9XG5cbiAgc2V0T3Blbihpc09wZW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmlzT3BlbiA9IGlzT3BlbjtcbiAgfVxuXG4gIGlzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgPyB0cnVlIDogbnVsbDtcbiAgfVxufVxuIiwiPGJ1dHRvbiAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCJcbiAgICAgIG5neFRpcHB5IFt0aXBweVByb3BzXT1cInRpcHB5UHJvcGVydGllc1wiXG4gICAgICBbY2xhc3NdPVwiWydjLWRyb3Bkb3duJywgY2xhc3Nlc10gfCBtYWtlSHRtbExpc3RcIlxuICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiaXNEaXNhYmxlZCgpID8gJ2Rpc2FibGVkJyA6IG51bGxcIlxuICAgICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxuICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJpc0Rpc2FibGVkKCkgPyAndHJ1ZScgOiAoYXJpYURpc2FibGVkID8gYXJpYURpc2FibGVkIDogbnVsbClcIlxuICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJpc09wZW5cIlxuICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJhcmlhRGVzY3JpYmVkQnkgPyBhcmlhRGVzY3JpYmVkQnkgOiBudWxsXCJcbiAgICAgIFthdHRyLmlkXT1cImlkID8gaWQgOiBudWxsXCJcbiAgICAgIFthdHRyLnJvbGVdPVwicm9sZSA/IHJvbGUgOiBudWxsXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsID8gYXJpYUxhYmVsIDogbnVsbFwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnkgPyBhcmlhTGFiZWxsZWRCeSA6IG51bGxcIlxuICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwiYXJpYUhpZGRlbiA/IGFyaWFIaWRkZW4gOiBudWxsXCJcbiAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiYXJpYUNvbnRyb2xzID8gYXJpYUNvbnRyb2xzIDogbnVsbFwiXG4gICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdPVwiYXJpYUN1cnJlbnQgPyBhcmlhQ3VycmVudCA6IG51bGxcIlxuICAgICAgW2F0dHIuYXJpYS1saXZlXT1cImFyaWFMaXZlID8gYXJpYUxpdmUgOiBudWxsXCJcbiAgICAgIFthdHRyLmFyaWEtZXJyb3JtZXNzYWdlXT1cImFyaWFFcnJvck1lc3NhZ2UgPyBhcmlhRXJyb3JNZXNzYWdlIDogbnVsbFwiXG4gICAgICBbYXR0ci50YWJJbmRleF09XCJpc0Rpc2FibGVkKCkgPyAnLTEnIDogdGFiaW5kZXhcIj5cbiAgPHNwYW4gY2xhc3M9XCJpbmxpbmUtZmxleCBzZWxmLWNlbnRlciBtYXgtdy14cyBhbGlnbi1taWRkbGUgdHJ1bmNhdGVcIj5cbiAgICA8bmctY29udGFpbmVyICpkZXN5Q3VzdG9tSW5uZXJDb250ZW50PVwieyBodG1sOiBodG1sLCB0ZXh0OiB0ZXh0IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvc3Bhbj5cbiAgPHN2ZyBjbGFzcz1cImlubGluZS1ibG9jayAtbXItMiAgYWxpZ24tbWlkZGxlIC1teS1weFwiIHZpZXdCb3g9XCIwIDAgOTYgOTZcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgZm9jdXNhYmxlPVwiZmFsc2VcIiB3aWR0aD1cIjEuNWVtXCIgaGVpZ2h0PVwiMS41ZW1cIj48Zz48cGF0aCBkPVwiTTQ2LjcxIDU4LjAzN2ExLjgyMyAxLjgyMyAwIDAwMi41ODEgMEw2Mi4wNDggNDUuMjhhMS44MjMgMS44MjMgMCAwMC0xLjI5LTMuMTEzSDM1LjI0M2ExLjgyMyAxLjgyMyAwIDAwLTEuMjkxIDMuMTEzelwiLz48L2c+PC9zdmc+XG48L2J1dHRvbj5cbjxzcGFuICpuZ0lmPVwiaGlkZGVuVGV4dFwiIGNsYXNzPVwic3Itb25seVwiPnt7IGhpZGRlblRleHQgfX08L3NwYW4+XG48ZGl2ICNkcm9wZG93bkNvbnRlbnQgW2NsYXNzXT1cIlsnLW1sLXNtIG10LTIgYm9yZGVyIGJvcmRlci1uZXV0cmFsLWJhc2Ugc2hhZG93LW1kIGJnLXdoaXRlJywgY2xhc3Nlc1Rvb2x0aXBdIHwgbWFrZUh0bWxMaXN0XCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjYWxsZXJcIj48L25nLWNvbnRhaW5lcj5cbjwvZGl2PiJdfQ==
@@ -1,339 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { Component, ContentChildren, ElementRef, EventEmitter, Input, Output, ViewChild, ViewChildren } from '@angular/core';
3
- import { AccessibilityAndTextOrHtmlRequiredComponent } from '../../../shared/components';
4
- import { StringUtils } from '../../../shared/utils/string-utils';
5
- import { ListboxLabelComponent } from './listbox-label/listbox-label.component';
6
- import { ListboxItemComponent } from './listbox-item/listbox-item.component';
7
- import { DesyContentChild } from '../../../shared/decorators/desy-content-child.decorator';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "@angular/common";
10
- import * as i2 from "../../../shared/directives/attribute-change.directive";
11
- import * as i3 from "../../../shared/directives/custom-inner-content.directive";
12
- import * as i4 from "ngx-tippy-wrapper";
13
- import * as i5 from "../../../shared/pipes/make-html-list.pipe";
14
- export class ListboxComponent extends AccessibilityAndTextOrHtmlRequiredComponent {
15
- constructor(changeDetectorRef) {
16
- super();
17
- this.changeDetectorRef = changeDetectorRef;
18
- this.itemsChange = new EventEmitter();
19
- this.activeItemChange = new EventEmitter();
20
- this.isListVisible = false; // Indica si la lista se está mostrando
21
- this.contentInit = false; // Se ha iniciado el contenido
22
- this.pendingCheckActiveItemsAfterViewInit = false;
23
- this.pendingFocusOnList = false;
24
- }
25
- ngOnInit() {
26
- if (this.listboxContent && this.listboxContent.nativeElement) {
27
- this.initTippy();
28
- }
29
- }
30
- ngOnChanges() {
31
- if (this.items && this.items.length > 0) {
32
- this.itemList = this.items;
33
- if (this.contentInit) {
34
- this.checkActiveItems();
35
- }
36
- else {
37
- this.pendingCheckActiveItemsAfterViewInit = true;
38
- }
39
- }
40
- }
41
- ngAfterViewInit() {
42
- if (this.pendingCheckActiveItemsAfterViewInit) {
43
- this.checkActiveItems();
44
- this.pendingCheckActiveItemsAfterViewInit = false;
45
- this.changeDetectorRef.detectChanges();
46
- }
47
- }
48
- ngAfterContentInit() {
49
- this.contentInit = true;
50
- if (this.itemComponentList && (!this.items || this.items.length === 0)) {
51
- this.setupItemComponentList();
52
- this.itemComponentList.changes.subscribe(() => {
53
- this.setupItemComponentList();
54
- });
55
- }
56
- }
57
- ngAfterViewChecked() {
58
- if (this.pendingFocusOnList) {
59
- this.pendingFocusOnList = false;
60
- this.listboxList.nativeElement.focus();
61
- this.changeDetectorRef.detectChanges();
62
- }
63
- }
64
- setupItemComponentList() {
65
- if (this.itemComponentSubscriptions) {
66
- this.itemComponentSubscriptions.forEach(s => s.unsubscribe());
67
- }
68
- this.itemComponentSubscriptions = [];
69
- this.itemList = [];
70
- this.itemComponentList.forEach(item => {
71
- this.itemList.push(item);
72
- });
73
- this.itemComponentList.forEach(item => {
74
- const subscription = item.itemChange.subscribe(() => this.checkActiveItems());
75
- this.itemComponentSubscriptions.push(subscription);
76
- });
77
- this.changeDetectorRef.detectChanges();
78
- this.checkActiveItems();
79
- this.changeDetectorRef.detectChanges();
80
- }
81
- getActiveItemsData() {
82
- return this.itemList
83
- .map((item, index) => item.active ? { item, index } : null)
84
- .filter(item => item !== null);
85
- }
86
- onChangeItemChecked() {
87
- this.checkActiveItems();
88
- this.changeDetectorRef.detectChanges();
89
- }
90
- checkActiveItems() {
91
- let activeItems = this.itemList
92
- .map((item, index) => item.active ? { item, index } : null)
93
- .filter(item => item !== null);
94
- // se comprueba si algún item ha cambiado su estado de active
95
- let hasActiveItemChange = false;
96
- if (this.lastActiveItems && activeItems.length === this.lastActiveItems.length) {
97
- for (let i = 0; i < activeItems.length; i++) {
98
- if (activeItems[i].index !== this.lastActiveItems[i].index) {
99
- hasActiveItemChange = true;
100
- break;
101
- }
102
- }
103
- }
104
- else {
105
- hasActiveItemChange = true;
106
- }
107
- // Si hay cambios externos y es selección única, anulamos la selección anterior
108
- if (this.lastActiveItems && !this.isMultiselectable && hasActiveItemChange) {
109
- if (activeItems.length !== this.lastActiveItems.length) {
110
- for (const activeItem of activeItems) {
111
- if (this.lastActiveItems.findIndex(i => i.index === activeItem.index) >= 0) {
112
- this.setItemActiveValue(activeItem.index, false);
113
- }
114
- activeItems = activeItems.filter(activeItem => activeItem.item.active);
115
- }
116
- }
117
- }
118
- this.lastActiveItems = activeItems;
119
- // Se cambia el contenido del botón
120
- if (this.doesChangeButtonText && !this.isMultiselectable && activeItems.length > 0) {
121
- const activeItemOption = this.listboxOptions.find((item, index) => index === activeItems[0].index);
122
- if (activeItemOption) {
123
- this.buttonContentHtml = activeItemOption.nativeElement.innerHTML;
124
- }
125
- }
126
- else {
127
- this.buttonContentHtml = this.html ? this.html : null;
128
- }
129
- // Si hay cambios, se emiten
130
- if (hasActiveItemChange) {
131
- this.itemsChange.emit(this.itemList);
132
- this.activeItemChange.emit(activeItems.length > 0 ? activeItems[0].item : null);
133
- }
134
- }
135
- onListShow() {
136
- this.isListVisible = true;
137
- if (this.listboxList) {
138
- this.pendingFocusOnList = true;
139
- //setTimeout(() => this.listboxList.nativeElement.focus());
140
- }
141
- }
142
- onListClose() {
143
- this.isListVisible = false;
144
- }
145
- onListFocus() {
146
- const activeItemsData = this.getActiveItemsData();
147
- if (activeItemsData.length > 0) {
148
- const activeElem = document.getElementById(this.getItemId(activeItemsData[0].item, activeItemsData[0].index));
149
- if (activeElem) {
150
- activeElem.focus();
151
- this.currentFocusIndex = activeItemsData[0].index;
152
- }
153
- }
154
- else if (this.itemList && this.itemList.length > 0) {
155
- this.currentFocusIndex = 0;
156
- if (!this.isMultiselectable) {
157
- this.selectItem(0);
158
- }
159
- }
160
- else {
161
- console.warn('No element to focus');
162
- }
163
- }
164
- moveFocus(position, event) {
165
- event.preventDefault();
166
- if (position >= 0 && position < this.itemList.length) {
167
- if (this.isMultiselectable) {
168
- this.currentFocusIndex = position;
169
- }
170
- else {
171
- this.selectItem(position);
172
- }
173
- }
174
- }
175
- onSpace(event) {
176
- event.preventDefault();
177
- if (this.isMultiselectable) {
178
- this.selectItem(this.currentFocusIndex);
179
- }
180
- }
181
- selectItem(index) {
182
- if (!this.isMultiselectable) {
183
- this.itemList.forEach(item => this.setItemActiveValue(index, false));
184
- this.setItemActiveValue(index, true);
185
- }
186
- else {
187
- this.setItemActiveValue(index, !this.itemList[index].active);
188
- }
189
- this.currentFocusIndex = index;
190
- this.checkActiveItems();
191
- }
192
- setItemActiveValue(index, active) {
193
- if (this.itemComponentList !== null && this.itemComponentList.length > 0) {
194
- const deactivatedItem = this.itemComponentList.get(index);
195
- deactivatedItem?.setActive(active);
196
- }
197
- else {
198
- this.itemList[index].active = active;
199
- }
200
- }
201
- /*
202
- * Métodos para facilitar contenido al template
203
- */
204
- getIdPrefix() {
205
- return this.idPrefix ? this.idPrefix : this.id + '-listbox-item';
206
- }
207
- getItemId(item, index) {
208
- let itemId;
209
- if (item.id) {
210
- itemId = item.id;
211
- }
212
- else {
213
- itemId = this.getIdPrefix();
214
- if (index > 0) {
215
- itemId += `-${index}`;
216
- }
217
- }
218
- return itemId;
219
- }
220
- hasLabel() {
221
- return !!(this.label || this.labelComponent);
222
- }
223
- getLabelContent(label) {
224
- return label.html ? label.html : `<p>${StringUtils.escapeHtml(label.text)}</p>`;
225
- }
226
- initTippy() {
227
- const contentTooltip = this.listboxContent.nativeElement;
228
- const listboxButtonElement = this.listboxButton.nativeElement;
229
- this.tippyProperties = {
230
- placement: 'bottom-start',
231
- inlinePositioning: true,
232
- content: contentTooltip,
233
- allowHTML: true,
234
- trigger: 'click',
235
- hideOnClick: true,
236
- interactive: true,
237
- arrow: false,
238
- offset: [0, -10],
239
- theme: '',
240
- plugins: [
241
- {
242
- name: 'hideOnPopperBlur',
243
- defaultValue: true,
244
- fn(instance) {
245
- return {
246
- onCreate() {
247
- instance.popper.addEventListener('focusout', (event) => {
248
- if (instance.props.hideOnPopperBlur &&
249
- event.relatedTarget &&
250
- !instance.popper.contains(event.relatedTarget)) {
251
- instance.hide();
252
- }
253
- });
254
- },
255
- };
256
- }
257
- }, {
258
- name: 'hideOnEsc',
259
- defaultValue: true,
260
- fn({ hide }) {
261
- function onKeyDown(event) {
262
- if (event.key === ListboxComponent.KEY_CODE_ESC) {
263
- hide();
264
- listboxButtonElement.focus();
265
- }
266
- }
267
- return {
268
- onShow() {
269
- document.addEventListener('keydown', onKeyDown);
270
- },
271
- onHide() {
272
- document.removeEventListener('keydown', onKeyDown);
273
- },
274
- };
275
- },
276
- }
277
- ],
278
- role: false,
279
- aria: {
280
- content: 'auto',
281
- },
282
- onShow: this.onListShow.bind(this),
283
- onHidden: this.onListClose.bind(this)
284
- };
285
- }
286
- }
287
- ListboxComponent.KEY_CODE_ESC = 'Escape';
288
- ListboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ListboxComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
289
- ListboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: ListboxComponent, selector: "desy-listbox", inputs: { id: "id", isMultiselectable: "isMultiselectable", doesChangeButtonText: "doesChangeButtonText", label: "label", classes: "classes", classesContainer: "classesContainer", classesTooltip: "classesTooltip", idPrefix: "idPrefix", disabled: "disabled", items: "items" }, outputs: { itemsChange: "itemsChange", activeItemChange: "activeItemChange" }, queries: [{ propertyName: "labelComponent", predicate: ListboxLabelComponent }, { propertyName: "itemComponentList", predicate: ListboxItemComponent }], viewQueries: [{ propertyName: "listboxButton", first: true, predicate: ["button"], descendants: true, read: ElementRef, static: true }, { propertyName: "listboxList", first: true, predicate: ["list"], descendants: true, read: ElementRef }, { propertyName: "listboxContent", first: true, predicate: ["tooltip"], descendants: true, read: ElementRef, static: true }, { propertyName: "listboxOptions", predicate: ["option"], descendants: true, read: ElementRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div [ngClass]=\"classesContainer ? classesContainer : 'relative'\">\n <div [id]=\"id + '-label'\" [class]=\"['mb-sm', labelComponent?.classes, label?.classes] | makeHtmlList\">\n <ng-container *desyCustomInnerContent=\"{ component: labelComponent, html: label ? getLabelContent(label) : null }\"></ng-container>\n </div>\n <button #button [id]=\"id + '-button'\"\n [class]=\"['c-listbox', classes] | makeHtmlList\"\n ngxTippy [tippyProps]=\"tippyProperties\"\n aria-haspopup=\"listbox\"\n [attr.aria-labelledby]=\"[hasLabel() ? id + '-label' : null, id + '-button'] | makeHtmlList\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.aria-disabled]=\"disabled ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\n [attr.aria-role] = \"role ? role : null\"\n [attr.aria-label] = \"ariaLabel ? ariaLabel : null\"\n [attr.aria-describedby] = \"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.aria-hidden] = \"ariaHidden ? ariaHidden : null\"\n [attr.aria-controls] = \"ariaControls ? ariaControls : null\"\n [attr.aria-current] = \"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live] = \"ariaLive ? ariaLive : null\"\n [attr.aria-expanded] = \"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-errorMessage] = \"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.aria-hasppup] = \"ariaHasPopup ? ariaHasPopup : null\"\n [attr.aria-tabindex] = \"tabindex ? tabindex : null\">\n <span class=\"inline-flex self-center max-w-xs align-middle truncate\">\n <ng-container *desyCustomInnerContent=\"{ html: buttonContentHtml, text: text }\"></ng-container>\n </span>\n <svg class=\"inline-block -mr-2 align-middle -my-px\" viewBox=\"0 0 96 96\" aria-hidden=\"true\" fill=\"currentColor\" focusable=\"false\" width=\"1.5em\" height=\"1.5em\"><g><path d=\"M46.71 58.037a1.823 1.823 0 002.581 0L62.048 45.28a1.823 1.823 0 00-1.29-3.113H35.243a1.823 1.823 0 00-1.291 3.113z\"/></g></svg>\n </button>\n <div #tooltip [class]=\"['c-listbox__tooltip -ml-sm mt-2 border border-neutral-base shadow-md bg-white', classesTooltip] | makeHtmlList\">\n <ul *ngIf=\"itemList\"\n #list [id]=\"id\"\n (focus)=\"onListFocus()\"\n (keydown.arrowUp)=\"moveFocus(currentFocusIndex - 1, $event)\"\n (keydown.arrowDown)=\"moveFocus(currentFocusIndex + 1, $event)\"\n (keydown.home)=\"moveFocus(0, $event)\"\n (keydown.end)=\"moveFocus(items.length - 1, $event)\"\n (keydown.space)=\"onSpace($event)\"\n role=\"listbox\"\n tabindex=\"-1\"\n class=\"text-sm outline-none\"\n [attr.aria-labelledby]=\"hasLabel() ? id : (ariaLabelledBy ? ariaLabelledBy : null)\"\n [attr.aria-multiselectable]=\"isMultiselectable ? 'true' : null\"\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\n [attr.aria-label] = \"ariaLabel ? ariaLabel : null\"\n [attr.aria-describedby] = \"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.aria-hidden] = \"ariaHidden ? ariaHidden : null\"\n [attr.aria-controls] = \"ariaControls ? ariaControls : null\"\n [attr.aria-current] = \"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live] = \"ariaLive ? ariaLive : null\"\n [attr.aria-expanded] = \"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-errormessage] = \"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.aria-haspopup] = \"ariaHasPopup ? ariaHasPopup : null\"\n [attr.aria-activedescendant] = \"lastActiveItems && lastActiveItems.length > 0 ? getItemId(lastActiveItems[0].item, lastActiveItems[0].index) : null\">\n <ng-container *ngFor=\"let item of itemList; index as index\">\n <li #option *ngIf=\"item\" role=\"option\" (click)=\"selectItem(index)\"\n [class]=\"['flex items-center pr-base pl-lg py-sm hover:bg-primary-base hover:text-white focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black', item.classes] | makeHtmlList\"\n [ngClass]=\"{'focused': index === currentFocusIndex}\"\n [attr.aria-label]=\"item.active ? 'true' : (item.ariaLabel ? item.ariaLabel : null)\"\n [id]=\"getItemId(item, index)\"\n [attr.title]=\"item.title ? item.title : null\"\n (desyAttributeChange)=\"onChangeItemChecked()\" [attributesToCheck]=\"'aria-selected'\" [desyAttributeChangeEnabled]=\"items && items.length > 0\"\n\n [attr.aria-describedby]=\"item.ariaDescribedBy ? item.ariaDescribedBy : null\"\n [attr.aria-hidden] = \"item.ariaHidden ? item.ariaHidden : null\"\n [attr.aria-controls]=\"item.ariaControls ? item.ariaControls : null\"\n [attr.aria-current] = \"item.ariaCurrent ? item.ariaCurrent : null\"\n [attr.aria-live] = \"item.ariaLive ? item.ariaLive : null\"\n [attr.aria-expanded]=\"item.ariaExpanded ? item.ariaExpanded : null\"\n [attr.aria-errormessage]=\"item.ariaErrorMessage ? item.ariaErrorMessage : null\"\n [attr.aria-haspopup] = \"item.ariaHasPopup ? item.ariaHasPopup : null\"\n [attr.aria-tabindex] = \"item.tabindex ? item.tabindex : null\"\n\n [attr.aria-checked]=\"item.active\"\n [attr.aria-selected]=\"item.active\">\n <ng-container *desyCustomInnerContent=\"{ template: item['content'], html: item.html, text: item.text }\"></ng-container>\n </li>\n </ng-container>\n </ul>\n </div>\n</div>", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.AttributeChangeDirective, selector: "[desyAttributeChange]", inputs: ["attributesToCheck", "desyAttributeChangeEnabled"], outputs: ["desyAttributeChange", "desyAttributeChangeMutation"] }, { kind: "directive", type: i3.CustomInnerContentDirective, selector: "[desyCustomInnerContent]", inputs: ["desyCustomInnerContent"] }, { kind: "directive", type: i4.NgxTippyDirective, selector: "[ngxTippy]", inputs: ["ngxTippy", "tippyProps", "tippyName", "tippyClassName"] }, { kind: "pipe", type: i5.MakeHtmlListPipe, name: "makeHtmlList" }] });
290
- __decorate([
291
- DesyContentChild()
292
- ], ListboxComponent.prototype, "labelComponent", void 0);
293
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ListboxComponent, decorators: [{
294
- type: Component,
295
- args: [{ selector: 'desy-listbox', template: "<div [ngClass]=\"classesContainer ? classesContainer : 'relative'\">\n <div [id]=\"id + '-label'\" [class]=\"['mb-sm', labelComponent?.classes, label?.classes] | makeHtmlList\">\n <ng-container *desyCustomInnerContent=\"{ component: labelComponent, html: label ? getLabelContent(label) : null }\"></ng-container>\n </div>\n <button #button [id]=\"id + '-button'\"\n [class]=\"['c-listbox', classes] | makeHtmlList\"\n ngxTippy [tippyProps]=\"tippyProperties\"\n aria-haspopup=\"listbox\"\n [attr.aria-labelledby]=\"[hasLabel() ? id + '-label' : null, id + '-button'] | makeHtmlList\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.aria-disabled]=\"disabled ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\n [attr.aria-role] = \"role ? role : null\"\n [attr.aria-label] = \"ariaLabel ? ariaLabel : null\"\n [attr.aria-describedby] = \"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.aria-hidden] = \"ariaHidden ? ariaHidden : null\"\n [attr.aria-controls] = \"ariaControls ? ariaControls : null\"\n [attr.aria-current] = \"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live] = \"ariaLive ? ariaLive : null\"\n [attr.aria-expanded] = \"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-errorMessage] = \"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.aria-hasppup] = \"ariaHasPopup ? ariaHasPopup : null\"\n [attr.aria-tabindex] = \"tabindex ? tabindex : null\">\n <span class=\"inline-flex self-center max-w-xs align-middle truncate\">\n <ng-container *desyCustomInnerContent=\"{ html: buttonContentHtml, text: text }\"></ng-container>\n </span>\n <svg class=\"inline-block -mr-2 align-middle -my-px\" viewBox=\"0 0 96 96\" aria-hidden=\"true\" fill=\"currentColor\" focusable=\"false\" width=\"1.5em\" height=\"1.5em\"><g><path d=\"M46.71 58.037a1.823 1.823 0 002.581 0L62.048 45.28a1.823 1.823 0 00-1.29-3.113H35.243a1.823 1.823 0 00-1.291 3.113z\"/></g></svg>\n </button>\n <div #tooltip [class]=\"['c-listbox__tooltip -ml-sm mt-2 border border-neutral-base shadow-md bg-white', classesTooltip] | makeHtmlList\">\n <ul *ngIf=\"itemList\"\n #list [id]=\"id\"\n (focus)=\"onListFocus()\"\n (keydown.arrowUp)=\"moveFocus(currentFocusIndex - 1, $event)\"\n (keydown.arrowDown)=\"moveFocus(currentFocusIndex + 1, $event)\"\n (keydown.home)=\"moveFocus(0, $event)\"\n (keydown.end)=\"moveFocus(items.length - 1, $event)\"\n (keydown.space)=\"onSpace($event)\"\n role=\"listbox\"\n tabindex=\"-1\"\n class=\"text-sm outline-none\"\n [attr.aria-labelledby]=\"hasLabel() ? id : (ariaLabelledBy ? ariaLabelledBy : null)\"\n [attr.aria-multiselectable]=\"isMultiselectable ? 'true' : null\"\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\n [attr.aria-label] = \"ariaLabel ? ariaLabel : null\"\n [attr.aria-describedby] = \"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.aria-hidden] = \"ariaHidden ? ariaHidden : null\"\n [attr.aria-controls] = \"ariaControls ? ariaControls : null\"\n [attr.aria-current] = \"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live] = \"ariaLive ? ariaLive : null\"\n [attr.aria-expanded] = \"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-errormessage] = \"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.aria-haspopup] = \"ariaHasPopup ? ariaHasPopup : null\"\n [attr.aria-activedescendant] = \"lastActiveItems && lastActiveItems.length > 0 ? getItemId(lastActiveItems[0].item, lastActiveItems[0].index) : null\">\n <ng-container *ngFor=\"let item of itemList; index as index\">\n <li #option *ngIf=\"item\" role=\"option\" (click)=\"selectItem(index)\"\n [class]=\"['flex items-center pr-base pl-lg py-sm hover:bg-primary-base hover:text-white focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black', item.classes] | makeHtmlList\"\n [ngClass]=\"{'focused': index === currentFocusIndex}\"\n [attr.aria-label]=\"item.active ? 'true' : (item.ariaLabel ? item.ariaLabel : null)\"\n [id]=\"getItemId(item, index)\"\n [attr.title]=\"item.title ? item.title : null\"\n (desyAttributeChange)=\"onChangeItemChecked()\" [attributesToCheck]=\"'aria-selected'\" [desyAttributeChangeEnabled]=\"items && items.length > 0\"\n\n [attr.aria-describedby]=\"item.ariaDescribedBy ? item.ariaDescribedBy : null\"\n [attr.aria-hidden] = \"item.ariaHidden ? item.ariaHidden : null\"\n [attr.aria-controls]=\"item.ariaControls ? item.ariaControls : null\"\n [attr.aria-current] = \"item.ariaCurrent ? item.ariaCurrent : null\"\n [attr.aria-live] = \"item.ariaLive ? item.ariaLive : null\"\n [attr.aria-expanded]=\"item.ariaExpanded ? item.ariaExpanded : null\"\n [attr.aria-errormessage]=\"item.ariaErrorMessage ? item.ariaErrorMessage : null\"\n [attr.aria-haspopup] = \"item.ariaHasPopup ? item.ariaHasPopup : null\"\n [attr.aria-tabindex] = \"item.tabindex ? item.tabindex : null\"\n\n [attr.aria-checked]=\"item.active\"\n [attr.aria-selected]=\"item.active\">\n <ng-container *desyCustomInnerContent=\"{ template: item['content'], html: item.html, text: item.text }\"></ng-container>\n </li>\n </ng-container>\n </ul>\n </div>\n</div>" }]
296
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { listboxButton: [{
297
- type: ViewChild,
298
- args: ['button', { read: ElementRef, static: true }]
299
- }], listboxList: [{
300
- type: ViewChild,
301
- args: ['list', { read: ElementRef }]
302
- }], listboxContent: [{
303
- type: ViewChild,
304
- args: ['tooltip', { read: ElementRef, static: true }]
305
- }], listboxOptions: [{
306
- type: ViewChildren,
307
- args: ['option', { read: ElementRef }]
308
- }], labelComponent: [{
309
- type: ContentChildren,
310
- args: [ListboxLabelComponent]
311
- }], itemComponentList: [{
312
- type: ContentChildren,
313
- args: [ListboxItemComponent]
314
- }], id: [{
315
- type: Input
316
- }], isMultiselectable: [{
317
- type: Input
318
- }], doesChangeButtonText: [{
319
- type: Input
320
- }], label: [{
321
- type: Input
322
- }], classes: [{
323
- type: Input
324
- }], classesContainer: [{
325
- type: Input
326
- }], classesTooltip: [{
327
- type: Input
328
- }], idPrefix: [{
329
- type: Input
330
- }], disabled: [{
331
- type: Input
332
- }], items: [{
333
- type: Input
334
- }], itemsChange: [{
335
- type: Output
336
- }], activeItemChange: [{
337
- type: Output
338
- }] } });
339
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdGJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXN5LWFuZ3VsYXIvc3JjL2xpYi9kZXN5LWJ1dHRvbnMvY29tcG9uZW50cy9saXN0Ym94L2xpc3Rib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvZGVzeS1idXR0b25zL2NvbXBvbmVudHMvbGlzdGJveC9saXN0Ym94LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBS0wsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxFQUNULFlBQVksRUFDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsMkNBQTJDLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUd2RixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDL0QsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDOUUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFFM0UsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0seURBQXlELENBQUM7Ozs7Ozs7QUFNekYsTUFBTSxPQUFPLGdCQUFpQixTQUFRLDJDQUEyQztJQXdDL0UsWUFBb0IsaUJBQW9DO1FBQ3RELEtBQUssRUFBRSxDQUFDO1FBRFUsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQWpCOUMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2pDLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFLaEQsa0JBQWEsR0FBRyxLQUFLLENBQUMsQ0FBSyx1Q0FBdUM7UUFDbEUsZ0JBQVcsR0FBRyxLQUFLLENBQUMsQ0FB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Z0JBQWdCLHNiQVVWLHFCQUFxQixvREFDckIsb0JBQW9CLGlIQVBSLFVBQVUsNEdBQ1osVUFBVSxvR0FDUCxVQUFVLG9HQUNSLFVBQVUseUVDckM1QyxpK0tBOEVNO0FEdENKO0lBREMsZ0JBQWdCLEVBQUU7d0RBQzJEOzJGQVZuRSxnQkFBZ0I7a0JBSjVCLFNBQVM7K0JBQ0UsY0FBYzt3R0FPaUMsYUFBYTtzQkFBckUsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ2QsV0FBVztzQkFBbkQsU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUNtQixjQUFjO3NCQUF2RSxTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDVixjQUFjO3NCQUEzRCxZQUFZO3VCQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBR0osY0FBYztzQkFBckQsZUFBZTt1QkFBQyxxQkFBcUI7Z0JBQ0MsaUJBQWlCO3NCQUF2RCxlQUFlO3VCQUFDLG9CQUFvQjtnQkFFNUIsRUFBRTtzQkFBVixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY2Nlc3NpYmlsaXR5QW5kVGV4dE9ySHRtbFJlcXVpcmVkQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvY29tcG9uZW50cyc7XG5pbXBvcnQge0xpc3Rib3hMYWJlbERhdGF9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvbGlzdGJveC1sYWJlbC1kYXRhJztcbmltcG9ydCB7TGlzdGJveEl0ZW1EYXRhfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2xpc3Rib3gtaXRlbS1kYXRhJztcbmltcG9ydCB7U3RyaW5nVXRpbHN9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC91dGlscy9zdHJpbmctdXRpbHMnO1xuaW1wb3J0IHtMaXN0Ym94TGFiZWxDb21wb25lbnR9IGZyb20gJy4vbGlzdGJveC1sYWJlbC9saXN0Ym94LWxhYmVsLmNvbXBvbmVudCc7XG5pbXBvcnQge0xpc3Rib3hJdGVtQ29tcG9uZW50fSBmcm9tICcuL2xpc3Rib3gtaXRlbS9saXN0Ym94LWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7RGVzeUNvbnRlbnRDaGlsZH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2RlY29yYXRvcnMvZGVzeS1jb250ZW50LWNoaWxkLmRlY29yYXRvcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Rlc3ktbGlzdGJveCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0Ym94LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBMaXN0Ym94Q29tcG9uZW50IGV4dGVuZHMgQWNjZXNzaWJpbGl0eUFuZFRleHRPckh0bWxSZXF1aXJlZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0LCBBZnRlclZpZXdDaGVja2VkIHtcblxuICBzdGF0aWMgcmVhZG9ubHkgS0VZX0NPREVfRVNDID0gJ0VzY2FwZSc7XG5cbiAgQFZpZXdDaGlsZCgnYnV0dG9uJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSkgbGlzdGJveEJ1dHRvbjogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnbGlzdCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBsaXN0Ym94TGlzdDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgndG9vbHRpcCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pIGxpc3Rib3hDb250ZW50OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkcmVuKCdvcHRpb24nLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgbGlzdGJveE9wdGlvbnM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcblxuICBARGVzeUNvbnRlbnRDaGlsZCgpXG4gIEBDb250ZW50Q2hpbGRyZW4oTGlzdGJveExhYmVsQ29tcG9uZW50KSBsYWJlbENvbXBvbmVudDogTGlzdGJveExhYmVsQ29tcG9uZW50O1xuICBAQ29udGVudENoaWxkcmVuKExpc3Rib3hJdGVtQ29tcG9uZW50KSBpdGVtQ29tcG9uZW50TGlzdDogUXVlcnlMaXN0PExpc3Rib3hJdGVtQ29tcG9uZW50PjtcblxuICBASW5wdXQoKSBpZDogc3RyaW5nOyAvLyByZXF1aXJlZFxuICBASW5wdXQoKSBpc011bHRpc2VsZWN0YWJsZTogYm9vbGVhbjtcbiAgQElucHV0KCkgZG9lc0NoYW5nZUJ1dHRvblRleHQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGxhYmVsOiBMaXN0Ym94TGFiZWxEYXRhO1xuICBASW5wdXQoKSBjbGFzc2VzOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNsYXNzZXNDb250YWluZXI6IHN0cmluZztcbiAgQElucHV0KCkgY2xhc3Nlc1Rvb2x0aXA6IHN0cmluZztcbiAgQElucHV0KCkgaWRQcmVmaXg6IHN0cmluZztcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGl0ZW1zOiBMaXN0Ym94SXRlbURhdGFbXTtcbiAgQE91dHB1dCgpIGl0ZW1zQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgYWN0aXZlSXRlbUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICB0aXBweVByb3BlcnRpZXM6IGFueTsgICAgICAvLyBQcm9waWVkYWRlcyBkZSB0aXBweVxuICBjdXJyZW50Rm9jdXNJbmRleDogbnVtYmVyOyAvLyDDjW5kaWNlIGRlbCBlbGVtZW50byBhY3R1YWwgY29uIGZvY3VzXG4gIGJ1dHRvbkNvbnRlbnRIdG1sOiBzdHJpbmc7IC8vIFB1ZWRlIHNlciBlbCBwYXNhZG8gcG9yIHBhcsOhbWV0cm8gbyBlbCBpdGVtIHNlbGVjY2lvbmFkbyBlbiBjYXNvIGRlIGN1cnJlbnRGb2N1c0luZGV4PXRydWVcbiAgaXNMaXN0VmlzaWJsZSA9IGZhbHNlOyAgICAgLy8gSW5kaWNhIHNpIGxhIGxpc3RhIHNlIGVzdMOhIG1vc3RyYW5kb1xuICBjb250ZW50SW5pdCA9IGZhbHNlOyAgICAgICAvLyBTZSBoYSBpbmljaWFkbyBlbCBjb250ZW5pZG9cbiAgcGVuZGluZ0NoZWNrQWN0aXZlSXRlbXNBZnRlclZpZXdJbml0ID0gZmFsc2U7XG4gIHBlbmRpbmdGb2N1c09uTGlzdCA9IGZhbHNlO1xuXG4gIC8vIGNvbmRpdGlvbmFsSWQgeSBjb25kaXRpb25hbEl0ZW0gcmVwcmVzZW50YW4gZW4gZGVzeS1odG1sIGVsIGl0ZW0gYWN0aXZvLiBBcXXDrSBlcyBtZWpvciBvYnRlbmVybG8gY3VhbmRvIHNlIG5lY2VzaXRhXG4gIGxhc3RBY3RpdmVJdGVtczogeyBpdGVtOiBMaXN0Ym94SXRlbURhdGEsIGluZGV4OiBudW1iZXIgfVtdO1xuICBpdGVtQ29tcG9uZW50U3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW107XG5cbiAgaXRlbUxpc3Q6IExpc3Rib3hJdGVtRGF0YVtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxpc3Rib3hDb250ZW50ICYmIHRoaXMubGlzdGJveENvbnRlbnQubmF0aXZlRWxlbWVudCkge1xuICAgICAgdGhpcy5pbml0VGlwcHkoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuaXRlbUxpc3QgPSB0aGlzLml0ZW1zO1xuXG4gICAgICBpZiAodGhpcy5jb250ZW50SW5pdCkge1xuICAgICAgICB0aGlzLmNoZWNrQWN0aXZlSXRlbXMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucGVuZGluZ0NoZWNrQWN0aXZlSXRlbXNBZnRlclZpZXdJbml0ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG5cbiAgICBpZiAodGhpcy5wZW5kaW5nQ2hlY2tBY3RpdmVJdGVtc0FmdGVyVmlld0luaXQpIHtcbiAgICAgIHRoaXMuY2hlY2tBY3RpdmVJdGVtcygpO1xuICAgICAgdGhpcy5wZW5kaW5nQ2hlY2tBY3RpdmVJdGVtc0FmdGVyVmlld0luaXQgPSBmYWxzZTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY29udGVudEluaXQgPSB0cnVlO1xuICAgIGlmICh0aGlzLml0ZW1Db21wb25lbnRMaXN0ICYmICghdGhpcy5pdGVtcyB8fCB0aGlzLml0ZW1zLmxlbmd0aCA9PT0gMCkpIHtcbiAgICAgIHRoaXMuc2V0dXBJdGVtQ29tcG9uZW50TGlzdCgpO1xuICAgICAgdGhpcy5pdGVtQ29tcG9uZW50TGlzdC5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0dXBJdGVtQ29tcG9uZW50TGlzdCgpO1xuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGVuZGluZ0ZvY3VzT25MaXN0KSB7XG4gICAgICB0aGlzLnBlbmRpbmdGb2N1c09uTGlzdCA9IGZhbHNlO1xuICAgICAgdGhpcy5saXN0Ym94TGlzdC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cbiAgXG4gIHByaXZhdGUgc2V0dXBJdGVtQ29tcG9uZW50TGlzdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pdGVtQ29tcG9uZW50U3Vic2NyaXB0aW9ucykge1xuICAgICAgdGhpcy5pdGVtQ29tcG9uZW50U3Vic2NyaXB0aW9ucy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgICB9XG4gICAgdGhpcy5pdGVtQ29tcG9uZW50U3Vic2NyaXB0aW9ucyA9IFtdO1xuICAgIHRoaXMuaXRlbUxpc3QgPSBbXTtcbiAgICB0aGlzLml0ZW1Db21wb25lbnRMaXN0LmZvckVhY2goaXRlbSA9PiB7XG4gICAgICB0aGlzLml0ZW1MaXN0LnB1c2goaXRlbSk7XG4gICAgfSk7XG4gICAgdGhpcy5pdGVtQ29tcG9uZW50TGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gaXRlbS5pdGVtQ2hhbmdlLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNoZWNrQWN0aXZlSXRlbXMoKSk7XG4gICAgICB0aGlzLml0ZW1Db21wb25lbnRTdWJzY3JpcHRpb25zLnB1c2goc3Vic2NyaXB0aW9uKTtcbiAgICB9KTtcbiAgICAgIFxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMuY2hlY2tBY3RpdmVJdGVtcygpO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBY3RpdmVJdGVtc0RhdGEoKTogeyBpdGVtOiBMaXN0Ym94SXRlbURhdGEsIGluZGV4OiBudW1iZXIgfVtdIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtTGlzdFxuICAgICAgLm1hcCgoaXRlbSwgaW5kZXgpID0+IGl0ZW0uYWN0aXZlID8ge2l0ZW0sIGluZGV4fSA6IG51bGwpXG4gICAgICAuZmlsdGVyKGl0ZW0gPT4gaXRlbSAhPT0gbnVsbCk7XG4gIH1cblxuICBvbkNoYW5nZUl0ZW1DaGVja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuY2hlY2tBY3RpdmVJdGVtcygpO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgY2hlY2tBY3RpdmVJdGVtcygpOiB2b2lkIHtcbiAgICBsZXQgYWN0aXZlSXRlbXM6IHsgaXRlbTogTGlzdGJveEl0ZW1EYXRhLCBpbmRleDogbnVtYmVyIH1bXSA9IHRoaXMuaXRlbUxpc3RcbiAgICAgIC5tYXAoKGl0ZW0sIGluZGV4KSA9PiBpdGVtLmFjdGl2ZSA/IHtpdGVtLCBpbmRleH0gOiBudWxsKVxuICAgICAgLmZpbHRlcihpdGVtID0+IGl0ZW0gIT09IG51bGwpO1xuXG4gICAgLy8gc2UgY29tcHJ1ZWJhIHNpIGFsZ8O6biBpdGVtIGhhIGNhbWJpYWRvIHN1IGVzdGFkbyBkZSBhY3RpdmVcbiAgICBsZXQgaGFzQWN0aXZlSXRlbUNoYW5nZSA9IGZhbHNlO1xuICAgIGlmICh0aGlzLmxhc3RBY3RpdmVJdGVtcyAmJiBhY3RpdmVJdGVtcy5sZW5ndGggPT09IHRoaXMubGFzdEFjdGl2ZUl0ZW1zLmxlbmd0aCkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhY3RpdmVJdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoYWN0aXZlSXRlbXNbaV0uaW5kZXggIT09IHRoaXMubGFzdEFjdGl2ZUl0ZW1zW2ldLmluZGV4KSB7XG4gICAgICAgICAgaGFzQWN0aXZlSXRlbUNoYW5nZSA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaGFzQWN0aXZlSXRlbUNoYW5nZSA9IHRydWU7XG4gICAgfVxuXG4gICAgLy8gU2kgaGF5IGNhbWJpb3MgZXh0ZXJub3MgeSBlcyBzZWxlY2Npw7NuIMO6bmljYSwgYW51bGFtb3MgbGEgc2VsZWNjacOzbiBhbnRlcmlvclxuICAgIGlmICh0aGlzLmxhc3RBY3RpdmVJdGVtcyAmJiAhdGhpcy5pc011bHRpc2VsZWN0YWJsZSAmJiBoYXNBY3RpdmVJdGVtQ2hhbmdlKSB7XG4gICAgICBpZiAoYWN0aXZlSXRlbXMubGVuZ3RoICE9PSB0aGlzLmxhc3RBY3RpdmVJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgZm9yIChjb25zdCBhY3RpdmVJdGVtIG9mIGFjdGl2ZUl0ZW1zKSB7XG4gICAgICAgICAgaWYgKHRoaXMubGFzdEFjdGl2ZUl0ZW1zLmZpbmRJbmRleChpID0+IGkuaW5kZXggPT09IGFjdGl2ZUl0ZW0uaW5kZXgpID49IDApIHtcbiAgICAgICAgICAgIHRoaXMuc2V0SXRlbUFjdGl2ZVZhbHVlKGFjdGl2ZUl0ZW0uaW5kZXgsIGZhbHNlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBhY3RpdmVJdGVtcyA9IGFjdGl2ZUl0ZW1zLmZpbHRlcihhY3RpdmVJdGVtID0+IGFjdGl2ZUl0ZW0uaXRlbS5hY3RpdmUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5sYXN0QWN0aXZlSXRlbXMgPSBhY3RpdmVJdGVtcztcblxuICAgIC8vIFNlIGNhbWJpYSBlbCBjb250ZW5pZG8gZGVsIGJvdMOzblxuICAgIGlmICh0aGlzLmRvZXNDaGFuZ2VCdXR0b25UZXh0ICYmICF0aGlzLmlzTXVsdGlzZWxlY3RhYmxlICYmIGFjdGl2ZUl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGFjdGl2ZUl0ZW1PcHRpb24gPSB0aGlzLmxpc3Rib3hPcHRpb25zLmZpbmQoKGl0ZW0sIGluZGV4KSA9PiBpbmRleCA9PT0gYWN0aXZlSXRlbXNbMF0uaW5kZXgpO1xuICAgICAgaWYgKGFjdGl2ZUl0ZW1PcHRpb24pIHtcbiAgICAgICAgdGhpcy5idXR0b25Db250ZW50SHRtbCA9IGFjdGl2ZUl0ZW1PcHRpb24ubmF0aXZlRWxlbWVudC5pbm5lckhUTUw7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYnV0dG9uQ29udGVudEh0bWwgPSB0aGlzLmh0bWwgPyB0aGlzLmh0bWwgOiBudWxsO1xuICAgIH1cblxuICAgIC8vIFNpIGhheSBjYW1iaW9zLCBzZSBlbWl0ZW5cbiAgICBpZiAoaGFzQWN0aXZlSXRlbUNoYW5nZSkge1xuICAgICAgdGhpcy5pdGVtc0NoYW5nZS5lbWl0KHRoaXMuaXRlbUxpc3QpO1xuICAgICAgdGhpcy5hY3RpdmVJdGVtQ2hhbmdlLmVtaXQoYWN0aXZlSXRlbXMubGVuZ3RoID4gMCA/IGFjdGl2ZUl0ZW1zWzBdLml0ZW0gOiBudWxsKTtcbiAgICB9XG4gIH1cblxuICBvbkxpc3RTaG93KCk6IHZvaWQge1xuICAgIHRoaXMuaXNMaXN0VmlzaWJsZSA9IHRydWU7XG4gICAgaWYgKHRoaXMubGlzdGJveExpc3QpIHtcbiAgICAgIHRoaXMucGVuZGluZ0ZvY3VzT25MaXN0ID0gdHJ1ZTtcbiAgICAgIC8vc2V0VGltZW91dCgoKSA9PiB0aGlzLmxpc3Rib3hMaXN0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKSk7XG4gICAgfVxuICB9XG5cbiAgb25MaXN0Q2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5pc0xpc3RWaXNpYmxlID0gZmFsc2U7XG4gIH1cblxuICBvbkxpc3RGb2N1cygpOiB2b2lkIHtcbiAgICBjb25zdCBhY3RpdmVJdGVtc0RhdGEgPSB0aGlzLmdldEFjdGl2ZUl0ZW1zRGF0YSgpO1xuICAgIGlmIChhY3RpdmVJdGVtc0RhdGEubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgYWN0aXZlRWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuZ2V0SXRlbUlkKGFjdGl2ZUl0ZW1zRGF0YVswXS5pdGVtLCBhY3RpdmVJdGVtc0RhdGFbMF0uaW5kZXgpKTtcbiAgICAgIGlmIChhY3RpdmVFbGVtKSB7XG4gICAgICAgIGFjdGl2ZUVsZW0uZm9jdXMoKTtcbiAgICAgICAgdGhpcy5jdXJyZW50Rm9jdXNJbmRleCA9IGFjdGl2ZUl0ZW1zRGF0YVswXS5pbmRleDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUxpc3QgJiYgdGhpcy5pdGVtTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmN1cnJlbnRGb2N1c0luZGV4ID0gMDtcbiAgICAgIGlmICghdGhpcy5pc011bHRpc2VsZWN0YWJsZSkge1xuICAgICAgICB0aGlzLnNlbGVjdEl0ZW0oMCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybignTm8gZWxlbWVudCB0byBmb2N1cycpO1xuICAgIH1cbiAgfVxuXG4gIG1vdmVGb2N1cyhwb3NpdGlvbjogbnVtYmVyLCBldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmIChwb3NpdGlvbiA+PSAwICYmIHBvc2l0aW9uIDwgdGhpcy5pdGVtTGlzdC5sZW5ndGgpIHtcbiAgICAgIGlmICh0aGlzLmlzTXVsdGlzZWxlY3RhYmxlKSB7XG4gICAgICAgIHRoaXMuY3VycmVudEZvY3VzSW5kZXggPSBwb3NpdGlvbjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0SXRlbShwb3NpdGlvbik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25TcGFjZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmICh0aGlzLmlzTXVsdGlzZWxlY3RhYmxlKSB7XG4gICAgICB0aGlzLnNlbGVjdEl0ZW0odGhpcy5jdXJyZW50Rm9jdXNJbmRleCk7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0SXRlbShpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzTXVsdGlzZWxlY3RhYmxlKSB7XG4gICAgICB0aGlzLml0ZW1MaXN0LmZvckVhY2goaXRlbSA9PiB0aGlzLnNldEl0ZW1BY3RpdmVWYWx1ZShpbmRleCwgZmFsc2UpKTtcbiAgICAgIHRoaXMuc2V0SXRlbUFjdGl2ZVZhbHVlKGluZGV4LCB0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRJdGVtQWN0aXZlVmFsdWUoaW5kZXgsICF0aGlzLml0ZW1MaXN0W2luZGV4XS5hY3RpdmUpO1xuICAgIH1cbiAgICB0aGlzLmN1cnJlbnRGb2N1c0luZGV4ID0gaW5kZXg7XG5cbiAgICB0aGlzLmNoZWNrQWN0aXZlSXRlbXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0SXRlbUFjdGl2ZVZhbHVlKGluZGV4OiBudW1iZXIsIGFjdGl2ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLml0ZW1Db21wb25lbnRMaXN0ICE9PSBudWxsICYmIHRoaXMuaXRlbUNvbXBvbmVudExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZGVhY3RpdmF0ZWRJdGVtID0gdGhpcy5pdGVtQ29tcG9uZW50TGlzdC5nZXQoaW5kZXgpO1xuICAgICAgZGVhY3RpdmF0ZWRJdGVtPy5zZXRBY3RpdmUoYWN0aXZlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pdGVtTGlzdFtpbmRleF0uYWN0aXZlID0gYWN0aXZlO1xuICAgIH1cbiAgfVxuXG4gIC8qXG4gICAqIE3DqXRvZG9zIHBhcmEgZmFjaWxpdGFyIGNvbnRlbmlkbyBhbCB0ZW1wbGF0ZVxuICAgKi9cblxuICBnZXRJZFByZWZpeCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmlkUHJlZml4ID8gdGhpcy5pZFByZWZpeCA6IHRoaXMuaWQgKyAnLWxpc3Rib3gtaXRlbSc7XG4gIH1cblxuICBnZXRJdGVtSWQoaXRlbTogTGlzdGJveEl0ZW1EYXRhLCBpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBsZXQgaXRlbUlkOiBzdHJpbmc7XG4gICAgaWYgKGl0ZW0uaWQpIHtcbiAgICAgIGl0ZW1JZCA9IGl0ZW0uaWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGl0ZW1JZCA9IHRoaXMuZ2V0SWRQcmVmaXgoKTtcbiAgICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgICAgaXRlbUlkICs9IGAtJHtpbmRleH1gO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaXRlbUlkO1xuICB9XG5cbiAgaGFzTGFiZWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKHRoaXMubGFiZWwgfHwgdGhpcy5sYWJlbENvbXBvbmVudCk7XG4gIH1cblxuICBnZXRMYWJlbENvbnRlbnQobGFiZWw6IExpc3Rib3hMYWJlbERhdGEpOiBzdHJpbmcge1xuICAgIHJldHVybiBsYWJlbC5odG1sID8gbGFiZWwuaHRtbCA6IGA8cD4keyBTdHJpbmdVdGlscy5lc2NhcGVIdG1sKGxhYmVsLnRleHQpIH08L3A+YDtcbiAgfVxuXG4gIGluaXRUaXBweSgpOiB2b2lkIHtcbiAgICBjb25zdCBjb250ZW50VG9vbHRpcCA9IHRoaXMubGlzdGJveENvbnRlbnQubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICBjb25zdCBsaXN0Ym94QnV0dG9uRWxlbWVudCA9IHRoaXMubGlzdGJveEJ1dHRvbi5uYXRpdmVFbGVtZW50O1xuICAgIHRoaXMudGlwcHlQcm9wZXJ0aWVzID0geyAgICAgICAgXG4gICAgICBwbGFjZW1lbnQ6ICdib3R0b20tc3RhcnQnLFxuICAgICAgaW5saW5lUG9zaXRpb25pbmc6IHRydWUsICAgICAgICBcbiAgICAgIGNvbnRlbnQ6IGNvbnRlbnRUb29sdGlwLFxuICAgICAgYWxsb3dIVE1MOiB0cnVlLCAvLyBNYWtlIHN1cmUgeW91IGFyZSBzYW5pdGl6aW5nIGFueSB1c2VyIGRhdGEgaWYgcmVuZGVyaW5nIEhUTUwgdG8gcHJldmVudCBYU1MgYXR0YWNrcy5cbiAgICAgIHRyaWdnZXI6ICdjbGljaycsXG4gICAgICBoaWRlT25DbGljazogdHJ1ZSxcbiAgICAgIGludGVyYWN0aXZlOiB0cnVlLFxuICAgICAgYXJyb3c6IGZhbHNlLFxuICAgICAgb2Zmc2V0OiBbMCwgLTEwXSxcbiAgICAgIHRoZW1lOiAnJyxcbiAgICAgIHBsdWdpbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdoaWRlT25Qb3BwZXJCbHVyJyxcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6IHRydWUsXG4gICAgICAgICAgZm4oaW5zdGFuY2UpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIG9uQ3JlYXRlKCkge1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLnBvcHBlci5hZGRFdmVudExpc3RlbmVyKCdmb2N1c291dCcsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5wcm9wcy5oaWRlT25Qb3BwZXJCbHVyICYmXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnJlbGF0ZWRUYXJnZXQgJiZcbiAgICAgICAgICAgICAgICAgICAgIWluc3RhbmNlLnBvcHBlci5jb250YWlucyhldmVudC5yZWxhdGVkVGFyZ2V0KVxuICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9LCB7XG4gICAgICAgICAgbmFtZTogJ2hpZGVPbkVzYycsXG4gICAgICAgICAgZGVmYXVsdFZhbHVlOiB0cnVlLFxuICAgICAgICAgIGZuKHtoaWRlfSk6IGFueSB7XG5cbiAgICAgICAgICAgIGZ1bmN0aW9uIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBMaXN0Ym94Q29tcG9uZW50LktFWV9DT0RFX0VTQykge1xuICAgICAgICAgICAgICAgIGhpZGUoKTtcbiAgICAgICAgICAgICAgICBsaXN0Ym94QnV0dG9uRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIG9uU2hvdygpOiB2b2lkIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgb25LZXlEb3duKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgb25IaWRlKCk6IHZvaWQge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBvbktleURvd24pO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9LFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgcm9sZTogZmFsc2UsXG4gICAgICBhcmlhOiB7XG4gICAgICAgIGNvbnRlbnQ6ICdhdXRvJyxcbiAgICAgIH0sXG4gICAgICBvblNob3c6IHRoaXMub25MaXN0U2hvdy5iaW5kKHRoaXMpLFxuICAgICAgb25IaWRkZW46IHRoaXMub25MaXN0Q2xvc2UuYmluZCh0aGlzKVxuICAgIH07XG4gIH1cbiAgXG59XG4iLCI8ZGl2IFtuZ0NsYXNzXT1cImNsYXNzZXNDb250YWluZXIgPyBjbGFzc2VzQ29udGFpbmVyIDogJ3JlbGF0aXZlJ1wiPlxuICA8ZGl2IFtpZF09XCJpZCArICctbGFiZWwnXCIgW2NsYXNzXT1cIlsnbWItc20nLCBsYWJlbENvbXBvbmVudD8uY2xhc3NlcywgbGFiZWw/LmNsYXNzZXNdIHwgbWFrZUh0bWxMaXN0XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqZGVzeUN1c3RvbUlubmVyQ29udGVudD1cInsgY29tcG9uZW50OiBsYWJlbENvbXBvbmVudCwgaHRtbDogbGFiZWwgPyBnZXRMYWJlbENvbnRlbnQobGFiZWwpIDogbnVsbCB9XCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICA8YnV0dG9uICNidXR0b24gW2lkXT1cImlkICsgJy1idXR0b24nXCJcbiAgICAgICAgICBbY2xhc3NdPVwiWydjLWxpc3Rib3gnLCBjbGFzc2VzXSB8IG1ha2VIdG1sTGlzdFwiXG4gICAgICAgICAgbmd4VGlwcHkgW3RpcHB5UHJvcHNdPVwidGlwcHlQcm9wZXJ0aWVzXCJcbiAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwibGlzdGJveFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIltoYXNMYWJlbCgpID8gaWQgKyAnLWxhYmVsJyA6IG51bGwsIGlkICsgJy1idXR0b24nXSB8IG1ha2VIdG1sTGlzdFwiXG4gICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnZGlzYWJsZWQnIDogbnVsbFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICd0cnVlJyA6IChhcmlhRGlzYWJsZWQgPyBhcmlhRGlzYWJsZWQgOiBudWxsKVwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1yb2xlXSA9IFwicm9sZSA/IHJvbGUgOiBudWxsXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXSA9IFwiYXJpYUxhYmVsID8gYXJpYUxhYmVsIDogbnVsbFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV0gPSBcImFyaWFEZXNjcmliZWRCeSA/IGFyaWFEZXNjcmliZWRCeSA6IG51bGxcIlxuICAgICAgICAgIFthdHRyLmFyaWEtaGlkZGVuXSA9IFwiYXJpYUhpZGRlbiA/IGFyaWFIaWRkZW4gOiBudWxsXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXSA9IFwiYXJpYUNvbnRyb2xzID8gYXJpYUNvbnRyb2xzIDogbnVsbFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XSA9IFwiYXJpYUN1cnJlbnQgPyBhcmlhQ3VycmVudCA6IG51bGxcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGl2ZV0gPSBcImFyaWFMaXZlID8gYXJpYUxpdmUgOiBudWxsXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXSA9IFwiYXJpYUV4cGFuZGVkID8gYXJpYUV4cGFuZGVkIDogbnVsbFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1lcnJvck1lc3NhZ2VdID0gXCJhcmlhRXJyb3JNZXNzYWdlID8gYXJpYUVycm9yTWVzc2FnZSA6IG51bGxcIlxuICAgICAgICAgIFthdHRyLmFyaWEtaGFzcHB1cF0gPSBcImFyaWFIYXNQb3B1cCA/IGFyaWFIYXNQb3B1cCA6IG51bGxcIlxuICAgICAgICAgIFthdHRyLmFyaWEtdGFiaW5kZXhdID0gXCJ0YWJpbmRleCA/IHRhYmluZGV4IDogbnVsbFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImlubGluZS1mbGV4IHNlbGYtY2VudGVyIG1heC13LXhzIGFsaWduLW1pZGRsZSB0cnVuY2F0ZVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKmRlc3lDdXN0b21Jbm5lckNvbnRlbnQ9XCJ7IGh0bWw6IGJ1dHRvbkNvbnRlbnRIdG1sLCB0ZXh0OiB0ZXh0IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9zcGFuPlxuICAgIDxzdmcgY2xhc3M9XCJpbmxpbmUtYmxvY2sgLW1yLTIgIGFsaWduLW1pZGRsZSAtbXktcHhcIiB2aWV3Qm94PVwiMCAwIDk2IDk2XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIGZvY3VzYWJsZT1cImZhbHNlXCIgd2lkdGg9XCIxLjVlbVwiIGhlaWdodD1cIjEuNWVtXCI+PGc+PHBhdGggZD1cIk00Ni43MSA1OC4wMzdhMS44MjMgMS44MjMgMCAwMDIuNTgxIDBMNjIuMDQ4IDQ1LjI4YTEuODIzIDEuODIzIDAgMDAtMS4yOS0zLjExM0gzNS4yNDNhMS44MjMgMS44MjMgMCAwMC0xLjI5MSAzLjExM3pcIi8+PC9nPjwvc3ZnPlxuICA8L2J1dHRvbj5cbiAgPGRpdiAjdG9vbHRpcCBbY2xhc3NdPVwiWydjLWxpc3Rib3hfX3Rvb2x0aXAgLW1sLXNtIG10LTIgYm9yZGVyIGJvcmRlci1uZXV0cmFsLWJhc2Ugc2hhZG93LW1kIGJnLXdoaXRlJywgY2xhc3Nlc1Rvb2x0aXBdIHwgbWFrZUh0bWxMaXN0XCI+XG4gICAgPHVsICpuZ0lmPVwiaXRlbUxpc3RcIlxuICAgICAgICAjbGlzdCBbaWRdPVwiaWRcIlxuICAgICAgICAoZm9jdXMpPVwib25MaXN0Rm9jdXMoKVwiXG4gICAgICAgIChrZXlkb3duLmFycm93VXApPVwibW92ZUZvY3VzKGN1cnJlbnRGb2N1c0luZGV4IC0gMSwgJGV2ZW50KVwiXG4gICAgICAgIChrZXlkb3duLmFycm93RG93bik9XCJtb3ZlRm9jdXMoY3VycmVudEZvY3VzSW5kZXggKyAxLCAkZXZlbnQpXCJcbiAgICAgICAgKGtleWRvd24uaG9tZSk9XCJtb3ZlRm9jdXMoMCwgJGV2ZW50KVwiXG4gICAgICAgIChrZXlkb3duLmVuZCk9XCJtb3ZlRm9jdXMoaXRlbXMubGVuZ3RoIC0gMSwgJGV2ZW50KVwiXG4gICAgICAgIChrZXlkb3duLnNwYWNlKT1cIm9uU3BhY2UoJGV2ZW50KVwiXG4gICAgICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgIGNsYXNzPVwidGV4dC1zbSBvdXRsaW5lLW5vbmVcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiaGFzTGFiZWwoKSA/IGlkIDogKGFyaWFMYWJlbGxlZEJ5ID8gYXJpYUxhYmVsbGVkQnkgOiBudWxsKVwiXG4gICAgICAgIFthdHRyLmFyaWEtbXVsdGlzZWxlY3RhYmxlXT1cImlzTXVsdGlzZWxlY3RhYmxlID8gJ3RydWUnIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiYXJpYURpc2FibGVkID8gYXJpYURpc2FibGVkIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdID0gXCJhcmlhTGFiZWwgPyBhcmlhTGFiZWwgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV0gPSBcImFyaWFEZXNjcmliZWRCeSA/IGFyaWFEZXNjcmliZWRCeSA6IG51bGxcIlxuICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl0gPSBcImFyaWFIaWRkZW4gPyBhcmlhSGlkZGVuIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdID0gXCJhcmlhQ29udHJvbHMgPyBhcmlhQ29udHJvbHMgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XSA9IFwiYXJpYUN1cnJlbnQgPyBhcmlhQ3VycmVudCA6IG51bGxcIlxuICAgICAgICBbYXR0ci5hcmlhLWxpdmVdID0gXCJhcmlhTGl2ZSA/IGFyaWFMaXZlIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdID0gXCJhcmlhRXhwYW5kZWQgPyBhcmlhRXhwYW5kZWQgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1lcnJvcm1lc3NhZ2VdID0gXCJhcmlhRXJyb3JNZXNzYWdlID8gYXJpYUVycm9yTWVzc2FnZSA6IG51bGxcIlxuICAgICAgICBbYXR0ci5hcmlhLWhhc3BvcHVwXSA9IFwiYXJpYUhhc1BvcHVwID8gYXJpYUhhc1BvcHVwIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtYWN0aXZlZGVzY2VuZGFudF0gPSBcImxhc3RBY3RpdmVJdGVtcyAmJiBsYXN0QWN0aXZlSXRlbXMubGVuZ3RoID4gMCA/IGdldEl0ZW1JZChsYXN0QWN0aXZlSXRlbXNbMF0uaXRlbSwgbGFzdEFjdGl2ZUl0ZW1zWzBdLmluZGV4KSA6IG51bGxcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbUxpc3Q7IGluZGV4IGFzIGluZGV4XCI+XG4gICAgICAgIDxsaSAjb3B0aW9uICpuZ0lmPVwiaXRlbVwiIHJvbGU9XCJvcHRpb25cIiAoY2xpY2spPVwic2VsZWN0SXRlbShpbmRleClcIlxuICAgICAgICAgICAgW2NsYXNzXT1cIlsnZmxleCBpdGVtcy1jZW50ZXIgcHItYmFzZSBwbC1sZyBweS1zbSBob3ZlcjpiZy1wcmltYXJ5LWJhc2UgaG92ZXI6dGV4dC13aGl0ZSBmb2N1czpiZy13YXJuaW5nLWJhc2UgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnNoYWRvdy1vdXRsaW5lLWZvY3VzIGZvY3VzOnRleHQtYmxhY2snLCBpdGVtLmNsYXNzZXNdIHwgbWFrZUh0bWxMaXN0XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZm9jdXNlZCc6IGluZGV4ID09PSBjdXJyZW50Rm9jdXNJbmRleH1cIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJpdGVtLmFjdGl2ZSA/ICd0cnVlJyA6IChpdGVtLmFyaWFMYWJlbCA/IGl0ZW0uYXJpYUxhYmVsIDogbnVsbClcIlxuICAgICAgICAgICAgW2lkXT1cImdldEl0ZW1JZChpdGVtLCBpbmRleClcIlxuICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiaXRlbS50aXRsZSA/IGl0ZW0udGl0bGUgOiBudWxsXCJcbiAgICAgICAgICAgIChkZXN5QXR0cmlidXRlQ2hhbmdlKT1cIm9uQ2hhbmdlSXRlbUNoZWNrZWQoKVwiIFthdHRyaWJ1dGVzVG9DaGVja109XCInYXJpYS1zZWxlY3RlZCdcIiBbZGVzeUF0dHJpYnV0ZUNoYW5nZUVuYWJsZWRdPVwiaXRlbXMgJiYgaXRlbXMubGVuZ3RoID4gMFwiXG5cbiAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiaXRlbS5hcmlhRGVzY3JpYmVkQnkgPyBpdGVtLmFyaWFEZXNjcmliZWRCeSA6IG51bGxcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dID0gXCJpdGVtLmFyaWFIaWRkZW4gPyBpdGVtLmFyaWFIaWRkZW4gOiBudWxsXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiaXRlbS5hcmlhQ29udHJvbHMgPyBpdGVtLmFyaWFDb250cm9scyA6IG51bGxcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XSA9IFwiaXRlbS5hcmlhQ3VycmVudCA/IGl0ZW0uYXJpYUN1cnJlbnQgOiBudWxsXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGl2ZV0gPSBcIml0ZW0uYXJpYUxpdmUgPyBpdGVtLmFyaWFMaXZlIDogbnVsbFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIml0ZW0uYXJpYUV4cGFuZGVkID8gaXRlbS5hcmlhRXhwYW5kZWQgOiBudWxsXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtZXJyb3JtZXNzYWdlXT1cIml0ZW0uYXJpYUVycm9yTWVzc2FnZSA/IGl0ZW0uYXJpYUVycm9yTWVzc2FnZSA6IG51bGxcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1oYXNwb3B1cF0gPSBcIml0ZW0uYXJpYUhhc1BvcHVwID8gaXRlbS5hcmlhSGFzUG9wdXAgOiBudWxsXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtdGFiaW5kZXhdID0gXCJpdGVtLnRhYmluZGV4ID8gaXRlbS50YWJpbmRleCA6IG51bGxcIlxuXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWNoZWNrZWRdPVwiaXRlbS5hY3RpdmVcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJpdGVtLmFjdGl2ZVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKmRlc3lDdXN0b21Jbm5lckNvbnRlbnQ9XCJ7IHRlbXBsYXRlOiBpdGVtWydjb250ZW50J10sIGh0bWw6IGl0ZW0uaHRtbCwgdGV4dDogaXRlbS50ZXh0IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9saT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdWw+XG4gIDwvZGl2PlxuPC9kaXY+Il19