desy-angular 2.0.2 → 5.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (422) hide show
  1. package/README.md +5 -5
  2. package/bundles/desy-angular.umd.js +5961 -1898
  3. package/bundles/desy-angular.umd.js.map +1 -1
  4. package/bundles/desy-angular.umd.min.js +2 -2
  5. package/bundles/desy-angular.umd.min.js.map +1 -1
  6. package/desy-angular.d.ts +30 -17
  7. package/desy-angular.metadata.json +1 -1
  8. package/esm2015/desy-angular.js +31 -18
  9. package/esm2015/lib/desy-angular.module.js +6 -3
  10. package/esm2015/lib/desy-buttons/components/button/button.component.js +9 -20
  11. package/esm2015/lib/desy-buttons/components/button-loader/button-loader.component.js +8 -3
  12. package/esm2015/lib/desy-buttons/components/dropdown/dropdown.component.js +76 -17
  13. package/esm2015/lib/desy-buttons/components/listbox/listbox-item/listbox-item.component.js +26 -0
  14. package/esm2015/lib/desy-buttons/components/listbox/listbox-label/listbox-label.component.js +14 -0
  15. package/esm2015/lib/desy-buttons/components/listbox/listbox.component.js +287 -0
  16. package/esm2015/lib/desy-buttons/components/pill/pill.component.js +8 -10
  17. package/esm2015/lib/desy-buttons/desy-buttons.module.js +15 -4
  18. package/esm2015/lib/desy-buttons/interfaces/listbox-item-data.js +2 -0
  19. package/esm2015/lib/desy-buttons/interfaces/listbox-label-data.js +2 -0
  20. package/esm2015/lib/desy-commons/components/content/content.component.js +14 -0
  21. package/esm2015/lib/desy-commons/components/description/description.component.js +14 -0
  22. package/esm2015/lib/desy-commons/components/icon/icon.component.js +14 -0
  23. package/esm2015/lib/desy-commons/components/title/title.component.js +14 -0
  24. package/esm2015/lib/desy-commons/desy-commons.module.js +33 -0
  25. package/esm2015/lib/desy-commons/interfaces/content-data.js +2 -0
  26. package/esm2015/lib/desy-commons/interfaces/description-data.js +2 -0
  27. package/esm2015/lib/desy-commons/interfaces/icon-data.js +2 -0
  28. package/esm2015/lib/desy-commons/interfaces/index.js +5 -0
  29. package/esm2015/lib/desy-commons/interfaces/title-data.js +2 -0
  30. package/esm2015/lib/desy-forms/components/character-count/character-count.component.js +2 -2
  31. package/esm2015/lib/desy-forms/components/checkboxes/checkbox-item/checkbox-item.component.js +190 -0
  32. package/esm2015/lib/desy-forms/components/checkboxes/checkboxes.component.js +181 -74
  33. package/esm2015/lib/desy-forms/components/date-input/date-input-day/date-input-day.component.js +46 -0
  34. package/esm2015/lib/desy-forms/components/date-input/date-input-divider/date-input-divider.component.js +19 -0
  35. package/esm2015/lib/desy-forms/components/date-input/date-input-item/date-input-item.component.js +13 -0
  36. package/esm2015/lib/desy-forms/components/date-input/date-input-month/date-input-month.component.js +46 -0
  37. package/esm2015/lib/desy-forms/components/date-input/date-input-year/date-input-year.component.js +44 -0
  38. package/esm2015/lib/desy-forms/components/date-input/date-input.component.js +132 -27
  39. package/esm2015/lib/desy-forms/components/error-message/error-message.component.js +17 -5
  40. package/esm2015/lib/desy-forms/components/fieldset/fieldset.component.js +27 -4
  41. package/esm2015/lib/desy-forms/components/fieldset/legend/legend.component.js +6 -5
  42. package/esm2015/lib/desy-forms/components/file-upload/file-upload.component.js +1 -1
  43. package/esm2015/lib/desy-forms/components/form-field/form-field.component.js +45 -7
  44. package/esm2015/lib/desy-forms/components/hint/hint.component.js +18 -6
  45. package/esm2015/lib/desy-forms/components/input/input.component.js +2 -3
  46. package/esm2015/lib/desy-forms/components/input-group/input-group-divider/input-group-divider.component.js +20 -0
  47. package/esm2015/lib/desy-forms/components/input-group/input-group-input/input-group-input.component.js +46 -0
  48. package/esm2015/lib/desy-forms/components/input-group/input-group-item/input-group-item.component.js +13 -0
  49. package/esm2015/lib/desy-forms/components/input-group/input-group-select/input-group-select.component.js +42 -0
  50. package/esm2015/lib/desy-forms/components/input-group/input-group.component.js +115 -21
  51. package/esm2015/lib/desy-forms/components/label/label.component.js +21 -8
  52. package/esm2015/lib/desy-forms/components/radios/radio-item/radio-item.component.js +147 -0
  53. package/esm2015/lib/desy-forms/components/radios/radios.component.js +198 -12
  54. package/esm2015/lib/desy-forms/components/search-bar/search-bar.component.js +14 -4
  55. package/esm2015/lib/desy-forms/components/select/option/option.component.js +17 -0
  56. package/esm2015/lib/desy-forms/components/select/option-group/option-group.component.js +17 -0
  57. package/esm2015/lib/desy-forms/components/select/select-item/select-item.component.js +14 -0
  58. package/esm2015/lib/desy-forms/components/select/select.component.js +33 -18
  59. package/esm2015/lib/desy-forms/components/template-driven-wrapper/template-driven-wrapper.component.js +1 -1
  60. package/esm2015/lib/desy-forms/components/textarea/textarea.component.js +1 -1
  61. package/esm2015/lib/desy-forms/desy-forms.module.js +43 -6
  62. package/esm2015/lib/desy-forms/directives/condition.directive.js +1 -1
  63. package/esm2015/lib/desy-forms/interfaces/accesibility-data.js +1 -1
  64. package/esm2015/lib/desy-forms/interfaces/error-message-data.js +1 -1
  65. package/esm2015/lib/desy-forms/interfaces/fieldset-data.js +1 -1
  66. package/esm2015/lib/desy-forms/interfaces/hint-data.js +1 -1
  67. package/esm2015/lib/desy-forms/interfaces/index.js +1 -1
  68. package/esm2015/lib/desy-forms/interfaces/item-checkbox-data.js +1 -1
  69. package/esm2015/lib/desy-forms/interfaces/item-date-input-data.js +1 -1
  70. package/esm2015/lib/desy-forms/interfaces/item-divider-date-input-data.js +2 -0
  71. package/esm2015/lib/desy-forms/interfaces/item-divider-input-group-data.js +1 -1
  72. package/esm2015/lib/desy-forms/interfaces/item-input-group-data.js +1 -1
  73. package/esm2015/lib/desy-forms/interfaces/item-radio-data.js +1 -1
  74. package/esm2015/lib/desy-forms/interfaces/item-radio-with-template-data.js +1 -1
  75. package/esm2015/lib/desy-forms/interfaces/label-data.js +1 -1
  76. package/esm2015/lib/desy-forms/interfaces/legend-data.js +1 -1
  77. package/esm2015/lib/desy-forms/interfaces/select-item-data.js +1 -1
  78. package/esm2015/lib/desy-modals/components/dialog/dialog.component.js +1 -1
  79. package/esm2015/lib/desy-modals/components/modal/modal-button-primary/modal-button-primary.component.js +19 -0
  80. package/esm2015/lib/desy-modals/components/modal/modal-button-secondary/modal-button-secondary.component.js +19 -0
  81. package/esm2015/lib/desy-modals/components/modal/modal.component.js +106 -21
  82. package/esm2015/lib/desy-modals/desy-modals.module.js +7 -1
  83. package/esm2015/lib/desy-modals/interfaces/dialog-options.js +1 -1
  84. package/esm2015/lib/desy-modals/interfaces/index.js +1 -1
  85. package/esm2015/lib/desy-modals/interfaces/modal-button-data.js +1 -1
  86. package/esm2015/lib/desy-modals/interfaces/modal-data.js +1 -1
  87. package/esm2015/lib/desy-modals/interfaces/modal-icon-data.js +1 -1
  88. package/esm2015/lib/desy-modals/interfaces/modal-options.js +1 -1
  89. package/esm2015/lib/desy-modals/interfaces/open-dialog-result.js +1 -1
  90. package/esm2015/lib/desy-modals/services/dialog.service.js +1 -1
  91. package/esm2015/lib/desy-nav/components/breadcrumbs/breadcrumbs-item/breadcrumbs-item.component.js +15 -0
  92. package/esm2015/lib/desy-nav/components/breadcrumbs/breadcrumbs.component.js +18 -16
  93. package/esm2015/lib/desy-nav/components/error-summary/error-summary-item/error-summary-item.component.js +15 -0
  94. package/esm2015/lib/desy-nav/components/error-summary/error-summary.component.js +34 -13
  95. package/esm2015/lib/desy-nav/components/footer/footer-meta/footer-meta-item/footer-meta-item.component.js +16 -0
  96. package/esm2015/lib/desy-nav/components/footer/footer-meta/footer-meta.component.js +23 -0
  97. package/esm2015/lib/desy-nav/components/footer/footer-navigation/footer-navigation-item/footer-navigation-item.component.js +16 -0
  98. package/esm2015/lib/desy-nav/components/footer/footer-navigation/footer-navigation.component.js +16 -0
  99. package/esm2015/lib/desy-nav/components/footer/footer.component.js +31 -8
  100. package/esm2015/lib/desy-nav/components/header/header-dropdown/header-dropdown.component.js +26 -36
  101. package/esm2015/lib/desy-nav/components/header/header-navigation/header-navigation-item/header-navigation-item.component.js +19 -0
  102. package/esm2015/lib/desy-nav/components/header/header-navigation/header-navigation.component.js +14 -7
  103. package/esm2015/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-button/header-offcanvas-button.component.js +25 -0
  104. package/esm2015/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-close-button/header-offcanvas-close-button.component.js +11 -0
  105. package/esm2015/lib/desy-nav/components/header/header-offcanvas/header-offcanvas.component.js +76 -14
  106. package/esm2015/lib/desy-nav/components/header/header-subnav/header-subnav.component.js +26 -36
  107. package/esm2015/lib/desy-nav/components/header/header.component.js +38 -7
  108. package/esm2015/lib/desy-nav/components/menu-horizontal/menu-horizontal-item/menu-horizontal-item.component.js +28 -0
  109. package/esm2015/lib/desy-nav/components/menu-horizontal/menu-horizontal.component.js +41 -21
  110. package/esm2015/lib/desy-nav/components/menu-vertical/menu-vertical-item/menu-vertical-item.component.js +32 -0
  111. package/esm2015/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub/menu-vertical-item-sub.component.js +16 -0
  112. package/esm2015/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub-item/menu-vertical-item-sub-item.component.js +24 -0
  113. package/esm2015/lib/desy-nav/components/menu-vertical/menu-vertical.component.js +43 -93
  114. package/esm2015/lib/desy-nav/components/menubar/components/menubar-item/menubar-item.component.js +36 -0
  115. package/esm2015/lib/desy-nav/components/menubar/components/menubar-label/menubar-label.component.js +14 -0
  116. package/esm2015/lib/desy-nav/components/menubar/components/menubar-subitem/menubar-subitem.component.js +29 -0
  117. package/esm2015/lib/desy-nav/components/menubar/components/menubar-subsubitem/menubar-subsubitem.component.js +23 -0
  118. package/esm2015/lib/desy-nav/components/menubar/directives/menubaritem.directive.js +37 -0
  119. package/esm2015/lib/desy-nav/components/menubar/menubar.component.js +656 -0
  120. package/esm2015/lib/desy-nav/components/nav/nav-item/nav-item.component.js +30 -0
  121. package/esm2015/lib/desy-nav/components/nav/nav.component.js +44 -22
  122. package/esm2015/lib/desy-nav/components/notification/notification-item/notification-item.component.js +18 -0
  123. package/esm2015/lib/desy-nav/components/notification/notification.component.js +49 -22
  124. package/esm2015/lib/desy-nav/components/skip-link/skip-link.component.js +24 -5
  125. package/esm2015/lib/desy-nav/desy-nav.module.js +78 -12
  126. package/esm2015/lib/desy-nav/interfaces/breadcrumbs.data.js +1 -1
  127. package/esm2015/lib/desy-nav/interfaces/error-summary-data.js +1 -1
  128. package/esm2015/lib/desy-nav/interfaces/footer-data.js +1 -1
  129. package/esm2015/lib/desy-nav/interfaces/header-dropdown-data.js +1 -1
  130. package/esm2015/lib/desy-nav/interfaces/header-navigation-data.js +1 -1
  131. package/esm2015/lib/desy-nav/interfaces/header-navigation-item-data.js +1 -1
  132. package/esm2015/lib/desy-nav/interfaces/header-offcanvas-data.js +1 -1
  133. package/esm2015/lib/desy-nav/interfaces/header-subnav-data.js +1 -1
  134. package/esm2015/lib/desy-nav/interfaces/index.js +1 -5
  135. package/esm2015/lib/desy-nav/interfaces/menu-horizontal-item-data.js +1 -1
  136. package/esm2015/lib/desy-nav/interfaces/menu-horizontal-item-event-data.js +1 -1
  137. package/esm2015/lib/desy-nav/interfaces/menu-vertical-items-data.js +1 -1
  138. package/esm2015/lib/desy-nav/interfaces/menu-vertical-sub-data.js +1 -1
  139. package/esm2015/lib/desy-nav/interfaces/menu-vertical-sub-items-data.js +1 -1
  140. package/esm2015/lib/desy-nav/interfaces/menubar-item-sub-item-sub-item.js +2 -0
  141. package/esm2015/lib/desy-nav/interfaces/menubar-item-sub-item.js +2 -0
  142. package/esm2015/lib/desy-nav/interfaces/menubar-item-sub.js +2 -0
  143. package/esm2015/lib/desy-nav/interfaces/menubar-item.js +2 -0
  144. package/esm2015/lib/desy-nav/interfaces/nav-item-event.data.js +1 -1
  145. package/esm2015/lib/desy-nav/interfaces/nav-item.data.js +1 -1
  146. package/esm2015/lib/desy-nav/interfaces/notification-items-data.js +1 -1
  147. package/esm2015/lib/desy-nav/interfaces/notification-options.js +1 -1
  148. package/esm2015/lib/desy-pagination/components/pagination/pagination.component.js +41 -76
  149. package/esm2015/lib/desy-pagination/desy-pagination.module.js +1 -1
  150. package/esm2015/lib/desy-pagination/interfaces/index.js +1 -1
  151. package/esm2015/lib/desy-pagination/interfaces/pagination-item.data.js +1 -1
  152. package/esm2015/lib/desy-tables/components/table/components/table-caption.component.js +14 -0
  153. package/esm2015/lib/desy-tables/components/table/components/table-cell.component.js +17 -0
  154. package/esm2015/lib/desy-tables/components/table/components/table-header.component.js +14 -0
  155. package/esm2015/lib/desy-tables/components/table/components/table-row.component.js +14 -0
  156. package/esm2015/lib/desy-tables/components/table/table.component.js +47 -14
  157. package/esm2015/lib/desy-tables/components/table-advanced/components/table-advanced-header-cell.component.js +20 -0
  158. package/esm2015/lib/desy-tables/components/table-advanced/components/table-advanced-header.component.js +14 -0
  159. package/esm2015/lib/desy-tables/components/table-advanced/components/table-advanced-row-cell.component.js +17 -0
  160. package/esm2015/lib/desy-tables/components/table-advanced/components/table-advanced-row.component.js +20 -0
  161. package/esm2015/lib/desy-tables/components/table-advanced/table-advanced.component.js +173 -149
  162. package/esm2015/lib/desy-tables/desy-tables.module.js +31 -3
  163. package/esm2015/lib/desy-tables/directives/cell.directive.js +26 -0
  164. package/esm2015/lib/desy-tables/directives/focus-clicked-cell.directive.js +12 -8
  165. package/esm2015/lib/desy-tables/directives/row.directive.js +24 -0
  166. package/esm2015/lib/desy-tables/interfaces/cell-data.js +1 -1
  167. package/esm2015/lib/desy-tables/interfaces/head-cell-data.js +1 -1
  168. package/esm2015/lib/desy-tables/interfaces/index.js +2 -1
  169. package/esm2015/lib/desy-tables/interfaces/recalculate-table-params.js +2 -0
  170. package/esm2015/lib/desy-tables/interfaces/row-data.js +1 -1
  171. package/esm2015/lib/desy-tables/interfaces/wrapper-data.js +2 -0
  172. package/esm2015/lib/desy-views/components/accordion/accordion-header/accordion-header.component.js +14 -0
  173. package/esm2015/lib/desy-views/components/accordion/accordion-item/accordion-item.component.js +33 -0
  174. package/esm2015/lib/desy-views/components/accordion/accordion.component.js +84 -56
  175. package/esm2015/lib/desy-views/components/alert/alert.component.js +28 -23
  176. package/esm2015/lib/desy-views/components/collapsible/collapsible.component.js +6 -10
  177. package/esm2015/lib/desy-views/components/description-list/definition/definition.component.js +15 -0
  178. package/esm2015/lib/desy-views/components/description-list/description-item/description-item.component.js +26 -0
  179. package/esm2015/lib/desy-views/components/description-list/description-list.component.js +13 -23
  180. package/esm2015/lib/desy-views/components/description-list/term/term.component.js +15 -0
  181. package/esm2015/lib/desy-views/components/details/details.component.js +1 -1
  182. package/esm2015/lib/desy-views/components/item/item-content-bottom/item-content-bottom.component.js +14 -0
  183. package/esm2015/lib/desy-views/components/item/item-content-right/item-content-right.component.js +11 -0
  184. package/esm2015/lib/desy-views/components/item/item-item/item-item.component.js +11 -0
  185. package/esm2015/lib/desy-views/components/item/item.component.js +57 -24
  186. package/esm2015/lib/desy-views/components/media-object/media-object.component.js +1 -1
  187. package/esm2015/lib/desy-views/components/spinner/spinner.component.js +1 -1
  188. package/esm2015/lib/desy-views/components/status/status.component.js +2 -2
  189. package/esm2015/lib/desy-views/components/status-item/status-item.component.js +39 -26
  190. package/esm2015/lib/desy-views/components/tabs/panel/panel.component.js +15 -0
  191. package/esm2015/lib/desy-views/components/tabs/tab-item/tab-item.component.js +28 -0
  192. package/esm2015/lib/desy-views/components/tabs/tabs.component.js +58 -36
  193. package/esm2015/lib/desy-views/components/tooltip/tooltip-content/tooltip-content.component.js +11 -0
  194. package/esm2015/lib/desy-views/components/tooltip/tooltip.component.js +132 -0
  195. package/esm2015/lib/desy-views/desy-views.module.js +41 -1
  196. package/esm2015/lib/desy-views/interfaces/accordion-header.data.js +1 -1
  197. package/esm2015/lib/desy-views/interfaces/accordion-item.data.js +1 -1
  198. package/esm2015/lib/desy-views/interfaces/alert-options.js +1 -1
  199. package/esm2015/lib/desy-views/interfaces/description-item.data.js +2 -0
  200. package/esm2015/lib/desy-views/interfaces/index.js +4 -4
  201. package/esm2015/lib/desy-views/interfaces/open-alert-result.js +1 -1
  202. package/esm2015/lib/desy-views/interfaces/status-data.js +1 -1
  203. package/esm2015/lib/desy-views/interfaces/status-icon-data.js +1 -1
  204. package/esm2015/lib/desy-views/interfaces/status-item-title-data.js +1 -1
  205. package/esm2015/lib/desy-views/interfaces/tabs-items-data.js +1 -1
  206. package/esm2015/lib/desy-views/interfaces/tabs-panel-data.js +1 -1
  207. package/esm2015/lib/desy-views/interfaces/term-definition.data.js +2 -0
  208. package/esm2015/lib/desy-views/services/alert.service.js +1 -1
  209. package/esm2015/lib/shared/components/accessibility/accessibility.component.js +1 -1
  210. package/esm2015/lib/shared/components/accessibility-and-content-required/accessibility-and-content-required.component.js +27 -0
  211. package/esm2015/lib/shared/components/accessibility-and-text-or-html-required/accessibility-and-text-or-html-required.component.js +1 -1
  212. package/esm2015/lib/shared/components/content-base/content-base.component.js +20 -0
  213. package/esm2015/lib/shared/components/index.js +3 -1
  214. package/esm2015/lib/shared/components/text-or-html-required/text-or-html-required.component.js +1 -1
  215. package/esm2015/lib/shared/decorators/desy-content-child.decorator.js +41 -0
  216. package/esm2015/lib/shared/decorators/desy-on-input-change.decorator.js +19 -0
  217. package/esm2015/lib/shared/directives/attribute-change.directive.js +43 -0
  218. package/esm2015/lib/shared/directives/click-outside.directive.js +1 -1
  219. package/esm2015/lib/shared/directives/content-change.directive.js +43 -0
  220. package/esm2015/lib/shared/directives/content-empty.directive.js +86 -0
  221. package/esm2015/lib/shared/directives/custom-inner-content.directive.js +62 -0
  222. package/esm2015/lib/shared/directives/inner-content.directive.js +5 -3
  223. package/esm2015/lib/shared/interfaces/accesibility-data.js +1 -1
  224. package/esm2015/lib/shared/pipes/external-href.pipe.js +28 -0
  225. package/esm2015/lib/shared/pipes/inner-html.pipe.js +1 -1
  226. package/esm2015/lib/shared/pipes/make-html-list.pipe.js +1 -1
  227. package/esm2015/lib/shared/shared.module.js +23 -4
  228. package/esm2015/lib/shared/utils/focus-utils.js +1 -1
  229. package/esm2015/lib/shared/utils/search-utils.js +1 -1
  230. package/esm2015/lib/shared/utils/string-utils.js +18 -0
  231. package/esm2015/public-api.js +88 -29
  232. package/fesm2015/desy-angular.js +5759 -2069
  233. package/fesm2015/desy-angular.js.map +1 -1
  234. package/lib/desy-buttons/components/button/button.component.d.ts +6 -7
  235. package/lib/desy-buttons/components/button-loader/button-loader.component.d.ts +1 -0
  236. package/lib/desy-buttons/components/dropdown/dropdown.component.d.ts +9 -7
  237. package/lib/desy-buttons/components/listbox/listbox-item/listbox-item.component.d.ts +12 -0
  238. package/lib/desy-buttons/components/listbox/listbox-label/listbox-label.component.d.ts +4 -0
  239. package/lib/desy-buttons/components/listbox/listbox.component.d.ts +53 -0
  240. package/lib/desy-buttons/components/pill/pill.component.d.ts +3 -3
  241. package/lib/desy-buttons/interfaces/listbox-item-data.d.ts +9 -0
  242. package/lib/{desy-nav/interfaces/notification-title-data.d.ts → desy-buttons/interfaces/listbox-label-data.d.ts} +1 -1
  243. package/lib/desy-commons/components/content/content.component.d.ts +5 -0
  244. package/lib/desy-commons/components/description/description.component.d.ts +5 -0
  245. package/lib/desy-commons/components/icon/icon.component.d.ts +5 -0
  246. package/lib/desy-commons/components/title/title.component.d.ts +5 -0
  247. package/lib/desy-commons/desy-commons.module.d.ts +2 -0
  248. package/lib/{desy-nav/interfaces/notification-content-data.d.ts → desy-commons/interfaces/content-data.d.ts} +1 -1
  249. package/lib/desy-commons/interfaces/description-data.d.ts +5 -0
  250. package/lib/desy-commons/interfaces/icon-data.d.ts +4 -0
  251. package/lib/desy-commons/interfaces/index.d.ts +4 -0
  252. package/lib/desy-commons/interfaces/title-data.d.ts +6 -0
  253. package/lib/desy-forms/components/checkboxes/checkbox-item/checkbox-item.component.d.ts +47 -0
  254. package/lib/desy-forms/components/checkboxes/checkboxes.component.d.ts +53 -15
  255. package/lib/desy-forms/components/date-input/date-input-day/date-input-day.component.d.ts +22 -0
  256. package/lib/desy-forms/components/date-input/date-input-divider/date-input-divider.component.d.ts +7 -0
  257. package/lib/desy-forms/components/date-input/date-input-item/date-input-item.component.d.ts +4 -0
  258. package/lib/desy-forms/components/date-input/date-input-month/date-input-month.component.d.ts +22 -0
  259. package/lib/desy-forms/components/date-input/date-input-year/date-input-year.component.d.ts +19 -0
  260. package/lib/desy-forms/components/date-input/date-input.component.d.ts +21 -4
  261. package/lib/desy-forms/components/error-message/error-message.component.d.ts +8 -2
  262. package/lib/desy-forms/components/fieldset/fieldset.component.d.ts +12 -4
  263. package/lib/desy-forms/components/fieldset/legend/legend.component.d.ts +3 -2
  264. package/lib/desy-forms/components/form-field/form-field.component.d.ts +7 -18
  265. package/lib/desy-forms/components/hint/hint.component.d.ts +8 -2
  266. package/lib/desy-forms/components/input-group/input-group-divider/input-group-divider.component.d.ts +8 -0
  267. package/lib/desy-forms/components/input-group/input-group-input/input-group-input.component.d.ts +20 -0
  268. package/lib/desy-forms/components/input-group/input-group-item/input-group-item.component.d.ts +4 -0
  269. package/lib/desy-forms/components/input-group/input-group-select/input-group-select.component.d.ts +16 -0
  270. package/lib/desy-forms/components/input-group/input-group.component.d.ts +24 -6
  271. package/lib/desy-forms/components/label/label.component.d.ts +12 -5
  272. package/lib/desy-forms/components/radios/radio-item/radio-item.component.d.ts +43 -0
  273. package/lib/desy-forms/components/radios/radios.component.d.ts +56 -11
  274. package/lib/desy-forms/components/search-bar/search-bar.component.d.ts +7 -3
  275. package/lib/desy-forms/components/select/option/option.component.d.ts +7 -0
  276. package/lib/desy-forms/components/select/option-group/option-group.component.d.ts +7 -0
  277. package/lib/desy-forms/components/select/select-item/select-item.component.d.ts +4 -0
  278. package/lib/desy-forms/components/select/select.component.d.ts +9 -2
  279. package/lib/desy-forms/interfaces/error-message-data.d.ts +5 -5
  280. package/lib/desy-forms/interfaces/fieldset-data.d.ts +5 -4
  281. package/lib/desy-forms/interfaces/hint-data.d.ts +4 -4
  282. package/lib/desy-forms/interfaces/item-checkbox-data.d.ts +1 -0
  283. package/lib/desy-forms/interfaces/item-date-input-data.d.ts +3 -0
  284. package/lib/desy-forms/interfaces/item-divider-date-input-data.d.ts +5 -0
  285. package/lib/desy-forms/interfaces/item-input-group-data.d.ts +1 -2
  286. package/lib/desy-forms/interfaces/item-radio-data.d.ts +15 -12
  287. package/lib/desy-forms/interfaces/legend-data.d.ts +4 -4
  288. package/lib/desy-forms/interfaces/select-item-data.d.ts +2 -1
  289. package/lib/desy-modals/components/modal/modal-button-primary/modal-button-primary.component.d.ts +7 -0
  290. package/lib/desy-modals/components/modal/modal-button-secondary/modal-button-secondary.component.d.ts +7 -0
  291. package/lib/desy-modals/components/modal/modal.component.d.ts +27 -2
  292. package/lib/desy-modals/interfaces/modal-button-data.d.ts +2 -2
  293. package/lib/desy-nav/components/breadcrumbs/breadcrumbs-item/breadcrumbs-item.component.d.ts +6 -0
  294. package/lib/desy-nav/components/breadcrumbs/breadcrumbs.component.d.ts +7 -4
  295. package/lib/desy-nav/components/error-summary/error-summary-item/error-summary-item.component.d.ts +6 -0
  296. package/lib/desy-nav/components/error-summary/error-summary.component.d.ts +12 -4
  297. package/lib/desy-nav/components/footer/footer-meta/footer-meta-item/footer-meta-item.component.d.ts +7 -0
  298. package/lib/desy-nav/components/footer/footer-meta/footer-meta.component.d.ts +10 -0
  299. package/lib/desy-nav/components/footer/footer-navigation/footer-navigation-item/footer-navigation-item.component.d.ts +7 -0
  300. package/lib/desy-nav/components/footer/footer-navigation/footer-navigation.component.d.ts +8 -0
  301. package/lib/desy-nav/components/footer/footer.component.d.ts +15 -3
  302. package/lib/desy-nav/components/header/header-dropdown/header-dropdown.component.d.ts +10 -6
  303. package/lib/desy-nav/components/header/header-navigation/header-navigation-item/header-navigation-item.component.d.ts +10 -0
  304. package/lib/desy-nav/components/header/header-navigation/header-navigation.component.d.ts +6 -2
  305. package/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-button/header-offcanvas-button.component.d.ts +6 -0
  306. package/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-close-button/header-offcanvas-close-button.component.d.ts +3 -0
  307. package/lib/desy-nav/components/header/header-offcanvas/header-offcanvas.component.d.ts +30 -9
  308. package/lib/desy-nav/components/header/header-subnav/header-subnav.component.d.ts +11 -8
  309. package/lib/desy-nav/components/header/header.component.d.ts +16 -5
  310. package/lib/desy-nav/components/menu-horizontal/menu-horizontal-item/menu-horizontal-item.component.d.ts +15 -0
  311. package/lib/desy-nav/components/menu-horizontal/menu-horizontal.component.d.ts +6 -5
  312. package/lib/desy-nav/components/menu-vertical/menu-vertical-item/menu-vertical-item.component.d.ts +18 -0
  313. package/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub/menu-vertical-item-sub.component.d.ts +8 -0
  314. package/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub-item/menu-vertical-item-sub-item.component.d.ts +15 -0
  315. package/lib/desy-nav/components/menu-vertical/menu-vertical.component.d.ts +13 -18
  316. package/lib/desy-nav/components/menubar/components/menubar-item/menubar-item.component.d.ts +23 -0
  317. package/lib/desy-nav/components/menubar/components/menubar-label/menubar-label.component.d.ts +4 -0
  318. package/lib/desy-nav/components/menubar/components/menubar-subitem/menubar-subitem.component.d.ts +15 -0
  319. package/lib/desy-nav/components/menubar/components/menubar-subsubitem/menubar-subsubitem.component.d.ts +10 -0
  320. package/lib/desy-nav/components/menubar/directives/menubaritem.directive.d.ts +16 -0
  321. package/lib/desy-nav/components/menubar/menubar.component.d.ts +88 -0
  322. package/lib/desy-nav/components/nav/nav-item/nav-item.component.d.ts +17 -0
  323. package/lib/desy-nav/components/nav/nav.component.d.ts +7 -5
  324. package/lib/desy-nav/components/notification/notification-item/notification-item.component.d.ts +9 -0
  325. package/lib/desy-nav/components/notification/notification.component.d.ts +25 -11
  326. package/lib/desy-nav/components/skip-link/skip-link.component.d.ts +9 -2
  327. package/lib/desy-nav/interfaces/breadcrumbs.data.d.ts +4 -4
  328. package/lib/desy-nav/interfaces/error-summary-data.d.ts +4 -4
  329. package/lib/desy-nav/interfaces/footer-data.d.ts +7 -10
  330. package/lib/desy-nav/interfaces/header-dropdown-data.d.ts +5 -1
  331. package/lib/desy-nav/interfaces/header-offcanvas-data.d.ts +0 -1
  332. package/lib/desy-nav/interfaces/header-subnav-data.d.ts +6 -1
  333. package/lib/desy-nav/interfaces/index.d.ts +0 -4
  334. package/lib/desy-nav/interfaces/menu-vertical-items-data.d.ts +15 -13
  335. package/lib/desy-nav/interfaces/menu-vertical-sub-data.d.ts +3 -4
  336. package/lib/desy-nav/interfaces/menu-vertical-sub-items-data.d.ts +15 -12
  337. package/lib/desy-nav/interfaces/menubar-item-sub-item-sub-item.d.ts +6 -0
  338. package/lib/desy-nav/interfaces/menubar-item-sub-item.d.ts +9 -0
  339. package/lib/desy-nav/interfaces/menubar-item-sub.d.ts +6 -0
  340. package/lib/desy-nav/interfaces/menubar-item.d.ts +18 -0
  341. package/lib/desy-nav/interfaces/nav-item.data.d.ts +2 -1
  342. package/lib/desy-nav/interfaces/notification-items-data.d.ts +8 -5
  343. package/lib/desy-nav/interfaces/notification-options.d.ts +5 -8
  344. package/lib/desy-pagination/components/pagination/pagination.component.d.ts +7 -12
  345. package/lib/desy-tables/components/table/components/table-caption.component.d.ts +4 -0
  346. package/lib/desy-tables/components/table/components/table-cell.component.d.ts +8 -0
  347. package/lib/desy-tables/components/table/components/table-header.component.d.ts +5 -0
  348. package/lib/desy-tables/components/table/components/table-row.component.d.ts +5 -0
  349. package/lib/desy-tables/components/table/table.component.d.ts +16 -4
  350. package/lib/desy-tables/components/table-advanced/components/table-advanced-header-cell.component.d.ts +13 -0
  351. package/lib/desy-tables/components/table-advanced/components/table-advanced-header.component.d.ts +5 -0
  352. package/lib/desy-tables/components/table-advanced/components/table-advanced-row-cell.component.d.ts +8 -0
  353. package/lib/desy-tables/components/table-advanced/components/table-advanced-row.component.d.ts +8 -0
  354. package/lib/desy-tables/components/table-advanced/table-advanced.component.d.ts +66 -39
  355. package/lib/desy-tables/directives/cell.directive.d.ts +14 -0
  356. package/lib/desy-tables/directives/focus-clicked-cell.directive.d.ts +3 -3
  357. package/lib/desy-tables/directives/row.directive.d.ts +16 -0
  358. package/lib/desy-tables/interfaces/head-cell-data.d.ts +2 -2
  359. package/lib/desy-tables/interfaces/index.d.ts +1 -0
  360. package/lib/desy-tables/interfaces/recalculate-table-params.d.ts +11 -0
  361. package/lib/desy-tables/interfaces/row-data.d.ts +1 -0
  362. package/lib/desy-tables/interfaces/wrapper-data.d.ts +4 -0
  363. package/lib/desy-views/components/accordion/accordion-header/accordion-header.component.d.ts +5 -0
  364. package/lib/desy-views/components/accordion/accordion-item/accordion-item.component.d.ts +13 -0
  365. package/lib/desy-views/components/accordion/accordion.component.d.ts +20 -11
  366. package/lib/desy-views/components/alert/alert.component.d.ts +6 -4
  367. package/lib/desy-views/components/collapsible/collapsible.component.d.ts +4 -6
  368. package/lib/desy-views/components/description-list/definition/definition.component.d.ts +6 -0
  369. package/lib/desy-views/components/description-list/description-item/description-item.component.d.ts +9 -0
  370. package/lib/desy-views/components/description-list/description-list.component.d.ts +9 -6
  371. package/lib/desy-views/components/description-list/term/term.component.d.ts +6 -0
  372. package/lib/desy-views/components/item/item-content-bottom/item-content-bottom.component.d.ts +5 -0
  373. package/lib/desy-views/components/item/item-content-right/item-content-right.component.d.ts +3 -0
  374. package/lib/desy-views/components/item/item-item/item-item.component.d.ts +3 -0
  375. package/lib/desy-views/components/item/item.component.d.ts +28 -9
  376. package/lib/desy-views/components/status-item/status-item.component.d.ts +17 -6
  377. package/lib/desy-views/components/tabs/panel/panel.component.d.ts +6 -0
  378. package/lib/desy-views/components/tabs/tab-item/tab-item.component.d.ts +12 -0
  379. package/lib/desy-views/components/tabs/tabs.component.d.ts +15 -3
  380. package/lib/desy-views/components/tooltip/tooltip-content/tooltip-content.component.d.ts +3 -0
  381. package/lib/desy-views/components/tooltip/tooltip.component.d.ts +35 -0
  382. package/lib/desy-views/interfaces/accordion-header.data.d.ts +3 -3
  383. package/lib/desy-views/interfaces/accordion-item.data.d.ts +8 -8
  384. package/lib/desy-views/interfaces/description-item.data.d.ts +8 -0
  385. package/lib/desy-views/interfaces/index.d.ts +3 -3
  386. package/lib/desy-views/interfaces/tabs-items-data.d.ts +5 -5
  387. package/lib/desy-views/interfaces/tabs-panel-data.d.ts +4 -4
  388. package/lib/desy-views/interfaces/term-definition.data.d.ts +7 -0
  389. package/lib/shared/components/accessibility-and-content-required/accessibility-and-content-required.component.d.ts +26 -0
  390. package/lib/shared/components/content-base/content-base.component.d.ts +9 -0
  391. package/lib/shared/components/index.d.ts +2 -0
  392. package/lib/shared/decorators/desy-content-child.decorator.d.ts +15 -0
  393. package/lib/shared/decorators/desy-on-input-change.decorator.d.ts +5 -0
  394. package/lib/shared/directives/attribute-change.directive.d.ts +10 -0
  395. package/lib/shared/directives/content-change.directive.d.ts +19 -0
  396. package/lib/shared/directives/content-empty.directive.d.ts +26 -0
  397. package/lib/shared/directives/custom-inner-content.directive.d.ts +22 -0
  398. package/lib/shared/directives/inner-content.directive.d.ts +1 -0
  399. package/lib/shared/pipes/external-href.pipe.d.ts +8 -0
  400. package/lib/shared/utils/string-utils.d.ts +10 -0
  401. package/package.json +16 -11
  402. package/public-api.d.ts +75 -25
  403. package/esm2015/lib/desy-forms/components/checkboxes/item-checkbox/item-checkbox.component.js +0 -100
  404. package/esm2015/lib/desy-forms/components/radios/item-radio/item-radio.component.js +0 -89
  405. package/esm2015/lib/desy-nav/components/header/header-offcanvas-button/header-offcanvas-button.component.js +0 -62
  406. package/esm2015/lib/desy-nav/interfaces/notification-content-data.js +0 -2
  407. package/esm2015/lib/desy-nav/interfaces/notification-description-data.js +0 -2
  408. package/esm2015/lib/desy-nav/interfaces/notification-icon-data.js +0 -2
  409. package/esm2015/lib/desy-nav/interfaces/notification-title-data.js +0 -2
  410. package/esm2015/lib/desy-views/interfaces/description.data.js +0 -2
  411. package/esm2015/lib/desy-views/interfaces/item-data.js +0 -2
  412. package/esm2015/lib/desy-views/interfaces/item-description.data.js +0 -2
  413. package/esm2015/lib/shared/utils/navigation-utils.js +0 -18
  414. package/lib/desy-forms/components/checkboxes/item-checkbox/item-checkbox.component.d.ts +0 -39
  415. package/lib/desy-forms/components/radios/item-radio/item-radio.component.d.ts +0 -36
  416. package/lib/desy-nav/components/header/header-offcanvas-button/header-offcanvas-button.component.d.ts +0 -19
  417. package/lib/desy-nav/interfaces/notification-description-data.d.ts +0 -5
  418. package/lib/desy-nav/interfaces/notification-icon-data.d.ts +0 -3
  419. package/lib/desy-views/interfaces/description.data.d.ts +0 -7
  420. package/lib/desy-views/interfaces/item-data.d.ts +0 -19
  421. package/lib/desy-views/interfaces/item-description.data.d.ts +0 -8
  422. package/lib/shared/utils/navigation-utils.d.ts +0 -3
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Decorador para controlar los cambios de un input
3
+ * @param callbackName nombre de la función a la que se llamará tras aplicar el cambio
4
+ */
5
+ export function DesyOnInputChange(callbackName) {
6
+ return (target, propertyKey) => {
7
+ const privateKeyName = `_${propertyKey}`;
8
+ Object.defineProperty(target, propertyKey, {
9
+ set(value) {
10
+ this[privateKeyName] = value;
11
+ this[callbackName]();
12
+ },
13
+ get() {
14
+ return this[privateKeyName];
15
+ }
16
+ });
17
+ };
18
+ }
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzeS1vbi1pbnB1dC1jaGFuZ2UuZGVjb3JhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvc2hhcmVkL2RlY29yYXRvcnMvZGVzeS1vbi1pbnB1dC1jaGFuZ2UuZGVjb3JhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxZQUFvQjtJQUNwRCxPQUFPLENBQUMsTUFBVyxFQUFFLFdBQW1CLEVBQUUsRUFBRTtRQUMxQyxNQUFNLGNBQWMsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBRXpDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRTtZQUN6QyxHQUFHLENBQUMsS0FBSztnQkFDUCxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsS0FBSyxDQUFDO2dCQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztZQUN2QixDQUFDO1lBQ0QsR0FBRztnQkFDRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUM5QixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBEZWNvcmFkb3IgcGFyYSBjb250cm9sYXIgbG9zIGNhbWJpb3MgZGUgdW4gaW5wdXRcclxuICogQHBhcmFtIGNhbGxiYWNrTmFtZSBub21icmUgZGUgbGEgZnVuY2nDs24gYSBsYSBxdWUgc2UgbGxhbWFyw6EgdHJhcyBhcGxpY2FyIGVsIGNhbWJpb1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIERlc3lPbklucHV0Q2hhbmdlKGNhbGxiYWNrTmFtZTogc3RyaW5nKTogUHJvcGVydHlEZWNvcmF0b3Ige1xyXG4gIHJldHVybiAodGFyZ2V0OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcpID0+IHtcclxuICAgIGNvbnN0IHByaXZhdGVLZXlOYW1lID0gYF8ke3Byb3BlcnR5S2V5fWA7XHJcblxyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcclxuICAgICAgc2V0KHZhbHVlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpc1twcml2YXRlS2V5TmFtZV0gPSB2YWx1ZTtcclxuICAgICAgICB0aGlzW2NhbGxiYWNrTmFtZV0oKTtcclxuICAgICAgfSxcclxuICAgICAgZ2V0KCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXNbcHJpdmF0ZUtleU5hbWVdO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9O1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,43 @@
1
+ import { Directive, ElementRef, EventEmitter, Input, Output } from '@angular/core';
2
+ export class AttributeChangeDirective {
3
+ constructor(elementRef) {
4
+ this.elementRef = elementRef;
5
+ this.desyAttributeChange = new EventEmitter();
6
+ this.desyAttributeChangeMutation = new EventEmitter();
7
+ const element = this.elementRef.nativeElement;
8
+ this.changes = new MutationObserver((mutations) => {
9
+ mutations.forEach((mutation) => {
10
+ if (this.attributesToCheck) {
11
+ const attrs = typeof (this.attributesToCheck) === 'string' ? [this.attributesToCheck] : this.attributesToCheck;
12
+ if (attrs.findIndex(v => v === mutation.attributeName) >= 0) {
13
+ this.desyAttributeChange.emit(this.elementRef.nativeElement.innerHTML);
14
+ this.desyAttributeChangeMutation.emit(mutation);
15
+ }
16
+ }
17
+ });
18
+ });
19
+ this.changes.observe(element, {
20
+ attributes: true,
21
+ childList: false,
22
+ characterData: false,
23
+ subtree: false
24
+ });
25
+ }
26
+ ngOnDestroy() {
27
+ this.changes.disconnect();
28
+ }
29
+ }
30
+ AttributeChangeDirective.decorators = [
31
+ { type: Directive, args: [{
32
+ selector: '[desyAttributeChange]'
33
+ },] }
34
+ ];
35
+ AttributeChangeDirective.ctorParameters = () => [
36
+ { type: ElementRef }
37
+ ];
38
+ AttributeChangeDirective.propDecorators = {
39
+ attributesToCheck: [{ type: Input }],
40
+ desyAttributeChange: [{ type: Output }],
41
+ desyAttributeChangeMutation: [{ type: Output }]
42
+ };
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLWNoYW5nZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXN5LWFuZ3VsYXIvc3JjL2xpYi9zaGFyZWQvZGlyZWN0aXZlcy9hdHRyaWJ1dGUtY2hhbmdlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUs1RixNQUFNLE9BQU8sd0JBQXdCO0lBWW5DLFlBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFMbkMsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUd6QyxnQ0FBMkIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBR3RELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO1FBRTlDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLFNBQTJCLEVBQUUsRUFBRTtZQUNoRSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBd0IsRUFBRSxFQUFFO2dCQUM3QyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtvQkFDMUIsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO29CQUMvRyxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRTt3QkFDM0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQzt3QkFDdkUsSUFBSSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztxQkFDakQ7aUJBQ0Y7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FDRixDQUFDO1FBRUYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFO1lBQzVCLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLGFBQWEsRUFBRSxLQUFLO1lBQ3BCLE9BQU8sRUFBRSxLQUFLO1NBQ2YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQzVCLENBQUM7OztZQXpDRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjthQUNsQzs7O1lBSmtCLFVBQVU7OztnQ0FTMUIsS0FBSztrQ0FFTCxNQUFNOzBDQUdOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbZGVzeUF0dHJpYnV0ZUNoYW5nZV0nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdHRyaWJ1dGVDaGFuZ2VEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICBwcml2YXRlIGNoYW5nZXM6IE11dGF0aW9uT2JzZXJ2ZXI7XHJcblxyXG4gIEBJbnB1dCgpIGF0dHJpYnV0ZXNUb0NoZWNrOiBzdHJpbmd8c3RyaW5nW107XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBkZXN5QXR0cmlidXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgZGVzeUF0dHJpYnV0ZUNoYW5nZU11dGF0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICB0aGlzLmNoYW5nZXMgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zOiBNdXRhdGlvblJlY29yZFtdKSA9PiB7XHJcbiAgICAgICAgbXV0YXRpb25zLmZvckVhY2goKG11dGF0aW9uOiBNdXRhdGlvblJlY29yZCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMuYXR0cmlidXRlc1RvQ2hlY2spIHtcclxuICAgICAgICAgICAgY29uc3QgYXR0cnMgPSB0eXBlb2YgKHRoaXMuYXR0cmlidXRlc1RvQ2hlY2spID09PSAnc3RyaW5nJyA/IFt0aGlzLmF0dHJpYnV0ZXNUb0NoZWNrXSA6IHRoaXMuYXR0cmlidXRlc1RvQ2hlY2s7XHJcbiAgICAgICAgICAgIGlmIChhdHRycy5maW5kSW5kZXgodiA9PiB2ID09PSBtdXRhdGlvbi5hdHRyaWJ1dGVOYW1lKSA+PSAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5kZXN5QXR0cmlidXRlQ2hhbmdlLmVtaXQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MKTtcclxuICAgICAgICAgICAgICB0aGlzLmRlc3lBdHRyaWJ1dGVDaGFuZ2VNdXRhdGlvbi5lbWl0KG11dGF0aW9uKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuY2hhbmdlcy5vYnNlcnZlKGVsZW1lbnQsIHtcclxuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcclxuICAgICAgY2hpbGRMaXN0OiBmYWxzZSxcclxuICAgICAgY2hhcmFjdGVyRGF0YTogZmFsc2UsXHJcbiAgICAgIHN1YnRyZWU6IGZhbHNlXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jaGFuZ2VzLmRpc2Nvbm5lY3QoKTtcclxuICB9XHJcbn1cclxuIl19
@@ -32,4 +32,4 @@ ClickOutsideDirective.propDecorators = {
32
32
  desyClickOutsideElem: [{ type: Input }],
33
33
  onClick: [{ type: HostListener, args: ['document:click', ['$event.target'],] }]
34
34
  };
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2stb3V0c2lkZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9zaGFyZWQvZGlyZWN0aXZlcy9jbGljay1vdXRzaWRlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFLakcsTUFBTSxPQUFPLHFCQUFxQjtJQU1oQyxZQUFvQixjQUEwQjtRQUExQixtQkFBYyxHQUFkLGNBQWMsQ0FBWTtRQUpuQixXQUFNLEdBQUcsSUFBSSxDQUFDO1FBQy9CLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUdBLENBQUM7SUFHNUMsT0FBTyxDQUFDLE1BQU07UUFDbkIsSUFBSSxhQUFhLENBQUM7UUFDbEIsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDN0IsYUFBYSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDNUQ7YUFBTTtZQUNMLGFBQWEsR0FBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQXlCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ2pGO1FBQ0QsSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2pDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDMUI7SUFDSCxDQUFDOzs7WUF0QkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxvQkFBb0I7YUFDL0I7OztZQUptQixVQUFVOzs7cUJBTzNCLEtBQUssU0FBQyxrQkFBa0I7MkJBQ3hCLE1BQU07bUNBQ04sS0FBSztzQkFJTCxZQUFZLFNBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tkZXN5Q2xpY2tPdXRzaWRlXSdcclxufSlcclxuZXhwb3J0IGNsYXNzIENsaWNrT3V0c2lkZURpcmVjdGl2ZSB7XHJcblxyXG4gIEBJbnB1dCgnZGVzeUNsaWNrT3V0c2lkZScpIGFjdGl2ZSA9IHRydWU7XHJcbiAgQE91dHB1dCgpIGNsaWNrT3V0c2lkZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICBASW5wdXQoKSBkZXN5Q2xpY2tPdXRzaWRlRWxlbTogRWxlbWVudDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBob3N0RWxlbWVudFJlZjogRWxlbWVudFJlZikgeyB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQudGFyZ2V0J10pXHJcbiAgcHVibGljIG9uQ2xpY2sodGFyZ2V0KTogdm9pZCB7XHJcbiAgICBsZXQgY2xpY2tlZEluc2lkZTtcclxuICAgIGlmICh0aGlzLmRlc3lDbGlja091dHNpZGVFbGVtKSB7XHJcbiAgICAgIGNsaWNrZWRJbnNpZGUgPSB0aGlzLmRlc3lDbGlja091dHNpZGVFbGVtLmNvbnRhaW5zKHRhcmdldCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjbGlja2VkSW5zaWRlID0gKHRoaXMuaG9zdEVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBFbGVtZW50KS5jb250YWlucyh0YXJnZXQpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFjbGlja2VkSW5zaWRlICYmIHRoaXMuYWN0aXZlKSB7XHJcbiAgICAgIHRoaXMuY2xpY2tPdXRzaWRlLmVtaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiJdfQ==
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2stb3V0c2lkZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXN5LWFuZ3VsYXIvc3JjL2xpYi9zaGFyZWQvZGlyZWN0aXZlcy9jbGljay1vdXRzaWRlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFLakcsTUFBTSxPQUFPLHFCQUFxQjtJQU1oQyxZQUFvQixjQUEwQjtRQUExQixtQkFBYyxHQUFkLGNBQWMsQ0FBWTtRQUpuQixXQUFNLEdBQUcsSUFBSSxDQUFDO1FBQy9CLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUdBLENBQUM7SUFHNUMsT0FBTyxDQUFDLE1BQU07UUFDbkIsSUFBSSxhQUFhLENBQUM7UUFDbEIsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDN0IsYUFBYSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDNUQ7YUFBTTtZQUNMLGFBQWEsR0FBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQXlCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ2pGO1FBQ0QsSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2pDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDMUI7SUFDSCxDQUFDOzs7WUF0QkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxvQkFBb0I7YUFDL0I7OztZQUptQixVQUFVOzs7cUJBTzNCLEtBQUssU0FBQyxrQkFBa0I7MkJBQ3hCLE1BQU07bUNBQ04sS0FBSztzQkFJTCxZQUFZLFNBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tkZXN5Q2xpY2tPdXRzaWRlXSdcclxufSlcclxuZXhwb3J0IGNsYXNzIENsaWNrT3V0c2lkZURpcmVjdGl2ZSB7XHJcblxyXG4gIEBJbnB1dCgnZGVzeUNsaWNrT3V0c2lkZScpIGFjdGl2ZSA9IHRydWU7XHJcbiAgQE91dHB1dCgpIGNsaWNrT3V0c2lkZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICBASW5wdXQoKSBkZXN5Q2xpY2tPdXRzaWRlRWxlbTogRWxlbWVudDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBob3N0RWxlbWVudFJlZjogRWxlbWVudFJlZikgeyB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQudGFyZ2V0J10pXHJcbiAgcHVibGljIG9uQ2xpY2sodGFyZ2V0KTogdm9pZCB7XHJcbiAgICBsZXQgY2xpY2tlZEluc2lkZTtcclxuICAgIGlmICh0aGlzLmRlc3lDbGlja091dHNpZGVFbGVtKSB7XHJcbiAgICAgIGNsaWNrZWRJbnNpZGUgPSB0aGlzLmRlc3lDbGlja091dHNpZGVFbGVtLmNvbnRhaW5zKHRhcmdldCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjbGlja2VkSW5zaWRlID0gKHRoaXMuaG9zdEVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBFbGVtZW50KS5jb250YWlucyh0YXJnZXQpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFjbGlja2VkSW5zaWRlICYmIHRoaXMuYWN0aXZlKSB7XHJcbiAgICAgIHRoaXMuY2xpY2tPdXRzaWRlLmVtaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiJdfQ==
@@ -0,0 +1,43 @@
1
+ import { Directive, ElementRef, EventEmitter, Input, Output } from '@angular/core';
2
+ /**
3
+ * Permite comprobar cuándo se produce un cambio en el contenido de un elemento.
4
+ * La propia directiva emite el html interno del elemento en formato string, mientras que desyContentChangeMutation emite los cambios.
5
+ */
6
+ export class ContentChangeDirective {
7
+ constructor(elementRef) {
8
+ this.elementRef = elementRef;
9
+ this.observeProperties = {
10
+ attributes: false,
11
+ childList: true,
12
+ characterData: true,
13
+ subtree: true
14
+ };
15
+ this.desyContentChange = new EventEmitter();
16
+ this.desyContentChangeMutation = new EventEmitter();
17
+ const element = this.elementRef.nativeElement;
18
+ this.changes = new MutationObserver((mutations) => {
19
+ mutations.forEach((mutation) => {
20
+ this.desyContentChange.emit(this.elementRef);
21
+ this.desyContentChangeMutation.emit(mutation);
22
+ });
23
+ });
24
+ this.changes.observe(element, this.observeProperties);
25
+ }
26
+ ngOnDestroy() {
27
+ this.changes.disconnect();
28
+ }
29
+ }
30
+ ContentChangeDirective.decorators = [
31
+ { type: Directive, args: [{
32
+ selector: '[desyContentChange]'
33
+ },] }
34
+ ];
35
+ ContentChangeDirective.ctorParameters = () => [
36
+ { type: ElementRef }
37
+ ];
38
+ ContentChangeDirective.propDecorators = {
39
+ observeProperties: [{ type: Input }],
40
+ desyContentChange: [{ type: Output }],
41
+ desyContentChangeMutation: [{ type: Output }]
42
+ };
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1jaGFuZ2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvc2hhcmVkL2RpcmVjdGl2ZXMvY29udGVudC1jaGFuZ2UuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTVGOzs7R0FHRztBQUlILE1BQU0sT0FBTyxzQkFBc0I7SUFpQmpDLFlBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFiakMsc0JBQWlCLEdBQTBGO1lBQ2xILFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsYUFBYSxFQUFFLElBQUk7WUFDbkIsT0FBTyxFQUFFLElBQUk7U0FDZCxDQUFDO1FBR0ssc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUduRCw4QkFBeUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBR3BELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO1FBRTlDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLFNBQTJCLEVBQUUsRUFBRTtZQUNoRSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBd0IsRUFBRSxFQUFFO2dCQUM3QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNoRCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FDRixDQUFDO1FBRUYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUM1QixDQUFDOzs7WUFwQ0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxxQkFBcUI7YUFDaEM7OztZQVJrQixVQUFVOzs7Z0NBYTFCLEtBQUs7Z0NBT0wsTUFBTTt3Q0FHTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8qKlxyXG4gKiBQZXJtaXRlIGNvbXByb2JhciBjdcOhbmRvIHNlIHByb2R1Y2UgdW4gY2FtYmlvIGVuIGVsIGNvbnRlbmlkbyBkZSB1biBlbGVtZW50by5cclxuICogTGEgcHJvcGlhIGRpcmVjdGl2YSBlbWl0ZSBlbCBodG1sIGludGVybm8gZGVsIGVsZW1lbnRvIGVuIGZvcm1hdG8gc3RyaW5nLCBtaWVudHJhcyBxdWUgZGVzeUNvbnRlbnRDaGFuZ2VNdXRhdGlvbiBlbWl0ZSBsb3MgY2FtYmlvcy5cclxuICovXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2Rlc3lDb250ZW50Q2hhbmdlXSdcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbnRlbnRDaGFuZ2VEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICBwcml2YXRlIGNoYW5nZXM6IE11dGF0aW9uT2JzZXJ2ZXI7XHJcblxyXG4gIEBJbnB1dCgpIG9ic2VydmVQcm9wZXJ0aWVzOiB7IGF0dHJpYnV0ZXM6IGJvb2xlYW4sIGNoaWxkTGlzdDogYm9vbGVhbiwgY2hhcmFjdGVyRGF0YTogYm9vbGVhbiwgc3VidHJlZTogYm9vbGVhbiB9ID0ge1xyXG4gICAgYXR0cmlidXRlczogZmFsc2UsXHJcbiAgICBjaGlsZExpc3Q6IHRydWUsXHJcbiAgICBjaGFyYWN0ZXJEYXRhOiB0cnVlLFxyXG4gICAgc3VidHJlZTogdHJ1ZVxyXG4gIH07XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBkZXN5Q29udGVudENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RWxlbWVudFJlZj4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGRlc3lDb250ZW50Q2hhbmdlTXV0YXRpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xyXG5cclxuICAgIHRoaXMuY2hhbmdlcyA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKChtdXRhdGlvbnM6IE11dGF0aW9uUmVjb3JkW10pID0+IHtcclxuICAgICAgICBtdXRhdGlvbnMuZm9yRWFjaCgobXV0YXRpb246IE11dGF0aW9uUmVjb3JkKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRlc3lDb250ZW50Q2hhbmdlLmVtaXQodGhpcy5lbGVtZW50UmVmKTtcclxuICAgICAgICAgIHRoaXMuZGVzeUNvbnRlbnRDaGFuZ2VNdXRhdGlvbi5lbWl0KG11dGF0aW9uKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLmNoYW5nZXMub2JzZXJ2ZShlbGVtZW50LCB0aGlzLm9ic2VydmVQcm9wZXJ0aWVzKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jaGFuZ2VzLmRpc2Nvbm5lY3QoKTtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,86 @@
1
+ import { ContentChildren, Directive, ElementRef, EventEmitter, Output } from '@angular/core';
2
+ /**
3
+ * Emite un evento cuando el contenido de un elemento esté vacío
4
+ * El contenido marcado con #desyContentEmptyIgnore será ignorado
5
+ *
6
+ * 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
7
+ * cambios que afectan a la template, conviene forzar la detección de cambios. (Ejemplo de esto en el icono de NotificationComponent)
8
+ */
9
+ export class ContentEmptyDirective {
10
+ constructor(elementRef) {
11
+ this.elementRef = elementRef;
12
+ this.desyContentEmpty = new EventEmitter();
13
+ this.desyContentNotEmpty = new EventEmitter();
14
+ this.lastWasEmpty = false;
15
+ this.viewInit = false;
16
+ const element = this.elementRef.nativeElement;
17
+ this.changes = new MutationObserver((mutations) => mutations.forEach(() => this.checkContent()));
18
+ this.changes.observe(element, {
19
+ attributes: false,
20
+ childList: true,
21
+ characterData: true,
22
+ subtree: false
23
+ });
24
+ }
25
+ ngAfterViewInit() {
26
+ if (!this.viewInit) {
27
+ this.viewInit = true;
28
+ this.checkContent();
29
+ }
30
+ }
31
+ /**
32
+ * Comprueba el contenido del elemento una vez se haya inicializado la vista. Si se detecta que el elemento está vacío, las comprobaciones
33
+ * sucesivas que tampoco detecten contenido no emitirán evento.
34
+ */
35
+ checkContent() {
36
+ if (this.viewInit) {
37
+ const childs = this.elementRef.nativeElement.childNodes;
38
+ let hasContent = false;
39
+ for (let i = 0; i < childs.length && !hasContent; i++) {
40
+ const item = childs.item(i);
41
+ if (item.nodeType === Node.TEXT_NODE && item.textContent.length > 0) {
42
+ hasContent = true;
43
+ }
44
+ else if ((item.nodeType === Node.ELEMENT_NODE || item.nodeType === Node.CDATA_SECTION_NODE) && this.isContentNode(item)) {
45
+ hasContent = true;
46
+ }
47
+ }
48
+ if (hasContent) {
49
+ if (this.lastWasEmpty) {
50
+ this.desyContentNotEmpty.emit(this.elementRef.nativeElement.innerHTML);
51
+ }
52
+ this.lastWasEmpty = false;
53
+ }
54
+ else {
55
+ if (!this.lastWasEmpty) {
56
+ this.desyContentEmpty.emit(this.elementRef.nativeElement.innerHTML);
57
+ }
58
+ this.lastWasEmpty = true;
59
+ }
60
+ }
61
+ }
62
+ isContentNode(elem) {
63
+ let contentNode = true;
64
+ if (this.contentsToIgnore && this.contentsToIgnore.length > 0) {
65
+ contentNode = !this.contentsToIgnore.find(ignoreElem => ignoreElem.nativeElement === elem);
66
+ }
67
+ return contentNode;
68
+ }
69
+ ngOnDestroy() {
70
+ this.changes.disconnect();
71
+ }
72
+ }
73
+ ContentEmptyDirective.decorators = [
74
+ { type: Directive, args: [{
75
+ selector: '[desyContentEmpty]'
76
+ },] }
77
+ ];
78
+ ContentEmptyDirective.ctorParameters = () => [
79
+ { type: ElementRef }
80
+ ];
81
+ ContentEmptyDirective.propDecorators = {
82
+ desyContentEmpty: [{ type: Output }],
83
+ desyContentNotEmpty: [{ type: Output }],
84
+ contentsToIgnore: [{ type: ContentChildren, args: ['desyContentEmptyIgnore', { read: ElementRef },] }]
85
+ };
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1lbXB0eS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXN5LWFuZ3VsYXIvc3JjL2xpYi9zaGFyZWQvZGlyZWN0aXZlcy9jb250ZW50LWVtcHR5LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLGVBQWUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBYSxNQUFNLEVBQVksTUFBTSxlQUFlLENBQUM7QUFFaEk7Ozs7OztHQU1HO0FBSUgsTUFBTSxPQUFPLHFCQUFxQjtJQWNoQyxZQUFvQixVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBWG5DLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFHdEMsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUt4QyxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBR3ZCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO1FBQzlDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLFNBQTJCLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNuSCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUU7WUFDNUIsVUFBVSxFQUFFLEtBQUs7WUFDakIsU0FBUyxFQUFFLElBQUk7WUFDZixhQUFhLEVBQUUsSUFBSTtZQUNuQixPQUFPLEVBQUUsS0FBSztTQUNmLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDckIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILFlBQVk7UUFDVixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsTUFBTSxNQUFNLEdBQTBCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQztZQUMvRSxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUM7WUFDdkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3JELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzVCLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDbkUsVUFBVSxHQUFHLElBQUksQ0FBQztpQkFDbkI7cUJBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ3pILFVBQVUsR0FBRyxJQUFJLENBQUM7aUJBQ25CO2FBQ0Y7WUFFRCxJQUFJLFVBQVUsRUFBRTtnQkFDZCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7b0JBQ3JCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7aUJBQ3hFO2dCQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO2FBQzNCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO29CQUN0QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUNyRTtnQkFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQzthQUMxQjtTQUNGO0lBQ0gsQ0FBQztJQUVPLGFBQWEsQ0FBQyxJQUFVO1FBQzlCLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUM3RCxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLGFBQWEsS0FBSyxJQUFJLENBQUMsQ0FBQztTQUM1RjtRQUNELE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUM1QixDQUFDOzs7WUE1RUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxvQkFBb0I7YUFDL0I7OztZQVhrRCxVQUFVOzs7K0JBYzFELE1BQU07a0NBR04sTUFBTTsrQkFHTixlQUFlLFNBQUMsd0JBQXdCLEVBQUUsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDb250ZW50Q2hpbGRyZW4sIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBPbkRlc3Ryb3ksIE91dHB1dCwgUXVlcnlMaXN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8qKlxyXG4gKiBFbWl0ZSB1biBldmVudG8gY3VhbmRvIGVsIGNvbnRlbmlkbyBkZSB1biBlbGVtZW50byBlc3TDqSB2YWPDrW9cclxuICogRWwgY29udGVuaWRvIG1hcmNhZG8gY29uICNkZXN5Q29udGVudEVtcHR5SWdub3JlIHNlcsOhIGlnbm9yYWRvXHJcbiAqXHJcbiAqIE5PVEE6IHRlbmVyIGVuIGN1ZW50YSBxdWUgbG9zIGV2ZW50b3Mgc2UgZW1pdGVuIGRlc3B1w6lzIGRlIGdlbmVyYXJzZSBsYSB2aXN0YSwgcG9yIGxvIHF1ZSBzaSBhbCBnZXN0aW9uYXIgZWwgZXZlbnRvIHNlIHJlYWxpemFuXHJcbiAqIGNhbWJpb3MgcXVlIGFmZWN0YW4gYSBsYSB0ZW1wbGF0ZSwgY29udmllbmUgZm9yemFyIGxhIGRldGVjY2nDs24gZGUgY2FtYmlvcy4gKEVqZW1wbG8gZGUgZXN0byBlbiBlbCBpY29ubyBkZSBOb3RpZmljYXRpb25Db21wb25lbnQpXHJcbiAqL1xyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tkZXN5Q29udGVudEVtcHR5XSdcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbnRlbnRFbXB0eURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBkZXN5Q29udGVudEVtcHR5ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgZGVzeUNvbnRlbnROb3RFbXB0eSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQENvbnRlbnRDaGlsZHJlbignZGVzeUNvbnRlbnRFbXB0eUlnbm9yZScsIHtyZWFkOiBFbGVtZW50UmVmfSkgY29udGVudHNUb0lnbm9yZTogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xyXG5cclxuICBwcml2YXRlIGNoYW5nZXM6IE11dGF0aW9uT2JzZXJ2ZXI7XHJcbiAgcHJpdmF0ZSBsYXN0V2FzRW1wdHkgPSBmYWxzZTtcclxuICBwcml2YXRlIHZpZXdJbml0ID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgdGhpcy5jaGFuZ2VzID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9uczogTXV0YXRpb25SZWNvcmRbXSkgPT4gbXV0YXRpb25zLmZvckVhY2goKCkgPT4gdGhpcy5jaGVja0NvbnRlbnQoKSkpO1xyXG4gICAgdGhpcy5jaGFuZ2VzLm9ic2VydmUoZWxlbWVudCwge1xyXG4gICAgICBhdHRyaWJ1dGVzOiBmYWxzZSxcclxuICAgICAgY2hpbGRMaXN0OiB0cnVlLFxyXG4gICAgICBjaGFyYWN0ZXJEYXRhOiB0cnVlLFxyXG4gICAgICBzdWJ0cmVlOiBmYWxzZVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMudmlld0luaXQpIHtcclxuICAgICAgdGhpcy52aWV3SW5pdCA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2hlY2tDb250ZW50KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb21wcnVlYmEgZWwgY29udGVuaWRvIGRlbCBlbGVtZW50byB1bmEgdmV6IHNlIGhheWEgaW5pY2lhbGl6YWRvIGxhIHZpc3RhLiBTaSBzZSBkZXRlY3RhIHF1ZSBlbCBlbGVtZW50byBlc3TDoSB2YWPDrW8sIGxhcyBjb21wcm9iYWNpb25lc1xyXG4gICAqIHN1Y2VzaXZhcyBxdWUgdGFtcG9jbyBkZXRlY3RlbiBjb250ZW5pZG8gbm8gZW1pdGlyw6FuIGV2ZW50by5cclxuICAgKi9cclxuICBjaGVja0NvbnRlbnQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy52aWV3SW5pdCkge1xyXG4gICAgICBjb25zdCBjaGlsZHM6IE5vZGVMaXN0T2Y8Q2hpbGROb2RlPiA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNoaWxkTm9kZXM7XHJcbiAgICAgIGxldCBoYXNDb250ZW50ID0gZmFsc2U7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRzLmxlbmd0aCAmJiAhaGFzQ29udGVudDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgaXRlbSA9IGNoaWxkcy5pdGVtKGkpO1xyXG4gICAgICAgIGlmIChpdGVtLm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSAmJiBpdGVtLnRleHRDb250ZW50Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIGhhc0NvbnRlbnQgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoKGl0ZW0ubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFIHx8IGl0ZW0ubm9kZVR5cGUgPT09IE5vZGUuQ0RBVEFfU0VDVElPTl9OT0RFKSAmJiB0aGlzLmlzQ29udGVudE5vZGUoaXRlbSkpIHtcclxuICAgICAgICAgIGhhc0NvbnRlbnQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGhhc0NvbnRlbnQpIHtcclxuICAgICAgICBpZiAodGhpcy5sYXN0V2FzRW1wdHkpIHtcclxuICAgICAgICAgIHRoaXMuZGVzeUNvbnRlbnROb3RFbXB0eS5lbWl0KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmlubmVySFRNTCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubGFzdFdhc0VtcHR5ID0gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmxhc3RXYXNFbXB0eSkge1xyXG4gICAgICAgICAgdGhpcy5kZXN5Q29udGVudEVtcHR5LmVtaXQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5sYXN0V2FzRW1wdHkgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzQ29udGVudE5vZGUoZWxlbTogTm9kZSk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGNvbnRlbnROb2RlID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLmNvbnRlbnRzVG9JZ25vcmUgJiYgdGhpcy5jb250ZW50c1RvSWdub3JlLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29udGVudE5vZGUgPSAhdGhpcy5jb250ZW50c1RvSWdub3JlLmZpbmQoaWdub3JlRWxlbSA9PiBpZ25vcmVFbGVtLm5hdGl2ZUVsZW1lbnQgPT09IGVsZW0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvbnRlbnROb2RlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmNoYW5nZXMuZGlzY29ubmVjdCgpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,62 @@
1
+ import { ComponentFactoryResolver, Directive, Injector, Input, ViewContainerRef } from '@angular/core';
2
+ import { ContentBaseComponent } from '../components';
3
+ /**
4
+ * Permite introducir contenido de forma dinámica en una posición determinada desde:
5
+ * - component: Componente existente de tipo ContentBase
6
+ * - html: texto html en formato string
7
+ * - text: texto plano en formato string
8
+ */
9
+ export class CustomInnerContentDirective {
10
+ constructor(viewContainerRef, resolver, injector) {
11
+ this.viewContainerRef = viewContainerRef;
12
+ this.resolver = resolver;
13
+ this.injector = injector;
14
+ this.factory = this.resolver.resolveComponentFactory(ContentBaseComponent);
15
+ }
16
+ ngOnChanges(changes) {
17
+ this.viewContainerRef.clear();
18
+ if (this.desyCustomInnerContent.component && this.desyCustomInnerContent.component instanceof ContentBaseComponent) {
19
+ // Se crea la vista embebida basándose en el contenido del ContentBase indicado.
20
+ this.viewContainerRef.createEmbeddedView(this.desyCustomInnerContent.component.getContent());
21
+ }
22
+ else if (this.desyCustomInnerContent.template) {
23
+ // Se crea la vista embebida utilizando directamente el template.
24
+ this.viewContainerRef.createEmbeddedView(this.desyCustomInnerContent.template);
25
+ }
26
+ else if (this.desyCustomInnerContent.html) {
27
+ // Se carga el contenido en un div temporal.
28
+ const tmpWrapper = document.createElement('div');
29
+ tmpWrapper.innerHTML = this.desyCustomInnerContent.html;
30
+ // Los nodos hijos del div se proyectan dentro de un componente ContentBase.
31
+ const nodeList = [];
32
+ tmpWrapper.childNodes.forEach(node => nodeList.push(node));
33
+ const componentRef = this.factory.create(this.injector, [nodeList]);
34
+ // Finalmente se crea la vista embebida basándose en el contenido del ContentBase creado.
35
+ // Se podría hacer con un this.viewContainerRef.createComponent(), pero así se evita el tag envolvente del componente en el DOM
36
+ this.viewContainerRef.createEmbeddedView(componentRef.instance.getContent());
37
+ }
38
+ else if (this.desyCustomInnerContent.text) {
39
+ // Se carga el contenido en un nodo de texto
40
+ const textNode = document.createTextNode(this.desyCustomInnerContent.text);
41
+ // El nodo de texto se proyecta dentro de un componente ContentBase
42
+ const componentRef = this.factory.create(this.injector, [[textNode]]);
43
+ // Finalmente se crea la vista embebida basándose en el contenido del ContentBase creado.
44
+ // Se podría hacer con un this.viewContainerRef.createComponent(), pero así se evita el tag envolvente del componente en el DOM
45
+ this.viewContainerRef.createEmbeddedView(componentRef.instance.getContent());
46
+ }
47
+ }
48
+ }
49
+ CustomInnerContentDirective.decorators = [
50
+ { type: Directive, args: [{
51
+ selector: '[desyCustomInnerContent]'
52
+ },] }
53
+ ];
54
+ CustomInnerContentDirective.ctorParameters = () => [
55
+ { type: ViewContainerRef },
56
+ { type: ComponentFactoryResolver },
57
+ { type: Injector }
58
+ ];
59
+ CustomInnerContentDirective.propDecorators = {
60
+ desyCustomInnerContent: [{ type: Input }]
61
+ };
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWlubmVyLWNvbnRlbnQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvc2hhcmVkL2RpcmVjdGl2ZXMvY3VzdG9tLWlubmVyLWNvbnRlbnQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx3QkFBd0IsRUFDeEIsU0FBUyxFQUNULFFBQVEsRUFDUixLQUFLLEVBRUwsZ0JBQWdCLEVBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVuRDs7Ozs7R0FLRztBQUlILE1BQU0sT0FBTywyQkFBMkI7SUFNdEMsWUFBb0IsZ0JBQWtDLEVBQVUsUUFBa0MsRUFBVSxRQUFrQjtRQUExRyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBMEI7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQzVILElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzlCLElBQUksSUFBSSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxZQUFZLG9CQUFvQixFQUFFO1lBRWxILGdGQUFnRjtZQUNoRixJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1NBQzlGO2FBQU0sSUFBSSxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxFQUFFO1lBRS9DLGlFQUFpRTtZQUNqRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ2hGO2FBQU0sSUFBSSxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFO1lBRTNDLDRDQUE0QztZQUM1QyxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pELFVBQVUsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQztZQUV4RCw0RUFBNEU7WUFDNUUsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDO1lBQ3BCLFVBQVUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQzNELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBRSxRQUFRLENBQUUsQ0FBQyxDQUFDO1lBRXRFLHlGQUF5RjtZQUN6RiwrSEFBK0g7WUFDL0gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztTQUM5RTthQUFNLElBQUksSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksRUFBRTtZQUUzQyw0Q0FBNEM7WUFDNUMsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFM0UsbUVBQW1FO1lBQ25FLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFFLFFBQVEsQ0FBRSxDQUFDLENBQUMsQ0FBQztZQUV4RSx5RkFBeUY7WUFDekYsK0hBQStIO1lBQy9ILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7U0FDOUU7SUFDSCxDQUFDOzs7WUFqREYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSwwQkFBMEI7YUFDckM7OztZQVpDLGdCQUFnQjtZQUxoQix3QkFBd0I7WUFFeEIsUUFBUTs7O3FDQWtCUCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnRGYWN0b3J5LFxyXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICBEaXJlY3RpdmUsXHJcbiAgSW5qZWN0b3IsXHJcbiAgSW5wdXQsIE9uQ2hhbmdlcyxcclxuICBTaW1wbGVDaGFuZ2VzLCBUZW1wbGF0ZVJlZixcclxuICBWaWV3Q29udGFpbmVyUmVmXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Q29udGVudEJhc2VDb21wb25lbnR9IGZyb20gJy4uL2NvbXBvbmVudHMnO1xyXG5cclxuLyoqXHJcbiAqIFBlcm1pdGUgaW50cm9kdWNpciBjb250ZW5pZG8gZGUgZm9ybWEgZGluw6FtaWNhIGVuIHVuYSBwb3NpY2nDs24gZGV0ZXJtaW5hZGEgZGVzZGU6XHJcbiAqIC0gY29tcG9uZW50OiBDb21wb25lbnRlIGV4aXN0ZW50ZSBkZSB0aXBvIENvbnRlbnRCYXNlXHJcbiAqIC0gaHRtbDogdGV4dG8gaHRtbCBlbiBmb3JtYXRvIHN0cmluZ1xyXG4gKiAtIHRleHQ6IHRleHRvIHBsYW5vIGVuIGZvcm1hdG8gc3RyaW5nXHJcbiAqL1xyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tkZXN5Q3VzdG9tSW5uZXJDb250ZW50XSdcclxufSlcclxuZXhwb3J0IGNsYXNzIEN1c3RvbUlubmVyQ29udGVudERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcblxyXG4gIEBJbnB1dCgpIGRlc3lDdXN0b21Jbm5lckNvbnRlbnQ6IHsgY29tcG9uZW50PzogYW55fENvbnRlbnRCYXNlQ29tcG9uZW50LCB0ZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT4sIGh0bWw/OiBzdHJpbmcsIHRleHQ/OiBzdHJpbmcgfTtcclxuXHJcbiAgcHJpdmF0ZSBmYWN0b3J5OiBDb21wb25lbnRGYWN0b3J5PENvbnRlbnRCYXNlQ29tcG9uZW50PjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLCBwcml2YXRlIHJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICB0aGlzLmZhY3RvcnkgPSB0aGlzLnJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KENvbnRlbnRCYXNlQ29tcG9uZW50KTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xyXG4gICAgaWYgKHRoaXMuZGVzeUN1c3RvbUlubmVyQ29udGVudC5jb21wb25lbnQgJiYgdGhpcy5kZXN5Q3VzdG9tSW5uZXJDb250ZW50LmNvbXBvbmVudCBpbnN0YW5jZW9mIENvbnRlbnRCYXNlQ29tcG9uZW50KSB7XHJcblxyXG4gICAgICAvLyBTZSBjcmVhIGxhIHZpc3RhIGVtYmViaWRhIGJhc8OhbmRvc2UgZW4gZWwgY29udGVuaWRvIGRlbCBDb250ZW50QmFzZSBpbmRpY2Fkby5cclxuICAgICAgdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLmRlc3lDdXN0b21Jbm5lckNvbnRlbnQuY29tcG9uZW50LmdldENvbnRlbnQoKSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuZGVzeUN1c3RvbUlubmVyQ29udGVudC50ZW1wbGF0ZSkge1xyXG5cclxuICAgICAgLy8gU2UgY3JlYSBsYSB2aXN0YSBlbWJlYmlkYSB1dGlsaXphbmRvIGRpcmVjdGFtZW50ZSBlbCB0ZW1wbGF0ZS5cclxuICAgICAgdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLmRlc3lDdXN0b21Jbm5lckNvbnRlbnQudGVtcGxhdGUpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmRlc3lDdXN0b21Jbm5lckNvbnRlbnQuaHRtbCkge1xyXG5cclxuICAgICAgLy8gU2UgY2FyZ2EgZWwgY29udGVuaWRvIGVuIHVuIGRpdiB0ZW1wb3JhbC5cclxuICAgICAgY29uc3QgdG1wV3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICB0bXBXcmFwcGVyLmlubmVySFRNTCA9IHRoaXMuZGVzeUN1c3RvbUlubmVyQ29udGVudC5odG1sO1xyXG5cclxuICAgICAgLy8gTG9zIG5vZG9zIGhpam9zIGRlbCBkaXYgc2UgcHJveWVjdGFuIGRlbnRybyBkZSB1biBjb21wb25lbnRlIENvbnRlbnRCYXNlLlxyXG4gICAgICBjb25zdCBub2RlTGlzdCA9IFtdO1xyXG4gICAgICB0bXBXcmFwcGVyLmNoaWxkTm9kZXMuZm9yRWFjaChub2RlID0+IG5vZGVMaXN0LnB1c2gobm9kZSkpO1xyXG4gICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLmZhY3RvcnkuY3JlYXRlKHRoaXMuaW5qZWN0b3IsIFsgbm9kZUxpc3QgXSk7XHJcblxyXG4gICAgICAvLyBGaW5hbG1lbnRlIHNlIGNyZWEgbGEgdmlzdGEgZW1iZWJpZGEgYmFzw6FuZG9zZSBlbiBlbCBjb250ZW5pZG8gZGVsIENvbnRlbnRCYXNlIGNyZWFkby5cclxuICAgICAgLy8gU2UgcG9kcsOtYSBoYWNlciBjb24gdW4gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudCgpLCBwZXJvIGFzw60gc2UgZXZpdGEgZWwgdGFnIGVudm9sdmVudGUgZGVsIGNvbXBvbmVudGUgZW4gZWwgRE9NXHJcbiAgICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcoY29tcG9uZW50UmVmLmluc3RhbmNlLmdldENvbnRlbnQoKSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuZGVzeUN1c3RvbUlubmVyQ29udGVudC50ZXh0KSB7XHJcblxyXG4gICAgICAvLyBTZSBjYXJnYSBlbCBjb250ZW5pZG8gZW4gdW4gbm9kbyBkZSB0ZXh0b1xyXG4gICAgICBjb25zdCB0ZXh0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRoaXMuZGVzeUN1c3RvbUlubmVyQ29udGVudC50ZXh0KTtcclxuXHJcbiAgICAgIC8vIEVsIG5vZG8gZGUgdGV4dG8gc2UgcHJveWVjdGEgZGVudHJvIGRlIHVuIGNvbXBvbmVudGUgQ29udGVudEJhc2VcclxuICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy5mYWN0b3J5LmNyZWF0ZSh0aGlzLmluamVjdG9yLCBbWyB0ZXh0Tm9kZSBdXSk7XHJcblxyXG4gICAgICAvLyBGaW5hbG1lbnRlIHNlIGNyZWEgbGEgdmlzdGEgZW1iZWJpZGEgYmFzw6FuZG9zZSBlbiBlbCBjb250ZW5pZG8gZGVsIENvbnRlbnRCYXNlIGNyZWFkby5cclxuICAgICAgLy8gU2UgcG9kcsOtYSBoYWNlciBjb24gdW4gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudCgpLCBwZXJvIGFzw60gc2UgZXZpdGEgZWwgdGFnIGVudm9sdmVudGUgZGVsIGNvbXBvbmVudGUgZW4gZWwgRE9NXHJcbiAgICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcoY29tcG9uZW50UmVmLmluc3RhbmNlLmdldENvbnRlbnQoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
@@ -2,6 +2,7 @@ import { Directive, ElementRef, Input } from '@angular/core';
2
2
  export class InnerContentDirective {
3
3
  constructor(el) {
4
4
  this.el = el;
5
+ this.deleteContentIfEmpty = true;
5
6
  }
6
7
  ngOnChanges(changes) {
7
8
  if (this.content) {
@@ -12,7 +13,7 @@ export class InnerContentDirective {
12
13
  this.el.nativeElement.innerText = this.content;
13
14
  }
14
15
  }
15
- else {
16
+ else if (this.deleteContentIfEmpty) {
16
17
  this.el.nativeElement.innerText = null;
17
18
  }
18
19
  }
@@ -27,6 +28,7 @@ InnerContentDirective.ctorParameters = () => [
27
28
  ];
28
29
  InnerContentDirective.propDecorators = {
29
30
  content: [{ type: Input, args: ['desyInnerContent',] }],
30
- isHtml: [{ type: Input }]
31
+ isHtml: [{ type: Input }],
32
+ deleteContentIfEmpty: [{ type: Input }]
31
33
  };
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5uZXItY29udGVudC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9zaGFyZWQvZGlyZWN0aXZlcy9pbm5lci1jb250ZW50LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQTJCLE1BQU0sZUFBZSxDQUFDO0FBSXJGLE1BQU0sT0FBTyxxQkFBcUI7SUFLaEMsWUFBb0IsRUFBYztRQUFkLE9BQUUsR0FBRixFQUFFLENBQVk7SUFBSSxDQUFDO0lBRXZDLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNmLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO2FBQ2hEO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO2FBQ2hEO1NBQ0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7U0FDeEM7SUFDSCxDQUFDOzs7WUFwQkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxvQkFBb0I7YUFDL0I7OztZQUhrQixVQUFVOzs7c0JBTTFCLEtBQUssU0FBQyxrQkFBa0I7cUJBQ3hCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlc30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2Rlc3lJbm5lckNvbnRlbnRdJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5uZXJDb250ZW50RGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuXHJcbiAgQElucHV0KCdkZXN5SW5uZXJDb250ZW50JykgY29udGVudDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGlzSHRtbDogYm9vbGVhbjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZikgeyB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNvbnRlbnQpIHtcclxuICAgICAgaWYgKHRoaXMuaXNIdG1sKSB7XHJcbiAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IHRoaXMuY29udGVudDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuaW5uZXJUZXh0ID0gdGhpcy5jb250ZW50O1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuaW5uZXJUZXh0ID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiJdfQ==
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5uZXItY29udGVudC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXN5LWFuZ3VsYXIvc3JjL2xpYi9zaGFyZWQvZGlyZWN0aXZlcy9pbm5lci1jb250ZW50LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQTJCLE1BQU0sZUFBZSxDQUFDO0FBSXJGLE1BQU0sT0FBTyxxQkFBcUI7SUFNaEMsWUFBb0IsRUFBYztRQUFkLE9BQUUsR0FBRixFQUFFLENBQVk7UUFGekIseUJBQW9CLEdBQUcsSUFBSSxDQUFDO0lBRUMsQ0FBQztJQUV2QyxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDZixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQzthQUNoRDtpQkFBTTtnQkFDTCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQzthQUNoRDtTQUNGO2FBQU0sSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDcEMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztTQUN4QztJQUNILENBQUM7OztZQXJCRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjthQUMvQjs7O1lBSGtCLFVBQVU7OztzQkFNMUIsS0FBSyxTQUFDLGtCQUFrQjtxQkFDeEIsS0FBSzttQ0FDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXN9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tkZXN5SW5uZXJDb250ZW50XSdcclxufSlcclxuZXhwb3J0IGNsYXNzIElubmVyQ29udGVudERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcblxyXG4gIEBJbnB1dCgnZGVzeUlubmVyQ29udGVudCcpIGNvbnRlbnQ6IHN0cmluZztcclxuICBASW5wdXQoKSBpc0h0bWw6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgZGVsZXRlQ29udGVudElmRW1wdHkgPSB0cnVlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmKSB7IH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY29udGVudCkge1xyXG4gICAgICBpZiAodGhpcy5pc0h0bWwpIHtcclxuICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gdGhpcy5jb250ZW50O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5pbm5lclRleHQgPSB0aGlzLmNvbnRlbnQ7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5kZWxldGVDb250ZW50SWZFbXB0eSkge1xyXG4gICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuaW5uZXJUZXh0ID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNpYmlsaXR5LWRhdGEuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9zaGFyZWQvaW50ZXJmYWNlcy9hY2Nlc2liaWxpdHktZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBBY2Nlc2liaWxpdHlEYXRhIHtcclxuICByb2xlPzogc3RyaW5nO1xyXG4gIGFyaWFMYWJlbD86IHN0cmluZztcclxuICBhcmlhRGVzY3JpYmVkQnk/OiBzdHJpbmc7XHJcbiAgYXJpYUxhYmVsbGVkQnk/OiBzdHJpbmc7XHJcbiAgYXJpYUhpZGRlbj86IHN0cmluZztcclxuICBhcmlhRGlzYWJsZWQ/OiBzdHJpbmc7XHJcbiAgYXJpYUNvbnRyb2xzPzogc3RyaW5nO1xyXG4gIGFyaWFDdXJyZW50Pzogc3RyaW5nO1xyXG4gIGFyaWFMaXZlPzogc3RyaW5nO1xyXG4gIGFyaWFFeHBhbmRlZD86IHN0cmluZztcclxuICBhcmlhRXJyb3JNZXNzYWdlPzogc3RyaW5nO1xyXG4gIGFyaWFIYXNQb3B1cD86IHN0cmluZztcclxuICBhcmlhTW9kYWw/OiBzdHJpbmc7XHJcbiAgdGFiaW5kZXg/OiBzdHJpbmc7XHJcbn1cclxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNpYmlsaXR5LWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXN5LWFuZ3VsYXIvc3JjL2xpYi9zaGFyZWQvaW50ZXJmYWNlcy9hY2Nlc2liaWxpdHktZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBBY2Nlc2liaWxpdHlEYXRhIHtcclxuICByb2xlPzogc3RyaW5nO1xyXG4gIGFyaWFMYWJlbD86IHN0cmluZztcclxuICBhcmlhRGVzY3JpYmVkQnk/OiBzdHJpbmc7XHJcbiAgYXJpYUxhYmVsbGVkQnk/OiBzdHJpbmc7XHJcbiAgYXJpYUhpZGRlbj86IHN0cmluZztcclxuICBhcmlhRGlzYWJsZWQ/OiBzdHJpbmc7XHJcbiAgYXJpYUNvbnRyb2xzPzogc3RyaW5nO1xyXG4gIGFyaWFDdXJyZW50Pzogc3RyaW5nO1xyXG4gIGFyaWFMaXZlPzogc3RyaW5nO1xyXG4gIGFyaWFFeHBhbmRlZD86IHN0cmluZztcclxuICBhcmlhRXJyb3JNZXNzYWdlPzogc3RyaW5nO1xyXG4gIGFyaWFIYXNQb3B1cD86IHN0cmluZztcclxuICBhcmlhTW9kYWw/OiBzdHJpbmc7XHJcbiAgdGFiaW5kZXg/OiBzdHJpbmc7XHJcbn1cclxuIl19
@@ -0,0 +1,28 @@
1
+ import { Pipe } from '@angular/core';
2
+ export class ExternalHrefPipe {
3
+ /**
4
+ * Asegura que un enlace externo sea correcto
5
+ * @param href enlace
6
+ */
7
+ transform(href) {
8
+ let externalHref;
9
+ if (href) {
10
+ if (href.match('http(s)?://')) {
11
+ externalHref = href;
12
+ }
13
+ else {
14
+ externalHref = 'http://' + href;
15
+ }
16
+ }
17
+ else {
18
+ externalHref = '#';
19
+ }
20
+ return externalHref;
21
+ }
22
+ }
23
+ ExternalHrefPipe.decorators = [
24
+ { type: Pipe, args: [{
25
+ name: 'externalHref'
26
+ },] }
27
+ ];
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZXJuYWwtaHJlZi5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvc2hhcmVkL3BpcGVzL2V4dGVybmFsLWhyZWYucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUtwRCxNQUFNLE9BQU8sZ0JBQWdCO0lBRTNCOzs7T0FHRztJQUNILFNBQVMsQ0FBQyxJQUFZO1FBQ3BCLElBQUksWUFBb0IsQ0FBQztRQUN6QixJQUFJLElBQUksRUFBRTtZQUNSLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsRUFBRTtnQkFDN0IsWUFBWSxHQUFHLElBQUksQ0FBQzthQUNyQjtpQkFBTTtnQkFDTCxZQUFZLEdBQUcsU0FBUyxHQUFHLElBQUksQ0FBQzthQUNqQztTQUNGO2FBQU07WUFDTCxZQUFZLEdBQUcsR0FBRyxDQUFDO1NBQ3BCO1FBQ0QsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQzs7O1lBckJGLElBQUksU0FBQztnQkFDSixJQUFJLEVBQUUsY0FBYzthQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBQaXBlKHtcclxuICBuYW1lOiAnZXh0ZXJuYWxIcmVmJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRXh0ZXJuYWxIcmVmUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG5cclxuICAvKipcclxuICAgKiBBc2VndXJhIHF1ZSB1biBlbmxhY2UgZXh0ZXJubyBzZWEgY29ycmVjdG9cclxuICAgKiBAcGFyYW0gaHJlZiBlbmxhY2VcclxuICAgKi9cclxuICB0cmFuc2Zvcm0oaHJlZjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGxldCBleHRlcm5hbEhyZWY6IHN0cmluZztcclxuICAgIGlmIChocmVmKSB7XHJcbiAgICAgIGlmIChocmVmLm1hdGNoKCdodHRwKHMpPzovLycpKSB7XHJcbiAgICAgICAgZXh0ZXJuYWxIcmVmID0gaHJlZjtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBleHRlcm5hbEhyZWYgPSAnaHR0cDovLycgKyBocmVmO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBleHRlcm5hbEhyZWYgPSAnIyc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZXh0ZXJuYWxIcmVmO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
@@ -16,4 +16,4 @@ InnerHtmlPipe.decorators = [
16
16
  InnerHtmlPipe.ctorParameters = () => [
17
17
  { type: DomSanitizer }
18
18
  ];
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5uZXItaHRtbC5waXBlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uL3Byb2plY3RzL2Rlc3ktYW5ndWxhci9zcmMvIiwic291cmNlcyI6WyJsaWIvc2hhcmVkL3BpcGVzL2lubmVyLWh0bWwucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLDJCQUEyQixDQUFDO0FBS25FLE1BQU0sT0FBTyxhQUFhO0lBRXhCLFlBQW9CLFNBQXVCO1FBQXZCLGNBQVMsR0FBVCxTQUFTLENBQWM7SUFBSSxDQUFDO0lBRWhELFNBQVMsQ0FBQyxLQUFhO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM5RCxDQUFDOzs7WUFURixJQUFJLFNBQUM7Z0JBQ0osSUFBSSxFQUFFLFdBQVc7YUFDbEI7OztZQUpRLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtLCBTZWN1cml0eUNvbnRleHQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5cclxuQFBpcGUoe1xyXG4gIG5hbWU6ICdpbm5lckh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbm5lckh0bWxQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHsgfVxyXG5cclxuICB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZyk6IFNhZmVIdG1sIHtcclxuICAgIHJldHVybiB0aGlzLnNhbml0aXplci5zYW5pdGl6ZShTZWN1cml0eUNvbnRleHQuSFRNTCwgdmFsdWUpO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5uZXItaHRtbC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvc2hhcmVkL3BpcGVzL2lubmVyLWh0bWwucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLDJCQUEyQixDQUFDO0FBS25FLE1BQU0sT0FBTyxhQUFhO0lBRXhCLFlBQW9CLFNBQXVCO1FBQXZCLGNBQVMsR0FBVCxTQUFTLENBQWM7SUFBSSxDQUFDO0lBRWhELFNBQVMsQ0FBQyxLQUFhO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM5RCxDQUFDOzs7WUFURixJQUFJLFNBQUM7Z0JBQ0osSUFBSSxFQUFFLFdBQVc7YUFDbEI7OztZQUpRLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtLCBTZWN1cml0eUNvbnRleHQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5cclxuQFBpcGUoe1xyXG4gIG5hbWU6ICdpbm5lckh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbm5lckh0bWxQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHsgfVxyXG5cclxuICB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZyk6IFNhZmVIdG1sIHtcclxuICAgIHJldHVybiB0aGlzLnNhbml0aXplci5zYW5pdGl6ZShTZWN1cml0eUNvbnRleHQuSFRNTCwgdmFsdWUpO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
@@ -13,4 +13,4 @@ MakeHtmlListPipe.decorators = [
13
13
  name: 'makeHtmlList'
14
14
  },] }
15
15
  ];
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZS1odG1sLWxpc3QucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi9wcm9qZWN0cy9kZXN5LWFuZ3VsYXIvc3JjLyIsInNvdXJjZXMiOlsibGliL3NoYXJlZC9waXBlcy9tYWtlLWh0bWwtbGlzdC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBS3BELE1BQU0sT0FBTyxnQkFBZ0I7SUFFM0IsU0FBUyxDQUFDLE9BQWlCLEVBQUUsYUFBc0I7UUFDakQsSUFBSSxZQUFZLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwRCxJQUFJLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLGFBQWEsRUFBRTtZQUM5QyxZQUFZLEdBQUcsYUFBYSxDQUFDO1NBQzlCO1FBQ0QsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQzs7O1lBWEYsSUFBSSxTQUFDO2dCQUNKLElBQUksRUFBRSxjQUFjO2FBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQFBpcGUoe1xyXG4gIG5hbWU6ICdtYWtlSHRtbExpc3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYWtlSHRtbExpc3RQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcblxyXG4gIHRyYW5zZm9ybShjbGFzc2VzOiBzdHJpbmdbXSwgdmFsdWVGb3JFbXB0eT86IHN0cmluZyk6IHN0cmluZ3xudWxsIHtcclxuICAgIGxldCBmaWx0ZXJlZExpc3QgPSBjbGFzc2VzLmZpbHRlcihjID0+IGMpLmpvaW4oJyAnKTtcclxuICAgIGlmIChmaWx0ZXJlZExpc3QubGVuZ3RoID09PSAwICYmIHZhbHVlRm9yRW1wdHkpIHtcclxuICAgICAgZmlsdGVyZWRMaXN0ID0gdmFsdWVGb3JFbXB0eTtcclxuICAgIH1cclxuICAgIHJldHVybiBmaWx0ZXJlZExpc3Q7XHJcbiAgfVxyXG59XHJcbiJdfQ==
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZS1odG1sLWxpc3QucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc3ktYW5ndWxhci9zcmMvbGliL3NoYXJlZC9waXBlcy9tYWtlLWh0bWwtbGlzdC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBS3BELE1BQU0sT0FBTyxnQkFBZ0I7SUFFM0IsU0FBUyxDQUFDLE9BQWlCLEVBQUUsYUFBc0I7UUFDakQsSUFBSSxZQUFZLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwRCxJQUFJLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLGFBQWEsRUFBRTtZQUM5QyxZQUFZLEdBQUcsYUFBYSxDQUFDO1NBQzlCO1FBQ0QsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQzs7O1lBWEYsSUFBSSxTQUFDO2dCQUNKLElBQUksRUFBRSxjQUFjO2FBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQFBpcGUoe1xyXG4gIG5hbWU6ICdtYWtlSHRtbExpc3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYWtlSHRtbExpc3RQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcblxyXG4gIHRyYW5zZm9ybShjbGFzc2VzOiBzdHJpbmdbXSwgdmFsdWVGb3JFbXB0eT86IHN0cmluZyk6IHN0cmluZ3xudWxsIHtcclxuICAgIGxldCBmaWx0ZXJlZExpc3QgPSBjbGFzc2VzLmZpbHRlcihjID0+IGMpLmpvaW4oJyAnKTtcclxuICAgIGlmIChmaWx0ZXJlZExpc3QubGVuZ3RoID09PSAwICYmIHZhbHVlRm9yRW1wdHkpIHtcclxuICAgICAgZmlsdGVyZWRMaXN0ID0gdmFsdWVGb3JFbXB0eTtcclxuICAgIH1cclxuICAgIHJldHVybiBmaWx0ZXJlZExpc3Q7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -2,13 +2,18 @@ import { NgModule } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { RouterModule } from '@angular/router';
4
4
  // components
