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
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","../esm2015/lib/projects/desy-angular/src/lib/shared/components/accessibility/accessibility.component.ts","../esm2015/lib/projects/desy-angular/src/lib/shared/components/text-or-html-required/text-or-html-required.component.ts","../esm2015/lib/projects/desy-angular/src/lib/shared/components/accessibility-and-text-or-html-required/accessibility-and-text-or-html-required.component.ts","../esm2015/projects/desy-angular/src/lib/shared/utils/navigation-utils.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-buttons/components/button/button.component.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-buttons/components/button-loader/button-loader.component.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-buttons/components/pill/pill.component.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-buttons/components/dropdown/dropdown.component.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-forms/components/hint/hint.component.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-forms/components/label/label.component.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-forms/components/error-message/error-message.component.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-forms/components/fieldset/fieldset.component.ts","../esm2015/lib/desy-forms/projects/desy-angular/src/lib/desy-forms/components/fieldset/legend/legend.component.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-forms/components/form-field/form-field.component.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-forms/components/textarea/textarea.component.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-forms/components/character-count/character-count.component.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-forms/components/input/input.component.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-forms/components/select/select.component.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-forms/components/file-upload/file-upload.component.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-forms/components/input-group/input-group.component.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-forms/components/radios/radios.component.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-forms/components/checkboxes/checkboxes.component.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-forms/components/date-input/date-input.component.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-forms/components/search-bar/search-bar.component.ts","../esm2015/projects/desy-angular/src/lib/desy-forms/directives/condition.directive.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-modals/components/modal/modal.component.ts","../esm2015/projects/desy-angular/src/lib/shared/utils/focus-utils.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-modals/components/dialog/dialog.component.ts","../esm2015/projects/desy-angular/src/lib/desy-modals/services/dialog.service.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-nav/components/breadcrumbs/breadcrumbs.component.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-nav/components/header/header.component.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-nav/components/menu-horizontal/menu-horizontal.component.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-nav/components/nav/nav.component.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-nav/components/menu-vertical/menu-vertical.component.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-nav/components/skip-link/skip-link.component.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-nav/components/error-summary/error-summary.component.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-nav/components/notification/notification.component.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-nav/components/footer/footer.component.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-tables/components/table/table.component.ts","../esm2015/projects/desy-angular/src/lib/shared/utils/search-utils.ts","../esm2015/projects/desy-angular/src/lib/desy-tables/interfaces/head-cell-data.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-tables/components/table-advanced/table-advanced.component.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-views/components/alert/alert.component.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-views/components/accordion/accordion.component.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-views/components/spinner/spinner.component.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-views/components/details/details.component.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-views/components/description-list/description-list.component.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-views/components/collapsible/collapsible.component.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-views/components/item/item.component.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-views/components/media-object/media-object.component.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-views/components/status/status.component.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-views/components/status-item/status-item.component.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-views/components/tabs/tabs.component.ts","../esm2015/projects/desy-angular/src/lib/desy-views/services/alert.service.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-pagination/components/pagination/pagination.component.ts","../esm2015/projects/desy-angular/src/lib/shared/pipes/inner-html.pipe.ts","../esm2015/projects/desy-angular/src/lib/shared/pipes/make-html-list.pipe.ts","../esm2015/projects/desy-angular/src/lib/shared/directives/inner-content.directive.ts","../esm2015/projects/desy-angular/src/lib/shared/directives/click-outside.directive.ts","../projects/desy-angular/src/lib/shared/shared.module.ts","../esm2015/lib/projects/desy-angular/src/lib/desy-forms/components/template-driven-wrapper/template-driven-wrapper.component.ts","../esm2015/lib/desy-forms/projects/desy-angular/src/lib/desy-forms/components/radios/item-radio/item-radio.component.ts","../esm2015/lib/desy-forms/projects/desy-angular/src/lib/desy-forms/components/checkboxes/item-checkbox/item-checkbox.component.ts","../projects/desy-angular/src/lib/desy-forms/desy-forms.module.ts","../projects/desy-angular/src/lib/desy-views/desy-views.module.ts","../projects/desy-angular/src/lib/desy-buttons/desy-buttons.module.ts","../projects/desy-angular/src/lib/desy-modals/desy-modals.module.ts","../esm2015/lib/desy-nav/projects/desy-angular/src/lib/desy-nav/components/header/header-subnav/header-subnav.component.ts","../esm2015/lib/desy-nav/projects/desy-angular/src/lib/desy-nav/components/header/header-navigation/header-navigation.component.ts","../esm2015/lib/desy-nav/projects/desy-angular/src/lib/desy-nav/components/header/header-dropdown/header-dropdown.component.ts","../esm2015/lib/desy-nav/projects/desy-angular/src/lib/desy-nav/components/header/header-offcanvas-button/header-offcanvas-button.component.ts","../esm2015/lib/desy-nav/projects/desy-angular/src/lib/desy-nav/components/header/header-offcanvas/header-offcanvas.component.ts","../projects/desy-angular/src/lib/desy-nav/desy-nav.module.ts","../esm2015/projects/desy-angular/src/lib/desy-tables/directives/focus-clicked-cell.directive.ts","../projects/desy-angular/src/lib/desy-tables/desy-tables.module.ts","../projects/desy-angular/src/lib/desy-pagination/desy-pagination.module.ts","../../projects/desy-angular/src/lib/desy-angular.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","__","this","constructor","create","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","n","v","op","TypeError","pop","length","push","__values","o","s","m","i","__read","r","ar","error","__spread","arguments","concat","Component","args","selector","template","Input","TextOrHtmlRequiredComponent","ngOnChanges","changes","textOrHtmlRequiredFunction","text","html","Error","AccessibilityAndTextOrHtmlRequiredComponent","_super","NavigationUtils","getExternalHref","href","match","ButtonComponent","_this","clickEvent","EventEmitter","avoidingDoubleClick","ngOnInit","required","getElement","staticElementTypeInput","onClick","event","preventDoubleClick","preventDefault","emit","setTimeout","element","toLocaleLowerCase","ELEMENT_A","ELEMENT_BUTTON","getClassNames","classNames","classes","disabled","isDisabled","defineProperty","ELEMENT_INPUT","Output","ButtonLoaderComponent","getSpinnerText","spinnerText","state","STATE_LOADING","loaderText","DEFAULT_LOADER_TEXT","getSuccessText","successText","STATE_SUCCESS","DEFAULT_SUCCESS_TEXT","PillComponent","getType","type","TYPE_A","TYPE_SPAN","TYPE_BUTTON","DropdownComponent","show","clickOutsideEnabled","closeDropdown","toggleDropdown","HintComponent","LabelComponent","ErrorMessageComponent","FieldsetComponent","AccessibilityComponent","LegendComponent","FormFieldComponent","onChange","onTouch","onInput","registerOnChange","fn","registerOnTouched","setDisabledState","writeValue","getHintId","hasHint","id","getErrorId","hasErrorsMessage","hasLabel","labelText","labelRef","labelData","hintText","hintRef","hintData","errorMessageText","errorMessageRef","errorMessageData","TextareaComponent","inputTransform","checkRequiredParams","name","getRows","rows","DEFAULT_ROWS","ensureText","registerInputTransform","providers","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","multi","ViewChild","CharacterCountComponent","ngAfterViewInit","textareaElement","textarea","nativeElement","bind","checkRequired","maxlength","calculateLenght","displayCountMessage","threshold","substring","remaining","words","maxwords","lastIndexOf","countbbdd","specialChars","InputComponent","errorId","SelectComponent","itemSelected_1","items","find","item","selected","forEach","index","isItemSelected","FileUploadComponent","InputGroupComponent","controlContainer","onExternalChange","_b","_c","divider","hasItemLabel","getItemName","onInternalChange","itemName","itemValue","hasFieldset","legendRef","fieldsetData","legendData","legendText","namePrefix","ControlContainer","decorators","Optional","RadiosComponent","getIdPrefix","idPrefix","CheckboxesComponent","configuredChecks","configuredValue","orderedValue","checked","findIndex","updateValue","array1","array2","equal","areSameArray","onCheckItem","filter","DateInputComponent","initDefaultItems","undefined","getItemLabel","toUpperCase","SearchBarComponent","ConditionDirective","templateRef","conditionalHtml","Directive","TemplateRef","ModalComponent","closeModal","clickButton","closeDialog","icon","title","description","clickButtonEmit","$event","FocusUtils","getFirstFocusableElement","parent","focusableList","selectionableElements","querySelectorAll","document","firstFocusable","isFocusable","tabIndex","getAttribute","nodeName","rel","numDialogsOpened","DialogComponent","cdRef","focusTrapFactory","factoryResolver","activeChange","lastActiveState","focusTrapWrapper","handleActiveState","caller","callerType","factory","resolveComponentFactory","component","container","createComponent","onCallerCreationCallback","children","childElem","detectChanges","ngOnDestroy","active","dismiss","onKeyUp","key","KEY_CODE_ESC","stopPropagation","focusTrap","focusElem_1","classList","add","DIALOG_OPEN_CLASS","remove","removeAttribute","focusInitialElement","destroy","focusOnClose","getElementById","focus","handleClickOutside","dismissOnBackdrop","ChangeDetectorRef","ConfigurableFocusTrapFactory","ComponentFactoryResolver","read","ViewContainerRef","HostListener","DialogService","defaultInjector","appRef","openDialog","dialogOptions","dialog","createDialog","Type","instance","c","initModal","ComponentRef","onCloseDialog","subscription","subscribe","unsubscribe","rootViewContainer","attachView","hostView","componentElement","rootNodes","appendChild","assign","modalRef","modalOptions","itemsPrimary","itemsSecondary","isDismissible","subscription_1","Injectable","providedIn","Injector","ApplicationRef","BreadcrumbsComponent","location","getLength","itemsLength","hasBackButton","goBack","back","Location","HeaderComponent","getHomeUrl","homepageUrl","MenuHorizontalComponent","getItemId","NavComponent","routerLink","MenuVerticalComponent","sub","isTree","getId","getSubId","itemSub","isItemExpanded","expandable","expanded","isActive","expand","getButtonClasses","itemButtonClass","getItemWithHrefClass","itemWithHrefClass","getClassesItemSubWithHref","itemSubWithHrefClass","getClassesItemSubNoHref","itemSubNoHrefClass","animations","trigger","style","opacity","transform","transition","animate","SkipLinkComponent","ErrorSummaryComponent","titleText","titleHtml","errorList","NotificationComponent","isOpen","isOpenChange","isDismissing","FooterComponent","getUrl","TableComponent","OrderBy","SearchUtils","containsAnyWordFrom","target","fullWord","includes","simplifiedTarget","getSimplifiedString","split","word","str","res","toLocaleUpperCase","trim","replace","TableAdvancedComponent","el","orderBy","rowsChecked","cellsList","hasCheckboxes","searchData","slice","createFormGroup","querySelector","setAttribute","hasFilters","head","hasFilter","getIdHeader","getIdHeaderCheckbox","getIdRowCheckbox","getIdHeaderFilter","getStringOrderBy","asc","desc","none","getTextVisible","cell","group","row","FormControl","form","FormGroup","valueChanges","val","isReset","unchecked","controls","setValue","isChecked","get","onInputSearch","valueFilter","activeFilter","search","searchSort","k","dataElement","splice","this_1","data","sort","a","compare","sortData","direction_1","getDirection","cleanSorted","isAsc","aComparable","cleanCurrency","bComparable","isNaN","localeCompare","sensitivity","ignorePunctuation","numeric","txt","test","ElementRef","AlertComponent","hasViewinit","focusFirst","focusElem","alertWrapper","AccordionComponent","showAll","headerHtml","headerText","heading","changeAll","open","changeOpen","allowMultiple","focusFirstItem","itemSelectors","toArray","focusLastItem","focusNextItem","focusedItem","focusPreviousItem","selectItem","currentItem","ViewChildren","SpinnerComponent","DetailsComponent","summaryTextOrSummaryHtmlRequiredFunction","summaryText","summaryHtml","DescriptionListComponent","term","definition","CollapsibleComponent","toggleOpen","headerTextOrheaderHtmlRequiredFunction","ItemComponent","content","MediaObjectComponent","figureHtml","StatusComponent","StatusItemComponent","TabsComponent","currentTab","tablistAriaLabel","panel","selectTab","focusFirstTab","tabSelectors","focusLastTab","enabledTabs","focusNextTab","focusedTab","nextTab","focusPreviousTab","previousTab","AlertService","openAlert","alertOptions","alert","createAlert","initNotification","closeAlert","onCloseAlert","place","notificationRef","options","PaginationComponent","currentPage","currentPageChange","prefix","suffix","getInitPosition","getMaxPosition","totalItems","itemsPerPage","nPages","Math","ceil","buildPages","getHtmlButton","getHtmlButtonPrevius","arrow","previousText","getHtmlButtonNext","nextText","getDropdownText","getIdPrevius","getIdNext","changePage","current","getClass","classInit","previous","page","InnerHtmlPipe","sanitizer","sanitize","SecurityContext","HTML","Pipe","DomSanitizer","MakeHtmlListPipe","valueForEmpty","filteredList","join","InnerContentDirective","isHtml","innerHTML","innerText","ClickOutsideDirective","hostElementRef","clickOutside","desyClickOutsideElem","contains","NgModule","declarations","imports","CommonModule","exports","RouterModule","NgForm","ItemRadioComponent","check","getConditionalId","getItemHintId","hasChanged","ItemCheckboxComponent","inputElement","ngAfterViewChecked","input","isIndeterminate","readOnly","indeterminate","TemplateDrivenWrapperComponent","FormsModule","ReactiveFormsModule","SharedModule","DesyFormsModule","DesyViewsModule","A11yModule","DesyButtonsModule","HeaderSubnavComponent","onKeydownEscape","HeaderNavigationComponent","HeaderDropdownComponent","HeaderOffcanvasButtonComponent","dialogService","ariaModal","offcanvas","ariaLabelledBy","offcanvasLabelledId","_a","class","offcanvasText","offcanvasContentHtml","HostBinding","HeaderOffcanvasComponent","FocusClickedCellDirective","elemntsFocus","offsetParent","elemntsFocus_1","elemntsFocus_1_1","activeTabindex","manageArrows","code","tr","parentNode","nextElementSibling","previousElementSibling","inactiveTabindex","mynode","otherNode","isEqualNode","DesyNavModule","BrowserAnimationsModule","DesyModalsModule","DesyTablesModule","DesyPaginationModule"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { AccesibilityData } from '../../interfaces/accesibility-data';\r\n\r\n/**\r\n * componente para heredar los atributos de accesibilidad\r\n */\r\n@Component({\r\n selector: 'desy-accessibility',\r\n template: '<div></div>'\r\n})\r\nexport class AccessibilityComponent implements AccesibilityData {\r\n @Input() role: string;\r\n @Input() ariaLabel: string;\r\n @Input() ariaDescribedBy: string;\r\n @Input() ariaLabelledBy: string;\r\n @Input() ariaHidden: string;\r\n @Input() ariaDisabled: string;\r\n @Input() ariaControls: string;\r\n @Input() ariaCurrent: string;\r\n @Input() ariaLive: string;\r\n @Input() ariaExpanded: string;\r\n @Input() ariaErrorMessage: string;\r\n @Input() ariaHasPopup: string;\r\n @Input() ariaModal: string;\r\n @Input() tabindex: string;\r\n}\r\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'desy-text-or-html-required',\r\n template: '<div></div>'\r\n})\r\nexport class TextOrHtmlRequiredComponent implements OnChanges {\r\n\r\n /***\r\n * componente base para el comportamiento de texto o html required\r\n * si en el componente que extiende de este, se implementa el onInit o Onchanges,\r\n * habra que incluir la llamada al a funcion textOrHtmlRequiredFunction\r\n **/\r\n\r\n @Input() text: string;\r\n @Input() html: string;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n textOrHtmlRequiredFunction(this.text, this.html);\r\n }\r\n\r\n}\r\n\r\n/**\r\n * funcion que comprueba si existe text o html\r\n * salta error si no es así\r\n */\r\nexport function textOrHtmlRequiredFunction(text: any, html: any): void {\r\n if (!html && !text) {\r\n throw new Error(`html or text are required`);\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { AccesibilityData } from '../../interfaces/accesibility-data';\r\nimport { TextOrHtmlRequiredComponent } from '../text-or-html-required/text-or-html-required.component';\r\n\r\n@Component({\r\n selector: 'desy-accessibility-and-text-or-html-required',\r\n template: '<div></div>'\r\n})\r\nexport class AccessibilityAndTextOrHtmlRequiredComponent extends TextOrHtmlRequiredComponent implements AccesibilityData {\r\n\r\n /**\r\n * componente para heredar los atributos de accesibilidad y\r\n * el texto o html required\r\n * \r\n * si en el componente que extiende de este, se implementa el onInit o Onchanges,\r\n * habra que incluir la llamada al a funcion textOrHtmlRequiredFunction\r\n * \r\n */\r\n\r\n // Atributos de accesibilidad\r\n @Input() role: string;\r\n @Input() ariaLabel: string;\r\n @Input() ariaDescribedBy: string;\r\n @Input() ariaLabelledBy: string;\r\n @Input() ariaHidden: string;\r\n @Input() ariaDisabled: string;\r\n @Input() ariaControls: string;\r\n @Input() ariaCurrent: string;\r\n @Input() ariaLive: string;\r\n @Input() ariaExpanded: string;\r\n @Input() ariaErrorMessage: string;\r\n @Input() ariaHasPopup: string;\r\n @Input() tabindex: string;\r\n\r\n}\r\n","export class NavigationUtils {\r\n\r\n public static getExternalHref(href: string): string {\r\n let externalHref: string;\r\n if (href) {\r\n if (href.match('http(s)?://')) {\r\n externalHref = href;\r\n } else {\r\n externalHref = 'http://' + href;\r\n }\r\n } else {\r\n externalHref = '#';\r\n }\r\n return externalHref;\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { AccessibilityAndTextOrHtmlRequiredComponent, textOrHtmlRequiredFunction } from '../../../shared/components';\r\nimport { NavigationUtils } from '../../../shared/utils/navigation-utils';\r\n\r\n@Component({\r\n selector: 'desy-button',\r\n templateUrl: './button.component.html'\r\n})\r\nexport class ButtonComponent extends AccessibilityAndTextOrHtmlRequiredComponent implements OnInit, OnChanges {\r\n\r\n public static readonly ELEMENT_A: string = 'a';\r\n public static readonly ELEMENT_BUTTON: string = 'button';\r\n public static readonly ELEMENT_INPUT: string = 'input';\r\n\r\n @Input() id: string;\r\n @Input() classes: string;\r\n\r\n @Input() element: string; // 'a', 'button' o 'input'\r\n @Input() name: string;\r\n @Input() type: string;\r\n @Input() value: any;\r\n @Input() disabled: boolean;\r\n @Input() href: string;\r\n @Input() target: string;\r\n @Input() preventDoubleClick: boolean;\r\n\r\n @Input() routerLink: string|any[];\r\n @Input() routerLinkActiveClasses: string|string[];\r\n\r\n @Output() clickEvent = new EventEmitter();\r\n\r\n avoidingDoubleClick = false;\r\n\r\n ngOnInit(): void {\r\n this.required();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.required();\r\n }\r\n\r\n required(): void{\r\n if (this.getElement() !== this.staticElementTypeInput) {\r\n textOrHtmlRequiredFunction(this.text, this.html);\r\n }\r\n }\r\n\r\n onClick(event: any): void {\r\n if (this.preventDoubleClick) {\r\n if (!this.avoidingDoubleClick){\r\n this.avoidingDoubleClick = true;\r\n this.clickEvent.emit(event);\r\n setTimeout(() => {\r\n this.avoidingDoubleClick = false;\r\n }, 1000);\r\n } else {\r\n event.preventDefault(); // evitamos propagar el evento por ejemplo un submit en un formulario\r\n }\r\n } else {\r\n this.clickEvent.emit(event);\r\n }\r\n }\r\n\r\n getExternalHref(): string {\r\n return NavigationUtils.getExternalHref(this.href);\r\n }\r\n\r\n getElement(): string {\r\n let element: string;\r\n if (this.element) {\r\n element = this.element.toLocaleLowerCase();\r\n } else {\r\n if (this.href) {\r\n element = ButtonComponent.ELEMENT_A;\r\n } else {\r\n element = ButtonComponent.ELEMENT_BUTTON;\r\n }\r\n }\r\n return element;\r\n }\r\n\r\n getClassNames(): string {\r\n let classNames = 'c-button';\r\n if (this.classes) {\r\n classNames += ' ' + this.classes;\r\n }\r\n if (this.disabled) {\r\n classNames += ' c-button--disabled';\r\n }\r\n return classNames;\r\n }\r\n\r\n isDisabled(): boolean {\r\n return this.disabled ? true : null;\r\n }\r\n\r\n get staticElementTypeA(): string {\r\n return ButtonComponent.ELEMENT_A;\r\n }\r\n\r\n get staticElementTypeButton(): string {\r\n return ButtonComponent.ELEMENT_BUTTON;\r\n }\r\n\r\n get staticElementTypeInput(): string {\r\n return ButtonComponent.ELEMENT_INPUT;\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { ButtonComponent } from '../button/button.component';\r\n\r\n@Component({\r\n selector: 'desy-button-loader',\r\n templateUrl: './button-loader.component.html'\r\n})\r\nexport class ButtonLoaderComponent extends ButtonComponent {\r\n\r\n public static readonly STATE_LOADING: string = 'is-loading';\r\n public static readonly STATE_SUCCESS: string = 'is-success';\r\n\r\n private static readonly DEFAULT_LOADER_TEXT: string = 'Acción en curso';\r\n private static readonly DEFAULT_SUCCESS_TEXT: string = 'Acción realizada con éxito';\r\n\r\n @Input() loaderText: string;\r\n @Input() loaderClasses: string;\r\n @Input() state: string;\r\n @Input() successText: string;\r\n\r\n getClassNames(): string {\r\n let classNames = 'c-button-loader relative';\r\n if (this.classes) {\r\n classNames += ' ' + this.classes;\r\n }\r\n if (this.disabled) {\r\n classNames += ' c-button-loader--disabled';\r\n }\r\n return classNames;\r\n }\r\n\r\n getSpinnerText(): string {\r\n let spinnerText: string = null;\r\n\r\n if (this.state === ButtonLoaderComponent.STATE_LOADING) {\r\n spinnerText = this.loaderText ? this.loaderText : ButtonLoaderComponent.DEFAULT_LOADER_TEXT;\r\n }\r\n\r\n return spinnerText;\r\n }\r\n\r\n\r\n getSuccessText(): string {\r\n let successText: string = null;\r\n\r\n if (this.state === ButtonLoaderComponent.STATE_SUCCESS) {\r\n successText = this.successText ? this.successText : ButtonLoaderComponent.DEFAULT_SUCCESS_TEXT;\r\n }\r\n\r\n return successText;\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { AccessibilityAndTextOrHtmlRequiredComponent } from '../../../shared/components';\r\nimport { NavigationUtils } from '../../../shared/utils/navigation-utils';\r\n\r\n@Component({\r\n selector: 'desy-pill',\r\n templateUrl: './pill.component.html'\r\n})\r\nexport class PillComponent extends AccessibilityAndTextOrHtmlRequiredComponent {\r\n\r\n public static readonly TYPE_A: string = 'a';\r\n public static readonly TYPE_BUTTON: string = 'button';\r\n public static readonly TYPE_SPAN: string = 'span';\r\n\r\n @Input() type: string; // 'a', 'button' o 'span'\r\n @Input() href: string;\r\n @Input() target: string;\r\n @Input() routerLink: string|any[];\r\n @Input() routerLinkActiveClasses: string|string[];\r\n @Input() classes: string;\r\n @Input() id: string;\r\n\r\n @Output() clickEvent = new EventEmitter();\r\n\r\n onClick(event: any): void {\r\n this.clickEvent.emit(event);\r\n }\r\n\r\n getType(): string {\r\n let type: string;\r\n if (this.type){\r\n type = this.type.toLocaleLowerCase();\r\n } else {\r\n if (this.href) {\r\n type = PillComponent.TYPE_A;\r\n } else {\r\n type = PillComponent.TYPE_SPAN;\r\n }\r\n }\r\n return type;\r\n }\r\n\r\n getExternalHref(): string {\r\n return NavigationUtils.getExternalHref(this.href);\r\n }\r\n\r\n getClassNames(): string {\r\n let classNames = 'c-pill';\r\n if (this.classes) {\r\n classNames += ' ' + this.classes;\r\n }\r\n return classNames;\r\n }\r\n\r\n get staticElementTypeA(): string {\r\n return PillComponent.TYPE_A;\r\n }\r\n\r\n get staticElementTypeButton(): string {\r\n return PillComponent.TYPE_BUTTON;\r\n }\r\n\r\n get staticElementTypeSpan(): string {\r\n return PillComponent.TYPE_SPAN;\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, Output, TemplateRef, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { AccessibilityAndTextOrHtmlRequiredComponent } from '../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-dropdown',\r\n templateUrl: './dropdown.component.html'\r\n})\r\nexport class DropdownComponent extends AccessibilityAndTextOrHtmlRequiredComponent implements OnChanges {\r\n\r\n @Input() id: string;\r\n @Input() disabled: boolean;\r\n @Input() hiddenText: string;\r\n @Input() classesContainer: string;\r\n @Input() classesTooltip: string;\r\n @Input() classes: string;\r\n @Input() caller: TemplateRef<any>;\r\n\r\n @Output() clickEvent = new EventEmitter();\r\n\r\n show = false;\r\n clickOutsideEnabled = false;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n\r\n if (this.isDisabled()){ // se pone disable se cierra el dropdown\r\n this.closeDropdown();\r\n }\r\n }\r\n\r\n onClick(event: any): void {\r\n if (!this.isDisabled()){\r\n this.toggleDropdown();\r\n this.clickEvent.emit(event);\r\n }\r\n }\r\n\r\n toggleDropdown(): void {\r\n this.show = !this.show;\r\n setTimeout(() => this.clickOutsideEnabled = this.show);\r\n }\r\n\r\n closeDropdown(): void {\r\n this.show = false;\r\n this.clickOutsideEnabled = false;\r\n }\r\n\r\n isDisabled(): boolean {\r\n return this.disabled ? true : null;\r\n }\r\n\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { AccessibilityAndTextOrHtmlRequiredComponent } from '../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-hint',\r\n templateUrl: './hint.component.html',\r\n\r\n})\r\nexport class HintComponent extends AccessibilityAndTextOrHtmlRequiredComponent {\r\n\r\n @Input() id: string;\r\n @Input() classes: string;\r\n\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { AccessibilityAndTextOrHtmlRequiredComponent } from '../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-label',\r\n templateUrl: './label.component.html'\r\n})\r\nexport class LabelComponent extends AccessibilityAndTextOrHtmlRequiredComponent {\r\n\r\n @Input() for: string;\r\n @Input() isPageHeading: boolean;\r\n @Input() classes: string;\r\n @Input() id: string;\r\n\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { AccessibilityAndTextOrHtmlRequiredComponent } from '../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-error-message',\r\n templateUrl: './error-message.component.html'\r\n})\r\nexport class ErrorMessageComponent extends AccessibilityAndTextOrHtmlRequiredComponent {\r\n\r\n @Input() id: string;\r\n @Input() classes: string;\r\n @Input() visuallyHiddenText: string;\r\n\r\n}\r\n","import { Component, Input, TemplateRef } from '@angular/core';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\nimport { LegendComponent } from './legend/legend.component';\r\nimport { LegendData } from '../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-fieldset',\r\n templateUrl: './fieldset.component.html'\r\n})\r\nexport class FieldsetComponent extends AccessibilityComponent {\r\n\r\n @Input() describedBy: string;\r\n @Input() errorId: string;\r\n\r\n /**\r\n * legenda, diferentes formas de implementar, enumeradas por prioridad\r\n * 1) incluir template\r\n * 2) incluir objeto legend (interfaz expuesta)\r\n * 3) incluir legendText - incluir un label con solo un texto\r\n */\r\n @Input() legendRef: TemplateRef<LegendComponent>;\r\n @Input() legendData: LegendData;\r\n @Input() legendText: string;\r\n\r\n @Input() classes: string;\r\n @Input() caller: TemplateRef<any>;\r\n\r\n @Input() id: string;\r\n\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { TextOrHtmlRequiredComponent } from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-legend',\r\n templateUrl: './legend.component.html'\r\n})\r\nexport class LegendComponent extends TextOrHtmlRequiredComponent {\r\n\r\n @Input() classes: string;\r\n @Input() isPageHeading: boolean;\r\n\r\n}\r\n","import { Component, Input, TemplateRef } from '@angular/core';\r\nimport { ControlValueAccessor } from '@angular/forms';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\nimport { LabelComponent } from '../label/label.component';\r\nimport { HintComponent } from '../hint/hint.component';\r\nimport { ErrorMessageComponent } from '../error-message/error-message.component';\r\nimport { LabelData, HintData, ErrorMessageData } from '../../interfaces';\r\n\r\n\r\n@Component({\r\n selector: 'desy-form-field',\r\n template: '<div></div>'\r\n})\r\nexport class FormFieldComponent<T> extends AccessibilityComponent implements ControlValueAccessor {\r\n\r\n @Input() id: string;\r\n @Input() disabled: boolean;\r\n value: T;\r\n\r\n /**\r\n * label, diferentes formas de implementar, enumeradas por prioridad\r\n * 1) incluir template\r\n * 2) incluir objeto label (interfaz expuesta)\r\n * 3) incluir legendText - incluir un label con solo un texto\r\n */\r\n @Input() labelRef: TemplateRef<LabelComponent>;\r\n @Input() labelData: LabelData;\r\n @Input() labelText: string;\r\n\r\n /**\r\n * hint, diferentes formas de implementar, enumeradas por prioridad\r\n * 1) incluir template\r\n * 2) incluir objeto label (interfaz expuesta)\r\n * 3) incluir hintText - incluir un hint con solo un texto\r\n */\r\n @Input() hintRef: TemplateRef<HintComponent>;\r\n @Input() hintData: HintData;\r\n @Input() hintText: string;\r\n\r\n /**\r\n * errorMessage, diferentes formas de implementar, enumeradas por prioridad\r\n * 1) incluir template\r\n * 2) incluir objeto label (interfaz expuesta)\r\n * 3) incluir errorText - incluir un errorText con solo un texto\r\n */\r\n @Input() errorMessageRef: TemplateRef<ErrorMessageComponent>;\r\n @Input() errorMessageData: ErrorMessageData;\r\n @Input() errorMessageText: string;\r\n\r\n\r\n onChange = (_: any) => {};\r\n onTouch = () => { };\r\n\r\n onInput(value: T): void{\r\n this.value = value;\r\n this.onTouch();\r\n this.onChange(this.value);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouch = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n writeValue(value: T): void {\r\n if (value){\r\n this.value = value;\r\n }\r\n this.onChange(value);\r\n }\r\n\r\n getHintId(): string {\r\n return this.hasHint() ? this.id + '-hint' : null;\r\n }\r\n\r\n getErrorId(): string {\r\n return this.hasErrorsMessage() ? this.id + '-error' : null;\r\n }\r\n\r\n hasLabel(): boolean {\r\n return !!(this.labelText || this.labelRef || (this.labelData && (this.labelData.text || this.labelData.html)));\r\n }\r\n\r\n hasHint(): boolean {\r\n return !!(this.hintText || this.hintRef || (this.hintData && (this.hintData.text || this.hintData.html)));\r\n }\r\n\r\n hasErrorsMessage(): boolean {\r\n return !!(this.errorMessageText || this.errorMessageRef ||\r\n (this.errorMessageData && (this.errorMessageData.text || this.errorMessageData.html)));\r\n }\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n forwardRef,\r\n Input,\r\n OnChanges,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { FormFieldComponent } from '../form-field/form-field.component';\r\n\r\n@Component({\r\n selector: 'desy-textarea',\r\n templateUrl: './textarea.component.html',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TextareaComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class TextareaComponent extends FormFieldComponent<string> implements OnChanges {\r\n\r\n protected static readonly DEFAULT_ROWS = 5;\r\n\r\n @ViewChild('textarea') textareaElement: ElementRef;\r\n\r\n @Input() name: string;\r\n @Input() rows: number;\r\n @Input() placeholder: string;\r\n @Input() describedBy: string;\r\n\r\n @Input() formGroupClasses: string;\r\n @Input() classes: string;\r\n @Input() autocomplete: string;\r\n @Input() maxlength: number;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n inputTransform = (value: string): string => value;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.checkRequiredParams();\r\n this.writeValue(this.value);\r\n }\r\n\r\n checkRequiredParams(): void{\r\n if (!this.id) {\r\n throw Error('id is required');\r\n }\r\n if (!this.name) {\r\n throw Error('name is required');\r\n }\r\n if (!this.labelRef && !this.labelData && !this.labelText) {\r\n throw Error('label is required');\r\n }\r\n }\r\n\r\n getRows(): number {\r\n return this.rows ? this.rows : TextareaComponent.DEFAULT_ROWS;\r\n }\r\n\r\n onInput(value: any): void{\r\n super.onInput(this.inputTransform(this.ensureText(value)));\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.value = this.inputTransform(this.ensureText(value));\r\n this.onChange(this.value);\r\n }\r\n\r\n registerInputTransform(fn: (value: string) => string): void {\r\n this.inputTransform = fn;\r\n }\r\n\r\n private ensureText(value: any): string {\r\n return value ? value || '' : '';\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n forwardRef,\r\n Input,\r\n OnChanges,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { FormFieldComponent } from '../form-field/form-field.component';\r\nimport { TextareaComponent } from '../textarea/textarea.component';\r\n\r\n@Component({\r\n selector: 'desy-character-count',\r\n templateUrl: './character-count.component.html',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CharacterCountComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class CharacterCountComponent extends FormFieldComponent<string> implements AfterViewInit, OnChanges {\r\n\r\n @ViewChild(TextareaComponent) textarea;\r\n\r\n @Input() name: string;\r\n @Input() type: string;\r\n @Input() rows: number;\r\n @Input() placeholder: string;\r\n @Input() maxlength: number;\r\n @Input() countbbdd: boolean;\r\n @Input() maxwords: number;\r\n @Input() threshold: number;\r\n @Input() formGroupClasses: string;\r\n @Input() countMessageClasses: string;\r\n @Input() classes: string;\r\n\r\n textareaElement: HTMLTextAreaElement;\r\n displayCountMessage: boolean;\r\n remaining: number;\r\n\r\n ngAfterViewInit(): void {\r\n this.textareaElement = (this.textarea.textareaElement.nativeElement as HTMLTextAreaElement);\r\n this.textarea.registerInputTransform(this.inputTransform.bind(this));\r\n this.registerOnChange(this.onChange);\r\n this.registerOnTouched(this.onTouch);\r\n this.textarea.setDisabledState(this.disabled);\r\n setTimeout(() => this.textarea.writeValue(this.value), 50);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.checkRequired();\r\n if (this.textarea) {\r\n setTimeout(() => this.textarea.ngOnChanges(changes), 50);\r\n }\r\n }\r\n\r\n inputTransform(value: string): string {\r\n if (value) {\r\n if (this.maxlength) {\r\n let length = this.calculateLenght(value);\r\n this.displayCountMessage = !this.threshold || length > (this.maxlength * this.threshold / 100);\r\n while (length > this.maxlength) {\r\n value = value.substring(0, value.length - 1);\r\n length = this.calculateLenght(value);\r\n }\r\n this.remaining = this.maxlength - length;\r\n } else {\r\n const words = value.match(/[\\wáéíóúÁÉÍÓÚüÜñÑ]+/g) || [];\r\n this.displayCountMessage = !this.threshold || (words.length > this.maxwords * this.threshold / 100);\r\n while ( words.length > this.maxwords) {\r\n value = value.substring(0, value.lastIndexOf(words.pop()));\r\n }\r\n this.remaining = this.maxwords - words.length;\r\n }\r\n } else {\r\n value = '';\r\n this.displayCountMessage = !this.threshold;\r\n this.remaining = this.maxlength ? this.maxlength : this.maxwords;\r\n }\r\n\r\n this.textareaElement.value = value;\r\n return value;\r\n }\r\n\r\n calculateLenght(value: string): number {\r\n let length = value.length;\r\n if (this.countbbdd && value) {\r\n const specialChars = value.match(/[^A-z0-9_\\s.,:;]/g);\r\n length += specialChars ? specialChars.length : 0;\r\n }\r\n return length;\r\n }\r\n\r\n checkRequired(): void {\r\n if (!this.id) {\r\n throw Error('id is required');\r\n }\r\n if (!this.name) {\r\n throw Error('name is required');\r\n }\r\n if (!this.maxlength && !this.maxwords) {\r\n throw Error('maxlength or maxwords are required');\r\n }\r\n if (!this.hasLabel()) {\r\n throw Error('label is required');\r\n }\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n if (this.textarea) {\r\n this.textarea.registerOnChange(fn);\r\n this.onChange = (_: any) => {};\r\n }\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouch = fn;\r\n if (this.textarea) {\r\n this.textarea.registerOnTouched(fn);\r\n this.onTouch = () => { };\r\n }\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n if (this.textarea) {\r\n this.textarea.setDisabledState(isDisabled);\r\n }\r\n }\r\n\r\n writeValue(value: string): void {\r\n this.value = value;\r\n if (this.textarea) {\r\n this.textarea.writeValue(value);\r\n }\r\n }\r\n\r\n}\r\n","import { Component, forwardRef, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { FormFieldComponent } from '../form-field/form-field.component';\r\n\r\n@Component({\r\n selector: 'desy-input',\r\n templateUrl: './input.component.html',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => InputComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class InputComponent extends FormFieldComponent<any> implements OnChanges {\r\n\r\n @Input() name: string;\r\n @Input() type: string;\r\n @Input() describedBy: string;\r\n @Input() pattern: string;\r\n @Input() inputmode: string;\r\n @Input() placeholder: string;\r\n @Input() formGroupClasses: string;\r\n @Input() classes: string;\r\n @Input() autocomplete: string;\r\n @Input() maxlength: number;\r\n @Input() errorId: string;\r\n\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.checkRequired();\r\n this.writeValue(this.value);\r\n }\r\n\r\n getErrorId(): string {\r\n return this.errorId ? this.errorId : super.getErrorId();\r\n }\r\n\r\n writeValue(value: any): void {\r\n if (value) {\r\n this.value = value || '';\r\n } else {\r\n this.value = '';\r\n }\r\n this.onChange(this.value);\r\n }\r\n\r\n checkRequired(): void {\r\n if (!this.id) {\r\n throw Error('id is required');\r\n }\r\n if (!this.name) {\r\n throw Error('name is required');\r\n }\r\n if (!this.hasLabel()) {\r\n throw Error('label is required');\r\n }\r\n }\r\n}\r\n","import { Component, forwardRef, Input, OnInit, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { SelectItemData } from '../../interfaces';\r\nimport { FormFieldComponent } from '../form-field/form-field.component';\r\n\r\n@Component({\r\n selector: 'desy-select',\r\n templateUrl: './select.component.html',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SelectComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class SelectComponent extends FormFieldComponent<any> implements OnInit, OnChanges {\r\n\r\n @Input() name: string;\r\n @Input() items: SelectItemData[];\r\n @Input() describedBy?: string;\r\n\r\n @Input() formGroupClasses: string;\r\n @Input() classes: string;\r\n\r\n ngOnInit(): void {\r\n this.checkRequiredParams();\r\n if (!this.value) {\r\n const itemSelected = this.items.find(item => item.selected);\r\n if (itemSelected) {\r\n setTimeout(() => this.writeValue(itemSelected.value), 10);\r\n }\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.checkRequiredParams();\r\n }\r\n\r\n checkRequiredParams(): void {\r\n if (!this.id) {\r\n throw Error('id is required');\r\n }\r\n if (!this.name) {\r\n throw Error('name is required');\r\n }\r\n if (!this.items || this.items == null) {\r\n throw Error('items is required');\r\n }\r\n if (this.items) {\r\n this.items.forEach((item, index) => {\r\n if (!item.text) {\r\n throw Error('text is required in items[' + index + ']');\r\n }\r\n });\r\n }\r\n }\r\n\r\n isItemSelected(item: SelectItemData): boolean {\r\n return this.value ? this.value === item.value : item.selected;\r\n }\r\n}\r\n","import { Component, forwardRef, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { FormFieldComponent } from '../form-field/form-field.component';\r\n\r\n@Component({\r\n selector: 'desy-file-upload',\r\n templateUrl: './file-upload.component.html',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: forwardRef(() => FileUploadComponent),\r\n }\r\n ]\r\n})\r\nexport class FileUploadComponent extends FormFieldComponent<File> implements ControlValueAccessor, OnChanges {\r\n\r\n @Input() name: string;\r\n @Input() describedBy: string;\r\n @Input() formGroupClasses: string;\r\n @Input() classes: string;\r\n @Input() accept: string;\r\n\r\n constructor() {\r\n super();\r\n }\r\n/***\r\n * nos devuelve un array de file : File[]\r\n * pero solo nos guardamos el primero\r\n * solo dejamos seleccionar uno\r\n */\r\n onInput(value: any): void{\r\n if (value && value.length > 0 && value[0]){\r\n this.value = value[0];\r\n }else {\r\n this.value = null;\r\n }\r\n this.onTouch();\r\n this.onChange(this.value);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.checkRequiredParams();\r\n }\r\n\r\n checkRequiredParams(): void {\r\n if (!this.id) {\r\n throw Error('id is required');\r\n }\r\n if (!this.name) {\r\n throw Error('name is required');\r\n }\r\n if (!this.labelRef && !this.labelData && !this.labelText) {\r\n throw Error('label is required');\r\n }\r\n }\r\n\r\n}\r\n","import { Component, forwardRef, Input, OnChanges, OnInit, Optional, TemplateRef } from '@angular/core';\r\nimport { FieldsetData, LegendData, ItemInputGroupData } from '../../interfaces';\r\nimport { ControlContainer, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { LegendComponent } from '../fieldset/legend/legend.component';\r\nimport { FormFieldComponent } from '../form-field/form-field.component';\r\n\r\n@Component({\r\n selector: 'desy-input-group',\r\n templateUrl: './input-group.component.html',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => InputGroupComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class InputGroupComponent extends FormFieldComponent<any> implements OnInit, OnChanges {\r\n\r\n @Input() ngModelGroup: string;\r\n\r\n @Input() items: ItemInputGroupData[];\r\n @Input() namePrefix: string;\r\n @Input() classes: string;\r\n @Input() formGroupClasses: any;\r\n @Input() errorMessage: string;\r\n @Input() id: string;\r\n\r\n /**\r\n * fieldset, diferentes formas de implementar, enumeradas por prioridad\r\n * 1) incluir objeto FieldsetData (interfaz expuesta)\r\n * 2) incluir template legend\r\n * 3) incluir legendData - incluir un fieldset con una legenda con los parametros pasados (interfaz expuesta)\r\n * 4) incluir legendText - incluir un fieldset con un texto en la legenda\r\n */\r\n @Input() fieldsetData: FieldsetData;\r\n @Input() legendRef: TemplateRef<LegendComponent>;\r\n @Input() legendData: LegendData;\r\n @Input() legendText: string;\r\n\r\n constructor(@Optional() public controlContainer: ControlContainer) {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.checkRequired();\r\n this.onExternalChange();\r\n }\r\n\r\n ngOnChanges(): void {\r\n this.checkRequired();\r\n this.onExternalChange();\r\n }\r\n\r\n checkRequired(): void {\r\n if (!this.id) {\r\n throw Error('id is required');\r\n }\r\n\r\n if (this.items) {\r\n for (const item of this.items) {\r\n if (!item.divider && !item.name) {\r\n throw Error('item name is required');\r\n }\r\n if (!item.divider && !this.hasItemLabel(item)) {\r\n throw Error('item label is required');\r\n }\r\n }\r\n } else {\r\n throw Error('items are required');\r\n }\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.value = value;\r\n if (this.value) {\r\n this.items.forEach(item => item.value = this.value[this.getItemName(item)]);\r\n }\r\n this.onChange(value);\r\n }\r\n\r\n onExternalChange(): void {\r\n if (!this.value) {\r\n this.value = {};\r\n }\r\n this.items.forEach(item => this.value[this.getItemName(item)] = item.value);\r\n this.onChange(this.value);\r\n }\r\n\r\n onInternalChange(itemName: string, itemValue: any): void {\r\n if (!this.value) {\r\n this.value = {};\r\n }\r\n this.value[itemName] = itemValue;\r\n this.onChange(this.value);\r\n }\r\n\r\n hasFieldset(): boolean {\r\n return !!(this.legendRef || this.fieldsetData\r\n || (this.legendData && (this.legendData.text || this.legendData.html)) || this.legendText);\r\n }\r\n\r\n getItemName(item: ItemInputGroupData): string {\r\n return this.namePrefix ? this.namePrefix + '-' + item.name : item.name;\r\n }\r\n\r\n hasItemLabel(item: ItemInputGroupData): boolean {\r\n return !!((item.labelData && (item.labelData.text || item.labelData.html)) || item.labelText);\r\n }\r\n}\r\n","import { Component, forwardRef, Input, OnChanges, SimpleChanges, TemplateRef } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { FieldsetData, ItemRadioWithTemplateData, LegendData } from '../../interfaces';\r\nimport { LegendComponent } from '../fieldset/legend/legend.component';\r\nimport { FormFieldComponent } from '../form-field/form-field.component';\r\n\r\n@Component({\r\n selector: 'desy-radios',\r\n templateUrl: './radios.component.html',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => RadiosComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class RadiosComponent extends FormFieldComponent<any> implements OnChanges {\r\n\r\n /**\r\n * fieldset, diferentes formas de implementar, enumeradas por prioridad\r\n * 1) incluir objeto FieldsetData (interfaz expuesta)\r\n * 2) incluir template legend\r\n * 3) incluir legendData - incluir un fieldset con una legenda con los parametros pasados (interfaz expuesta)\r\n * 4) incluir legendText - incluir un fieldset con un texto en la legenda\r\n */\r\n @Input() fieldsetData: FieldsetData;\r\n @Input() legendRef: TemplateRef<LegendComponent>;\r\n @Input() legendData: LegendData;\r\n @Input() legendText: string;\r\n\r\n @Input() formGroupClasses: string;\r\n @Input() idPrefix: string;\r\n @Input() name: string;\r\n\r\n @Input() items: ItemRadioWithTemplateData[];\r\n\r\n @Input() hasDividers: boolean;\r\n @Input() hasError: boolean;\r\n @Input() classes: string;\r\n\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.checkRequired();\r\n }\r\n\r\n checkRequired(): void {\r\n if (!this.name) {\r\n throw Error('name is required');\r\n }\r\n if (!this.items) {\r\n throw Error('items is required');\r\n }\r\n }\r\n\r\n hasFieldset(): boolean {\r\n return !!(this.legendRef || this.fieldsetData\r\n || (this.legendData && (this.legendData.text || this.legendData.html)) || this.legendText);\r\n }\r\n\r\n getErrorId(): string {\r\n return this.hasErrorsMessage() ? this.getIdPrefix() + '-error' : null;\r\n }\r\n\r\n getHintId(): string {\r\n return this.hasHint() ? this.getIdPrefix() + '-hint' : null;\r\n }\r\n\r\n getIdPrefix(): string {\r\n return this.idPrefix ? this.idPrefix : this.name;\r\n }\r\n\r\n}\r\n","import { Component, forwardRef, Input, OnChanges, OnInit, SimpleChanges, TemplateRef } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { FormFieldComponent } from '../form-field/form-field.component';\r\nimport { FieldsetData, LegendData, ItemCheckboxData } from '../../interfaces';\r\nimport { LegendComponent } from '../fieldset/legend/legend.component';\r\n\r\n@Component({\r\n selector: 'desy-checkboxes',\r\n templateUrl: './checkboxes.component.html',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CheckboxesComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class CheckboxesComponent extends FormFieldComponent<any[]> implements OnInit, OnChanges {\r\n\r\n /**\r\n * fieldset, diferentes formas de implementar, enumeradas por prioridad\r\n * 1) incluir objeto FieldsetData (interfaz expuesta)\r\n * 2) incluir template legend\r\n * 3) incluir legendData - incluir un fieldset con una legenda con los parametros pasados (interfaz expuesta)\r\n * 4) incluir legendText - incluir un fieldset con un texto en la legenda\r\n */\r\n @Input() fieldsetData: FieldsetData;\r\n @Input() legendRef: TemplateRef<LegendComponent>;\r\n @Input() legendData: LegendData;\r\n @Input() legendText: string;\r\n\r\n @Input() formGroupClasses: string;\r\n @Input() idPrefix: string;\r\n @Input() name: string;\r\n\r\n @Input() items: ItemCheckboxData[];\r\n\r\n @Input() hasDividers: boolean;\r\n @Input() hasError: boolean;\r\n @Input() classes: string;\r\n\r\n @Input() describedBy: string;\r\n\r\n configuredChecks = [];\r\n configuredValue = [];\r\n orderedValue = [];\r\n\r\n ngOnInit(): void {\r\n this.checkRequired();\r\n\r\n /*\r\n * En caso de iniciar con el valor y los valores checked, el valor tiene prioridad\r\n */\r\n if (this.value && this.value.length > 0) {\r\n this.configuredValue = this.value;\r\n this.items.forEach((item, i) => {\r\n this.configuredChecks[i] = item.checked;\r\n this.orderedValue[i] = this.value.findIndex(v => v === item.value) > -1 ? item.value : null;\r\n });\r\n } else {\r\n this.items.forEach((item, i) => {\r\n this.configuredChecks[i] = item.checked;\r\n this.orderedValue[i] = item.checked ? item.value : null;\r\n });\r\n }\r\n setTimeout(() => this.updateValue(), 10);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.checkRequired();\r\n\r\n /*\r\n * En caso de actualizar el valor y los valores checked, el valor tiene prioridad\r\n */\r\n if (!areSameArray(this.value, this.configuredValue)) {\r\n this.configuredValue = this.value;\r\n this.items.forEach((item, i) => {\r\n this.configuredChecks[i] = item.checked;\r\n this.orderedValue[i] = this.value.findIndex(v => v === item.value) > -1 ? item.value : null;\r\n setTimeout(() => this.updateValue(), 10);\r\n });\r\n } else {\r\n this.items.forEach((item, i) => {\r\n if (item.checked !== this.configuredChecks[i]) {\r\n this.configuredChecks[i] = item.checked;\r\n this.orderedValue[i] = item.checked ? item.value : null;\r\n setTimeout(() => this.updateValue(), 10);\r\n }\r\n });\r\n }\r\n\r\n }\r\n\r\n checkRequired(): void {\r\n if (!this.name) {\r\n throw Error('name is required');\r\n }\r\n if (!this.items) {\r\n throw Error('items are required');\r\n }\r\n }\r\n\r\n onCheckItem(value: any, index: number): void {\r\n this.orderedValue[index] = value;\r\n this.updateValue();\r\n }\r\n\r\n updateValue(): void {\r\n this.value = this.orderedValue ? this.orderedValue.filter(v => v) : [];\r\n this.onChange(this.value);\r\n }\r\n\r\n hasFieldset(): boolean {\r\n return !!(this.legendRef || this.fieldsetData\r\n || (this.legendData && (this.legendData.text || this.legendData.html)) || this.legendText);\r\n }\r\n\r\n getErrorId(): string {\r\n return this.hasErrorsMessage() ? this.getIdPrefix() + '-error' : null;\r\n }\r\n\r\n getHintId(): string {\r\n return this.hasHint() ? this.getIdPrefix() + '-hint' : null;\r\n }\r\n\r\n getIdPrefix(): string {\r\n return this.idPrefix ? this.idPrefix : this.name;\r\n }\r\n}\r\n\r\nfunction areSameArray(array1: Array<any>, array2: Array<any>): boolean {\r\n let equal = true;\r\n if (array1 && array2) {\r\n if (array1.length === array2.length) {\r\n for (let i = 0; i < array1.length; i++) {\r\n if (array1[i] !== array2[i]) {\r\n equal = false;\r\n break;\r\n }\r\n }\r\n } else {\r\n equal = false;\r\n }\r\n }\r\n return equal;\r\n}\r\n","import { Component, forwardRef, Input, OnChanges, OnInit, Optional, TemplateRef } from '@angular/core';\r\nimport { ControlContainer, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { FormFieldComponent } from '../form-field/form-field.component';\r\nimport { FieldsetData, LegendData, ItemDateInputData, LabelData } from '../../interfaces';\r\nimport { LegendComponent } from '../fieldset/legend/legend.component';\r\n\r\n@Component({\r\n selector: 'desy-date-input',\r\n templateUrl: './date-input.component.html',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => DateInputComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class DateInputComponent extends FormFieldComponent<any> implements OnInit, OnChanges {\r\n\r\n @Input() ngModelGroup: string;\r\n\r\n @Input() items: ItemDateInputData[];\r\n @Input() namePrefix: string;\r\n @Input() classes: string;\r\n @Input() formGroupClasses: any;\r\n @Input() errorMessage: string;\r\n @Input() id: string;\r\n\r\n /**\r\n * fieldset, diferentes formas de implementar, enumeradas por prioridad\r\n * 1) incluir objeto FieldsetData (interfaz expuesta)\r\n * 2) incluir template legend\r\n * 3) incluir legendData - incluir un fieldset con una legenda con los parametros pasados (interfaz expuesta)\r\n * 4) incluir legendText - incluir un fieldset con un texto en la legenda\r\n */\r\n @Input() fieldsetData: FieldsetData;\r\n @Input() legendRef: TemplateRef<LegendComponent>;\r\n @Input() legendData: LegendData;\r\n @Input() legendText: string;\r\n\r\n constructor(@Optional() public controlContainer: ControlContainer) {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.initDefaultItems();\r\n this.checkRequired();\r\n this.onExternalChange();\r\n }\r\n\r\n ngOnChanges(): void {\r\n this.initDefaultItems();\r\n this.checkRequired();\r\n this.onExternalChange();\r\n }\r\n\r\n initDefaultItems(): void {\r\n if (!this.items) {\r\n this.items = [\r\n {\r\n name: 'día',\r\n classes: 'w-14',\r\n maxlength: 2\r\n },\r\n {\r\n name: 'mes',\r\n classes: 'w-14',\r\n maxlength: 2\r\n },\r\n {\r\n name: 'año',\r\n classes: 'w-20',\r\n maxlength: 4\r\n }\r\n ];\r\n }\r\n }\r\n\r\n checkRequired(): void {\r\n if (!this.id) {\r\n throw Error('id is required');\r\n }\r\n if (this.items) {\r\n for (const item of this.items) {\r\n if (!item.name) {\r\n throw Error('item name is required');\r\n }\r\n }\r\n }\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.value = value;\r\n if (this.value) {\r\n this.items.forEach(item => item.value = this.value[this.getItemName(item)]);\r\n }\r\n this.onChange(value);\r\n }\r\n\r\n onExternalChange(): void {\r\n if (!this.value) {\r\n this.value = {};\r\n }\r\n this.items.forEach(item => this.value[this.getItemName(item)] = item.value);\r\n this.onChange(this.value);\r\n }\r\n\r\n onInternalChange(itemName: string, itemValue: any): void {\r\n if (!this.value) {\r\n this.value = {};\r\n }\r\n this.value[itemName] = itemValue ? +itemValue : undefined;\r\n this.onChange(this.value);\r\n }\r\n\r\n hasFieldset(): boolean {\r\n return !!(this.legendRef || this.fieldsetData\r\n || (this.legendData && (this.legendData.text || this.legendData.html)) || this.legendText);\r\n }\r\n\r\n getItemName(item: ItemDateInputData): string {\r\n return this.namePrefix ? this.namePrefix + '-' + item.name : item.name;\r\n }\r\n\r\n getItemLabel(item: ItemDateInputData): LabelData {\r\n let labelData: LabelData;\r\n if (item.labelData && (item.labelData.text || item.labelData.html)) {\r\n labelData = item.labelData;\r\n } else {\r\n labelData = {\r\n text: item.labelText ? item.labelText : item.name.toUpperCase(),\r\n classes: 'block'\r\n };\r\n }\r\n return labelData;\r\n }\r\n}\r\n","import {Component, EventEmitter, forwardRef, Input, OnChanges, Output, SimpleChanges} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { FormFieldComponent } from '../form-field/form-field.component';\r\n\r\n@Component({\r\n selector: 'desy-search-bar',\r\n templateUrl: './search-bar.component.html',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SearchBarComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class SearchBarComponent extends FormFieldComponent<string> implements OnChanges {\r\n\r\n @Input() describedBy: string;\r\n @Input() classes: string;\r\n @Input() buttonClasses: string;\r\n @Input() placeholder: string;\r\n\r\n value = '';\r\n\r\n @Output() clickEvent = new EventEmitter();\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.checkRequiredParams();\r\n }\r\n\r\n checkRequiredParams(): void {\r\n if (!this.id) {\r\n throw Error('id is required');\r\n }\r\n if (!this.hasLabel()) {\r\n throw Error('label is required');\r\n }\r\n }\r\n\r\n onClick(event: any): void {\r\n if (!this.disabled) {\r\n this.clickEvent.emit(event);\r\n }\r\n }\r\n\r\n}\r\n","import { Directive, Input, OnChanges, SimpleChanges, TemplateRef } from '@angular/core';\r\nimport { ItemCheckboxData, ItemRadioWithTemplateData } from '../interfaces';\r\n\r\n@Directive({\r\n selector: '[desyCondition]'\r\n})\r\nexport class ConditionDirective implements OnChanges {\r\n\r\n /**\r\n * Condition, diferentes formas de implementar, enumeradas por prioridad\r\n * 1) incluir objeto ItemCheckboxData o ItemRadioWithTemplateData (interfaces expuesta)\r\n * 2) incluir value y el listado de ItemCheckboxData[] o ItemRadioWithTemplateData[]\r\n */\r\n @Input() item: ItemCheckboxData|ItemRadioWithTemplateData;\r\n\r\n @Input() value: any;\r\n @Input() items: ItemCheckboxData[]|ItemRadioWithTemplateData[];\r\n\r\n constructor(public templateRef: TemplateRef<any>) {}\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (this.item) {\r\n this.item.conditionalHtml = this.templateRef;\r\n } else if (this.value && this.items) {\r\n for (const item of this.items) {\r\n if (item.value === this.value) {\r\n item.conditionalHtml = this.templateRef;\r\n }\r\n }\r\n } else {\r\n throw Error('item or value + items are required');\r\n }\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges, TemplateRef } from '@angular/core';\r\nimport { AccessibilityComponent, textOrHtmlRequiredFunction } from '../../../shared/components';\r\nimport { ModalButtonData, ModalData, ModalIconData } from '../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-modal',\r\n templateUrl: './modal.component.html'\r\n})\r\nexport class ModalComponent extends AccessibilityComponent implements OnChanges {\r\n\r\n @Input() title: ModalData;\r\n @Input() description: ModalData;\r\n @Input() itemsPrimary: ModalButtonData[];\r\n @Input() itemsSecondary: ModalButtonData[];\r\n @Input() icon: ModalIconData;\r\n\r\n @Input() isDismissible: boolean;\r\n @Input() id: string;\r\n @Input() classes: string;\r\n @Input() caller: TemplateRef<any>;\r\n\r\n @Output() closeModal: EventEmitter<void> = new EventEmitter();\r\n @Output() clickButton: EventEmitter<any> = new EventEmitter();\r\n\r\n closeDialog(): void {\r\n this.closeModal.emit();\r\n }\r\n\r\n getType(): string {\r\n let type: string;\r\n if (this.icon.type){\r\n type = this.icon.type.toLocaleLowerCase();\r\n }\r\n\r\n return type;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.title){\r\n throw new Error(`title are required`);\r\n } else {\r\n textOrHtmlRequiredFunction(this.title.text, this.title.html);\r\n }\r\n\r\n if (!this.description){\r\n throw new Error(`description are required`);\r\n } else {\r\n textOrHtmlRequiredFunction(this.description.text, this.description.html);\r\n }\r\n\r\n if (!this.id){\r\n throw new Error(`id are required`);\r\n }\r\n }\r\n\r\n clickButtonEmit($event): void{\r\n this.clickButton.emit($event);\r\n }\r\n\r\n}\r\n","export class FocusUtils {\r\n\r\n public static getFirstFocusableElement(parent?: HTMLElement): HTMLElement {\r\n const selectionableElements = 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])';\r\n let focusableList;\r\n if (parent) {\r\n focusableList = parent.querySelectorAll(selectionableElements);\r\n } else {\r\n focusableList = document.querySelectorAll(selectionableElements);\r\n }\r\n\r\n if (!focusableList || focusableList.length === 0) {\r\n return null;\r\n }\r\n\r\n let firstFocusable = null;\r\n let i = 0;\r\n while (i < focusableList.length) {\r\n try {\r\n const element = focusableList.item(i) as HTMLInputElement;\r\n if (FocusUtils.isFocusable(element)) {\r\n firstFocusable = element;\r\n break;\r\n }\r\n } catch (e) {\r\n\r\n }\r\n i++;\r\n }\r\n\r\n return firstFocusable;\r\n }\r\n\r\n public static isFocusable(element: any): boolean {\r\n if (element.tabIndex > 0 || (element.tabIndex === 0 && element.getAttribute('tabIndex') !== null)) {\r\n return true;\r\n }\r\n\r\n if (element.disabled) {\r\n return false;\r\n }\r\n\r\n switch (element.nodeName) {\r\n case 'A':\r\n return !!element.href && element.rel !== 'ignore';\r\n case 'INPUT':\r\n return element.type !== 'hidden' && element.type !== 'file';\r\n case 'BUTTON':\r\n case 'SELECT':\r\n case 'TEXTAREA':\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n}\r\n","import {\r\n Component,\r\n HostListener,\r\n OnChanges,\r\n OnDestroy,\r\n Input,\r\n ViewChild,\r\n ViewContainerRef,\r\n TemplateRef,\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Output,\r\n EventEmitter, ComponentRef, ElementRef, Type, ComponentFactoryResolver\r\n} from '@angular/core';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\nimport { ConfigurableFocusTrap, ConfigurableFocusTrapFactory } from '@angular/cdk/a11y';\r\nimport { FocusUtils } from '../../../shared/utils/focus-utils';\r\n\r\nlet numDialogsOpened = 0;\r\ntype DialogCreationCallback = ((dialog: DialogComponent, caller: ComponentRef<any>) => void);\r\n\r\n@Component({\r\n selector: 'desy-dialog',\r\n templateUrl: './dialog.component.html'\r\n})\r\nexport class DialogComponent extends AccessibilityComponent implements OnChanges, OnDestroy, AfterViewInit {\r\n\r\n static readonly DIALOG_OPEN_CLASS = 'has-dialog';\r\n static readonly KEY_CODE_ESC = 'Escape';\r\n\r\n @ViewChild('container', {read: ViewContainerRef}) container: ViewContainerRef;\r\n @ViewChild('focusTrapWrapper') focusTrapWrapper: ElementRef;\r\n\r\n @Input() active: boolean;\r\n @Output() activeChange = new EventEmitter<boolean>();\r\n\r\n @Input() id: any;\r\n @Input() caller: TemplateRef<any>;\r\n @Input() classes: string;\r\n @Input() focusOnClose: string|HTMLElement;\r\n @Input() dismissOnBackdrop: boolean;\r\n\r\n public callerType: Type<any>;\r\n public onCallerCreationCallback: DialogCreationCallback;\r\n\r\n lastActiveState = false;\r\n focusTrap: ConfigurableFocusTrap;\r\n clickOutsideEnabled = false;\r\n childElem: ElementRef;\r\n\r\n constructor(private cdRef: ChangeDetectorRef,\r\n private focusTrapFactory: ConfigurableFocusTrapFactory,\r\n private factoryResolver: ComponentFactoryResolver) {\r\n super();\r\n }\r\n\r\n ngOnChanges(): void {\r\n if (this.focusTrapWrapper) {\r\n this.handleActiveState();\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.id) {\r\n throw Error('id is required');\r\n }\r\n\r\n if (!this.caller && !this.callerType) {\r\n throw Error('caller is required');\r\n }\r\n\r\n if (this.callerType) {\r\n const factory = this.factoryResolver.resolveComponentFactory(this.callerType);\r\n const component = this.container.createComponent(factory);\r\n if (this.onCallerCreationCallback) {\r\n this.onCallerCreationCallback(this, component);\r\n }\r\n }\r\n\r\n if (this.focusTrapWrapper.nativeElement.children && this.focusTrapWrapper.nativeElement.children.length === 1) {\r\n this.childElem = this.focusTrapWrapper.nativeElement.children[0];\r\n }\r\n\r\n this.handleActiveState();\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n this.handleActiveState();\r\n }\r\n\r\n\r\n public dismiss(): void {\r\n this.activeChange.emit(false);\r\n }\r\n\r\n\r\n @HostListener('document:keyup', ['$event'])\r\n onKeyUp(event: KeyboardEvent): void {\r\n if (event.key === DialogComponent.KEY_CODE_ESC) {\r\n event.stopPropagation();\r\n this.dismiss();\r\n }\r\n }\r\n\r\n handleActiveState(): void {\r\n if (!this.focusTrap) {\r\n this.focusTrap = this.focusTrapFactory.create(this.focusTrapWrapper.nativeElement);\r\n }\r\n\r\n if (this.active !== this.lastActiveState) {\r\n this.lastActiveState = this.active;\r\n\r\n // Habilitar/deshabilitar scroll\r\n if (this.active && numDialogsOpened === 0) {\r\n document.body.classList.add(DialogComponent.DIALOG_OPEN_CLASS);\r\n } else if (!this.active && numDialogsOpened === 1) {\r\n document.body.classList.remove(DialogComponent.DIALOG_OPEN_CLASS);\r\n if (document.body.classList.length === 0) {\r\n document.body.removeAttribute('class');\r\n }\r\n }\r\n\r\n if (this.active) {\r\n setTimeout(() => this.focusTrap.focusInitialElement());\r\n numDialogsOpened++;\r\n } else {\r\n let focusElem: HTMLElement;\r\n this.focusTrap.destroy();\r\n if (this.focusOnClose) {\r\n if (typeof this.focusOnClose === 'string') {\r\n focusElem = document.getElementById(this.focusOnClose);\r\n } else {\r\n focusElem = this.focusOnClose;\r\n }\r\n } else {\r\n focusElem = FocusUtils.getFirstFocusableElement();\r\n }\r\n if (focusElem) {\r\n setTimeout(() => focusElem.focus());\r\n }\r\n numDialogsOpened--;\r\n }\r\n\r\n setTimeout(() => this.clickOutsideEnabled = this.active);\r\n }\r\n }\r\n\r\n handleClickOutside(): void {\r\n if (this.dismissOnBackdrop) {\r\n this.dismiss();\r\n }\r\n }\r\n}\r\n","import {\r\n ApplicationRef,\r\n ComponentFactoryResolver,\r\n ComponentRef, EmbeddedViewRef,\r\n Injectable,\r\n Injector,\r\n TemplateRef,\r\n Type\r\n} from '@angular/core';\r\nimport { DialogOptions, ModalOptions, OpenDialogResult } from '../interfaces';\r\nimport { DialogComponent } from '../components/dialog/dialog.component';\r\nimport { ModalComponent } from '../components/modal/modal.component';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DialogService {\r\n\r\n constructor(private factoryResolver: ComponentFactoryResolver,\r\n private defaultInjector: Injector,\r\n private appRef: ApplicationRef) { }\r\n\r\n openDialog(caller: Type<any>|ModalOptions|TemplateRef<any>,\r\n dialogOptions: DialogOptions): Promise<OpenDialogResult> {\r\n return new Promise<OpenDialogResult>((resolve, reject) => {\r\n\r\n if (!caller) {\r\n reject('caller is required');\r\n }\r\n\r\n if (!dialogOptions) {\r\n reject('dialogOptions is required');\r\n }\r\n\r\n const dialog = this.createDialog(dialogOptions);\r\n const result: OpenDialogResult = {\r\n dialog\r\n };\r\n\r\n if (caller instanceof Type) {\r\n dialog.instance.callerType = caller;\r\n dialog.instance.onCallerCreationCallback = (d, c) => {\r\n result.component = c;\r\n resolve(result);\r\n };\r\n } else if (caller instanceof TemplateRef) {\r\n dialog.instance.caller = caller;\r\n resolve(result);\r\n } else {\r\n dialog.instance.callerType = ModalComponent;\r\n dialog.instance.onCallerCreationCallback = (d, c) => {\r\n this.initModal(d, c, caller);\r\n result.component = c;\r\n resolve(result);\r\n };\r\n }\r\n });\r\n }\r\n\r\n closeDialog(dialog: ComponentRef<DialogComponent>|DialogComponent): void {\r\n\r\n if (!dialog) {\r\n throw Error('dialog is required');\r\n }\r\n\r\n if (dialog instanceof ComponentRef) {\r\n dialog.instance.dismiss();\r\n } else {\r\n dialog.dismiss();\r\n }\r\n }\r\n\r\n onCloseDialog(dialog: ComponentRef<DialogComponent>|DialogComponent): Promise<void> {\r\n return new Promise<void>((resolve => {\r\n let d;\r\n if (dialog instanceof ComponentRef) {\r\n d = dialog.instance;\r\n } else {\r\n d = dialog;\r\n }\r\n\r\n const subscription = d.activeChange.subscribe(() => {\r\n resolve();\r\n subscription.unsubscribe();\r\n });\r\n }));\r\n }\r\n\r\n private createDialog(dialogOptions: DialogOptions): ComponentRef<DialogComponent> {\r\n const factory = this.factoryResolver.resolveComponentFactory(DialogComponent);\r\n let dialog;\r\n if (dialogOptions.rootViewContainer) {\r\n dialog = dialogOptions.rootViewContainer.createComponent<DialogComponent>(factory);\r\n } else {\r\n dialog = factory.create(this.defaultInjector);\r\n this.appRef.attachView(dialog.hostView);\r\n const componentElement = (dialog.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n document.body.appendChild(componentElement);\r\n }\r\n\r\n dialog.instance.active = true;\r\n if (dialogOptions) {\r\n Object.assign(dialog.instance, dialogOptions);\r\n }\r\n\r\n this.onCloseDialog(dialog).then(() => dialog.destroy());\r\n\r\n return dialog;\r\n }\r\n\r\n private initModal(dialog: DialogComponent, modalRef: ComponentRef<ModalComponent>, modalOptions: ModalOptions): void {\r\n modalRef.instance.title = modalOptions.title;\r\n modalRef.instance.description = modalOptions.description;\r\n modalRef.instance.itemsPrimary = modalOptions.itemsPrimary;\r\n modalRef.instance.itemsSecondary = modalOptions.itemsSecondary;\r\n modalRef.instance.icon = modalOptions.icon;\r\n\r\n modalRef.instance.isDismissible = modalOptions.isDismissible;\r\n modalRef.instance.id = modalOptions.id;\r\n modalRef.instance.classes = modalOptions.classes;\r\n modalRef.instance.caller = modalOptions.caller;\r\n\r\n if (modalOptions.isDismissible) {\r\n const subscription = modalRef.instance.closeModal.subscribe(() => {\r\n this.closeDialog(dialog);\r\n subscription.unsubscribe();\r\n });\r\n }\r\n }\r\n\r\n}\r\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { Location } from '@angular/common';\r\nimport { AccessibilityComponent , textOrHtmlRequiredFunction} from '../../../shared/components';\r\nimport { BreadcrumbsData } from '../../interfaces/breadcrumbs.data';\r\n\r\n@Component({\r\n selector: 'desy-breadcrumbs',\r\n templateUrl: './breadcrumbs.component.html'\r\n})\r\nexport class BreadcrumbsComponent extends AccessibilityComponent implements OnChanges {\r\n\r\n @Input() items: Array<BreadcrumbsData>;\r\n @Input() classes: string;\r\n @Input() id: string;\r\n\r\n @Input() collapseOnMobile: boolean;\r\n @Input() hasBackButton: boolean;\r\n\r\n constructor(private location: Location){\r\n super();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.items){\r\n throw new Error(`items are required`);\r\n } else {\r\n this.items.forEach(element => {\r\n textOrHtmlRequiredFunction(element.text, element.html);\r\n });\r\n }\r\n }\r\n\r\n getLength(): number {\r\n let itemsLength: number = this.items.length;\r\n\r\n if (this.hasBackButton) {\r\n itemsLength += 1;\r\n }\r\n return itemsLength;\r\n }\r\n\r\n goBack(): void {\r\n this.location.back();\r\n }\r\n}\r\n","import { Component, Input, TemplateRef } from '@angular/core';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\nimport { NavigationUtils } from '../../../shared/utils/navigation-utils';\r\nimport { HeaderSubnavData } from '../../interfaces/header-subnav-data';\r\nimport { HeaderNavigationData } from '../../interfaces/header-navigation-data';\r\nimport { HeaderDropdownData } from '../../interfaces/header-dropdown-data';\r\nimport { HeaderOffcanvasData } from '../../interfaces/header-offcanvas-data';\r\n\r\n@Component({\r\n selector: 'desy-header',\r\n templateUrl: './header.component.html'\r\n})\r\nexport class HeaderComponent extends AccessibilityComponent {\r\n\r\n @Input() classes: string;\r\n @Input() containerClasses: string;\r\n @Input() homepageUrl: string;\r\n @Input() homepageRouterLink: string;\r\n @Input() homepageFragment: string;\r\n @Input() expandedLogo: boolean;\r\n\r\n @Input() subnavData: HeaderSubnavData;\r\n @Input() navigationData: HeaderNavigationData;\r\n @Input() dropdownData: HeaderDropdownData;\r\n @Input() offcanvasData: HeaderOffcanvasData;\r\n\r\n getHomeUrl(): string {\r\n return NavigationUtils.getExternalHref(this.homepageUrl);\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { MenuHorizontalItemData, MenuHorizontalItemEventData } from '../../interfaces';\r\nimport { AccessibilityComponent, textOrHtmlRequiredFunction } from '../../../shared/components';\r\nimport { NavigationUtils } from '../../../shared/utils/navigation-utils';\r\n\r\n@Component({\r\n selector: 'desy-menu-horizontal',\r\n templateUrl: './menu-horizontal.component.html'\r\n})\r\nexport class MenuHorizontalComponent extends AccessibilityComponent implements OnInit, OnChanges {\r\n\r\n @Input() id: string;\r\n @Input() idPrefix: string;\r\n @Input() classes: string;\r\n @Input() items: MenuHorizontalItemData[];\r\n\r\n @Output() clickEvent = new EventEmitter<MenuHorizontalItemEventData>();\r\n\r\n ngOnInit(): void {\r\n this.required();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.required();\r\n }\r\n\r\n required(): void{\r\n if (!this.items || this.items.length === 0) {\r\n throw new Error(`items are required`);\r\n }\r\n for (const item of this.items) {\r\n textOrHtmlRequiredFunction(item.text, item.html);\r\n }\r\n }\r\n\r\n onClick(event: any, item: MenuHorizontalItemData): void {\r\n this.items.forEach(i => i.active = false);\r\n item.active = true;\r\n this.clickEvent.emit({ item, event });\r\n }\r\n\r\n getIdPrefix(): string {\r\n return this.idPrefix ? this.idPrefix : 'menu-item';\r\n }\r\n\r\n getItemId(item: MenuHorizontalItemData, index: number): string {\r\n let id;\r\n if (item.id) {\r\n id = item.id;\r\n } else if (index === 0) {\r\n id = this.getIdPrefix();\r\n } else {\r\n id = this.getIdPrefix() + '-' + index;\r\n }\r\n return id;\r\n }\r\n\r\n getExternalHref(item: MenuHorizontalItemData): string {\r\n return NavigationUtils.getExternalHref(item.href);\r\n }\r\n}\r\n","import {Component, EventEmitter, Input, OnChanges, Output, SimpleChanges} from '@angular/core';\r\nimport {\r\n AccessibilityComponent,\r\n textOrHtmlRequiredFunction\r\n} from '../../../shared/components';\r\nimport {NavItemData, NavItemEventData} from '../../interfaces';\r\nimport {NavigationUtils} from '../../../shared/utils/navigation-utils';\r\n\r\n\r\n@Component({\r\n selector: 'desy-nav',\r\n templateUrl: './nav.component.html'\r\n})\r\nexport class NavComponent extends AccessibilityComponent implements OnChanges {\r\n\r\n @Input() isMenu: boolean;\r\n @Input() idPrefix: string;\r\n @Input() items: NavItemData[];\r\n @Input() classes: string;\r\n\r\n @Output() clickEvent = new EventEmitter<NavItemEventData>();\r\n\r\n getExternalHref(item: NavItemData): string {\r\n return NavigationUtils.getExternalHref(item.href);\r\n }\r\n\r\n onClick(event: any, item: NavItemData): void {\r\n this.items.forEach(i => i.active = false);\r\n item.active = true;\r\n this.clickEvent.emit({ item, event });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.checkRequiredParams();\r\n }\r\n\r\n checkRequiredParams(): void {\r\n if (!this.items){\r\n throw new Error(`items are required`);\r\n } else {\r\n this.items.forEach(element => {\r\n\r\n if(!element.href && !element.routerLink) {\r\n throw new Error(`href or routerLink are required`);\r\n }\r\n\r\n textOrHtmlRequiredFunction(element.text, element.html);\r\n });\r\n }\r\n }\r\n\r\n getItemId(item: NavItemData, index: number): string {\r\n let id;\r\n if (item.id) {\r\n id = item.id;\r\n } else if (index === 0) {\r\n id = this.getIdPrefix();\r\n } else {\r\n id = this.getIdPrefix() + '-' + index;\r\n }\r\n return id;\r\n }\r\n\r\n getIdPrefix(): string {\r\n return this.idPrefix ? this.idPrefix : 'nav-item';\r\n }\r\n}\r\n","import { Component, Input, SimpleChanges, OnChanges } from '@angular/core';\r\nimport { AccessibilityComponent, textOrHtmlRequiredFunction } from '../../../shared/components';\r\nimport { MenuVerticalItemsData } from '../../interfaces/menu-vertical-items-data';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport { MenuVerticalSubData } from '../../interfaces/menu-vertical-sub-data';\r\n\r\n@Component({\r\n selector: 'desy-menu-vertical',\r\n templateUrl: './menu-vertical.component.html',\r\n animations: [\r\n trigger('displayMenuVertical', [\r\n state('void', style({\r\n opacity: '0.0',\r\n transform: 'scale(0.95)'\r\n })),\r\n state('*', style({\r\n opacity: '1.0',\r\n transform: 'scale(1.0)'\r\n })),\r\n transition(':enter', [\r\n animate('100ms ease-out')\r\n ])\r\n ])\r\n ]\r\n})\r\nexport class MenuVerticalComponent extends AccessibilityComponent implements OnChanges {\r\n\r\n @Input() id: string;\r\n @Input() idPrefix: string;\r\n @Input() expandable: boolean;\r\n @Input() items: Array<MenuVerticalItemsData>;\r\n\r\n @Input() classes: string;\r\n\r\n isTree: boolean;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.idPrefix){\r\n throw new Error(`idPrefix are required`);\r\n }\r\n\r\n if (!this.items){\r\n throw new Error(`items are required`);\r\n } else {\r\n this.items.forEach(element => {\r\n textOrHtmlRequiredFunction(element.text, element.html);\r\n if (element.sub){\r\n this.isTree = true;\r\n }\r\n });\r\n }\r\n\r\n }\r\n\r\n getId(item: MenuVerticalItemsData, i: number): string {\r\n if (item.id) {\r\n return item.id;\r\n } else {\r\n if (i === 0) {\r\n return this.getIdPrefix();\r\n } else {\r\n return this.getIdPrefix() + '-' + i;\r\n }\r\n }\r\n }\r\n\r\n getIdPrefix(): string {\r\n return (this.idPrefix ? this.idPrefix : 'nav-item');\r\n }\r\n\r\n getSubId(itemSub: MenuVerticalSubData, i: number): string{\r\n if (itemSub.id) {\r\n return itemSub.id;\r\n } else {\r\n if (i === 0) {\r\n return 'sub-' + this.getIdPrefix();\r\n } else {\r\n return this.getIdPrefix() + '-' + i;\r\n }\r\n }\r\n\r\n }\r\n\r\n\r\n isDisabled(item: MenuVerticalItemsData): boolean {\r\n return item.disabled ? true : null;\r\n }\r\n\r\n isItemExpanded(item: MenuVerticalItemsData): string {\r\n if (this.expandable){\r\n return item.expanded ? 'true' : 'false';\r\n }\r\n return 'true';\r\n }\r\n\r\n isActive(item: any): boolean {\r\n return item.active ? true : false;\r\n }\r\n\r\n expand(item: any): void {\r\n if (this.expandable) {\r\n item.expanded = !item.expanded;\r\n }\r\n }\r\n\r\n getButtonClasses(item: MenuVerticalItemsData): string {\r\n let itemButtonClass = 'w-full flex relative px-xs focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black text-left ';\r\n if (item.classes) {\r\n itemButtonClass = itemButtonClass + item.classes;\r\n }\r\n\r\n if (this.isDisabled(item)){\r\n itemButtonClass = itemButtonClass + ' opacity-50 pointer-events-none';\r\n }\r\n\r\n return itemButtonClass;\r\n }\r\n\r\n getItemWithHrefClass(item: any): string {\r\n let itemWithHrefClass = 'block px-xs focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black ';\r\n if (item.classes) {\r\n itemWithHrefClass = itemWithHrefClass + item.classes;\r\n }\r\n\r\n if (!this.isDisabled(item)){\r\n itemWithHrefClass = itemWithHrefClass + ' group-hover:text-primary-base group-hover:underline ';\r\n } else {\r\n itemWithHrefClass = itemWithHrefClass + ' opacity-50 pointer-events-none';\r\n }\r\n\r\n if (this.isActive(item)){\r\n return itemWithHrefClass + ' font-bold ';\r\n }\r\n return itemWithHrefClass;\r\n }\r\n\r\n getClassesItemSubWithHref(itemSub: any): string {\r\n let itemSubWithHrefClass = 'block px-xs hover:text-primary-base hover:underline focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black ';\r\n if (itemSub.classes) {\r\n itemSubWithHrefClass = itemSubWithHrefClass + itemSub.classes;\r\n }\r\n if (this.isDisabled(itemSub)){\r\n itemSubWithHrefClass = itemSubWithHrefClass + ' opacity-50 pointer-events-none ';\r\n }\r\n if (this.isActive(itemSub)){\r\n return itemSubWithHrefClass + ' font-bold ';\r\n }\r\n return itemSubWithHrefClass;\r\n }\r\n\r\n getClassesItemSubNoHref(itemSub: any): string {\r\n let itemSubNoHrefClass = 'block px-xs text-neutral-dark ';\r\n if (itemSub.classes) {\r\n itemSubNoHrefClass = itemSubNoHrefClass + itemSub.classes;\r\n }\r\n if (this.isActive(itemSub)){\r\n itemSubNoHrefClass = itemSubNoHrefClass + ' font-bold';\r\n }\r\n return itemSubNoHrefClass;\r\n }\r\n\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { AccessibilityAndTextOrHtmlRequiredComponent } from '../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-skip-link',\r\n templateUrl: './skip-link.component.html'\r\n})\r\nexport class SkipLinkComponent extends AccessibilityAndTextOrHtmlRequiredComponent {\r\n\r\n @Input() fragment: string;\r\n @Input() classes: string;\r\n @Input() id: string;\r\n\r\n getClassNames(): string {\r\n let classNames = 'c-skip-link sr-only active:not-sr-only focus:not-sr-only focus:outline-none focus:shadow-outline-focus block p-base bg-warning-base text-center text-black underline';\r\n if (this.classes) {\r\n classNames += ' ' + this.classes;\r\n }\r\n return classNames;\r\n }\r\n\r\n}\r\n","import { Component, Input, SimpleChanges, OnChanges } from '@angular/core';\r\nimport { AccessibilityComponent, textOrHtmlRequiredFunction} from '../../../shared/components';\r\nimport { ErrorSummaryData } from '../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-error-summary',\r\n templateUrl: './error-summary.component.html'\r\n})\r\nexport class ErrorSummaryComponent extends AccessibilityComponent implements OnChanges {\r\n\r\n @Input() errorList: Array<ErrorSummaryData>;\r\n\r\n @Input() titleText: string;\r\n @Input() titleHtml: string;\r\n @Input() descriptionText: string;\r\n @Input() descriptionHtml: string;\r\n @Input() classes: string;\r\n @Input() id: string;\r\n\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n textOrHtmlRequiredFunction(this.titleText, this.titleHtml);\r\n if (!this.errorList){\r\n throw new Error(`errorList are required`);\r\n } else {\r\n this.errorList.forEach(element => {\r\n textOrHtmlRequiredFunction(element.text, element.html);\r\n });\r\n }\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\r\n\r\nimport { AccessibilityComponent, textOrHtmlRequiredFunction } from '../../../shared/components';\r\nimport { NotificationDescriptionData } from '../../interfaces/notification-description-data';\r\nimport { NotificationIconData } from '../../interfaces/notification-icon-data';\r\nimport { NotificationItemsData } from '../../interfaces/notification-items-data';\r\nimport { NotificationTitleData } from '../../interfaces/notification-title-data';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport { NotificationContentData } from '../../interfaces/notification-content-data';\r\n\r\n@Component({\r\n selector: 'desy-notification',\r\n templateUrl: './notification.component.html',\r\n animations: [\r\n trigger('displayNotification', [\r\n state('void', style({\r\n opacity: '0.0',\r\n transform: 'scaleY(0.95)'\r\n })),\r\n state('*', style({\r\n opacity: '1.0',\r\n transform: 'scaleY(1.0)'\r\n })),\r\n transition(':enter', [\r\n animate('100ms ease-out')\r\n ]),\r\n transition(':leave', [\r\n animate('75ms ease-in')\r\n ])\r\n ])\r\n ]\r\n})\r\nexport class NotificationComponent extends AccessibilityComponent implements OnChanges {\r\n\r\n @Input() id: string;\r\n @Input() classes: string;\r\n @Input() isOpen = true;\r\n @Output() isOpenChange = new EventEmitter<boolean>();\r\n\r\n @Input() title: NotificationTitleData;\r\n @Input() description: NotificationDescriptionData;\r\n @Input() content: NotificationContentData;\r\n @Input() items: Array<NotificationItemsData>;\r\n\r\n @Input() icon: NotificationIconData;\r\n @Input() type: string;\r\n @Input() isDismissible: boolean;\r\n\r\n isDismissing = false;\r\n\r\n dismiss(): void {\r\n // Se emite 75ms más tarde para poder visualizar la animación en cualquier caso\r\n this.isDismissing = true;\r\n setTimeout(() => {\r\n this.isDismissing = false;\r\n this.isOpenChange.emit(false);\r\n }, 75);\r\n }\r\n\r\n getType(): string {\r\n let type: string;\r\n if (this.type){\r\n type = this.type.toLocaleLowerCase();\r\n }\r\n return type;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n\r\n if (!this.id){\r\n throw new Error(`id are required`);\r\n }\r\n\r\n if (!this.title){\r\n throw new Error(`title are required`);\r\n } else {\r\n textOrHtmlRequiredFunction(this.title.text, this.title.html);\r\n }\r\n\r\n if (this.description){\r\n textOrHtmlRequiredFunction(this.description.text, this.description.html);\r\n }\r\n\r\n if (this.items){\r\n this.items.forEach(element => {\r\n textOrHtmlRequiredFunction(element.text, element.html);\r\n });\r\n }\r\n }\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {AccessibilityComponent} from \"../../../shared/components\";\r\nimport {IconData, MetaData, NavigationData} from \"../../interfaces\";\r\nimport {NavigationUtils} from \"../../../shared/utils/navigation-utils\";\r\n\r\n\r\n@Component({\r\n selector: 'desy-footer',\r\n templateUrl: './footer.component.html'\r\n})\r\nexport class FooterComponent extends AccessibilityComponent {\r\n\r\n @Input() meta: MetaData;\r\n @Input() navigation: NavigationData[];\r\n @Input() icon: IconData;\r\n @Input() containerClasses: string;\r\n @Input() classes: string;\r\n\r\n getUrl(item: any): string {\r\n return NavigationUtils.getExternalHref(item.href);\r\n }\r\n\r\n}\r\n","import { Component, Input, SimpleChanges, OnChanges } from '@angular/core';\r\nimport { AccessibilityComponent, textOrHtmlRequiredFunction } from '../../../shared/components';\r\nimport { CellData } from '../../interfaces';\r\n\r\n\r\n@Component({\r\n selector: 'desy-table',\r\n templateUrl: './table.component.html'\r\n})\r\nexport class TableComponent extends AccessibilityComponent implements OnChanges {\r\n\r\n @Input() rows: Array<CellData[]>;\r\n @Input() head: CellData[];\r\n\r\n @Input() caption: string;\r\n @Input() captionClasses: string;\r\n @Input() firstCellIsHeader: boolean;\r\n @Input() classes: string;\r\n\r\n @Input() id: string;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.rows){\r\n throw new Error(`rows are required`);\r\n } else {\r\n this.rows.forEach(element => {\r\n if (element){\r\n element.forEach(e => {\r\n textOrHtmlRequiredFunction(e.text, e.html);\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n}\r\n\r\n","export class SearchUtils {\r\n\r\n /**\r\n * Comprueba si una cadena de texto (target) contiene cualquier palabra de otro texto (text)\r\n * @param target - Texto en el que buscar\r\n * @param text - Texto a buscar\r\n * @param fullWord - Indica si las palabras del texto a buscar deben aparecer enteras\r\n */\r\n public static containsAnyWordFrom(target: string, text: string, fullWord?: boolean): boolean {\r\n let words: string[] = [];\r\n let includes = false;\r\n const simplifiedTarget = this.getSimplifiedString(target);\r\n\r\n if (text && text.split(' ').length > 1) {\r\n words = text.split(' ');\r\n }\r\n words.push(text);\r\n\r\n words.forEach(word => {\r\n if (simplifiedTarget && word) {\r\n if ((fullWord && simplifiedTarget === this.getSimplifiedString(word))\r\n || (!fullWord && simplifiedTarget.includes(this.getSimplifiedString(word)))) {\r\n includes = true;\r\n }\r\n }\r\n });\r\n\r\n return includes;\r\n }\r\n\r\n /**\r\n * Convierte a mayúsculas, elimina espacios y reemplaza/elimina caracteres especiales para realizar comparaciones más tolerantes\r\n * @param str - cadena de entrada\r\n */\r\n private static getSimplifiedString(str: string): string {\r\n let res = str;\r\n if (str) {\r\n res = str.toLocaleUpperCase().trim();\r\n res = res.replace('Á', 'A');\r\n res = res.replace('É', 'E');\r\n res = res.replace('Í', 'I');\r\n res = res.replace('Ó', 'O');\r\n res = res.replace('Ú', 'U');\r\n res = res.replace('À', 'A');\r\n res = res.replace('È', 'E');\r\n res = res.replace('Ì', 'I');\r\n res = res.replace('Ò', 'O');\r\n res = res.replace('Ù', 'U');\r\n res = res.replace('Ä', 'A');\r\n res = res.replace('Ë', 'E');\r\n res = res.replace('Ï', 'I');\r\n res = res.replace('Ö', 'O');\r\n res = res.replace('Ü', 'U');\r\n res = res.replace(',', '');\r\n res = res.replace('.', '');\r\n res = res.replace('\\'', '');\r\n res = res.replace('\"', '');\r\n }\r\n\r\n return res;\r\n }\r\n}\r\n","import { CellData } from './cell-data';\r\n\r\nexport interface HeadCellData extends CellData {\r\n orderBy?: OrderBy; // Possible values `none`, `asc`, `desc`.\r\n hasFilter?: boolean;\r\n filterClasses?: string;\r\n}\r\n\r\nexport interface HeadCellModelData extends HeadCellData {\r\n valueFilter: string;\r\n activeFilter: boolean;\r\n}\r\n\r\nexport enum OrderBy {\r\n none = 'none',\r\n asc = 'asc',\r\n desc = 'desc'\r\n}\r\n","import { Component, Input, OnChanges, SimpleChanges, OnInit, Output, EventEmitter, AfterViewInit, ElementRef } from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { textOrHtmlRequiredFunction, AccessibilityComponent } from '../../../shared/components';\r\nimport { SearchUtils } from '../../../shared/utils/search-utils';\r\nimport { HeadCellModelData, OrderBy, CellData, RowData } from '../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-table-advanced',\r\n templateUrl: './table-advanced.component.html'\r\n})\r\nexport class TableAdvancedComponent extends AccessibilityComponent implements OnChanges, AfterViewInit {\r\n\r\n @Input() rows: Array<RowData>; // original data\r\n @Input() head: HeadCellModelData[];\r\n\r\n @Input() caption: string;\r\n @Input() captionClasses: string;\r\n @Input() firstCellIsHeader: boolean;\r\n @Input() hasCheckboxes: boolean;\r\n @Input() idPrefix: string;\r\n @Input() classes: string;\r\n @Input() id: string;\r\n\r\n searchData: Array<RowData>;\r\n orderBy = OrderBy;\r\n form: FormGroup;\r\n isReset: boolean;\r\n\r\n @Output() rowsChecked = new EventEmitter();\r\n\r\n constructor(private el: ElementRef) {\r\n super();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.rows){\r\n throw new Error(`rows are required`);\r\n } else {\r\n this.rows.forEach(element => {\r\n if (element){\r\n element.cellsList.forEach(e => {\r\n textOrHtmlRequiredFunction(e.text, e.html);\r\n });\r\n if (this.hasCheckboxes) {\r\n if (!element.id){\r\n throw new Error(`id row is required with checkboxes`);\r\n }\r\n }\r\n }\r\n });\r\n this.searchData = this.rows.slice();\r\n this.createFormGroup();\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n const elemntsFocus = this.el.nativeElement.querySelector('[tabindex]');\r\n elemntsFocus.setAttribute('tabindex', '0');\r\n }\r\n\r\n /**\r\n * funciones de recoger ids, y caracteristicas\r\n */\r\n\r\n hasFilters(): boolean {\r\n let f = false;\r\n if (this.head){\r\n for (const iterator of this.head) {\r\n if (iterator.hasFilter) {\r\n f = true;\r\n break;\r\n }\r\n }\r\n }\r\n return f;\r\n }\r\n\r\n getIdPrefix(): string {\r\n return this.idPrefix ? this.idPrefix : 'id-table-row';\r\n }\r\n\r\n getIdHeader(index: number): string {\r\n return this.getIdPrefix + '-header-' + index;\r\n }\r\n\r\n getIdHeaderCheckbox(index: number): string {\r\n return this.getIdPrefix + '-header-checkbox-' + index;\r\n }\r\n\r\n getIdRowCheckbox(index: number): string {\r\n return this.getIdPrefix + '-checkbox-' + index;\r\n }\r\n\r\n getIdHeaderFilter(index: number): string {\r\n return this.getIdPrefix + '-header-filter-' + index;\r\n }\r\n\r\n getStringOrderBy(orderBy: OrderBy): string {\r\n if (orderBy === OrderBy.asc){\r\n return 'ascending';\r\n } else if (orderBy === OrderBy.desc){\r\n return 'descending';\r\n } else if (orderBy === OrderBy.none){\r\n return 'none';\r\n }\r\n\r\n }\r\n\r\n /**\r\n * se recoge el texto visible, por el que se va ordenar o buscar\r\n */\r\n private getTextVisible(cell: CellData): string {\r\n return cell.html ? cell.html : cell.text;\r\n }\r\n\r\n /**\r\n * cheks\r\n */\r\n createFormGroup(): void {\r\n const group: any = {};\r\n\r\n if (this.hasCheckboxes) {\r\n this.rows.forEach(row => {\r\n group[row.id] = new FormControl(false);\r\n });\r\n }\r\n\r\n this.form = new FormGroup(group);\r\n\r\n if (this.hasCheckboxes) {\r\n this.form.valueChanges.subscribe(val => {\r\n if (!this.isReset){\r\n this.rowsChecked.emit(val);\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * desmarcar todo\r\n */\r\n unchecked(): void{\r\n if (this.hasCheckboxes) {\r\n this.isReset = true;\r\n this.rows.forEach(row => {\r\n this.form.controls[row.id].setValue(false);\r\n });\r\n this.isReset = false;\r\n this.rowsChecked.emit(this.form.value);\r\n }\r\n }\r\n\r\n /**\r\n * comprueba si esta marcada la fila\r\n */\r\n isChecked(id: string): boolean{\r\n return this.form.get(id).value;\r\n }\r\n\r\n\r\n /**\r\n * busqueda\r\n */\r\n\r\n onInputSearch(item: HeadCellModelData): void {\r\n if (item.hasFilter) { // si tiene buscador\r\n if (item.valueFilter){\r\n item.activeFilter = true;\r\n } else{\r\n item.activeFilter = false;\r\n }\r\n this.searchData = this.search(); // se busca desde la lista inicial rows\r\n this.searchSort(); // se ordena la lista si hay marcado orden\r\n this.unchecked();\r\n }\r\n }\r\n /**\r\n * se busca por columnas, se parte de la lista inicial y se busca en todas las columnas activas\r\n */\r\n private search(): Array<RowData> {\r\n const result = this.rows.slice();\r\n\r\n for (let i = 0; i < this.head.length; i++) {\r\n const element = this.head[i];\r\n if (element.hasFilter && element.activeFilter){\r\n for (let k = 0; k < result.length; k++) {\r\n const dataElement = result[k].cellsList;\r\n if (!SearchUtils.containsAnyWordFrom(this.getTextVisible(dataElement[i]), element.valueFilter)) {\r\n result.splice(k, 1);\r\n k--;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * se ordena la lista si hay marcado algun orden\r\n */\r\n private searchSort(): void{\r\n for (let i = 0; i < this.head.length; i++) {\r\n const element = this.head[i];\r\n if (element.orderBy && element.orderBy !== OrderBy.none){\r\n const data = this.searchData.slice();\r\n this.searchData = data.sort((a, b) => {\r\n return this.compare(a.cellsList[i], b.cellsList[i], (element.orderBy === OrderBy.asc));\r\n });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * ordenacion\r\n */\r\n\r\n /**\r\n * ordena la tabla por una columna\r\n *\r\n * @param item item por el que ordenar\r\n * @param index index por el que ordenar\r\n */\r\n\r\n sortData(item: HeadCellModelData, index: number): void {\r\n if (item.orderBy){ // si tiene para ordenar\r\n const data = this.searchData.slice();\r\n const direction = this.getDirection(item);\r\n\r\n this.searchData = data.sort((a, b) => {\r\n return this.compare(a.cellsList[index], b.cellsList[index], (direction === OrderBy.asc));\r\n });\r\n\r\n item.orderBy = direction;\r\n this.cleanSorted(index);\r\n }\r\n }\r\n\r\n /**\r\n * se compara dos CellData\r\n */\r\n compare(a: CellData, b: CellData, isAsc: boolean): number{\r\n let result = 0;\r\n const aComparable = this.cleanCurrency(this.getTextVisible(a));\r\n const bComparable = this.cleanCurrency(this.getTextVisible(b));\r\n\r\n if (isNaN(+aComparable) && isNaN(+bComparable) ) { // son textos\r\n result = aComparable.localeCompare(bComparable, 'es', { sensitivity: 'base', ignorePunctuation: true });\r\n }else{ // son numeros\r\n result = aComparable.localeCompare(bComparable, undefined, { numeric: true });\r\n }\r\n\r\n return result * (isAsc ? 1 : -1);\r\n }\r\n\r\n /**\r\n * Se elimina la ordenación del resto de columnas, solo se deja por el que se ordena\r\n */\r\n private cleanSorted(index: number): void {\r\n if (this.head){\r\n for (let i = 0; i < this.head.length; i++) {\r\n if (i < index || i > index) {\r\n const element = this.head[i];\r\n if (element.orderBy){\r\n element.orderBy = OrderBy.none;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * se calcula la ordenación nueva\r\n */\r\n private getDirection(item: HeadCellModelData): OrderBy {\r\n if (item.orderBy === OrderBy.none || item.orderBy === OrderBy.desc) {\r\n return OrderBy.asc;\r\n }else {\r\n return OrderBy.desc;\r\n }\r\n }\r\n\r\n /**\r\n * si es una cantidad de dinero se quita € para poder comparar los numeros\r\n */\r\n private cleanCurrency(txt: string): string{\r\n if (/[\\d.,]+[\\€]/g.test(txt)) {\r\n txt = txt.replace(/€/g, '');\r\n }\r\n return txt;\r\n }\r\n\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component, ComponentFactoryResolver, ComponentRef,\r\n ElementRef,\r\n EventEmitter,\r\n Input, OnChanges,\r\n OnDestroy,\r\n Output,\r\n TemplateRef, Type,\r\n ViewChild, ViewContainerRef\r\n} from '@angular/core';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\nimport { FocusUtils } from '../../../shared/utils/focus-utils';\r\n\r\ntype AlertCreationCallback = ((dialog: AlertComponent, caller: ComponentRef<any>) => void);\r\n\r\n@Component({\r\n selector: 'desy-alert',\r\n templateUrl: './alert.component.html'\r\n})\r\nexport class AlertComponent extends AccessibilityComponent implements OnChanges, OnDestroy, AfterViewInit {\r\n\r\n @ViewChild('alertWrapper') alertWrapper: ElementRef;\r\n @ViewChild('container', {read: ViewContainerRef}) container: ViewContainerRef;\r\n\r\n @Input() id: string;\r\n @Input() classes: string;\r\n @Input() caller: TemplateRef<any>;\r\n @Input() focusFirst: boolean;\r\n @Input() active: boolean;\r\n @Output() activeChange = new EventEmitter<boolean>();\r\n\r\n public callerContext: any;\r\n public callerType: Type<any>;\r\n public onCallerCreationCallback: AlertCreationCallback;\r\n\r\n private lastActiveState: boolean = undefined;\r\n private hasViewinit = false;\r\n\r\n constructor(private cdRef: ChangeDetectorRef, private factoryResolver: ComponentFactoryResolver) {\r\n super();\r\n }\r\n\r\n ngOnChanges(): void {\r\n this.handleActiveState();\r\n }\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n this.handleActiveState();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.id) {\r\n throw Error('id is required');\r\n }\r\n\r\n if (!this.caller && !this.callerType) {\r\n throw Error('caller is required');\r\n }\r\n\r\n this.hasViewinit = true;\r\n this.cdRef.detectChanges();\r\n\r\n if (this.callerType) {\r\n const factory = this.factoryResolver.resolveComponentFactory(this.callerType);\r\n const component = this.container.createComponent(factory);\r\n if (this.onCallerCreationCallback) {\r\n this.onCallerCreationCallback(this, component);\r\n }\r\n }\r\n\r\n this.handleActiveState();\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n dismiss(): void {\r\n this.activeChange.emit(false);\r\n }\r\n\r\n handleActiveState(): void {\r\n if (this.active !== this.lastActiveState && this.hasViewinit) {\r\n this.lastActiveState = this.active;\r\n\r\n if (this.active && this.focusFirst) {\r\n setTimeout(() => {\r\n const focusElem = FocusUtils.getFirstFocusableElement(this.alertWrapper.nativeElement as HTMLElement);\r\n if (focusElem) {\r\n setTimeout(() => focusElem.focus());\r\n }\r\n });\r\n }\r\n }\r\n }\r\n}\r\n","import {Component, ElementRef, Input, OnChanges, QueryList, SimpleChanges, ViewChildren} from '@angular/core';\r\nimport {AccordionHeaderData} from \"../../interfaces/accordion-header.data\";\r\nimport {AccessibilityComponent} from \"../../../shared/components\";\r\nimport {AccordionItemData} from \"../../interfaces/accordion-item.data\";\r\n\r\n@Component({\r\n selector: 'desy-accordion',\r\n templateUrl: './accordion.component.html'\r\n})\r\nexport class AccordionComponent extends AccessibilityComponent implements OnChanges{\r\n\r\n @ViewChildren('itemSelector') itemSelectors: QueryList<ElementRef>;\r\n\r\n @Input() idPrefix: string;\r\n @Input() allowToggle: boolean;\r\n @Input() allowMultiple: boolean;\r\n @Input() heading: AccordionHeaderData;\r\n @Input() showControl: boolean;\r\n @Input() items: AccordionItemData[];\r\n @Input() classes: string;\r\n @Input() id: string;\r\n\r\n showAll: boolean = true;\r\n currentItem: number;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.items) {\r\n throw new Error(`items are required`);\r\n } else {\r\n this.items.forEach(item => {\r\n if (!item.html && !item.text) {\r\n throw new Error(`html or text are required`);\r\n }\r\n if (!item.headerHtml && !item.headerText) {\r\n throw new Error(`headerHtml or headerText are required`);\r\n }\r\n });\r\n }\r\n if (this.heading) {\r\n if (!this.heading.html && !this.heading.text) {\r\n throw new Error(`heading.html or heading.text are required`);\r\n }\r\n }\r\n }\r\n\r\n getIdPrefix(): string {\r\n if (this.idPrefix) {\r\n return this.idPrefix;\r\n }\r\n }\r\n\r\n getItemId(index: number): string {\r\n let id;\r\n if (this.items[index].id) {\r\n id = this.items[index].id;\r\n } else {\r\n id = this.getIdPrefix() + '-' + index;\r\n }\r\n return id;\r\n }\r\n\r\n changeAll() {\r\n this.items.forEach(item => {\r\n item.open = this.showAll;\r\n });\r\n this.showAll = !this.showAll;\r\n }\r\n\r\n changeOpen(item: AccordionItemData) {\r\n if (this.allowMultiple) {\r\n item.open = !item.open;\r\n } else {\r\n if (item.open) {\r\n item.open = false;\r\n } else {\r\n this.items.forEach(item => {\r\n item.open = false;\r\n });\r\n item.open = true;\r\n }\r\n }\r\n }\r\n\r\n focusFirstItem(event?): void {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n this.itemSelectors.toArray()[0].nativeElement.focus();\r\n }\r\n\r\n focusLastItem(event?): void {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n this.itemSelectors.toArray()[this.itemSelectors.length - 1].nativeElement.focus();\r\n }\r\n\r\n focusNextItem(focusedItem: number): void {\r\n if (this.itemSelectors.toArray()[focusedItem + 1] != null) {\r\n this.itemSelectors.toArray()[focusedItem + 1].nativeElement.focus();\r\n }\r\n }\r\n\r\n focusPreviousItem(focusedItem: number): void {\r\n if (this.itemSelectors.toArray()[focusedItem - 1] != null) {\r\n this.itemSelectors.toArray()[focusedItem - 1].nativeElement.focus();\r\n }\r\n }\r\n\r\n selectItem( i: number ): void {\r\n this.currentItem = i;\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-spinner',\r\n templateUrl: './spinner.component.html'\r\n})\r\nexport class SpinnerComponent extends AccessibilityComponent {\r\n\r\n @Input() classes: string;\r\n @Input() text: string;\r\n\r\n @Input() id: string;\r\n\r\n}\r\n","import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-details',\r\n templateUrl: './details.component.html'\r\n})\r\nexport class DetailsComponent extends AccessibilityComponent implements OnInit, OnChanges {\r\n\r\n @Input() summaryText: string;\r\n @Input() summaryHtml: string;\r\n @Input() summaryClasses: string;\r\n @Input() containerClasses: string;\r\n @Input() id: string;\r\n @Input() open: boolean;\r\n @Input() classes: string;\r\n\r\n ngOnInit(): void {\r\n summaryTextOrSummaryHtmlRequiredFunction(this.summaryText, this.summaryHtml);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n summaryTextOrSummaryHtmlRequiredFunction(this.summaryText, this.summaryHtml);\r\n }\r\n\r\n}\r\n\r\nexport function summaryTextOrSummaryHtmlRequiredFunction(text: string, html: string): void {\r\n if (!html && !text) {\r\n throw new Error(`summaryHtml or summaryText are required`);\r\n }\r\n}\r\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { AccessibilityComponent } from '../../../shared/components/accessibility/accessibility.component';\r\nimport { textOrHtmlRequiredFunction } from '../../../shared/components/text-or-html-required/text-or-html-required.component';\r\nimport { ItemDescriptionData } from '../../interfaces/item-description.data';\r\n\r\n@Component({\r\n selector: 'desy-description-list',\r\n templateUrl: './description-list.component.html'\r\n})\r\nexport class DescriptionListComponent extends AccessibilityComponent implements OnChanges {\r\n\r\n @Input() items: Array<ItemDescriptionData>;\r\n @Input() classes: string;\r\n @Input() id: string;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.items){\r\n throw new Error(`items are required`);\r\n } else {\r\n this.items.forEach(element => {\r\n if (!element.term){\r\n throw new Error(`term is required`);\r\n } else {\r\n textOrHtmlRequiredFunction(element.term.text, element.term.html);\r\n }\r\n if (!element.definition){\r\n throw new Error(`definition is required`);\r\n } else {\r\n textOrHtmlRequiredFunction(element.definition.text, element.definition.html);\r\n }\r\n });\r\n }\r\n }\r\n\r\n}\r\n","import { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport { Component, Input, OnChanges, OnInit, SimpleChanges, TemplateRef } from '@angular/core';\r\nimport { AccessibilityComponent, textOrHtmlRequiredFunction } from '../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-collapsible',\r\n templateUrl: './collapsible.component.html',\r\n animations: [\r\n trigger('displayCollapsible', [\r\n state('void', style({\r\n opacity: '0.0',\r\n transform: 'scaleY(0.95)'\r\n })),\r\n state('*', style({\r\n opacity: '1.0',\r\n transform: 'scaleY(1.0)'\r\n })),\r\n transition(':enter', [\r\n animate('100ms ease-out')\r\n ]),\r\n transition(':leave', [\r\n animate('75ms ease-in')\r\n ])\r\n ])\r\n ]\r\n})\r\nexport class CollapsibleComponent extends AccessibilityComponent implements OnInit, OnChanges {\r\n\r\n @Input() text: string;\r\n @Input() html: TemplateRef<any>;\r\n @Input() headerText: string;\r\n @Input() headerHtml: string;\r\n @Input() id: string;\r\n @Input() open: boolean;\r\n @Input() classes: string;\r\n\r\n show: string;\r\n\r\n isOpen(): void {\r\n this.open = !this.open;\r\n this.toggleOpen();\r\n }\r\n\r\n toggleOpen(): void {\r\n if (this.open){\r\n this.show = 'Ocultar';\r\n } else {\r\n this.show = 'Mostrar';\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n textOrHtmlRequiredFunction(this.text, this.html);\r\n this.headerTextOrheaderHtmlRequiredFunction(this.headerText, this.headerHtml);\r\n this.toggleOpen();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n textOrHtmlRequiredFunction(this.text, this.html);\r\n this.headerTextOrheaderHtmlRequiredFunction(this.headerText, this.headerHtml);\r\n this.toggleOpen();\r\n\r\n }\r\n\r\n headerTextOrheaderHtmlRequiredFunction(text: string, html: string): void {\r\n if (!html && !text) {\r\n throw new Error(`headerHtml or headerText are required`);\r\n }\r\n }\r\n\r\n}\r\n","import {Component, Input, OnChanges, SimpleChanges, TemplateRef} from '@angular/core';\r\nimport {ContentItemData, DescriptionItemData, IconItemData, TitleItemData} from '../../interfaces/item-data';\r\nimport {AccessibilityComponent} from '../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-item',\r\n templateUrl: './item.component.html'\r\n})\r\nexport class ItemComponent extends AccessibilityComponent implements OnChanges {\r\n\r\n @Input() title: TitleItemData;\r\n @Input() description: DescriptionItemData;\r\n @Input() items: string[];\r\n @Input() content: ContentItemData;\r\n @Input() icon: IconItemData;\r\n @Input() isDraggable: boolean;\r\n @Input() isLocked: boolean;\r\n @Input() id: string;\r\n @Input() classes: string;\r\n @Input() caller: TemplateRef<any>;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.checkRequiredParams();\r\n }\r\n\r\n checkRequiredParams(): void {\r\n if (!this.title) {\r\n throw Error('title is required');\r\n }\r\n if (this.title) {\r\n if (!this.title.text && !this.title.html) {\r\n throw Error('title text or title html is required');\r\n }\r\n }\r\n if (this.description) {\r\n if (!this.description.text && !this.description.html) {\r\n throw Error('description text or description html is required');\r\n }\r\n }\r\n if (this.content) {\r\n if (!this.content.text && !this.content.html) {\r\n throw Error('content text or content html is required');\r\n }\r\n }\r\n }\r\n\r\n}\r\n","import { Component, Input, SimpleChanges, TemplateRef, OnChanges } from '@angular/core';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-media-object',\r\n templateUrl: './media-object.component.html'\r\n})\r\nexport class MediaObjectComponent extends AccessibilityComponent implements OnChanges {\r\n\r\n @Input() figureHtml: string;\r\n @Input() classes: string;\r\n @Input() center: boolean;\r\n @Input() reverse: boolean;\r\n @Input() figureClasses: string;\r\n @Input() contenClasses: string;\r\n\r\n @Input() caller: TemplateRef<any>;\r\n @Input() id: string;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.checkRequiredParams();\r\n }\r\n\r\n checkRequiredParams(): void {\r\n if (!this.figureHtml) {\r\n throw new Error(`figureHtml are required`);\r\n }\r\n }\r\n}\r\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\nimport { StatusIconData } from '../../interfaces/status-icon-data';\r\n\r\n@Component({\r\n selector: 'desy-status',\r\n templateUrl: './status.component.html'\r\n})\r\nexport class StatusComponent extends AccessibilityComponent implements OnChanges {\r\n\r\n @Input() text: string;\r\n @Input() id: string;\r\n @Input() classes: string;\r\n @Input() icon: StatusIconData;\r\n\r\n\r\n getType(): string {\r\n let type: string;\r\n if (this.icon.type){\r\n type = this.icon.type.toLocaleLowerCase();\r\n } else {\r\n type = 'success';\r\n }\r\n return type;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.text){\r\n throw new Error(`title is required`);\r\n }\r\n\r\n if (!this.icon){\r\n throw new Error(`icon is required`);\r\n }\r\n }\r\n}\r\n","import { Component, Input, OnChanges, SimpleChanges, TemplateRef } from '@angular/core';\r\nimport { AccessibilityComponent, textOrHtmlRequiredFunction } from '../../../shared/components';\r\nimport { StatusItemTitleData } from '../../interfaces/status-item-title-data';\r\nimport { ErrorMessageData, HintData } from '../../../desy-forms/interfaces';\r\nimport { StatusData } from '../../interfaces/status-data';\r\nimport { ItemDescriptionData } from '../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-status-item',\r\n templateUrl: './status-item.component.html'\r\n})\r\nexport class StatusItemComponent extends AccessibilityComponent implements OnChanges {\r\n\r\n @Input() id: string;\r\n @Input() classes: string;\r\n\r\n @Input() errorId: string;\r\n @Input() describedBy: string;\r\n\r\n @Input() title: StatusItemTitleData;\r\n @Input() hint: HintData;\r\n @Input() errorMessage: ErrorMessageData;\r\n @Input() items: ItemDescriptionData[];\r\n @Input() status: StatusData;\r\n\r\n @Input() caller: TemplateRef<any>;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.checkRequired();\r\n }\r\n\r\n checkRequired(): void {\r\n if (!this.id){\r\n throw new Error(`id is required`);\r\n }\r\n\r\n if (this.title) {\r\n textOrHtmlRequiredFunction(this.title.text, this.title.html);\r\n }\r\n\r\n if (this.items && this.items.length > 0) {\r\n this.items.forEach(item => {\r\n if (!item.term) {\r\n throw new Error(`item term is required`);\r\n } else {\r\n textOrHtmlRequiredFunction(item.term.text, item.term.html);\r\n }\r\n if (!item.definition) {\r\n throw new Error(`item definition is required`);\r\n } else {\r\n textOrHtmlRequiredFunction(item.definition.text, item.definition.html);\r\n }\r\n });\r\n }\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n Input,\r\n OnChanges,\r\n QueryList,\r\n SimpleChanges,\r\n ViewChildren\r\n} from '@angular/core';\r\nimport { AccessibilityComponent, textOrHtmlRequiredFunction } from '../../../shared/components';\r\nimport { TabsItemsData } from '../../interfaces/tabs-items-data';\r\n\r\n@Component({\r\n selector: 'desy-tabs',\r\n templateUrl: './tabs.component.html'\r\n})\r\nexport class TabsComponent extends AccessibilityComponent implements OnChanges, AfterViewInit {\r\n\r\n @ViewChildren('tabSelector') tabSelectors: QueryList<ElementRef>;\r\n\r\n @Input() id: string;\r\n @Input() idPrefix: string;\r\n @Input() classes: string;\r\n\r\n @Input() title: string;\r\n @Input() tablistAriaLabel: string;\r\n @Input() items: TabsItemsData[];\r\n\r\n currentTab = 0;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.title){\r\n throw new Error(`title is required`);\r\n }\r\n\r\n if (!this.tablistAriaLabel){\r\n throw new Error(`tablistAriaLabel is required`);\r\n }\r\n\r\n if (!this.items){\r\n throw new Error(`items are required`);\r\n } else {\r\n this.items.forEach(element => {\r\n if (!element.id){\r\n throw new Error(`id is required`);\r\n } else {\r\n textOrHtmlRequiredFunction(element.text, element.html);\r\n }\r\n if (!element.panel){\r\n throw new Error(`panel is required`);\r\n } else {\r\n textOrHtmlRequiredFunction(element.panel.text, element.panel.html);\r\n }\r\n });\r\n }\r\n }\r\n\r\n getIdPrefix(): string {\r\n if (this.idPrefix) {\r\n return this.idPrefix;\r\n }\r\n }\r\n\r\n getItemId(index: number): string {\r\n let id;\r\n if (this.items[index].id) {\r\n id = this.items[index].id;\r\n } else {\r\n id = this.getIdPrefix() + '-' + index;\r\n }\r\n return id;\r\n }\r\n\r\n isDisabled(item: TabsItemsData): boolean {\r\n return item.disabled ? true : null;\r\n }\r\n\r\n\r\n selectTab( i: number ): void {\r\n this.currentTab = i;\r\n }\r\n\r\n focusFirstTab(event?): void {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n const enabledTabs = this.tabSelectors.filter((item, index) => !this.items[index].disabled);\r\n enabledTabs[0].nativeElement.focus();\r\n }\r\n\r\n focusLastTab(event?): void {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n const enabledTabs = this.tabSelectors.filter((item, index) => !this.items[index].disabled);\r\n enabledTabs[enabledTabs.length - 1].nativeElement.focus();\r\n }\r\n\r\n focusNextTab(focusedTab: number): void {\r\n let nextTab = (focusedTab + 1) % this.items.length;\r\n while (nextTab !== focusedTab) {\r\n if (!this.items[nextTab].disabled) {\r\n this.tabSelectors.find((item, index) => index === nextTab).nativeElement.focus();\r\n break;\r\n }\r\n nextTab = (nextTab + 1) % this.items.length;\r\n }\r\n }\r\n\r\n focusPreviousTab(focusedTab: number): void {\r\n let previousTab = (focusedTab - 1 + this.items.length) % this.items.length;\r\n while (previousTab !== focusedTab) {\r\n if (!this.items[previousTab].disabled) {\r\n this.tabSelectors.find((item, index) => index === previousTab).nativeElement.focus();\r\n break;\r\n }\r\n previousTab = (previousTab - 1 + this.items.length) % this.items.length;\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => this.selectTab(this.items.findIndex(value => !value.disabled)));\r\n }\r\n\r\n}\r\n\r\n\r\n","import {\r\n ComponentFactoryResolver, ComponentRef,\r\n Injectable,\r\n TemplateRef, Type\r\n} from '@angular/core';\r\nimport { AlertOptions } from '../interfaces/alert-options';\r\nimport { OpenAlertResult } from '../interfaces/open-alert-result';\r\nimport { AlertComponent } from '../components/alert/alert.component';\r\nimport { NotificationComponent } from '../../desy-nav/components/notification/notification.component';\r\nimport { NotificationOptions } from '../../desy-nav/interfaces/notification-options';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AlertService {\r\n\r\n constructor(private factoryResolver: ComponentFactoryResolver) { }\r\n\r\n public openAlert(caller: TemplateRef<any>|NotificationOptions, alertOptions: AlertOptions): Promise<OpenAlertResult> {\r\n return new Promise<OpenAlertResult>((resolve, reject) => {\r\n\r\n if (!caller) {\r\n reject('caller is required');\r\n }\r\n\r\n if (!alertOptions) {\r\n reject('alertOptions is required');\r\n }\r\n\r\n const alert = this.createAlert(alertOptions);\r\n const result: OpenAlertResult = {\r\n alert\r\n };\r\n\r\n\r\n if (caller instanceof TemplateRef) {\r\n alert.instance.caller = caller;\r\n resolve(result);\r\n } else {\r\n alert.instance.callerType = NotificationComponent;\r\n alert.instance.onCallerCreationCallback = (d, c) => {\r\n this.initNotification(d, c, caller);\r\n result.component = c;\r\n resolve(result);\r\n };\r\n }\r\n });\r\n }\r\n\r\n public closeAlert(alert: ComponentRef<AlertComponent>|AlertComponent): void {\r\n\r\n if (!alert) {\r\n throw Error('alert is required');\r\n }\r\n\r\n if (alert instanceof ComponentRef) {\r\n alert.instance.dismiss();\r\n } else {\r\n alert.dismiss();\r\n }\r\n }\r\n\r\n public onCloseAlert(alert: ComponentRef<AlertComponent>|AlertComponent): Promise<void> {\r\n return new Promise<void>((resolve => {\r\n let a;\r\n if (alert instanceof ComponentRef) {\r\n a = alert.instance;\r\n } else {\r\n a = alert;\r\n }\r\n\r\n const subscription = a.activeChange.subscribe(() => {\r\n resolve();\r\n subscription.unsubscribe();\r\n });\r\n }));\r\n }\r\n\r\n\r\n private createAlert(alertOptions: AlertOptions): ComponentRef<AlertComponent> {\r\n const factory = this.factoryResolver.resolveComponentFactory(AlertComponent);\r\n const alert = alertOptions.place.createComponent<AlertComponent>(factory);\r\n\r\n alert.instance.active = true;\r\n if (alertOptions) {\r\n Object.assign(alert.instance, alertOptions);\r\n }\r\n\r\n this.onCloseAlert(alert).then(() => alert.destroy());\r\n\r\n return alert;\r\n }\r\n\r\n private initNotification(alert: AlertComponent, notificationRef: ComponentRef<NotificationComponent>,\r\n options: NotificationOptions): void {\r\n Object.assign(notificationRef.instance, options);\r\n if (options.isDismissible) {\r\n const subscription = notificationRef.instance.isOpenChange.subscribe(() => {\r\n this.closeAlert(alert);\r\n subscription.unsubscribe();\r\n });\r\n }\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\nimport { PaginationItemData } from '../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-pagination',\r\n templateUrl: './pagination.component.html'\r\n})\r\nexport class PaginationComponent extends AccessibilityComponent implements OnChanges{\r\n\r\n @Input() hasSelect: boolean;\r\n @Input() idPrefix: string;\r\n @Input() classesContainer: string;\r\n @Input() totalItems: number;\r\n @Input() itemsPerPage: number;\r\n @Input() hasPrevious: boolean;\r\n @Input() hasNext: boolean;\r\n @Input() previousText: string;\r\n @Input() nextText: string;\r\n @Input() classes: string;\r\n @Input() id: string;\r\n\r\n @Input() currentPage = 1;\r\n @Output() currentPageChange = new EventEmitter<number>();\r\n\r\n nPages: number;\r\n items: PaginationItemData[];\r\n\r\n prefix = '<span class=\"sr-only\">Página</span>';\r\n suffix = '<span class=\"sr-only\">(resultados del ' + this.getInitPosition() + ' al ' + this.getMaxPosition() + ')</span>';\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.totalItems) {\r\n throw new Error(`totalItems are required`);\r\n }\r\n if (!this.itemsPerPage) {\r\n throw new Error(`itemsPerPage are required`);\r\n }\r\n\r\n if (!this.currentPage) {\r\n this.currentPage = 1;\r\n this.currentPageChange.emit(this.currentPage);\r\n }\r\n\r\n this.nPages = Math.ceil(this.totalItems / this.itemsPerPage);\r\n this.buildPages();\r\n }\r\n\r\n buildPages(): void {\r\n this.items = [];\r\n for (let i = 0; i < this.nPages; i++) {\r\n const item: PaginationItemData = { text: i + 1, active: ( (i + 1) === this.currentPage), routerLink: [] };\r\n this.items.push(item);\r\n }\r\n }\r\n\r\n getHtmlButton(index: number, active: boolean): string{\r\n if (active){\r\n return this.prefix + '<strong>' + (index + 1) + '</strong>' + this.suffix;\r\n } else {\r\n return this.prefix + (index + 1) + this.suffix;\r\n }\r\n }\r\n\r\n getHtmlButtonPrevius(): string{\r\n const arrow = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"self-center h-2.5 w-2.5 mr-2\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M54.87 71.77a2.5 2.5 0 010-3.54L106 17.07A10 10 0 1091.89 2.93L35.43 59.39a15 15 0 000 21.22l56.46 56.46A10 10 0 10106 122.93z\" fill=\"currentColor\" /></svg>';\r\n if (this.previousText){\r\n return arrow + ' ' + this.previousText;\r\n }else{\r\n return arrow;\r\n }\r\n }\r\n\r\n getHtmlButtonNext(): string{\r\n const arrow = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"self-center h-2.5 w-2.5 ml-2\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M34 137.07a10 10 0 010-14.14l51.13-51.16a2.5 2.5 0 000-3.54L34 17.07A10 10 0 0148.11 2.93l56.46 56.46a15 15 0 010 21.22l-56.46 56.46a10 10 0 01-14.11 0z\" fill=\"currentColor\" /></svg>';\r\n if (this.nextText){\r\n return this.nextText + ' ' + arrow;\r\n }else{\r\n return arrow;\r\n }\r\n }\r\n\r\n getDropdownText(): string {\r\n return 'Página ' + this.currentPage;\r\n }\r\n\r\n getId( index: number): string {\r\n if (index === 0) {\r\n return this.getIdPrefix();\r\n } else {\r\n return this.getIdPrefix() + '-' + index;\r\n }\r\n }\r\n\r\n getIdPrevius(): string {\r\n return this.getIdPrefix() + '-previous';\r\n }\r\n\r\n getIdNext(): string {\r\n return this.getIdPrefix() + '-next';\r\n }\r\n\r\n getIdPrefix(): string {\r\n return this.idPrefix ? this.idPrefix : 'pagination-item';\r\n }\r\n\r\n changePage(current: number): void{\r\n this.currentPage = current;\r\n this.currentPageChange.emit(this.currentPage);\r\n for (let i = 0; i < this.items.length; i++) {\r\n const item = this.items[i];\r\n item.active = ((i + 1) === this.currentPage);\r\n }\r\n }\r\n\r\n\r\n getClass(): string {\r\n const classInit = 'flex items-center flex-1 mb-base lg:mb-0 text-sm';\r\n if (this.classes) {\r\n return (classInit + ' ' + this.classes);\r\n }else {\r\n return classInit;\r\n }\r\n }\r\n\r\n\r\n previous(): void {\r\n if (this.currentPage > 1) {\r\n this.changePage(this.currentPage - 1);\r\n }\r\n }\r\n\r\n next(): void {\r\n if (this.currentPage < this.nPages) {\r\n this.changePage(this.currentPage + 1);\r\n }\r\n }\r\n\r\n getInitPosition(page?: number): number{\r\n if (page == null) {\r\n page = this.currentPage;\r\n }\r\n return ((this.itemsPerPage * page) - (this.itemsPerPage - 1));\r\n }\r\n\r\n getMaxPosition(page?: number): number {\r\n if (page == null) {\r\n page = this.currentPage;\r\n }\r\n return (this.itemsPerPage * page < this.totalItems ? this.itemsPerPage * page : this.totalItems);\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform, SecurityContext } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n name: 'innerHtml'\r\n})\r\nexport class InnerHtmlPipe implements PipeTransform {\r\n\r\n constructor(private sanitizer: DomSanitizer) { }\r\n\r\n transform(value: string): SafeHtml {\r\n return this.sanitizer.sanitize(SecurityContext.HTML, value);\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'makeHtmlList'\r\n})\r\nexport class MakeHtmlListPipe implements PipeTransform {\r\n\r\n transform(classes: string[], valueForEmpty?: string): string|null {\r\n let filteredList = classes.filter(c => c).join(' ');\r\n if (filteredList.length === 0 && valueForEmpty) {\r\n filteredList = valueForEmpty;\r\n }\r\n return filteredList;\r\n }\r\n}\r\n","import {Directive, ElementRef, Input, OnChanges, SimpleChanges} from '@angular/core';\r\n@Directive({\r\n selector: '[desyInnerContent]'\r\n})\r\nexport class InnerContentDirective implements OnChanges {\r\n\r\n @Input('desyInnerContent') content: string;\r\n @Input() isHtml: boolean;\r\n\r\n constructor(private el: ElementRef) { }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (this.content) {\r\n if (this.isHtml) {\r\n this.el.nativeElement.innerHTML = this.content;\r\n } else {\r\n this.el.nativeElement.innerText = this.content;\r\n }\r\n } else {\r\n this.el.nativeElement.innerText = null;\r\n }\r\n }\r\n\r\n}\r\n","import { Directive, ElementRef, EventEmitter, HostListener, Input, Output } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[desyClickOutside]'\r\n})\r\nexport class ClickOutsideDirective {\r\n\r\n @Input('desyClickOutside') active = true;\r\n @Output() clickOutside = new EventEmitter<void>();\r\n @Input() desyClickOutsideElem: Element;\r\n\r\n constructor(private hostElementRef: ElementRef) { }\r\n\r\n @HostListener('document:click', ['$event.target'])\r\n public onClick(target): void {\r\n let clickedInside;\r\n if (this.desyClickOutsideElem) {\r\n clickedInside = this.desyClickOutsideElem.contains(target);\r\n } else {\r\n clickedInside = (this.hostElementRef.nativeElement as Element).contains(target);\r\n }\r\n if (!clickedInside && this.active) {\r\n this.clickOutside.emit();\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\n\r\n// components\r\nimport {\r\n AccessibilityComponent,\r\n TextOrHtmlRequiredComponent,\r\n AccessibilityAndTextOrHtmlRequiredComponent\r\n} from './components';\r\n\r\n// pipes\r\nimport { InnerHtmlPipe } from './pipes/inner-html.pipe';\r\nimport { MakeHtmlListPipe } from './pipes/make-html-list.pipe';\r\n\r\n// directives\r\nimport { InnerContentDirective } from './directives/inner-content.directive';\r\nimport { ClickOutsideDirective } from './directives/click-outside.directive';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n // components\r\n AccessibilityComponent,\r\n TextOrHtmlRequiredComponent,\r\n AccessibilityAndTextOrHtmlRequiredComponent,\r\n\r\n // pipes\r\n InnerHtmlPipe,\r\n MakeHtmlListPipe,\r\n\r\n // directives\r\n InnerContentDirective,\r\n ClickOutsideDirective\r\n ],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [\r\n RouterModule,\r\n\r\n // components\r\n AccessibilityComponent,\r\n TextOrHtmlRequiredComponent,\r\n AccessibilityAndTextOrHtmlRequiredComponent,\r\n\r\n // pipes\r\n InnerHtmlPipe,\r\n MakeHtmlListPipe,\r\n\r\n // directives\r\n InnerContentDirective,\r\n ClickOutsideDirective\r\n ]\r\n})\r\nexport class SharedModule { }\r\n","import { Component } from '@angular/core';\r\nimport { ControlContainer, NgForm } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'desy-template-driven-wrapper',\r\n templateUrl: './template-driven-wrapper.component.html',\r\n providers: [ { provide: ControlContainer, useExisting: NgForm, } ]\r\n})\r\nexport class TemplateDrivenWrapperComponent {\r\n}\r\n","import { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges, TemplateRef } from '@angular/core';\r\nimport { AccessibilityComponent, textOrHtmlRequiredFunction } from '../../../../shared/components';\r\nimport { HintData, LabelData } from '../../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-item-radio',\r\n templateUrl: './item-radio.component.html',\r\n animations: [\r\n trigger('displayConditional', [\r\n state('void', style({\r\n opacity: '0.0',\r\n transform: 'scale(0.95)'\r\n })),\r\n state('*', style({\r\n opacity: '1.0',\r\n transform: 'scale(1.0)'\r\n })),\r\n transition(':enter', [\r\n animate('100ms ease-out')\r\n ]),\r\n ])\r\n ]\r\n})\r\nexport class ItemRadioComponent extends AccessibilityComponent implements OnChanges {\r\n\r\n // radios\r\n @Input() hasDividers: boolean;\r\n @Input() nameRadios: string;\r\n @Input() hasError: boolean;\r\n @Input() idPrefix: string;\r\n @Input() index: number;\r\n\r\n // item radio\r\n @Input() id: string;\r\n @Input() disabled: boolean;\r\n @Input() text: string;\r\n @Input() html: string;\r\n @Input() value: any;\r\n @Input() divider: string;\r\n @Input() checked = false;\r\n @Input() conditional: boolean;\r\n @Input() conditionalHtml: TemplateRef<any>;\r\n @Input() classes: string;\r\n\r\n @Input() labelData: LabelData; // solo se recoge class y atributes\r\n\r\n /**\r\n * hint, diferentes formas de implementar, enumeradas por prioridad\r\n * 1) incluir objeto label (interfaz expuesta)\r\n * 2) incluir hintText - incluir un hint con solo un texto\r\n */\r\n @Input() hintData: HintData;\r\n @Input() hintText: string;\r\n\r\n @Output() check: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.checkRequired();\r\n }\r\n\r\n checkRequired(): void {\r\n if (!this.divider){\r\n textOrHtmlRequiredFunction(this.text, this.html);\r\n if (!this.value) {\r\n throw Error('value is required');\r\n }\r\n }\r\n }\r\n\r\n getId(): string {\r\n if (this.id) {\r\n return this.id;\r\n } else {\r\n if (this.index === 0){\r\n return this.idPrefix;\r\n } else {\r\n return this.idPrefix + '-' + this.index;\r\n }\r\n }\r\n }\r\n\r\n getConditionalId(): string {\r\n return 'conditional-' + this.getId();\r\n }\r\n\r\n getItemHintId(): string {\r\n return this.getId() + '-item-hint';\r\n }\r\n\r\n hasChanged(): void{\r\n this.check.emit(this.value);\r\n }\r\n\r\n hasHint(): boolean {\r\n return !!(this.hintText || (this.hintData && (this.hintData.text || this.hintData.html)));\r\n }\r\n\r\n}\r\n","import {\r\n AfterViewChecked,\r\n Component, ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n Output,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { AccessibilityComponent, textOrHtmlRequiredFunction } from '../../../../shared/components';\r\nimport { HintData, LabelData } from '../../../interfaces';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\n\r\n@Component({\r\n selector: 'desy-item-checkbox',\r\n templateUrl: './item-checkbox.component.html',\r\n animations: [\r\n trigger('displayConditional', [\r\n state('void', style({\r\n opacity: '0.0',\r\n transform: 'scale(0.95)'\r\n })),\r\n state('*', style({\r\n opacity: '1.0',\r\n transform: 'scale(1.0)'\r\n })),\r\n transition(':enter', [\r\n animate('100ms ease-out')\r\n ])\r\n ])\r\n ]\r\n})\r\nexport class ItemCheckboxComponent extends AccessibilityComponent implements OnChanges, AfterViewChecked {\r\n\r\n @ViewChild('input') inputElement: ElementRef;\r\n\r\n // checkbox\r\n @Input() hasDividers: boolean;\r\n @Input() nameCheckbox: string;\r\n @Input() hasError: boolean;\r\n @Input() idPrefix: string;\r\n @Input() index: number;\r\n @Input() describedBy: string;\r\n\r\n // item checkbox\r\n @Input() id: string;\r\n @Input() disabled: boolean;\r\n @Input() text: string;\r\n @Input() html: string;\r\n @Input() name: string;\r\n @Input() value: any;\r\n @Input() checked: boolean;\r\n @Input() conditional: boolean;\r\n @Input() conditionalHtml: TemplateRef<any>;\r\n @Input() classes: string;\r\n\r\n @Input() labelData: LabelData;\r\n\r\n /**\r\n * hint, diferentes formas de implementar, enumeradas por prioridad\r\n * 1) incluir template\r\n * 2) incluir objeto label (interfaz expuesta)\r\n */\r\n @Input() hintData: HintData;\r\n @Input() hintText: string;\r\n\r\n @Input() isIndeterminate: boolean;\r\n\r\n @Output() check: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.checkRequired();\r\n if (this.inputElement) {\r\n this.inputElement.nativeElement.checked = this.checked;\r\n }\r\n }\r\n\r\n ngAfterViewChecked(): void {\r\n if (this.inputElement) {\r\n this.inputElement.nativeElement.checked = this.checked;\r\n }\r\n }\r\n\r\n checkRequired(): void {\r\n textOrHtmlRequiredFunction(this.text, this.html);\r\n if (!this.value) {\r\n throw Error('value is required');\r\n }\r\n }\r\n\r\n getId(): string {\r\n if (this.id) {\r\n return this.id;\r\n }else {\r\n return this.idPrefix + (this.index > 0 ? '-' + this.index : '');\r\n }\r\n }\r\n\r\n getItemHintId(): string {\r\n return this.hasHint() ? this.getId() + '-item-hint' : null;\r\n }\r\n\r\n hasChanged(): void{\r\n const input = this.inputElement.nativeElement;\r\n if (this.isIndeterminate) {\r\n if (input.readOnly) {\r\n input.checked = false;\r\n input.readOnly = false;\r\n } else if (!input.checked) {\r\n input.readOnly = true;\r\n input.indeterminate = true;\r\n }\r\n }\r\n this.check.emit(input.checked || input.indeterminate ? this.value : null);\r\n }\r\n\r\n hasHint(): boolean {\r\n return !!(this.hintText || (this.hintData && (this.hintData.text || this.hintData.html)));\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { SharedModule } from '../shared/shared.module';\r\n// componentes\r\nimport { TemplateDrivenWrapperComponent } from './components/template-driven-wrapper/template-driven-wrapper.component';\r\nimport { FormFieldComponent } from './components/form-field/form-field.component';\r\nimport { HintComponent } from './components/hint/hint.component';\r\nimport { LabelComponent } from './components/label/label.component';\r\nimport { ErrorMessageComponent } from './components/error-message/error-message.component';\r\nimport { FieldsetComponent } from './components/fieldset/fieldset.component';\r\nimport { LegendComponent } from './components/fieldset/legend/legend.component';\r\nimport { TextareaComponent } from './components/textarea/textarea.component';\r\nimport { CharacterCountComponent } from './components/character-count/character-count.component';\r\nimport { InputComponent } from './components/input/input.component';\r\nimport { SelectComponent } from './components/select/select.component';\r\nimport { FileUploadComponent } from './components/file-upload/file-upload.component';\r\nimport { InputGroupComponent } from './components/input-group/input-group.component';\r\nimport { RadiosComponent } from './components/radios/radios.component';\r\nimport { ItemRadioComponent } from './components/radios/item-radio/item-radio.component';\r\nimport { CheckboxesComponent } from './components/checkboxes/checkboxes.component';\r\nimport { ItemCheckboxComponent } from './components/checkboxes/item-checkbox/item-checkbox.component';\r\nimport { DateInputComponent } from './components/date-input/date-input.component';\r\nimport { SearchBarComponent} from './components/search-bar/search-bar.component';\r\n\r\n// directivas\r\nimport { ConditionDirective } from './directives/condition.directive';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n TemplateDrivenWrapperComponent,\r\n FormFieldComponent,\r\n HintComponent,\r\n LabelComponent,\r\n ErrorMessageComponent,\r\n FieldsetComponent,\r\n LegendComponent,\r\n TextareaComponent,\r\n CharacterCountComponent,\r\n InputComponent,\r\n SelectComponent,\r\n FileUploadComponent,\r\n InputGroupComponent,\r\n RadiosComponent,\r\n ItemRadioComponent,\r\n CheckboxesComponent,\r\n ItemCheckboxComponent,\r\n DateInputComponent,\r\n SearchBarComponent,\r\n\r\n ConditionDirective,\r\n\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n SharedModule\r\n ],\r\n exports: [\r\n HintComponent,\r\n LabelComponent,\r\n ErrorMessageComponent,\r\n FieldsetComponent,\r\n LegendComponent,\r\n TextareaComponent,\r\n CharacterCountComponent,\r\n InputComponent,\r\n SelectComponent,\r\n FileUploadComponent,\r\n InputGroupComponent,\r\n RadiosComponent,\r\n CheckboxesComponent,\r\n DateInputComponent,\r\n SearchBarComponent,\r\n\r\n ConditionDirective\r\n ]\r\n})\r\nexport class DesyFormsModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SharedModule } from '../shared/shared.module';\r\n\r\nimport { AlertComponent } from './components/alert/alert.component';\r\nimport { AccordionComponent } from './components/accordion/accordion.component';\r\nimport { SpinnerComponent } from './components/spinner/spinner.component';\r\nimport { DetailsComponent } from './components/details/details.component';\r\nimport { CollapsibleComponent } from './components/collapsible/collapsible.component';\r\nimport { DescriptionListComponent } from './components/description-list/description-list.component';\r\nimport { ItemComponent } from './components/item/item.component';\r\nimport { MediaObjectComponent } from './components/media-object/media-object.component';\r\nimport { StatusComponent } from './components/status/status.component';\r\nimport { StatusItemComponent } from './components/status-item/status-item.component';\r\nimport { DesyFormsModule } from '../desy-forms/desy-forms.module';\r\nimport { TabsComponent } from './components/tabs/tabs.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n AlertComponent,\r\n AccordionComponent,\r\n SpinnerComponent,\r\n DetailsComponent,\r\n CollapsibleComponent,\r\n DescriptionListComponent,\r\n ItemComponent,\r\n MediaObjectComponent,\r\n\r\n StatusComponent,\r\n StatusItemComponent,\r\n TabsComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n DesyFormsModule,\r\n ],\r\n exports: [\r\n AlertComponent,\r\n AccordionComponent,\r\n SpinnerComponent,\r\n DetailsComponent,\r\n CollapsibleComponent,\r\n DescriptionListComponent,\r\n ItemComponent,\r\n MediaObjectComponent,\r\n StatusComponent,\r\n StatusItemComponent,\r\n TabsComponent,\r\n ]\r\n})\r\nexport class DesyViewsModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DesyViewsModule } from '../desy-views/desy-views.module';\r\nimport { SharedModule } from '../shared/shared.module';\r\n\r\n// componentes\r\nimport { ButtonComponent } from './components/button/button.component';\r\nimport { ButtonLoaderComponent } from './components/button-loader/button-loader.component';\r\nimport { PillComponent } from './components/pill/pill.component';\r\nimport { DropdownComponent } from './components/dropdown/dropdown.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n ButtonComponent,\r\n ButtonLoaderComponent,\r\n DropdownComponent,\r\n PillComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n DesyViewsModule\r\n ],\r\n exports: [\r\n ButtonComponent,\r\n ButtonLoaderComponent,\r\n DropdownComponent,\r\n PillComponent\r\n ]\r\n})\r\nexport class DesyButtonsModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { A11yModule } from '@angular/cdk/a11y';\r\nimport { DesyButtonsModule } from '../desy-buttons/desy-buttons.module';\r\n\r\n// components\r\nimport { ModalComponent } from './components/modal/modal.component';\r\nimport { DialogComponent } from './components/dialog/dialog.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n ModalComponent,\r\n DialogComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n A11yModule,\r\n SharedModule,\r\n DesyButtonsModule\r\n ],\r\n exports: [\r\n ModalComponent,\r\n DialogComponent\r\n ],\r\n})\r\nexport class DesyModalsModule { }\r\n","import { Component, Input } from '@angular/core';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport { NavItemData } from '../../../interfaces';\r\nimport { TextOrHtmlRequiredComponent } from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-header-subnav',\r\n templateUrl: './header-subnav.component.html',\r\n animations: [\r\n trigger('toggleDropdown', [\r\n state('void', style({\r\n opacity: '0.0',\r\n transform: 'scale(0.95)'\r\n })),\r\n state('*', style({\r\n opacity: '1.0',\r\n transform: 'scale(1.0)'\r\n })),\r\n transition(':enter', [\r\n animate('100ms ease-out')\r\n ]),\r\n transition(':leave', [\r\n animate('75ms ease-in')\r\n ])\r\n ])\r\n ]\r\n})\r\nexport class HeaderSubnavComponent extends TextOrHtmlRequiredComponent{\r\n\r\n @Input() items: NavItemData[];\r\n\r\n isOpen = false;\r\n clickOutsideEnabled = false;\r\n\r\n toggleOpen(): void {\r\n this.isOpen = !this.isOpen;\r\n setTimeout(() => this.clickOutsideEnabled = this.isOpen);\r\n }\r\n\r\n onKeydownEscape(): void {\r\n this.isOpen = false;\r\n this.clickOutsideEnabled = false;\r\n document.getElementById('header-subnav-button').focus();\r\n }\r\n\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { HeaderNavigationItemData } from '../../../interfaces/header-navigation-item-data';\r\nimport { AccessibilityComponent } from '../../../../shared/components';\r\nimport { NavigationUtils } from '../../../../shared/utils/navigation-utils';\r\n\r\n@Component({\r\n selector: 'desy-header-navigation',\r\n templateUrl: './header-navigation.component.html'\r\n})\r\nexport class HeaderNavigationComponent extends AccessibilityComponent {\r\n\r\n @Input() idPrefix: string;\r\n @Input() classes: string;\r\n @Input() items: HeaderNavigationItemData[];\r\n\r\n getItemId(item: HeaderNavigationItemData, index: number): string {\r\n const prefix = this.idPrefix ? this.idPrefix : 'header-nav-item';\r\n const suffix = index > 0 ? '-' + index : '';\r\n return item.id ? item.id : prefix + suffix;\r\n }\r\n\r\n\r\n getExternalHref(item: HeaderNavigationItemData): string {\r\n return NavigationUtils.getExternalHref(item.href);\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport { TextOrHtmlRequiredComponent } from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-header-dropdown',\r\n templateUrl: './header-dropdown.component.html',\r\n animations: [\r\n trigger('toggleDropdown', [\r\n state('void', style({\r\n opacity: '0.0',\r\n transform: 'scale(0.95)'\r\n })),\r\n state('*', style({\r\n opacity: '1.0',\r\n transform: 'scale(1.0)'\r\n })),\r\n transition(':enter', [\r\n animate('100ms ease-out')\r\n ]),\r\n transition(':leave', [\r\n animate('75ms ease-in')\r\n ])\r\n ])\r\n ]\r\n})\r\nexport class HeaderDropdownComponent extends TextOrHtmlRequiredComponent {\r\n\r\n isOpen = false;\r\n clickOutsideEnabled = false;\r\n\r\n toggleOpen(): void {\r\n this.isOpen = !this.isOpen;\r\n setTimeout(() => this.clickOutsideEnabled = this.isOpen);\r\n }\r\n\r\n onKeydownEscape(): void {\r\n this.isOpen = false;\r\n this.clickOutsideEnabled = false;\r\n document.getElementById('header-dropdown-button').focus();\r\n }\r\n}\r\n","import {\r\n Component,\r\n ComponentRef,\r\n HostBinding,\r\n Input,\r\n OnChanges,\r\n SimpleChanges,\r\n TemplateRef\r\n} from '@angular/core';\r\nimport { DialogService } from '../../../../desy-modals/services/dialog.service';\r\nimport { DialogOptions } from '../../../../desy-modals/interfaces';\r\nimport { DialogComponent } from '../../../../desy-modals/components/dialog/dialog.component';\r\nimport { TextOrHtmlRequiredComponent } from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-header-offcanvas-button',\r\n templateUrl: './header-offcanvas-button.component.html'\r\n})\r\nexport class HeaderOffcanvasButtonComponent extends TextOrHtmlRequiredComponent implements OnChanges {\r\n\r\n @Input() classes: string;\r\n\r\n @Input() offcanvasText: string;\r\n @Input() offcanvasLabelledId: string;\r\n @Input() offcanvasContentHtml: TemplateRef<any>;\r\n\r\n private dialogOptions: DialogOptions = {\r\n id: 'header-offcanvas-dialog',\r\n focusOnClose: 'header-offcanvas',\r\n ariaModal: 'true'\r\n };\r\n\r\n dialog: ComponentRef<DialogComponent>;\r\n\r\n @HostBinding('class') class;\r\n\r\n constructor(private dialogService: DialogService) {\r\n super();\r\n }\r\n\r\n async openDialog(offcanvas: TemplateRef<any>): Promise<void> {\r\n if (!this.dialog) {\r\n this.dialogOptions.ariaLabelledBy = this.offcanvasLabelledId;\r\n this.dialog = (await this.dialogService.openDialog(offcanvas, this.dialogOptions)).dialog;\r\n this.dialogService.onCloseDialog(this.dialog).then(() => this.dialog = null);\r\n }\r\n }\r\n\r\n closeDialog(): void {\r\n if (this.dialog) {\r\n this.dialogService.closeDialog(this.dialog);\r\n this.dialog = null;\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.checkRequiredParams();\r\n this.class = this.classes ? this.classes : '-mr-2 flex lg:hidden';\r\n }\r\n\r\n private checkRequiredParams(): void {\r\n if (!this.offcanvasText) {\r\n throw new Error(`offcanvasText is required`);\r\n }\r\n if (!this.offcanvasLabelledId) {\r\n throw new Error(`offcanvasLabelledId is required`);\r\n }\r\n if (!this.offcanvasContentHtml) {\r\n throw new Error(`offcanvasContentHtml is required`);\r\n }\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output, TemplateRef } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'desy-header-offcanvas',\r\n templateUrl: './header-offcanvas.component.html'\r\n})\r\nexport class HeaderOffcanvasComponent implements OnInit {\r\n\r\n @Input() text: string;\r\n @Input() labelledId: string;\r\n @Input() contentHtml: TemplateRef<any>;\r\n\r\n @Output() closeDialog = new EventEmitter();\r\n\r\n clickOutsideEnabled = false;\r\n\r\n ngOnInit(): void {\r\n setTimeout(() => this.clickOutsideEnabled = true);\r\n }\r\n\r\n onCloseDialog(): void {\r\n this.closeDialog.emit();\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SharedModule } from '../shared/shared.module';\r\n\r\nimport { BreadcrumbsComponent } from './components/breadcrumbs/breadcrumbs.component';\r\nimport { ErrorSummaryComponent } from './components/error-summary/error-summary.component';\r\nimport { MenuHorizontalComponent } from './components/menu-horizontal/menu-horizontal.component';\r\nimport { NavComponent } from './components/nav/nav.component';\r\nimport { MenuVerticalComponent } from './components/menu-vertical/menu-vertical.component';\r\nimport { SkipLinkComponent } from './components/skip-link/skip-link.component';\r\nimport { HeaderComponent } from './components/header/header.component';\r\nimport { HeaderSubnavComponent } from './components/header/header-subnav/header-subnav.component';\r\nimport { HeaderNavigationComponent } from './components/header/header-navigation/header-navigation.component';\r\nimport { HeaderDropdownComponent } from './components/header/header-dropdown/header-dropdown.component';\r\nimport { HeaderOffcanvasButtonComponent } from './components/header/header-offcanvas-button/header-offcanvas-button.component';\r\nimport { HeaderOffcanvasComponent } from './components/header/header-offcanvas/header-offcanvas.component';\r\nimport { NotificationComponent } from './components/notification/notification.component';\r\nimport { FooterComponent } from \"./components/footer/footer.component\";\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n BreadcrumbsComponent,\r\n ErrorSummaryComponent,\r\n HeaderComponent,\r\n HeaderSubnavComponent,\r\n HeaderNavigationComponent,\r\n HeaderDropdownComponent,\r\n HeaderOffcanvasButtonComponent,\r\n HeaderOffcanvasComponent,\r\n MenuHorizontalComponent,\r\n NavComponent,\r\n SkipLinkComponent,\r\n NotificationComponent,\r\n FooterComponent,\r\n MenuVerticalComponent,\r\n SkipLinkComponent,\r\n NotificationComponent,\r\n\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule\r\n ],\r\n exports: [\r\n BreadcrumbsComponent,\r\n ErrorSummaryComponent,\r\n HeaderComponent,\r\n MenuHorizontalComponent,\r\n NavComponent,\r\n MenuVerticalComponent,\r\n SkipLinkComponent,\r\n NotificationComponent,\r\n FooterComponent,\r\n ]\r\n})\r\nexport class DesyNavModule { }\r\n","import { Directive, ElementRef, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[desyFocusClickedCell]'\r\n})\r\nexport class FocusClickedCellDirective {\r\n\r\n constructor(private el: ElementRef) {}\r\n\r\n @HostListener('click')\r\n onClick(): void {\r\n const hostElem = this.el.nativeElement; // la tabla - offsetParent\r\n const elemntsFocus = hostElem.offsetParent.querySelectorAll('[tabindex]'); // buscamos todos que pueden tener tabindex\r\n for (const iterator of elemntsFocus) {\r\n iterator.setAttribute('tabindex', '-1'); // se les quita\r\n }\r\n this.activeTabindex();\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n manageArrows(event): void {\r\n if (event.code === 'ArrowDown' || event.code === 'ArrowUp' || event.code === 'ArrowRight' || event.code === 'ArrowLeft'){\r\n let next = null;\r\n if (event.code === 'ArrowDown' || event.code === 'ArrowUp'){\r\n let tr = null;\r\n if (event.code === 'ArrowDown') {\r\n tr = this.el.nativeElement.parentNode.nextElementSibling;\r\n } else if (event.code === 'ArrowUp') {\r\n tr = this.el.nativeElement.parentNode.previousElementSibling;\r\n }\r\n next = tr.children[this.findIndex()];\r\n }\r\n if (event.code === 'ArrowRight' || event.code === 'ArrowLeft') {\r\n if (event.code === 'ArrowRight') {\r\n next = this.el.nativeElement.nextElementSibling;\r\n } else if (event.code === 'ArrowLeft') {\r\n next = this.el.nativeElement.previousElementSibling;\r\n }\r\n }\r\n\r\n if (next && next.getAttribute('tabindex')){\r\n this.inactiveTabindex();\r\n next.setAttribute('tabindex', '0');\r\n next.focus();\r\n }\r\n }\r\n }\r\n\r\n activeTabindex(): void {\r\n this.el.nativeElement.setAttribute('tabindex', '0');\r\n }\r\n\r\n inactiveTabindex(): void {\r\n this.el.nativeElement.setAttribute('tabindex', '-1');\r\n }\r\n\r\n findIndex(): number {\r\n const mynode = this.el.nativeElement;\r\n const parentNode = this.el.nativeElement.parentNode;\r\n let index = -1;\r\n for (let i = 0; i < parentNode.children.length; i++) {\r\n const otherNode = parentNode.children[i];\r\n if (mynode.isEqualNode(otherNode)){\r\n index = i;\r\n break;\r\n }\r\n }\r\n return index;\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { A11yModule } from '@angular/cdk/a11y';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { DesyFormsModule } from '../desy-forms/desy-forms.module';\r\n\r\nimport { TableComponent } from './components/table/table.component';\r\nimport { TableAdvancedComponent } from './components/table-advanced/table-advanced.component';\r\nimport { FocusClickedCellDirective } from './directives/focus-clicked-cell.directive';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n TableComponent,\r\n TableAdvancedComponent,\r\n FocusClickedCellDirective\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n A11yModule,\r\n SharedModule,\r\n DesyFormsModule\r\n ],\r\n exports: [\r\n TableComponent,\r\n TableAdvancedComponent\r\n ]\r\n})\r\nexport class DesyTablesModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { DesyNavModule } from '../desy-nav/desy-nav.module';\r\nimport { DesyButtonsModule } from '../desy-buttons/desy-buttons.module';\r\n\r\nimport { PaginationComponent } from './components/pagination/pagination.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n PaginationComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n DesyNavModule,\r\n DesyButtonsModule\r\n ],\r\n exports: [\r\n PaginationComponent\r\n ]\r\n})\r\nexport class DesyPaginationModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\n\r\nimport { DesyButtonsModule } from './desy-buttons/desy-buttons.module';\r\nimport { DesyFormsModule } from './desy-forms/desy-forms.module';\r\nimport { DesyModalsModule } from './desy-modals/desy-modals.module';\r\nimport { DesyNavModule } from './desy-nav/desy-nav.module';\r\nimport { DesyTablesModule } from './desy-tables/desy-tables.module';\r\nimport { DesyViewsModule } from './desy-views/desy-views.module';\r\nimport { DesyPaginationModule } from './desy-pagination/desy-pagination.module';\r\n\r\n@NgModule({\r\n imports: [\r\n BrowserAnimationsModule,\r\n DesyButtonsModule,\r\n DesyFormsModule,\r\n DesyModalsModule,\r\n DesyNavModule,\r\n DesyTablesModule,\r\n DesyViewsModule,\r\n DesyPaginationModule,\r\n ],\r\n exports: [\r\n DesyButtonsModule,\r\n DesyFormsModule,\r\n DesyModalsModule,\r\n DesyNavModule,\r\n DesyTablesModule,\r\n DesyViewsModule,\r\n DesyPaginationModule,\r\n ]\r\n})\r\nexport class DesyAngularModule { }\r\n"]}
1
+ {"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","../../../projects/desy-angular/src/lib/shared/components/accessibility/accessibility.component.ts","../../../projects/desy-angular/src/lib/shared/components/content-base/content-base.component.ts","../../../projects/desy-angular/src/lib/shared/components/text-or-html-required/text-or-html-required.component.ts","../../../projects/desy-angular/src/lib/shared/components/accessibility-and-text-or-html-required/accessibility-and-text-or-html-required.component.ts","../../../projects/desy-angular/src/lib/shared/components/accessibility-and-content-required/accessibility-and-content-required.component.ts","../../../projects/desy-angular/src/lib/desy-buttons/components/button/button.component.ts","../../../projects/desy-angular/src/lib/desy-buttons/components/button-loader/button-loader.component.ts","../../../projects/desy-angular/src/lib/shared/utils/focus-utils.ts","../../../projects/desy-angular/src/lib/desy-buttons/components/dropdown/dropdown.component.ts","../../../projects/desy-angular/src/lib/shared/utils/string-utils.ts","../../../projects/desy-angular/src/lib/desy-buttons/components/listbox/listbox-label/listbox-label.component.ts","../../../projects/desy-angular/src/lib/desy-buttons/components/listbox/listbox-item/listbox-item.component.ts","../../../projects/desy-angular/src/lib/shared/decorators/desy-content-child.decorator.ts","../../../projects/desy-angular/src/lib/desy-buttons/components/listbox/listbox.component.ts","../../../projects/desy-angular/src/lib/desy-buttons/components/pill/pill.component.ts","../../../projects/desy-angular/src/lib/desy-commons/components/content/content.component.ts","../../../projects/desy-angular/src/lib/desy-commons/components/description/description.component.ts","../../../projects/desy-angular/src/lib/desy-commons/components/icon/icon.component.ts","../../../projects/desy-angular/src/lib/desy-commons/components/title/title.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/hint/hint.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/label/label.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/error-message/error-message.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/fieldset/legend/legend.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/fieldset/fieldset.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/form-field/form-field.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/textarea/textarea.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/character-count/character-count.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/input/input.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/select/select-item/select-item.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/select/option/option.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/select/option-group/option-group.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/select/select.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/file-upload/file-upload.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/input-group/input-group-item/input-group-item.component.ts","../../../projects/desy-angular/src/lib/shared/decorators/desy-on-input-change.decorator.ts","../../../projects/desy-angular/src/lib/shared/pipes/make-html-list.pipe.ts","../../../projects/desy-angular/src/lib/desy-forms/components/input-group/input-group-input/input-group-input.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/input-group/input-group-select/input-group-select.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/input-group/input-group-divider/input-group-divider.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/input-group/input-group.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/radios/radio-item/radio-item.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/radios/radios.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/checkboxes/checkbox-item/checkbox-item.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/checkboxes/checkboxes.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/date-input/date-input-item/date-input-item.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/date-input/date-input-day/date-input-day.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/date-input/date-input-month/date-input-month.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/date-input/date-input-year/date-input-year.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/date-input/date-input-divider/date-input-divider.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/date-input/date-input.component.ts","../../../projects/desy-angular/src/lib/desy-forms/components/search-bar/search-bar.component.ts","../../../projects/desy-angular/src/lib/desy-forms/directives/condition.directive.ts","../../../projects/desy-angular/src/lib/desy-modals/components/modal/modal-button-primary/modal-button-primary.component.ts","../../../projects/desy-angular/src/lib/desy-modals/components/modal/modal-button-secondary/modal-button-secondary.component.ts","../../../projects/desy-angular/src/lib/desy-modals/components/modal/modal.component.ts","../../../projects/desy-angular/src/lib/desy-modals/components/dialog/dialog.component.ts","../../../projects/desy-angular/src/lib/desy-modals/services/dialog.service.ts","../../../projects/desy-angular/src/lib/desy-nav/components/breadcrumbs/breadcrumbs-item/breadcrumbs-item.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/breadcrumbs/breadcrumbs.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-close-button/header-offcanvas-close-button.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-button/header-offcanvas-button.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/header/header-offcanvas/header-offcanvas.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/header/header-navigation/header-navigation-item/header-navigation-item.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/header/header-navigation/header-navigation.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/nav/nav-item/nav-item.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/nav/nav.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/header/header-subnav/header-subnav.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/header/header-dropdown/header-dropdown.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/skip-link/skip-link.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/header/header.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/footer/footer-navigation/footer-navigation-item/footer-navigation-item.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/footer/footer-navigation/footer-navigation.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/footer/footer-meta/footer-meta-item/footer-meta-item.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/footer/footer-meta/footer-meta.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/footer/footer.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/error-summary/error-summary-item/error-summary-item.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/error-summary/error-summary.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menu-horizontal/menu-horizontal-item/menu-horizontal-item.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menu-horizontal/menu-horizontal.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub-item/menu-vertical-item-sub-item.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub/menu-vertical-item-sub.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menu-vertical/menu-vertical-item/menu-vertical-item.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menu-vertical/menu-vertical.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menubar/directives/menubaritem.directive.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menubar/components/menubar-subsubitem/menubar-subsubitem.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menubar/components/menubar-subitem/menubar-subitem.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menubar/components/menubar-item/menubar-item.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menubar/components/menubar-label/menubar-label.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/menubar/menubar.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/notification/notification-item/notification-item.component.ts","../../../projects/desy-angular/src/lib/desy-nav/components/notification/notification.component.ts","../../../projects/desy-angular/src/lib/desy-tables/components/table/components/table-cell.component.ts","../../../projects/desy-angular/src/lib/desy-tables/components/table/components/table-header.component.ts","../../../projects/desy-angular/src/lib/desy-tables/components/table/components/table-caption.component.ts","../../../projects/desy-angular/src/lib/desy-tables/components/table/components/table-row.component.ts","../../../projects/desy-angular/src/lib/desy-tables/components/table/table.component.ts","../../../projects/desy-angular/src/lib/shared/utils/search-utils.ts","../../../projects/desy-angular/src/lib/desy-tables/interfaces/head-cell-data.ts","../../../projects/desy-angular/src/lib/desy-tables/components/table-advanced/components/table-advanced-header-cell.component.ts","../../../projects/desy-angular/src/lib/desy-tables/components/table-advanced/components/table-advanced-header.component.ts","../../../projects/desy-angular/src/lib/desy-tables/components/table-advanced/components/table-advanced-row-cell.component.ts","../../../projects/desy-angular/src/lib/desy-tables/components/table-advanced/components/table-advanced-row.component.ts","../../../projects/desy-angular/src/lib/desy-tables/directives/cell.directive.ts","../../../projects/desy-angular/src/lib/desy-tables/directives/row.directive.ts","../../../projects/desy-angular/src/lib/desy-tables/components/table-advanced/table-advanced.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/alert/alert.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/accordion/accordion-header/accordion-header.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/accordion/accordion-item/accordion-item.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/accordion/accordion.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/spinner/spinner.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/details/details.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/description-list/term/term.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/description-list/definition/definition.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/description-list/description-item/description-item.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/description-list/description-list.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/collapsible/collapsible.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/item/item-content-right/item-content-right.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/item/item-content-bottom/item-content-bottom.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/item/item-item/item-item.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/item/item.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/media-object/media-object.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/status/status.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/status-item/status-item.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/tabs/panel/panel.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/tabs/tab-item/tab-item.component.ts","../../../projects/desy-angular/src/lib/desy-views/components/tabs/tabs.component.ts","../../../projects/desy-angular/src/lib/desy-views/services/alert.service.ts","../../../projects/desy-angular/src/lib/desy-views/components/tooltip/tooltip-content/tooltip-content.component.ts","../../../projects/desy-angular/src/lib/desy-pagination/components/pagination/pagination.component.ts","../../../projects/desy-angular/src/lib/shared/pipes/inner-html.pipe.ts","../../../projects/desy-angular/src/lib/shared/pipes/external-href.pipe.ts","../../../projects/desy-angular/src/lib/shared/directives/attribute-change.directive.ts","../../../projects/desy-angular/src/lib/shared/directives/inner-content.directive.ts","../../../projects/desy-angular/src/lib/shared/directives/click-outside.directive.ts","../../../projects/desy-angular/src/lib/shared/directives/content-change.directive.ts","../../../projects/desy-angular/src/lib/shared/directives/content-empty.directive.ts","../../../projects/desy-angular/src/lib/shared/directives/custom-inner-content.directive.ts","../../../projects/desy-angular/src/lib/shared/shared.module.ts","../../../projects/desy-angular/src/lib/desy-forms/components/template-driven-wrapper/template-driven-wrapper.component.ts","../../../projects/desy-angular/src/lib/desy-commons/desy-commons.module.ts","../../../projects/desy-angular/src/lib/desy-forms/desy-forms.module.ts","../../../projects/desy-angular/src/lib/desy-views/components/tooltip/tooltip.component.ts","../../../projects/desy-angular/src/lib/desy-views/desy-views.module.ts","../../../projects/desy-angular/src/lib/desy-buttons/desy-buttons.module.ts","../../../projects/desy-angular/src/lib/desy-modals/desy-modals.module.ts","../../../projects/desy-angular/src/lib/desy-nav/desy-nav.module.ts","../../../projects/desy-angular/src/lib/desy-tables/directives/focus-clicked-cell.directive.ts","../../../projects/desy-angular/src/lib/desy-tables/desy-tables.module.ts","../../../projects/desy-angular/src/lib/desy-pagination/desy-pagination.module.ts","../../../projects/desy-angular/src/lib/desy-angular.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","n","v","op","pop","push","__values","o","s","m","__read","ar","error","__spread","concat","Component","args","selector","template","Input","ContentBaseComponent","_super","getContent","content","AccessibilityComponent","ViewChild","static","TextOrHtmlRequiredComponent","ngOnChanges","changes","textOrHtmlRequiredFunction","text","html","Error","AccessibilityAndTextOrHtmlRequiredComponent","ButtonComponent","_this","hostTabIndex","clickEvent","EventEmitter","avoidingDoubleClick","onClick","event","preventDoubleClick","preventDefault","emit","setTimeout","getElement","element","toLocaleLowerCase","href","ELEMENT_A","ELEMENT_BUTTON","getClassNames","classNames","classes","disabled","isDisabled","ELEMENT_INPUT","HostBinding","Output","ButtonLoaderComponent","getSpinnerText","spinnerText","state","STATE_LOADING","loaderText","DEFAULT_LOADER_TEXT","getSuccessText","successText","STATE_SUCCESS","DEFAULT_SUCCESS_TEXT","FocusUtils","getFirstFocusableElement","parent","focusableList","selectionableElements","querySelectorAll","document","firstFocusable","item","isFocusable","tabIndex","getAttribute","nodeName","rel","type","DropdownComponent","isOpen","clickOutsideEnabled","ngOnInit","contentTooltip","dropdownContent","nativeElement","style","display","tippyProperties","placement","inlinePositioning","allowHTML","trigger","hideOnClick","interactive","arrow","offset","theme","plugins","name","defaultValue","fn","instance","onCreate","popper","addEventListener","props","hideOnPopperBlur","relatedTarget","contains","hide","_a","onKeyDown","KEY_CODE_ESC","onShow","onHide","removeEventListener","role","aria","onShown","focus","setOpen","AccessibilityAndContentRequiredComponent","read","ElementRef","StringUtils","escapeHtml","replace","RegExp","ListboxLabelComponent","ListboxItemComponent","itemChange","DesyContentChild","options","propertyKey","privateKeyName","privateQueryListKeyName","set","queryList","QueryList","subscribe","previousValue","first","onSetCallbackName","onDeleteCallbackName","notifyOnChanges","get","ListboxComponent","itemsChange","activeItemChange","isListVisible","listboxButtonElement","listboxButton","listboxContent","onListShow","bind","onHidden","onListClose","id","items","itemComponentList","labelComponent","itemComponentSubscriptions","forEach","unsubscribe","itemList","subscription","checkActiveItems","_b","_c","ngDoCheck","getActiveItemsData","map","index","active","filter","activeItems","hasActiveItemChange","lastActiveItems","isMultiselectable","newItem","this_1","findIndex","activeItems_1","activeItems_1_1","doesChangeButtonText","activeItemOption","listboxOptions","find","buttonContentHtml","innerHTML","listboxList","onListFocus","activeItemsData","activeElem","getElementById","getItemId","currentFocusIndex","selectItem","console","warn","moveFocus","position","onSpace","getIdPrefix","idPrefix","itemId","hasLabel","getLabelContent","ViewChildren","ContentChildren","PillComponent","getType","TYPE_A","TYPE_SPAN","TYPE_BUTTON","ContentComponent","DescriptionComponent","IconComponent","TitleComponent","HintComponent","changeDetectorRef","detectChanges","ChangeDetectorRef","LabelComponent","ErrorMessageComponent","LegendComponent","FieldsetComponent","FormFieldComponent","onChange","onTouch","onblur","onInput","registerOnChange","registerOnTouched","setDisabledState","writeValue","getHintId","hasHint","getErrorId","hasErrorsMessage","hasLabelComponent","labelText","labelRef","labelData","hasHintComponent","hintText","hintRef","hintData","hasErrorMessageComponent","errorMessageText","errorMessageRef","errorMessageData","hintComponent","errorMessageComponent","HostListener","TextareaComponent","inputTransform","checkRequiredParams","getRows","rows","DEFAULT_ROWS","ensureText","registerInputTransform","providers","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","multi","CharacterCountComponent","ngAfterViewInit","textareaElement","textarea","checkRequired","maxlength","calculateLenght","displayCountMessage","threshold","substring","remaining","words","match","maxwords","lastIndexOf","countbbdd","specialChars","InputComponent","errorId","SelectItemComponent","OptionComponent","OptionGroupComponent","SelectComponent","contentInit","ngAfterContentInit","getItems","itemSelected_1","selected","itemComponents","toArray","isItemSelected","isOptionGroup","FileUploadComponent","DesyOnInputChange","callbackName","MakeHtmlListPipe","transform","valueForEmpty","filteredList","join","Pipe","InputGroupInputComponent","isSelect","valueChange","InputGroupItemComponent","InputGroupSelectComponent","InputGroupDividerComponent","divider","InputGroupComponent","controlContainer","hasItemLabel","ngAfterViewChecked","getItemName","onExternalChange","onInternalChange","itemValue","itemName","overrideFieldsetParams","fieldset","caller","innerHtml","describedBy","itemsComponents","getItemLabelRef","getItemLabelData","hasFieldset","hasFieldsetComponent","hasLegendComponent","legendRef","fieldsetData","legendData","legendText","fieldsetComponent","legendComponent","namePrefix","getItemSelectOptions","selectItemComponentList","selectItems","getItemDividerTemplate","dividerContent","getItemDividerHtml","isSelectItem","hasSelectItems","ControlContainer","Optional","RadioItemComponent","radios","checkedChange","markForUpdateCheckboxIds","ngOnDestroy","checked","lastChecked","isInit","setChecked","updateValueFromRadioItems","undefined","lastValue","radioId","getItemHintId","hintComponentList","hasChanged","isInputChecked","inputElement","updateRadioId","labelComponentList","for","hasDividers","hasError","getNameRadio","getDescribedBy","animations","opacity","transition","animate","query","animateChild","optional","RadiosComponent","Host","nextValue","updateChekboxIds","updateItems_1","updateRadioItemsChecked","checkboxItems","getRadioItems","onIdPrefixChange","propagateNewIdPrefixValue","onNameChange","overrideHintParams","overrideErrorMessageParams","itemsUpdated","checkedItem","hint","errorMessage","onDeleteHint","onDeleteErrorMessage","radioComponentItems","radioComponentItems2","CheckboxItemComponent","checkboxes","indeterminateChange","updateValueFromCheckboxItems","indeterminateChecked","lastIndeterminate","setIndeterminateChecked","checkboxId","input","isIndeterminate","readOnly","indeterminate","setIndeterminateStatus","getValue","updateCheckboxId","getNameCheckbox","CheckboxesComponent","updateCheckboxItemsChecked","getCheckboxItems","itemChecked","checkboxComponentItems","checkboxComponentItems2","DateInputDayComponent","DateInputItemComponent","DateInputMonthComponent","DateInputYearComponent","DateInputDividerComponent","DateInputComponent","initDefaultItems","newVal","assign","getItemLabel","toUpperCase","dateInputItemComponents","defaultItems","SearchBarComponent","button","hasButton","ConditionDirective","templateRef","conditionalHtml","Directive","TemplateRef","ModalButtonPrimaryComponent","ModalButtonSecondaryComponent","ModalComponent","closeModal","clickButton","hasIconContent","descriptionIsHtml","descriptionIsEmpty","closeDialog","iconComponent","icon","handleRequiredEmpty","checkDescriptionContent","childs","childNodes","hasHtml","hasContent","nodeType","Node","TEXT_NODE","textContent","ELEMENT_NODE","CDATA_SECTION_NODE","descriptionWasEmpty","clickButtonEmit","handleIconContentEmpty","isEmpty","getTitleClasses","titleComponent","title","getDescriptionClasses","descriptionComponent","description","getPrimaryItems","primaryButtonComponents","itemsPrimary","getSecondaryItems","secondaryButtonComponents","itemsSecondary","numDialogsOpened","DialogComponent","cdRef","focusTrapFactory","factoryResolver","activeChange","lastActiveState","focusTrapWrapper","handleActiveState","callerType","factory","resolveComponentFactory","component","container","createComponent","onCallerCreationCallback","children","childElem","dismiss","onKeyUp","stopPropagation","focusTrap","focusElem_1","classList","add","DIALOG_OPEN_CLASS","remove","removeAttribute","focusInitialElement","destroy","focusOnClose","handleClickOutside","dismissOnBackdrop","ConfigurableFocusTrapFactory","ComponentFactoryResolver","ViewContainerRef","DialogService","defaultInjector","appRef","openDialog","dialogOptions","dialog","createDialog","Type","initModal","ComponentRef","onCloseDialog","rootViewContainer","attachView","hostView","componentElement","rootNodes","appendChild","modalRef","modalOptions","isDismissible","subscription_1","Injectable","providedIn","Injector","ApplicationRef","BreadcrumbsItemComponent","BreadcrumbsComponent","location","getLength","itemsLength","hasBackButton","goBack","back","getItemList","handleEmptyItem","Location","HeaderOffcanvasCloseButtonComponent","HeaderOffcanvasButtonComponent","openOffcanvas","handleClick","handleEmptyContent","HeaderOffcanvasComponent","dialogService","hostClass","close","open","offcanvasContent","setHostClass","bindButton","ariaModal","ariaLabelledBy","HeaderNavigationItemComponent","HeaderNavigationComponent","prefix","suffix","NavItemComponent","NavComponent","hasNav","itemsActiveChange","routerLink","handleContentEmpty","HeaderSubnavComponent","hasSubnavItems","nav","overrideNavParams","ariaLabel","HeaderDropdownComponent","SkipLinkComponent","handleNoContent","HeaderComponent","overrideSkipLinkParams","skiplinkComponent","overrideNavigationParams","navigationComponent","FooterNavigationItemComponent","FooterMetaItemComponent","FooterMetaComponent","FooterComponent","getNavigationItems","navItems","navigation","getNavigationItemItems","FooterNavigationComponent","getMetaItems","meta","getMetaContent","contentComponent","ErrorSummaryItemComponent","ErrorSummaryComponent","handleContentRequired","getErrorItemList","errorItemList","errorComponentList","errorList","lastLength","lastErrorItemCount","MenuHorizontalItemComponent","MenuHorizontalComponent","MenuVerticalItemSubItemComponent","MenuVerticalItemSubComponent","MenuVerticalItemComponent","MenuVerticalComponent","handleItemContentEmpty","isRoot","getItemHtml","getId","getSubItemId","itemIndex","subItemIndex","subItemId","sub","getItemSub","subItem","getSubItems","subComponent","subItems","MenubaritemDirective","elementRef","contentChanged","contentHasBeenChecked","ngAfterContentChecked","popupMenu","lastPopupMenu","popupMenuItems","lastPopupMenuItems","link","lastLink","itemContentWrapper","lastItemContentWrapper","ContentChild","descendants","MenubarSubsubitemComponent","MenubarSubitemComponent","MenubarItemComponent","MenubarLabelComponent","MenubarComponent","activeSubItemChange","viewInit","currentFocusItemIndex","checkChanges","menuItems","menuData","itemData","currentFocusSubItemIndex","currentFocusSubSubItemIndex","menuItem","lastCurrentFocusItemIndex","isItemFocusable","handleMenuFocusIn","isFocused","handleMenuFocusOut","menubar","closeMenu","handleMenuItemClick","hasPopupMenu","openMenu","activateMenuItem","handleMenuItemKeydown","focusFirstSubItem","focusNextAvailableItem","focusLastSubItem","focusFirstItem","focusLastItem","isPrintableChar","focusItemByFirstChar","handleMenuItemMouseOver","focusItem","handlePopupMenuItemClick","subSubItemIndex","activatePopupMenuItem","handlePopupMenuItemKeydown","currentSubIndex","currentSubSubIndex","mustCloseAfterSelectPopupItem","focusNextAvailableSubItem","focusSubItemByFirstChar","handlePopupMenuItemMouseOver","focusSubItem","getItemSubitems","subSubItems","getSubItemSubitems","wasOpened","str","getMenuDataIndex","menuDataIndex","hover","hasFocus","activeElement","fromItemIndex","nextItem","char","itemContents","foundIndex","trim","substr","toLowerCase","elem","fromItemSubIndex","fromItemSubSubIndex","allSubItemsChecked","nextSubIndex","nextSubSubIndex","nextIndexes","getNextSubItemIndexes","subIndex","subSubIndex","isSubItemFocusable","firstSubSubItem","lastItemIndex","lastItem","lastSubSubItem","foundSubIndex","foundSubSubIndex","checkNextSubItem","nextSubItemItems","getLabelRef","getPopupStyle","rect","getBoundingClientRect","top","height","left","zIndex","parentId","getSubSubItemAriaChecked","subsubitem","ariaChecked","NotificationItemComponent","NotificationComponent","isOpenChange","isDismissing","displayDefaultIcon","itemCompontents","handleIconEmpty","empty","TableCellComponent","TableCaptionComponent","TableComponent","getCaptionClass","captionComponent","captionClasses","getHeaderCells","headerCells","headerComponent","cells","head","rowList","rowComponentList","getRowCells","row","TableRowComponent","handleEmptyCell","cell","cellIndex","TableHeaderComponent","OrderBy","SearchUtils","containsAnyWordFrom","fullWord","includes","simplifiedTarget","getSimplifiedString","split","word","res","toLocaleUpperCase","TableAdvancedHeaderCellComponent","TableAdvancedRowCellComponent","CellDirective","RowDirective","getCell","column","contentCells","columnIndex","TableAdvancedComponent","el","changeDetector","rowsChange","rowsChecked","recalculateTable","orderByType","elemntsFocus","querySelector","setAttribute","recalculateVisibleElements","recalculateParams","buildRecalculateParams","observers","markForCheck","visibleRows","rowData","filterRows","sortRows","desyRow","params","filters","sort","headerCell","headerCellIndex","hasFilter","activeFilter","filterText","valueFilter","orderByColumnIndex","orderBy","none","order","hasFilters","getVisibleRows","getIdHeader","getIdRowCheckbox","getIdHeaderFilter","getStringOrderBy","asc","handleTableCellContentEmpty","handleCheckboxChange","TableAdvancedRowComponent","notifyCheckedChange","uncheckAll","mustEmit","rowChecks","handleInputSearch","filteredRows","handleSortByColumn","getNextDirection","sortedRows","columnIndex_1","isAsc_1","a","compareCellContent","isAsc","aComparable","cleanCurrency","bComparable","isNaN","localeCompare","sensitivity","ignorePunctuation","numeric","txt","test","TableAdvancedHeaderComponent","AlertComponent","hasViewinit","createdCallerFromType","_active","focusFirst","focusElem","alertWrapper","AccordionHeaderComponent","AccordionItemComponent","openChange","AccordionComponent","showAll","changeAll","isChange","toggleItem","allowToggle","newOpenValue","allowMultiple","it","wasOpen","itemSelectors","focusNextItem","focusedItem","selectors","focusPreviousItem","currentItem","headingComponent","heading","getItemHeader","getItemContent","SpinnerComponent","DetailsComponent","summaryTextOrSummaryHtmlRequiredFunction","summaryText","summaryHtml","TermComponent","DefinitionComponent","DescriptionListComponent","DescriptionItemComponent","CollapsibleComponent","toggleOpen","show","headerTextOrheaderHtmlRequiredFunction","ItemContentRightComponent","ItemContentBottomComponent","ItemItemComponent","ItemComponent","getTitle","MediaObjectComponent","figureHtml","StatusComponent","StatusItemComponent","PanelComponent","TabItemComponent","TabsComponent","currentTab","tablistAriaLabel","selectTab","getItemPanel","tab","panel","panelComponent","currentPanel","tabSrOnly","tabSelectorContentWrapper","focusFirstTab","tabSelectors","focusLastTab","enabledTabs","focusNextTab","focusedTab","nextTab","focusPreviousTab","previousTab","getPanelContent","AlertService","openAlert","alertOptions","alert","createAlert","initNotification","closeAlert","onCloseAlert","place","notificationRef","TooltipContentComponent","PaginationComponent","currentPage","currentPageChange","previousIcon","nextIcon","totalItems","itemsPerPage","nPages","Math","ceil","previousText","nextText","buildPages","getSuffix","page","getLastItemNumber","pageIndex","min","getButtonId","changePage","current","previous","getActiveItemText","InnerHtmlPipe","sanitizer","sanitize","SecurityContext","HTML","DomSanitizer","ExternalHrefPipe","AttributeChangeDirective","desyAttributeChange","desyAttributeChangeMutation","MutationObserver","mutations","mutation","attributesToCheck","attributeName","observe","attributes","childList","characterData","subtree","disconnect","InnerContentDirective","deleteContentIfEmpty","isHtml","innerText","ClickOutsideDirective","hostElementRef","clickOutside","desyClickOutsideElem","ContentChangeDirective","observeProperties","desyContentChange","desyContentChangeMutation","ContentEmptyDirective","desyContentEmpty","desyContentNotEmpty","lastWasEmpty","checkContent","isContentNode","contentNode","contentsToIgnore","ignoreElem","CustomInnerContentDirective","viewContainerRef","resolver","injector","clear","desyCustomInnerContent","createEmbeddedView","tmpWrapper","createElement","nodeList_1","node","componentRef","textNode","createTextNode","NgModule","declarations","imports","CommonModule","exports","RouterModule","NgForm","SharedModule","NgxTippyModule","TemplateDrivenWrapperComponent","FormsModule","ReactiveFormsModule","DesyCommonsModule","TooltipComponent","hasIconComponentContent","tooltipContent","complex","getIdButton","getIdTooltip","handleEmptyIconContent","handleEmptyTooltipContent","getMainContent","getIconContent","DesyFormsModule","DesyViewsModule","A11yModule","DesyButtonsModule","FocusClickedCellDirective","offsetParent","elemntsFocus_1","elemntsFocus_1_1","activeTabindex","manageArrows","code","tr","parentNode","nextElementSibling","previousElementSibling","inactiveTabindex","mynode","otherNode","isEqualNode","DesyNavModule","DesyModalsModule","DesyTablesModule","DesyPaginationModule"],"mappings":"wjCAgBIA,EAAgB,SAASC,EAAGC,GAI5B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOC,OAAOK,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,MAC3EN,EAAGC;;;;;;;;;;;;;;6FAGZS,EAAUV,EAAGC,GACzB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIU,UAAU,uBAAyBC,OAAOX,GAAK,iCAE7D,SAASY,IAAOC,KAAKC,YAAcf,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEO,UAAkB,OAANN,EAAaC,OAAOc,OAAOf,IAAMY,EAAGN,UAAYN,EAAEM,UAAW,IAAIM,YA0BnEI,EAAWC,EAAYC,EAAQC,EAAKC,GAChD,IAA2HrB,EAAvHsB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOnB,OAAOwB,yBAAyBP,EAAQC,GAAOC,EACrH,GAAuB,iBAAZM,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAGK,GAAK,EAAGA,KAAS7B,EAAIkB,EAAWW,MAAIJ,GAAKH,EAAI,EAAItB,EAAEyB,GAAKH,EAAI,EAAItB,EAAEmB,EAAQC,EAAKK,GAAKzB,EAAEmB,EAAQC,KAASK,GAChJ,OAAOH,EAAI,GAAKG,GAAKvB,OAAO4B,eAAeX,EAAQC,EAAKK,GAAIA,WAWhDM,EAAUC,EAASC,EAAYC,EAAGC,GAE9C,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUC,GAAS,IAAMC,EAAKN,EAAUO,KAAKF,IAAW,MAAOG,GAAKL,EAAOK,IACpF,SAASC,EAASJ,GAAS,IAAMC,EAAKN,EAAiB,MAAEK,IAAW,MAAOG,GAAKL,EAAOK,IACvF,SAASF,EAAKI,GAJlB,IAAeL,EAIaK,EAAOC,KAAOT,EAAQQ,EAAOL,QAJ1CA,EAIyDK,EAAOL,MAJhDA,aAAiBN,EAAIM,EAAQ,IAAIN,GAAE,SAAUG,GAAWA,EAAQG,OAITO,KAAKR,EAAWK,GAClGH,GAAMN,EAAYA,EAAUa,MAAMhB,EAASC,GAAc,KAAKS,oBAItDO,EAAYjB,EAASkB,GACjC,IAAsGC,EAAGC,EAAGC,EAAGC,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAPJ,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOK,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAEZ,KAAMkB,EAAK,GAAIC,MAASD,EAAK,GAAIE,OAAUF,EAAK,IAAwB,mBAAXG,SAA0BT,EAAES,OAAOC,UAAY,WAAa,OAAOlD,OAAUwC,EACvJ,SAASM,EAAKK,GAAK,OAAO,SAAUC,GAAK,OACzC,SAAcC,GACV,GAAIhB,EAAG,MAAM,IAAIxC,UAAU,mCAC3B,KAAO4C,OACH,GAAIJ,EAAI,EAAGC,IAAMC,EAAY,EAARc,EAAG,GAASf,EAAU,OAAIe,EAAG,GAAKf,EAAS,SAAOC,EAAID,EAAU,SAAMC,EAAE5C,KAAK2C,GAAI,GAAKA,EAAEV,SAAWW,EAAIA,EAAE5C,KAAK2C,EAAGe,EAAG,KAAKrB,KAAM,OAAOO,EAE3J,OADID,EAAI,EAAGC,IAAGc,EAAK,CAAS,EAARA,EAAG,GAAQd,EAAEb,QACzB2B,EAAG,IACP,KAAK,EAAG,KAAK,EAAGd,EAAIc,EAAI,MACxB,KAAK,EAAc,OAAXZ,EAAEC,QAAgB,CAAEhB,MAAO2B,EAAG,GAAIrB,MAAM,GAChD,KAAK,EAAGS,EAAEC,QAASJ,EAAIe,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKZ,EAAEI,IAAIS,MAAOb,EAAEG,KAAKU,MAAO,SACxC,QACI,KAAMf,EAAIE,EAAEG,MAAML,EAAIA,EAAE7B,OAAS,GAAK6B,EAAEA,EAAE7B,OAAS,KAAkB,IAAV2C,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAEZ,EAAI,EAAG,SACjG,GAAc,IAAVY,EAAG,MAAcd,GAAMc,EAAG,GAAKd,EAAE,IAAMc,EAAG,GAAKd,EAAE,IAAM,CAAEE,EAAEC,MAAQW,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAYZ,EAAEC,MAAQH,EAAE,GAAI,CAAEE,EAAEC,MAAQH,EAAE,GAAIA,EAAIc,EAAI,MAC7D,GAAId,GAAKE,EAAEC,MAAQH,EAAE,GAAI,CAAEE,EAAEC,MAAQH,EAAE,GAAIE,EAAEI,IAAIU,KAAKF,GAAK,MACvDd,EAAE,IAAIE,EAAEI,IAAIS,MAChBb,EAAEG,KAAKU,MAAO,SAEtBD,EAAKjB,EAAKzC,KAAKuB,EAASuB,GAC1B,MAAOZ,GAAKwB,EAAK,CAAC,EAAGxB,GAAIS,EAAI,UAAeD,EAAIE,EAAI,EACtD,GAAY,EAARc,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE3B,MAAO2B,EAAG,GAAKA,EAAG,QAAK,EAAQrB,MAAM,GArB9BL,CAAK,CAACwB,EAAGC,MAyBhChE,OAAOc,gBAYpBsD,EAASC,GACrB,IAAIC,EAAsB,mBAAXT,QAAyBA,OAAOC,SAAUS,EAAID,GAAKD,EAAEC,GAAI3C,EAAI,EAC5E,GAAI4C,EAAG,OAAOA,EAAEhE,KAAK8D,GACrB,GAAIA,GAAyB,iBAAbA,EAAE/C,OAAqB,MAAO,CAC1CkB,KAAM,WAEF,OADI6B,GAAK1C,GAAK0C,EAAE/C,SAAQ+C,OAAI,GACrB,CAAE/B,MAAO+B,GAAKA,EAAE1C,KAAMiB,MAAOyB,KAG5C,MAAM,IAAI5D,UAAU6D,EAAI,0BAA4B,4CAGxCE,EAAOH,EAAGN,GACtB,IAAIQ,EAAsB,mBAAXV,QAAyBQ,EAAER,OAAOC,UACjD,IAAKS,EAAG,OAAOF,EACf,IAAmB9C,EAAYkB,EAA3Bd,EAAI4C,EAAEhE,KAAK8D,GAAOI,EAAK,GAC3B,IACI,WAAc,IAANV,GAAgBA,KAAM,MAAQxC,EAAII,EAAEa,QAAQI,MAAM6B,EAAGN,KAAK5C,EAAEe,OAExE,MAAOoC,GAASjC,EAAI,CAAEiC,MAAOA,WAEzB,IACQnD,IAAMA,EAAEqB,OAAS2B,EAAI5C,EAAU,SAAI4C,EAAEhE,KAAKoB,WAExC,GAAIc,EAAG,MAAMA,EAAEiC,OAE7B,OAAOD,WAIKE,IACZ,IAAK,IAAIF,EAAK,GAAI9C,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAC3C8C,EAAKA,EAAGG,OAAOJ,EAAOnD,UAAUM,KACpC,OAAO8C,EAyDczE,OAAOc,aCvMhC,iCAJC+D,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,qBACVC,SAAU,gDAGTC,EAAAA,yBACAA,EAAAA,+BACAA,EAAAA,8BACAA,EAAAA,0BACAA,EAAAA,4BACAA,EAAAA,4BACAA,EAAAA,2BACAA,EAAAA,wBACAA,EAAAA,4BACAA,EAAAA,gCACAA,EAAAA,4BACAA,EAAAA,yBACAA,EAAAA,wBACAA,EAAAA,2BCfH,SAAAC,0DAA0C1E,EAAA0E,EAAAC,GAIjCD,EAAA7E,UAAA+E,WAAA,WACL,OAAOxE,KAAKyE,YAL0BC,uBAJzCT,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,oBACVC,SAAU,6GAITO,EAAAA,UAAST,KAAA,CAAC,kBAAmB,CAAEU,QAAQ,wBCL1C,SAAAC,YAWEA,EAAApF,UAAAqF,YAAA,SAAYC,GACVC,EAA2BhF,KAAKiF,KAAMjF,KAAKkF,qBAS/BF,EAA2BC,EAAWC,GACpD,IAAKA,IAASD,EACZ,MAAM,IAAIE,MAAM,iDA3BnBlB,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,6BACVC,SAAU,gDAUTC,EAAAA,oBACAA,EAAAA,2BCPH,SAAAe,0DAAiExF,EAAAwF,EAAAb,MAAAM,uBAJhEZ,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,+CACVC,SAAU,gDAcPC,EAAAA,yBACAA,EAAAA,+BACAA,EAAAA,8BACAA,EAAAA,0BACAA,EAAAA,4BACAA,EAAAA,4BACAA,EAAAA,2BACAA,EAAAA,wBACAA,EAAAA,4BACAA,EAAAA,gCACAA,EAAAA,4BACAA,EAAAA,wBACAA,EAAAA,eCzBL,iCAJCJ,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,0CACVC,SAAU,gDAYPC,EAAAA,oBACAA,EAAAA,oBAGAA,EAAAA,yBACAA,EAAAA,+BACAA,EAAAA,8BACAA,EAAAA,0BACAA,EAAAA,4BACAA,EAAAA,4BACAA,EAAAA,2BACAA,EAAAA,wBACAA,EAAAA,4BACAA,EAAAA,gCACAA,EAAAA,4BACAA,EAAAA,wBACAA,EAAAA,2BC9BL,SAAAgB,IAAA,IAAAC,EAAAf,EAAArC,MAAAlC,KAAA+D,EAAAtD,aAAAT,YAWyCsF,EAAAC,aAAe,KAmB5CD,EAAAE,WAAa,IAAIC,EAAAA,aAE3BH,EAAAI,qBAAsB,WA5Ba9F,EAAAyF,EAAAd,GA8BnCc,EAAA5F,UAAAkG,QAAA,SAAQC,GAAR,IAAAN,EAAAtF,KACMA,KAAK6F,mBACF7F,KAAK0F,oBAORE,EAAME,kBANN9F,KAAK0F,qBAAsB,EAC3B1F,KAAKwF,WAAWO,KAAKH,GACrBI,YAAW,WACTV,EAAKI,qBAAsB,IAC1B,MAKL1F,KAAKwF,WAAWO,KAAKH,IAIzBP,EAAA5F,UAAAwG,WAAA,WAWE,OATIjG,KAAKkG,QACGlG,KAAKkG,QAAQC,oBAEnBnG,KAAKoG,KACGf,EAAgBgB,UAEhBhB,EAAgBiB,gBAMhCjB,EAAA5F,UAAA8G,cAAA,WACE,IAAIC,EAAa,WAOjB,OANIxG,KAAKyG,UACPD,GAAc,IAAMxG,KAAKyG,SAEvBzG,KAAK0G,WACPF,GAAc,uBAETA,GAGTnB,EAAA5F,UAAAkH,WAAA,WACE,QAAO3G,KAAK0G,UAAkB,MAGhCtH,OAAA4B,eAAIqE,EAAA5F,UAAA,qBAAkB,KAAtB,WACE,OAAO4F,EAAgBgB,2CAGzBjH,OAAA4B,eAAIqE,EAAA5F,UAAA,0BAAuB,KAA3B,WACE,OAAO4F,EAAgBiB,gDAGzBlH,OAAA4B,eAAIqE,EAAA5F,UAAA,yBAAsB,KAA1B,WACE,OAAO4F,EAAgBuB,kDApFUlC,GAEZW,EAAAgB,UAAoB,IACpBhB,EAAAiB,eAAyB,SACzBjB,EAAAuB,cAAwB,4BARhD3C,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,cACVC,SAAA,slLASCyC,EAAAA,YAAW3C,KAAA,CAAC,6BAEZG,EAAAA,uBACAA,EAAAA,oBACAA,EAAAA,oBACAA,EAAAA,uBAEAA,EAAAA,oBACAA,EAAAA,oBACAA,EAAAA,qBACAA,EAAAA,wBACAA,EAAAA,oBACAA,EAAAA,sBACAA,EAAAA,kCACAA,EAAAA,0BAEAA,EAAAA,uCACAA,EAAAA,0BAEAyC,EAAAA,4BC9BH,SAAAC,IAAA,IAAAzB,EAAAf,EAAArC,MAAAlC,KAAA+D,EAAAtD,aAAAT,YAYyCsF,EAAAC,aAAe,cARb3F,EAAAmH,EAAAxC,GAezCwC,EAAAtH,UAAA8G,cAAA,WACE,IAAIC,EAAa,2BAOjB,OANIxG,KAAKyG,UACPD,GAAc,IAAMxG,KAAKyG,SAEvBzG,KAAK0G,WACPF,GAAc,8BAETA,GAGTO,EAAAtH,UAAAuH,eAAA,WACE,IAAIC,EAAsB,KAM1B,OAJIjH,KAAKkH,QAAUH,EAAsBI,gBACvCF,EAAcjH,KAAKoH,WAAapH,KAAKoH,WAAaL,EAAsBM,qBAGnEJ,GAITF,EAAAtH,UAAA6H,eAAA,WACE,IAAIC,EAAsB,KAM1B,OAJIvH,KAAKkH,QAAUH,EAAsBS,gBACvCD,EAAcvH,KAAKuH,YAAcvH,KAAKuH,YAAcR,EAAsBU,sBAGrEF,MA5CgClC,GAElB0B,EAAAI,cAAwB,aACxBJ,EAAAS,cAAwB,aAEvBT,EAAAM,oBAA8B,kBAC9BN,EAAAU,qBAA+B,iDAVxDxD,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,qBACVC,SAAA,syNAUCyC,EAAAA,YAAW3C,KAAA,CAAC,qCAEZG,EAAAA,6BACAA,EAAAA,qBACAA,EAAAA,2BACAA,EAAAA,SCpBH,IAAAqD,EAAA,WAAA,SAAAA,YAEgBA,EAAAC,yBAAP,SAAgCC,GACrC,IACIC,EADEC,EAAwB,2EAQ9B,KALED,EADED,EACcA,EAAOG,iBAAiBD,GAExBE,SAASD,iBAAiBD,KAGG,IAAzBD,EAAcnH,OAClC,OAAO,KAKT,IAFA,IAAIuH,EAAiB,KACjBlH,EAAI,EACDA,EAAI8G,EAAcnH,QAAQ,CAC/B,IACE,IAAMwF,EAAU2B,EAAcK,KAAKnH,GACnC,GAAI2G,EAAWS,YAAYjC,GAAU,CACnC+B,EAAiB/B,EACjB,OAEF,MAAOrE,IAGTd,IAGF,OAAOkH,GAGKP,EAAAS,YAAP,SAAmBjC,GACxB,GAAIA,EAAQkC,SAAW,GAA2B,IAArBlC,EAAQkC,UAAuD,OAArClC,EAAQmC,aAAa,YAC1E,OAAO,EAGT,GAAInC,EAAQQ,SACV,OAAO,EAGT,OAAQR,EAAQoC,UACd,IAAK,IACH,QAASpC,EAAQE,MAAwB,WAAhBF,EAAQqC,IACnC,IAAK,QACH,MAAwB,WAAjBrC,EAAQsC,MAAsC,SAAjBtC,EAAQsC,KAC9C,IAAK,SACL,IAAK,SACL,IAAK,WACH,OAAO,EACT,QACE,OAAO,MApDf,iBCaA,SAAAC,IAAA,IAAAnD,EAAAf,EAAArC,MAAAlC,KAAA+D,EAAAtD,aAAAT,YAkBYsF,EAAAE,WAAa,IAAIC,EAAAA,aAE3BH,EAAAoD,QAAS,EACTpD,EAAAqD,qBAAsB,WAjBe/I,EAAA6I,EAAAlE,GAqBrCkE,EAAAhJ,UAAAmJ,SAAA,WACE,IAAIC,EACA7I,KAAK8I,iBAAmB9I,KAAK8I,gBAAgBC,iBAC/CF,EAAiB7I,KAAK8I,gBAAgBC,eACvBC,MAAMC,QAAU,QAC/BjJ,KAAKkJ,gBAAkB,CACrBC,UAAW,eACXC,mBAAmB,EACnB3E,QAASoE,EACTQ,WAAW,EACXC,QAAS,QACTC,aAAa,EACbC,aAAa,EACbC,OAAO,EACPC,OAAQ,CAAC,GAAI,IACbC,MAAO,GACPC,QAAS,CACP,CACEC,KAAM,mBACNC,cAAc,EACdC,GAAE,SAACC,GACD,MAAO,CACLC,SAAQ,WACND,EAASE,OAAOC,iBAAiB,YAAY,SAACvE,GAE1CoE,EAASI,MAAMC,kBACfzE,EAAM0E,gBACLN,EAASE,OAAOK,SAAS3E,EAAM0E,gBAEhCN,EAASQ,cAMlB,CACDX,KAAM,YACNC,cAAc,EACdC,GAAE,SAACU,OAACD,EAAIC,EAAAD,KAEN,SAASE,EAAU9E,GACbA,EAAMtF,MAAQmI,EAAkBkC,cAClCH,IAIJ,MAAO,CACLI,OAAM,WACJ5C,SAASmC,iBAAiB,UAAWO,IAEvCG,OAAM,WACJ7C,SAAS8C,oBAAoB,UAAWJ,QAMlDK,MAAM,EACNC,KAAM,CACJvG,QAAS,QAEXwG,QAAO,SAACjB,GACN,IAAM/B,EAAiBP,EAAWC,yBAAyBkB,GACvDZ,GACFA,EAAeiD,YAOzBzC,EAAAhJ,UAAAkG,QAAA,SAAQC,GACD5F,KAAK2G,cACR3G,KAAKwF,WAAWO,KAAKH,IAIzB6C,EAAAhJ,UAAA0L,QAAA,SAAQzC,GACN1I,KAAK0I,OAASA,GAGhBD,EAAAhJ,UAAAkH,WAAA,WACE,QAAO3G,KAAK0G,UAAkB,SAvGK0E,GAErB3C,EAAAkC,aAAe,6BANhC1G,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,gBACVC,SAAA,irEAMCO,EAAAA,UAAST,KAAA,CAAC,kBAAmB,CAAEmH,KAAMC,EAAAA,WAAY1G,QAAQ,gBAEzDP,EAAAA,wBACAA,EAAAA,0BACAA,EAAAA,gCACAA,EAAAA,8BACAA,EAAAA,uBACAA,EAAAA,sBACAA,EAAAA,0BAEAyC,EAAAA,UC5BH,IAAAyE,EAAA,WAAA,SAAAA,YAMgBA,EAAAC,WAAP,SAAkB9J,GACvB,OAAOA,EAAQA,EACZ+J,QAAQ,IAAIC,OAAO,IAAK,KAAM,SAC9BD,QAAQ,IAAIC,OAAO,IAAK,KAAM,QAC9BD,QAAQ,IAAIC,OAAO,IAAK,KAAM,QAC9BD,QAAQ,IAAIC,OAAO,IAAK,KAAM,UAC9BD,QAAQ,IAAIC,OAAO,IAAK,KAAM,SAAW,MAZhD,iBCIA,SAAAC,0DAA2C/L,EAAA+L,EAAApH,MAAAD,uBAJ1CL,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,qBACVC,SAAA,2HAICC,EAAAA,2BCLH,SAAAuH,IAAA,IAAAtG,EAAAf,EAAArC,MAAAlC,KAAA+D,EAAAtD,aAAAT,YAaYsF,EAAAuG,WAAa,IAAIpG,EAAAA,sBATa7F,EAAAgM,EAAArH,GAWxCqH,EAAAnM,UAAAqF,YAAA,SAAYC,GACV/E,KAAK6L,WAAW9F,KAAKhB,OAZiBL,YCK1BoH,EAAiBC,GAC/B,OAAO,SAAC1L,EAAa2L,GACnB,IAAMC,EAAiB,IAAID,EACrBE,EAA0B,IAAIF,EAAW,YAE/C5M,OAAO4B,eAAeX,EAAQ2L,EAAa,CACzCG,IAAG,SAACzK,GAAJ,IAAA4D,EAAAtF,KACQoM,EAAY1K,aAAiB2K,EAAAA,UAAY3K,EAA0B,KACrE0K,IAAcpM,KAAKkM,KACrBlM,KAAKkM,GAA2BE,EAChCA,EAAUrH,QAAQuH,WAAU,WAC1B,IAAMC,EAAgBjH,EAAK2G,GAC3B3G,EAAK2G,GAAkBG,GAAaA,EAAU1L,OAAS,EAAI0L,EAAUI,MAAQ,KAEzET,GAAWA,EAAQU,mBAAqBnH,EAAKyG,EAAQU,oBAAsBnH,EAAK2G,IAClF3G,EAAKyG,EAAQU,mBAAmBnH,EAAK2G,IAGnCF,GAAWA,EAAQW,sBAAwBpH,EAAKyG,EAAQW,uBAAyBH,IAAkBjH,EAAK2G,IAC1G3G,EAAKyG,EAAQW,2BAGjBN,EAAUO,oBAGdC,IAAG,WACD,OAAO5M,KAAKiM,2BDnCnBhI,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,oBACVC,SAAA,kIAICO,EAAAA,UAAST,KAAA,CAAC,sCAEVG,EAAAA,sBACAA,EAAAA,uBACAA,EAAAA,qBACAA,EAAAA,0BAEAyC,EAAAA,4BEKH,SAAA+F,IAAA,IAAAvH,EAAAf,EAAArC,MAAAlC,KAAA+D,EAAAtD,aAAAT,YA2BYsF,EAAAwH,YAAc,IAAIrH,EAAAA,aAClBH,EAAAyH,iBAAmB,IAAItH,EAAAA,aAKjCH,EAAA0H,eAAgB,WA7BoBpN,EAAAiN,EAAAtI,GAsCpCsI,EAAApN,UAAAmJ,SAAA,WACE,IAAMqE,EAAuBjN,KAAKkN,cAAcnE,cAChD,GAAI/I,KAAKmN,gBAAkBnN,KAAKmN,eAAepE,cAAe,CAC5D,IAAMF,EAAiB7I,KAAKmN,eAAepE,cAC3C/I,KAAKkJ,gBAAkB,CACrBC,UAAW,eACXC,mBAAmB,EACnB3E,QAASoE,EACTQ,WAAW,EACXC,QAAS,QACTC,aAAa,EACbC,aAAa,EACbC,OAAO,EACPC,OAAQ,CAAC,GAAI,IACbC,MAAO,GACPC,QAAS,CACP,CACEC,KAAM,mBACNC,cAAc,EACdC,GAAE,SAACC,GACD,MAAO,CACLC,SAAQ,WACND,EAASE,OAAOC,iBAAiB,YAAY,SAACvE,GAE1CoE,EAASI,MAAMC,kBACfzE,EAAM0E,gBACLN,EAASE,OAAOK,SAAS3E,EAAM0E,gBAEhCN,EAASQ,cAMlB,CACDX,KAAM,YACNC,cAAc,EACdC,GAAE,SAACU,OAACD,EAAIC,EAAAD,KAEN,SAASE,EAAU9E,GACbA,EAAMtF,MAAQuM,EAAiBlC,eACjCH,IACAyC,EAAqB/B,SAIzB,MAAO,CACLN,OAAM,WACJ5C,SAASmC,iBAAiB,UAAWO,IAEvCG,OAAM,WACJ7C,SAAS8C,oBAAoB,UAAWJ,QAMlDK,MAAM,EACNC,KAAM,CACJvG,QAAS,QAEXmG,OAAQ5K,KAAKoN,WAAWC,KAAKrN,MAC7BsN,SAAUtN,KAAKuN,YAAYF,KAAKrN,SAKtC6M,EAAApN,UAAAqF,YAAA,WAAA,IAAAQ,EAAAtF,KACEgG,YAAW,mBAIT,IAAKV,EAAKkI,GACR,MAAMrI,MAAM,kBAEd,IAAKG,EAAKmI,QAAUnI,EAAKoI,kBACvB,MAAMvI,MAAM,sBAEd,IAAKG,EAAK5C,QAAU4C,EAAKqI,eACvB,MAAMxI,MAAM,qBAkBd,GAfIG,EAAKoI,mBAAqBpI,EAAKoI,kBAAkBhN,OAAS,GACxD4E,EAAKsI,4BACPtI,EAAKsI,2BAA2BC,SAAQ,SAAAnK,GAAK,OAAAA,EAAEoK,iBAEjDxI,EAAKsI,2BAA6B,GAClCtI,EAAKyI,SAAW,GAChBzI,EAAKoI,kBAAkBG,SAAQ,SAAA3F,GAC7B,IAAM8F,EAAe9F,EAAK2D,WAAWS,WAAU,WAAM,OAAAhH,EAAK2I,sBAC1D3I,EAAKsI,2BAA2BrK,KAAKyK,GACrC1I,EAAKyI,SAASxK,KAAK2E,OAGrB5C,EAAKyI,SAAWzI,EAAKmI,MAGnBnI,EAAKmI,UACP,IAAmB,IAAAS,EAAA1K,EAAA8B,EAAKmI,OAAKU,EAAAD,EAAAtM,QAAAuM,EAAAnM,KAAAmM,EAAAD,EAAAtM,OAAE,CAA1B,IAAMsG,EAAIiG,EAAAzM,MACb,IAAIwG,EAGF,MAAM/C,MAAM,WAAa+C,GAFzBlD,EAA2BkD,EAAKjD,KAAMiD,EAAKhD,wGAOjDI,EAAK2I,uBAITpB,EAAApN,UAAA2O,UAAA,WACOpO,KAAKyN,OAAUzN,KAAK+N,UAIzB/N,KAAKiO,oBAGCpB,EAAApN,UAAA4O,mBAAA,WACN,OAAOrO,KAAK+N,SACTO,KAAI,SAACpG,EAAMqG,GAAU,OAAArG,EAAKsG,OAAS,CAACtG,KAAIA,EAAEqG,MAAKA,GAAI,QACnDE,QAAO,SAAAvG,GAAQ,OAAS,OAATA,MAGZ2E,EAAApN,UAAAwO,iBAAA,mBACFS,EAA0D1O,KAAK+N,SAChEO,KAAI,SAACpG,EAAMqG,GAAU,OAAArG,EAAKsG,OAAS,CAACtG,KAAIA,EAAEqG,MAAKA,GAAI,QACnDE,QAAO,SAAAvG,GAAQ,OAAS,OAATA,KAEdyG,GAAsB,EAC1B,GAAI3O,KAAK4O,iBAAmBF,EAAYhO,SAAWV,KAAK4O,gBAAgBlO,QACtE,IAAK,IAAIK,EAAI,EAAGA,EAAI2N,EAAYhO,OAAQK,IACtC,GAAI2N,EAAY3N,GAAGwN,QAAUvO,KAAK4O,gBAAgB7N,GAAGwN,MAAO,CAC1DI,GAAsB,EACtB,YAIJA,GAAsB,EAIxB,GAAI3O,KAAK4O,kBAAoB5O,KAAK6O,mBAAqBF,GACjDD,EAAYhO,SAAWV,KAAK4O,gBAAgBlO,OAAQ,gBAC3CoO,GACLC,EAAKH,gBAAgBI,WAAU,SAAAjO,GAAK,OAAAA,EAAEwN,QAAUO,EAAQP,UAAU,IACpEO,EAAQ5G,KAAKsG,QAAS,GAGxBE,EAAcA,EAAYD,QAAO,SAAAvG,GAAQ,OAAAA,EAAKA,KAAKsG,sBALrD,IAAsB,IAAAS,EAAAzL,EAAAkL,GAAWQ,EAAAD,EAAArN,QAAAsN,EAAAlN,KAAAkN,EAAAD,EAAArN,OAAA,GAAfsN,EAAAxN,0GAatB,GAHA1B,KAAK4O,gBAAkBF,EAGnB1O,KAAKmP,uBAAyBnP,KAAK6O,mBAAqBH,EAAYhO,OAAS,EAAG,CAClF,IAAM0O,EAAmBpP,KAAKqP,eAAeC,MAAK,SAACpH,EAAMqG,GAAU,OAAAA,IAAUG,EAAY,GAAGH,SACxFa,IACFpP,KAAKuP,kBAAoBH,EAAiBrG,cAAcyG,gBAG1DxP,KAAKuP,kBAAoBvP,KAAKkF,KAAOlF,KAAKkF,KAAO,KAI/CyJ,IACF3O,KAAK8M,YAAY/G,KAAK/F,KAAK+N,UAC3B/N,KAAK+M,iBAAiBhH,KAAK2I,EAAYhO,OAAS,EAAIgO,EAAY,GAAGxG,KAAO,QAI9E2E,EAAApN,UAAA2N,WAAA,WAAA,IAAA9H,EAAAtF,KACEA,KAAKgN,eAAgB,EACjBhN,KAAKyP,aACPzJ,YAAW,WAAM,OAAAV,EAAKmK,YAAY1G,cAAcmC,YAIpD2B,EAAApN,UAAA8N,YAAA,WACEvN,KAAKgN,eAAgB,GAGvBH,EAAApN,UAAAiQ,YAAA,WACE,IAAMC,EAAkB3P,KAAKqO,qBAC7B,GAAIsB,EAAgBjP,OAAS,EAAG,CAC9B,IAAMkP,EAAa5H,SAAS6H,eAAe7P,KAAK8P,UAAUH,EAAgB,GAAGzH,KAAMyH,EAAgB,GAAGpB,QAClGqB,IACFA,EAAW1E,QACXlL,KAAK+P,kBAAoBJ,EAAgB,GAAGpB,YAErCvO,KAAK+N,UAAY/N,KAAK+N,SAASrN,OAAS,GACjDV,KAAK+P,kBAAoB,EACpB/P,KAAK6O,mBACR7O,KAAKgQ,WAAW,IAGlBC,QAAQC,KAAK,wBAIjBrD,EAAApN,UAAA0Q,UAAA,SAAUC,EAAkBxK,GAC1BA,EAAME,iBACFsK,GAAY,GAAKA,EAAWpQ,KAAK+N,SAASrN,SACxCV,KAAK6O,kBACP7O,KAAK+P,kBAAoBK,EAEzBpQ,KAAKgQ,WAAWI,KAKtBvD,EAAApN,UAAA4Q,QAAA,SAAQzK,GACNA,EAAME,iBACF9F,KAAK6O,mBACP7O,KAAKgQ,WAAWhQ,KAAK+P,oBAIzBlD,EAAApN,UAAAuQ,WAAA,SAAWzB,GACJvO,KAAK6O,kBAIR7O,KAAK+N,SAASQ,GAAOC,QAAUxO,KAAK+N,SAASQ,GAAOC,QAHpDxO,KAAK+N,SAASF,SAAQ,SAAA3F,GAAQ,OAAAA,EAAKsG,QAAS,KAC5CxO,KAAK+N,SAASQ,GAAOC,QAAS,GAIhCxO,KAAK+P,kBAAoBxB,EAEzBvO,KAAKiO,oBAOPpB,EAAApN,UAAA6Q,YAAA,WACE,OAAOtQ,KAAKuQ,SAAWvQ,KAAKuQ,SAAWvQ,KAAKwN,GAAK,iBAGnDX,EAAApN,UAAAqQ,UAAA,SAAU5H,EAAuBqG,GAC/B,IAAIiC,EASJ,OARItI,EAAKsF,GACPgD,EAAStI,EAAKsF,IAEdgD,EAASxQ,KAAKsQ,cACV/B,EAAQ,IACViC,GAAU,IAAIjC,IAGXiC,GAGT3D,EAAApN,UAAAgR,SAAA,WACE,SAAUzQ,KAAK0C,QAAS1C,KAAK2N,iBAG/Bd,EAAApN,UAAAiR,gBAAA,SAAgBhO,GACd,OAAOA,EAAMwC,KAAOxC,EAAMwC,KAAO,MAAOqG,EAAYC,WAAW9I,EAAMuC,MAAM,WAzSzCG,GAEpByH,EAAAlC,aAAe,6BANhC1G,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,eACVC,SAAA,03KAMCO,EAAAA,UAAST,KAAA,CAAC,SAAU,CAAEmH,KAAMC,EAAAA,WAAY1G,QAAQ,yBAChDD,EAAAA,UAAST,KAAA,CAAC,OAAQ,CAAEmH,KAAMC,EAAAA,qCAC1B3G,EAAAA,UAAST,KAAA,CAAC,UAAW,CAAEmH,KAAMC,EAAAA,WAAY1G,QAAQ,4BACjD+L,EAAAA,aAAYzM,KAAA,CAAC,SAAU,CAAEmH,KAAMC,EAAAA,qCAG/BsF,EAAAA,gBAAe1M,KAAA,CAACyH,8BAChBiF,EAAAA,gBAAe1M,KAAA,CAAC0H,eAEhBvH,EAAAA,iCACAA,EAAAA,oCACAA,EAAAA,qBACAA,EAAAA,uBACAA,EAAAA,gCACAA,EAAAA,8BACAA,EAAAA,wBACAA,EAAAA,wBACAA,EAAAA,qBACAA,EAAAA,2BACAyC,EAAAA,iCACAA,EAAAA,UAduC3G,EAAA,CADvC2L,4DChCH,SAAA+E,IAAA,IAAAvL,EAAAf,EAAArC,MAAAlC,KAAA+D,EAAAtD,aAAAT,YAkBYsF,EAAAE,WAAa,IAAIC,EAAAA,aAEYH,EAAAC,aAAe,cAhBpB3F,EAAAiR,EAAAtM,GAkBlCsM,EAAApR,UAAAkG,QAAA,SAAQC,GACN5F,KAAKwF,WAAWO,KAAKH,IAGvBiL,EAAApR,UAAAqR,QAAA,WAWE,OATI9Q,KAAKwI,KACAxI,KAAKwI,KAAKrC,oBAEbnG,KAAKoG,KACAyK,EAAcE,OAEdF,EAAcG,WAM3BH,EAAApR,UAAA8G,cAAA,WACI,IAAIC,EAAa,SAIjB,OAHIxG,KAAKyG,UACPD,GAAc,IAAMxG,KAAKyG,SAEpBD,GAGXpH,OAAA4B,eAAI6P,EAAApR,UAAA,qBAAkB,KAAtB,WACE,OAAOoR,EAAcE,wCAGvB3R,OAAA4B,eAAI6P,EAAApR,UAAA,0BAAuB,KAA3B,WACE,OAAOoR,EAAcI,6CAGvB7R,OAAA4B,eAAI6P,EAAApR,UAAA,wBAAqB,KAAzB,WACE,OAAOoR,EAAcG,8CArDW5F,GAEXyF,EAAAE,OAAiB,IACjBF,EAAAI,YAAsB,SACtBJ,EAAAG,UAAoB,2BAR5C/M,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,YACVC,SAAA,+8KAQCC,EAAAA,oBACAA,EAAAA,sBACAA,EAAAA,0BACAA,EAAAA,uCACAA,EAAAA,uBACAA,EAAAA,kBACAA,EAAAA,0BAEAyC,EAAAA,6BAEAD,EAAAA,YAAW3C,KAAA,CAAC,sCCff,SAAAgN,0DAAsCtR,EAAAsR,EAAA3M,MAAAD,uBAJrCL,EAAAA,UAASC,KAAA,CAAC,CACPC,SAAU,eACVC,SAAA,2HAGDC,EAAAA,2BCDH,SAAA8M,0DAA0CvR,EAAAuR,EAAA5M,MAAAD,uBAJzCL,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,mBACVC,SAAU,6GAGTC,EAAAA,2BCDH,SAAA+M,0DAAmCxR,EAAAwR,EAAA7M,MAAAD,uBAJlCL,EAAAA,UAASC,KAAA,CAAC,CACPC,SAAU,YACVC,SAAA,wHAIDC,EAAAA,2BCFH,SAAAgN,0DAAoCzR,EAAAyR,EAAA9M,MAAAD,uBAJnCL,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,aACVC,SAAU,6GAGTC,EAAAA,2BCKD,SAAAiN,EAAoBC,GAApB,IAAAjM,EACEf,EAAA5E,KAAAK,OAAOA,YADWsF,EAAAiM,kBAAAA,WAPa3R,EAAA0R,EAAA/M,GAW1B+M,EAAA7R,UAAA+R,cAAA,WACLxR,KAAKuR,kBAAkBC,oBAZQ9M,uBAJlCT,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,YACVC,SAAA,kiCALMqN,EAAAA,iDASLpN,EAAAA,uBACAA,EAAAA,oBACAA,EAAAA,oBACAA,EAAAA,2BCMD,SAAAqN,EAAoBH,GAApB,IAAAjM,EACEf,EAAA5E,KAAAK,OAAOA,YADWsF,EAAAiM,kBAAAA,WAVc3R,EAAA8R,EAAAnN,GAc3BmN,EAAAjS,UAAA+R,cAAA,WACLxR,KAAKuR,kBAAkBC,oBAfS9M,uBAJnCT,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,aACVC,SAAA,2uEANMqN,EAAAA,iDAULpN,EAAAA,uBACAA,EAAAA,oBACAA,EAAAA,oBACAA,EAAAA,6BACAA,EAAAA,4BACAA,EAAAA,mBACAA,EAAAA,2BCDD,SAAAsN,EAAoBJ,GAApB,IAAAjM,EACEf,EAAA5E,KAAAK,OAAOA,YADWsF,EAAAiM,kBAAAA,WARqB3R,EAAA+R,EAAApN,GAYlCoN,EAAAlS,UAAA+R,cAAA,WACLxR,KAAKuR,kBAAkBC,oBAbgB9M,uBAJ1CT,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,qBACVC,SAAA,yoCALMqN,EAAAA,iDASLpN,EAAAA,uBACAA,EAAAA,oBACAA,EAAAA,oBACAA,EAAAA,kCACAA,EAAAA,2BCNH,SAAAuN,0DAAqChS,EAAAgS,EAAArN,MAAA6G,uBAJpCnH,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,cACVC,SAAA,ynDAICC,EAAAA,6BACAA,EAAAA,4BACAA,EAAAA,2BC6BD,SAAAwN,EAAoBN,GAApB,IAAAjM,EACEf,EAAA5E,KAAAK,OAAOA,YADWsF,EAAAiM,kBAAAA,WA7BiB3R,EAAAiS,EAAAtN,GAiC9BsN,EAAApS,UAAA+R,cAAA,WACLxR,KAAKuR,kBAAkBC,oBAlCY9M,uBAJtCT,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,gBACVC,SAAA,i/CATMqN,EAAAA,0DAaLpN,EAAAA,uBACAA,EAAAA,yBASAA,EAAAA,0BACAA,EAAAA,0BACAA,EAAAA,uBAEAA,EAAAA,sBACAA,EAAAA,kBAEAA,EAAAA,4BACAA,EAAAA,+BAIAuM,EAAAA,gBAAe1M,KAAA,CAAC0N,6BAGhBhB,EAAAA,gBAAe1M,KAAA,CAACgN,MAHiB/Q,EAAA,CADjC2L,2CAIkC3L,EAAA,CADlC2L,8DCrBH,SAAAgG,IAAA,IAAAxM,EAAAf,EAAArC,MAAAlC,KAAA+D,EAAAtD,aAAAT,YA6DEsF,EAAAyM,SAAW,SAACtP,KACZ6C,EAAA0M,QAAU,sBA1DgCpS,EAAAkS,EAAAvN,GA+C1CuN,EAAArS,UAAAwS,OAAA,WAEEjS,KAAKgS,WAWPF,EAAArS,UAAAyS,QAAA,SAAQxQ,GACN1B,KAAK0B,MAAQA,EACb1B,KAAKgS,UACLhS,KAAK+R,SAAS/R,KAAK0B,QAGrBoQ,EAAArS,UAAA0S,iBAAA,SAAiBpI,GACf/J,KAAK+R,SAAWhI,GAGlB+H,EAAArS,UAAA2S,kBAAA,SAAkBrI,GAChB/J,KAAKgS,QAAUjI,GAGjB+H,EAAArS,UAAA4S,iBAAA,SAAiB1L,GACf3G,KAAK0G,SAAWC,GAGlBmL,EAAArS,UAAA6S,WAAA,SAAW5Q,GACLA,IACF1B,KAAK0B,MAAQA,GAEf1B,KAAK+R,SAASrQ,IAQhBoQ,EAAArS,UAAA8S,UAAA,WACE,OAAOvS,KAAKwS,UAAYxS,KAAKwN,GAAK,QAAU,MAG9CsE,EAAArS,UAAAgT,WAAA,WACE,OAAOzS,KAAK0S,mBAAqB1S,KAAKwN,GAAK,SAAW,MAGxDsE,EAAArS,UAAAgR,SAAA,WACE,SAAUzQ,KAAK2S,qBAAuB3S,KAAK4S,WAAa5S,KAAK6S,UAC1D7S,KAAK8S,YAAc9S,KAAK8S,UAAU7N,MAAQjF,KAAK8S,UAAU5N,QAG9D4M,EAAArS,UAAA+S,QAAA,WACE,SAAUxS,KAAK+S,oBAAsB/S,KAAKgT,UAAYhT,KAAKiT,SAAYjT,KAAKkT,WAAalT,KAAKkT,SAASjO,MAAQjF,KAAKkT,SAAShO,QAG/H4M,EAAArS,UAAAiT,iBAAA,WACE,SAAU1S,KAAKmT,4BAA8BnT,KAAKoT,kBAAoBpT,KAAKqT,iBACxErT,KAAKsT,mBAAqBtT,KAAKsT,iBAAiBrO,MAAQjF,KAAKsT,iBAAiBpO,QAGnF4M,EAAArS,UAAAkT,kBAAA,WACE,QAAS3S,KAAK2N,gBAGhBmE,EAAArS,UAAAsT,iBAAA,WACE,QAAS/S,KAAKuT,eAGhBzB,EAAArS,UAAA0T,yBAAA,WACE,QAASnT,KAAKwT,0BAzH0B9O,uBAJ3CT,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,kBACVC,SAAU,mCAITC,EAAAA,wBACAA,EAAAA,8BAWAuM,EAAAA,gBAAe1M,KAAA,CAACwN,qBAChBrN,EAAAA,yBACAA,EAAAA,yBACAA,EAAAA,6BAUAuM,EAAAA,gBAAe1M,KAAA,CAACoN,oBAChBjN,EAAAA,wBACAA,EAAAA,wBACAA,EAAAA,qCAUAuM,EAAAA,gBAAe1M,KAAA,CAACyN,4BAChBtN,EAAAA,gCACAA,EAAAA,gCACAA,EAAAA,sBAGAoP,EAAAA,aAAYvP,KAAA,CAAC,eAhCmB/D,EAAA,CADhC2L,EAAiB,CAAEW,kBAAmB,sBAAuBC,qBAAsB,wDAcpDvM,EAAA,CAD/B2L,EAAiB,CAAEW,kBAAmB,qBAAsBC,qBAAsB,sDAc3CvM,EAAA,CADvC2L,EAAiB,CAAEW,kBAAmB,6BAA8BC,qBAAsB,wFCpB3F,SAAAgH,IAAA,IAAApO,EACEf,EAAA5E,KAAAK,OAAOA,YAGTsF,EAAAqO,eAAiB,SAACjS,GAA0B,OAAAA,YApBP9B,EAAA8T,EAAAnP,GAsBrCmP,EAAAjU,UAAAqF,YAAA,SAAYC,GACV/E,KAAK4T,sBACL5T,KAAKsS,WAAWtS,KAAK0B,QAGvBgS,EAAAjU,UAAAmU,oBAAA,WACE,IAAK5T,KAAKwN,GACR,MAAMrI,MAAM,kBAEd,IAAKnF,KAAK6J,KACR,MAAM1E,MAAM,oBAEd,IAAKnF,KAAK6S,WAAa7S,KAAK8S,YAAc9S,KAAK4S,UAC7C,MAAMzN,MAAM,sBAIhBuO,EAAAjU,UAAAoU,QAAA,WACE,OAAO7T,KAAK8T,KAAO9T,KAAK8T,KAAOJ,EAAkBK,cAGnDL,EAAAjU,UAAAyS,QAAA,SAAQxQ,GACN6C,EAAA9E,UAAMyS,QAAOvS,KAAAK,KAACA,KAAK2T,eAAe3T,KAAKgU,WAAWtS,MAGpDgS,EAAAjU,UAAA6S,WAAA,SAAW5Q,GACT1B,KAAK0B,MAAQ1B,KAAK2T,eAAe3T,KAAKgU,WAAWtS,IACjD1B,KAAK+R,SAAS/R,KAAK0B,QAGrBgS,EAAAjU,UAAAwU,uBAAA,SAAuBlK,GACrB/J,KAAK2T,eAAiB5J,GAGhB2J,EAAAjU,UAAAuU,WAAA,SAAWtS,GACjB,OAAOA,GAAQA,GAAc,OAzDMoQ,GAEX4B,EAAAK,aAAe,sBAb1C9P,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,gBACVC,SAAA,0kLACA8P,UAAW,CACT,CACEC,QAASC,EAAAA,kBACTC,YAAaC,EAAAA,YAAW,WAAM,OAAAZ,KAC9Ba,OAAO,uFAQV5P,EAAAA,UAAST,KAAA,CAAC,0BAEVG,EAAAA,oBACAA,EAAAA,2BACAA,EAAAA,2BACAA,EAAAA,gCAEAA,EAAAA,uBACAA,EAAAA,4BACAA,EAAAA,yBACAA,EAAAA,2BCbH,SAAAmQ,0DAA6C5U,EAAA4U,EAAAjQ,GAoB3CiQ,EAAA/U,UAAAgV,gBAAA,WAAA,IAAAnP,EAAAtF,KACEA,KAAK0U,gBAAmB1U,KAAK2U,SAASD,gBAAgB3L,cACtD/I,KAAK2U,SAASV,uBAAuBjU,KAAK2T,eAAetG,KAAKrN,OAC9DA,KAAKmS,iBAAiBnS,KAAK+R,UAC3B/R,KAAKoS,kBAAkBpS,KAAKgS,SAC5BhS,KAAK2U,SAAStC,iBAAiBrS,KAAK0G,UACpCV,YAAW,WAAM,OAAAV,EAAKqP,SAASrC,WAAWhN,EAAK5D,SAAQ,KAGzD8S,EAAA/U,UAAAqF,YAAA,SAAYC,GAAZ,IAAAO,EAAAtF,KACEA,KAAK4U,gBACD5U,KAAK2U,UACP3O,YAAW,WAAM,OAAAV,EAAKqP,SAAS7P,YAAYC,KAAU,KAIzDyP,EAAA/U,UAAAkU,eAAA,SAAejS,GACb,GAAIA,EACF,GAAI1B,KAAK6U,UAAW,CAClB,IAAInU,EAASV,KAAK8U,gBAAgBpT,GAElC,IADA1B,KAAK+U,qBAAuB/U,KAAKgV,WAAatU,EAAUV,KAAK6U,UAAY7U,KAAKgV,UAAY,IACnFtU,EAASV,KAAK6U,WACnBnT,EAAQA,EAAMuT,UAAU,EAAGvT,EAAMhB,OAAS,GAC1CA,EAASV,KAAK8U,gBAAgBpT,GAEhC1B,KAAKkV,UAAYlV,KAAK6U,UAAYnU,MAC7B,CACL,IAAMyU,EAAQzT,EAAM0T,MAAM,yBAA2B,GAErD,IADApV,KAAK+U,qBAAuB/U,KAAKgV,WAAcG,EAAMzU,OAASV,KAAKqV,SAAWrV,KAAKgV,UAAY,IACvFG,EAAMzU,OAASV,KAAKqV,UAC1B3T,EAAQA,EAAMuT,UAAU,EAAGvT,EAAM4T,YAAYH,EAAM7R,QAErDtD,KAAKkV,UAAYlV,KAAKqV,SAAWF,EAAMzU,YAGzCgB,EAAQ,GACR1B,KAAK+U,qBAAuB/U,KAAKgV,UACjChV,KAAKkV,UAAYlV,KAAK6U,UAAY7U,KAAK6U,UAAY7U,KAAKqV,SAI1D,OADArV,KAAK0U,gBAAgBhT,MAAQA,EACtBA,GAGT8S,EAAA/U,UAAAqV,gBAAA,SAAgBpT,GACd,IAAIhB,EAASgB,EAAMhB,OACnB,GAAIV,KAAKuV,WAAa7T,EAAO,CAC3B,IAAM8T,EAAe9T,EAAM0T,MAAM,qBACjC1U,GAAU8U,EAAeA,EAAa9U,OAAS,EAEjD,OAAOA,GAGT8T,EAAA/U,UAAAmV,cAAA,WACE,IAAK5U,KAAKwN,GACR,MAAMrI,MAAM,kBAEd,IAAKnF,KAAK6J,KACR,MAAM1E,MAAM,oBAEd,IAAKnF,KAAK6U,YAAc7U,KAAKqV,SAC3B,MAAMlQ,MAAM,sCAEd,IAAKnF,KAAKyQ,WACR,MAAMtL,MAAM,sBAIhBqP,EAAA/U,UAAA0S,iBAAA,SAAiBpI,GACf/J,KAAK+R,SAAWhI,EACZ/J,KAAK2U,WACP3U,KAAK2U,SAASxC,iBAAiBpI,GAC/B/J,KAAK+R,SAAW,SAACtP,OAIrB+R,EAAA/U,UAAA2S,kBAAA,SAAkBrI,GAChB/J,KAAKgS,QAAUjI,EACX/J,KAAK2U,WACP3U,KAAK2U,SAASvC,kBAAkBrI,GAChC/J,KAAKgS,QAAU,eAInBwC,EAAA/U,UAAA4S,iBAAA,SAAiB1L,GACf3G,KAAK0G,SAAWC,EACZ3G,KAAK2U,UACP3U,KAAK2U,SAAStC,iBAAiB1L,IAInC6N,EAAA/U,UAAA6S,WAAA,SAAW5Q,GACT1B,KAAK0B,MAAQA,EACT1B,KAAK2U,UACP3U,KAAK2U,SAASrC,WAAW5Q,OAlHcoQ,uBAX5C7N,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,uBACVC,SAAA,k3CACA8P,UAAW,CACT,CACEC,QAASC,EAAAA,kBACTC,YAAaC,EAAAA,YAAW,WAAM,OAAAE,KAC9BD,OAAO,0CAMV5P,EAAAA,UAAST,KAAA,CAACwP,iBAEVrP,EAAAA,oBACAA,EAAAA,oBACAA,EAAAA,2BACAA,EAAAA,yBACAA,EAAAA,yBACAA,EAAAA,wBACAA,EAAAA,yBACAA,EAAAA,gCACAA,EAAAA,mCACAA,EAAAA,uBACAA,EAAAA,2BCvBH,SAAAoR,0DAAoC7V,EAAA6V,EAAAlR,GAelCkR,EAAAhW,UAAAqF,YAAA,SAAYC,GACV/E,KAAK4U,iBAGPa,EAAAhW,UAAAgT,WAAA,WACE,OAAOzS,KAAK0V,QAAU1V,KAAK0V,QAAUnR,EAAA9E,UAAMgT,WAAU9S,KAAAK,OAGvDyV,EAAAhW,UAAA6S,WAAA,SAAW5Q,GAEP1B,KAAK0B,MADHA,GACWA,GAEA,GAEf1B,KAAK+R,SAAS/R,KAAK0B,QAGrB+T,EAAAhW,UAAAmV,cAAA,WACE,IAAK5U,KAAKwN,GACR,MAAMrI,MAAM,kBAEd,IAAKnF,KAAK6J,KACR,MAAM1E,MAAM,oBAEd,IAAKnF,KAAKyQ,WACR,MAAMtL,MAAM,yBAxCkB2M,uBAXnC7N,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,aACVC,SAAA,ivLACA8P,UAAW,CACT,CACEC,QAASC,EAAAA,kBACTC,YAAaC,EAAAA,YAAW,WAAM,OAAAmB,KAC9BlB,OAAO,sCAMVlQ,EAAAA,oBACAA,EAAAA,2BACAA,EAAAA,uBACAA,EAAAA,yBACAA,EAAAA,2BACAA,EAAAA,gCACAA,EAAAA,uBACAA,EAAAA,4BACAA,EAAAA,yBACAA,EAAAA,uBACAA,EAAAA,2BCpBH,SAAAsR,0DAAyC/V,EAAA+V,EAAApR,MAAAD,uBAJxCL,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,mBACVC,SAAA,sEAICC,EAAAA,2BCAH,SAAAuR,0DAAqChW,EAAAgW,EAAArR,MAAAoR,uBALpC1R,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,cACVC,SAAU,wEACV8P,UAAW,CAAC,CAACC,QAASwB,EAAqBtB,YAAaC,EAAAA,YAAW,WAAM,OAAAsB,0CAIxEvR,EAAAA,wBACAA,EAAAA,sBACAA,EAAAA,2BCJH,SAAAwR,0DAA0CjW,EAAAiW,EAAAtR,MAAAoR,uBALzC1R,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,oBACVC,SAAA,iCACA8P,UAAW,CAAC,CAACC,QAASwB,EAAqBtB,YAAaC,EAAAA,YAAW,WAAM,OAAAuB,0CAIxExR,EAAAA,qBAEAuM,EAAAA,gBAAe1M,KAAA,CAAC0R,wBCLnB,SAAAE,IAAA,IAAAxQ,EAAAf,EAAArC,MAAAlC,KAAA+D,EAAAtD,aAAAT,YAqBEsF,EAAAyQ,aAAc,WAVqBnW,EAAAkW,EAAAvR,GAYnCuR,EAAArW,UAAAmJ,SAAA,WACE5I,KAAK4T,uBAGPkC,EAAArW,UAAAqF,YAAA,SAAYC,GACV/E,KAAK4T,uBAGPkC,EAAArW,UAAAuW,mBAAA,WAAA,IAAA1Q,EAAAtF,KAEE,GADAA,KAAK+V,aAAc,GACd/V,KAAK0B,MAAO,CACf,IAAM+L,EAAQzN,KAAKiW,WACbC,EAAezI,MAAAA,OAAK,EAALA,EAAO6B,MAAK,SAAApH,GAAQ,OAAAA,EAAKiO,YAC1CD,GACFlQ,YAAW,WAAM,OAAAV,EAAKgN,WAAW4D,EAAaxU,YAKpDoU,EAAArW,UAAA6S,WAAA,SAAW5Q,GACT1B,KAAK0B,MAAQA,EACb1B,KAAK+R,SAASrQ,IAGhBoU,EAAArW,UAAAwW,SAAA,WACE,IAAMxI,EAAUzN,KAAKoW,eAAe1V,OAAS,EAAKV,KAAKoW,eAAeC,UAAYrW,KAAKyN,MACvF,GAAIzN,KAAK+V,eAAiBtI,GAA0B,IAAjBA,EAAM/M,QACvC,MAAM,IAAIyE,MAAM,sBAElB,OAAOsI,GAGTqI,EAAArW,UAAAmU,oBAAA,WACE,IAAK5T,KAAKwN,GACR,MAAMrI,MAAM,kBAEd,IAAKnF,KAAK6J,KACR,MAAM1E,MAAM,qBAIhB2Q,EAAArW,UAAA6W,eAAA,SAAepO,GACb,OAAOlI,KAAK0B,MAAQ1B,KAAK0B,QAAUwG,EAAKxG,MAAQwG,EAAKiO,UAGvDL,EAAArW,UAAA8W,cAAA,SAAcrO,GACZ,OAAOA,aAAgB2N,MA1DU/D,uBAXpC7N,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,cACVC,SAAA,swSACA8P,UAAW,CACT,CACEC,QAASC,EAAAA,kBACTC,YAAaC,EAAAA,YAAW,WAAM,OAAAwB,KAC9BvB,OAAO,sCAMVlQ,EAAAA,qBACAA,EAAAA,2BACAA,EAAAA,gCAEAA,EAAAA,uBACAA,EAAAA,8BAEAuM,EAAAA,gBAAe1M,KAAA,CAACyR,wBCLjB,SAAAa,WACEjS,EAAA5E,KAAAK,OAAOA,YAT8BJ,EAAA4W,EAAAjS,GAgBvCiS,EAAA/W,UAAAyS,QAAA,SAAQxQ,GACFA,GAASA,EAAMhB,OAAS,GAAKgB,EAAM,GACrC1B,KAAK0B,MAAQA,EAAM,GAEnB1B,KAAK0B,MAAQ,KAEf1B,KAAKgS,UACLhS,KAAK+R,SAAS/R,KAAK0B,QAGrB8U,EAAA/W,UAAAqF,YAAA,SAAYC,GACV/E,KAAK4T,uBAGP4C,EAAA/W,UAAAmU,oBAAA,WACE,IAAK5T,KAAKwN,GACR,MAAMrI,MAAM,kBAEd,IAAKnF,KAAK6J,KACR,MAAM1E,MAAM,oBAEd,IAAKnF,KAAK6S,WAAa7S,KAAK8S,YAAc9S,KAAK4S,UAC7C,MAAMzN,MAAM,yBAtCuB2M,uBAXxC7N,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,mBACVC,SAAA,isKACA8P,UAAW,CACT,CACEC,QAASC,EAAAA,kBACTG,OAAO,EACPF,YAAaC,EAAAA,YAAW,WAAM,OAAAkC,+EAMjCnS,EAAAA,2BACAA,EAAAA,gCACAA,EAAAA,uBACAA,EAAAA,sBACAA,EAAAA,eCdH,sBCHgBoS,GAAkBC,GAChC,OAAO,SAACrW,EAAa2L,GACnB,IAAMC,EAAiB,IAAID,EAE3B5M,OAAO4B,eAAeX,EAAQ2L,EAAa,CACzCG,IAAG,SAACzK,GACF1B,KAAKiM,GAAkBvK,EACvB1B,KAAK0W,MAEP9J,IAAG,WACD,OAAO5M,KAAKiM,2BDXnBhI,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,wBACVC,SAAU,wCAGTC,EAAAA,2BEHH,SAAAsS,YAEEA,EAAAlX,UAAAmX,UAAA,SAAUnQ,EAAmBoQ,GAC3B,IAAIC,EAAerQ,EAAQgI,QAAO,SAAAjO,GAAK,OAAAA,KAAGuW,KAAK,KAI/C,OAH4B,IAAxBD,EAAapW,QAAgBmW,IAC/BC,EAAeD,GAEVC,6BAVVE,EAAAA,KAAI9S,KAAA,CAAC,CACJ2F,KAAM,sCCYR,SAAAoN,IAAA,IAAA3R,EAAAf,EAAArC,MAAAlC,KAAA+D,EAAAtD,aAAAT,YAOEsF,EAAA4R,UAAW,EAKD5R,EAAA6R,YAAc,IAAI1R,EAAAA,sBAPgB7F,EAAAqX,EAAA1S,GAsB5C0S,EAAAxX,UAAAuW,mBAAA,WACE,IAAKhW,KAAK6J,KACR,MAAM1E,MAAM,yBAEd,IAAKnF,KAAK2N,eACR,MAAMxI,MAAM,8BA3B4BiS,wBAL7CnT,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,yBACVC,SAAA,gGACA8P,UAAW,CAAC,CAACC,QAASiD,EAAyB/C,YAAaC,EAAAA,YAAW,WAAM,OAAA2C,yCAM5E5S,EAAAA,oBACAA,EAAAA,qBACAA,EAAAA,2BACAyC,EAAAA,iCACAzC,EAAAA,oBAEAA,EAAAA,yBACAA,EAAAA,4BACAA,EAAAA,2BACAA,EAAAA,uBACAA,EAAAA,yBACAA,EAAAA,wBAEAM,EAAAA,UAAST,KAAA,CAAC,QAAS,CAAEU,QAAQ,4BAG7BgM,EAAAA,gBAAe1M,KAAA,CAACwN,MAAgBvR,EAAA,CADhC2L,8DCtBH,SAAAuL,IAAA,IAAA/R,EAAAf,EAAArC,MAAAlC,KAAA+D,EAAAtD,aAAAT,YAOEsF,EAAA4R,UAAW,EAKD5R,EAAA6R,YAAc,IAAI1R,EAAAA,sBAPiB7F,EAAAyX,EAAA9S,GAgB7C8S,EAAA5X,UAAAuW,mBAAA,WACE,IAAKhW,KAAK6J,KACR,MAAM1E,MAAM,yBAEd,IAAKnF,KAAK2N,eACR,MAAMxI,MAAM,8BArB6BiS,wBAL9CnT,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,0BACVC,SAAA,gGACA8P,UAAW,CAAC,CAACC,QAASiD,EAAyB/C,YAAaC,EAAAA,YAAW,WAAM,OAAA+C,yCAM5EhT,EAAAA,oBACAA,EAAAA,qBACAA,EAAAA,2BACAyC,EAAAA,iCACAzC,EAAAA,wBAEAM,EAAAA,UAAST,KAAA,CAAC,QAAS,CAAEU,QAAQ,qCAC7BgM,EAAAA,gBAAe1M,KAAA,CAAC0R,2BAGhBhF,EAAAA,gBAAe1M,KAAA,CAACwN,MAAgBvR,EAAA,CADhC2L,8DC/BH,SAAAwL,IAAA,IAAAhS,EAAAf,EAAArC,MAAAlC,KAAA+D,EAAAtD,aAAAT,YAOEsF,EAAA4R,UAAW,EACX5R,EAAAiS,QAAUjS,WAHoC1F,EAAA0X,EAAA/S,MAAA6S,wBAL/CnT,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,2BACVC,SAAA,qFACA8P,UAAW,CAAC,CAACC,QAASiD,EAAyB/C,YAAaC,EAAAA,YAAW,WAAM,OAAAgD,qDAO5E3S,EAAAA,UAAST,KAAA,CAAC,iBAAkB,CAAEU,QAAQ,0BC6DvC,SAAA4S,EAA+BC,GAA/B,IAAAnS,EACEf,EAAA5E,KAAAK,OAAOA,YADsBsF,EAAAmS,iBAAAA,EAjCrBnS,EAAAwH,YAAkD,IAAIrH,EAAAA,aA+BxDH,EAAAyQ,aAAc,WArCiBnW,EAAA4X,EAAAjT,GA2CvCiT,EAAA/X,UAAAqF,YAAA,mBACE,IAAK9E,KAAKwN,GACR,MAAMrI,MAAM,kBAEd,GAAInF,KAAKyN,UACP,IAAmB,IAAAS,EAAA1K,EAAAxD,KAAKyN,OAAKU,EAAAD,EAAAtM,QAAAuM,EAAAnM,KAAAmM,EAAAD,EAAAtM,OAAE,CAA1B,IAAMsG,EAAIiG,EAAAzM,MACb,IAAKwG,EAAKqP,UAAYrP,EAAK2B,KACzB,MAAM1E,MAAM,yBAEd,IAAK+C,EAAKqP,UAAYvX,KAAK0X,aAAaxP,GACtC,MAAM/C,MAAM,8HAMpBqS,EAAA/X,UAAAuW,mBAAA,WACEhW,KAAK+V,aAAc,GAGrByB,EAAA/X,UAAAkY,mBAAA,WACE,IAAMlK,EAAQzN,KAAKiW,WACnB,IAAKxI,GAA0B,IAAjBA,EAAM/M,OAClB,MAAMyE,MAAM,uBAIhBqS,EAAA/X,UAAA6S,WAAA,SAAW5Q,GAAX,IAAA4D,EAAAtF,KACM0B,IACF1B,KAAK0B,MAAQA,EACC1B,KAAKiW,WACbpI,SAAQ,SAAA3F,GACZ,IAAM9E,EAAIkC,EAAK5D,MAAM4D,EAAKsS,YAAY1P,IACtCA,EAAKxG,MAAQ0B,GAAQ,QAGnBpD,KAAKyN,OACPzN,KAAK8M,YAAY/G,KAAK/F,KAAKyN,QAG/BzN,KAAK+R,SAASrQ,IAGhB8V,EAAA/X,UAAAoY,iBAAA,WAAA,IAAAvS,EAAAtF,KACOA,KAAK+V,cAIL/V,KAAK0B,QACR1B,KAAK0B,MAAQ,IAGD1B,KAAKiW,WACbpI,SAAQ,SAAA3F,GAAQ,OAAA5C,EAAK5D,MAAM4D,EAAKsS,YAAY1P,IAASA,EAAKxG,SAChE1B,KAAK+R,SAAS/R,KAAK0B,SAGrB8V,EAAA/X,UAAAqY,iBAAA,SAAiB5P,EAA0B6P,GACzC,IAAMC,EAAWhY,KAAK4X,YAAY1P,GAC7BlI,KAAK0B,QACR1B,KAAK0B,MAAQ,IAGX1B,KAAK0B,MAAMsW,KAAcD,IAC3B/X,KAAK0B,MAAMsW,GAAYD,EACvB/X,KAAK+R,SAAS/R,KAAK0B,QAEfwG,aAAgB+O,IAA4B/O,aAAgBmP,KAC9DnP,EAAKiP,YAAYpR,KAAKgS,GAGpB/X,KAAKyN,QACPvF,EAAKxG,MAAQqW,EACb/X,KAAK8M,YAAY/G,KAAK/F,KAAKyN,UAKjC+J,EAAA/X,UAAAwY,uBAAA,SAAuBC,GACrBA,EAASC,OAASnY,KAAKoY,UACvBF,EAASxC,QAAU1V,KAAKyS,aACxByF,EAASG,aAAc,IAAI1B,IAAmBC,UAAU,CAAC5W,KAAKuS,YAAavS,KAAKyS,cAAe,MAC/FyF,EAASnN,KAAO,QAChBmN,EAAS1G,iBAMXgG,EAAA/X,UAAAwW,SAAA,WACE,OAAOjW,KAAKsY,iBAAmBtY,KAAKsY,gBAAgB5X,OAASV,KAAKsY,gBAAgBjC,UAAYrW,KAAKyN,OAGrG+J,EAAA/X,UAAA8Y,gBAAA,SAAgBrQ,GACd,OAAOA,aAAgB+O,IAA4B/O,aAAgBmP,GAA4BnP,EAAK2K,SAAW,MAGjH2E,EAAA/X,UAAA+Y,iBAAA,SAAiBtQ,GACf,OAAOA,EAAK4K,UAAY5K,EAAK4K,UAAY,CAAE7N,KAAMiD,EAAK0K,YAGxD4E,EAAA/X,UAAAgZ,YAAA,WACE,SAAUzY,KAAK0Y,wBAA0B1Y,KAAK2Y,sBAAwB3Y,KAAK4Y,WAAa5Y,KAAK6Y,cACvF7Y,KAAK8Y,aAAe9Y,KAAK8Y,WAAW7T,MAAQjF,KAAK8Y,WAAW5T,OAAUlF,KAAK+Y,aAGnFvB,EAAA/X,UAAAiZ,qBAAA,WACE,QAAS1Y,KAAKgZ,mBAGhBxB,EAAA/X,UAAAkZ,mBAAA,WACE,QAAS3Y,KAAKiZ,iBAGhBzB,EAAA/X,UAAAmY,YAAA,SAAY1P,GACV,OAAOlI,KAAKkZ,WAAalZ,KAAKkZ,WAAa,IAAMhR,EAAK2B,KAAO3B,EAAK2B,MAGpE2N,EAAA/X,UAAA0Z,qBAAA,SAAqBjR,GACnB,OAAOA,aAAgBmP,GACrBnP,EAAKkR,wBAAwB/C,UAAYnO,EAAKmR,aAGlD7B,EAAA/X,UAAA6Z,uBAAA,SAAuBpR,GACrB,OAAOA,EAAKqP,mBAAmBD,GAA6BpP,EAAKqP,QAAQgC,eAAiB,MAG5F/B,EAAA/X,UAAA+Z,mBAAA,SAAmBtR,GACjB,OAAOA,EAAKqP,QAAQrS,KAAOgD,EAAKqP,QAAQrS,KAAO,MAAOqG,EAAYC,WAAWtD,EAAKqP,QAAQtS,MAAM,QAGlGuS,EAAA/X,UAAAga,aAAA,SAAavR,GACX,IAAIwR,EAMJ,OAJEA,EADExR,aAAgBmP,GACDnP,EAAKkR,yBAA2BlR,EAAKkR,wBAAwB1Y,OAAS,EAEtEwH,EAAKmR,YAEjBnR,EAAKgP,UAAYwC,GAG1BlC,EAAA/X,UAAAiY,aAAA,SAAaxP,GACX,SAAWA,EAAK4K,YAAc5K,EAAK4K,UAAU7N,MAAQiD,EAAK4K,UAAU5N,OAAUgD,EAAK0K,eAzL9Cd,wBAXxC7N,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,mBACVC,SAAA,m+lBACA8P,UAAW,CACT,CACEC,QAASC,EAAAA,kBACTC,YAAaC,EAAAA,YAAW,WAAM,OAAAkD,MAC9BjD,OAAO,kDApBJoF,EAAAA,iBAAgBvZ,WAAA,CAAA,CAAAoI,KA+DVoR,EAAAA,qDArCZvV,EAAAA,qBAGAA,EAAAA,2BACAyC,EAAAA,2BAGAzC,EAAAA,uBACAA,EAAAA,gCACAA,EAAAA,4BACAA,EAAAA,kBACAA,EAAAA,4BASAA,EAAAA,yBACAA,EAAAA,0BACAA,EAAAA,0BACAA,EAAAA,+BAEAuM,EAAAA,gBAAe1M,KAAA,CAACkT,8BAGhBxG,EAAAA,gBAAe1M,KAAA,CAAC2N,4BAGhBjB,EAAAA,gBAAe1M,KAAA,CAAC0N,sBAEhBjN,EAAAA,UAAST,KAAA,CAAC,YAAa,CAAEU,QAAQ,OA9BzBzE,EAAA,CADRsW,GAAkB,kDAKVtW,EAAA,CADRsW,GAAkB,uDAsBiBtW,EAAA,CADnC2L,EAAiB,CAAEW,kBAAmB,qEAILtM,EAAA,CADjC2L,+DCED,SAAA+N,EAA4BC,EAAiCvI,GAA7D,IAAAjM,EACEf,EAAA5E,KAAAK,OAAOA,KACP,GAF0BsF,EAAAwU,OAAAA,EAAiCxU,EAAAiM,kBAAAA,EAPnDjM,EAAAyU,cAAmC,IAAItU,EAAAA,aAEjDH,EAAAiJ,MAAQ,GAODjJ,EAAKwU,OACR,MAAM3U,MAAM,kEA3BsBvF,EAAAia,EAAAtV,GA+BtCsV,EAAApa,UAAAmJ,SAAA,WACE5I,KAAK8Z,OAAOE,4BAGdH,EAAApa,UAAAwa,YAAA,WACEja,KAAK8Z,OAAOE,4BAGdH,EAAApa,UAAAqF,YAAA,SAAYC,GACV,IAAK/E,KAAK0B,QAAU1B,KAAKuX,QACvB,MAAMpS,MAAM,mDAGVnF,KAAKka,UAAYla,KAAKma,aAAena,KAAKoa,UAC5Cpa,KAAKqa,WAAWra,KAAKka,SACrBla,KAAK8Z,OAAOQ,kCACgBC,IAAnBva,KAAKwa,WAA2Bxa,KAAKwa,YAAcxa,KAAK0B,OACjE1B,KAAK8Z,OAAOQ,4BAEdta,KAAKwa,UAAYxa,KAAK0B,MAElB1B,KAAKwN,KAAOxN,KAAKya,SACnBza,KAAK8Z,OAAOE,4BAIhBH,EAAApa,UAAAgV,gBAAA,WACEzU,KAAKqa,WAAWra,KAAKka,SACrBla,KAAK8Z,OAAOQ,6BAGdT,EAAApa,UAAA4a,WAAA,SAAWH,GACTla,KAAKka,QAAUA,EACfla,KAAKma,YAAcD,EACnBla,KAAK+Z,cAAchU,KAAKmU,GACxBla,KAAKuR,kBAAkBC,iBAOzBqI,EAAApa,UAAAib,cAAA,WACE,OAAO1a,KAAK2a,mBAAqB3a,KAAK2a,kBAAkBja,OAAS,GAAKV,KAAKya,QAAUza,KAAKya,QAAU,aAAe,MAGrHZ,EAAApa,UAAAmb,WAAA,WACE5a,KAAKqa,WAAWra,KAAK6a,kBACrB7a,KAAK8Z,OAAOQ,6BAGdT,EAAApa,UAAA2a,OAAA,WACE,QAASpa,KAAK8a,cAGhBjB,EAAApa,UAAAob,eAAA,WACE,OAAO7a,KAAK8a,aAAe9a,KAAK8a,aAAa/R,cAAcmR,QAAU,MAGvEL,EAAApa,UAAAsb,cAAA,SAAcxM,GACZ,GAAIvO,KAAKwN,GACPxN,KAAKya,QAAUza,KAAKwN,OACf,CACL,IAAM+C,EAAWvQ,KAAK8Z,OAAOvJ,SAAWvQ,KAAK8Z,OAAOvJ,SAAWvQ,KAAK8Z,OAAOjQ,KAEzE7J,KAAKya,QADO,IAAVlM,EACagC,EAEGA,EAAQ,IAAIhC,EAI9BvO,KAAKgb,oBAAsBhb,KAAKgb,mBAAmBta,OAAS,IAC9DV,KAAKgb,mBAAmBxO,MAAMyO,IAAMjb,KAAKya,SAGvCza,KAAK2a,mBAAqB3a,KAAK2a,kBAAkBja,OAAS,IAC5DV,KAAK2a,kBAAkBnO,MAAMgB,GAAKxN,KAAK0a,iBAGzC1a,KAAKuR,kBAAkBC,iBAOzBqI,EAAApa,UAAAyb,YAAA,WACE,OAAOlb,KAAK8Z,OAAOoB,aAGrBrB,EAAApa,UAAA0b,SAAA,WACE,OAAOnb,KAAK8Z,OAAOpH,oBAGrBmH,EAAApa,UAAA2b,aAAA,WACE,OAAOpb,KAAK8Z,OAAOjQ,MAGrBgQ,EAAApa,UAAA4b,eAAA,WACE,OAAQrb,KAAK8Z,OAAOrB,cAA0C,KAA1BzY,KAAK8Z,OAAOzB,gBAlIZ/T,wBAtBvCL,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,kBACVC,SAAA,u6FACAkX,WAAY,CACVhS,EAAAA,QAAQ,qBAAsB,CAC5BpC,EAAAA,MAAM,OAAQ8B,EAAAA,MAAM,CAClBuS,QAAS,MACT3E,UAAW,iBAEb1P,EAAAA,MAAM,IAAK8B,EAAAA,MAAM,CACfuS,QAAS,MACT3E,UAAW,gBAEb4E,EAAAA,WAAW,SAAU,CACnBC,EAAAA,QAAQ,oBAEVD,EAAAA,WAAW,SAAU,CACnBE,EAAAA,MAAM,KAAMC,EAAAA,eAAgB,CAACC,UAAU,uDAtBvCC,GAAezb,WAAA,CAAA,CAAAoI,KAmDRsT,EAAAA,cApEbrK,EAAAA,4DA8CC9M,EAAAA,UAAST,KAAA,CAAC,qBAEVG,EAAAA,oBACAA,EAAAA,qBACAA,EAAAA,2BACAA,EAAAA,wBACAA,EAAAA,uBACAA,EAAAA,uBACAA,EAAAA,kCAEAuM,EAAAA,gBAAe1M,KAAA,CAACwN,8BAChBd,EAAAA,gBAAe1M,KAAA,CAACoN,mCAChBV,EAAAA,gBAAe1M,KAAA,CAACgN,oBAEhB7M,EAAAA,6BACAyC,EAAAA,6BCtCH,SAAA+U,IAAA,IAAAvW,EAAAf,EAAArC,MAAAlC,KAAA+D,EAAAtD,aAAAT,YAmCYsF,EAAAwH,YAAc,IAAIrH,EAAAA,aAmBpBH,EAAAyW,UAAY,KACZzW,EAAA0W,kBAAmB,EACnB1W,EAAAyQ,aAAc,WA7CanW,EAAAic,EAAAtX,GA+CnCsX,EAAApc,UAAA2O,UAAA,WAAA,IAAA9I,EAAAtF,KACE,GAAuB,OAAnBA,KAAK+b,YAA0C,KAAnB/b,KAAK+b,WAAqB/b,KAAK0B,OAAwB,KAAf1B,KAAK0B,OAAgB,CAC3F1B,KAAK0B,MAAQ1B,KAAK+b,UAClB/b,KAAK+b,UAAY,KACjB,IAAME,EAAcjc,KAAKkc,0BACzBlW,YAAW,WACTV,EAAKyM,SAASzM,EAAK5D,OACfua,GAAe3W,EAAKmI,OAASnI,EAAKmI,MAAM/M,OAAS,GACnD4E,EAAKwH,YAAY/G,KAAKT,EAAKmI,UAKjC,GAAIzN,KAAKgc,iBAAkB,CACzB,IAAMG,EAAgBnc,KAAKoc,gBAC3B,KAAID,EAAczb,OAAS,GAGzB,MAAMyE,MAAM,sBAFZgX,EAActO,SAAQ,SAAC3F,EAAMqG,GAAU,OAAArG,EAAK6S,cAAcxM,MAI5DvO,KAAKgc,kBAAmB,IAI5BH,EAAApc,UAAAuW,mBAAA,WACE,IAAKhW,KAAK6J,KACR,MAAM1E,MAAM,oBAGdnF,KAAK+V,aAAc,GAOrB8F,EAAApc,UAAA6S,WAAA,SAAW5Q,GACLA,IACF1B,KAAK+b,UAAYra,IAIrBma,EAAApc,UAAA4c,iBAAA,WACMrc,KAAK+V,aACP/V,KAAKga,2BAEPha,KAAKsc,6BAIPT,EAAApc,UAAA8c,aAAA,WACE,GAAIvc,KAAK+V,cAAgB/V,KAAK6J,KAC5B,MAAM1E,MAAM,oBAGVnF,KAAK+V,aACP/V,KAAKga,2BAGPha,KAAKsc,6BAOCT,EAAApc,UAAA6c,0BAAA,WACFtc,KAAKuT,eACPvT,KAAKwc,mBAAmBxc,KAAKuT,eAG3BvT,KAAKwT,uBACPxT,KAAKyc,2BAA2Bzc,KAAKwT,uBAKlCxT,KAAKuT,eAAkBvT,KAAKwT,wBAAyBxT,KAAKgZ,mBAC7DhZ,KAAKiY,uBAAuBjY,KAAKgZ,oBAIrC6C,EAAApc,UAAAua,yBAAA,WACEha,KAAKgc,kBAAmB,GAMlBH,EAAApc,UAAAyc,wBAAA,WAAA,IAAA5W,EAAAtF,KACF0c,GAAe,EACbP,EAAgBnc,KAAKoc,gBAY3B,OAXID,EAAczb,OAAS,GACzByb,EAActO,SAAQ,SAAA3F,GAChBA,EAAKxG,QAAU4D,EAAK5D,OAAUwG,EAAKiS,YAG5BjS,EAAKxG,QAAU4D,EAAK5D,OAASwG,EAAKiS,cAC3CjS,EAAKmS,YAAW,GAChBqC,GAAe,IAJfxU,EAAKmS,YAAW,GAChBqC,GAAe,MAOdA,GAMTb,EAAApc,UAAA6a,0BAAA,WAAA,IAAAhV,EAAAtF,KAMEgG,YAAY,WACV,IAAMyH,EAAQnI,EAAK8W,gBACnB,GAAI3O,GAASA,EAAM/M,OAAS,GAAK+M,EAAMuB,WAAU,SAAA9G,GAAQ,OAACA,EAAKkS,WAAalS,EAAKqP,WAAW,EAAG,CAC7F,IAAMoF,EAAclP,EAAM6B,MAAK,SAAApH,GAAQ,OAAAA,EAAK2S,mBAAqB3S,EAAKqP,WACtEjS,EAAKyW,UAAYY,EAAcA,EAAYjb,MAAQ,SAInD1B,KAAKyN,OAASzN,KAAKyN,MAAM/M,OAAS,GACpCV,KAAK8M,YAAY/G,KAAK/F,KAAKyN,QAQ/BoO,EAAApc,UAAAwY,uBAAA,SAAuBC,GACrBA,EAASC,OAASnY,KAAKoY,UACvBF,EAASxC,QAAU1V,KAAKyS,aACxByF,EAASG,aAAc,IAAI1B,IAAmBC,UAAU,CAAC5W,KAAKuS,YAAavS,KAAKyS,cAAe,MAC/FyF,EAAS1G,iBAGXqK,EAAApc,UAAA+c,mBAAA,SAAmBI,GACjBA,EAAKpP,GAAKxN,KAAKuS,YACfqK,EAAKpL,gBAEDxR,KAAK0Y,wBACP1Y,KAAKiY,uBAAuBjY,KAAKgZ,oBAIrC6C,EAAApc,UAAAgd,2BAAA,SAA2BI,GACzBA,EAAarP,GAAKxN,KAAKyS,aACvBoK,EAAarL,gBAETxR,KAAK0Y,wBACP1Y,KAAKiY,uBAAuBjY,KAAKgZ,oBAIrC6C,EAAApc,UAAAqd,aAAA,WACM9c,KAAK0Y,wBACP1Y,KAAKiY,uBAAuBjY,KAAKgZ,oBAIrC6C,EAAApc,UAAAsd,qBAAA,WACM/c,KAAK0Y,wBACP1Y,KAAKiY,uBAAuBjY,KAAKgZ,oBASrC6C,EAAApc,UAAAgZ,YAAA,WACE,SAAUzY,KAAK0Y,wBAA0B1Y,KAAK2Y,sBAAwB3Y,KAAK4Y,WAAa5Y,KAAK6Y,cAC1F7Y,KAAK8Y,aAAe9Y,KAAK8Y,WAAW7T,MAAQjF,KAAK8Y,WAAW5T,OAAUlF,KAAK+Y,aAGhF8C,EAAApc,UAAAiZ,qBAAA,WACE,QAAS1Y,KAAKgZ,mBAGhB6C,EAAApc,UAAAkZ,mBAAA,WACE,QAAS3Y,KAAKiZ,iBAGhB4C,EAAApc,UAAAgT,WAAA,WACE,OAAOzS,KAAK0S,mBAAqB1S,KAAKsQ,cAAgB,SAAW,MAGnEuL,EAAApc,UAAA8S,UAAA,WACE,OAAOvS,KAAKwS,UAAYxS,KAAKsQ,cAAgB,QAAU,MAGzDuL,EAAApc,UAAA6Q,YAAA,WACE,OAAOtQ,KAAKuQ,SAAWvQ,KAAKuQ,SAAWvQ,KAAK6J,MAG9CgS,EAAApc,UAAA2c,cAAA,WACE,IAAID,EAAgB,GAMpB,OALInc,KAAKgd,qBAAuBhd,KAAKgd,oBAAoBtc,OAAS,EAChEyb,EAAgBnc,KAAKgd,oBAAoB3G,UAChCrW,KAAKid,sBAAwBjd,KAAKid,qBAAqBvc,OAAS,IACzEyb,EAAgBnc,KAAKid,qBAAqB5G,WAErC8F,MA7P0BrK,wBAXpC7N,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,cACVC,SAAA,m7WACA8P,UAAW,CACT,CACEC,QAASC,EAAAA,kBACTC,YAAaC,EAAAA,YAAW,WAAM,OAAAuH,MAC9BtH,OAAO,+CAgBVlQ,EAAAA,yBACAA,EAAAA,0BACAA,EAAAA,0BACAA,EAAAA,wBAGAA,EAAAA,oBAGAA,EAAAA,qBAEAA,EAAAA,2BACAyC,EAAAA,iCAEAzC,EAAAA,2BACAA,EAAAA,wBACAA,EAAAA,uBACAA,EAAAA,2BACAA,EAAAA,iCAGAuM,EAAAA,gBAAe1M,KAAA,CAAC2N,4BAGhBjB,EAAAA,gBAAe1M,KAAA,CAAC0N,gCAEhBhB,EAAAA,gBAAe1M,KAAA,CAAC2V,uBAEhBlV,EAAAA,UAAST,KAAA,CAAC,YAAa,CAAEU,QAAQ,kCACjC+L,EAAAA,aAAYzM,KAAA,CAAC2V,OAvBL1Z,EAAA,CADRsW,GAAkB,qDAIVtW,EAAA,CADRsW,GAAkB,6CAaiBtW,EAAA,CADnC2L,EAAiB,CAAEW,kBAAmB,qEAILtM,EAAA,CADjC2L,+DCAD,SAAAoR,EAA4BC,EAAyC5L,GAArE,IAAAjM,EACEf,EAAA5E,KAAAK,OAAOA,KACP,GAF0BsF,EAAA6X,WAAAA,EAAyC7X,EAAAiM,kBAAAA,EAR3DjM,EAAAyU,cAAmC,IAAItU,EAAAA,aACvCH,EAAA8X,oBAAyC,IAAI3X,EAAAA,cAShDH,EAAK6X,WACR,MAAMhY,MAAM,wEAhCyBvF,EAAAsd,EAAA3Y,GAoCzC2Y,EAAAzd,UAAAmJ,SAAA,WACE5I,KAAKmd,WAAWnD,4BAGlBkD,EAAAzd,UAAAwa,YAAA,WACEja,KAAKmd,WAAWnD,4BAGlBkD,EAAAzd,UAAAqF,YAAA,SAAYC,GACV,IAAK/E,KAAK0B,MACR,MAAMyD,MAAM,uCAGVnF,KAAKka,UAAYla,KAAKma,aAAena,KAAKoa,UAC5Cpa,KAAKqa,WAAWra,KAAKka,SACrBla,KAAKmd,WAAWE,qCACY9C,IAAnBva,KAAKwa,WAA2Bxa,KAAKwa,YAAcxa,KAAK0B,OACjE1B,KAAKmd,WAAWE,+BAGfrd,KAAKsd,uBAAyBtd,KAAKud,mBAAqBvd,KAAKoa,WAC9Dpa,KAAKwd,wBAAwBxd,KAAKsd,sBAClCtd,KAAKmd,WAAWE,gCAIlBrd,KAAKwa,UAAYxa,KAAK0B,MAElB1B,KAAKwN,KAAOxN,KAAKyd,YACnBzd,KAAKmd,WAAWnD,4BAIpBkD,EAAAzd,UAAAgV,gBAAA,WACEzU,KAAKqa,WAAWra,KAAKka,SACrBla,KAAKwd,wBAAwBxd,KAAKsd,sBAClCtd,KAAKmd,WAAWE,gCAGlBH,EAAAzd,UAAAib,cAAA,WACE,OAAO1a,KAAK2a,mBAAqB3a,KAAK2a,kBAAkBja,OAAS,GAAKV,KAAKyd,WAAazd,KAAKyd,WAAa,aAAe,MAG3HP,EAAAzd,UAAAmb,WAAA,WAEE,IAAM8C,EAAQ1d,KAAK8a,aAAa/R,cAC5B/I,KAAK2d,kBACHD,EAAME,UACRF,EAAMxD,SAAU,EAChBwD,EAAME,UAAW,GACPF,EAAMxD,UAChBwD,EAAME,UAAW,EACjBF,EAAMG,eAAgB,IAG1B7d,KAAKqa,WAAWqD,EAAMxD,SACtBla,KAAKwd,wBAAwBE,EAAMG,eACnC7d,KAAKmd,WAAWE,gCAGlBH,EAAAzd,UAAA4a,WAAA,SAAWH,GACTla,KAAKka,QAAUA,EACfla,KAAKma,YAAcD,EACnBla,KAAK+Z,cAAchU,KAAKmU,GACxBla,KAAKuR,kBAAkBC,iBAGzB0L,EAAAzd,UAAA+d,wBAAA,SAAwBF,GACtBtd,KAAKsd,qBAAuBA,EAC5Btd,KAAKud,kBAAoBD,EACzBtd,KAAKod,oBAAoBrX,KAAKuX,GAC9Btd,KAAKuR,kBAAkBC,iBAGzB0L,EAAAzd,UAAAqe,uBAAA,iBACQJ,EAAyB,QAApBjT,EAAGzK,KAAK8a,oBAAY,IAAArQ,OAAA,EAAAA,EAAE1B,cAC7B2U,IACE1d,KAAKsd,sBACPI,EAAME,UAAW,EACjBF,EAAMG,eAAgB,GACbH,EAAME,WACfF,EAAME,UAAW,EACjBF,EAAMG,eAAgB,KAK5BX,EAAAzd,UAAA2a,OAAA,WACE,QAASpa,KAAK8a,cAGhBoC,EAAAzd,UAAAse,SAAA,WACE,IAAML,EAAQ1d,KAAK8a,aAAa/R,cAChC,OAAO2U,EAAMxD,SAAWwD,EAAMG,cAAgB7d,KAAK0B,MAAQ,MAG7Dwb,EAAAzd,UAAAue,iBAAA,SAAiBzP,GACf,GAAIvO,KAAKwN,GACPxN,KAAKyd,WAAazd,KAAKwN,OAClB,CACL,IAAM+C,EAAWvQ,KAAKmd,WAAW5M,SAAWvQ,KAAKmd,WAAW5M,SAAWvQ,KAAKmd,WAAWtT,KAErF7J,KAAKyd,WADO,IAAVlP,EACgBgC,EAEGA,EAAQ,IAAIhC,EAIjCvO,KAAKgb,oBAAsBhb,KAAKgb,mBAAmBta,OAAS,IAC9DV,KAAKgb,mBAAmBxO,MAAMyO,IAAMjb,KAAKyd,YAGvCzd,KAAK2a,mBAAqB3a,KAAK2a,kBAAkBja,OAAS,IAC5DV,KAAK2a,kBAAkBnO,MAAMgB,GAAKxN,KAAK0a,iBAGzC1a,KAAKuR,kBAAkBC,iBAOzB0L,EAAAzd,UAAAyb,YAAA,WACE,OAAOlb,KAAKmd,WAAWjC,aAGzBgC,EAAAzd,UAAA0b,SAAA,WACE,OAAOnb,KAAKmd,WAAWzK,oBAGzBwK,EAAAzd,UAAAwe,gBAAA,WACE,OAAOje,KAAKmd,WAAWtT,MAGzBqT,EAAAzd,UAAA4b,eAAA,WACE,OAAQrb,KAAKmd,WAAW1E,cAA8C,KAA9BzY,KAAKmd,WAAW9E,gBA5KjB3T,wBAtB1CT,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,qBACVC,SAAA,yxFACAkX,WAAY,CACVhS,EAAAA,QAAQ,qBAAsB,CAC5BpC,EAAAA,MAAM,OAAQ8B,EAAAA,MAAM,CAClBuS,QAAS,MACT3E,UAAW,iBAEb1P,EAAAA,MAAM,IAAK8B,EAAAA,MAAM,CACfuS,QAAS,MACT3E,UAAW,gBAEb4E,EAAAA,WAAW,SAAU,CACnBC,EAAAA,QAAQ,oBAEVD,EAAAA,WAAW,SAAU,CACnBE,EAAAA,MAAM,KAAMC,EAAAA,eAAgB,CAACC,UAAU,uDArBvCsC,GAAmB9d,WAAA,CAAA,CAAAoI,KAuDZsT,EAAAA,cAtEErK,EAAAA,4DA2Cd9M,EAAAA,UAAST,KAAA,CAAC,qBAEVG,EAAAA,qBACAA,EAAAA,oBACAA,EAAAA,2BACAA,EAAAA,wBACAA,EAAAA,+BACAA,EAAAA,oCAGAA,EAAAA,uBACAA,EAAAA,kCAEAuM,EAAAA,gBAAe1M,KAAA,CAACwN,8BAChBd,EAAAA,gBAAe1M,KAAA,CAACoN,mCAChBV,EAAAA,gBAAe1M,KAAA,CAACgN,oBAEhB7M,EAAAA,6BAEAyC,EAAAA,oCACAA,EAAAA,UAVQ3G,EAAA,CADRsW,GAAkB,0FC/BrB,SAAAyH,IAAA,IAAA5Y,EAAAf,EAAArC,MAAAlC,KAAA+D,EAAAtD,aAAAT,YAkCYsF,EAAAwH,YAAc,IAAIrH,EAAAA,aAmBpBH,EAAAyW,UAAY,KACZzW,EAAA0W,kBAAmB,EACnB1W,EAAAyQ,aAAc,WA5CiBnW,EAAAse,EAAA3Z,GA8CvC2Z,EAAAze,UAAA2O,UAAA,WAAA,IAAA9I,EAAAtF,KAaE,GAZuB,OAAnBA,KAAK+b,YAAuB/b,KAAK+b,UAAUrb,OAAS,GAAMV,KAAK0B,OAAS1B,KAAK0B,MAAMhB,OAAS,KAC9FV,KAAK0B,MAAQ1B,KAAK+b,UAClB/b,KAAK+b,UAAY,KACjB/b,KAAKme,6BACLnY,YAAW,WACTV,EAAKyM,SAASzM,EAAK5D,OACf4D,EAAKmI,OAASnI,EAAKmI,MAAM/M,OAAS,GACpC4E,EAAKwH,YAAY/G,KAAKT,EAAKmI,WAK7BzN,KAAKgc,iBAAkB,CACzB,IAAMG,EAAgBnc,KAAKoe,mBAC3B,KAAIjC,EAAczb,OAAS,GAGzB,MAAMyE,MAAM,sBAFZgX,EAActO,SAAQ,SAAC3F,EAAMqG,GAAU,OAAArG,EAAK8V,iBAAiBzP,MAI/DvO,KAAKgc,kBAAmB,IAI5BkC,EAAAze,UAAAuW,mBAAA,WACE,IAAKhW,KAAK6J,KACR,MAAM1E,MAAM,oBAGdnF,KAAK+V,aAAc,GAOrBmI,EAAAze,UAAA6S,WAAA,SAAW5Q,GACLA,IACF1B,KAAK+b,UAAYra,IAIrBwc,EAAAze,UAAA4c,iBAAA,WACMrc,KAAK+V,aACP/V,KAAKga,2BAEPha,KAAKsc,6BAIP4B,EAAAze,UAAA8c,aAAA,WACE,GAAIvc,KAAK+V,cAAgB/V,KAAK6J,KAC5B,MAAM1E,MAAM,oBAGVnF,KAAK+V,aACP/V,KAAKga,2BAGPha,KAAKsc,6BAOC4B,EAAAze,UAAA6c,0BAAA,WACFtc,KAAKuT,eACPvT,KAAKwc,mBAAmBxc,KAAKuT,eAG3BvT,KAAKwT,uBACPxT,KAAKyc,2BAA2Bzc,KAAKwT,uBAKlCxT,KAAKuT,eAAkBvT,KAAKwT,wBAAyBxT,KAAKgZ,mBAC7DhZ,KAAKiY,uBAAuBjY,KAAKgZ,oBAIrCkF,EAAAze,UAAAua,yBAAA,WACEha,KAAKgc,kBAAmB,GAOlBkC,EAAAze,UAAA0e,2BAAA,WAAA,IAAA7Y,EAAAtF,KACAmc,EAAgBnc,KAAKoe,mBACvBjC,EAAczb,OAAS,GACzByb,EAActO,SAAQ,SAAA3F,GACpB,IAAMmW,EAAc/Y,EAAK5D,MAAMsN,WAAU,SAAA5L,GAAK,OAAAA,IAAM8E,EAAKxG,UAAU,EAC/D2c,IAAgBnW,EAAKiS,aACvBjS,EAAKmS,WAAWgE,OASxBH,EAAAze,UAAA4d,6BAAA,WAAA,IAAA/X,EAAAtF,KAMEgG,YAAY,WACV,IAAMyH,EAAQnI,EAAK8Y,mBACf3Q,GAASA,EAAM/M,OAAS,GAAK+M,EAAMuB,WAAU,SAAA9G,GAAQ,OAACA,EAAKkS,YAAY,IACzE9U,EAAKyW,UAAYtO,EAAMgB,QAAO,SAAAvG,GAAQ,OAAAA,EAAKgS,WAAS5L,KAAI,SAAApG,GAAQ,OAAAA,EAAK6V,kBAIrE/d,KAAKyN,OAASzN,KAAKyN,MAAM/M,OAAS,GACpCV,KAAK8M,YAAY/G,KAAK/F,KAAKyN,QAQ/ByQ,EAAAze,UAAAwY,uBAAA,SAAuBC,GACrBA,EAASC,OAASnY,KAAKoY,UACvBF,EAASxC,QAAU1V,KAAKyS,aACxByF,EAASG,aAAc,IAAI1B,IAAmBC,UAAU,CAAC5W,KAAKuS,YAAavS,KAAKyS,cAAe,MAC/FyF,EAAS1G,iBAGX0M,EAAAze,UAAA+c,mBAAA,SAAmBI,GACjBA,EAAKpP,GAAKxN,KAAKuS,YACfqK,EAAKpL,gBAEDxR,KAAK0Y,wBACP1Y,KAAKiY,uBAAuBjY,KAAKgZ,oBAIrCkF,EAAAze,UAAAgd,2BAAA,SAA2BI,GACzBA,EAAarP,GAAKxN,KAAKyS,aACvBoK,EAAarL,gBAETxR,KAAK0Y,wBACP1Y,KAAKiY,uBAAuBjY,KAAKgZ,oBAIrCkF,EAAAze,UAAAqd,aAAA,WACM9c,KAAK0Y,wBACP1Y,KAAKiY,uBAAuBjY,KAAKgZ,oBAIrCkF,EAAAze,UAAAsd,qBAAA,WACM/c,KAAK0Y,wBACP1Y,KAAKiY,uBAAuBjY,KAAKgZ,oBAUrCkF,EAAAze,UAAAgZ,YAAA,WACE,SAAUzY,KAAK0Y,wBAA0B1Y,KAAK2Y,sBAAwB3Y,KAAK4Y,WAAa5Y,KAAK6Y,cAC1F7Y,KAAK8Y,aAAe9Y,KAAK8Y,WAAW7T,MAAQjF,KAAK8Y,WAAW5T,OAAUlF,KAAK+Y,aAGhFmF,EAAAze,UAAAiZ,qBAAA,WACE,QAAS1Y,KAAKgZ,mBAGhBkF,EAAAze,UAAAkZ,mBAAA,WACE,QAAS3Y,KAAKiZ,iBAGhBiF,EAAAze,UAAAgT,WAAA,WACE,OAAOzS,KAAK0S,mBAAqB1S,KAAKsQ,cAAgB,cAAWiK,GAGnE2D,EAAAze,UAAA8S,UAAA,WACE,OAAOvS,KAAKwS,UAAYxS,KAAKsQ,cAAgB,aAAUiK,GAGzD2D,EAAAze,UAAA6Q,YAAA,WACE,OAAOtQ,KAAKuQ,SAAWvQ,KAAKuQ,SAAWvQ,KAAK6J,MAG9CqU,EAAAze,UAAA2e,iBAAA,WACE,IAAIjC,EAAgB,GAMpB,OALInc,KAAKse,wBAA0Bte,KAAKse,uBAAuB5d,OAAS,EACtEyb,EAAgBnc,KAAKse,uBAAuBjI,UACnCrW,KAAKue,yBAA2Bve,KAAKue,wBAAwB7d,OAAS,IAC/Eyb,EAAgBnc,KAAKue,wBAAwBlI,WAExC8F,MAxP8BrK,wBAXxC7N,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,kBACVC,SAAA,k6WACA8P,UAAW,CACT,CACEC,QAASC,EAAAA,kBACTC,YAAaC,EAAAA,YAAW,WAAM,OAAA4J,MAC9B3J,OAAO,+CAeVlQ,EAAAA,yBACAA,EAAAA,0BACAA,EAAAA,0BACAA,EAAAA,wBAGAA,EAAAA,oBAGAA,EAAAA,qBAEAA,EAAAA,2BACAyC,EAAAA,iCAEAzC,EAAAA,2BACAA,EAAAA,wBACAA,EAAAA,uBACAA,EAAAA,2BACAA,EAAAA,iCAGAuM,EAAAA,gBAAe1M,KAAA,CAAC2N,4BAGhBjB,EAAAA,gBAAe1M,KAAA,CAAC0N,mCAEhBhB,EAAAA,gBAAe1M,KAAA,CAACgZ,uBAEhBvY,EAAAA,UAAST,KAAA,CAAC,YAAa,CAAEU,QAAQ,qCACjC+L,EAAAA,aAAYzM,KAAA,CAACgZ,OAvBL/c,EAAA,CADRsW,GAAkB,qDAIVtW,EAAA,CADRsW,GAAkB,6CAaiBtW,EAAA,CADnC2L,EAAiB,CAAEW,kBAAmB,qEAILtM,EAAA,CADjC2L,mDC5DH,kCAJC7H,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,uBACVC,SAAU,yCAGTC,EAAAA,4BCDH,SAAAma,IAAA,IAAAlZ,EAAAf,EAAArC,MAAAlC,KAAA+D,EAAAtD,aAAAT,YAkBYsF,EAAA6R,YAAoC,IAAI1R,EAAAA,sBAbT7F,EAAA4e,EAAAja,GAoBzCia,EAAA/e,UAAAuW,mBAAA,WACE,IAAKhW,KAAK6J,KACR,MAAM1E,MAAM,wBAEd,IAAKnF,KAAK2N,eACR,MAAMxI,MAAM,6BAzByBsZ,yBAL1Cxa,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,iBACVC,SAAA,gGACA8P,UAAW,CAAC,CAACC,QAASsK,GAAwBpK,YAAaC,EAAAA,YAAW,WAAM,OAAAkK,yCAG3Ena,EAAAA,oBACAA,EAAAA,yBACAA,EAAAA,yBACAA,EAAAA,wBACAA,EAAAA,yBACAA,EAAAA,qBACAA,EAAAA,4BACAA,EAAAA,uBACAA,EAAAA,uBACAA,EAAAA,yBACAA,EAAAA,2BAEAyC,EAAAA,+BAGA8J,EAAAA,gBAAe1M,KAAA,CAACwN,qBAEhB/M,EAAAA,UAAST,KAAA,CAAC,QAAS,CAAEU,QAAQ,OAFGzE,EAAA,CADhC2L,8DCpBH,SAAA4S,IAAA,IAAApZ,EAAAf,EAAArC,MAAAlC,KAAA+D,EAAAtD,aAAAT,YAkBYsF,EAAA6R,YAAoC,IAAI1R,EAAAA,sBAbP7F,EAAA8e,EAAAna,GAoB3Cma,EAAAjf,UAAAuW,mBAAA,WACE,IAAKhW,KAAK6J,KACR,MAAM1E,MAAM,0BAEd,IAAKnF,KAAK2N,eACR,MAAMxI,MAAM,+BAzB2BsZ,yBAL5Cxa,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,mBACVC,SAAA,gGACA8P,UAAW,CAAC,CAACC,QAASsK,GAAwBpK,YAAaC,EAAAA,YAAW,WAAM,OAAAoK,yCAG3Era,EAAAA,oBACAA,EAAAA,yBACAA,EAAAA,yBACAA,EAAAA,wBACAA,EAAAA,yBACAA,EAAAA,qBACAA,EAAAA,4BACAA,EAAAA,uBACAA,EAAAA,uBACAA,EAAAA,yBACAA,EAAAA,2BAEAyC,EAAAA,+BAGA8J,EAAAA,gBAAe1M,KAAA,CAACwN,qBAEhB/M,EAAAA,UAAST,KAAA,CAAC,QAAS,CAAEU,QAAQ,OAFGzE,EAAA,CADhC2L,8DCrBH,SAAA6S,IAAA,IAAArZ,EAAAf,EAAArC,MAAAlC,KAAA+D,EAAAtD,aAAAT,YAgBYsF,EAAA6R,YAAoC,IAAI1R,EAAAA,sBAXR7F,EAAA+e,EAAApa,GAkB1Coa,EAAAlf,UAAAuW,mBAAA,WACE,IAAKhW,KAAK6J,KACR,MAAM1E,MAAM,yBAEd,IAAKnF,KAAK2N,eACR,MAAMxI,MAAM,8BAvB0BsZ,yBAL3Cxa,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,kBACVC,SAAA,gGACA8P,UAAW,CAAC,CAACC,QAASsK,GAAwBpK,YAAaC,EAAAA,YAAW,WAAM,OAAAqK,yCAG3Eta,EAAAA,oBACAA,EAAAA,wBACAA,EAAAA,yBACAA,EAAAA,qBACAA,EAAAA,4BACAA,EAAAA,uBACAA,EAAAA,uBACAA,EAAAA,yBACAA,EAAAA,2BAEAyC,EAAAA,+BAGA8J,EAAAA,gBAAe1M,KAAA,CAACwN,qBAEhB/M,EAAAA,UAAST,KAAA,CAAC,QAAS,CAAEU,QAAQ,OAFGzE,EAAA,CADhC2L,8DCpBH,SAAA8S,IAAA,IAAAtZ,EAAAf,EAAArC,MAAAlC,KAAA+D,EAAAtD,aAAAT,YAOEsF,EAAAiS,QAAUjS,WAFmC1F,EAAAgf,EAAAra,MAAAka,yBAL9Cxa,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,0BACVC,SAAA,mFACA8P,UAAW,CAAC,CAACC,QAASsK,GAAwBpK,YAAaC,EAAAA,YAAW,WAAM,OAAAsK,qDAM3Eja,EAAAA,UAAST,KAAA,CAAC,iBAAkB,CAAEU,QAAQ,0BCkFvC,SAAAia,EAA+BpH,GAA/B,IAAAnS,EACEf,EAAA5E,KAAAK,OAAOA,YADsBsF,EAAAmS,iBAAAA,EAjCrBnS,EAAAwH,YAAiD,IAAIrH,EAAAA,aA+BvDH,EAAAyQ,aAAc,WAvDgBnW,EAAAif,EAAAta,GA6DtCsa,EAAApf,UAAAqF,YAAA,WACE9E,KAAK4U,iBAGPiK,EAAApf,UAAAuW,mBAAA,WACEhW,KAAK+V,aAAc,GAGrB8I,EAAApf,UAAAqf,iBAAA,WACO9e,KAAKyN,QACRzN,KAAKyN,MAAQ,CACX,CACE5D,KAAM,MACNpD,QAAS,OACToO,UAAW,GAEb,CACEhL,KAAM,MACNpD,QAAS,OACToO,UAAW,GAEb,CACEhL,KAAM,MACNpD,QAAS,OACToO,UAAW,MAMnBgK,EAAApf,UAAAmV,cAAA,WACE,IAAK5U,KAAKwN,GACR,MAAMrI,MAAM,mBAIhB0Z,EAAApf,UAAA6S,WAAA,SAAW5Q,GAAX,IAAA4D,EAAAtF,MACEA,KAAK0B,MAAQA,EACT1B,KAAK0B,SACO1B,KAAKiW,WACbpI,SAAQ,SAAA3F,GAAQ,OAAAA,EAAKxG,MAAQ4D,EAAK5D,MAAM4D,EAAKsS,YAAY1P,OAE3DlI,KAAKyN,OACPzN,KAAK8M,YAAY/G,KAAK/F,KAAKyN,QAG/BzN,KAAK+R,SAASrQ,IAGhBmd,EAAApf,UAAAwY,uBAAA,SAAuBC,GACrBA,EAASC,OAASnY,KAAKoY,UACvBF,EAASxC,QAAU1V,KAAKyS,aACxByF,EAASG,aAAc,IAAI1B,IAAmBC,UAAU,CAAC5W,KAAKuS,YAAavS,KAAKyS,cAAe,MAC/FyF,EAASnN,KAAO,QAChBmN,EAAS1G,iBAGXqN,EAAApf,UAAAoY,iBAAA,WAAA,IAAAvS,EAAAtF,KACE,GAAKA,KAAK+V,YAAV,CAIK/V,KAAK0B,QACR1B,KAAK0B,MAAQ,IAGD1B,KAAKiW,WACbpI,SAAQ,SAAA3F,GAAQ,OAAA5C,EAAK5D,MAAM4D,EAAKsS,YAAY1P,IAASA,EAAKxG,SAChE,IAAMqd,EAAS,GACf3f,OAAO4f,OAAOD,EAAQ/e,KAAK0B,OAC3B1B,KAAK+R,SAASgN,KAGhBF,EAAApf,UAAAqY,iBAAA,SAAiB5P,EAAyB6P,GACxC,IAAMC,EAAWhY,KAAK4X,YAAY1P,GAKlC,GAJKlI,KAAK0B,QACR1B,KAAK0B,MAAQ,IAGX1B,KAAK0B,MAAMsW,KAAcD,EAAW,CACtC/X,KAAK0B,MAAMsW,GAAYD,GAAaA,OAAYwC,EAChD,IAAMwE,EAAS,GACf3f,OAAO4f,OAAOD,EAAQ/e,KAAK0B,OAC3B1B,KAAK+R,SAASgN,IACV7W,aAAgBsW,IAAyBtW,aAAgBwW,IAA2BxW,aAAgByW,KACtGzW,EAAKiP,YAAYpR,KAAKgS,GAGpB/X,KAAKyN,QACPvF,EAAKxG,MAAQqW,EACb/X,KAAK8M,YAAY/G,KAAK/F,KAAKyN,UAKjCoR,EAAApf,UAAAgZ,YAAA,WACE,SAAUzY,KAAK0Y,wBAA0B1Y,KAAK2Y,sBAAwB3Y,KAAK4Y,WAAa5Y,KAAK6Y,cACvF7Y,KAAK8Y,aAAe9Y,KAAK8Y,WAAW7T,MAAQjF,KAAK8Y,WAAW5T,OAAUlF,KAAK+Y,aAGnF8F,EAAApf,UAAAiZ,qBAAA,WACE,QAAS1Y,KAAKgZ,mBAGhB6F,EAAApf,UAAAkZ,mBAAA,WACE,QAAS3Y,KAAKiZ,iBAGhB4F,EAAApf,UAAA0T,yBAAA,WACE,QAASnT,KAAKwT,uBAGhBqL,EAAApf,UAAAmY,YAAA,SAAY1P,GACV,OAAOlI,KAAKkZ,WAAalZ,KAAKkZ,WAAa,IAAMhR,EAAK2B,KAAO3B,EAAK2B,MAGpEgV,EAAApf,UAAAwf,aAAA,SAAa/W,GASX,OAPIA,EAAK4K,YAAc5K,EAAK4K,UAAU7N,MAAQiD,EAAK4K,UAAU5N,MAC/CgD,EAAK4K,UAEL,CACV7N,KAAMiD,EAAK0K,UAAY1K,EAAK0K,UAAY1K,EAAK2B,KAAKqV,gBAMxDL,EAAApf,UAAA8Y,gBAAA,SAAgBrQ,GACd,OAAOA,aAAgBsW,IAAyBtW,aAAgBwW,IAA2BxW,aAAgByW,GACzGzW,EAAK2K,SAAW,MAGpBgM,EAAApf,UAAAwW,SAAA,WACE,IAAIxI,EAiBJ,OAfEA,EADEzN,KAAKmf,yBAA2Bnf,KAAKmf,wBAAwBze,OAAS,EAChEV,KAAKmf,wBAAwB9I,UAC5BrW,KAAKyN,MACNzN,KAAKyN,MACJzN,KAAK+V,YACN8I,EAAmBO,aAEnB,IAGJvR,SAAQ,SAAA3F,GACZ,KAAKA,EAAK2B,MAAU3B,aAAgB0W,IAClC,MAAM,IAAIzZ,MAAM,4BAIbsI,GAGToR,EAAApf,UAAA6Z,uBAAA,SAAuBpR,GACrB,OAAOA,EAAKqP,mBAAmBqH,GAA4B1W,EAAKqP,QAAQgC,eAAiB,MAE3FsF,EAAApf,UAAA+Z,mBAAA,SAAmBtR,GACjB,OAAOA,EAAKqP,QAAQrS,KAAOgD,EAAKqP,QAAQrS,KAAO,MAAOqG,EAAYC,WAAWtD,EAAKqP,QAAQtS,MAAM,WA3N5D6M,GAEvB+M,GAAAO,aAAe,CAC5B,CACEvV,KAAM,MACNpD,QAAS,OACToO,UAAW,GAEb,CACEhL,KAAM,QACNpD,QAAS,OACToO,UAAW,GAEb,CACEhL,KAAM,OACNpD,QAAS,OACToO,UAAW,yBA3BhB5Q,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,kBACVC,SAAA,w2eACA8P,UAAW,CACT,CACEC,QAASC,EAAAA,kBACTC,YAAaC,EAAAA,YAAW,WAAM,OAAAuK,MAC9BtK,OAAO,kDAtBJoF,EAAAA,iBAAgBvZ,WAAA,CAAA,CAAAoI,KAmFVoR,EAAAA,qDArCZvV,EAAAA,qBAGAA,EAAAA,2BACAyC,EAAAA,2BAGAzC,EAAAA,uBACAA,EAAAA,gCACAA,EAAAA,4BACAA,EAAAA,kBACAA,EAAAA,iCAGAuM,EAAAA,gBAAe1M,KAAA,CAAC2N,4BAGhBjB,EAAAA,gBAAe1M,KAAA,CAAC0N,oCAEhBhB,EAAAA,gBAAe1M,KAAA,CAACua,0BAShBpa,EAAAA,yBACAA,EAAAA,0BACAA,EAAAA,0BACAA,EAAAA,yBAEAM,EAAAA,UAAST,KAAA,CAAC,YAAa,CAAEU,QAAQ,OA9BzBzE,EAAA,CADRsW,GAAkB,kDAKVtW,EAAA,CADRsW,GAAkB,uDAQiBtW,EAAA,CADnC2L,EAAiB,CAAEW,kBAAmB,qEAILtM,EAAA,CADjC2L,+DC3DH,SAAAuT,IAAA,IAAA/Z,EAAAf,EAAArC,MAAAlC,KAAA+D,EAAAtD,aAAAT,YAmBYsF,EAAAE,WAAa,IAAIC,EAAAA,aAE3BH,EAAA5D,MAAQ,YAV8B9B,EAAAyf,EAAA9a,GAatC8a,EAAA5f,UAAAqF,YAAA,SAAYC,GACV/E,KAAK4T,uBAGPyL,EAAA5f,UAAAmU,oBAAA,WACE,IAAK5T,KAAKwN,GACR,MAAMrI,MAAM,kBAEd,IAAKnF,KAAKyQ,WACR,MAAMtL,MAAM,sBAIhBka,EAAA5f,UAAAgV,gBAAA,WACE,GAAIzU,KAAKsf,QAAUtf,KAAKsf,OAAO5e,OAAS,EACtC,MAAMyE,MAAM,wCAIhBka,EAAA5f,UAAAkG,QAAA,SAAQC,GACD5F,KAAK0G,UACR1G,KAAKwF,WAAWO,KAAKH,IAIzByZ,EAAA5f,UAAA8f,UAAA,WACE,OAAOvf,KAAKsf,QAAUtf,KAAKsf,OAAO5e,OAAS,MAvCPoR,wBAXvC7N,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,kBACVC,SAAA,q5KACA8P,UAAW,CACT,CACEC,QAASC,EAAAA,kBACTC,YAAaC,EAAAA,YAAW,WAAM,OAAA+K,MAC9B9K,OAAO,yCAMV3D,EAAAA,gBAAe1M,KAAA,CAACmB,wBAEhBhB,EAAAA,uBACAA,EAAAA,6BACAA,EAAAA,2BACAA,EAAAA,0BACAyC,EAAAA,4BChBD,SAAA0Y,EAAmBC,GAAAzf,KAAAyf,YAAAA,SAEnBD,EAAA/f,UAAAqF,YAAA,SAAYC,WACV,GAAI/E,KAAKkI,KACPlI,KAAKkI,KAAKwX,gBAAkB1f,KAAKyf,gBAC5B,CAAA,IAAIzf,KAAK0B,QAAS1B,KAAKyN,MAO5B,MAAMtI,MAAM,0CANZ,IAAmB,IAAA+I,EAAA1K,EAAAxD,KAAKyN,OAAKU,EAAAD,EAAAtM,QAAAuM,EAAAnM,KAAAmM,EAAAD,EAAAtM,OAAE,CAA1B,IAAMsG,EAAIiG,EAAAzM,MACTwG,EAAKxG,QAAU1B,KAAK0B,QACtBwG,EAAKwX,gBAAkB1f,KAAKyf,4IAvBrCE,EAAAA,UAASzb,KAAA,CAAC,CACTC,SAAU,gEAJyCyb,EAAAA,8CAalDvb,EAAAA,qBAEAA,EAAAA,qBACAA,EAAAA,4BCZH,SAAAwb,IAAA,IAAAva,EAAAf,EAAArC,MAAAlC,KAAA+D,EAAAtD,aAAAT,YAOYsF,EAAAE,WAAa,IAAIC,EAAAA,sBAHoB7F,EAAAigB,EAAAtb,MAAAD,wBAJhDL,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,4BACVC,SAAU,8GAGTC,EAAAA,0BAEAyC,EAAAA,6BCPH,SAAAgZ,IAAA,IAAAxa,EAAAf,EAAArC,MAAAlC,KAAA+D,EAAAtD,aAAAT,YAOYsF,EAAAE,WAAa,IAAIC,EAAAA,sBAHsB7F,EAAAkgB,EAAAvb,MAAAD,wBAJlDL,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,8BACVC,SAAU,8GAGTC,EAAAA,0BAEAyC,EAAAA,6BCmDD,SAAAiZ,EAAoBxO,GAApB,IAAAjM,EACEf,EAAA5E,KAAAK,OAAOA,YADWsF,EAAAiM,kBAAAA,EAtBVjM,EAAA0a,WAAiC,IAAIva,EAAAA,aACrCH,EAAA2a,YAAiC,IAAIxa,EAAAA,aAiB/CH,EAAA4a,gBAAiB,EACjB5a,EAAA6a,mBAAoB,EACpB7a,EAAA8a,oBAAqB,WAlCaxgB,EAAAmgB,EAAAxb,GAwClCwb,EAAAtgB,UAAA4gB,YAAA,WACErgB,KAAKggB,WAAWja,QAGlBga,EAAAtgB,UAAAqR,QAAA,WACE,IAAItI,EAOJ,OANIxI,KAAKsgB,cACP9X,EAAOxI,KAAKsgB,cAAc9X,KAAOxI,KAAKsgB,cAAc9X,KAAKrC,oBAAsB,KACtEnG,KAAKugB,KAAK/X,OACnBA,EAAOxI,KAAKugB,KAAK/X,KAAOxI,KAAKugB,KAAK/X,KAAKrC,oBAAsB,MAGxDqC,GAGTuX,EAAAtgB,UAAAqF,YAAA,SAAYC,GACV,IAAK/E,KAAKwN,GACR,MAAM,IAAIrI,MAAM,oBAIpB4a,EAAAtgB,UAAA+gB,oBAAA,SAAoBta,GAClB,MAAM,IAAIf,MAASe,EAAO,iBAG5B6Z,EAAAtgB,UAAAghB,wBAAA,SAAwBva,GAItB,IAHA,IAAMwa,EAAgCxa,EAAQ6C,cAAc4X,WACxDC,GAAU,EACVC,GAAa,EACR9f,EAAI,EAAGA,EAAI2f,EAAOhgB,SAAWkgB,EAAS7f,IAAK,CAClD,IAAMmH,EAAOwY,EAAOxY,KAAKnH,GACrBmH,EAAK4Y,WAAaC,KAAKC,WAAa9Y,EAAK+Y,YAAYvgB,OAAS,EAChEmgB,GAAa,EACJ3Y,EAAK4Y,WAAaC,KAAKG,cAAgBhZ,EAAK4Y,WAAaC,KAAKI,qBACvEP,GAAU,EACVC,GAAa,GAIjB,IAAMO,EAAsBphB,KAAKogB,mBACjCpgB,KAAKogB,oBAAsBS,EAC3B7gB,KAAKmgB,kBAAoBS,EACzB5gB,KAAKuR,kBAAkBC,gBAElBqP,GAAeO,GAClBphB,KAAKwgB,oBAAoB,gBAI7BT,EAAAtgB,UAAA4hB,gBAAA,SAAgBnZ,EAAuBtC,GACrC5F,KAAKigB,YAAYla,KAAKH,IAElBsC,aAAgB2X,IAA+B3X,aAAgB4X,KACjE5X,EAAK1C,WAAWO,KAAKH,IAIzBma,EAAAtgB,UAAA6hB,uBAAA,SAAuBC,GACrBvhB,KAAKkgB,gBAAkBqB,EACvBvhB,KAAKuR,kBAAkBC,iBAGzBuO,EAAAtgB,UAAA+hB,gBAAA,WACE,IAAI/a,EAAU,8DAMd,OALIzG,KAAKyhB,gBAAkBzhB,KAAKyhB,eAAehb,QAC7CA,EAAUzG,KAAKyhB,eAAehb,QACrBzG,KAAK0hB,OAAS1hB,KAAK0hB,MAAMjb,UAClCA,EAAUzG,KAAK0hB,MAAMjb,SAEhBA,GAGTsZ,EAAAtgB,UAAAkiB,sBAAA,WACE,IAAIlb,EAAU,uCAMd,OALIzG,KAAK4hB,sBAAwB5hB,KAAK4hB,qBAAqBnb,QACzDA,EAAUzG,KAAK4hB,qBAAqBnb,QAC3BzG,KAAK6hB,aAAe7hB,KAAK6hB,YAAYpb,UAC9CA,EAAUzG,KAAK6hB,YAAYpb,SAEtBA,GAGTsZ,EAAAtgB,UAAAqiB,gBAAA,WACE,OAAO9hB,KAAK+hB,yBAA2B/hB,KAAK+hB,wBAAwBrhB,OAAS,EAAIV,KAAK+hB,wBAAwB1L,UAC1GrW,KAAKgiB,cAGXjC,EAAAtgB,UAAAwiB,kBAAA,WACE,OAAOjiB,KAAKkiB,2BAA6BliB,KAAKkiB,0BAA0BxhB,OAAS,EAAIV,KAAKkiB,0BAA0B7L,UAChHrW,KAAKmiB,mBAjIuBzd,wBAJnCT,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,aACVC,SAAA,yuTAvBAqN,EAAAA,qDA2BCpN,EAAAA,2BACAA,EAAAA,4BACAA,EAAAA,8BACAA,EAAAA,oBACAA,EAAAA,4BACAA,EAAAA,6BAEAA,EAAAA,kBACAA,EAAAA,uBACAA,EAAAA,sBACAA,EAAAA,0BAEAyC,EAAAA,4BACAA,EAAAA,+BAGA8J,EAAAA,gBAAe1M,KAAA,CAACmN,iCAGhBT,EAAAA,gBAAe1M,KAAA,CAACiN,6BAGhBP,EAAAA,gBAAe1M,KAAA,CAACgN,oCAEhBN,EAAAA,gBAAe1M,KAAA,CAAC2b,uCAChBjP,EAAAA,gBAAe1M,KAAA,CAAC4b,2BAGhBlP,EAAAA,gBAAe1M,KAAA,CAACkN,MAZgBjR,EAAA,CADhC2L,2CAIsC3L,EAAA,CADtC2L,iDAIkC3L,EAAA,CADlC2L,6CAO+B3L,EAAA,CAD/B2L,0CCrCH,IAAIsW,GAAmB,iBAgCrB,SAAAC,EAAoBC,EACAC,EACAC,GAFpB,IAAAld,EAGEf,EAAA5E,KAAAK,OAAOA,YAHWsF,EAAAgd,MAAAA,EACAhd,EAAAid,iBAAAA,EACAjd,EAAAkd,gBAAAA,EAlBVld,EAAAmd,aAAe,IAAIhd,EAAAA,aAW7BH,EAAAod,iBAAkB,EAElBpd,EAAAqD,qBAAsB,WAtBa/I,EAAAyiB,EAAA9d,GA+BnC8d,EAAA5iB,UAAAqF,YAAA,WACM9E,KAAK2iB,kBACP3iB,KAAK4iB,qBAITP,EAAA5iB,UAAAgV,gBAAA,WACE,IAAKzU,KAAKwN,GACR,MAAMrI,MAAM,kBAGd,IAAKnF,KAAKmY,SAAWnY,KAAK6iB,WACxB,MAAM1d,MAAM,sBAGd,GAAInF,KAAK6iB,WAAY,CACnB,IAAMC,EAAU9iB,KAAKwiB,gBAAgBO,wBAAwB/iB,KAAK6iB,YAC5DG,EAAYhjB,KAAKijB,UAAUC,gBAAgBJ,GAC7C9iB,KAAKmjB,0BACPnjB,KAAKmjB,yBAAyBnjB,KAAMgjB,GAIpChjB,KAAK2iB,iBAAiB5Z,cAAcqa,UAAoE,IAAxDpjB,KAAK2iB,iBAAiB5Z,cAAcqa,SAAS1iB,SAC/FV,KAAKqjB,UAAYrjB,KAAK2iB,iBAAiB5Z,cAAcqa,SAAS,IAGhEpjB,KAAK4iB,oBACL5iB,KAAKsiB,MAAM9Q,iBAGb6Q,EAAA5iB,UAAAwa,YAAA,WACEja,KAAKwO,QAAS,EACdxO,KAAK4iB,qBAIAP,EAAA5iB,UAAA6jB,QAAA,WACLtjB,KAAKyiB,aAAa1c,MAAK,IAKzBsc,EAAA5iB,UAAA8jB,QAAA,SAAQ3d,GACFA,EAAMtF,MAAQ+hB,EAAgB1X,eAChC/E,EAAM4d,kBACNxjB,KAAKsjB,YAITjB,EAAA5iB,UAAAmjB,kBAAA,WAAA,IAAAtd,EAAAtF,KAKE,GAJKA,KAAKyjB,YACRzjB,KAAKyjB,UAAYzjB,KAAKuiB,iBAAiBriB,OAAOF,KAAK2iB,iBAAiB5Z,gBAGlE/I,KAAKwO,SAAWxO,KAAK0iB,gBAAiB,CAiBtC,IAAIgB,EAJN,GAZA1jB,KAAK0iB,gBAAkB1iB,KAAKwO,OAGxBxO,KAAKwO,QAA+B,IAArB4T,GACjBpa,SAAS5F,KAAKuhB,UAAUC,IAAIvB,EAAgBwB,mBAClC7jB,KAAKwO,QAA+B,IAArB4T,KACzBpa,SAAS5F,KAAKuhB,UAAUG,OAAOzB,EAAgBwB,mBACR,IAAnC7b,SAAS5F,KAAKuhB,UAAUjjB,QAC1BsH,SAAS5F,KAAK2hB,gBAAgB,UAI9B/jB,KAAKwO,OACPxI,YAAW,WAAM,OAAAV,EAAKme,UAAUO,yBAChC5B,UAGApiB,KAAKyjB,UAAUQ,WAGXP,EAFA1jB,KAAKkkB,aAC0B,iBAAtBlkB,KAAKkkB,aACFlc,SAAS6H,eAAe7P,KAAKkkB,cAE7BlkB,KAAKkkB,aAGPxc,EAAWC,6BAGvB3B,YAAW,WAAM,OAAA0d,EAAUxY,WAE7BkX,KAGFpc,YAAW,WAAM,OAAAV,EAAKqD,oBAAsBrD,EAAKkJ,YAIrD6T,EAAA5iB,UAAA0kB,mBAAA,WACMnkB,KAAKokB,mBACPpkB,KAAKsjB,cA9H0B5e,GAEnB2d,GAAAwB,kBAAoB,aACpBxB,GAAA1X,aAAe,8BAPhC1G,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,cACVC,SAAA,iuCAbAqN,EAAAA,yBAK8B4S,EAAAA,oCAHgBC,EAAAA,gEAkB7C3f,EAAAA,UAAST,KAAA,CAAC,YAAa,CAACmH,KAAMkZ,EAAAA,6CAC9B5f,EAAAA,UAAST,KAAA,CAAC,oCAEVG,EAAAA,4BACAyC,EAAAA,mBAEAzC,EAAAA,sBACAA,EAAAA,uBACAA,EAAAA,4BACAA,EAAAA,iCACAA,EAAAA,uBA0DAoP,EAAAA,aAAYvP,KAAA,CAAC,iBAAkB,CAAC,gCChFjC,SAAAsgB,EAAoBhC,EACAiC,EACAC,GAFA1kB,KAAAwiB,gBAAAA,EACAxiB,KAAAykB,gBAAAA,EACAzkB,KAAA0kB,OAAAA,SAEpBF,EAAA/kB,UAAAklB,WAAA,SAAWxM,EACAyM,GADX,IAAAtf,EAAAtF,KAEE,OAAO,IAAIsB,SAA0B,SAACC,EAASC,GAExC2W,GACH3W,EAAO,sBAGJojB,GACHpjB,EAAO,6BAGT,IAAMqjB,EAASvf,EAAKwf,aAAaF,GAC3B7iB,EAA2B,CAC/B8iB,OAAMA,GAGJ1M,aAAkB4M,EAAAA,MACpBF,EAAO7a,SAAS6Y,WAAa1K,EAC7B0M,EAAO7a,SAASmZ,yBAA2B,SAACjkB,EAAGsB,GAC7CuB,EAAOihB,UAAYxiB,EACnBe,EAAQQ,KAEDoW,aAAkByH,EAAAA,aAC3BiF,EAAO7a,SAASmO,OAASA,EACzB5W,EAAQQ,KAER8iB,EAAO7a,SAAS6Y,WAAa9C,GAC7B8E,EAAO7a,SAASmZ,yBAA2B,SAACjkB,EAAGsB,GAC7C8E,EAAK0f,UAAU9lB,EAAGsB,EAAG2X,GACrBpW,EAAOihB,UAAYxiB,EACnBe,EAAQQ,SAMhByiB,EAAA/kB,UAAA4gB,YAAA,SAAYwE,GAEV,IAAKA,EACH,MAAM1f,MAAM,sBAGV0f,aAAkBI,EAAAA,aACpBJ,EAAO7a,SAASsZ,UAEhBuB,EAAOvB,WAIXkB,EAAA/kB,UAAAylB,cAAA,SAAcL,GACZ,OAAO,IAAIvjB,SAAO,SAAQC,GACxB,IAOMyM,GANF6W,aAAkBI,EAAAA,aAChBJ,EAAO7a,SAEP6a,GAGiBpC,aAAanW,WAAU,WAC5C/K,IACAyM,EAAaF,qBAKX0W,EAAA/kB,UAAAqlB,aAAA,SAAaF,GACnB,IACIC,EADE/B,EAAU9iB,KAAKwiB,gBAAgBO,wBAAwBV,IAE7D,GAAIuC,EAAcO,kBAChBN,EAASD,EAAcO,kBAAkBjC,gBAAiCJ,OACrE,CACL+B,EAAS/B,EAAQ5iB,OAAOF,KAAKykB,iBAC7BzkB,KAAK0kB,OAAOU,WAAWP,EAAOQ,UAC9B,IAAMC,EAAoBT,EAAOQ,SAAkCE,UAAU,GAC7Evd,SAAS5F,KAAKojB,YAAYF,GAU5B,OAPAT,EAAO7a,SAASwE,QAAS,EACrBoW,GACFxlB,OAAO4f,OAAO6F,EAAO7a,SAAU4a,GAGjC5kB,KAAKklB,cAAcL,GAAQ5iB,MAAK,WAAM,OAAA4iB,EAAOZ,aAEtCY,GAGDL,EAAA/kB,UAAAulB,UAAA,SAAUH,EAAyBY,EAAwCC,GAA3E,IAAApgB,EAAAtF,KAYN,GAXAylB,EAASzb,SAAS0X,MAAQgE,EAAahE,MACvC+D,EAASzb,SAAS6X,YAAc6D,EAAa7D,YAC7C4D,EAASzb,SAASgY,aAAe0D,EAAa1D,aAC9CyD,EAASzb,SAASmY,eAAiBuD,EAAavD,eAChDsD,EAASzb,SAASuW,KAAOmF,EAAanF,KAEtCkF,EAASzb,SAAS2b,cAAgBD,EAAaC,cAC/CF,EAASzb,SAASwD,GAAKkY,EAAalY,GACpCiY,EAASzb,SAASvD,QAAUif,EAAajf,QACzCgf,EAASzb,SAASmO,OAASuN,EAAavN,OAEpCuN,EAAaC,cACf,IAAMC,EAAeH,EAASzb,SAASgW,WAAW1T,WAAU,WAC1DhH,EAAK+a,YAAYwE,GACjBe,EAAa9X,sOAhHpB+X,EAAAA,WAAU3hB,KAAA,CAAC,CACV4hB,WAAY,qDAZZxB,EAAAA,gCAGAyB,EAAAA,gBAJAC,EAAAA,qCCOF,SAAAC,0DAA8CrmB,EAAAqmB,EAAA1hB,MAAAD,wBAJ7CL,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,wBACVC,SAAA,2HAICC,EAAAA,0BACAA,EAAAA,4BCSD,SAAA6hB,EAAoBC,GAApB,IAAA7gB,EACEf,EAAA5E,KAAAK,OAAOA,YADWsF,EAAA6gB,SAAAA,WAVoBvmB,EAAAsmB,EAAA3hB,GAcxC2hB,EAAAzmB,UAAA2mB,UAAA,WACE,IAAIC,EAAsBrmB,KAAKyN,MAAQzN,KAAKyN,MAAM/M,OAASV,KAAK0N,kBAAkBhN,OAKlF,OAHIV,KAAKsmB,gBACPD,GAAe,GAEVA,GAGTH,EAAAzmB,UAAA8mB,OAAA,WACEvmB,KAAKmmB,SAASK,QAGhBN,EAAAzmB,UAAAgnB,YAAA,WACE,IAAM1Y,EAAW/N,KAAK0N,mBAAqB1N,KAAK0N,kBAAkBhN,OAAS,EAAIV,KAAK0N,kBAAkB2I,UAAYrW,KAAKyN,MACvH,IAAKM,GAAgC,IAApBA,EAASrN,OACxB,MAAM,IAAIyE,MAAM,sBAGlB,OAAO4I,GAGTmY,EAAAzmB,UAAAinB,gBAAA,SAAgBtW,GACd,MAAM,IAAIjL,MAAM,uDAAuDiL,OArCjC1L,wBAJzCT,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,mBACVC,SAAA,m0NAPOuiB,EAAAA,4CAWNtiB,EAAAA,uBACAA,EAAAA,kBACAA,EAAAA,gCAEAA,EAAAA,6BACAA,EAAAA,iCACAuM,EAAAA,gBAAe1M,KAAA,CAAC+hB,0BCXnB,SAAAW,0DAAyDhnB,EAAAgnB,EAAAriB,MAAAD,wBAJxDL,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,qCACVC,SAAU,+FCFZ,SAAAyiB,IAAA,IAAAvhB,EAAAf,EAAArC,MAAAlC,KAAA+D,EAAAtD,aAAAT,YAMEsF,EAAAwhB,cAAgB,WAAA,OAAA7lB,EAAAqE,OAAA,OAAA,GAAA,WAAA,OAAAnD,EAAAnC,MAAA,SAAAyK,6BAFkC7K,EAAAinB,EAAAtiB,GAI5CsiB,EAAApnB,UAAAsnB,YAAA,SAAYnhB,6FAEhB,OADAA,EAAM4d,kBACN,CAAA,EAAMxjB,KAAK8mB,+BAAXrc,EAAA9H,mBAGFkkB,EAAApnB,UAAAunB,mBAAA,SAAmB9gB,GACjB,MAAM,IAAIf,MAASe,EAAO,4BAVsB5B,wBAJnDL,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,+BACVC,SAAA,o1BC6CA,SAAA6iB,EAAoBC,GAAAlnB,KAAAknB,cAAAA,EAfElnB,KAAAmnB,UAAY,8BAkBlCF,EAAAxnB,UAAAwa,YAAA,WACMja,KAAK0I,UACP1I,KAAKonB,SAIHH,EAAAxnB,UAAA4nB,KAAA,yHACCrnB,KAAK0I,SAAN,CAAA,EAAA,IACF+B,EAAAzK,KAAe,CAAA,EAAMA,KAAKknB,cAAcvC,WAAW3kB,KAAKsnB,iBAAkBL,EAAyBrC,wBAAnGna,EAAKoa,OAAU3W,EAAAvL,OAAoGkiB,OACnH7kB,KAAKknB,cAAchC,cAAcllB,KAAK6kB,QAAQ5iB,MAAK,WAAM,OAAAqD,EAAKuf,OAAS,2CAI3EoC,EAAAxnB,UAAA2nB,MAAA,WACMpnB,KAAK0I,WACP1I,KAAKknB,cAAc7G,YAAYrgB,KAAK6kB,QACpC7kB,KAAK6kB,OAAS,OAIlBoC,EAAAxnB,UAAAiJ,OAAA,WACE,QAAS1I,KAAK6kB,QAMhBoC,EAAAxnB,UAAA8nB,aAAA,WACEvnB,KAAKmnB,UAAYnnB,KAAKyG,QAAUzG,KAAKyG,QAAU,wBAOjDwgB,EAAAxnB,UAAA+nB,WAAA,SAAWlI,GACTA,EAAOwH,cAAgB9mB,KAAKqnB,KAAKha,KAAKrN,OAGxCinB,EAAAxnB,UAAAunB,mBAAA,SAAmB9gB,GACjB,MAAM,IAAIf,MAASe,EAAO,8BApEb+gB,GAAArC,cAA+B,CAC5CpX,GAAI,0BACJ0W,aAAc,mBACduD,UAAW,OACXC,eAAgB,qDAVnBzjB,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,wBACVC,SAAA,80CAPMogB,wCAmBLngB,EAAAA,yBAEAwC,EAAAA,YAAW3C,KAAA,CAAC,mCAEZS,EAAAA,UAAST,KAAA,CAAC,oCAGV0M,EAAAA,gBAAe1M,KAAA,CAAC2iB,qBAGhBjW,EAAAA,gBAAe1M,KAAA,CAACgN,wBAGhBN,EAAAA,gBAAe1M,KAAA,CAAC0iB,OAbRzmB,EAAA,CADRsW,GAAkB,gDAQ8BtW,EAAA,CADhD2L,EAAiB,CAACW,kBAAmB,8CAIHtM,EAAA,CADlC2L,oCAIqD3L,EAAA,CADrD2L,2DCrCH,SAAA6b,0DAAmD/nB,EAAA+nB,EAAApjB,MAAAD,wBAJlDL,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,8BACVC,SAAU,2GAGTC,EAAAA,0BACAA,EAAAA,wBACAA,EAAAA,kBACAA,EAAAA,sBACAA,EAAAA,wBACAA,EAAAA,4BCLH,SAAAujB,0DAA+ChoB,EAAAgoB,EAAArjB,GAQ7CqjB,EAAAnoB,UAAAuW,mBAAA,WACE,IAAMvI,EAAQzN,KAAKiW,WACnB,IAAKxI,GAA0B,IAAjBA,EAAM/M,OAClB,MAAM,IAAIyE,MAAM,yCAIpByiB,EAAAnoB,UAAAqQ,UAAA,SAAU5H,EAAgCqG,GACxC,IAAMsZ,EAAS7nB,KAAKuQ,SAAWvQ,KAAKuQ,SAAW,kBACzCuX,EAASvZ,EAAQ,EAAI,IAAMA,EAAQ,GACzC,OAAOrG,EAAKsF,GAAKtF,EAAKsF,GAAKqa,EAASC,GAGtCF,EAAAnoB,UAAAwW,SAAA,WACE,OAAOjW,KAAKoW,gBAAkBpW,KAAKoW,eAAe1V,OAAS,EAAIV,KAAKoW,eAAeC,UAAYrW,KAAKyN,UAtBzD/I,wBAJ9CT,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,yBACVC,SAAA,8mHAICC,EAAAA,uBACAA,EAAAA,qBACAA,EAAAA,8BAEAuM,EAAAA,gBAAe1M,KAAA,CAACyjB,0BCXnB,SAAAI,IAAA,IAAAziB,EAAAf,EAAArC,MAAAlC,KAAA+D,EAAAtD,aAAAT,YAiBYsF,EAAAE,WAAa,IAAIC,EAAAA,aACjBH,EAAAmd,aAAe,IAAIhd,EAAAA,sBAdO7F,EAAAmoB,EAAAxjB,MAAAD,wBAJrCL,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,gBACVC,SAAA,uHAICC,EAAAA,sBACAA,EAAAA,uBACAA,EAAAA,qBACAA,EAAAA,oBACAA,EAAAA,0BACAA,EAAAA,wBACAA,EAAAA,sBACAA,EAAAA,wBACAA,EAAAA,uBACAA,EAAAA,0BAEAyC,EAAAA,6BACAA,EAAAA,6BCLH,SAAAkhB,IAAA,IAAA1iB,EAAAf,EAAArC,MAAAlC,KAAA+D,EAAAtD,aAAAT,YAMWsF,EAAA2iB,QAAS,EAKR3iB,EAAAE,WAAa,IAAIC,EAAAA,sBAPK7F,EAAAooB,EAAAzjB,GAUhCyjB,EAAAvoB,UAAAkG,QAAA,SAAQC,EAAYsC,GAClB,IAAMggB,EAAoB,GACrBhgB,EAAKsG,QACR0Z,EAAkB3kB,KAAK2E,GAGRlI,KAAKymB,cACb5Y,SAAQ,SAAA9M,GACXA,EAAEyN,QAAUzN,IAAMmH,GACpBggB,EAAkB3kB,KAAKxC,GAEzBA,EAAEyN,QAAS,KAEbtG,EAAKsG,QAAS,EAGd0Z,EAAkBra,SAAQ,SAAA9M,GACpBA,aAAcgnB,IAChBhnB,EAAE0hB,aAAa1c,KAAKhF,EAAEyN,WAI1BxO,KAAKwF,WAAWO,KAAK,CAAEmC,KAAIA,EAAEtC,MAAKA,IAC9BsC,aAAgB6f,IAClB7f,EAAK1C,WAAWO,KAAK,CAAEmC,KAAIA,EAAEtC,MAAKA,KAItCoiB,EAAAvoB,UAAAqF,YAAA,SAAYC,GACV,IAAK/E,KAAKuQ,SACR,MAAM,IAAIpL,MAAM,yBAIpB6iB,EAAAvoB,UAAAgnB,YAAA,WACE,IAAM1Y,EAAW/N,KAAK0N,mBAAqB1N,KAAK0N,kBAAkBhN,OAAS,EAAIV,KAAK0N,kBAAkB2I,UAAYrW,KAAKyN,MACvH,IAAKM,GAAgC,IAApBA,EAASrN,OACxB,MAAM,IAAIyE,MAAM,sBAQlB,OALA4I,EAASF,SAAQ,SAAA3H,GACf,IAAKA,EAAQE,OAASF,EAAQiiB,WAC5B,MAAM,IAAIhjB,MAAM,sCAGb4I,GAGTia,EAAAvoB,UAAA2oB,mBAAA,SAAmBhY,GACjB,MAAM,IAAIjL,MAAM,uDAAuDiL,IAGzE4X,EAAAvoB,UAAAqQ,UAAA,SAAU5H,EAAmBqG,GAS3B,OAPIrG,EAAKsF,GACFtF,EAAKsF,GACS,IAAVe,EACJvO,KAAKsQ,cAELtQ,KAAKsQ,cAAgB,IAAM/B,GAKpCyZ,EAAAvoB,UAAA6Q,YAAA,WACE,OAAOtQ,KAAKuQ,SAAWvQ,KAAKuQ,SAAW,eA3ET7L,wBAJjCT,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,WACVC,SAAA,q/QAICC,EAAAA,wBACAA,EAAAA,qBACAA,EAAAA,uBACAA,EAAAA,0BAEAyC,EAAAA,kCACA8J,EAAAA,gBAAe1M,KAAA,CAAC6jB,0BCpBnB,SAAAM,0DAA2CzoB,EAAAyoB,EAAA9jB,GAUzC8jB,EAAA5oB,UAAA6oB,eAAA,WACE,OAAOtoB,KAAKuoB,KAAOvoB,KAAKuoB,IAAI9B,cAAc/lB,OAAS,GAGrD2nB,EAAA5oB,UAAA+oB,kBAAA,SAAkBD,GAChBA,EAAIN,QAAS,EACbM,EAAIhY,SAAW,yBACfgY,EAAIE,UAAY,eAChBF,EAAI9hB,QAAU,kBAIhB4hB,EAAA5oB,UAAAunB,mBAAA,SAAmB9gB,GACjB,MAAM,IAAIf,MAASe,EAAO,4BAvBaxB,wBAJ1CT,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,qBACVC,SAAA,4hEAICC,EAAAA,gCACAA,EAAAA,8BACAA,EAAAA,uBACAA,EAAAA,mBAGAuM,EAAAA,gBAAe1M,KAAA,CAAC8jB,OAAc7nB,EAAA,CAD9B2L,EAAiB,CAACW,kBAAmB,qECPxC,SAAAic,0DAA6C9oB,EAAA8oB,EAAAnkB,GAU3CmkB,EAAAjpB,UAAA+oB,kBAAA,SAAkBD,GAChBA,EAAIN,QAAS,EACbM,EAAIhY,SAAW,2BACfgY,EAAIE,UAAY,kBAChBF,EAAI9hB,QAAU,kBAIhBiiB,EAAAjpB,UAAAunB,mBAAA,SAAmB9gB,GACjB,MAAM,IAAIf,MAASe,EAAO,4BAnBexB,wBAJ5CT,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,uBACVC,SAAA,uwCAICC,EAAAA,gCACAA,EAAAA,8BACAA,EAAAA,uBACAA,EAAAA,mBAGAuM,EAAAA,gBAAe1M,KAAA,CAAC8jB,OAAc7nB,EAAA,CAD9B2L,EAAiB,CAACW,kBAAmB,qECCtC,SAAAkc,EAAoBpX,GAApB,IAAAjM,EACEf,EAAA5E,KAAAK,OAAOA,YADWsF,EAAAiM,kBAAAA,EAFpBjM,EAAAub,YAAa,WARwBjhB,EAAA+oB,EAAApkB,GAcrCokB,EAAAlpB,UAAA8G,cAAA,WACE,IAAIC,EAAa,uKAIjB,OAHIxG,KAAKyG,UACPD,GAAc,IAAMxG,KAAKyG,SAEpBD,GAGTmiB,EAAAlpB,UAAAmpB,gBAAA,WACE,IAAK5oB,KAAKkF,OAASlF,KAAKiF,KACtB,MAAM,IAAIE,MAAM,gDAEhBnF,KAAK6gB,YAAa,EAClB7gB,KAAKuR,kBAAkBC,oBA3BU9M,wBAJtCT,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,iBACVC,SAAA,4lEALMqN,EAAAA,oDASLpN,EAAAA,oBACAA,EAAAA,wBACAA,EAAAA,uBACAA,EAAAA,kBACAA,EAAAA,4BCIH,SAAAwkB,0DAAqCjpB,EAAAipB,EAAAtkB,GA8BnCskB,EAAAppB,UAAAqpB,uBAAA,SAAuBC,GACrBA,EAAkBvb,GAAKub,EAAkBvb,IAAM,YAC/Cub,EAAkB9jB,KAAO,iCAG3B4jB,EAAAppB,UAAAupB,yBAAA,SAAyBC,GACvBA,EAAoB1Y,SAAW,kBAC/B0Y,EAAoBR,UAAY,qBArCC/jB,wBAJpCT,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,cACVC,SAAA,qkqBAICC,EAAAA,gCACAA,EAAAA,2BACAA,EAAAA,kCACAA,EAAAA,gCACAA,EAAAA,4BACAA,EAAAA,0BAEAA,EAAAA,8BACAA,EAAAA,4BACAA,EAAAA,6BACAA,EAAAA,iCAGAuM,EAAAA,gBAAe1M,KAAA,CAACykB,6BAGhB/X,EAAAA,gBAAe1M,KAAA,CAACmkB,iCAGhBzX,EAAAA,gBAAe1M,KAAA,CAAC0jB,+BAGhBhX,EAAAA,gBAAe1M,KAAA,CAACwkB,gCAGhB9X,EAAAA,gBAAe1M,KAAA,CAAC+iB,OAZmB9mB,EAAA,CADnC2L,EAAiB,CAAEW,kBAAmB,qEAICtM,EAAA,CADvC2L,4CAI2C3L,EAAA,CAD3C2L,EAAiB,CAAEW,kBAAmB,yEAIGtM,EAAA,CADzC2L,8CAI0C3L,EAAA,CAD1C2L,kECnCH,SAAAod,0DAAmDtpB,EAAAspB,EAAA3kB,MAAAD,wBAJlDL,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,8BACVC,SAAU,2GAGTC,EAAAA,0BACAA,EAAAA,wBACAA,EAAAA,gBCHH,kCAJCJ,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,yBACVC,SAAA,uCAGCC,EAAAA,uBACAA,EAAAA,8BAEAuM,EAAAA,gBAAe1M,KAAA,CAACglB,0BCJnB,SAAAC,0DAA6CvpB,EAAAupB,EAAA5kB,MAAAD,wBAJ5CL,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,wBACVC,SAAU,2GAGTC,EAAAA,0BACAA,EAAAA,wBACAA,EAAAA,4BCAH,SAAA+kB,0DAAyCxpB,EAAAwpB,EAAA7kB,MAAAD,wBAJxCL,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,mBACVC,SAAU,qDAITC,EAAAA,gCAGAuM,EAAAA,gBAAe1M,KAAA,CAACgN,2BAChBN,EAAAA,gBAAe1M,KAAA,CAACilB,OADkBhpB,EAAA,CADlC2L,gECAH,SAAAud,0DAAqCzpB,EAAAypB,EAAA9kB,GAiBnC8kB,EAAA5pB,UAAA6pB,mBAAA,WACE,IAAMC,EAAWvpB,KAAKipB,qBAAuBjpB,KAAKipB,oBAAoBvoB,OAAS,EAAIV,KAAKipB,oBAAoB5S,UAAYrW,KAAKwpB,WAC7H,OAAOD,GAAYA,EAAS7oB,OAAS,EAAI6oB,EAAW,MAGtDF,EAAA5pB,UAAAgqB,uBAAA,SAAuBD,GACrB,OAAOA,aAAsBE,GAA4BF,EAAWpT,eAAeC,UAAYmT,EAAW/b,OAG5G4b,EAAA5pB,UAAAkqB,aAAA,SAAaC,GACX,OAAOA,aAAgBR,GAAsBQ,EAAKxT,eAAeC,UAAYuT,EAAKnc,OAGpF4b,EAAA5pB,UAAAoqB,eAAA,SAAeD,GACb,OAAOA,aAAgBR,GAAsBQ,EAAKE,iBAAmB,SA/BpCplB,wBAJpCT,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,cACVC,SAAA,iuSAICC,EAAAA,0BACAA,EAAAA,oBACAA,EAAAA,gCACAA,EAAAA,uBACAA,EAAAA,6BAGAuM,EAAAA,gBAAe1M,KAAA,CAACkN,0BAGhBR,EAAAA,gBAAe1M,KAAA,CAACklB,iCAEhBxY,EAAAA,gBAAe1M,KAAA,CAACwlB,OALevpB,EAAA,CAD/B2L,0CAIqC3L,EAAA,CADrC2L,6DClBH,SAAAie,0DAA+CnqB,EAAAmqB,EAAAxlB,MAAAD,wBAJ9CL,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,0BACVC,SAAU,+GAITC,EAAAA,kBACAA,EAAAA,4BCMH,SAAA2lB,0DAA2CpqB,EAAAoqB,EAAAzlB,GAoBzCylB,EAAAvqB,UAAAwqB,sBAAA,SAAsB/jB,GACpB,MAAM,IAAIf,MAAMe,EAAU,wCAG5B8jB,EAAAvqB,UAAAyqB,iBAAA,WACE,IAAIC,EAEFA,EADEnqB,KAAKoqB,oBAAsBpqB,KAAKoqB,mBAAmB1pB,OAAS,EAC9CV,KAAKoqB,mBAAmB/T,UAExBrW,KAAKqqB,UAGvB,IAAMC,EAAatqB,KAAKuqB,mBAExB,GADAvqB,KAAKuqB,mBAAqBJ,EAAczpB,OACX,IAAzBypB,EAAczpB,QAA+B,IAAf4pB,EAChC,MAAM,IAAInlB,MAAM,sDAGlB,OAAOglB,MAtCgCzlB,wBAJ1CT,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,qBACVC,SAAA,8/FAICC,EAAAA,yBACAA,EAAAA,+BACAA,EAAAA,+BACAA,EAAAA,uBACAA,EAAAA,kBACAA,EAAAA,yBACAA,EAAAA,8BAGAuM,EAAAA,gBAAe1M,KAAA,CAACmN,iCAGhBT,EAAAA,gBAAe1M,KAAA,CAACiN,+BAEhBP,EAAAA,gBAAe1M,KAAA,CAAC6lB,OALgB5pB,EAAA,CADhC2L,2CAIsC3L,EAAA,CADtC2L,oEC1BH,SAAA0e,IAAA,IAAAllB,EAAAf,EAAArC,MAAAlC,KAAA+D,EAAAtD,aAAAT,YAeYsF,EAAAE,WAAa,IAAIC,EAAAA,aACjBH,EAAAmd,aAAe,IAAIhd,EAAAA,sBAZkB7F,EAAA4qB,EAAAjmB,MAAAD,wBAJhDL,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,4BACVC,SAAU,2GAITC,EAAAA,0BACAA,EAAAA,wBACAA,EAAAA,sBACAA,EAAAA,kBACAA,EAAAA,sBACAA,EAAAA,wBACAA,EAAAA,uBACAA,EAAAA,0BAEAyC,EAAAA,6BACAA,EAAAA,6BCfH,SAAA2jB,IAAA,IAAAnlB,EAAAf,EAAArC,MAAAlC,KAAA+D,EAAAtD,aAAAT,YAaYsF,EAAAE,WAAa,IAAIC,EAAAA,sBATgB7F,EAAA6qB,EAAAlmB,GAW3CkmB,EAAAhrB,UAAAqF,YAAA,SAAYC,KAGZ0lB,EAAAhrB,UAAAkG,QAAA,SAAQC,EAAYsC,GAClB,IAAMggB,EAAoB,GACrBhgB,EAAKsG,QACR0Z,EAAkB3kB,KAAK2E,GAGRlI,KAAKymB,cACb5Y,SAAQ,SAAA9M,GACXA,EAAEyN,QAAUzN,IAAMmH,GACpBggB,EAAkB3kB,KAAKxC,GAEzBA,EAAEyN,QAAS,KAEbtG,EAAKsG,QAAS,EAGd0Z,EAAkBra,SAAQ,SAAA9M,GACpBA,aAAcypB,IAChBzpB,EAAE0hB,aAAa1c,KAAKhF,EAAEyN,WAI1BxO,KAAKwF,WAAWO,KAAK,CAAEmC,KAAIA,EAAEtC,MAAKA,IAC9BsC,aAAgBsiB,IAClBtiB,EAAK1C,WAAWO,KAAK,CAAEmC,KAAIA,EAAEtC,MAAKA,KAItC6kB,EAAAhrB,UAAA6Q,YAAA,WACE,OAAOtQ,KAAKuQ,SAAWvQ,KAAKuQ,SAAW,aAGzCka,EAAAhrB,UAAAgnB,YAAA,WACE,IAAM1Y,EAAY/N,KAAKoW,gBAAkBpW,KAAKoW,eAAe1V,OAAS,EAAIV,KAAKoW,eAAeC,UAAYrW,KAAKyN,MAC/G,IAAKM,GAAgC,IAApBA,EAASrN,OACxB,MAAM,IAAIyE,MAAM,sBAQlB,OALA4I,EAASF,SAAQ,SAAA3F,GACf,IAAKA,EAAKigB,aAAejgB,EAAK9B,KAC5B,MAAMjB,MAAM,2CAGT4I,GAGT0c,EAAAhrB,UAAAinB,gBAAA,SAAgBtW,GACd,MAAM,IAAIjL,MAAM,uDAAuDiL,IAGzEqa,EAAAhrB,UAAAqQ,UAAA,SAAU5H,EAA8BqG,GAStC,OAPIrG,EAAKsF,GACFtF,EAAKsF,GACS,IAAVe,EACJvO,KAAKsQ,cAELtQ,KAAKsQ,cAAgB,IAAM/B,MAvEO7J,wBAJ5CT,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,uBACVC,SAAA,+tNAICC,EAAAA,wBACAA,EAAAA,uBACAA,EAAAA,qBACAA,EAAAA,8BAEAuM,EAAAA,gBAAe1M,KAAA,CAACsmB,wBAEhB1jB,EAAAA,6BCVH,SAAA4jB,0DAAsD9qB,EAAA8qB,EAAAnmB,MAAAD,wBAJrDL,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,mCACVC,SAAA,uHAICC,EAAAA,uBACAA,EAAAA,oBACAA,EAAAA,0BACAA,EAAAA,uCACAA,EAAAA,wBACAA,EAAAA,sBACAA,EAAAA,wBACAA,EAAAA,sBACAA,EAAAA,uBACAA,EAAAA,qBACAA,EAAAA,4BCXH,SAAAsmB,0DAAkD/qB,EAAA+qB,EAAApmB,MAAAD,wBAJjDL,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,8BACVC,SAAA,4HAGCC,EAAAA,8BAEAuM,EAAAA,gBAAe1M,KAAA,CAACwmB,0BCFnB,SAAAE,0DAA+ChrB,EAAAgrB,EAAArmB,MAAAD,wBAJ9CL,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,0BACVC,SAAA,uHAICC,EAAAA,uBACAA,EAAAA,oBACAA,EAAAA,0BACAA,EAAAA,uCACAA,EAAAA,wBACAA,EAAAA,sBACAA,EAAAA,wBACAA,EAAAA,sBACAA,EAAAA,uBACAA,EAAAA,qBACAA,EAAAA,wBACAA,EAAAA,4BAGAuM,EAAAA,gBAAe1M,KAAA,CAACymB,OAA8BxqB,EAAA,CAD9C2L,4DCEH,SAAA+e,0DAA2CjrB,EAAAirB,EAAAtmB,GAUzCsmB,EAAAprB,UAAAqrB,uBAAA,SAAuBvc,EAAewc,GACpC,MAAM,IAAI5lB,OAAS4lB,EAAS,OAAS,WAAS,kDAAkDxc,IAGlGsc,EAAAprB,UAAAurB,YAAA,SAAY9iB,GAQV,OANIA,EAAKsG,OACItG,EAAKhD,KAAO,WAAYgD,EAAKhD,KAAK,YAAc,WAAYqG,EAAYC,WAAWtD,EAAKjD,MAAM,YAE9FiD,EAAKhD,MAMpB2lB,EAAAprB,UAAAwrB,MAAA,SAAM/iB,EAA6BnH,GACjC,GAAImH,EAAKsF,GACP,OAAOtF,EAAKsF,GAEZ,IAAM+C,EAAWvQ,KAAKuQ,SAAWvQ,KAAKuQ,SAAW,WACjD,OAAU,IAANxP,EACKwP,EAEAA,EAAW,IAAMxP,GAK9B8pB,EAAAprB,UAAAyrB,aAAA,SAAahjB,EAA6BijB,EAAmBC,GAC3D,IAAIC,EACEC,EAAMtrB,KAAKurB,WAAWrjB,GAEtBsjB,EADWxrB,KAAKyrB,YAAYH,GACTF,GACzB,GAAII,EACF,GAAIA,EAAQhe,GACV6d,EAAYG,EAAQhe,OACf,CACL,IAAMgD,EAASxQ,KAAKirB,MAAM/iB,EAAMijB,GAChCE,EAA6B,IAAjBD,EAAqB,OAAO5a,EAAW,OAAOA,EAAM,IAAI4a,EAIxE,OAAOC,GAGTR,EAAAprB,UAAAwW,SAAA,WACE,IAAMlI,EAAW/N,KAAKoW,gBAAkBpW,KAAKoW,eAAe1V,OAAS,EAAIV,KAAKoW,eAAeC,UAAYrW,KAAKyN,MAC9G,IAAKM,GAAgC,IAApBA,EAASrN,OACtB,MAAM,IAAIyE,MAAM,sBAEpB,OAAO4I,GAGT8c,EAAAprB,UAAA8rB,WAAA,SAAWrjB,GACT,OAAOA,aAAgB0iB,GAA4B1iB,EAAKwjB,aAAexjB,EAAKojB,KAG9ET,EAAAprB,UAAAgsB,YAAA,SAAYH,GACV,IAAMK,EAAWL,aAAeX,GAA+BW,EAAIlV,eAAeC,UAAYiV,EAAI7d,MAClG,OAAOke,GAAYA,EAASjrB,OAAS,EAAIirB,EAAW,SArEbjnB,wBAnB1CT,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,qBACVC,SAAA,w4QACAkX,WAAY,CACVhS,EAAAA,QAAQ,sBAAuB,CAC7BpC,EAAAA,MAAM,OAAQ8B,EAAAA,MAAM,CAClBuS,QAAS,MACT3E,UAAW,iBAEb1P,EAAAA,MAAM,IAAK8B,EAAAA,MAAM,CACfuS,QAAS,MACT3E,UAAW,gBAEb4E,EAAAA,WAAW,SAAU,CACnBC,EAAAA,QAAQ,wDAObpX,EAAAA,wBACAA,EAAAA,qBACAA,EAAAA,4BACAA,EAAAA,uBACAA,EAAAA,8BAEAuM,EAAAA,gBAAe1M,KAAA,CAAC0mB,yBCNjB,SAAAgB,EAAmBC,GAAA7rB,KAAA6rB,WAAAA,EATT7rB,KAAA8rB,eAAoC,IAAIrmB,EAAAA,aAOlDzF,KAAA+rB,uBAAwB,SAIxBH,EAAAnsB,UAAAusB,sBAAA,WAAA,IAAA1mB,EAAAtF,KACMA,KAAKisB,YAAcjsB,KAAKksB,eAAiBlsB,KAAKmsB,iBAAmBnsB,KAAKosB,oBACnEpsB,KAAKqsB,OAASrsB,KAAKssB,UAAYtsB,KAAKusB,qBAAuBvsB,KAAKwsB,yBACrExmB,YAAW,WAAM,OAAAV,EAAKwmB,eAAe/lB,UACrC/F,KAAKksB,cAAgBlsB,KAAKisB,UAC1BjsB,KAAKosB,mBAAqBpsB,KAAKmsB,eAC/BnsB,KAAKssB,SAAWtsB,KAAKqsB,KACrBrsB,KAAKwsB,uBAAyBxsB,KAAKusB,oBAGhCvsB,KAAK+rB,uBACR/lB,YAAW,WAAM,OAAAV,EAAKymB,uBAAwB,gCA/BnDpM,EAAAA,UAASzb,KAAA,CAAC,CACTC,SAAU,kEARVmH,EAAAA,6CAWCmhB,EAAAA,aAAYvoB,KAAA,CAAC,OAAQ,CAAEmH,KAAMC,EAAAA,yCAC7BmhB,EAAAA,aAAYvoB,KAAA,CAAC,qBAAsB,CAAEmH,KAAMC,EAAAA,gCAC3CmhB,EAAAA,aAAYvoB,KAAA,CAAC,YAAa,CAAEmH,KAAMC,EAAAA,qCAClCsF,EAAAA,gBAAe1M,KAAA,CAAC,gBAAiB,CAAEmH,KAAMC,EAAAA,WAAYohB,aAAa,4BAElE5lB,EAAAA,6BChBH,SAAA6lB,IAAA,IAAArnB,EAAAf,EAAArC,MAAAlC,KAAA+D,EAAAtD,aAAAT,YAUYsF,EAAA6Q,SAAW,IAAI1Q,EAAAA,aACfH,EAAAyU,cAAgB,IAAItU,EAAAA,sBAPgB7F,EAAA+sB,EAAApoB,MAAAD,wBAJ/CL,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,0BACVC,SAAA,yHAICC,EAAAA,oBACAA,EAAAA,uBACAA,EAAAA,wBAEAyC,EAAAA,8BACAA,EAAAA,6BCFH,SAAA8lB,IAAA,IAAAtnB,EAAAf,EAAArC,MAAAlC,KAAA+D,EAAAtD,aAAAT,YAWYsF,EAAA6Q,SAAW,IAAI1Q,EAAAA,aACfH,EAAAyU,cAAgB,IAAItU,EAAAA,sBARa7F,EAAAgtB,EAAAroB,GAYpCqoB,EAAAntB,UAAAgsB,YAAA,WACL,OAAOzrB,KAAK2rB,SAAStV,cAboB/R,wBAJ5CL,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,uBACVC,SAAA,yHAICC,EAAAA,oBACAA,EAAAA,uBACAA,EAAAA,qBACAA,EAAAA,wBAEAyC,EAAAA,8BACAA,EAAAA,yBAEA8J,EAAAA,gBAAe1M,KAAA,CAACyoB,0BCdnB,SAAAE,IAAA,IAAAvnB,EAAAf,EAAArC,MAAAlC,KAAA+D,EAAAtD,aAAAT,YAqBYsF,EAAA6Q,SAAW,IAAI1Q,EAAAA,sBAjBe7F,EAAAitB,EAAAtoB,GAqBjCsoB,EAAAptB,UAAAgsB,YAAA,WACL,OAAOzrB,KAAK2rB,SAAStV,cAtBiB/R,wBAJzCL,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,oBACVC,SAAA,yHAICC,EAAAA,sBACAA,EAAAA,0BACAA,EAAAA,uCACAA,EAAAA,wBACAA,EAAAA,oBACAA,EAAAA,oBACAA,EAAAA,kBACAA,EAAAA,mBACAA,EAAAA,uBACAA,EAAAA,qBAEAA,EAAAA,wBACAA,EAAAA,sBACAA,EAAAA,wBAEAyC,EAAAA,yBAEA8J,EAAAA,gBAAe1M,KAAA,CAAC0oB,0BC7BnB,SAAAE,0DAA2CltB,EAAAktB,EAAAvoB,MAAAD,wBAJ1CL,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,qBACVC,SAAA,4HAICC,EAAAA,4BCoDD,SAAA0oB,EAAoBxb,GAApB,IAAAjM,EACEf,EAAA5E,KAAAK,OAAOA,YADWsF,EAAAiM,kBAAAA,EAzBVjM,EAAAwH,YAAc,IAAIrH,EAAAA,aAClBH,EAAAyH,iBAAmB,IAAItH,EAAAA,aACvBH,EAAA0nB,oBAAsB,IAAIvnB,EAAAA,aAmBpCH,EAAA2nB,UAAW,EAEX3nB,EAAA4nB,sBAAwB,WA7BYttB,EAAAmtB,EAAAxoB,GAmCpCwoB,EAAAttB,UAAAqF,YAAA,SAAYC,GACN/E,KAAKitB,UACPjtB,KAAKmtB,gBAITJ,EAAAttB,UAAAgV,gBAAA,WACEzU,KAAKitB,UAAW,EAChBjtB,KAAKmtB,gBAGPJ,EAAAttB,UAAA0tB,aAAA,WAAA,IAAA7nB,EAAAtF,KACE,GAAKA,KAAKotB,UAAV,CAGAptB,KAAKqtB,SAAW,GAChBrtB,KAAKiW,WAAWpI,SAAQ,SAACpL,EAAG8L,GAC1B,IAAM+e,EAAW,CACfjG,MAAM,EACNkG,yBAA0B,EAC1BC,4BAA6B,EAC7BC,SAAUnoB,EAAK8nB,UAAU/W,UAAU9H,IAErCjJ,EAAK+nB,SAAS9pB,KAAK+pB,MAGjBttB,KAAKitB,UACPjtB,KAAK4U,gBAIP,IAAM8Y,EAA4B1tB,KAAKktB,sBACjCzf,EAAQzN,KAAKiW,WACnB,GAAIxI,EACF,MAAQzN,KAAK2tB,gBAAgB3tB,KAAKktB,sBAAwBzf,EAAM/M,UAC9DV,KAAKktB,uBAAyBltB,KAAKktB,sBAAwBzf,EAAM/M,OAAS,GAAK+M,EAAM/M,OACjFV,KAAKktB,wBAA0BQ,QAYzCX,EAAAttB,UAAAmuB,kBAAA,WACE5tB,KAAK6tB,WAAY,EACjB7tB,KAAKuR,kBAAkBC,iBAGzBub,EAAAttB,UAAAquB,mBAAA,SAAmBloB,GACZ5F,KAAK+tB,QAAQhlB,cAAcwB,SAAS3E,EAAM0E,gBAC7CtK,KAAKguB,YAEPhuB,KAAK6tB,WAAY,EACjB7tB,KAAKuR,kBAAkBC,iBAGzBub,EAAAttB,UAAAwuB,oBAAA,SAAoBroB,EAAOulB,GACzB,GAAInrB,KAAKkuB,aAAa/C,GAAY,CAChCvlB,EAAME,iBACN,IAAM4C,EAAS1I,KAAKqtB,SAASlC,GAAW9D,KACxCrnB,KAAKguB,YACAtlB,GACH1I,KAAKmuB,SAAShD,QAGhBnrB,KAAKouB,iBAAiBjD,IAI1B4B,EAAAttB,UAAA4uB,sBAAA,SAAsBzoB,EAAsBulB,GAA5C,IAAA7lB,EAAAtF,KACE,OAAQ4F,EAAMtF,KACZ,IAAK,QACL,IAAK,IACL,IAAK,YACCN,KAAKkuB,aAAa/C,KACpBnrB,KAAKmuB,SAAShD,GACdnlB,YAAW,WAAM,OAAAV,EAAKgpB,kBAAkBnD,MACxCvlB,EAAM4d,kBACN5d,EAAME,kBAER,MAEF,IAAK,SACC9F,KAAKkuB,aAAa/C,IACpBnrB,KAAKguB,UAAU7C,GAEjBvlB,EAAM4d,kBACN5d,EAAME,iBACN,MAEF,IAAK,YACH9F,KAAKuuB,uBAAuBpD,GAAY,GACxCvlB,EAAM4d,kBACN5d,EAAME,iBACN,MAEF,IAAK,aACH9F,KAAKuuB,uBAAuBpD,EAAW,GACvCvlB,EAAM4d,kBACN5d,EAAME,iBACN,MAEF,IAAK,UACC9F,KAAKkuB,aAAa/C,KACpBnrB,KAAKmuB,SAAShD,GACdnlB,YAAW,WAAM,OAAAV,EAAKkpB,iBAAiBrD,OAEzCvlB,EAAM4d,kBACN5d,EAAME,iBACN,MAEF,IAAK,OACL,IAAK,SACC9F,KAAKkuB,aAAa/C,IACpBnrB,KAAKguB,YAEPhuB,KAAKyuB,iBACL7oB,EAAM4d,kBACN5d,EAAME,iBACN,MAEF,IAAK,MACL,IAAK,WACC9F,KAAKkuB,aAAa/C,IACpBnrB,KAAKguB,YAEPhuB,KAAK0uB,gBACL9oB,EAAM4d,kBACN5d,EAAME,iBACN,MAEF,QACM9F,KAAK2uB,gBAAgB/oB,EAAMtF,OAC7BN,KAAK4uB,qBAAqBhpB,EAAMtF,KAChCsF,EAAM4d,kBACN5d,EAAME,oBAMdinB,EAAAttB,UAAAovB,wBAAA,SAAwB1D,GACtBnrB,KAAK8uB,UAAU3D,GAAW,IAG5B4B,EAAAttB,UAAAsvB,yBAAA,SAAyB5D,EAAmBC,EAAsB4D,GAChEhvB,KAAKivB,sBAAsB9D,EAAWC,EAAc4D,GACpDhvB,KAAK8uB,UAAU3D,GACfnrB,KAAKguB,UAAU7C,IAGjB4B,EAAAttB,UAAAyvB,2BAAA,SAA2BtpB,EAAsBulB,EAAmBC,EAAsB4D,GACxF,IAAMG,EAAkBnvB,KAAKqtB,SAASlC,GAAWoC,yBAC3C6B,EAAqBpvB,KAAKqtB,SAASlC,GAAWqC,4BAC9C/f,EAAQzN,KAAKiW,WACnB,OAAQrQ,EAAMtF,KACZ,IAAK,IACHN,KAAKivB,sBAAsB9D,EAAWC,EAAc4D,GAChDhvB,KAAKqvB,8BAA8BlE,EAAWC,EAAc4D,KAC9DhvB,KAAKguB,UAAU7C,GACfnrB,KAAK8uB,UAAU3D,IAEjBvlB,EAAM4d,kBACN5d,EAAME,iBACN,MAEF,IAAK,QACH9F,KAAKivB,sBAAsB9D,EAAWC,EAAc4D,GACpDhvB,KAAKguB,UAAU7C,GACfnrB,KAAK8uB,UAAU3D,GACfvlB,EAAM4d,kBACN5d,EAAME,iBACN,MAEF,IAAK,SACH9F,KAAKguB,UAAU7C,GACfnrB,KAAK8uB,UAAU3D,GACfvlB,EAAM4d,kBACN5d,EAAME,iBACN,MAEF,IAAK,UACH9F,KAAKsvB,0BAA0BnE,EAAWgE,EAAiBC,GAAqB,GAEhFxpB,EAAM4d,kBACN5d,EAAME,iBACN,MAEF,IAAK,YACH9F,KAAKsvB,0BAA0BnE,EAAWgE,EAAiBC,EAAoB,GAE/ExpB,EAAM4d,kBACN5d,EAAME,iBACN,MAEF,IAAK,YACH9F,KAAKguB,UAAU7C,GACfnrB,KAAK8uB,WAAW3D,EAAY1d,EAAM/M,OAAS,GAAK+M,EAAM/M,QACtDkF,EAAM4d,kBACN5d,EAAME,iBACN,MAEF,IAAK,aACH9F,KAAKguB,UAAU7C,GACfnrB,KAAK8uB,WAAW3D,EAAY1d,EAAM/M,OAAS,GAAK+M,EAAM/M,QACtDkF,EAAM4d,kBACN5d,EAAME,iBACN,MAEF,IAAK,OACL,IAAK,SACH9F,KAAKsuB,kBAAkBnD,GACvBvlB,EAAM4d,kBACN5d,EAAME,iBACN,MAEF,IAAK,MACL,IAAK,WACH9F,KAAKwuB,iBAAiBrD,GACtBvlB,EAAM4d,kBACN5d,EAAME,iBACN,MAEF,IAAK,MACH9F,KAAKguB,UAAU7C,GACfnrB,KAAK8uB,UAAU3D,GACf,MAEF,QACMnrB,KAAK2uB,gBAAgB/oB,EAAMtF,OAC7BN,KAAKuvB,wBAAwBpE,EAAWvlB,EAAMtF,KAC9CsF,EAAM4d,kBACN5d,EAAME,oBAMdinB,EAAAttB,UAAA+vB,6BAAA,SAA6BrE,EAAmBC,EAAsB4D,GACpEhvB,KAAKyvB,aAAatE,EAAWC,EAAc4D,IAO7CjC,EAAAttB,UAAAmV,cAAA,WACE,IAAK5U,KAAKwN,GACR,MAAMrI,MAAM,kBAGd,IAAKnF,KAAKyoB,UACR,MAAMtjB,MAAM,yBAGd,IAAMsI,EAAQzN,KAAKiW,WACnB,IAAKxI,GAA0B,IAAjBA,EAAM/M,OAClB,MAAMyE,MAAM,uBAMhB4nB,EAAAttB,UAAAinB,gBAAA,SAAgBzhB,GACd,MAAME,MAAMF,IAGd8nB,EAAAttB,UAAA2uB,iBAAA,SAAiBjD,GACf,IAAM1d,EAAQzN,KAAKiW,WACnBjW,KAAK+M,iBAAiBhH,KAAK0H,EAAM0d,IAC7B1d,EAAM0d,aAAsB0B,IAC7Bpf,EAAM0d,GAAoChV,SAASpQ,QAIxDgnB,EAAAttB,UAAAwvB,sBAAA,SAAsB9D,EAAmBC,EAAsB4D,GAC7D,IAAMvhB,EAAQzN,KAAKiW,WAEf/N,EADalI,KAAK0vB,gBAAgBjiB,EAAM0d,IACsBC,GAC9DuE,EAAc,GACdX,MAAAA,IAEF9mB,GADAynB,EAAc3vB,KAAK4vB,mBAAmB1nB,IACnB8mB,IAGrB,IAAIjV,GAAgB,EACF,qBAAd7R,EAAK6C,MACP7C,EAAKgS,SAAWhS,EAAKgS,QACrBH,GAAgB,GACO,kBAAd7R,EAAK6C,OACdgP,GAAiB7R,EAAKgS,QACtByV,EAAY9hB,SAAQ,SAAA9M,GAAK,OAAAA,EAAEmZ,SAAU,KACrChS,EAAKgS,SAAU,GAGjBla,KAAK8M,YAAY/G,KAAK0H,GACtBzN,KAAKgtB,oBAAoBjnB,KAAKmC,IAC1BA,aAAgB0kB,IAA2B1kB,aAAgBykB,MAC7DzkB,EAAKiO,SAASpQ,OAEVgU,GACF7R,EAAK6R,cAAchU,KAAKmC,EAAKgS,WAKnC6S,EAAAttB,UAAA4vB,8BAAA,SAA8BlE,EAAmBC,EAAsB4D,GACrE,IAAMvhB,EAAQzN,KAAKiW,WAEf/N,EADalI,KAAK0vB,gBAAgBjiB,EAAM0d,IACsBC,GAC9D4D,MAAAA,IAEF9mB,EADoBlI,KAAK4vB,mBAAmB1nB,GACzB8mB,IAGrB,MAAqB,qBAAd9mB,EAAK6C,MAA6C,kBAAd7C,EAAK6C,MAGlDgiB,EAAAttB,UAAA0uB,SAAA,SAAShD,GACP,IAAM0E,EAAY7vB,KAAKqtB,SAASlC,GAAW9D,KAC3CrnB,KAAKqtB,SAASlC,GAAW9D,MAAO,EAC5BwI,GACF7vB,KAAKouB,iBAAiBjD,IAI1B4B,EAAAttB,UAAAuuB,UAAA,SAAU7C,GACJA,MAAAA,EACFnrB,KAAKqtB,SAASlC,GAAW9D,MAAO,EAEhCrnB,KAAKqtB,SAASxf,SAAQ,SAAA3F,GAAQ,OAAAA,EAAKmf,MAAO,MAI9C0F,EAAAttB,UAAAyuB,aAAA,SAAa/C,GACX,IAAM1d,EAAQzN,KAAKiW,WACb0V,EAAW3rB,KAAK0vB,gBAAgBjiB,EAAM0d,IAC5C,OAAO1d,EAAM0d,GAAWG,KAAOK,GAAYA,EAASjrB,OAAS,GAGvDqsB,EAAAttB,UAAAkvB,gBAAA,SAAgBmB,GACtB,OAAsB,IAAfA,EAAIpvB,UAAkBovB,EAAI1a,MAAM,OAGjC2X,EAAAttB,UAAAswB,iBAAA,SAAiB5E,EAAmBC,EAAsB4D,GAIhE,IAHA,IAAIgB,EAAgB,EACdviB,EAAQzN,KAAKiW,WACb0V,EAAW3rB,KAAK0vB,gBAAgBjiB,EAAM0d,IACnCpqB,EAAI,EAAGA,EAAIqqB,EAAcrqB,IAAK,CACrC,IAAMyqB,EAAUG,EAAS5qB,GACnB4uB,EAAc3vB,KAAK4vB,mBAAmBpE,GAC5CwE,GAAiBL,GAAeA,EAAYjvB,OAAS,EAAIivB,EAAYjvB,OAAS,EAOhF,OAJIsuB,MAAAA,IACFgB,GAAiBhB,GAGZgB,GAOTjD,EAAAttB,UAAAqvB,UAAA,SAAU3D,EAAmB8E,GAC3B,IAAMC,EAAWlwB,KAAK+tB,QAAQhlB,cAAcwB,SAASvC,SAASmoB,eACxDznB,EAAS1I,KAAKqtB,SAASrtB,KAAKktB,uBAAuB7F,KAEpD4I,IAASC,GACZlwB,KAAKqtB,SAASlC,GAAWsC,SAASpB,KAAKtjB,cAAcmC,QAGvDlL,KAAKguB,YACDtlB,GAAU1I,KAAKkuB,aAAa/C,IAC9BnrB,KAAKmuB,SAAShD,GAGhBnrB,KAAKktB,sBAAwB/B,GAG/B4B,EAAAttB,UAAA8uB,uBAAA,SAAuB6B,EAAuBzuB,GAC5C,IAAI0uB,EAAWD,EACT3iB,EAAQzN,KAAKiW,WACnB,GACEoa,GAAYA,EAAW5iB,EAAM/M,OAASiB,GAAQ8L,EAAM/M,cAC5CV,KAAK2tB,gBAAgB0C,IAAaA,IAAaD,GAErDC,IAAaD,GACfpwB,KAAK8uB,UAAUuB,IAInBtD,EAAAttB,UAAAgvB,eAAA,WACMzuB,KAAK2tB,gBAAgB,GACvB3tB,KAAK8uB,UAAU,GAEf9uB,KAAKuuB,uBAAuB,EAAG,IAInCxB,EAAAttB,UAAAivB,cAAA,WACE,IAAMjhB,EAAQzN,KAAKiW,WACfjW,KAAK2tB,gBAAgBlgB,EAAM/M,OAAS,GACtCV,KAAK8uB,UAAUrhB,EAAM/M,OAAS,GAE9BV,KAAKuuB,uBAAuB9gB,EAAM/M,OAAS,GAAI,IAInDqsB,EAAAttB,UAAAkuB,gBAAA,SAAgBxC,GACd,OAAQnrB,KAAKiW,WAAWkV,GAAWzkB,UAGrCqmB,EAAAttB,UAAAmvB,qBAAA,SAAqB0B,GACnB,IAAMC,EAAyBvwB,KAAKotB,UAAU9e,KAAI,SAAAmf,GAAY,OAAAA,EAASlB,mBAAmBxjB,cAAckY,eACpG1S,EAAQvO,KAAKktB,sBACbsD,GAAc,EAClB,GAEMD,EADJhiB,GAASA,EAAQgiB,EAAa7vB,OAAS,GAAK6vB,EAAa7vB,SAC9B6vB,EAAahiB,GAAOkiB,OAAOC,OAAO,EAAG,GAAGC,gBAAkBL,EAAKK,eACnF3wB,KAAK2tB,gBAAgBpf,KAC1BiiB,EAAajiB,UAEQ,IAAhBiiB,GAAqBjiB,IAAUvO,KAAKktB,uBAEzCsD,GAAc,GAChBxwB,KAAK8uB,UAAU0B,IAInBzD,EAAAttB,UAAAgwB,aAAA,SAAatE,EAAmBC,EAAsB4D,GACpD,GAAIhvB,KAAKqtB,SAASlC,GAAWsC,SAAStB,eAAezrB,OAAS,EAAG,CAC/D,IAAMsvB,EAAgBhwB,KAAK+vB,iBAAiB5E,EAAWC,EAAc4D,GAErEhvB,KAAKqtB,SAASlC,GAAWoC,yBAA2BnC,EACpDprB,KAAKqtB,SAASlC,GAAWqC,4BAA8BwB,EACvD,IAAM4B,EAAO5wB,KAAKqtB,SAASlC,GAAWsC,SAAStB,eAAe9V,UAAU2Z,GAAejnB,cACnF6nB,EACFA,EAAK1lB,QAEL+E,QAAQnM,MAAM,4BAGhBmM,QAAQnM,MAAM,gBAIlBipB,EAAAttB,UAAA6vB,0BAAA,SAA0BnE,EAAmB0F,EAA0BC,EAA6BnvB,GAClG,IAEIovB,EAFAC,EAAeH,EACfI,EAAkBH,EAEhBrjB,EAAQzN,KAAKiW,WACnB,EAAG,CACD,IAAMib,EAAclxB,KAAKmxB,sBAAsB1jB,EAAO0d,EAAW6F,EAAcC,EAAiBtvB,GAChGqvB,EAAeE,EAAYE,SAC3BH,EAAkBC,EAAYG,YAC9BN,EAAsBF,IAAqBG,GAAgBF,IAAwBG,SAC3EjxB,KAAKsxB,mBAAmBnG,EAAW6F,EAAcC,KAAqBF,GAE3EA,GACH/wB,KAAKyvB,aAAatE,EAAW6F,EAAcC,IAI/ClE,EAAAttB,UAAA6uB,kBAAA,SAAkBnD,GAChB,IAAIoG,EAAkB,KAChB9jB,EAAQzN,KAAKiW,WACb0V,EAAW3rB,KAAK0vB,gBAAgBjiB,EAAM0d,IACtCwE,EAAc3vB,KAAK4vB,mBAAmBjE,EAAS,IACjDgE,GAAeA,EAAYjvB,OAAS,IACtC6wB,EAAkB,GAGhBvxB,KAAKsxB,mBAAmBnG,EAAW,EAAGoG,GACxCvxB,KAAKyvB,aAAatE,EAAW,EAAGoG,GAEhCvxB,KAAKsvB,0BAA0BnE,EAAW,EAAGoG,EAAiB,IAIlExE,EAAAttB,UAAA+uB,iBAAA,SAAiBrD,GACf,IAAM1d,EAAQzN,KAAKiW,WACb0V,EAAW3rB,KAAK0vB,gBAAgBjiB,EAAM0d,IACtCqG,EAAgB7F,EAASjrB,OAAS,EAClC+wB,EAAW9F,EAAS6F,GACpB7B,EAAc3vB,KAAK4vB,mBAAmB6B,GACxCC,EAAiB,KACjB/B,GAAeA,EAAYjvB,OAAS,IACtCgxB,EAAiB/B,EAAYjvB,OAAS,GAGpCV,KAAKsxB,mBAAmBnG,EAAWqG,EAAeE,GACpD1xB,KAAKyvB,aAAatE,EAAWqG,EAAeE,GAE5C1xB,KAAKsvB,0BAA0BnE,EAAWqG,EAAeE,GAAiB,IAI9E3E,EAAAttB,UAAA6xB,mBAAA,SAAmBnG,EAAmBC,EAAsB4D,GAC1D,IAAMvhB,EAAQzN,KAAKiW,WAEf/N,EADalI,KAAK0vB,gBAAgBjiB,EAAM0d,IACsBC,GAC9D4D,MAAAA,IAEF9mB,EADoBlI,KAAK4vB,mBAAmB1nB,GACzB8mB,IAGrB,IAAI7mB,GAAc,EAKlB,MAJkB,cAAdD,EAAK6C,MAAsC,SAAd7C,EAAK6C,OACpC5C,GAAc,GAGTA,GAGT4kB,EAAAttB,UAAA8vB,wBAAA,SAAwBpE,EAAmBmF,GACzC,IAAMC,EAAyBvwB,KAAKotB,UAAU/W,UAAU8U,GAAWgB,eAAe7d,KAAI,SAAAmf,GAAY,OAAAA,EAAS1kB,cAAckY,eACrHmK,EAAeprB,KAAKqtB,SAASlC,GAAWoC,yBACxCyB,EAAkBhvB,KAAKqtB,SAASlC,GAAWqC,4BAC3CmE,GAAiB,EACjBC,EAAmB,KACnBb,GAAqB,EACnBtjB,EAAQzN,KAAKiW,WACnB,EAAG,CACD,IAAMib,EAAclxB,KAAKmxB,sBAAsB1jB,EAAO0d,EAAWC,EAAc4D,EAAiB,GAChG5D,EAAe8F,EAAYE,SAC3BpC,EAAkBkC,EAAYG,YAC9B,IAAM9iB,EAAQvO,KAAK+vB,iBAAiB5E,EAAWC,EAAc4D,GACzDuB,EAAahiB,IAAUgiB,EAAahiB,GAAOkiB,OAAOC,OAAO,EAAG,GAAGC,gBAAkBL,EAAKK,eACnF3wB,KAAKsxB,mBAAmBnG,EAAWC,EAAc4D,KACtD2C,EAAgBvG,EAChBwG,EAAmB5C,GAErB+B,EAAsB/wB,KAAKqtB,SAASlC,GAAWoC,2BAA6BnC,GACvEprB,KAAKqtB,SAASlC,GAAWqC,8BAAgCwB,SACpC,IAAnB2C,IAAyBZ,GAE9BY,GAAiB,GACnB3xB,KAAKyvB,aAAatE,EAAWwG,EAAeC,IAQhD7E,EAAAttB,UAAAwW,SAAA,WAOE,OALIjW,KAAK0N,mBAAqB1N,KAAK0N,kBAAkBhN,OAAS,EACpDV,KAAK0N,kBAAkB2I,UAEvBrW,KAAKyN,OAKjBsf,EAAAttB,UAAAiwB,gBAAA,SAAgBxnB,GACd,IAAIyjB,EAAW,GASf,OARIzjB,aAAgB2kB,KAClBlB,EAAWzjB,EAAKujB,eAGbE,GAAgC,IAApBA,EAASjrB,SACxBirB,EAAWzjB,EAAKojB,IAAMpjB,EAAKojB,IAAI7d,MAAQ,IAGlCke,GAGToB,EAAAttB,UAAAmwB,mBAAA,SAAmB1nB,GACjB,IAAIyjB,EAAW,GAYf,MAVkB,UAAdzjB,EAAK6C,OACH7C,aAAgB0kB,KAClBjB,EAAWzjB,EAAKujB,eAGbE,GAAgC,IAApBA,EAASjrB,SACxBirB,EAAWzjB,EAAKuF,MAAQvF,EAAKuF,MAAQ,KAIlCke,GAGToB,EAAAttB,UAAA0xB,sBAAA,SAAsB1jB,EAAO0d,EAAW6F,EAAcC,EAAiBtvB,GACrE,IAAMgqB,EAAW3rB,KAAK0vB,gBAAgBjiB,EAAM0d,IACtCwE,EAAc3vB,KAAK4vB,mBAAmBjE,EAASqF,IAEjDa,GAAmB,EAQvB,GAPIlC,GAAeA,EAAYjvB,OAAS,GAClCuwB,EAAkBtvB,GAAQ,GAAKsvB,EAAkBtvB,EAAOguB,EAAYjvB,SACtEuwB,GAAmBtvB,EACnBkwB,GAAmB,GAInBA,EAAkB,CACpBb,GAAgBA,EAAervB,EAAOgqB,EAASjrB,QAAUirB,EAASjrB,OAClE,IAAMoxB,EAAmB9xB,KAAK4vB,mBAAmBjE,EAASqF,IAExDC,EADEa,GAAoBA,EAAiBpxB,OAAS,IAC5BiB,EAAO,GAAK,EAAI,GAAKA,EAAOmwB,EAAiBpxB,QAAUoxB,EAAiBpxB,OAE1E,KAItB,MAAO,CAAC0wB,SAAUJ,EAAcK,YAAaJ,IAG/ClE,EAAAttB,UAAA6Q,YAAA,WACE,OAAOtQ,KAAKuQ,SAAWvQ,KAAKuQ,SAAWvQ,KAAKwN,GAAK,gBAGnDuf,EAAAttB,UAAAsyB,YAAA,WACE,OAAO/xB,KAAK2N,eAAiB3N,KAAK2N,eAAenJ,aAAexE,KAAK6S,UAGvEka,EAAAttB,UAAAiR,gBAAA,WACE,IAAIjM,EAMJ,OALIzE,KAAK8S,UACPrO,EAAUzE,KAAK8S,UAAU5N,KAAOlF,KAAK8S,UAAU5N,KAAO,MAAOqG,EAAYC,WAAWxL,KAAK8S,UAAU7N,MAAM,OAChGjF,KAAK4S,YACdnO,EAAU,MAAO8G,EAAYC,WAAWxL,KAAK4S,WAAW,QAEnDnO,GAGTsoB,EAAAttB,UAAAqQ,UAAA,SAAU5H,EAAMqG,GACd,IAAIf,EAQJ,OAPItF,IAEAsF,EADEtF,EAAKsF,GACFtF,EAAKsF,GAEK,IAAVe,EAAcvO,KAAKsQ,cAAmBtQ,KAAKsQ,cAAa,IAAI/B,GAG9Df,GAGTuf,EAAAttB,UAAAuyB,cAAA,SAAc7G,GACZ,IAAIniB,EAAQ,GACZ,GAAIhJ,KAAKqtB,UAAYlC,EAAYnrB,KAAKqtB,SAAS3sB,OAAQ,CACrD,IACMuxB,EADWjyB,KAAKqtB,SAASlC,GAAWsC,SACpBpB,KAAKtjB,cAAcmpB,wBAEvClpB,EADEhJ,KAAKqtB,SAASlC,GAAW9D,KACnB,CACNjX,SAAU,WACV+hB,IAAMF,EAAKG,OAAS,EAAK,KACzBC,KAAM,MACNC,OAAQ,IACRrpB,QAAS,SAGH,CACNqpB,OAAQ,EACRrpB,QAAS,QAKf,OAAOD,GAGT+jB,EAAAttB,UAAAyrB,aAAA,SAAahjB,EAAMqG,EAAegkB,GAChC,IAAI/kB,EAQJ,OAPItF,IAEAsF,EADEtF,EAAKsF,GACFtF,EAAKsF,GAEK,IAAVe,EAAc,OAAOgkB,EAAa,OAAOA,EAAQ,IAAIhkB,GAGvDf,GAGTuf,EAAAttB,UAAA+yB,yBAAA,SAAyBC,GACvB,IAAIC,EAAc,KAIlB,MAHwB,qBAApBD,EAAW1nB,MAAmD,kBAApB0nB,EAAW1nB,OACvD2nB,IAAgBD,EAAWvY,SAEtBwY,MAltB2BhuB,wBAJrCT,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,eACVC,SAAA,m5dA3BeqN,EAAAA,kDA+BdpN,EAAAA,wBACAA,EAAAA,uBACAA,EAAAA,qBACAA,EAAAA,2BACAyC,EAAAA,iCACAA,EAAAA,oCACAA,EAAAA,yBASAzC,EAAAA,yBACAA,EAAAA,yBACAA,EAAAA,uBAEAM,EAAAA,UAAST,KAAA,CAAC,UAAW,CAAEmH,KAAMC,EAAAA,gCAC7BqF,EAAAA,aAAYzM,KAAA,CAAC0nB,4BACOhb,EAAAA,gBAAe1M,KAAA,CAAC4oB,+BACpClc,EAAAA,gBAAe1M,KAAA,CAAC2oB,OAD2C1sB,EAAA,CAA3D2L,8DC7CH,SAAA6mB,0DAA+C/yB,EAAA+yB,EAAApuB,MAAAD,wBAJ9CL,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,yBACVC,SAAU,2GAGTC,EAAAA,sBACAA,EAAAA,0BACAA,EAAAA,wBACAA,EAAAA,kBACAA,EAAAA,4BCkED,SAAAuuB,EAAoBrhB,GAApB,IAAAjM,EACEf,EAAA5E,KAAAK,OAAOA,YADWsF,EAAAiM,kBAAAA,EA9BXjM,EAAAoD,QAAS,EACRpD,EAAAutB,aAAe,IAAIptB,EAAAA,aA0B7BH,EAAAwtB,cAAe,EACfxtB,EAAAytB,oBAAqB,WAhCoBnzB,EAAAgzB,EAAAruB,GAsCzCquB,EAAAnzB,UAAA6jB,QAAA,WAAA,IAAAhe,EAAAtF,KAEEA,KAAK8yB,cAAe,EACpB9sB,YAAW,WACTV,EAAKwtB,cAAe,EACpBxtB,EAAKutB,aAAa9sB,MAAK,KACtB,KAGL6sB,EAAAnzB,UAAAqR,QAAA,WACE,IAAItI,EAIJ,OAHIxI,KAAKwI,OACPA,EAAOxI,KAAKwI,KAAKrC,qBAEZqC,GAGToqB,EAAAnzB,UAAAwW,SAAA,WACE,OAAOjW,KAAKgzB,iBAAmBhzB,KAAKgzB,gBAAgBtyB,OAAS,EAAIV,KAAKgzB,gBAAgB3c,UAAYrW,KAAKyN,OAGzGmlB,EAAAnzB,UAAAwzB,gBAAA,SAAgBC,GACdlzB,KAAK+yB,mBAAqBG,EAG1BlzB,KAAKuR,kBAAkBC,iBAGzBohB,EAAAnzB,UAAA+gB,oBAAA,SAAoBvb,GAClB,MAAM,IAAIE,MAAMF,IAGlB2tB,EAAAnzB,UAAAqF,YAAA,SAAYC,GACV,IAAK/E,KAAKwN,GACR,MAAM,IAAIrI,MAAM,sBAxEqBT,wBAtB1CT,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,oBACVC,SAAA,s+VACAkX,WAAY,CACVhS,EAAAA,QAAQ,sBAAuB,CAC7BpC,EAAAA,MAAM,OAAQ8B,EAAAA,MAAM,CAClBuS,QAAS,MACT3E,UAAW,kBAEb1P,EAAAA,MAAM,IAAK8B,EAAAA,MAAM,CACfuS,QAAS,MACT3E,UAAW,iBAEb4E,EAAAA,WAAW,SAAU,CACnBC,EAAAA,QAAQ,oBAEVD,EAAAA,WAAW,SAAU,CACnBC,EAAAA,QAAQ,mEAvCdhK,EAAAA,kDA8CCpN,EAAAA,uBACAA,EAAAA,sBACAA,EAAAA,4BACAyC,EAAAA,sBAEAzC,EAAAA,2BACAA,EAAAA,uBACAA,EAAAA,qBACAA,EAAAA,oBAEAA,EAAAA,oBACAA,EAAAA,6BACAA,EAAAA,4BACAA,EAAAA,8BAGAuM,EAAAA,gBAAe1M,KAAA,CAACmN,iCAGhBT,EAAAA,gBAAe1M,KAAA,CAACiN,6BAGhBP,EAAAA,gBAAe1M,KAAA,CAACgN,0BAGhBN,EAAAA,gBAAe1M,KAAA,CAACkN,4BAEhBR,EAAAA,gBAAe1M,KAAA,CAACyuB,OAXgBxyB,EAAA,CADhC2L,2CAIsC3L,EAAA,CADtC2L,iDAIkC3L,EAAA,CADlC2L,6CAI+B3L,EAAA,CAD/B2L,6DC/DH,SAAAqnB,0DAAwCvzB,EAAAuzB,EAAA5uB,MAAAD,wBAJvCL,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,kBACVC,SAAU,8GAGTC,EAAAA,kBACAA,EAAAA,uBACAA,EAAAA,uBACAA,EAAAA,gBCLH,kCAJCJ,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,oBACVC,SAAU,uCAGTwM,EAAAA,gBAAe1M,KAAA,CAACivB,0BCDnB,SAAAC,0DAA2CxzB,EAAAwzB,EAAA7uB,MAAAD,wBAJ1CL,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,qBACVC,SAAU,8GAGTC,EAAAA,gBCDH,kCAJCJ,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,iBACVC,SAAU,uCAGTwM,EAAAA,gBAAe1M,KAAA,CAACivB,0BCMnB,SAAAE,0DAAoCzzB,EAAAyzB,EAAA9uB,GAmBlC8uB,EAAA5zB,UAAA6zB,gBAAA,WACE,OAAOtzB,KAAKuzB,iBAAmBvzB,KAAKuzB,iBAAiB9sB,QAAUzG,KAAKwzB,gBAGtEH,EAAA5zB,UAAAg0B,eAAA,WACE,IAAIC,EAAc,GAMlB,OALI1zB,KAAK2zB,iBAAmB3zB,KAAK2zB,gBAAgBC,MAC/CF,EAAc1zB,KAAK2zB,gBAAgBC,MAAMvd,UAChCrW,KAAK6zB,OACdH,EAAc1zB,KAAK6zB,MAEdH,GAGTL,EAAA5zB,UAAAoU,QAAA,WACE,IAAMigB,EAAW9zB,KAAK+zB,kBAAoB/zB,KAAK+zB,iBAAiBrzB,OAAS,EAAIV,KAAK+zB,iBAAiB1d,UAAYrW,KAAK8T,KACpH,IAAKggB,GAA8B,IAAnBA,EAAQpzB,OACtB,MAAM,IAAIyE,MAAM,qBAElB,OAAO2uB,GAGTT,EAAA5zB,UAAAu0B,YAAA,SAAYC,GACV,OAAOA,aAAeC,GAAoBD,EAAIL,MAAMvd,UAAY4d,GAGlEZ,EAAA5zB,UAAA00B,gBAAA,SAAgBC,EAAmCH,EAAaI,GAC9D,MAAID,aAAgBjB,GACZ,IAAIhuB,MAAM,4CAA4CkvB,EAAS,WAAWJ,GAE1E,IAAI9uB,MAAM,kDAAkDkvB,EAAS,WAAWJ,OAjDxDvvB,wBAJnCT,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,aACVC,SAAA,i/MAICC,EAAAA,oBACAA,EAAAA,uBACAA,EAAAA,8BACAA,EAAAA,iCACAA,EAAAA,uBACAA,EAAAA,kBACAA,EAAAA,uBACAA,EAAAA,gCAGAuM,EAAAA,gBAAe1M,KAAA,CAACkvB,6BAGhBxiB,EAAAA,gBAAe1M,KAAA,CAACowB,8BAEhB1jB,EAAAA,gBAAe1M,KAAA,CAACgwB,OALuB/zB,EAAA,CADvC2L,6CAIsC3L,EAAA,CADtC2L,4CC5BH,ICaYyoB,GDbZC,GAAA,WAAA,SAAAA,YAQgBA,EAAAC,oBAAP,SAA2Bp0B,EAAgB4E,EAAcyvB,GAAzD,IAAApvB,EAAAtF,KACDmV,EAAkB,GAClBwf,GAAW,EACTC,EAAmB50B,KAAK60B,oBAAoBx0B,GAgBlD,OAdI4E,GAAQA,EAAK6vB,MAAM,KAAKp0B,OAAS,IACnCyU,EAAQlQ,EAAK6vB,MAAM,MAErB3f,EAAM5R,KAAK0B,GAEXkQ,EAAMtH,SAAQ,SAAAknB,GACRH,GAAoBG,IACjBL,GAAYE,IAAqBtvB,EAAKuvB,oBAAoBE,KAClDL,GAAYE,EAAiBD,SAASrvB,EAAKuvB,oBAAoBE,OAC1EJ,GAAW,MAKVA,GAOMH,EAAAK,oBAAP,SAA2B/E,GACjC,IAAIkF,EAAMlF,EAwBV,OAvBIA,IAoBFkF,GADAA,GADAA,GADAA,GADAA,GADAA,GADAA,GADAA,GADAA,GADAA,GADAA,GADAA,GADAA,GADAA,GADAA,GADAA,GADAA,GADAA,GADAA,GADAA,EAAMlF,EAAImF,oBAAoBxE,QACpBhlB,QAAQ,IAAK,MACbA,QAAQ,IAAK,MACbA,QAAQ,IAAK,MACbA,QAAQ,IAAK,MACbA,QAAQ,IAAK,MACbA,QAAQ,IAAK,MACbA,QAAQ,IAAK,MACbA,QAAQ,IAAK,MACbA,QAAQ,IAAK,MACbA,QAAQ,IAAK,MACbA,QAAQ,IAAK,MACbA,QAAQ,IAAK,MACbA,QAAQ,IAAK,MACbA,QAAQ,IAAK,MACbA,QAAQ,IAAK,MACbA,QAAQ,IAAK,KACbA,QAAQ,IAAK,KACbA,QAAQ,IAAM,KACdA,QAAQ,IAAK,KAGlBupB,KA3DX,GCaYT,EAAAA,aAAAA,GAAAA,GAAAA,EAAAA,UAAAA,EAAAA,QAAO,KACf,KAAA,OACAA,GAAA,IAAA,MACAA,GAAA,KAAA,0BCRJ,SAAAW,0DAAsDt1B,EAAAs1B,EAAA3wB,MAAAD,wBAJrDL,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,kCACVC,SAAU,8GAGTC,EAAAA,kBACAA,EAAAA,uBACAA,EAAAA,uBACAA,EAAAA,uBACAA,EAAAA,yBACAA,EAAAA,6BACAA,EAAAA,gBCRH,kCAJCJ,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,6BACVC,SAAU,uCAGTwM,EAAAA,gBAAe1M,KAAA,CAACgxB,0BCAnB,SAAAC,0DAAmDv1B,EAAAu1B,EAAA5wB,MAAAD,wBAJlDL,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,+BACVC,SAAU,8GAGTC,EAAAA,kBACAA,EAAAA,uBACAA,EAAAA,uBACAA,EAAAA,gBCTH,WAUYrE,KAAA+Z,cAAuC,IAAItU,EAAAA,mCAVtDxB,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,0BACVC,SAAU,2CAITwM,EAAAA,gBAAe1M,KAAA,CAACixB,gBAEhB9wB,EAAAA,uBACAA,EAAAA,6BACAyC,EAAAA,4BCGD,SAAAsuB,EAAoBlvB,GAAAlG,KAAAkG,QAAAA,SAEbkvB,EAAA31B,UAAA+E,WAAA,WACL,OAAOxE,KAAKkG,QAAQ6C,cAAckY,uCAZrCtB,EAAAA,UAASzb,KAAA,CAAC,CACTC,SAAU,2DAROmH,EAAAA,4CAYhBjH,EAAAA,wBACAA,EAAAA,2BACAA,EAAAA,2BCHH,SAAAgxB,YAUSA,EAAA51B,UAAA61B,QAAA,SAAQC,GACb,OAAOv1B,KAAKw1B,aAAalmB,MAAK,SAAA8kB,GAAQ,OAAAA,EAAKqB,cAAgBF,gCAd9D5V,EAAAA,UAASzb,KAAA,CAAC,CACTC,SAAU,uDAITyM,EAAAA,gBAAe1M,KAAA,CAACkxB,qBAChB/wB,EAAAA,4BC+CD,SAAAqxB,EAAoBC,EAAwBC,GAA5C,IAAAtwB,EACEf,EAAA5E,KAAAK,OAAOA,YADWsF,EAAAqwB,GAAAA,EAAwBrwB,EAAAswB,eAAAA,EARlCtwB,EAAAuwB,WAAa,IAAIpwB,EAAAA,aACjBH,EAAAwwB,YAAc,IAAIrwB,EAAAA,aAClBH,EAAAywB,iBAAmB,IAAItwB,EAAAA,aAGjCH,EAAA0wB,YAAczB,EAAAA,iBA9B4B30B,EAAA81B,EAAAnxB,GAqC1CmxB,EAAAj2B,UAAAgV,gBAAA,WACE,IAAMwhB,EAAej2B,KAAK21B,GAAG5sB,cAAcmtB,cAAc,cACrDD,GACFA,EAAaE,aAAa,WAAY,KAExCn2B,KAAKo2B,8BAMPV,EAAAj2B,UAAA22B,2BAAA,WACE,IAAMC,EAAoBr2B,KAAKs2B,yBAG/B,GAAIt2B,KAAK+1B,iBAAiBQ,UAAU71B,OAAS,EAC3CV,KAAK+1B,iBAAiBhwB,KAAKswB,GAC3Br2B,KAAK41B,eAAeY,mBACf,CAGLx2B,KAAKy2B,YAAcz2B,KAAK6T,UACxB7T,KAAK41B,eAAepkB,gBAGpB,IAAIklB,EAAU12B,KAAK22B,WAAWN,EAAmBr2B,KAAK02B,QAAQrgB,WAC9DqgB,EAAU12B,KAAK42B,SAASP,EAAmBK,GAC3C12B,KAAKy2B,YAAcC,EAAQpoB,KAAI,SAAA3N,GAAK,OAAAA,EAAEk2B,WACtC72B,KAAK41B,eAAepkB,kBAQhBkkB,EAAAj2B,UAAA62B,uBAAA,WACN,IAAMQ,EAAS,CACbC,QAAS,GACTC,KAAM,MAGFnD,EAAO7zB,KAAKyzB,iBAClB,GAAII,EAAM,CACRA,EAAKhmB,SAAQ,SAACopB,EAAYC,GACpBD,EAAWE,WAAaF,EAAWG,cACrCN,EAAOC,QAAQxzB,KAAK,CAAEkyB,YAAayB,EAAiBG,WAAYJ,EAAWK,iBAI/E,IAAMC,EAAqB1D,EAAK7kB,WAAU,SAAAolB,GAAQ,OAAAA,EAAKoD,SAAWpD,EAAKoD,UAAYjD,EAAAA,QAAQkD,QAC3FX,EAAOE,KAAQO,GAAsB,EAAK,CAAE9B,YAAa8B,EAAoBG,MAAO7D,EAAK0D,GAAoBC,SAAY,KAG3H,OAAOV,GAOTpB,EAAAj2B,UAAAk4B,WAAA,WACE,IAAM9D,EAAO7zB,KAAKyzB,iBAClB,QAAOI,GAAOA,EAAK7kB,WAAU,SAAAolB,GAAQ,OAAAA,EAAK+C,cAAc,GAG1DzB,EAAAj2B,UAAAg0B,eAAA,WACE,OAAOzzB,KAAK2zB,iBAAmB3zB,KAAK2zB,gBAAgBC,MAAMlzB,OAAS,EAAIV,KAAK2zB,gBAAgBC,MAAMvd,UAAYrW,KAAK6zB,MAGrH6B,EAAAj2B,UAAAoU,QAAA,WACE,IAAIC,EAAO,GAMX,OALI9T,KAAK+zB,iBAAiBrzB,OAAS,EACjCoT,EAAO9T,KAAK+zB,iBAAiB1d,UACpBrW,KAAK8T,OACdA,EAAO9T,KAAK8T,MAEPA,GAQT4hB,EAAAj2B,UAAAm4B,eAAA,WACE,OAAO53B,KAAK+1B,iBAAiBQ,UAAU71B,OAAS,EAAIV,KAAK6T,UAAY7T,KAAKy2B,aAG5Ef,EAAAj2B,UAAA6Q,YAAA,WACE,OAAOtQ,KAAKuQ,SAAWvQ,KAAKuQ,SAAW,gBAGzCmlB,EAAAj2B,UAAAo4B,YAAA,SAAYtpB,GACV,OAAOvO,KAAKsQ,cAAgB,WAAa/B,GAG3CmnB,EAAAj2B,UAAAq4B,iBAAA,SAAiBvpB,GACf,OAAOvO,KAAKsQ,cAAgB,aAAe/B,GAG7CmnB,EAAAj2B,UAAAs4B,kBAAA,SAAkBxpB,GAChB,OAAOvO,KAAKsQ,cAAgB,kBAAoB/B,GAGlDmnB,EAAAj2B,UAAA6zB,gBAAA,WACE,OAAOtzB,KAAKuzB,iBAAmBvzB,KAAKuzB,iBAAiB9sB,QAAUzG,KAAKwzB,gBAGtEkC,EAAAj2B,UAAAu4B,iBAAA,SAAiBR,GACf,OAAIA,IAAYjD,EAAAA,QAAQ0D,IACf,YACET,IAAYjD,EAAAA,QAAQh0B,KACtB,aACEi3B,IAAYjD,EAAAA,QAAQkD,KACtB,YADF,GAKT/B,EAAAj2B,UAAAy4B,4BAAA,SAA4BjE,EAAasB,GACvC,MAAM,IAAIpwB,MAAM,kDAAkD8uB,EAAG,eAAesB,IAMtFG,EAAAj2B,UAAA04B,qBAAA,SAAqBlE,GACfA,aAAemE,IACjBnE,EAAIla,cAAchU,KAAKkuB,EAAI/Z,SAE7Bla,KAAKq4B,uBAMC3C,EAAAj2B,UAAA64B,WAAA,WACNt4B,KAAK6T,UAAUhG,SAAQ,SAAAlN,GACrB,IAAM43B,EAAW53B,EAAEuZ,SAAWvZ,aAAay3B,GAC3Cz3B,EAAEuZ,SAAU,EACRqe,GACD53B,EAAgCoZ,cAAchU,KAAKpF,EAAEuZ,YAG1Dla,KAAKq4B,uBAMC3C,EAAAj2B,UAAA44B,oBAAA,WAC+B,IAAjCr4B,KAAK+zB,iBAAiBrzB,QACxBV,KAAK61B,WAAW9vB,KAAK/F,KAAK8T,MAG5B,IAAM0kB,EAAiB,GACvBx4B,KAAK6T,UAAUhG,SAAQ,SAAAlN,GAAK,OAAA63B,EAAU73B,EAAE6M,MAAQ7M,EAAEuZ,WAClDla,KAAK81B,YAAY/vB,KAAKyyB,IAOxB9C,EAAAj2B,UAAAg5B,kBAAA,SAAkBvwB,GACZA,EAAKivB,YACPjvB,EAAKkvB,eAAiBlvB,EAAKovB,YAC3Bt3B,KAAKs4B,cAGPt4B,KAAKo2B,8BAUCV,EAAAj2B,UAAAk3B,WAAA,SAAWN,EAA2CviB,GAC5D,IAAI4kB,EAAe5kB,EAMnB,OALAuiB,EAAkBU,QAAQlpB,SAAQ,SAAAY,GAChCiqB,EAAeA,EAAajqB,QAAO,SAAAwlB,GACjC,OAAAO,GAAYC,oBAAoBR,EAAIqB,QAAQ7mB,EAAOgnB,aAAajxB,aAAciK,EAAO4oB,kBAGlFqB,GAWThD,EAAAj2B,UAAAk5B,mBAAA,SAAmBpqB,GAAnB,IAAAjJ,EAAAtF,KACQ6zB,EAAO7zB,KAAKyzB,iBACdI,GACFA,EAAKhmB,SAAQ,SAACumB,EAAMC,GACdD,EAAKoD,UACPpD,EAAKoD,QAAUnD,IAAc9lB,EAAQjJ,EAAKszB,iBAAiBxE,GAAQG,EAAAA,QAAQkD,SAKjFz3B,KAAKo2B,8BAUCV,EAAAj2B,UAAAm3B,SAAA,SAASP,EAA2CviB,GAApD,IAAAxO,EAAAtF,KACF64B,EAAa/kB,EACjB,GAAIuiB,EAAkBW,KAAM,CAC1B,IAAM8B,EAAczC,EAAkBW,KAAKvB,YACrCsD,EAAQ1C,EAAkBW,KAAKU,QAAUnD,EAAAA,QAAQ0D,IACvDY,EAAa/kB,EAAKkjB,MAAK,SAACgC,EAAG75B,GACzB,OAAAmG,EAAK2zB,mBAAmBD,EAAE1D,QAAQwD,GAAc35B,EAAEm2B,QAAQwD,GAAcC,MAG5E,OAAOF,GAMTnD,EAAAj2B,UAAAw5B,mBAAA,SAAmBD,EAAkB75B,EAAkB+5B,GACrD,IACMC,EAAcn5B,KAAKo5B,cAAcJ,EAAEx0B,cACnC60B,EAAcr5B,KAAKo5B,cAAcj6B,EAAEqF,cAQzC,OANI80B,OAAOH,IAAgBG,OAAOD,GACvBF,EAAYI,cAAcF,EAAa,KAAM,CAAEG,YAAa,OAAQC,mBAAmB,IAEvFN,EAAYI,cAAcF,OAAa9e,EAAW,CAAEmf,SAAS,MAGvDR,EAAQ,GAAK,IAMxBxD,EAAAj2B,UAAAm5B,iBAAA,SAAiB1wB,GACvB,OAAIA,EAAKsvB,UAAYjD,EAAAA,QAAQkD,MAAQvvB,EAAKsvB,UAAYjD,EAAAA,QAAQh0B,KACrDg0B,EAAAA,QAAQ0D,IAER1D,EAAAA,QAAQh0B,MAOXm1B,EAAAj2B,UAAA25B,cAAA,SAAcO,GAIpB,MAHI,eAAeC,KAAKD,KACtBA,EAAMA,EAAIluB,QAAQ,KAAM,KAEnBkuB,MA9SiCj1B,wBAJ3CT,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,sBACVC,SAAA,k9ZArBAkH,EAAAA,kBAHAmG,EAAAA,oDA4BCpN,EAAAA,oBACAA,EAAAA,uBAEAA,EAAAA,8BACAA,EAAAA,iCACAA,EAAAA,6BACAA,EAAAA,wBACAA,EAAAA,uBACAA,EAAAA,+BACAA,EAAAA,kBACAA,EAAAA,uBACAA,EAAAA,gCAIAuM,EAAAA,gBAAe1M,KAAA,CAACkvB,6BAGhBxiB,EAAAA,gBAAe1M,KAAA,CAAC21B,8BAEhBjpB,EAAAA,gBAAe1M,KAAA,CAACk0B,qBAChBznB,EAAAA,aAAYzM,KAAA,CAACmxB,wBAEbvuB,EAAAA,4BACAA,EAAAA,iCACAA,EAAAA,UAVuC3G,EAAA,CADvC2L,6CAI8C3L,EAAA,CAD9C2L,+DCKD,SAAAguB,EAAoBxX,EAAkCE,GAAtD,IAAAld,EACEf,EAAA5E,KAAAK,OAAOA,YADWsF,EAAAgd,MAAAA,EAAkChd,EAAAkd,gBAAAA,EAX5Cld,EAAAmd,aAAe,IAAIhd,EAAAA,aAOrBH,EAAAod,qBAA2BnI,EAC3BjV,EAAAy0B,aAAc,EACdz0B,EAAA00B,uBAAwB,WA7BEp6B,EAAAk6B,EAAAv1B,GAUlCnF,OAAA4B,eAAa84B,EAAAr6B,UAAA,SAAM,KAOnB,WACE,OAAOO,KAAKi6B,aARd,SAAoBv4B,GAApB,IAAA4D,EAAAtF,KACEgG,YAAW,WACTV,EAAK20B,QAAUv4B,EACf4D,EAAKgd,MAAM9Q,gBACXlM,EAAKsd,wDAqBTkX,EAAAr6B,UAAAwa,YAAA,WACEja,KAAKwO,QAAS,GAGhBsrB,EAAAr6B,UAAAgV,gBAAA,WACE,IAAKzU,KAAKwN,GACR,MAAMrI,MAAM,kBAGd,IAAKnF,KAAKmY,SAAWnY,KAAK6iB,WACxB,MAAM1d,MAAM,sBAGdnF,KAAK+5B,aAAc,EACnB/5B,KAAK4iB,qBAGPkX,EAAAr6B,UAAA6jB,QAAA,WACEtjB,KAAKyiB,aAAa1c,MAAK,IAGzB+zB,EAAAr6B,UAAAmjB,kBAAA,WACE,GAAI5iB,KAAKi6B,SAAWj6B,KAAK6iB,aAAe7iB,KAAKg6B,sBAAuB,CAClE,IAAMlX,EAAU9iB,KAAKwiB,gBAAgBO,wBAAwB/iB,KAAK6iB,YAC5DG,EAAYhjB,KAAKijB,UAAUC,gBAAgBJ,GAC7C9iB,KAAKmjB,0BACPnjB,KAAKmjB,yBAAyBnjB,KAAMgjB,GAEtChjB,KAAKg6B,uBAAwB,EAG/B,GAAIh6B,KAAKi6B,UAAYj6B,KAAK0iB,iBAAmB1iB,KAAK+5B,cAChD/5B,KAAK0iB,gBAAkB1iB,KAAKi6B,QAExBj6B,KAAKi6B,SAAWj6B,KAAKk6B,YAAY,CACnCl6B,KAAKsiB,MAAM9Q,gBACX,IAAM2oB,EAAYzyB,EAAWC,yBAAyB3H,KAAKo6B,aAAarxB,eACpEoxB,GACFA,EAAUjvB,aAzEgBxG,wBAJnCT,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,aACVC,SAAA,6nCAjBAqN,EAAAA,yBACW6S,EAAAA,mEAoBV3f,EAAAA,UAAST,KAAA,CAAC,mCACVS,EAAAA,UAAST,KAAA,CAAC,YAAa,CAACmH,KAAMkZ,EAAAA,+BAE9BlgB,EAAAA,uBACAA,EAAAA,sBACAA,EAAAA,0BACAA,EAAAA,sBAEAA,EAAAA,4BAUAyC,EAAAA,6BCjCH,SAAAuzB,0DAA8Cz6B,EAAAy6B,EAAA91B,MAAAD,wBAJ7CL,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,wBACVC,SAAU,8GAITC,EAAAA,4BCHH,SAAAi2B,IAAA,IAAAh1B,EAAAf,EAAArC,MAAAlC,KAAA+D,EAAAtD,aAAAT,YAUYsF,EAAAi1B,WAAoC,IAAI90B,EAAAA,sBANR7F,EAAA06B,EAAA/1B,MAAAG,wBAJ3CT,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,sBACVC,SAAU,oCAITC,EAAAA,oBACAA,EAAAA,uBACAA,EAAAA,0BAEAyC,EAAAA,gCAGA8J,EAAAA,gBAAe1M,KAAA,CAACm2B,8BAGhBzpB,EAAAA,gBAAe1M,KAAA,CAACgN,MAH0B/Q,EAAA,CAD1C2L,4CAIkC3L,EAAA,CADlC2L,gECZH,SAAA0uB,IAAA,IAAAl1B,EAAAf,EAAArC,MAAAlC,KAAA+D,EAAAtD,aAAAT,YAqBEsF,EAAAm1B,SAAU,WAjB4B76B,EAAA46B,EAAAj2B,GAoBtCi2B,EAAA/6B,UAAAqF,YAAA,SAAYC,GACV,IAAK/E,KAAKuQ,SACR,MAAM,IAAIpL,MAAM,yBAIpBq1B,EAAA/6B,UAAAqQ,UAAA,SAAU5H,EAAMqG,GAWd,OATIrG,EAAKsF,GACFtF,EAAKsF,GAEI,IAAVe,EACGvO,KAAKuQ,SAAWvQ,KAAKuQ,cAAWgK,EAEhCva,KAAKuQ,SAAWvQ,KAAKuQ,SAAW,IAAMhC,EAAQA,GAMzDisB,EAAA/6B,UAAAi7B,UAAA,WAAA,IAAAp1B,EAAAtF,KACgBA,KAAKiW,WACbpI,SAAQ,SAAA3F,GACZ,IAAMyyB,EAAWzyB,EAAKmf,OAAS/hB,EAAKm1B,QACpCvyB,EAAKmf,KAAO/hB,EAAKm1B,QACbE,GAAYzyB,aAAgBoyB,IAC9BpyB,EAAKqyB,WAAWx0B,KAAKmC,EAAKmf,SAG9BrnB,KAAKy6B,SAAWz6B,KAAKy6B,SAGvBD,EAAA/6B,UAAAm7B,WAAA,SAAW1yB,GACT,IAAKA,EAAKmf,MAAQrnB,KAAK66B,YAAa,CAClC,IAAMC,GAAgB5yB,EAAKmf,KAC3B,IAAKrnB,KAAK+6B,cACM/6B,KAAKiW,WACbpI,SAAQ,SAAAmtB,GACZ,IAAMC,EAAUD,EAAG3T,KACnB2T,EAAG3T,MAAO,EACN4T,GAAWD,IAAO9yB,GAAQ8yB,aAAcV,IAC1CU,EAAGT,WAAWx0B,KAAKi1B,EAAG3T,SAI5Bnf,EAAKmf,KAAOyT,EACR5yB,aAAgBoyB,IAClBpyB,EAAKqyB,WAAWx0B,KAAKmC,EAAKmf,QAKhCmT,EAAA/6B,UAAAgvB,eAAA,SAAe7oB,GACbA,EAAME,iBACN9F,KAAKk7B,cAAc7kB,UAAU,GAAGtN,cAAcmC,SAGhDsvB,EAAA/6B,UAAAivB,cAAA,SAAc9oB,GACZA,EAAME,iBACN9F,KAAKk7B,cAAc7kB,UAAUrW,KAAKk7B,cAAcx6B,OAAS,GAAGqI,cAAcmC,SAG5EsvB,EAAA/6B,UAAA07B,cAAA,SAAcv1B,EAAOw1B,GACnBx1B,EAAME,iBACN,IAAMu1B,EAAYr7B,KAAKk7B,cAAc7kB,UACkB,MAAnDglB,GAAWD,EAAc,GAAKC,EAAU36B,SAC1C26B,GAAWD,EAAc,GAAKC,EAAU36B,QAAQqI,cAAcmC,SAIlEsvB,EAAA/6B,UAAA67B,kBAAA,SAAkB11B,EAAOw1B,GACvBx1B,EAAME,iBACN,IAAMu1B,EAAYr7B,KAAKk7B,cAAc7kB,UACqC,MAAtEglB,GAAWD,EAAcC,EAAU36B,OAAS,GAAK26B,EAAU36B,SAC7D26B,GAAWD,EAAcC,EAAU36B,OAAS,GAAK26B,EAAU36B,QAAQqI,cAAcmC,SAIrFsvB,EAAA/6B,UAAAuQ,WAAA,SAAYjP,GACVf,KAAKu7B,YAAcx6B,GAGrBy5B,EAAA/6B,UAAA+hB,gBAAA,WACE,IAAI/a,EAAU,eAMd,OALIzG,KAAKw7B,kBAAoBx7B,KAAKw7B,iBAAiB/0B,QACjDA,EAAUzG,KAAKw7B,iBAAiB/0B,QACvBzG,KAAKy7B,SAAWz7B,KAAKy7B,QAAQh1B,UACtCA,EAAUzG,KAAKy7B,QAAQh1B,SAElBA,GAGT+zB,EAAA/6B,UAAAwW,SAAA,WACE,IAAMxI,EAAQzN,KAAK0N,mBAAqB1N,KAAK0N,kBAAkBhN,OAAS,EAAIV,KAAK0N,kBAAkB2I,UAAYrW,KAAKyN,MACpH,IAAKA,GAA0B,IAAjBA,EAAM/M,OAClB,MAAM,IAAIyE,MAAM,sBAElB,OAAOsI,GAGT+sB,EAAA/6B,UAAAi8B,cAAA,SAAcxzB,GACZ,OAAOA,aAAgBoyB,GAAyBpyB,EAAKyrB,gBAAkB,MAGzE6G,EAAA/6B,UAAAk8B,eAAA,SAAezzB,GACb,OAAOA,aAAgBoyB,GAAyBpyB,EAAK4hB,iBAAmB,MAG1E0Q,EAAA/6B,UAAA+gB,oBAAA,SAAoBvb,GAClB,MAAM,IAAIE,MAAMF,OAjIoBP,wBAJvCT,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,iBACVC,SAAA,6tNAICuM,EAAAA,aAAYzM,KAAA,CAAC,kCAEbG,EAAAA,2BACAA,EAAAA,6BACAA,EAAAA,uBACAA,EAAAA,4BACAA,EAAAA,2BACAA,EAAAA,qBACAA,EAAAA,uBACAA,EAAAA,gCAGAuM,EAAAA,gBAAe1M,KAAA,CAACm2B,+BAChBzpB,EAAAA,gBAAe1M,KAAA,CAACo2B,OAD0Bn6B,EAAA,CAD1C2L,gECpBH,SAAA8vB,0DAAuCh8B,EAAAg8B,EAAAr3B,MAAAG,wBAJtCT,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,eACVC,SAAA,0jCAICC,EAAAA,oBACAA,EAAAA,kBAEAA,EAAAA,4BCLH,SAAAw3B,0DAAsCj8B,EAAAi8B,EAAAt3B,GAUpCs3B,EAAAp8B,UAAAmJ,SAAA,WACEkzB,GAAyC97B,KAAK+7B,YAAa/7B,KAAKg8B,cAGlEH,EAAAp8B,UAAAqF,YAAA,SAAYC,GACV+2B,GAAyC97B,KAAK+7B,YAAa/7B,KAAKg8B,iBAf9Bt3B,YAoBtBo3B,GAAyC72B,EAAcC,GACrE,IAAKA,IAASD,EACZ,MAAM,IAAIE,MAAM,gEA1BnBlB,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,eACVC,SAAA,06CAICC,EAAAA,2BACAA,EAAAA,8BACAA,EAAAA,gCACAA,EAAAA,kBACAA,EAAAA,oBACAA,EAAAA,uBACAA,EAAAA,4BCPH,SAAA43B,0DAAmCr8B,EAAAq8B,EAAA13B,MAAAD,wBAJlCL,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,YACVC,SAAU,8GAITC,EAAAA,kBACAA,EAAAA,4BCHH,SAAA63B,0DAAyCt8B,EAAAs8B,EAAA33B,MAAAD,wBAJxCL,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,kBACVC,SAAU,8GAITC,EAAAA,kBACAA,EAAAA,gBCDH,kCAJCJ,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,wBACVC,SAAU,sCAKTwM,EAAAA,gBAAe1M,KAAA,CAAC+3B,wBAGhBrrB,EAAAA,gBAAe1M,KAAA,CAACg4B,qBAEhB73B,EAAAA,kBACAA,EAAAA,SAN+BlE,EAAA,CAD/B2L,iCAIqC3L,EAAA,CADrC2L,0DCNH,SAAAqwB,0DAA8Cv8B,EAAAu8B,EAAA53B,GAO5C43B,EAAA18B,UAAA2oB,mBAAA,SAAmBliB,GACjB,MAAM,IAAIf,MAASe,EAAO,uCAG5Bi2B,EAAA18B,UAAAwW,SAAA,WACE,IAAMxI,EAAUzN,KAAKoW,eAAe1V,OAAS,EAAKV,KAAKoW,eAAeC,UAAYrW,KAAKyN,MACvF,IAAKA,GAA0B,IAAjBA,EAAM/M,OAClB,MAAM,IAAIyE,MAAM,sBAElB,OAAOsI,MAhBmC/I,wBAJ7CT,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,wBACVC,SAAA,+uHAICC,EAAAA,8BACAuM,EAAAA,gBAAe1M,KAAA,CAACk4B,qBAChB/3B,EAAAA,kBACAA,EAAAA,4BCYH,SAAAg4B,0DAA0Cz8B,EAAAy8B,EAAA93B,GAUxC83B,EAAA58B,UAAAiJ,OAAA,WACE1I,KAAKqnB,MAAQrnB,KAAKqnB,KAClBrnB,KAAKs8B,cAGPD,EAAA58B,UAAA68B,WAAA,WACMt8B,KAAKqnB,KACPrnB,KAAKu8B,KAAO,UAEZv8B,KAAKu8B,KAAO,WAIhBF,EAAA58B,UAAAmJ,SAAA,WACE5D,EAA2BhF,KAAKiF,KAAMjF,KAAKkF,MAC3ClF,KAAKs8B,cAGPD,EAAA58B,UAAAqF,YAAA,SAAYC,GACVC,EAA2BhF,KAAKiF,KAAMjF,KAAKkF,MAC3ClF,KAAKs8B,cAIPD,EAAA58B,UAAA+8B,uCAAA,SAAuCv3B,EAAcC,EAAcT,GACjE,IAAKS,IAASD,IAASR,EACrB,MAAM,IAAIU,MAAM,6CApCoBiG,wBAtBzCnH,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,mBACVC,SAAA,gpGACAkX,WAAY,CACVhS,EAAAA,QAAQ,qBAAsB,CAC5BpC,EAAAA,MAAM,OAAQ8B,EAAAA,MAAM,CAClBuS,QAAS,MACT3E,UAAW,kBAEb1P,EAAAA,MAAM,IAAK8B,EAAAA,MAAM,CACfuS,QAAS,MACT3E,UAAW,iBAEb4E,EAAAA,WAAW,SAAU,CACnBC,EAAAA,QAAQ,oBAEVD,EAAAA,WAAW,SAAU,CACnBC,EAAAA,QAAQ,8DAObpX,EAAAA,0BACAA,EAAAA,kBACAA,EAAAA,oBACAA,EAAAA,uBACAA,EAAAA,4BCzBH,SAAAo4B,0DAA+C78B,EAAA68B,EAAAl4B,MAAAD,wBAJ9CL,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,0BACVC,SAAU,+FCGZ,SAAAs4B,0DAAgD98B,EAAA88B,EAAAn4B,MAAAD,wBAJ/CL,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,2BACVC,SAAU,8GAGTC,EAAAA,4BCFH,SAAAs4B,0DAAuC/8B,EAAA+8B,EAAAp4B,MAAAD,wBAJtCL,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,iBACVC,SAAU,+FCmDV,SAAAw4B,EAAoBrrB,GAApB,IAAAjM,EACEf,EAAA5E,KAAAK,OAAOA,YADWsF,EAAAiM,kBAAAA,EAFpBjM,EAAA4a,gBAAiB,WA/BgBtgB,EAAAg9B,EAAAr4B,GAqCjCq4B,EAAAn9B,UAAAgV,gBAAA,WACE,IAAKzU,KAAKyhB,iBAAmBzhB,KAAK0hB,MAChC,MAAM,IAAIvc,MAAM,sBAKpBy3B,EAAAn9B,UAAAwW,SAAA,WACE,OAAOjW,KAAKoW,eAAe1V,OAAS,EAAIV,KAAKoW,eAAeC,UAAYrW,KAAKyN,OAG/EmvB,EAAAn9B,UAAA6hB,uBAAA,SAAuBC,GACrBvhB,KAAKkgB,gBAAkBqB,EACvBvhB,KAAKuR,kBAAkBC,iBAGzBorB,EAAAn9B,UAAA+gB,oBAAA,SAAoBvb,GAClB,MAAM,IAAIE,MAAMF,IAGlB23B,EAAAn9B,UAAAo9B,SAAA,WACE,OAAO78B,KAAKyhB,eAAiBzhB,KAAKyhB,eAAiBzhB,KAAK0hB,UA1DzBhd,wBAJlCT,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,YACVC,SAAA,mlaAnBAqN,EAAAA,qDAuBCpN,EAAAA,2BACAA,EAAAA,4BACAA,EAAAA,qBACAA,EAAAA,uBACAA,EAAAA,oBACAA,EAAAA,2BACAA,EAAAA,wBACAA,EAAAA,kBACAA,EAAAA,uBACAA,EAAAA,sBACAA,EAAAA,8BAGAuM,EAAAA,gBAAe1M,KAAA,CAACmN,iCAGhBT,EAAAA,gBAAe1M,KAAA,CAACiN,0BAGhBP,EAAAA,gBAAe1M,KAAA,CAACkN,mCAGhBR,EAAAA,gBAAe1M,KAAA,CAACw4B,mCAGhB9rB,EAAAA,gBAAe1M,KAAA,CAACu4B,4BAEhB7rB,EAAAA,gBAAe1M,KAAA,CAACy4B,OAdgBx8B,EAAA,CADhC2L,2CAIsC3L,EAAA,CADtC2L,iDAI+B3L,EAAA,CAD/B2L,0CAI4C3L,EAAA,CAD5C2L,mDAI2C3L,EAAA,CAD3C2L,qEC1CH,SAAAgxB,0DAA0Cl9B,EAAAk9B,EAAAv4B,GAYxCu4B,EAAAr9B,UAAAqF,YAAA,SAAYC,GACV/E,KAAK4T,uBAGPkpB,EAAAr9B,UAAAmU,oBAAA,WACE,IAAK5T,KAAK+8B,WACR,MAAM,IAAI53B,MAAM,+BAlBoBT,wBAJzCT,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,oBACVC,SAAA,0kCAICC,EAAAA,uBACAA,EAAAA,sBACAA,EAAAA,uBACAA,EAAAA,6BACAA,EAAAA,6BACAA,EAAAA,sBAEAA,EAAAA,kBACAA,EAAAA,4BCTH,SAAA24B,0DAAqCp9B,EAAAo9B,EAAAz4B,GAQnCy4B,EAAAv9B,UAAAqR,QAAA,WAOE,OALI9Q,KAAKugB,KAAK/X,KACLxI,KAAKugB,KAAK/X,KAAKrC,oBAEf,WAKX62B,EAAAv9B,UAAAqF,YAAA,SAAYC,GACV,IAAK/E,KAAKiF,KACR,MAAM,IAAIE,MAAM,qBAGlB,IAAKnF,KAAKugB,KACR,MAAM,IAAIpb,MAAM,wBAxBeT,wBAJpCT,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,cACVC,SAAA,w8HAICC,EAAAA,kBACAA,EAAAA,uBACAA,EAAAA,oBACAA,EAAAA,4BCGH,SAAA44B,0DAAyCr9B,EAAAq9B,EAAA14B,GAiCvC04B,EAAAx9B,UAAAqF,YAAA,SAAYC,GACV,IAAK/E,KAAKwN,GACR,MAAM,IAAIrI,MAAM,mBAIpB83B,EAAAx9B,UAAA2oB,mBAAA,SAAmBliB,GACjB,MAAM,IAAIf,MAASe,EAAO,uCAG5B+2B,EAAAx9B,UAAAwW,SAAA,WACE,OAAQjW,KAAKoW,eAAe1V,OAAS,EAAKV,KAAKoW,eAAeC,UAAYrW,KAAKyN,UA5C1C/I,wBAJxCT,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,mBACVC,SAAA,mzRAICC,EAAAA,uBACAA,EAAAA,uBAEAA,EAAAA,2BACAA,EAAAA,qBAEAA,EAAAA,oBACAA,EAAAA,4BACAA,EAAAA,qBACAA,EAAAA,sBACAA,EAAAA,8BAGAuM,EAAAA,gBAAe1M,KAAA,CAACmN,0BAGhBT,EAAAA,gBAAe1M,KAAA,CAACoN,kCAGhBV,EAAAA,gBAAe1M,KAAA,CAACyN,6BAGhBf,EAAAA,gBAAe1M,KAAA,CAACgN,2BAEhBN,EAAAA,gBAAe1M,KAAA,CAACk4B,6BAGhBxrB,EAAAA,gBAAe1M,KAAA,CAAC84B,oBAChB34B,EAAAA,SAfgClE,EAAA,CADhC2L,2CAI+B3L,EAAA,CAD/B2L,0CAIuC3L,EAAA,CADvC2L,kDAIkC3L,EAAA,CADlC2L,6CAMiC3L,EAAA,CADjC2L,+DCpCH,SAAAoxB,0DAAoCt9B,EAAAs9B,EAAA34B,MAAAD,wBAJnCL,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,aACVC,SAAU,8GAITC,EAAAA,kBACAA,EAAAA,4BCAH,SAAA84B,0DAAsCv9B,EAAAu9B,EAAA54B,MAAAG,wBAJrCT,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,gBACVC,SAAU,kDAKTwM,EAAAA,gBAAe1M,KAAA,CAACgN,2BAGhBN,EAAAA,gBAAe1M,KAAA,CAACg5B,qBAEhB74B,EAAAA,wBACAA,EAAAA,kBACAA,EAAAA,SAPkClE,EAAA,CADlC2L,6CAIgC3L,EAAA,CADhC2L,8DCwBD,SAAAsxB,EAAoBxH,GAApB,IAAAtwB,EACEf,EAAA5E,KAAAK,OAAOA,YADWsF,EAAAswB,eAAAA,EAHpBtwB,EAAA+3B,WAAa,WAjBoBz9B,EAAAw9B,EAAA74B,GAwBjC64B,EAAA39B,UAAAqF,YAAA,SAAYC,GACV,IAAK/E,KAAK0hB,MACR,MAAM,IAAIvc,MAAM,qBAGlB,IAAKnF,KAAKs9B,iBACR,MAAM,IAAIn4B,MAAM,iCAIpBi4B,EAAA39B,UAAAgV,gBAAA,WACE,IAAMvM,EAAOlI,KAAKiW,WAClBjW,KAAKu9B,UAAUr1B,EAAK8G,WAAU,SAAAtN,GAAS,OAACA,EAAMgF,aAC9C1G,KAAK41B,eAAepkB,iBAGtB4rB,EAAA39B,UAAAwW,SAAA,WACE,IAAMxI,EAAUzN,KAAKoW,eAAe1V,OAAS,EAAKV,KAAKoW,eAAeC,UAAYrW,KAAKyN,MACvF,IAAKA,GAA0B,IAAjBA,EAAM/M,OAClB,MAAM,IAAIyE,MAAM,sBAElB,OAAOsI,GAGT2vB,EAAA39B,UAAA+9B,aAAA,SAAaC,GACX,IAAIC,EAEEx1B,EADSlI,KAAKiW,WACDwnB,GAInB,OAHIv1B,aAAgBi1B,KAClBO,EAAQx1B,EAAKy1B,gBAERD,GAGTN,EAAA39B,UAAA2oB,mBAAA,SAAmBliB,GACjB,MAAM,IAAIf,MAASe,EAAO,uCAG5Bk3B,EAAA39B,UAAA6Q,YAAA,WACE,GAAItQ,KAAKuQ,SACP,OAAOvQ,KAAKuQ,UAIhB6sB,EAAA39B,UAAAqQ,UAAA,SAAUvB,GACR,IACMrG,EAAOlI,KAAKiW,WAMlB,OALI/N,EAAKqG,GAAOf,GACTtF,EAAKqG,GAAOf,GAEZxN,KAAKsQ,cAAgB,IAAM/B,GAKpC6uB,EAAA39B,UAAAkH,WAAA,SAAWuB,GACT,QAAOA,EAAKxB,UAAkB,MAIhC02B,EAAA39B,UAAA89B,UAAA,SAAWx8B,GACTf,KAAKq9B,WAAat8B,EAClB,IAAMw6B,EAAcv7B,KAAKiW,WAAWlV,GACpCf,KAAK49B,aAAerC,aAAuB4B,GAAmB5B,EAAYoC,eAAiBpC,EAAYmC,MACvG19B,KAAK69B,UAAU90B,cAAcyG,UAAYxP,KAAK89B,0BAA0BznB,UAAUrW,KAAKq9B,YAAYt0B,cAAcyG,WAGnH4tB,EAAA39B,UAAAs+B,cAAA,SAAcn4B,GACRA,GACFA,EAAME,iBAGY9F,KAAKg+B,aAAavvB,QAAO,SAACvG,EAAMqG,GAAU,OAACrG,EAAKqG,GAAO7H,YAC/D,GAAGqC,cAAcmC,SAG/BkyB,EAAA39B,UAAAw+B,aAAA,SAAar4B,GACPA,GACFA,EAAME,iBAGR,IAAMo4B,EAAcl+B,KAAKg+B,aAAavvB,QAAO,SAACvG,EAAMqG,GAAU,OAACrG,EAAKqG,GAAO7H,YAC3Ew3B,EAAYA,EAAYx9B,OAAS,GAAGqI,cAAcmC,SAGpDkyB,EAAA39B,UAAA0+B,aAAA,SAAaC,GAGX,IAFA,IAAMl2B,EAAOlI,KAAKiW,WACdooB,GAAWD,EAAa,GAAKl2B,EAAKxH,OAC/B29B,IAAaD,GAAY,CAC9B,IAAKl2B,EAAKm2B,GAAS33B,SAAU,CAC3B1G,KAAKg+B,aAAa1uB,MAAK,SAACvO,EAAGwN,GAAU,OAAAA,IAAU8vB,KAASt1B,cAAcmC,QACtE,MAEFmzB,GAAWA,EAAU,GAAKn2B,EAAKxH,SAInC08B,EAAA39B,UAAA6+B,iBAAA,SAAiBF,GAGf,IAFA,IAAMl2B,EAAOlI,KAAKiW,WACdsoB,GAAeH,EAAa,EAAIl2B,EAAKxH,QAAUwH,EAAKxH,OACjD69B,IAAiBH,GAAY,CAClC,IAAKl2B,EAAKq2B,GAAa73B,SAAU,CAC/B1G,KAAKg+B,aAAa1uB,MAAK,SAACvO,EAAGwN,GAAU,OAAAA,IAAUgwB,KAAax1B,cAAcmC,QAC1E,MAEFqzB,GAAeA,EAAc,EAAIr2B,EAAKxH,QAAUwH,EAAKxH,SAIzD08B,EAAA39B,UAAA++B,gBAAA,SAAgBf,GACd,IAAMv1B,EAAOlI,KAAKiW,WAClB,OAAO/N,EAAKu1B,GAAKC,OAASx1B,EAAKu1B,GAAKC,MAAMz4B,KAAO,MAAOsG,EAAYC,WAAWtD,EAAKu1B,GAAKC,MAAMz4B,MAAM,OAAS,SAvI/EP,wBAJlCT,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,YACVC,SAAA,qkNAjBeqN,EAAAA,8DAqBdb,EAAAA,gBAAe1M,KAAA,CAACi5B,0BAChBxsB,EAAAA,aAAYzM,KAAA,CAAC,kDACbyM,EAAAA,aAAYzM,KAAA,CAAC,gDACbS,EAAAA,UAAST,KAAA,CAAC,yBAGVG,EAAAA,wBACAA,EAAAA,uBACAA,EAAAA,4BACAA,EAAAA,qBAEAA,EAAAA,gCACAA,EAAAA,qBACAA,EAAAA,2BCnBD,SAAAo6B,EAAoBjc,GAAAxiB,KAAAwiB,gBAAAA,SAEbic,EAAAh/B,UAAAi/B,UAAA,SAAUvmB,EAA8CwmB,GAAxD,IAAAr5B,EAAAtF,KACL,OAAO,IAAIsB,SAAyB,SAACC,EAASC,GAEvC2W,GACH3W,EAAO,sBAGJm9B,GACHn9B,EAAO,4BAGT,IAAMo9B,EAAQt5B,EAAKu5B,YAAYF,GACzB58B,EAA0B,CAC9B68B,MAAKA,GAIHzmB,aAAkByH,EAAAA,aACpBgf,EAAM50B,SAASmO,OAASA,EACxB5W,EAAQQ,KAER68B,EAAM50B,SAAS6Y,WAAa+P,GAC5BgM,EAAM50B,SAASmZ,yBAA2B,SAACjkB,EAAGsB,GAC5C8E,EAAKw5B,iBAAiB5/B,EAAGsB,EAAG2X,GAC5BpW,EAAOihB,UAAYxiB,EACnBe,EAAQQ,SAMT08B,EAAAh/B,UAAAs/B,WAAA,SAAWH,GAEhB,IAAKA,EACH,MAAMz5B,MAAM,qBAGVy5B,aAAiB3Z,EAAAA,aACnB2Z,EAAM50B,SAASsZ,UAEfsb,EAAMtb,WAIHmb,EAAAh/B,UAAAu/B,aAAA,SAAaJ,GAClB,OAAO,IAAIt9B,SAAO,SAAQC,GACxB,IAOMyM,GANF4wB,aAAiB3Z,EAAAA,aACf2Z,EAAM50B,SAEN40B,GAGiBnc,aAAanW,WAAU,WAC5C/K,IACAyM,EAAaF,qBAMX2wB,EAAAh/B,UAAAo/B,YAAA,SAAYF,GAClB,IAAM7b,EAAU9iB,KAAKwiB,gBAAgBO,wBAAwB+W,IACvD8E,EAAQD,EAAaM,MAAM/b,gBAAgCJ,GASjE,OAPA8b,EAAM50B,SAASwE,QAAS,EACpBmwB,GACFv/B,OAAO4f,OAAO4f,EAAM50B,SAAU20B,GAGhC3+B,KAAKg/B,aAAaJ,GAAO38B,MAAK,WAAM,OAAA28B,EAAM3a,aAEnC2a,GAGDH,EAAAh/B,UAAAq/B,iBAAA,SAAiBF,EAAuBM,EACvBnzB,GADjB,IAAAzG,EAAAtF,KAGN,GADAZ,OAAO4f,OAAOkgB,EAAgBl1B,SAAU+B,GACpCA,EAAQ4Z,cACV,IAAMC,EAAesZ,EAAgBl1B,SAAS6oB,aAAavmB,WAAU,WACnEhH,EAAKy5B,WAAWH,GAChBhZ,EAAa9X,kLAxFpB+X,EAAAA,WAAU3hB,KAAA,CAAC,CACV4hB,WAAY,qDAXZxB,EAAAA,+CCMF,SAAA6a,0DAA6Cv/B,EAAAu/B,EAAA56B,MAAAD,wBAJ5CL,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,uBACVC,SAAA,6GCDF,SAAAg7B,IAAA,IAAA95B,EAAAf,EAAArC,MAAAlC,KAAA+D,EAAAtD,aAAAT,YAkBWsF,EAAA+5B,YAAc,EACb/5B,EAAAg6B,kBAAoB,IAAI75B,EAAAA,aAKzBH,EAAAi6B,aAAe,0UACfj6B,EAAAk6B,SAAW,mWACXl6B,EAAAuiB,OAAS,qDAtBqBjoB,EAAAw/B,EAAA76B,GAwBvC66B,EAAA3/B,UAAAqF,YAAA,SAAYC,GAAZ,IAAAO,EAAAtF,KACE,IAAKA,KAAKwN,GACR,MAAM,IAAIrI,MAAM,kBAElB,QAAwBoV,IAApBva,KAAKy/B,YAAgD,OAApBz/B,KAAKy/B,WACxC,MAAM,IAAIt6B,MAAM,0BAElB,QAA2BoV,KAAtBva,KAAK0/B,cAAoD,OAAtB1/B,KAAK0/B,aAC3C,MAAM,IAAIv6B,MAAM,4BAGlBnF,KAAK2/B,OAASC,KAAKC,KAAK7/B,KAAKy/B,WAAaz/B,KAAK0/B,gBAE1C1/B,KAAKq/B,aAAer/B,KAAKq/B,YAAc,GAAKr/B,KAAKq/B,YAAcr/B,KAAK2/B,UACvE3/B,KAAKq/B,YAAc,EACnBr5B,YAAY,WAAM,OAAAV,EAAKg6B,kBAAkBv5B,KAAKT,EAAK+5B,iBAGhDr/B,KAAK8/B,eACR9/B,KAAK8/B,aAAe,YAEjB9/B,KAAK+/B,WACR//B,KAAK+/B,SAAW,aAGlB//B,KAAKggC,cAGPZ,EAAA3/B,UAAAwgC,UAAA,SAAUC,GACR,OAAOA,GAAQ,GAAKA,EAAOlgC,KAAK0/B,aAAe1/B,KAAKy/B,WAClD,wCAAuCS,EAAO,GAAC,4BAA2BA,EAAOlgC,KAAK0/B,aAAe,GAAC,OAAO1/B,KAAKmgC,kBAAkBD,GAAK,UACvI,IAGNd,EAAA3/B,UAAA0gC,kBAAA,SAAkBC,GAChB,OAAOR,KAAKS,KAAKD,EAAY,GAAKpgC,KAAK0/B,aAAc1/B,KAAKy/B,aAG5DL,EAAA3/B,UAAAugC,WAAA,WACEhgC,KAAKyN,MAAQ,GACb,IAAK,IAAI1M,EAAI,EAAGA,EAAIf,KAAK2/B,OAAQ5+B,IAAK,CACpC,IAAMmH,EAA2B,CAC/BjD,KAAMlE,EAAI,EACVyN,OAAWzN,EAAI,IAAQf,KAAKq/B,YAC5BlX,WAAY,IAEdnoB,KAAKyN,MAAMlK,KAAK2E,KAIpBk3B,EAAA3/B,UAAA6Q,YAAA,WACE,OAAOtQ,KAAKuQ,SAAWvQ,KAAKuQ,SAAW,mBAGzC6uB,EAAA3/B,UAAA6gC,YAAA,SAAa/xB,GACX,OAAOvO,KAAKsQ,eAA2B,IAAV/B,GAAe,GAAK,IAAMA,GAGzD6wB,EAAA3/B,UAAA8gC,WAAA,SAAWC,GACTxgC,KAAKq/B,YAAcmB,EACnBxgC,KAAKs/B,kBAAkBv5B,KAAK/F,KAAKq/B,aACjC,IAAK,IAAIt+B,EAAI,EAAGA,EAAIf,KAAKyN,MAAM/M,OAAQK,IAAK,CAC7Bf,KAAKyN,MAAM1M,GACnByN,OAAYzN,EAAI,IAAOf,KAAKq/B,cAIrCD,EAAA3/B,UAAAghC,SAAA,WACMzgC,KAAKq/B,YAAc,GACrBr/B,KAAKugC,WAAWvgC,KAAKq/B,YAAc,IAIvCD,EAAA3/B,UAAAmC,KAAA,WACM5B,KAAKq/B,YAAcr/B,KAAK2/B,QAC1B3/B,KAAKugC,WAAWvgC,KAAKq/B,YAAc,IAIvCD,EAAA3/B,UAAAihC,kBAAA,WACE,IAAMhyB,EAAe1O,KAAKyN,MAAMgB,QAAO,SAAAvG,GAAQ,OAAAA,EAAKsG,UACpD,OAAOE,GAAeA,EAAYhO,OAAS,EAAIgO,EAAY,GAAGzJ,KAAO,OAzGhCP,wBAJxCT,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,kBACVC,SAAA,w2IAICC,EAAAA,wBACAA,EAAAA,gCACAA,EAAAA,0BACAA,EAAAA,4BACAA,EAAAA,2BACAA,EAAAA,uBACAA,EAAAA,4BACAA,EAAAA,wBACAA,EAAAA,uBACAA,EAAAA,kBACAA,EAAAA,2BAEAA,EAAAA,iCACAyC,EAAAA,4BCfD,SAAA65B,EAAoBC,GAAA5gC,KAAA4gC,UAAAA,SAEpBD,EAAAlhC,UAAAmX,UAAA,SAAUlV,GACR,OAAO1B,KAAK4gC,UAAUC,SAASC,EAAAA,gBAAgBC,KAAMr/B,8BARxDsV,EAAAA,KAAI9S,KAAA,CAAC,CACJ2F,KAAM,0DAHCm3B,EAAAA,kCCIT,SAAAC,YAMEA,EAAAxhC,UAAAmX,UAAA,SAAUxQ,GAWR,OATIA,EACEA,EAAKgP,MAAM,eACEhP,EAEA,UAAYA,EAGd,+BAlBpB4Q,EAAAA,KAAI9S,KAAA,CAAC,CACJ2F,KAAM,qCCcN,SAAAq3B,EAAoBrV,GAApB,IAAAvmB,EAAAtF,KAAoBA,KAAA6rB,WAAAA,EALb7rB,KAAAmhC,oBAAsB,IAAI17B,EAAAA,aAG1BzF,KAAAohC,4BAA8B,IAAI37B,EAAAA,aAGvC,IAAMS,EAAUlG,KAAK6rB,WAAW9iB,cAEhC/I,KAAK+E,QAAU,IAAIs8B,kBAAiB,SAACC,GACjCA,EAAUzzB,SAAQ,SAAC0zB,GACbj8B,EAAKk8B,qBAC2C,iBAA5Bl8B,EAAsB,kBAAiB,CAACA,EAAKk8B,mBAAqBl8B,EAAKk8B,mBACnFxyB,WAAU,SAAA5L,GAAK,OAAAA,IAAMm+B,EAASE,kBAAkB,IACxDn8B,EAAK67B,oBAAoBp7B,KAAKT,EAAKumB,WAAW9iB,cAAcyG,WAC5DlK,EAAK87B,4BAA4Br7B,KAAKw7B,WAOhDvhC,KAAK+E,QAAQ28B,QAAQx7B,EAAS,CAC5By7B,YAAY,EACZC,WAAW,EACXC,eAAe,EACfC,SAAS,WAIbZ,EAAAzhC,UAAAwa,YAAA,WACEja,KAAK+E,QAAQg9B,wCAxChBpiB,EAAAA,UAASzb,KAAA,CAAC,CACTC,SAAU,sEAHOmH,EAAAA,0DAShBjH,EAAAA,mCAEAyC,EAAAA,4CAGAA,EAAAA,4BCJD,SAAAk7B,EAAoBrM,GAAA31B,KAAA21B,GAAAA,EAFX31B,KAAAiiC,sBAAuB,SAIhCD,EAAAviC,UAAAqF,YAAA,SAAYC,GACN/E,KAAKyE,QACHzE,KAAKkiC,OACPliC,KAAK21B,GAAG5sB,cAAcyG,UAAYxP,KAAKyE,QAEvCzE,KAAK21B,GAAG5sB,cAAco5B,UAAYniC,KAAKyE,QAEhCzE,KAAKiiC,uBACdjiC,KAAK21B,GAAG5sB,cAAco5B,UAAY,iCAnBvCxiB,EAAAA,UAASzb,KAAA,CAAC,CACTC,SAAU,mEAFOmH,EAAAA,gDAMhBjH,EAAAA,MAAKH,KAAA,CAAC,oCACNG,EAAAA,oCACAA,EAAAA,2BCGD,SAAA+9B,EAAoBC,GAAAriC,KAAAqiC,eAAAA,EAJOriC,KAAAwO,QAAS,EAC1BxO,KAAAsiC,aAAe,IAAI78B,EAAAA,oBAMtB28B,EAAA3iC,UAAAkG,QAAA,SAAQtF,KAETL,KAAKuiC,qBACSviC,KAAKuiC,qBAAqBh4B,SAASlK,GAElCL,KAAKqiC,eAAet5B,cAA0BwB,SAASlK,KAEpDL,KAAKwO,QACzBxO,KAAKsiC,aAAav8B,kCApBvB4Z,EAAAA,UAASzb,KAAA,CAAC,CACTC,SAAU,mEAHQmH,EAAAA,+CAOjBjH,EAAAA,MAAKH,KAAA,CAAC,0CACN4C,EAAAA,qCACAzC,EAAAA,uBAIAoP,EAAAA,aAAYvP,KAAA,CAAC,iBAAkB,CAAC,uCCajC,SAAAs+B,EAAoB3W,GAApB,IAAAvmB,EAAAtF,KAAoBA,KAAA6rB,WAAAA,EAbX7rB,KAAAyiC,kBAA2G,CAClHd,YAAY,EACZC,WAAW,EACXC,eAAe,EACfC,SAAS,GAIJ9hC,KAAA0iC,kBAAoB,IAAIj9B,EAAAA,aAGxBzF,KAAA2iC,0BAA4B,IAAIl9B,EAAAA,aAGrC,IAAMS,EAAUlG,KAAK6rB,WAAW9iB,cAEhC/I,KAAK+E,QAAU,IAAIs8B,kBAAiB,SAACC,GACjCA,EAAUzzB,SAAQ,SAAC0zB,GACjBj8B,EAAKo9B,kBAAkB38B,KAAKT,EAAKumB,YACjCvmB,EAAKq9B,0BAA0B58B,KAAKw7B,SAK1CvhC,KAAK+E,QAAQ28B,QAAQx7B,EAASlG,KAAKyiC,0BAGrCD,EAAA/iC,UAAAwa,YAAA,WACEja,KAAK+E,QAAQg9B,wCAnChBpiB,EAAAA,UAASzb,KAAA,CAAC,CACTC,SAAU,oEAPOmH,EAAAA,0DAahBjH,EAAAA,iCAOAyC,EAAAA,0CAGAA,EAAAA,4BCGD,SAAA87B,EAAoB/W,GAApB,IAAAvmB,EAAAtF,KAAoBA,KAAA6rB,WAAAA,EAXb7rB,KAAA6iC,iBAAmB,IAAIp9B,EAAAA,aAGvBzF,KAAA8iC,oBAAsB,IAAIr9B,EAAAA,aAKzBzF,KAAA+iC,cAAe,EACf/iC,KAAAitB,UAAW,EAGjB,IAAM/mB,EAAUlG,KAAK6rB,WAAW9iB,cAChC/I,KAAK+E,QAAU,IAAIs8B,kBAAiB,SAACC,GAAgC,OAAAA,EAAUzzB,SAAQ,WAAM,OAAAvI,EAAK09B,qBAClGhjC,KAAK+E,QAAQ28B,QAAQx7B,EAAS,CAC5By7B,YAAY,EACZC,WAAW,EACXC,eAAe,EACfC,SAAS,WAIbc,EAAAnjC,UAAAgV,gBAAA,WACOzU,KAAKitB,WACRjtB,KAAKitB,UAAW,EAChBjtB,KAAKgjC,iBAQTJ,EAAAnjC,UAAAujC,aAAA,WACE,GAAIhjC,KAAKitB,SAAU,CAGjB,IAFA,IAAMvM,EAAgC1gB,KAAK6rB,WAAW9iB,cAAc4X,WAChEE,GAAa,EACR9f,EAAI,EAAGA,EAAI2f,EAAOhgB,SAAWmgB,EAAY9f,IAAK,CACrD,IAAMmH,EAAOwY,EAAOxY,KAAKnH,GACrBmH,EAAK4Y,WAAaC,KAAKC,WAAa9Y,EAAK+Y,YAAYvgB,OAAS,EAChEmgB,GAAa,EACH3Y,EAAK4Y,WAAaC,KAAKG,cAAgBhZ,EAAK4Y,WAAaC,KAAKI,qBAAuBnhB,KAAKijC,cAAc/6B,KAClH2Y,GAAa,GAIbA,GACE7gB,KAAK+iC,cACP/iC,KAAK8iC,oBAAoB/8B,KAAK/F,KAAK6rB,WAAW9iB,cAAcyG,WAE9DxP,KAAK+iC,cAAe,IAEf/iC,KAAK+iC,cACR/iC,KAAK6iC,iBAAiB98B,KAAK/F,KAAK6rB,WAAW9iB,cAAcyG,WAE3DxP,KAAK+iC,cAAe,KAKlBH,EAAAnjC,UAAAwjC,cAAA,SAAcrS,GACpB,IAAIsS,GAAc,EAIlB,OAHIljC,KAAKmjC,kBAAoBnjC,KAAKmjC,iBAAiBziC,OAAS,IAC1DwiC,GAAeljC,KAAKmjC,iBAAiB7zB,MAAK,SAAA8zB,GAAc,OAAAA,EAAWr6B,gBAAkB6nB,MAEhFsS,GAGTN,EAAAnjC,UAAAwa,YAAA,WACEja,KAAK+E,QAAQg9B,wCA3EhBpiB,EAAAA,UAASzb,KAAA,CAAC,CACTC,SAAU,mEAVuCmH,EAAAA,yDAchDxE,EAAAA,oCAGAA,EAAAA,iCAGA8J,EAAAA,gBAAe1M,KAAA,CAAC,yBAA0B,CAACmH,KAAMC,EAAAA,kCCMlD,SAAA+3B,EAAoBC,EAA4CC,EAA4CC,GAAxFxjC,KAAAsjC,iBAAAA,EAA4CtjC,KAAAujC,SAAAA,EAA4CvjC,KAAAwjC,SAAAA,EAC1GxjC,KAAK8iB,QAAU9iB,KAAKujC,SAASxgB,wBAAwBze,UAGvD++B,EAAA5jC,UAAAqF,YAAA,SAAYC,GAEV,GADA/E,KAAKsjC,iBAAiBG,QAClBzjC,KAAK0jC,uBAAuB1gB,WAAahjB,KAAK0jC,uBAAuB1gB,qBAAqB1e,EAG5FtE,KAAKsjC,iBAAiBK,mBAAmB3jC,KAAK0jC,uBAAuB1gB,UAAUxe,mBAC1E,GAAIxE,KAAK0jC,uBAAuBt/B,SAGrCpE,KAAKsjC,iBAAiBK,mBAAmB3jC,KAAK0jC,uBAAuBt/B,eAChE,GAAIpE,KAAK0jC,uBAAuBx+B,KAAM,CAG3C,IAAM0+B,EAAa57B,SAAS67B,cAAc,OAC1CD,EAAWp0B,UAAYxP,KAAK0jC,uBAAuBx+B,KAGnD,IAAM4+B,EAAW,GACjBF,EAAWjjB,WAAW9S,SAAQ,SAAAk2B,GAAQ,OAAAD,EAASvgC,KAAKwgC,MACpD,IAAMC,EAAehkC,KAAK8iB,QAAQ5iB,OAAOF,KAAKwjC,SAAU,CAAEM,IAI1D9jC,KAAKsjC,iBAAiBK,mBAAmBK,EAAah6B,SAASxF,mBAC1D,GAAIxE,KAAK0jC,uBAAuBz+B,KAAM,CAG3C,IAAMg/B,EAAWj8B,SAASk8B,eAAelkC,KAAK0jC,uBAAuBz+B,MAG/D++B,EAAehkC,KAAK8iB,QAAQ5iB,OAAOF,KAAKwjC,SAAU,CAAC,CAAES,KAI3DjkC,KAAKsjC,iBAAiBK,mBAAmBK,EAAah6B,SAASxF,0CA/CpEmb,EAAAA,UAASzb,KAAA,CAAC,CACTC,SAAU,yEAXVogB,EAAAA,wBALAD,EAAAA,gCAEAyB,EAAAA,6DAkBC1hB,EAAAA,gBCsDH,kCAjDC8/B,EAAAA,SAAQjgC,KAAA,CAAC,CACRkgC,aAAc,CAEZ1/B,EACAJ,EACAO,EACAO,EACAgG,EAGAu1B,GACAhqB,GACAsqB,GAGAC,GACAc,GACAI,GACAI,GACAI,GACAS,IAEFgB,QAAS,CACPC,EAAAA,cAEFC,QAAS,CACPC,EAAAA,aAGA9/B,EACAJ,EACAO,EACAO,EACAgG,EAGAu1B,GACAhqB,GACAsqB,GAGAC,GACAc,GACAI,GACAI,GACAI,GACAS,eCjEJ,kCALCp/B,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,+BACVC,SAAA,gCACA8P,UAAW,CAAE,CAAEC,QAASwF,EAAAA,iBAAkBtF,YAAaowB,EAAAA,oBCwBzD,kCApBCN,EAAAA,SAAQjgC,KAAA,CAAC,CACRkgC,aAAc,CACZhzB,EACAF,EACAC,EACAE,GAEFgzB,QAAS,CACPC,EAAAA,aACAI,GACAC,EAAAA,gBAEFJ,QAAS,CACPnzB,EACAF,EACAC,EACAE,cC6FJ,kCA3EC8yB,EAAAA,SAAQjgC,KAAA,CAAC,CACRkgC,aAAc,CACZQ,GACA9yB,EACAR,EACAI,EACAC,EACAE,EACAD,EACA8B,EACAc,EACAiB,EACAK,EACAU,EACAgB,GACAJ,EACAqH,GACAnH,GACAsH,GACA3H,GACAI,GACAwE,GACAhC,GACAqE,GACAhB,GACA2B,GACAQ,GACAzJ,EACAC,EACAF,EACA6I,GACAE,GACAC,GAEAa,IAGF6kB,QAAS,CACPC,EAAAA,aACAO,EAAAA,YACAC,EAAAA,oBACAJ,GACAK,IAEFR,QAAS,CACPjzB,EACAI,EACAC,EACAE,EACAD,EACA8B,EACAc,EACAiB,EACAK,EACAU,EACAgB,GACAF,GACAsH,GACA3H,GACAI,GACAwE,GACAhC,GACAqE,GACAhB,GACA2B,GACAQ,GACAzJ,EACAC,EACA2I,GACAE,GACAC,GAEAa,2BClEF,SAAAwlB,EAAoBzzB,GAApB,IAAAjM,EACEf,EAAA5E,KAAAK,OAAOA,YADWsF,EAAAiM,kBAAAA,EAHpBjM,EAAAub,YAAa,EACbvb,EAAA2/B,yBAA0B,WA1BUrlC,EAAAolC,EAAAzgC,GAgCpCygC,EAAAvlC,UAAAqF,YAAA,SAAYC,GACV,IAAK/E,KAAKwN,GACR,MAAMrI,MAAM,mBAIhB6/B,EAAAvlC,UAAAuW,mBAAA,WACE,IAAMnN,EAAiB7I,KAAKklC,eAAen8B,cAC3C/I,KAAKkJ,gBAAkB,CACrBC,UAAW,MACXC,mBAAmB,EACnB3E,QAASoE,EACTQ,WAAW,EACXC,QAAS,mBACTC,aAAa,EACbI,MAAO,GACPC,QAAS,CAAC,CACRC,KAAM,YACNC,cAAc,EACdC,GAAE,SAACU,OAACD,EAAIC,EAAAD,KAEN,SAASE,EAAU9E,GACbA,EAAMtF,MAAQ0kC,EAAiBr6B,cACjCH,IAIJ,MAAO,CACLI,OAAM,WACJ5C,SAASmC,iBAAiB,UAAWO,IAEvCG,OAAM,WACJ7C,SAAS8C,oBAAoB,UAAWJ,QAKhDK,KAAM,UACNC,KAAM,CACJvG,QAASzE,KAAKmlC,QAAU,cAAgB,gBAK9CH,EAAAvlC,UAAA2lC,YAAA,WACE,OAAOplC,KAAKwN,GAAK,WAGnBw3B,EAAAvlC,UAAA4lC,aAAA,WACE,OAAOrlC,KAAKwN,GAAK,YAGnBw3B,EAAAvlC,UAAAunB,mBAAA,SAAmBzF,GACjBvhB,KAAK6gB,YAAcU,EACnBvhB,KAAKuR,kBAAkBC,iBAGzBwzB,EAAAvlC,UAAA6lC,uBAAA,SAAuB/jB,GACrBvhB,KAAKilC,yBAA2B1jB,EAChCvhB,KAAKuR,kBAAkBC,iBAGzBwzB,EAAAvlC,UAAA8lC,0BAAA,WACE,MAAMpgC,MAAM,0EAGd6/B,EAAAvlC,UAAA+lC,eAAA,WACE,IAAI/gC,EAMJ,OALIzE,KAAKkF,KACPT,EAAUzE,KAAKkF,KACNlF,KAAKiF,OACdR,EAAU,MAAMzE,KAAKiF,KAAI,QAEpBR,GAGTugC,EAAAvlC,UAAAgmC,eAAA,SAAellB,GAWb,OATIA,EAAKrb,KACOlF,KAAKugB,KAAKrb,KACD,SAAdqb,EAAK/X,KACA,wUACS,UAAd+X,EAAK/X,KACA,oXAEA,+aArHkB9D,GAEpBsgC,GAAAr6B,aAAe,8BANhC1G,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,eACVC,SAAA,24HAnBkBqN,EAAAA,gEA0BjBb,EAAAA,gBAAe1M,KAAA,CAACgN,0BAGhBN,EAAAA,gBAAe1M,KAAA,CAACkN,oCAGhBR,EAAAA,gBAAe1M,KAAA,CAACi7B,4BAEhBx6B,EAAAA,UAAST,KAAA,CAAC,iBAAkB,CAAEmH,KAAMC,EAAAA,WAAY1G,QAAQ,gBAExDP,EAAAA,oBACAA,EAAAA,oBACAA,EAAAA,uBACAA,EAAAA,uBACAA,EAAAA,8BACAA,EAAAA,oBACAA,EAAAA,sBACAA,EAAAA,SAjBkClE,EAAA,CADlC2L,6CAI+B3L,EAAA,CAD/B2L,0CAIyC3L,EAAA,CADzC2L,2DC0DH,kCA3DCq4B,EAAAA,SAAQjgC,KAAA,CAAC,CACRkgC,aAAc,CACZtK,GACAU,GACAH,GACAC,GACAsB,GACAC,GACAQ,GACAF,GACAC,GACAH,GACAC,GACAU,GACAF,GACAD,GACAE,GACAG,GACAE,GACAC,GACAG,GACA4H,GACA7F,GACAjC,GACAC,IAEFkH,QAAS,CACPC,EAAAA,aACAI,GACAgB,GACAX,GACAJ,EAAAA,gBAEFJ,QAAS,CACPzK,GACAU,GACAH,GACAC,GACAsB,GACAC,GACAQ,GACAF,GACAC,GACAH,GACAC,GACAU,GACAF,GACAD,GACAE,GACAG,GACAE,GACAC,GACAG,GACA4H,GACA7F,GACAjC,GACAC,eC3CJ,kCA5BCgH,EAAAA,SAAQjgC,KAAA,CAAC,CACRkgC,aAAc,CACZ/+B,EACA0B,EACA0B,EACAoE,EACAgE,EAEAjF,EACAD,GAEF04B,QAAS,CACPC,EAAAA,aACAI,GACAiB,GACAhB,EAAAA,gBAEFJ,QAAS,CACPl/B,EACA0B,EACA0B,EACAoE,EACAgE,EAEAjF,EACAD,cCTJ,kCApBCw4B,EAAAA,SAAQjgC,KAAA,CAAC,CACRkgC,aAAc,CACZrkB,GACAF,GACAC,GACAuC,IAEFgiB,QAAS,CACPC,EAAAA,aACAsB,EAAAA,WACAlB,GACAmB,IAEFtB,QAAS,CACPxkB,GACAF,GACAC,GACAuC,eC6FJ,kCAhFC8hB,EAAAA,SAAQjgC,KAAA,CAAC,CACRkgC,aAAc,CACZle,GACAD,GACA+D,GACAD,GACAV,GACAD,GACAD,GACAO,GACAR,GACAL,GACAR,GACAT,GACAD,GACAe,GACA7B,GACAI,GACAL,GACA6D,GACAD,GACAK,GACAD,GACAD,GACAD,GACAqC,GACAD,GACAD,GACAD,GACAD,GACA3E,GACA4K,GACAD,GACAhK,GACAZ,GAEA6D,IAEFyY,QAAS,CACPC,EAAAA,aACAI,GACAK,GACAc,IAEFtB,QAAS,CACPre,GACAD,GACA+D,GACAD,GACAV,GACAD,GACAD,GACAO,GACAR,GACAL,GACAR,GACAT,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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { AccesibilityData } from '../../interfaces/accesibility-data';\r\n\r\n/**\r\n * componente para heredar los atributos de accesibilidad\r\n */\r\n@Component({\r\n selector: 'desy-accessibility',\r\n template: '<div></div>'\r\n})\r\nexport class AccessibilityComponent implements AccesibilityData {\r\n @Input() role: string;\r\n @Input() ariaLabel: string;\r\n @Input() ariaDescribedBy: string;\r\n @Input() ariaLabelledBy: string;\r\n @Input() ariaHidden: string;\r\n @Input() ariaDisabled: string;\r\n @Input() ariaControls: string;\r\n @Input() ariaCurrent: string;\r\n @Input() ariaLive: string;\r\n @Input() ariaExpanded: string;\r\n @Input() ariaErrorMessage: string;\r\n @Input() ariaHasPopup: string;\r\n @Input() ariaModal: string;\r\n @Input() tabindex: string;\r\n\r\n /*\r\n Copiar para facilitar el uso por defecto\r\n [attr.role]=\"role ? role : null\"\r\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\r\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : 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-controls]=\"ariaControls ? ariaControls : 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.aria-modal]=\"ariaModal ? ariaModal : null\"\r\n [attr.tabindex]=\"tabindex ? tabindex : null\"\r\n */\r\n}\r\n","import {Component, TemplateRef, ViewChild} from '@angular/core';\r\nimport {AccessibilityComponent} from '../accessibility/accessibility.component';\r\n/**\r\n * Componente base para proyectar contenido\r\n */\r\n@Component({\r\n selector: 'desy-content-base',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class ContentBaseComponent extends AccessibilityComponent {\r\n\r\n @ViewChild('contentTemplate', { static: true }) private content: TemplateRef<any>;\r\n\r\n public getContent(): TemplateRef<any> {\r\n return this.content;\r\n }\r\n}\r\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'desy-text-or-html-required',\r\n template: '<div></div>'\r\n})\r\nexport class TextOrHtmlRequiredComponent implements OnChanges {\r\n\r\n /***\r\n * componente base para el comportamiento de texto o html required\r\n * si en el componente que extiende de este, se implementa el onInit o Onchanges,\r\n * habra que incluir la llamada al a funcion textOrHtmlRequiredFunction\r\n **/\r\n\r\n @Input() text: string;\r\n @Input() html: string;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n textOrHtmlRequiredFunction(this.text, this.html);\r\n }\r\n\r\n}\r\n\r\n/**\r\n * funcion que comprueba si existe text o html\r\n * salta error si no es así\r\n */\r\nexport function textOrHtmlRequiredFunction(text: any, html: any): void {\r\n if (!html && !text) {\r\n throw new Error(`html or text are required`);\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { AccesibilityData } from '../../interfaces/accesibility-data';\r\nimport { TextOrHtmlRequiredComponent } from '../text-or-html-required/text-or-html-required.component';\r\n\r\n@Component({\r\n selector: 'desy-accessibility-and-text-or-html-required',\r\n template: '<div></div>'\r\n})\r\nexport class AccessibilityAndTextOrHtmlRequiredComponent extends TextOrHtmlRequiredComponent implements AccesibilityData {\r\n\r\n /**\r\n * componente para heredar los atributos de accesibilidad y\r\n * el texto o html required\r\n * \r\n * si en el componente que extiende de este, se implementa el onInit o Onchanges,\r\n * habra que incluir la llamada al a funcion textOrHtmlRequiredFunction\r\n * \r\n */\r\n\r\n // Atributos de accesibilidad\r\n @Input() role: string;\r\n @Input() ariaLabel: string;\r\n @Input() ariaDescribedBy: string;\r\n @Input() ariaLabelledBy: string;\r\n @Input() ariaHidden: string;\r\n @Input() ariaDisabled: string;\r\n @Input() ariaControls: string;\r\n @Input() ariaCurrent: string;\r\n @Input() ariaLive: string;\r\n @Input() ariaExpanded: string;\r\n @Input() ariaErrorMessage: string;\r\n @Input() ariaHasPopup: string;\r\n @Input() tabindex: string;\r\n\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { AccesibilityData } from '../../interfaces/accesibility-data';\r\n\r\n@Component({\r\n selector: 'desy-accessibility-and-content-required',\r\n template: '<div></div>'\r\n})\r\nexport class AccessibilityAndContentRequiredComponent implements AccesibilityData {\r\n\r\n /**\r\n * componente para heredar los atributos de accesibilidad y\r\n * el content required\r\n *\r\n * si en el componente que extiende de este, se implementa el onInit o Onchanges,\r\n * habra que incluir la llamada al a funcion contentRequiredFunction\r\n *\r\n */\r\n @Input() html: string;\r\n @Input() text: string;\r\n\r\n // Atributos de accesibilidad\r\n @Input() role: string;\r\n @Input() ariaLabel: string;\r\n @Input() ariaDescribedBy: string;\r\n @Input() ariaLabelledBy: string;\r\n @Input() ariaHidden: string;\r\n @Input() ariaDisabled: string;\r\n @Input() ariaControls: string;\r\n @Input() ariaCurrent: string;\r\n @Input() ariaLive: string;\r\n @Input() ariaExpanded: string;\r\n @Input() ariaErrorMessage: string;\r\n @Input() ariaHasPopup: string;\r\n @Input() tabindex: string;\r\n\r\n}\r\n","import {Component, EventEmitter, HostBinding, Input, Output} from '@angular/core';\r\nimport { AccessibilityComponent} from '../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-button',\r\n templateUrl: './button.component.html'\r\n})\r\nexport class ButtonComponent extends AccessibilityComponent {\r\n\r\n public static readonly ELEMENT_A: string = 'a';\r\n public static readonly ELEMENT_BUTTON: string = 'button';\r\n public static readonly ELEMENT_INPUT: string = 'input';\r\n\r\n\r\n @HostBinding('attr.tabindex') readonly hostTabIndex = null; // Fix para evitar el tab-index agregado por routerLink en el host\r\n\r\n @Input() id: string;\r\n @Input() classes: string;\r\n @Input() html: string;\r\n @Input() text: string;\r\n\r\n @Input() element: string; // 'a', 'button' o 'input'\r\n @Input() name: string;\r\n @Input() type: string;\r\n @Input() value: any;\r\n @Input() disabled: boolean;\r\n @Input() href: string;\r\n @Input() target: string;\r\n @Input() preventDoubleClick: boolean;\r\n\r\n @Input() routerLink: string|any[];\r\n @Input() routerLinkActiveClasses: string|string[];\r\n\r\n @Output() clickEvent = new EventEmitter();\r\n\r\n avoidingDoubleClick = false;\r\n\r\n onClick(event: any): void {\r\n if (this.preventDoubleClick) {\r\n if (!this.avoidingDoubleClick){\r\n this.avoidingDoubleClick = true;\r\n this.clickEvent.emit(event);\r\n setTimeout(() => {\r\n this.avoidingDoubleClick = false;\r\n }, 1000);\r\n } else {\r\n event.preventDefault(); // evitamos propagar el evento por ejemplo un submit en un formulario\r\n }\r\n } else {\r\n this.clickEvent.emit(event);\r\n }\r\n }\r\n\r\n getElement(): string {\r\n let element: string;\r\n if (this.element) {\r\n element = this.element.toLocaleLowerCase();\r\n } else {\r\n if (this.href) {\r\n element = ButtonComponent.ELEMENT_A;\r\n } else {\r\n element = ButtonComponent.ELEMENT_BUTTON;\r\n }\r\n }\r\n return element;\r\n }\r\n\r\n getClassNames(): string {\r\n let classNames = 'c-button';\r\n if (this.classes) {\r\n classNames += ' ' + this.classes;\r\n }\r\n if (this.disabled) {\r\n classNames += ' c-button--disabled';\r\n }\r\n return classNames;\r\n }\r\n\r\n isDisabled(): boolean {\r\n return this.disabled ? true : null;\r\n }\r\n\r\n get staticElementTypeA(): string {\r\n return ButtonComponent.ELEMENT_A;\r\n }\r\n\r\n get staticElementTypeButton(): string {\r\n return ButtonComponent.ELEMENT_BUTTON;\r\n }\r\n\r\n get staticElementTypeInput(): string {\r\n return ButtonComponent.ELEMENT_INPUT;\r\n }\r\n}\r\n","import {Component, HostBinding, Input} from '@angular/core';\r\nimport { ButtonComponent } from '../button/button.component';\r\n\r\n@Component({\r\n selector: 'desy-button-loader',\r\n templateUrl: './button-loader.component.html'\r\n})\r\nexport class ButtonLoaderComponent extends ButtonComponent {\r\n\r\n public static readonly STATE_LOADING: string = 'is-loading';\r\n public static readonly STATE_SUCCESS: string = 'is-success';\r\n\r\n private static readonly DEFAULT_LOADER_TEXT: string = 'Acción en curso';\r\n private static readonly DEFAULT_SUCCESS_TEXT: string = 'Acción realizada con éxito';\r\n\r\n @HostBinding('attr.tabindex') readonly hostTabIndex = null; // Fix para evitar el tab-index agregado por routerLink en el host\r\n\r\n @Input() loaderText: string;\r\n @Input() loaderClasses: string;\r\n @Input() state: string;\r\n @Input() successText: string;\r\n\r\n getClassNames(): string {\r\n let classNames = 'c-button-loader relative';\r\n if (this.classes) {\r\n classNames += ' ' + this.classes;\r\n }\r\n if (this.disabled) {\r\n classNames += ' c-button-loader--disabled';\r\n }\r\n return classNames;\r\n }\r\n\r\n getSpinnerText(): string {\r\n let spinnerText: string = null;\r\n\r\n if (this.state === ButtonLoaderComponent.STATE_LOADING) {\r\n spinnerText = this.loaderText ? this.loaderText : ButtonLoaderComponent.DEFAULT_LOADER_TEXT;\r\n }\r\n\r\n return spinnerText;\r\n }\r\n\r\n\r\n getSuccessText(): string {\r\n let successText: string = null;\r\n\r\n if (this.state === ButtonLoaderComponent.STATE_SUCCESS) {\r\n successText = this.successText ? this.successText : ButtonLoaderComponent.DEFAULT_SUCCESS_TEXT;\r\n }\r\n\r\n return successText;\r\n }\r\n}\r\n","export class FocusUtils {\r\n\r\n public static getFirstFocusableElement(parent?: HTMLElement): HTMLElement {\r\n const selectionableElements = 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])';\r\n let focusableList;\r\n if (parent) {\r\n focusableList = parent.querySelectorAll(selectionableElements);\r\n } else {\r\n focusableList = document.querySelectorAll(selectionableElements);\r\n }\r\n\r\n if (!focusableList || focusableList.length === 0) {\r\n return null;\r\n }\r\n\r\n let firstFocusable = null;\r\n let i = 0;\r\n while (i < focusableList.length) {\r\n try {\r\n const element = focusableList.item(i) as HTMLInputElement;\r\n if (FocusUtils.isFocusable(element)) {\r\n firstFocusable = element;\r\n break;\r\n }\r\n } catch (e) {\r\n\r\n }\r\n i++;\r\n }\r\n\r\n return firstFocusable;\r\n }\r\n\r\n public static isFocusable(element: any): boolean {\r\n if (element.tabIndex > 0 || (element.tabIndex === 0 && element.getAttribute('tabIndex') !== null)) {\r\n return true;\r\n }\r\n\r\n if (element.disabled) {\r\n return false;\r\n }\r\n\r\n switch (element.nodeName) {\r\n case 'A':\r\n return !!element.href && element.rel !== 'ignore';\r\n case 'INPUT':\r\n return element.type !== 'hidden' && element.type !== 'file';\r\n case 'BUTTON':\r\n case 'SELECT':\r\n case 'TEXTAREA':\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n}\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n TemplateRef,\r\n ViewChild,\r\n ElementRef,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { AccessibilityAndContentRequiredComponent } from '../../../shared/components';\r\nimport { FocusUtils } from '../../../shared/utils/focus-utils';\r\n\r\n@Component({\r\n selector: 'desy-dropdown',\r\n templateUrl: './dropdown.component.html'\r\n})\r\nexport class DropdownComponent extends AccessibilityAndContentRequiredComponent implements OnInit {\r\n\r\n static readonly KEY_CODE_ESC = 'Escape';\r\n\r\n @ViewChild('dropdownContent', { read: ElementRef, static: true }) dropdownContent: ElementRef;\r\n\r\n @Input() id: string;\r\n @Input() disabled: boolean;\r\n @Input() hiddenText: string;\r\n @Input() classesContainer: string;\r\n @Input() classesTooltip: string;\r\n @Input() classes: string;\r\n @Input() caller: TemplateRef<any>;\r\n\r\n @Output() clickEvent = new EventEmitter();\r\n\r\n isOpen = false;\r\n clickOutsideEnabled = false;\r\n\r\n tippyProperties: any;\r\n\r\n ngOnInit(): any {\r\n let contentTooltip: HTMLElement;\r\n if (this.dropdownContent && this.dropdownContent.nativeElement) {\r\n contentTooltip = this.dropdownContent.nativeElement as HTMLElement;\r\n contentTooltip.style.display = 'block';\r\n this.tippyProperties = {\r\n placement: 'bottom-start',\r\n inlinePositioning: true,\r\n content: contentTooltip,\r\n allowHTML: true, // Make sure you are sanitizing any user data if rendering HTML to prevent XSS attacks.\r\n trigger: 'click',\r\n hideOnClick: true,\r\n interactive: true,\r\n arrow: false,\r\n offset: [0, -10],\r\n theme: '',\r\n plugins: [\r\n {\r\n name: 'hideOnPopperBlur',\r\n defaultValue: true,\r\n fn(instance) {\r\n return {\r\n onCreate() {\r\n instance.popper.addEventListener('focusout', (event) => {\r\n if (\r\n instance.props.hideOnPopperBlur &&\r\n event.relatedTarget &&\r\n !instance.popper.contains(event.relatedTarget)\r\n ) {\r\n instance.hide();\r\n }\r\n });\r\n },\r\n };\r\n }\r\n }, {\r\n name: 'hideOnEsc',\r\n defaultValue: true,\r\n fn({hide}): any {\r\n\r\n function onKeyDown(event: KeyboardEvent): void {\r\n if (event.key === DropdownComponent.KEY_CODE_ESC) {\r\n hide();\r\n }\r\n }\r\n\r\n return {\r\n onShow(): void {\r\n document.addEventListener('keydown', onKeyDown);\r\n },\r\n onHide(): void {\r\n document.removeEventListener('keydown', onKeyDown);\r\n },\r\n };\r\n },\r\n }\r\n ],\r\n role: false,\r\n aria: {\r\n content: 'auto',\r\n },\r\n onShown(instance): void {\r\n const firstFocusable = FocusUtils.getFirstFocusableElement(contentTooltip);\r\n if (firstFocusable) {\r\n firstFocusable.focus()\r\n }\r\n }\r\n };\r\n }\r\n }\r\n\r\n onClick(event: any): void {\r\n if (!this.isDisabled()){\r\n this.clickEvent.emit(event);\r\n }\r\n }\r\n\r\n setOpen(isOpen: boolean): void {\r\n this.isOpen = isOpen;\r\n }\r\n\r\n isDisabled(): boolean {\r\n return this.disabled ? true : null;\r\n }\r\n}\r\n","/**\r\n * Facilita funciones de utilidad para trabajar con strings\r\n */\r\nexport class StringUtils {\r\n\r\n /**\r\n * Escapa los caracteres propios de HTML para mostrarlos como contenido\r\n * @param value texto en formato html\r\n */\r\n public static escapeHtml(value: string): string {\r\n return value ? value\r\n .replace(new RegExp(`&`, 'g'), '&amp;')\r\n .replace(new RegExp(`<`, 'g'), '&lt;')\r\n .replace(new RegExp(`>`, 'g'), '&gt;')\r\n .replace(new RegExp(`\"`, 'g'), '&quot;')\r\n .replace(new RegExp(`'`, 'g'), '&#39;') : '';\r\n }\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-listbox-label',\r\n templateUrl: './listbox-label.component.html'\r\n})\r\nexport class ListboxLabelComponent extends ContentBaseComponent {\r\n\r\n @Input() classes: string;\r\n\r\n}\r\n","import {Component, EventEmitter, Input, OnChanges, Output, SimpleChanges, ViewChild} from '@angular/core';\r\nimport {ListboxItemData} from '../../../interfaces/listbox-item-data';\r\nimport {AccessibilityComponent} from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-listbox-item',\r\n templateUrl: './listbox-item.component.html'\r\n})\r\nexport class ListboxItemComponent extends AccessibilityComponent implements ListboxItemData, OnChanges {\r\n\r\n @ViewChild('childComponentTemplate') content;\r\n\r\n @Input() id?: string;\r\n @Input() active?: boolean;\r\n @Input() classes?: string;\r\n @Input() title?: string;\r\n\r\n @Output() itemChange = new EventEmitter();\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.itemChange.emit(changes);\r\n }\r\n\r\n}\r\n","import {QueryList} from '@angular/core';\r\n\r\n/**\r\n * Decorador para convertir una queryList de componentes obtenidos con ContentChildren a un único componente, de forma que sea similar a un\r\n * ContentChild pero admitiendo únicamente los compontentes insertados en el primer nivel.\r\n * Debe utilizarse siempre junto a un ContentChildren\r\n * Si en el constructor de la clase en la que se utiliza se inyecta el Change detector con nombre 'changeDetectorRef', se indicará que hay\r\n * cambios cuando se detecten.\r\n * @param options opciones adicionales:\r\n * - onSetCallbackName: nombre del método al que llamar tras asociarse el valor. Esto puede utilizarse, por ejemplo, para sobreescribir\r\n * parámetros definidos externamente en el componente.\r\n * - onDeleteCallbackName: nombre del método al que llamar tras desasociarse el valor.\r\n */\r\nexport function DesyContentChild(options?: { onSetCallbackName?: string, onDeleteCallbackName?: string }): PropertyDecorator {\r\n return (target: any, propertyKey: string) => {\r\n const privateKeyName = `_${propertyKey}`;\r\n const privateQueryListKeyName = `_${propertyKey}Querylist`;\r\n\r\n Object.defineProperty(target, propertyKey, {\r\n set(value): void {\r\n const queryList = value instanceof QueryList ? value as QueryList<any> : null;\r\n if (queryList && !this[privateQueryListKeyName]) {\r\n this[privateQueryListKeyName] = queryList;\r\n queryList.changes.subscribe(() => {\r\n const previousValue = this[privateKeyName];\r\n this[privateKeyName] = queryList && queryList.length > 0 ? queryList.first : null;\r\n\r\n if (options && options.onSetCallbackName && this[options.onSetCallbackName] && this[privateKeyName] ) {\r\n this[options.onSetCallbackName](this[privateKeyName]);\r\n }\r\n\r\n if (options && options.onDeleteCallbackName && this[options.onDeleteCallbackName] && previousValue && !this[privateKeyName] ) {\r\n this[options.onDeleteCallbackName]();\r\n }\r\n });\r\n queryList.notifyOnChanges();\r\n }\r\n },\r\n get(): any {\r\n return this[privateKeyName];\r\n }\r\n });\r\n };\r\n}\r\n","import {\r\n Component,\r\n ContentChildren, DoCheck,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n QueryList,\r\n ViewChild,\r\n ViewChildren\r\n} from '@angular/core';\r\nimport {AccessibilityAndTextOrHtmlRequiredComponent, textOrHtmlRequiredFunction} from '../../../shared/components';\r\nimport {ListboxLabelData} from '../../interfaces/listbox-label-data';\r\nimport {ListboxItemData} from '../../interfaces/listbox-item-data';\r\nimport {StringUtils} from '../../../shared/utils/string-utils';\r\nimport {ListboxLabelComponent} from './listbox-label/listbox-label.component';\r\nimport {ListboxItemComponent} from './listbox-item/listbox-item.component';\r\nimport {Subscription} from 'rxjs';\r\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\r\n\r\n@Component({\r\n selector: 'desy-listbox',\r\n templateUrl: './listbox.component.html'\r\n})\r\nexport class ListboxComponent extends AccessibilityAndTextOrHtmlRequiredComponent implements OnInit, OnChanges, DoCheck {\r\n\r\n static readonly KEY_CODE_ESC = 'Escape';\r\n\r\n @ViewChild('button', { read: ElementRef, static: true }) listboxButton: ElementRef;\r\n @ViewChild('list', { read: ElementRef }) listboxList: ElementRef;\r\n @ViewChild('tooltip', { read: ElementRef, static: true }) listboxContent: ElementRef;\r\n @ViewChildren('option', { read: ElementRef }) listboxOptions: QueryList<ElementRef>;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(ListboxLabelComponent) labelComponent: ListboxLabelComponent;\r\n @ContentChildren(ListboxItemComponent) itemComponentList: QueryList<ListboxItemComponent>;\r\n\r\n @Input() id: string; // required\r\n @Input() isMultiselectable: boolean;\r\n @Input() doesChangeButtonText: boolean;\r\n @Input() label: ListboxLabelData;\r\n @Input() classes: string;\r\n @Input() classesContainer: string;\r\n @Input() classesTooltip: string;\r\n @Input() idPrefix: string;\r\n @Input() disabled: boolean;\r\n @Input() items: ListboxItemData[];\r\n @Output() itemsChange = new EventEmitter();\r\n @Output() activeItemChange = new EventEmitter();\r\n\r\n tippyProperties: any; // Propiedades de tippy\r\n currentFocusIndex: number; // Índice del elemento actual con focus\r\n buttonContentHtml: string; // Puede ser el pasado por parámetro o el item seleccionado en caso de currentFocusIndex=true\r\n isListVisible = false; // Indica si la lista se está mostrando\r\n\r\n // conditionalId y conditionalItem representan en desy-html el item activo. Aquí es mejor obtenerlo cuando se necesita\r\n lastActiveItems: { item: ListboxItemData, index: number }[];\r\n itemComponentSubscriptions: Subscription[];\r\n\r\n itemList: ListboxItemData[];\r\n\r\n\r\n ngOnInit(): void {\r\n const listboxButtonElement = this.listboxButton.nativeElement;\r\n if (this.listboxContent && this.listboxContent.nativeElement) {\r\n const contentTooltip = this.listboxContent.nativeElement as HTMLElement;\r\n this.tippyProperties = {\r\n placement: 'bottom-start',\r\n inlinePositioning: true,\r\n content: contentTooltip,\r\n allowHTML: true, // Make sure you are sanitizing any user data if rendering HTML to prevent XSS attacks.\r\n trigger: 'click',\r\n hideOnClick: true,\r\n interactive: true,\r\n arrow: false,\r\n offset: [0, -10],\r\n theme: '',\r\n plugins: [\r\n {\r\n name: 'hideOnPopperBlur',\r\n defaultValue: true,\r\n fn(instance) {\r\n return {\r\n onCreate() {\r\n instance.popper.addEventListener('focusout', (event) => {\r\n if (\r\n instance.props.hideOnPopperBlur &&\r\n event.relatedTarget &&\r\n !instance.popper.contains(event.relatedTarget)\r\n ) {\r\n instance.hide();\r\n }\r\n });\r\n },\r\n };\r\n }\r\n }, {\r\n name: 'hideOnEsc',\r\n defaultValue: true,\r\n fn({hide}): any {\r\n\r\n function onKeyDown(event: KeyboardEvent): void {\r\n if (event.key === ListboxComponent.KEY_CODE_ESC) {\r\n hide();\r\n listboxButtonElement.focus();\r\n }\r\n }\r\n\r\n return {\r\n onShow(): void {\r\n document.addEventListener('keydown', onKeyDown);\r\n },\r\n onHide(): void {\r\n document.removeEventListener('keydown', onKeyDown);\r\n },\r\n };\r\n },\r\n }\r\n ],\r\n role: false,\r\n aria: {\r\n content: 'auto',\r\n },\r\n onShow: this.onListShow.bind(this),\r\n onHidden: this.onListClose.bind(this)\r\n };\r\n }\r\n }\r\n\r\n ngOnChanges(): void {\r\n setTimeout(() => {\r\n /*\r\n * Parámetros obligatorios\r\n */\r\n if (!this.id) {\r\n throw Error('id is required');\r\n }\r\n if (!this.items && !this.itemComponentList) {\r\n throw Error('items are required');\r\n }\r\n if (!this.label && !this.labelComponent) {\r\n throw Error('label is required');\r\n }\r\n\r\n if (this.itemComponentList && this.itemComponentList.length > 0) {\r\n if (this.itemComponentSubscriptions) {\r\n this.itemComponentSubscriptions.forEach(s => s.unsubscribe());\r\n }\r\n this.itemComponentSubscriptions = [];\r\n this.itemList = [];\r\n this.itemComponentList.forEach(item => {\r\n const subscription = item.itemChange.subscribe(() => this.checkActiveItems());\r\n this.itemComponentSubscriptions.push(subscription);\r\n this.itemList.push(item);\r\n });\r\n } else {\r\n this.itemList = this.items;\r\n }\r\n\r\n if (this.items) {\r\n for (const item of this.items) {\r\n if (item) {\r\n textOrHtmlRequiredFunction(item.text, item.html);\r\n } else {\r\n throw Error('item is ' + item);\r\n }\r\n }\r\n }\r\n\r\n this.checkActiveItems();\r\n });\r\n }\r\n\r\n ngDoCheck(): void {\r\n if (!this.items || !this.itemList) {\r\n return;\r\n }\r\n\r\n this.checkActiveItems();\r\n }\r\n\r\n private getActiveItemsData(): { item: ListboxItemData, index: number }[] {\r\n return this.itemList\r\n .map((item, index) => item.active ? {item, index} : null)\r\n .filter(item => item !== null);\r\n }\r\n\r\n private checkActiveItems(): void {\r\n let activeItems: { item: ListboxItemData, index: number }[] = this.itemList\r\n .map((item, index) => item.active ? {item, index} : null)\r\n .filter(item => item !== null);\r\n\r\n let hasActiveItemChange = false;\r\n if (this.lastActiveItems && activeItems.length === this.lastActiveItems.length) {\r\n for (let i = 0; i < activeItems.length; i++) {\r\n if (activeItems[i].index !== this.lastActiveItems[i].index) {\r\n hasActiveItemChange = true;\r\n break;\r\n }\r\n }\r\n } else {\r\n hasActiveItemChange = true;\r\n }\r\n\r\n // Si hay cambios externos y es selección única, anulamos la selección anterior\r\n if (this.lastActiveItems && !this.isMultiselectable && hasActiveItemChange) {\r\n if (activeItems.length !== this.lastActiveItems.length) {\r\n for (const newItem of activeItems) {\r\n if (this.lastActiveItems.findIndex(i => i.index === newItem.index) >= 0) {\r\n newItem.item.active = false;\r\n }\r\n\r\n activeItems = activeItems.filter(item => item.item.active);\r\n }\r\n }\r\n }\r\n\r\n this.lastActiveItems = activeItems;\r\n\r\n // Se cambia el contenido del botón\r\n if (this.doesChangeButtonText && !this.isMultiselectable && activeItems.length > 0) {\r\n const activeItemOption = this.listboxOptions.find((item, index) => index === activeItems[0].index);\r\n if (activeItemOption) {\r\n this.buttonContentHtml = activeItemOption.nativeElement.innerHTML;\r\n }\r\n } else {\r\n this.buttonContentHtml = this.html ? this.html : null;\r\n }\r\n\r\n // Si hay cambios, se emiten\r\n if (hasActiveItemChange) {\r\n this.itemsChange.emit(this.itemList);\r\n this.activeItemChange.emit(activeItems.length > 0 ? activeItems[0].item : null);\r\n }\r\n }\r\n\r\n onListShow(): void {\r\n this.isListVisible = true;\r\n if (this.listboxList) {\r\n setTimeout(() => this.listboxList.nativeElement.focus());\r\n }\r\n }\r\n\r\n onListClose(): void {\r\n this.isListVisible = false;\r\n }\r\n\r\n onListFocus(): void {\r\n const activeItemsData = this.getActiveItemsData();\r\n if (activeItemsData.length > 0) {\r\n const activeElem = document.getElementById(this.getItemId(activeItemsData[0].item, activeItemsData[0].index));\r\n if (activeElem) {\r\n activeElem.focus();\r\n this.currentFocusIndex = activeItemsData[0].index;\r\n }\r\n } else if (this.itemList && this.itemList.length > 0) {\r\n this.currentFocusIndex = 0;\r\n if (!this.isMultiselectable) {\r\n this.selectItem(0);\r\n }\r\n } else {\r\n console.warn('No element to focus');\r\n }\r\n }\r\n\r\n moveFocus(position: number, event: KeyboardEvent): void {\r\n event.preventDefault();\r\n if (position >= 0 && position < this.itemList.length) {\r\n if (this.isMultiselectable) {\r\n this.currentFocusIndex = position;\r\n } else {\r\n this.selectItem(position);\r\n }\r\n }\r\n }\r\n\r\n onSpace(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n if (this.isMultiselectable) {\r\n this.selectItem(this.currentFocusIndex);\r\n }\r\n }\r\n\r\n selectItem(index: number): void {\r\n if (!this.isMultiselectable) {\r\n this.itemList.forEach(item => item.active = false);\r\n this.itemList[index].active = true;\r\n } else {\r\n this.itemList[index].active = !this.itemList[index].active;\r\n }\r\n this.currentFocusIndex = index;\r\n\r\n this.checkActiveItems();\r\n }\r\n\r\n /*\r\n * Métodos para facilitar contenido al template\r\n */\r\n\r\n getIdPrefix(): string {\r\n return this.idPrefix ? this.idPrefix : this.id + '-listbox-item';\r\n }\r\n\r\n getItemId(item: ListboxItemData, index: number): string {\r\n let itemId: string;\r\n if (item.id) {\r\n itemId = item.id;\r\n } else {\r\n itemId = this.getIdPrefix();\r\n if (index > 0) {\r\n itemId += `-${index}`;\r\n }\r\n }\r\n return itemId;\r\n }\r\n\r\n hasLabel(): boolean {\r\n return !!(this.label || this.labelComponent);\r\n }\r\n\r\n getLabelContent(label: ListboxLabelData): string {\r\n return label.html ? label.html : `<p>${ StringUtils.escapeHtml(label.text) }</p>`;\r\n }\r\n}\r\n","import {Component, EventEmitter, HostBinding, Input, Output, SimpleChanges} from '@angular/core';\r\nimport { AccessibilityAndContentRequiredComponent } from '../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-pill',\r\n templateUrl: './pill.component.html'\r\n})\r\nexport class PillComponent extends AccessibilityAndContentRequiredComponent {\r\n\r\n public static readonly TYPE_A: string = 'a';\r\n public static readonly TYPE_BUTTON: string = 'button';\r\n public static readonly TYPE_SPAN: string = 'span';\r\n\r\n @Input() type: string; // 'a', 'button' o 'span'\r\n @Input() href: string;\r\n @Input() target: string;\r\n @Input() routerLink: string|any[];\r\n @Input() routerLinkActiveClasses: string|string[];\r\n @Input() classes: string;\r\n @Input() id: string;\r\n\r\n @Output() clickEvent = new EventEmitter();\r\n\r\n @HostBinding('attr.tabindex') readonly hostTabIndex = null; // Fix para evitar el tab-index agregado por routerLink en el host\r\n\r\n onClick(event: any): void {\r\n this.clickEvent.emit(event);\r\n }\r\n\r\n getType(): string {\r\n let type: string;\r\n if (this.type){\r\n type = this.type.toLocaleLowerCase();\r\n } else {\r\n if (this.href) {\r\n type = PillComponent.TYPE_A;\r\n } else {\r\n type = PillComponent.TYPE_SPAN;\r\n }\r\n }\r\n return type;\r\n }\r\n\r\n getClassNames(): string {\r\n let classNames = 'c-pill';\r\n if (this.classes) {\r\n classNames += ' ' + this.classes;\r\n }\r\n return classNames;\r\n }\r\n\r\n get staticElementTypeA(): string {\r\n return PillComponent.TYPE_A;\r\n }\r\n\r\n get staticElementTypeButton(): string {\r\n return PillComponent.TYPE_BUTTON;\r\n }\r\n\r\n get staticElementTypeSpan(): string {\r\n return PillComponent.TYPE_SPAN;\r\n }\r\n\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../shared/components';\r\nimport {ContentData} from '../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-content',\r\n templateUrl: './content.component.html'\r\n})\r\nexport class ContentComponent extends ContentBaseComponent implements ContentData {\r\n @Input() classes: string;\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../shared/components';\r\nimport {DescriptionData} from '../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-description',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class DescriptionComponent extends ContentBaseComponent implements DescriptionData {\r\n @Input() classes: string;\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {IconData} from '../../interfaces';\r\nimport {ContentBaseComponent} from '../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-icon',\r\n templateUrl: './icon.component.html'\r\n})\r\nexport class IconComponent extends ContentBaseComponent implements IconData {\r\n\r\n @Input() type: string;\r\n\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../shared/components';\r\nimport {TitleData} from '../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-title',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class TitleComponent extends ContentBaseComponent implements TitleData {\r\n @Input() classes: string;\r\n}\r\n","import {ChangeDetectorRef, Component, Input} from '@angular/core';\r\nimport {AccessibilityComponent} from '../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-hint',\r\n templateUrl: './hint.component.html',\r\n})\r\nexport class HintComponent extends AccessibilityComponent {\r\n\r\n @Input() id: string;\r\n @Input() classes: string;\r\n @Input() html: string;\r\n @Input() text: string;\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n public detectChanges(): void {\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n}\r\n","import {ChangeDetectorRef, Component, Input} from '@angular/core';\r\nimport {AccessibilityComponent} from '../../../shared/components';\r\n\r\n\r\n@Component({\r\n selector: 'desy-label',\r\n templateUrl: './label.component.html'\r\n})\r\nexport class LabelComponent extends AccessibilityComponent {\r\n\r\n @Input() id: string;\r\n @Input() classes: string;\r\n @Input() html: string;\r\n @Input() text: string;\r\n @Input() isPageHeading: boolean;\r\n @Input() headingLevel: number;\r\n @Input() for: string;\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n public detectChanges(): void {\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n}\r\n","import {ChangeDetectorRef, Component, Input} from '@angular/core';\r\nimport {AccessibilityComponent} from '../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-error-message',\r\n templateUrl: './error-message.component.html'\r\n})\r\nexport class ErrorMessageComponent extends AccessibilityComponent {\r\n\r\n @Input() id: string;\r\n @Input() classes: string;\r\n @Input() html: string;\r\n @Input() text: string;\r\n @Input() visuallyHiddenText: string;\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n public detectChanges(): void {\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n}\r\n","import { Component, Input, SimpleChanges } from '@angular/core';\r\nimport { AccessibilityAndContentRequiredComponent } from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-legend',\r\n templateUrl: './legend.component.html'\r\n})\r\nexport class LegendComponent extends AccessibilityAndContentRequiredComponent {\r\n\r\n @Input() classes: string;\r\n @Input() isPageHeading: boolean;\r\n @Input() headingLevel: number;\r\n \r\n}\r\n","import {ChangeDetectorRef, Component, ContentChildren, Input, TemplateRef} from '@angular/core';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\nimport { LegendComponent } from './legend/legend.component';\r\nimport { LegendData } from '../../interfaces';\r\nimport {ContentComponent} from '../../../desy-commons/components/content/content.component';\r\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\r\n\r\n@Component({\r\n selector: 'desy-fieldset',\r\n templateUrl: './fieldset.component.html'\r\n})\r\nexport class FieldsetComponent extends AccessibilityComponent {\r\n\r\n @Input() describedBy: string;\r\n @Input() errorId: string;\r\n\r\n /**\r\n * legenda, diferentes formas de implementar, enumeradas por prioridad\r\n * 1) incluir legendComponent\r\n * 2) incluir template\r\n * 3) incluir objeto legend (interfaz expuesta)\r\n * 4) incluir legendText - incluir un label con solo un texto\r\n */\r\n @Input() legendRef: TemplateRef<LegendComponent>;\r\n @Input() legendData: LegendData;\r\n @Input() legendText: string;\r\n\r\n @Input() classes: string;\r\n @Input() caller: TemplateRef<any>;\r\n\r\n @Input() id: string;\r\n @Input() headingLevel: number;\r\n\r\n\r\n @DesyContentChild()\r\n @ContentChildren(LegendComponent) legendComponent: LegendComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(ContentComponent) contentComponent: ContentComponent;\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n public detectChanges(): void {\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n}\r\n","import {\r\n Component,\r\n ContentChildren,\r\n HostListener,\r\n Input,\r\n TemplateRef\r\n} from '@angular/core';\r\nimport { ControlValueAccessor } from '@angular/forms';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\nimport { LabelComponent } from '../label/label.component';\r\nimport { HintComponent } from '../hint/hint.component';\r\nimport { ErrorMessageComponent } from '../error-message/error-message.component';\r\nimport { LabelData, HintData, ErrorMessageData } from '../../interfaces';\r\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\r\n\r\n\r\n@Component({\r\n selector: 'desy-form-field',\r\n template: ''\r\n})\r\nexport class FormFieldComponent<T> extends AccessibilityComponent implements ControlValueAccessor {\r\n\r\n @Input() id: string;\r\n @Input() disabled: boolean;\r\n value: T;\r\n\r\n /*\r\n * label, diferentes formas de implementar, enumeradas por prioridad\r\n * 1) incluir componente\r\n * 2) incluir template\r\n * 3) incluir objeto label (interfaz expuesta)\r\n * 4) incluir legendText - incluir un label con solo un texto\r\n */\r\n @DesyContentChild({ onSetCallbackName: 'overrideLabelParams', onDeleteCallbackName: 'onDeleteLabel'})\r\n @ContentChildren(LabelComponent) labelComponent: LabelComponent;\r\n @Input() labelRef: TemplateRef<LabelComponent>;\r\n @Input() labelData: LabelData;\r\n @Input() labelText: string;\r\n\r\n /*\r\n * hint, diferentes formas de implementar, enumeradas por prioridad\r\n * 1) incluir componente\r\n * 2) incluir template\r\n * 3) incluir objeto label (interfaz expuesta)\r\n * 4) incluir hintText - incluir un hint con solo un texto\r\n */\r\n @DesyContentChild({ onSetCallbackName: 'overrideHintParams', onDeleteCallbackName: 'onDeleteHint'})\r\n @ContentChildren(HintComponent) hintComponent: HintComponent;\r\n @Input() hintRef: TemplateRef<HintComponent>;\r\n @Input() hintData: HintData;\r\n @Input() hintText: string;\r\n\r\n /*\r\n * errorMessage, diferentes formas de implementar, enumeradas por prioridad\r\n * 1) incluir componente\r\n * 2) incluir template\r\n * 3) incluir objeto label (interfaz expuesta)\r\n * 4) incluir errorText - incluir un errorText con solo un texto\r\n */\r\n @DesyContentChild({ onSetCallbackName: 'overrideErrorMessageParams', onDeleteCallbackName: 'onDeleteErrorMessage'})\r\n @ContentChildren(ErrorMessageComponent) errorMessageComponent: ErrorMessageComponent;\r\n @Input() errorMessageRef: TemplateRef<ErrorMessageComponent>;\r\n @Input() errorMessageData: ErrorMessageData;\r\n @Input() errorMessageText: string;\r\n\r\n\r\n @HostListener('focusout')\r\n onblur(): void {\r\n // DESY-77 SI TOCAN EL COMPONENTE Y SALEN SIN MODIFICAR EL VALOR, QUE SE ACTUALICE TOUCHED\r\n this.onTouch();\r\n }\r\n\r\n\r\n /*\r\n * Implementación de los métodos del ControlValueAccessor\r\n */\r\n\r\n onChange = (_: any) => {};\r\n onTouch = () => { };\r\n\r\n onInput(value: T): void{\r\n this.value = value;\r\n this.onTouch();\r\n this.onChange(this.value);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouch = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n writeValue(value: T): void {\r\n if (value){\r\n this.value = value;\r\n }\r\n this.onChange(value);\r\n }\r\n\r\n\r\n /*\r\n * Funciones para recuperar valores comunes\r\n */\r\n\r\n getHintId(): string {\r\n return this.hasHint() ? this.id + '-hint' : null;\r\n }\r\n\r\n getErrorId(): string {\r\n return this.hasErrorsMessage() ? this.id + '-error' : null;\r\n }\r\n\r\n hasLabel(): boolean {\r\n return !!(this.hasLabelComponent() || this.labelText || this.labelRef ||\r\n (this.labelData && (this.labelData.text || this.labelData.html)));\r\n }\r\n\r\n hasHint(): boolean {\r\n return !!(this.hasHintComponent() || this.hintText || this.hintRef || (this.hintData && (this.hintData.text || this.hintData.html)));\r\n }\r\n\r\n hasErrorsMessage(): boolean {\r\n return !!(this.hasErrorMessageComponent() || this.errorMessageText || this.errorMessageRef ||\r\n (this.errorMessageData && (this.errorMessageData.text || this.errorMessageData.html)));\r\n }\r\n\r\n hasLabelComponent(): boolean {\r\n return !!this.labelComponent;\r\n }\r\n\r\n hasHintComponent(): boolean {\r\n return !!this.hintComponent;\r\n }\r\n\r\n hasErrorMessageComponent(): boolean {\r\n return !!this.errorMessageComponent;\r\n }\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n forwardRef,\r\n Input,\r\n OnChanges,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { FormFieldComponent } from '../form-field/form-field.component';\r\n\r\n@Component({\r\n selector: 'desy-textarea',\r\n templateUrl: './textarea.component.html',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TextareaComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class TextareaComponent extends FormFieldComponent<string> implements OnChanges {\r\n\r\n protected static readonly DEFAULT_ROWS = 5;\r\n\r\n @ViewChild('textarea') textareaElement: ElementRef;\r\n\r\n @Input() name: string;\r\n @Input() rows: number;\r\n @Input() placeholder: string;\r\n @Input() describedBy: string;\r\n\r\n @Input() formGroupClasses: string;\r\n @Input() classes: string;\r\n @Input() autocomplete: string;\r\n @Input() maxlength: number;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n inputTransform = (value: string): string => value;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.checkRequiredParams();\r\n this.writeValue(this.value);\r\n }\r\n\r\n checkRequiredParams(): void{\r\n if (!this.id) {\r\n throw Error('id is required');\r\n }\r\n if (!this.name) {\r\n throw Error('name is required');\r\n }\r\n if (!this.labelRef && !this.labelData && !this.labelText) {\r\n throw Error('label is required');\r\n }\r\n }\r\n\r\n getRows(): number {\r\n return this.rows ? this.rows : TextareaComponent.DEFAULT_ROWS;\r\n }\r\n\r\n onInput(value: any): void{\r\n super.onInput(this.inputTransform(this.ensureText(value)));\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.value = this.inputTransform(this.ensureText(value));\r\n this.onChange(this.value);\r\n }\r\n\r\n registerInputTransform(fn: (value: string) => string): void {\r\n this.inputTransform = fn;\r\n }\r\n\r\n private ensureText(value: any): string {\r\n return value ? value || '' : '';\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n forwardRef,\r\n Input,\r\n OnChanges,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { FormFieldComponent } from '../form-field/form-field.component';\r\nimport { TextareaComponent } from '../textarea/textarea.component';\r\n\r\n@Component({\r\n selector: 'desy-character-count',\r\n templateUrl: './character-count.component.html',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CharacterCountComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class CharacterCountComponent extends FormFieldComponent<string> implements AfterViewInit, OnChanges {\r\n\r\n @ViewChild(TextareaComponent) textarea;\r\n\r\n @Input() name: string;\r\n @Input() type: string;\r\n @Input() rows: number;\r\n @Input() placeholder: string;\r\n @Input() maxlength: number;\r\n @Input() countbbdd: boolean;\r\n @Input() maxwords: number;\r\n @Input() threshold: number;\r\n @Input() formGroupClasses: string;\r\n @Input() countMessageClasses: string;\r\n @Input() classes: string;\r\n\r\n textareaElement: HTMLTextAreaElement;\r\n displayCountMessage: boolean;\r\n remaining: number;\r\n\r\n ngAfterViewInit(): void {\r\n this.textareaElement = (this.textarea.textareaElement.nativeElement as HTMLTextAreaElement);\r\n this.textarea.registerInputTransform(this.inputTransform.bind(this));\r\n this.registerOnChange(this.onChange);\r\n this.registerOnTouched(this.onTouch);\r\n this.textarea.setDisabledState(this.disabled);\r\n setTimeout(() => this.textarea.writeValue(this.value), 50);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.checkRequired();\r\n if (this.textarea) {\r\n setTimeout(() => this.textarea.ngOnChanges(changes), 50);\r\n }\r\n }\r\n\r\n inputTransform(value: string): string {\r\n if (value) {\r\n if (this.maxlength) {\r\n let length = this.calculateLenght(value);\r\n this.displayCountMessage = !this.threshold || length > (this.maxlength * this.threshold / 100);\r\n while (length > this.maxlength) {\r\n value = value.substring(0, value.length - 1);\r\n length = this.calculateLenght(value);\r\n }\r\n this.remaining = this.maxlength - length;\r\n } else {\r\n const words = value.match(/[\\wáéíóúÁÉÍÓÚüÜñÑ]+/g) || [];\r\n this.displayCountMessage = !this.threshold || (words.length > this.maxwords * this.threshold / 100);\r\n while ( words.length > this.maxwords) {\r\n value = value.substring(0, value.lastIndexOf(words.pop()));\r\n }\r\n this.remaining = this.maxwords - words.length;\r\n }\r\n } else {\r\n value = '';\r\n this.displayCountMessage = !this.threshold;\r\n this.remaining = this.maxlength ? this.maxlength : this.maxwords;\r\n }\r\n\r\n this.textareaElement.value = value;\r\n return value;\r\n }\r\n\r\n calculateLenght(value: string): number {\r\n let length = value.length;\r\n if (this.countbbdd && value) {\r\n const specialChars = value.match(/[^A-z0-9_\\s.,:;]/g);\r\n length += specialChars ? specialChars.length : 0;\r\n }\r\n return length;\r\n }\r\n\r\n checkRequired(): void {\r\n if (!this.id) {\r\n throw Error('id is required');\r\n }\r\n if (!this.name) {\r\n throw Error('name is required');\r\n }\r\n if (!this.maxlength && !this.maxwords) {\r\n throw Error('maxlength or maxwords are required');\r\n }\r\n if (!this.hasLabel()) {\r\n throw Error('label is required');\r\n }\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n if (this.textarea) {\r\n this.textarea.registerOnChange(fn);\r\n this.onChange = (_: any) => {};\r\n }\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouch = fn;\r\n if (this.textarea) {\r\n this.textarea.registerOnTouched(fn);\r\n this.onTouch = () => { };\r\n }\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n if (this.textarea) {\r\n this.textarea.setDisabledState(isDisabled);\r\n }\r\n }\r\n\r\n writeValue(value: string): void {\r\n this.value = value;\r\n if (this.textarea) {\r\n this.textarea.writeValue(value);\r\n }\r\n }\r\n\r\n}\r\n","import { Component, forwardRef, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { FormFieldComponent } from '../form-field/form-field.component';\r\n\r\n@Component({\r\n selector: 'desy-input',\r\n templateUrl: './input.component.html',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => InputComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class InputComponent extends FormFieldComponent<any> implements OnChanges {\r\n\r\n @Input() name: string;\r\n @Input() type: string;\r\n @Input() describedBy: string;\r\n @Input() pattern: string;\r\n @Input() inputmode: string;\r\n @Input() placeholder: string;\r\n @Input() formGroupClasses: string;\r\n @Input() classes: string;\r\n @Input() autocomplete: string;\r\n @Input() maxlength: number;\r\n @Input() errorId: string;\r\n\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.checkRequired();\r\n }\r\n\r\n getErrorId(): string {\r\n return this.errorId ? this.errorId : super.getErrorId();\r\n }\r\n\r\n writeValue(value: any): void {\r\n if (value) {\r\n this.value = value || '';\r\n } else {\r\n this.value = '';\r\n }\r\n this.onChange(this.value);\r\n }\r\n\r\n checkRequired(): void {\r\n if (!this.id) {\r\n throw Error('id is required');\r\n }\r\n if (!this.name) {\r\n throw Error('name is required');\r\n }\r\n if (!this.hasLabel()) {\r\n throw Error('label is required');\r\n }\r\n }\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-select-item',\r\n templateUrl: './select-item.component.html'\r\n})\r\nexport class SelectItemComponent extends ContentBaseComponent {\r\n\r\n @Input() disabled: boolean;\r\n}\r\n","import {Component, forwardRef, Input} from '@angular/core';\r\nimport {SelectItemData} from '../../../interfaces';\r\nimport {SelectItemComponent} from '../select-item/select-item.component';\r\n\r\n@Component({\r\n selector: 'desy-option',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>',\r\n providers: [{provide: SelectItemComponent, useExisting: forwardRef(() => OptionComponent)}],\r\n})\r\nexport class OptionComponent extends SelectItemComponent implements SelectItemData {\r\n\r\n @Input() value: string;\r\n @Input() selected: boolean;\r\n @Input() hidden: boolean;\r\n\r\n}\r\n","import {Component, ContentChildren, forwardRef, Input, QueryList} from '@angular/core';\r\nimport {SelectItemComponent} from '../select-item/select-item.component';\r\nimport {OptionComponent} from '../option/option.component';\r\n\r\n@Component({\r\n selector: 'desy-option-group',\r\n templateUrl: './option-group.component.html',\r\n providers: [{provide: SelectItemComponent, useExisting: forwardRef(() => OptionGroupComponent)}],\r\n})\r\nexport class OptionGroupComponent extends SelectItemComponent {\r\n\r\n @Input() label: string;\r\n\r\n @ContentChildren(OptionComponent) items: QueryList<OptionComponent>;\r\n}\r\n","import {Component, forwardRef, Input, OnInit, OnChanges, SimpleChanges, ContentChildren, QueryList, AfterContentInit} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nimport { SelectItemData } from '../../interfaces';\r\nimport { FormFieldComponent } from '../form-field/form-field.component';\r\nimport {OptionGroupComponent} from './option-group/option-group.component';\r\nimport {SelectItemComponent} from './select-item/select-item.component';\r\n\r\n@Component({\r\n selector: 'desy-select',\r\n templateUrl: './select.component.html',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SelectComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class SelectComponent extends FormFieldComponent<any> implements OnInit, OnChanges, AfterContentInit {\r\n\r\n @Input() name: string;\r\n @Input() items: SelectItemData[];\r\n @Input() describedBy?: string;\r\n\r\n @Input() formGroupClasses: string;\r\n @Input() classes: string;\r\n\r\n @ContentChildren(SelectItemComponent) itemComponents: QueryList<SelectItemComponent>;\r\n contentInit = false;\r\n\r\n ngOnInit(): void {\r\n this.checkRequiredParams();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.checkRequiredParams();\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.contentInit = true;\r\n if (!this.value) {\r\n const items = this.getItems();\r\n const itemSelected = items?.find(item => item.selected);\r\n if (itemSelected) {\r\n setTimeout(() => this.writeValue(itemSelected.value));\r\n }\r\n }\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.value = value;\r\n this.onChange(value);\r\n }\r\n\r\n getItems(): SelectItemData[] {\r\n const items = (this.itemComponents.length > 0) ? this.itemComponents.toArray() : this.items;\r\n if (this.contentInit && (!items || items.length === 0)) {\r\n throw new Error(`items are required`);\r\n }\r\n return items;\r\n }\r\n\r\n checkRequiredParams(): void {\r\n if (!this.id) {\r\n throw Error('id is required');\r\n }\r\n if (!this.name) {\r\n throw Error('name is required');\r\n }\r\n }\r\n\r\n isItemSelected(item: SelectItemData): boolean {\r\n return this.value ? this.value === item.value : item.selected;\r\n }\r\n\r\n isOptionGroup(item: SelectItemData): boolean {\r\n return item instanceof OptionGroupComponent;\r\n }\r\n\r\n}\r\n","import { Component, forwardRef, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { FormFieldComponent } from '../form-field/form-field.component';\r\n\r\n@Component({\r\n selector: 'desy-file-upload',\r\n templateUrl: './file-upload.component.html',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: forwardRef(() => FileUploadComponent),\r\n }\r\n ]\r\n})\r\nexport class FileUploadComponent extends FormFieldComponent<File> implements ControlValueAccessor, OnChanges {\r\n\r\n @Input() name: string;\r\n @Input() describedBy: string;\r\n @Input() formGroupClasses: string;\r\n @Input() classes: string;\r\n @Input() accept: string;\r\n\r\n constructor() {\r\n super();\r\n }\r\n/***\r\n * nos devuelve un array de file : File[]\r\n * pero solo nos guardamos el primero\r\n * solo dejamos seleccionar uno\r\n */\r\n onInput(value: any): void{\r\n if (value && value.length > 0 && value[0]){\r\n this.value = value[0];\r\n }else {\r\n this.value = null;\r\n }\r\n this.onTouch();\r\n this.onChange(this.value);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.checkRequiredParams();\r\n }\r\n\r\n checkRequiredParams(): void {\r\n if (!this.id) {\r\n throw Error('id is required');\r\n }\r\n if (!this.name) {\r\n throw Error('name is required');\r\n }\r\n if (!this.labelRef && !this.labelData && !this.labelText) {\r\n throw Error('label is required');\r\n }\r\n }\r\n\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {ItemInputGroupData} from '../../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-input-group-item',\r\n template: ''\r\n})\r\nexport class InputGroupItemComponent implements ItemInputGroupData {\r\n @Input() classes?: string;\r\n\r\n}\r\n","/**\r\n * Decorador para controlar los cambios de un input\r\n * @param callbackName nombre de la función a la que se llamará tras aplicar el cambio\r\n */\r\nexport function DesyOnInputChange(callbackName: string): PropertyDecorator {\r\n return (target: any, propertyKey: string) => {\r\n const privateKeyName = `_${propertyKey}`;\r\n\r\n Object.defineProperty(target, propertyKey, {\r\n set(value): void {\r\n this[privateKeyName] = value;\r\n this[callbackName]();\r\n },\r\n get(): any {\r\n return this[privateKeyName];\r\n }\r\n });\r\n };\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'makeHtmlList'\r\n})\r\nexport class MakeHtmlListPipe implements PipeTransform {\r\n\r\n transform(classes: string[], valueForEmpty?: string): string|null {\r\n let filteredList = classes.filter(c => c).join(' ');\r\n if (filteredList.length === 0 && valueForEmpty) {\r\n filteredList = valueForEmpty;\r\n }\r\n return filteredList;\r\n }\r\n}\r\n","import {\r\n AfterContentInit,\r\n Component,\r\n ContentChildren,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n Output,\r\n TemplateRef,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {InputGroupItemComponent} from '../input-group-item/input-group-item.component';\r\nimport {LabelComponent} from '../../label/label.component';\r\nimport {DesyContentChild} from '../../../../shared/decorators/desy-content-child.decorator';\r\n\r\n@Component({\r\n selector: 'desy-input-group-input',\r\n templateUrl: './input-group-input.component.html',\r\n providers: [{provide: InputGroupItemComponent, useExisting: forwardRef(() => InputGroupInputComponent)}],\r\n})\r\nexport class InputGroupInputComponent extends InputGroupItemComponent implements AfterContentInit {\r\n\r\n isSelect = false;\r\n\r\n @Input() id?: string;\r\n @Input() name: string;\r\n @Input() value?: any;\r\n @Output() valueChange = new EventEmitter<any>();\r\n @Input() formGroupClasses?: string;\r\n\r\n @Input() type?: string;\r\n @Input() inputmode?: string;\r\n @Input() autocomplete?: string;\r\n @Input() placeholder?: string;\r\n @Input() pattern?: string;\r\n @Input() maxlength?: number;\r\n\r\n @ViewChild('label', { static: true }) labelRef: TemplateRef<any>;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(LabelComponent) labelComponent: LabelComponent;\r\n\r\n ngAfterContentInit(): void {\r\n if (!this.name) {\r\n throw Error('item name is required');\r\n }\r\n if (!this.labelComponent) {\r\n throw Error('item label is required');\r\n }\r\n }\r\n}\r\n","import {\r\n AfterContentInit,\r\n Component,\r\n ContentChildren,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n Output,\r\n QueryList,\r\n TemplateRef,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {InputGroupItemComponent} from '../input-group-item/input-group-item.component';\r\nimport {OptionComponent} from '../../select/option/option.component';\r\nimport {DesyContentChild} from '../../../../shared/decorators/desy-content-child.decorator';\r\nimport {LabelComponent} from '../../label/label.component';\r\n\r\n@Component({\r\n selector: 'desy-input-group-select',\r\n templateUrl: './input-group-select.component.html',\r\n providers: [{provide: InputGroupItemComponent, useExisting: forwardRef(() => InputGroupSelectComponent)}],\r\n})\r\nexport class InputGroupSelectComponent extends InputGroupItemComponent implements AfterContentInit {\r\n\r\n isSelect = true;\r\n\r\n @Input() id?: string;\r\n @Input() name: string;\r\n @Input() value?: any;\r\n @Output() valueChange = new EventEmitter<any>();\r\n @Input() formGroupClasses?: string;\r\n\r\n @ViewChild('label', { static: true }) labelRef: TemplateRef<any>;\r\n @ContentChildren(OptionComponent) selectItemComponentList: QueryList<OptionComponent>;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(LabelComponent) labelComponent: LabelComponent;\r\n\r\n ngAfterContentInit(): void {\r\n if (!this.name) {\r\n throw Error('item name is required');\r\n }\r\n if (!this.labelComponent) {\r\n throw Error('item label is required');\r\n }\r\n }\r\n}\r\n","import {Component, forwardRef, TemplateRef, ViewChild} from '@angular/core';\r\nimport {InputGroupItemComponent} from '../input-group-item/input-group-item.component';\r\nimport {ItemDividerInputGroupData} from '../../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-input-group-divider',\r\n templateUrl: './input-group-divider.component.html',\r\n providers: [{provide: InputGroupItemComponent, useExisting: forwardRef(() => InputGroupDividerComponent)}],\r\n})\r\nexport class InputGroupDividerComponent extends InputGroupItemComponent implements ItemDividerInputGroupData {\r\n\r\n isSelect = false;\r\n divider = this;\r\n\r\n @ViewChild('dividerContent', { static: true }) dividerContent: TemplateRef<any>;\r\n\r\n}\r\n","import {\r\n AfterContentInit, AfterViewChecked,\r\n Component,\r\n ContentChildren, EventEmitter,\r\n forwardRef,\r\n Input,\r\n OnChanges,\r\n Optional, Output,\r\n QueryList,\r\n TemplateRef, ViewChild\r\n} from '@angular/core';\r\nimport {FieldsetData, LegendData, ItemInputGroupData, LabelData, SelectItemData} from '../../interfaces';\r\nimport { ControlContainer, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { LegendComponent } from '../fieldset/legend/legend.component';\r\nimport { FormFieldComponent } from '../form-field/form-field.component';\r\nimport {InputGroupItemComponent} from './input-group-item/input-group-item.component';\r\nimport {DesyOnInputChange} from '../../../shared/decorators/desy-on-input-change.decorator';\r\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\r\nimport {FieldsetComponent} from '../fieldset/fieldset.component';\r\nimport {MakeHtmlListPipe} from '../../../shared/pipes/make-html-list.pipe';\r\nimport {InputGroupInputComponent} from './input-group-input/input-group-input.component';\r\nimport {InputGroupSelectComponent} from './input-group-select/input-group-select.component';\r\nimport {InputGroupDividerComponent} from './input-group-divider/input-group-divider.component';\r\nimport {StringUtils} from '../../../shared/utils/string-utils';\r\n\r\n@Component({\r\n selector: 'desy-input-group',\r\n templateUrl: './input-group.component.html',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => InputGroupComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class InputGroupComponent extends FormFieldComponent<any> implements OnChanges, AfterContentInit, AfterViewChecked {\r\n\r\n @Input() ngModelGroup: string;\r\n\r\n @DesyOnInputChange('onExternalChange')\r\n @Input() items: ItemInputGroupData[];\r\n @Output() itemsChange: EventEmitter<ItemInputGroupData[]> = new EventEmitter<ItemInputGroupData[]>();\r\n\r\n @DesyOnInputChange('onExternalChange')\r\n @Input() namePrefix: string;\r\n @Input() classes: string;\r\n @Input() formGroupClasses: any;\r\n @Input() errorMessage: string;\r\n @Input() id: string;\r\n\r\n /**\r\n * fieldset, diferentes formas de implementar, enumeradas por prioridad\r\n * 1) incluir objeto FieldsetData (interfaz expuesta)\r\n * 2) incluir template legend\r\n * 3) incluir legendData - incluir un fieldset con una legenda con los parametros pasados (interfaz expuesta)\r\n * 4) incluir legendText - incluir un fieldset con un texto en la legenda\r\n */\r\n @Input() fieldsetData: FieldsetData;\r\n @Input() legendRef: TemplateRef<LegendComponent>;\r\n @Input() legendData: LegendData;\r\n @Input() legendText: string;\r\n\r\n @ContentChildren(InputGroupItemComponent) itemsComponents: QueryList<InputGroupItemComponent>;\r\n\r\n @DesyContentChild({ onSetCallbackName: 'overrideFieldsetParams'})\r\n @ContentChildren(FieldsetComponent) fieldsetComponent: FieldsetComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(LegendComponent) legendComponent: LegendComponent;\r\n\r\n @ViewChild('innerHtml', { static: true }) innerHtml: TemplateRef<any>;\r\n\r\n private contentInit = false;\r\n\r\n constructor(@Optional() public controlContainer: ControlContainer) {\r\n super();\r\n }\r\n\r\n ngOnChanges(): void {\r\n if (!this.id) {\r\n throw Error('id is required');\r\n }\r\n if (this.items) {\r\n for (const item of this.items) {\r\n if (!item.divider && !item.name) {\r\n throw Error('item name is required');\r\n }\r\n if (!item.divider && !this.hasItemLabel(item)) {\r\n throw Error('item label is required');\r\n }\r\n }\r\n }\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.contentInit = true;\r\n }\r\n\r\n ngAfterViewChecked(): void {\r\n const items = this.getItems();\r\n if (!items || items.length === 0) {\r\n throw Error('items are required');\r\n }\r\n }\r\n\r\n writeValue(value: any): void {\r\n if (value) {\r\n this.value = value;\r\n const items = this.getItems();\r\n items.forEach(item => {\r\n const v = this.value[this.getItemName(item)];\r\n item.value = v ? v : null;\r\n });\r\n\r\n if (this.items) {\r\n this.itemsChange.emit(this.items);\r\n }\r\n }\r\n this.onChange(value);\r\n }\r\n\r\n onExternalChange(): void {\r\n if (!this.contentInit) {\r\n return;\r\n }\r\n\r\n if (!this.value) {\r\n this.value = {};\r\n }\r\n\r\n const items = this.getItems();\r\n items.forEach(item => this.value[this.getItemName(item)] = item.value);\r\n this.onChange(this.value);\r\n }\r\n\r\n onInternalChange(item: ItemInputGroupData, itemValue: any): void {\r\n const itemName = this.getItemName(item);\r\n if (!this.value) {\r\n this.value = {};\r\n }\r\n\r\n if (this.value[itemName] !== itemValue) {\r\n this.value[itemName] = itemValue;\r\n this.onChange(this.value);\r\n\r\n if (item instanceof InputGroupInputComponent || item instanceof InputGroupSelectComponent) {\r\n item.valueChange.emit(itemValue);\r\n }\r\n\r\n if (this.items) {\r\n item.value = itemValue;\r\n this.itemsChange.emit(this.items);\r\n }\r\n }\r\n }\r\n\r\n overrideFieldsetParams(fieldset: FieldsetComponent): void {\r\n fieldset.caller = this.innerHtml;\r\n fieldset.errorId = this.getErrorId();\r\n fieldset.describedBy = new MakeHtmlListPipe().transform([this.getHintId(), this.getErrorId()], null);\r\n fieldset.role = 'group';\r\n fieldset.detectChanges();\r\n }\r\n\r\n /*\r\n * Métodos para proporcionar datos\r\n */\r\n getItems(): ItemInputGroupData[] {\r\n return this.itemsComponents && this.itemsComponents.length ? this.itemsComponents.toArray() : this.items;\r\n }\r\n\r\n getItemLabelRef(item: ItemInputGroupData): TemplateRef<any> {\r\n return item instanceof InputGroupInputComponent || item instanceof InputGroupSelectComponent ? item.labelRef : null;\r\n }\r\n\r\n getItemLabelData(item: ItemInputGroupData): LabelData {\r\n return item.labelData ? item.labelData : { text: item.labelText };\r\n }\r\n\r\n hasFieldset(): boolean {\r\n return !!(this.hasFieldsetComponent() || this.hasLegendComponent() || this.legendRef || this.fieldsetData\r\n || (this.legendData && (this.legendData.text || this.legendData.html)) || this.legendText);\r\n }\r\n\r\n hasFieldsetComponent(): boolean {\r\n return !!this.fieldsetComponent;\r\n }\r\n\r\n hasLegendComponent(): boolean {\r\n return !!this.legendComponent;\r\n }\r\n\r\n getItemName(item: ItemInputGroupData): string {\r\n return this.namePrefix ? this.namePrefix + '-' + item.name : item.name;\r\n }\r\n\r\n getItemSelectOptions(item: ItemInputGroupData): SelectItemData[] {\r\n return item instanceof InputGroupSelectComponent ?\r\n item.selectItemComponentList.toArray() : item.selectItems;\r\n }\r\n\r\n getItemDividerTemplate(item: ItemInputGroupData): TemplateRef<any> {\r\n return item.divider instanceof InputGroupDividerComponent ? item.divider.dividerContent : null;\r\n }\r\n\r\n getItemDividerHtml(item: ItemInputGroupData): string {\r\n return item.divider.html ? item.divider.html : `<p>${ StringUtils.escapeHtml(item.divider.text) }</p>`;\r\n }\r\n\r\n isSelectItem(item: ItemInputGroupData): boolean {\r\n let hasSelectItems;\r\n if (item instanceof InputGroupSelectComponent) {\r\n hasSelectItems = item.selectItemComponentList && item.selectItemComponentList.length > 0;\r\n } else {\r\n hasSelectItems = item.selectItems;\r\n }\r\n return item.isSelect && hasSelectItems;\r\n }\r\n\r\n hasItemLabel(item: ItemInputGroupData): boolean {\r\n return !!((item.labelData && (item.labelData.text || item.labelData.html)) || item.labelText);\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n ElementRef,\r\n EventEmitter,\r\n Host,\r\n Input,\r\n OnChanges, OnDestroy, OnInit,\r\n Output,\r\n QueryList,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {ItemRadioData} from '../../../interfaces';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\nimport {LabelComponent} from '../../label/label.component';\r\nimport {ContentComponent} from '../../../../desy-commons/components/content/content.component';\r\nimport {RadiosComponent} from '../radios.component';\r\nimport {animate, animateChild, query, state, style, transition, trigger} from '@angular/animations';\r\nimport {HintComponent} from '../../hint/hint.component';\r\n\r\n\r\n@Component({\r\n selector: 'desy-radio-item',\r\n templateUrl: './radio-item.component.html',\r\n animations: [\r\n trigger('displayConditional', [\r\n state('void', style({\r\n opacity: '0.0',\r\n transform: 'scale(0.95)'\r\n })),\r\n state('*', style({\r\n opacity: '1.0',\r\n transform: 'scale(1.0)'\r\n })),\r\n transition(':enter', [\r\n animate('100ms ease-out')\r\n ]),\r\n transition('* => *', [\r\n query('@*', animateChild(), {optional: true})\r\n ])\r\n ])\r\n ]\r\n})\r\nexport class RadioItemComponent extends ContentBaseComponent implements OnInit, OnChanges, OnDestroy, AfterViewInit, ItemRadioData {\r\n\r\n @ViewChild('input') inputElement: ElementRef;\r\n\r\n @Input() id: string;\r\n @Input() name: string;\r\n @Input() value: any;\r\n @Input() conditional: boolean;\r\n @Input() disabled: boolean;\r\n @Input() classes: string;\r\n @Input() divider: string;\r\n\r\n @ContentChildren(LabelComponent) labelComponentList: QueryList<LabelComponent>;\r\n @ContentChildren(HintComponent) hintComponentList: QueryList<HintComponent>;\r\n @ContentChildren(ContentComponent) conditionalContentList: QueryList<ContentComponent>;\r\n\r\n @Input() checked: boolean;\r\n @Output() checkedChange: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n index = 0;\r\n lastChecked;\r\n lastValue;\r\n radioId;\r\n\r\n constructor(@Host() private radios: RadiosComponent, private changeDetectorRef: ChangeDetectorRef) {\r\n super();\r\n if (!this.radios) {\r\n throw Error('Radios items must be inside of RadiosComponent');\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.radios.markForUpdateCheckboxIds();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.radios.markForUpdateCheckboxIds();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.value && !this.divider) {\r\n throw Error('value or divider are required for checkbox item');\r\n }\r\n\r\n if (this.checked !== this.lastChecked && this.isInit()) {\r\n this.setChecked(this.checked);\r\n this.radios.updateValueFromRadioItems();\r\n } else if (this.lastValue !== undefined && this.lastValue !== this.value) {\r\n this.radios.updateValueFromRadioItems();\r\n }\r\n this.lastValue = this.value;\r\n\r\n if (this.id !== this.radioId) {\r\n this.radios.markForUpdateCheckboxIds();\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.setChecked(this.checked);\r\n this.radios.updateValueFromRadioItems();\r\n }\r\n\r\n setChecked(checked: boolean): void {\r\n this.checked = checked;\r\n this.lastChecked = checked;\r\n this.checkedChange.emit(checked);\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n /*\r\n * Funciones para aportar información desde el componente checkboxes que lo contiene\r\n */\r\n\r\n getItemHintId(): string {\r\n return this.hintComponentList && this.hintComponentList.length > 0 && this.radioId ? this.radioId + '-item-hint' : null;\r\n }\r\n\r\n hasChanged(): void {\r\n this.setChecked(this.isInputChecked());\r\n this.radios.updateValueFromRadioItems();\r\n }\r\n\r\n isInit(): boolean {\r\n return !!this.inputElement;\r\n }\r\n\r\n isInputChecked(): boolean {\r\n return this.inputElement ? this.inputElement.nativeElement.checked : null;\r\n }\r\n\r\n updateRadioId(index?: number): void {\r\n if (this.id) {\r\n this.radioId = this.id;\r\n } else {\r\n const idPrefix = this.radios.idPrefix ? this.radios.idPrefix : this.radios.name;\r\n if (index === 0) {\r\n this.radioId = idPrefix;\r\n } else {\r\n this.radioId = `${idPrefix}-${index}`;\r\n }\r\n }\r\n\r\n if (this.labelComponentList && this.labelComponentList.length > 0) {\r\n this.labelComponentList.first.for = this.radioId;\r\n }\r\n\r\n if (this.hintComponentList && this.hintComponentList.length > 0) {\r\n this.hintComponentList.first.id = this.getItemHintId();\r\n }\r\n\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n /*\r\n * Funciones para aportar información desde el componente checkboxes que lo contiene\r\n */\r\n\r\n hasDividers(): boolean {\r\n return this.radios.hasDividers;\r\n }\r\n\r\n hasError(): boolean {\r\n return this.radios.hasErrorsMessage();\r\n }\r\n\r\n getNameRadio(): string {\r\n return this.radios.name;\r\n }\r\n\r\n getDescribedBy(): string {\r\n return !this.radios.hasFieldset() ? this.radios.describedBy : null;\r\n }\r\n\r\n}\r\n","import {\r\n AfterContentInit,\r\n Component,\r\n ContentChildren,\r\n DoCheck,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n Output,\r\n QueryList,\r\n TemplateRef, ViewChild,\r\n ViewChildren\r\n} from '@angular/core';\r\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport {FieldsetData, ItemRadioData, LegendData} from '../../interfaces';\r\nimport {LegendComponent} from '../fieldset/legend/legend.component';\r\nimport {FormFieldComponent} from '../form-field/form-field.component';\r\nimport {RadioItemComponent} from './radio-item/radio-item.component';\r\nimport {FieldsetComponent} from '../fieldset/fieldset.component';\r\nimport {MakeHtmlListPipe} from '../../../shared/pipes/make-html-list.pipe';\r\nimport {HintComponent} from '../hint/hint.component';\r\nimport {ErrorMessageComponent} from '../error-message/error-message.component';\r\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\r\nimport {DesyOnInputChange} from '../../../shared/decorators/desy-on-input-change.decorator';\r\n\r\n@Component({\r\n selector: 'desy-radios',\r\n templateUrl: './radios.component.html',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => RadiosComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class RadiosComponent extends FormFieldComponent<any> implements DoCheck, AfterContentInit {\r\n\r\n\r\n /**\r\n * fieldset, diferentes formas de implementar, enumeradas por prioridad\r\n * 1) incluir componente FieldsetComponent\r\n * 2) incluir objeto FieldsetData (interfaz expuesta)\r\n * 3) incluir componente LegendComponent\r\n * 4) incluir template legend\r\n * 5) incluir legendData - incluir un fieldset con una legenda con los parametros pasados (interfaz expuesta)\r\n * 6) incluir legendText - incluir un fieldset con un texto en la legenda\r\n */\r\n @Input() fieldsetData: FieldsetData;\r\n @Input() legendRef: TemplateRef<LegendComponent>;\r\n @Input() legendData: LegendData;\r\n @Input() legendText: string;\r\n\r\n @DesyOnInputChange('onIdPrefixChange')\r\n @Input() idPrefix: string;\r\n\r\n @DesyOnInputChange('onNameChange')\r\n @Input() name: string;\r\n\r\n @Input() items: ItemRadioData[];\r\n @Output() itemsChange = new EventEmitter<ItemRadioData[]>();\r\n\r\n @Input() formGroupClasses: string;\r\n @Input() hasDividers: boolean;\r\n @Input() hasError: boolean;\r\n @Input() classes: string;\r\n @Input() describedBy: string;\r\n\r\n @DesyContentChild({ onSetCallbackName: 'overrideFieldsetParams'})\r\n @ContentChildren(FieldsetComponent) fieldsetComponent: FieldsetComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(LegendComponent) legendComponent: LegendComponent;\r\n\r\n @ContentChildren(RadioItemComponent) radioComponentItems: QueryList<RadioItemComponent>;\r\n\r\n @ViewChild('innerHtml', { static: true }) innerHtml: TemplateRef<any>;\r\n @ViewChildren(RadioItemComponent) radioComponentItems2: QueryList<RadioItemComponent>;\r\n\r\n private nextValue = null;\r\n private updateChekboxIds = false;\r\n private contentInit = false;\r\n\r\n ngDoCheck(): void {\r\n if (this.nextValue !== null && (this.nextValue !== '' || (this.value && this.value !== ''))) {\r\n this.value = this.nextValue;\r\n this.nextValue = null;\r\n const updateItems = this.updateRadioItemsChecked();\r\n setTimeout(() => {\r\n this.onChange(this.value);\r\n if (updateItems && this.items && this.items.length > 0) {\r\n this.itemsChange.emit(this.items);\r\n }\r\n });\r\n }\r\n\r\n if (this.updateChekboxIds) {\r\n const checkboxItems = this.getRadioItems();\r\n if (checkboxItems.length > 0) {\r\n checkboxItems.forEach((item, index) => item.updateRadioId(index));\r\n } else {\r\n throw Error('items are required');\r\n }\r\n this.updateChekboxIds = false;\r\n }\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n if (!this.name) {\r\n throw Error('name is required');\r\n }\r\n\r\n this.contentInit = true;\r\n }\r\n\r\n /**\r\n * Se sobrescribe el writeValue de FormField para gestionar en un único punto el valor de value\r\n * @param value nuevo valor a establecer\r\n */\r\n writeValue(value: any[]): void {\r\n if (value) {\r\n this.nextValue = value;\r\n }\r\n }\r\n\r\n onIdPrefixChange(): void {\r\n if (this.contentInit) {\r\n this.markForUpdateCheckboxIds();\r\n }\r\n this.propagateNewIdPrefixValue();\r\n }\r\n\r\n\r\n onNameChange(): void {\r\n if (this.contentInit && !this.name) {\r\n throw Error('name is required');\r\n }\r\n\r\n if (this.contentInit) {\r\n this.markForUpdateCheckboxIds();\r\n }\r\n\r\n this.propagateNewIdPrefixValue();\r\n }\r\n\r\n /**\r\n * Actualiza los componentes externos que tienen valores dependientes de idPrefix\r\n * @private\r\n */\r\n private propagateNewIdPrefixValue(): void {\r\n if (this.hintComponent) {\r\n this.overrideHintParams(this.hintComponent);\r\n }\r\n\r\n if (this.errorMessageComponent) {\r\n this.overrideErrorMessageParams(this.errorMessageComponent);\r\n }\r\n\r\n // Al hacer el override de hint o error ya se aplica sobre el fieldset, por lo que sólo es necesario aplicarlo directamente\r\n // sobre el fieldset cuando ninguno de estos existe\r\n if (!this.hintComponent && !this.errorMessageComponent && this.fieldsetComponent) {\r\n this.overrideFieldsetParams(this.fieldsetComponent);\r\n }\r\n }\r\n\r\n markForUpdateCheckboxIds(): void {\r\n this.updateChekboxIds = true;\r\n }\r\n\r\n /**\r\n * Actualiza el estado de los items según el valor asignado al componente\r\n */\r\n private updateRadioItemsChecked(): boolean {\r\n let itemsUpdated = false;\r\n const checkboxItems = this.getRadioItems();\r\n if (checkboxItems.length > 0) {\r\n checkboxItems.forEach(item => {\r\n if (item.value === this.value && !item.lastChecked) {\r\n item.setChecked(true);\r\n itemsUpdated = true;\r\n } else if (item.value !== this.value && item.lastChecked) {\r\n item.setChecked(false);\r\n itemsUpdated = true;\r\n }\r\n });\r\n }\r\n return itemsUpdated;\r\n }\r\n\r\n /**\r\n * Actualiza el valor cuando se produce un cambio en los items, tanto interno como externo\r\n */\r\n updateValueFromRadioItems(): void {\r\n\r\n /*\r\n * Se realiza dentro de un timeout porque, aunque los componentes items se hayan inicializado, en este componente puede ser que todavía\r\n * no se detecten, y por tanto el getCheckboxItems no devuelva la lista correcta.\r\n */\r\n setTimeout( () => {\r\n const items = this.getRadioItems();\r\n if (items && items.length > 0 && items.findIndex(item => !item.isInit() && !item.divider) < 0) {\r\n const checkedItem = items.find(item => item.isInputChecked() && !item.divider);\r\n this.nextValue = checkedItem ? checkedItem.value : null;\r\n }\r\n });\r\n\r\n if (this.items && this.items.length > 0) {\r\n this.itemsChange.emit(this.items);\r\n }\r\n }\r\n\r\n /*\r\n * Funciones para reemplazar el contenido del fieldset, label, hint o errormessage\r\n */\r\n\r\n overrideFieldsetParams(fieldset: FieldsetComponent): void {\r\n fieldset.caller = this.innerHtml;\r\n fieldset.errorId = this.getErrorId();\r\n fieldset.describedBy = new MakeHtmlListPipe().transform([this.getHintId(), this.getErrorId()], null);\r\n fieldset.detectChanges();\r\n }\r\n\r\n overrideHintParams(hint: HintComponent): void {\r\n hint.id = this.getHintId();\r\n hint.detectChanges();\r\n\r\n if (this.hasFieldsetComponent()) {\r\n this.overrideFieldsetParams(this.fieldsetComponent);\r\n }\r\n }\r\n\r\n overrideErrorMessageParams(errorMessage: ErrorMessageComponent): void {\r\n errorMessage.id = this.getErrorId();\r\n errorMessage.detectChanges();\r\n\r\n if (this.hasFieldsetComponent()) {\r\n this.overrideFieldsetParams(this.fieldsetComponent);\r\n }\r\n }\r\n\r\n onDeleteHint(): void {\r\n if (this.hasFieldsetComponent()) {\r\n this.overrideFieldsetParams(this.fieldsetComponent);\r\n }\r\n }\r\n\r\n onDeleteErrorMessage(): void {\r\n if (this.hasFieldsetComponent()) {\r\n this.overrideFieldsetParams(this.fieldsetComponent);\r\n }\r\n }\r\n\r\n\r\n /*\r\n * Funciones para recuperar valores comunes\r\n */\r\n\r\n hasFieldset(): boolean {\r\n return !!(this.hasFieldsetComponent() || this.hasLegendComponent() || this.legendRef || this.fieldsetData ||\r\n (this.legendData && (this.legendData.text || this.legendData.html)) || this.legendText);\r\n }\r\n\r\n hasFieldsetComponent(): boolean {\r\n return !!this.fieldsetComponent;\r\n }\r\n\r\n hasLegendComponent(): boolean {\r\n return !!this.legendComponent;\r\n }\r\n\r\n getErrorId(): string {\r\n return this.hasErrorsMessage() ? this.getIdPrefix() + '-error' : null;\r\n }\r\n\r\n getHintId(): string {\r\n return this.hasHint() ? this.getIdPrefix() + '-hint' : null;\r\n }\r\n\r\n getIdPrefix(): string {\r\n return this.idPrefix ? this.idPrefix : this.name;\r\n }\r\n\r\n getRadioItems(): RadioItemComponent[] {\r\n let checkboxItems = [];\r\n if (this.radioComponentItems && this.radioComponentItems.length > 0) {\r\n checkboxItems = this.radioComponentItems.toArray();\r\n } else if (this.radioComponentItems2 && this.radioComponentItems2.length > 0) {\r\n checkboxItems = this.radioComponentItems2.toArray();\r\n }\r\n return checkboxItems;\r\n }\r\n}\r\n","import {\r\n AfterViewInit, ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n ElementRef,\r\n EventEmitter,\r\n Host,\r\n Input, OnChanges, OnDestroy, OnInit,\r\n Output, QueryList, SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {ItemCheckboxData} from '../../../interfaces';\r\nimport {ContentComponent} from '../../../../desy-commons/components/content/content.component';\r\nimport {animate, animateChild, query, state, style, transition, trigger} from '@angular/animations';\r\nimport {LabelComponent} from '../../label/label.component';\r\nimport {HintComponent} from '../../hint/hint.component';\r\nimport {CheckboxesComponent} from '../checkboxes.component';\r\nimport {AccessibilityComponent} from '../../../../shared/components';\r\nimport {DesyOnInputChange} from \"../../../../shared/decorators/desy-on-input-change.decorator\";\r\n\r\n@Component({\r\n selector: 'desy-checkbox-item',\r\n templateUrl: './checkbox-item.component.html',\r\n animations: [\r\n trigger('displayConditional', [\r\n state('void', style({\r\n opacity: '0.0',\r\n transform: 'scale(0.95)'\r\n })),\r\n state('*', style({\r\n opacity: '1.0',\r\n transform: 'scale(1.0)'\r\n })),\r\n transition(':enter', [\r\n animate('100ms ease-out')\r\n ]),\r\n transition('* => *', [\r\n query('@*', animateChild(), {optional: true})\r\n ])\r\n ])\r\n ]\r\n})\r\nexport class CheckboxItemComponent extends AccessibilityComponent implements OnInit, OnDestroy, OnChanges, AfterViewInit, ItemCheckboxData {\r\n\r\n @ViewChild('input') inputElement: ElementRef;\r\n\r\n @Input() id: string;\r\n @Input() value: any;\r\n @Input() name: string;\r\n @Input() conditional: boolean;\r\n @Input() disabled: boolean;\r\n @Input() isIndeterminate: boolean;\r\n\r\n @DesyOnInputChange('setIndeterminateStatus')\r\n @Input() indeterminateChecked: boolean;\r\n @Input() classes: string;\r\n\r\n @ContentChildren(LabelComponent) labelComponentList: QueryList<LabelComponent>;\r\n @ContentChildren(HintComponent) hintComponentList: QueryList<HintComponent>;\r\n @ContentChildren(ContentComponent) conditionalContentList: QueryList<ContentComponent>;\r\n\r\n @Input() checked: boolean;\r\n\r\n @Output() checkedChange: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() indeterminateChange: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n lastChecked;\r\n lastIndeterminate;\r\n lastValue;\r\n checkboxId;\r\n\r\n constructor(@Host() private checkboxes: CheckboxesComponent, private changeDetectorRef: ChangeDetectorRef) {\r\n super();\r\n if (!this.checkboxes) {\r\n throw Error('Checkbox items must be inside of CheckboxesComponent');\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.checkboxes.markForUpdateCheckboxIds();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.checkboxes.markForUpdateCheckboxIds();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.value) {\r\n throw Error('value is required for checkbox item');\r\n }\r\n\r\n if (this.checked !== this.lastChecked && this.isInit()) {\r\n this.setChecked(this.checked);\r\n this.checkboxes.updateValueFromCheckboxItems();\r\n } else if (this.lastValue !== undefined && this.lastValue !== this.value) {\r\n this.checkboxes.updateValueFromCheckboxItems();\r\n }\r\n\r\n if(this.indeterminateChecked !== this.lastIndeterminate && this.isInit()){\r\n this.setIndeterminateChecked(this.indeterminateChecked);\r\n this.checkboxes.updateValueFromCheckboxItems();\r\n }\r\n\r\n\r\n this.lastValue = this.value;\r\n\r\n if (this.id !== this.checkboxId) {\r\n this.checkboxes.markForUpdateCheckboxIds();\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.setChecked(this.checked);\r\n this.setIndeterminateChecked(this.indeterminateChecked);\r\n this.checkboxes.updateValueFromCheckboxItems();\r\n }\r\n\r\n getItemHintId(): string {\r\n return this.hintComponentList && this.hintComponentList.length > 0 && this.checkboxId ? this.checkboxId + '-item-hint' : null;\r\n }\r\n\r\n hasChanged(): void {\r\n // Se establece el cambio a visualizar en el input\r\n const input = this.inputElement.nativeElement;\r\n if (this.isIndeterminate) {\r\n if (input.readOnly) {\r\n input.checked = false;\r\n input.readOnly = false;\r\n } else if (!input.checked) {\r\n input.readOnly = true;\r\n input.indeterminate = true;\r\n }\r\n }\r\n this.setChecked(input.checked);\r\n this.setIndeterminateChecked(input.indeterminate);\r\n this.checkboxes.updateValueFromCheckboxItems();\r\n }\r\n\r\n setChecked(checked: boolean): void {\r\n this.checked = checked;\r\n this.lastChecked = checked;\r\n this.checkedChange.emit(checked);\r\n this.changeDetectorRef.detectChanges(); // Avisa al elemento input para que actualice su estado\r\n }\r\n\r\n setIndeterminateChecked(indeterminateChecked: boolean): void {\r\n this.indeterminateChecked = indeterminateChecked;\r\n this.lastIndeterminate = indeterminateChecked;\r\n this.indeterminateChange.emit(indeterminateChecked);\r\n this.changeDetectorRef.detectChanges(); // Avisa al elemento input para que actualice su estado\r\n }\r\n\r\n setIndeterminateStatus(): void {\r\n const input = this.inputElement?.nativeElement;\r\n if (input) {\r\n if (this.indeterminateChecked) {\r\n input.readOnly = true;\r\n input.indeterminate = true;\r\n } else if (input.readOnly) {\r\n input.readOnly = false;\r\n input.indeterminate = false;\r\n }\r\n }\r\n }\r\n\r\n isInit(): boolean {\r\n return !!this.inputElement;\r\n }\r\n\r\n getValue(): any {\r\n const input = this.inputElement.nativeElement;\r\n return input.checked || input.indeterminate ? this.value : null;\r\n }\r\n\r\n updateCheckboxId(index?: number): void {\r\n if (this.id) {\r\n this.checkboxId = this.id;\r\n } else {\r\n const idPrefix = this.checkboxes.idPrefix ? this.checkboxes.idPrefix : this.checkboxes.name;\r\n if (index === 0) {\r\n this.checkboxId = idPrefix;\r\n } else {\r\n this.checkboxId = `${idPrefix}-${index}`;\r\n }\r\n }\r\n\r\n if (this.labelComponentList && this.labelComponentList.length > 0) {\r\n this.labelComponentList.first.for = this.checkboxId;\r\n }\r\n\r\n if (this.hintComponentList && this.hintComponentList.length > 0) {\r\n this.hintComponentList.first.id = this.getItemHintId();\r\n }\r\n\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n /*\r\n * Funciones para aportar información desde el componente checkboxes que lo contiene\r\n */\r\n\r\n hasDividers(): boolean {\r\n return this.checkboxes.hasDividers;\r\n }\r\n\r\n hasError(): boolean {\r\n return this.checkboxes.hasErrorsMessage();\r\n }\r\n\r\n getNameCheckbox(): string {\r\n return this.checkboxes.name;\r\n }\r\n\r\n getDescribedBy(): string {\r\n return !this.checkboxes.hasFieldset() ? this.checkboxes.describedBy : null;\r\n }\r\n}\r\n","import {\r\n AfterContentInit,\r\n Component,\r\n ContentChildren, DoCheck, EventEmitter,\r\n forwardRef,\r\n Input, Output,\r\n QueryList,\r\n TemplateRef, ViewChild, ViewChildren\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { FormFieldComponent } from '../form-field/form-field.component';\r\nimport { FieldsetData, LegendData, ItemCheckboxData } from '../../interfaces';\r\nimport { LegendComponent } from '../fieldset/legend/legend.component';\r\nimport {CheckboxItemComponent} from './checkbox-item/checkbox-item.component';\r\nimport {HintComponent} from '../hint/hint.component';\r\nimport {ErrorMessageComponent} from '../error-message/error-message.component';\r\nimport {FieldsetComponent} from '../fieldset/fieldset.component';\r\nimport {MakeHtmlListPipe} from '../../../shared/pipes/make-html-list.pipe';\r\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\r\nimport {DesyOnInputChange} from '../../../shared/decorators/desy-on-input-change.decorator';\r\n\r\n\r\n@Component({\r\n selector: 'desy-checkboxes',\r\n templateUrl: './checkboxes.component.html',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CheckboxesComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class CheckboxesComponent extends FormFieldComponent<any[]> implements AfterContentInit, DoCheck {\r\n\r\n /**\r\n * fieldset, diferentes formas de implementar, enumeradas por prioridad\r\n * 1) incluir componente FieldsetComponent\r\n * 2) incluir objeto FieldsetData (interfaz expuesta)\r\n * 3) incluir componente LegendComponent\r\n * 4) incluir template legend\r\n * 5) incluir legendData - incluir un fieldset con una legenda con los parametros pasados (interfaz expuesta)\r\n * 6) incluir legendText - incluir un fieldset con un texto en la legenda\r\n */\r\n @Input() fieldsetData: FieldsetData;\r\n @Input() legendRef: TemplateRef<LegendComponent>;\r\n @Input() legendData: LegendData;\r\n @Input() legendText: string;\r\n\r\n @DesyOnInputChange('onIdPrefixChange')\r\n @Input() idPrefix: string;\r\n\r\n @DesyOnInputChange('onNameChange')\r\n @Input() name: string;\r\n\r\n @Input() items: ItemCheckboxData[];\r\n @Output() itemsChange = new EventEmitter<ItemCheckboxData[]>();\r\n\r\n @Input() formGroupClasses: string;\r\n @Input() hasDividers: boolean;\r\n @Input() hasError: boolean;\r\n @Input() classes: string;\r\n @Input() describedBy: string;\r\n\r\n @DesyContentChild({ onSetCallbackName: 'overrideFieldsetParams'})\r\n @ContentChildren(FieldsetComponent) fieldsetComponent: FieldsetComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(LegendComponent) legendComponent: LegendComponent;\r\n\r\n @ContentChildren(CheckboxItemComponent) checkboxComponentItems: QueryList<CheckboxItemComponent>;\r\n\r\n @ViewChild('innerHtml', { static: true }) innerHtml: TemplateRef<any>;\r\n @ViewChildren(CheckboxItemComponent) checkboxComponentItems2: QueryList<CheckboxItemComponent>;\r\n\r\n private nextValue = null;\r\n private updateChekboxIds = false;\r\n private contentInit = false;\r\n\r\n ngDoCheck(): void {\r\n if (this.nextValue !== null && (this.nextValue.length > 0 || (this.value && this.value.length > 0))) {\r\n this.value = this.nextValue;\r\n this.nextValue = null;\r\n this.updateCheckboxItemsChecked();\r\n setTimeout(() => {\r\n this.onChange(this.value);\r\n if (this.items && this.items.length > 0) {\r\n this.itemsChange.emit(this.items);\r\n }\r\n });\r\n }\r\n\r\n if (this.updateChekboxIds) {\r\n const checkboxItems = this.getCheckboxItems();\r\n if (checkboxItems.length > 0) {\r\n checkboxItems.forEach((item, index) => item.updateCheckboxId(index));\r\n } else {\r\n throw Error('items are required');\r\n }\r\n this.updateChekboxIds = false;\r\n }\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n if (!this.name) {\r\n throw Error('name is required');\r\n }\r\n\r\n this.contentInit = true;\r\n }\r\n\r\n /**\r\n * Se sobrescribe el writeValue de FormField para gestionar en un único punto el valor de value\r\n * @param value nuevo valor a establecer\r\n */\r\n writeValue(value: any[]): void {\r\n if (value) {\r\n this.nextValue = value;\r\n }\r\n }\r\n\r\n onIdPrefixChange(): void {\r\n if (this.contentInit) {\r\n this.markForUpdateCheckboxIds();\r\n }\r\n this.propagateNewIdPrefixValue();\r\n }\r\n\r\n\r\n onNameChange(): void {\r\n if (this.contentInit && !this.name) {\r\n throw Error('name is required');\r\n }\r\n\r\n if (this.contentInit) {\r\n this.markForUpdateCheckboxIds();\r\n }\r\n\r\n this.propagateNewIdPrefixValue();\r\n }\r\n\r\n /**\r\n * Actualiza los componentes externos que tienen valores dependientes de idPrefix\r\n * @private\r\n */\r\n private propagateNewIdPrefixValue(): void {\r\n if (this.hintComponent) {\r\n this.overrideHintParams(this.hintComponent);\r\n }\r\n\r\n if (this.errorMessageComponent) {\r\n this.overrideErrorMessageParams(this.errorMessageComponent);\r\n }\r\n\r\n // Al hacer el override de hint o error ya se aplica sobre el fieldset, por lo que sólo es necesario aplicarlo directamente\r\n // sobre el fieldset cuando ninguno de estos existe\r\n if (!this.hintComponent && !this.errorMessageComponent && this.fieldsetComponent) {\r\n this.overrideFieldsetParams(this.fieldsetComponent);\r\n }\r\n }\r\n\r\n markForUpdateCheckboxIds(): void {\r\n this.updateChekboxIds = true;\r\n }\r\n\r\n\r\n /**\r\n * Actualiza el estado de los items según el valor asignado al componente\r\n */\r\n private updateCheckboxItemsChecked(): void {\r\n const checkboxItems = this.getCheckboxItems();\r\n if (checkboxItems.length > 0) {\r\n checkboxItems.forEach(item => {\r\n const itemChecked = this.value.findIndex(v => v === item.value) > -1;\r\n if (itemChecked !== item.lastChecked) {\r\n item.setChecked(itemChecked);\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Actualiza el valor cuando se produce un cambio en los items, tanto interno como externo\r\n */\r\n updateValueFromCheckboxItems(): void {\r\n\r\n /*\r\n * Se realiza dentro de un timeout porque, aunque los componentes items se hayan inicializado, en este componente puede ser que todavía\r\n * no se detecten, y por tanto el getCheckboxItems no devuelva la lista correcta.\r\n */\r\n setTimeout( () => {\r\n const items = this.getCheckboxItems();\r\n if (items && items.length > 0 && items.findIndex(item => !item.isInit()) < 0) {\r\n this.nextValue = items.filter(item => item.checked).map(item => item.getValue());\r\n }\r\n });\r\n\r\n if (this.items && this.items.length > 0) {\r\n this.itemsChange.emit(this.items);\r\n }\r\n }\r\n\r\n /*\r\n * Funciones para reemplazar el contenido del fieldset, label, hint o errormessage\r\n */\r\n\r\n overrideFieldsetParams(fieldset: FieldsetComponent): void {\r\n fieldset.caller = this.innerHtml;\r\n fieldset.errorId = this.getErrorId();\r\n fieldset.describedBy = new MakeHtmlListPipe().transform([this.getHintId(), this.getErrorId()], null);\r\n fieldset.detectChanges();\r\n }\r\n\r\n overrideHintParams(hint: HintComponent): void {\r\n hint.id = this.getHintId();\r\n hint.detectChanges();\r\n\r\n if (this.hasFieldsetComponent()) {\r\n this.overrideFieldsetParams(this.fieldsetComponent);\r\n }\r\n }\r\n\r\n overrideErrorMessageParams(errorMessage: ErrorMessageComponent): void {\r\n errorMessage.id = this.getErrorId();\r\n errorMessage.detectChanges();\r\n\r\n if (this.hasFieldsetComponent()) {\r\n this.overrideFieldsetParams(this.fieldsetComponent);\r\n }\r\n }\r\n\r\n onDeleteHint(): void {\r\n if (this.hasFieldsetComponent()) {\r\n this.overrideFieldsetParams(this.fieldsetComponent);\r\n }\r\n }\r\n\r\n onDeleteErrorMessage(): void {\r\n if (this.hasFieldsetComponent()) {\r\n this.overrideFieldsetParams(this.fieldsetComponent);\r\n }\r\n }\r\n\r\n\r\n /*\r\n * Funciones para recuperar valores comunes\r\n */\r\n\r\n\r\n hasFieldset(): boolean {\r\n return !!(this.hasFieldsetComponent() || this.hasLegendComponent() || this.legendRef || this.fieldsetData ||\r\n (this.legendData && (this.legendData.text || this.legendData.html)) || this.legendText);\r\n }\r\n\r\n hasFieldsetComponent(): boolean {\r\n return !!this.fieldsetComponent;\r\n }\r\n\r\n hasLegendComponent(): boolean {\r\n return !!this.legendComponent;\r\n }\r\n\r\n getErrorId(): string {\r\n return this.hasErrorsMessage() ? this.getIdPrefix() + '-error' : undefined;\r\n }\r\n\r\n getHintId(): string {\r\n return this.hasHint() ? this.getIdPrefix() + '-hint' : undefined;\r\n }\r\n\r\n getIdPrefix(): string {\r\n return this.idPrefix ? this.idPrefix : this.name;\r\n }\r\n\r\n getCheckboxItems(): CheckboxItemComponent[] {\r\n let checkboxItems = [];\r\n if (this.checkboxComponentItems && this.checkboxComponentItems.length > 0) {\r\n checkboxItems = this.checkboxComponentItems.toArray();\r\n } else if (this.checkboxComponentItems2 && this.checkboxComponentItems2.length > 0) {\r\n checkboxItems = this.checkboxComponentItems2.toArray();\r\n }\r\n return checkboxItems;\r\n }\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {ItemDateInputData} from '../../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-date-input-item',\r\n template: ''\r\n})\r\nexport class DateInputItemComponent implements ItemDateInputData {\r\n @Input() classes?: string;\r\n\r\n}\r\n","import {AfterContentInit, Component, ContentChildren, EventEmitter, forwardRef, Input, Output, TemplateRef, ViewChild} from '@angular/core';\r\nimport { ItemDateInputData } from '../../../interfaces';\r\nimport { LabelData } from '../../../interfaces';\r\nimport {DesyContentChild} from '../../../../shared/decorators/desy-content-child.decorator';\r\nimport {LabelComponent} from '../../label/label.component';\r\nimport { DateInputItemComponent } from '../date-input-item/date-input-item.component';\r\n\r\n@Component({\r\n selector: 'desy-input-day',\r\n templateUrl: './date-input-day.component.html',\r\n providers: [{provide: DateInputItemComponent, useExisting: forwardRef(() => DateInputDayComponent)}],\r\n})\r\nexport class DateInputDayComponent extends DateInputItemComponent implements ItemDateInputData, AfterContentInit {\r\n @Input() id: string;\r\n @Input() name: string;\r\n @Input() labelText: string;\r\n @Input() labelData: LabelData;\r\n @Input() disabled: boolean;\r\n @Input() hasErrors: boolean;\r\n @Input() value: any;\r\n @Input() autocomplete: string;\r\n @Input() pattern: string;\r\n @Input() classes: string;\r\n @Input() maxlength: number;\r\n\r\n @Output() valueChange: EventEmitter<number> = new EventEmitter<number>();\r\n\r\n @DesyContentChild()\r\n @ContentChildren(LabelComponent) labelComponent: LabelComponent;\r\n\r\n @ViewChild('label', { static: true }) labelRef: TemplateRef<any>;\r\n\r\n ngAfterContentInit(): void {\r\n if (!this.name) {\r\n throw Error('day name is required');\r\n }\r\n if (!this.labelComponent) {\r\n throw Error('day label is required');\r\n }\r\n }\r\n}\r\n","import {AfterContentInit, Component, ContentChildren, EventEmitter, forwardRef, Input, Output, TemplateRef, ViewChild} from '@angular/core';\r\nimport { ItemDateInputData } from '../../../interfaces';\r\nimport { LabelData } from '../../../interfaces';\r\nimport {DesyContentChild} from '../../../../shared/decorators/desy-content-child.decorator';\r\nimport {LabelComponent} from '../../label/label.component';\r\nimport { DateInputItemComponent } from '../date-input-item/date-input-item.component';\r\n\r\n@Component({\r\n selector: 'desy-input-month',\r\n templateUrl: './date-input-month.component.html',\r\n providers: [{provide: DateInputItemComponent, useExisting: forwardRef(() => DateInputMonthComponent)}],\r\n})\r\nexport class DateInputMonthComponent extends DateInputItemComponent implements ItemDateInputData, AfterContentInit {\r\n @Input() id: string;\r\n @Input() name: string;\r\n @Input() labelText: string;\r\n @Input() labelData: LabelData;\r\n @Input() disabled: boolean;\r\n @Input() hasErrors: boolean;\r\n @Input() value: any;\r\n @Input() autocomplete: string;\r\n @Input() pattern: string;\r\n @Input() classes: string;\r\n @Input() maxlength: number;\r\n\r\n @Output() valueChange: EventEmitter<number> = new EventEmitter<number>();\r\n\r\n @DesyContentChild()\r\n @ContentChildren(LabelComponent) labelComponent: LabelComponent;\r\n\r\n @ViewChild('label', { static: true }) labelRef: TemplateRef<any>;\r\n\r\n ngAfterContentInit(): void {\r\n if (!this.name) {\r\n throw Error('month name is required');\r\n }\r\n if (!this.labelComponent) {\r\n throw Error('month label is required');\r\n }\r\n }\r\n}\r\n","import {AfterContentInit, Component, ContentChildren, EventEmitter, forwardRef, Input, Output, TemplateRef, ViewChild} from '@angular/core';\r\nimport { ItemDateInputData } from '../../../interfaces';\r\nimport {DesyContentChild} from '../../../../shared/decorators/desy-content-child.decorator';\r\nimport {LabelComponent} from '../../label/label.component';\r\nimport { DateInputItemComponent } from '../date-input-item/date-input-item.component';\r\n\r\n@Component({\r\n selector: 'desy-input-year',\r\n templateUrl: './date-input-year.component.html',\r\n providers: [{provide: DateInputItemComponent, useExisting: forwardRef(() => DateInputYearComponent)}],\r\n})\r\nexport class DateInputYearComponent extends DateInputItemComponent implements ItemDateInputData, AfterContentInit {\r\n @Input() id: string;\r\n @Input() name: string;\r\n @Input() disabled: boolean;\r\n @Input() hasErrors: boolean;\r\n @Input() value: any;\r\n @Input() autocomplete: string;\r\n @Input() pattern: string;\r\n @Input() classes: string;\r\n @Input() maxlength: number;\r\n\r\n @Output() valueChange: EventEmitter<number> = new EventEmitter<number>();\r\n\r\n @DesyContentChild()\r\n @ContentChildren(LabelComponent) labelComponent: LabelComponent;\r\n\r\n @ViewChild('label', { static: true }) labelRef: TemplateRef<any>;\r\n\r\n ngAfterContentInit(): void {\r\n if (!this.name) {\r\n throw Error('year name is required');\r\n }\r\n if (!this.labelComponent) {\r\n throw Error('year label is required');\r\n }\r\n }\r\n}\r\n","import {Component, forwardRef, TemplateRef, ViewChild} from '@angular/core';\r\nimport { ItemDividerDateInputData } from '../../../interfaces/item-divider-date-input-data';\r\nimport { DateInputItemComponent } from '../date-input-item/date-input-item.component';\r\n\r\n@Component({\r\n selector: 'desy-date-input-divider',\r\n templateUrl: './date-input-divider.component.html',\r\n providers: [{provide: DateInputItemComponent, useExisting: forwardRef(() => DateInputDividerComponent)}],\r\n})\r\nexport class DateInputDividerComponent extends DateInputItemComponent implements ItemDividerDateInputData {\r\n\r\n divider = this;\r\n\r\n @ViewChild('dividerContent', { static: true }) dividerContent: TemplateRef<any>;\r\n}\r\n","import {\r\n AfterContentInit,\r\n Component,\r\n ContentChildren, EventEmitter,\r\n forwardRef,\r\n Input,\r\n OnChanges,\r\n Optional, Output,\r\n QueryList,\r\n TemplateRef,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { ControlContainer, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { FormFieldComponent } from '../form-field/form-field.component';\r\nimport { FieldsetData, LegendData, ItemDateInputData, LabelData } from '../../interfaces';\r\nimport { LegendComponent } from '../fieldset/legend/legend.component';\r\nimport { FieldsetComponent } from '../fieldset/fieldset.component';\r\nimport { DesyContentChild } from '../../../shared/decorators/desy-content-child.decorator';\r\nimport { DateInputDayComponent } from './date-input-day/date-input-day.component';\r\nimport { DateInputMonthComponent } from './date-input-month/date-input-month.component';\r\nimport { DateInputYearComponent } from './date-input-year/date-input-year.component';\r\nimport {MakeHtmlListPipe} from '../../../shared/pipes/make-html-list.pipe';\r\nimport {DesyOnInputChange} from '../../../shared/decorators/desy-on-input-change.decorator';\r\nimport { DateInputDividerComponent } from './date-input-divider/date-input-divider.component';\r\nimport { StringUtils } from '../../../shared/utils/string-utils';\r\nimport { DateInputItemComponent } from './date-input-item/date-input-item.component';\r\n\r\n@Component({\r\n selector: 'desy-date-input',\r\n templateUrl: './date-input.component.html',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => DateInputComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class DateInputComponent extends FormFieldComponent<any> implements OnChanges, AfterContentInit {\r\n\r\n private static defaultItems = [\r\n {\r\n name: 'day',\r\n classes: 'w-14',\r\n maxlength: 2\r\n },\r\n {\r\n name: 'month',\r\n classes: 'w-14',\r\n maxlength: 2\r\n },\r\n {\r\n name: 'year',\r\n classes: 'w-20',\r\n maxlength: 4\r\n }\r\n ];\r\n\r\n @Input() ngModelGroup: string;\r\n\r\n @DesyOnInputChange('onExternalChange')\r\n @Input() items: ItemDateInputData[];\r\n @Output() itemsChange: EventEmitter<ItemDateInputData[]> = new EventEmitter<ItemDateInputData[]>();\r\n\r\n @DesyOnInputChange('onExternalChange')\r\n @Input() namePrefix: string;\r\n @Input() classes: string;\r\n @Input() formGroupClasses: any;\r\n @Input() errorMessage: string;\r\n @Input() id: string;\r\n\r\n @DesyContentChild({ onSetCallbackName: 'overrideFieldsetParams'})\r\n @ContentChildren(FieldsetComponent) fieldsetComponent: FieldsetComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(LegendComponent) legendComponent: LegendComponent;\r\n\r\n @ContentChildren(DateInputItemComponent) dateInputItemComponents: QueryList<DateInputItemComponent>;\r\n\r\n /**\r\n * fieldset, diferentes formas de implementar, enumeradas por prioridad\r\n * 1) incluir objeto FieldsetData (interfaz expuesta)\r\n * 2) incluir template legend\r\n * 3) incluir legendData - incluir un fieldset con una legenda con los parametros pasados (interfaz expuesta)\r\n * 4) incluir legendText - incluir un fieldset con un texto en la legenda\r\n */\r\n @Input() fieldsetData: FieldsetData;\r\n @Input() legendRef: TemplateRef<LegendComponent>;\r\n @Input() legendData: LegendData;\r\n @Input() legendText: string;\r\n\r\n @ViewChild('innerHtml', { static: true }) innerHtml: TemplateRef<any>;\r\n\r\n private contentInit = false;\r\n\r\n constructor(@Optional() public controlContainer: ControlContainer) {\r\n super();\r\n }\r\n\r\n ngOnChanges(): void {\r\n this.checkRequired();\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.contentInit = true;\r\n }\r\n\r\n initDefaultItems(): void {\r\n if (!this.items) {\r\n this.items = [\r\n {\r\n name: 'día',\r\n classes: 'w-14',\r\n maxlength: 2\r\n },\r\n {\r\n name: 'mes',\r\n classes: 'w-14',\r\n maxlength: 2\r\n },\r\n {\r\n name: 'año',\r\n classes: 'w-20',\r\n maxlength: 4\r\n }\r\n ];\r\n }\r\n }\r\n\r\n checkRequired(): void {\r\n if (!this.id) {\r\n throw Error('id is required');\r\n }\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.value = value;\r\n if (this.value) {\r\n const items = this.getItems();\r\n items.forEach(item => item.value = this.value[this.getItemName(item)]);\r\n\r\n if (this.items) {\r\n this.itemsChange.emit(this.items);\r\n }\r\n }\r\n this.onChange(value);\r\n }\r\n\r\n overrideFieldsetParams(fieldset: FieldsetComponent): void {\r\n fieldset.caller = this.innerHtml;\r\n fieldset.errorId = this.getErrorId();\r\n fieldset.describedBy = new MakeHtmlListPipe().transform([this.getHintId(), this.getErrorId()], null);\r\n fieldset.role = 'group';\r\n fieldset.detectChanges();\r\n }\r\n\r\n onExternalChange(): void {\r\n if (!this.contentInit) {\r\n return;\r\n }\r\n\r\n if (!this.value) {\r\n this.value = {};\r\n }\r\n\r\n const items = this.getItems();\r\n items.forEach(item => this.value[this.getItemName(item)] = item.value);\r\n const newVal = {};\r\n Object.assign(newVal, this.value);\r\n this.onChange(newVal);\r\n }\r\n\r\n onInternalChange(item: ItemDateInputData, itemValue: number): void {\r\n const itemName = this.getItemName(item);\r\n if (!this.value) {\r\n this.value = {};\r\n }\r\n\r\n if (this.value[itemName] !== itemValue) {\r\n this.value[itemName] = itemValue ? +itemValue : undefined;\r\n const newVal = {};\r\n Object.assign(newVal, this.value);\r\n this.onChange(newVal);\r\n if (item instanceof DateInputDayComponent || item instanceof DateInputMonthComponent || item instanceof DateInputYearComponent) {\r\n item.valueChange.emit(itemValue);\r\n }\r\n\r\n if (this.items) {\r\n item.value = itemValue;\r\n this.itemsChange.emit(this.items);\r\n }\r\n }\r\n }\r\n\r\n hasFieldset(): boolean {\r\n return !!(this.hasFieldsetComponent() || this.hasLegendComponent() || this.legendRef || this.fieldsetData\r\n || (this.legendData && (this.legendData.text || this.legendData.html)) || this.legendText);\r\n }\r\n\r\n hasFieldsetComponent(): boolean {\r\n return !!this.fieldsetComponent;\r\n }\r\n\r\n hasLegendComponent(): boolean {\r\n return !!this.legendComponent;\r\n }\r\n\r\n hasErrorMessageComponent(): boolean {\r\n return !!this.errorMessageComponent;\r\n }\r\n\r\n getItemName(item: ItemDateInputData): string {\r\n return this.namePrefix ? this.namePrefix + '-' + item.name : item.name;\r\n }\r\n\r\n getItemLabel(item: ItemDateInputData): LabelData {\r\n let labelData: LabelData;\r\n if (item.labelData && (item.labelData.text || item.labelData.html)) {\r\n labelData = item.labelData;\r\n } else {\r\n labelData = {\r\n text: item.labelText ? item.labelText : item.name.toUpperCase()\r\n };\r\n }\r\n return labelData;\r\n }\r\n\r\n getItemLabelRef(item: ItemDateInputData): TemplateRef<any> {\r\n return item instanceof DateInputDayComponent || item instanceof DateInputMonthComponent || item instanceof DateInputYearComponent ?\r\n item.labelRef : null;\r\n }\r\n\r\n getItems(): ItemDateInputData[] {\r\n let items;\r\n if (this.dateInputItemComponents && this.dateInputItemComponents.length > 0) {\r\n items = this.dateInputItemComponents.toArray();\r\n } else if (this.items) {\r\n items = this.items;\r\n } else if (this.contentInit) {\r\n items = DateInputComponent.defaultItems;\r\n } else {\r\n items = [];\r\n }\r\n\r\n items.forEach(item => {\r\n if (!item.name && !(item instanceof DateInputDividerComponent)) {\r\n throw new Error('Item name is required');\r\n }\r\n });\r\n\r\n return items;\r\n }\r\n\r\n getItemDividerTemplate(item: ItemDateInputData): TemplateRef<any> {\r\n return item.divider instanceof DateInputDividerComponent ? item.divider.dividerContent : null;\r\n }\r\n getItemDividerHtml(item: ItemDateInputData): string {\r\n return item.divider.html ? item.divider.html : `<p>${ StringUtils.escapeHtml(item.divider.text) }</p>`;\r\n }\r\n\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n ContentChildren,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n OnChanges,\r\n Output, QueryList,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { FormFieldComponent } from '../form-field/form-field.component';\r\nimport { ButtonComponent } from '../../../desy-buttons/components/button/button.component';\r\n\r\n@Component({\r\n selector: 'desy-search-bar',\r\n templateUrl: './search-bar.component.html',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SearchBarComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class SearchBarComponent extends FormFieldComponent<string> implements OnChanges, AfterViewInit {\r\n\r\n @ContentChildren(ButtonComponent) button: QueryList<ButtonComponent>;\r\n\r\n @Input() describedBy: string;\r\n @Input() classes: string;\r\n @Input() buttonClasses: string;\r\n @Input() placeholder: string;\r\n @Output() clickEvent = new EventEmitter();\r\n\r\n value = '';\r\n\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.checkRequiredParams();\r\n }\r\n\r\n checkRequiredParams(): void {\r\n if (!this.id) {\r\n throw Error('id is required');\r\n }\r\n if (!this.hasLabel()) {\r\n throw Error('label is required');\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.button && this.button.length > 1) {\r\n throw Error('only 1 button in content is allowed');\r\n }\r\n }\r\n\r\n onClick(event: any): void {\r\n if (!this.disabled) {\r\n this.clickEvent.emit(event);\r\n }\r\n }\r\n\r\n hasButton(): boolean {\r\n return this.button && this.button.length > 0;\r\n }\r\n\r\n}\r\n","import { Directive, Input, OnChanges, SimpleChanges, TemplateRef } from '@angular/core';\r\nimport { ItemCheckboxData, ItemRadioWithTemplateData } from '../interfaces';\r\n\r\n@Directive({\r\n selector: '[desyCondition]'\r\n})\r\nexport class ConditionDirective implements OnChanges {\r\n\r\n /**\r\n * Condition, diferentes formas de implementar, enumeradas por prioridad\r\n * 1) incluir objeto ItemCheckboxData o ItemRadioWithTemplateData (interfaces expuesta)\r\n * 2) incluir value y el listado de ItemCheckboxData[] o ItemRadioWithTemplateData[]\r\n */\r\n @Input() item: ItemCheckboxData|ItemRadioWithTemplateData;\r\n\r\n @Input() value: any;\r\n @Input() items: ItemCheckboxData[]|ItemRadioWithTemplateData[];\r\n\r\n constructor(public templateRef: TemplateRef<any>) {}\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (this.item) {\r\n this.item.conditionalHtml = this.templateRef;\r\n } else if (this.value && this.items) {\r\n for (const item of this.items) {\r\n if (item.value === this.value) {\r\n item.conditionalHtml = this.templateRef;\r\n }\r\n }\r\n } else {\r\n throw Error('item or value + items are required');\r\n }\r\n }\r\n\r\n}\r\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\nimport {ModalButtonData} from '../../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-modal-button-primary',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class ModalButtonPrimaryComponent extends ContentBaseComponent implements ModalButtonData {\r\n @Input() classes?: string;\r\n\r\n @Output() clickEvent = new EventEmitter();\r\n}\r\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\nimport {ModalButtonData} from '../../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-modal-button-secondary',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class ModalButtonSecondaryComponent extends ContentBaseComponent implements ModalButtonData {\r\n @Input() classes?: string;\r\n\r\n @Output() clickEvent = new EventEmitter();\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren, ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n Output,\r\n QueryList,\r\n SimpleChanges,\r\n TemplateRef\r\n} from '@angular/core';\r\nimport {AccessibilityComponent} from '../../../shared/components';\r\nimport { ModalButtonData, ModalData, ModalIconData } from '../../interfaces';\r\nimport {TitleComponent} from '../../../desy-commons/components/title/title.component';\r\nimport {DescriptionComponent} from '../../../desy-commons/components/description/description.component';\r\nimport {IconComponent} from '../../../desy-commons/components/icon/icon.component';\r\nimport {ContentComponent} from '../../../desy-commons/components/content/content.component';\r\nimport {ModalButtonPrimaryComponent} from './modal-button-primary/modal-button-primary.component';\r\nimport {ModalButtonSecondaryComponent} from './modal-button-secondary/modal-button-secondary.component';\r\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\r\n\r\n@Component({\r\n selector: 'desy-modal',\r\n templateUrl: './modal.component.html'\r\n})\r\nexport class ModalComponent extends AccessibilityComponent implements OnChanges {\r\n\r\n @Input() title: ModalData;\r\n @Input() description: ModalData;\r\n @Input() itemsPrimary: ModalButtonData[];\r\n @Input() itemsSecondary: ModalButtonData[];\r\n @Input() icon: ModalIconData;\r\n @Input() headingLevel: number;\r\n\r\n @Input() isDismissible: boolean;\r\n @Input() id: string;\r\n @Input() classes: string;\r\n @Input() caller: TemplateRef<any>;\r\n\r\n @Output() closeModal: EventEmitter<void> = new EventEmitter();\r\n @Output() clickButton: EventEmitter<any> = new EventEmitter();\r\n\r\n @DesyContentChild()\r\n @ContentChildren(TitleComponent) titleComponent: TitleComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(DescriptionComponent) descriptionComponent: DescriptionComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(ContentComponent) contentComponent: ContentComponent;\r\n\r\n @ContentChildren(ModalButtonPrimaryComponent) primaryButtonComponents: QueryList<ModalButtonPrimaryComponent>;\r\n @ContentChildren(ModalButtonSecondaryComponent) secondaryButtonComponents: QueryList<ModalButtonSecondaryComponent>;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(IconComponent) iconComponent: IconComponent;\r\n\r\n hasIconContent = true;\r\n descriptionIsHtml = true;\r\n descriptionIsEmpty = false;\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n closeDialog(): void {\r\n this.closeModal.emit();\r\n }\r\n\r\n getType(): string {\r\n let type: string;\r\n if (this.iconComponent) {\r\n type = this.iconComponent.type ? this.iconComponent.type.toLocaleLowerCase() : null;\r\n } else if (this.icon.type) {\r\n type = this.icon.type ? this.icon.type.toLocaleLowerCase() : null;\r\n }\r\n\r\n return type;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.id){\r\n throw new Error(`id are required`);\r\n }\r\n }\r\n\r\n handleRequiredEmpty(element: string): void {\r\n throw new Error(`${element} is required`);\r\n }\r\n\r\n checkDescriptionContent(element: ElementRef): void {\r\n const childs: NodeListOf<ChildNode> = element.nativeElement.childNodes;\r\n let hasHtml = false;\r\n let hasContent = false;\r\n for (let i = 0; i < childs.length && !hasHtml; i++) {\r\n const item = childs.item(i);\r\n if (item.nodeType === Node.TEXT_NODE && item.textContent.length > 0) {\r\n hasContent = true;\r\n } else if (item.nodeType === Node.ELEMENT_NODE || item.nodeType === Node.CDATA_SECTION_NODE) {\r\n hasHtml = true;\r\n hasContent = true;\r\n }\r\n }\r\n\r\n const descriptionWasEmpty = this.descriptionIsEmpty;\r\n this.descriptionIsEmpty = !hasContent;\r\n this.descriptionIsHtml = hasHtml;\r\n this.changeDetectorRef.detectChanges();\r\n\r\n if (!hasContent && !descriptionWasEmpty) {\r\n this.handleRequiredEmpty('description');\r\n }\r\n }\r\n\r\n clickButtonEmit(item: ModalButtonData, event): void{\r\n this.clickButton.emit(event);\r\n\r\n if (item instanceof ModalButtonPrimaryComponent || item instanceof ModalButtonSecondaryComponent) {\r\n item.clickEvent.emit(event);\r\n }\r\n }\r\n\r\n handleIconContentEmpty(isEmpty: boolean): void {\r\n this.hasIconContent = !isEmpty;\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n getTitleClasses(): string {\r\n let classes = 'c-h2 px-base text-center focus:outline-none focus:underline';\r\n if (this.titleComponent && this.titleComponent.classes) {\r\n classes = this.titleComponent.classes;\r\n } else if (this.title && this.title.classes) {\r\n classes = this.title.classes;\r\n }\r\n return classes;\r\n }\r\n\r\n getDescriptionClasses(): string {\r\n let classes = 'c-paragraph-base my-base text-center';\r\n if (this.descriptionComponent && this.descriptionComponent.classes) {\r\n classes = this.descriptionComponent.classes;\r\n } else if (this.description && this.description.classes) {\r\n classes = this.description.classes;\r\n }\r\n return classes;\r\n }\r\n\r\n getPrimaryItems(): ModalButtonData[]|ModalButtonPrimaryComponent[] {\r\n return this.primaryButtonComponents && this.primaryButtonComponents.length > 0 ? this.primaryButtonComponents.toArray()\r\n : this.itemsPrimary;\r\n }\r\n\r\n getSecondaryItems(): ModalButtonData[]|ModalButtonPrimaryComponent[] {\r\n return this.secondaryButtonComponents && this.secondaryButtonComponents.length > 0 ? this.secondaryButtonComponents.toArray()\r\n : this.itemsSecondary;\r\n }\r\n}\r\n","import {\r\n Component,\r\n HostListener,\r\n OnChanges,\r\n OnDestroy,\r\n Input,\r\n ViewChild,\r\n ViewContainerRef,\r\n TemplateRef,\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Output,\r\n EventEmitter, ComponentRef, ElementRef, Type, ComponentFactoryResolver\r\n} from '@angular/core';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\nimport { ConfigurableFocusTrap, ConfigurableFocusTrapFactory } from '@angular/cdk/a11y';\r\nimport { FocusUtils } from '../../../shared/utils/focus-utils';\r\n\r\nlet numDialogsOpened = 0;\r\ntype DialogCreationCallback = ((dialog: DialogComponent, caller: ComponentRef<any>) => void);\r\n\r\n@Component({\r\n selector: 'desy-dialog',\r\n templateUrl: './dialog.component.html'\r\n})\r\nexport class DialogComponent extends AccessibilityComponent implements OnChanges, OnDestroy, AfterViewInit {\r\n\r\n static readonly DIALOG_OPEN_CLASS = 'has-dialog';\r\n static readonly KEY_CODE_ESC = 'Escape';\r\n\r\n @ViewChild('container', {read: ViewContainerRef}) container: ViewContainerRef;\r\n @ViewChild('focusTrapWrapper') focusTrapWrapper: ElementRef;\r\n\r\n @Input() active: boolean;\r\n @Output() activeChange = new EventEmitter<boolean>();\r\n\r\n @Input() id: any;\r\n @Input() caller: TemplateRef<any>;\r\n @Input() classes: string;\r\n @Input() focusOnClose: string|HTMLElement;\r\n @Input() dismissOnBackdrop: boolean;\r\n\r\n public callerType: Type<any>;\r\n public onCallerCreationCallback: DialogCreationCallback;\r\n\r\n lastActiveState = false;\r\n focusTrap: ConfigurableFocusTrap;\r\n clickOutsideEnabled = false;\r\n childElem: ElementRef;\r\n\r\n constructor(private cdRef: ChangeDetectorRef,\r\n private focusTrapFactory: ConfigurableFocusTrapFactory,\r\n private factoryResolver: ComponentFactoryResolver) {\r\n super();\r\n }\r\n\r\n ngOnChanges(): void {\r\n if (this.focusTrapWrapper) {\r\n this.handleActiveState();\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.id) {\r\n throw Error('id is required');\r\n }\r\n\r\n if (!this.caller && !this.callerType) {\r\n throw Error('caller is required');\r\n }\r\n\r\n if (this.callerType) {\r\n const factory = this.factoryResolver.resolveComponentFactory(this.callerType);\r\n const component = this.container.createComponent(factory);\r\n if (this.onCallerCreationCallback) {\r\n this.onCallerCreationCallback(this, component);\r\n }\r\n }\r\n\r\n if (this.focusTrapWrapper.nativeElement.children && this.focusTrapWrapper.nativeElement.children.length === 1) {\r\n this.childElem = this.focusTrapWrapper.nativeElement.children[0];\r\n }\r\n\r\n this.handleActiveState();\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n this.handleActiveState();\r\n }\r\n\r\n\r\n public dismiss(): void {\r\n this.activeChange.emit(false);\r\n }\r\n\r\n\r\n @HostListener('document:keyup', ['$event'])\r\n onKeyUp(event: KeyboardEvent): void {\r\n if (event.key === DialogComponent.KEY_CODE_ESC) {\r\n event.stopPropagation();\r\n this.dismiss();\r\n }\r\n }\r\n\r\n handleActiveState(): void {\r\n if (!this.focusTrap) {\r\n this.focusTrap = this.focusTrapFactory.create(this.focusTrapWrapper.nativeElement);\r\n }\r\n\r\n if (this.active !== this.lastActiveState) {\r\n this.lastActiveState = this.active;\r\n\r\n // Habilitar/deshabilitar scroll\r\n if (this.active && numDialogsOpened === 0) {\r\n document.body.classList.add(DialogComponent.DIALOG_OPEN_CLASS);\r\n } else if (!this.active && numDialogsOpened === 1) {\r\n document.body.classList.remove(DialogComponent.DIALOG_OPEN_CLASS);\r\n if (document.body.classList.length === 0) {\r\n document.body.removeAttribute('class');\r\n }\r\n }\r\n\r\n if (this.active) {\r\n setTimeout(() => this.focusTrap.focusInitialElement());\r\n numDialogsOpened++;\r\n } else {\r\n let focusElem: HTMLElement;\r\n this.focusTrap.destroy();\r\n if (this.focusOnClose) {\r\n if (typeof this.focusOnClose === 'string') {\r\n focusElem = document.getElementById(this.focusOnClose);\r\n } else {\r\n focusElem = this.focusOnClose;\r\n }\r\n } else {\r\n focusElem = FocusUtils.getFirstFocusableElement();\r\n }\r\n if (focusElem) {\r\n setTimeout(() => focusElem.focus());\r\n }\r\n numDialogsOpened--;\r\n }\r\n\r\n setTimeout(() => this.clickOutsideEnabled = this.active);\r\n }\r\n }\r\n\r\n handleClickOutside(): void {\r\n if (this.dismissOnBackdrop) {\r\n this.dismiss();\r\n }\r\n }\r\n}\r\n","import {\r\n ApplicationRef,\r\n ComponentFactoryResolver,\r\n ComponentRef, EmbeddedViewRef,\r\n Injectable,\r\n Injector,\r\n TemplateRef,\r\n Type\r\n} from '@angular/core';\r\nimport { DialogOptions, ModalOptions, OpenDialogResult } from '../interfaces';\r\nimport { DialogComponent } from '../components/dialog/dialog.component';\r\nimport { ModalComponent } from '../components/modal/modal.component';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DialogService {\r\n\r\n constructor(private factoryResolver: ComponentFactoryResolver,\r\n private defaultInjector: Injector,\r\n private appRef: ApplicationRef) { }\r\n\r\n openDialog(caller: Type<any>|ModalOptions|TemplateRef<any>,\r\n dialogOptions: DialogOptions): Promise<OpenDialogResult> {\r\n return new Promise<OpenDialogResult>((resolve, reject) => {\r\n\r\n if (!caller) {\r\n reject('caller is required');\r\n }\r\n\r\n if (!dialogOptions) {\r\n reject('dialogOptions is required');\r\n }\r\n\r\n const dialog = this.createDialog(dialogOptions);\r\n const result: OpenDialogResult = {\r\n dialog\r\n };\r\n\r\n if (caller instanceof Type) {\r\n dialog.instance.callerType = caller;\r\n dialog.instance.onCallerCreationCallback = (d, c) => {\r\n result.component = c;\r\n resolve(result);\r\n };\r\n } else if (caller instanceof TemplateRef) {\r\n dialog.instance.caller = caller;\r\n resolve(result);\r\n } else {\r\n dialog.instance.callerType = ModalComponent;\r\n dialog.instance.onCallerCreationCallback = (d, c) => {\r\n this.initModal(d, c, caller);\r\n result.component = c;\r\n resolve(result);\r\n };\r\n }\r\n });\r\n }\r\n\r\n closeDialog(dialog: ComponentRef<DialogComponent>|DialogComponent): void {\r\n\r\n if (!dialog) {\r\n throw Error('dialog is required');\r\n }\r\n\r\n if (dialog instanceof ComponentRef) {\r\n dialog.instance.dismiss();\r\n } else {\r\n dialog.dismiss();\r\n }\r\n }\r\n\r\n onCloseDialog(dialog: ComponentRef<DialogComponent>|DialogComponent): Promise<void> {\r\n return new Promise<void>((resolve => {\r\n let d;\r\n if (dialog instanceof ComponentRef) {\r\n d = dialog.instance;\r\n } else {\r\n d = dialog;\r\n }\r\n\r\n const subscription = d.activeChange.subscribe(() => {\r\n resolve();\r\n subscription.unsubscribe();\r\n });\r\n }));\r\n }\r\n\r\n private createDialog(dialogOptions: DialogOptions): ComponentRef<DialogComponent> {\r\n const factory = this.factoryResolver.resolveComponentFactory(DialogComponent);\r\n let dialog;\r\n if (dialogOptions.rootViewContainer) {\r\n dialog = dialogOptions.rootViewContainer.createComponent<DialogComponent>(factory);\r\n } else {\r\n dialog = factory.create(this.defaultInjector);\r\n this.appRef.attachView(dialog.hostView);\r\n const componentElement = (dialog.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n document.body.appendChild(componentElement);\r\n }\r\n\r\n dialog.instance.active = true;\r\n if (dialogOptions) {\r\n Object.assign(dialog.instance, dialogOptions);\r\n }\r\n\r\n this.onCloseDialog(dialog).then(() => dialog.destroy());\r\n\r\n return dialog;\r\n }\r\n\r\n private initModal(dialog: DialogComponent, modalRef: ComponentRef<ModalComponent>, modalOptions: ModalOptions): void {\r\n modalRef.instance.title = modalOptions.title;\r\n modalRef.instance.description = modalOptions.description;\r\n modalRef.instance.itemsPrimary = modalOptions.itemsPrimary;\r\n modalRef.instance.itemsSecondary = modalOptions.itemsSecondary;\r\n modalRef.instance.icon = modalOptions.icon;\r\n\r\n modalRef.instance.isDismissible = modalOptions.isDismissible;\r\n modalRef.instance.id = modalOptions.id;\r\n modalRef.instance.classes = modalOptions.classes;\r\n modalRef.instance.caller = modalOptions.caller;\r\n\r\n if (modalOptions.isDismissible) {\r\n const subscription = modalRef.instance.closeModal.subscribe(() => {\r\n this.closeDialog(dialog);\r\n subscription.unsubscribe();\r\n });\r\n }\r\n }\r\n\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport { BreadcrumbsData } from '../../../interfaces';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-breadcrumbs-item',\r\n templateUrl: './breadcrumbs-item.component.html'\r\n})\r\nexport class BreadcrumbsItemComponent extends ContentBaseComponent implements BreadcrumbsData {\r\n\r\n @Input() id?: string;\r\n @Input() routerLink?: string;\r\n\r\n}\r\n","import {Component, ContentChildren, Input, QueryList} from '@angular/core';\r\nimport { Location } from '@angular/common';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\nimport { BreadcrumbsData } from '../../interfaces';\r\nimport { BreadcrumbsItemComponent } from './breadcrumbs-item/breadcrumbs-item.component';\r\n\r\n@Component({\r\n selector: 'desy-breadcrumbs',\r\n templateUrl: './breadcrumbs.component.html'\r\n})\r\nexport class BreadcrumbsComponent extends AccessibilityComponent {\r\n\r\n @Input() items: Array<BreadcrumbsData>;\r\n @Input() classes: string;\r\n @Input() id: string;\r\n\r\n @Input() collapseOnMobile: boolean;\r\n @Input() hasBackButton: boolean;\r\n @ContentChildren(BreadcrumbsItemComponent) itemComponentList: QueryList<BreadcrumbsItemComponent>;\r\n\r\n constructor(private location: Location){\r\n super();\r\n }\r\n\r\n getLength(): number {\r\n let itemsLength: number = this.items ? this.items.length : this.itemComponentList.length;\r\n\r\n if (this.hasBackButton) {\r\n itemsLength += 1;\r\n }\r\n return itemsLength;\r\n }\r\n\r\n goBack(): void {\r\n this.location.back();\r\n }\r\n\r\n getItemList(): BreadcrumbsData[] {\r\n const itemList = this.itemComponentList && this.itemComponentList.length > 0 ? this.itemComponentList.toArray() : this.items;\r\n if (!itemList || itemList.length === 0) {\r\n throw new Error(`items are required`);\r\n }\r\n\r\n return itemList;\r\n }\r\n\r\n handleEmptyItem(position: number): void {\r\n throw new Error(`item content, html or text are required at position ${position}`);\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-header-offcanvas-close-button',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class HeaderOffcanvasCloseButtonComponent extends ContentBaseComponent {\r\n\r\n}\r\n","import { Component } from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-header-offcanvas-button',\r\n templateUrl: './header-offcanvas-button.component.html'\r\n})\r\nexport class HeaderOffcanvasButtonComponent extends ContentBaseComponent {\r\n\r\n openOffcanvas = async () => {};\r\n\r\n async handleClick(event: Event): Promise<void> {\r\n event.stopPropagation();\r\n await this.openOffcanvas();\r\n }\r\n\r\n handleEmptyContent(element: string): void {\r\n throw new Error(`${element} content is required`);\r\n }\r\n\r\n}\r\n","import {\r\n Component,\r\n ComponentRef,\r\n ContentChildren,\r\n HostBinding,\r\n Input,\r\n OnDestroy,\r\n TemplateRef,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {DesyContentChild} from '../../../../shared/decorators/desy-content-child.decorator';\r\nimport {ContentComponent} from '../../../../desy-commons/components/content/content.component';\r\nimport {HeaderOffcanvasCloseButtonComponent} from './header-offcanvas-close-button/header-offcanvas-close-button.component';\r\nimport {DialogComponent} from '../../../../desy-modals/components/dialog/dialog.component';\r\nimport {DialogService} from '../../../../desy-modals/services/dialog.service';\r\nimport {DialogOptions} from '../../../../desy-modals/interfaces';\r\nimport {HeaderOffcanvasButtonComponent} from './header-offcanvas-button/header-offcanvas-button.component';\r\nimport {DesyOnInputChange} from '../../../../shared/decorators/desy-on-input-change.decorator';\r\n\r\n@Component({\r\n selector: 'desy-header-offcanvas',\r\n templateUrl: './header-offcanvas.component.html'\r\n})\r\nexport class HeaderOffcanvasComponent implements OnDestroy {\r\n\r\n private static dialogOptions: DialogOptions = {\r\n id: 'header-offcanvas-dialog',\r\n focusOnClose: 'header-offcanvas',\r\n ariaModal: 'true',\r\n ariaLabelledBy: 'header-offcanvas-button-text'\r\n };\r\n\r\n @DesyOnInputChange('setHostClass')\r\n @Input() classes: string;\r\n\r\n @HostBinding('class') hostClass = '-mr-2 flex lg:hidden';\r\n\r\n @ViewChild('offcanvasContent') offcanvasContent: TemplateRef<any>;\r\n\r\n @DesyContentChild({onSetCallbackName: 'bindButton'})\r\n @ContentChildren(HeaderOffcanvasButtonComponent) button: HeaderOffcanvasButtonComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(ContentComponent) content: ContentComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(HeaderOffcanvasCloseButtonComponent) closeButton: HeaderOffcanvasCloseButtonComponent;\r\n\r\n private dialog: ComponentRef<DialogComponent>;\r\n\r\n constructor(private dialogService: DialogService) {\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.isOpen()) {\r\n this.close();\r\n }\r\n }\r\n\r\n async open(): Promise<void> {\r\n if (!this.isOpen()) {\r\n this.dialog = (await this.dialogService.openDialog(this.offcanvasContent, HeaderOffcanvasComponent.dialogOptions)).dialog;\r\n this.dialogService.onCloseDialog(this.dialog).then(() => this.dialog = null);\r\n }\r\n }\r\n\r\n close(): void {\r\n if (this.isOpen()) {\r\n this.dialogService.closeDialog(this.dialog);\r\n this.dialog = null;\r\n }\r\n }\r\n\r\n isOpen(): boolean {\r\n return !!this.dialog;\r\n }\r\n\r\n /**\r\n * Estable las clases del elemento html del componente\r\n */\r\n setHostClass(): void {\r\n this.hostClass = this.classes ? this.classes : '-mr-2 flex lg:hidden';\r\n }\r\n\r\n /**\r\n * Enlaza el botón del componente hijo con la acción de abrir de este componente\r\n * @param button componente botón pasado como contenido\r\n */\r\n bindButton(button: HeaderOffcanvasButtonComponent): void {\r\n button.openOffcanvas = this.open.bind(this);\r\n }\r\n\r\n handleEmptyContent(element: string): void {\r\n throw new Error(`${element} content is required`);\r\n }\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {HeaderNavigationItemData} from '../../../../interfaces/header-navigation-item-data';\r\nimport {ContentBaseComponent} from '../../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-header-navigation-item',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class HeaderNavigationItemComponent extends ContentBaseComponent implements HeaderNavigationItemData {\r\n @Input() href: string;\r\n @Input() routerLink: string;\r\n @Input() fragment: string;\r\n @Input() id: string;\r\n @Input() active: boolean;\r\n @Input() disabled: boolean;\r\n}\r\n","import {AfterContentInit, Component, ContentChildren, Input, QueryList} from '@angular/core';\r\nimport { HeaderNavigationItemData } from '../../../interfaces/header-navigation-item-data';\r\nimport { AccessibilityComponent } from '../../../../shared/components';\r\nimport {HeaderNavigationItemComponent} from './header-navigation-item/header-navigation-item.component';\r\n\r\n@Component({\r\n selector: 'desy-header-navigation',\r\n templateUrl: './header-navigation.component.html'\r\n})\r\nexport class HeaderNavigationComponent extends AccessibilityComponent implements AfterContentInit {\r\n\r\n @Input() idPrefix: string;\r\n @Input() classes: string;\r\n @Input() items: HeaderNavigationItemData[];\r\n\r\n @ContentChildren(HeaderNavigationItemComponent) itemComponents: QueryList<HeaderNavigationItemComponent>;\r\n\r\n ngAfterContentInit(): void {\r\n const items = this.getItems();\r\n if (!items || items.length === 0) {\r\n throw new Error('Header-navigation items are required');\r\n }\r\n }\r\n\r\n getItemId(item: HeaderNavigationItemData, index: number): string {\r\n const prefix = this.idPrefix ? this.idPrefix : 'header-nav-item';\r\n const suffix = index > 0 ? '-' + index : '';\r\n return item.id ? item.id : prefix + suffix;\r\n }\r\n\r\n getItems(): HeaderNavigationItemData[] {\r\n return this.itemComponents && this.itemComponents.length > 0 ? this.itemComponents.toArray() : this.items;\r\n }\r\n}\r\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\r\nimport {NavItemData, NavItemEventData} from '../../../interfaces';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-nav-item',\r\n templateUrl: './nav-item.component.html'\r\n})\r\nexport class NavItemComponent extends ContentBaseComponent implements NavItemData {\r\n\r\n @Input() id?: string;\r\n @Input() active?: boolean;\r\n @Input() classes?: string;\r\n @Input() title?: string;\r\n @Input() href?: string;\r\n @Input() routerLink?: string|any[];\r\n @Input() fragment?: string;\r\n @Input() target?: string;\r\n @Input() disabled?: boolean;\r\n @Input() divider?: boolean;\r\n\r\n @Output() clickEvent = new EventEmitter<NavItemEventData>();\r\n @Output() activeChange = new EventEmitter<boolean>();\r\n}\r\n","import {\r\n Component,\r\n ContentChildren,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n Output,\r\n QueryList,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport {\r\n AccessibilityComponent\r\n} from '../../../shared/components';\r\nimport {NavItemData, NavItemEventData} from '../../interfaces';\r\nimport {NavItemComponent} from './nav-item/nav-item.component';\r\n\r\n\r\n@Component({\r\n selector: 'desy-nav',\r\n templateUrl: './nav.component.html'\r\n})\r\nexport class NavComponent extends AccessibilityComponent implements OnChanges {\r\n\r\n @Input() hasNav = true;\r\n @Input() idPrefix: string;\r\n @Input() items: NavItemData[];\r\n @Input() classes: string;\r\n\r\n @Output() clickEvent = new EventEmitter<NavItemEventData>();\r\n @ContentChildren(NavItemComponent) itemComponentList: QueryList<NavItemComponent>;\r\n\r\n onClick(event: any, item: NavItemData): void {\r\n const itemsActiveChange = [];\r\n if (!item.active) {\r\n itemsActiveChange.push(item);\r\n }\r\n\r\n const itemList = this.getItemList();\r\n itemList.forEach(i => {\r\n if (i.active && i !== item) {\r\n itemsActiveChange.push(i);\r\n }\r\n i.active = false;\r\n });\r\n item.active = true;\r\n\r\n // Se emite el evento sólo para los items cuyo valor de active ha sido modificado\r\n itemsActiveChange.forEach(i => {\r\n if (i instanceof NavItemComponent) {\r\n i.activeChange.emit(i.active);\r\n }\r\n });\r\n\r\n this.clickEvent.emit({ item, event });\r\n if (item instanceof NavItemComponent) {\r\n item.clickEvent.emit({ item, event });\r\n }\r\n }\r\n\r\n ngOnChanges(changes?: SimpleChanges): void {\r\n if (!this.idPrefix) {\r\n throw new Error(`idPrefix is required`);\r\n }\r\n }\r\n\r\n getItemList(): NavItemData[] {\r\n const itemList = this.itemComponentList && this.itemComponentList.length > 0 ? this.itemComponentList.toArray() : this.items;\r\n if (!itemList || itemList.length === 0) {\r\n throw new Error(`items are required`);\r\n }\r\n\r\n itemList.forEach(element => {\r\n if (!element.href && !element.routerLink) {\r\n throw new Error(`href or routerLink are required`);\r\n }\r\n });\r\n return itemList;\r\n }\r\n\r\n handleContentEmpty(position: number): void {\r\n throw new Error(`item content, html or text are required at position ${position}`);\r\n }\r\n\r\n getItemId(item: NavItemData, index: number): string {\r\n let id;\r\n if (item.id) {\r\n id = item.id;\r\n } else if (index === 0) {\r\n id = this.getIdPrefix();\r\n } else {\r\n id = this.getIdPrefix() + '-' + index;\r\n }\r\n return id;\r\n }\r\n\r\n getIdPrefix(): string {\r\n return this.idPrefix ? this.idPrefix : 'nav-item';\r\n }\r\n}\r\n","import {Component, ContentChildren, Input} from '@angular/core';\r\nimport {NavComponent} from '../../nav/nav.component';\r\nimport {DesyContentChild} from '../../../../shared/decorators/desy-content-child.decorator';\r\nimport {AccessibilityComponent} from \"../../../../shared/components\";\r\n\r\n@Component({\r\n selector: 'desy-header-subnav',\r\n templateUrl: './header-subnav.component.html'\r\n})\r\nexport class HeaderSubnavComponent extends AccessibilityComponent {\r\n\r\n @Input() hiddenText: string;\r\n @Input() classesContainer: string;\r\n @Input() classesTooltip: string;\r\n @Input() classes: string;\r\n\r\n @DesyContentChild({onSetCallbackName: 'overrideNavParams'})\r\n @ContentChildren(NavComponent) nav: NavComponent;\r\n\r\n hasSubnavItems(): boolean {\r\n return this.nav && this.nav.getItemList().length > 0;\r\n }\r\n\r\n overrideNavParams(nav: NavComponent): void {\r\n nav.hasNav = true;\r\n nav.idPrefix = 'header-subnav-nav-item';\r\n nav.ariaLabel = 'Aplicaciones';\r\n nav.classes = 'w-max max-w-64';\r\n // nav.id = 'id-subnav-nav'; // No existe como param de navComponent\r\n }\r\n\r\n handleEmptyContent(element: string): void {\r\n throw new Error(`${element} content is required`);\r\n }\r\n\r\n}\r\n","import {Component, ContentChildren, Input} from '@angular/core';\r\nimport {DesyContentChild} from '../../../../shared/decorators/desy-content-child.decorator';\r\nimport {NavComponent} from '../../nav/nav.component';\r\nimport {AccessibilityComponent} from \"../../../../shared/components\";\r\n\r\n@Component({\r\n selector: 'desy-header-dropdown',\r\n templateUrl: './header-dropdown.component.html',\r\n})\r\nexport class HeaderDropdownComponent extends AccessibilityComponent {\r\n\r\n @Input() hiddenText: string;\r\n @Input() classesContainer: string;\r\n @Input() classesTooltip: string;\r\n @Input() classes: string;\r\n\r\n @DesyContentChild({onSetCallbackName: 'overrideNavParams'})\r\n @ContentChildren(NavComponent) nav: NavComponent;\r\n\r\n overrideNavParams(nav: NavComponent): void {\r\n nav.hasNav = true;\r\n nav.idPrefix = 'header-dropdown-nav-item';\r\n nav.ariaLabel = 'Menú de usuario';\r\n nav.classes = 'w-max max-w-64';\r\n // nav.id = 'id-dropdown-nav'; // No existe como param de navComponent\r\n }\r\n\r\n handleEmptyContent(element: string): void {\r\n throw new Error(`${element} content is required`);\r\n }\r\n\r\n}\r\n","import {ChangeDetectorRef, Component, Input} from '@angular/core';\r\nimport {AccessibilityComponent} from '../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-skip-link',\r\n templateUrl: './skip-link.component.html'\r\n})\r\nexport class SkipLinkComponent extends AccessibilityComponent {\r\n\r\n @Input() html: string;\r\n @Input() text: string;\r\n @Input() fragment: string;\r\n @Input() classes: string;\r\n @Input() id: string;\r\n\r\n hasContent = true;\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n getClassNames(): string {\r\n let classNames = 'c-skip-link sr-only active:not-sr-only focus:not-sr-only focus:outline-none focus:shadow-outline-focus block p-base bg-warning-base text-center text-black underline';\r\n if (this.classes) {\r\n classNames += ' ' + this.classes;\r\n }\r\n return classNames;\r\n }\r\n\r\n handleNoContent(): void {\r\n if (!this.html && !this.text) {\r\n throw new Error('skip-link content, html or text are required');\r\n } else {\r\n this.hasContent = false;\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n }\r\n}\r\n","import {Component, ContentChildren, Input} from '@angular/core';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\nimport { HeaderSubnavData } from '../../interfaces';\r\nimport { HeaderNavigationData } from '../../interfaces';\r\nimport { HeaderDropdownData } from '../../interfaces';\r\nimport { HeaderOffcanvasData } from '../../interfaces';\r\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\r\nimport {HeaderOffcanvasComponent} from './header-offcanvas/header-offcanvas.component';\r\nimport {HeaderNavigationComponent} from './header-navigation/header-navigation.component';\r\nimport {HeaderSubnavComponent} from './header-subnav/header-subnav.component';\r\nimport {HeaderDropdownComponent} from './header-dropdown/header-dropdown.component';\r\nimport {SkipLinkComponent} from '../skip-link/skip-link.component';\r\n\r\n@Component({\r\n selector: 'desy-header',\r\n templateUrl: './header.component.html'\r\n})\r\nexport class HeaderComponent extends AccessibilityComponent {\r\n\r\n @Input() classes: string;\r\n @Input() containerClasses: string;\r\n @Input() homepageUrl: string;\r\n @Input() homepageRouterLink: string;\r\n @Input() homepageFragment: string;\r\n @Input() expandedLogo: boolean;\r\n\r\n @Input() subnavData: HeaderSubnavData;\r\n @Input() navigationData: HeaderNavigationData;\r\n @Input() dropdownData: HeaderDropdownData;\r\n @Input() offcanvasData: HeaderOffcanvasData;\r\n\r\n @DesyContentChild({ onSetCallbackName: 'overrideSkipLinkParams'})\r\n @ContentChildren(SkipLinkComponent) skiplinkComponent: SkipLinkComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(HeaderSubnavComponent) subnavComponent: HeaderSubnavComponent;\r\n\r\n @DesyContentChild({ onSetCallbackName: 'overrideNavigationParams'})\r\n @ContentChildren(HeaderNavigationComponent) navigationComponent: HeaderNavigationComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(HeaderDropdownComponent) dropdownComponent: HeaderDropdownComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(HeaderOffcanvasComponent) offcanvasComponent: HeaderOffcanvasComponent;\r\n\r\n\r\n overrideSkipLinkParams(skiplinkComponent: SkipLinkComponent): void {\r\n skiplinkComponent.id = skiplinkComponent.id || 'skip-link';\r\n skiplinkComponent.text = 'Saltar al contenido principal';\r\n }\r\n\r\n overrideNavigationParams(navigationComponent: HeaderNavigationComponent): void {\r\n navigationComponent.idPrefix = 'header-nav-item';\r\n navigationComponent.ariaLabel = 'Menú principal';\r\n }\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {NavigationItemData} from '../../../../interfaces';\r\nimport {ContentBaseComponent} from '../../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-footer-navigation-item',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class FooterNavigationItemComponent extends ContentBaseComponent implements NavigationItemData {\r\n @Input() href?: string;\r\n @Input() routerLink?: string;\r\n @Input() fragment?: string;\r\n}\r\n","import {Component, ContentChildren, Input, QueryList} from '@angular/core';\r\nimport {NavigationData} from '../../../interfaces';\r\nimport {FooterNavigationItemComponent} from './footer-navigation-item/footer-navigation-item.component';\r\n\r\n@Component({\r\n selector: 'desy-footer-navigation',\r\n templateUrl: './footer-navigation.component.html'\r\n})\r\nexport class FooterNavigationComponent implements NavigationData {\r\n @Input() title: string;\r\n @Input() columns: number;\r\n\r\n @ContentChildren(FooterNavigationItemComponent) itemComponents: QueryList<FooterNavigationItemComponent>;\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {MetaItemData} from '../../../../interfaces';\r\nimport {ContentBaseComponent} from '../../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-footer-meta-item',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class FooterMetaItemComponent extends ContentBaseComponent implements MetaItemData {\r\n @Input() href?: string;\r\n @Input() routerLink?: string;\r\n @Input() fragment?: string;\r\n}\r\n","import {Component, ContentChildren, Input, QueryList} from '@angular/core';\r\nimport {MetaData} from '../../../interfaces';\r\nimport {FooterMetaItemComponent} from './footer-meta-item/footer-meta-item.component';\r\nimport {ContentComponent} from '../../../../desy-commons/components/content/content.component';\r\nimport {DesyContentChild} from '../../../../shared/decorators/desy-content-child.decorator';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-footer-meta',\r\n template: ''\r\n})\r\nexport class FooterMetaComponent extends ContentBaseComponent implements MetaData {\r\n\r\n @Input() visuallyHiddenTitle: string;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(ContentComponent) contentComponent: ContentComponent;\r\n @ContentChildren(FooterMetaItemComponent) itemComponents: QueryList<FooterMetaItemComponent>;\r\n}\r\n","import {Component, ContentChildren, Input, QueryList} from '@angular/core';\r\nimport {AccessibilityComponent} from '../../../shared/components';\r\nimport {MetaData, MetaItemData, NavigationData, NavigationItemData} from '../../interfaces';\r\nimport {IconData} from '../../../desy-commons/interfaces';\r\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\r\nimport {IconComponent} from '../../../desy-commons/components/icon/icon.component';\r\nimport {FooterNavigationComponent} from './footer-navigation/footer-navigation.component';\r\nimport {FooterMetaComponent} from './footer-meta/footer-meta.component';\r\nimport {ContentComponent} from '../../../desy-commons/components/content/content.component';\r\n\r\n\r\n@Component({\r\n selector: 'desy-footer',\r\n templateUrl: './footer.component.html'\r\n})\r\nexport class FooterComponent extends AccessibilityComponent {\r\n\r\n @Input() meta: MetaData;\r\n @Input() navigation: NavigationData[];\r\n @Input() icon: IconData;\r\n @Input() containerClasses: string;\r\n @Input() classes: string;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(IconComponent) iconComponent: IconComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(FooterMetaComponent) metaComponent: FooterMetaComponent;\r\n\r\n @ContentChildren(FooterNavigationComponent) navigationComponent: QueryList<FooterNavigationComponent>;\r\n\r\n\r\n getNavigationItems(): NavigationData[] {\r\n const navItems = this.navigationComponent && this.navigationComponent.length > 0 ? this.navigationComponent.toArray() : this.navigation;\r\n return navItems && navItems.length > 0 ? navItems : null;\r\n }\r\n\r\n getNavigationItemItems(navigation: NavigationData): NavigationItemData[] {\r\n return navigation instanceof FooterNavigationComponent ? navigation.itemComponents.toArray() : navigation.items;\r\n }\r\n\r\n getMetaItems(meta: MetaData): MetaItemData[] {\r\n return meta instanceof FooterMetaComponent ? meta.itemComponents.toArray() : meta.items;\r\n }\r\n\r\n getMetaContent(meta: MetaData): ContentComponent {\r\n return meta instanceof FooterMetaComponent ? meta.contentComponent : null;\r\n }\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\nimport {ErrorSummaryData} from '../../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-error-summary-item',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class ErrorSummaryItemComponent extends ContentBaseComponent implements ErrorSummaryData {\r\n\r\n @Input() fragment: string;\r\n @Input() id: string;\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n ContentChildren,\r\n QueryList\r\n} from '@angular/core';\r\nimport {AccessibilityComponent} from '../../../shared/components';\r\nimport {ErrorSummaryData} from '../../interfaces';\r\nimport {ErrorSummaryItemComponent} from './error-summary-item/error-summary-item.component';\r\nimport {TitleComponent} from '../../../desy-commons/components/title/title.component';\r\nimport {DescriptionComponent} from '../../../desy-commons/components/description/description.component';\r\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\r\n\r\n@Component({\r\n selector: 'desy-error-summary',\r\n templateUrl: './error-summary.component.html'\r\n})\r\nexport class ErrorSummaryComponent extends AccessibilityComponent {\r\n\r\n @Input() titleText: string;\r\n @Input() titleHtml: string;\r\n @Input() descriptionText: string;\r\n @Input() descriptionHtml: string;\r\n @Input() classes: string;\r\n @Input() id: string;\r\n @Input() errorList: Array<ErrorSummaryData>;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(TitleComponent) titleComponent: TitleComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(DescriptionComponent) descriptionComponent: DescriptionComponent;\r\n\r\n @ContentChildren(ErrorSummaryItemComponent) errorComponentList: QueryList<ErrorSummaryItemComponent>;\r\n\r\n lastErrorItemCount: number;\r\n\r\n handleContentRequired(element: string): void {\r\n throw new Error(element + ' content, html or text are required');\r\n }\r\n\r\n getErrorItemList(): ErrorSummaryData[] {\r\n let errorItemList: ErrorSummaryData[];\r\n if (this.errorComponentList && this.errorComponentList.length > 0) {\r\n errorItemList = this.errorComponentList.toArray();\r\n } else {\r\n errorItemList = this.errorList;\r\n }\r\n\r\n const lastLength = this.lastErrorItemCount;\r\n this.lastErrorItemCount = errorItemList.length;\r\n if (errorItemList.length === 0 && lastLength !== 0) {\r\n throw new Error(`errorList or inner error-summary-item are required`);\r\n }\r\n\r\n return errorItemList;\r\n }\r\n}\r\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\r\nimport {MenuHorizontalItemData, MenuHorizontalItemEventData} from '../../../interfaces';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-menu-horizontal-item',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class MenuHorizontalItemComponent extends ContentBaseComponent implements MenuHorizontalItemData {\r\n\r\n @Input() href?: string;\r\n @Input() routerLink?: string|any[];\r\n @Input() fragment?: string;\r\n @Input() target?: string;\r\n @Input() id?: string;\r\n @Input() active?: boolean;\r\n @Input() disabled?: boolean;\r\n @Input() classes?: string;\r\n\r\n @Output() clickEvent = new EventEmitter<MenuHorizontalItemEventData>();\r\n @Output() activeChange = new EventEmitter<boolean>();\r\n\r\n}\r\n","import {Component, ContentChildren, EventEmitter, Input, OnChanges, Output, QueryList, SimpleChanges} from '@angular/core';\r\nimport { MenuHorizontalItemData, MenuHorizontalItemEventData } from '../../interfaces';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\nimport {MenuHorizontalItemComponent} from './menu-horizontal-item/menu-horizontal-item.component';\r\n\r\n@Component({\r\n selector: 'desy-menu-horizontal',\r\n templateUrl: './menu-horizontal.component.html'\r\n})\r\nexport class MenuHorizontalComponent extends AccessibilityComponent implements OnChanges {\r\n\r\n @Input() id: string;\r\n @Input() idPrefix: string;\r\n @Input() classes: string;\r\n @Input() items: MenuHorizontalItemData[];\r\n\r\n @ContentChildren(MenuHorizontalItemComponent) itemComponents: QueryList<MenuHorizontalItemComponent>;\r\n\r\n @Output() clickEvent = new EventEmitter<MenuHorizontalItemEventData>();\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n }\r\n\r\n onClick(event: any, item: MenuHorizontalItemData): void {\r\n const itemsActiveChange = [];\r\n if (!item.active) {\r\n itemsActiveChange.push(item);\r\n }\r\n\r\n const itemList = this.getItemList();\r\n itemList.forEach(i => {\r\n if (i.active && i !== item) {\r\n itemsActiveChange.push(i);\r\n }\r\n i.active = false;\r\n });\r\n item.active = true;\r\n\r\n // Se emite el evento sólo para los items cuyo valor de active ha sido modificado\r\n itemsActiveChange.forEach(i => {\r\n if (i instanceof MenuHorizontalItemComponent) {\r\n i.activeChange.emit(i.active);\r\n }\r\n });\r\n\r\n this.clickEvent.emit({ item, event });\r\n if (item instanceof MenuHorizontalItemComponent) {\r\n item.clickEvent.emit({ item, event });\r\n }\r\n }\r\n\r\n getIdPrefix(): string {\r\n return this.idPrefix ? this.idPrefix : 'menu-item';\r\n }\r\n\r\n getItemList(): MenuHorizontalItemData[] {\r\n const itemList = this.itemComponents && this.itemComponents.length > 0 ? this.itemComponents.toArray() : this.items;\r\n if (!itemList || itemList.length === 0) {\r\n throw new Error(`items are required`);\r\n }\r\n\r\n itemList.forEach(item => {\r\n if (!item.routerLink && !item.href) {\r\n throw Error('item routerLink or href are required');\r\n }\r\n });\r\n return itemList;\r\n }\r\n\r\n handleEmptyItem(position: number): void {\r\n throw new Error(`item content, html or text are required at position ${position}`);\r\n }\r\n\r\n getItemId(item: MenuHorizontalItemData, index: number): string {\r\n let id;\r\n if (item.id) {\r\n id = item.id;\r\n } else if (index === 0) {\r\n id = this.getIdPrefix();\r\n } else {\r\n id = this.getIdPrefix() + '-' + index;\r\n }\r\n return id;\r\n }\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {MenuVerticalSubItemsData} from '../../../interfaces';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-menu-vertical-item-sub-item',\r\n templateUrl: './menu-vertical-item-sub-item.component.html'\r\n})\r\nexport class MenuVerticalItemSubItemComponent extends ContentBaseComponent implements MenuVerticalSubItemsData {\r\n\r\n @Input() id?: string;\r\n @Input() classes?: string;\r\n @Input() href?: string;\r\n @Input() routerLink?: string;\r\n @Input() routerLinkActiveClasses?: string;\r\n @Input() fragment?: string;\r\n @Input() target?: string;\r\n @Input() disabled?: boolean;\r\n @Input() active?: boolean;\r\n @Input() divider?: boolean;\r\n @Input() title?: string;\r\n}\r\n","import {Component, ContentChildren, Input, QueryList} from '@angular/core';\r\nimport {MenuVerticalSubData} from '../../../interfaces';\r\nimport {MenuVerticalItemSubItemComponent} from '../menu-vertical-item-sub-item/menu-vertical-item-sub-item.component';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-menu-vertical-item-sub',\r\n templateUrl: './menu-vertical-item-sub.component.html'\r\n})\r\nexport class MenuVerticalItemSubComponent extends ContentBaseComponent implements MenuVerticalSubData {\r\n @Input() classes?: string;\r\n\r\n @ContentChildren(MenuVerticalItemSubItemComponent) itemComponents: QueryList<MenuVerticalItemSubItemComponent>;\r\n}\r\n","import {Component, ContentChildren, Input} from '@angular/core';\r\nimport {MenuVerticalItemsData} from '../../../interfaces';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\nimport {DesyContentChild} from '../../../../shared/decorators/desy-content-child.decorator';\r\nimport {MenuVerticalItemSubComponent} from '../menu-vertical-item-sub/menu-vertical-item-sub.component';\r\n\r\n@Component({\r\n selector: 'desy-menu-vertical-item',\r\n templateUrl: './menu-vertical-item.component.html'\r\n})\r\nexport class MenuVerticalItemComponent extends ContentBaseComponent implements MenuVerticalItemsData {\r\n\r\n @Input() id?: string;\r\n @Input() classes?: string;\r\n @Input() href?: string;\r\n @Input() routerLink?: string;\r\n @Input() routerLinkActiveClasses?: string;\r\n @Input() fragment?: string;\r\n @Input() target?: string;\r\n @Input() disabled?: boolean;\r\n @Input() active?: boolean;\r\n @Input() divider?: boolean;\r\n @Input() title?: string;\r\n @Input() expanded?: boolean; // no se utiliza\r\n\r\n @DesyContentChild()\r\n @ContentChildren(MenuVerticalItemSubComponent) subComponent: MenuVerticalItemSubComponent;\r\n\r\n}\r\n","import {Component, Input, ContentChildren, QueryList} from '@angular/core';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\nimport {MenuVerticalItemsData, MenuVerticalSubData, MenuVerticalSubItemsData} from '../../interfaces';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport { StringUtils } from '../../../shared/utils/string-utils';\r\nimport {MenuVerticalItemComponent} from './menu-vertical-item/menu-vertical-item.component';\r\nimport {MenuVerticalItemSubComponent} from './menu-vertical-item-sub/menu-vertical-item-sub.component';\r\n\r\n@Component({\r\n selector: 'desy-menu-vertical',\r\n templateUrl: './menu-vertical.component.html',\r\n animations: [\r\n trigger('displayMenuVertical', [\r\n state('void', style({\r\n opacity: '0.0',\r\n transform: 'scale(0.95)'\r\n })),\r\n state('*', style({\r\n opacity: '1.0',\r\n transform: 'scale(1.0)'\r\n })),\r\n transition(':enter', [\r\n animate('100ms ease-out')\r\n ])\r\n ])\r\n ]\r\n})\r\nexport class MenuVerticalComponent extends AccessibilityComponent {\r\n\r\n @Input() id: string;\r\n @Input() idPrefix: string;\r\n @Input() items: MenuVerticalItemsData[];\r\n @Input() hasUnderline: boolean;\r\n @Input() classes: string;\r\n\r\n @ContentChildren(MenuVerticalItemComponent) itemComponents: QueryList<MenuVerticalItemComponent>;\r\n\r\n handleItemContentEmpty(index: number, isRoot: boolean): void {\r\n throw new Error(`${isRoot ? 'Item' : 'Subitem'} content, html or text ar required at position ${index}`);\r\n }\r\n\r\n getItemHtml(item: MenuVerticalItemsData): string {\r\n let itemHtml: string;\r\n if (item.active) {\r\n itemHtml = item.html ? `<strong>${ item.html }</strong>` : `<strong>${ StringUtils.escapeHtml(item.text) }</strong>`;\r\n } else {\r\n itemHtml = item.html;\r\n }\r\n\r\n return itemHtml;\r\n }\r\n\r\n getId(item: MenuVerticalItemsData, i: number): string {\r\n if (item.id) {\r\n return item.id;\r\n } else {\r\n const idPrefix = this.idPrefix ? this.idPrefix : 'nav-item';\r\n if (i === 0) {\r\n return idPrefix;\r\n } else {\r\n return idPrefix + '-' + i;\r\n }\r\n }\r\n }\r\n\r\n getSubItemId(item: MenuVerticalItemsData, itemIndex: number, subItemIndex: number): string{\r\n let subItemId: string;\r\n const sub = this.getItemSub(item);\r\n const subItems = this.getSubItems(sub);\r\n const subItem = subItems[subItemIndex];\r\n if (subItem) {\r\n if (subItem.id) {\r\n subItemId = subItem.id;\r\n } else {\r\n const itemId = this.getId(item, itemIndex);\r\n subItemId = subItemIndex === 0 ? `sub-${itemId}` : `sub-${itemId}-${subItemIndex}`;\r\n }\r\n }\r\n\r\n return subItemId;\r\n }\r\n\r\n getItems(): MenuVerticalItemsData[] {\r\n const itemList = this.itemComponents && this.itemComponents.length > 0 ? this.itemComponents.toArray() : this.items;\r\n if (!itemList || itemList.length === 0) {\r\n throw new Error(`items are required`);\r\n }\r\n return itemList;\r\n }\r\n\r\n getItemSub(item: MenuVerticalItemsData): MenuVerticalSubData {\r\n return item instanceof MenuVerticalItemComponent ? item.subComponent : item.sub;\r\n }\r\n\r\n getSubItems(sub: MenuVerticalSubData): MenuVerticalSubItemsData[] {\r\n const subItems = sub instanceof MenuVerticalItemSubComponent ? sub.itemComponents.toArray() : sub.items;\r\n return subItems && subItems.length > 0 ? subItems : null;\r\n }\r\n}\r\n","import {\r\n ContentChild,\r\n ContentChildren,\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n Output,\r\n QueryList,\r\n AfterContentChecked\r\n} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[desyMenubaritem]'\r\n})\r\nexport class MenubaritemDirective implements AfterContentChecked {\r\n @ContentChild('link', { read: ElementRef }) link: ElementRef;\r\n @ContentChild('itemContentWrapper', { read: ElementRef }) itemContentWrapper: ElementRef;\r\n @ContentChild('popupMenu', { read: ElementRef }) popupMenu: ElementRef;\r\n @ContentChildren('popupMenuItem', { read: ElementRef, descendants: true}) popupMenuItems: QueryList<ElementRef>;\r\n\r\n @Output() contentChanged: EventEmitter<any> = new EventEmitter();\r\n\r\n private lastPopupMenu: ElementRef;\r\n private lastPopupMenuItems: QueryList<ElementRef>;\r\n private lastItemContentWrapper: ElementRef;\r\n private lastLink: ElementRef;\r\n\r\n contentHasBeenChecked = false;\r\n\r\n constructor(public elementRef: ElementRef) { }\r\n\r\n ngAfterContentChecked(): void {\r\n if (this.popupMenu !== this.lastPopupMenu || this.popupMenuItems !== this.lastPopupMenuItems\r\n || this.link !== this.lastLink || this.itemContentWrapper !== this.lastItemContentWrapper) {\r\n setTimeout(() => this.contentChanged.emit());\r\n this.lastPopupMenu = this.popupMenu;\r\n this.lastPopupMenuItems = this.popupMenuItems;\r\n this.lastLink = this.link;\r\n this.lastItemContentWrapper = this.itemContentWrapper;\r\n }\r\n\r\n if (!this.contentHasBeenChecked) {\r\n setTimeout(() => this.contentHasBeenChecked = true);\r\n }\r\n }\r\n\r\n}\r\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\r\nimport {MenubarItemSubItemSubItem} from '../../../../interfaces/menubar-item-sub-item-sub-item';\r\nimport {ContentBaseComponent} from '../../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-menubar-subsubitem',\r\n templateUrl: './menubar-subsubitem.component.html'\r\n})\r\nexport class MenubarSubsubitemComponent extends ContentBaseComponent implements MenubarItemSubItemSubItem {\r\n\r\n @Input() html?: string;\r\n @Input() text?: string;\r\n @Input() checked?: boolean;\r\n\r\n @Output() selected = new EventEmitter<any>();\r\n @Output() checkedChange = new EventEmitter<boolean>();\r\n\r\n}\r\n","import {\r\n Component,\r\n ContentChildren,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n QueryList,\r\n} from '@angular/core';\r\nimport {MenubarItemSubItem} from '../../../../interfaces/menubar-item-sub-item';\r\nimport {MenubarItemSubItemSubItem} from '../../../../interfaces/menubar-item-sub-item-sub-item';\r\nimport {MenubarSubsubitemComponent} from '../menubar-subsubitem/menubar-subsubitem.component';\r\nimport {ContentBaseComponent} from '../../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-menubar-subitem',\r\n templateUrl: './menubar-subitem.component.html'\r\n})\r\nexport class MenubarSubitemComponent extends ContentBaseComponent implements MenubarItemSubItem {\r\n\r\n @Input() text?: string;\r\n @Input() html?: string;\r\n @Input() checked?: boolean;\r\n @Input() items?: MenubarItemSubItemSubItem[];\r\n\r\n @Output() selected = new EventEmitter<any>();\r\n @Output() checkedChange = new EventEmitter<boolean>();\r\n\r\n @ContentChildren(MenubarSubsubitemComponent) subItems: QueryList<MenubarSubsubitemComponent>;\r\n\r\n public getSubItems(): MenubarSubsubitemComponent[] {\r\n return this.subItems.toArray();\r\n }\r\n\r\n}\r\n","import {\r\n Component,\r\n ContentChildren,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n QueryList,\r\n} from '@angular/core';\r\nimport {MenubarItem} from '../../../../interfaces/menubar-item';\r\nimport {MenubarItemSub} from '../../../../interfaces/menubar-item-sub';\r\nimport {ContentBaseComponent} from '../../../../../shared/components';\r\nimport {MenubarSubitemComponent} from '../menubar-subitem/menubar-subitem.component';\r\n\r\n@Component({\r\n selector: 'desy-menubar-item',\r\n templateUrl: './menubar-item.component.html'\r\n})\r\nexport class MenubarItemComponent extends ContentBaseComponent implements MenubarItem {\r\n\r\n @Input() href?: string;\r\n @Input() target?: string;\r\n @Input() routerLink?: string|any[];\r\n @Input() routerLinkActiveClasses?: string;\r\n @Input() fragment?: string;\r\n @Input() text?: string;\r\n @Input() html?: string;\r\n @Input() id?: string;\r\n @Input() sub?: MenubarItemSub;\r\n @Input() classes?: string;\r\n\r\n @Input() title?: string;\r\n @Input() disabled?: boolean;\r\n @Input() active?: boolean;\r\n\r\n @Output() selected = new EventEmitter<any>();\r\n\r\n @ContentChildren(MenubarSubitemComponent) subItems: QueryList<MenubarSubitemComponent>;\r\n\r\n public getSubItems(): MenubarSubitemComponent[] {\r\n return this.subItems.toArray();\r\n }\r\n\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-menubar-label',\r\n templateUrl: './menubar-label.component.html'\r\n})\r\nexport class MenubarLabelComponent extends ContentBaseComponent {\r\n\r\n @Input() classes: string;\r\n\r\n}\r\n","import {\r\n AfterViewInit, ChangeDetectorRef,\r\n Component, ContentChildren,\r\n ElementRef, EventEmitter,\r\n Input,\r\n OnChanges, Output,\r\n QueryList,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewChild,\r\n ViewChildren\r\n} from '@angular/core';\r\nimport {AccessibilityComponent} from '../../../shared/components';\r\nimport {MenubarItem} from '../../interfaces/menubar-item';\r\nimport {MenubaritemDirective} from './directives/menubaritem.directive';\r\nimport {MenubarItemSubItem} from '../../interfaces/menubar-item-sub-item';\r\nimport {MenubarItemSubItemSubItem} from '../../interfaces/menubar-item-sub-item-sub-item';\r\nimport {LabelComponent} from '../../../desy-forms/components/label/label.component';\r\nimport {LabelData} from '../../../desy-forms/interfaces';\r\nimport {StringUtils} from '../../../shared/utils/string-utils';\r\nimport {MenubarItemComponent} from './components/menubar-item/menubar-item.component';\r\nimport {MenubarSubitemComponent} from './components/menubar-subitem/menubar-subitem.component';\r\nimport {MenubarSubsubitemComponent} from './components/menubar-subsubitem/menubar-subsubitem.component';\r\nimport {MenubarLabelComponent} from './components/menubar-label/menubar-label.component';\r\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\r\n\r\n@Component({\r\n selector: 'desy-menubar',\r\n templateUrl: './menubar.component.html'\r\n})\r\nexport class MenubarComponent extends AccessibilityComponent implements OnChanges, AfterViewInit {\r\n\r\n @Input() id: string;\r\n @Input() idPrefix: string;\r\n @Input() classes: string;\r\n @Input() items: MenubarItem[];\r\n @Output() itemsChange = new EventEmitter<MenubarItem[]>();\r\n @Output() activeItemChange = new EventEmitter<MenubarItem>();\r\n @Output() activeSubItemChange = new EventEmitter<MenubarItemSubItem|MenubarItemSubItemSubItem>();\r\n\r\n /**\r\n * label, diferentes formas de implementar, enumeradas por prioridad\r\n * 1) incluir componente menubar-label anidado\r\n * 2) incluir template\r\n * 3) incluir objeto label (interfaz expuesta)\r\n * 4) incluir legendText - incluir un label con solo un texto\r\n */\r\n @Input() labelRef: TemplateRef<LabelComponent>;\r\n @Input() labelData: LabelData;\r\n @Input() labelText: string;\r\n\r\n @ViewChild('menubar', { read: ElementRef }) menubar: ElementRef;\r\n @ViewChildren(MenubaritemDirective) menuItems: QueryList<MenubaritemDirective>;\r\n @DesyContentChild() @ContentChildren(MenubarLabelComponent) labelComponent: MenubarLabelComponent;\r\n @ContentChildren(MenubarItemComponent) itemComponentList: QueryList<MenubarItemComponent>;\r\n\r\n menuData: any[];\r\n viewInit = false;\r\n isFocused: boolean;\r\n currentFocusItemIndex = 0;\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n ngOnChanges(changes?: SimpleChanges): void {\r\n if (this.viewInit) {\r\n this.checkChanges();\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.viewInit = true;\r\n this.checkChanges();\r\n }\r\n\r\n checkChanges(): void {\r\n if (!this.menuItems) {\r\n return;\r\n }\r\n this.menuData = [];\r\n this.getItems().forEach((_, index) => {\r\n const itemData = {\r\n open: false,\r\n currentFocusSubItemIndex: 0,\r\n currentFocusSubSubItemIndex: 0,\r\n menuItem: this.menuItems.toArray()[index]\r\n };\r\n this.menuData.push(itemData);\r\n });\r\n\r\n if (this.viewInit) {\r\n this.checkRequired();\r\n }\r\n\r\n\r\n const lastCurrentFocusItemIndex = this.currentFocusItemIndex;\r\n const items = this.getItems();\r\n if (items) {\r\n while (!this.isItemFocusable(this.currentFocusItemIndex % items.length)) {\r\n this.currentFocusItemIndex = (this.currentFocusItemIndex + items.length + 1) % items.length;\r\n if (this.currentFocusItemIndex === lastCurrentFocusItemIndex) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n /*\r\n * Eventos\r\n */\r\n\r\n handleMenuFocusIn(): void {\r\n this.isFocused = true;\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n handleMenuFocusOut(event): void {\r\n if (!this.menubar.nativeElement.contains(event.relatedTarget)) {\r\n this.closeMenu();\r\n }\r\n this.isFocused = false;\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n handleMenuItemClick(event, itemIndex: number): void {\r\n if (this.hasPopupMenu(itemIndex)) {\r\n event.preventDefault();\r\n const isOpen = this.menuData[itemIndex].open;\r\n this.closeMenu();\r\n if (!isOpen) {\r\n this.openMenu(itemIndex);\r\n }\r\n } else {\r\n this.activateMenuItem(itemIndex);\r\n }\r\n }\r\n\r\n handleMenuItemKeydown(event: KeyboardEvent, itemIndex: number): void {\r\n switch (event.key) {\r\n case 'Enter':\r\n case ' ':\r\n case 'ArrowDown':\r\n if (this.hasPopupMenu(itemIndex)) {\r\n this.openMenu(itemIndex);\r\n setTimeout(() => this.focusFirstSubItem(itemIndex));\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n break;\r\n\r\n case 'Escape':\r\n if (this.hasPopupMenu(itemIndex)) {\r\n this.closeMenu(itemIndex);\r\n }\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'ArrowLeft':\r\n this.focusNextAvailableItem(itemIndex, -1);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'ArrowRight':\r\n this.focusNextAvailableItem(itemIndex, +1);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'ArrowUp':\r\n if (this.hasPopupMenu(itemIndex)) {\r\n this.openMenu(itemIndex);\r\n setTimeout(() => this.focusLastSubItem(itemIndex));\r\n }\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'Home':\r\n case 'PageUp':\r\n if (this.hasPopupMenu(itemIndex)) {\r\n this.closeMenu();\r\n }\r\n this.focusFirstItem();\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'End':\r\n case 'PageDown':\r\n if (this.hasPopupMenu(itemIndex)) {\r\n this.closeMenu();\r\n }\r\n this.focusLastItem();\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n default:\r\n if (this.isPrintableChar(event.key)) {\r\n this.focusItemByFirstChar(event.key);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n break;\r\n }\r\n }\r\n\r\n handleMenuItemMouseOver(itemIndex: number): void {\r\n this.focusItem(itemIndex, true);\r\n }\r\n\r\n handlePopupMenuItemClick(itemIndex: number, subItemIndex: number, subSubItemIndex?: number): void {\r\n this.activatePopupMenuItem(itemIndex, subItemIndex, subSubItemIndex);\r\n this.focusItem(itemIndex);\r\n this.closeMenu(itemIndex);\r\n }\r\n\r\n handlePopupMenuItemKeydown(event: KeyboardEvent, itemIndex: number, subItemIndex: number, subSubItemIndex?: number): void {\r\n const currentSubIndex = this.menuData[itemIndex].currentFocusSubItemIndex;\r\n const currentSubSubIndex = this.menuData[itemIndex].currentFocusSubSubItemIndex;\r\n const items = this.getItems();\r\n switch (event.key) {\r\n case ' ':\r\n this.activatePopupMenuItem(itemIndex, subItemIndex, subSubItemIndex);\r\n if (this.mustCloseAfterSelectPopupItem(itemIndex, subItemIndex, subSubItemIndex)) {\r\n this.closeMenu(itemIndex);\r\n this.focusItem(itemIndex);\r\n }\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'Enter':\r\n this.activatePopupMenuItem(itemIndex, subItemIndex, subSubItemIndex);\r\n this.closeMenu(itemIndex);\r\n this.focusItem(itemIndex);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'Escape':\r\n this.closeMenu(itemIndex);\r\n this.focusItem(itemIndex);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'ArrowUp':\r\n this.focusNextAvailableSubItem(itemIndex, currentSubIndex, currentSubSubIndex, -1);\r\n // this.focusSubItem(itemIndex, (currentSubIndex + listLength - 1) % listLength);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'ArrowDown':\r\n this.focusNextAvailableSubItem(itemIndex, currentSubIndex, currentSubSubIndex, +1);\r\n // this.focusSubItem(itemIndex, (currentSubIndex + listLength + 1) % listLength);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'ArrowLeft':\r\n this.closeMenu(itemIndex);\r\n this.focusItem((itemIndex + items.length - 1) % items.length);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'ArrowRight':\r\n this.closeMenu(itemIndex);\r\n this.focusItem((itemIndex + items.length + 1) % items.length);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'Home':\r\n case 'PageUp':\r\n this.focusFirstSubItem(itemIndex);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'End':\r\n case 'PageDown':\r\n this.focusLastSubItem(itemIndex);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n break;\r\n\r\n case 'Tab':\r\n this.closeMenu(itemIndex);\r\n this.focusItem(itemIndex);\r\n break;\r\n\r\n default:\r\n if (this.isPrintableChar(event.key)) {\r\n this.focusSubItemByFirstChar(itemIndex, event.key);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n break;\r\n }\r\n }\r\n\r\n handlePopupMenuItemMouseOver(itemIndex: number, subItemIndex: number, subSubItemIndex?: number): void {\r\n this.focusSubItem(itemIndex, subItemIndex, subSubItemIndex);\r\n }\r\n\r\n /*\r\n * Comunes\r\n */\r\n\r\n checkRequired(): void {\r\n if (!this.id) {\r\n throw Error('id is required');\r\n }\r\n\r\n if (!this.ariaLabel) {\r\n throw Error('ariaLabel is required');\r\n }\r\n\r\n const items = this.getItems();\r\n if (!items || items.length === 0) {\r\n throw Error('Items are required');\r\n }\r\n\r\n // No se ha puesto label required porque en algunos ejemplos de desy-html no aparece\r\n }\r\n\r\n handleEmptyItem(text: string): void {\r\n throw Error(text);\r\n }\r\n\r\n activateMenuItem(itemIndex: number): void {\r\n const items = this.getItems();\r\n this.activeItemChange.emit(items[itemIndex] as MenubarItem);\r\n if (items[itemIndex] instanceof MenubarItemComponent) {\r\n (items[itemIndex] as MenubarItemComponent).selected.emit();\r\n }\r\n }\r\n\r\n activatePopupMenuItem(itemIndex: number, subItemIndex: number, subSubItemIndex?: number): void {\r\n const items = this.getItems();\r\n const subItems = this.getItemSubitems(items[itemIndex]);\r\n let item: MenubarItemSubItem|MenubarItemSubItemSubItem = subItems[subItemIndex];\r\n let subSubItems = [];\r\n if (subSubItemIndex !== null && subSubItemIndex !== undefined) {\r\n subSubItems = this.getSubItemSubitems(item);\r\n item = subSubItems[subSubItemIndex];\r\n }\r\n\r\n let checkedChange = false;\r\n if (item.role === 'menuitemcheckbox') {\r\n item.checked = !item.checked;\r\n checkedChange = true;\r\n } else if (item.role === 'menuitemradio') {\r\n checkedChange = !item.checked;\r\n subSubItems.forEach(i => i.checked = false);\r\n item.checked = true;\r\n }\r\n\r\n this.itemsChange.emit(items);\r\n this.activeSubItemChange.emit(item as MenubarItem);\r\n if (item instanceof MenubarSubitemComponent || item instanceof MenubarSubsubitemComponent) {\r\n item.selected.emit();\r\n\r\n if (checkedChange) {\r\n item.checkedChange.emit(item.checked);\r\n }\r\n }\r\n }\r\n\r\n mustCloseAfterSelectPopupItem(itemIndex: number, subItemIndex: number, subSubItemIndex?: number): boolean {\r\n const items = this.getItems();\r\n const subItems = this.getItemSubitems(items[itemIndex]);\r\n let item: MenubarItemSubItem|MenubarItemSubItemSubItem = subItems[subItemIndex];\r\n if (subSubItemIndex !== null && subSubItemIndex !== undefined) {\r\n const subSubItems = this.getSubItemSubitems(item);\r\n item = subSubItems[subSubItemIndex];\r\n }\r\n\r\n return item.role !== 'menuitemcheckbox' && item.role !== 'menuitemradio';\r\n }\r\n\r\n openMenu(itemIndex: number): void {\r\n const wasOpened = this.menuData[itemIndex].open;\r\n this.menuData[itemIndex].open = true;\r\n if (wasOpened) {\r\n this.activateMenuItem(itemIndex);\r\n }\r\n }\r\n\r\n closeMenu(itemIndex?: number): void {\r\n if (itemIndex !== null && itemIndex !== undefined) {\r\n this.menuData[itemIndex].open = false;\r\n } else {\r\n this.menuData.forEach(item => item.open = false);\r\n }\r\n }\r\n\r\n hasPopupMenu(itemIndex: number): boolean {\r\n const items = this.getItems();\r\n const subItems = this.getItemSubitems(items[itemIndex]);\r\n return items[itemIndex].sub && subItems && subItems.length > 0;\r\n }\r\n\r\n private isPrintableChar(str: string): boolean {\r\n return str.length === 1 && !!str.match(/\\S/);\r\n }\r\n\r\n private getMenuDataIndex(itemIndex: number, subItemIndex: number, subSubItemIndex?: number): number {\r\n let menuDataIndex = 0;\r\n const items = this.getItems();\r\n const subItems = this.getItemSubitems(items[itemIndex]);\r\n for (let i = 0; i < subItemIndex; i++) {\r\n const subItem = subItems[i];\r\n const subSubItems = this.getSubItemSubitems(subItem);\r\n menuDataIndex += subSubItems && subSubItems.length > 0 ? subSubItems.length : 1;\r\n }\r\n\r\n if (subSubItemIndex !== null && subSubItemIndex !== undefined) {\r\n menuDataIndex += subSubItemIndex;\r\n }\r\n\r\n return menuDataIndex;\r\n }\r\n\r\n /*\r\n * Comunes - focus\r\n */\r\n\r\n focusItem(itemIndex: number, hover?: boolean): void {\r\n const hasFocus = this.menubar.nativeElement.contains(document.activeElement);\r\n const isOpen = this.menuData[this.currentFocusItemIndex].open;\r\n\r\n if (!hover || hasFocus) {\r\n this.menuData[itemIndex].menuItem.link.nativeElement.focus();\r\n }\r\n\r\n this.closeMenu();\r\n if (isOpen && this.hasPopupMenu(itemIndex)) {\r\n this.openMenu(itemIndex);\r\n }\r\n\r\n this.currentFocusItemIndex = itemIndex;\r\n }\r\n\r\n focusNextAvailableItem(fromItemIndex: number, step: number): void {\r\n let nextItem = fromItemIndex;\r\n const items = this.getItems();\r\n do {\r\n nextItem = (nextItem + items.length + step) % items.length;\r\n } while (!this.isItemFocusable(nextItem) && nextItem !== fromItemIndex);\r\n\r\n if (nextItem !== fromItemIndex) {\r\n this.focusItem(nextItem);\r\n }\r\n }\r\n\r\n focusFirstItem(): void {\r\n if (this.isItemFocusable(0)) {\r\n this.focusItem(0);\r\n } else {\r\n this.focusNextAvailableItem(0, +1);\r\n }\r\n }\r\n\r\n focusLastItem(): void {\r\n const items = this.getItems();\r\n if (this.isItemFocusable(items.length - 1)) {\r\n this.focusItem(items.length - 1);\r\n } else {\r\n this.focusNextAvailableItem(items.length - 1, -1);\r\n }\r\n }\r\n\r\n isItemFocusable(itemIndex: number): boolean {\r\n return !this.getItems()[itemIndex].disabled;\r\n }\r\n\r\n focusItemByFirstChar(char: string): void {\r\n const itemContents: string[] = this.menuItems.map(menuItem => menuItem.itemContentWrapper.nativeElement.textContent);\r\n let index = this.currentFocusItemIndex;\r\n let foundIndex = -1;\r\n do {\r\n index = (index + itemContents.length + 1) % itemContents.length;\r\n if (itemContents[index] && itemContents[index].trim().substr(0, 1).toLowerCase() === char.toLowerCase()\r\n && this.isItemFocusable(index)) {\r\n foundIndex = index;\r\n }\r\n } while (foundIndex === -1 && index !== this.currentFocusItemIndex);\r\n\r\n if (foundIndex >= 0) {\r\n this.focusItem(foundIndex);\r\n }\r\n }\r\n\r\n focusSubItem(itemIndex: number, subItemIndex: number, subSubItemIndex?: number): void {\r\n if (this.menuData[itemIndex].menuItem.popupMenuItems.length > 0) {\r\n const menuDataIndex = this.getMenuDataIndex(itemIndex, subItemIndex, subSubItemIndex);\r\n\r\n this.menuData[itemIndex].currentFocusSubItemIndex = subItemIndex;\r\n this.menuData[itemIndex].currentFocusSubSubItemIndex = subSubItemIndex;\r\n const elem = this.menuData[itemIndex].menuItem.popupMenuItems.toArray()[menuDataIndex].nativeElement;\r\n if (elem) {\r\n elem.focus();\r\n } else {\r\n console.error('No subitem to focus');\r\n }\r\n } else {\r\n console.error('No subitems');\r\n }\r\n }\r\n\r\n focusNextAvailableSubItem(itemIndex: number, fromItemSubIndex: number, fromItemSubSubIndex: number, step: number): void {\r\n let nextSubIndex = fromItemSubIndex;\r\n let nextSubSubIndex = fromItemSubSubIndex;\r\n let allSubItemsChecked;\r\n const items = this.getItems();\r\n do {\r\n const nextIndexes = this.getNextSubItemIndexes(items, itemIndex, nextSubIndex, nextSubSubIndex, step);\r\n nextSubIndex = nextIndexes.subIndex;\r\n nextSubSubIndex = nextIndexes.subSubIndex;\r\n allSubItemsChecked = (fromItemSubIndex === nextSubIndex && fromItemSubSubIndex === nextSubSubIndex);\r\n } while (!this.isSubItemFocusable(itemIndex, nextSubIndex, nextSubSubIndex) && !allSubItemsChecked);\r\n\r\n if (!allSubItemsChecked) {\r\n this.focusSubItem(itemIndex, nextSubIndex, nextSubSubIndex);\r\n }\r\n }\r\n\r\n focusFirstSubItem(itemIndex: number): void {\r\n let firstSubSubItem = null;\r\n const items = this.getItems();\r\n const subItems = this.getItemSubitems(items[itemIndex]);\r\n const subSubItems = this.getSubItemSubitems(subItems[0]);\r\n if (subSubItems && subSubItems.length > 0) {\r\n firstSubSubItem = 0;\r\n }\r\n\r\n if (this.isSubItemFocusable(itemIndex, 0, firstSubSubItem)) {\r\n this.focusSubItem(itemIndex, 0, firstSubSubItem);\r\n } else {\r\n this.focusNextAvailableSubItem(itemIndex, 0, firstSubSubItem, +1);\r\n }\r\n }\r\n\r\n focusLastSubItem(itemIndex: number): void {\r\n const items = this.getItems();\r\n const subItems = this.getItemSubitems(items[itemIndex]);\r\n const lastItemIndex = subItems.length - 1;\r\n const lastItem = subItems[lastItemIndex];\r\n const subSubItems = this.getSubItemSubitems(lastItem);\r\n let lastSubSubItem = null;\r\n if (subSubItems && subSubItems.length > 0) {\r\n lastSubSubItem = subSubItems.length - 1;\r\n }\r\n\r\n if (this.isSubItemFocusable(itemIndex, lastItemIndex, lastSubSubItem)) {\r\n this.focusSubItem(itemIndex, lastItemIndex, lastSubSubItem);\r\n } else {\r\n this.focusNextAvailableSubItem(itemIndex, lastItemIndex, lastSubSubItem, -1);\r\n }\r\n }\r\n\r\n isSubItemFocusable(itemIndex: number, subItemIndex: number, subSubItemIndex?: number): boolean {\r\n const items = this.getItems();\r\n const subItems = this.getItemSubitems(items[itemIndex]);\r\n let item: MenubarItemSubItem|MenubarItemSubItemSubItem = subItems[subItemIndex];\r\n if (subSubItemIndex !== null && subSubItemIndex !== undefined) {\r\n const subSubItems = this.getSubItemSubitems(item);\r\n item = subSubItems[subSubItemIndex];\r\n }\r\n\r\n let isFocusable = false;\r\n if (item.role !== 'separator' && item.role !== 'none') {\r\n isFocusable = true;\r\n }\r\n\r\n return isFocusable;\r\n }\r\n\r\n focusSubItemByFirstChar(itemIndex: number, char: string): void {\r\n const itemContents: string[] = this.menuItems.toArray()[itemIndex].popupMenuItems.map(menuItem => menuItem.nativeElement.textContent);\r\n let subItemIndex = this.menuData[itemIndex].currentFocusSubItemIndex;\r\n let subSubItemIndex = this.menuData[itemIndex].currentFocusSubSubItemIndex;\r\n let foundSubIndex = -1;\r\n let foundSubSubIndex = null;\r\n let allSubItemsChecked = false;\r\n const items = this.getItems();\r\n do {\r\n const nextIndexes = this.getNextSubItemIndexes(items, itemIndex, subItemIndex, subSubItemIndex, +1);\r\n subItemIndex = nextIndexes.subIndex;\r\n subSubItemIndex = nextIndexes.subSubIndex;\r\n const index = this.getMenuDataIndex(itemIndex, subItemIndex, subSubItemIndex);\r\n if (itemContents[index] && itemContents[index].trim().substr(0, 1).toLowerCase() === char.toLowerCase()\r\n && this.isSubItemFocusable(itemIndex, subItemIndex, subSubItemIndex)) {\r\n foundSubIndex = subItemIndex;\r\n foundSubSubIndex = subSubItemIndex;\r\n }\r\n allSubItemsChecked = (this.menuData[itemIndex].currentFocusSubItemIndex === subItemIndex\r\n && this.menuData[itemIndex].currentFocusSubSubItemIndex === subSubItemIndex);\r\n } while (foundSubIndex === -1 && !allSubItemsChecked);\r\n\r\n if (foundSubIndex >= 0) {\r\n this.focusSubItem(itemIndex, foundSubIndex, foundSubSubIndex);\r\n }\r\n }\r\n\r\n /*\r\n * Metodos para facilitar contenido\r\n */\r\n\r\n getItems(): MenubarItem[]|MenubarItemComponent[] {\r\n let items;\r\n if (this.itemComponentList && this.itemComponentList.length > 0) {\r\n items = this.itemComponentList.toArray();\r\n } else {\r\n items = this.items;\r\n }\r\n return items;\r\n }\r\n\r\n getItemSubitems(item: MenubarItem|MenubarItemComponent): MenubarItemSubItem[]|MenubarSubitemComponent[] {\r\n let subItems = [];\r\n if (item instanceof MenubarItemComponent){\r\n subItems = item.getSubItems();\r\n }\r\n\r\n if (!subItems || subItems.length === 0) {\r\n subItems = item.sub ? item.sub.items : [];\r\n }\r\n\r\n return subItems;\r\n }\r\n\r\n getSubItemSubitems(item: MenubarItemSubItem|MenubarSubitemComponent): MenubarItemSubItemSubItem[]|MenubarSubsubitemComponent[] {\r\n let subItems = [];\r\n\r\n if (item.role === 'group') {\r\n if (item instanceof MenubarSubitemComponent) {\r\n subItems = item.getSubItems();\r\n }\r\n\r\n if (!subItems || subItems.length === 0) {\r\n subItems = item.items ? item.items : [];\r\n }\r\n }\r\n\r\n return subItems;\r\n }\r\n\r\n getNextSubItemIndexes(items, itemIndex, nextSubIndex, nextSubSubIndex, step): { subIndex: number, subSubIndex?: number} {\r\n const subItems = this.getItemSubitems(items[itemIndex]);\r\n const subSubItems = this.getSubItemSubitems(subItems[nextSubIndex]);\r\n\r\n let checkNextSubItem = true;\r\n if (subSubItems && subSubItems.length > 0) {\r\n if (nextSubSubIndex + step >= 0 && nextSubSubIndex + step < subSubItems.length) {\r\n nextSubSubIndex += step;\r\n checkNextSubItem = false;\r\n }\r\n }\r\n\r\n if (checkNextSubItem) {\r\n nextSubIndex = (nextSubIndex + step + subItems.length) % subItems.length;\r\n const nextSubItemItems = this.getSubItemSubitems(subItems[nextSubIndex]);\r\n if (nextSubItemItems && nextSubItemItems.length > 0) {\r\n nextSubSubIndex = ((step > 0 ? -1 : 0) + step + nextSubItemItems.length) % nextSubItemItems.length;\r\n } else {\r\n nextSubSubIndex = null;\r\n }\r\n }\r\n\r\n return {subIndex: nextSubIndex, subSubIndex: nextSubSubIndex};\r\n }\r\n\r\n getIdPrefix(): string {\r\n return this.idPrefix ? this.idPrefix : this.id + 'menubar-item';\r\n }\r\n\r\n getLabelRef(): TemplateRef<any> {\r\n return this.labelComponent ? this.labelComponent.getContent() : this.labelRef;\r\n }\r\n\r\n getLabelContent(): string {\r\n let content: string;\r\n if (this.labelData) {\r\n content = this.labelData.html ? this.labelData.html : `<p>${ StringUtils.escapeHtml(this.labelData.text) }</p>`;\r\n } else if (this.labelText) {\r\n content = `<p>${ StringUtils.escapeHtml(this.labelText) }</p>`;\r\n }\r\n return content;\r\n }\r\n\r\n getItemId(item, index: number): string {\r\n let id: string;\r\n if (item) {\r\n if (item.id) {\r\n id = item.id;\r\n } else {\r\n id = index === 0 ? this.getIdPrefix() : `${this.getIdPrefix()}-${index}`;\r\n }\r\n }\r\n return id;\r\n }\r\n\r\n getPopupStyle(itemIndex: number): object {\r\n let style = {};\r\n if (this.menuData && itemIndex < this.menuData.length) {\r\n const menuItem = this.menuData[itemIndex].menuItem;\r\n const rect = menuItem.link.nativeElement.getBoundingClientRect();\r\n if (this.menuData[itemIndex].open) {\r\n style = {\r\n position: 'absolute',\r\n top: (rect.height - 1) + 'px',\r\n left: '0px',\r\n zIndex: 100,\r\n display: 'block'\r\n };\r\n } else {\r\n style = {\r\n zIndex: 0,\r\n display: 'none'\r\n };\r\n }\r\n }\r\n\r\n return style;\r\n }\r\n\r\n getSubItemId(item, index: number, parentId: string): string {\r\n let id: string;\r\n if (item) {\r\n if (item.id) {\r\n id = item.id;\r\n } else {\r\n id = index === 0 ? `sub-${parentId}` : `sub-${parentId}-${index}`;\r\n }\r\n }\r\n return id;\r\n }\r\n\r\n getSubSubItemAriaChecked(subsubitem): string {\r\n let ariaChecked = null;\r\n if (subsubitem.role === 'menuitemcheckbox' || subsubitem.role === 'menuitemradio') {\r\n ariaChecked = !!subsubitem.checked;\r\n }\r\n return ariaChecked;\r\n }\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\nimport {NotificationItemsData} from '../../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-notification-item',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class NotificationItemComponent extends ContentBaseComponent implements NotificationItemsData {\r\n @Input() href: string;\r\n @Input() target?: string;\r\n @Input() routerLink?: string;\r\n @Input() fragment?: string;\r\n @Input() id: string;\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n Output,\r\n QueryList,\r\n SimpleChanges\r\n} from '@angular/core';\r\n\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\nimport {NotificationItemsData} from '../../interfaces';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport {TitleComponent} from '../../../desy-commons/components/title/title.component';\r\nimport {IconComponent} from '../../../desy-commons/components/icon/icon.component';\r\nimport {DescriptionComponent} from '../../../desy-commons/components/description/description.component';\r\nimport {ContentComponent} from '../../../desy-commons/components/content/content.component';\r\nimport {NotificationItemComponent} from './notification-item/notification-item.component';\r\nimport {ContentData, DescriptionData, IconData, TitleData} from '../../../desy-commons/interfaces';\r\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\r\n\r\n@Component({\r\n selector: 'desy-notification',\r\n templateUrl: './notification.component.html',\r\n animations: [\r\n trigger('displayNotification', [\r\n state('void', style({\r\n opacity: '0.0',\r\n transform: 'scaleY(0.95)'\r\n })),\r\n state('*', style({\r\n opacity: '1.0',\r\n transform: 'scaleY(1.0)'\r\n })),\r\n transition(':enter', [\r\n animate('100ms ease-out')\r\n ]),\r\n transition(':leave', [\r\n animate('75ms ease-in')\r\n ])\r\n ])\r\n ]\r\n})\r\nexport class NotificationComponent extends AccessibilityComponent implements OnChanges {\r\n\r\n @Input() id: string;\r\n @Input() classes: string;\r\n @Input() isOpen = true;\r\n @Output() isOpenChange = new EventEmitter<boolean>();\r\n\r\n @Input() title: TitleData;\r\n @Input() description: DescriptionData;\r\n @Input() content: ContentData;\r\n @Input() items: NotificationItemsData[];\r\n\r\n @Input() icon: IconData;\r\n @Input() type: string;\r\n @Input() isDismissible: boolean;\r\n @Input() headingLevel: number;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(TitleComponent) titleComponent: TitleComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(DescriptionComponent) descriptionComponent: DescriptionComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(ContentComponent) contentComponent: ContentComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(IconComponent) iconComponent: IconComponent;\r\n\r\n @ContentChildren(NotificationItemComponent) itemCompontents: QueryList<NotificationItemComponent>;\r\n\r\n isDismissing = false;\r\n displayDefaultIcon = false;\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n dismiss(): void {\r\n // Se emite 75ms más tarde para poder visualizar la animación en cualquier caso\r\n this.isDismissing = true;\r\n setTimeout(() => {\r\n this.isDismissing = false;\r\n this.isOpenChange.emit(false);\r\n }, 75);\r\n }\r\n\r\n getType(): string {\r\n let type: string;\r\n if (this.type){\r\n type = this.type.toLocaleLowerCase();\r\n }\r\n return type;\r\n }\r\n\r\n getItems(): NotificationItemsData[] {\r\n return this.itemCompontents && this.itemCompontents.length > 0 ? this.itemCompontents.toArray() : this.items;\r\n }\r\n\r\n handleIconEmpty(empty: boolean): void {\r\n this.displayDefaultIcon = empty;\r\n\r\n // Como que el contenido vacío se comprueba a posteriori, es necesario forzar la detección de cambios para mostrar el icono por defecto\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n handleRequiredEmpty(text: string): void {\r\n throw new Error(text);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.id){\r\n throw new Error(`id is required`);\r\n }\r\n }\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\nimport {CellData} from '../../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-table-cell',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class TableCellComponent extends ContentBaseComponent implements CellData {\r\n @Input() classes?: string;\r\n @Input() id?: string;\r\n @Input() colspan?: number;\r\n @Input() rowspan?: number;\r\n}\r\n","import {Component, ContentChildren, QueryList} from '@angular/core';\r\nimport {TableCellComponent} from './table-cell.component';\r\n\r\n@Component({\r\n selector: 'desy-table-header',\r\n template: ''\r\n})\r\nexport class TableHeaderComponent {\r\n @ContentChildren(TableCellComponent) cells: QueryList<TableCellComponent>;\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-table-caption',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class TableCaptionComponent extends ContentBaseComponent {\r\n @Input() classes: string;\r\n}\r\n","import {Component, ContentChildren, QueryList} from '@angular/core';\r\nimport {TableCellComponent} from './table-cell.component';\r\n\r\n@Component({\r\n selector: 'desy-table-row',\r\n template: ''\r\n})\r\nexport class TableRowComponent {\r\n @ContentChildren(TableCellComponent) cells: QueryList<TableCellComponent>;\r\n}\r\n","import {Component, Input, ContentChildren, QueryList} from '@angular/core';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\nimport {CellData, WrapperData} from '../../interfaces';\r\nimport {TableHeaderComponent} from './components/table-header.component';\r\nimport {TableCellComponent} from './components/table-cell.component';\r\nimport {TableCaptionComponent} from './components/table-caption.component';\r\nimport {TableRowComponent} from './components/table-row.component';\r\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\r\n\r\n\r\n@Component({\r\n selector: 'desy-table',\r\n templateUrl: './table.component.html'\r\n})\r\nexport class TableComponent extends AccessibilityComponent {\r\n\r\n @Input() rows: Array<CellData[]>;\r\n @Input() head: CellData[];\r\n @Input() caption: string;\r\n @Input() captionClasses: string;\r\n @Input() firstCellIsHeader: boolean;\r\n @Input() classes: string;\r\n @Input() id: string;\r\n @Input() wrapper: WrapperData;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(TableCaptionComponent) captionComponent: TableCaptionComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(TableHeaderComponent) headerComponent: TableHeaderComponent;\r\n\r\n @ContentChildren(TableRowComponent) rowComponentList: QueryList<TableRowComponent>;\r\n\r\n getCaptionClass(): string {\r\n return this.captionComponent ? this.captionComponent.classes : this.captionClasses;\r\n }\r\n\r\n getHeaderCells(): TableCellComponent[]|CellData[] {\r\n let headerCells = [];\r\n if (this.headerComponent && this.headerComponent.cells) {\r\n headerCells = this.headerComponent.cells.toArray();\r\n } else if (this.head) {\r\n headerCells = this.head;\r\n }\r\n return headerCells;\r\n }\r\n\r\n getRows(): TableRowComponent[]|CellData[][] {\r\n const rowList = this.rowComponentList && this.rowComponentList.length > 0 ? this.rowComponentList.toArray() : this.rows;\r\n if (!rowList || rowList.length === 0) {\r\n throw new Error(`rows are required`);\r\n }\r\n return rowList;\r\n }\r\n\r\n getRowCells(row: TableRowComponent|CellData[]): TableCellComponent[]|CellData[] {\r\n return row instanceof TableRowComponent ? row.cells.toArray() : row;\r\n }\r\n\r\n handleEmptyCell(cell: TableCellComponent|CellData, row: number, cellIndex: number): void {\r\n if (cell instanceof TableCellComponent) {\r\n throw new Error(`Content is required for cell at position ${cellIndex} of row ${row}`);\r\n } else {\r\n throw new Error(`Text or Html are required for cell at position ${cellIndex} of row ${row}`);\r\n }\r\n }\r\n}\r\n\r\n","export class SearchUtils {\r\n\r\n /**\r\n * Comprueba si una cadena de texto (target) contiene cualquier palabra de otro texto (text)\r\n * @param target - Texto en el que buscar\r\n * @param text - Texto a buscar\r\n * @param fullWord - Indica si las palabras del texto a buscar deben aparecer enteras\r\n */\r\n public static containsAnyWordFrom(target: string, text: string, fullWord?: boolean): boolean {\r\n let words: string[] = [];\r\n let includes = false;\r\n const simplifiedTarget = this.getSimplifiedString(target);\r\n\r\n if (text && text.split(' ').length > 1) {\r\n words = text.split(' ');\r\n }\r\n words.push(text);\r\n\r\n words.forEach(word => {\r\n if (simplifiedTarget && word) {\r\n if ((fullWord && simplifiedTarget === this.getSimplifiedString(word))\r\n || (!fullWord && simplifiedTarget.includes(this.getSimplifiedString(word)))) {\r\n includes = true;\r\n }\r\n }\r\n });\r\n\r\n return includes;\r\n }\r\n\r\n /**\r\n * Convierte a mayúsculas, elimina espacios y reemplaza/elimina caracteres especiales para realizar comparaciones más tolerantes\r\n * @param str - cadena de entrada\r\n */\r\n private static getSimplifiedString(str: string): string {\r\n let res = str;\r\n if (str) {\r\n res = str.toLocaleUpperCase().trim();\r\n res = res.replace('Á', 'A');\r\n res = res.replace('É', 'E');\r\n res = res.replace('Í', 'I');\r\n res = res.replace('Ó', 'O');\r\n res = res.replace('Ú', 'U');\r\n res = res.replace('À', 'A');\r\n res = res.replace('È', 'E');\r\n res = res.replace('Ì', 'I');\r\n res = res.replace('Ò', 'O');\r\n res = res.replace('Ù', 'U');\r\n res = res.replace('Ä', 'A');\r\n res = res.replace('Ë', 'E');\r\n res = res.replace('Ï', 'I');\r\n res = res.replace('Ö', 'O');\r\n res = res.replace('Ü', 'U');\r\n res = res.replace(',', '');\r\n res = res.replace('.', '');\r\n res = res.replace('\\'', '');\r\n res = res.replace('\"', '');\r\n }\r\n\r\n return res;\r\n }\r\n}\r\n","import { CellData } from './cell-data';\r\n\r\nexport interface HeadCellData extends CellData {\r\n orderBy?: OrderBy; // Possible values `none`, `asc`, `desc`.\r\n hasFilter?: boolean;\r\n filterClasses?: string;\r\n}\r\n\r\nexport interface HeadCellModelData extends HeadCellData {\r\n valueFilter?: string;\r\n activeFilter?: boolean;\r\n}\r\n\r\nexport enum OrderBy {\r\n none = 'none',\r\n asc = 'asc',\r\n desc = 'desc'\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {HeadCellModelData, OrderBy} from '../../../interfaces';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-table-advanced-header-cell',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class TableAdvancedHeaderCellComponent extends ContentBaseComponent implements HeadCellModelData {\r\n @Input() classes: string;\r\n @Input() id: string;\r\n @Input() colspan: number;\r\n @Input() rowspan: number;\r\n @Input() orderBy: OrderBy; // Possible values `none`, `asc`, `desc`.\r\n @Input() hasFilter: boolean;\r\n @Input() filterClasses: string;\r\n valueFilter?: string;\r\n activeFilter?: boolean;\r\n}\r\n","import {Component, ContentChildren, QueryList} from '@angular/core';\r\nimport {TableAdvancedHeaderCellComponent} from './table-advanced-header-cell.component';\r\n\r\n@Component({\r\n selector: 'desy-table-advanced-header',\r\n template: ''\r\n})\r\nexport class TableAdvancedHeaderComponent {\r\n @ContentChildren(TableAdvancedHeaderCellComponent) cells: QueryList<TableAdvancedHeaderCellComponent>;\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\nimport {CellData} from '../../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-table-advanced-row-cell',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class TableAdvancedRowCellComponent extends ContentBaseComponent implements CellData {\r\n @Input() classes?: string;\r\n @Input() id?: string;\r\n @Input() colspan?: number;\r\n @Input() rowspan?: number;\r\n}\r\n","import {Component, ContentChildren, EventEmitter, Input, Output, QueryList} from '@angular/core';\r\nimport {TableAdvancedRowCellComponent} from './table-advanced-row-cell.component';\r\n\r\n@Component({\r\n selector: 'desy-table-advanced-row',\r\n template: ''\r\n})\r\nexport class TableAdvancedRowComponent {\r\n\r\n @ContentChildren(TableAdvancedRowCellComponent) cellsList: QueryList<TableAdvancedRowCellComponent>;\r\n\r\n @Input() id: string;\r\n @Input() checked: boolean;\r\n @Output() checkedChange: EventEmitter<boolean> = new EventEmitter();\r\n}\r\n","import {Directive, ElementRef, Input} from '@angular/core';\r\nimport {RowData} from '../interfaces';\r\nimport {TableAdvancedRowComponent} from '../components/table-advanced/components/table-advanced-row.component';\r\n\r\n/**\r\n * Permite gestionar celdas de una fila de la tabla\r\n */\r\n@Directive({\r\n selector: '[desyCell]'\r\n})\r\nexport class CellDirective {\r\n\r\n @Input() row: RowData|TableAdvancedRowComponent;\r\n @Input() rowIndex: number;\r\n @Input() columnIndex: number;\r\n\r\n constructor(private element: ElementRef) { }\r\n\r\n public getContent(): string {\r\n return this.element.nativeElement.textContent;\r\n }\r\n}\r\n","import {ContentChildren, Directive, Input, QueryList} from '@angular/core';\r\nimport {CellDirective} from './cell.directive';\r\nimport {RowData} from '../interfaces';\r\nimport {TableAdvancedRowComponent} from '../components/table-advanced/components/table-advanced-row.component';\r\n\r\n/**\r\n * Permite gestionar filas de la tabla\r\n */\r\n@Directive({\r\n selector: '[desyRow]'\r\n})\r\nexport class RowDirective {\r\n\r\n @ContentChildren(CellDirective) contentCells: QueryList<CellDirective>;\r\n @Input() desyRow: RowData|TableAdvancedRowComponent;\r\n\r\n\r\n /**\r\n * Devuelve la celda ubicada en la columna indicada\r\n * @param column índice de la columna\r\n */\r\n public getCell(column: number): CellDirective {\r\n return this.contentCells.find(cell => cell.columnIndex === column);\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n QueryList,\r\n ViewChildren\r\n} from '@angular/core';\r\nimport {AccessibilityComponent} from '../../../shared/components';\r\nimport {SearchUtils} from '../../../shared/utils/search-utils';\r\nimport {HeadCellModelData, OrderBy, RowData, WrapperData} from '../../interfaces';\r\nimport {TableCaptionComponent} from '../table/components/table-caption.component';\r\nimport {TableAdvancedHeaderCellComponent} from './components/table-advanced-header-cell.component';\r\nimport {TableAdvancedHeaderComponent} from './components/table-advanced-header.component';\r\nimport {TableAdvancedRowComponent} from './components/table-advanced-row.component';\r\nimport {CellDirective} from '../../directives/cell.directive';\r\nimport {RowDirective} from '../../directives/row.directive';\r\nimport {RecalculateTableParams} from '../../interfaces/recalculate-table-params';\r\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\r\n\r\n@Component({\r\n selector: 'desy-table-advanced',\r\n templateUrl: './table-advanced.component.html'\r\n})\r\nexport class TableAdvancedComponent extends AccessibilityComponent implements AfterViewInit {\r\n\r\n @Input() rows: RowData[]; // original data\r\n @Input() head: HeadCellModelData[];\r\n\r\n @Input() caption: string;\r\n @Input() captionClasses: string;\r\n @Input() firstCellIsHeader: boolean;\r\n @Input() hasCheckboxes: boolean;\r\n @Input() idPrefix: string;\r\n @Input() classes: string;\r\n @Input() checkboxClasses: string;\r\n @Input() id: string;\r\n @Input() wrapper: WrapperData;\r\n\r\n\r\n @DesyContentChild()\r\n @ContentChildren(TableCaptionComponent) captionComponent: TableCaptionComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(TableAdvancedHeaderComponent) headerComponent: TableAdvancedHeaderComponent;\r\n\r\n @ContentChildren(TableAdvancedRowComponent) rowComponentList: QueryList<TableAdvancedRowComponent>;\r\n @ViewChildren(RowDirective) rowData: QueryList<RowDirective>;\r\n\r\n @Output() rowsChange = new EventEmitter();\r\n @Output() rowsChecked = new EventEmitter();\r\n @Output() recalculateTable = new EventEmitter<RecalculateTableParams>();\r\n\r\n visibleRows: RowData[]|TableAdvancedRowComponent[];\r\n orderByType = OrderBy;\r\n isReset: boolean;\r\n\r\n constructor(private el: ElementRef, private changeDetector: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n const elemntsFocus = this.el.nativeElement.querySelector('[tabindex]');\r\n if (elemntsFocus) {\r\n elemntsFocus.setAttribute('tabindex', '0');\r\n }\r\n this.recalculateVisibleElements();\r\n }\r\n\r\n /**\r\n * Refresca las filas visibles tras realizarse una búsqueda o una ordenación\r\n */\r\n recalculateVisibleElements(): void {\r\n const recalculateParams = this.buildRecalculateParams();\r\n\r\n // Si se captura el evento recalculateTable se deja al usuario la responsabilidad de filtrar y ordenar los elementos.\r\n if (this.recalculateTable.observers.length > 0) {\r\n this.recalculateTable.emit(recalculateParams);\r\n this.changeDetector.markForCheck();\r\n } else {\r\n\r\n // Se deben mostrar todas las filas temporalmente para poder aplicar el filtro y la ordenación sobre el contenido insertado\r\n this.visibleRows = this.getRows();\r\n this.changeDetector.detectChanges();\r\n\r\n // Se aplica el filtro y la ordenación\r\n let rowData = this.filterRows(recalculateParams, this.rowData.toArray());\r\n rowData = this.sortRows(recalculateParams, rowData);\r\n this.visibleRows = rowData.map(r => r.desyRow) as RowData[]|TableAdvancedRowComponent[];\r\n this.changeDetector.detectChanges();\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Construye los parámetros necesarios para recalcular la tabla, indicando los filtros y la ordenación\r\n */\r\n private buildRecalculateParams(): RecalculateTableParams {\r\n const params = {\r\n filters: [],\r\n sort: null\r\n };\r\n\r\n const head = this.getHeaderCells() as (HeadCellModelData|TableAdvancedHeaderCellComponent)[];\r\n if (head) {\r\n head.forEach((headerCell, headerCellIndex) => {\r\n if (headerCell.hasFilter && headerCell.activeFilter) {\r\n params.filters.push({ columnIndex: headerCellIndex, filterText: headerCell.valueFilter });\r\n }\r\n });\r\n\r\n const orderByColumnIndex = head.findIndex(cell => cell.orderBy && cell.orderBy !== OrderBy.none);\r\n params.sort = (orderByColumnIndex >= 0) ? { columnIndex: orderByColumnIndex, order: head[orderByColumnIndex].orderBy } : null;\r\n }\r\n\r\n return params;\r\n }\r\n\r\n /**\r\n * funciones de recoger ids, y caracteristicas\r\n */\r\n\r\n hasFilters(): boolean {\r\n const head = this.getHeaderCells();\r\n return head ? head.findIndex(cell => cell.hasFilter) >= 0 : false;\r\n }\r\n\r\n getHeaderCells(): HeadCellModelData[]|TableAdvancedHeaderCellComponent[] {\r\n return this.headerComponent && this.headerComponent.cells.length > 0 ? this.headerComponent.cells.toArray() : this.head;\r\n }\r\n\r\n getRows(): RowData[]|TableAdvancedRowComponent[] {\r\n let rows = [];\r\n if (this.rowComponentList.length > 0) {\r\n rows = this.rowComponentList.toArray();\r\n } else if (this.rows) {\r\n rows = this.rows;\r\n }\r\n return rows;\r\n }\r\n\r\n /**\r\n * Si se sobreescribe el comportamiento por defecto de filtrado y ordenación, se utilizarán las indicadas desde fuera del\r\n * componente (ya sea por parámetro o por contenido).\r\n * Si no se sobreescribe, devuelve las filas calculadas.\r\n */\r\n getVisibleRows(): RowData[]|TableAdvancedRowComponent[] {\r\n return this.recalculateTable.observers.length > 0 ? this.getRows() : this.visibleRows;\r\n }\r\n\r\n getIdPrefix(): string {\r\n return this.idPrefix ? this.idPrefix : 'id-table-row';\r\n }\r\n\r\n getIdHeader(index: number): string {\r\n return this.getIdPrefix() + '-header-' + index;\r\n }\r\n\r\n getIdRowCheckbox(index: number): string {\r\n return this.getIdPrefix() + '-checkbox-' + index;\r\n }\r\n\r\n getIdHeaderFilter(index: number): string {\r\n return this.getIdPrefix() + '-header-filter-' + index;\r\n }\r\n\r\n getCaptionClass(): string {\r\n return this.captionComponent ? this.captionComponent.classes : this.captionClasses;\r\n }\r\n\r\n getStringOrderBy(orderBy: OrderBy): string {\r\n if (orderBy === OrderBy.asc){\r\n return 'ascending';\r\n } else if (orderBy === OrderBy.desc){\r\n return 'descending';\r\n } else if (orderBy === OrderBy.none){\r\n return 'none';\r\n }\r\n }\r\n\r\n handleTableCellContentEmpty(row: number, column: number): void {\r\n throw new Error(`cell content, html or text are required at row ${row} and column ${column}`);\r\n }\r\n\r\n /**\r\n * checks\r\n */\r\n handleCheckboxChange(row: RowData|TableAdvancedRowComponent): void {\r\n if (row instanceof TableAdvancedRowComponent) {\r\n row.checkedChange.emit(row.checked);\r\n }\r\n this.notifyCheckedChange();\r\n }\r\n\r\n /**\r\n * Permite desmarcar todas las filas\r\n */\r\n private uncheckAll(): void{\r\n this.getRows().forEach(r => {\r\n const mustEmit = r.checked && r instanceof TableAdvancedRowComponent;\r\n r.checked = false;\r\n if (mustEmit) {\r\n (r as TableAdvancedRowComponent).checkedChange.emit(r.checked);\r\n }\r\n });\r\n this.notifyCheckedChange();\r\n }\r\n\r\n /**\r\n * Notifica cambios en las filas\r\n */\r\n private notifyCheckedChange(): void {\r\n if (this.rowComponentList.length === 0) {\r\n this.rowsChange.emit(this.rows);\r\n }\r\n\r\n const rowChecks: any = {};\r\n this.getRows().forEach(r => rowChecks[r.id] = !!r.checked); // Se aplican también a las no visibles\r\n this.rowsChecked.emit(rowChecks);\r\n }\r\n\r\n\r\n /**\r\n * busqueda\r\n */\r\n handleInputSearch(item: HeadCellModelData): void {\r\n if (item.hasFilter) { // si tiene buscador\r\n item.activeFilter = !!item.valueFilter;\r\n this.uncheckAll();\r\n }\r\n\r\n this.recalculateVisibleElements();\r\n }\r\n\r\n /**\r\n * Se filtran las filas según lo especificado en la barra de búsqueda de cada columna.\r\n * Si no hay búsqueda sse devuelven todas las filas.\r\n * @param recalculateParams parametros para recalcular los elementos visibles\r\n * @param rows lista con todas las filas\r\n * @return lista de filas filtrada\r\n */\r\n private filterRows(recalculateParams: RecalculateTableParams, rows: RowDirective[]): RowDirective[] {\r\n let filteredRows = rows;\r\n recalculateParams.filters.forEach(filter => {\r\n filteredRows = filteredRows.filter(row =>\r\n SearchUtils.containsAnyWordFrom(row.getCell(filter.columnIndex).getContent(), filter.filterText));\r\n });\r\n\r\n return filteredRows;\r\n }\r\n\r\n /**\r\n * ordenacion\r\n */\r\n\r\n /**\r\n * Permite indicar que se debe ordenar la tabla\r\n * @param index indice de la columna\r\n */\r\n handleSortByColumn(index: number): void {\r\n const head = this.getHeaderCells();\r\n if (head) {\r\n head.forEach((cell, cellIndex) => {\r\n if (cell.orderBy) {\r\n cell.orderBy = cellIndex === index ? this.getNextDirection(cell) : OrderBy.none;\r\n }\r\n });\r\n }\r\n\r\n this.recalculateVisibleElements();\r\n }\r\n\r\n\r\n /**\r\n * Ordena las filas indicadas según la columna especificada en la cabecera\r\n * @param recalculateParams parametros para recalcular los elementos visibles\r\n * @param rows filas de la tabla a ordenar\r\n * @return mismas filas pero ordenadas por la columna indicada\r\n */\r\n private sortRows(recalculateParams: RecalculateTableParams, rows: RowDirective[]): RowDirective[] {\r\n let sortedRows = rows;\r\n if (recalculateParams.sort) {\r\n const columnIndex = recalculateParams.sort.columnIndex;\r\n const isAsc = recalculateParams.sort.order === OrderBy.asc;\r\n sortedRows = rows.sort((a, b) =>\r\n this.compareCellContent(a.getCell(columnIndex), b.getCell(columnIndex), isAsc));\r\n }\r\n\r\n return sortedRows;\r\n }\r\n\r\n /**\r\n * Compara el contenido de dos celdas. Este se invierte si el orden especificado es descendente.\r\n */\r\n compareCellContent(a: CellDirective, b: CellDirective, isAsc: boolean): number{\r\n let result;\r\n const aComparable = this.cleanCurrency(a.getContent());\r\n const bComparable = this.cleanCurrency(b.getContent());\r\n\r\n if (isNaN(+aComparable) && isNaN(+bComparable) ) { // son textos\r\n result = aComparable.localeCompare(bComparable, 'es', { sensitivity: 'base', ignorePunctuation: true });\r\n }else{ // son numeros\r\n result = aComparable.localeCompare(bComparable, undefined, { numeric: true });\r\n }\r\n\r\n return result * (isAsc ? 1 : -1);\r\n }\r\n\r\n /**\r\n * se calcula la ordenación nueva\r\n */\r\n private getNextDirection(item: HeadCellModelData): OrderBy {\r\n if (item.orderBy === OrderBy.none || item.orderBy === OrderBy.desc) {\r\n return OrderBy.asc;\r\n } else {\r\n return OrderBy.desc;\r\n }\r\n }\r\n\r\n /**\r\n * si es una cantidad de dinero se quita € para poder comparar los numeros\r\n */\r\n private cleanCurrency(txt: string): string {\r\n if (/[\\d.,]+[\\€]/g.test(txt)) {\r\n txt = txt.replace(/€/g, '');\r\n }\r\n return txt;\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component, ComponentFactoryResolver, ComponentRef,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n Output,\r\n TemplateRef, Type,\r\n ViewChild, ViewContainerRef\r\n} from '@angular/core';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\nimport { FocusUtils } from '../../../shared/utils/focus-utils';\r\n\r\ntype AlertCreationCallback = ((dialog: AlertComponent, caller: ComponentRef<any>) => void);\r\n\r\n@Component({\r\n selector: 'desy-alert',\r\n templateUrl: './alert.component.html'\r\n})\r\nexport class AlertComponent extends AccessibilityComponent implements OnDestroy, AfterViewInit {\r\n\r\n @ViewChild('alertWrapper') alertWrapper: ElementRef;\r\n @ViewChild('container', {read: ViewContainerRef}) container: ViewContainerRef;\r\n\r\n @Input() id: string;\r\n @Input() classes: string;\r\n @Input() caller: TemplateRef<any>;\r\n @Input() focusFirst: boolean;\r\n\r\n @Input() set active(value: boolean) {\r\n setTimeout(() => {\r\n this._active = value;\r\n this.cdRef.detectChanges();\r\n this.handleActiveState();\r\n });\r\n }\r\n get active(): boolean {\r\n return this._active;\r\n }\r\n @Output() activeChange = new EventEmitter<boolean>();\r\n\r\n private _active: boolean;\r\n public callerContext: any;\r\n public callerType: Type<any>;\r\n public onCallerCreationCallback: AlertCreationCallback;\r\n\r\n private lastActiveState: boolean = undefined;\r\n private hasViewinit = false;\r\n private createdCallerFromType = false;\r\n\r\n constructor(private cdRef: ChangeDetectorRef, private factoryResolver: ComponentFactoryResolver) {\r\n super();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.active = false;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.id) {\r\n throw Error('id is required');\r\n }\r\n\r\n if (!this.caller && !this.callerType) {\r\n throw Error('caller is required');\r\n }\r\n\r\n this.hasViewinit = true;\r\n this.handleActiveState();\r\n }\r\n\r\n dismiss(): void {\r\n this.activeChange.emit(false);\r\n }\r\n\r\n handleActiveState(): void {\r\n if (this._active && this.callerType && !this.createdCallerFromType) {\r\n const factory = this.factoryResolver.resolveComponentFactory(this.callerType);\r\n const component = this.container.createComponent(factory);\r\n if (this.onCallerCreationCallback) {\r\n this.onCallerCreationCallback(this, component);\r\n }\r\n this.createdCallerFromType = true;\r\n }\r\n\r\n if (this._active !== this.lastActiveState && this.hasViewinit) {\r\n this.lastActiveState = this._active;\r\n\r\n if (this._active && this.focusFirst) {\r\n this.cdRef.detectChanges();\r\n const focusElem = FocusUtils.getFirstFocusableElement(this.alertWrapper.nativeElement as HTMLElement);\r\n if (focusElem) {\r\n focusElem.focus();\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\nimport {AccordionHeaderData} from '../../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-accordion-header',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class AccordionHeaderComponent extends ContentBaseComponent implements AccordionHeaderData {\r\n\r\n @Input() classes?: string;\r\n\r\n}\r\n","import {Component, ContentChildren, EventEmitter, Input, Output} from '@angular/core';\r\nimport {AccordionItemData} from '../../../interfaces';\r\nimport {AccordionHeaderComponent} from '../accordion-header/accordion-header.component';\r\nimport {DesyContentChild} from '../../../../shared/decorators/desy-content-child.decorator';\r\nimport {ContentComponent} from '../../../../desy-commons/components/content/content.component';\r\nimport {AccessibilityComponent} from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-accordion-item',\r\n template: '',\r\n})\r\nexport class AccordionItemComponent extends AccessibilityComponent implements AccordionItemData {\r\n\r\n @Input() id: string;\r\n @Input() open: boolean;\r\n @Input() classes: string;\r\n\r\n @Output() openChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n @DesyContentChild()\r\n @ContentChildren(AccordionHeaderComponent) headerComponent: AccordionHeaderComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(ContentComponent) contentComponent: ContentComponent;\r\n\r\n}\r\n","import {Component, ContentChildren, ElementRef, Input, OnChanges, QueryList, SimpleChanges, ViewChildren} from '@angular/core';\r\nimport {AccordionHeaderData} from '../../interfaces';\r\nimport {AccessibilityComponent} from '../../../shared/components';\r\nimport {AccordionItemData} from '../../interfaces';\r\nimport {AccordionHeaderComponent} from './accordion-header/accordion-header.component';\r\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\r\nimport {AccordionItemComponent} from './accordion-item/accordion-item.component';\r\nimport {ContentComponent} from '../../../desy-commons/components/content/content.component';\r\n\r\n\r\n@Component({\r\n selector: 'desy-accordion',\r\n templateUrl: './accordion.component.html'\r\n})\r\nexport class AccordionComponent extends AccessibilityComponent implements OnChanges {\r\n\r\n @ViewChildren('itemSelector') itemSelectors: QueryList<ElementRef>;\r\n\r\n @Input() idPrefix: string;\r\n @Input() allowToggle: boolean;\r\n @Input() allowMultiple: boolean;\r\n @Input() heading: AccordionHeaderData;\r\n @Input() headingLevel;\r\n @Input() showControl: boolean;\r\n @Input() items: AccordionItemData[];\r\n @Input() classes: string;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(AccordionHeaderComponent) headingComponent: AccordionHeaderComponent;\r\n @ContentChildren(AccordionItemComponent) itemComponentList: QueryList<AccordionItemComponent>;\r\n\r\n showAll = true;\r\n currentItem: number;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.idPrefix) {\r\n throw new Error(`idPrefix is required`);\r\n }\r\n }\r\n\r\n getItemId(item, index: number): string {\r\n let id;\r\n if (item.id) {\r\n id = item.id;\r\n } else {\r\n if (index === 0) {\r\n id = this.idPrefix ? this.idPrefix : undefined;\r\n } else {\r\n id = this.idPrefix ? this.idPrefix + '-' + index : index;\r\n }\r\n }\r\n return id;\r\n }\r\n\r\n changeAll(): void {\r\n const items = this.getItems();\r\n items.forEach(item => {\r\n const isChange = item.open !== this.showAll;\r\n item.open = this.showAll;\r\n if (isChange && item instanceof AccordionItemComponent) {\r\n item.openChange.emit(item.open);\r\n }\r\n });\r\n this.showAll = !this.showAll;\r\n }\r\n\r\n toggleItem(item: AccordionItemData): void {\r\n if (!item.open || this.allowToggle) {\r\n const newOpenValue = !item.open;\r\n if (!this.allowMultiple) {\r\n const items = this.getItems();\r\n items.forEach(it => {\r\n const wasOpen = it.open;\r\n it.open = false;\r\n if (wasOpen && it !== item && it instanceof AccordionItemComponent) {\r\n it.openChange.emit(it.open);\r\n }\r\n });\r\n }\r\n item.open = newOpenValue;\r\n if (item instanceof AccordionItemComponent) {\r\n item.openChange.emit(item.open);\r\n }\r\n }\r\n }\r\n\r\n focusFirstItem(event): void {\r\n event.preventDefault();\r\n this.itemSelectors.toArray()[0].nativeElement.focus();\r\n }\r\n\r\n focusLastItem(event): void {\r\n event.preventDefault();\r\n this.itemSelectors.toArray()[this.itemSelectors.length - 1].nativeElement.focus();\r\n }\r\n\r\n focusNextItem(event, focusedItem: number): void {\r\n event.preventDefault();\r\n const selectors = this.itemSelectors.toArray();\r\n if (selectors[(focusedItem + 1) % selectors.length] != null) {\r\n selectors[(focusedItem + 1) % selectors.length].nativeElement.focus();\r\n }\r\n }\r\n\r\n focusPreviousItem(event, focusedItem: number): void {\r\n event.preventDefault();\r\n const selectors = this.itemSelectors.toArray();\r\n if (selectors[(focusedItem + selectors.length - 1) % selectors.length] != null) {\r\n selectors[(focusedItem + selectors.length - 1) % selectors.length].nativeElement.focus();\r\n }\r\n }\r\n\r\n selectItem( i: number ): void {\r\n this.currentItem = i;\r\n }\r\n\r\n getTitleClasses(): string {\r\n let classes = 'c-h2 mb-base';\r\n if (this.headingComponent && this.headingComponent.classes) {\r\n classes = this.headingComponent.classes;\r\n } else if (this.heading && this.heading.classes) {\r\n classes = this.heading.classes;\r\n }\r\n return classes;\r\n }\r\n\r\n getItems(): AccordionItemData[] {\r\n const items = this.itemComponentList && this.itemComponentList.length > 0 ? this.itemComponentList.toArray() : this.items;\r\n if (!items || items.length === 0) {\r\n throw new Error(`items are required`);\r\n }\r\n return items;\r\n }\r\n\r\n getItemHeader(item: AccordionItemData): AccordionHeaderComponent {\r\n return item instanceof AccordionItemComponent ? item.headerComponent : null;\r\n }\r\n\r\n getItemContent(item: AccordionItemData): ContentComponent {\r\n return item instanceof AccordionItemComponent ? item.contentComponent : null;\r\n }\r\n\r\n handleRequiredEmpty(text: string): void {\r\n throw new Error(text);\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-spinner',\r\n templateUrl: './spinner.component.html'\r\n})\r\nexport class SpinnerComponent extends AccessibilityComponent {\r\n\r\n @Input() classes: string;\r\n @Input() text: string;\r\n\r\n @Input() id: string;\r\n\r\n}\r\n","import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-details',\r\n templateUrl: './details.component.html'\r\n})\r\nexport class DetailsComponent extends AccessibilityComponent implements OnInit, OnChanges {\r\n\r\n @Input() summaryText: string;\r\n @Input() summaryHtml: string;\r\n @Input() summaryClasses: string;\r\n @Input() containerClasses: string;\r\n @Input() id: string;\r\n @Input() open: boolean;\r\n @Input() classes: string;\r\n\r\n ngOnInit(): void {\r\n summaryTextOrSummaryHtmlRequiredFunction(this.summaryText, this.summaryHtml);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n summaryTextOrSummaryHtmlRequiredFunction(this.summaryText, this.summaryHtml);\r\n }\r\n\r\n}\r\n\r\nexport function summaryTextOrSummaryHtmlRequiredFunction(text: string, html: string): void {\r\n if (!html && !text) {\r\n throw new Error(`summaryHtml or summaryText are required`);\r\n }\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\nimport {TermDefinitionData} from '../../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-term',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class TermComponent extends ContentBaseComponent implements TermDefinitionData {\r\n\r\n @Input() classes: string;\r\n @Input() id: string;\r\n\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\nimport {TermDefinitionData} from '../../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-definition',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class DefinitionComponent extends ContentBaseComponent implements TermDefinitionData {\r\n\r\n @Input() classes: string;\r\n @Input() id: string;\r\n}\r\n","import {Component, ContentChildren, Input} from '@angular/core';\r\nimport {DescriptionItemData} from '../../../interfaces';\r\nimport {TermComponent} from '../term/term.component';\r\nimport {DefinitionComponent} from '../definition/definition.component';\r\nimport {DesyContentChild} from '../../../../shared/decorators/desy-content-child.decorator';\r\n\r\n@Component({\r\n selector: 'desy-description-item',\r\n template: ''\r\n})\r\nexport class DescriptionItemComponent implements DescriptionItemData {\r\n\r\n @DesyContentChild()\r\n @ContentChildren(TermComponent) term: TermComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(DefinitionComponent) definition: DefinitionComponent;\r\n\r\n @Input() classes: string;\r\n @Input() id: string;\r\n\r\n}\r\n","import {Component, ContentChildren, Input, QueryList} from '@angular/core';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\nimport { DescriptionItemData } from '../../interfaces';\r\nimport {DescriptionItemComponent} from './description-item/description-item.component';\r\n\r\n@Component({\r\n selector: 'desy-description-list',\r\n templateUrl: './description-list.component.html'\r\n})\r\nexport class DescriptionListComponent extends AccessibilityComponent {\r\n\r\n @Input() items: Array<DescriptionItemData>;\r\n @ContentChildren(DescriptionItemComponent) itemComponents: QueryList<DescriptionItemComponent>;\r\n @Input() classes: string;\r\n @Input() id: string;\r\n\r\n handleContentEmpty(element: string): void {\r\n throw new Error(`${element} content, html or text is required`);\r\n }\r\n\r\n getItems(): DescriptionItemData[]|DescriptionItemComponent[] {\r\n const items = (this.itemComponents.length > 0) ? this.itemComponents.toArray() : this.items;\r\n if (!items || items.length === 0) {\r\n throw new Error(`items are required`);\r\n }\r\n return items;\r\n }\r\n\r\n}\r\n","import { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport { Component, Input, OnChanges, OnInit, SimpleChanges, TemplateRef } from '@angular/core';\r\nimport { AccessibilityAndContentRequiredComponent, textOrHtmlRequiredFunction } from '../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-collapsible',\r\n templateUrl: './collapsible.component.html',\r\n animations: [\r\n trigger('displayCollapsible', [\r\n state('void', style({\r\n opacity: '0.0',\r\n transform: 'scaleY(0.95)'\r\n })),\r\n state('*', style({\r\n opacity: '1.0',\r\n transform: 'scaleY(1.0)'\r\n })),\r\n transition(':enter', [\r\n animate('100ms ease-out')\r\n ]),\r\n transition(':leave', [\r\n animate('75ms ease-in')\r\n ])\r\n ])\r\n ]\r\n})\r\nexport class CollapsibleComponent extends AccessibilityAndContentRequiredComponent implements OnInit, OnChanges {\r\n\r\n @Input() headerText: string;\r\n @Input() headerHtml: string;\r\n @Input() id: string;\r\n @Input() open: boolean;\r\n @Input() classes: string;\r\n\r\n show: string;\r\n\r\n isOpen(): void {\r\n this.open = !this.open;\r\n this.toggleOpen();\r\n }\r\n\r\n toggleOpen(): void {\r\n if (this.open){\r\n this.show = 'Ocultar';\r\n } else {\r\n this.show = 'Mostrar';\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n textOrHtmlRequiredFunction(this.text, this.html);\r\n this.toggleOpen();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n textOrHtmlRequiredFunction(this.text, this.html);\r\n this.toggleOpen();\r\n\r\n }\r\n\r\n headerTextOrheaderHtmlRequiredFunction(text: string, html: string, content: any): void {\r\n if (!html && !text && !content) {\r\n throw new Error(`headerHtml or headerText are required`);\r\n }\r\n }\r\n\r\n}\r\n","import { Component } from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-item-content-right',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class ItemContentRightComponent extends ContentBaseComponent {\r\n\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\nimport {ContentData} from '../../../../desy-commons/interfaces';\r\n\r\n@Component({\r\n selector: 'desy-item-content-bottom',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class ItemContentBottomComponent extends ContentBaseComponent implements ContentData {\r\n @Input() classes: string;\r\n\r\n}\r\n","import { Component } from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-item-item',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class ItemItemComponent extends ContentBaseComponent {\r\n\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n Input,\r\n QueryList,\r\n TemplateRef\r\n} from '@angular/core';\r\nimport {AccessibilityComponent} from '../../../shared/components';\r\nimport {ContentData, DescriptionData, IconData, TitleData} from '../../../desy-commons/interfaces';\r\nimport {TitleComponent} from '../../../desy-commons/components/title/title.component';\r\nimport {DescriptionComponent} from '../../../desy-commons/components/description/description.component';\r\nimport {ItemContentRightComponent} from './item-content-right/item-content-right.component';\r\nimport {ItemContentBottomComponent} from './item-content-bottom/item-content-bottom.component';\r\nimport {ItemItemComponent} from './item-item/item-item.component';\r\nimport {IconComponent} from '../../../desy-commons/components/icon/icon.component';\r\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\r\n\r\n@Component({\r\n selector: 'desy-item',\r\n templateUrl: './item.component.html'\r\n})\r\nexport class ItemComponent extends AccessibilityComponent implements AfterViewInit {\r\n\r\n @Input() title: TitleData;\r\n @Input() description: DescriptionData;\r\n @Input() headingLevel: number;\r\n @Input() items: string[];\r\n @Input() content: ContentData;\r\n @Input() icon: IconData;\r\n @Input() isDraggable: boolean;\r\n @Input() isLocked: boolean;\r\n @Input() id: string;\r\n @Input() classes: string;\r\n @Input() caller: TemplateRef<any>;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(TitleComponent) titleComponent: TitleComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(DescriptionComponent) descriptionComponent: DescriptionComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(IconComponent) iconComponent: IconComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(ItemContentBottomComponent) contentBottomComponent: ItemContentBottomComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(ItemContentRightComponent) contentRightComponent: ItemContentRightComponent;\r\n\r\n @ContentChildren(ItemItemComponent) itemComponents: QueryList<ItemItemComponent>;\r\n\r\n hasIconContent = true;\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.titleComponent && !this.title) {\r\n throw new Error('title is required');\r\n }\r\n }\r\n\r\n\r\n getItems(): string[]|ItemItemComponent[] {\r\n return this.itemComponents.length > 0 ? this.itemComponents.toArray() : this.items;\r\n }\r\n\r\n handleIconContentEmpty(isEmpty: boolean): void {\r\n this.hasIconContent = !isEmpty;\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n handleRequiredEmpty(text: string): void {\r\n throw new Error(text);\r\n }\r\n\r\n getTitle(): TitleData {\r\n return this.titleComponent ? this.titleComponent : this.title;\r\n }\r\n\r\n}\r\n","import { Component, Input, SimpleChanges, TemplateRef, OnChanges } from '@angular/core';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-media-object',\r\n templateUrl: './media-object.component.html'\r\n})\r\nexport class MediaObjectComponent extends AccessibilityComponent implements OnChanges {\r\n\r\n @Input() figureHtml: string;\r\n @Input() classes: string;\r\n @Input() center: boolean;\r\n @Input() reverse: boolean;\r\n @Input() figureClasses: string;\r\n @Input() contenClasses: string;\r\n\r\n @Input() caller: TemplateRef<any>;\r\n @Input() id: string;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.checkRequiredParams();\r\n }\r\n\r\n checkRequiredParams(): void {\r\n if (!this.figureHtml) {\r\n throw new Error(`figureHtml are required`);\r\n }\r\n }\r\n}\r\n","import { Component, ContentChild, Input, OnChanges, SimpleChanges, TemplateRef, ViewChild, ViewChildren } from '@angular/core';\r\nimport { AccessibilityAndContentRequiredComponent, AccessibilityComponent } from '../../../shared/components';\r\nimport { StatusIconData } from '../../interfaces/status-icon-data';\r\n\r\n@Component({\r\n selector: 'desy-status',\r\n templateUrl: './status.component.html'\r\n})\r\nexport class StatusComponent extends AccessibilityComponent implements OnChanges {\r\n\r\n @Input() text: string;\r\n @Input() id: string;\r\n @Input() classes: string;\r\n @Input() icon: StatusIconData;\r\n\r\n\r\n getType(): string {\r\n let type: string;\r\n if (this.icon.type){\r\n type = this.icon.type.toLocaleLowerCase();\r\n } else {\r\n type = 'success';\r\n } \r\n return type;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.text){\r\n throw new Error(`title is required`);\r\n }\r\n\r\n if (!this.icon){\r\n throw new Error(`icon is required`);\r\n }\r\n \r\n }\r\n}\r\n","import { Component, ContentChildren, Input, OnChanges, QueryList, SimpleChanges, TemplateRef } from '@angular/core';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\nimport { DescriptionItemData, StatusItemTitleData, StatusData } from '../../interfaces';\r\nimport { ErrorMessageData, HintData } from '../../../desy-forms/interfaces';\r\nimport { DescriptionItemComponent } from '../description-list/description-item/description-item.component';\r\nimport { TitleComponent } from '../../../desy-commons/components/title/title.component';\r\nimport { HintComponent } from '../../../desy-forms/components/hint/hint.component';\r\nimport { ErrorMessageComponent } from '../../../desy-forms/components/error-message/error-message.component';\r\nimport { StatusComponent } from '../status/status.component';\r\nimport { ContentComponent } from '../../../desy-commons/components/content/content.component';\r\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\r\n\r\n@Component({\r\n selector: 'desy-status-item',\r\n templateUrl: './status-item.component.html'\r\n})\r\nexport class StatusItemComponent extends AccessibilityComponent implements OnChanges {\r\n\r\n @Input() id: string;\r\n @Input() classes: string;\r\n\r\n @Input() errorId: string;\r\n @Input() describedBy: string;\r\n\r\n @Input() title: StatusItemTitleData;\r\n @Input() hint: HintData;\r\n @Input() errorMessage: ErrorMessageData;\r\n @Input() items: DescriptionItemData[];\r\n @Input() status: StatusData;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(TitleComponent) titleComponent: TitleComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(HintComponent) hintComponent: HintComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(ErrorMessageComponent) errorMessageComponent: ErrorMessageComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(ContentComponent) contentComponent: ContentComponent;\r\n\r\n @ContentChildren(DescriptionItemComponent) itemComponents: QueryList<DescriptionItemComponent>;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(StatusComponent) statusComponent: StatusComponent;\r\n @Input() caller: TemplateRef<any>;\r\n\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.id){\r\n throw new Error(`id is required`);\r\n }\r\n }\r\n\r\n handleContentEmpty(element: string): void {\r\n throw new Error(`${element} content, html or text is required`);\r\n }\r\n\r\n getItems(): DescriptionItemData[]|DescriptionItemComponent[] {\r\n return (this.itemComponents.length > 0) ? this.itemComponents.toArray() : this.items;\r\n }\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\nimport {TabsPanelData} from '../../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-panel',\r\n template: '<ng-template #contentTemplate><ng-content></ng-content></ng-template>'\r\n})\r\nexport class PanelComponent extends ContentBaseComponent implements TabsPanelData {\r\n\r\n @Input() classes: string;\r\n @Input() id: string;\r\n\r\n}","import {Component, ContentChildren, Input } from '@angular/core';\r\nimport {DesyContentChild} from '../../../../shared/decorators/desy-content-child.decorator';\r\nimport {ContentComponent} from '../../../../desy-commons/components/content/content.component';\r\nimport { PanelComponent } from '../panel/panel.component';\r\nimport { TabsItemsData, TabsPanelData } from '../../../interfaces';\r\nimport { AccessibilityComponent } from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-tab-item',\r\n template: ''\r\n})\r\nexport class TabItemComponent extends AccessibilityComponent implements TabsItemsData {\r\n\r\n @DesyContentChild()\r\n @ContentChildren(ContentComponent) contentComponent: ContentComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(PanelComponent) panelComponent: PanelComponent;\r\n\r\n @Input() classes: string;\r\n @Input() disabled: boolean;\r\n @Input() id: string;\r\n panel?: TabsPanelData;\r\n\r\n}\r\n","import {\r\n AfterViewInit, ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n ElementRef,\r\n Input,\r\n OnChanges,\r\n QueryList,\r\n SimpleChanges, ViewChild,\r\n ViewChildren\r\n} from '@angular/core';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\nimport { StringUtils } from '../../../shared/utils/string-utils';\r\nimport {TabsItemsData, TabsPanelData} from '../../interfaces';\r\nimport { TabItemComponent } from './tab-item/tab-item.component';\r\n\r\n@Component({\r\n selector: 'desy-tabs',\r\n templateUrl: './tabs.component.html'\r\n})\r\nexport class TabsComponent extends AccessibilityComponent implements OnChanges, AfterViewInit {\r\n\r\n @ContentChildren(TabItemComponent) itemComponents: QueryList<TabItemComponent>;\r\n @ViewChildren('tabSelector') tabSelectors: QueryList<ElementRef>;\r\n @ViewChildren('tabSelectorContentWrapper') tabSelectorContentWrapper: QueryList<ElementRef>;\r\n @ViewChild('tabSrOnly') tabSrOnly: ElementRef;\r\n\r\n\r\n @Input() id: string;\r\n @Input() idPrefix: string;\r\n @Input() classes: string;\r\n @Input() headingLevel: number;\r\n\r\n @Input() title: string;\r\n @Input() tablistAriaLabel: string;\r\n @Input() items: TabsItemsData[];\r\n\r\n currentTab = 0;\r\n currentPanel;\r\n\r\n constructor(private changeDetector: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.title){\r\n throw new Error(`title is required`);\r\n }\r\n\r\n if (!this.tablistAriaLabel){\r\n throw new Error(`tablistAriaLabel is required`);\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n const item = this.getItems();\r\n this.selectTab(item.findIndex(value => !value.disabled));\r\n this.changeDetector.detectChanges();\r\n }\r\n\r\n getItems(): TabsItemsData[]|TabItemComponent[] {\r\n const items = (this.itemComponents.length > 0) ? this.itemComponents.toArray() : this.items;\r\n if (!items || items.length === 0) {\r\n throw new Error(`items are required`);\r\n }\r\n return items;\r\n }\r\n\r\n getItemPanel(tab: number): TabItemComponent {\r\n let panel;\r\n const items = this.getItems();\r\n const item = items[tab];\r\n if (item instanceof TabItemComponent){\r\n panel = item.panelComponent;\r\n }\r\n return panel;\r\n }\r\n\r\n handleContentEmpty(element: string): void {\r\n throw new Error(`${element} content, html or text is required`);\r\n }\r\n\r\n getIdPrefix(): string {\r\n if (this.idPrefix) {\r\n return this.idPrefix;\r\n }\r\n }\r\n\r\n getItemId(index: number): string {\r\n let id;\r\n const item = this.getItems();\r\n if (item[index].id) {\r\n id = item[index].id;\r\n } else {\r\n id = this.getIdPrefix() + '-' + index;\r\n }\r\n return id;\r\n }\r\n\r\n isDisabled(item: TabsItemsData): boolean {\r\n return item.disabled ? true : null;\r\n }\r\n\r\n\r\n selectTab( i: number ): void {\r\n this.currentTab = i;\r\n const currentItem = this.getItems()[i];\r\n this.currentPanel = currentItem instanceof TabItemComponent ? currentItem.panelComponent : currentItem.panel;\r\n this.tabSrOnly.nativeElement.innerHTML = this.tabSelectorContentWrapper.toArray()[this.currentTab].nativeElement.innerHTML;\r\n }\r\n\r\n focusFirstTab(event?): void {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n\r\n const enabledTabs = this.tabSelectors.filter((item, index) => !item[index].disabled);\r\n enabledTabs[0].nativeElement.focus();\r\n }\r\n\r\n focusLastTab(event?): void {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n\r\n const enabledTabs = this.tabSelectors.filter((item, index) => !item[index].disabled);\r\n enabledTabs[enabledTabs.length - 1].nativeElement.focus();\r\n }\r\n\r\n focusNextTab(focusedTab: number): void {\r\n const item = this.getItems();\r\n let nextTab = (focusedTab + 1) % item.length;\r\n while (nextTab !== focusedTab) {\r\n if (!item[nextTab].disabled) {\r\n this.tabSelectors.find((i, index) => index === nextTab).nativeElement.focus();\r\n break;\r\n }\r\n nextTab = (nextTab + 1) % item.length;\r\n }\r\n }\r\n\r\n focusPreviousTab(focusedTab: number): void {\r\n const item = this.getItems();\r\n let previousTab = (focusedTab - 1 + item.length) % item.length;\r\n while (previousTab !== focusedTab) {\r\n if (!item[previousTab].disabled) {\r\n this.tabSelectors.find((i, index) => index === previousTab).nativeElement.focus();\r\n break;\r\n }\r\n previousTab = (previousTab - 1 + item.length) % item.length;\r\n }\r\n }\r\n\r\n getPanelContent(tab: number): string {\r\n const item = this.getItems();\r\n return item[tab].panel && item[tab].panel.text ? `<p>${ StringUtils.escapeHtml(item[tab].panel.text) }</p>` : null;\r\n }\r\n}\r\n","import {\r\n ComponentFactoryResolver, ComponentRef,\r\n Injectable,\r\n TemplateRef, Type\r\n} from '@angular/core';\r\nimport { AlertOptions } from '../interfaces/alert-options';\r\nimport { OpenAlertResult } from '../interfaces/open-alert-result';\r\nimport { AlertComponent } from '../components/alert/alert.component';\r\nimport { NotificationComponent } from '../../desy-nav/components/notification/notification.component';\r\nimport { NotificationOptions } from '../../desy-nav/interfaces/notification-options';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AlertService {\r\n\r\n constructor(private factoryResolver: ComponentFactoryResolver) { }\r\n\r\n public openAlert(caller: TemplateRef<any>|NotificationOptions, alertOptions: AlertOptions): Promise<OpenAlertResult> {\r\n return new Promise<OpenAlertResult>((resolve, reject) => {\r\n\r\n if (!caller) {\r\n reject('caller is required');\r\n }\r\n\r\n if (!alertOptions) {\r\n reject('alertOptions is required');\r\n }\r\n\r\n const alert = this.createAlert(alertOptions);\r\n const result: OpenAlertResult = {\r\n alert\r\n };\r\n\r\n\r\n if (caller instanceof TemplateRef) {\r\n alert.instance.caller = caller;\r\n resolve(result);\r\n } else {\r\n alert.instance.callerType = NotificationComponent;\r\n alert.instance.onCallerCreationCallback = (d, c) => {\r\n this.initNotification(d, c, caller);\r\n result.component = c;\r\n resolve(result);\r\n };\r\n }\r\n });\r\n }\r\n\r\n public closeAlert(alert: ComponentRef<AlertComponent>|AlertComponent): void {\r\n\r\n if (!alert) {\r\n throw Error('alert is required');\r\n }\r\n\r\n if (alert instanceof ComponentRef) {\r\n alert.instance.dismiss();\r\n } else {\r\n alert.dismiss();\r\n }\r\n }\r\n\r\n public onCloseAlert(alert: ComponentRef<AlertComponent>|AlertComponent): Promise<void> {\r\n return new Promise<void>((resolve => {\r\n let a;\r\n if (alert instanceof ComponentRef) {\r\n a = alert.instance;\r\n } else {\r\n a = alert;\r\n }\r\n\r\n const subscription = a.activeChange.subscribe(() => {\r\n resolve();\r\n subscription.unsubscribe();\r\n });\r\n }));\r\n }\r\n\r\n\r\n private createAlert(alertOptions: AlertOptions): ComponentRef<AlertComponent> {\r\n const factory = this.factoryResolver.resolveComponentFactory(AlertComponent);\r\n const alert = alertOptions.place.createComponent<AlertComponent>(factory);\r\n\r\n alert.instance.active = true;\r\n if (alertOptions) {\r\n Object.assign(alert.instance, alertOptions);\r\n }\r\n\r\n this.onCloseAlert(alert).then(() => alert.destroy());\r\n\r\n return alert;\r\n }\r\n\r\n private initNotification(alert: AlertComponent, notificationRef: ComponentRef<NotificationComponent>,\r\n options: NotificationOptions): void {\r\n Object.assign(notificationRef.instance, options);\r\n if (options.isDismissible) {\r\n const subscription = notificationRef.instance.isOpenChange.subscribe(() => {\r\n this.closeAlert(alert);\r\n subscription.unsubscribe();\r\n });\r\n }\r\n }\r\n}\r\n","import {Component} from '@angular/core';\r\nimport {ContentBaseComponent} from '../../../../shared/components';\r\n\r\n@Component({\r\n selector: 'desy-tooltip-content',\r\n templateUrl: './tooltip-content.component.html'\r\n})\r\nexport class TooltipContentComponent extends ContentBaseComponent {\r\n}\r\n","import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\r\nimport { AccessibilityComponent } from '../../../shared/components';\r\nimport { PaginationItemData } from '../../interfaces';\r\n\r\n@Component({\r\n selector: 'desy-pagination',\r\n templateUrl: './pagination.component.html'\r\n})\r\nexport class PaginationComponent extends AccessibilityComponent implements OnChanges {\r\n\r\n @Input() hasSelect: boolean;\r\n @Input() idPrefix: string;\r\n @Input() classesContainer: string;\r\n @Input() totalItems: number;\r\n @Input() itemsPerPage: number;\r\n @Input() hasPrevious: boolean;\r\n @Input() hasNext: boolean;\r\n @Input() previousText: string;\r\n @Input() nextText: string;\r\n @Input() classes: string;\r\n @Input() id: string;\r\n\r\n @Input() currentPage = 1; // == currentPageindex + 1\r\n @Output() currentPageChange = new EventEmitter<number>();\r\n\r\n nPages: number;\r\n items: PaginationItemData[];\r\n\r\n readonly previousIcon = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"self-center h-2.5 w-2.5 mr-2\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M54.87 71.77a2.5 2.5 0 010-3.54L106 17.07A10 10 0 1091.89 2.93L35.43 59.39a15 15 0 000 21.22l56.46 56.46A10 10 0 10106 122.93z\" fill=\"currentColor\" /></svg>';\r\n readonly nextIcon = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"self-center h-2.5 w-2.5 ml-2\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M34 137.07a10 10 0 010-14.14l51.13-51.16a2.5 2.5 0 000-3.54L34 17.07A10 10 0 0148.11 2.93l56.46 56.46a15 15 0 010 21.22l-56.46 56.46a10 10 0 01-14.11 0z\" fill=\"currentColor\" /></svg>';\r\n readonly prefix = '<span class=\"sr-only\">Página&nbsp;</span>';\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.id) {\r\n throw new Error(`id is required`);\r\n }\r\n if (this.totalItems === undefined || this.totalItems === null) {\r\n throw new Error(`totalItems is required`);\r\n }\r\n if (!this.itemsPerPage === undefined || this.itemsPerPage === null) {\r\n throw new Error(`itemsPerPage is required`);\r\n }\r\n\r\n this.nPages = Math.ceil(this.totalItems / this.itemsPerPage);\r\n\r\n if (!this.currentPage || this.currentPage < 1 || this.currentPage > this.nPages) {\r\n this.currentPage = 1;\r\n setTimeout( () => this.currentPageChange.emit(this.currentPage));\r\n }\r\n\r\n if (!this.previousText) {\r\n this.previousText = 'Anterior';\r\n }\r\n if (!this.nextText) {\r\n this.nextText = 'Siguiente';\r\n }\r\n\r\n this.buildPages();\r\n }\r\n\r\n getSuffix(page: number): string {\r\n return page >= 0 && page * this.itemsPerPage < this.totalItems ?\r\n `<span class=\"sr-only\">:&nbsp;Página ${page + 1} con los resultados del ${page * this.itemsPerPage + 1} al ${this.getLastItemNumber(page)}</span>`\r\n : '';\r\n }\r\n\r\n getLastItemNumber(pageIndex: number): number {\r\n return Math.min((pageIndex + 1) * this.itemsPerPage, this.totalItems);\r\n }\r\n\r\n buildPages(): void {\r\n this.items = [];\r\n for (let i = 0; i < this.nPages; i++) {\r\n const item: PaginationItemData = {\r\n text: i + 1,\r\n active: ( (i + 1) === this.currentPage),\r\n routerLink: []\r\n };\r\n this.items.push(item);\r\n }\r\n }\r\n\r\n getIdPrefix(): string {\r\n return this.idPrefix ? this.idPrefix : 'pagination-item';\r\n }\r\n\r\n getButtonId( index: number): string {\r\n return this.getIdPrefix() + (index === 0) ? '' : '-' + index;\r\n }\r\n\r\n changePage(current: number): void{\r\n this.currentPage = current;\r\n this.currentPageChange.emit(this.currentPage);\r\n for (let i = 0; i < this.items.length; i++) {\r\n const item = this.items[i];\r\n item.active = ((i + 1) === this.currentPage);\r\n }\r\n }\r\n\r\n previous(): void {\r\n if (this.currentPage > 1) {\r\n this.changePage(this.currentPage - 1);\r\n }\r\n }\r\n\r\n next(): void {\r\n if (this.currentPage < this.nPages) {\r\n this.changePage(this.currentPage + 1);\r\n }\r\n }\r\n\r\n getActiveItemText(): any {\r\n const activeItems = this.items.filter(item => item.active);\r\n return activeItems && activeItems.length > 0 ? activeItems[0].text : '';\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform, SecurityContext } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n name: 'innerHtml'\r\n})\r\nexport class InnerHtmlPipe implements PipeTransform {\r\n\r\n constructor(private sanitizer: DomSanitizer) { }\r\n\r\n transform(value: string): SafeHtml {\r\n return this.sanitizer.sanitize(SecurityContext.HTML, value);\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'externalHref'\r\n})\r\nexport class ExternalHrefPipe implements PipeTransform {\r\n\r\n /**\r\n * Asegura que un enlace externo sea correcto\r\n * @param href enlace\r\n */\r\n transform(href: string): string {\r\n let externalHref: string;\r\n if (href) {\r\n if (href.match('http(s)?://')) {\r\n externalHref = href;\r\n } else {\r\n externalHref = 'http://' + href;\r\n }\r\n } else {\r\n externalHref = '#';\r\n }\r\n return externalHref;\r\n }\r\n\r\n}\r\n","import {Directive, ElementRef, EventEmitter, Input, OnDestroy, Output} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[desyAttributeChange]'\r\n})\r\nexport class AttributeChangeDirective implements OnDestroy {\r\n\r\n private changes: MutationObserver;\r\n\r\n @Input() attributesToCheck: string|string[];\r\n\r\n @Output()\r\n public desyAttributeChange = new EventEmitter();\r\n\r\n @Output()\r\n public desyAttributeChangeMutation = new EventEmitter();\r\n\r\n constructor(private elementRef: ElementRef) {\r\n const element = this.elementRef.nativeElement;\r\n\r\n this.changes = new MutationObserver((mutations: MutationRecord[]) => {\r\n mutations.forEach((mutation: MutationRecord) => {\r\n if (this.attributesToCheck) {\r\n const attrs = typeof (this.attributesToCheck) === 'string' ? [this.attributesToCheck] : this.attributesToCheck;\r\n if (attrs.findIndex(v => v === mutation.attributeName) >= 0) {\r\n this.desyAttributeChange.emit(this.elementRef.nativeElement.innerHTML);\r\n this.desyAttributeChangeMutation.emit(mutation);\r\n }\r\n }\r\n });\r\n }\r\n );\r\n\r\n this.changes.observe(element, {\r\n attributes: true,\r\n childList: false,\r\n characterData: false,\r\n subtree: false\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.changes.disconnect();\r\n }\r\n}\r\n","import {Directive, ElementRef, Input, OnChanges, SimpleChanges} from '@angular/core';\r\n@Directive({\r\n selector: '[desyInnerContent]'\r\n})\r\nexport class InnerContentDirective implements OnChanges {\r\n\r\n @Input('desyInnerContent') content: string;\r\n @Input() isHtml: boolean;\r\n @Input() deleteContentIfEmpty = true;\r\n\r\n constructor(private el: ElementRef) { }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (this.content) {\r\n if (this.isHtml) {\r\n this.el.nativeElement.innerHTML = this.content;\r\n } else {\r\n this.el.nativeElement.innerText = this.content;\r\n }\r\n } else if (this.deleteContentIfEmpty) {\r\n this.el.nativeElement.innerText = null;\r\n }\r\n }\r\n\r\n}\r\n","import { Directive, ElementRef, EventEmitter, HostListener, Input, Output } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[desyClickOutside]'\r\n})\r\nexport class ClickOutsideDirective {\r\n\r\n @Input('desyClickOutside') active = true;\r\n @Output() clickOutside = new EventEmitter<void>();\r\n @Input() desyClickOutsideElem: Element;\r\n\r\n constructor(private hostElementRef: ElementRef) { }\r\n\r\n @HostListener('document:click', ['$event.target'])\r\n public onClick(target): void {\r\n let clickedInside;\r\n if (this.desyClickOutsideElem) {\r\n clickedInside = this.desyClickOutsideElem.contains(target);\r\n } else {\r\n clickedInside = (this.hostElementRef.nativeElement as Element).contains(target);\r\n }\r\n if (!clickedInside && this.active) {\r\n this.clickOutside.emit();\r\n }\r\n }\r\n\r\n}\r\n","import {Directive, ElementRef, EventEmitter, Input, OnDestroy, Output} from '@angular/core';\r\n\r\n/**\r\n * Permite comprobar cuándo se produce un cambio en el contenido de un elemento.\r\n * La propia directiva emite el html interno del elemento en formato string, mientras que desyContentChangeMutation emite los cambios.\r\n */\r\n@Directive({\r\n selector: '[desyContentChange]'\r\n})\r\nexport class ContentChangeDirective implements OnDestroy {\r\n\r\n private changes: MutationObserver;\r\n\r\n @Input() observeProperties: { attributes: boolean, childList: boolean, characterData: boolean, subtree: boolean } = {\r\n attributes: false,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n };\r\n\r\n @Output()\r\n public desyContentChange = new EventEmitter<ElementRef>();\r\n\r\n @Output()\r\n public desyContentChangeMutation = new EventEmitter();\r\n\r\n constructor(private elementRef: ElementRef) {\r\n const element = this.elementRef.nativeElement;\r\n\r\n this.changes = new MutationObserver((mutations: MutationRecord[]) => {\r\n mutations.forEach((mutation: MutationRecord) => {\r\n this.desyContentChange.emit(this.elementRef);\r\n this.desyContentChangeMutation.emit(mutation);\r\n });\r\n }\r\n );\r\n\r\n this.changes.observe(element, this.observeProperties);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.changes.disconnect();\r\n }\r\n}\r\n","import {AfterViewInit, ContentChildren, Directive, ElementRef, EventEmitter, OnDestroy, Output, QueryList} from '@angular/core';\r\n\r\n/**\r\n * Emite un evento cuando el contenido de un elemento esté vacío\r\n * El contenido marcado con #desyContentEmptyIgnore será ignorado\r\n *\r\n * NOTA: tener en cuenta que los eventos se emiten después de generarse la vista, por lo que si al gestionar el evento se realizan\r\n * cambios que afectan a la template, conviene forzar la detección de cambios. (Ejemplo de esto en el icono de NotificationComponent)\r\n */\r\n@Directive({\r\n selector: '[desyContentEmpty]'\r\n})\r\nexport class ContentEmptyDirective implements OnDestroy, AfterViewInit {\r\n\r\n @Output()\r\n public desyContentEmpty = new EventEmitter();\r\n\r\n @Output()\r\n public desyContentNotEmpty = new EventEmitter();\r\n\r\n @ContentChildren('desyContentEmptyIgnore', {read: ElementRef}) contentsToIgnore: QueryList<ElementRef>;\r\n\r\n private changes: MutationObserver;\r\n private lastWasEmpty = false;\r\n private viewInit = false;\r\n\r\n constructor(private elementRef: ElementRef) {\r\n const element = this.elementRef.nativeElement;\r\n this.changes = new MutationObserver((mutations: MutationRecord[]) => mutations.forEach(() => this.checkContent()));\r\n this.changes.observe(element, {\r\n attributes: false,\r\n childList: true,\r\n characterData: true,\r\n subtree: false\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.viewInit) {\r\n this.viewInit = true;\r\n this.checkContent();\r\n }\r\n }\r\n\r\n /**\r\n * Comprueba el contenido del elemento una vez se haya inicializado la vista. Si se detecta que el elemento está vacío, las comprobaciones\r\n * sucesivas que tampoco detecten contenido no emitirán evento.\r\n */\r\n checkContent(): void {\r\n if (this.viewInit) {\r\n const childs: NodeListOf<ChildNode> = this.elementRef.nativeElement.childNodes;\r\n let hasContent = false;\r\n for (let i = 0; i < childs.length && !hasContent; i++) {\r\n const item = childs.item(i);\r\n if (item.nodeType === Node.TEXT_NODE && item.textContent.length > 0) {\r\n hasContent = true;\r\n } else if ((item.nodeType === Node.ELEMENT_NODE || item.nodeType === Node.CDATA_SECTION_NODE) && this.isContentNode(item)) {\r\n hasContent = true;\r\n }\r\n }\r\n\r\n if (hasContent) {\r\n if (this.lastWasEmpty) {\r\n this.desyContentNotEmpty.emit(this.elementRef.nativeElement.innerHTML);\r\n }\r\n this.lastWasEmpty = false;\r\n } else {\r\n if (!this.lastWasEmpty) {\r\n this.desyContentEmpty.emit(this.elementRef.nativeElement.innerHTML);\r\n }\r\n this.lastWasEmpty = true;\r\n }\r\n }\r\n }\r\n\r\n private isContentNode(elem: Node): boolean {\r\n let contentNode = true;\r\n if (this.contentsToIgnore && this.contentsToIgnore.length > 0) {\r\n contentNode = !this.contentsToIgnore.find(ignoreElem => ignoreElem.nativeElement === elem);\r\n }\r\n return contentNode;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.changes.disconnect();\r\n }\r\n}\r\n","import {\r\n ComponentFactory,\r\n ComponentFactoryResolver,\r\n Directive,\r\n Injector,\r\n Input, OnChanges,\r\n SimpleChanges, TemplateRef,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport {ContentBaseComponent} from '../components';\r\n\r\n/**\r\n * Permite introducir contenido de forma dinámica en una posición determinada desde:\r\n * - component: Componente existente de tipo ContentBase\r\n * - html: texto html en formato string\r\n * - text: texto plano en formato string\r\n */\r\n@Directive({\r\n selector: '[desyCustomInnerContent]'\r\n})\r\nexport class CustomInnerContentDirective implements OnChanges {\r\n\r\n @Input() desyCustomInnerContent: { component?: any|ContentBaseComponent, template?: TemplateRef<any>, html?: string, text?: string };\r\n\r\n private factory: ComponentFactory<ContentBaseComponent>;\r\n\r\n constructor(private viewContainerRef: ViewContainerRef, private resolver: ComponentFactoryResolver, private injector: Injector) {\r\n this.factory = this.resolver.resolveComponentFactory(ContentBaseComponent);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.viewContainerRef.clear();\r\n if (this.desyCustomInnerContent.component && this.desyCustomInnerContent.component instanceof ContentBaseComponent) {\r\n\r\n // Se crea la vista embebida basándose en el contenido del ContentBase indicado.\r\n this.viewContainerRef.createEmbeddedView(this.desyCustomInnerContent.component.getContent());\r\n } else if (this.desyCustomInnerContent.template) {\r\n\r\n // Se crea la vista embebida utilizando directamente el template.\r\n this.viewContainerRef.createEmbeddedView(this.desyCustomInnerContent.template);\r\n } else if (this.desyCustomInnerContent.html) {\r\n\r\n // Se carga el contenido en un div temporal.\r\n const tmpWrapper = document.createElement('div');\r\n tmpWrapper.innerHTML = this.desyCustomInnerContent.html;\r\n\r\n // Los nodos hijos del div se proyectan dentro de un componente ContentBase.\r\n const nodeList = [];\r\n tmpWrapper.childNodes.forEach(node => nodeList.push(node));\r\n const componentRef = this.factory.create(this.injector, [ nodeList ]);\r\n\r\n // Finalmente se crea la vista embebida basándose en el contenido del ContentBase creado.\r\n // Se podría hacer con un this.viewContainerRef.createComponent(), pero así se evita el tag envolvente del componente en el DOM\r\n this.viewContainerRef.createEmbeddedView(componentRef.instance.getContent());\r\n } else if (this.desyCustomInnerContent.text) {\r\n\r\n // Se carga el contenido en un nodo de texto\r\n const textNode = document.createTextNode(this.desyCustomInnerContent.text);\r\n\r\n // El nodo de texto se proyecta dentro de un componente ContentBase\r\n const componentRef = this.factory.create(this.injector, [[ textNode ]]);\r\n\r\n // Finalmente se crea la vista embebida basándose en el contenido del ContentBase creado.\r\n // Se podría hacer con un this.viewContainerRef.createComponent(), pero así se evita el tag envolvente del componente en el DOM\r\n this.viewContainerRef.createEmbeddedView(componentRef.instance.getContent());\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\n\r\n// components\r\nimport {\r\n AccessibilityComponent,\r\n ContentBaseComponent,\r\n TextOrHtmlRequiredComponent,\r\n AccessibilityAndTextOrHtmlRequiredComponent,\r\n AccessibilityAndContentRequiredComponent\r\n} from './components';\r\n\r\n// pipes\r\nimport { InnerHtmlPipe } from './pipes/inner-html.pipe';\r\nimport { MakeHtmlListPipe } from './pipes/make-html-list.pipe';\r\nimport { ExternalHrefPipe } from './pipes/external-href.pipe';\r\n\r\n// directives\r\nimport { AttributeChangeDirective } from './directives/attribute-change.directive';\r\nimport { InnerContentDirective } from './directives/inner-content.directive';\r\nimport { ClickOutsideDirective } from './directives/click-outside.directive';\r\nimport { ContentChangeDirective } from './directives/content-change.directive';\r\nimport { ContentEmptyDirective } from './directives/content-empty.directive';\r\nimport { CustomInnerContentDirective } from './directives/custom-inner-content.directive';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n // components\r\n AccessibilityComponent,\r\n ContentBaseComponent,\r\n TextOrHtmlRequiredComponent,\r\n AccessibilityAndTextOrHtmlRequiredComponent,\r\n AccessibilityAndContentRequiredComponent,\r\n\r\n // pipes\r\n InnerHtmlPipe,\r\n MakeHtmlListPipe,\r\n ExternalHrefPipe,\r\n\r\n // directives\r\n AttributeChangeDirective,\r\n InnerContentDirective,\r\n ClickOutsideDirective,\r\n ContentChangeDirective,\r\n ContentEmptyDirective,\r\n CustomInnerContentDirective,\r\n ],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [\r\n RouterModule,\r\n\r\n // components\r\n AccessibilityComponent,\r\n ContentBaseComponent,\r\n TextOrHtmlRequiredComponent,\r\n AccessibilityAndTextOrHtmlRequiredComponent,\r\n AccessibilityAndContentRequiredComponent,\r\n\r\n // pipes\r\n InnerHtmlPipe,\r\n MakeHtmlListPipe,\r\n ExternalHrefPipe,\r\n\r\n // directives\r\n AttributeChangeDirective,\r\n InnerContentDirective,\r\n ClickOutsideDirective,\r\n ContentChangeDirective,\r\n ContentEmptyDirective,\r\n CustomInnerContentDirective,\r\n ]\r\n})\r\nexport class SharedModule { }\r\n","import { Component } from '@angular/core';\r\nimport { ControlContainer, NgForm } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'desy-template-driven-wrapper',\r\n templateUrl: './template-driven-wrapper.component.html',\r\n providers: [ { provide: ControlContainer, useExisting: NgForm, } ]\r\n})\r\nexport class TemplateDrivenWrapperComponent {\r\n}\r\n","// componentes\r\nimport { NgModule } from '@angular/core';\r\nimport { IconComponent } from './components/icon/icon.component';\r\nimport { ContentComponent } from './components/content/content.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { NgxTippyModule } from 'ngx-tippy-wrapper';\r\nimport { TitleComponent } from './components/title/title.component';\r\nimport { DescriptionComponent } from './components/description/description.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n IconComponent,\r\n ContentComponent,\r\n DescriptionComponent,\r\n TitleComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n NgxTippyModule\r\n ],\r\n exports: [\r\n IconComponent,\r\n ContentComponent,\r\n DescriptionComponent,\r\n TitleComponent\r\n ]\r\n})\r\n\r\nexport class DesyCommonsModule { }\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { SharedModule } from '../shared/shared.module';\r\n// componentes\r\nimport { TemplateDrivenWrapperComponent } from './components/template-driven-wrapper/template-driven-wrapper.component';\r\nimport { FormFieldComponent } from './components/form-field/form-field.component';\r\nimport { HintComponent } from './components/hint/hint.component';\r\nimport { LabelComponent } from './components/label/label.component';\r\nimport { ErrorMessageComponent } from './components/error-message/error-message.component';\r\nimport { FieldsetComponent } from './components/fieldset/fieldset.component';\r\nimport { LegendComponent } from './components/fieldset/legend/legend.component';\r\nimport { TextareaComponent } from './components/textarea/textarea.component';\r\nimport { CharacterCountComponent } from './components/character-count/character-count.component';\r\nimport { InputComponent } from './components/input/input.component';\r\nimport { SelectComponent } from './components/select/select.component';\r\nimport { FileUploadComponent } from './components/file-upload/file-upload.component';\r\nimport { InputGroupComponent } from './components/input-group/input-group.component';\r\nimport { RadiosComponent } from './components/radios/radios.component';\r\nimport { RadioItemComponent } from './components/radios/radio-item/radio-item.component';\r\nimport { CheckboxesComponent } from './components/checkboxes/checkboxes.component';\r\nimport { CheckboxItemComponent } from './components/checkboxes/checkbox-item/checkbox-item.component';\r\nimport { DateInputComponent } from './components/date-input/date-input.component';\r\nimport { SearchBarComponent} from './components/search-bar/search-bar.component';\r\nimport { OptionComponent } from './components/select/option/option.component';\r\nimport { DateInputDayComponent } from './components/date-input/date-input-day/date-input-day.component';\r\nimport { DateInputMonthComponent } from './components/date-input/date-input-month/date-input-month.component';\r\nimport { DateInputYearComponent } from './components/date-input/date-input-year/date-input-year.component';\r\n\r\n// directivas\r\nimport { ConditionDirective } from './directives/condition.directive';\r\n\r\nimport {DesyCommonsModule} from '../desy-commons/desy-commons.module';\r\nimport { InputGroupItemComponent } from './components/input-group/input-group-item/input-group-item.component';\r\nimport { DateInputItemComponent } from './components/date-input/date-input-item/date-input-item.component';\r\nimport { InputGroupDividerComponent } from './components/input-group/input-group-divider/input-group-divider.component';\r\nimport { DateInputDividerComponent } from './components/date-input/date-input-divider/date-input-divider.component';\r\nimport { InputGroupInputComponent } from './components/input-group/input-group-input/input-group-input.component';\r\nimport { InputGroupSelectComponent } from './components/input-group/input-group-select/input-group-select.component';\r\nimport { OptionGroupComponent } from './components/select/option-group/option-group.component';\r\nimport { SelectItemComponent } from './components/select/select-item/select-item.component';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n TemplateDrivenWrapperComponent,\r\n FormFieldComponent,\r\n HintComponent,\r\n LabelComponent,\r\n ErrorMessageComponent,\r\n FieldsetComponent,\r\n LegendComponent,\r\n TextareaComponent,\r\n CharacterCountComponent,\r\n InputComponent,\r\n SelectComponent,\r\n FileUploadComponent,\r\n InputGroupComponent,\r\n InputGroupItemComponent,\r\n DateInputItemComponent,\r\n InputGroupDividerComponent,\r\n DateInputDividerComponent,\r\n InputGroupInputComponent,\r\n InputGroupSelectComponent,\r\n RadiosComponent,\r\n RadioItemComponent,\r\n CheckboxesComponent,\r\n CheckboxItemComponent,\r\n DateInputComponent,\r\n SearchBarComponent,\r\n OptionComponent,\r\n OptionGroupComponent,\r\n SelectItemComponent,\r\n DateInputDayComponent,\r\n DateInputMonthComponent,\r\n DateInputYearComponent,\r\n\r\n ConditionDirective,\r\n\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n SharedModule,\r\n DesyCommonsModule,\r\n ],\r\n exports: [\r\n HintComponent,\r\n LabelComponent,\r\n ErrorMessageComponent,\r\n FieldsetComponent,\r\n LegendComponent,\r\n TextareaComponent,\r\n CharacterCountComponent,\r\n InputComponent,\r\n SelectComponent,\r\n FileUploadComponent,\r\n InputGroupComponent,\r\n InputGroupDividerComponent,\r\n DateInputDividerComponent,\r\n InputGroupInputComponent,\r\n InputGroupSelectComponent,\r\n RadiosComponent,\r\n RadioItemComponent,\r\n CheckboxesComponent,\r\n CheckboxItemComponent,\r\n DateInputComponent,\r\n SearchBarComponent,\r\n OptionComponent,\r\n OptionGroupComponent,\r\n DateInputDayComponent,\r\n DateInputMonthComponent,\r\n DateInputYearComponent,\r\n\r\n ConditionDirective\r\n ]\r\n})\r\nexport class DesyFormsModule { }\r\n","import {\r\n AfterContentInit, ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n ElementRef,\r\n Input,\r\n OnChanges,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {AccessibilityComponent} from '../../../shared/components';\r\nimport {ContentComponent} from '../../../desy-commons/components/content/content.component';\r\nimport {IconComponent} from '../../../desy-commons/components/icon/icon.component';\r\nimport {IconData} from '../../../desy-commons/interfaces';\r\nimport {TooltipContentComponent} from './tooltip-content/tooltip-content.component';\r\nimport {DesyContentChild} from '../../../shared/decorators/desy-content-child.decorator';\r\n\r\n@Component({\r\n selector: 'desy-tooltip',\r\n templateUrl: './tooltip.component.html'\r\n})\r\nexport class TooltipComponent extends AccessibilityComponent implements OnChanges, AfterContentInit {\r\n\r\n static readonly KEY_CODE_ESC = 'Escape';\r\n\r\n @DesyContentChild()\r\n @ContentChildren(ContentComponent) contentComponent: ContentComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(IconComponent) iconComponent: IconComponent;\r\n\r\n @DesyContentChild()\r\n @ContentChildren(TooltipContentComponent) tooltipContentComponent: TooltipContentComponent;\r\n\r\n @ViewChild('tooltipContent', { read: ElementRef, static: true }) tooltipContent: ElementRef;\r\n\r\n @Input() id: string;\r\n @Input() text: string;\r\n @Input() html: string;\r\n @Input() complex: boolean;\r\n @Input() classes: string;\r\n @Input() classesTooltip: string;\r\n @Input() icon: IconData;\r\n @Input() caller: TemplateRef<any>;\r\n\r\n tippyProperties: any;\r\n hasContent = true;\r\n hasIconComponentContent = true;\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n ngOnChanges(changes?: SimpleChanges): void {\r\n if (!this.id) {\r\n throw Error('id is required');\r\n }\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n const contentTooltip = this.tooltipContent.nativeElement as HTMLElement;\r\n this.tippyProperties = {\r\n placement: 'top',\r\n inlinePositioning: true,\r\n content: contentTooltip,\r\n allowHTML: true, // Make sure you are sanitizing any user data if rendering HTML to prevent XSS attacks.\r\n trigger: 'mouseenter focus',\r\n hideOnClick: false,\r\n theme: '',\r\n plugins: [{\r\n name: 'hideOnEsc',\r\n defaultValue: true,\r\n fn({hide}): any {\r\n\r\n function onKeyDown(event: KeyboardEvent): void {\r\n if (event.key === TooltipComponent.KEY_CODE_ESC) {\r\n hide();\r\n }\r\n }\r\n\r\n return {\r\n onShow(): void {\r\n document.addEventListener('keydown', onKeyDown);\r\n },\r\n onHide(): void {\r\n document.removeEventListener('keydown', onKeyDown);\r\n },\r\n };\r\n },\r\n }],\r\n role: 'tooltip',\r\n aria: {\r\n content: this.complex ? 'describedby' : 'labelledby',\r\n },\r\n };\r\n }\r\n\r\n getIdButton(): string {\r\n return this.id + '-button';\r\n }\r\n\r\n getIdTooltip(): string {\r\n return this.id + '-tooltip';\r\n }\r\n\r\n handleEmptyContent(isEmpty: boolean): void {\r\n this.hasContent = !isEmpty;\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n handleEmptyIconContent(isEmpty: boolean): void {\r\n this.hasIconComponentContent = !isEmpty;\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n handleEmptyTooltipContent(): void {\r\n throw Error('caller attribute or inner desy-tooltip-content component are required');\r\n }\r\n\r\n getMainContent(): string {\r\n let content;\r\n if (this.html) {\r\n content = this.html;\r\n } else if (this.text) {\r\n content = `<p>${this.text}</p>`;\r\n }\r\n return content;\r\n }\r\n\r\n getIconContent(icon: IconData): string {\r\n let iconContent;\r\n if (icon.html) {\r\n iconContent = this.icon.html;\r\n } else if (icon.type === 'info') {\r\n iconContent = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"w-4 h-4 text-primary-base\" role=\"img\" aria-label=\"Información\"><path d=\"M70 0a70 70 0 1070 70A70.08 70.08 0 0070 0zm7.5 105a7.5 7.5 0 01-15 0V70a7.5 7.5 0 0115 0zM70 50a10 10 0 1110-10 10 10 0 01-10 10z\" fill=\"currentColor\"/></svg>';\r\n } else if (icon.type === 'alert') {\r\n iconContent = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"w-4 h-4 text-alert-base\" role=\"img\" aria-label=\"Alerta\"><path d=\"M138.42 118.29l-55-110a15 15 0 00-26.84 0l-55 110A15 15 0 0015 140h110a15 15 0 0013.42-21.71zM62.5 50a7.5 7.5 0 0115 0v30a7.5 7.5 0 01-15 0zm7.5 70a10 10 0 1110-10 10 10 0 01-10 10z\" fill=\"currentColor\"/></svg>';\r\n } else {\r\n iconContent = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 140 140\" width=\"1em\" height=\"1em\" class=\"w-4 h-4 text-primary-base\" role=\"img\" aria-label=\"Ayuda\"><path d=\"M70 0a70 70 0 1070 70A70.08 70.08 0 0070 0zm0 117.51a10 10 0 1110-10 10 10 0 01-10 10zm9.17-39.08a2.5 2.5 0 00-1.67 2.36v1.71a7.5 7.5 0 01-15 0v-10A7.5 7.5 0 0170 65a12.5 12.5 0 10-12.5-12.5 7.5 7.5 0 01-15 0 27.5 27.5 0 1136.67 25.93z\" fill=\"currentColor\"/></svg>';\r\n }\r\n return iconContent;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SharedModule } from '../shared/shared.module';\r\n\r\nimport { AlertComponent } from './components/alert/alert.component';\r\nimport { AccordionComponent } from './components/accordion/accordion.component';\r\nimport { AccordionItemComponent } from './components/accordion/accordion-item/accordion-item.component';\r\nimport { SpinnerComponent } from './components/spinner/spinner.component';\r\nimport { DetailsComponent } from './components/details/details.component';\r\nimport { CollapsibleComponent } from './components/collapsible/collapsible.component';\r\nimport { DescriptionListComponent } from './components/description-list/description-list.component';\r\nimport { ItemComponent } from './components/item/item.component';\r\nimport { MediaObjectComponent } from './components/media-object/media-object.component';\r\nimport { StatusComponent } from './components/status/status.component';\r\nimport { StatusItemComponent } from './components/status-item/status-item.component';\r\nimport { DesyFormsModule } from '../desy-forms/desy-forms.module';\r\nimport { TabsComponent } from './components/tabs/tabs.component';\r\nimport { TooltipComponent } from './components/tooltip/tooltip.component';\r\nimport { DesyCommonsModule } from '../desy-commons/desy-commons.module';\r\nimport { NgxTippyModule } from 'ngx-tippy-wrapper';\r\nimport { TooltipContentComponent } from './components/tooltip/tooltip-content/tooltip-content.component';\r\nimport { DescriptionItemComponent } from './components/description-list/description-item/description-item.component';\r\nimport { TermComponent } from './components/description-list/term/term.component';\r\nimport { DefinitionComponent } from './components/description-list/definition/definition.component';\r\nimport { ItemContentBottomComponent } from './components/item/item-content-bottom/item-content-bottom.component';\r\nimport { ItemContentRightComponent } from './components/item/item-content-right/item-content-right.component';\r\nimport { ItemItemComponent } from './components/item/item-item/item-item.component';\r\nimport { AccordionHeaderComponent } from './components/accordion/accordion-header/accordion-header.component';\r\nimport { PanelComponent } from './components/tabs/panel/panel.component';\r\nimport { TabItemComponent } from './components/tabs/tab-item/tab-item.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n AlertComponent,\r\n AccordionComponent,\r\n AccordionHeaderComponent,\r\n AccordionItemComponent,\r\n SpinnerComponent,\r\n DetailsComponent,\r\n CollapsibleComponent,\r\n DescriptionListComponent,\r\n DescriptionItemComponent,\r\n TermComponent,\r\n DefinitionComponent,\r\n ItemComponent,\r\n ItemContentBottomComponent,\r\n ItemContentRightComponent,\r\n ItemItemComponent,\r\n MediaObjectComponent,\r\n StatusComponent,\r\n StatusItemComponent,\r\n TabsComponent,\r\n TooltipComponent,\r\n TooltipContentComponent,\r\n PanelComponent,\r\n TabItemComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n DesyFormsModule,\r\n DesyCommonsModule,\r\n NgxTippyModule\r\n ],\r\n exports: [\r\n AlertComponent,\r\n AccordionComponent,\r\n AccordionHeaderComponent,\r\n AccordionItemComponent,\r\n SpinnerComponent,\r\n DetailsComponent,\r\n CollapsibleComponent,\r\n DescriptionListComponent,\r\n DescriptionItemComponent,\r\n TermComponent,\r\n DefinitionComponent,\r\n ItemComponent,\r\n ItemContentBottomComponent,\r\n ItemContentRightComponent,\r\n ItemItemComponent,\r\n MediaObjectComponent,\r\n StatusComponent,\r\n StatusItemComponent,\r\n TabsComponent,\r\n TooltipComponent,\r\n TooltipContentComponent,\r\n PanelComponent,\r\n TabItemComponent,\r\n ]\r\n})\r\nexport class DesyViewsModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DesyViewsModule } from '../desy-views/desy-views.module';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { NgxTippyModule } from 'ngx-tippy-wrapper';\r\n\r\n// componentes\r\nimport { ButtonComponent } from './components/button/button.component';\r\nimport { ButtonLoaderComponent } from './components/button-loader/button-loader.component';\r\nimport { PillComponent } from './components/pill/pill.component';\r\nimport { DropdownComponent } from './components/dropdown/dropdown.component';\r\nimport { ListboxComponent } from './components/listbox/listbox.component';\r\nimport { ListboxItemComponent } from './components/listbox/listbox-item/listbox-item.component';\r\nimport { ListboxLabelComponent } from './components/listbox/listbox-label/listbox-label.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n ButtonComponent,\r\n ButtonLoaderComponent,\r\n DropdownComponent,\r\n ListboxComponent,\r\n PillComponent,\r\n\r\n ListboxItemComponent,\r\n ListboxLabelComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n DesyViewsModule,\r\n NgxTippyModule\r\n ],\r\n exports: [\r\n ButtonComponent,\r\n ButtonLoaderComponent,\r\n DropdownComponent,\r\n ListboxComponent,\r\n PillComponent,\r\n\r\n ListboxItemComponent,\r\n ListboxLabelComponent\r\n ]\r\n})\r\nexport class DesyButtonsModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { A11yModule } from '@angular/cdk/a11y';\r\nimport { DesyButtonsModule } from '../desy-buttons/desy-buttons.module';\r\n\r\n// components\r\nimport { ModalComponent } from './components/modal/modal.component';\r\nimport { ModalButtonPrimaryComponent } from './components/modal/modal-button-primary/modal-button-primary.component';\r\nimport { ModalButtonSecondaryComponent } from './components/modal/modal-button-secondary/modal-button-secondary.component';\r\nimport { DialogComponent } from './components/dialog/dialog.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n ModalComponent,\r\n ModalButtonPrimaryComponent,\r\n ModalButtonSecondaryComponent,\r\n DialogComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n A11yModule,\r\n SharedModule,\r\n DesyButtonsModule\r\n ],\r\n exports: [\r\n ModalComponent,\r\n ModalButtonPrimaryComponent,\r\n ModalButtonSecondaryComponent,\r\n DialogComponent\r\n ],\r\n})\r\nexport class DesyModalsModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { DesyCommonsModule } from '../desy-commons/desy-commons.module';\r\n\r\nimport { BreadcrumbsComponent } from './components/breadcrumbs/breadcrumbs.component';\r\nimport { BreadcrumbsItemComponent } from './components/breadcrumbs/breadcrumbs-item/breadcrumbs-item.component';\r\nimport { ErrorSummaryComponent } from './components/error-summary/error-summary.component';\r\nimport { ErrorSummaryItemComponent } from './components/error-summary/error-summary-item/error-summary-item.component';\r\nimport { MenuHorizontalComponent } from './components/menu-horizontal/menu-horizontal.component';\r\nimport { MenuHorizontalItemComponent } from './components/menu-horizontal/menu-horizontal-item/menu-horizontal-item.component';\r\nimport { MenuVerticalComponent } from './components/menu-vertical/menu-vertical.component';\r\nimport { NavComponent } from './components/nav/nav.component';\r\nimport { SkipLinkComponent } from './components/skip-link/skip-link.component';\r\nimport { HeaderComponent } from './components/header/header.component';\r\nimport { HeaderSubnavComponent } from './components/header/header-subnav/header-subnav.component';\r\nimport { HeaderNavigationComponent } from './components/header/header-navigation/header-navigation.component';\r\nimport { HeaderDropdownComponent } from './components/header/header-dropdown/header-dropdown.component';\r\nimport { HeaderOffcanvasButtonComponent } from './components/header/header-offcanvas/header-offcanvas-button/header-offcanvas-button.component';\r\nimport { HeaderOffcanvasComponent } from './components/header/header-offcanvas/header-offcanvas.component';\r\nimport { NotificationComponent } from './components/notification/notification.component';\r\nimport { NotificationItemComponent } from './components/notification/notification-item/notification-item.component';\r\nimport { FooterComponent } from './components/footer/footer.component';\r\nimport { MenubarComponent } from './components/menubar/menubar.component';\r\nimport { MenubaritemDirective } from './components/menubar/directives/menubaritem.directive';\r\nimport { MenubarItemComponent } from './components/menubar/components/menubar-item/menubar-item.component';\r\nimport { MenubarSubitemComponent } from './components/menubar/components/menubar-subitem/menubar-subitem.component';\r\nimport { MenubarSubsubitemComponent } from './components/menubar/components/menubar-subsubitem/menubar-subsubitem.component';\r\nimport { MenubarLabelComponent } from './components/menubar/components/menubar-label/menubar-label.component';\r\nimport { NavItemComponent } from './components/nav/nav-item/nav-item.component';\r\nimport { MenuVerticalItemComponent } from './components/menu-vertical/menu-vertical-item/menu-vertical-item.component';\r\nimport { MenuVerticalItemSubComponent } from './components/menu-vertical/menu-vertical-item-sub/menu-vertical-item-sub.component';\r\nimport { MenuVerticalItemSubItemComponent } from './components/menu-vertical/menu-vertical-item-sub-item/menu-vertical-item-sub-item.component';\r\nimport { HeaderOffcanvasCloseButtonComponent } from './components/header/header-offcanvas/header-offcanvas-close-button/header-offcanvas-close-button.component';\r\nimport { HeaderNavigationItemComponent } from './components/header/header-navigation/header-navigation-item/header-navigation-item.component';\r\nimport { FooterMetaComponent } from './components/footer/footer-meta/footer-meta.component';\r\nimport { FooterMetaItemComponent } from './components/footer/footer-meta/footer-meta-item/footer-meta-item.component';\r\nimport { FooterNavigationComponent } from './components/footer/footer-navigation/footer-navigation.component';\r\nimport { FooterNavigationItemComponent } from './components/footer/footer-navigation/footer-navigation-item/footer-navigation-item.component';\r\nimport { DesyButtonsModule } from '../desy-buttons/desy-buttons.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n BreadcrumbsComponent,\r\n BreadcrumbsItemComponent,\r\n ErrorSummaryComponent,\r\n ErrorSummaryItemComponent,\r\n FooterComponent,\r\n FooterMetaComponent,\r\n FooterMetaItemComponent,\r\n FooterNavigationComponent,\r\n FooterNavigationItemComponent,\r\n HeaderComponent,\r\n HeaderSubnavComponent,\r\n HeaderNavigationComponent,\r\n HeaderNavigationItemComponent,\r\n HeaderDropdownComponent,\r\n HeaderOffcanvasButtonComponent,\r\n HeaderOffcanvasComponent,\r\n HeaderOffcanvasCloseButtonComponent,\r\n MenuHorizontalComponent,\r\n MenuHorizontalItemComponent,\r\n MenuVerticalComponent,\r\n MenuVerticalItemComponent,\r\n MenuVerticalItemSubComponent,\r\n MenuVerticalItemSubItemComponent,\r\n MenubarComponent,\r\n MenubarLabelComponent,\r\n MenubarItemComponent,\r\n MenubarSubitemComponent,\r\n MenubarSubsubitemComponent,\r\n NavComponent,\r\n NotificationComponent,\r\n NotificationItemComponent,\r\n SkipLinkComponent,\r\n NavItemComponent,\r\n\r\n MenubaritemDirective,\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n DesyCommonsModule,\r\n DesyButtonsModule\r\n ],\r\n exports: [\r\n BreadcrumbsComponent,\r\n BreadcrumbsItemComponent,\r\n ErrorSummaryComponent,\r\n ErrorSummaryItemComponent,\r\n FooterComponent,\r\n FooterMetaComponent,\r\n FooterMetaItemComponent,\r\n FooterNavigationComponent,\r\n FooterNavigationItemComponent,\r\n HeaderComponent,\r\n HeaderSubnavComponent,\r\n HeaderNavigationComponent,\r\n HeaderNavigationItemComponent,\r\n HeaderDropdownComponent,\r\n HeaderOffcanvasComponent,\r\n HeaderOffcanvasButtonComponent,\r\n HeaderOffcanvasCloseButtonComponent,\r\n MenuHorizontalComponent,\r\n MenuHorizontalItemComponent,\r\n MenuVerticalComponent,\r\n MenuVerticalItemComponent,\r\n MenuVerticalItemSubComponent,\r\n MenuVerticalItemSubItemComponent,\r\n MenubarComponent,\r\n MenubarLabelComponent,\r\n MenubarItemComponent,\r\n MenubarSubitemComponent,\r\n MenubarSubsubitemComponent,\r\n NavComponent,\r\n NotificationComponent,\r\n NotificationItemComponent,\r\n NavItemComponent,\r\n SkipLinkComponent\r\n ]\r\n})\r\nexport class DesyNavModule { }\r\n","import { Directive, ElementRef, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[desyFocusClickedCell]'\r\n})\r\nexport class FocusClickedCellDirective {\r\n\r\n constructor(private el: ElementRef) {}\r\n\r\n @HostListener('click')\r\n onClick(): void {\r\n const hostElem = this.el.nativeElement; // la tabla - offsetParent\r\n const elemntsFocus = hostElem.offsetParent.querySelectorAll('[tabindex]'); // buscamos todos que pueden tener tabindex\r\n for (const iterator of elemntsFocus) {\r\n iterator.setAttribute('tabindex', '-1'); // se les quita\r\n }\r\n this.activeTabindex();\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n manageArrows(event): void {\r\n if (event.code === 'ArrowDown' || event.code === 'ArrowUp' || event.code === 'ArrowRight' || event.code === 'ArrowLeft'){\r\n let next = null;\r\n if (event.code === 'ArrowDown' || event.code === 'ArrowUp'){\r\n let tr = null;\r\n if (event.code === 'ArrowDown') {\r\n tr = this.el.nativeElement.parentNode.nextElementSibling;\r\n } else if (event.code === 'ArrowUp') {\r\n tr = this.el.nativeElement.parentNode.previousElementSibling;\r\n }\r\n\r\n next = tr ? tr.children[this.findIndex()] : null;\r\n event.preventDefault();\r\n }\r\n\r\n if (event.code === 'ArrowRight' || event.code === 'ArrowLeft') {\r\n next = this.el.nativeElement;\r\n do {\r\n if (event.code === 'ArrowRight') {\r\n next = next.nextElementSibling;\r\n } else if (event.code === 'ArrowLeft') {\r\n next = next.previousElementSibling;\r\n }\r\n } while (next && !next.getAttribute('tabindex'));\r\n }\r\n\r\n if (next && next.getAttribute('tabindex')){\r\n this.inactiveTabindex();\r\n next.setAttribute('tabindex', '0');\r\n next.focus();\r\n }\r\n }\r\n }\r\n\r\n private activeTabindex(): void {\r\n this.el.nativeElement.setAttribute('tabindex', '0');\r\n }\r\n\r\n private inactiveTabindex(): void {\r\n this.el.nativeElement.setAttribute('tabindex', '-1');\r\n }\r\n\r\n private findIndex(): number {\r\n const mynode = this.el.nativeElement;\r\n const parentNode = this.el.nativeElement.parentNode;\r\n let index = -1;\r\n for (let i = 0; i < parentNode.children.length; i++) {\r\n const otherNode = parentNode.children[i];\r\n if (mynode.isEqualNode(otherNode)){\r\n index = i;\r\n break;\r\n }\r\n }\r\n return index;\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { A11yModule } from '@angular/cdk/a11y';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { DesyFormsModule } from '../desy-forms/desy-forms.module';\r\n\r\nimport { TableComponent } from './components/table/table.component';\r\nimport { TableAdvancedComponent } from './components/table-advanced/table-advanced.component';\r\nimport { FocusClickedCellDirective } from './directives/focus-clicked-cell.directive';\r\nimport { TableCellComponent } from './components/table/components/table-cell.component';\r\nimport { TableHeaderComponent } from './components/table/components/table-header.component';\r\nimport { TableRowComponent } from './components/table/components/table-row.component';\r\nimport { TableCaptionComponent } from './components/table/components/table-caption.component';\r\nimport { TableAdvancedHeaderComponent } from './components/table-advanced/components/table-advanced-header.component';\r\nimport { TableAdvancedHeaderCellComponent } from './components/table-advanced/components/table-advanced-header-cell.component';\r\nimport { TableAdvancedRowComponent } from './components/table-advanced/components/table-advanced-row.component';\r\nimport { CellDirective } from './directives/cell.directive';\r\nimport { RowDirective } from './directives/row.directive';\r\nimport {TableAdvancedRowCellComponent} from './components/table-advanced/components/table-advanced-row-cell.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n TableComponent,\r\n TableCaptionComponent,\r\n TableCellComponent,\r\n TableHeaderComponent,\r\n TableRowComponent,\r\n TableAdvancedComponent,\r\n TableAdvancedHeaderComponent,\r\n TableAdvancedHeaderCellComponent,\r\n TableAdvancedRowComponent,\r\n TableAdvancedRowCellComponent,\r\n\r\n FocusClickedCellDirective,\r\n CellDirective,\r\n RowDirective,\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n A11yModule,\r\n SharedModule,\r\n DesyFormsModule\r\n ],\r\n exports: [\r\n TableComponent,\r\n TableCaptionComponent,\r\n TableCellComponent,\r\n TableHeaderComponent,\r\n TableRowComponent,\r\n TableAdvancedComponent,\r\n TableAdvancedHeaderComponent,\r\n TableAdvancedHeaderCellComponent,\r\n TableAdvancedRowComponent,\r\n TableAdvancedRowCellComponent\r\n ]\r\n})\r\nexport class DesyTablesModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { DesyNavModule } from '../desy-nav/desy-nav.module';\r\nimport { DesyButtonsModule } from '../desy-buttons/desy-buttons.module';\r\n\r\nimport { PaginationComponent } from './components/pagination/pagination.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n PaginationComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n DesyNavModule,\r\n DesyButtonsModule\r\n ],\r\n exports: [\r\n PaginationComponent\r\n ]\r\n})\r\nexport class DesyPaginationModule { }\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { DesyButtonsModule } from './desy-buttons/desy-buttons.module';\r\nimport { DesyFormsModule } from './desy-forms/desy-forms.module';\r\nimport { DesyModalsModule } from './desy-modals/desy-modals.module';\r\nimport { DesyNavModule } from './desy-nav/desy-nav.module';\r\nimport { DesyTablesModule } from './desy-tables/desy-tables.module';\r\nimport { DesyViewsModule } from './desy-views/desy-views.module';\r\nimport { DesyPaginationModule } from './desy-pagination/desy-pagination.module';\r\nimport { DesyCommonsModule } from './desy-commons/desy-commons.module';\r\n\r\n@NgModule({\r\n imports: [\r\n DesyButtonsModule,\r\n DesyCommonsModule,\r\n DesyFormsModule,\r\n DesyModalsModule,\r\n DesyNavModule,\r\n DesyTablesModule,\r\n DesyViewsModule,\r\n DesyPaginationModule,\r\n DesyCommonsModule,\r\n ],\r\n exports: [\r\n DesyButtonsModule,\r\n DesyCommonsModule,\r\n DesyFormsModule,\r\n DesyModalsModule,\r\n DesyNavModule,\r\n DesyTablesModule,\r\n DesyViewsModule,\r\n DesyPaginationModule,\r\n DesyCommonsModule,\r\n ]\r\n})\r\nexport class DesyAngularModule { }\r\n"]}