desy-angular 6.0.2 → 7.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 (618) hide show
  1. package/esm2020/desy-angular.mjs +5 -0
  2. package/esm2020/lib/desy-angular.module.mjs +75 -0
  3. package/esm2020/lib/desy-buttons/components/button/button.component.mjs +115 -0
  4. package/esm2020/lib/desy-buttons/components/button-loader/button-loader.component.mjs +63 -0
  5. package/esm2020/lib/desy-buttons/components/dropdown/dropdown.component.mjs +126 -0
  6. package/esm2020/lib/desy-buttons/components/listbox/listbox-item/listbox-item.component.mjs +32 -0
  7. package/esm2020/lib/desy-buttons/components/listbox/listbox-label/listbox-label.component.mjs +14 -0
  8. package/esm2020/lib/desy-buttons/components/listbox/listbox.component.mjs +291 -0
  9. package/esm2020/lib/desy-buttons/components/pill/pill.component.mjs +80 -0
  10. package/esm2020/lib/desy-buttons/components/toggle/toggle-off-state/toggle-off-state.component.mjs +17 -0
  11. package/esm2020/lib/desy-buttons/components/toggle/toggle-on-state/toggle-on-state.component.mjs +17 -0
  12. package/esm2020/lib/desy-buttons/components/toggle/toggle.component.mjs +59 -0
  13. package/{esm2015/lib/desy-buttons/desy-buttons.module.js → esm2020/lib/desy-buttons/desy-buttons.module.mjs} +64 -35
  14. package/esm2020/lib/desy-commons/components/content/content.component.mjs +14 -0
  15. package/esm2020/lib/desy-commons/components/description/description.component.mjs +19 -0
  16. package/esm2020/lib/desy-commons/components/divider/divider.component.mjs +16 -0
  17. package/esm2020/lib/desy-commons/components/icon/icon.component.mjs +16 -0
  18. package/esm2020/lib/desy-commons/components/title/title.component.mjs +17 -0
  19. package/esm2020/lib/desy-commons/desy-commons.module.mjs +53 -0
  20. package/esm2020/lib/desy-forms/components/character-count/character-count.component.mjs +130 -0
  21. package/esm2020/lib/desy-forms/components/checkboxes/checkbox-item/checkbox-item.component.mjs +240 -0
  22. package/esm2020/lib/desy-forms/components/checkboxes/checkboxes.component.mjs +264 -0
  23. package/esm2020/lib/desy-forms/components/date-input/date-input-day/date-input-day.component.mjs +52 -0
  24. package/esm2020/lib/desy-forms/components/date-input/date-input-divider/date-input-divider.component.mjs +19 -0
  25. package/esm2020/lib/desy-forms/components/date-input/date-input-item/date-input-item.component.mjs +16 -0
  26. package/esm2020/lib/desy-forms/components/date-input/date-input-month/date-input-month.component.mjs +52 -0
  27. package/esm2020/lib/desy-forms/components/date-input/date-input-year/date-input-year.component.mjs +48 -0
  28. package/esm2020/lib/desy-forms/components/date-input/date-input.component.mjs +266 -0
  29. package/esm2020/lib/desy-forms/components/error-message/error-message.component.mjs +31 -0
  30. package/esm2020/lib/desy-forms/components/fieldset/fieldset.component.mjs +56 -0
  31. package/esm2020/lib/desy-forms/components/fieldset/legend/legend.component.mjs +23 -0
  32. package/esm2020/lib/desy-forms/components/file-upload/file-upload.component.mjs +72 -0
  33. package/esm2020/lib/desy-forms/components/form-field/form-field.component.mjs +124 -0
  34. package/esm2020/lib/desy-forms/components/hint/hint.component.mjs +29 -0
  35. package/esm2020/lib/desy-forms/components/input/input.component.mjs +99 -0
  36. package/esm2020/lib/desy-forms/components/input-group/input-group-divider/input-group-divider.component.mjs +20 -0
  37. package/esm2020/lib/desy-forms/components/input-group/input-group-input/input-group-input.component.mjs +53 -0
  38. package/esm2020/lib/desy-forms/components/input-group/input-group-item/input-group-item.component.mjs +16 -0
  39. package/esm2020/lib/desy-forms/components/input-group/input-group-select/input-group-select.component.mjs +45 -0
  40. package/esm2020/lib/desy-forms/components/input-group/input-group.component.mjs +223 -0
  41. package/esm2020/lib/desy-forms/components/label/label.component.mjs +38 -0
  42. package/esm2020/lib/desy-forms/components/radios/radio-item/radio-item.component.mjs +185 -0
  43. package/esm2020/lib/desy-forms/components/radios/radios.component.mjs +270 -0
  44. package/esm2020/lib/desy-forms/components/search-bar/search-bar.component.mjs +66 -0
  45. package/esm2020/lib/desy-forms/components/select/option/option.component.mjs +22 -0
  46. package/esm2020/lib/desy-forms/components/select/option-group/option-group.component.mjs +18 -0
  47. package/esm2020/lib/desy-forms/components/select/select-item/select-item.component.mjs +14 -0
  48. package/esm2020/lib/desy-forms/components/select/select.component.mjs +93 -0
  49. package/esm2020/lib/desy-forms/components/template-driven-wrapper/template-driven-wrapper.component.mjs +12 -0
  50. package/esm2020/lib/desy-forms/components/textarea/textarea.component.mjs +86 -0
  51. package/esm2020/lib/desy-forms/components/tree/tree-checkbox/tree-checkbox.component.mjs +167 -0
  52. package/esm2020/lib/desy-forms/components/tree/tree-item/tree-item.component.mjs +397 -0
  53. package/esm2020/lib/desy-forms/components/tree/tree-items-generator/tree-items-generator.component.mjs +25 -0
  54. package/esm2020/lib/desy-forms/components/tree/tree-sub/tree-sub.component.mjs +15 -0
  55. package/esm2020/lib/desy-forms/components/tree/tree.component.mjs +425 -0
  56. package/esm2020/lib/desy-forms/desy-forms.module.mjs +209 -0
  57. package/esm2020/lib/desy-forms/directives/condition.directive.mjs +34 -0
  58. package/{esm2015/lib/desy-forms/interfaces/select-item-data.js → esm2020/lib/desy-forms/interfaces/select-item-data.mjs} +1 -1
  59. package/esm2020/lib/desy-forms/models/checkbox-service-item.component.mjs +9 -0
  60. package/esm2020/lib/desy-forms/models/radio-service-item.component.mjs +9 -0
  61. package/esm2020/lib/desy-forms/services/checkbox.service.mjs +61 -0
  62. package/esm2020/lib/desy-forms/services/radio.service.mjs +53 -0
  63. package/esm2020/lib/desy-modals/components/dialog/dialog.component.mjs +130 -0
  64. package/esm2020/lib/desy-modals/components/modal/modal-button-loader-primary/modal-button-loader-primary.component.mjs +25 -0
  65. package/esm2020/lib/desy-modals/components/modal/modal-button-loader-secondary/modal-button-loader-secondary.component.mjs +23 -0
  66. package/esm2020/lib/desy-modals/components/modal/modal-button-primary/modal-button-primary.component.mjs +23 -0
  67. package/esm2020/lib/desy-modals/components/modal/modal-button-secondary/modal-button-secondary.component.mjs +23 -0
  68. package/esm2020/lib/desy-modals/components/modal/modal.component.mjs +178 -0
  69. package/esm2020/lib/desy-modals/desy-modals.module.mjs +62 -0
  70. package/esm2020/lib/desy-modals/services/dialog.service.mjs +114 -0
  71. package/esm2020/lib/desy-nav/components/breadcrumbs/breadcrumbs-item/breadcrumbs-item.component.mjs +16 -0
  72. package/esm2020/lib/desy-nav/components/breadcrumbs/breadcrumbs.component.mjs +47 -0
  73. package/esm2020/lib/desy-nav/components/error-summary/error-summary-item/error-summary-item.component.mjs +19 -0
  74. package/esm2020/lib/desy-nav/components/error-summary/error-summary.component.mjs +62 -0
  75. package/esm2020/lib/desy-nav/components/footer/footer-meta/footer-meta-item/footer-meta-item.component.mjs +21 -0
  76. package/esm2020/lib/desy-nav/components/footer/footer-meta/footer-meta.component.mjs +30 -0
  77. package/esm2020/lib/desy-nav/components/footer/footer-navigation/footer-navigation-item/footer-navigation-item.component.mjs +21 -0
  78. package/esm2020/lib/desy-nav/components/footer/footer-navigation/footer-navigation.component.mjs +19 -0
  79. package/esm2020/lib/desy-nav/components/footer/footer.component.mjs +71 -0
  80. package/esm2020/lib/desy-nav/components/header/header-custom-navigation/header-custom-navigation.component.mjs +15 -0
  81. package/esm2020/lib/desy-nav/components/header/header-dropdown/header-dropdown.component.mjs +45 -0
  82. package/esm2020/lib/desy-nav/components/header/header-navigation/header-navigation-item/header-navigation-item.component.mjs +27 -0
  83. package/esm2020/lib/desy-nav/components/header/header-navigation/header-navigation.component.mjs +36 -0
  84. package/esm2020/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-button/header-offcanvas-button.component.mjs +20 -0
  85. package/esm2020/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-close-button/header-offcanvas-close-button.component.mjs +15 -0
  86. package/esm2020/lib/desy-nav/components/header/header-offcanvas/header-offcanvas.component.mjs +95 -0
  87. package/esm2020/lib/desy-nav/components/header/header-subnav/header-subnav.component.mjs +41 -0
  88. package/esm2020/lib/desy-nav/components/header/header.component.mjs +103 -0
  89. package/esm2020/lib/desy-nav/components/menu-horizontal/menu-horizontal-item/menu-horizontal-item.component.mjs +40 -0
  90. package/esm2020/lib/desy-nav/components/menu-horizontal/menu-horizontal.component.mjs +79 -0
  91. package/esm2020/lib/desy-nav/components/menu-navigation/components/menu-navigation-item/menu-navigation-item.component.mjs +49 -0
  92. package/esm2020/lib/desy-nav/components/menu-navigation/components/menu-navigation-subitem/menu-navigation-subitem.component.mjs +43 -0
  93. package/esm2020/lib/desy-nav/components/menu-navigation/menu-navigation.component.mjs +616 -0
  94. package/esm2020/lib/desy-nav/components/menu-vertical/menu-vertical-item/menu-vertical-item.component.mjs +45 -0
  95. package/esm2020/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub/menu-vertical-item-sub.component.mjs +18 -0
  96. package/esm2020/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub-item/menu-vertical-item-sub-item.component.mjs +34 -0
  97. package/esm2020/lib/desy-nav/components/menu-vertical/menu-vertical.component.mjs +113 -0
  98. package/esm2020/lib/desy-nav/components/menubar/components/menubar-item/menubar-item.component.mjs +51 -0
  99. package/esm2020/lib/desy-nav/components/menubar/components/menubar-label/menubar-label.component.mjs +14 -0
  100. package/esm2020/lib/desy-nav/components/menubar/components/menubar-subitem/menubar-subitem.component.mjs +36 -0
  101. package/esm2020/lib/desy-nav/components/menubar/components/menubar-subsubitem/menubar-subsubitem.component.mjs +27 -0
  102. package/esm2020/lib/desy-nav/components/menubar/directives/menubaritem.directive.mjs +45 -0
  103. package/esm2020/lib/desy-nav/components/menubar/menubar.component.mjs +727 -0
  104. package/esm2020/lib/desy-nav/components/nav/nav-item/nav-item.component.mjs +41 -0
  105. package/esm2020/lib/desy-nav/components/nav/nav.component.mjs +116 -0
  106. package/esm2020/lib/desy-nav/components/notification/notification-item/notification-item.component.mjs +25 -0
  107. package/esm2020/lib/desy-nav/components/notification/notification.component.mjs +141 -0
  108. package/esm2020/lib/desy-nav/components/skip-link/skip-link.component.mjs +37 -0
  109. package/esm2020/lib/desy-nav/desy-nav.module.mjs +221 -0
  110. package/{esm2015/lib/desy-nav/interfaces/menu-horizontal-item-data.js → esm2020/lib/desy-nav/interfaces/menu-horizontal-item-data.mjs} +1 -1
  111. package/{esm2015/lib/desy-nav/interfaces/menu-horizontal-item-event-data.js → esm2020/lib/desy-nav/interfaces/menu-horizontal-item-event-data.mjs} +1 -1
  112. package/esm2020/lib/desy-nav/interfaces/menu-navigation-item-sub-item.mjs +2 -0
  113. package/esm2020/lib/desy-pagination/components/pagination/pagination.component.mjs +167 -0
  114. package/esm2020/lib/desy-pagination/components/pagination-item-perpage/pagination-item-perpage.component.mjs +19 -0
  115. package/esm2020/lib/desy-pagination/components/pagination-listbox-label/pagination-listbox-label.component.mjs +17 -0
  116. package/esm2020/lib/desy-pagination/desy-pagination.module.mjs +46 -0
  117. package/esm2020/lib/desy-tables/components/table/components/table-caption.component.mjs +17 -0
  118. package/esm2020/lib/desy-tables/components/table/components/table-cell.component.mjs +23 -0
  119. package/esm2020/lib/desy-tables/components/table/components/table-header.component.mjs +18 -0
  120. package/esm2020/lib/desy-tables/components/table/components/table-row.component.mjs +18 -0
  121. package/esm2020/lib/desy-tables/components/table/table.component.mjs +78 -0
  122. package/esm2020/lib/desy-tables/components/table-advanced/components/table-advanced-header-cell.component.mjs +47 -0
  123. package/esm2020/lib/desy-tables/components/table-advanced/components/table-advanced-header.component.mjs +18 -0
  124. package/esm2020/lib/desy-tables/components/table-advanced/components/table-advanced-row-cell.component.mjs +23 -0
  125. package/esm2020/lib/desy-tables/components/table-advanced/components/table-advanced-row.component.mjs +27 -0
  126. package/esm2020/lib/desy-tables/components/table-advanced/components/table-advanced-select.component.mjs +28 -0
  127. package/esm2020/lib/desy-tables/components/table-advanced/table-advanced.component.mjs +342 -0
  128. package/esm2020/lib/desy-tables/desy-tables.module.mjs +102 -0
  129. package/esm2020/lib/desy-tables/directives/cell.directive.mjs +28 -0
  130. package/esm2020/lib/desy-tables/directives/focus-clicked-cell.directive.mjs +81 -0
  131. package/esm2020/lib/desy-tables/directives/row.directive.mjs +29 -0
  132. package/esm2020/lib/desy-tables/interfaces/head-cell-data.mjs +7 -0
  133. package/esm2020/lib/desy-views/components/accordion/accordion-header/accordion-header.component.mjs +17 -0
  134. package/esm2020/lib/desy-views/components/accordion/accordion-item/accordion-item.component.mjs +57 -0
  135. package/esm2020/lib/desy-views/components/accordion/accordion.component.mjs +198 -0
  136. package/esm2020/lib/desy-views/components/accordion-history/accordion-history-item/accordion-history-item.component.mjs +39 -0
  137. package/esm2020/lib/desy-views/components/accordion-history/accordion-history.component.mjs +19 -0
  138. package/esm2020/lib/desy-views/components/accordion-history/accordion-item-hide-button/accordion-item-hide-button.component.mjs +17 -0
  139. package/esm2020/lib/desy-views/components/accordion-history/accordion-item-show-button/accordion-item-show-button.component.mjs +17 -0
  140. package/esm2020/lib/desy-views/components/alert/alert.component.mjs +81 -0
  141. package/esm2020/lib/desy-views/components/collapsible/collapsible.component.mjs +81 -0
  142. package/esm2020/lib/desy-views/components/description-list/definition/definition.component.mjs +19 -0
  143. package/esm2020/lib/desy-views/components/description-list/description-item/description-item.component.mjs +34 -0
  144. package/esm2020/lib/desy-views/components/description-list/description-list.component.mjs +28 -0
  145. package/esm2020/lib/desy-views/components/description-list/term/term.component.mjs +19 -0
  146. package/esm2020/lib/desy-views/components/details/details.component.mjs +31 -0
  147. package/esm2020/lib/desy-views/components/item/item-content-bottom/item-content-bottom.component.mjs +17 -0
  148. package/esm2020/lib/desy-views/components/item/item-content-right/item-content-right.component.mjs +15 -0
  149. package/esm2020/lib/desy-views/components/item/item-item/item-item.component.mjs +15 -0
  150. package/esm2020/lib/desy-views/components/item/item.component.mjs +121 -0
  151. package/esm2020/lib/desy-views/components/media-object/media-object-figure/media-object-figure.component.mjs +12 -0
  152. package/esm2020/lib/desy-views/components/media-object/media-object.component.mjs +115 -0
  153. package/esm2020/lib/desy-views/components/spinner/spinner.component.mjs +77 -0
  154. package/esm2020/lib/desy-views/components/status/status.component.mjs +97 -0
  155. package/esm2020/lib/desy-views/components/status-item/status-item.component.mjs +143 -0
  156. package/esm2020/lib/desy-views/components/tabs/panel/panel.component.mjs +19 -0
  157. package/esm2020/lib/desy-views/components/tabs/tab-item/tab-item.component.mjs +37 -0
  158. package/esm2020/lib/desy-views/components/tabs/tabs.component.mjs +199 -0
  159. package/esm2020/lib/desy-views/components/tooltip/tooltip-content/tooltip-content.component.mjs +12 -0
  160. package/esm2020/lib/desy-views/components/tooltip/tooltip.component.mjs +202 -0
  161. package/esm2020/lib/desy-views/desy-views.module.mjs +175 -0
  162. package/{esm2015/lib/desy-views/interfaces/accordion-item.data.js → esm2020/lib/desy-views/interfaces/accordion-item.data.mjs} +1 -1
  163. package/esm2020/lib/desy-views/interfaces/tabs-items-data.mjs +2 -0
  164. package/esm2020/lib/desy-views/services/alert.service.mjs +88 -0
  165. package/esm2020/lib/shared/components/accessibility/accessibility.component.mjs +45 -0
  166. package/esm2020/lib/shared/components/accessibility-and-content-required/accessibility-and-content-required.component.mjs +44 -0
  167. package/esm2020/lib/shared/components/accessibility-and-text-or-html-required/accessibility-and-text-or-html-required.component.mjs +41 -0
  168. package/esm2020/lib/shared/components/content-base/content-base.component.mjs +24 -0
  169. package/esm2020/lib/shared/components/text-or-html-required/text-or-html-required.component.mjs +18 -0
  170. package/esm2020/lib/shared/directives/attribute-change.directive.mjs +45 -0
  171. package/esm2020/lib/shared/directives/click-outside.directive.mjs +40 -0
  172. package/esm2020/lib/shared/directives/content-change.directive.mjs +45 -0
  173. package/esm2020/lib/shared/directives/custom-inner-content.directive.mjs +60 -0
  174. package/esm2020/lib/shared/directives/inner-content.directive.mjs +37 -0
  175. package/esm2020/lib/shared/pipes/external-href.pipe.mjs +32 -0
  176. package/esm2020/lib/shared/pipes/inner-html.pipe.mjs +20 -0
  177. package/esm2020/lib/shared/pipes/make-html-list.pipe.mjs +20 -0
  178. package/esm2020/lib/shared/shared.module.mjs +99 -0
  179. package/esm2020/public-api.mjs +221 -0
  180. package/fesm2015/desy-angular.mjs +11752 -0
  181. package/fesm2015/desy-angular.mjs.map +1 -0
  182. package/fesm2020/desy-angular.mjs +11731 -0
  183. package/fesm2020/desy-angular.mjs.map +1 -0
  184. package/index.d.ts +5 -0
  185. package/lib/desy-angular.module.d.ts +12 -0
  186. package/lib/desy-buttons/components/button/button.component.d.ts +7 -2
  187. package/lib/desy-buttons/components/button-loader/button-loader.component.d.ts +7 -1
  188. package/lib/desy-buttons/components/dropdown/dropdown.component.d.ts +3 -0
  189. package/lib/desy-buttons/components/listbox/listbox-item/listbox-item.component.d.ts +3 -0
  190. package/lib/desy-buttons/components/listbox/listbox-label/listbox-label.component.d.ts +3 -0
  191. package/lib/desy-buttons/components/listbox/listbox.component.d.ts +5 -2
  192. package/lib/desy-buttons/components/pill/pill.component.d.ts +7 -2
  193. package/lib/desy-buttons/components/toggle/toggle-off-state/toggle-off-state.component.d.ts +3 -0
  194. package/lib/desy-buttons/components/toggle/toggle-on-state/toggle-on-state.component.d.ts +3 -0
  195. package/lib/desy-buttons/components/toggle/toggle.component.d.ts +3 -0
  196. package/lib/desy-buttons/desy-buttons.module.d.ts +18 -0
  197. package/lib/desy-commons/components/content/content.component.d.ts +3 -0
  198. package/lib/desy-commons/components/description/description.component.d.ts +3 -0
  199. package/lib/desy-commons/components/divider/divider.component.d.ts +3 -0
  200. package/lib/desy-commons/components/icon/icon.component.d.ts +3 -0
  201. package/lib/desy-commons/components/title/title.component.d.ts +3 -0
  202. package/lib/desy-commons/desy-commons.module.d.ts +12 -0
  203. package/lib/desy-forms/components/character-count/character-count.component.d.ts +3 -0
  204. package/lib/desy-forms/components/checkboxes/checkbox-item/checkbox-item.component.d.ts +6 -3
  205. package/lib/desy-forms/components/checkboxes/checkboxes.component.d.ts +11 -10
  206. package/lib/desy-forms/components/date-input/date-input-day/date-input-day.component.d.ts +3 -0
  207. package/lib/desy-forms/components/date-input/date-input-divider/date-input-divider.component.d.ts +3 -0
  208. package/lib/desy-forms/components/date-input/date-input-item/date-input-item.component.d.ts +3 -0
  209. package/lib/desy-forms/components/date-input/date-input-month/date-input-month.component.d.ts +3 -0
  210. package/lib/desy-forms/components/date-input/date-input-year/date-input-year.component.d.ts +3 -0
  211. package/lib/desy-forms/components/date-input/date-input.component.d.ts +8 -3
  212. package/lib/desy-forms/components/error-message/error-message.component.d.ts +3 -0
  213. package/lib/desy-forms/components/fieldset/fieldset.component.d.ts +3 -0
  214. package/lib/desy-forms/components/fieldset/legend/legend.component.d.ts +7 -1
  215. package/lib/desy-forms/components/file-upload/file-upload.component.d.ts +4 -1
  216. package/lib/desy-forms/components/form-field/form-field.component.d.ts +3 -0
  217. package/lib/desy-forms/components/hint/hint.component.d.ts +3 -0
  218. package/lib/desy-forms/components/input/input.component.d.ts +4 -0
  219. package/lib/desy-forms/components/input-group/input-group-divider/input-group-divider.component.d.ts +3 -0
  220. package/lib/desy-forms/components/input-group/input-group-input/input-group-input.component.d.ts +3 -0
  221. package/lib/desy-forms/components/input-group/input-group-item/input-group-item.component.d.ts +3 -0
  222. package/lib/desy-forms/components/input-group/input-group-select/input-group-select.component.d.ts +3 -0
  223. package/lib/desy-forms/components/input-group/input-group.component.d.ts +5 -1
  224. package/lib/desy-forms/components/label/label.component.d.ts +7 -2
  225. package/lib/desy-forms/components/radios/radio-item/radio-item.component.d.ts +6 -3
  226. package/lib/desy-forms/components/radios/radios.component.d.ts +11 -10
  227. package/lib/desy-forms/components/search-bar/search-bar.component.d.ts +4 -0
  228. package/lib/desy-forms/components/select/option/option.component.d.ts +3 -0
  229. package/lib/desy-forms/components/select/option-group/option-group.component.d.ts +3 -0
  230. package/lib/desy-forms/components/select/select-item/select-item.component.d.ts +3 -0
  231. package/lib/desy-forms/components/select/select.component.d.ts +4 -0
  232. package/lib/desy-forms/components/template-driven-wrapper/template-driven-wrapper.component.d.ts +3 -0
  233. package/lib/desy-forms/components/textarea/textarea.component.d.ts +4 -1
  234. package/lib/desy-forms/components/tree/tree-checkbox/tree-checkbox.component.d.ts +4 -1
  235. package/lib/desy-forms/components/tree/tree-item/tree-item.component.d.ts +9 -6
  236. package/lib/desy-forms/components/tree/tree-items-generator/tree-items-generator.component.d.ts +3 -0
  237. package/lib/desy-forms/components/tree/tree-sub/tree-sub.component.d.ts +3 -0
  238. package/lib/desy-forms/components/tree/tree.component.d.ts +3 -0
  239. package/lib/desy-forms/desy-forms.module.d.ts +45 -0
  240. package/lib/desy-forms/directives/condition.directive.d.ts +3 -0
  241. package/lib/desy-forms/interfaces/select-item-data.d.ts +3 -0
  242. package/lib/desy-forms/models/checkbox-service-item.component.d.ts +13 -0
  243. package/lib/desy-forms/models/radio-service-item.component.d.ts +12 -0
  244. package/lib/desy-forms/services/checkbox.service.d.ts +14 -0
  245. package/lib/desy-forms/services/radio.service.d.ts +13 -0
  246. package/lib/desy-modals/components/dialog/dialog.component.d.ts +5 -2
  247. package/lib/desy-modals/components/modal/modal-button-loader-primary/modal-button-loader-primary.component.d.ts +3 -0
  248. package/lib/desy-modals/components/modal/modal-button-loader-secondary/modal-button-loader-secondary.component.d.ts +3 -0
  249. package/lib/desy-modals/components/modal/modal-button-primary/modal-button-primary.component.d.ts +3 -0
  250. package/lib/desy-modals/components/modal/modal-button-secondary/modal-button-secondary.component.d.ts +3 -0
  251. package/lib/desy-modals/components/modal/modal.component.d.ts +3 -0
  252. package/lib/desy-modals/desy-modals.module.d.ts +14 -0
  253. package/lib/desy-modals/services/dialog.service.d.ts +3 -0
  254. package/lib/desy-nav/components/breadcrumbs/breadcrumbs-item/breadcrumbs-item.component.d.ts +3 -0
  255. package/lib/desy-nav/components/breadcrumbs/breadcrumbs.component.d.ts +3 -0
  256. package/lib/desy-nav/components/error-summary/error-summary-item/error-summary-item.component.d.ts +3 -0
  257. package/lib/desy-nav/components/error-summary/error-summary.component.d.ts +3 -0
  258. package/lib/desy-nav/components/footer/footer-meta/footer-meta-item/footer-meta-item.component.d.ts +3 -0
  259. package/lib/desy-nav/components/footer/footer-meta/footer-meta.component.d.ts +3 -0
  260. package/lib/desy-nav/components/footer/footer-navigation/footer-navigation-item/footer-navigation-item.component.d.ts +3 -0
  261. package/lib/desy-nav/components/footer/footer-navigation/footer-navigation.component.d.ts +3 -0
  262. package/lib/desy-nav/components/footer/footer.component.d.ts +3 -0
  263. package/lib/desy-nav/components/header/header-custom-navigation/header-custom-navigation.component.d.ts +3 -0
  264. package/lib/desy-nav/components/header/header-dropdown/header-dropdown.component.d.ts +3 -0
  265. package/lib/desy-nav/components/header/header-navigation/header-navigation-item/header-navigation-item.component.d.ts +3 -0
  266. package/lib/desy-nav/components/header/header-navigation/header-navigation.component.d.ts +3 -0
  267. package/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-button/header-offcanvas-button.component.d.ts +3 -0
  268. package/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-close-button/header-offcanvas-close-button.component.d.ts +3 -0
  269. package/lib/desy-nav/components/header/header-offcanvas/header-offcanvas.component.d.ts +3 -0
  270. package/lib/desy-nav/components/header/header-subnav/header-subnav.component.d.ts +3 -0
  271. package/lib/desy-nav/components/header/header.component.d.ts +3 -0
  272. package/lib/desy-nav/components/menu-horizontal/menu-horizontal-item/menu-horizontal-item.component.d.ts +3 -0
  273. package/lib/desy-nav/components/menu-horizontal/menu-horizontal.component.d.ts +3 -0
  274. package/lib/desy-nav/components/menu-navigation/components/menu-navigation-item/menu-navigation-item.component.d.ts +3 -0
  275. package/lib/desy-nav/components/menu-navigation/components/menu-navigation-subitem/menu-navigation-subitem.component.d.ts +3 -0
  276. package/lib/desy-nav/components/menu-navigation/menu-navigation.component.d.ts +3 -0
  277. package/lib/desy-nav/components/menu-vertical/menu-vertical-item/menu-vertical-item.component.d.ts +3 -0
  278. package/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub/menu-vertical-item-sub.component.d.ts +3 -0
  279. package/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub-item/menu-vertical-item-sub-item.component.d.ts +3 -0
  280. package/lib/desy-nav/components/menu-vertical/menu-vertical.component.d.ts +3 -0
  281. package/lib/desy-nav/components/menubar/components/menubar-item/menubar-item.component.d.ts +3 -0
  282. package/lib/desy-nav/components/menubar/components/menubar-label/menubar-label.component.d.ts +3 -0
  283. package/lib/desy-nav/components/menubar/components/menubar-subitem/menubar-subitem.component.d.ts +3 -0
  284. package/lib/desy-nav/components/menubar/components/menubar-subsubitem/menubar-subsubitem.component.d.ts +3 -0
  285. package/lib/desy-nav/components/menubar/directives/menubaritem.directive.d.ts +3 -0
  286. package/lib/desy-nav/components/menubar/menubar.component.d.ts +3 -0
  287. package/lib/desy-nav/components/nav/nav-item/nav-item.component.d.ts +3 -0
  288. package/lib/desy-nav/components/nav/nav.component.d.ts +6 -3
  289. package/lib/desy-nav/components/notification/notification-item/notification-item.component.d.ts +3 -0
  290. package/lib/desy-nav/components/notification/notification.component.d.ts +3 -0
  291. package/lib/desy-nav/components/skip-link/skip-link.component.d.ts +3 -0
  292. package/lib/desy-nav/desy-nav.module.d.ts +46 -0
  293. package/lib/desy-nav/interfaces/menu-horizontal-item-data.d.ts +1 -0
  294. package/lib/desy-nav/interfaces/menu-horizontal-item-event-data.d.ts +1 -0
  295. package/lib/desy-nav/interfaces/menu-navigation-item-sub-item.d.ts +8 -0
  296. package/lib/desy-pagination/components/pagination/pagination.component.d.ts +3 -0
  297. package/lib/desy-pagination/components/pagination-item-perpage/pagination-item-perpage.component.d.ts +3 -0
  298. package/lib/desy-pagination/components/pagination-listbox-label/pagination-listbox-label.component.d.ts +3 -0
  299. package/lib/desy-pagination/desy-pagination.module.d.ts +11 -0
  300. package/lib/desy-tables/components/table/components/table-caption.component.d.ts +3 -0
  301. package/lib/desy-tables/components/table/components/table-cell.component.d.ts +3 -0
  302. package/lib/desy-tables/components/table/components/table-header.component.d.ts +3 -0
  303. package/lib/desy-tables/components/table/components/table-row.component.d.ts +3 -0
  304. package/lib/desy-tables/components/table/table.component.d.ts +4 -1
  305. package/lib/desy-tables/components/table-advanced/components/table-advanced-header-cell.component.d.ts +3 -0
  306. package/lib/desy-tables/components/table-advanced/components/table-advanced-header.component.d.ts +3 -0
  307. package/lib/desy-tables/components/table-advanced/components/table-advanced-row-cell.component.d.ts +3 -0
  308. package/lib/desy-tables/components/table-advanced/components/table-advanced-row.component.d.ts +3 -0
  309. package/lib/desy-tables/components/table-advanced/components/table-advanced-select.component.d.ts +3 -0
  310. package/lib/desy-tables/components/table-advanced/table-advanced.component.d.ts +6 -3
  311. package/lib/desy-tables/desy-tables.module.d.ts +23 -0
  312. package/lib/desy-tables/directives/cell.directive.d.ts +3 -0
  313. package/lib/desy-tables/directives/focus-clicked-cell.directive.d.ts +3 -0
  314. package/lib/desy-tables/directives/row.directive.d.ts +3 -0
  315. package/lib/desy-tables/interfaces/head-cell-data.d.ts +2 -0
  316. package/lib/desy-views/components/accordion/accordion-header/accordion-header.component.d.ts +3 -0
  317. package/lib/desy-views/components/accordion/accordion-item/accordion-item.component.d.ts +3 -0
  318. package/lib/desy-views/components/accordion/accordion.component.d.ts +3 -0
  319. package/lib/desy-views/components/accordion-history/accordion-history-item/accordion-history-item.component.d.ts +3 -0
  320. package/lib/desy-views/components/accordion-history/accordion-history.component.d.ts +3 -0
  321. package/lib/desy-views/components/accordion-history/accordion-item-hide-button/accordion-item-hide-button.component.d.ts +3 -0
  322. package/lib/desy-views/components/accordion-history/accordion-item-show-button/accordion-item-show-button.component.d.ts +3 -0
  323. package/lib/desy-views/components/alert/alert.component.d.ts +4 -1
  324. package/lib/desy-views/components/collapsible/collapsible.component.d.ts +5 -1
  325. package/lib/desy-views/components/description-list/definition/definition.component.d.ts +3 -0
  326. package/lib/desy-views/components/description-list/description-item/description-item.component.d.ts +3 -0
  327. package/lib/desy-views/components/description-list/description-list.component.d.ts +3 -0
  328. package/lib/desy-views/components/description-list/term/term.component.d.ts +3 -0
  329. package/lib/desy-views/components/details/details.component.d.ts +7 -1
  330. package/lib/desy-views/components/item/item-content-bottom/item-content-bottom.component.d.ts +3 -0
  331. package/lib/desy-views/components/item/item-content-right/item-content-right.component.d.ts +3 -0
  332. package/lib/desy-views/components/item/item-item/item-item.component.d.ts +3 -0
  333. package/lib/desy-views/components/item/item.component.d.ts +4 -1
  334. package/lib/desy-views/components/media-object/media-object-figure/media-object-figure.component.d.ts +3 -0
  335. package/lib/desy-views/components/media-object/media-object.component.d.ts +3 -0
  336. package/lib/desy-views/components/spinner/spinner.component.d.ts +3 -0
  337. package/lib/desy-views/components/status/status.component.d.ts +7 -2
  338. package/lib/desy-views/components/status-item/status-item.component.d.ts +3 -0
  339. package/lib/desy-views/components/tabs/panel/panel.component.d.ts +3 -0
  340. package/lib/desy-views/components/tabs/tab-item/tab-item.component.d.ts +3 -0
  341. package/lib/desy-views/components/tabs/tabs.component.d.ts +9 -3
  342. package/lib/desy-views/components/tooltip/tooltip-content/tooltip-content.component.d.ts +3 -0
  343. package/lib/desy-views/components/tooltip/tooltip.component.d.ts +3 -0
  344. package/lib/desy-views/desy-views.module.d.ts +37 -0
  345. package/lib/desy-views/interfaces/accordion-item.data.d.ts +1 -0
  346. package/lib/desy-views/interfaces/tabs-items-data.d.ts +2 -0
  347. package/lib/desy-views/services/alert.service.d.ts +3 -0
  348. package/lib/shared/components/accessibility/accessibility.component.d.ts +3 -0
  349. package/lib/shared/components/accessibility-and-content-required/accessibility-and-content-required.component.d.ts +4 -1
  350. package/lib/shared/components/accessibility-and-text-or-html-required/accessibility-and-text-or-html-required.component.d.ts +3 -0
  351. package/lib/shared/components/content-base/content-base.component.d.ts +3 -0
  352. package/lib/shared/components/text-or-html-required/text-or-html-required.component.d.ts +3 -0
  353. package/lib/shared/directives/attribute-change.directive.d.ts +3 -0
  354. package/lib/shared/directives/click-outside.directive.d.ts +3 -0
  355. package/lib/shared/directives/content-change.directive.d.ts +3 -0
  356. package/lib/shared/directives/custom-inner-content.directive.d.ts +3 -0
  357. package/lib/shared/directives/inner-content.directive.d.ts +3 -0
  358. package/lib/shared/pipes/external-href.pipe.d.ts +3 -0
  359. package/lib/shared/pipes/inner-html.pipe.d.ts +3 -0
  360. package/lib/shared/pipes/make-html-list.pipe.d.ts +3 -0
  361. package/lib/shared/shared.module.d.ts +19 -0
  362. package/package.json +33 -20
  363. package/public-api.d.ts +24 -0
  364. package/bundles/desy-angular.umd.js +0 -10918
  365. package/bundles/desy-angular.umd.js.map +0 -1
  366. package/bundles/desy-angular.umd.min.js +0 -2
  367. package/bundles/desy-angular.umd.min.js.map +0 -1
  368. package/desy-angular.d.ts +0 -51
  369. package/desy-angular.metadata.json +0 -1
  370. package/esm2015/desy-angular.js +0 -52
  371. package/esm2015/lib/desy-angular.module.js +0 -38
  372. package/esm2015/lib/desy-buttons/components/button/button.component.js +0 -92
  373. package/esm2015/lib/desy-buttons/components/button-loader/button-loader.component.js +0 -50
  374. package/esm2015/lib/desy-buttons/components/dropdown/dropdown.component.js +0 -111
  375. package/esm2015/lib/desy-buttons/components/listbox/listbox-item/listbox-item.component.js +0 -26
  376. package/esm2015/lib/desy-buttons/components/listbox/listbox-label/listbox-label.component.js +0 -14
  377. package/esm2015/lib/desy-buttons/components/listbox/listbox.component.js +0 -265
  378. package/esm2015/lib/desy-buttons/components/pill/pill.component.js +0 -64
  379. package/esm2015/lib/desy-buttons/components/toggle/toggle-off-state/toggle-off-state.component.js +0 -15
  380. package/esm2015/lib/desy-buttons/components/toggle/toggle-on-state/toggle-on-state.component.js +0 -15
  381. package/esm2015/lib/desy-buttons/components/toggle/toggle.component.js +0 -44
  382. package/esm2015/lib/desy-commons/components/content/content.component.js +0 -14
  383. package/esm2015/lib/desy-commons/components/description/description.component.js +0 -15
  384. package/esm2015/lib/desy-commons/components/divider/divider.component.js +0 -15
  385. package/esm2015/lib/desy-commons/components/icon/icon.component.js +0 -15
  386. package/esm2015/lib/desy-commons/components/title/title.component.js +0 -14
  387. package/esm2015/lib/desy-commons/desy-commons.module.js +0 -36
  388. package/esm2015/lib/desy-forms/components/character-count/character-count.component.js +0 -109
  389. package/esm2015/lib/desy-forms/components/checkboxes/checkbox-item/checkbox-item.component.js +0 -188
  390. package/esm2015/lib/desy-forms/components/checkboxes/checkboxes.component.js +0 -226
  391. package/esm2015/lib/desy-forms/components/date-input/date-input-day/date-input-day.component.js +0 -38
  392. package/esm2015/lib/desy-forms/components/date-input/date-input-divider/date-input-divider.component.js +0 -19
  393. package/esm2015/lib/desy-forms/components/date-input/date-input-item/date-input-item.component.js +0 -13
  394. package/esm2015/lib/desy-forms/components/date-input/date-input-month/date-input-month.component.js +0 -38
  395. package/esm2015/lib/desy-forms/components/date-input/date-input-year/date-input-year.component.js +0 -36
  396. package/esm2015/lib/desy-forms/components/date-input/date-input.component.js +0 -222
  397. package/esm2015/lib/desy-forms/components/error-message/error-message.component.js +0 -28
  398. package/esm2015/lib/desy-forms/components/fieldset/fieldset.component.js +0 -44
  399. package/esm2015/lib/desy-forms/components/fieldset/legend/legend.component.js +0 -16
  400. package/esm2015/lib/desy-forms/components/file-upload/file-upload.component.js +0 -51
  401. package/esm2015/lib/desy-forms/components/form-field/form-field.component.js +0 -103
  402. package/esm2015/lib/desy-forms/components/hint/hint.component.js +0 -27
  403. package/esm2015/lib/desy-forms/components/input/input.component.js +0 -67
  404. package/esm2015/lib/desy-forms/components/input-group/input-group-divider/input-group-divider.component.js +0 -20
  405. package/esm2015/lib/desy-forms/components/input-group/input-group-input/input-group-input.component.js +0 -39
  406. package/esm2015/lib/desy-forms/components/input-group/input-group-item/input-group-item.component.js +0 -13
  407. package/esm2015/lib/desy-forms/components/input-group/input-group-select/input-group-select.component.js +0 -35
  408. package/esm2015/lib/desy-forms/components/input-group/input-group.component.js +0 -179
  409. package/esm2015/lib/desy-forms/components/label/label.component.js +0 -30
  410. package/esm2015/lib/desy-forms/components/radios/radio-item/radio-item.component.js +0 -144
  411. package/esm2015/lib/desy-forms/components/radios/radios.component.js +0 -233
  412. package/esm2015/lib/desy-forms/components/search-bar/search-bar.component.js +0 -45
  413. package/esm2015/lib/desy-forms/components/select/option/option.component.js +0 -17
  414. package/esm2015/lib/desy-forms/components/select/option-group/option-group.component.js +0 -17
  415. package/esm2015/lib/desy-forms/components/select/select-item/select-item.component.js +0 -14
  416. package/esm2015/lib/desy-forms/components/select/select.component.js +0 -64
  417. package/esm2015/lib/desy-forms/components/template-driven-wrapper/template-driven-wrapper.component.js +0 -12
  418. package/esm2015/lib/desy-forms/components/textarea/textarea.component.js +0 -60
  419. package/esm2015/lib/desy-forms/components/tree/tree-checkbox/tree-checkbox.component.js +0 -151
  420. package/esm2015/lib/desy-forms/components/tree/tree-item/tree-item.component.js +0 -370
  421. package/esm2015/lib/desy-forms/components/tree/tree-items-generator/tree-items-generator.component.js +0 -25
  422. package/esm2015/lib/desy-forms/components/tree/tree-sub/tree-sub.component.js +0 -14
  423. package/esm2015/lib/desy-forms/components/tree/tree.component.js +0 -408
  424. package/esm2015/lib/desy-forms/desy-forms.module.js +0 -130
  425. package/esm2015/lib/desy-forms/directives/condition.directive.js +0 -32
  426. package/esm2015/lib/desy-modals/components/dialog/dialog.component.js +0 -121
  427. package/esm2015/lib/desy-modals/components/modal/modal-button-loader-primary/modal-button-loader-primary.component.js +0 -20
  428. package/esm2015/lib/desy-modals/components/modal/modal-button-loader-secondary/modal-button-loader-secondary.component.js +0 -19
  429. package/esm2015/lib/desy-modals/components/modal/modal-button-primary/modal-button-primary.component.js +0 -19
  430. package/esm2015/lib/desy-modals/components/modal/modal-button-secondary/modal-button-secondary.component.js +0 -19
  431. package/esm2015/lib/desy-modals/components/modal/modal.component.js +0 -145
  432. package/esm2015/lib/desy-modals/desy-modals.module.js +0 -41
  433. package/esm2015/lib/desy-modals/services/dialog.service.js +0 -117
  434. package/esm2015/lib/desy-nav/components/breadcrumbs/breadcrumbs-item/breadcrumbs-item.component.js +0 -15
  435. package/esm2015/lib/desy-nav/components/breadcrumbs/breadcrumbs.component.js +0 -42
  436. package/esm2015/lib/desy-nav/components/error-summary/error-summary-item/error-summary-item.component.js +0 -15
  437. package/esm2015/lib/desy-nav/components/error-summary/error-summary.component.js +0 -46
  438. package/esm2015/lib/desy-nav/components/footer/footer-meta/footer-meta-item/footer-meta-item.component.js +0 -16
  439. package/esm2015/lib/desy-nav/components/footer/footer-meta/footer-meta.component.js +0 -23
  440. package/esm2015/lib/desy-nav/components/footer/footer-navigation/footer-navigation-item/footer-navigation-item.component.js +0 -16
  441. package/esm2015/lib/desy-nav/components/footer/footer-navigation/footer-navigation.component.js +0 -16
  442. package/esm2015/lib/desy-nav/components/footer/footer.component.js +0 -52
  443. package/esm2015/lib/desy-nav/components/header/header-custom-navigation/header-custom-navigation.component.js +0 -11
  444. package/esm2015/lib/desy-nav/components/header/header-dropdown/header-dropdown.component.js +0 -36
  445. package/esm2015/lib/desy-nav/components/header/header-navigation/header-navigation-item/header-navigation-item.component.js +0 -19
  446. package/esm2015/lib/desy-nav/components/header/header-navigation/header-navigation.component.js +0 -29
  447. package/esm2015/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-button/header-offcanvas-button.component.js +0 -22
  448. package/esm2015/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-close-button/header-offcanvas-close-button.component.js +0 -11
  449. package/esm2015/lib/desy-nav/components/header/header-offcanvas/header-offcanvas.component.js +0 -88
  450. package/esm2015/lib/desy-nav/components/header/header-subnav/header-subnav.component.js +0 -34
  451. package/esm2015/lib/desy-nav/components/header/header.component.js +0 -66
  452. package/esm2015/lib/desy-nav/components/menu-horizontal/menu-horizontal-item/menu-horizontal-item.component.js +0 -28
  453. package/esm2015/lib/desy-nav/components/menu-horizontal/menu-horizontal.component.js +0 -68
  454. package/esm2015/lib/desy-nav/components/menu-navigation/components/menu-navigation-item/menu-navigation-item.component.js +0 -35
  455. package/esm2015/lib/desy-nav/components/menu-navigation/components/menu-navigation-subitem/menu-navigation-subitem.component.js +0 -31
  456. package/esm2015/lib/desy-nav/components/menu-navigation/menu-navigation.component.js +0 -568
  457. package/esm2015/lib/desy-nav/components/menu-vertical/menu-vertical-item/menu-vertical-item.component.js +0 -32
  458. package/esm2015/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub/menu-vertical-item-sub.component.js +0 -16
  459. package/esm2015/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub-item/menu-vertical-item-sub-item.component.js +0 -24
  460. package/esm2015/lib/desy-nav/components/menu-vertical/menu-vertical.component.js +0 -89
  461. package/esm2015/lib/desy-nav/components/menubar/components/menubar-item/menubar-item.component.js +0 -36
  462. package/esm2015/lib/desy-nav/components/menubar/components/menubar-label/menubar-label.component.js +0 -14
  463. package/esm2015/lib/desy-nav/components/menubar/components/menubar-subitem/menubar-subitem.component.js +0 -29
  464. package/esm2015/lib/desy-nav/components/menubar/components/menubar-subsubitem/menubar-subsubitem.component.js +0 -23
  465. package/esm2015/lib/desy-nav/components/menubar/directives/menubaritem.directive.js +0 -37
  466. package/esm2015/lib/desy-nav/components/menubar/menubar.component.js +0 -672
  467. package/esm2015/lib/desy-nav/components/nav/nav-item/nav-item.component.js +0 -30
  468. package/esm2015/lib/desy-nav/components/nav/nav.component.js +0 -105
  469. package/esm2015/lib/desy-nav/components/notification/notification-item/notification-item.component.js +0 -18
  470. package/esm2015/lib/desy-nav/components/notification/notification.component.js +0 -102
  471. package/esm2015/lib/desy-nav/components/skip-link/skip-link.component.js +0 -33
  472. package/esm2015/lib/desy-nav/desy-nav.module.js +0 -136
  473. package/esm2015/lib/desy-nav/interfaces/menu-navigation-item-sub-item.js +0 -2
  474. package/esm2015/lib/desy-pagination/components/pagination/pagination.component.js +0 -138
  475. package/esm2015/lib/desy-pagination/components/pagination-item-perpage/pagination-item-perpage.component.js +0 -15
  476. package/esm2015/lib/desy-pagination/components/pagination-listbox-label/pagination-listbox-label.component.js +0 -14
  477. package/esm2015/lib/desy-pagination/desy-pagination.module.js +0 -31
  478. package/esm2015/lib/desy-tables/components/table/components/table-caption.component.js +0 -14
  479. package/esm2015/lib/desy-tables/components/table/components/table-cell.component.js +0 -17
  480. package/esm2015/lib/desy-tables/components/table/components/table-header.component.js +0 -14
  481. package/esm2015/lib/desy-tables/components/table/components/table-row.component.js +0 -14
  482. package/esm2015/lib/desy-tables/components/table/table.component.js +0 -55
  483. package/esm2015/lib/desy-tables/components/table-advanced/components/table-advanced-header-cell.component.js +0 -33
  484. package/esm2015/lib/desy-tables/components/table-advanced/components/table-advanced-header.component.js +0 -14
  485. package/esm2015/lib/desy-tables/components/table-advanced/components/table-advanced-row-cell.component.js +0 -17
  486. package/esm2015/lib/desy-tables/components/table-advanced/components/table-advanced-row.component.js +0 -20
  487. package/esm2015/lib/desy-tables/components/table-advanced/components/table-advanced-select.component.js +0 -22
  488. package/esm2015/lib/desy-tables/components/table-advanced/table-advanced.component.js +0 -316
  489. package/esm2015/lib/desy-tables/desy-tables.module.js +0 -64
  490. package/esm2015/lib/desy-tables/directives/cell.directive.js +0 -26
  491. package/esm2015/lib/desy-tables/directives/focus-clicked-cell.directive.js +0 -78
  492. package/esm2015/lib/desy-tables/directives/row.directive.js +0 -24
  493. package/esm2015/lib/desy-tables/interfaces/head-cell-data.js +0 -7
  494. package/esm2015/lib/desy-views/components/accordion/accordion-header/accordion-header.component.js +0 -14
  495. package/esm2015/lib/desy-views/components/accordion/accordion-item/accordion-item.component.js +0 -43
  496. package/esm2015/lib/desy-views/components/accordion/accordion.component.js +0 -153
  497. package/esm2015/lib/desy-views/components/accordion-history/accordion-history-item/accordion-history-item.component.js +0 -31
  498. package/esm2015/lib/desy-views/components/accordion-history/accordion-history.component.js +0 -15
  499. package/esm2015/lib/desy-views/components/accordion-history/accordion-item-hide-button/accordion-item-hide-button.component.js +0 -14
  500. package/esm2015/lib/desy-views/components/accordion-history/accordion-item-show-button/accordion-item-show-button.component.js +0 -14
  501. package/esm2015/lib/desy-views/components/alert/alert.component.js +0 -75
  502. package/esm2015/lib/desy-views/components/collapsible/collapsible.component.js +0 -55
  503. package/esm2015/lib/desy-views/components/description-list/definition/definition.component.js +0 -15
  504. package/esm2015/lib/desy-views/components/description-list/description-item/description-item.component.js +0 -26
  505. package/esm2015/lib/desy-views/components/description-list/description-list.component.js +0 -22
  506. package/esm2015/lib/desy-views/components/description-list/term/term.component.js +0 -15
  507. package/esm2015/lib/desy-views/components/details/details.component.js +0 -20
  508. package/esm2015/lib/desy-views/components/item/item-content-bottom/item-content-bottom.component.js +0 -14
  509. package/esm2015/lib/desy-views/components/item/item-content-right/item-content-right.component.js +0 -11
  510. package/esm2015/lib/desy-views/components/item/item-item/item-item.component.js +0 -11
  511. package/esm2015/lib/desy-views/components/item/item.component.js +0 -87
  512. package/esm2015/lib/desy-views/components/media-object/media-object-figure/media-object-figure.component.js +0 -11
  513. package/esm2015/lib/desy-views/components/media-object/media-object.component.js +0 -67
  514. package/esm2015/lib/desy-views/components/spinner/spinner.component.js +0 -45
  515. package/esm2015/lib/desy-views/components/status/status.component.js +0 -58
  516. package/esm2015/lib/desy-views/components/status-item/status-item.component.js +0 -86
  517. package/esm2015/lib/desy-views/components/tabs/panel/panel.component.js +0 -15
  518. package/esm2015/lib/desy-views/components/tabs/tab-item/tab-item.component.js +0 -28
  519. package/esm2015/lib/desy-views/components/tabs/tabs.component.js +0 -150
  520. package/esm2015/lib/desy-views/components/tooltip/tooltip-content/tooltip-content.component.js +0 -11
  521. package/esm2015/lib/desy-views/components/tooltip/tooltip.component.js +0 -155
  522. package/esm2015/lib/desy-views/desy-views.module.js +0 -108
  523. package/esm2015/lib/desy-views/interfaces/tabs-items-data.js +0 -2
  524. package/esm2015/lib/desy-views/services/alert.service.js +0 -89
  525. package/esm2015/lib/shared/components/accessibility/accessibility.component.js +0 -29
  526. package/esm2015/lib/shared/components/accessibility-and-content-required/accessibility-and-content-required.component.js +0 -27
  527. package/esm2015/lib/shared/components/accessibility-and-text-or-html-required/accessibility-and-text-or-html-required.component.js +0 -26
  528. package/esm2015/lib/shared/components/content-base/content-base.component.js +0 -20
  529. package/esm2015/lib/shared/components/text-or-html-required/text-or-html-required.component.js +0 -14
  530. package/esm2015/lib/shared/directives/attribute-change.directive.js +0 -43
  531. package/esm2015/lib/shared/directives/click-outside.directive.js +0 -35
  532. package/esm2015/lib/shared/directives/content-change.directive.js +0 -43
  533. package/esm2015/lib/shared/directives/custom-inner-content.directive.js +0 -62
  534. package/esm2015/lib/shared/directives/inner-content.directive.js +0 -34
  535. package/esm2015/lib/shared/pipes/external-href.pipe.js +0 -28
  536. package/esm2015/lib/shared/pipes/inner-html.pipe.js +0 -19
  537. package/esm2015/lib/shared/pipes/make-html-list.pipe.js +0 -16
  538. package/esm2015/lib/shared/shared.module.js +0 -62
  539. package/esm2015/public-api.js +0 -197
  540. package/fesm2015/desy-angular.js +0 -9650
  541. package/fesm2015/desy-angular.js.map +0 -1
  542. /package/{esm2015/lib/desy-buttons/interfaces/listbox-item-data.js → esm2020/lib/desy-buttons/interfaces/listbox-item-data.mjs} +0 -0
  543. /package/{esm2015/lib/desy-buttons/interfaces/listbox-label-data.js → esm2020/lib/desy-buttons/interfaces/listbox-label-data.mjs} +0 -0
  544. /package/{esm2015/lib/desy-commons/interfaces/content-data.js → esm2020/lib/desy-commons/interfaces/content-data.mjs} +0 -0
  545. /package/{esm2015/lib/desy-commons/interfaces/description-data.js → esm2020/lib/desy-commons/interfaces/description-data.mjs} +0 -0
  546. /package/{esm2015/lib/desy-commons/interfaces/divider-data.js → esm2020/lib/desy-commons/interfaces/divider-data.mjs} +0 -0
  547. /package/{esm2015/lib/desy-commons/interfaces/icon-data.js → esm2020/lib/desy-commons/interfaces/icon-data.mjs} +0 -0
  548. /package/{esm2015/lib/desy-commons/interfaces/index.js → esm2020/lib/desy-commons/interfaces/index.mjs} +0 -0
  549. /package/{esm2015/lib/desy-commons/interfaces/title-data.js → esm2020/lib/desy-commons/interfaces/title-data.mjs} +0 -0
  550. /package/{esm2015/lib/desy-forms/components/tree/interfaces/itree-item.js → esm2020/lib/desy-forms/components/tree/interfaces/itree-item.mjs} +0 -0
  551. /package/{esm2015/lib/desy-forms/components/tree/interfaces/quit-tree-item-focus-options.js → esm2020/lib/desy-forms/components/tree/interfaces/quit-tree-item-focus-options.mjs} +0 -0
  552. /package/{esm2015/lib/desy-forms/interfaces/accesibility-data.js → esm2020/lib/desy-forms/interfaces/accesibility-data.mjs} +0 -0
  553. /package/{esm2015/lib/desy-forms/interfaces/error-message-data.js → esm2020/lib/desy-forms/interfaces/error-message-data.mjs} +0 -0
  554. /package/{esm2015/lib/desy-forms/interfaces/fieldset-data.js → esm2020/lib/desy-forms/interfaces/fieldset-data.mjs} +0 -0
  555. /package/{esm2015/lib/desy-forms/interfaces/hint-data.js → esm2020/lib/desy-forms/interfaces/hint-data.mjs} +0 -0
  556. /package/{esm2015/lib/desy-forms/interfaces/index.js → esm2020/lib/desy-forms/interfaces/index.mjs} +0 -0
  557. /package/{esm2015/lib/desy-forms/interfaces/item-checkbox-data.js → esm2020/lib/desy-forms/interfaces/item-checkbox-data.mjs} +0 -0
  558. /package/{esm2015/lib/desy-forms/interfaces/item-date-input-data.js → esm2020/lib/desy-forms/interfaces/item-date-input-data.mjs} +0 -0
  559. /package/{esm2015/lib/desy-forms/interfaces/item-divider-date-input-data.js → esm2020/lib/desy-forms/interfaces/item-divider-date-input-data.mjs} +0 -0
  560. /package/{esm2015/lib/desy-forms/interfaces/item-divider-input-group-data.js → esm2020/lib/desy-forms/interfaces/item-divider-input-group-data.mjs} +0 -0
  561. /package/{esm2015/lib/desy-forms/interfaces/item-input-group-data.js → esm2020/lib/desy-forms/interfaces/item-input-group-data.mjs} +0 -0
  562. /package/{esm2015/lib/desy-forms/interfaces/item-radio-data.js → esm2020/lib/desy-forms/interfaces/item-radio-data.mjs} +0 -0
  563. /package/{esm2015/lib/desy-forms/interfaces/item-radio-with-template-data.js → esm2020/lib/desy-forms/interfaces/item-radio-with-template-data.mjs} +0 -0
  564. /package/{esm2015/lib/desy-forms/interfaces/label-data.js → esm2020/lib/desy-forms/interfaces/label-data.mjs} +0 -0
  565. /package/{esm2015/lib/desy-forms/interfaces/legend-data.js → esm2020/lib/desy-forms/interfaces/legend-data.mjs} +0 -0
  566. /package/{esm2015/lib/desy-modals/interfaces/dialog-options.js → esm2020/lib/desy-modals/interfaces/dialog-options.mjs} +0 -0
  567. /package/{esm2015/lib/desy-modals/interfaces/index.js → esm2020/lib/desy-modals/interfaces/index.mjs} +0 -0
  568. /package/{esm2015/lib/desy-modals/interfaces/modal-button-data.js → esm2020/lib/desy-modals/interfaces/modal-button-data.mjs} +0 -0
  569. /package/{esm2015/lib/desy-modals/interfaces/modal-data.js → esm2020/lib/desy-modals/interfaces/modal-data.mjs} +0 -0
  570. /package/{esm2015/lib/desy-modals/interfaces/modal-icon-data.js → esm2020/lib/desy-modals/interfaces/modal-icon-data.mjs} +0 -0
  571. /package/{esm2015/lib/desy-modals/interfaces/modal-options.js → esm2020/lib/desy-modals/interfaces/modal-options.mjs} +0 -0
  572. /package/{esm2015/lib/desy-modals/interfaces/open-dialog-result.js → esm2020/lib/desy-modals/interfaces/open-dialog-result.mjs} +0 -0
  573. /package/{esm2015/lib/desy-nav/interfaces/breadcrumbs.data.js → esm2020/lib/desy-nav/interfaces/breadcrumbs.data.mjs} +0 -0
  574. /package/{esm2015/lib/desy-nav/interfaces/error-summary-data.js → esm2020/lib/desy-nav/interfaces/error-summary-data.mjs} +0 -0
  575. /package/{esm2015/lib/desy-nav/interfaces/footer-data.js → esm2020/lib/desy-nav/interfaces/footer-data.mjs} +0 -0
  576. /package/{esm2015/lib/desy-nav/interfaces/header-dropdown-data.js → esm2020/lib/desy-nav/interfaces/header-dropdown-data.mjs} +0 -0
  577. /package/{esm2015/lib/desy-nav/interfaces/header-navigation-data.js → esm2020/lib/desy-nav/interfaces/header-navigation-data.mjs} +0 -0
  578. /package/{esm2015/lib/desy-nav/interfaces/header-navigation-item-data.js → esm2020/lib/desy-nav/interfaces/header-navigation-item-data.mjs} +0 -0
  579. /package/{esm2015/lib/desy-nav/interfaces/header-offcanvas-data.js → esm2020/lib/desy-nav/interfaces/header-offcanvas-data.mjs} +0 -0
  580. /package/{esm2015/lib/desy-nav/interfaces/header-subnav-data.js → esm2020/lib/desy-nav/interfaces/header-subnav-data.mjs} +0 -0
  581. /package/{esm2015/lib/desy-nav/interfaces/index.js → esm2020/lib/desy-nav/interfaces/index.mjs} +0 -0
  582. /package/{esm2015/lib/desy-nav/interfaces/menu-navigation-item-sub-item-sub-item.js → esm2020/lib/desy-nav/interfaces/menu-navigation-item-sub-item-sub-item.mjs} +0 -0
  583. /package/{esm2015/lib/desy-nav/interfaces/menu-navigation.js → esm2020/lib/desy-nav/interfaces/menu-navigation.mjs} +0 -0
  584. /package/{esm2015/lib/desy-nav/interfaces/menu-vertical-items-data.js → esm2020/lib/desy-nav/interfaces/menu-vertical-items-data.mjs} +0 -0
  585. /package/{esm2015/lib/desy-nav/interfaces/menu-vertical-sub-data.js → esm2020/lib/desy-nav/interfaces/menu-vertical-sub-data.mjs} +0 -0
  586. /package/{esm2015/lib/desy-nav/interfaces/menu-vertical-sub-items-data.js → esm2020/lib/desy-nav/interfaces/menu-vertical-sub-items-data.mjs} +0 -0
  587. /package/{esm2015/lib/desy-nav/interfaces/menubar-item-sub-item-sub-item.js → esm2020/lib/desy-nav/interfaces/menubar-item-sub-item-sub-item.mjs} +0 -0
  588. /package/{esm2015/lib/desy-nav/interfaces/menubar-item-sub-item.js → esm2020/lib/desy-nav/interfaces/menubar-item-sub-item.mjs} +0 -0
  589. /package/{esm2015/lib/desy-nav/interfaces/menubar-item-sub.js → esm2020/lib/desy-nav/interfaces/menubar-item-sub.mjs} +0 -0
  590. /package/{esm2015/lib/desy-nav/interfaces/menubar-item.js → esm2020/lib/desy-nav/interfaces/menubar-item.mjs} +0 -0
  591. /package/{esm2015/lib/desy-nav/interfaces/nav-item-event.data.js → esm2020/lib/desy-nav/interfaces/nav-item-event.data.mjs} +0 -0
  592. /package/{esm2015/lib/desy-nav/interfaces/nav-item.data.js → esm2020/lib/desy-nav/interfaces/nav-item.data.mjs} +0 -0
  593. /package/{esm2015/lib/desy-nav/interfaces/notification-items-data.js → esm2020/lib/desy-nav/interfaces/notification-items-data.mjs} +0 -0
  594. /package/{esm2015/lib/desy-nav/interfaces/notification-options.js → esm2020/lib/desy-nav/interfaces/notification-options.mjs} +0 -0
  595. /package/{esm2015/lib/desy-pagination/interfaces/index.js → esm2020/lib/desy-pagination/interfaces/index.mjs} +0 -0
  596. /package/{esm2015/lib/desy-pagination/interfaces/pagination-item.data.js → esm2020/lib/desy-pagination/interfaces/pagination-item.data.mjs} +0 -0
  597. /package/{esm2015/lib/desy-tables/interfaces/cell-data.js → esm2020/lib/desy-tables/interfaces/cell-data.mjs} +0 -0
  598. /package/{esm2015/lib/desy-tables/interfaces/index.js → esm2020/lib/desy-tables/interfaces/index.mjs} +0 -0
  599. /package/{esm2015/lib/desy-tables/interfaces/recalculate-table-params.js → esm2020/lib/desy-tables/interfaces/recalculate-table-params.mjs} +0 -0
  600. /package/{esm2015/lib/desy-tables/interfaces/row-data.js → esm2020/lib/desy-tables/interfaces/row-data.mjs} +0 -0
  601. /package/{esm2015/lib/desy-tables/interfaces/wrapper-data.js → esm2020/lib/desy-tables/interfaces/wrapper-data.mjs} +0 -0
  602. /package/{esm2015/lib/desy-views/interfaces/accordion-header.data.js → esm2020/lib/desy-views/interfaces/accordion-header.data.mjs} +0 -0
  603. /package/{esm2015/lib/desy-views/interfaces/alert-options.js → esm2020/lib/desy-views/interfaces/alert-options.mjs} +0 -0
  604. /package/{esm2015/lib/desy-views/interfaces/description-item.data.js → esm2020/lib/desy-views/interfaces/description-item.data.mjs} +0 -0
  605. /package/{esm2015/lib/desy-views/interfaces/index.js → esm2020/lib/desy-views/interfaces/index.mjs} +0 -0
  606. /package/{esm2015/lib/desy-views/interfaces/open-alert-result.js → esm2020/lib/desy-views/interfaces/open-alert-result.mjs} +0 -0
  607. /package/{esm2015/lib/desy-views/interfaces/status-data.js → esm2020/lib/desy-views/interfaces/status-data.mjs} +0 -0
  608. /package/{esm2015/lib/desy-views/interfaces/status-icon-data.js → esm2020/lib/desy-views/interfaces/status-icon-data.mjs} +0 -0
  609. /package/{esm2015/lib/desy-views/interfaces/status-item-title-data.js → esm2020/lib/desy-views/interfaces/status-item-title-data.mjs} +0 -0
  610. /package/{esm2015/lib/desy-views/interfaces/tabs-panel-data.js → esm2020/lib/desy-views/interfaces/tabs-panel-data.mjs} +0 -0
  611. /package/{esm2015/lib/desy-views/interfaces/term-definition.data.js → esm2020/lib/desy-views/interfaces/term-definition.data.mjs} +0 -0
  612. /package/{esm2015/lib/shared/components/index.js → esm2020/lib/shared/components/index.mjs} +0 -0
  613. /package/{esm2015/lib/shared/decorators/desy-content-child.decorator.js → esm2020/lib/shared/decorators/desy-content-child.decorator.mjs} +0 -0
  614. /package/{esm2015/lib/shared/decorators/desy-on-input-change.decorator.js → esm2020/lib/shared/decorators/desy-on-input-change.decorator.mjs} +0 -0
  615. /package/{esm2015/lib/shared/interfaces/accesibility-data.js → esm2020/lib/shared/interfaces/accesibility-data.mjs} +0 -0
  616. /package/{esm2015/lib/shared/utils/focus-utils.js → esm2020/lib/shared/utils/focus-utils.mjs} +0 -0
  617. /package/{esm2015/lib/shared/utils/search-utils.js → esm2020/lib/shared/utils/search-utils.mjs} +0 -0
  618. /package/{esm2015/lib/shared/utils/string-utils.js → esm2020/lib/shared/utils/string-utils.mjs} +0 -0