5
- import { AccessibilityComponent, TextOrHtmlRequiredComponent, AccessibilityAndTextOrHtmlRequiredComponent } from './components';
5
+ import { AccessibilityComponent, ContentBaseComponent, TextOrHtmlRequiredComponent, AccessibilityAndTextOrHtmlRequiredComponent, AccessibilityAndContentRequiredComponent } from './components';
6
6
  // pipes
7
7
  import { InnerHtmlPipe } from './pipes/inner-html.pipe';
8
8
  import { MakeHtmlListPipe } from './pipes/make-html-list.pipe';
9
+ import { ExternalHrefPipe } from './pipes/external-href.pipe';
9
10
  // directives
11
+ import { AttributeChangeDirective } from './directives/attribute-change.directive';
10
12
  import { InnerContentDirective } from './directives/inner-content.directive';
11
13
  import { ClickOutsideDirective } from './directives/click-outside.directive';
14
+ import { ContentChangeDirective } from './directives/content-change.directive';
15
+ import { ContentEmptyDirective } from './directives/content-empty.directive';
16
+ import { CustomInnerContentDirective } from './directives/custom-inner-content.directive';
12
17
  export class SharedModule {
13
18
  }
14
19
  SharedModule.decorators = [
@@ -16,14 +21,21 @@ SharedModule.decorators = [
16
21
  declarations: [
17
22
  // components
18
23
  AccessibilityComponent,
24
+ ContentBaseComponent,
19
25
  TextOrHtmlRequiredComponent,
20
26
  AccessibilityAndTextOrHtmlRequiredComponent,
27
+ AccessibilityAndContentRequiredComponent,
21
28
  // pipes
22
29
  InnerHtmlPipe,
23
30
  MakeHtmlListPipe,
31
+ ExternalHrefPipe,
24
32
  // directives
33
+ AttributeChangeDirective,
25
34
  InnerContentDirective,
26
- ClickOutsideDirective
35
+ ClickOutsideDirective,
36
+ ContentChangeDirective,
37
+ ContentEmptyDirective,
38
+ CustomInnerContentDirective,
27
39
  ],
28
40
  imports: [
29
41
  CommonModule,
@@ -32,15 +44,22 @@ SharedModule.decorators = [
32
44
  RouterModule,
33
45
  // components
34
46
  AccessibilityComponent,
47
+ ContentBaseComponent,
35
48
  TextOrHtmlRequiredComponent,
36
49
  AccessibilityAndTextOrHtmlRequiredComponent,
50
+ AccessibilityAndContentRequiredComponent,
37
51
  // pipes
38
52
  InnerHtmlPipe,
39
53
  MakeHtmlListPipe,
54
+ ExternalHrefPipe,
40
55
  // directives
56
+ AttributeChangeDirective,
41
57
  InnerContentDirective,
42
- ClickOutsideDirective
58
+ ClickOutsideDirective,
59
+ ContentChangeDirective,
60
+ ContentEmptyDirective,
61
+ CustomInnerContentDirective,
43
62
  ]
44
63
  },] }
