desy-angular 6.0.0 → 6.0.2

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 (513) hide show
  1. package/README.md +21 -21
  2. package/bundles/desy-angular.umd.js +10693 -10672
  3. package/bundles/desy-angular.umd.js.map +1 -1
  4. package/bundles/desy-angular.umd.min.js +1 -1
  5. package/bundles/desy-angular.umd.min.js.map +1 -1
  6. package/desy-angular.d.ts +51 -50
  7. package/desy-angular.metadata.json +1 -1
  8. package/esm2015/desy-angular.js +52 -51
  9. package/esm2015/lib/desy-angular.module.js +38 -38
  10. package/esm2015/lib/desy-buttons/components/button/button.component.js +92 -92
  11. package/esm2015/lib/desy-buttons/components/button-loader/button-loader.component.js +50 -50
  12. package/esm2015/lib/desy-buttons/components/dropdown/dropdown.component.js +111 -111
  13. package/esm2015/lib/desy-buttons/components/listbox/listbox-item/listbox-item.component.js +26 -26
  14. package/esm2015/lib/desy-buttons/components/listbox/listbox-label/listbox-label.component.js +14 -14
  15. package/esm2015/lib/desy-buttons/components/listbox/listbox.component.js +265 -265
  16. package/esm2015/lib/desy-buttons/components/pill/pill.component.js +64 -64
  17. package/esm2015/lib/desy-buttons/components/toggle/toggle-off-state/toggle-off-state.component.js +15 -15
  18. package/esm2015/lib/desy-buttons/components/toggle/toggle-on-state/toggle-on-state.component.js +15 -15
  19. package/esm2015/lib/desy-buttons/components/toggle/toggle.component.js +44 -44
  20. package/esm2015/lib/desy-buttons/desy-buttons.module.js +53 -53
  21. package/esm2015/lib/desy-buttons/interfaces/listbox-item-data.js +2 -2
  22. package/esm2015/lib/desy-buttons/interfaces/listbox-label-data.js +2 -2
  23. package/esm2015/lib/desy-commons/components/content/content.component.js +14 -14
  24. package/esm2015/lib/desy-commons/components/description/description.component.js +15 -15
  25. package/esm2015/lib/desy-commons/components/divider/divider.component.js +15 -15
  26. package/esm2015/lib/desy-commons/components/icon/icon.component.js +15 -15
  27. package/esm2015/lib/desy-commons/components/title/title.component.js +14 -14
  28. package/esm2015/lib/desy-commons/desy-commons.module.js +36 -36
  29. package/esm2015/lib/desy-commons/interfaces/content-data.js +2 -2
  30. package/esm2015/lib/desy-commons/interfaces/description-data.js +2 -2
  31. package/esm2015/lib/desy-commons/interfaces/divider-data.js +2 -2
  32. package/esm2015/lib/desy-commons/interfaces/icon-data.js +2 -2
  33. package/esm2015/lib/desy-commons/interfaces/index.js +6 -6
  34. package/esm2015/lib/desy-commons/interfaces/title-data.js +2 -2
  35. package/esm2015/lib/desy-forms/components/character-count/character-count.component.js +109 -109
  36. package/esm2015/lib/desy-forms/components/checkboxes/checkbox-item/checkbox-item.component.js +188 -188
  37. package/esm2015/lib/desy-forms/components/checkboxes/checkboxes.component.js +226 -226
  38. package/esm2015/lib/desy-forms/components/date-input/date-input-day/date-input-day.component.js +38 -38
  39. package/esm2015/lib/desy-forms/components/date-input/date-input-divider/date-input-divider.component.js +19 -19
  40. package/esm2015/lib/desy-forms/components/date-input/date-input-item/date-input-item.component.js +13 -13
  41. package/esm2015/lib/desy-forms/components/date-input/date-input-month/date-input-month.component.js +38 -38
  42. package/esm2015/lib/desy-forms/components/date-input/date-input-year/date-input-year.component.js +36 -36
  43. package/esm2015/lib/desy-forms/components/date-input/date-input.component.js +222 -222
  44. package/esm2015/lib/desy-forms/components/error-message/error-message.component.js +28 -28
  45. package/esm2015/lib/desy-forms/components/fieldset/fieldset.component.js +44 -44
  46. package/esm2015/lib/desy-forms/components/fieldset/legend/legend.component.js +16 -16
  47. package/esm2015/lib/desy-forms/components/file-upload/file-upload.component.js +51 -51
  48. package/esm2015/lib/desy-forms/components/form-field/form-field.component.js +103 -103
  49. package/esm2015/lib/desy-forms/components/hint/hint.component.js +27 -27
  50. package/esm2015/lib/desy-forms/components/input/input.component.js +67 -67
  51. package/esm2015/lib/desy-forms/components/input-group/input-group-divider/input-group-divider.component.js +20 -20
  52. package/esm2015/lib/desy-forms/components/input-group/input-group-input/input-group-input.component.js +39 -39
  53. package/esm2015/lib/desy-forms/components/input-group/input-group-item/input-group-item.component.js +13 -13
  54. package/esm2015/lib/desy-forms/components/input-group/input-group-select/input-group-select.component.js +35 -35
  55. package/esm2015/lib/desy-forms/components/input-group/input-group.component.js +179 -179
  56. package/esm2015/lib/desy-forms/components/label/label.component.js +30 -30
  57. package/esm2015/lib/desy-forms/components/radios/radio-item/radio-item.component.js +144 -144
  58. package/esm2015/lib/desy-forms/components/radios/radios.component.js +233 -233
  59. package/esm2015/lib/desy-forms/components/search-bar/search-bar.component.js +45 -45
  60. package/esm2015/lib/desy-forms/components/select/option/option.component.js +17 -17
  61. package/esm2015/lib/desy-forms/components/select/option-group/option-group.component.js +17 -17
  62. package/esm2015/lib/desy-forms/components/select/select-item/select-item.component.js +14 -14
  63. package/esm2015/lib/desy-forms/components/select/select.component.js +64 -64
  64. package/esm2015/lib/desy-forms/components/template-driven-wrapper/template-driven-wrapper.component.js +12 -12
  65. package/esm2015/lib/desy-forms/components/textarea/textarea.component.js +60 -60
  66. package/esm2015/lib/desy-forms/components/tree/interfaces/itree-item.js +3 -3
  67. package/esm2015/lib/desy-forms/components/tree/interfaces/quit-tree-item-focus-options.js +2 -2
  68. package/esm2015/lib/desy-forms/components/tree/tree-checkbox/tree-checkbox.component.js +151 -151
  69. package/esm2015/lib/desy-forms/components/tree/tree-item/tree-item.component.js +370 -370
  70. package/esm2015/lib/desy-forms/components/tree/tree-items-generator/tree-items-generator.component.js +25 -25
  71. package/esm2015/lib/desy-forms/components/tree/tree-sub/tree-sub.component.js +14 -14
  72. package/esm2015/lib/desy-forms/components/tree/tree.component.js +408 -408
  73. package/esm2015/lib/desy-forms/desy-forms.module.js +130 -130
  74. package/esm2015/lib/desy-forms/directives/condition.directive.js +32 -32
  75. package/esm2015/lib/desy-forms/interfaces/accesibility-data.js +2 -2
  76. package/esm2015/lib/desy-forms/interfaces/error-message-data.js +2 -2
  77. package/esm2015/lib/desy-forms/interfaces/fieldset-data.js +2 -2
  78. package/esm2015/lib/desy-forms/interfaces/hint-data.js +2 -2
  79. package/esm2015/lib/desy-forms/interfaces/index.js +13 -13
  80. package/esm2015/lib/desy-forms/interfaces/item-checkbox-data.js +2 -2
  81. package/esm2015/lib/desy-forms/interfaces/item-date-input-data.js +2 -2
  82. package/esm2015/lib/desy-forms/interfaces/item-divider-date-input-data.js +2 -2
  83. package/esm2015/lib/desy-forms/interfaces/item-divider-input-group-data.js +2 -2
  84. package/esm2015/lib/desy-forms/interfaces/item-input-group-data.js +2 -2
  85. package/esm2015/lib/desy-forms/interfaces/item-radio-data.js +2 -2
  86. package/esm2015/lib/desy-forms/interfaces/item-radio-with-template-data.js +2 -2
  87. package/esm2015/lib/desy-forms/interfaces/label-data.js +2 -2
  88. package/esm2015/lib/desy-forms/interfaces/legend-data.js +2 -2
  89. package/esm2015/lib/desy-forms/interfaces/select-item-data.js +2 -2
  90. package/esm2015/lib/desy-modals/components/dialog/dialog.component.js +121 -121
  91. package/esm2015/lib/desy-modals/components/modal/modal-button-loader-primary/modal-button-loader-primary.component.js +20 -20
  92. package/esm2015/lib/desy-modals/components/modal/modal-button-loader-secondary/modal-button-loader-secondary.component.js +19 -19
  93. package/esm2015/lib/desy-modals/components/modal/modal-button-primary/modal-button-primary.component.js +19 -19
  94. package/esm2015/lib/desy-modals/components/modal/modal-button-secondary/modal-button-secondary.component.js +19 -19
  95. package/esm2015/lib/desy-modals/components/modal/modal.component.js +145 -145
  96. package/esm2015/lib/desy-modals/desy-modals.module.js +41 -41
  97. package/esm2015/lib/desy-modals/interfaces/dialog-options.js +2 -2
  98. package/esm2015/lib/desy-modals/interfaces/index.js +8 -8
  99. package/esm2015/lib/desy-modals/interfaces/modal-button-data.js +2 -2
  100. package/esm2015/lib/desy-modals/interfaces/modal-data.js +2 -2
  101. package/esm2015/lib/desy-modals/interfaces/modal-icon-data.js +2 -2
  102. package/esm2015/lib/desy-modals/interfaces/modal-options.js +2 -2
  103. package/esm2015/lib/desy-modals/interfaces/open-dialog-result.js +2 -2
  104. package/esm2015/lib/desy-modals/services/dialog.service.js +117 -117
  105. package/esm2015/lib/desy-nav/components/breadcrumbs/breadcrumbs-item/breadcrumbs-item.component.js +15 -15
  106. package/esm2015/lib/desy-nav/components/breadcrumbs/breadcrumbs.component.js +42 -42
  107. package/esm2015/lib/desy-nav/components/error-summary/error-summary-item/error-summary-item.component.js +15 -15
  108. package/esm2015/lib/desy-nav/components/error-summary/error-summary.component.js +46 -46
  109. package/esm2015/lib/desy-nav/components/footer/footer-meta/footer-meta-item/footer-meta-item.component.js +16 -16
  110. package/esm2015/lib/desy-nav/components/footer/footer-meta/footer-meta.component.js +23 -23
  111. package/esm2015/lib/desy-nav/components/footer/footer-navigation/footer-navigation-item/footer-navigation-item.component.js +16 -16
  112. package/esm2015/lib/desy-nav/components/footer/footer-navigation/footer-navigation.component.js +16 -16
  113. package/esm2015/lib/desy-nav/components/footer/footer.component.js +52 -52
  114. package/esm2015/lib/desy-nav/components/header/header-custom-navigation/header-custom-navigation.component.js +11 -0
  115. package/esm2015/lib/desy-nav/components/header/header-dropdown/header-dropdown.component.js +36 -36
  116. package/esm2015/lib/desy-nav/components/header/header-navigation/header-navigation-item/header-navigation-item.component.js +19 -19
  117. package/esm2015/lib/desy-nav/components/header/header-navigation/header-navigation.component.js +29 -29
  118. package/esm2015/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-button/header-offcanvas-button.component.js +22 -22
  119. package/esm2015/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-close-button/header-offcanvas-close-button.component.js +11 -11
  120. package/esm2015/lib/desy-nav/components/header/header-offcanvas/header-offcanvas.component.js +88 -88
  121. package/esm2015/lib/desy-nav/components/header/header-subnav/header-subnav.component.js +34 -34
  122. package/esm2015/lib/desy-nav/components/header/header.component.js +66 -61
  123. package/esm2015/lib/desy-nav/components/menu-horizontal/menu-horizontal-item/menu-horizontal-item.component.js +28 -28
  124. package/esm2015/lib/desy-nav/components/menu-horizontal/menu-horizontal.component.js +68 -68
  125. package/esm2015/lib/desy-nav/components/menu-navigation/components/menu-navigation-item/menu-navigation-item.component.js +35 -35
  126. package/esm2015/lib/desy-nav/components/menu-navigation/components/menu-navigation-subitem/menu-navigation-subitem.component.js +31 -31
  127. package/esm2015/lib/desy-nav/components/menu-navigation/menu-navigation.component.js +568 -568
  128. package/esm2015/lib/desy-nav/components/menu-vertical/menu-vertical-item/menu-vertical-item.component.js +32 -32
  129. package/esm2015/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub/menu-vertical-item-sub.component.js +16 -16
  130. package/esm2015/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub-item/menu-vertical-item-sub-item.component.js +24 -24
  131. package/esm2015/lib/desy-nav/components/menu-vertical/menu-vertical.component.js +89 -89
  132. package/esm2015/lib/desy-nav/components/menubar/components/menubar-item/menubar-item.component.js +36 -36
  133. package/esm2015/lib/desy-nav/components/menubar/components/menubar-label/menubar-label.component.js +14 -14
  134. package/esm2015/lib/desy-nav/components/menubar/components/menubar-subitem/menubar-subitem.component.js +29 -29
  135. package/esm2015/lib/desy-nav/components/menubar/components/menubar-subsubitem/menubar-subsubitem.component.js +23 -23
  136. package/esm2015/lib/desy-nav/components/menubar/directives/menubaritem.directive.js +37 -37
  137. package/esm2015/lib/desy-nav/components/menubar/menubar.component.js +672 -672
  138. package/esm2015/lib/desy-nav/components/nav/nav-item/nav-item.component.js +30 -30
  139. package/esm2015/lib/desy-nav/components/nav/nav.component.js +105 -105
  140. package/esm2015/lib/desy-nav/components/notification/notification-item/notification-item.component.js +18 -18
  141. package/esm2015/lib/desy-nav/components/notification/notification.component.js +102 -102
  142. package/esm2015/lib/desy-nav/components/skip-link/skip-link.component.js +33 -33
  143. package/esm2015/lib/desy-nav/desy-nav.module.js +136 -133
  144. package/esm2015/lib/desy-nav/interfaces/breadcrumbs.data.js +2 -2
  145. package/esm2015/lib/desy-nav/interfaces/error-summary-data.js +2 -2
  146. package/esm2015/lib/desy-nav/interfaces/footer-data.js +2 -2
  147. package/esm2015/lib/desy-nav/interfaces/header-dropdown-data.js +2 -2
  148. package/esm2015/lib/desy-nav/interfaces/header-navigation-data.js +2 -2
  149. package/esm2015/lib/desy-nav/interfaces/header-navigation-item-data.js +2 -2
  150. package/esm2015/lib/desy-nav/interfaces/header-offcanvas-data.js +2 -2
  151. package/esm2015/lib/desy-nav/interfaces/header-subnav-data.js +2 -2
  152. package/esm2015/lib/desy-nav/interfaces/index.js +20 -20
  153. package/esm2015/lib/desy-nav/interfaces/menu-horizontal-item-data.js +2 -2
  154. package/esm2015/lib/desy-nav/interfaces/menu-horizontal-item-event-data.js +2 -2
  155. package/esm2015/lib/desy-nav/interfaces/menu-navigation-item-sub-item-sub-item.js +2 -2
  156. package/esm2015/lib/desy-nav/interfaces/menu-navigation-item-sub-item.js +2 -2
  157. package/esm2015/lib/desy-nav/interfaces/menu-navigation.js +2 -2
  158. package/esm2015/lib/desy-nav/interfaces/menu-vertical-items-data.js +2 -2
  159. package/esm2015/lib/desy-nav/interfaces/menu-vertical-sub-data.js +2 -2
  160. package/esm2015/lib/desy-nav/interfaces/menu-vertical-sub-items-data.js +2 -2
  161. package/esm2015/lib/desy-nav/interfaces/menubar-item-sub-item-sub-item.js +2 -2
  162. package/esm2015/lib/desy-nav/interfaces/menubar-item-sub-item.js +2 -2
  163. package/esm2015/lib/desy-nav/interfaces/menubar-item-sub.js +2 -2
  164. package/esm2015/lib/desy-nav/interfaces/menubar-item.js +2 -2
  165. package/esm2015/lib/desy-nav/interfaces/nav-item-event.data.js +2 -2
  166. package/esm2015/lib/desy-nav/interfaces/nav-item.data.js +2 -2
  167. package/esm2015/lib/desy-nav/interfaces/notification-items-data.js +2 -2
  168. package/esm2015/lib/desy-nav/interfaces/notification-options.js +2 -2
  169. package/esm2015/lib/desy-pagination/components/pagination/pagination.component.js +138 -138
  170. package/esm2015/lib/desy-pagination/components/pagination-item-perpage/pagination-item-perpage.component.js +15 -15
  171. package/esm2015/lib/desy-pagination/components/pagination-listbox-label/pagination-listbox-label.component.js +14 -14
  172. package/esm2015/lib/desy-pagination/desy-pagination.module.js +31 -31
  173. package/esm2015/lib/desy-pagination/interfaces/index.js +1 -1
  174. package/esm2015/lib/desy-pagination/interfaces/pagination-item.data.js +2 -2
  175. package/esm2015/lib/desy-tables/components/table/components/table-caption.component.js +14 -14
  176. package/esm2015/lib/desy-tables/components/table/components/table-cell.component.js +17 -17
  177. package/esm2015/lib/desy-tables/components/table/components/table-header.component.js +14 -14
  178. package/esm2015/lib/desy-tables/components/table/components/table-row.component.js +14 -14
  179. package/esm2015/lib/desy-tables/components/table/table.component.js +55 -55
  180. package/esm2015/lib/desy-tables/components/table-advanced/components/table-advanced-header-cell.component.js +33 -33
  181. package/esm2015/lib/desy-tables/components/table-advanced/components/table-advanced-header.component.js +14 -14
  182. package/esm2015/lib/desy-tables/components/table-advanced/components/table-advanced-row-cell.component.js +17 -17
  183. package/esm2015/lib/desy-tables/components/table-advanced/components/table-advanced-row.component.js +20 -20
  184. package/esm2015/lib/desy-tables/components/table-advanced/components/table-advanced-select.component.js +22 -22
  185. package/esm2015/lib/desy-tables/components/table-advanced/table-advanced.component.js +316 -316
  186. package/esm2015/lib/desy-tables/desy-tables.module.js +64 -64
  187. package/esm2015/lib/desy-tables/directives/cell.directive.js +26 -26
  188. package/esm2015/lib/desy-tables/directives/focus-clicked-cell.directive.js +78 -78
  189. package/esm2015/lib/desy-tables/directives/row.directive.js +24 -24
  190. package/esm2015/lib/desy-tables/interfaces/cell-data.js +2 -2
  191. package/esm2015/lib/desy-tables/interfaces/head-cell-data.js +7 -7
  192. package/esm2015/lib/desy-tables/interfaces/index.js +5 -5
  193. package/esm2015/lib/desy-tables/interfaces/recalculate-table-params.js +2 -2
  194. package/esm2015/lib/desy-tables/interfaces/row-data.js +2 -2
  195. package/esm2015/lib/desy-tables/interfaces/wrapper-data.js +2 -2
  196. package/esm2015/lib/desy-views/components/accordion/accordion-header/accordion-header.component.js +14 -14
  197. package/esm2015/lib/desy-views/components/accordion/accordion-item/accordion-item.component.js +43 -43
  198. package/esm2015/lib/desy-views/components/accordion/accordion.component.js +153 -153
  199. package/esm2015/lib/desy-views/components/accordion-history/accordion-history-item/accordion-history-item.component.js +31 -31
  200. package/esm2015/lib/desy-views/components/accordion-history/accordion-history.component.js +15 -15
  201. package/esm2015/lib/desy-views/components/accordion-history/accordion-item-hide-button/accordion-item-hide-button.component.js +14 -14
  202. package/esm2015/lib/desy-views/components/accordion-history/accordion-item-show-button/accordion-item-show-button.component.js +14 -14
  203. package/esm2015/lib/desy-views/components/alert/alert.component.js +75 -75
  204. package/esm2015/lib/desy-views/components/collapsible/collapsible.component.js +55 -55
  205. package/esm2015/lib/desy-views/components/description-list/definition/definition.component.js +15 -15
  206. package/esm2015/lib/desy-views/components/description-list/description-item/description-item.component.js +26 -26
  207. package/esm2015/lib/desy-views/components/description-list/description-list.component.js +22 -22
  208. package/esm2015/lib/desy-views/components/description-list/term/term.component.js +15 -15
  209. package/esm2015/lib/desy-views/components/details/details.component.js +20 -20
  210. package/esm2015/lib/desy-views/components/item/item-content-bottom/item-content-bottom.component.js +14 -14
  211. package/esm2015/lib/desy-views/components/item/item-content-right/item-content-right.component.js +11 -11
  212. package/esm2015/lib/desy-views/components/item/item-item/item-item.component.js +11 -11
  213. package/esm2015/lib/desy-views/components/item/item.component.js +87 -87
  214. package/esm2015/lib/desy-views/components/media-object/media-object-figure/media-object-figure.component.js +11 -11
  215. package/esm2015/lib/desy-views/components/media-object/media-object.component.js +67 -67
  216. package/esm2015/lib/desy-views/components/spinner/spinner.component.js +45 -45
  217. package/esm2015/lib/desy-views/components/status/status.component.js +58 -58
  218. package/esm2015/lib/desy-views/components/status-item/status-item.component.js +86 -86
  219. package/esm2015/lib/desy-views/components/tabs/panel/panel.component.js +15 -15
  220. package/esm2015/lib/desy-views/components/tabs/tab-item/tab-item.component.js +28 -28
  221. package/esm2015/lib/desy-views/components/tabs/tabs.component.js +150 -150
  222. package/esm2015/lib/desy-views/components/tooltip/tooltip-content/tooltip-content.component.js +11 -11
  223. package/esm2015/lib/desy-views/components/tooltip/tooltip.component.js +155 -155
  224. package/esm2015/lib/desy-views/desy-views.module.js +108 -108
  225. package/esm2015/lib/desy-views/interfaces/accordion-header.data.js +2 -2
  226. package/esm2015/lib/desy-views/interfaces/accordion-item.data.js +2 -2
  227. package/esm2015/lib/desy-views/interfaces/alert-options.js +2 -2
  228. package/esm2015/lib/desy-views/interfaces/description-item.data.js +2 -2
  229. package/esm2015/lib/desy-views/interfaces/index.js +11 -11
  230. package/esm2015/lib/desy-views/interfaces/open-alert-result.js +2 -2
  231. package/esm2015/lib/desy-views/interfaces/status-data.js +2 -2
  232. package/esm2015/lib/desy-views/interfaces/status-icon-data.js +2 -2
  233. package/esm2015/lib/desy-views/interfaces/status-item-title-data.js +2 -2
  234. package/esm2015/lib/desy-views/interfaces/tabs-items-data.js +2 -2
  235. package/esm2015/lib/desy-views/interfaces/tabs-panel-data.js +2 -2
  236. package/esm2015/lib/desy-views/interfaces/term-definition.data.js +2 -2
  237. package/esm2015/lib/desy-views/services/alert.service.js +89 -89
  238. package/esm2015/lib/shared/components/accessibility/accessibility.component.js +29 -29
  239. package/esm2015/lib/shared/components/accessibility-and-content-required/accessibility-and-content-required.component.js +27 -27
  240. package/esm2015/lib/shared/components/accessibility-and-text-or-html-required/accessibility-and-text-or-html-required.component.js +26 -26
  241. package/esm2015/lib/shared/components/content-base/content-base.component.js +20 -20
  242. package/esm2015/lib/shared/components/index.js +6 -6
  243. package/esm2015/lib/shared/components/text-or-html-required/text-or-html-required.component.js +14 -14
  244. package/esm2015/lib/shared/decorators/desy-content-child.decorator.js +41 -41
  245. package/esm2015/lib/shared/decorators/desy-on-input-change.decorator.js +19 -19
  246. package/esm2015/lib/shared/directives/attribute-change.directive.js +43 -43
  247. package/esm2015/lib/shared/directives/click-outside.directive.js +35 -35
  248. package/esm2015/lib/shared/directives/content-change.directive.js +43 -43
  249. package/esm2015/lib/shared/directives/custom-inner-content.directive.js +62 -62
  250. package/esm2015/lib/shared/directives/inner-content.directive.js +34 -34
  251. package/esm2015/lib/shared/interfaces/accesibility-data.js +2 -2
  252. package/esm2015/lib/shared/pipes/external-href.pipe.js +28 -28
  253. package/esm2015/lib/shared/pipes/inner-html.pipe.js +19 -19
  254. package/esm2015/lib/shared/pipes/make-html-list.pipe.js +16 -16
  255. package/esm2015/lib/shared/shared.module.js +62 -62
  256. package/esm2015/lib/shared/utils/focus-utils.js +51 -51
  257. package/esm2015/lib/shared/utils/search-utils.js +78 -78
  258. package/esm2015/lib/shared/utils/string-utils.js +18 -18
  259. package/esm2015/public-api.js +197 -197
  260. package/fesm2015/desy-angular.js +9589 -9574
  261. package/fesm2015/desy-angular.js.map +1 -1
  262. package/lib/desy-angular.module.d.ts +2 -2
  263. package/lib/desy-buttons/components/button/button.component.d.ts +31 -31
  264. package/lib/desy-buttons/components/button-loader/button-loader.component.d.ts +15 -15
  265. package/lib/desy-buttons/components/dropdown/dropdown.component.d.ts +22 -22
  266. package/lib/desy-buttons/components/listbox/listbox-item/listbox-item.component.d.ts +12 -12
  267. package/lib/desy-buttons/components/listbox/listbox-label/listbox-label.component.d.ts +4 -4
  268. package/lib/desy-buttons/components/listbox/listbox.component.d.ts +53 -53
  269. package/lib/desy-buttons/components/pill/pill.component.d.ts +22 -22
  270. package/lib/desy-buttons/components/toggle/toggle-off-state/toggle-off-state.component.d.ts +5 -5
  271. package/lib/desy-buttons/components/toggle/toggle-on-state/toggle-on-state.component.d.ts +5 -5
  272. package/lib/desy-buttons/components/toggle/toggle.component.d.ts +17 -17
  273. package/lib/desy-buttons/desy-buttons.module.d.ts +2 -2
  274. package/lib/desy-buttons/interfaces/listbox-item-data.d.ts +9 -9
  275. package/lib/desy-buttons/interfaces/listbox-label-data.d.ts +5 -5
  276. package/lib/desy-commons/components/content/content.component.d.ts +5 -5
  277. package/lib/desy-commons/components/description/description.component.d.ts +6 -6
  278. package/lib/desy-commons/components/divider/divider.component.d.ts +6 -6
  279. package/lib/desy-commons/components/icon/icon.component.d.ts +6 -6
  280. package/lib/desy-commons/components/title/title.component.d.ts +5 -5
  281. package/lib/desy-commons/desy-commons.module.d.ts +2 -2
  282. package/lib/desy-commons/interfaces/content-data.d.ts +5 -5
  283. package/lib/desy-commons/interfaces/description-data.d.ts +6 -6
  284. package/lib/desy-commons/interfaces/divider-data.d.ts +4 -4
  285. package/lib/desy-commons/interfaces/icon-data.d.ts +5 -5
  286. package/lib/desy-commons/interfaces/index.d.ts +5 -5
  287. package/lib/desy-commons/interfaces/title-data.d.ts +6 -6
  288. package/lib/desy-forms/components/character-count/character-count.component.d.ts +27 -27
  289. package/lib/desy-forms/components/checkboxes/checkbox-item/checkbox-item.component.d.ts +47 -47
  290. package/lib/desy-forms/components/checkboxes/checkboxes.component.d.ts +75 -75
  291. package/lib/desy-forms/components/date-input/date-input-day/date-input-day.component.d.ts +21 -21
  292. package/lib/desy-forms/components/date-input/date-input-divider/date-input-divider.component.d.ts +7 -7
  293. package/lib/desy-forms/components/date-input/date-input-item/date-input-item.component.d.ts +4 -4
  294. package/lib/desy-forms/components/date-input/date-input-month/date-input-month.component.d.ts +21 -21
  295. package/lib/desy-forms/components/date-input/date-input-year/date-input-year.component.d.ts +18 -18
  296. package/lib/desy-forms/components/date-input/date-input.component.d.ts +55 -55
  297. package/lib/desy-forms/components/error-message/error-message.component.d.ts +12 -12
  298. package/lib/desy-forms/components/fieldset/fieldset.component.d.ts +28 -28
  299. package/lib/desy-forms/components/fieldset/legend/legend.component.d.ts +6 -6
  300. package/lib/desy-forms/components/file-upload/file-upload.component.d.ts +20 -20
  301. package/lib/desy-forms/components/form-field/form-field.component.d.ts +40 -40
  302. package/lib/desy-forms/components/hint/hint.component.d.ts +11 -11
  303. package/lib/desy-forms/components/input/input.component.d.ts +23 -23
  304. package/lib/desy-forms/components/input-group/input-group-divider/input-group-divider.component.d.ts +8 -8
  305. package/lib/desy-forms/components/input-group/input-group-input/input-group-input.component.d.ts +20 -20
  306. package/lib/desy-forms/components/input-group/input-group-item/input-group-item.component.d.ts +4 -4
  307. package/lib/desy-forms/components/input-group/input-group-select/input-group-select.component.d.ts +16 -16
  308. package/lib/desy-forms/components/input-group/input-group.component.d.ts +56 -56
  309. package/lib/desy-forms/components/label/label.component.d.ts +14 -14
  310. package/lib/desy-forms/components/radios/radio-item/radio-item.component.d.ts +43 -43
  311. package/lib/desy-forms/components/radios/radios.component.d.ts +75 -75
  312. package/lib/desy-forms/components/search-bar/search-bar.component.d.ts +16 -16
  313. package/lib/desy-forms/components/select/option/option.component.d.ts +7 -7
  314. package/lib/desy-forms/components/select/option-group/option-group.component.d.ts +7 -7
  315. package/lib/desy-forms/components/select/select-item/select-item.component.d.ts +4 -4
  316. package/lib/desy-forms/components/select/select.component.d.ts +21 -21
  317. package/lib/desy-forms/components/template-driven-wrapper/template-driven-wrapper.component.d.ts +2 -2
  318. package/lib/desy-forms/components/textarea/textarea.component.d.ts +24 -24
  319. package/lib/desy-forms/components/tree/interfaces/itree-item.d.ts +5 -5
  320. package/lib/desy-forms/components/tree/interfaces/quit-tree-item-focus-options.d.ts +5 -5
  321. package/lib/desy-forms/components/tree/tree-checkbox/tree-checkbox.component.d.ts +43 -43
  322. package/lib/desy-forms/components/tree/tree-item/tree-item.component.d.ts +87 -87
  323. package/lib/desy-forms/components/tree/tree-items-generator/tree-items-generator.component.d.ts +10 -10
  324. package/lib/desy-forms/components/tree/tree-sub/tree-sub.component.d.ts +6 -6
  325. package/lib/desy-forms/components/tree/tree.component.d.ts +112 -112
  326. package/lib/desy-forms/desy-forms.module.d.ts +2 -2
  327. package/lib/desy-forms/directives/condition.directive.d.ts +15 -15
  328. package/lib/desy-forms/interfaces/accesibility-data.d.ts +15 -15
  329. package/lib/desy-forms/interfaces/error-message-data.d.ts +8 -8
  330. package/lib/desy-forms/interfaces/fieldset-data.d.ts +10 -10
  331. package/lib/desy-forms/interfaces/hint-data.d.ts +7 -7
  332. package/lib/desy-forms/interfaces/index.d.ts +12 -12
  333. package/lib/desy-forms/interfaces/item-checkbox-data.d.ts +21 -21
  334. package/lib/desy-forms/interfaces/item-date-input-data.d.ts +17 -17
  335. package/lib/desy-forms/interfaces/item-divider-date-input-data.d.ts +5 -5
  336. package/lib/desy-forms/interfaces/item-divider-input-group-data.d.ts +5 -5
  337. package/lib/desy-forms/interfaces/item-input-group-data.d.ts +23 -23
  338. package/lib/desy-forms/interfaces/item-radio-data.d.ts +20 -20
  339. package/lib/desy-forms/interfaces/item-radio-with-template-data.d.ts +5 -5
  340. package/lib/desy-forms/interfaces/label-data.d.ts +9 -9
  341. package/lib/desy-forms/interfaces/legend-data.d.ts +6 -6
  342. package/lib/desy-forms/interfaces/select-item-data.d.ts +8 -8
  343. package/lib/desy-modals/components/dialog/dialog.component.d.ts +35 -35
  344. package/lib/desy-modals/components/modal/modal-button-loader-primary/modal-button-loader-primary.component.d.ts +8 -8
  345. package/lib/desy-modals/components/modal/modal-button-loader-secondary/modal-button-loader-secondary.component.d.ts +7 -7
  346. package/lib/desy-modals/components/modal/modal-button-primary/modal-button-primary.component.d.ts +7 -7
  347. package/lib/desy-modals/components/modal/modal-button-secondary/modal-button-secondary.component.d.ts +7 -7
  348. package/lib/desy-modals/components/modal/modal.component.d.ts +51 -51
  349. package/lib/desy-modals/desy-modals.module.d.ts +2 -2
  350. package/lib/desy-modals/interfaces/dialog-options.d.ts +9 -9
  351. package/lib/desy-modals/interfaces/index.d.ts +6 -6
  352. package/lib/desy-modals/interfaces/modal-button-data.d.ts +20 -20
  353. package/lib/desy-modals/interfaces/modal-data.d.ts +5 -5
  354. package/lib/desy-modals/interfaces/modal-icon-data.d.ts +4 -4
  355. package/lib/desy-modals/interfaces/modal-options.d.ts +16 -16
  356. package/lib/desy-modals/interfaces/open-dialog-result.d.ts +6 -6
  357. package/lib/desy-modals/services/dialog.service.d.ts +14 -14
  358. package/lib/desy-nav/components/breadcrumbs/breadcrumbs-item/breadcrumbs-item.component.d.ts +6 -6
  359. package/lib/desy-nav/components/breadcrumbs/breadcrumbs.component.d.ts +18 -18
  360. package/lib/desy-nav/components/error-summary/error-summary-item/error-summary-item.component.d.ts +6 -6
  361. package/lib/desy-nav/components/error-summary/error-summary.component.d.ts +20 -20
  362. package/lib/desy-nav/components/footer/footer-meta/footer-meta-item/footer-meta-item.component.d.ts +7 -7
  363. package/lib/desy-nav/components/footer/footer-meta/footer-meta.component.d.ts +10 -10
  364. package/lib/desy-nav/components/footer/footer-navigation/footer-navigation-item/footer-navigation-item.component.d.ts +7 -7
  365. package/lib/desy-nav/components/footer/footer-navigation/footer-navigation.component.d.ts +8 -8
  366. package/lib/desy-nav/components/footer/footer.component.d.ts +27 -27
  367. package/lib/desy-nav/components/header/header-custom-navigation/header-custom-navigation.component.d.ts +3 -0
  368. package/lib/desy-nav/components/header/header-dropdown/header-dropdown.component.d.ts +12 -12
  369. package/lib/desy-nav/components/header/header-navigation/header-navigation-item/header-navigation-item.component.d.ts +10 -10
  370. package/lib/desy-nav/components/header/header-navigation/header-navigation.component.d.ts +13 -13
  371. package/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-button/header-offcanvas-button.component.d.ts +5 -5
  372. package/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-close-button/header-offcanvas-close-button.component.d.ts +3 -3
  373. package/lib/desy-nav/components/header/header-offcanvas/header-offcanvas.component.d.ts +30 -30
  374. package/lib/desy-nav/components/header/header-subnav/header-subnav.component.d.ts +11 -11
  375. package/lib/desy-nav/components/header/header.component.d.ts +34 -32
  376. package/lib/desy-nav/components/menu-horizontal/menu-horizontal-item/menu-horizontal-item.component.d.ts +15 -15
  377. package/lib/desy-nav/components/menu-horizontal/menu-horizontal.component.d.ts +16 -16
  378. package/lib/desy-nav/components/menu-navigation/components/menu-navigation-item/menu-navigation-item.component.d.ts +22 -22
  379. package/lib/desy-nav/components/menu-navigation/components/menu-navigation-subitem/menu-navigation-subitem.component.d.ts +19 -19
  380. package/lib/desy-nav/components/menu-navigation/menu-navigation.component.d.ts +80 -80
  381. package/lib/desy-nav/components/menu-vertical/menu-vertical-item/menu-vertical-item.component.d.ts +18 -18
  382. package/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub/menu-vertical-item-sub.component.d.ts +8 -8
  383. package/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub-item/menu-vertical-item-sub-item.component.d.ts +15 -15
  384. package/lib/desy-nav/components/menu-vertical/menu-vertical.component.d.ts +18 -18
  385. package/lib/desy-nav/components/menubar/components/menubar-item/menubar-item.component.d.ts +23 -23
  386. package/lib/desy-nav/components/menubar/components/menubar-label/menubar-label.component.d.ts +4 -4
  387. package/lib/desy-nav/components/menubar/components/menubar-subitem/menubar-subitem.component.d.ts +15 -15
  388. package/lib/desy-nav/components/menubar/components/menubar-subsubitem/menubar-subsubitem.component.d.ts +10 -10
  389. package/lib/desy-nav/components/menubar/directives/menubaritem.directive.d.ts +16 -16
  390. package/lib/desy-nav/components/menubar/menubar.component.d.ts +101 -101
  391. package/lib/desy-nav/components/nav/nav-item/nav-item.component.d.ts +17 -17
  392. package/lib/desy-nav/components/nav/nav.component.d.ts +20 -20
  393. package/lib/desy-nav/components/notification/notification-item/notification-item.component.d.ts +9 -9
  394. package/lib/desy-nav/components/notification/notification.component.d.ts +36 -36
  395. package/lib/desy-nav/components/skip-link/skip-link.component.d.ts +13 -13
  396. package/lib/desy-nav/desy-nav.module.d.ts +2 -2
  397. package/lib/desy-nav/interfaces/breadcrumbs.data.d.ts +7 -7
  398. package/lib/desy-nav/interfaces/error-summary-data.d.ts +7 -7
  399. package/lib/desy-nav/interfaces/footer-data.d.ts +24 -24
  400. package/lib/desy-nav/interfaces/header-dropdown-data.d.ts +11 -11
  401. package/lib/desy-nav/interfaces/header-navigation-data.d.ts +5 -5
  402. package/lib/desy-nav/interfaces/header-navigation-item-data.d.ts +12 -12
  403. package/lib/desy-nav/interfaces/header-offcanvas-data.d.ts +8 -8
  404. package/lib/desy-nav/interfaces/header-subnav-data.d.ts +11 -11
  405. package/lib/desy-nav/interfaces/index.d.ts +19 -19
  406. package/lib/desy-nav/interfaces/menu-horizontal-item-data.d.ts +13 -13
  407. package/lib/desy-nav/interfaces/menu-horizontal-item-event-data.d.ts +5 -5
  408. package/lib/desy-nav/interfaces/menu-navigation-item-sub-item-sub-item.d.ts +14 -14
  409. package/lib/desy-nav/interfaces/menu-navigation-item-sub-item.d.ts +6 -6
  410. package/lib/desy-nav/interfaces/menu-navigation.d.ts +17 -17
  411. package/lib/desy-nav/interfaces/menu-vertical-items-data.d.ts +19 -19
  412. package/lib/desy-nav/interfaces/menu-vertical-sub-data.d.ts +7 -7
  413. package/lib/desy-nav/interfaces/menu-vertical-sub-items-data.d.ts +16 -16
  414. package/lib/desy-nav/interfaces/menubar-item-sub-item-sub-item.d.ts +6 -6
  415. package/lib/desy-nav/interfaces/menubar-item-sub-item.d.ts +9 -9
  416. package/lib/desy-nav/interfaces/menubar-item-sub.d.ts +6 -6
  417. package/lib/desy-nav/interfaces/menubar-item.d.ts +18 -18
  418. package/lib/desy-nav/interfaces/nav-item-event.data.d.ts +5 -5
  419. package/lib/desy-nav/interfaces/nav-item.data.d.ts +15 -15
  420. package/lib/desy-nav/interfaces/notification-items-data.d.ts +10 -10
  421. package/lib/desy-nav/interfaces/notification-options.d.ts +15 -15
  422. package/lib/desy-pagination/components/pagination/pagination.component.d.ts +44 -44
  423. package/lib/desy-pagination/components/pagination-item-perpage/pagination-item-perpage.component.d.ts +7 -7
  424. package/lib/desy-pagination/components/pagination-listbox-label/pagination-listbox-label.component.d.ts +4 -4
  425. package/lib/desy-pagination/desy-pagination.module.d.ts +2 -2
  426. package/lib/desy-pagination/interfaces/index.d.ts +1 -1
  427. package/lib/desy-pagination/interfaces/pagination-item.data.d.ts +4 -4
  428. package/lib/desy-tables/components/table/components/table-caption.component.d.ts +4 -4
  429. package/lib/desy-tables/components/table/components/table-cell.component.d.ts +8 -8
  430. package/lib/desy-tables/components/table/components/table-header.component.d.ts +5 -5
  431. package/lib/desy-tables/components/table/components/table-row.component.d.ts +5 -5
  432. package/lib/desy-tables/components/table/table.component.d.ts +24 -24
  433. package/lib/desy-tables/components/table-advanced/components/table-advanced-header-cell.component.d.ts +20 -20
  434. package/lib/desy-tables/components/table-advanced/components/table-advanced-header.component.d.ts +5 -5
  435. package/lib/desy-tables/components/table-advanced/components/table-advanced-row-cell.component.d.ts +8 -8
  436. package/lib/desy-tables/components/table-advanced/components/table-advanced-row.component.d.ts +8 -8
  437. package/lib/desy-tables/components/table-advanced/components/table-advanced-select.component.d.ts +9 -9
  438. package/lib/desy-tables/components/table-advanced/table-advanced.component.d.ts +122 -122
  439. package/lib/desy-tables/desy-tables.module.d.ts +2 -2
  440. package/lib/desy-tables/directives/cell.directive.d.ts +14 -14
  441. package/lib/desy-tables/directives/focus-clicked-cell.directive.d.ts +10 -10
  442. package/lib/desy-tables/directives/row.directive.d.ts +16 -16
  443. package/lib/desy-tables/interfaces/cell-data.d.ts +9 -9
  444. package/lib/desy-tables/interfaces/head-cell-data.d.ts +18 -18
  445. package/lib/desy-tables/interfaces/index.d.ts +4 -4
  446. package/lib/desy-tables/interfaces/recalculate-table-params.d.ts +11 -11
  447. package/lib/desy-tables/interfaces/row-data.d.ts +6 -6
  448. package/lib/desy-tables/interfaces/wrapper-data.d.ts +4 -4
  449. package/lib/desy-views/components/accordion/accordion-header/accordion-header.component.d.ts +5 -5
  450. package/lib/desy-views/components/accordion/accordion-item/accordion-item.component.d.ts +17 -17
  451. package/lib/desy-views/components/accordion/accordion.component.d.ts +48 -48
  452. package/lib/desy-views/components/accordion-history/accordion-history-item/accordion-history-item.component.d.ts +9 -9
  453. package/lib/desy-views/components/accordion-history/accordion-history.component.d.ts +6 -6
  454. package/lib/desy-views/components/accordion-history/accordion-item-hide-button/accordion-item-hide-button.component.d.ts +4 -4
  455. package/lib/desy-views/components/accordion-history/accordion-item-show-button/accordion-item-show-button.component.d.ts +4 -4
  456. package/lib/desy-views/components/alert/alert.component.d.ts +29 -29
  457. package/lib/desy-views/components/collapsible/collapsible.component.d.ts +14 -14
  458. package/lib/desy-views/components/description-list/definition/definition.component.d.ts +6 -6
  459. package/lib/desy-views/components/description-list/description-item/description-item.component.d.ts +9 -9
  460. package/lib/desy-views/components/description-list/description-list.component.d.ts +11 -11
  461. package/lib/desy-views/components/description-list/term/term.component.d.ts +6 -6
  462. package/lib/desy-views/components/details/details.component.d.ts +10 -10
  463. package/lib/desy-views/components/item/item-content-bottom/item-content-bottom.component.d.ts +5 -5
  464. package/lib/desy-views/components/item/item-content-right/item-content-right.component.d.ts +3 -3
  465. package/lib/desy-views/components/item/item-item/item-item.component.d.ts +3 -3
  466. package/lib/desy-views/components/item/item.component.d.ts +37 -37
  467. package/lib/desy-views/components/media-object/media-object-figure/media-object-figure.component.d.ts +3 -3
  468. package/lib/desy-views/components/media-object/media-object.component.d.ts +33 -33
  469. package/lib/desy-views/components/spinner/spinner.component.d.ts +21 -21
  470. package/lib/desy-views/components/status/status.component.d.ts +25 -25
  471. package/lib/desy-views/components/status-item/status-item.component.d.ts +44 -44
  472. package/lib/desy-views/components/tabs/panel/panel.component.d.ts +6 -6
  473. package/lib/desy-views/components/tabs/tab-item/tab-item.component.d.ts +12 -12
  474. package/lib/desy-views/components/tabs/tabs.component.d.ts +48 -48
  475. package/lib/desy-views/components/tooltip/tooltip-content/tooltip-content.component.d.ts +3 -3
  476. package/lib/desy-views/components/tooltip/tooltip.component.d.ts +48 -48
  477. package/lib/desy-views/desy-views.module.d.ts +2 -2
  478. package/lib/desy-views/interfaces/accordion-header.data.d.ts +5 -5
  479. package/lib/desy-views/interfaces/accordion-item.data.d.ts +10 -10
  480. package/lib/desy-views/interfaces/alert-options.d.ts +8 -8
  481. package/lib/desy-views/interfaces/description-item.data.d.ts +8 -8
  482. package/lib/desy-views/interfaces/index.d.ts +10 -10
  483. package/lib/desy-views/interfaces/open-alert-result.d.ts +6 -6
  484. package/lib/desy-views/interfaces/status-data.d.ts +8 -8
  485. package/lib/desy-views/interfaces/status-icon-data.d.ts +4 -4
  486. package/lib/desy-views/interfaces/status-item-title-data.d.ts +5 -5
  487. package/lib/desy-views/interfaces/tabs-items-data.d.ts +9 -9
  488. package/lib/desy-views/interfaces/tabs-panel-data.d.ts +8 -8
  489. package/lib/desy-views/interfaces/term-definition.data.d.ts +7 -7
  490. package/lib/desy-views/services/alert.service.d.ts +14 -14
  491. package/lib/shared/components/accessibility/accessibility.component.d.ts +20 -20
  492. package/lib/shared/components/accessibility-and-content-required/accessibility-and-content-required.component.d.ts +26 -26
  493. package/lib/shared/components/accessibility-and-text-or-html-required/accessibility-and-text-or-html-required.component.d.ts +23 -23
  494. package/lib/shared/components/content-base/content-base.component.d.ts +9 -9
  495. package/lib/shared/components/index.d.ts +5 -5
  496. package/lib/shared/components/text-or-html-required/text-or-html-required.component.d.ts +8 -8
  497. package/lib/shared/decorators/desy-content-child.decorator.d.ts +15 -15
  498. package/lib/shared/decorators/desy-on-input-change.decorator.d.ts +5 -5
  499. package/lib/shared/directives/attribute-change.directive.d.ts +10 -10
  500. package/lib/shared/directives/click-outside.directive.d.ts +9 -9
  501. package/lib/shared/directives/content-change.directive.d.ts +19 -19
  502. package/lib/shared/directives/custom-inner-content.directive.d.ts +22 -22
  503. package/lib/shared/directives/inner-content.directive.d.ts +9 -9
  504. package/lib/shared/interfaces/accesibility-data.d.ts +16 -16
  505. package/lib/shared/pipes/external-href.pipe.d.ts +8 -8
  506. package/lib/shared/pipes/inner-html.pipe.d.ts +7 -7
  507. package/lib/shared/pipes/make-html-list.pipe.d.ts +4 -4
  508. package/lib/shared/shared.module.d.ts +2 -2
  509. package/lib/shared/utils/focus-utils.d.ts +4 -4
  510. package/lib/shared/utils/search-utils.d.ts +14 -14
  511. package/lib/shared/utils/string-utils.d.ts +10 -10
  512. package/package.json +1 -1
  513. package/public-api.d.ts +168 -168