@@ -1,568 +0,0 @@
1
- import { ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, HostBinding, Input, Output, ViewChild, ViewChildren } from '@angular/core';
2
- import { AccessibilityComponent } from '../../../shared/components';
3
- import { MenubaritemDirective } from '../menubar/directives/menubaritem.directive';
4
- import { MenuNavigationItemComponent } from './components/menu-navigation-item/menu-navigation-item.component';
5
- import { MenuNavigationSubitemComponent } from './components/menu-navigation-subitem/menu-navigation-subitem.component';
6
- export class MenuNavigationComponent extends AccessibilityComponent {
7
- constructor(changeDetectorRef) {
8
- super();
9
- this.changeDetectorRef = changeDetectorRef;
10
- this.itemsChange = new EventEmitter();
11
- this.activeItemChange = new EventEmitter();
12
- this.activeSubItemChange = new EventEmitter();
13
- this.cfg = true;
14
- this.viewInit = false;
15
- this.currentFocusItemIndex = 0;
16
- }
17
- ngOnChanges(changes) {
18
- this.roleData = this.role ? this.role : null;
19
- this.ariaLabelData = this.ariaLabel ? this.ariaLabel : null;
20
- this.ariaDescribedbyData = this.ariaDescribedBy ? this.ariaDescribedBy : null;
21
- this.ariaLabelledbyData = this.ariaLabelledBy ? this.ariaLabelledBy : null;
22
- this.ariaHiddenData = this.ariaHidden ? this.ariaHidden : null;
23
- this.ariaDisabledData = this.ariaDisabled ? this.ariaDisabled : null;
24
- this.ariaControlsData = this.ariaControls ? this.ariaControls : null;
25
- this.ariaCurrentData = this.ariaCurrent ? this.ariaCurrent : null;
26
- this.ariaLiveData = this.ariaLive ? this.ariaLive : null;
27
- this.ariaExpandedData = this.ariaExpanded ? this.ariaExpanded : null;
28
- this.ariaErrormessageData = this.ariaErrorMessage ? this.ariaErrorMessage : null;
29
- this.ariaHaspopupData = this.ariaHasPopup ? this.ariaHasPopup : null;
30
- this.ariaModalData = this.ariaModal ? this.ariaModal : null;
31
- if (this.viewInit) {
32
- this.checkChanges();
33
- }
34
- }
35
- ngAfterViewInit() {
36
- this.viewInit = true;
37
- this.checkChanges();
38
- }
39
- checkChanges() {
40
- if (!this.menuItems) {
41
- return;
42
- }
43
- this.menuData = [];
44
- this.getItems().forEach((_, index) => {
45
- const itemData = {
46
- open: false,
47
- currentFocusSubItemIndex: 0,
48
- currentFocusSubSubItemIndex: 0,
49
- menuItem: this.menuItems.toArray()[index]
50
- };
51
- this.menuData.push(itemData);
52
- });
53
- if (this.viewInit) {
54
- this.checkRequired();
55
- }
56
- const lastCurrentFocusItemIndex = this.currentFocusItemIndex;
57
- const items = this.getItems();
58
- if (items) {
59
- while (!this.isItemFocusable(this.currentFocusItemIndex % items.length)) {
60
- this.currentFocusItemIndex = (this.currentFocusItemIndex + items.length + 1) % items.length;
61
- if (this.currentFocusItemIndex === lastCurrentFocusItemIndex) {
62
- break;
63
- }
64
- }
65
- }
66
- }
67
- /*
68
- * Eventos
69
- */
70
- handleMenuFocusIn() {
71
- this.isFocused = true;
72
- this.changeDetectorRef.detectChanges();
73
- }
74
- handleMenuFocusOut(event) {
75
- if (!this.menunavigation.nativeElement.contains(event.relatedTarget)) {
76
- this.closeMenu();
77
- }
78
- this.isFocused = false;
79
- this.changeDetectorRef.detectChanges();
80
- }
81
- handleMenuItemClick(event, itemIndex) {
82
- if (this.hasPopupMenu(itemIndex)) {
83
- event.preventDefault();
84
- const isOpen = this.menuData[itemIndex].open;
85
- this.closeMenu();
86
- if (!isOpen) {
87
- this.openMenu(itemIndex);
88
- }
89
- }
90
- else {
91
- this.activateMenuItem(itemIndex);
92
- }
93
- }
94
- handleMenuItemKeydown(event, itemIndex) {
95
- switch (event.key) {
96
- case 'Enter':
97
- case ' ':
98
- case 'ArrowDown':
99
- if (this.hasPopupMenu(itemIndex)) {
100
- this.openMenu(itemIndex);
101
- setTimeout(() => this.focusFirstSubItem(itemIndex));
102
- event.stopPropagation();
103
- event.preventDefault();
104
- }
105
- break;
106
- case 'Escape':
107
- if (this.hasPopupMenu(itemIndex)) {
108
- this.closeMenu(itemIndex);
109
- }
110
- event.stopPropagation();
111
- event.preventDefault();
112
- break;
113
- case 'ArrowLeft':
114
- this.focusNextAvailableItem(itemIndex, -1);
115
- event.stopPropagation();
116
- event.preventDefault();
117
- break;
118
- case 'ArrowRight':
119
- this.focusNextAvailableItem(itemIndex, +1);
120
- event.stopPropagation();
121
- event.preventDefault();
122
- break;
123
- case 'ArrowUp':
124
- if (this.hasPopupMenu(itemIndex)) {
125
- this.openMenu(itemIndex);
126
- setTimeout(() => this.focusLastSubItem(itemIndex));
127
- }
128
- event.stopPropagation();
129
- event.preventDefault();
130
- break;
131
- case 'Home':
132
- case 'PageUp':
133
- if (this.hasPopupMenu(itemIndex)) {
134
- this.closeMenu();
135
- }
136
- this.focusFirstItem();
137
- event.stopPropagation();
138
- event.preventDefault();
139
- break;
140
- case 'End':
141
- case 'PageDown':
142
- if (this.hasPopupMenu(itemIndex)) {
143
- this.closeMenu();
144
- }
145
- this.focusLastItem();
146
- event.stopPropagation();
147
- event.preventDefault();
148
- break;
149
- default:
150
- if (this.isPrintableChar(event.key)) {
151
- this.focusItemByFirstChar(event.key);
152
- event.stopPropagation();
153
- event.preventDefault();
154
- }
155
- break;
156
- }
157
- }
158
- handleMenuItemMouseOver(itemIndex) {
159
- this.focusItem(itemIndex, true);
160
- }
161
- handlePopupMenuItemClick(itemIndex, subItemIndex, subSubItemIndex) {
162
- this.activatePopupMenuItem(itemIndex, subItemIndex, subSubItemIndex);
163
- this.focusItem(itemIndex);
164
- this.closeMenu(itemIndex);
165
- }
166
- handlePopupMenuItemKeydown(event, itemIndex, subItemIndex, subSubItemIndex) {
167
- const currentSubIndex = this.menuData[itemIndex].currentFocusSubItemIndex;
168
- const currentSubSubIndex = this.menuData[itemIndex].currentFocusSubSubItemIndex;
169
- const items = this.getItems();
170
- switch (event.key) {
171
- case ' ':
172
- this.activatePopupMenuItem(itemIndex, subItemIndex, subSubItemIndex);
173
- if (this.mustCloseAfterSelectPopupItem(itemIndex, subItemIndex, subSubItemIndex)) {
174
- this.closeMenu(itemIndex);
175
- this.focusItem(itemIndex);
176
- }
177
- event.stopPropagation();
178
- event.preventDefault();
179
- break;
180
- case 'Enter':
181
- this.activatePopupMenuItem(itemIndex, subItemIndex, subSubItemIndex);
182
- this.closeMenu(itemIndex);
183
- this.focusItem(itemIndex);
184
- event.stopPropagation();
185
- event.preventDefault();
186
- break;
187
- case 'Escape':
188
- this.closeMenu(itemIndex);
189
- this.focusItem(itemIndex);
190
- event.stopPropagation();
191
- event.preventDefault();
192
- break;
193
- case 'ArrowUp':
194
- this.focusNextAvailableSubItem(itemIndex, currentSubIndex, currentSubSubIndex, -1);
195
- // this.focusSubItem(itemIndex, (currentSubIndex + listLength - 1) % listLength);
196
- event.stopPropagation();
197
- event.preventDefault();
198
- break;
199
- case 'ArrowDown':
200
- this.focusNextAvailableSubItem(itemIndex, currentSubIndex, currentSubSubIndex, +1);
201
- // this.focusSubItem(itemIndex, (currentSubIndex + listLength + 1) % listLength);
202
- event.stopPropagation();
203
- event.preventDefault();
204
- break;
205
- case 'ArrowLeft':
206
- this.closeMenu(itemIndex);
207
- this.focusItem((itemIndex + items.length - 1) % items.length);
208
- event.stopPropagation();
209
- event.preventDefault();
210
- break;
211
- case 'ArrowRight':
212
- this.closeMenu(itemIndex);
213
- this.focusItem((itemIndex + items.length + 1) % items.length);
214
- event.stopPropagation();
215
- event.preventDefault();
216
- break;
217
- case 'Home':
218
- case 'PageUp':
219
- this.focusFirstSubItem(itemIndex);
220
- event.stopPropagation();
221
- event.preventDefault();
222
- break;
223
- case 'End':
224
- case 'PageDown':
225
- this.focusLastSubItem(itemIndex);
226
- event.stopPropagation();
227
- event.preventDefault();
228
- break;
229
- case 'Tab':
230
- this.closeMenu(itemIndex);
231
- this.focusItem(itemIndex);
232
- break;
233
- default:
234
- if (this.isPrintableChar(event.key)) {
235
- this.focusSubItemByFirstChar(itemIndex, event.key);
236
- event.stopPropagation();
237
- event.preventDefault();
238
- }
239
- break;
240
- }
241
- }
242
- handlePopupMenuItemMouseOver(itemIndex, subItemIndex, subSubItemIndex) {
243
- this.focusSubItem(itemIndex, subItemIndex, subSubItemIndex);
244
- }
245
- /*
246
- * Comunes
247
- */
248
- checkRequired() {
249
- const items = this.getItems();
250
- }
251
- activateMenuItem(itemIndex) {
252
- const items = this.getItems();
253
- this.activeItemChange.emit(items[itemIndex]);
254
- if (items[itemIndex] instanceof MenuNavigationItemComponent) {
255
- items[itemIndex].selected.emit();
256
- }
257
- }
258
- activatePopupMenuItem(itemIndex, subItemIndex, subSubItemIndex) {
259
- const items = this.getItems();
260
- const subItems = this.getItemSubitems(items[itemIndex]);
261
- let item = subItems[subItemIndex];
262
- this.itemsChange.emit(items);
263
- this.activeSubItemChange.emit(item);
264
- if (item instanceof MenuNavigationSubitemComponent) {
265
- item.selected.emit();
266
- }
267
- }
268
- mustCloseAfterSelectPopupItem(itemIndex, subItemIndex, subSubItemIndex) {
269
- const items = this.getItems();
270
- const subItems = this.getItemSubitems(items[itemIndex]);
271
- let item = subItems[subItemIndex];
272
- return item.role !== 'menuitemcheckbox' && item.role !== 'menuitemradio';
273
- }
274
- openMenu(itemIndex) {
275
- const wasOpened = this.menuData[itemIndex].open;
276
- this.menuData[itemIndex].open = true;
277
- if (wasOpened) {
278
- this.activateMenuItem(itemIndex);
279
- }
280
- }
281
- closeMenu(itemIndex) {
282
- if (itemIndex !== null && itemIndex !== undefined) {
283
- this.menuData[itemIndex].open = false;
284
- }
285
- else {
286
- this.menuData.forEach(item => item.open = false);
287
- }
288
- }
289
- hasPopupMenu(itemIndex) {
290
- const items = this.getItems();
291
- const subItems = this.getItemSubitems(items[itemIndex]);
292
- return items[itemIndex].sub && subItems && subItems.length > 0;
293
- }
294
- isPrintableChar(str) {
295
- return str.length === 1 && !!str.match(/\S/);
296
- }
297
- /*
298
- * Comunes - focus
299
- */
300
- focusItem(itemIndex, hover) {
301
- const hasFocus = this.menunavigation.nativeElement.contains(document.activeElement);
302
- const isOpen = this.menuData[this.currentFocusItemIndex].open;
303
- if (!hover || hasFocus) {
304
- this.menuData[itemIndex].menuItem.link.nativeElement.focus();
305
- }
306
- this.closeMenu();
307
- if (isOpen && this.hasPopupMenu(itemIndex)) {
308
- this.openMenu(itemIndex);
309
- }
310
- this.currentFocusItemIndex = itemIndex;
311
- }
312
- focusNextAvailableItem(fromItemIndex, step) {
313
- let nextItem = fromItemIndex;
314
- const items = this.getItems();
315
- do {
316
- nextItem = (nextItem + items.length + step) % items.length;
317
- } while (!this.isItemFocusable(nextItem) && nextItem !== fromItemIndex);
318
- if (nextItem !== fromItemIndex) {
319
- this.focusItem(nextItem);
320
- }
321
- }
322
- focusFirstItem() {
323
- if (this.isItemFocusable(0)) {
324
- this.focusItem(0);
325
- }
326
- else {
327
- this.focusNextAvailableItem(0, +1);
328
- }
329
- }
330
- focusLastItem() {
331
- const items = this.getItems();
332
- if (this.isItemFocusable(items.length - 1)) {
333
- this.focusItem(items.length - 1);
334
- }
335
- else {
336
- this.focusNextAvailableItem(items.length - 1, -1);
337
- }
338
- }
339
- isItemFocusable(itemIndex) {
340
- return !this.getItems()[itemIndex].disabled;
341
- }
342
- focusItemByFirstChar(char) {
343
- const itemContents = this.menuItems.map(menuItem => menuItem.itemContentWrapper.nativeElement.textContent);
344
- let index = this.currentFocusItemIndex;
345
- let foundIndex = -1;
346
- do {
347
- index = (index + itemContents.length + 1) % itemContents.length;
348
- if (itemContents[index] && itemContents[index].trim().substr(0, 1).toLowerCase() === char.toLowerCase()
349
- && this.isItemFocusable(index)) {
350
- foundIndex = index;
351
- }
352
- } while (foundIndex === -1 && index !== this.currentFocusItemIndex);
353
- if (foundIndex >= 0) {
354
- this.focusItem(foundIndex);
355
- }
356
- }
357
- focusSubItem(itemIndex, subItemIndex, subSubItemIndex) {
358
- if (this.menuData[itemIndex].menuItem.popupMenuItems.length > 0) {
359
- const menuDataIndex = subItemIndex;
360
- this.menuData[itemIndex].currentFocusSubItemIndex = subItemIndex;
361
- this.menuData[itemIndex].currentFocusSubSubItemIndex = subSubItemIndex;
362
- const elem = this.menuData[itemIndex].menuItem.popupMenuItems.toArray()[menuDataIndex].nativeElement;
363
- if (elem) {
364
- elem.focus();
365
- }
366
- else {
367
- console.error('No subitem to focus');
368
- }
369
- }
370
- else {
371
- console.error('No subitems');
372
- }
373
- }
374
- focusNextAvailableSubItem(itemIndex, fromItemSubIndex, fromItemSubSubIndex, step) {
375
- let nextSubIndex = fromItemSubIndex;
376
- let nextSubSubIndex = fromItemSubSubIndex;
377
- let allSubItemsChecked;
378
- const items = this.getItems();
379
- do {
380
- const nextIndexes = this.getNextSubItemIndexes(items, itemIndex, nextSubIndex, nextSubSubIndex, step);
381
- nextSubIndex = nextIndexes.subIndex;
382
- nextSubSubIndex = nextIndexes.subSubIndex;
383
- allSubItemsChecked = (fromItemSubIndex === nextSubIndex && fromItemSubSubIndex === nextSubSubIndex);
384
- } while (!this.isSubItemFocusable(itemIndex, nextSubIndex, nextSubSubIndex) && !allSubItemsChecked);
385
- if (!allSubItemsChecked) {
386
- this.focusSubItem(itemIndex, nextSubIndex, nextSubSubIndex);
387
- }
388
- }
389
- focusFirstSubItem(itemIndex) {
390
- let firstSubSubItem = null;
391
- const items = this.getItems();
392
- const subItems = this.getItemSubitems(items[itemIndex]);
393
- if (subItems && subItems.length > 0) {
394
- firstSubSubItem = 0;
395
- }
396
- if (this.isSubItemFocusable(itemIndex, 0, firstSubSubItem)) {
397
- this.focusSubItem(itemIndex, 0, firstSubSubItem);
398
- }
399
- else {
400
- this.focusNextAvailableSubItem(itemIndex, 0, firstSubSubItem, +1);
401
- }
402
- }
403
- focusLastSubItem(itemIndex) {
404
- const items = this.getItems();
405
- const subItems = this.getItemSubitems(items[itemIndex]);
406
- const lastItemIndex = subItems.length - 1;
407
- const lastItem = subItems[lastItemIndex];
408
- let lastSubSubItem = null;
409
- if (this.isSubItemFocusable(itemIndex, lastItemIndex, lastSubSubItem)) {
410
- this.focusSubItem(itemIndex, lastItemIndex, lastSubSubItem);
411
- }
412
- else {
413
- this.focusNextAvailableSubItem(itemIndex, lastItemIndex, lastSubSubItem, -1);
414
- }
415
- }
416
- isSubItemFocusable(itemIndex, subItemIndex, subSubItemIndex) {
417
- const items = this.getItems();
418
- const subItems = this.getItemSubitems(items[itemIndex]);
419
- let item = subItems[subItemIndex];
420
- let isFocusable = false;
421
- if (item.role !== 'separator' && item.role !== 'none') {
422
- isFocusable = true;
423
- }
424
- return isFocusable;
425
- }
426
- focusSubItemByFirstChar(itemIndex, char) {
427
- const itemContents = this.menuItems.toArray()[itemIndex].popupMenuItems.map(menuItem => menuItem.nativeElement.textContent);
428
- let subItemIndex = this.menuData[itemIndex].currentFocusSubItemIndex;
429
- let subSubItemIndex = this.menuData[itemIndex].currentFocusSubSubItemIndex;
430
- let foundSubIndex = -1;
431
- let foundSubSubIndex = null;
432
- let allSubItemsChecked = false;
433
- const items = this.getItems();
434
- do {
435
- const nextIndexes = this.getNextSubItemIndexes(items, itemIndex, subItemIndex, subSubItemIndex, +1);
436
- subItemIndex = nextIndexes.subIndex;
437
- subSubItemIndex = nextIndexes.subSubIndex;
438
- const index = subItemIndex;
439
- if (itemContents[index] && itemContents[index].trim().substr(0, 1).toLowerCase() === char.toLowerCase()
440
- && this.isSubItemFocusable(itemIndex, subItemIndex, subSubItemIndex)) {
441
- foundSubIndex = subItemIndex;
442
- foundSubSubIndex = subSubItemIndex;
443
- }
444
- allSubItemsChecked = (this.menuData[itemIndex].currentFocusSubItemIndex === subItemIndex
445
- && this.menuData[itemIndex].currentFocusSubSubItemIndex === subSubItemIndex);
446
- } while (foundSubIndex === -1 && !allSubItemsChecked);
447
- if (foundSubIndex >= 0) {
448
- this.focusSubItem(itemIndex, foundSubIndex, foundSubSubIndex);
449
- }
450
- }
451
- /*
452
- * Metodos para facilitar contenido
453
- */
454
- getItems() {
455
- let items;
456
- if (this.itemComponentList && this.itemComponentList.length > 0) {
457
- items = this.itemComponentList.toArray();
458
- }
459
- else {
460
- items = this.items;
461
- }
462
- return items;
463
- }
464
- getItemSubitems(item) {
465
- let subItems = [];
466
- if (item instanceof MenuNavigationItemComponent) {
467
- subItems = item.getSubItems();
468
- }
469
- if (!subItems || subItems.length === 0) {
470
- subItems = item.sub ? item.sub.items : [];
471
- }
472
- return subItems;
473
- }
474
- getNextSubItemIndexes(items, itemIndex, nextSubIndex, nextSubSubIndex, step) {
475
- const subItems = this.getItemSubitems(items[itemIndex]);
476
- let checkNextSubItem = true;
477
- if (checkNextSubItem) {
478
- nextSubIndex = (nextSubIndex + step + subItems.length) % subItems.length;
479
- }
480
- return { subIndex: nextSubIndex, subSubIndex: nextSubSubIndex };
481
- }
482
- getIdPrefix() {
483
- return this.idPrefix ? this.idPrefix : this.id + 'menunavigation-item';
484
- }
485
- getItemId(item, index) {
486
- let id;
487
- if (item) {
488
- if (item.id) {
489
- id = item.id;
490
- }
491
- else {
492
- id = index === 0 ? this.getIdPrefix() : `${this.getIdPrefix()}-${index}`;
493
- }
494
- }
495
- return id;
496
- }
497
- getPopupStyle(itemIndex) {
498
- let style = {};
499
- if (this.menuData && itemIndex < this.menuData.length) {
500
- const menuItem = this.menuData[itemIndex].menuItem;
501
- const rect = menuItem.link.nativeElement.getBoundingClientRect();
502
- if (this.menuData[itemIndex].open) {
503
- style = {
504
- position: 'absolute',
505
- top: '0px',
506
- left: '0px',
507
- zIndex: 100,
508
- display: 'block'
509
- };
510
- }
511
- else {
512
- style = {
513
- zIndex: 0,
514
- display: 'none'
515
- };
516
- }
517
- }
518
- return style;
519
- }
520
- getSubItemId(item, index, parentId) {
521
- let id;
522
- if (item) {
523
- if (item.id) {
524
- id = item.id;
525
- }
526
- else {
527
- id = index === 0 ? `sub-${parentId}` : `sub-${parentId}-${index}`;
528
- }
529
- }
530
- return id;
531
- }
532
- }
533
- MenuNavigationComponent.decorators = [
534
- { type: Component, args: [{
535
- selector: 'desy-menu-navigation',
536
- template: "<ul #menunavigation [id]=\"id + '-menu-navigation'\" class=\"flex flex-wrap gap-base\"\n(focusin)=\"handleMenuFocusIn()\"\n(focusout)=\"handleMenuFocusOut($event)\"\n[ngClass]=\"{ 'focus': isFocused }\"\n[attr.aria-label]=\"ariaLabel ? ariaLabel : null\">\n<ng-container *ngFor=\"let item of getItems(); index as itemIndex\">\n<li class=\"relative\" role=\"none\" desyMenubaritem (contentChanged)=\"checkChanges()\">\n <a *ngIf=\"item.href\" #link\n (click)=\"handleMenuItemClick($event, itemIndex)\"\n (keydown)=\"handleMenuItemKeydown($event, itemIndex)\"\n (mouseover)=\"handleMenuItemMouseOver(itemIndex)\"\n (desyAttributeChange)=\"checkChanges()\" [attributesToCheck]=\"'disabled'\"\n role=\"item.disabled ? link : null\"\n [id]=\"getItemId(item, itemIndex)\"\n [target]=\"item.target\"\n [href]=\"item.href\"\n [class]=\"['c-menu-navigation__button', item.classes] | makeHtmlList\"\n [ngClass]=\"{'c-menu-navigation__button--disabled': item.disabled, 'c-menu-navigation__button--primary': item.active, 'c-menu-navigation__button--has-selection': item.active}\"\n [attr.disabled]=\"item.disabled ? item.disabled : null\"\n [attr.aria-disabled]=\"item.disabled ? item.disabled : (item.ariaDisabled ? item.ariaDisabled : null)\"\n [attr.aria-describedby]=\"item.ariaDescribedBy ? item.ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"item.ariaLabelledBy ? item.ariaLabelledBy : null\"\n [attr.aria-hidden]=\"item.ariaHidden ? item.ariaHidden : null\"\n [attr.aria-controls]=\"item.ariaControls ? item.ariaControls : null\"\n [attr.aria-current]=\"item.disabled ? 'page' : (item.ariaCurrent ? item.ariaCurrent : null)\"\n [attr.aria-live]=\"item.ariaLive ? item.ariaLive : null\"\n [attr.aria-errormessage]=\"item.ariaErrorMessage ? item.ariaErrorMessage : null\"\n [attr.aria-modal]=\"item.ariaModal ? item.ariaModal : null\"\n [attr.tabindex]=\"item.disabled ? -1 : (itemIndex === currentFocusItemIndex ? 0 : -1)\">\n <span class=\"inline-flex self-center max-w-xs align-middle truncate pointer-events-none\" #itemContentWrapper>\n <ng-container *desyCustomInnerContent=\"{ component: item, html: item.html, text: item.text}\"></ng-container>\n </span> \n </a>\n <button *ngIf=\"!item.href\" #link #itemContentWrapper\n (click)=\"handleMenuItemClick($event, itemIndex)\"\n (keydown)=\"handleMenuItemKeydown($event, itemIndex)\"\n (mouseover)=\"handleMenuItemMouseOver(itemIndex)\"\n (desyAttributeChange)=\"checkChanges()\" [attributesToCheck]=\"'disabled'\"\n aria-expanded=\"item.sub ? true : false\"\n aria-controls=\"item.sub ? id + '-sub-list' : ''\"\n [class]=\"['c-menu-navigation__button', item.classes] | makeHtmlList\"\n [ngClass]=\"{'c-menu-navigation__button--disabled': item.disabled, 'c-menu-navigation__button--primary': item.active, 'c-menu-navigation__button--has-selection': item.active}\"\n [attr.disabled]=\"item.disabled ? item.disabled : null\"\n [attr.aria-disabled]=\"item.disabled ? item.disabled : (item.ariaDisabled ? item.ariaDisabled : null)\"\n [attr.aria-describedby]=\"item.ariaDescribedBy ? item.ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"item.ariaLabelledBy ? item.ariaLabelledBy : 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-errormessage]=\"item.ariaErrorMessage ? item.ariaErrorMessage : null\"\n [attr.aria-modal]=\"item.ariaModal ? item.ariaModal : null\"\n [attr.tabindex]=\"item.disabled ? -1 : (itemIndex === currentFocusItemIndex ? 0 : -1)\">\n <span *ngIf=\"item.active\" class=\"sr-only\">Item activo: </span>\n <span class=\"inline-flex self-center max-w-xs align-middle truncate pointer-events-none\" #itemContentWrapper>\n <ng-container *desyCustomInnerContent=\"{ component: item, html: item.html, text: item.text}\"></ng-container>\n </span>\n <svg *ngIf=\"item.sub\" class=\"inline-block -mr-2 align-middle -my-px pointer-events-none\" 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\n <div *ngIf=\"item.sub && getItemSubitems(item)\" class=\"c-menu-navigation__sub absolute bottom-0 left-0\">\n <ul [id]=\"id + '-sub-list'\" [ngStyle]=\"getPopupStyle(itemIndex)\" #popupMenu role=\"menu\" tabindex=\"-1\"\n [class]=\"item.sub.classes ? item.sub.classes : 'c-menu-navigation__tooltip w-max max-w-64 border border-neutral-base shadow-md bg-white text-sm'\"\n [attr.aria-label]=\"item.ariaLabel ? item.ariaLabel : (item.sub.ariaLabel ? item.sub.ariaLabel : null)\"\n [attr.aria-describedby]=\"item.sub.ariaDescribedBy ? item.sub.ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"item.sub.ariaLabelledBy ? item.sub.ariaLabelledBy : null\"\n [attr.aria-hidden]=\"item.sub.ariaHidden ? item.sub.ariaHidden : null\"\n [attr.aria-disabled]=\"item.sub.ariaDisabled ? item.sub.ariaDisabled : null\"\n [attr.aria-controls]=\"item.sub.ariaControls ? item.sub.ariaControls : null\"\n [attr.aria-current]=\"item.sub.ariaCurrent ? item.sub.ariaCurrent : null\"\n [attr.aria-live]=\"item.sub.ariaLive ? item.sub.ariaLive : null\"\n [attr.aria-expanded]=\"!!(menuData && menuData[itemIndex].open)\"\n [attr.aria-errormessage]=\"item.sub.ariaErrorMessage ? item.sub.ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"item.sub.ariaHasPopup ? item.sub.ariaHasPopup : null\"\n [attr.aria-modal]=\"item.sub.ariaModal ? item.sub.ariaModal : null\">\n <ng-container *ngFor=\"let subItem of getItemSubitems(item); index as subItemIndex\">\t\t\t\t\n <li #popupMenuItem *ngIf=\"subItem.href\" role=\"none\" tabindex=\"-1\"\n class=\"focus:bg-primary-base focus:text-white focus:outline-none\"\n [id]=\"getSubItemId(subItem, subItemIndex, getItemId(item, itemIndex))\"\n (click)=\"handlePopupMenuItemClick(itemIndex, subItemIndex)\"\n (mouseover)=\"handlePopupMenuItemMouseOver(itemIndex, subItemIndex)\"\n (keydown)=\"handlePopupMenuItemKeydown($event, itemIndex, subItemIndex)\">\n <span *ngIf=\"subItem.active\" id=\"subItem.id\" #itemContentWrapper \n [class]=\"['flex items-center px-base py-sm text-sm font-semibold cursor-pointer hover:bg-primary-base hover:text-white', subItem.classes] | makeHtmlList\" \n aria-current=\"page\"\n \n [attr.aria-label]=\"item.ariaLabel ? item.ariaLabel : (subItem.ariaLabel ? subItem.ariaLabel : null)\"\n [attr.aria-describedby]=\"subItem.ariaDescribedBy ? subItem.ariaDescribedBy : null\"\n [attr.aria-labelledby]=\"subItem.ariaLabelledBy ? subItem.ariaLabelledBy : null\"\n [attr.aria-hidden]=\"subItem.ariaHidden ? subItem.ariaHidden : null\"\n [attr.aria-disabled]=\"subItem.ariaDisabled ? subItem.ariaDisabled : null\"\n [attr.aria-controls]=\"subItem.ariaControls ? subItem.ariaControls : null\"\n [attr.aria-current]=\"subItem.ariaCurrent ? subItem.ariaCurrent : null\"\n [attr.aria-live]=\"subItem.ariaLive ? subItem.ariaLive : null\"\n [attr.aria-expanded]=\"!!(menuData && menuData[subItemIndex].open)\"\n [attr.aria-errormessage]=\"subItem.ariaErrorMessage ? subItem.ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"subItem.ariaHasPopup ? subItem.ariaHasPopup : null\"\n [attr.aria-modal]=\"subItem.ariaModal ? subItem.ariaModal : null\"\n (keydown)=\"handlePopupMenuItemKeydown($event, itemIndex, subItemIndex)\">\n <ng-container *desyCustomInnerContent=\"{ component: subItem, html: subItem.html, text: subItem.text}\"></ng-container>\n </span>\n \n <a *ngIf=\"!subItem.active\" #itemContentWrapper\n [href]=\"subItem.href\"\n (click)=\"handlePopupMenuItemClick(itemIndex, subItemIndex)\"\n (mouseover)=\"handlePopupMenuItemMouseOver(itemIndex, subItemIndex)\"\n (keydown)=\"handlePopupMenuItemKeydown($event, itemIndex, subItemIndex)\"\n (desyAttributeChange)=\"checkChanges()\"\n [class]=\"['flex items-center px-base py-sm text-sm hover:bg-primary-base hover:text-white focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black', subItem.classes] | makeHtmlList\"\n [ngClass]=\"{'pointer-events-none': subItem.disabled}\"\n [tabindex]=\"subItem.disabled ? -1 : null\"\n [target] = \"subItem.target\">\n <span class=\"inline-flex self-center max-w-xs align-middle truncate\" #itemContentWrapper>\n <ng-container *desyCustomInnerContent=\"{ component: subItem, html: subItem.html, text: subItem.text}\"></ng-container>\n </span>\n <svg *ngIf=\"subItem.disabled\" viewBox=\"0 0 140 140\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\" class=\"inline-block align-middle ml-sm text-neutral-base fill-current\" aria-hidden=\"true\" focusable=\"false\" ><path d=\"M70 0a70 70 0 1070 70A70.08 70.08 0 0070 0zM20 70a50 50 0 0174.8-43.4 2.51 2.51 0 011.23 1.84 2.48 2.48 0 01-.71 2.1L30.54 95.32a2.51 2.51 0 01-3.94-.52A49.63 49.63 0 0120 70zm100 0a50 50 0 01-74.8 43.4 2.51 2.51 0 01-1.23-1.84 2.48 2.48 0 01.71-2.1l64.78-64.78a2.51 2.51 0 013.94.52A49.63 49.63 0 01120 70z\"/></svg>\n </a>\n </li>\n <li #popupMenuItem *ngIf=\"!subItem.href\" role=\"none\" tabindex=\"-1\"\n [id]=\"getSubItemId(subItem, subItemIndex, getItemId(item, itemIndex))\"\n class=\"focus:bg-primary-base focus:text-white focus:outline-none\"\n (click)=\"handlePopupMenuItemClick(itemIndex, subItemIndex)\"\n (mouseover)=\"handlePopupMenuItemMouseOver(itemIndex, subItemIndex)\"\n (keydown)=\"handlePopupMenuItemKeydown($event, itemIndex, subItemIndex)\">\n <span [id]=\"getSubItemId(subItem, subItemIndex, getItemId(item, subItemIndex))\"\n class=\"flex items-center px-base py-sm text-sm cursor-pointer hover:bg-primary-base hover:text-white\"\n [ngClass]=\"{'font-bold': subItem.active, 'pointer-events-none': subItem.disabled}\">\n <ng-container *desyCustomInnerContent=\"{ component: subItem, html: subItem.html, text: subItem.text}\"></ng-container>\n </span>\n <svg *ngIf=\"subItem.disabled\" viewBox=\"0 0 140 140\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\" class=\"inline-block align-middle ml-sm text-neutral-base fill-current\" aria-hidden=\"true\" focusable=\"false\" ><path d=\"M70 0a70 70 0 1070 70A70.08 70.08 0 0070 0zM20 70a50 50 0 0174.8-43.4 2.51 2.51 0 011.23 1.84 2.48 2.48 0 01-.71 2.1L30.54 95.32a2.51 2.51 0 01-3.94-.52A49.63 49.63 0 0120 70zm100 0a50 50 0 01-74.8 43.4 2.51 2.51 0 01-1.23-1.84 2.48 2.48 0 01.71-2.1l64.78-64.78a2.51 2.51 0 013.94.52A49.63 49.63 0 01120 70z\"/></svg>\n </li>\n \n <li *ngIf=\"subItem.divider\" class=\"my-sm border-b border-neutral-base\">\n <div class=\"sr-only\">Separador</div>\n </li>\n </ng-container>\n </ul>\n </div>\n</li>\n<li #popupMenuItem *ngIf=\"item.divider\" class=\"item.divider.classes\" role=\"presentation\" aria-hidden=\"true\">\n <ng-container *desyCustomInnerContent=\"{ component: item.divider, html: item.divider.html, text: item.divider.text}\"></ng-container>\n</li>\n</ng-container>\n</ul>\n"
537
- },] }
538
- ];
539
- MenuNavigationComponent.ctorParameters = () => [
540
- { type: ChangeDetectorRef }
541
- ];
542
- MenuNavigationComponent.propDecorators = {
543
- idPrefix: [{ type: Input }],
544
- items: [{ type: Input }],
545
- itemsChange: [{ type: Output }],
546
- activeItemChange: [{ type: Output }],
547
- activeSubItemChange: [{ type: Output }],
548
- menunavigation: [{ type: ViewChild, args: ['menunavigation', { read: ElementRef },] }],
549
- menuItems: [{ type: ViewChildren, args: [MenubaritemDirective,] }],
550
- itemComponentList: [{ type: ContentChildren, args: [MenuNavigationItemComponent,] }],
551
- classes: [{ type: Input }, { type: HostBinding, args: ['class',] }],
552
- cfg: [{ type: HostBinding, args: ['class.c-menu-navigation',] }],
553
- id: [{ type: Input }, { type: HostBinding, args: ['attr.id',] }],
554
- roleData: [{ type: HostBinding, args: ['attr.role',] }],
555
- ariaLabelData: [{ type: HostBinding, args: ['attr.aria-label',] }],
556
- ariaDescribedbyData: [{ type: HostBinding, args: ['attr.aria-describedby',] }],
557
- ariaLabelledbyData: [{ type: HostBinding, args: ['attr.aria-labelledby',] }],
558
- ariaHiddenData: [{ type: HostBinding, args: ['attr.aria-hidden',] }],
559
- ariaDisabledData: [{ type: HostBinding, args: ['attr.aria-disabled',] }],
560
- ariaControlsData: [{ type: HostBinding, args: ['attr.aria-controls',] }],
561
- ariaCurrentData: [{ type: HostBinding, args: ['attr.aria-current',] }],
562
- ariaLiveData: [{ type: HostBinding, args: ['attr.aria-live',] }],
563
- ariaExpandedData: [{ type: HostBinding, args: ['attr.aria-expanded',] }],
564
- ariaErrormessageData: [{ type: HostBinding, args: ['attr.aria-errormessage',] }],
565
- ariaHaspopupData: [{ type: HostBinding, args: ['attr.aria-haspopup',] }],
566
- ariaModalData: [{ type: HostBinding, args: ['attr.aria-modal',] }]
567
- };
568
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1uYXZpZ2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc3ktYW5ndWxhci9zcmMvbGliL2Rlc3ktbmF2L2NvbXBvbmVudHMvbWVudS1uYXZpZ2F0aW9uL21lbnUtbmF2aWdhdGlvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFFTCxNQUFNLEVBR04sU0FBUyxFQUNULFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUdwRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNuRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQUMvRyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQztBQU14SCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsc0JBQXNCO0lBbUNqRSxZQUFvQixpQkFBb0M7UUFDdEQsS0FBSyxFQUFFLENBQUM7UUFEVSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBL0I5QyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUF3QixDQUFDO1FBQ3ZELHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFzQixDQUFDO1FBQzFELHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFnRSxDQUFDO1FBT3pFLFFBQUcsR0FBRyxJQUFJLENBQUE7UUFrQmxELGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakIsMEJBQXFCLEdBQUcsQ0FBQyxDQUFDO0lBSTFCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBdUI7UUFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJ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VyxTQUFDLFdBQVc7NEJBQ3ZCLFdBQVcsU0FBQyxpQkFBaUI7a0NBQzdCLFdBQVcsU0FBQyx1QkFBdUI7aUNBQ25DLFdBQVcsU0FBQyxzQkFBc0I7NkJBQ2xDLFdBQVcsU0FBQyxrQkFBa0I7K0JBQzlCLFdBQVcsU0FBQyxvQkFBb0I7K0JBQ2hDLFdBQVcsU0FBQyxvQkFBb0I7OEJBQ2hDLFdBQVcsU0FBQyxtQkFBbUI7MkJBQy9CLFdBQVcsU0FBQyxnQkFBZ0I7K0JBQzVCLFdBQVcsU0FBQyxvQkFBb0I7bUNBQ2hDLFdBQVcsU0FBQyx3QkFBd0I7K0JBQ3BDLFdBQVcsU0FBQyxvQkFBb0I7NEJBQ2hDLFdBQVcsU0FBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsIFxuICBDb21wb25lbnQsIFxuICBDb250ZW50Q2hpbGRyZW4sIFxuICBFbGVtZW50UmVmLCBcbiAgRXZlbnRFbWl0dGVyLCBcbiAgSG9zdEJpbmRpbmcsIFxuICBJbnB1dCwgXG4gIE9uQ2hhbmdlcywgXG4gIE91dHB1dCwgXG4gIFF1ZXJ5TGlzdCwgXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCwgXG4gIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWNjZXNzaWJpbGl0eUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9jb21wb25lbnRzJztcbmltcG9ydCB7IE1lbnVOYXZpZ2F0aW9uSXRlbVN1Ykl0ZW0sIE1lbnVOYXZpZ2F0aW9uSXRlbVN1Ykl0ZW1TdWJJdGVtIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBNZW51TmF2aWdhdGlvbkl0ZW0gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL21lbnUtbmF2aWdhdGlvbic7XG5pbXBvcnQgeyBNZW51YmFyaXRlbURpcmVjdGl2ZSB9IGZyb20gJy4uL21lbnViYXIvZGlyZWN0aXZlcy9tZW51YmFyaXRlbS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTWVudU5hdmlnYXRpb25JdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL21lbnUtbmF2aWdhdGlvbi1pdGVtL21lbnUtbmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNZW51TmF2aWdhdGlvblN1Yml0ZW1Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbWVudS1uYXZpZ2F0aW9uLXN1Yml0ZW0vbWVudS1uYXZpZ2F0aW9uLXN1Yml0ZW0uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGVzeS1tZW51LW5hdmlnYXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVudS1uYXZpZ2F0aW9uLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBNZW51TmF2aWdhdGlvbkNvbXBvbmVudCBleHRlbmRzIEFjY2Vzc2liaWxpdHlDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXR7XG5cbiAgQElucHV0KCkgaWRQcmVmaXg6IHN0cmluZztcbiAgQElucHV0KCkgaXRlbXM6IE1lbnVOYXZpZ2F0aW9uSXRlbVtdO1xuICBAT3V0cHV0KCkgaXRlbXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1lbnVOYXZpZ2F0aW9uSXRlbVtdPigpO1xuICBAT3V0cHV0KCkgYWN0aXZlSXRlbUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TWVudU5hdmlnYXRpb25JdGVtPigpO1xuICBAT3V0cHV0KCkgYWN0aXZlU3ViSXRlbUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TWVudU5hdmlnYXRpb25JdGVtU3ViSXRlbSB8IE1lbnVOYXZpZ2F0aW9uSXRlbVN1Ykl0ZW1TdWJJdGVtPigpO1xuXG4gIEBWaWV3Q2hpbGQoJ21lbnVuYXZpZ2F0aW9uJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIG1lbnVuYXZpZ2F0aW9uOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkcmVuKE1lbnViYXJpdGVtRGlyZWN0aXZlKSBtZW51SXRlbXM6IFF1ZXJ5TGlzdDxNZW51YmFyaXRlbURpcmVjdGl2ZT47XG4gIEBDb250ZW50Q2hpbGRyZW4oTWVudU5hdmlnYXRpb25JdGVtQ29tcG9uZW50KSBpdGVtQ29tcG9uZW50TGlzdDogUXVlcnlMaXN0PE1lbnVOYXZpZ2F0aW9uSXRlbUNvbXBvbmVudD47XG5cbiAgQElucHV0KCkgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGNsYXNzZXM6IGFueTtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jLW1lbnUtbmF2aWdhdGlvbicpIGNmZyA9IHRydWVcbiAgQElucHV0KCkgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJykgaWQ6IGFueTtcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpIHJvbGVEYXRhOiBhbnk7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWxhYmVsJykgYXJpYUxhYmVsRGF0YTogYW55O1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1kZXNjcmliZWRieScpIGFyaWFEZXNjcmliZWRieURhdGE6IGFueTtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtbGFiZWxsZWRieScpIGFyaWFMYWJlbGxlZGJ5RGF0YTogYW55O1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1oaWRkZW4nKSBhcmlhSGlkZGVuRGF0YTogYW55O1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1kaXNhYmxlZCcpIGFyaWFEaXNhYmxlZERhdGE6IGFueTtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtY29udHJvbHMnKSBhcmlhQ29udHJvbHNEYXRhOiBhbnk7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWN1cnJlbnQnKSBhcmlhQ3VycmVudERhdGE6IGFueTtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtbGl2ZScpIGFyaWFMaXZlRGF0YTogYW55O1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1leHBhbmRlZCcpIGFyaWFFeHBhbmRlZERhdGE6IGFueTtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZXJyb3JtZXNzYWdlJykgYXJpYUVycm9ybWVzc2FnZURhdGE6IGFueTtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtaGFzcG9wdXAnKSBhcmlhSGFzcG9wdXBEYXRhOiBhbnk7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLW1vZGFsJykgYXJpYU1vZGFsRGF0YTogYW55O1xuXG4gIG1lbnVEYXRhOiBhbnlbXTtcbiAgdmlld0luaXQgPSBmYWxzZTtcbiAgaXNGb2N1c2VkOiBib29sZWFuO1xuICBjdXJyZW50Rm9jdXNJdGVtSW5kZXggPSAwO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM/OiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy5yb2xlRGF0YSA9IHRoaXMucm9sZSA/IHRoaXMucm9sZSA6IG51bGw7XG4gICAgdGhpcy5hcmlhTGFiZWxEYXRhID0gdGhpcy5hcmlhTGFiZWwgPyB0aGlzLmFyaWFMYWJlbCA6IG51bGw7XG4gICAgdGhpcy5hcmlhRGVzY3JpYmVkYnlEYXRhID0gdGhpcy5hcmlhRGVzY3JpYmVkQnkgPyB0aGlzLmFyaWFEZXNjcmliZWRCeSA6IG51bGw7XG4gICAgdGhpcy5hcmlhTGFiZWxsZWRieURhdGEgPSB0aGlzLmFyaWFMYWJlbGxlZEJ5ID8gdGhpcy5hcmlhTGFiZWxsZWRCeSA6IG51bGw7XG4gICAgdGhpcy5hcmlhSGlkZGVuRGF0YSA9IHRoaXMuYXJpYUhpZGRlbiA/IHRoaXMuYXJpYUhpZGRlbiA6IG51bGw7XG4gICAgdGhpcy5hcmlhRGlzYWJsZWREYXRhID0gdGhpcy5hcmlhRGlzYWJsZWQgPyB0aGlzLmFyaWFEaXNhYmxlZCA6IG51bGw7XG4gICAgdGhpcy5hcmlhQ29udHJvbHNEYXRhID0gdGhpcy5hcmlhQ29udHJvbHMgPyB0aGlzLmFyaWFDb250cm9scyA6IG51bGw7XG4gICAgdGhpcy5hcmlhQ3VycmVudERhdGEgPSB0aGlzLmFyaWFDdXJyZW50ID8gdGhpcy5hcmlhQ3VycmVudCA6IG51bGw7XG4gICAgdGhpcy5hcmlhTGl2ZURhdGEgPSB0aGlzLmFyaWFMaXZlID8gdGhpcy5hcmlhTGl2ZSA6IG51bGw7XG4gICAgdGhpcy5hcmlhRXhwYW5kZWREYXRhID0gdGhpcy5hcmlhRXhwYW5kZWQgPyB0aGlzLmFyaWFFeHBhbmRlZCA6IG51bGw7XG4gICAgdGhpcy5hcmlhRXJyb3JtZXNzYWdlRGF0YSA9IHRoaXMuYXJpYUVycm9yTWVzc2FnZSA/IHRoaXMuYXJpYUVycm9yTWVzc2FnZSA6IG51bGw7XG4gICAgdGhpcy5hcmlhSGFzcG9wdXBEYXRhID0gdGhpcy5hcmlhSGFzUG9wdXAgPyB0aGlzLmFyaWFIYXNQb3B1cCA6IG51bGw7XG4gICAgdGhpcy5hcmlhTW9kYWxEYXRhID0gdGhpcy5hcmlhTW9kYWwgPyB0aGlzLmFyaWFNb2RhbCA6IG51bGw7XG4gICAgaWYgKHRoaXMudmlld0luaXQpIHtcbiAgICAgIHRoaXMuY2hlY2tDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMudmlld0luaXQgPSB0cnVlO1xuICAgIHRoaXMuY2hlY2tDaGFuZ2VzKCk7XG4gIH1cblxuICBjaGVja0NoYW5nZXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm1lbnVJdGVtcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBcbiAgICB0aGlzLm1lbnVEYXRhID0gW107XG4gICAgdGhpcy5nZXRJdGVtcygpLmZvckVhY2goKF8sIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBpdGVtRGF0YSA9IHtcbiAgICAgICAgb3BlbjogZmFsc2UsXG4gICAgICAgIGN1cnJlbnRGb2N1c1N1Ykl0ZW1JbmRleDogMCxcbiAgICAgICAgY3VycmVudEZvY3VzU3ViU3ViSXRlbUluZGV4OiAwLFxuICAgICAgICBtZW51SXRlbTogdGhpcy5tZW51SXRlbXMudG9BcnJheSgpW2luZGV4XVxuICAgICAgfTtcbiAgICAgIHRoaXMubWVudURhdGEucHVzaChpdGVtRGF0YSk7XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy52aWV3SW5pdCkge1xuICAgICAgdGhpcy5jaGVja1JlcXVpcmVkKCk7XG4gICAgfVxuXG5cbiAgICBjb25zdCBsYXN0Q3VycmVudEZvY3VzSXRlbUluZGV4ID0gdGhpcy5jdXJyZW50Rm9jdXNJdGVtSW5kZXg7XG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLmdldEl0ZW1zKCk7XG4gICAgaWYgKGl0ZW1zKSB7XG4gICAgICB3aGlsZSAoIXRoaXMuaXNJdGVtRm9jdXNhYmxlKHRoaXMuY3VycmVudEZvY3VzSXRlbUluZGV4ICUgaXRlbXMubGVuZ3RoKSkge1xuICAgICAgICB0aGlzLmN1cnJlbnRGb2N1c0l0ZW1JbmRleCA9ICh0aGlzLmN1cnJlbnRGb2N1c0l0ZW1JbmRleCArIGl0ZW1zLmxlbmd0aCArIDEpICUgaXRlbXMubGVuZ3RoO1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50Rm9jdXNJdGVtSW5kZXggPT09IGxhc3RDdXJyZW50Rm9jdXNJdGVtSW5kZXgpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG5cbiAgLypcbiAgICogRXZlbnRvc1xuICAgKi9cblxuICBoYW5kbGVNZW51Rm9jdXNJbigpOiB2b2lkIHtcbiAgICB0aGlzLmlzRm9jdXNlZCA9IHRydWU7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBoYW5kbGVNZW51Rm9jdXNPdXQoZXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubWVudW5hdmlnYXRpb24ubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC5yZWxhdGVkVGFyZ2V0KSkge1xuICAgICAgdGhpcy5jbG9zZU1lbnUoKTtcbiAgICB9XG4gICAgdGhpcy5pc0ZvY3VzZWQgPSBmYWxzZTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGhhbmRsZU1lbnVJdGVtQ2xpY2soZXZlbnQsIGl0ZW1JbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFzUG9wdXBNZW51KGl0ZW1JbmRleCkpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBjb25zdCBpc09wZW4gPSB0aGlzLm1lbnVEYXRhW2l0ZW1JbmRleF0ub3BlbjtcbiAgICAgIHRoaXMuY2xvc2VNZW51KCk7XG4gICAgICBpZiAoIWlzT3Blbikge1xuICAgICAgICB0aGlzLm9wZW5NZW51KGl0ZW1JbmRleCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWN0aXZhdGVNZW51SXRlbShpdGVtSW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZU1lbnVJdGVtS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCwgaXRlbUluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgY2FzZSAnICc6XG4gICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICBpZiAodGhpcy5oYXNQb3B1cE1lbnUoaXRlbUluZGV4KSkge1xuICAgICAgICAgIHRoaXMub3Blbk1lbnUoaXRlbUluZGV4KTtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuZm9jdXNGaXJzdFN1Ykl0ZW0oaXRlbUluZGV4KSk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgaWYgKHRoaXMuaGFzUG9wdXBNZW51KGl0ZW1JbmRleCkpIHtcbiAgICAgICAgICB0aGlzLmNsb3NlTWVudShpdGVtSW5kZXgpO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgdGhpcy5mb2N1c05leHRBdmFpbGFibGVJdGVtKGl0ZW1JbmRleCwgLTEpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICB0aGlzLmZvY3VzTmV4dEF2YWlsYWJsZUl0ZW0oaXRlbUluZGV4LCArMSk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgIGlmICh0aGlzLmhhc1BvcHVwTWVudShpdGVtSW5kZXgpKSB7XG4gICAgICAgICAgdGhpcy5vcGVuTWVudShpdGVtSW5kZXgpO1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5mb2N1c0xhc3RTdWJJdGVtKGl0ZW1JbmRleCkpO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnSG9tZSc6XG4gICAgICBjYXNlICdQYWdlVXAnOlxuICAgICAgICBpZiAodGhpcy5oYXNQb3B1cE1lbnUoaXRlbUluZGV4KSkge1xuICAgICAgICAgIHRoaXMuY2xvc2VNZW51KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5mb2N1c0ZpcnN0SXRlbSgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ0VuZCc6XG4gICAgICBjYXNlICdQYWdlRG93bic6XG4gICAgICAgIGlmICh0aGlzLmhhc1BvcHVwTWVudShpdGVtSW5kZXgpKSB7XG4gICAgICAgICAgdGhpcy5jbG9zZU1lbnUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZvY3VzTGFzdEl0ZW0oKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAodGhpcy5pc1ByaW50YWJsZUNoYXIoZXZlbnQua2V5KSkge1xuICAgICAgICAgIHRoaXMuZm9jdXNJdGVtQnlGaXJzdENoYXIoZXZlbnQua2V5KTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZU1lbnVJdGVtTW91c2VPdmVyKGl0ZW1JbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5mb2N1c0l0ZW0oaXRlbUluZGV4LCB0cnVlKTtcbiAgfVxuXG4gIGhhbmRsZVBvcHVwTWVudUl0ZW1DbGljayhpdGVtSW5kZXg6IG51bWJlciwgc3ViSXRlbUluZGV4OiBudW1iZXIsIHN1YlN1Ykl0ZW1JbmRleD86IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuYWN0aXZhdGVQb3B1cE1lbnVJdGVtKGl0ZW1JbmRleCwgc3ViSXRlbUluZGV4LCBzdWJTdWJJdGVtSW5kZXgpO1xuICAgIHRoaXMuZm9jdXNJdGVtKGl0ZW1JbmRleCk7XG4gICAgdGhpcy5jbG9zZU1lbnUoaXRlbUluZGV4KTtcbiAgfVxuXG4gIGhhbmRsZVBvcHVwTWVudUl0ZW1LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBpdGVtSW5kZXg6IG51bWJlciwgc3ViSXRlbUluZGV4OiBudW1iZXIsIHN1YlN1Ykl0ZW1JbmRleD86IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRTdWJJbmRleCA9IHRoaXMubWVudURhdGFbaXRlbUluZGV4XS5jdXJyZW50Rm9jdXNTdWJJdGVtSW5kZXg7XG4gICAgY29uc3QgY3VycmVudFN1YlN1YkluZGV4ID0gdGhpcy5tZW51RGF0YVtpdGVtSW5kZXhdLmN1cnJlbnRGb2N1c1N1YlN1Ykl0ZW1JbmRleDtcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuZ2V0SXRlbXMoKTtcbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnICc6XG4gICAgICAgIHRoaXMuYWN0aXZhdGVQb3B1cE1lbnVJdGVtKGl0ZW1JbmRleCwgc3ViSXRlbUluZGV4LCBzdWJTdWJJdGVtSW5kZXgpO1xuICAgICAgICBpZiAodGhpcy5tdXN0Q2xvc2VBZnRlclNlbGVjdFBvcHVwSXRlbShpdGVtSW5kZXgsIHN1Ykl0ZW1JbmRleCwgc3ViU3ViSXRlbUluZGV4KSkge1xuICAgICAgICAgIHRoaXMuY2xvc2VNZW51KGl0ZW1JbmRleCk7XG4gICAgICAgICAgdGhpcy5mb2N1c0l0ZW0oaXRlbUluZGV4KTtcbiAgICAgICAgfVxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgdGhpcy5hY3RpdmF0ZVBvcHVwTWVudUl0ZW0oaXRlbUluZGV4LCBzdWJJdGVtSW5kZXgsIHN1YlN1Ykl0ZW1JbmRleCk7XG4gICAgICAgIHRoaXMuY2xvc2VNZW51KGl0ZW1JbmRleCk7XG4gICAgICAgIHRoaXMuZm9jdXNJdGVtKGl0ZW1JbmRleCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgdGhpcy5jbG9zZU1lbnUoaXRlbUluZGV4KTtcbiAgICAgICAgdGhpcy5mb2N1c0l0ZW0oaXRlbUluZGV4KTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgdGhpcy5mb2N1c05leHRBdmFpbGFibGVTdWJJdGVtKGl0ZW1JbmRleCwgY3VycmVudFN1YkluZGV4LCBjdXJyZW50U3ViU3ViSW5kZXgsIC0xKTtcbiAgICAgICAgLy8gdGhpcy5mb2N1c1N1Ykl0ZW0oaXRlbUluZGV4LCAoY3VycmVudFN1YkluZGV4ICsgbGlzdExlbmd0aCAtIDEpICUgbGlzdExlbmd0aCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgdGhpcy5mb2N1c05leHRBdmFpbGFibGVTdWJJdGVtKGl0ZW1JbmRleCwgY3VycmVudFN1YkluZGV4LCBjdXJyZW50U3ViU3ViSW5kZXgsICsxKTtcbiAgICAgICAgLy8gdGhpcy5mb2N1c1N1Ykl0ZW0oaXRlbUluZGV4LCAoY3VycmVudFN1YkluZGV4ICsgbGlzdExlbmd0aCArIDEpICUgbGlzdExlbmd0aCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgdGhpcy5jbG9zZU1lbnUoaXRlbUluZGV4KTtcbiAgICAgICAgdGhpcy5mb2N1c0l0ZW0oKGl0ZW1JbmRleCArIGl0ZW1zLmxlbmd0aCAtIDEpICUgaXRlbXMubGVuZ3RoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdBcnJvd1JpZ2h0JzpcbiAgICAgICAgdGhpcy5jbG9zZU1lbnUoaXRlbUluZGV4KTtcbiAgICAgICAgdGhpcy5mb2N1c0l0ZW0oKGl0ZW1JbmRleCArIGl0ZW1zLmxlbmd0aCArIDEpICUgaXRlbXMubGVuZ3RoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdIb21lJzpcbiAgICAgIGNhc2UgJ1BhZ2VVcCc6XG4gICAgICAgIHRoaXMuZm9jdXNGaXJzdFN1Ykl0ZW0oaXRlbUluZGV4KTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdFbmQnOlxuICAgICAgY2FzZSAnUGFnZURvd24nOlxuICAgICAgICB0aGlzLmZvY3VzTGFzdFN1Ykl0ZW0oaXRlbUluZGV4KTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdUYWInOlxuICAgICAgICB0aGlzLmNsb3NlTWVudShpdGVtSW5kZXgpO1xuICAgICAgICB0aGlzLmZvY3VzSXRlbShpdGVtSW5kZXgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKHRoaXMuaXNQcmludGFibGVDaGFyKGV2ZW50LmtleSkpIHtcbiAgICAgICAgICB0aGlzLmZvY3VzU3ViSXRlbUJ5Rmlyc3RDaGFyKGl0ZW1JbmRleCwgZXZlbnQua2V5KTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVBvcHVwTWVudUl0ZW1Nb3VzZU92ZXIoaXRlbUluZGV4OiBudW1iZXIsIHN1Ykl0ZW1JbmRleDogbnVtYmVyLCBzdWJTdWJJdGVtSW5kZXg/OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmZvY3VzU3ViSXRlbShpdGVtSW5kZXgsIHN1Ykl0ZW1JbmRleCwgc3ViU3ViSXRlbUluZGV4KTtcbiAgfVxuXG4gIC8qXG4gICAqIENvbXVuZXNcbiAgICovXG5cbiAgY2hlY2tSZXF1aXJlZCgpOiB2b2lkIHtcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuZ2V0SXRlbXMoKTtcbiAgfVxuXG5cbiAgYWN0aXZhdGVNZW51SXRlbShpdGVtSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5nZXRJdGVtcygpO1xuICAgIHRoaXMuYWN0aXZlSXRlbUNoYW5nZS5lbWl0KGl0ZW1zW2l0ZW1JbmRleF0gYXMgTWVudU5hdmlnYXRpb25JdGVtKTtcbiAgICBpZiAoaXRlbXNbaXRlbUluZGV4XSBpbnN0YW5jZW9mIE1lbnVOYXZpZ2F0aW9uSXRlbUNvbXBvbmVudCkge1xuICAgICAgKGl0ZW1zW2l0ZW1JbmRleF0gYXMgTWVudU5hdmlnYXRpb25JdGVtQ29tcG9uZW50KS5zZWxlY3RlZC5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgYWN0aXZhdGVQb3B1cE1lbnVJdGVtKGl0ZW1JbmRleDogbnVtYmVyLCBzdWJJdGVtSW5kZXg6IG51bWJlciwgc3ViU3ViSXRlbUluZGV4PzogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLmdldEl0ZW1zKCk7XG4gICAgY29uc3Qgc3ViSXRlbXMgPSB0aGlzLmdldEl0ZW1TdWJpdGVtcyhpdGVtc1tpdGVtSW5kZXhdKTtcbiAgICBsZXQgaXRlbTogTWVudU5hdmlnYXRpb25JdGVtU3ViSXRlbXxNZW51TmF2aWdhdGlvbkl0ZW1TdWJJdGVtU3ViSXRlbSA9IHN1Ykl0ZW1zW3N1Ykl0ZW1JbmRleF07ICAgICAgICBcblxuICAgIHRoaXMuaXRlbXNDaGFuZ2UuZW1pdChpdGVtcyk7XG4gICAgdGhpcy5hY3RpdmVTdWJJdGVtQ2hhbmdlLmVtaXQoaXRlbSBhcyBNZW51TmF2aWdhdGlvbkl0ZW0pO1xuICAgIGlmIChpdGVtIGluc3RhbmNlb2YgTWVudU5hdmlnYXRpb25TdWJpdGVtQ29tcG9uZW50KSB7XG4gICAgICBpdGVtLnNlbGVjdGVkLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICBtdXN0Q2xvc2VBZnRlclNlbGVjdFBvcHVwSXRlbShpdGVtSW5kZXg6IG51bWJlciwgc3ViSXRlbUluZGV4OiBudW1iZXIsIHN1YlN1Ykl0ZW1JbmRleD86IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5nZXRJdGVtcygpO1xuICAgIGNvbnN0IHN1Ykl0ZW1zID0gdGhpcy5nZXRJdGVtU3ViaXRlbXMoaXRlbXNbaXRlbUluZGV4XSk7XG4gICAgbGV0IGl0ZW06IE1lbnVOYXZpZ2F0aW9uSXRlbVN1Ykl0ZW18TWVudU5hdmlnYXRpb25JdGVtU3ViSXRlbVN1Ykl0ZW0gPSBzdWJJdGVtc1tzdWJJdGVtSW5kZXhdO1xuXG4gICAgcmV0dXJuIGl0ZW0ucm9sZSAhPT0gJ21lbnVpdGVtY2hlY2tib3gnICYmIGl0ZW0ucm9sZSAhPT0gJ21lbnVpdGVtcmFkaW8nO1xuICB9XG5cbiAgb3Blbk1lbnUoaXRlbUluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCB3YXNPcGVuZWQgPSB0aGlzLm1lbnVEYXRhW2l0ZW1JbmRleF0ub3BlbjtcbiAgICB0aGlzLm1lbnVEYXRhW2l0ZW1JbmRleF0ub3BlbiA9IHRydWU7XG4gICAgaWYgKHdhc09wZW5lZCkge1xuICAgICAgdGhpcy5hY3RpdmF0ZU1lbnVJdGVtKGl0ZW1JbmRleCk7XG4gICAgfVxuICB9XG5cbiAgY2xvc2VNZW51KGl0ZW1JbmRleD86IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChpdGVtSW5kZXggIT09IG51bGwgJiYgaXRlbUluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMubWVudURhdGFbaXRlbUluZGV4XS5vcGVuID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWVudURhdGEuZm9yRWFjaChpdGVtID0+IGl0ZW0ub3BlbiA9IGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBoYXNQb3B1cE1lbnUoaXRlbUluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuZ2V0SXRlbXMoKTtcbiAgICBjb25zdCBzdWJJdGVtcyA9IHRoaXMuZ2V0SXRlbVN1Yml0ZW1zKGl0ZW1zW2l0ZW1JbmRleF0pO1xuICAgIHJldHVybiBpdGVtc1tpdGVtSW5kZXhdLnN1YiAmJiBzdWJJdGVtcyAmJiBzdWJJdGVtcy5sZW5ndGggPiAwO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1ByaW50YWJsZUNoYXIoc3RyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3RyLmxlbmd0aCA9PT0gMSAmJiAhIXN0ci5tYXRjaCgvXFxTLyk7XG4gIH1cblxuICBcblxuICAvKlxuICAgKiBDb211bmVzIC0gZm9jdXNcbiAgICovXG5cbiAgZm9jdXNJdGVtKGl0ZW1JbmRleDogbnVtYmVyLCBob3Zlcj86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBoYXNGb2N1cyA9IHRoaXMubWVudW5hdmlnYXRpb24ubmF0aXZlRWxlbWVudC5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KTtcbiAgICBjb25zdCBpc09wZW4gPSB0aGlzLm1lbnVEYXRhW3RoaXMuY3VycmVudEZvY3VzSXRlbUluZGV4XS5vcGVuO1xuXG4gICAgaWYgKCFob3ZlciB8fCBoYXNGb2N1cykge1xuICAgICAgdGhpcy5tZW51RGF0YVtpdGVtSW5kZXhdLm1lbnVJdGVtLmxpbmsubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIHRoaXMuY2xvc2VNZW51KCk7XG4gICAgaWYgKGlzT3BlbiAmJiB0aGlzLmhhc1BvcHVwTWVudShpdGVtSW5kZXgpKSB7XG4gICAgICB0aGlzLm9wZW5NZW51KGl0ZW1JbmRleCk7XG4gICAgfVxuXG4gICAgdGhpcy5jdXJyZW50Rm9jdXNJdGVtSW5kZXggPSBpdGVtSW5kZXg7XG4gIH1cblxuICBmb2N1c05leHRBdmFpbGFibGVJdGVtKGZyb21JdGVtSW5kZXg6IG51bWJlciwgc3RlcDogbnVtYmVyKTogdm9pZCB7XG4gICAgbGV0IG5leHRJdGVtID0gZnJvbUl0ZW1JbmRleDtcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuZ2V0SXRlbXMoKTtcbiAgICBkbyB7XG4gICAgICBuZXh0SXRlbSA9IChuZXh0SXRlbSArIGl0ZW1zLmxlbmd0aCArIHN0ZXApICUgaXRlbXMubGVuZ3RoO1xuICAgIH0gd2hpbGUgKCF0aGlzLmlzSXRlbUZvY3VzYWJsZShuZXh0SXRlbSkgJiYgbmV4dEl0ZW0gIT09IGZyb21JdGVtSW5kZXgpO1xuXG4gICAgaWYgKG5leHRJdGVtICE9PSBmcm9tSXRlbUluZGV4KSB7XG4gICAgICB0aGlzLmZvY3VzSXRlbShuZXh0SXRlbSk7XG4gICAgfVxuICB9XG5cbiAgZm9jdXNGaXJzdEl0ZW0oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNJdGVtRm9jdXNhYmxlKDApKSB7XG4gICAgICB0aGlzLmZvY3VzSXRlbSgwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb2N1c05leHRBdmFpbGFibGVJdGVtKDAsICsxKTtcbiAgICB9XG4gIH1cblxuICBmb2N1c0xhc3RJdGVtKCk6IHZvaWQge1xuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5nZXRJdGVtcygpO1xuICAgIGlmICh0aGlzLmlzSXRlbUZvY3VzYWJsZShpdGVtcy5sZW5ndGggLSAxKSkge1xuICAgICAgdGhpcy5mb2N1c0l0ZW0oaXRlbXMubGVuZ3RoIC0gMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9jdXNOZXh0QXZhaWxhYmxlSXRlbShpdGVtcy5sZW5ndGggLSAxLCAtMSk7XG4gICAgfVxuICB9XG5cbiAgaXNJdGVtRm9jdXNhYmxlKGl0ZW1JbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmdldEl0ZW1zKClbaXRlbUluZGV4XS5kaXNhYmxlZDtcbiAgfVxuXG4gIGZvY3VzSXRlbUJ5Rmlyc3RDaGFyKGNoYXI6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGl0ZW1Db250ZW50czogc3RyaW5nW10gPSB0aGlzLm1lbnVJdGVtcy5tYXAobWVudUl0ZW0gPT4gbWVudUl0ZW0uaXRlbUNvbnRlbnRXcmFwcGVyLm5hdGl2ZUVsZW1lbnQudGV4dENvbnRlbnQpO1xuICAgIGxldCBpbmRleCA9IHRoaXMuY3VycmVudEZvY3VzSXRlbUluZGV4O1xuICAgIGxldCBmb3VuZEluZGV4ID0gLTE7XG4gICAgZG8ge1xuICAgICAgaW5kZXggPSAoaW5kZXggKyBpdGVtQ29udGVudHMubGVuZ3RoICsgMSkgJSBpdGVtQ29udGVudHMubGVuZ3RoO1xuICAgICAgaWYgKGl0ZW1Db250ZW50c1tpbmRleF0gJiYgaXRlbUNvbnRlbnRzW2luZGV4XS50cmltKCkuc3Vic3RyKDAsIDEpLnRvTG93ZXJDYXNlKCkgPT09IGNoYXIudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICYmIHRoaXMuaXNJdGVtRm9jdXNhYmxlKGluZGV4KSkge1xuICAgICAgICBmb3VuZEluZGV4ID0gaW5kZXg7XG4gICAgICB9XG4gICAgfSB3aGlsZSAoZm91bmRJbmRleCA9PT0gLTEgJiYgaW5kZXggIT09IHRoaXMuY3VycmVudEZvY3VzSXRlbUluZGV4KTtcblxuICAgIGlmIChmb3VuZEluZGV4ID49IDApIHtcbiAgICAgIHRoaXMuZm9jdXNJdGVtKGZvdW5kSW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIGZvY3VzU3ViSXRlbShpdGVtSW5kZXg6IG51bWJlciwgc3ViSXRlbUluZGV4OiBudW1iZXIsIHN1YlN1Ykl0ZW1JbmRleD86IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLm1lbnVEYXRhW2l0ZW1JbmRleF0ubWVudUl0ZW0ucG9wdXBNZW51SXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgbWVudURhdGFJbmRleCA9IHN1Ykl0ZW1JbmRleDtcbiAgICAgIHRoaXMubWVudURhdGFbaXRlbUluZGV4XS5jdXJyZW50Rm9jdXNTdWJJdGVtSW5kZXggPSBzdWJJdGVtSW5kZXg7XG4gICAgICB0aGlzLm1lbnVEYXRhW2l0ZW1JbmRleF0uY3VycmVudEZvY3VzU3ViU3ViSXRlbUluZGV4ID0gc3ViU3ViSXRlbUluZGV4O1xuICAgICAgY29uc3QgZWxlbSA9IHRoaXMubWVudURhdGFbaXRlbUluZGV4XS5tZW51SXRlbS5wb3B1cE1lbnVJdGVtcy50b0FycmF5KClbbWVudURhdGFJbmRleF0ubmF0aXZlRWxlbWVudDtcbiAgICAgIGlmIChlbGVtKSB7XG4gICAgICAgIGVsZW0uZm9jdXMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ05vIHN1Yml0ZW0gdG8gZm9jdXMnKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcignTm8gc3ViaXRlbXMnKTtcbiAgICB9XG4gIH1cblxuICBmb2N1c05leHRBdmFpbGFibGVTdWJJdGVtKGl0ZW1JbmRleDogbnVtYmVyLCBmcm9tSXRlbVN1YkluZGV4OiBudW1iZXIsIGZyb21JdGVtU3ViU3ViSW5kZXg6IG51bWJlciwgc3RlcDogbnVtYmVyKTogdm9pZCB7XG4gICAgbGV0IG5leHRTdWJJbmRleCA9IGZyb21JdGVtU3ViSW5kZXg7XG4gICAgbGV0IG5leHRTdWJTdWJJbmRleCA9IGZyb21JdGVtU3ViU3ViSW5kZXg7XG4gICAgbGV0IGFsbFN1Ykl0ZW1zQ2hlY2tlZDtcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuZ2V0SXRlbXMoKTtcbiAgICBkbyB7XG4gICAgICBjb25zdCBuZXh0SW5kZXhlcyA9IHRoaXMuZ2V0TmV4dFN1Ykl0ZW1JbmRleGVzKGl0ZW1zLCBpdGVtSW5kZXgsIG5leHRTdWJJbmRleCwgbmV4dFN1YlN1YkluZGV4LCBzdGVwKTtcbiAgICAgIG5leHRTdWJJbmRleCA9IG5leHRJbmRleGVzLnN1YkluZGV4O1xuICAgICAgbmV4dFN1YlN1YkluZGV4ID0gbmV4dEluZGV4ZXMuc3ViU3ViSW5kZXg7XG4gICAgICBhbGxTdWJJdGVtc0NoZWNrZWQgPSAoZnJvbUl0ZW1TdWJJbmRleCA9PT0gbmV4dFN1YkluZGV4ICYmIGZyb21JdGVtU3ViU3ViSW5kZXggPT09IG5leHRTdWJTdWJJbmRleCk7XG4gICAgfSB3aGlsZSAoIXRoaXMuaXNTdWJJdGVtRm9jdXNhYmxlKGl0ZW1JbmRleCwgbmV4dFN1YkluZGV4LCBuZXh0U3ViU3ViSW5kZXgpICYmICFhbGxTdWJJdGVtc0NoZWNrZWQpO1xuXG4gICAgaWYgKCFhbGxTdWJJdGVtc0NoZWNrZWQpIHtcbiAgICAgIHRoaXMuZm9jdXNTdWJJdGVtKGl0ZW1JbmRleCwgbmV4dFN1YkluZGV4LCBuZXh0U3ViU3ViSW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIGZvY3VzRmlyc3RTdWJJdGVtKGl0ZW1JbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgbGV0IGZpcnN0U3ViU3ViSXRlbSA9IG51bGw7XG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLmdldEl0ZW1zKCk7XG4gICAgY29uc3Qgc3ViSXRlbXMgPSB0aGlzLmdldEl0ZW1TdWJpdGVtcyhpdGVtc1tpdGVtSW5kZXhdKTtcbiAgICBpZiAoc3ViSXRlbXMgJiYgc3ViSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgZmlyc3RTdWJTdWJJdGVtID0gMDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc1N1Ykl0ZW1Gb2N1c2FibGUoaXRlbUluZGV4LCAwLCBmaXJzdFN1YlN1Ykl0ZW0pKSB7XG4gICAgICB0aGlzLmZvY3VzU3ViSXRlbShpdGVtSW5kZXgsIDAsIGZpcnN0U3ViU3ViSXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9jdXNOZXh0QXZhaWxhYmxlU3ViSXRlbShpdGVtSW5kZXgsIDAsIGZpcnN0U3ViU3ViSXRlbSwgKzEpO1xuICAgIH1cbiAgfVxuXG4gIGZvY3VzTGFzdFN1Ykl0ZW0oaXRlbUluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuZ2V0SXRlbXMoKTtcbiAgICBjb25zdCBzdWJJdGVtcyA9IHRoaXMuZ2V0SXRlbVN1Yml0ZW1zKGl0ZW1zW2l0ZW1JbmRleF0pO1xuICAgIGNvbnN0IGxhc3RJdGVtSW5kZXggPSBzdWJJdGVtcy5sZW5ndGggLSAxO1xuICAgIGNvbnN0IGxhc3RJdGVtID0gc3ViSXRlbXNbbGFzdEl0ZW1JbmRleF07XG4gICAgbGV0IGxhc3RTdWJTdWJJdGVtID0gbnVsbDtcblxuICAgIGlmICh0aGlzLmlzU3ViSXRlbUZvY3VzYWJsZShpdGVtSW5kZXgsIGxhc3RJdGVtSW5kZXgsIGxhc3RTdWJTdWJJdGVtKSkge1xuICAgICAgdGhpcy5mb2N1c1N1Ykl0ZW0oaXRlbUluZGV4LCBsYXN0SXRlbUluZGV4LCBsYXN0U3ViU3ViSXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9jdXNOZXh0QXZhaWxhYmxlU3ViSXRlbShpdGVtSW5kZXgsIGxhc3RJdGVtSW5kZXgsIGxhc3RTdWJTdWJJdGVtLCAtMSk7XG4gICAgfVxuICB9XG5cbiAgaXNTdWJJdGVtRm9jdXNhYmxlKGl0ZW1JbmRleDogbnVtYmVyLCBzdWJJdGVtSW5kZXg6IG51bWJlciwgc3ViU3ViSXRlbUluZGV4PzogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLmdldEl0ZW1zKCk7XG4gICAgY29uc3Qgc3ViSXRlbXMgPSB0aGlzLmdldEl0ZW1TdWJpdGVtcyhpdGVtc1tpdGVtSW5kZXhdKTtcbiAgICBsZXQgaXRlbTogTWVudU5hdmlnYXRpb25JdGVtU3ViSXRlbXxNZW51TmF2aWdhdGlvbkl0ZW1TdWJJdGVtU3ViSXRlbSA9IHN1Ykl0ZW1zW3N1Ykl0ZW1JbmRleF07XG5cbiAgICBsZXQgaXNGb2N1c2FibGUgPSBmYWxzZTtcbiAgICBpZiAoaXRlbS5yb2xlICE9PSAnc2VwYXJhdG9yJyAmJiBpdGVtLnJvbGUgIT09ICdub25lJykge1xuICAgICAgaXNGb2N1c2FibGUgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gaXNGb2N1c2FibGU7XG4gIH1cblxuICBmb2N1c1N1Ykl0ZW1CeUZpcnN0Q2hhcihpdGVtSW5kZXg6IG51bWJlciwgY2hhcjogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgaXRlbUNvbnRlbnRzOiBzdHJpbmdbXSA9IHRoaXMubWVudUl0ZW1zLnRvQXJyYXkoKVtpdGVtSW5kZXhdLnBvcHVwTWVudUl0ZW1zLm1hcChtZW51SXRlbSA9PiBtZW51SXRlbS5uYXRpdmVFbGVtZW50LnRleHRDb250ZW50KTtcbiAgICBsZXQgc3ViSXRlbUluZGV4ID0gdGhpcy5tZW51RGF0YVtpdGVtSW5kZXhdLmN1cnJlbnRGb2N1c1N1Ykl0ZW1JbmRleDtcbiAgICBsZXQgc3ViU3ViSXRlbUluZGV4ID0gdGhpcy5tZW51RGF0YVtpdGVtSW5kZXhdLmN1cnJlbnRGb2N1c1N1YlN1Ykl0ZW1JbmRleDtcbiAgICBsZXQgZm91bmRTdWJJbmRleCA9IC0xO1xuICAgIGxldCBmb3VuZFN1YlN1YkluZGV4ID0gbnVsbDtcbiAgICBsZXQgYWxsU3ViSXRlbXNDaGVja2VkID0gZmFsc2U7XG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLmdldEl0ZW1zKCk7XG4gICAgZG8ge1xuICAgICAgY29uc3QgbmV4dEluZGV4ZXMgPSB0aGlzLmdldE5leHRTdWJJdGVtSW5kZXhlcyhpdGVtcywgaXRlbUluZGV4LCBzdWJJdGVtSW5kZXgsIHN1YlN1Ykl0ZW1JbmRleCwgKzEpO1xuICAgICAgc3ViSXRlbUluZGV4ID0gbmV4dEluZGV4ZXMuc3ViSW5kZXg7XG4gICAgICBzdWJTdWJJdGVtSW5kZXggPSBuZXh0SW5kZXhlcy5zdWJTdWJJbmRleDtcbiAgICAgIGNvbnN0IGluZGV4ID0gc3ViSXRlbUluZGV4O1xuICAgICAgaWYgKGl0ZW1Db250ZW50c1tpbmRleF0gJiYgaXRlbUNvbnRlbnRzW2luZGV4XS50cmltKCkuc3Vic3RyKDAsIDEpLnRvTG93ZXJDYXNlKCkgPT09IGNoYXIudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICYmIHRoaXMuaXNTdWJJdGVtRm9jdXNhYmxlKGl0ZW1JbmRleCwgc3ViSXRlbUluZGV4LCBzdWJTdWJJdGVtSW5kZXgpKSB7XG4gICAgICAgIGZvdW5kU3ViSW5kZXggPSBzdWJJdGVtSW5kZXg7XG4gICAgICAgIGZvdW5kU3ViU3ViSW5kZXggPSBzdWJTdWJJdGVtSW5kZXg7XG4gICAgICB9XG4gICAgICBhbGxTdWJJdGVtc0NoZWNrZWQgPSAodGhpcy5tZW51RGF0YVtpdGVtSW5kZXhdLmN1cnJlbnRGb2N1c1N1Ykl0ZW1JbmRleCA9PT0gc3ViSXRlbUluZGV4XG4gICAgICAgICYmIHRoaXMubWVudURhdGFbaXRlbUluZGV4XS5jdXJyZW50Rm9jdXNTdWJTdWJJdGVtSW5kZXggPT09IHN1YlN1Ykl0ZW1JbmRleCk7XG4gICAgfSB3aGlsZSAoZm91bmRTdWJJbmRleCA9PT0gLTEgJiYgIWFsbFN1Ykl0ZW1zQ2hlY2tlZCk7XG5cbiAgICBpZiAoZm91bmRTdWJJbmRleCA+PSAwKSB7XG4gICAgICB0aGlzLmZvY3VzU3ViSXRlbShpdGVtSW5kZXgsIGZvdW5kU3ViSW5kZXgsIGZvdW5kU3ViU3ViSW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIC8qXG4gICAqIE1ldG9kb3MgcGFyYSBmYWNpbGl0YXIgY29udGVuaWRvXG4gICAqL1xuXG4gIGdldEl0ZW1zKCk6IE1lbnVOYXZpZ2F0aW9uSXRlbVtdfE1lbnVOYXZpZ2F0aW9uSXRlbUNvbXBvbmVudFtdIHtcbiAgICBsZXQgaXRlbXM7XG4gICAgaWYgKHRoaXMuaXRlbUNvbXBvbmVudExpc3QgJiYgdGhpcy5pdGVtQ29tcG9uZW50TGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICBpdGVtcyA9IHRoaXMuaXRlbUNvbXBvbmVudExpc3QudG9BcnJheSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpdGVtcyA9IHRoaXMuaXRlbXM7XG4gICAgfVxuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG4gIGdldEl0ZW1TdWJpdGVtcyhpdGVtOiBNZW51TmF2aWdhdGlvbkl0ZW18TWVudU5hdmlnYXRpb25JdGVtQ29tcG9uZW50KTogTWVudU5hdmlnYXRpb25JdGVtU3ViSXRlbVtdfE1lbnVOYXZpZ2F0aW9uU3ViaXRlbUNvbXBvbmVudFtdIHtcbiAgICBsZXQgc3ViSXRlbXMgPSBbXTtcbiAgICBpZiAoaXRlbSBpbnN0YW5jZW9mIE1lbnVOYXZpZ2F0aW9uSXRlbUNvbXBvbmVudCl7XG4gICAgICBzdWJJdGVtcyA9IGl0ZW0uZ2V0U3ViSXRlbXMoKTtcbiAgICB9XG5cbiAgICBpZiAoIXN1Ykl0ZW1zIHx8IHN1Ykl0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgc3ViSXRlbXMgPSBpdGVtLnN1YiA/IGl0ZW0uc3ViLml0ZW1zIDogW107XG4gICAgfVxuICAgIHJldHVybiBzdWJJdGVtcztcbiAgfVxuXG4gIGdldE5leHRTdWJJdGVtSW5kZXhlcyhpdGVtcywgaXRlbUluZGV4LCBuZXh0U3ViSW5kZXgsIG5leHRTdWJTdWJJbmRleCwgc3RlcCk6IHsgc3ViSW5kZXg6IG51bWJlciwgc3ViU3ViSW5kZXg/OiBudW1iZXJ9IHtcbiAgICBjb25zdCBzdWJJdGVtcyA9IHRoaXMuZ2V0SXRlbVN1Yml0ZW1zKGl0ZW1zW2l0ZW1JbmRleF0pO1xuXG4gICAgbGV0IGNoZWNrTmV4dFN1Ykl0ZW0gPSB0cnVlO1xuICAgIGlmIChjaGVja05leHRTdWJJdGVtKSB7XG4gICAgICBuZXh0U3ViSW5kZXggPSAobmV4dFN1YkluZGV4ICsgc3RlcCArIHN1Ykl0ZW1zLmxlbmd0aCkgJSBzdWJJdGVtcy5sZW5ndGg7XG4gICAgfSAgXG4gICAgcmV0dXJuIHtzdWJJbmRleDogbmV4dFN1YkluZGV4LCBzdWJTdWJJbmRleDogbmV4dFN1YlN1YkluZGV4fTtcbiAgfVxuXG4gIGdldElkUHJlZml4KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaWRQcmVmaXggPyB0aGlzLmlkUHJlZml4IDogdGhpcy5pZCArICdtZW51bmF2aWdhdGlvbi1pdGVtJztcbiAgfVxuXG4gIGdldEl0ZW1JZChpdGVtLCBpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBsZXQgaWQ6IHN0cmluZztcbiAgICBpZiAoaXRlbSkge1xuICAgICAgaWYgKGl0ZW0uaWQpIHtcbiAgICAgICAgaWQgPSBpdGVtLmlkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWQgPSBpbmRleCA9PT0gMCA/IHRoaXMuZ2V0SWRQcmVmaXgoKSA6IGAke3RoaXMuZ2V0SWRQcmVmaXgoKX0tJHtpbmRleH1gO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaWQ7XG4gIH1cblxuICBnZXRQb3B1cFN0eWxlKGl0ZW1JbmRleDogbnVtYmVyKTogb2JqZWN0IHtcbiAgICBsZXQgc3R5bGUgPSB7fTtcbiAgICBpZiAodGhpcy5tZW51RGF0YSAmJiBpdGVtSW5kZXggPCB0aGlzLm1lbnVEYXRhLmxlbmd0aCkge1xuICAgICAgY29uc3QgbWVudUl0ZW0gPSB0aGlzLm1lbnVEYXRhW2l0ZW1JbmRleF0ubWVudUl0ZW07XG4gICAgICBjb25zdCByZWN0ID0gbWVudUl0ZW0ubGluay5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgaWYgKHRoaXMubWVudURhdGFbaXRlbUluZGV4XS5vcGVuKSB7XG4gICAgICAgIHN0eWxlID0ge1xuICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgIHRvcDogJzBweCcsXG4gICAgICAgICAgbGVmdDogJzBweCcsXG4gICAgICAgICAgekluZGV4OiAxMDAsXG4gICAgICAgICAgZGlzcGxheTogJ2Jsb2NrJ1xuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3R5bGUgPSB7XG4gICAgICAgICAgekluZGV4OiAwLFxuICAgICAgICAgIGRpc3BsYXk6ICdub25lJ1xuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdHlsZTtcbiAgfVxuXG4gIGdldFN1Ykl0ZW1JZChpdGVtLCBpbmRleDogbnVtYmVyLCBwYXJlbnRJZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgaWQ6IHN0cmluZztcbiAgICBpZiAoaXRlbSkge1xuICAgICAgaWYgKGl0ZW0uaWQpIHtcbiAgICAgICAgaWQgPSBpdGVtLmlkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWQgPSBpbmRleCA9PT0gMCA/IGBzdWItJHtwYXJlbnRJZH1gIDogYHN1Yi0ke3BhcmVudElkfS0ke2luZGV4fWA7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpZDtcbiAgfVxuICBcbn1cbiJdfQ==