45
64
  ];
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi9wcm9qZWN0cy9kZXN5LWFuZ3VsYXIvc3JjLyIsInNvdXJjZXMiOlsibGliL3NoYXJlZC9zaGFyZWQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxhQUFhO0FBQ2IsT0FBTyxFQUNMLHNCQUFzQixFQUN0QiwyQkFBMkIsRUFDM0IsMkNBQTJDLEVBQzVDLE1BQU0sY0FBYyxDQUFDO0FBRXRCLFFBQVE7QUFDUixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFL0QsYUFBYTtBQUNiLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBc0M3RSxNQUFNLE9BQU8sWUFBWTs7O1lBbkN4QixRQUFRLFNBQUM7Z0JBQ1IsWUFBWSxFQUFFO29CQUNaLGFBQWE7b0JBQ2Isc0JBQXNCO29CQUN0QiwyQkFBMkI7b0JBQzNCLDJDQUEyQztvQkFFM0MsUUFBUTtvQkFDUixhQUFhO29CQUNiLGdCQUFnQjtvQkFFaEIsYUFBYTtvQkFDYixxQkFBcUI7b0JBQ3JCLHFCQUFxQjtpQkFDdEI7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLFlBQVk7aUJBQ2I7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLFlBQVk7b0JBRVosYUFBYTtvQkFDYixzQkFBc0I7b0JBQ3RCLDJCQUEyQjtvQkFDM0IsMkNBQTJDO29CQUUzQyxRQUFRO29CQUNSLGFBQWE7b0JBQ2IsZ0JBQWdCO29CQUVoQixhQUFhO29CQUNiLHFCQUFxQjtvQkFDckIscUJBQXFCO2lCQUN0QjthQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbi8vIGNvbXBvbmVudHNcclxuaW1wb3J0IHtcclxuICBBY2Nlc3NpYmlsaXR5Q29tcG9uZW50LFxyXG4gIFRleHRPckh0bWxSZXF1aXJlZENvbXBvbmVudCxcclxuICBBY2Nlc3NpYmlsaXR5QW5kVGV4dE9ySHRtbFJlcXVpcmVkQ29tcG9uZW50XHJcbn0gZnJvbSAnLi9jb21wb25lbnRzJztcclxuXHJcbi8vIHBpcGVzXHJcbmltcG9ydCB7IElubmVySHRtbFBpcGUgfSBmcm9tICcuL3BpcGVzL2lubmVyLWh0bWwucGlwZSc7XHJcbmltcG9ydCB7IE1ha2VIdG1sTGlzdFBpcGUgfSBmcm9tICcuL3BpcGVzL21ha2UtaHRtbC1saXN0LnBpcGUnO1xyXG5cclxuLy8gZGlyZWN0aXZlc1xyXG5pbXBvcnQgeyBJbm5lckNvbnRlbnREaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvaW5uZXItY29udGVudC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDbGlja091dHNpZGVEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvY2xpY2stb3V0c2lkZS5kaXJlY3RpdmUnO1xyXG5cclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICAvLyBjb21wb25lbnRzXHJcbiAgICBBY2Nlc3NpYmlsaXR5Q29tcG9uZW50LFxyXG4gICAgVGV4dE9ySHRtbFJlcXVpcmVkQ29tcG9uZW50LFxyXG4gICAgQWNjZXNzaWJpbGl0eUFuZFRleHRPckh0bWxSZXF1aXJlZENvbXBvbmVudCxcclxuXHJcbiAgICAvLyBwaXBlc1xyXG4gICAgSW5uZXJIdG1sUGlwZSxcclxuICAgIE1ha2VIdG1sTGlzdFBpcGUsXHJcblxyXG4gICAgLy8gZGlyZWN0aXZlc1xyXG4gICAgSW5uZXJDb250ZW50RGlyZWN0aXZlLFxyXG4gICAgQ2xpY2tPdXRzaWRlRGlyZWN0aXZlXHJcbiAgXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBSb3V0ZXJNb2R1bGUsXHJcblxyXG4gICAgLy8gY29tcG9uZW50c1xyXG4gICAgQWNjZXNzaWJpbGl0eUNvbXBvbmVudCxcclxuICAgIFRleHRPckh0bWxSZXF1aXJlZENvbXBvbmVudCxcclxuICAgIEFjY2Vzc2liaWxpdHlBbmRUZXh0T3JIdG1sUmVxdWlyZWRDb21wb25lbnQsXHJcblxyXG4gICAgLy8gcGlwZXNcclxuICAgIElubmVySHRtbFBpcGUsXHJcbiAgICBNYWtlSHRtbExpc3RQaXBlLFxyXG5cclxuICAgIC8vIGRpcmVjdGl2ZXNcclxuICAgIElubmVyQ29udGVudERpcmVjdGl2ZSxcclxuICAgIENsaWNrT3V0c2lkZURpcmVjdGl2ZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFNoYXJlZE1vZHVsZSB7IH1cclxuIl19
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc3ktYW5ndWxhci9zcmMvbGliL3NoYXJlZC9zaGFyZWQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxhQUFhO0FBQ2IsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixvQkFBb0IsRUFDcEIsMkJBQTJCLEVBQzNCLDJDQUEyQyxFQUMzQyx3Q0FBd0MsRUFDekMsTUFBTSxjQUFjLENBQUM7QUFFdEIsUUFBUTtBQUNSLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUU5RCxhQUFhO0FBQ2IsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDbkYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDN0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDN0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDN0UsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFvRDFGLE1BQU0sT0FBTyxZQUFZOzs7WUFqRHhCLFFBQVEsU0FBQztnQkFDUixZQUFZLEVBQUU7b0JBQ1osYUFBYTtvQkFDYixzQkFBc0I7b0JBQ3RCLG9CQUFvQjtvQkFDcEIsMkJBQTJCO29CQUMzQiwyQ0FBMkM7b0JBQzNDLHdDQUF3QztvQkFFeEMsUUFBUTtvQkFDUixhQUFhO29CQUNiLGdCQUFnQjtvQkFDaEIsZ0JBQWdCO29CQUVoQixhQUFhO29CQUNiLHdCQUF3QjtvQkFDeEIscUJBQXFCO29CQUNyQixxQkFBcUI7b0JBQ3JCLHNCQUFzQjtvQkFDdEIscUJBQXFCO29CQUNyQiwyQkFBMkI7aUJBQzVCO2dCQUNELE9BQU8sRUFBRTtvQkFDUCxZQUFZO2lCQUNiO2dCQUNELE9BQU8sRUFBRTtvQkFDUCxZQUFZO29CQUVaLGFBQWE7b0JBQ2Isc0JBQXNCO29CQUN0QixvQkFBb0I7b0JBQ3BCLDJCQUEyQjtvQkFDM0IsMkNBQTJDO29CQUMzQyx3Q0FBd0M7b0JBRXhDLFFBQVE7b0JBQ1IsYUFBYTtvQkFDYixnQkFBZ0I7b0JBQ2hCLGdCQUFnQjtvQkFFaEIsYUFBYTtvQkFDYix3QkFBd0I7b0JBQ3hCLHFCQUFxQjtvQkFDckIscUJBQXFCO29CQUNyQixzQkFBc0I7b0JBQ3RCLHFCQUFxQjtvQkFDckIsMkJBQTJCO2lCQUM1QjthQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbi8vIGNvbXBvbmVudHNcclxuaW1wb3J0IHtcclxuICBBY2Nlc3NpYmlsaXR5Q29tcG9uZW50LFxyXG4gIENvbnRlbnRCYXNlQ29tcG9uZW50LFxyXG4gIFRleHRPckh0bWxSZXF1aXJlZENvbXBvbmVudCxcclxuICBBY2Nlc3NpYmlsaXR5QW5kVGV4dE9ySHRtbFJlcXVpcmVkQ29tcG9uZW50LFxyXG4gIEFjY2Vzc2liaWxpdHlBbmRDb250ZW50UmVxdWlyZWRDb21wb25lbnRcclxufSBmcm9tICcuL2NvbXBvbmVudHMnO1xyXG5cclxuLy8gcGlwZXNcclxuaW1wb3J0IHsgSW5uZXJIdG1sUGlwZSB9IGZyb20gJy4vcGlwZXMvaW5uZXItaHRtbC5waXBlJztcclxuaW1wb3J0IHsgTWFrZUh0bWxMaXN0UGlwZSB9IGZyb20gJy4vcGlwZXMvbWFrZS1odG1sLWxpc3QucGlwZSc7XHJcbmltcG9ydCB7IEV4dGVybmFsSHJlZlBpcGUgfSBmcm9tICcuL3BpcGVzL2V4dGVybmFsLWhyZWYucGlwZSc7XHJcblxyXG4vLyBkaXJlY3RpdmVzXHJcbmltcG9ydCB7IEF0dHJpYnV0ZUNoYW5nZURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9hdHRyaWJ1dGUtY2hhbmdlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IElubmVyQ29udGVudERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9pbm5lci1jb250ZW50LmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENsaWNrT3V0c2lkZURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9jbGljay1vdXRzaWRlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvbnRlbnRDaGFuZ2VEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvY29udGVudC1jaGFuZ2UuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29udGVudEVtcHR5RGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2NvbnRlbnQtZW1wdHkuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ3VzdG9tSW5uZXJDb250ZW50RGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2N1c3RvbS1pbm5lci1jb250ZW50LmRpcmVjdGl2ZSc7XHJcblxyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIC8vIGNvbXBvbmVudHNcclxuICAgIEFjY2Vzc2liaWxpdHlDb21wb25lbnQsXHJcbiAgICBDb250ZW50QmFzZUNvbXBvbmVudCxcclxuICAgIFRleHRPckh0bWxSZXF1aXJlZENvbXBvbmVudCxcclxuICAgIEFjY2Vzc2liaWxpdHlBbmRUZXh0T3JIdG1sUmVxdWlyZWRDb21wb25lbnQsXHJcbiAgICBBY2Nlc3NpYmlsaXR5QW5kQ29udGVudFJlcXVpcmVkQ29tcG9uZW50LFxyXG5cclxuICAgIC8vIHBpcGVzXHJcbiAgICBJbm5lckh0bWxQaXBlLFxyXG4gICAgTWFrZUh0bWxMaXN0UGlwZSxcclxuICAgIEV4dGVybmFsSHJlZlBpcGUsXHJcblxyXG4gICAgLy8gZGlyZWN0aXZlc1xyXG4gICAgQXR0cmlidXRlQ2hhbmdlRGlyZWN0aXZlLFxyXG4gICAgSW5uZXJDb250ZW50RGlyZWN0aXZlLFxyXG4gICAgQ2xpY2tPdXRzaWRlRGlyZWN0aXZlLFxyXG4gICAgQ29udGVudENoYW5nZURpcmVjdGl2ZSxcclxuICAgIENvbnRlbnRFbXB0eURpcmVjdGl2ZSxcclxuICAgIEN1c3RvbUlubmVyQ29udGVudERpcmVjdGl2ZSxcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIFJvdXRlck1vZHVsZSxcclxuXHJcbiAgICAvLyBjb21wb25lbnRzXHJcbiAgICBBY2Nlc3NpYmlsaXR5Q29tcG9uZW50LFxyXG4gICAgQ29udGVudEJhc2VDb21wb25lbnQsXHJcbiAgICBUZXh0T3JIdG1sUmVxdWlyZWRDb21wb25lbnQsXHJcbiAgICBBY2Nlc3NpYmlsaXR5QW5kVGV4dE9ySHRtbFJlcXVpcmVkQ29tcG9uZW50LFxyXG4gICAgQWNjZXNzaWJpbGl0eUFuZENvbnRlbnRSZXF1aXJlZENvbXBvbmVudCxcclxuXHJcbiAgICAvLyBwaXBlc1xyXG4gICAgSW5uZXJIdG1sUGlwZSxcclxuICAgIE1ha2VIdG1sTGlzdFBpcGUsXHJcbiAgICBFeHRlcm5hbEhyZWZQaXBlLFxyXG5cclxuICAgIC8vIGRpcmVjdGl2ZXNcclxuICAgIEF0dHJpYnV0ZUNoYW5nZURpcmVjdGl2ZSxcclxuICAgIElubmVyQ29udGVudERpcmVjdGl2ZSxcclxuICAgIENsaWNrT3V0c2lkZURpcmVjdGl2ZSxcclxuICAgIENvbnRlbnRDaGFuZ2VEaXJlY3RpdmUsXHJcbiAgICBDb250ZW50RW1wdHlEaXJlY3RpdmUsXHJcbiAgICBDdXN0b21Jbm5lckNvbnRlbnREaXJlY3RpdmUsXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2hhcmVkTW9kdWxlIHsgfVxyXG4iXX0=
@@ -48,4 +48,4 @@ export class FocusUtils {
48
48
  }