@@ -1,188 +1,188 @@
1
- import { __decorate } from "tslib";
2
- import { ChangeDetectorRef, Component, ContentChildren, EventEmitter, Host, HostBinding, Input, Output, ViewChild } from '@angular/core';
3
- import { ContentComponent } from '../../../../desy-commons/components/content/content.component';
4
- import { animate, animateChild, query, state, style, transition, trigger } from '@angular/animations';
5
- import { LabelComponent } from '../../label/label.component';
6
- import { HintComponent } from '../../hint/hint.component';
7
- import { CheckboxesComponent } from '../checkboxes.component';
8
- import { AccessibilityComponent } from '../../../../shared/components';
9
- import { DesyOnInputChange } from "../../../../shared/decorators/desy-on-input-change.decorator";
10
- export class CheckboxItemComponent extends AccessibilityComponent {
11
- constructor(checkboxes, changeDetectorRef) {
12
- super();
13
- this.checkboxes = checkboxes;
14
- this.changeDetectorRef = changeDetectorRef;
15
- this.checkedChange = new EventEmitter();
16
- this.indeterminateChange = new EventEmitter();
17
- if (!this.checkboxes) {
18
- throw Error('Checkbox items must be inside of CheckboxesComponent');
19
- }
20
- }
21
- ngOnInit() {
22
- this.checkboxes.markForUpdateCheckboxIds();
23
- }
24
- ngOnDestroy() {
25
- this.checkboxes.markForUpdateCheckboxIds();
26
- }
27
- ngOnChanges(changes) {
28
- this.classes = this.checkboxes.hasDividers ? this.classes += ' border-t border-b border-neutral-base -mb-px' : this.classes;
29
- if (this.checked !== this.lastChecked && this.isInit()) {
30
- this.setChecked(this.checked);
31
- this.checkboxes.updateValueFromCheckboxItems();
32
- }
33
- else if (this.lastValue !== undefined && this.lastValue !== this.value) {
34
- this.checkboxes.updateValueFromCheckboxItems();
35
- }
36
- if (this.indeterminateChecked !== this.lastIndeterminate && this.isInit()) {
37
- this.setIndeterminateChecked(this.indeterminateChecked);
38
- this.checkboxes.updateValueFromCheckboxItems();
39
- }
40
- this.lastValue = this.value;
41
- if (this.id !== this.checkboxId) {
42
- this.checkboxes.markForUpdateCheckboxIds();
43
- }
44
- }
45
- ngAfterViewInit() {
46
- this.setChecked(this.checked);
47
- this.setIndeterminateChecked(this.indeterminateChecked);
48
- this.checkboxes.updateValueFromCheckboxItems();
49
- }
50
- getItemHintId() {
51
- return this.hintComponentList && this.hintComponentList.length > 0 && this.checkboxId ? this.checkboxId + '-item-hint' : null;
52
- }
53
- hasChanged() {
54
- // Se establece el cambio a visualizar en el input
55
- const input = this.inputElement.nativeElement;
56
- if (this.isIndeterminate) {
57
- if (input.readOnly) {
58
- input.checked = false;
59
- input.readOnly = false;
60
- }
61
- else if (!input.checked) {
62
- input.readOnly = true;
63
- input.indeterminate = true;
64
- }
65
- }
66
- this.setChecked(input.checked);
67
- this.setIndeterminateChecked(input.indeterminate);
68
- this.checkboxes.updateValueFromCheckboxItems();
69
- }
70
- setChecked(checked) {
71
- this.checked = checked;
72
- this.lastChecked = checked;
73
- this.checkedChange.emit(checked);
74
- this.changeDetectorRef.detectChanges(); // Avisa al elemento input para que actualice su estado
75
- }
76
- setIndeterminateChecked(indeterminateChecked) {
77
- this.indeterminateChecked = indeterminateChecked;
78
- this.lastIndeterminate = indeterminateChecked;
79
- this.indeterminateChange.emit(indeterminateChecked);
80
- this.changeDetectorRef.detectChanges(); // Avisa al elemento input para que actualice su estado
81
- }
82
- setIndeterminateStatus() {
83
- var _a;
84
- const input = (_a = this.inputElement) === null || _a === void 0 ? void 0 : _a.nativeElement;
85
- if (input) {
86
- if (this.indeterminateChecked) {
87
- input.readOnly = true;
88
- input.indeterminate = true;
89
- }
90
- else if (input.readOnly) {
91
- input.readOnly = false;
92
- input.indeterminate = false;
93
- }
94
- }
95
- }
96
- isInit() {
97
- return !!this.inputElement;
98
- }
99
- getValue() {
100
- const input = this.inputElement.nativeElement;
101
- return input.checked || input.indeterminate ? this.value : null;
102
- }
103
- updateCheckboxId(index) {
104
- if (this.id) {
105
- this.checkboxId = this.id;
106
- }
107
- else {
108
- const idPrefix = this.checkboxes.idPrefix ? this.checkboxes.idPrefix : this.checkboxes.name;
109
- if (index === 0) {
110
- this.checkboxId = idPrefix;
111
- }
112
- else {
113
- this.checkboxId = `${idPrefix}-${index}`;
114
- }
115
- }
116
- if (this.labelComponentList && this.labelComponentList.length > 0) {
117
- this.labelComponentList.first.for = this.checkboxId;
118
- }
119
- if (this.hintComponentList && this.hintComponentList.length > 0) {
120
- this.hintComponentList.first.id = this.getItemHintId();
121
- }
122
- this.changeDetectorRef.detectChanges();
123
- }
124
- /*
125
- * Funciones para aportar información desde el componente checkboxes que lo contiene
126
- */
127
- hasDividers() {
128
- return this.checkboxes.hasDividers;
129
- }
130
- hasError() {
131
- return this.checkboxes.hasErrorsMessage();
132
- }
133
- getNameCheckbox() {
134
- return this.checkboxes.name;
135
- }
136
- getDescribedBy() {
137
- return !this.checkboxes.hasFieldset() ? this.checkboxes.describedBy : null;
138
- }
139
- }
140
- CheckboxItemComponent.decorators = [
141
- { type: Component, args: [{
142
- selector: 'desy-checkbox-item',
143
- template: "<div class=\"relative flex items-start py-base\">\r\n <div class=\"flex items-center mx-sm\">\r\n <input #input class=\"w-6 h-6 transition duration-150 ease-in-out border-black focus:border-black focus:shadow-outline-focus-input focus:ring-4 focus:ring-offset-0 focus:ring-warning-base disabled:bg-neutral-base disabled:border-neutral-base text-primary-base\"\r\n [checked]=\"checked\"\r\n [attr.id]=\"checkboxId\"\r\n [attr.name]=\"name ? name : getNameCheckbox()\"\r\n type=\"checkbox\"\r\n [value]=\"value\" (change)=\"hasChanged()\"\r\n [attr.disabled]=\"disabled ? true : null\"\r\n [attr.aria-controls]=\"conditionalContentList && conditionalContentList.length > 0 ? 'conditional-' + checkboxId : null\"\r\n [attr.aria-describedby]=\"[getDescribedBy(), getItemHintId()] | makeHtmlList:null\"\r\n [attr.aria-invalid]=\"hasError() ? true : null\"\r\n\r\n [attr.role]=\"role ? role : null\"\r\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\r\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\r\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\r\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.tabindex]=\"tabindex ? tabindex : null\">\r\n </div>\r\n <div class=\"pt-0.5 leading-5\">\r\n <ng-container *ngIf=\"labelComponentList && labelComponentList.length > 0\">\r\n <ng-content select=\"desy-label\"></ng-content>\r\n </ng-container>\r\n <ng-container *ngIf=\"!(labelComponentList && labelComponentList.length > 0)\">\r\n <desy-label [for]=\"checkboxId\">\r\n <ng-content></ng-content>\r\n </desy-label>\r\n </ng-container>\r\n <ng-content select=\"desy-hint\"></ng-content>\r\n </div>\r\n</div>\r\n\r\n<div *ngIf=\"conditional && conditionalContentList && conditionalContentList.length > 0 && (input.checked || input.indeterminate)\" @displayConditional\r\n class=\"mb-base ml-5 py-sm pl-6 origin-top-left border-l-2 border-primary-base\"\r\n [attr.id]=\"'conditional-' + checkboxId\">\r\n <ng-container *desyCustomInnerContent=\"{ component: conditionalContentList.first }\"></ng-container>\r\n</div>\r\n",
144
- animations: [
145
- trigger('displayConditional', [
146
- state('void', style({
147
- opacity: '0.0',
148
- transform: 'scale(0.95)'
149
- })),
150
- state('*', style({
151
- opacity: '1.0',
152
- transform: 'scale(1.0)'
153
- })),
154
- transition(':enter', [
155
- animate('100ms ease-out')
156
- ]),
157
- transition('* => *', [
158
- query('@*', animateChild(), { optional: true })
159
- ])
160
- ])
161
- ]
162
- },] }
163
- ];
164
- CheckboxItemComponent.ctorParameters = () => [
165
- { type: CheckboxesComponent, decorators: [{ type: Host }] },
166
- { type: ChangeDetectorRef }
167
- ];
168
- CheckboxItemComponent.propDecorators = {
169
- inputElement: [{ type: ViewChild, args: ['input',] }],
170
- id: [{ type: Input }],
171
- value: [{ type: Input }],
172
- name: [{ type: Input }],
173
- conditional: [{ type: Input }],
174
- disabled: [{ type: Input }],
175
- isIndeterminate: [{ type: Input }],
176
- indeterminateChecked: [{ type: Input }],
177
- classes: [{ type: Input }, { type: HostBinding, args: ['class',] }],
178
- labelComponentList: [{ type: ContentChildren, args: [LabelComponent,] }],
179
- hintComponentList: [{ type: ContentChildren, args: [HintComponent,] }],
180
- conditionalContentList: [{ type: ContentChildren, args: [ContentComponent,] }],
181
- checked: [{ type: Input }],
182
- checkedChange: [{ type: Output }],
183
- indeterminateChange: [{ type: Output }]
184
- };
185
- __decorate([
186
- DesyOnInputChange('setIndeterminateStatus')
187
- ], CheckboxItemComponent.prototype, "indeterminateChecked", void 0);
188
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXN5LWFuZ3VsYXIvc3JjL2xpYi9kZXN5LWZvcm1zL2NvbXBvbmVudHMvY2hlY2tib3hlcy9jaGVja2JveC1pdGVtL2NoZWNrYm94LWl0ZW0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ1UsaUJBQWlCLEVBQ2hDLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLElBQUksRUFDSixXQUFXLEVBQ1gsS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sK0RBQStELENBQUM7QUFDL0YsT0FBTyxFQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BHLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDckUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sOERBQThELENBQUM7QUF3Qi9GLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxzQkFBc0I7SUE2Qi9ELFlBQTRCLFVBQStCLEVBQVUsaUJBQW9DO1FBQ3ZHLEtBQUssRUFBRSxDQUFDO1FBRGtCLGVBQVUsR0FBVixVQUFVLENBQXFCO1FBQVUsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQVIvRixrQkFBYSxHQUFzQixJQUFJLFlBQVksRUFB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LFNBQUMsT0FBTztpQkFFakIsS0FBSztvQkFDTCxLQUFLO21CQUNMLEtBQUs7MEJBQ0wsS0FBSzt1QkFDTCxLQUFLOzhCQUNMLEtBQUs7bUNBR0wsS0FBSztzQkFDTCxLQUFLLFlBQUksV0FBVyxTQUFDLE9BQU87aUNBRTVCLGVBQWUsU0FBQyxjQUFjO2dDQUM5QixlQUFlLFNBQUMsYUFBYTtxQ0FDN0IsZUFBZSxTQUFDLGdCQUFnQjtzQkFFaEMsS0FBSzs0QkFFTCxNQUFNO2tDQUNOLE1BQU07O0FBVkU7SUFEUixpQkFBaUIsQ0FBQyx3QkFBd0IsQ0FBQzttRUFDTCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbnRlbnRDaGlsZHJlbixcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0LFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LFxyXG4gIE91dHB1dCwgUXVlcnlMaXN0LCBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0l0ZW1DaGVja2JveERhdGF9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQge0NvbnRlbnRDb21wb25lbnR9IGZyb20gJy4uLy4uLy4uLy4uL2Rlc3ktY29tbW9ucy9jb21wb25lbnRzL2NvbnRlbnQvY29udGVudC5jb21wb25lbnQnO1xyXG5pbXBvcnQge2FuaW1hdGUsIGFuaW1hdGVDaGlsZCwgcXVlcnksIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlcn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7TGFiZWxDb21wb25lbnR9IGZyb20gJy4uLy4uL2xhYmVsL2xhYmVsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7SGludENvbXBvbmVudH0gZnJvbSAnLi4vLi4vaGludC9oaW50LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7Q2hlY2tib3hlc0NvbXBvbmVudH0gZnJvbSAnLi4vY2hlY2tib3hlcy5jb21wb25lbnQnO1xyXG5pbXBvcnQge0FjY2Vzc2liaWxpdHlDb21wb25lbnR9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9jb21wb25lbnRzJztcclxuaW1wb3J0IHtEZXN5T25JbnB1dENoYW5nZX0gZnJvbSBcIi4uLy4uLy4uLy4uL3NoYXJlZC9kZWNvcmF0b3JzL2Rlc3ktb24taW5wdXQtY2hhbmdlLmRlY29yYXRvclwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkZXN5LWNoZWNrYm94LWl0ZW0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGVja2JveC1pdGVtLmNvbXBvbmVudC5odG1sJyxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICB0cmlnZ2VyKCdkaXNwbGF5Q29uZGl0aW9uYWwnLCBbXHJcbiAgICAgIHN0YXRlKCd2b2lkJywgc3R5bGUoe1xyXG4gICAgICAgIG9wYWNpdHk6ICcwLjAnLFxyXG4gICAgICAgIHRyYW5zZm9ybTogJ3NjYWxlKDAuOTUpJ1xyXG4gICAgICB9KSksXHJcbiAgICAgIHN0YXRlKCcqJywgc3R5bGUoe1xyXG4gICAgICAgIG9wYWNpdHk6ICcxLjAnLFxyXG4gICAgICAgIHRyYW5zZm9ybTogJ3NjYWxlKDEuMCknXHJcbiAgICAgIH0pKSxcclxuICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xyXG4gICAgICAgIGFuaW1hdGUoJzEwMG1zIGVhc2Utb3V0JylcclxuICAgICAgXSksXHJcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gKicsIFtcclxuICAgICAgICBxdWVyeSgnQConLCBhbmltYXRlQ2hpbGQoKSwge29wdGlvbmFsOiB0cnVlfSlcclxuICAgICAgXSlcclxuICAgIF0pXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2hlY2tib3hJdGVtQ29tcG9uZW50IGV4dGVuZHMgQWNjZXNzaWJpbGl0eUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIEl0ZW1DaGVja2JveERhdGEge1xyXG5cclxuICBAVmlld0NoaWxkKCdpbnB1dCcpIGlucHV0RWxlbWVudDogRWxlbWVudFJlZjtcclxuXHJcbiAgQElucHV0KCkgaWQ6IHN0cmluZztcclxuICBASW5wdXQoKSB2YWx1ZTogYW55O1xyXG4gIEBJbnB1dCgpIG5hbWU6IHN0cmluZztcclxuICBASW5wdXQoKSBjb25kaXRpb25hbDogYm9vbGVhbjtcclxuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcclxuICBASW5wdXQoKSBpc0luZGV0ZXJtaW5hdGU6IGJvb2xlYW47XHJcblxyXG4gIEBEZXN5T25JbnB1dENoYW5nZSgnc2V0SW5kZXRlcm1pbmF0ZVN0YXR1cycpXHJcbiAgQElucHV0KCkgaW5kZXRlcm1pbmF0ZUNoZWNrZWQ6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGNsYXNzZXM6IGFueTtcclxuXHJcbiAgQENvbnRlbnRDaGlsZHJlbihMYWJlbENvbXBvbmVudCkgbGFiZWxDb21wb25lbnRMaXN0OiBRdWVyeUxpc3Q8TGFiZWxDb21wb25lbnQ+O1xyXG4gIEBDb250ZW50Q2hpbGRyZW4oSGludENvbXBvbmVudCkgaGludENvbXBvbmVudExpc3Q6IFF1ZXJ5TGlzdDxIaW50Q29tcG9uZW50PjtcclxuICBAQ29udGVudENoaWxkcmVuKENvbnRlbnRDb21wb25lbnQpIGNvbmRpdGlvbmFsQ29udGVudExpc3Q6IFF1ZXJ5TGlzdDxDb250ZW50Q29tcG9uZW50PjtcclxuXHJcbiAgQElucHV0KCkgY2hlY2tlZDogYm9vbGVhbjtcclxuXHJcbiAgQE91dHB1dCgpIGNoZWNrZWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIGluZGV0ZXJtaW5hdGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIGxhc3RDaGVja2VkO1xyXG4gIGxhc3RJbmRldGVybWluYXRlO1xyXG4gIGxhc3RWYWx1ZTtcclxuICBjaGVja2JveElkO1xyXG5cclxuICBjb25zdHJ1Y3RvcihASG9zdCgpIHByaXZhdGUgY2hlY2tib3hlczogQ2hlY2tib3hlc0NvbXBvbmVudCwgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICBpZiAoIXRoaXMuY2hlY2tib3hlcykge1xyXG4gICAgICB0aHJvdyBFcnJvcignQ2hlY2tib3ggaXRlbXMgbXVzdCBiZSBpbnNpZGUgb2YgQ2hlY2tib3hlc0NvbXBvbmVudCcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNoZWNrYm94ZXMubWFya0ZvclVwZGF0ZUNoZWNrYm94SWRzKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2hlY2tib3hlcy5tYXJrRm9yVXBkYXRlQ2hlY2tib3hJZHMoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIHRoaXMuY2xhc3NlcyA9IHRoaXMuY2hlY2tib3hlcy5oYXNEaXZpZGVycyA/IHRoaXMuY2xhc3NlcyArPSAnIGJvcmRlci10IGJvcmRlci1iIGJvcmRlci1uZXV0cmFsLWJhc2UgLW1iLXB4JyA6IHRoaXMuY2xhc3NlcztcclxuICAgIGlmICh0aGlzLmNoZWNrZWQgIT09IHRoaXMubGFzdENoZWNrZWQgJiYgdGhpcy5pc0luaXQoKSkge1xyXG4gICAgICB0aGlzLnNldENoZWNrZWQodGhpcy5jaGVja2VkKTtcclxuICAgICAgdGhpcy5jaGVja2JveGVzLnVwZGF0ZVZhbHVlRnJvbUNoZWNrYm94SXRlbXMoKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5sYXN0VmFsdWUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmxhc3RWYWx1ZSAhPT0gdGhpcy52YWx1ZSkge1xyXG4gICAgICB0aGlzLmNoZWNrYm94ZXMudXBkYXRlVmFsdWVGcm9tQ2hlY2tib3hJdGVtcygpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKHRoaXMuaW5kZXRlcm1pbmF0ZUNoZWNrZWQgIT09IHRoaXMubGFzdEluZGV0ZXJtaW5hdGUgJiYgdGhpcy5pc0luaXQoKSl7XHJcbiAgICAgIHRoaXMuc2V0SW5kZXRlcm1pbmF0ZUNoZWNrZWQodGhpcy5pbmRldGVybWluYXRlQ2hlY2tlZCk7XHJcbiAgICAgIHRoaXMuY2hlY2tib3hlcy51cGRhdGVWYWx1ZUZyb21DaGVja2JveEl0ZW1zKCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHRoaXMubGFzdFZhbHVlID0gdGhpcy52YWx1ZTtcclxuXHJcbiAgICBpZiAodGhpcy5pZCAhPT0gdGhpcy5jaGVja2JveElkKSB7XHJcbiAgICAgIHRoaXMuY2hlY2tib3hlcy5tYXJrRm9yVXBkYXRlQ2hlY2tib3hJZHMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0Q2hlY2tlZCh0aGlzLmNoZWNrZWQpO1xyXG4gICAgdGhpcy5zZXRJbmRldGVybWluYXRlQ2hlY2tlZCh0aGlzLmluZGV0ZXJtaW5hdGVDaGVja2VkKTtcclxuICAgIHRoaXMuY2hlY2tib3hlcy51cGRhdGVWYWx1ZUZyb21DaGVja2JveEl0ZW1zKCk7XHJcbiAgfVxyXG5cclxuICBnZXRJdGVtSGludElkKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5oaW50Q29tcG9uZW50TGlzdCAmJiB0aGlzLmhpbnRDb21wb25lbnRMaXN0Lmxlbmd0aCA+IDAgJiYgdGhpcy5jaGVja2JveElkID8gdGhpcy5jaGVja2JveElkICsgJy1pdGVtLWhpbnQnIDogbnVsbDtcclxuICB9XHJcblxyXG4gIGhhc0NoYW5nZWQoKTogdm9pZCB7XHJcbiAgICAvLyBTZSBlc3RhYmxlY2UgZWwgY2FtYmlvIGEgdmlzdWFsaXphciBlbiBlbCBpbnB1dFxyXG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50O1xyXG4gICAgaWYgKHRoaXMuaXNJbmRldGVybWluYXRlKSB7XHJcbiAgICAgIGlmIChpbnB1dC5yZWFkT25seSkge1xyXG4gICAgICAgIGlucHV0LmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgICBpbnB1dC5yZWFkT25seSA9IGZhbHNlO1xyXG4gICAgICB9IGVsc2UgaWYgKCFpbnB1dC5jaGVja2VkKSB7XHJcbiAgICAgICAgaW5wdXQucmVhZE9ubHkgPSB0cnVlO1xyXG4gICAgICAgIGlucHV0LmluZGV0ZXJtaW5hdGUgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldENoZWNrZWQoaW5wdXQuY2hlY2tlZCk7XHJcbiAgICB0aGlzLnNldEluZGV0ZXJtaW5hdGVDaGVja2VkKGlucHV0LmluZGV0ZXJtaW5hdGUpO1xyXG4gICAgdGhpcy5jaGVja2JveGVzLnVwZGF0ZVZhbHVlRnJvbUNoZWNrYm94SXRlbXMoKTtcclxuICB9XHJcblxyXG4gIHNldENoZWNrZWQoY2hlY2tlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5jaGVja2VkID0gY2hlY2tlZDtcclxuICAgIHRoaXMubGFzdENoZWNrZWQgPSBjaGVja2VkO1xyXG4gICAgdGhpcy5jaGVja2VkQ2hhbmdlLmVtaXQoY2hlY2tlZCk7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTsgLy8gQXZpc2EgYWwgZWxlbWVudG8gaW5wdXQgcGFyYSBxdWUgYWN0dWFsaWNlIHN1IGVzdGFkb1xyXG4gIH1cclxuXHJcbiAgc2V0SW5kZXRlcm1pbmF0ZUNoZWNrZWQoaW5kZXRlcm1pbmF0ZUNoZWNrZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuaW5kZXRlcm1pbmF0ZUNoZWNrZWQgPSBpbmRldGVybWluYXRlQ2hlY2tlZDtcclxuICAgIHRoaXMubGFzdEluZGV0ZXJtaW5hdGUgPSBpbmRldGVybWluYXRlQ2hlY2tlZDtcclxuICAgIHRoaXMuaW5kZXRlcm1pbmF0ZUNoYW5nZS5lbWl0KGluZGV0ZXJtaW5hdGVDaGVja2VkKTtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpOyAvLyBBdmlzYSBhbCBlbGVtZW50byBpbnB1dCBwYXJhIHF1ZSBhY3R1YWxpY2Ugc3UgZXN0YWRvXHJcbiAgfVxyXG5cclxuICBzZXRJbmRldGVybWluYXRlU3RhdHVzKCk6IHZvaWQge1xyXG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLmlucHV0RWxlbWVudD8ubmF0aXZlRWxlbWVudDtcclxuICAgIGlmIChpbnB1dCkge1xyXG4gICAgICBpZiAodGhpcy5pbmRldGVybWluYXRlQ2hlY2tlZCkge1xyXG4gICAgICAgIGlucHV0LnJlYWRPbmx5ID0gdHJ1ZTtcclxuICAgICAgICBpbnB1dC5pbmRldGVybWluYXRlID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIGlmIChpbnB1dC5yZWFkT25seSkge1xyXG4gICAgICAgIGlucHV0LnJlYWRPbmx5ID0gZmFsc2U7XHJcbiAgICAgICAgaW5wdXQuaW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0luaXQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLmlucHV0RWxlbWVudDtcclxuICB9XHJcblxyXG4gIGdldFZhbHVlKCk6IGFueSB7XHJcbiAgICBjb25zdCBpbnB1dCA9IHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICByZXR1cm4gaW5wdXQuY2hlY2tlZCB8fCBpbnB1dC5pbmRldGVybWluYXRlID8gdGhpcy52YWx1ZSA6IG51bGw7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVDaGVja2JveElkKGluZGV4PzogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pZCkge1xyXG4gICAgICB0aGlzLmNoZWNrYm94SWQgPSB0aGlzLmlkO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgaWRQcmVmaXggPSB0aGlzLmNoZWNrYm94ZXMuaWRQcmVmaXggPyB0aGlzLmNoZWNrYm94ZXMuaWRQcmVmaXggOiB0aGlzLmNoZWNrYm94ZXMubmFtZTtcclxuICAgICAgaWYgKGluZGV4ID09PSAwKSB7XHJcbiAgICAgICAgdGhpcy5jaGVja2JveElkID0gaWRQcmVmaXg7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jaGVja2JveElkID0gYCR7aWRQcmVmaXh9LSR7aW5kZXh9YDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmxhYmVsQ29tcG9uZW50TGlzdCAmJiB0aGlzLmxhYmVsQ29tcG9uZW50TGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMubGFiZWxDb21wb25lbnRMaXN0LmZpcnN0LmZvciA9IHRoaXMuY2hlY2tib3hJZDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5oaW50Q29tcG9uZW50TGlzdCAmJiB0aGlzLmhpbnRDb21wb25lbnRMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5oaW50Q29tcG9uZW50TGlzdC5maXJzdC5pZCA9IHRoaXMuZ2V0SXRlbUhpbnRJZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgLypcclxuICAgKiBGdW5jaW9uZXMgcGFyYSBhcG9ydGFyIGluZm9ybWFjacOzbiBkZXNkZSBlbCBjb21wb25lbnRlIGNoZWNrYm94ZXMgcXVlIGxvIGNvbnRpZW5lXHJcbiAgICovXHJcblxyXG4gIGhhc0RpdmlkZXJzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY2hlY2tib3hlcy5oYXNEaXZpZGVyczsgICAgXHJcbiAgfVxyXG5cclxuICBoYXNFcnJvcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmNoZWNrYm94ZXMuaGFzRXJyb3JzTWVzc2FnZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TmFtZUNoZWNrYm94KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5jaGVja2JveGVzLm5hbWU7XHJcbiAgfVxyXG5cclxuICBnZXREZXNjcmliZWRCeSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICF0aGlzLmNoZWNrYm94ZXMuaGFzRmllbGRzZXQoKSA/IHRoaXMuY2hlY2tib3hlcy5kZXNjcmliZWRCeSA6IG51bGw7XHJcbiAgfVxyXG59XHJcbiJdfQ==
1
+ import { __decorate } from "tslib";
2
+ import { ChangeDetectorRef, Component, ContentChildren, EventEmitter, Host, HostBinding, Input, Output, ViewChild } from '@angular/core';
3
+ import { ContentComponent } from '../../../../desy-commons/components/content/content.component';
4
+ import { animate, animateChild, query, state, style, transition, trigger } from '@angular/animations';
5
+ import { LabelComponent } from '../../label/label.component';
6
+ import { HintComponent } from '../../hint/hint.component';
7
+ import { CheckboxesComponent } from '../checkboxes.component';
8
+ import { AccessibilityComponent } from '../../../../shared/components';
9
+ import { DesyOnInputChange } from "../../../../shared/decorators/desy-on-input-change.decorator";
10
+ export class CheckboxItemComponent extends AccessibilityComponent {
11
+ constructor(checkboxes, changeDetectorRef) {
12
+ super();
13
+ this.checkboxes = checkboxes;
14
+ this.changeDetectorRef = changeDetectorRef;
15
+ this.checkedChange = new EventEmitter();
16
+ this.indeterminateChange = new EventEmitter();
17
+ if (!this.checkboxes) {
18
+ throw Error('Checkbox items must be inside of CheckboxesComponent');
19
+ }
20
+ }
21
+ ngOnInit() {
22
+ this.checkboxes.markForUpdateCheckboxIds();
23
+ }
24
+ ngOnDestroy() {
25
+ this.checkboxes.markForUpdateCheckboxIds();
26
+ }
27
+ ngOnChanges(changes) {
28
+ this.classes = this.checkboxes.hasDividers ? this.classes += ' border-t border-b border-neutral-base -mb-px' : this.classes;
29
+ if (this.checked !== this.lastChecked && this.isInit()) {
30
+ this.setChecked(this.checked);
31
+ this.checkboxes.updateValueFromCheckboxItems();
32
+ }
33
+ else if (this.lastValue !== undefined && this.lastValue !== this.value) {
34
+ this.checkboxes.updateValueFromCheckboxItems();
35
+ }
36
+ if (this.indeterminateChecked !== this.lastIndeterminate && this.isInit()) {
37
+ this.setIndeterminateChecked(this.indeterminateChecked);
38
+ this.checkboxes.updateValueFromCheckboxItems();
39
+ }
40
+ this.lastValue = this.value;
41
+ if (this.id !== this.checkboxId) {
42
+ this.checkboxes.markForUpdateCheckboxIds();
43
+ }
44
+ }
45
+ ngAfterViewInit() {
46
+ this.setChecked(this.checked);
47
+ this.setIndeterminateChecked(this.indeterminateChecked);
48
+ this.checkboxes.updateValueFromCheckboxItems();
49
+ }
50
+ getItemHintId() {
51
+ return this.hintComponentList && this.hintComponentList.length > 0 && this.checkboxId ? this.checkboxId + '-item-hint' : null;
52
+ }
53
+ hasChanged() {
54
+ // Se establece el cambio a visualizar en el input
55
+ const input = this.inputElement.nativeElement;
56
+ if (this.isIndeterminate) {
57
+ if (input.readOnly) {
58
+ input.checked = false;
59
+ input.readOnly = false;
60
+ }
61
+ else if (!input.checked) {
62
+ input.readOnly = true;
63
+ input.indeterminate = true;
64
+ }
65
+ }
66
+ this.setChecked(input.checked);
67
+ this.setIndeterminateChecked(input.indeterminate);
68
+ this.checkboxes.updateValueFromCheckboxItems();
69
+ }
70
+ setChecked(checked) {
71
+ this.checked = checked;
72
+ this.lastChecked = checked;
73
+ this.checkedChange.emit(checked);
74
+ this.changeDetectorRef.detectChanges(); // Avisa al elemento input para que actualice su estado
75
+ }
76
+ setIndeterminateChecked(indeterminateChecked) {
77
+ this.indeterminateChecked = indeterminateChecked;
78
+ this.lastIndeterminate = indeterminateChecked;
79
+ this.indeterminateChange.emit(indeterminateChecked);
80
+ this.changeDetectorRef.detectChanges(); // Avisa al elemento input para que actualice su estado
81
+ }
82
+ setIndeterminateStatus() {
83
+ var _a;
84
+ const input = (_a = this.inputElement) === null || _a === void 0 ? void 0 : _a.nativeElement;
85
+ if (input) {
86
+ if (this.indeterminateChecked) {
87
+ input.readOnly = true;
88
+ input.indeterminate = true;
89
+ }
90
+ else if (input.readOnly) {
91
+ input.readOnly = false;
92
+ input.indeterminate = false;
93
+ }
94
+ }
95
+ }
96
+ isInit() {
97
+ return !!this.inputElement;
98
+ }
99
+ getValue() {
100
+ const input = this.inputElement.nativeElement;
101
+ return input.checked || input.indeterminate ? this.value : null;
102
+ }
103
+ updateCheckboxId(index) {
104
+ if (this.id) {
105
+ this.checkboxId = this.id;
106
+ }
107
+ else {
108
+ const idPrefix = this.checkboxes.idPrefix ? this.checkboxes.idPrefix : this.checkboxes.name;
109
+ if (index === 0) {
110
+ this.checkboxId = idPrefix;
111
+ }
112
+ else {
113
+ this.checkboxId = `${idPrefix}-${index}`;
114
+ }
115
+ }
116
+ if (this.labelComponentList && this.labelComponentList.length > 0) {
117
+ this.labelComponentList.first.for = this.checkboxId;
118
+ }
119
+ if (this.hintComponentList && this.hintComponentList.length > 0) {
120
+ this.hintComponentList.first.id = this.getItemHintId();
121
+ }
122
+ this.changeDetectorRef.detectChanges();
123
+ }
124
+ /*
125
+ * Funciones para aportar información desde el componente checkboxes que lo contiene
126
+ */
127
+ hasDividers() {
128
+ return this.checkboxes.hasDividers;
129
+ }
130
+ hasError() {
131
+ return this.checkboxes.hasErrorsMessage();
132
+ }
133
+ getNameCheckbox() {
134
+ return this.checkboxes.name;
135
+ }
136
+ getDescribedBy() {
137
+ return !this.checkboxes.hasFieldset() ? this.checkboxes.describedBy : null;
138
+ }
139
+ }
140
+ CheckboxItemComponent.decorators = [
141
+ { type: Component, args: [{
142
+ selector: 'desy-checkbox-item',
143
+ template: "<div class=\"relative flex items-start py-base\">\n <div class=\"flex items-center mx-sm\">\n <input #input class=\"w-6 h-6 transition duration-150 ease-in-out border-black focus:border-black focus:shadow-outline-focus-input focus:ring-4 focus:ring-offset-0 focus:ring-warning-base disabled:bg-neutral-base disabled:border-neutral-base text-primary-base\"\n [checked]=\"checked\"\n [attr.id]=\"checkboxId\"\n [attr.name]=\"name ? name : getNameCheckbox()\"\n type=\"checkbox\"\n [value]=\"value\" (change)=\"hasChanged()\"\n [attr.disabled]=\"disabled ? true : null\"\n [attr.aria-controls]=\"conditionalContentList && conditionalContentList.length > 0 ? 'conditional-' + checkboxId : null\"\n [attr.aria-describedby]=\"[getDescribedBy(), getItemHintId()] | makeHtmlList:null\"\n [attr.aria-invalid]=\"hasError() ? true : null\"\n\n [attr.role]=\"role ? role : null\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\n [attr.tabindex]=\"tabindex ? tabindex : null\">\n </div>\n <div class=\"pt-0.5 leading-5\">\n <ng-container *ngIf=\"labelComponentList && labelComponentList.length > 0\">\n <ng-content select=\"desy-label\"></ng-content>\n </ng-container>\n <ng-container *ngIf=\"!(labelComponentList && labelComponentList.length > 0)\">\n <desy-label [for]=\"checkboxId\">\n <ng-content></ng-content>\n </desy-label>\n </ng-container>\n <ng-content select=\"desy-hint\"></ng-content>\n </div>\n</div>\n\n<div *ngIf=\"conditional && conditionalContentList && conditionalContentList.length > 0 && (input.checked || input.indeterminate)\" @displayConditional\n class=\"mb-base ml-5 py-sm pl-6 origin-top-left border-l-2 border-primary-base\"\n [attr.id]=\"'conditional-' + checkboxId\">\n <ng-container *desyCustomInnerContent=\"{ component: conditionalContentList.first }\"></ng-container>\n</div>\n",
144
+ animations: [
145
+ trigger('displayConditional', [
146
+ state('void', style({
147
+ opacity: '0.0',
148
+ transform: 'scale(0.95)'
149
+ })),
150
+ state('*', style({
151
+ opacity: '1.0',
152
+ transform: 'scale(1.0)'
153
+ })),
154
+ transition(':enter', [
155
+ animate('100ms ease-out')
156
+ ]),
157
+ transition('* => *', [
158
+ query('@*', animateChild(), { optional: true })
159
+ ])
160
+ ])
161
+ ]
162
+ },] }
163
+ ];
164
+ CheckboxItemComponent.ctorParameters = () => [
165
+ { type: CheckboxesComponent, decorators: [{ type: Host }] },
166
+ { type: ChangeDetectorRef }
167
+ ];
168
+ CheckboxItemComponent.propDecorators = {
169
+ inputElement: [{ type: ViewChild, args: ['input',] }],
170
+ id: [{ type: Input }],
171
+ value: [{ type: Input }],
172
+ name: [{ type: Input }],
173
+ conditional: [{ type: Input }],
174
+ disabled: [{ type: Input }],
175
+ isIndeterminate: [{ type: Input }],
176
+ indeterminateChecked: [{ type: Input }],
177
+ classes: [{ type: Input }, { type: HostBinding, args: ['class',] }],
178
+ labelComponentList: [{ type: ContentChildren, args: [LabelComponent,] }],
179
+ hintComponentList: [{ type: ContentChildren, args: [HintComponent,] }],
180
+ conditionalContentList: [{ type: ContentChildren, args: [ContentComponent,] }],
181
+ checked: [{ type: Input }],
182
+ checkedChange: [{ type: Output }],
183
+ indeterminateChange: [{ type: Output }]
184
+ };
185
+ __decorate([
186
+ DesyOnInputChange('setIndeterminateStatus')
187
+ ], CheckboxItemComponent.prototype, "indeterminateChecked", void 0);
188
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXN5LWFuZ3VsYXIvc3JjL2xpYi9kZXN5LWZvcm1zL2NvbXBvbmVudHMvY2hlY2tib3hlcy9jaGVja2JveC1pdGVtL2NoZWNrYm94LWl0ZW0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ1UsaUJBQWlCLEVBQ2hDLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLElBQUksRUFDSixXQUFXLEVBQ1gsS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sK0RBQStELENBQUM7QUFDL0YsT0FBTyxFQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BHLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDckUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sOERBQThELENBQUM7QUF3Qi9GLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxzQkFBc0I7SUE2Qi9ELFlBQTRCLFVBQStCLEVBQVUsaUJBQW9DO1FBQ3ZHLEtBQUssRUFBRSxDQUFDO1FBRGtCLGVBQVUsR0FBVixVQUFVLENBQXFCO1FBQVUsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQVIvRixrQkFBYSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBQzNELHdCQUFtQixHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBU3pFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3BCLE1BQU0sS0FBSyxDQUFDLHNEQUFzRCxDQUFDLENBQUM7U0FDckU7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxVQUFVLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksK0NBQStDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDNUgsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3RELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztTQUNoRDthQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ3hFLElBQUksQ0FBQyxVQUFVLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztTQUNoRDtRQUVELElBQUcsSUFBSSxDQUFDLG9CQUFvQixLQUFLLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUM7WUFDdkUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQ3hELElBQUksQ0FBQyxVQUFVLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztTQUNoRDtRQUdELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUU1QixJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUMvQixJQUFJLENBQUMsVUFBVSxDQUFDLHdCQUF3QixFQUFFLENBQUM7U0FDNUM7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsVUFBVSxDQUFDLDRCQUE0QixFQUFFLENBQUM7SUFDakQsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2hJLENBQUM7SUFFRCxVQUFVO1FBQ1Isa0RBQWtEO1FBQ2xELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDO1FBQzlDLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN4QixJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUU7Z0JBQ2xCLEtBQUssQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUN0QixLQUFLLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQzthQUN4QjtpQkFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRTtnQkFDekIsS0FBSyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7Z0JBQ3RCLEtBQUssQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO2FBQzVCO1NBQ0Y7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxVQUFVLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQWdCO1FBQ3pCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDO1FBQzNCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLHVEQUF1RDtJQUNqRyxDQUFDO0lBRUQsdUJBQXVCLENBQUMsb0JBQTZCO1FBQ25ELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxvQkFBb0IsQ0FBQztRQUNqRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsb0JBQW9CLENBQUM7UUFDOUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLHVEQUF1RDtJQUNqRyxDQUFDO0lBRUQsc0JBQXNCOztRQUNwQixNQUFNLEtBQUssU0FBRyxJQUFJLENBQUMsWUFBWSwwQ0FBRSxhQUFhLENBQUM7UUFDL0MsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtnQkFDN0IsS0FBSyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7Z0JBQ3RCLEtBQUssQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO2FBQzVCO2lCQUFNLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRTtnQkFDekIsS0FBSyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7Z0JBQ3ZCLEtBQUssQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO2FBQzdCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsTUFBTTtRQUNKLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztJQUVELFFBQVE7UUFDTixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQztRQUM5QyxPQUFPLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2xFLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFjO1FBQzdCLElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUNYLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztTQUMzQjthQUFNO1lBQ0wsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztZQUM1RixJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7YUFDNUI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLFFBQVEsSUFBSSxLQUFLLEVBQUUsQ0FBQzthQUMxQztTQUNGO1FBRUQsSUFBSSxJQUFJLENBQUMsa0JBQWtCLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDakUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztTQUNyRDtRQUVELElBQUksSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQy9ELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUN4RDtRQUVELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7O09BRUc7SUFFSCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQztJQUNyQyxDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztJQUM5QixDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzdFLENBQUM7OztZQWhNRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIsNGxGQUE2QztnQkFDN0MsVUFBVSxFQUFFO29CQUNWLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRTt3QkFDNUIsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUM7NEJBQ2xCLE9BQU8sRUFBRSxLQUFLOzRCQUNkLFNBQVMsRUFBRSxhQUFhO3lCQUN6QixDQUFDLENBQUM7d0JBQ0gsS0FBSyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUM7NEJBQ2YsT0FBTyxFQUFFLEtBQUs7NEJBQ2QsU0FBUyxFQUFFLFlBQVk7eUJBQ3hCLENBQUMsQ0FBQzt3QkFDSCxVQUFVLENBQUMsUUFBUSxFQUFFOzRCQUNuQixPQUFPLENBQUMsZ0JBQWdCLENBQUM7eUJBQzFCLENBQUM7d0JBQ0YsVUFBVSxDQUFDLFFBQVEsRUFBRTs0QkFDbkIsS0FBSyxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQzt5QkFDOUMsQ0FBQztxQkFDSCxDQUFDO2lCQUNIO2FBQ0Y7OztZQXpCTyxtQkFBbUIsdUJBdURaLElBQUk7WUF2RUYsaUJBQWlCOzs7MkJBNEMvQixTQUFTLFNBQUMsT0FBTztpQkFFakIsS0FBSztvQkFDTCxLQUFLO21CQUNMLEtBQUs7MEJBQ0wsS0FBSzt1QkFDTCxLQUFLOzhCQUNMLEtBQUs7bUNBR0wsS0FBSztzQkFDTCxLQUFLLFlBQUksV0FBVyxTQUFDLE9BQU87aUNBRTVCLGVBQWUsU0FBQyxjQUFjO2dDQUM5QixlQUFlLFNBQUMsYUFBYTtxQ0FDN0IsZUFBZSxTQUFDLGdCQUFnQjtzQkFFaEMsS0FBSzs0QkFFTCxNQUFNO2tDQUNOLE1BQU07O0FBVkU7SUFEUixpQkFBaUIsQ0FBQyx3QkFBd0IsQ0FBQzttRUFDTCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0LFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsXG4gIE91dHB1dCwgUXVlcnlMaXN0LCBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0l0ZW1DaGVja2JveERhdGF9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHtDb250ZW50Q29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi8uLi9kZXN5LWNvbW1vbnMvY29tcG9uZW50cy9jb250ZW50L2NvbnRlbnQuY29tcG9uZW50JztcbmltcG9ydCB7YW5pbWF0ZSwgYW5pbWF0ZUNoaWxkLCBxdWVyeSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7TGFiZWxDb21wb25lbnR9IGZyb20gJy4uLy4uL2xhYmVsL2xhYmVsLmNvbXBvbmVudCc7XG5pbXBvcnQge0hpbnRDb21wb25lbnR9IGZyb20gJy4uLy4uL2hpbnQvaGludC5jb21wb25lbnQnO1xuaW1wb3J0IHtDaGVja2JveGVzQ29tcG9uZW50fSBmcm9tICcuLi9jaGVja2JveGVzLmNvbXBvbmVudCc7XG5pbXBvcnQge0FjY2Vzc2liaWxpdHlDb21wb25lbnR9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9jb21wb25lbnRzJztcbmltcG9ydCB7RGVzeU9uSW5wdXRDaGFuZ2V9IGZyb20gXCIuLi8uLi8uLi8uLi9zaGFyZWQvZGVjb3JhdG9ycy9kZXN5LW9uLWlucHV0LWNoYW5nZS5kZWNvcmF0b3JcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGVzeS1jaGVja2JveC1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoZWNrYm94LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignZGlzcGxheUNvbmRpdGlvbmFsJywgW1xuICAgICAgc3RhdGUoJ3ZvaWQnLCBzdHlsZSh7XG4gICAgICAgIG9wYWNpdHk6ICcwLjAnLFxuICAgICAgICB0cmFuc2Zvcm06ICdzY2FsZSgwLjk1KSdcbiAgICAgIH0pKSxcbiAgICAgIHN0YXRlKCcqJywgc3R5bGUoe1xuICAgICAgICBvcGFjaXR5OiAnMS4wJyxcbiAgICAgICAgdHJhbnNmb3JtOiAnc2NhbGUoMS4wKSdcbiAgICAgIH0pKSxcbiAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcbiAgICAgICAgYW5pbWF0ZSgnMTAwbXMgZWFzZS1vdXQnKVxuICAgICAgXSksXG4gICAgICB0cmFuc2l0aW9uKCcqID0+IConLCBbXG4gICAgICAgIHF1ZXJ5KCdAKicsIGFuaW1hdGVDaGlsZCgpLCB7b3B0aW9uYWw6IHRydWV9KVxuICAgICAgXSlcbiAgICBdKVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIENoZWNrYm94SXRlbUNvbXBvbmVudCBleHRlbmRzIEFjY2Vzc2liaWxpdHlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBJdGVtQ2hlY2tib3hEYXRhIHtcblxuICBAVmlld0NoaWxkKCdpbnB1dCcpIGlucHV0RWxlbWVudDogRWxlbWVudFJlZjtcblxuICBASW5wdXQoKSBpZDogc3RyaW5nO1xuICBASW5wdXQoKSB2YWx1ZTogYW55O1xuICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNvbmRpdGlvbmFsOiBib29sZWFuO1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcbiAgQElucHV0KCkgaXNJbmRldGVybWluYXRlOiBib29sZWFuO1xuXG4gIEBEZXN5T25JbnB1dENoYW5nZSgnc2V0SW5kZXRlcm1pbmF0ZVN0YXR1cycpXG4gIEBJbnB1dCgpIGluZGV0ZXJtaW5hdGVDaGVja2VkOiBib29sZWFuO1xuICBASW5wdXQoKSBASG9zdEJpbmRpbmcoJ2NsYXNzJykgY2xhc3NlczogYW55O1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oTGFiZWxDb21wb25lbnQpIGxhYmVsQ29tcG9uZW50TGlzdDogUXVlcnlMaXN0PExhYmVsQ29tcG9uZW50PjtcbiAgQENvbnRlbnRDaGlsZHJlbihIaW50Q29tcG9uZW50KSBoaW50Q29tcG9uZW50TGlzdDogUXVlcnlMaXN0PEhpbnRDb21wb25lbnQ+O1xuICBAQ29udGVudENoaWxkcmVuKENvbnRlbnRDb21wb25lbnQpIGNvbmRpdGlvbmFsQ29udGVudExpc3Q6IFF1ZXJ5TGlzdDxDb250ZW50Q29tcG9uZW50PjtcblxuICBASW5wdXQoKSBjaGVja2VkOiBib29sZWFuO1xuXG4gIEBPdXRwdXQoKSBjaGVja2VkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgaW5kZXRlcm1pbmF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBsYXN0Q2hlY2tlZDtcbiAgbGFzdEluZGV0ZXJtaW5hdGU7XG4gIGxhc3RWYWx1ZTtcbiAgY2hlY2tib3hJZDtcblxuICBjb25zdHJ1Y3RvcihASG9zdCgpIHByaXZhdGUgY2hlY2tib3hlczogQ2hlY2tib3hlc0NvbXBvbmVudCwgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICBzdXBlcigpO1xuICAgIGlmICghdGhpcy5jaGVja2JveGVzKSB7XG4gICAgICB0aHJvdyBFcnJvcignQ2hlY2tib3ggaXRlbXMgbXVzdCBiZSBpbnNpZGUgb2YgQ2hlY2tib3hlc0NvbXBvbmVudCcpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY2hlY2tib3hlcy5tYXJrRm9yVXBkYXRlQ2hlY2tib3hJZHMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY2hlY2tib3hlcy5tYXJrRm9yVXBkYXRlQ2hlY2tib3hJZHMoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICB0aGlzLmNsYXNzZXMgPSB0aGlzLmNoZWNrYm94ZXMuaGFzRGl2aWRlcnMgPyB0aGlzLmNsYXNzZXMgKz0gJyBib3JkZXItdCBib3JkZXItYiBib3JkZXItbmV1dHJhbC1iYXNlIC1tYi1weCcgOiB0aGlzLmNsYXNzZXM7XG4gICAgaWYgKHRoaXMuY2hlY2tlZCAhPT0gdGhpcy5sYXN0Q2hlY2tlZCAmJiB0aGlzLmlzSW5pdCgpKSB7XG4gICAgICB0aGlzLnNldENoZWNrZWQodGhpcy5jaGVja2VkKTtcbiAgICAgIHRoaXMuY2hlY2tib3hlcy51cGRhdGVWYWx1ZUZyb21DaGVja2JveEl0ZW1zKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxhc3RWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIHRoaXMubGFzdFZhbHVlICE9PSB0aGlzLnZhbHVlKSB7XG4gICAgICB0aGlzLmNoZWNrYm94ZXMudXBkYXRlVmFsdWVGcm9tQ2hlY2tib3hJdGVtcygpO1xuICAgIH1cblxuICAgIGlmKHRoaXMuaW5kZXRlcm1pbmF0ZUNoZWNrZWQgIT09IHRoaXMubGFzdEluZGV0ZXJtaW5hdGUgJiYgdGhpcy5pc0luaXQoKSl7XG4gICAgICB0aGlzLnNldEluZGV0ZXJtaW5hdGVDaGVja2VkKHRoaXMuaW5kZXRlcm1pbmF0ZUNoZWNrZWQpO1xuICAgICAgdGhpcy5jaGVja2JveGVzLnVwZGF0ZVZhbHVlRnJvbUNoZWNrYm94SXRlbXMoKTtcbiAgICB9XG5cblxuICAgIHRoaXMubGFzdFZhbHVlID0gdGhpcy52YWx1ZTtcblxuICAgIGlmICh0aGlzLmlkICE9PSB0aGlzLmNoZWNrYm94SWQpIHtcbiAgICAgIHRoaXMuY2hlY2tib3hlcy5tYXJrRm9yVXBkYXRlQ2hlY2tib3hJZHMoKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRDaGVja2VkKHRoaXMuY2hlY2tlZCk7XG4gICAgdGhpcy5zZXRJbmRldGVybWluYXRlQ2hlY2tlZCh0aGlzLmluZGV0ZXJtaW5hdGVDaGVja2VkKTtcbiAgICB0aGlzLmNoZWNrYm94ZXMudXBkYXRlVmFsdWVGcm9tQ2hlY2tib3hJdGVtcygpO1xuICB9XG5cbiAgZ2V0SXRlbUhpbnRJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmhpbnRDb21wb25lbnRMaXN0ICYmIHRoaXMuaGludENvbXBvbmVudExpc3QubGVuZ3RoID4gMCAmJiB0aGlzLmNoZWNrYm94SWQgPyB0aGlzLmNoZWNrYm94SWQgKyAnLWl0ZW0taGludCcgOiBudWxsO1xuICB9XG5cbiAgaGFzQ2hhbmdlZCgpOiB2b2lkIHtcbiAgICAvLyBTZSBlc3RhYmxlY2UgZWwgY2FtYmlvIGEgdmlzdWFsaXphciBlbiBlbCBpbnB1dFxuICAgIGNvbnN0IGlucHV0ID0gdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICBpZiAodGhpcy5pc0luZGV0ZXJtaW5hdGUpIHtcbiAgICAgIGlmIChpbnB1dC5yZWFkT25seSkge1xuICAgICAgICBpbnB1dC5jaGVja2VkID0gZmFsc2U7XG4gICAgICAgIGlucHV0LnJlYWRPbmx5ID0gZmFsc2U7XG4gICAgICB9IGVsc2UgaWYgKCFpbnB1dC5jaGVja2VkKSB7XG4gICAgICAgIGlucHV0LnJlYWRPbmx5ID0gdHJ1ZTtcbiAgICAgICAgaW5wdXQuaW5kZXRlcm1pbmF0ZSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuc2V0Q2hlY2tlZChpbnB1dC5jaGVja2VkKTtcbiAgICB0aGlzLnNldEluZGV0ZXJtaW5hdGVDaGVja2VkKGlucHV0LmluZGV0ZXJtaW5hdGUpO1xuICAgIHRoaXMuY2hlY2tib3hlcy51cGRhdGVWYWx1ZUZyb21DaGVja2JveEl0ZW1zKCk7XG4gIH1cblxuICBzZXRDaGVja2VkKGNoZWNrZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmNoZWNrZWQgPSBjaGVja2VkO1xuICAgIHRoaXMubGFzdENoZWNrZWQgPSBjaGVja2VkO1xuICAgIHRoaXMuY2hlY2tlZENoYW5nZS5lbWl0KGNoZWNrZWQpO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpOyAvLyBBdmlzYSBhbCBlbGVtZW50byBpbnB1dCBwYXJhIHF1ZSBhY3R1YWxpY2Ugc3UgZXN0YWRvXG4gIH1cblxuICBzZXRJbmRldGVybWluYXRlQ2hlY2tlZChpbmRldGVybWluYXRlQ2hlY2tlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuaW5kZXRlcm1pbmF0ZUNoZWNrZWQgPSBpbmRldGVybWluYXRlQ2hlY2tlZDtcbiAgICB0aGlzLmxhc3RJbmRldGVybWluYXRlID0gaW5kZXRlcm1pbmF0ZUNoZWNrZWQ7XG4gICAgdGhpcy5pbmRldGVybWluYXRlQ2hhbmdlLmVtaXQoaW5kZXRlcm1pbmF0ZUNoZWNrZWQpO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpOyAvLyBBdmlzYSBhbCBlbGVtZW50byBpbnB1dCBwYXJhIHF1ZSBhY3R1YWxpY2Ugc3UgZXN0YWRvXG4gIH1cblxuICBzZXRJbmRldGVybWluYXRlU3RhdHVzKCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gdGhpcy5pbnB1dEVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKGlucHV0KSB7XG4gICAgICBpZiAodGhpcy5pbmRldGVybWluYXRlQ2hlY2tlZCkge1xuICAgICAgICBpbnB1dC5yZWFkT25seSA9IHRydWU7XG4gICAgICAgIGlucHV0LmluZGV0ZXJtaW5hdGUgPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmIChpbnB1dC5yZWFkT25seSkge1xuICAgICAgICBpbnB1dC5yZWFkT25seSA9IGZhbHNlO1xuICAgICAgICBpbnB1dC5pbmRldGVybWluYXRlID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaXNJbml0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuaW5wdXRFbGVtZW50O1xuICB9XG5cbiAgZ2V0VmFsdWUoKTogYW55IHtcbiAgICBjb25zdCBpbnB1dCA9IHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgcmV0dXJuIGlucHV0LmNoZWNrZWQgfHwgaW5wdXQuaW5kZXRlcm1pbmF0ZSA/IHRoaXMudmFsdWUgOiBudWxsO1xuICB9XG5cbiAgdXBkYXRlQ2hlY2tib3hJZChpbmRleD86IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLmlkKSB7XG4gICAgICB0aGlzLmNoZWNrYm94SWQgPSB0aGlzLmlkO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBpZFByZWZpeCA9IHRoaXMuY2hlY2tib3hlcy5pZFByZWZpeCA/IHRoaXMuY2hlY2tib3hlcy5pZFByZWZpeCA6IHRoaXMuY2hlY2tib3hlcy5uYW1lO1xuICAgICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICAgIHRoaXMuY2hlY2tib3hJZCA9IGlkUHJlZml4O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jaGVja2JveElkID0gYCR7aWRQcmVmaXh9LSR7aW5kZXh9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5sYWJlbENvbXBvbmVudExpc3QgJiYgdGhpcy5sYWJlbENvbXBvbmVudExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5sYWJlbENvbXBvbmVudExpc3QuZmlyc3QuZm9yID0gdGhpcy5jaGVja2JveElkO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhpbnRDb21wb25lbnRMaXN0ICYmIHRoaXMuaGludENvbXBvbmVudExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5oaW50Q29tcG9uZW50TGlzdC5maXJzdC5pZCA9IHRoaXMuZ2V0SXRlbUhpbnRJZCgpO1xuICAgIH1cblxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgLypcbiAgICogRnVuY2lvbmVzIHBhcmEgYXBvcnRhciBpbmZvcm1hY2nDs24gZGVzZGUgZWwgY29tcG9uZW50ZSBjaGVja2JveGVzIHF1ZSBsbyBjb250aWVuZVxuICAgKi9cblxuICBoYXNEaXZpZGVycygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jaGVja2JveGVzLmhhc0RpdmlkZXJzOyAgICBcbiAgfVxuXG4gIGhhc0Vycm9yKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNoZWNrYm94ZXMuaGFzRXJyb3JzTWVzc2FnZSgpO1xuICB9XG5cbiAgZ2V0TmFtZUNoZWNrYm94KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY2hlY2tib3hlcy5uYW1lO1xuICB9XG5cbiAgZ2V0RGVzY3JpYmVkQnkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gIXRoaXMuY2hlY2tib3hlcy5oYXNGaWVsZHNldCgpID8gdGhpcy5jaGVja2JveGVzLmRlc2NyaWJlZEJ5IDogbnVsbDtcbiAgfVxufVxuIl19