desy-angular 2.0.2 → 5.0.1

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 (422) hide show
  1. package/README.md +5 -5
  2. package/bundles/desy-angular.umd.js +5961 -1898
  3. package/bundles/desy-angular.umd.js.map +1 -1
  4. package/bundles/desy-angular.umd.min.js +2 -2
  5. package/bundles/desy-angular.umd.min.js.map +1 -1
  6. package/desy-angular.d.ts +30 -17
  7. package/desy-angular.metadata.json +1 -1
  8. package/esm2015/desy-angular.js +31 -18
  9. package/esm2015/lib/desy-angular.module.js +6 -3
  10. package/esm2015/lib/desy-buttons/components/button/button.component.js +9 -20
  11. package/esm2015/lib/desy-buttons/components/button-loader/button-loader.component.js +8 -3
  12. package/esm2015/lib/desy-buttons/components/dropdown/dropdown.component.js +76 -17
  13. package/esm2015/lib/desy-buttons/components/listbox/listbox-item/listbox-item.component.js +26 -0
  14. package/esm2015/lib/desy-buttons/components/listbox/listbox-label/listbox-label.component.js +14 -0
  15. package/esm2015/lib/desy-buttons/components/listbox/listbox.component.js +287 -0
  16. package/esm2015/lib/desy-buttons/components/pill/pill.component.js +8 -10
  17. package/esm2015/lib/desy-buttons/desy-buttons.module.js +15 -4
  18. package/esm2015/lib/desy-buttons/interfaces/listbox-item-data.js +2 -0
  19. package/esm2015/lib/desy-buttons/interfaces/listbox-label-data.js +2 -0
  20. package/esm2015/lib/desy-commons/components/content/content.component.js +14 -0
  21. package/esm2015/lib/desy-commons/components/description/description.component.js +14 -0
  22. package/esm2015/lib/desy-commons/components/icon/icon.component.js +14 -0
  23. package/esm2015/lib/desy-commons/components/title/title.component.js +14 -0
  24. package/esm2015/lib/desy-commons/desy-commons.module.js +33 -0
  25. package/esm2015/lib/desy-commons/interfaces/content-data.js +2 -0
  26. package/esm2015/lib/desy-commons/interfaces/description-data.js +2 -0
  27. package/esm2015/lib/desy-commons/interfaces/icon-data.js +2 -0
  28. package/esm2015/lib/desy-commons/interfaces/index.js +5 -0
  29. package/esm2015/lib/desy-commons/interfaces/title-data.js +2 -0
  30. package/esm2015/lib/desy-forms/components/character-count/character-count.component.js +2 -2
  31. package/esm2015/lib/desy-forms/components/checkboxes/checkbox-item/checkbox-item.component.js +190 -0
  32. package/esm2015/lib/desy-forms/components/checkboxes/checkboxes.component.js +181 -74
  33. package/esm2015/lib/desy-forms/components/date-input/date-input-day/date-input-day.component.js +46 -0
  34. package/esm2015/lib/desy-forms/components/date-input/date-input-divider/date-input-divider.component.js +19 -0
  35. package/esm2015/lib/desy-forms/components/date-input/date-input-item/date-input-item.component.js +13 -0
  36. package/esm2015/lib/desy-forms/components/date-input/date-input-month/date-input-month.component.js +46 -0
  37. package/esm2015/lib/desy-forms/components/date-input/date-input-year/date-input-year.component.js +44 -0
  38. package/esm2015/lib/desy-forms/components/date-input/date-input.component.js +132 -27
  39. package/esm2015/lib/desy-forms/components/error-message/error-message.component.js +17 -5
  40. package/esm2015/lib/desy-forms/components/fieldset/fieldset.component.js +27 -4
  41. package/esm2015/lib/desy-forms/components/fieldset/legend/legend.component.js +6 -5
  42. package/esm2015/lib/desy-forms/components/file-upload/file-upload.component.js +1 -1
  43. package/esm2015/lib/desy-forms/components/form-field/form-field.component.js +45 -7
  44. package/esm2015/lib/desy-forms/components/hint/hint.component.js +18 -6
  45. package/esm2015/lib/desy-forms/components/input/input.component.js +2 -3
  46. package/esm2015/lib/desy-forms/components/input-group/input-group-divider/input-group-divider.component.js +20 -0
  47. package/esm2015/lib/desy-forms/components/input-group/input-group-input/input-group-input.component.js +46 -0
  48. package/esm2015/lib/desy-forms/components/input-group/input-group-item/input-group-item.component.js +13 -0
  49. package/esm2015/lib/desy-forms/components/input-group/input-group-select/input-group-select.component.js +42 -0
  50. package/esm2015/lib/desy-forms/components/input-group/input-group.component.js +115 -21
  51. package/esm2015/lib/desy-forms/components/label/label.component.js +21 -8
  52. package/esm2015/lib/desy-forms/components/radios/radio-item/radio-item.component.js +147 -0
  53. package/esm2015/lib/desy-forms/components/radios/radios.component.js +198 -12
  54. package/esm2015/lib/desy-forms/components/search-bar/search-bar.component.js +14 -4
  55. package/esm2015/lib/desy-forms/components/select/option/option.component.js +17 -0
  56. package/esm2015/lib/desy-forms/components/select/option-group/option-group.component.js +17 -0
  57. package/esm2015/lib/desy-forms/components/select/select-item/select-item.component.js +14 -0
  58. package/esm2015/lib/desy-forms/components/select/select.component.js +33 -18
  59. package/esm2015/lib/desy-forms/components/template-driven-wrapper/template-driven-wrapper.component.js +1 -1
  60. package/esm2015/lib/desy-forms/components/textarea/textarea.component.js +1 -1
  61. package/esm2015/lib/desy-forms/desy-forms.module.js +43 -6
  62. package/esm2015/lib/desy-forms/directives/condition.directive.js +1 -1
  63. package/esm2015/lib/desy-forms/interfaces/accesibility-data.js +1 -1
  64. package/esm2015/lib/desy-forms/interfaces/error-message-data.js +1 -1
  65. package/esm2015/lib/desy-forms/interfaces/fieldset-data.js +1 -1
  66. package/esm2015/lib/desy-forms/interfaces/hint-data.js +1 -1
  67. package/esm2015/lib/desy-forms/interfaces/index.js +1 -1
  68. package/esm2015/lib/desy-forms/interfaces/item-checkbox-data.js +1 -1
  69. package/esm2015/lib/desy-forms/interfaces/item-date-input-data.js +1 -1
  70. package/esm2015/lib/desy-forms/interfaces/item-divider-date-input-data.js +2 -0
  71. package/esm2015/lib/desy-forms/interfaces/item-divider-input-group-data.js +1 -1
  72. package/esm2015/lib/desy-forms/interfaces/item-input-group-data.js +1 -1
  73. package/esm2015/lib/desy-forms/interfaces/item-radio-data.js +1 -1
  74. package/esm2015/lib/desy-forms/interfaces/item-radio-with-template-data.js +1 -1
  75. package/esm2015/lib/desy-forms/interfaces/label-data.js +1 -1
  76. package/esm2015/lib/desy-forms/interfaces/legend-data.js +1 -1
  77. package/esm2015/lib/desy-forms/interfaces/select-item-data.js +1 -1
  78. package/esm2015/lib/desy-modals/components/dialog/dialog.component.js +1 -1
  79. package/esm2015/lib/desy-modals/components/modal/modal-button-primary/modal-button-primary.component.js +19 -0
  80. package/esm2015/lib/desy-modals/components/modal/modal-button-secondary/modal-button-secondary.component.js +19 -0
  81. package/esm2015/lib/desy-modals/components/modal/modal.component.js +106 -21
  82. package/esm2015/lib/desy-modals/desy-modals.module.js +7 -1
  83. package/esm2015/lib/desy-modals/interfaces/dialog-options.js +1 -1
  84. package/esm2015/lib/desy-modals/interfaces/index.js +1 -1
  85. package/esm2015/lib/desy-modals/interfaces/modal-button-data.js +1 -1
  86. package/esm2015/lib/desy-modals/interfaces/modal-data.js +1 -1
  87. package/esm2015/lib/desy-modals/interfaces/modal-icon-data.js +1 -1
  88. package/esm2015/lib/desy-modals/interfaces/modal-options.js +1 -1
  89. package/esm2015/lib/desy-modals/interfaces/open-dialog-result.js +1 -1
  90. package/esm2015/lib/desy-modals/services/dialog.service.js +1 -1
  91. package/esm2015/lib/desy-nav/components/breadcrumbs/breadcrumbs-item/breadcrumbs-item.component.js +15 -0
  92. package/esm2015/lib/desy-nav/components/breadcrumbs/breadcrumbs.component.js +18 -16
  93. package/esm2015/lib/desy-nav/components/error-summary/error-summary-item/error-summary-item.component.js +15 -0
  94. package/esm2015/lib/desy-nav/components/error-summary/error-summary.component.js +34 -13
  95. package/esm2015/lib/desy-nav/components/footer/footer-meta/footer-meta-item/footer-meta-item.component.js +16 -0
  96. package/esm2015/lib/desy-nav/components/footer/footer-meta/footer-meta.component.js +23 -0
  97. package/esm2015/lib/desy-nav/components/footer/footer-navigation/footer-navigation-item/footer-navigation-item.component.js +16 -0
  98. package/esm2015/lib/desy-nav/components/footer/footer-navigation/footer-navigation.component.js +16 -0
  99. package/esm2015/lib/desy-nav/components/footer/footer.component.js +31 -8
  100. package/esm2015/lib/desy-nav/components/header/header-dropdown/header-dropdown.component.js +26 -36
  101. package/esm2015/lib/desy-nav/components/header/header-navigation/header-navigation-item/header-navigation-item.component.js +19 -0
  102. package/esm2015/lib/desy-nav/components/header/header-navigation/header-navigation.component.js +14 -7
  103. package/esm2015/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-button/header-offcanvas-button.component.js +25 -0
  104. package/esm2015/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-close-button/header-offcanvas-close-button.component.js +11 -0
  105. package/esm2015/lib/desy-nav/components/header/header-offcanvas/header-offcanvas.component.js +76 -14
  106. package/esm2015/lib/desy-nav/components/header/header-subnav/header-subnav.component.js +26 -36
  107. package/esm2015/lib/desy-nav/components/header/header.component.js +38 -7
  108. package/esm2015/lib/desy-nav/components/menu-horizontal/menu-horizontal-item/menu-horizontal-item.component.js +28 -0
  109. package/esm2015/lib/desy-nav/components/menu-horizontal/menu-horizontal.component.js +41 -21
  110. package/esm2015/lib/desy-nav/components/menu-vertical/menu-vertical-item/menu-vertical-item.component.js +32 -0
  111. package/esm2015/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub/menu-vertical-item-sub.component.js +16 -0
  112. package/esm2015/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub-item/menu-vertical-item-sub-item.component.js +24 -0
  113. package/esm2015/lib/desy-nav/components/menu-vertical/menu-vertical.component.js +43 -93
  114. package/esm2015/lib/desy-nav/components/menubar/components/menubar-item/menubar-item.component.js +36 -0
  115. package/esm2015/lib/desy-nav/components/menubar/components/menubar-label/menubar-label.component.js +14 -0
  116. package/esm2015/lib/desy-nav/components/menubar/components/menubar-subitem/menubar-subitem.component.js +29 -0
  117. package/esm2015/lib/desy-nav/components/menubar/components/menubar-subsubitem/menubar-subsubitem.component.js +23 -0
  118. package/esm2015/lib/desy-nav/components/menubar/directives/menubaritem.directive.js +37 -0
  119. package/esm2015/lib/desy-nav/components/menubar/menubar.component.js +656 -0
  120. package/esm2015/lib/desy-nav/components/nav/nav-item/nav-item.component.js +30 -0
  121. package/esm2015/lib/desy-nav/components/nav/nav.component.js +44 -22
  122. package/esm2015/lib/desy-nav/components/notification/notification-item/notification-item.component.js +18 -0
  123. package/esm2015/lib/desy-nav/components/notification/notification.component.js +49 -22
  124. package/esm2015/lib/desy-nav/components/skip-link/skip-link.component.js +24 -5
  125. package/esm2015/lib/desy-nav/desy-nav.module.js +78 -12
  126. package/esm2015/lib/desy-nav/interfaces/breadcrumbs.data.js +1 -1
  127. package/esm2015/lib/desy-nav/interfaces/error-summary-data.js +1 -1
  128. package/esm2015/lib/desy-nav/interfaces/footer-data.js +1 -1
  129. package/esm2015/lib/desy-nav/interfaces/header-dropdown-data.js +1 -1
  130. package/esm2015/lib/desy-nav/interfaces/header-navigation-data.js +1 -1
  131. package/esm2015/lib/desy-nav/interfaces/header-navigation-item-data.js +1 -1
  132. package/esm2015/lib/desy-nav/interfaces/header-offcanvas-data.js +1 -1
  133. package/esm2015/lib/desy-nav/interfaces/header-subnav-data.js +1 -1
  134. package/esm2015/lib/desy-nav/interfaces/index.js +1 -5
  135. package/esm2015/lib/desy-nav/interfaces/menu-horizontal-item-data.js +1 -1
  136. package/esm2015/lib/desy-nav/interfaces/menu-horizontal-item-event-data.js +1 -1
  137. package/esm2015/lib/desy-nav/interfaces/menu-vertical-items-data.js +1 -1
  138. package/esm2015/lib/desy-nav/interfaces/menu-vertical-sub-data.js +1 -1
  139. package/esm2015/lib/desy-nav/interfaces/menu-vertical-sub-items-data.js +1 -1
  140. package/esm2015/lib/desy-nav/interfaces/menubar-item-sub-item-sub-item.js +2 -0
  141. package/esm2015/lib/desy-nav/interfaces/menubar-item-sub-item.js +2 -0
  142. package/esm2015/lib/desy-nav/interfaces/menubar-item-sub.js +2 -0
  143. package/esm2015/lib/desy-nav/interfaces/menubar-item.js +2 -0
  144. package/esm2015/lib/desy-nav/interfaces/nav-item-event.data.js +1 -1
  145. package/esm2015/lib/desy-nav/interfaces/nav-item.data.js +1 -1
  146. package/esm2015/lib/desy-nav/interfaces/notification-items-data.js +1 -1
  147. package/esm2015/lib/desy-nav/interfaces/notification-options.js +1 -1
  148. package/esm2015/lib/desy-pagination/components/pagination/pagination.component.js +41 -76
  149. package/esm2015/lib/desy-pagination/desy-pagination.module.js +1 -1
  150. package/esm2015/lib/desy-pagination/interfaces/index.js +1 -1
  151. package/esm2015/lib/desy-pagination/interfaces/pagination-item.data.js +1 -1
  152. package/esm2015/lib/desy-tables/components/table/components/table-caption.component.js +14 -0
  153. package/esm2015/lib/desy-tables/components/table/components/table-cell.component.js +17 -0
  154. package/esm2015/lib/desy-tables/components/table/components/table-header.component.js +14 -0
  155. package/esm2015/lib/desy-tables/components/table/components/table-row.component.js +14 -0
  156. package/esm2015/lib/desy-tables/components/table/table.component.js +47 -14
  157. package/esm2015/lib/desy-tables/components/table-advanced/components/table-advanced-header-cell.component.js +20 -0
  158. package/esm2015/lib/desy-tables/components/table-advanced/components/table-advanced-header.component.js +14 -0
  159. package/esm2015/lib/desy-tables/components/table-advanced/components/table-advanced-row-cell.component.js +17 -0
  160. package/esm2015/lib/desy-tables/components/table-advanced/components/table-advanced-row.component.js +20 -0
  161. package/esm2015/lib/desy-tables/components/table-advanced/table-advanced.component.js +173 -149
  162. package/esm2015/lib/desy-tables/desy-tables.module.js +31 -3
  163. package/esm2015/lib/desy-tables/directives/cell.directive.js +26 -0
  164. package/esm2015/lib/desy-tables/directives/focus-clicked-cell.directive.js +12 -8
  165. package/esm2015/lib/desy-tables/directives/row.directive.js +24 -0
  166. package/esm2015/lib/desy-tables/interfaces/cell-data.js +1 -1
  167. package/esm2015/lib/desy-tables/interfaces/head-cell-data.js +1 -1
  168. package/esm2015/lib/desy-tables/interfaces/index.js +2 -1
  169. package/esm2015/lib/desy-tables/interfaces/recalculate-table-params.js +2 -0
  170. package/esm2015/lib/desy-tables/interfaces/row-data.js +1 -1
  171. package/esm2015/lib/desy-tables/interfaces/wrapper-data.js +2 -0
  172. package/esm2015/lib/desy-views/components/accordion/accordion-header/accordion-header.component.js +14 -0
  173. package/esm2015/lib/desy-views/components/accordion/accordion-item/accordion-item.component.js +33 -0
  174. package/esm2015/lib/desy-views/components/accordion/accordion.component.js +84 -56
  175. package/esm2015/lib/desy-views/components/alert/alert.component.js +28 -23
  176. package/esm2015/lib/desy-views/components/collapsible/collapsible.component.js +6 -10
  177. package/esm2015/lib/desy-views/components/description-list/definition/definition.component.js +15 -0
  178. package/esm2015/lib/desy-views/components/description-list/description-item/description-item.component.js +26 -0
  179. package/esm2015/lib/desy-views/components/description-list/description-list.component.js +13 -23
  180. package/esm2015/lib/desy-views/components/description-list/term/term.component.js +15 -0
  181. package/esm2015/lib/desy-views/components/details/details.component.js +1 -1
  182. package/esm2015/lib/desy-views/components/item/item-content-bottom/item-content-bottom.component.js +14 -0
  183. package/esm2015/lib/desy-views/components/item/item-content-right/item-content-right.component.js +11 -0
  184. package/esm2015/lib/desy-views/components/item/item-item/item-item.component.js +11 -0
  185. package/esm2015/lib/desy-views/components/item/item.component.js +57 -24
  186. package/esm2015/lib/desy-views/components/media-object/media-object.component.js +1 -1
  187. package/esm2015/lib/desy-views/components/spinner/spinner.component.js +1 -1
  188. package/esm2015/lib/desy-views/components/status/status.component.js +2 -2
  189. package/esm2015/lib/desy-views/components/status-item/status-item.component.js +39 -26
  190. package/esm2015/lib/desy-views/components/tabs/panel/panel.component.js +15 -0
  191. package/esm2015/lib/desy-views/components/tabs/tab-item/tab-item.component.js +28 -0
  192. package/esm2015/lib/desy-views/components/tabs/tabs.component.js +58 -36
  193. package/esm2015/lib/desy-views/components/tooltip/tooltip-content/tooltip-content.component.js +11 -0
  194. package/esm2015/lib/desy-views/components/tooltip/tooltip.component.js +132 -0
  195. package/esm2015/lib/desy-views/desy-views.module.js +41 -1
  196. package/esm2015/lib/desy-views/interfaces/accordion-header.data.js +1 -1
  197. package/esm2015/lib/desy-views/interfaces/accordion-item.data.js +1 -1
  198. package/esm2015/lib/desy-views/interfaces/alert-options.js +1 -1
  199. package/esm2015/lib/desy-views/interfaces/description-item.data.js +2 -0
  200. package/esm2015/lib/desy-views/interfaces/index.js +4 -4
  201. package/esm2015/lib/desy-views/interfaces/open-alert-result.js +1 -1
  202. package/esm2015/lib/desy-views/interfaces/status-data.js +1 -1
  203. package/esm2015/lib/desy-views/interfaces/status-icon-data.js +1 -1
  204. package/esm2015/lib/desy-views/interfaces/status-item-title-data.js +1 -1
  205. package/esm2015/lib/desy-views/interfaces/tabs-items-data.js +1 -1
  206. package/esm2015/lib/desy-views/interfaces/tabs-panel-data.js +1 -1
  207. package/esm2015/lib/desy-views/interfaces/term-definition.data.js +2 -0
  208. package/esm2015/lib/desy-views/services/alert.service.js +1 -1
  209. package/esm2015/lib/shared/components/accessibility/accessibility.component.js +1 -1
  210. package/esm2015/lib/shared/components/accessibility-and-content-required/accessibility-and-content-required.component.js +27 -0
  211. package/esm2015/lib/shared/components/accessibility-and-text-or-html-required/accessibility-and-text-or-html-required.component.js +1 -1
  212. package/esm2015/lib/shared/components/content-base/content-base.component.js +20 -0
  213. package/esm2015/lib/shared/components/index.js +3 -1
  214. package/esm2015/lib/shared/components/text-or-html-required/text-or-html-required.component.js +1 -1
  215. package/esm2015/lib/shared/decorators/desy-content-child.decorator.js +41 -0
  216. package/esm2015/lib/shared/decorators/desy-on-input-change.decorator.js +19 -0
  217. package/esm2015/lib/shared/directives/attribute-change.directive.js +43 -0
  218. package/esm2015/lib/shared/directives/click-outside.directive.js +1 -1
  219. package/esm2015/lib/shared/directives/content-change.directive.js +43 -0
  220. package/esm2015/lib/shared/directives/content-empty.directive.js +86 -0
  221. package/esm2015/lib/shared/directives/custom-inner-content.directive.js +62 -0
  222. package/esm2015/lib/shared/directives/inner-content.directive.js +5 -3
  223. package/esm2015/lib/shared/interfaces/accesibility-data.js +1 -1
  224. package/esm2015/lib/shared/pipes/external-href.pipe.js +28 -0
  225. package/esm2015/lib/shared/pipes/inner-html.pipe.js +1 -1
  226. package/esm2015/lib/shared/pipes/make-html-list.pipe.js +1 -1
  227. package/esm2015/lib/shared/shared.module.js +23 -4
  228. package/esm2015/lib/shared/utils/focus-utils.js +1 -1
  229. package/esm2015/lib/shared/utils/search-utils.js +1 -1
  230. package/esm2015/lib/shared/utils/string-utils.js +18 -0
  231. package/esm2015/public-api.js +88 -29
  232. package/fesm2015/desy-angular.js +5759 -2069
  233. package/fesm2015/desy-angular.js.map +1 -1
  234. package/lib/desy-buttons/components/button/button.component.d.ts +6 -7
  235. package/lib/desy-buttons/components/button-loader/button-loader.component.d.ts +1 -0
  236. package/lib/desy-buttons/components/dropdown/dropdown.component.d.ts +9 -7
  237. package/lib/desy-buttons/components/listbox/listbox-item/listbox-item.component.d.ts +12 -0
  238. package/lib/desy-buttons/components/listbox/listbox-label/listbox-label.component.d.ts +4 -0
  239. package/lib/desy-buttons/components/listbox/listbox.component.d.ts +53 -0
  240. package/lib/desy-buttons/components/pill/pill.component.d.ts +3 -3
  241. package/lib/desy-buttons/interfaces/listbox-item-data.d.ts +9 -0
  242. package/lib/{desy-nav/interfaces/notification-title-data.d.ts → desy-buttons/interfaces/listbox-label-data.d.ts} +1 -1
  243. package/lib/desy-commons/components/content/content.component.d.ts +5 -0
  244. package/lib/desy-commons/components/description/description.component.d.ts +5 -0
  245. package/lib/desy-commons/components/icon/icon.component.d.ts +5 -0
  246. package/lib/desy-commons/components/title/title.component.d.ts +5 -0
  247. package/lib/desy-commons/desy-commons.module.d.ts +2 -0
  248. package/lib/{desy-nav/interfaces/notification-content-data.d.ts → desy-commons/interfaces/content-data.d.ts} +1 -1
  249. package/lib/desy-commons/interfaces/description-data.d.ts +5 -0
  250. package/lib/desy-commons/interfaces/icon-data.d.ts +4 -0
  251. package/lib/desy-commons/interfaces/index.d.ts +4 -0
  252. package/lib/desy-commons/interfaces/title-data.d.ts +6 -0
  253. package/lib/desy-forms/components/checkboxes/checkbox-item/checkbox-item.component.d.ts +47 -0
  254. package/lib/desy-forms/components/checkboxes/checkboxes.component.d.ts +53 -15
  255. package/lib/desy-forms/components/date-input/date-input-day/date-input-day.component.d.ts +22 -0
  256. package/lib/desy-forms/components/date-input/date-input-divider/date-input-divider.component.d.ts +7 -0
  257. package/lib/desy-forms/components/date-input/date-input-item/date-input-item.component.d.ts +4 -0
  258. package/lib/desy-forms/components/date-input/date-input-month/date-input-month.component.d.ts +22 -0
  259. package/lib/desy-forms/components/date-input/date-input-year/date-input-year.component.d.ts +19 -0
  260. package/lib/desy-forms/components/date-input/date-input.component.d.ts +21 -4
  261. package/lib/desy-forms/components/error-message/error-message.component.d.ts +8 -2
  262. package/lib/desy-forms/components/fieldset/fieldset.component.d.ts +12 -4
  263. package/lib/desy-forms/components/fieldset/legend/legend.component.d.ts +3 -2
  264. package/lib/desy-forms/components/form-field/form-field.component.d.ts +7 -18
  265. package/lib/desy-forms/components/hint/hint.component.d.ts +8 -2
  266. package/lib/desy-forms/components/input-group/input-group-divider/input-group-divider.component.d.ts +8 -0
  267. package/lib/desy-forms/components/input-group/input-group-input/input-group-input.component.d.ts +20 -0
  268. package/lib/desy-forms/components/input-group/input-group-item/input-group-item.component.d.ts +4 -0
  269. package/lib/desy-forms/components/input-group/input-group-select/input-group-select.component.d.ts +16 -0
  270. package/lib/desy-forms/components/input-group/input-group.component.d.ts +24 -6
  271. package/lib/desy-forms/components/label/label.component.d.ts +12 -5
  272. package/lib/desy-forms/components/radios/radio-item/radio-item.component.d.ts +43 -0
  273. package/lib/desy-forms/components/radios/radios.component.d.ts +56 -11
  274. package/lib/desy-forms/components/search-bar/search-bar.component.d.ts +7 -3
  275. package/lib/desy-forms/components/select/option/option.component.d.ts +7 -0
  276. package/lib/desy-forms/components/select/option-group/option-group.component.d.ts +7 -0
  277. package/lib/desy-forms/components/select/select-item/select-item.component.d.ts +4 -0
  278. package/lib/desy-forms/components/select/select.component.d.ts +9 -2
  279. package/lib/desy-forms/interfaces/error-message-data.d.ts +5 -5
  280. package/lib/desy-forms/interfaces/fieldset-data.d.ts +5 -4
  281. package/lib/desy-forms/interfaces/hint-data.d.ts +4 -4
  282. package/lib/desy-forms/interfaces/item-checkbox-data.d.ts +1 -0
  283. package/lib/desy-forms/interfaces/item-date-input-data.d.ts +3 -0
  284. package/lib/desy-forms/interfaces/item-divider-date-input-data.d.ts +5 -0
  285. package/lib/desy-forms/interfaces/item-input-group-data.d.ts +1 -2
  286. package/lib/desy-forms/interfaces/item-radio-data.d.ts +15 -12
  287. package/lib/desy-forms/interfaces/legend-data.d.ts +4 -4
  288. package/lib/desy-forms/interfaces/select-item-data.d.ts +2 -1
  289. package/lib/desy-modals/components/modal/modal-button-primary/modal-button-primary.component.d.ts +7 -0
  290. package/lib/desy-modals/components/modal/modal-button-secondary/modal-button-secondary.component.d.ts +7 -0
  291. package/lib/desy-modals/components/modal/modal.component.d.ts +27 -2
  292. package/lib/desy-modals/interfaces/modal-button-data.d.ts +2 -2
  293. package/lib/desy-nav/components/breadcrumbs/breadcrumbs-item/breadcrumbs-item.component.d.ts +6 -0
  294. package/lib/desy-nav/components/breadcrumbs/breadcrumbs.component.d.ts +7 -4
  295. package/lib/desy-nav/components/error-summary/error-summary-item/error-summary-item.component.d.ts +6 -0
  296. package/lib/desy-nav/components/error-summary/error-summary.component.d.ts +12 -4
  297. package/lib/desy-nav/components/footer/footer-meta/footer-meta-item/footer-meta-item.component.d.ts +7 -0
  298. package/lib/desy-nav/components/footer/footer-meta/footer-meta.component.d.ts +10 -0
  299. package/lib/desy-nav/components/footer/footer-navigation/footer-navigation-item/footer-navigation-item.component.d.ts +7 -0
  300. package/lib/desy-nav/components/footer/footer-navigation/footer-navigation.component.d.ts +8 -0
  301. package/lib/desy-nav/components/footer/footer.component.d.ts +15 -3
  302. package/lib/desy-nav/components/header/header-dropdown/header-dropdown.component.d.ts +10 -6
  303. package/lib/desy-nav/components/header/header-navigation/header-navigation-item/header-navigation-item.component.d.ts +10 -0
  304. package/lib/desy-nav/components/header/header-navigation/header-navigation.component.d.ts +6 -2
  305. package/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-button/header-offcanvas-button.component.d.ts +6 -0
  306. package/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-close-button/header-offcanvas-close-button.component.d.ts +3 -0
  307. package/lib/desy-nav/components/header/header-offcanvas/header-offcanvas.component.d.ts +30 -9
  308. package/lib/desy-nav/components/header/header-subnav/header-subnav.component.d.ts +11 -8
  309. package/lib/desy-nav/components/header/header.component.d.ts +16 -5
  310. package/lib/desy-nav/components/menu-horizontal/menu-horizontal-item/menu-horizontal-item.component.d.ts +15 -0
  311. package/lib/desy-nav/components/menu-horizontal/menu-horizontal.component.d.ts +6 -5
  312. package/lib/desy-nav/components/menu-vertical/menu-vertical-item/menu-vertical-item.component.d.ts +18 -0
  313. package/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub/menu-vertical-item-sub.component.d.ts +8 -0
  314. package/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub-item/menu-vertical-item-sub-item.component.d.ts +15 -0
  315. package/lib/desy-nav/components/menu-vertical/menu-vertical.component.d.ts +13 -18
  316. package/lib/desy-nav/components/menubar/components/menubar-item/menubar-item.component.d.ts +23 -0
  317. package/lib/desy-nav/components/menubar/components/menubar-label/menubar-label.component.d.ts +4 -0
  318. package/lib/desy-nav/components/menubar/components/menubar-subitem/menubar-subitem.component.d.ts +15 -0
  319. package/lib/desy-nav/components/menubar/components/menubar-subsubitem/menubar-subsubitem.component.d.ts +10 -0
  320. package/lib/desy-nav/components/menubar/directives/menubaritem.directive.d.ts +16 -0
  321. package/lib/desy-nav/components/menubar/menubar.component.d.ts +88 -0
  322. package/lib/desy-nav/components/nav/nav-item/nav-item.component.d.ts +17 -0
  323. package/lib/desy-nav/components/nav/nav.component.d.ts +7 -5
  324. package/lib/desy-nav/components/notification/notification-item/notification-item.component.d.ts +9 -0
  325. package/lib/desy-nav/components/notification/notification.component.d.ts +25 -11
  326. package/lib/desy-nav/components/skip-link/skip-link.component.d.ts +9 -2
  327. package/lib/desy-nav/interfaces/breadcrumbs.data.d.ts +4 -4
  328. package/lib/desy-nav/interfaces/error-summary-data.d.ts +4 -4
  329. package/lib/desy-nav/interfaces/footer-data.d.ts +7 -10
  330. package/lib/desy-nav/interfaces/header-dropdown-data.d.ts +5 -1
  331. package/lib/desy-nav/interfaces/header-offcanvas-data.d.ts +0 -1
  332. package/lib/desy-nav/interfaces/header-subnav-data.d.ts +6 -1
  333. package/lib/desy-nav/interfaces/index.d.ts +0 -4
  334. package/lib/desy-nav/interfaces/menu-vertical-items-data.d.ts +15 -13
  335. package/lib/desy-nav/interfaces/menu-vertical-sub-data.d.ts +3 -4
  336. package/lib/desy-nav/interfaces/menu-vertical-sub-items-data.d.ts +15 -12
  337. package/lib/desy-nav/interfaces/menubar-item-sub-item-sub-item.d.ts +6 -0
  338. package/lib/desy-nav/interfaces/menubar-item-sub-item.d.ts +9 -0
  339. package/lib/desy-nav/interfaces/menubar-item-sub.d.ts +6 -0
  340. package/lib/desy-nav/interfaces/menubar-item.d.ts +18 -0
  341. package/lib/desy-nav/interfaces/nav-item.data.d.ts +2 -1
  342. package/lib/desy-nav/interfaces/notification-items-data.d.ts +8 -5
  343. package/lib/desy-nav/interfaces/notification-options.d.ts +5 -8
  344. package/lib/desy-pagination/components/pagination/pagination.component.d.ts +7 -12
  345. package/lib/desy-tables/components/table/components/table-caption.component.d.ts +4 -0
  346. package/lib/desy-tables/components/table/components/table-cell.component.d.ts +8 -0
  347. package/lib/desy-tables/components/table/components/table-header.component.d.ts +5 -0
  348. package/lib/desy-tables/components/table/components/table-row.component.d.ts +5 -0
  349. package/lib/desy-tables/components/table/table.component.d.ts +16 -4
  350. package/lib/desy-tables/components/table-advanced/components/table-advanced-header-cell.component.d.ts +13 -0
  351. package/lib/desy-tables/components/table-advanced/components/table-advanced-header.component.d.ts +5 -0
  352. package/lib/desy-tables/components/table-advanced/components/table-advanced-row-cell.component.d.ts +8 -0
  353. package/lib/desy-tables/components/table-advanced/components/table-advanced-row.component.d.ts +8 -0
  354. package/lib/desy-tables/components/table-advanced/table-advanced.component.d.ts +66 -39
  355. package/lib/desy-tables/directives/cell.directive.d.ts +14 -0
  356. package/lib/desy-tables/directives/focus-clicked-cell.directive.d.ts +3 -3
  357. package/lib/desy-tables/directives/row.directive.d.ts +16 -0
  358. package/lib/desy-tables/interfaces/head-cell-data.d.ts +2 -2
  359. package/lib/desy-tables/interfaces/index.d.ts +1 -0
  360. package/lib/desy-tables/interfaces/recalculate-table-params.d.ts +11 -0
  361. package/lib/desy-tables/interfaces/row-data.d.ts +1 -0
  362. package/lib/desy-tables/interfaces/wrapper-data.d.ts +4 -0
  363. package/lib/desy-views/components/accordion/accordion-header/accordion-header.component.d.ts +5 -0
  364. package/lib/desy-views/components/accordion/accordion-item/accordion-item.component.d.ts +13 -0
  365. package/lib/desy-views/components/accordion/accordion.component.d.ts +20 -11
  366. package/lib/desy-views/components/alert/alert.component.d.ts +6 -4
  367. package/lib/desy-views/components/collapsible/collapsible.component.d.ts +4 -6
  368. package/lib/desy-views/components/description-list/definition/definition.component.d.ts +6 -0
  369. package/lib/desy-views/components/description-list/description-item/description-item.component.d.ts +9 -0
  370. package/lib/desy-views/components/description-list/description-list.component.d.ts +9 -6
  371. package/lib/desy-views/components/description-list/term/term.component.d.ts +6 -0
  372. package/lib/desy-views/components/item/item-content-bottom/item-content-bottom.component.d.ts +5 -0
  373. package/lib/desy-views/components/item/item-content-right/item-content-right.component.d.ts +3 -0
  374. package/lib/desy-views/components/item/item-item/item-item.component.d.ts +3 -0
  375. package/lib/desy-views/components/item/item.component.d.ts +28 -9
  376. package/lib/desy-views/components/status-item/status-item.component.d.ts +17 -6
  377. package/lib/desy-views/components/tabs/panel/panel.component.d.ts +6 -0
  378. package/lib/desy-views/components/tabs/tab-item/tab-item.component.d.ts +12 -0
  379. package/lib/desy-views/components/tabs/tabs.component.d.ts +15 -3
  380. package/lib/desy-views/components/tooltip/tooltip-content/tooltip-content.component.d.ts +3 -0
  381. package/lib/desy-views/components/tooltip/tooltip.component.d.ts +35 -0
  382. package/lib/desy-views/interfaces/accordion-header.data.d.ts +3 -3
  383. package/lib/desy-views/interfaces/accordion-item.data.d.ts +8 -8
  384. package/lib/desy-views/interfaces/description-item.data.d.ts +8 -0
  385. package/lib/desy-views/interfaces/index.d.ts +3 -3
  386. package/lib/desy-views/interfaces/tabs-items-data.d.ts +5 -5
  387. package/lib/desy-views/interfaces/tabs-panel-data.d.ts +4 -4
  388. package/lib/desy-views/interfaces/term-definition.data.d.ts +7 -0
  389. package/lib/shared/components/accessibility-and-content-required/accessibility-and-content-required.component.d.ts +26 -0
  390. package/lib/shared/components/content-base/content-base.component.d.ts +9 -0
  391. package/lib/shared/components/index.d.ts +2 -0
  392. package/lib/shared/decorators/desy-content-child.decorator.d.ts +15 -0
  393. package/lib/shared/decorators/desy-on-input-change.decorator.d.ts +5 -0
  394. package/lib/shared/directives/attribute-change.directive.d.ts +10 -0
  395. package/lib/shared/directives/content-change.directive.d.ts +19 -0
  396. package/lib/shared/directives/content-empty.directive.d.ts +26 -0
  397. package/lib/shared/directives/custom-inner-content.directive.d.ts +22 -0
  398. package/lib/shared/directives/inner-content.directive.d.ts +1 -0
  399. package/lib/shared/pipes/external-href.pipe.d.ts +8 -0
  400. package/lib/shared/utils/string-utils.d.ts +10 -0
  401. package/package.json +16 -11
  402. package/public-api.d.ts +75 -25
  403. package/esm2015/lib/desy-forms/components/checkboxes/item-checkbox/item-checkbox.component.js +0 -100
  404. package/esm2015/lib/desy-forms/components/radios/item-radio/item-radio.component.js +0 -89
  405. package/esm2015/lib/desy-nav/components/header/header-offcanvas-button/header-offcanvas-button.component.js +0 -62
  406. package/esm2015/lib/desy-nav/interfaces/notification-content-data.js +0 -2
  407. package/esm2015/lib/desy-nav/interfaces/notification-description-data.js +0 -2
  408. package/esm2015/lib/desy-nav/interfaces/notification-icon-data.js +0 -2
  409. package/esm2015/lib/desy-nav/interfaces/notification-title-data.js +0 -2
  410. package/esm2015/lib/desy-views/interfaces/description.data.js +0 -2
  411. package/esm2015/lib/desy-views/interfaces/item-data.js +0 -2
  412. package/esm2015/lib/desy-views/interfaces/item-description.data.js +0 -2
  413. package/esm2015/lib/shared/utils/navigation-utils.js +0 -18
  414. package/lib/desy-forms/components/checkboxes/item-checkbox/item-checkbox.component.d.ts +0 -39
  415. package/lib/desy-forms/components/radios/item-radio/item-radio.component.d.ts +0 -36
  416. package/lib/desy-nav/components/header/header-offcanvas-button/header-offcanvas-button.component.d.ts +0 -19
  417. package/lib/desy-nav/interfaces/notification-description-data.d.ts +0 -5
  418. package/lib/desy-nav/interfaces/notification-icon-data.d.ts +0 -3
  419. package/lib/desy-views/interfaces/description.data.d.ts +0 -7
  420. package/lib/desy-views/interfaces/item-data.d.ts +0 -19
  421. package/lib/desy-views/interfaces/item-description.data.d.ts +0 -8
  422. package/lib/shared/utils/navigation-utils.d.ts +0 -3