49
49
  }
50
50
  }
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9zaGFyZWQvdXRpbHMvZm9jdXMtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLFVBQVU7SUFFZCxNQUFNLENBQUMsd0JBQXdCLENBQUMsTUFBb0I7UUFDekQsTUFBTSxxQkFBcUIsR0FBRywwRUFBMEUsQ0FBQztRQUN6RyxJQUFJLGFBQWEsQ0FBQztRQUNsQixJQUFJLE1BQU0sRUFBRTtZQUNWLGFBQWEsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMscUJBQXFCLENBQUMsQ0FBQztTQUNoRTthQUFNO1lBQ0wsYUFBYSxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1NBQ2xFO1FBRUQsSUFBSSxDQUFDLGFBQWEsSUFBSSxhQUFhLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNoRCxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsSUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNWLE9BQU8sQ0FBQyxHQUFHLGFBQWEsQ0FBQyxNQUFNLEVBQUU7WUFDL0IsSUFBSTtnQkFDRixNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBcUIsQ0FBQztnQkFDMUQsSUFBSSxVQUFVLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUNuQyxjQUFjLEdBQUcsT0FBTyxDQUFDO29CQUN6QixNQUFNO2lCQUNQO2FBQ0Y7WUFBQyxPQUFPLENBQUMsRUFBRTthQUVYO1lBQ0QsQ0FBQyxFQUFFLENBQUM7U0FDTDtRQUVELE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7SUFFTSxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQVk7UUFDcEMsSUFBSSxPQUFPLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEtBQUssQ0FBQyxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEtBQUssSUFBSSxDQUFDLEVBQUU7WUFDakcsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRTtZQUNwQixPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsUUFBUSxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQ3hCLEtBQUssR0FBRztnQkFDTixPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEtBQUssUUFBUSxDQUFDO1lBQ3BELEtBQUssT0FBTztnQkFDVixPQUFPLE9BQU8sQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDO1lBQzlELEtBQUssUUFBUSxDQUFDO1lBQ2QsS0FBSyxRQUFRLENBQUM7WUFDZCxLQUFLLFVBQVU7Z0JBQ2IsT0FBTyxJQUFJLENBQUM7WUFDZDtnQkFDRSxPQUFPLEtBQUssQ0FBQztTQUNoQjtJQUNILENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBGb2N1c1V0aWxzIHtcclxuXHJcbiAgcHVibGljIHN0YXRpYyBnZXRGaXJzdEZvY3VzYWJsZUVsZW1lbnQocGFyZW50PzogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudCB7XHJcbiAgICBjb25zdCBzZWxlY3Rpb25hYmxlRWxlbWVudHMgPSAnYnV0dG9uLCBbaHJlZl0sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBbdGFiaW5kZXhdOm5vdChbdGFiaW5kZXg9XCItMVwiXSknO1xyXG4gICAgbGV0IGZvY3VzYWJsZUxpc3Q7XHJcbiAgICBpZiAocGFyZW50KSB7XHJcbiAgICAgIGZvY3VzYWJsZUxpc3QgPSBwYXJlbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rpb25hYmxlRWxlbWVudHMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZm9jdXNhYmxlTGlzdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0aW9uYWJsZUVsZW1lbnRzKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWZvY3VzYWJsZUxpc3QgfHwgZm9jdXNhYmxlTGlzdC5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGZpcnN0Rm9jdXNhYmxlID0gbnVsbDtcclxuICAgIGxldCBpID0gMDtcclxuICAgIHdoaWxlIChpIDwgZm9jdXNhYmxlTGlzdC5sZW5ndGgpIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBjb25zdCBlbGVtZW50ID0gZm9jdXNhYmxlTGlzdC5pdGVtKGkpIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICAgICAgaWYgKEZvY3VzVXRpbHMuaXNGb2N1c2FibGUoZWxlbWVudCkpIHtcclxuICAgICAgICAgIGZpcnN0Rm9jdXNhYmxlID0gZWxlbWVudDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBjYXRjaCAoZSkge1xyXG5cclxuICAgICAgfVxyXG4gICAgICBpKys7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZpcnN0Rm9jdXNhYmxlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBpc0ZvY3VzYWJsZShlbGVtZW50OiBhbnkpOiBib29sZWFuIHtcclxuICAgIGlmIChlbGVtZW50LnRhYkluZGV4ID4gMCB8fCAoZWxlbWVudC50YWJJbmRleCA9PT0gMCAmJiBlbGVtZW50LmdldEF0dHJpYnV0ZSgndGFiSW5kZXgnKSAhPT0gbnVsbCkpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGVsZW1lbnQuZGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHN3aXRjaCAoZWxlbWVudC5ub2RlTmFtZSkge1xyXG4gICAgICBjYXNlICdBJzpcclxuICAgICAgICByZXR1cm4gISFlbGVtZW50LmhyZWYgJiYgZWxlbWVudC5yZWwgIT09ICdpZ25vcmUnO1xyXG4gICAgICBjYXNlICdJTlBVVCc6XHJcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQudHlwZSAhPT0gJ2hpZGRlbicgJiYgZWxlbWVudC50eXBlICE9PSAnZmlsZSc7XHJcbiAgICAgIGNhc2UgJ0JVVFRPTic6XHJcbiAgICAgIGNhc2UgJ1NFTEVDVCc6XHJcbiAgICAgIGNhc2UgJ1RFWFRBUkVBJzpcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXN5LWFuZ3VsYXIvc3JjL2xpYi9zaGFyZWQvdXRpbHMvZm9jdXMtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLFVBQVU7SUFFZCxNQUFNLENBQUMsd0JBQXdCLENBQUMsTUFBb0I7UUFDekQsTUFBTSxxQkFBcUIsR0FBRywwRUFBMEUsQ0FBQztRQUN6RyxJQUFJLGFBQWEsQ0FBQztRQUNsQixJQUFJLE1BQU0sRUFBRTtZQUNWLGFBQWEsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMscUJBQXFCLENBQUMsQ0FBQztTQUNoRTthQUFNO1lBQ0wsYUFBYSxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1NBQ2xFO1FBRUQsSUFBSSxDQUFDLGFBQWEsSUFBSSxhQUFhLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNoRCxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsSUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNWLE9BQU8sQ0FBQyxHQUFHLGFBQWEsQ0FBQyxNQUFNLEVBQUU7WUFDL0IsSUFBSTtnQkFDRixNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBcUIsQ0FBQztnQkFDMUQsSUFBSSxVQUFVLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUNuQyxjQUFjLEdBQUcsT0FBTyxDQUFDO29CQUN6QixNQUFNO2lCQUNQO2FBQ0Y7WUFBQyxPQUFPLENBQUMsRUFBRTthQUVYO1lBQ0QsQ0FBQyxFQUFFLENBQUM7U0FDTDtRQUVELE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7SUFFTSxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQVk7UUFDcEMsSUFBSSxPQUFPLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEtBQUssQ0FBQyxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEtBQUssSUFBSSxDQUFDLEVBQUU7WUFDakcsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRTtZQUNwQixPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsUUFBUSxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQ3hCLEtBQUssR0FBRztnQkFDTixPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEtBQUssUUFBUSxDQUFDO1lBQ3BELEtBQUssT0FBTztnQkFDVixPQUFPLE9BQU8sQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDO1lBQzlELEtBQUssUUFBUSxDQUFDO1lBQ2QsS0FBSyxRQUFRLENBQUM7WUFDZCxLQUFLLFVBQVU7Z0JBQ2IsT0FBTyxJQUFJLENBQUM7WUFDZDtnQkFDRSxPQUFPLEtBQUssQ0FBQztTQUNoQjtJQUNILENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBGb2N1c1V0aWxzIHtcclxuXHJcbiAgcHVibGljIHN0YXRpYyBnZXRGaXJzdEZvY3VzYWJsZUVsZW1lbnQocGFyZW50PzogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudCB7XHJcbiAgICBjb25zdCBzZWxlY3Rpb25hYmxlRWxlbWVudHMgPSAnYnV0dG9uLCBbaHJlZl0sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBbdGFiaW5kZXhdOm5vdChbdGFiaW5kZXg9XCItMVwiXSknO1xyXG4gICAgbGV0IGZvY3VzYWJsZUxpc3Q7XHJcbiAgICBpZiAocGFyZW50KSB7XHJcbiAgICAgIGZvY3VzYWJsZUxpc3QgPSBwYXJlbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rpb25hYmxlRWxlbWVudHMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZm9jdXNhYmxlTGlzdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0aW9uYWJsZUVsZW1lbnRzKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWZvY3VzYWJsZUxpc3QgfHwgZm9jdXNhYmxlTGlzdC5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGZpcnN0Rm9jdXNhYmxlID0gbnVsbDtcclxuICAgIGxldCBpID0gMDtcclxuICAgIHdoaWxlIChpIDwgZm9jdXNhYmxlTGlzdC5sZW5ndGgpIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBjb25zdCBlbGVtZW50ID0gZm9jdXNhYmxlTGlzdC5pdGVtKGkpIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICAgICAgaWYgKEZvY3VzVXRpbHMuaXNGb2N1c2FibGUoZWxlbWVudCkpIHtcclxuICAgICAgICAgIGZpcnN0Rm9jdXNhYmxlID0gZWxlbWVudDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBjYXRjaCAoZSkge1xyXG5cclxuICAgICAgfVxyXG4gICAgICBpKys7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZpcnN0Rm9jdXNhYmxlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBpc0ZvY3VzYWJsZShlbGVtZW50OiBhbnkpOiBib29sZWFuIHtcclxuICAgIGlmIChlbGVtZW50LnRhYkluZGV4ID4gMCB8fCAoZWxlbWVudC50YWJJbmRleCA9PT0gMCAmJiBlbGVtZW50LmdldEF0dHJpYnV0ZSgndGFiSW5kZXgnKSAhPT0gbnVsbCkpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGVsZW1lbnQuZGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHN3aXRjaCAoZWxlbWVudC5ub2RlTmFtZSkge1xyXG4gICAgICBjYXNlICdBJzpcclxuICAgICAgICByZXR1cm4gISFlbGVtZW50LmhyZWYgJiYgZWxlbWVudC5yZWwgIT09ICdpZ25vcmUnO1xyXG4gICAgICBjYXNlICdJTlBVVCc6XHJcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQudHlwZSAhPT0gJ2hpZGRlbicgJiYgZWxlbWVudC50eXBlICE9PSAnZmlsZSc7XHJcbiAgICAgIGNhc2UgJ0JVVFRPTic6XHJcbiAgICAgIGNhc2UgJ1NFTEVDVCc6XHJcbiAgICAgIGNhc2UgJ1RFWFRBUkVBJzpcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
@@ -54,4 +54,4 @@ export class SearchUtils {
54
54
  return res;
55
55
  }
56
56
  }
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXV0aWxzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uL3Byb2plY3RzL2Rlc3ktYW5ndWxhci9zcmMvIiwic291cmNlcyI6WyJsaWIvc2hhcmVkL3V0aWxzL3NlYXJjaC11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sV0FBVztJQUV0Qjs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxNQUFjLEVBQUUsSUFBWSxFQUFFLFFBQWtCO1FBQ2hGLElBQUksS0FBSyxHQUFhLEVBQUUsQ0FBQztRQUN6QixJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDckIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFMUQsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3RDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pCO1FBQ0QsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVqQixLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ25CLElBQUksZ0JBQWdCLElBQUksSUFBSSxFQUFFO2dCQUM1QixJQUFJLENBQUMsUUFBUSxJQUFJLGdCQUFnQixLQUFLLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQzt1QkFDMUQsQ0FBQyxDQUFDLFFBQVEsSUFBSSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDbkYsUUFBUSxHQUFHLElBQUksQ0FBQztpQkFDakI7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVEOzs7T0FHRztJQUNLLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxHQUFXO1FBQzVDLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNkLElBQUksR0FBRyxFQUFFO1lBQ1AsR0FBRyxHQUFHLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3JDLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUM1QixHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDNUIsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzVCLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUM1QixHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDNUIsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzVCLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUM1QixHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDNUIsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzVCLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUM1QixHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDNUIsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzVCLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUM1QixHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDNUIsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzVCLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMzQixHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDM0IsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzVCLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUM1QjtRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFNlYXJjaFV0aWxzIHtcclxuXHJcbiAgLyoqXHJcbiAgICogQ29tcHJ1ZWJhIHNpIHVuYSBjYWRlbmEgZGUgdGV4dG8gKHRhcmdldCkgY29udGllbmUgY3VhbHF1aWVyIHBhbGFicmEgZGUgb3RybyB0ZXh0byAodGV4dClcclxuICAgKiBAcGFyYW0gdGFyZ2V0IC0gVGV4dG8gZW4gZWwgcXVlIGJ1c2NhclxyXG4gICAqIEBwYXJhbSB0ZXh0IC0gVGV4dG8gYSBidXNjYXJcclxuICAgKiBAcGFyYW0gZnVsbFdvcmQgLSBJbmRpY2Egc2kgbGFzIHBhbGFicmFzIGRlbCB0ZXh0byBhIGJ1c2NhciBkZWJlbiBhcGFyZWNlciBlbnRlcmFzXHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyBjb250YWluc0FueVdvcmRGcm9tKHRhcmdldDogc3RyaW5nLCB0ZXh0OiBzdHJpbmcsIGZ1bGxXb3JkPzogYm9vbGVhbik6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHdvcmRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgbGV0IGluY2x1ZGVzID0gZmFsc2U7XHJcbiAgICBjb25zdCBzaW1wbGlmaWVkVGFyZ2V0ID0gdGhpcy5nZXRTaW1wbGlmaWVkU3RyaW5nKHRhcmdldCk7XHJcblxyXG4gICAgaWYgKHRleHQgJiYgdGV4dC5zcGxpdCgnICcpLmxlbmd0aCA+IDEpIHtcclxuICAgICAgd29yZHMgPSB0ZXh0LnNwbGl0KCcgJyk7XHJcbiAgICB9XHJcbiAgICB3b3Jkcy5wdXNoKHRleHQpO1xyXG5cclxuICAgIHdvcmRzLmZvckVhY2god29yZCA9PiB7XHJcbiAgICAgIGlmIChzaW1wbGlmaWVkVGFyZ2V0ICYmIHdvcmQpIHtcclxuICAgICAgICBpZiAoKGZ1bGxXb3JkICYmIHNpbXBsaWZpZWRUYXJnZXQgPT09IHRoaXMuZ2V0U2ltcGxpZmllZFN0cmluZyh3b3JkKSlcclxuICAgICAgICAgICAgICAgIHx8ICghZnVsbFdvcmQgJiYgc2ltcGxpZmllZFRhcmdldC5pbmNsdWRlcyh0aGlzLmdldFNpbXBsaWZpZWRTdHJpbmcod29yZCkpKSkge1xyXG4gICAgICAgICAgaW5jbHVkZXMgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGluY2x1ZGVzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29udmllcnRlIGEgbWF5w7pzY3VsYXMsIGVsaW1pbmEgZXNwYWNpb3MgeSByZWVtcGxhemEvZWxpbWluYSBjYXJhY3RlcmVzIGVzcGVjaWFsZXMgcGFyYSByZWFsaXphciBjb21wYXJhY2lvbmVzIG3DoXMgdG9sZXJhbnRlc1xyXG4gICAqIEBwYXJhbSBzdHIgLSBjYWRlbmEgZGUgZW50cmFkYVxyXG4gICAqL1xyXG4gIHByaXZhdGUgc3RhdGljIGdldFNpbXBsaWZpZWRTdHJpbmcoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IHJlcyA9IHN0cjtcclxuICAgIGlmIChzdHIpIHtcclxuICAgICAgcmVzID0gc3RyLnRvTG9jYWxlVXBwZXJDYXNlKCkudHJpbSgpO1xyXG4gICAgICByZXMgPSByZXMucmVwbGFjZSgnw4EnLCAnQScpO1xyXG4gICAgICByZXMgPSByZXMucmVwbGFjZSgnw4knLCAnRScpO1xyXG4gICAgICByZXMgPSByZXMucmVwbGFjZSgnw40nLCAnSScpO1xyXG4gICAgICByZXMgPSByZXMucmVwbGFjZSgnw5MnLCAnTycpO1xyXG4gICAgICByZXMgPSByZXMucmVwbGFjZSgnw5onLCAnVScpO1xyXG4gICAgICByZXMgPSByZXMucmVwbGFjZSgnw4AnLCAnQScpO1xyXG4gICAgICByZXMgPSByZXMucmVwbGFjZSgnw4gnLCAnRScpO1xyXG4gICAgICByZXMgPSByZXMucmVwbGFjZSgnw4wnLCAnSScpO1xyXG4gICAgICByZXMgPSByZXMucmVwbGFjZSgnw5InLCAnTycpO1xyXG4gICAgICByZXMgPSByZXMucmVwbGFjZSgnw5knLCAnVScpO1xyXG4gICAgICByZXMgPSByZXMucmVwbGFjZSgnw4QnLCAnQScpO1xyXG4gICAgICByZXMgPSByZXMucmVwbGFjZSgnw4snLCAnRScpO1xyXG4gICAgICByZXMgPSByZXMucmVwbGFjZSgnw48nLCAnSScpO1xyXG4gICAgICByZXMgPSByZXMucmVwbGFjZSgnw5YnLCAnTycpO1xyXG4gICAgICByZXMgPSByZXMucmVwbGFjZSgnw5wnLCAnVScpO1xyXG4gICAgICByZXMgPSByZXMucmVwbGFjZSgnLCcsICcnKTtcclxuICAgICAgcmVzID0gcmVzLnJlcGxhY2UoJy4nLCAnJyk7XHJcbiAgICAgIHJlcyA9IHJlcy5yZXBsYWNlKCdcXCcnLCAnJyk7XHJcbiAgICAgIHJlcyA9IHJlcy5yZXBsYWNlKCdcIicsICcnKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzO1xyXG4gIH1cclxufVxyXG4iXX0=
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvc2hhcmVkL3V0aWxzL3NlYXJjaC11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sV0FBVztJQUV0Qjs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxNQUFjLEVBQUUsSUFBWSxFQUFFLFFBQWtCO1FBQ2hGLElBQUksS0FBSyxHQUFhLEVBQUUsQ0FBQztRQUN6QixJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDckIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFMUQsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3RDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pCO1FBQ0QsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVqQixLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ25CLElBQUksZ0JBQWdCLElBQUksSUFBSSxFQUFFO2dCQUM1QixJQUFJLENBQUMsUUFBUSxJQUFJLGdCQUFnQixLQUFLLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQzt1QkFDMUQsQ0FBQyxDQUFDLFFBQVEsSUFBSSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDbkYsUUFBUSxHQUFHLElBQUksQ0FBQztpQkFDakI7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVEOzs7T0FHRztJQUNLLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxHQUFXO1FBQzVDLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNkLElBQUksR0FBRyxFQUFFO1lBQ1AsR0FBRyxHQUFHLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3JDLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUM1QixHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDNUIsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzVCLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUM1QixHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDNUIsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzVCLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUM1QixHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDNUIsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzVCLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUM1QixHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDNUIsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzVCLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUM1QixHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDNUIsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzVCLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMzQixHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDM0IsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzVCLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUM1QjtRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFNlYXJjaFV0aWxzIHtcclxuXHJcbiAgLyoqXHJcbiAgICogQ29tcHJ1ZWJhIHNpIHVuYSBjYWRlbmEgZGUgdGV4dG8gKHRhcmdldCkgY29udGllbmUgY3VhbHF1aWVyIHBhbGFicmEgZGUgb3RybyB0ZXh0byAodGV4dClcclxuICAgKiBAcGFyYW0gdGFyZ2V0IC0gVGV4dG8gZW4gZWwgcXVlIGJ1c2NhclxyXG4gICAqIEBwYXJhbSB0ZXh0IC0gVGV4dG8gYSBidXNjYXJcclxuICAgKiBAcGFyYW0gZnVsbFdvcmQgLSBJbmRpY2Egc2kgbGFzIHBhbGFicmFzIGRlbCB0ZXh0byBhIGJ1c2NhciBkZWJlbiBhcGFyZWNlciBlbnRlcmFzXHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyBjb250YWluc0FueVdvcmRGcm9tKHRhcmdldDogc3RyaW5nLCB0ZXh0OiBzdHJpbmcsIGZ1bGxXb3JkPzogYm9vbGVhbik6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHdvcmRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgbGV0IGluY2x1ZGVzID0gZmFsc2U7XHJcbiAgICBjb25zdCBzaW1wbGlmaWVkVGFyZ2V0ID0gdGhpcy5nZXRTaW1wbGlmaWVkU3RyaW5nKHRhcmdldCk7XHJcblxyXG4gICAgaWYgKHRleHQgJiYgdGV4dC5zcGxpdCgnICcpLmxlbmd0aCA+IDEpIHtcclxuICAgICAgd29yZHMgPSB0ZXh0LnNwbGl0KCcgJyk7XHJcbiAgICB9XHJcbiAgICB3b3Jkcy5wdXNoKHRleHQpO1xyXG5cclxuICAgIHdvcmRzLmZvckVhY2god29yZCA9PiB7XHJcbiAgICAgIGlmIChzaW1wbGlmaWVkVGFyZ2V0ICYmIHdvcmQpIHtcclxuICAgICAgICBpZiAoKGZ1bGxXb3JkICYmIHNpbXBsaWZpZWRUYXJnZXQgPT09IHRoaXMuZ2V0U2ltcGxpZmllZFN0cmluZyh3b3JkKSlcclxuICAgICAgICAgICAgICAgIHx8ICghZnVsbFdvcmQgJiYgc2ltcGxpZmllZFRhcmdldC5pbmNsdWRlcyh0aGlzLmdldFNpbXBsaWZpZWRTdHJpbmcod29yZCkpKSkge1xyXG4gICAgICAgICAgaW5jbHVkZXMgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGluY2x1ZGVzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29udmllcnRlIGEgbWF5w7pzY3VsYXMsIGVsaW1pbmEgZXNwYWNpb3MgeSByZWVtcGxhemEvZWxpbWluYSBjYXJhY3RlcmVzIGVzcGVjaWFsZXMgcGFyYSByZWFsaXphciBjb21wYXJhY2lvbmVzIG3DoXMgdG9sZXJhbnRlc1xyXG4gICAqIEBwYXJhbSBzdHIgLSBjYWRlbmEgZGUgZW50cmFkYVxyXG4gICAqL1xyXG4gIHByaXZhdGUgc3RhdGljIGdldFNpbXBsaWZpZWRTdHJpbmcoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IHJlcyA9IHN0cjtcclxuICAgIGlmIChzdHIpIHtcclxuICAgICAgcmVzID0gc3RyLnRvTG9jYWxlVXBwZXJDYXNlKCkudHJpbSgpO1xyXG4gICAgICByZXMgPSByZXMucmVwbGFjZSgnw4EnLCAnQScpO1xyXG4gICAgICByZXMgPSByZXMucmVwbGFjZSgnw4knLCAnRScpO1xyXG4gICAgICByZXMgPSByZXMucmVwbGFjZSgnw40nLCAnSScpO1xyXG4gICAgICByZXMgPSByZXMucmVwbGFjZSgnw5MnLCAnTycpO1xyXG4gICAgICByZXMgPSByZXMucmVwbGFjZSgnw5onLCAnVScpO1xyXG4gICAgICByZXMgPSByZXMucmVwbGFjZSgnw4AnLCAnQScpO1xyXG4gICAgICByZXMgPSByZXMucmVwbGFjZSgnw4gnLCAnRScpO1xyXG4gICAgICByZXMgPSByZXMucmVwbGFjZSgnw4wnLCAnSScpO1xyXG4gICAgICByZXMgPSByZXMucmVwbGFjZSgnw5InLCAnTycpO1xyXG4gICAgICByZXMgPSByZXMucmVwbGFjZSgnw5knLCAnVScpO1xyXG4gICAgICByZXMgPSByZXMucmVwbGFjZSgnw4QnLCAnQScpO1xyXG4gICAgICByZXMgPSByZXMucmVwbGFjZSgnw4snLCAnRScpO1xyXG4gICAgICByZXMgPSByZXMucmVwbGFjZSgnw48nLCAnSScpO1xyXG4gICAgICByZXMgPSByZXMucmVwbGFjZSgnw5YnLCAnTycpO1xyXG4gICAgICByZXMgPSByZXMucmVwbGFjZSgnw5wnLCAnVScpO1xyXG4gICAgICByZXMgPSByZXMucmVwbGFjZSgnLCcsICcnKTtcclxuICAgICAgcmVzID0gcmVzLnJlcGxhY2UoJy4nLCAnJyk7XHJcbiAgICAgIHJlcyA9IHJlcy5yZXBsYWNlKCdcXCcnLCAnJyk7XHJcbiAgICAgIHJlcyA9IHJlcy5yZXBsYWNlKCdcIicsICcnKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Facilita funciones de utilidad para trabajar con strings
3
+ */
4
+ export class StringUtils {
5
+ /**
6
+ * Escapa los caracteres propios de HTML para mostrarlos como contenido
7
+ * @param value texto en formato html
8
+ */
9
+ static escapeHtml(value) {
10
+ return value ? value
11
+ .replace(new RegExp(`&`, 'g'), '&amp;')
12
+ .replace(new RegExp(`<`, 'g'), '&lt;')
13
+ .replace(new RegExp(`>`, 'g'), '&gt;')
14
+ .replace(new RegExp(`"`, 'g'), '&quot;')
15
+ .replace(new RegExp(`'`, 'g'), '&#39;') : '';
16
+ }
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvc2hhcmVkL3V0aWxzL3N0cmluZy11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sT0FBTyxXQUFXO0lBRXRCOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBYTtRQUNwQyxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSzthQUNqQixPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQzthQUN0QyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQzthQUNyQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQzthQUNyQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLFFBQVEsQ0FBQzthQUN2QyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDakQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEZhY2lsaXRhIGZ1bmNpb25lcyBkZSB1dGlsaWRhZCBwYXJhIHRyYWJhamFyIGNvbiBzdHJpbmdzXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU3RyaW5nVXRpbHMge1xyXG5cclxuICAvKipcclxuICAgKiBFc2NhcGEgbG9zIGNhcmFjdGVyZXMgcHJvcGlvcyBkZSBIVE1MIHBhcmEgbW9zdHJhcmxvcyBjb21vIGNvbnRlbmlkb1xyXG4gICAqIEBwYXJhbSB2YWx1ZSB0ZXh0byBlbiBmb3JtYXRvIGh0bWxcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIGVzY2FwZUh0bWwodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdmFsdWUgPyB2YWx1ZVxyXG4gICAgICAucmVwbGFjZShuZXcgUmVnRXhwKGAmYCwgJ2cnKSwgJyZhbXA7JylcclxuICAgICAgLnJlcGxhY2UobmV3IFJlZ0V4cChgPGAsICdnJyksICcmbHQ7JylcclxuICAgICAgLnJlcGxhY2UobmV3IFJlZ0V4cChgPmAsICdnJyksICcmZ3Q7JylcclxuICAgICAgLnJlcGxhY2UobmV3IFJlZ0V4cChgXCJgLCAnZycpLCAnJnF1b3Q7JylcclxuICAgICAgLnJlcGxhY2UobmV3IFJlZ0V4cChgJ2AsICdnJyksICcmIzM5OycpIDogJyc7XHJcbiAgfVxyXG59XHJcbiJdfQ==