@@ -0,0 +1,5 @@
1
+ export * from './content-data';
2
+ export * from './description-data';
3
+ export * from './icon-data';
4
+ export * from './title-data';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXN5LWFuZ3VsYXIvc3JjL2xpYi9kZXN5LWNvbW1vbnMvaW50ZXJmYWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NvbnRlbnQtZGF0YSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZGVzY3JpcHRpb24tZGF0YSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vaWNvbi1kYXRhJztcclxuZXhwb3J0ICogZnJvbSAnLi90aXRsZS1kYXRhJztcclxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGl0bGUtZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc3ktYW5ndWxhci9zcmMvbGliL2Rlc3ktY29tbW9ucy9pbnRlcmZhY2VzL3RpdGxlLWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWNjZXNpYmlsaXR5RGF0YX0gZnJvbSAnLi4vLi4vc2hhcmVkL2ludGVyZmFjZXMvYWNjZXNpYmlsaXR5LWRhdGEnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUaXRsZURhdGEgZXh0ZW5kcyBBY2Nlc2liaWxpdHlEYXRhIHtcclxuICAgIHRleHQ/OiBzdHJpbmc7XHJcbiAgICBodG1sPzogc3RyaW5nO1xyXG4gICAgY2xhc3Nlcz86IHN0cmluZztcclxufVxyXG4iXX0=
@@ -97,7 +97,7 @@ export class CharacterCountComponent extends FormFieldComponent {
97
97
  CharacterCountComponent.decorators = [
98
98
  { type: Component, args: [{
99
99
  selector: 'desy-character-count',
100
- template: "<div>\r\n <desy-textarea\r\n [id]=\"id\"\r\n [name]=\"name\"\r\n [describedBy]=\"id + '-info'\"\r\n [rows]=\"rows\"\r\n [placeholder]=\"placeholder\"\r\n formGroupClasses=\"mb-0\"\r\n [classes]=\"['js-character-count', hasErrorsMessage() ? 'border-alert-base ring-2 ring-alert-base' : null, classes] | makeHtmlList\"\r\n [labelRef]=\"labelRef\" [labelData]=\"labelData\" [labelText]=\"labelText\"\r\n [hintRef]=\"hintRef\" [hintData]=\"hintData\" [hintText]=\"hintText\"\r\n [errorMessageRef]=\"errorMessageRef\" [errorMessageData]=\"errorMessageData\" [errorMessageText]=\"errorMessageText\"\r\n [role]=\"role\"\r\n [ariaLabel]=\"ariaLabel\"\r\n [ariaLabelledBy]=\"ariaLabelledBy\"\r\n [ariaHidden]=\"ariaHidden\"\r\n [ariaDisabled]=\"ariaDisabled\"\r\n [ariaControls]=\"ariaControls\"\r\n [ariaCurrent]=\"ariaCurrent\"\r\n [ariaLive]=\"ariaLive\"\r\n [ariaExpanded]=\"ariaExpanded\"\r\n [ariaErrorMessage]=\"ariaErrorMessage\"\r\n [ariaHasPopup]=\"ariaHasPopup\"\r\n [tabindex]=\"tabindex\"></desy-textarea>\r\n\r\n <desy-hint *ngIf=\"!!displayCountMessage\"\r\n [id]=\"id + '-info'\" [classes]=\"['mt-xs text-sm', countMessageClasses] | makeHtmlList\" ariaLive=\"polite\"\r\n [text]=\"'Puedes escribir hasta ' + remaining + (maxlength ? ' caracteres' : ' palabras')\"></desy-hint>\r\n</div>\r\n",
100
+ template: "<div>\r\n <desy-textarea\r\n [id]=\"id\"\r\n [name]=\"name\"\r\n [describedBy]=\"id + '-info'\"\r\n [rows]=\"rows\"\r\n [placeholder]=\"placeholder\"\r\n formGroupClasses= \"['' + (formGroupClasses ? formGroupClasses : 'mb-0')] | makeHtmlList\"\r\n [classes]=\"['js-character-count', hasErrorsMessage() ? 'border-alert-base ring-2 ring-alert-base' : null, classes] | makeHtmlList\"\r\n [labelRef]=\"labelRef\" [labelData]=\"labelData\" [labelText]=\"labelText\"\r\n [hintRef]=\"hintRef\" [hintData]=\"hintData\" [hintText]=\"hintText\"\r\n [errorMessageRef]=\"errorMessageRef\" [errorMessageData]=\"errorMessageData\" [errorMessageText]=\"errorMessageText\"\r\n [role]=\"role\"\r\n [ariaLabel]=\"ariaLabel\"\r\n [ariaLabelledBy]=\"ariaLabelledBy\"\r\n [ariaHidden]=\"ariaHidden\"\r\n [ariaDisabled]=\"ariaDisabled\"\r\n [ariaControls]=\"ariaControls\"\r\n [ariaCurrent]=\"ariaCurrent\"\r\n [ariaLive]=\"ariaLive\"\r\n [ariaExpanded]=\"ariaExpanded\"\r\n [ariaErrorMessage]=\"ariaErrorMessage\"\r\n [ariaHasPopup]=\"ariaHasPopup\"\r\n [tabindex]=\"tabindex\"></desy-textarea>\r\n\r\n <desy-hint *ngIf=\"!!displayCountMessage\"\r\n [id]=\"id + '-info'\" [classes]=\"['mt-xs text-sm', countMessageClasses] | makeHtmlList\" ariaLive=\"polite\"\r\n [text]=\"'Puedes escribir hasta ' + remaining + (maxlength ? ' caracteres' : ' palabras')\"></desy-hint>\r\n</div>\r\n",
101
101
  providers: [
102
102
  {
103
103
  provide: NG_VALUE_ACCESSOR,
@@ -121,4 +121,4 @@ CharacterCountComponent.propDecorators = {
121
121
  countMessageClasses: [{ type: Input }],
122
122
  classes: [{ type: Input }]
123
123
  };
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcmFjdGVyLWNvdW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi9wcm9qZWN0cy9kZXN5LWFuZ3VsYXIvc3JjLyIsInNvdXJjZXMiOlsibGliL2Rlc3ktZm9ybXMvY29tcG9uZW50cy9jaGFyYWN0ZXItY291bnQvY2hhcmFjdGVyLWNvdW50LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBR0wsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBYW5FLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxrQkFBMEI7SUFvQnJFLGVBQWU7UUFDYixJQUFJLENBQUMsZUFBZSxHQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLGFBQXFDLENBQUM7UUFDNUYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5QyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFF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LFFBQVEsRUFBRTtZQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNqQztJQUNILENBQUM7OztZQS9IRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtnQkFDaEMsdzJDQUErQztnQkFDL0MsU0FBUyxFQUFFO29CQUNUO3dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsdUJBQXVCLENBQUM7d0JBQ3RELEtBQUssRUFBRSxJQUFJO3FCQUNaO2lCQUNGO2FBQ0Y7Ozt1QkFHRSxTQUFTLFNBQUMsaUJBQWlCO21CQUUzQixLQUFLO21CQUNMLEtBQUs7bUJBQ0wsS0FBSzswQkFDTCxLQUFLO3dCQUNMLEtBQUs7d0JBQ0wsS0FBSzt1QkFDTCxLQUFLO3dCQUNMLEtBQUs7K0JBQ0wsS0FBSztrQ0FDTCxLQUFLO3NCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ29tcG9uZW50LFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBGb3JtRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mb3JtLWZpZWxkL2Zvcm0tZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGV4dGFyZWFDb21wb25lbnQgfSBmcm9tICcuLi90ZXh0YXJlYS90ZXh0YXJlYS5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkZXN5LWNoYXJhY3Rlci1jb3VudCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXJhY3Rlci1jb3VudC5jb21wb25lbnQuaHRtbCcsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDaGFyYWN0ZXJDb3VudENvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlXHJcbiAgICB9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2hhcmFjdGVyQ291bnRDb21wb25lbnQgZXh0ZW5kcyBGb3JtRmllbGRDb21wb25lbnQ8c3RyaW5nPiBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoVGV4dGFyZWFDb21wb25lbnQpIHRleHRhcmVhO1xyXG5cclxuICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdHlwZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHJvd3M6IG51bWJlcjtcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG1heGxlbmd0aDogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGNvdW50YmJkZDogYm9vbGVhbjtcclxuICBASW5wdXQoKSBtYXh3b3JkczogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHRocmVzaG9sZDogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGZvcm1Hcm91cENsYXNzZXM6IHN0cmluZztcclxuICBASW5wdXQoKSBjb3VudE1lc3NhZ2VDbGFzc2VzOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgY2xhc3Nlczogc3RyaW5nO1xyXG5cclxuICB0ZXh0YXJlYUVsZW1lbnQ6IEhUTUxUZXh0QXJlYUVsZW1lbnQ7XHJcbiAgZGlzcGxheUNvdW50TWVzc2FnZTogYm9vbGVhbjtcclxuICByZW1haW5pbmc6IG51bWJlcjtcclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy50ZXh0YXJlYUVsZW1lbnQgPSAodGhpcy50ZXh0YXJlYS50ZXh0YXJlYUVsZW1lbnQubmF0aXZlRWxlbWVudCBhcyBIVE1MVGV4dEFyZWFFbGVtZW50KTtcclxuICAgIHRoaXMudGV4dGFyZWEucmVnaXN0ZXJJbnB1dFRyYW5zZm9ybSh0aGlzLmlucHV0VHJhbnNmb3JtLmJpbmQodGhpcykpO1xyXG4gICAgdGhpcy5yZWdpc3Rlck9uQ2hhbmdlKHRoaXMub25DaGFuZ2UpO1xyXG4gICAgdGhpcy5yZWdpc3Rlck9uVG91Y2hlZCh0aGlzLm9uVG91Y2gpO1xyXG4gICAgdGhpcy50ZXh0YXJlYS5zZXREaXNhYmxlZFN0YXRlKHRoaXMuZGlzYWJsZWQpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnRleHRhcmVhLndyaXRlVmFsdWUodGhpcy52YWx1ZSksIDUwKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIHRoaXMuY2hlY2tSZXF1aXJlZCgpO1xyXG4gICAgaWYgKHRoaXMudGV4dGFyZWEpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnRleHRhcmVhLm5nT25DaGFuZ2VzKGNoYW5nZXMpLCA1MCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbnB1dFRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICBpZiAodGhpcy5tYXhsZW5ndGgpIHtcclxuICAgICAgICBsZXQgbGVuZ3RoID0gdGhpcy5jYWxjdWxhdGVMZW5naHQodmFsdWUpO1xyXG4gICAgICAgIHRoaXMuZGlzcGxheUNvdW50TWVzc2FnZSA9ICF0aGlzLnRocmVzaG9sZCB8fCBsZW5ndGggPiAodGhpcy5tYXhsZW5ndGggKiB0aGlzLnRocmVzaG9sZCAvIDEwMCk7XHJcbiAgICAgICAgd2hpbGUgKGxlbmd0aCA+IHRoaXMubWF4bGVuZ3RoKSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnN1YnN0cmluZygwLCB2YWx1ZS5sZW5ndGggLSAxKTtcclxuICAgICAgICAgIGxlbmd0aCA9IHRoaXMuY2FsY3VsYXRlTGVuZ2h0KHZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yZW1haW5pbmcgPSB0aGlzLm1heGxlbmd0aCAtIGxlbmd0aDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCB3b3JkcyA9IHZhbHVlLm1hdGNoKC9bXFx3w6HDqcOtw7PDusOBw4nDjcOTw5rDvMOcw7HDkV0rL2cpIHx8IFtdO1xyXG4gICAgICAgIHRoaXMuZGlzcGxheUNvdW50TWVzc2FnZSA9ICF0aGlzLnRocmVzaG9sZCB8fCAod29yZHMubGVuZ3RoID4gdGhpcy5tYXh3b3JkcyAqIHRoaXMudGhyZXNob2xkIC8gMTAwKTtcclxuICAgICAgICB3aGlsZSAoIHdvcmRzLmxlbmd0aCA+IHRoaXMubWF4d29yZHMpIHtcclxuICAgICAgICAgIHZhbHVlID0gdmFsdWUuc3Vic3RyaW5nKDAsIHZhbHVlLmxhc3RJbmRleE9mKHdvcmRzLnBvcCgpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVtYWluaW5nID0gdGhpcy5tYXh3b3JkcyAtIHdvcmRzLmxlbmd0aDtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFsdWUgPSAnJztcclxuICAgICAgdGhpcy5kaXNwbGF5Q291bnRNZXNzYWdlID0gIXRoaXMudGhyZXNob2xkO1xyXG4gICAgICB0aGlzLnJlbWFpbmluZyA9IHRoaXMubWF4bGVuZ3RoID8gdGhpcy5tYXhsZW5ndGggOiB0aGlzLm1heHdvcmRzO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudGV4dGFyZWFFbGVtZW50LnZhbHVlID0gdmFsdWU7XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBjYWxjdWxhdGVMZW5naHQodmFsdWU6IHN0cmluZyk6IG51bWJlciB7XHJcbiAgICBsZXQgbGVuZ3RoID0gdmFsdWUubGVuZ3RoO1xyXG4gICAgaWYgKHRoaXMuY291bnRiYmRkICYmIHZhbHVlKSB7XHJcbiAgICAgIGNvbnN0IHNwZWNpYWxDaGFycyA9IHZhbHVlLm1hdGNoKC9bXkEtejAtOV9cXHMuLDo7XS9nKTtcclxuICAgICAgbGVuZ3RoICs9IHNwZWNpYWxDaGFycyA/IHNwZWNpYWxDaGFycy5sZW5ndGggOiAwO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxlbmd0aDtcclxuICB9XHJcblxyXG4gIGNoZWNrUmVxdWlyZWQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaWQpIHtcclxuICAgICAgdGhyb3cgRXJyb3IoJ2lkIGlzIHJlcXVpcmVkJyk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMubmFtZSkge1xyXG4gICAgICB0aHJvdyBFcnJvcignbmFtZSBpcyByZXF1aXJlZCcpO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLm1heGxlbmd0aCAmJiAhdGhpcy5tYXh3b3Jkcykge1xyXG4gICAgICB0aHJvdyBFcnJvcignbWF4bGVuZ3RoIG9yIG1heHdvcmRzIGFyZSByZXF1aXJlZCcpO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmhhc0xhYmVsKCkpIHtcclxuICAgICAgdGhyb3cgRXJyb3IoJ2xhYmVsIGlzIHJlcXVpcmVkJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICAgIGlmICh0aGlzLnRleHRhcmVhKSB7XHJcbiAgICAgIHRoaXMudGV4dGFyZWEucmVnaXN0ZXJPbkNoYW5nZShmbik7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UgPSAoXzogYW55KSA9PiB7fTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaCA9IGZuO1xyXG4gICAgaWYgKHRoaXMudGV4dGFyZWEpIHtcclxuICAgICAgdGhpcy50ZXh0YXJlYS5yZWdpc3Rlck9uVG91Y2hlZChmbik7XHJcbiAgICAgIHRoaXMub25Ub3VjaCA9ICgpID0+IHsgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgICBpZiAodGhpcy50ZXh0YXJlYSkge1xyXG4gICAgICB0aGlzLnRleHRhcmVhLnNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgIGlmICh0aGlzLnRleHRhcmVhKSB7XHJcbiAgICAgIHRoaXMudGV4dGFyZWEud3JpdGVWYWx1ZSh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcmFjdGVyLWNvdW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc3ktYW5ndWxhci9zcmMvbGliL2Rlc3ktZm9ybXMvY29tcG9uZW50cy9jaGFyYWN0ZXItY291bnQvY2hhcmFjdGVyLWNvdW50LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBR0wsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBYW5FLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxrQkFBMEI7SUFvQnJFLGVBQWU7UUFDYixJQUFJLENBQUMsZUFBZSxHQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLGFBQXFDLENBQUM7UUFDNUYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5QyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDMUQ7SUFDSCxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQWE7UUFDMUIsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ2xCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxDQUFDO2dCQUMvRixPQUFPLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFO29CQUM5QixLQUFLLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDN0MsTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ3RDO2dCQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7YUFDMUM7aUJBQU07Z0JBQ0wsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDeEQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxDQUFDO2dCQUNwRyxPQUFRLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRTtvQkFDcEMsS0FBSyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztpQkFDNUQ7Z0JBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7YUFDL0M7U0FDRjthQUFNO1lBQ0wsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDM0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ2xFO1FBRUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25DLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFhO1FBQzNCLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDMUIsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLEtBQUssRUFBRTtZQUMzQixNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDdEQsTUFBTSxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2xEO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUNaLE1BQU0sS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDL0I7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNkLE1BQU0sS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7U0FDakM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDckMsTUFBTSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztTQUNuRDtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDcEIsTUFBTSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztTQUNsQztJQUNILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFNLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQztTQUNoQztJQUNILENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFPO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQzFCO0lBQ0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLFVBQW1CO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO1FBQzNCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQzVDO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFhO1FBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNqQztJQUNILENBQUM7OztZQS9IRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtnQkFDaEMseTZDQUErQztnQkFDL0MsU0FBUyxFQUFFO29CQUNUO3dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsdUJBQXVCLENBQUM7d0JBQ3RELEtBQUssRUFBRSxJQUFJO3FCQUNaO2lCQUNGO2FBQ0Y7Ozt1QkFHRSxTQUFTLFNBQUMsaUJBQWlCO21CQUUzQixLQUFLO21CQUNMLEtBQUs7bUJBQ0wsS0FBSzswQkFDTCxLQUFLO3dCQUNMLEtBQUs7d0JBQ0wsS0FBSzt1QkFDTCxLQUFLO3dCQUNMLEtBQUs7K0JBQ0wsS0FBSztrQ0FDTCxLQUFLO3NCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ29tcG9uZW50LFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBGb3JtRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mb3JtLWZpZWxkL2Zvcm0tZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGV4dGFyZWFDb21wb25lbnQgfSBmcm9tICcuLi90ZXh0YXJlYS90ZXh0YXJlYS5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkZXN5LWNoYXJhY3Rlci1jb3VudCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXJhY3Rlci1jb3VudC5jb21wb25lbnQuaHRtbCcsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDaGFyYWN0ZXJDb3VudENvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlXHJcbiAgICB9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2hhcmFjdGVyQ291bnRDb21wb25lbnQgZXh0ZW5kcyBGb3JtRmllbGRDb21wb25lbnQ8c3RyaW5nPiBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoVGV4dGFyZWFDb21wb25lbnQpIHRleHRhcmVhO1xyXG5cclxuICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdHlwZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHJvd3M6IG51bWJlcjtcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG1heGxlbmd0aDogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGNvdW50YmJkZDogYm9vbGVhbjtcclxuICBASW5wdXQoKSBtYXh3b3JkczogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHRocmVzaG9sZDogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGZvcm1Hcm91cENsYXNzZXM6IHN0cmluZztcclxuICBASW5wdXQoKSBjb3VudE1lc3NhZ2VDbGFzc2VzOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgY2xhc3Nlczogc3RyaW5nO1xyXG5cclxuICB0ZXh0YXJlYUVsZW1lbnQ6IEhUTUxUZXh0QXJlYUVsZW1lbnQ7XHJcbiAgZGlzcGxheUNvdW50TWVzc2FnZTogYm9vbGVhbjtcclxuICByZW1haW5pbmc6IG51bWJlcjtcclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy50ZXh0YXJlYUVsZW1lbnQgPSAodGhpcy50ZXh0YXJlYS50ZXh0YXJlYUVsZW1lbnQubmF0aXZlRWxlbWVudCBhcyBIVE1MVGV4dEFyZWFFbGVtZW50KTtcclxuICAgIHRoaXMudGV4dGFyZWEucmVnaXN0ZXJJbnB1dFRyYW5zZm9ybSh0aGlzLmlucHV0VHJhbnNmb3JtLmJpbmQodGhpcykpO1xyXG4gICAgdGhpcy5yZWdpc3Rlck9uQ2hhbmdlKHRoaXMub25DaGFuZ2UpO1xyXG4gICAgdGhpcy5yZWdpc3Rlck9uVG91Y2hlZCh0aGlzLm9uVG91Y2gpO1xyXG4gICAgdGhpcy50ZXh0YXJlYS5zZXREaXNhYmxlZFN0YXRlKHRoaXMuZGlzYWJsZWQpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnRleHRhcmVhLndyaXRlVmFsdWUodGhpcy52YWx1ZSksIDUwKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIHRoaXMuY2hlY2tSZXF1aXJlZCgpO1xyXG4gICAgaWYgKHRoaXMudGV4dGFyZWEpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnRleHRhcmVhLm5nT25DaGFuZ2VzKGNoYW5nZXMpLCA1MCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbnB1dFRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICBpZiAodGhpcy5tYXhsZW5ndGgpIHtcclxuICAgICAgICBsZXQgbGVuZ3RoID0gdGhpcy5jYWxjdWxhdGVMZW5naHQodmFsdWUpO1xyXG4gICAgICAgIHRoaXMuZGlzcGxheUNvdW50TWVzc2FnZSA9ICF0aGlzLnRocmVzaG9sZCB8fCBsZW5ndGggPiAodGhpcy5tYXhsZW5ndGggKiB0aGlzLnRocmVzaG9sZCAvIDEwMCk7XHJcbiAgICAgICAgd2hpbGUgKGxlbmd0aCA+IHRoaXMubWF4bGVuZ3RoKSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnN1YnN0cmluZygwLCB2YWx1ZS5sZW5ndGggLSAxKTtcclxuICAgICAgICAgIGxlbmd0aCA9IHRoaXMuY2FsY3VsYXRlTGVuZ2h0KHZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yZW1haW5pbmcgPSB0aGlzLm1heGxlbmd0aCAtIGxlbmd0aDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCB3b3JkcyA9IHZhbHVlLm1hdGNoKC9bXFx3w6HDqcOtw7PDusOBw4nDjcOTw5rDvMOcw7HDkV0rL2cpIHx8IFtdO1xyXG4gICAgICAgIHRoaXMuZGlzcGxheUNvdW50TWVzc2FnZSA9ICF0aGlzLnRocmVzaG9sZCB8fCAod29yZHMubGVuZ3RoID4gdGhpcy5tYXh3b3JkcyAqIHRoaXMudGhyZXNob2xkIC8gMTAwKTtcclxuICAgICAgICB3aGlsZSAoIHdvcmRzLmxlbmd0aCA+IHRoaXMubWF4d29yZHMpIHtcclxuICAgICAgICAgIHZhbHVlID0gdmFsdWUuc3Vic3RyaW5nKDAsIHZhbHVlLmxhc3RJbmRleE9mKHdvcmRzLnBvcCgpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVtYWluaW5nID0gdGhpcy5tYXh3b3JkcyAtIHdvcmRzLmxlbmd0aDtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFsdWUgPSAnJztcclxuICAgICAgdGhpcy5kaXNwbGF5Q291bnRNZXNzYWdlID0gIXRoaXMudGhyZXNob2xkO1xyXG4gICAgICB0aGlzLnJlbWFpbmluZyA9IHRoaXMubWF4bGVuZ3RoID8gdGhpcy5tYXhsZW5ndGggOiB0aGlzLm1heHdvcmRzO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudGV4dGFyZWFFbGVtZW50LnZhbHVlID0gdmFsdWU7XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBjYWxjdWxhdGVMZW5naHQodmFsdWU6IHN0cmluZyk6IG51bWJlciB7XHJcbiAgICBsZXQgbGVuZ3RoID0gdmFsdWUubGVuZ3RoO1xyXG4gICAgaWYgKHRoaXMuY291bnRiYmRkICYmIHZhbHVlKSB7XHJcbiAgICAgIGNvbnN0IHNwZWNpYWxDaGFycyA9IHZhbHVlLm1hdGNoKC9bXkEtejAtOV9cXHMuLDo7XS9nKTtcclxuICAgICAgbGVuZ3RoICs9IHNwZWNpYWxDaGFycyA/IHNwZWNpYWxDaGFycy5sZW5ndGggOiAwO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxlbmd0aDtcclxuICB9XHJcblxyXG4gIGNoZWNrUmVxdWlyZWQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaWQpIHtcclxuICAgICAgdGhyb3cgRXJyb3IoJ2lkIGlzIHJlcXVpcmVkJyk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMubmFtZSkge1xyXG4gICAgICB0aHJvdyBFcnJvcignbmFtZSBpcyByZXF1aXJlZCcpO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLm1heGxlbmd0aCAmJiAhdGhpcy5tYXh3b3Jkcykge1xyXG4gICAgICB0aHJvdyBFcnJvcignbWF4bGVuZ3RoIG9yIG1heHdvcmRzIGFyZSByZXF1aXJlZCcpO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmhhc0xhYmVsKCkpIHtcclxuICAgICAgdGhyb3cgRXJyb3IoJ2xhYmVsIGlzIHJlcXVpcmVkJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICAgIGlmICh0aGlzLnRleHRhcmVhKSB7XHJcbiAgICAgIHRoaXMudGV4dGFyZWEucmVnaXN0ZXJPbkNoYW5nZShmbik7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UgPSAoXzogYW55KSA9PiB7fTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaCA9IGZuO1xyXG4gICAgaWYgKHRoaXMudGV4dGFyZWEpIHtcclxuICAgICAgdGhpcy50ZXh0YXJlYS5yZWdpc3Rlck9uVG91Y2hlZChmbik7XHJcbiAgICAgIHRoaXMub25Ub3VjaCA9ICgpID0+IHsgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgICBpZiAodGhpcy50ZXh0YXJlYSkge1xyXG4gICAgICB0aGlzLnRleHRhcmVhLnNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgIGlmICh0aGlzLnRleHRhcmVhKSB7XHJcbiAgICAgIHRoaXMudGV4dGFyZWEud3JpdGVWYWx1ZSh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
@@ -0,0 +1,190 @@
1
+ import { __decorate } from "tslib";
2
+ import { ChangeDetectorRef, Component, ContentChildren, EventEmitter, Host, 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
+ if (!this.value) {
29
+ throw Error('value is required for checkbox item');
30
+ }
31
+ if (this.checked !== this.lastChecked && this.isInit()) {
32
+ this.setChecked(this.checked);
33
+ this.checkboxes.updateValueFromCheckboxItems();
34
+ }
35
+ else if (this.lastValue !== undefined && this.lastValue !== this.value) {
36
+ this.checkboxes.updateValueFromCheckboxItems();
37
+ }
38
+ if (this.indeterminateChecked !== this.lastIndeterminate && this.isInit()) {
39
+ this.setIndeterminateChecked(this.indeterminateChecked);
40
+ this.checkboxes.updateValueFromCheckboxItems();
41
+ }
42
+ this.lastValue = this.value;
43
+ if (this.id !== this.checkboxId) {
44
+ this.checkboxes.markForUpdateCheckboxIds();
45
+ }
46
+ }
47
+ ngAfterViewInit() {
48
+ this.setChecked(this.checked);
49
+ this.setIndeterminateChecked(this.indeterminateChecked);
50
+ this.checkboxes.updateValueFromCheckboxItems();
51
+ }
52
+ getItemHintId() {
53
+ return this.hintComponentList && this.hintComponentList.length > 0 && this.checkboxId ? this.checkboxId + '-item-hint' : null;
54
+ }
55
+ hasChanged() {
56
+ // Se establece el cambio a visualizar en el input
57
+ const input = this.inputElement.nativeElement;
58
+ if (this.isIndeterminate) {
59
+ if (input.readOnly) {
60
+ input.checked = false;
61
+ input.readOnly = false;
62
+ }
63
+ else if (!input.checked) {
64
+ input.readOnly = true;
65
+ input.indeterminate = true;
66
+ }
67
+ }
68
+ this.setChecked(input.checked);
69
+ this.setIndeterminateChecked(input.indeterminate);
70
+ this.checkboxes.updateValueFromCheckboxItems();
71
+ }
72
+ setChecked(checked) {
73
+ this.checked = checked;
74
+ this.lastChecked = checked;
75
+ this.checkedChange.emit(checked);
76
+ this.changeDetectorRef.detectChanges(); // Avisa al elemento input para que actualice su estado
77
+ }
78
+ setIndeterminateChecked(indeterminateChecked) {
79
+ this.indeterminateChecked = indeterminateChecked;
80
+ this.lastIndeterminate = indeterminateChecked;
81
+ this.indeterminateChange.emit(indeterminateChecked);
82
+ this.changeDetectorRef.detectChanges(); // Avisa al elemento input para que actualice su estado
83
+ }
84
+ setIndeterminateStatus() {
85
+ var _a;
86
+ const input = (_a = this.inputElement) === null || _a === void 0 ? void 0 : _a.nativeElement;
87
+ if (input) {
88
+ if (this.indeterminateChecked) {
89
+ input.readOnly = true;
90
+ input.indeterminate = true;
91
+ }
92
+ else if (input.readOnly) {
93
+ input.readOnly = false;
94
+ input.indeterminate = false;
95
+ }
96
+ }
97
+ }
98
+ isInit() {
99
+ return !!this.inputElement;
100
+ }
101
+ getValue() {
102
+ const input = this.inputElement.nativeElement;
103
+ return input.checked || input.indeterminate ? this.value : null;
104
+ }
105
+ updateCheckboxId(index) {
106
+ if (this.id) {
107
+ this.checkboxId = this.id;
108
+ }
109
+ else {
110
+ const idPrefix = this.checkboxes.idPrefix ? this.checkboxes.idPrefix : this.checkboxes.name;
111
+ if (index === 0) {
112
+ this.checkboxId = idPrefix;
113
+ }
114
+ else {
115
+ this.checkboxId = `${idPrefix}-${index}`;
116
+ }
117
+ }
118
+ if (this.labelComponentList && this.labelComponentList.length > 0) {
119
+ this.labelComponentList.first.for = this.checkboxId;
120
+ }
121
+ if (this.hintComponentList && this.hintComponentList.length > 0) {
122
+ this.hintComponentList.first.id = this.getItemHintId();
123
+ }
124
+ this.changeDetectorRef.detectChanges();
125
+ }
126
+ /*
127
+ * Funciones para aportar información desde el componente checkboxes que lo contiene
128
+ */
129
+ hasDividers() {
130
+ return this.checkboxes.hasDividers;
131
+ }
132
+ hasError() {
133
+ return this.checkboxes.hasErrorsMessage();
134
+ }
135
+ getNameCheckbox() {
136
+ return this.checkboxes.name;
137
+ }
138
+ getDescribedBy() {
139
+ return !this.checkboxes.hasFieldset() ? this.checkboxes.describedBy : null;
140
+ }
141
+ }
142
+ CheckboxItemComponent.decorators = [
143
+ { type: Component, args: [{
144
+ selector: 'desy-checkbox-item',
145
+ template: "<div [ngClass]=\"{'border-t border-b border-neutral-base -mb-px' : hasDividers()}\" [class]=\"classes\">\r\n <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</div>\r\n",
146
+ animations: [
147
+ trigger('displayConditional', [
148
+ state('void', style({
149
+ opacity: '0.0',
150
+ transform: 'scale(0.95)'
151
+ })),
152
+ state('*', style({
153
+ opacity: '1.0',
154
+ transform: 'scale(1.0)'
155
+ })),
156
+ transition(':enter', [
157
+ animate('100ms ease-out')
158
+ ]),
159
+ transition('* => *', [
160
+ query('@*', animateChild(), { optional: true })
161
+ ])
162
+ ])
163
+ ]
164
+ },] }
165
+ ];
166
+ CheckboxItemComponent.ctorParameters = () => [
167
+ { type: CheckboxesComponent, decorators: [{ type: Host }] },
168
+ { type: ChangeDetectorRef }
169
+ ];
170
+ CheckboxItemComponent.propDecorators = {
171
+ inputElement: [{ type: ViewChild, args: ['input',] }],
172
+ id: [{ type: Input }],
173
+ value: [{ type: Input }],
174
+ name: [{ type: Input }],
175
+ conditional: [{ type: Input }],
176
+ disabled: [{ type: Input }],
177
+ isIndeterminate: [{ type: Input }],
178
+ indeterminateChecked: [{ type: Input }],
179
+ classes: [{ type: Input }],
180
+ labelComponentList: [{ type: ContentChildren, args: [LabelComponent,] }],
181
+ hintComponentList: [{ type: ContentChildren, args: [HintComponent,] }],
182
+ conditionalContentList: [{ type: ContentChildren, args: [ContentComponent,] }],
183
+ checked: [{ type: Input }],
184
+ checkedChange: [{ type: Output }],
185
+ indeterminateChange: [{ type: Output }]
186
+ };
187
+ __decorate([
188
+ DesyOnInputChange('setIndeterminateStatus')
189
+ ], CheckboxItemComponent.prototype, "indeterminateChecked", void 0);
190
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXN5LWFuZ3VsYXIvc3JjL2xpYi9kZXN5LWZvcm1zL2NvbXBvbmVudHMvY2hlY2tib3hlcy9jaGVja2JveC1pdGVtL2NoZWNrYm94LWl0ZW0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ1UsaUJBQWlCLEVBQ2hDLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLElBQUksRUFDSixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwrREFBK0QsQ0FBQztBQUMvRixPQUFPLEVBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDcEcsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUNyRSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSw4REFBOEQsQ0FBQztBQXdCL0YsTUFBTSxPQUFPLHFCQUFzQixTQUFRLHNCQUFzQjtJQTZCL0QsWUFBNEIsVUFBK0IsRUFBVSxpQkFBb0M7UUFDdkcsS0FBSyxFQUFFLENBQUM7UUFEa0IsZUFBVSxHQUFWLFVBQVUsQ0FBcUI7UUFBVSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBUi9GLGtCQUFhLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFD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TCxLQUFLOzhCQUNMLEtBQUs7bUNBR0wsS0FBSztzQkFDTCxLQUFLO2lDQUVMLGVBQWUsU0FBQyxjQUFjO2dDQUM5QixlQUFlLFNBQUMsYUFBYTtxQ0FDN0IsZUFBZSxTQUFDLGdCQUFnQjtzQkFFaEMsS0FBSzs0QkFFTCxNQUFNO2tDQUNOLE1BQU07O0FBVkU7SUFEUixpQkFBaUIsQ0FBQyx3QkFBd0IsQ0FBQzttRUFDTCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbnRlbnRDaGlsZHJlbixcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0LFxyXG4gIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LFxyXG4gIE91dHB1dCwgUXVlcnlMaXN0LCBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0l0ZW1DaGVja2JveERhdGF9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQge0NvbnRlbnRDb21wb25lbnR9IGZyb20gJy4uLy4uLy4uLy4uL2Rlc3ktY29tbW9ucy9jb21wb25lbnRzL2NvbnRlbnQvY29udGVudC5jb21wb25lbnQnO1xyXG5pbXBvcnQge2FuaW1hdGUsIGFuaW1hdGVDaGlsZCwgcXVlcnksIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlcn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7TGFiZWxDb21wb25lbnR9IGZyb20gJy4uLy4uL2xhYmVsL2xhYmVsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7SGludENvbXBvbmVudH0gZnJvbSAnLi4vLi4vaGludC9oaW50LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7Q2hlY2tib3hlc0NvbXBvbmVudH0gZnJvbSAnLi4vY2hlY2tib3hlcy5jb21wb25lbnQnO1xyXG5pbXBvcnQge0FjY2Vzc2liaWxpdHlDb21wb25lbnR9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9jb21wb25lbnRzJztcclxuaW1wb3J0IHtEZXN5T25JbnB1dENoYW5nZX0gZnJvbSBcIi4uLy4uLy4uLy4uL3NoYXJlZC9kZWNvcmF0b3JzL2Rlc3ktb24taW5wdXQtY2hhbmdlLmRlY29yYXRvclwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkZXN5LWNoZWNrYm94LWl0ZW0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGVja2JveC1pdGVtLmNvbXBvbmVudC5odG1sJyxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICB0cmlnZ2VyKCdkaXNwbGF5Q29uZGl0aW9uYWwnLCBbXHJcbiAgICAgIHN0YXRlKCd2b2lkJywgc3R5bGUoe1xyXG4gICAgICAgIG9wYWNpdHk6ICcwLjAnLFxyXG4gICAgICAgIHRyYW5zZm9ybTogJ3NjYWxlKDAuOTUpJ1xyXG4gICAgICB9KSksXHJcbiAgICAgIHN0YXRlKCcqJywgc3R5bGUoe1xyXG4gICAgICAgIG9wYWNpdHk6ICcxLjAnLFxyXG4gICAgICAgIHRyYW5zZm9ybTogJ3NjYWxlKDEuMCknXHJcbiAgICAgIH0pKSxcclxuICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xyXG4gICAgICAgIGFuaW1hdGUoJzEwMG1zIGVhc2Utb3V0JylcclxuICAgICAgXSksXHJcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gKicsIFtcclxuICAgICAgICBxdWVyeSgnQConLCBhbmltYXRlQ2hpbGQoKSwge29wdGlvbmFsOiB0cnVlfSlcclxuICAgICAgXSlcclxuICAgIF0pXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2hlY2tib3hJdGVtQ29tcG9uZW50IGV4dGVuZHMgQWNjZXNzaWJpbGl0eUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIEl0ZW1DaGVja2JveERhdGEge1xyXG5cclxuICBAVmlld0NoaWxkKCdpbnB1dCcpIGlucHV0RWxlbWVudDogRWxlbWVudFJlZjtcclxuXHJcbiAgQElucHV0KCkgaWQ6IHN0cmluZztcclxuICBASW5wdXQoKSB2YWx1ZTogYW55O1xyXG4gIEBJbnB1dCgpIG5hbWU6IHN0cmluZztcclxuICBASW5wdXQoKSBjb25kaXRpb25hbDogYm9vbGVhbjtcclxuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcclxuICBASW5wdXQoKSBpc0luZGV0ZXJtaW5hdGU6IGJvb2xlYW47XHJcblxyXG4gIEBEZXN5T25JbnB1dENoYW5nZSgnc2V0SW5kZXRlcm1pbmF0ZVN0YXR1cycpXHJcbiAgQElucHV0KCkgaW5kZXRlcm1pbmF0ZUNoZWNrZWQ6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgY2xhc3Nlczogc3RyaW5nO1xyXG5cclxuICBAQ29udGVudENoaWxkcmVuKExhYmVsQ29tcG9uZW50KSBsYWJlbENvbXBvbmVudExpc3Q6IFF1ZXJ5TGlzdDxMYWJlbENvbXBvbmVudD47XHJcbiAgQENvbnRlbnRDaGlsZHJlbihIaW50Q29tcG9uZW50KSBoaW50Q29tcG9uZW50TGlzdDogUXVlcnlMaXN0PEhpbnRDb21wb25lbnQ+O1xyXG4gIEBDb250ZW50Q2hpbGRyZW4oQ29udGVudENvbXBvbmVudCkgY29uZGl0aW9uYWxDb250ZW50TGlzdDogUXVlcnlMaXN0PENvbnRlbnRDb21wb25lbnQ+O1xyXG5cclxuICBASW5wdXQoKSBjaGVja2VkOiBib29sZWFuO1xyXG5cclxuICBAT3V0cHV0KCkgY2hlY2tlZENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgaW5kZXRlcm1pbmF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgbGFzdENoZWNrZWQ7XHJcbiAgbGFzdEluZGV0ZXJtaW5hdGU7XHJcbiAgbGFzdFZhbHVlO1xyXG4gIGNoZWNrYm94SWQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKEBIb3N0KCkgcHJpdmF0ZSBjaGVja2JveGVzOiBDaGVja2JveGVzQ29tcG9uZW50LCBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIGlmICghdGhpcy5jaGVja2JveGVzKSB7XHJcbiAgICAgIHRocm93IEVycm9yKCdDaGVja2JveCBpdGVtcyBtdXN0IGJlIGluc2lkZSBvZiBDaGVja2JveGVzQ29tcG9uZW50Jyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2hlY2tib3hlcy5tYXJrRm9yVXBkYXRlQ2hlY2tib3hJZHMoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jaGVja2JveGVzLm1hcmtGb3JVcGRhdGVDaGVja2JveElkcygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnZhbHVlKSB7XHJcbiAgICAgIHRocm93IEVycm9yKCd2YWx1ZSBpcyByZXF1aXJlZCBmb3IgY2hlY2tib3ggaXRlbScpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmNoZWNrZWQgIT09IHRoaXMubGFzdENoZWNrZWQgJiYgdGhpcy5pc0luaXQoKSkge1xyXG4gICAgICB0aGlzLnNldENoZWNrZWQodGhpcy5jaGVja2VkKTtcclxuICAgICAgdGhpcy5jaGVja2JveGVzLnVwZGF0ZVZhbHVlRnJvbUNoZWNrYm94SXRlbXMoKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5sYXN0VmFsdWUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmxhc3RWYWx1ZSAhPT0gdGhpcy52YWx1ZSkge1xyXG4gICAgICB0aGlzLmNoZWNrYm94ZXMudXBkYXRlVmFsdWVGcm9tQ2hlY2tib3hJdGVtcygpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKHRoaXMuaW5kZXRlcm1pbmF0ZUNoZWNrZWQgIT09IHRoaXMubGFzdEluZGV0ZXJtaW5hdGUgJiYgdGhpcy5pc0luaXQoKSl7XHJcbiAgICAgIHRoaXMuc2V0SW5kZXRlcm1pbmF0ZUNoZWNrZWQodGhpcy5pbmRldGVybWluYXRlQ2hlY2tlZCk7XHJcbiAgICAgIHRoaXMuY2hlY2tib3hlcy51cGRhdGVWYWx1ZUZyb21DaGVja2JveEl0ZW1zKCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHRoaXMubGFzdFZhbHVlID0gdGhpcy52YWx1ZTtcclxuXHJcbiAgICBpZiAodGhpcy5pZCAhPT0gdGhpcy5jaGVja2JveElkKSB7XHJcbiAgICAgIHRoaXMuY2hlY2tib3hlcy5tYXJrRm9yVXBkYXRlQ2hlY2tib3hJZHMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0Q2hlY2tlZCh0aGlzLmNoZWNrZWQpO1xyXG4gICAgdGhpcy5zZXRJbmRldGVybWluYXRlQ2hlY2tlZCh0aGlzLmluZGV0ZXJtaW5hdGVDaGVja2VkKTtcclxuICAgIHRoaXMuY2hlY2tib3hlcy51cGRhdGVWYWx1ZUZyb21DaGVja2JveEl0ZW1zKCk7XHJcbiAgfVxyXG5cclxuICBnZXRJdGVtSGludElkKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5oaW50Q29tcG9uZW50TGlzdCAmJiB0aGlzLmhpbnRDb21wb25lbnRMaXN0Lmxlbmd0aCA+IDAgJiYgdGhpcy5jaGVja2JveElkID8gdGhpcy5jaGVja2JveElkICsgJy1pdGVtLWhpbnQnIDogbnVsbDtcclxuICB9XHJcblxyXG4gIGhhc0NoYW5nZWQoKTogdm9pZCB7XHJcbiAgICAvLyBTZSBlc3RhYmxlY2UgZWwgY2FtYmlvIGEgdmlzdWFsaXphciBlbiBlbCBpbnB1dFxyXG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50O1xyXG4gICAgaWYgKHRoaXMuaXNJbmRldGVybWluYXRlKSB7XHJcbiAgICAgIGlmIChpbnB1dC5yZWFkT25seSkge1xyXG4gICAgICAgIGlucHV0LmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgICBpbnB1dC5yZWFkT25seSA9IGZhbHNlO1xyXG4gICAgICB9IGVsc2UgaWYgKCFpbnB1dC5jaGVja2VkKSB7XHJcbiAgICAgICAgaW5wdXQucmVhZE9ubHkgPSB0cnVlO1xyXG4gICAgICAgIGlucHV0LmluZGV0ZXJtaW5hdGUgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldENoZWNrZWQoaW5wdXQuY2hlY2tlZCk7XHJcbiAgICB0aGlzLnNldEluZGV0ZXJtaW5hdGVDaGVja2VkKGlucHV0LmluZGV0ZXJtaW5hdGUpO1xyXG4gICAgdGhpcy5jaGVja2JveGVzLnVwZGF0ZVZhbHVlRnJvbUNoZWNrYm94SXRlbXMoKTtcclxuICB9XHJcblxyXG4gIHNldENoZWNrZWQoY2hlY2tlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5jaGVja2VkID0gY2hlY2tlZDtcclxuICAgIHRoaXMubGFzdENoZWNrZWQgPSBjaGVja2VkO1xyXG4gICAgdGhpcy5jaGVja2VkQ2hhbmdlLmVtaXQoY2hlY2tlZCk7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTsgLy8gQXZpc2EgYWwgZWxlbWVudG8gaW5wdXQgcGFyYSBxdWUgYWN0dWFsaWNlIHN1IGVzdGFkb1xyXG4gIH1cclxuXHJcbiAgc2V0SW5kZXRlcm1pbmF0ZUNoZWNrZWQoaW5kZXRlcm1pbmF0ZUNoZWNrZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuaW5kZXRlcm1pbmF0ZUNoZWNrZWQgPSBpbmRldGVybWluYXRlQ2hlY2tlZDtcclxuICAgIHRoaXMubGFzdEluZGV0ZXJtaW5hdGUgPSBpbmRldGVybWluYXRlQ2hlY2tlZDtcclxuICAgIHRoaXMuaW5kZXRlcm1pbmF0ZUNoYW5nZS5lbWl0KGluZGV0ZXJtaW5hdGVDaGVja2VkKTtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpOyAvLyBBdmlzYSBhbCBlbGVtZW50byBpbnB1dCBwYXJhIHF1ZSBhY3R1YWxpY2Ugc3UgZXN0YWRvXHJcbiAgfVxyXG5cclxuICBzZXRJbmRldGVybWluYXRlU3RhdHVzKCk6IHZvaWQge1xyXG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLmlucHV0RWxlbWVudD8ubmF0aXZlRWxlbWVudDtcclxuICAgIGlmIChpbnB1dCkge1xyXG4gICAgICBpZiAodGhpcy5pbmRldGVybWluYXRlQ2hlY2tlZCkge1xyXG4gICAgICAgIGlucHV0LnJlYWRPbmx5ID0gdHJ1ZTtcclxuICAgICAgICBpbnB1dC5pbmRldGVybWluYXRlID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIGlmIChpbnB1dC5yZWFkT25seSkge1xyXG4gICAgICAgIGlucHV0LnJlYWRPbmx5ID0gZmFsc2U7XHJcbiAgICAgICAgaW5wdXQuaW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0luaXQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLmlucHV0RWxlbWVudDtcclxuICB9XHJcblxyXG4gIGdldFZhbHVlKCk6IGFueSB7XHJcbiAgICBjb25zdCBpbnB1dCA9IHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICByZXR1cm4gaW5wdXQuY2hlY2tlZCB8fCBpbnB1dC5pbmRldGVybWluYXRlID8gdGhpcy52YWx1ZSA6IG51bGw7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVDaGVja2JveElkKGluZGV4PzogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pZCkge1xyXG4gICAgICB0aGlzLmNoZWNrYm94SWQgPSB0aGlzLmlkO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgaWRQcmVmaXggPSB0aGlzLmNoZWNrYm94ZXMuaWRQcmVmaXggPyB0aGlzLmNoZWNrYm94ZXMuaWRQcmVmaXggOiB0aGlzLmNoZWNrYm94ZXMubmFtZTtcclxuICAgICAgaWYgKGluZGV4ID09PSAwKSB7XHJcbiAgICAgICAgdGhpcy5jaGVja2JveElkID0gaWRQcmVmaXg7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jaGVja2JveElkID0gYCR7aWRQcmVmaXh9LSR7aW5kZXh9YDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmxhYmVsQ29tcG9uZW50TGlzdCAmJiB0aGlzLmxhYmVsQ29tcG9uZW50TGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMubGFiZWxDb21wb25lbnRMaXN0LmZpcnN0LmZvciA9IHRoaXMuY2hlY2tib3hJZDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5oaW50Q29tcG9uZW50TGlzdCAmJiB0aGlzLmhpbnRDb21wb25lbnRMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5oaW50Q29tcG9uZW50TGlzdC5maXJzdC5pZCA9IHRoaXMuZ2V0SXRlbUhpbnRJZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgLypcclxuICAgKiBGdW5jaW9uZXMgcGFyYSBhcG9ydGFyIGluZm9ybWFjacOzbiBkZXNkZSBlbCBjb21wb25lbnRlIGNoZWNrYm94ZXMgcXVlIGxvIGNvbnRpZW5lXHJcbiAgICovXHJcblxyXG4gIGhhc0RpdmlkZXJzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY2hlY2tib3hlcy5oYXNEaXZpZGVycztcclxuICB9XHJcblxyXG4gIGhhc0Vycm9yKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY2hlY2tib3hlcy5oYXNFcnJvcnNNZXNzYWdlKCk7XHJcbiAgfVxyXG5cclxuICBnZXROYW1lQ2hlY2tib3goKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmNoZWNrYm94ZXMubmFtZTtcclxuICB9XHJcblxyXG4gIGdldERlc2NyaWJlZEJ5KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gIXRoaXMuY2hlY2tib3hlcy5oYXNGaWVsZHNldCgpID8gdGhpcy5jaGVja2JveGVzLmRlc2NyaWJlZEJ5IDogbnVsbDtcclxuICB9XHJcbn1cclxuIl19