@elderbyte/ngx-starter 14.0.0 → 14.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (264) hide show
  1. package/esm2020/lib/common/enums/elder-enum-translation.service.mjs +3 -3
  2. package/esm2020/lib/common/forms/form-field-base.component.mjs +3 -3
  3. package/esm2020/lib/common/forms/multi-model-base.component.mjs +3 -3
  4. package/esm2020/lib/common/forms/template-composite-control.mjs +3 -3
  5. package/esm2020/lib/common/forms/value-accessor-base.mjs +3 -3
  6. package/esm2020/lib/common/http/http-client-builder.service.mjs +3 -3
  7. package/esm2020/lib/common/http/http-client-pristine.mjs +3 -3
  8. package/esm2020/lib/common/http/transfer/data-transfer-factory.mjs +3 -3
  9. package/esm2020/lib/common/url/elder-url-fragment-params.service.mjs +3 -3
  10. package/esm2020/lib/components/access-denied/elder-access-denied.component.mjs +3 -3
  11. package/esm2020/lib/components/access-denied/elder-access-denied.module.mjs +4 -4
  12. package/esm2020/lib/components/auditing/audited-entity/elder-audited-entity.component.mjs +3 -3
  13. package/esm2020/lib/components/auditing/elder-audit.module.mjs +4 -4
  14. package/esm2020/lib/components/button-group/elder-button-group/elder-button-group.component.mjs +3 -3
  15. package/esm2020/lib/components/button-group/elder-button-group.module.mjs +4 -4
  16. package/esm2020/lib/components/card-organizer/card-organizer/elder-card-organizer.component.mjs +3 -3
  17. package/esm2020/lib/components/card-organizer/card-organizer/elder-stack-card.directive.mjs +3 -3
  18. package/esm2020/lib/components/card-organizer/card-stack/elder-card-stack.component.mjs +3 -3
  19. package/esm2020/lib/components/card-organizer/elder-card-organizer.module.mjs +4 -4
  20. package/esm2020/lib/components/cards/elder-card/elder-card-header/elder-card-header.component.mjs +3 -3
  21. package/esm2020/lib/components/cards/elder-card/elder-card.component.mjs +18 -18
  22. package/esm2020/lib/components/cards/elder-card/elder-card.module.mjs +4 -4
  23. package/esm2020/lib/components/connectivity/elder-connectivity.module.mjs +4 -4
  24. package/esm2020/lib/components/connectivity/elder-connectivity.service.mjs +3 -3
  25. package/esm2020/lib/components/connectivity/offline-indicator/elder-offline-indicator.component.mjs +3 -3
  26. package/esm2020/lib/components/containers/elder-containers.module.mjs +4 -4
  27. package/esm2020/lib/components/containers/elder-scroll-container/elder-scroll-container.component.mjs +3 -3
  28. package/esm2020/lib/components/csv/elder-csv-export-btn/elder-csv-export-btn.component.mjs +3 -3
  29. package/esm2020/lib/components/csv/elder-csv-stream-exporter-builder.service.mjs +3 -3
  30. package/esm2020/lib/components/csv/elder-csv.module.mjs +5 -5
  31. package/esm2020/lib/components/currency/elder-currency.module.mjs +4 -4
  32. package/esm2020/lib/components/currency/elder-currency.pipe.mjs +3 -3
  33. package/esm2020/lib/components/data-transfer/elder-data-transfer.module.mjs +4 -4
  34. package/esm2020/lib/components/data-transfer/elder-data-transfer.service.mjs +3 -3
  35. package/esm2020/lib/components/data-transfer/http-data-transfer/http-data-transfer.component.mjs +3 -3
  36. package/esm2020/lib/components/data-transfer/http-data-transfer-aggregate/http-data-transfer-aggregate.component.mjs +3 -3
  37. package/esm2020/lib/components/data-transfer/http-data-transfer-indicator/http-data-transfer-indicator.component.mjs +3 -3
  38. package/esm2020/lib/components/data-transfer/http-data-transfer-overview/http-data-transfer-overview.component.mjs +3 -3
  39. package/esm2020/lib/components/data-view/base/elder-data-view-base.mjs +3 -3
  40. package/esm2020/lib/components/data-view/base/elder-data-view-base.module.mjs +4 -4
  41. package/esm2020/lib/components/data-view/common/data-context-state-indicator/data-context-state-indicator.component.mjs +3 -3
  42. package/esm2020/lib/components/data-view/common/elder-data-common.module.mjs +4 -4
  43. package/esm2020/lib/components/data-view/common/elder-data-toolbar/elder-data-toolbar.component.mjs +6 -6
  44. package/esm2020/lib/components/data-view/common/elder-single-sort/elder-single-sort.component.mjs +3 -3
  45. package/esm2020/lib/components/data-view/common/selection/data-context-selection.directive.mjs +3 -3
  46. package/esm2020/lib/components/data-view/common/selection/elder-selection-master-checkbox/elder-selection-master-checkbox.component.mjs +3 -3
  47. package/esm2020/lib/components/data-view/grid/elder-grid/elder-grid.component.mjs +9 -9
  48. package/esm2020/lib/components/data-view/grid/elder-grid.module.mjs +4 -4
  49. package/esm2020/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.component.mjs +3 -3
  50. package/esm2020/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.module.mjs +4 -4
  51. package/esm2020/lib/components/data-view/table/activation/elder-table-activation.directive.mjs +3 -3
  52. package/esm2020/lib/components/data-view/table/elder-number-cell.directive.mjs +3 -3
  53. package/esm2020/lib/components/data-view/table/elder-paginator-intl.mjs +3 -3
  54. package/esm2020/lib/components/data-view/table/elder-table/elder-table-toolbar.directive.mjs +3 -3
  55. package/esm2020/lib/components/data-view/table/elder-table/elder-table.component.mjs +3 -3
  56. package/esm2020/lib/components/data-view/table/elder-table-column.directive.mjs +3 -3
  57. package/esm2020/lib/components/data-view/table/elder-table-extension.directive.mjs +3 -3
  58. package/esm2020/lib/components/data-view/table/elder-table-root.directive.mjs +3 -3
  59. package/esm2020/lib/components/data-view/table/elder-table-row.directive.mjs +3 -3
  60. package/esm2020/lib/components/data-view/table/elder-table-sort.directive.mjs +3 -3
  61. package/esm2020/lib/components/data-view/table/elder-table.module.mjs +4 -4
  62. package/esm2020/lib/components/data-view/table/model/elder-table-model.mjs +3 -3
  63. package/esm2020/lib/components/dialogs/confirm-dialog/elder-confirm-dialog.component.mjs +3 -3
  64. package/esm2020/lib/components/dialogs/elder-dialog.module.mjs +7 -7
  65. package/esm2020/lib/components/dialogs/elder-dialog.service.mjs +3 -3
  66. package/esm2020/lib/components/dialogs/question-dialog/elder-question-dialog.component.mjs +3 -3
  67. package/esm2020/lib/components/dialogs/selection-dialog/elder-selection-dialog/elder-selection-dialog.component.mjs +3 -3
  68. package/esm2020/lib/components/dialogs/selection-dialog/elder-selection-dialog.directive.mjs +3 -3
  69. package/esm2020/lib/components/errors/elder-error.module.mjs +4 -4
  70. package/esm2020/lib/components/errors/exception-detail/elder-exception-detail.component.mjs +3 -3
  71. package/esm2020/lib/components/expand-toggle-button/elder-expand-toggle-button.component.mjs +3 -3
  72. package/esm2020/lib/components/expand-toggle-button/elder-expand-toggle-button.module.mjs +4 -4
  73. package/esm2020/lib/components/files/blob-viewer/elder-blob-viewer.component.mjs +3 -3
  74. package/esm2020/lib/components/files/elder-file-drop-zone.directive.mjs +3 -3
  75. package/esm2020/lib/components/files/elder-file-select.directive.mjs +3 -3
  76. package/esm2020/lib/components/files/elder-file.module.mjs +4 -4
  77. package/esm2020/lib/components/files/file-select/file-select.component.mjs +3 -3
  78. package/esm2020/lib/components/files/file-upload/file-upload.component.mjs +3 -3
  79. package/esm2020/lib/components/forms/clipboard/elder-clipboard.service.mjs +3 -3
  80. package/esm2020/lib/components/forms/directives/base/elder-class-hostbinding-base.mjs +3 -3
  81. package/esm2020/lib/components/forms/directives/elder-clipboard-put.directive.mjs +3 -3
  82. package/esm2020/lib/components/forms/directives/elder-delayed-focus.directive.mjs +3 -3
  83. package/esm2020/lib/components/forms/directives/elder-form-field-dense.directive.mjs +3 -3
  84. package/esm2020/lib/components/forms/directives/elder-form-field-label.directive.mjs +3 -3
  85. package/esm2020/lib/components/forms/directives/elder-form-field-no-hint.directive.mjs +3 -3
  86. package/esm2020/lib/components/forms/directives/elder-form-field-no-spinner.directive.mjs +3 -3
  87. package/esm2020/lib/components/forms/directives/elder-forms-directives.module.mjs +24 -18
  88. package/esm2020/lib/components/forms/directives/elder-input-pattern.directive.mjs +77 -0
  89. package/esm2020/lib/components/forms/directives/elder-key-event.directive.mjs +3 -3
  90. package/esm2020/lib/components/forms/directives/elder-max.directive.mjs +3 -3
  91. package/esm2020/lib/components/forms/directives/elder-min.directive.mjs +3 -3
  92. package/esm2020/lib/components/forms/directives/elder-next-focusable.directive.mjs +3 -3
  93. package/esm2020/lib/components/forms/directives/elder-plug-parent-form.directive.mjs +3 -3
  94. package/esm2020/lib/components/forms/directives/elder-stop-event-propagation.directive.mjs +3 -3
  95. package/esm2020/lib/components/forms/directives/elder-tab-focus-trap.directive.mjs +3 -3
  96. package/esm2020/lib/components/forms/directives/elder-touched.directive.mjs +3 -3
  97. package/esm2020/lib/components/forms/directives/elder-triple-state-checkbox.directive.mjs +3 -3
  98. package/esm2020/lib/components/forms/directives/validation/elder-multiple-of.validator.mjs +3 -3
  99. package/esm2020/lib/components/forms/directives/validation/elder-required-ignore-zero.validator.mjs +3 -3
  100. package/esm2020/lib/components/forms/elder-forms.module.mjs +4 -4
  101. package/esm2020/lib/components/forms/search/elder-search-context.directive.mjs +3 -3
  102. package/esm2020/lib/components/forms/search/elder-search-input.directive.mjs +3 -3
  103. package/esm2020/lib/components/forms/search/elder-search.module.mjs +4 -4
  104. package/esm2020/lib/components/forms/search/search-box/elder-search-box.component.mjs +3 -3
  105. package/esm2020/lib/components/forms/search/search-box/elder-search-panel.component.mjs +3 -3
  106. package/esm2020/lib/components/global-search/elder-global-search.component.mjs +3 -3
  107. package/esm2020/lib/components/global-search/elder-global-search.module.mjs +4 -4
  108. package/esm2020/lib/components/global-search/elder-global-search.service.mjs +3 -3
  109. package/esm2020/lib/components/graph/elder-progress-bar/elder-progress-bar.component.mjs +3 -3
  110. package/esm2020/lib/components/graph/elder-progress-bar/elder-progress-bar.module.mjs +4 -4
  111. package/esm2020/lib/components/headers/elder-header/elder-header.component.mjs +3 -3
  112. package/esm2020/lib/components/headers/elder-header.module.mjs +4 -4
  113. package/esm2020/lib/components/http-support/elder-http-client.service.mjs +3 -3
  114. package/esm2020/lib/components/i18n/entities/elder-i18n-entities.module.mjs +4 -4
  115. package/esm2020/lib/components/i18n/entities/elder-localized-input/elder-localized-input.component.mjs +3 -3
  116. package/esm2020/lib/components/i18n/entities/elder-localized-input-dialog/elder-localized-input-dialog.component.mjs +3 -3
  117. package/esm2020/lib/components/i18n/entities/elder-localized-input-dialog.service.mjs +3 -3
  118. package/esm2020/lib/components/i18n/entities/elder-localized-input-table/elder-localized-input-table.component.mjs +3 -3
  119. package/esm2020/lib/components/i18n/entities/elder-localized-text-column.directive.mjs +3 -3
  120. package/esm2020/lib/components/i18n/entities/elder-localized-texts.directive.mjs +3 -3
  121. package/esm2020/lib/components/i18n/entities/picker/i18n-pick-async.pipe.mjs +3 -3
  122. package/esm2020/lib/components/i18n/entities/picker/i18n-pick.pipe.mjs +3 -3
  123. package/esm2020/lib/components/i18n/entities/picker/localisation-picker.service.mjs +3 -3
  124. package/esm2020/lib/components/i18n/language/elder-language-interceptor.mjs +3 -3
  125. package/esm2020/lib/components/i18n/language/elder-language.module.mjs +4 -4
  126. package/esm2020/lib/components/i18n/language/elder-language.service.mjs +3 -3
  127. package/esm2020/lib/components/i18n/language/language-switcher/elder-language-switcher.component.mjs +3 -3
  128. package/esm2020/lib/components/i18n/locales/elder-locales-de-ch.module.mjs +4 -4
  129. package/esm2020/lib/components/iframes/elder-iframe.module.mjs +4 -4
  130. package/esm2020/lib/components/iframes/iframe-close.directive.mjs +3 -3
  131. package/esm2020/lib/components/iframes/iframe-dialog/iframe-dialog.component.mjs +3 -3
  132. package/esm2020/lib/components/iframes/iframe-host/iframe-host.component.mjs +3 -3
  133. package/esm2020/lib/components/iframes/iframe-side-content/iframe-side-content.component.mjs +3 -3
  134. package/esm2020/lib/components/iframes/iframe.service.mjs +3 -3
  135. package/esm2020/lib/components/infinitescroll/elder-infinite-autocomplete.directive.mjs +3 -3
  136. package/esm2020/lib/components/infinitescroll/elder-infinite-scroll.directive.mjs +3 -3
  137. package/esm2020/lib/components/infinitescroll/elder-infinite-scroll.module.mjs +7 -7
  138. package/esm2020/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete.component.mjs +3 -3
  139. package/esm2020/lib/components/input/autocomplete/elder-autocomplete.directive.mjs +3 -3
  140. package/esm2020/lib/components/input/autocomplete/elder-autocomplete.module.mjs +4 -4
  141. package/esm2020/lib/components/labels/elder-labels.module.mjs +4 -4
  142. package/esm2020/lib/components/labels/labels-input/labels-input.component.mjs +3 -3
  143. package/esm2020/lib/components/measures/dimensions-input/elder-dimensions-input.component.mjs +3 -3
  144. package/esm2020/lib/components/measures/directives/elder-unit-select.directive.mjs +3 -3
  145. package/esm2020/lib/components/measures/elder-measures.module.mjs +8 -8
  146. package/esm2020/lib/components/measures/elder-quantity-transform.pipe.mjs +3 -3
  147. package/esm2020/lib/components/measures/elder-quantity.pipe.mjs +3 -3
  148. package/esm2020/lib/components/measures/elder-unit.service.mjs +3 -3
  149. package/esm2020/lib/components/measures/quantity-input/elder-quantity-input.component.mjs +3 -3
  150. package/esm2020/lib/components/measures/util/elder-quantity.service.mjs +3 -3
  151. package/esm2020/lib/components/multi-autocomplete/elder-multi-auto-complete.module.mjs +4 -4
  152. package/esm2020/lib/components/multi-autocomplete/elder-multi-autocomplete.component.mjs +3 -3
  153. package/esm2020/lib/components/navigation/bread-crumbs/bread-crumbs/elder-bread-crumbs.component.mjs +3 -3
  154. package/esm2020/lib/components/navigation/bread-crumbs/elder-bread-crumbs.module.mjs +4 -4
  155. package/esm2020/lib/components/navigation/nav/elder-nav.module.mjs +4 -4
  156. package/esm2020/lib/components/navigation/nav/nav-group/elder-nav-group.component.mjs +3 -3
  157. package/esm2020/lib/components/navigation/nav/nav-link/elder-nav-link.component.mjs +3 -3
  158. package/esm2020/lib/components/navigation/nav/nav-list/elder-nav-list.component.mjs +3 -3
  159. package/esm2020/lib/components/navigation/toolbar/elder-toolbar-column.directive.mjs +3 -3
  160. package/esm2020/lib/components/navigation/toolbar/elder-toolbar.module.mjs +4 -4
  161. package/esm2020/lib/components/navigation/toolbar/elder-toolbar.service.mjs +3 -3
  162. package/esm2020/lib/components/navigation/toolbar/toolbar/elder-toolbar.component.mjs +30 -12
  163. package/esm2020/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.component.mjs +3 -3
  164. package/esm2020/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.service.mjs +3 -3
  165. package/esm2020/lib/components/overlays/elder-overlay-origin.directive.mjs +3 -3
  166. package/esm2020/lib/components/overlays/elder-overlay-trigger.directive.mjs +3 -3
  167. package/esm2020/lib/components/overlays/elder-overlay.component.mjs +3 -3
  168. package/esm2020/lib/components/overlays/elder-overlay.module.mjs +4 -4
  169. package/esm2020/lib/components/panels/card-panel/elder-card-panel.component.mjs +3 -3
  170. package/esm2020/lib/components/panels/elder-panel.module.mjs +4 -4
  171. package/esm2020/lib/components/panels/flat/elder-panel.component.mjs +3 -3
  172. package/esm2020/lib/components/public_api.mjs +2 -1
  173. package/esm2020/lib/components/select/auto/elder-auto-select-first.directive.mjs +3 -3
  174. package/esm2020/lib/components/select/elder-select/elder-select.component.mjs +3 -3
  175. package/esm2020/lib/components/select/elder-select-base.mjs +3 -3
  176. package/esm2020/lib/components/select/elder-select-chip.directive.mjs +6 -6
  177. package/esm2020/lib/components/select/elder-select-on-tab.directive.mjs +3 -3
  178. package/esm2020/lib/components/select/elder-select-value.directive.mjs +3 -3
  179. package/esm2020/lib/components/select/elder-select.module.mjs +4 -4
  180. package/esm2020/lib/components/select/multi/elder-multi-select-base.mjs +3 -3
  181. package/esm2020/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.mjs +3 -3
  182. package/esm2020/lib/components/select/popup/selection-model-popup.directive.mjs +3 -3
  183. package/esm2020/lib/components/select/popup/templated-selection-dialog/templated-selection-dialog.component.mjs +3 -3
  184. package/esm2020/lib/components/select-chip-list/chip-list-select/elder-chip-list-select.component.mjs +3 -3
  185. package/esm2020/lib/components/select-chip-list/elder-chip-list-select.module.mjs +4 -4
  186. package/esm2020/lib/components/select-list/elder-select-list.module.mjs +4 -4
  187. package/esm2020/lib/components/select-list/select-list/elder-select-list.component.mjs +3 -3
  188. package/esm2020/lib/components/select-list/select-list-item/elder-select-list-item.component.mjs +3 -3
  189. package/esm2020/lib/components/shell/drawers/elder-route-outlet-drawer.service.mjs +3 -3
  190. package/esm2020/lib/components/shell/drawers/elder-router-outlet.service.mjs +3 -3
  191. package/esm2020/lib/components/shell/elder-shell-slot.directive.mjs +3 -3
  192. package/esm2020/lib/components/shell/elder-shell.module.mjs +9 -8
  193. package/esm2020/lib/components/shell/elder-shell.service.mjs +3 -3
  194. package/esm2020/lib/components/shell/header/elder-app-header/elder-app-header.component.mjs +52 -15
  195. package/esm2020/lib/components/shell/shell/elder-shell.component.mjs +57 -32
  196. package/esm2020/lib/components/shell/shell-navigation-toggle/elder-shell-navigation-toggle.component.mjs +3 -3
  197. package/esm2020/lib/components/tabs/elder-tab/elder-tab.directive.mjs +3 -3
  198. package/esm2020/lib/components/tabs/elder-tab-group-routing/elder-tab-group-routing.directive.mjs +3 -3
  199. package/esm2020/lib/components/tabs/elder-tab.module.mjs +4 -4
  200. package/esm2020/lib/components/theme/elder-theme-applier.directive.mjs +62 -0
  201. package/esm2020/lib/components/theme/elder-theme-preference.service.mjs +62 -0
  202. package/esm2020/lib/components/theme/elder-theme-toggle/elder-theme-toggle.component.mjs +72 -0
  203. package/esm2020/lib/components/theme/elder-theme.module.mjs +47 -0
  204. package/esm2020/lib/components/theme/elder-theme.service.mjs +123 -0
  205. package/esm2020/lib/components/theme/known-elder-themes.mjs +6 -0
  206. package/esm2020/lib/components/theme/public_api.mjs +2 -0
  207. package/esm2020/lib/components/theme/theme-spec.mjs +15 -0
  208. package/esm2020/lib/components/time/date-adapters/custom-date-adapter.mjs +3 -3
  209. package/esm2020/lib/components/time/duration/elder-duration-input/elder-duration-input.component.mjs +3 -3
  210. package/esm2020/lib/components/time/elder-date-switcher/elder-date-switcher.component.mjs +3 -3
  211. package/esm2020/lib/components/time/elder-date-time-input/elder-date-time-input.component.mjs +3 -3
  212. package/esm2020/lib/components/time/elder-interval-input/elder-interval-input.component.mjs +3 -3
  213. package/esm2020/lib/components/time/elder-local-date-input/elder-local-date-input.component.mjs +3 -3
  214. package/esm2020/lib/components/time/elder-local-time-input/elder-local-time-input.component.mjs +3 -3
  215. package/esm2020/lib/components/time/elder-time.module.mjs +8 -8
  216. package/esm2020/lib/components/time/period/elder-period-input/elder-period-input.component.mjs +3 -3
  217. package/esm2020/lib/components/toasts/elder-toast.module.mjs +4 -4
  218. package/esm2020/lib/components/toasts/elder-toast.service.mjs +9 -9
  219. package/esm2020/lib/components/toasts/standard-toast/standard-toast.component.mjs +3 -3
  220. package/esm2020/lib/components/url-fragment/elder-url-fragment.module.mjs +4 -4
  221. package/esm2020/lib/components/url-fragment/url-fragment-switcher/elder-url-fragment-switcher.component.mjs +3 -3
  222. package/esm2020/lib/components/viewers/elder-svg-viewer/elder-svg-viewer.component.mjs +3 -3
  223. package/esm2020/lib/components/viewers/elder-viewers.module.mjs +4 -4
  224. package/esm2020/lib/features/event-source/elder-event-source.service.mjs +3 -3
  225. package/esm2020/lib/features/kafent/access-token-provider.mjs +3 -3
  226. package/esm2020/lib/features/kafent/kafent-config.mjs +3 -3
  227. package/esm2020/lib/features/kafent/kafent-event-stream.mjs +3 -3
  228. package/esm2020/lib/features/kafent/kafent-event.service.mjs +3 -3
  229. package/esm2020/lib/features/kafent/kafent.module.mjs +4 -4
  230. package/esm2020/lib/features/kafent/sse/kafent-event-stream-sse.service.mjs +3 -3
  231. package/esm2020/lib/pipes/bytes.pipe.mjs +3 -3
  232. package/esm2020/lib/pipes/elder-pipes.module.mjs +10 -10
  233. package/esm2020/lib/pipes/elder-repeat.pipe.mjs +3 -3
  234. package/esm2020/lib/pipes/elder-round.pipe.mjs +3 -3
  235. package/esm2020/lib/pipes/elder-safe-url.pipe.mjs +3 -3
  236. package/esm2020/lib/pipes/elder-truncate.pipe.mjs +3 -3
  237. package/esm2020/lib/pipes/iso-duration.pipe.mjs +3 -3
  238. package/esm2020/lib/pipes/iso-interval-parse.pipe.mjs +3 -3
  239. package/esm2020/lib/pipes/iso-interval.pipe.mjs +3 -3
  240. package/esm2020/lib/pipes/time-ago.pipe.mjs +3 -3
  241. package/esm2020/lib/pipes/time-duration.pipe.mjs +3 -3
  242. package/esm2020/lib/pipes/weight.pipe.mjs +3 -3
  243. package/fesm2015/elderbyte-ngx-starter.mjs +1365 -868
  244. package/fesm2015/elderbyte-ngx-starter.mjs.map +1 -1
  245. package/fesm2020/elderbyte-ngx-starter.mjs +1364 -868
  246. package/fesm2020/elderbyte-ngx-starter.mjs.map +1 -1
  247. package/lib/components/forms/directives/elder-forms-directives.module.d.ts +5 -3
  248. package/lib/components/forms/directives/elder-input-pattern.directive.d.ts +41 -0
  249. package/lib/components/navigation/toolbar/toolbar/elder-toolbar.component.d.ts +10 -5
  250. package/lib/components/public_api.d.ts +1 -0
  251. package/lib/components/shell/elder-shell.module.d.ts +2 -1
  252. package/lib/components/shell/header/elder-app-header/elder-app-header.component.d.ts +33 -6
  253. package/lib/components/shell/shell/elder-shell.component.d.ts +16 -6
  254. package/lib/components/theme/elder-theme-applier.directive.d.ts +36 -0
  255. package/lib/components/theme/elder-theme-preference.service.d.ts +33 -0
  256. package/lib/components/theme/elder-theme-toggle/elder-theme-toggle.component.d.ts +37 -0
  257. package/lib/components/theme/elder-theme.module.d.ts +18 -0
  258. package/lib/components/theme/elder-theme.service.d.ts +51 -0
  259. package/lib/components/theme/known-elder-themes.d.ts +5 -0
  260. package/lib/components/theme/public_api.d.ts +1 -0
  261. package/lib/components/theme/theme-spec.d.ts +18 -0
  262. package/package.json +1 -1
  263. package/src/lib/components/theme/elder-theme-toggle/elder-theme-toggle.component.scss +0 -0
  264. package/theming/_elder-scrollbar-theme.scss +1 -1
@@ -1,27 +1,62 @@
1
1
  import { Component, ChangeDetectionStrategy, Input } from '@angular/core';
2
+ import { debounceTime, takeUntil } from 'rxjs/operators';
3
+ import { BehaviorSubject, Subject } from 'rxjs';
2
4
  import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
4
- import * as i2 from "@angular/material/icon";
5
- import * as i3 from "@angular/flex-layout/flex";
6
- import * as i4 from "../../../panels/flat/elder-panel.component";
5
+ import * as i1 from "../../../theme/elder-theme.service";
6
+ import * as i2 from "@angular/common";
7
+ import * as i3 from "@angular/material/icon";
8
+ import * as i4 from "@angular/flex-layout/flex";
9
+ import * as i5 from "../../../panels/flat/elder-panel.component";
7
10
  export class ElderAppHeaderComponent {
8
- constructor() {
9
- this.iconColor = 'accent';
11
+ /***************************************************************************
12
+ * *
13
+ * Constructor *
14
+ * *
15
+ **************************************************************************/
16
+ constructor(themeService) {
17
+ this.themeService = themeService;
10
18
  this.subTitle = 'by ElderByte';
11
19
  this.subTitleLink = 'https://elderbyte.com';
12
- this.color = 'primary';
20
+ this.color$ = new BehaviorSubject('primary');
21
+ this.iconColor$ = new BehaviorSubject('accent');
22
+ this.destroy$ = new Subject();
13
23
  }
24
+ /***************************************************************************
25
+ * *
26
+ * Life Cycle *
27
+ * *
28
+ **************************************************************************/
14
29
  ngOnInit() {
30
+ this.themeService
31
+ .activeTheme$
32
+ .pipe(takeUntil(this.destroy$), debounceTime(200) // Fix for NG0100 error
33
+ ).subscribe(theme => {
34
+ this.color = theme.heroBackground;
35
+ this.iconColor = theme.heroIconColor;
36
+ });
37
+ }
38
+ ngOnDestroy() {
39
+ this.destroy$.next();
40
+ this.destroy$.complete();
41
+ }
42
+ /***************************************************************************
43
+ * *
44
+ * Properties *
45
+ * *
46
+ **************************************************************************/
47
+ set color(c) {
48
+ this.color$.next(c);
49
+ }
50
+ set iconColor(c) {
51
+ this.iconColor$.next(c);
15
52
  }
16
53
  }
17
- ElderAppHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: ElderAppHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
18
- ElderAppHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.1", type: ElderAppHeaderComponent, selector: "elder-app-header", inputs: { icon: "icon", iconColor: "iconColor", title: "title", subTitle: "subTitle", subTitleLink: "subTitleLink", version: "version", color: "color" }, ngImport: i0, template: "<mat-panel fxLayout=\"column\" [color]=\"color\" class=\"light\" fxFill>\n <div fxLayout=\"row\" style=\"padding: 20px\" fxFlex=\"none\">\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <mat-icon class=\"noselect title-icon\" [color]=\"iconColor\">{{icon}}</mat-icon>\n </div>\n <div fxLayout=\"column\" fxLayoutAlign=\"center start\">\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" style=\"width: 100%\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start end\" fxLayoutGap=\"5px\">\n <span id=\"title\" class=\"noselect\" style=\"font-size: 28px\">{{title}}</span>\n <span class=\"mat-caption noselect\"><small>{{version}}</small></span>\n </div>\n </div>\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <span class=\"mat-caption noselect\">\n <span *ngIf=\"!subTitleLink\">{{subTitle}}</span>\n <a *ngIf=\"subTitleLink\" [href]=\"subTitleLink\" target=\"_blank\" style=\"text-decoration:none; color: inherit\">{{subTitle}}</a>\n </span>\n </div>\n </div>\n </div>\n\n <!-- Project child content here -->\n <ng-content></ng-content>\n\n</mat-panel>\n", styles: [".title-icon{font-size:42px;width:42px;height:42px;padding:20px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i3.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i3.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i3.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i3.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i4.ElderPanelComponent, selector: "elder-panel, mat-panel", inputs: ["color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: ElderAppHeaderComponent, decorators: [{
54
+ ElderAppHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: ElderAppHeaderComponent, deps: [{ token: i1.ElderThemeService }], target: i0.ɵɵFactoryTarget.Component });
55
+ ElderAppHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: ElderAppHeaderComponent, selector: "elder-app-header", inputs: { icon: "icon", title: "title", subTitle: "subTitle", subTitleLink: "subTitleLink", version: "version", color: "color", iconColor: "iconColor" }, ngImport: i0, template: "<mat-panel fxLayout=\"column\" [color]=\"color$ | async\" class=\"light\" fxFill>\n <div fxLayout=\"row\" style=\"padding: 20px\" fxFlex=\"none\">\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <mat-icon class=\"noselect title-icon\" [color]=\"iconColor$ | async\">{{icon}}</mat-icon>\n </div>\n <div fxLayout=\"column\" fxLayoutAlign=\"center start\">\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" style=\"width: 100%\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start end\" fxLayoutGap=\"5px\">\n <span id=\"title\" class=\"noselect\" style=\"font-size: 28px\">{{title}}</span>\n <span class=\"mat-caption noselect\"><small>{{version}}</small></span>\n </div>\n </div>\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <span class=\"mat-caption noselect\">\n <span *ngIf=\"!subTitleLink\">{{subTitle}}</span>\n <a *ngIf=\"subTitleLink\" [href]=\"subTitleLink\" target=\"_blank\" style=\"text-decoration:none; color: inherit\">{{subTitle}}</a>\n </span>\n </div>\n </div>\n </div>\n\n <!-- Project child content here -->\n <ng-content></ng-content>\n\n</mat-panel>\n", styles: [".title-icon{font-size:42px;width:42px;height:42px;padding:20px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i4.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i4.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i4.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i5.ElderPanelComponent, selector: "elder-panel, mat-panel", inputs: ["color"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
56
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: ElderAppHeaderComponent, decorators: [{
20
57
  type: Component,
21
- args: [{ selector: 'elder-app-header', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-panel fxLayout=\"column\" [color]=\"color\" class=\"light\" fxFill>\n <div fxLayout=\"row\" style=\"padding: 20px\" fxFlex=\"none\">\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <mat-icon class=\"noselect title-icon\" [color]=\"iconColor\">{{icon}}</mat-icon>\n </div>\n <div fxLayout=\"column\" fxLayoutAlign=\"center start\">\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" style=\"width: 100%\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start end\" fxLayoutGap=\"5px\">\n <span id=\"title\" class=\"noselect\" style=\"font-size: 28px\">{{title}}</span>\n <span class=\"mat-caption noselect\"><small>{{version}}</small></span>\n </div>\n </div>\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <span class=\"mat-caption noselect\">\n <span *ngIf=\"!subTitleLink\">{{subTitle}}</span>\n <a *ngIf=\"subTitleLink\" [href]=\"subTitleLink\" target=\"_blank\" style=\"text-decoration:none; color: inherit\">{{subTitle}}</a>\n </span>\n </div>\n </div>\n </div>\n\n <!-- Project child content here -->\n <ng-content></ng-content>\n\n</mat-panel>\n", styles: [".title-icon{font-size:42px;width:42px;height:42px;padding:20px}\n"] }]
22
- }], ctorParameters: function () { return []; }, propDecorators: { icon: [{
23
- type: Input
24
- }], iconColor: [{
58
+ args: [{ selector: 'elder-app-header', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-panel fxLayout=\"column\" [color]=\"color$ | async\" class=\"light\" fxFill>\n <div fxLayout=\"row\" style=\"padding: 20px\" fxFlex=\"none\">\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <mat-icon class=\"noselect title-icon\" [color]=\"iconColor$ | async\">{{icon}}</mat-icon>\n </div>\n <div fxLayout=\"column\" fxLayoutAlign=\"center start\">\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" style=\"width: 100%\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start end\" fxLayoutGap=\"5px\">\n <span id=\"title\" class=\"noselect\" style=\"font-size: 28px\">{{title}}</span>\n <span class=\"mat-caption noselect\"><small>{{version}}</small></span>\n </div>\n </div>\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <span class=\"mat-caption noselect\">\n <span *ngIf=\"!subTitleLink\">{{subTitle}}</span>\n <a *ngIf=\"subTitleLink\" [href]=\"subTitleLink\" target=\"_blank\" style=\"text-decoration:none; color: inherit\">{{subTitle}}</a>\n </span>\n </div>\n </div>\n </div>\n\n <!-- Project child content here -->\n <ng-content></ng-content>\n\n</mat-panel>\n", styles: [".title-icon{font-size:42px;width:42px;height:42px;padding:20px}\n"] }]
59
+ }], ctorParameters: function () { return [{ type: i1.ElderThemeService }]; }, propDecorators: { icon: [{
25
60
  type: Input
26
61
  }], title: [{
27
62
  type: Input
@@ -33,5 +68,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImpor
33
68
  type: Input
34
69
  }], color: [{
35
70
  type: Input
71
+ }], iconColor: [{
72
+ type: Input
36
73
  }] } });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItYXBwLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL3NoZWxsL2hlYWRlci9lbGRlci1hcHAtaGVhZGVyL2VsZGVyLWFwcC1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9zaGVsbC9oZWFkZXIvZWxkZXItYXBwLWhlYWRlci9lbGRlci1hcHAtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQVUsdUJBQXVCLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFTaEYsTUFBTSxPQUFPLHVCQUF1QjtJQXVCbEM7UUFqQk8sY0FBUyxHQUFpQixRQUFRLENBQUM7UUFNbkMsYUFBUSxHQUFHLGNBQWMsQ0FBQztRQUcxQixpQkFBWSxHQUFHLHVCQUF1QixDQUFDO1FBTXZDLFVBQUssR0FBaUIsU0FBUyxDQUFDO0lBRXZCLENBQUM7SUFFakIsUUFBUTtJQUNSLENBQUM7O29IQTFCVSx1QkFBdUI7d0dBQXZCLHVCQUF1QixrTkNUcEMsbXFDQXlCQTsyRkRoQmEsdUJBQXVCO2tCQU5uQyxTQUFTOytCQUNFLGtCQUFrQixtQkFHWCx1QkFBdUIsQ0FBQyxNQUFNOzBFQUt4QyxJQUFJO3NCQURWLEtBQUs7Z0JBSUMsU0FBUztzQkFEZixLQUFLO2dCQUlDLEtBQUs7c0JBRFgsS0FBSztnQkFJQyxRQUFRO3NCQURkLEtBQUs7Z0JBSUMsWUFBWTtzQkFEbEIsS0FBSztnQkFJQyxPQUFPO3NCQURiLEtBQUs7Z0JBSUMsS0FBSztzQkFEWCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIE9uSW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VGhlbWVQYWxldHRlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZWxkZXItYXBwLWhlYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9lbGRlci1hcHAtaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZWxkZXItYXBwLWhlYWRlci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBFbGRlckFwcEhlYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGljb246IHN0cmluZztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgaWNvbkNvbG9yOiBUaGVtZVBhbGV0dGUgPSAnYWNjZW50JztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgdGl0bGU6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc3ViVGl0bGUgPSAnYnkgRWxkZXJCeXRlJztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc3ViVGl0bGVMaW5rID0gJ2h0dHBzOi8vZWxkZXJieXRlLmNvbSc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHZlcnNpb246IHN0cmluZztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgY29sb3I6IFRoZW1lUGFsZXR0ZSA9ICdwcmltYXJ5JztcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICB9XG5cbn1cbiIsIjxtYXQtcGFuZWwgZnhMYXlvdXQ9XCJjb2x1bW5cIiBbY29sb3JdPVwiY29sb3JcIiBjbGFzcz1cImxpZ2h0XCIgZnhGaWxsPlxuICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgc3R5bGU9XCJwYWRkaW5nOiAyMHB4XCIgZnhGbGV4PVwibm9uZVwiPlxuICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiPlxuICAgICAgPG1hdC1pY29uIGNsYXNzPVwibm9zZWxlY3QgdGl0bGUtaWNvblwiIFtjb2xvcl09XCJpY29uQ29sb3JcIj57e2ljb259fTwvbWF0LWljb24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgc3RhcnRcIj5cbiAgICAgIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiIHN0eWxlPVwid2lkdGg6IDEwMCVcIj5cbiAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBlbmRcIiBmeExheW91dEdhcD1cIjVweFwiPlxuICAgICAgICAgIDxzcGFuIGlkPVwidGl0bGVcIiBjbGFzcz1cIm5vc2VsZWN0XCIgc3R5bGU9XCJmb250LXNpemU6IDI4cHhcIj57e3RpdGxlfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXQtY2FwdGlvbiBub3NlbGVjdFwiPjxzbWFsbD57e3ZlcnNpb259fTwvc21hbGw+PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXQtY2FwdGlvbiBub3NlbGVjdFwiPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXN1YlRpdGxlTGlua1wiPnt7c3ViVGl0bGV9fTwvc3Bhbj5cbiAgICAgICAgICA8YSAqbmdJZj1cInN1YlRpdGxlTGlua1wiIFtocmVmXT1cInN1YlRpdGxlTGlua1wiIHRhcmdldD1cIl9ibGFua1wiIHN0eWxlPVwidGV4dC1kZWNvcmF0aW9uOm5vbmU7IGNvbG9yOiBpbmhlcml0XCI+e3tzdWJUaXRsZX19PC9hPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBQcm9qZWN0IGNoaWxkIGNvbnRlbnQgaGVyZSAtLT5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG48L21hdC1wYW5lbD5cbiJdfQ==
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItYXBwLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL3NoZWxsL2hlYWRlci9lbGRlci1hcHAtaGVhZGVyL2VsZGVyLWFwcC1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9zaGVsbC9oZWFkZXIvZWxkZXItYXBwLWhlYWRlci9lbGRlci1hcHAtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQVUsdUJBQXVCLEVBQUUsS0FBSyxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBRzNGLE9BQU8sRUFBQyxZQUFZLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGVBQWUsRUFBRSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUFROUMsTUFBTSxPQUFPLHVCQUF1QjtJQTRCbEM7Ozs7Z0ZBSTRFO0lBRTVFLFlBQ21CLFlBQStCO1FBQS9CLGlCQUFZLEdBQVosWUFBWSxDQUFtQjtRQXBCM0MsYUFBUSxHQUFHLGNBQWMsQ0FBQztRQUcxQixpQkFBWSxHQUFHLHVCQUF1QixDQUFDO1FBSzlCLFdBQU0sR0FBRyxJQUFJLGVBQWUsQ0FBZSxTQUFTLENBQUMsQ0FBQztRQUN0RCxlQUFVLEdBQUcsSUFBSSxlQUFlLENBQWUsUUFBUSxDQUFDLENBQUM7UUFFeEQsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFVdEMsQ0FBQztJQUVMOzs7O2dGQUk0RTtJQUVyRSxRQUFRO1FBQ2IsSUFBSSxDQUFDLFlBQVk7YUFDZCxZQUFZO2FBQ1osSUFBSSxDQUNILFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQ3hCLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyx1QkFBdUI7U0FDMUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRTVFLElBQ1csS0FBSyxDQUFDLENBQWU7UUFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQ1csU0FBUyxDQUFDLENBQWU7UUFDbEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUIsQ0FBQzs7b0hBM0VVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLGtOQ1pwQyxxckNBeUJBOzJGRGJhLHVCQUF1QjtrQkFObkMsU0FBUzsrQkFDRSxrQkFBa0IsbUJBR1gsdUJBQXVCLENBQUMsTUFBTTt3R0FXeEMsSUFBSTtzQkFEVixLQUFLO2dCQUlDLEtBQUs7c0JBRFgsS0FBSztnQkFJQyxRQUFRO3NCQURkLEtBQUs7Z0JBSUMsWUFBWTtzQkFEbEIsS0FBSztnQkFJQyxPQUFPO3NCQURiLEtBQUs7Z0JBZ0RLLEtBQUs7c0JBRGYsS0FBSztnQkFNSyxTQUFTO3NCQURuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIE9uSW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIElucHV0LCBPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtUaGVtZVBhbGV0dGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHtFbGRlclRoZW1lU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vdGhlbWUvZWxkZXItdGhlbWUuc2VydmljZSc7XG5pbXBvcnQge2RlYm91bmNlVGltZSwgdGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VsZGVyLWFwcC1oZWFkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZWxkZXItYXBwLWhlYWRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VsZGVyLWFwcC1oZWFkZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRWxkZXJBcHBIZWFkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgQElucHV0KClcbiAgcHVibGljIGljb246IHN0cmluZztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgdGl0bGU6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc3ViVGl0bGUgPSAnYnkgRWxkZXJCeXRlJztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc3ViVGl0bGVMaW5rID0gJ2h0dHBzOi8vZWxkZXJieXRlLmNvbSc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHZlcnNpb246IHN0cmluZztcblxuICBwdWJsaWMgcmVhZG9ubHkgY29sb3IkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUaGVtZVBhbGV0dGU+KCdwcmltYXJ5Jyk7XG4gIHB1YmxpYyByZWFkb25seSBpY29uQ29sb3IkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUaGVtZVBhbGV0dGU+KCdhY2NlbnQnKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRoZW1lU2VydmljZTogRWxkZXJUaGVtZVNlcnZpY2VcbiAgKSB7IH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogTGlmZSBDeWNsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy50aGVtZVNlcnZpY2VcbiAgICAgIC5hY3RpdmVUaGVtZSRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgIGRlYm91bmNlVGltZSgyMDApIC8vIEZpeCBmb3IgTkcwMTAwIGVycm9yXG4gICAgICApLnN1YnNjcmliZSh0aGVtZSA9PiB7XG4gICAgICB0aGlzLmNvbG9yID0gdGhlbWUuaGVyb0JhY2tncm91bmQ7XG4gICAgICB0aGlzLmljb25Db2xvciA9IHRoZW1lLmhlcm9JY29uQ29sb3I7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBjb2xvcihjOiBUaGVtZVBhbGV0dGUpe1xuICAgIHRoaXMuY29sb3IkLm5leHQoYyk7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGljb25Db2xvcihjOiBUaGVtZVBhbGV0dGUpe1xuICAgIHRoaXMuaWNvbkNvbG9yJC5uZXh0KGMpO1xuICB9XG59XG4iLCI8bWF0LXBhbmVsIGZ4TGF5b3V0PVwiY29sdW1uXCIgW2NvbG9yXT1cImNvbG9yJCB8IGFzeW5jXCIgY2xhc3M9XCJsaWdodFwiIGZ4RmlsbD5cbiAgPGRpdiBmeExheW91dD1cInJvd1wiIHN0eWxlPVwicGFkZGluZzogMjBweFwiIGZ4RmxleD1cIm5vbmVcIj5cbiAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIj5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm5vc2VsZWN0IHRpdGxlLWljb25cIiBbY29sb3JdPVwiaWNvbkNvbG9yJCB8IGFzeW5jXCI+e3tpY29ufX08L21hdC1pY29uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEFsaWduPVwiY2VudGVyIHN0YXJ0XCI+XG4gICAgICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIiBzdHlsZT1cIndpZHRoOiAxMDAlXCI+XG4gICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgZW5kXCIgZnhMYXlvdXRHYXA9XCI1cHhcIj5cbiAgICAgICAgICA8c3BhbiBpZD1cInRpdGxlXCIgY2xhc3M9XCJub3NlbGVjdFwiIHN0eWxlPVwiZm9udC1zaXplOiAyOHB4XCI+e3t0aXRsZX19PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0LWNhcHRpb24gbm9zZWxlY3RcIj48c21hbGw+e3t2ZXJzaW9ufX08L3NtYWxsPjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWF0LWNhcHRpb24gbm9zZWxlY3RcIj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFzdWJUaXRsZUxpbmtcIj57e3N1YlRpdGxlfX08L3NwYW4+XG4gICAgICAgICAgPGEgKm5nSWY9XCJzdWJUaXRsZUxpbmtcIiBbaHJlZl09XCJzdWJUaXRsZUxpbmtcIiB0YXJnZXQ9XCJfYmxhbmtcIiBzdHlsZT1cInRleHQtZGVjb3JhdGlvbjpub25lOyBjb2xvcjogaW5oZXJpdFwiPnt7c3ViVGl0bGV9fTwvYT5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gUHJvamVjdCBjaGlsZCBjb250ZW50IGhlcmUgLS0+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cblxuPC9tYXQtcGFuZWw+XG4iXX0=
@@ -1,26 +1,29 @@
1
1
  import { ChangeDetectionStrategy, Component, ContentChild, Directive, Input, TemplateRef, ViewChild } from '@angular/core';
2
2
  import { LoggerFactory } from '@elderbyte/ts-logger';
3
- import { tap } from 'rxjs/operators';
3
+ import { BehaviorSubject, Subject } from 'rxjs';
4
+ import { takeUntil, tap } from 'rxjs/operators';
4
5
  import * as i0 from "@angular/core";
5
6
  import * as i1 from "../elder-shell.service";
6
7
  import * as i2 from "../drawers/elder-route-outlet-drawer.service";
7
- import * as i3 from "@angular/common";
8
- import * as i4 from "@angular/router";
9
- import * as i5 from "@angular/material/sidenav";
10
- import * as i6 from "@angular/material/toolbar";
11
- import * as i7 from "@angular/material/icon";
12
- import * as i8 from "@angular/material/button";
13
- import * as i9 from "../../navigation/toolbar/toolbar/elder-toolbar.component";
14
- import * as i10 from "@angular/flex-layout/flex";
8
+ import * as i3 from "../../theme/elder-theme.service";
9
+ import * as i4 from "@angular/common";
10
+ import * as i5 from "@angular/router";
11
+ import * as i6 from "@angular/material/sidenav";
12
+ import * as i7 from "@angular/material/toolbar";
13
+ import * as i8 from "@angular/material/icon";
14
+ import * as i9 from "@angular/material/button";
15
+ import * as i10 from "../../navigation/toolbar/toolbar/elder-toolbar.component";
16
+ import * as i11 from "@angular/flex-layout/flex";
17
+ import * as i12 from "../../theme/elder-theme-applier.directive";
15
18
  export class ElderShellSideLeftDirective {
16
19
  constructor(templateRef, viewContainer) {
17
20
  this.templateRef = templateRef;
18
21
  this.viewContainer = viewContainer;
19
22
  }
20
23
  }
21
- ElderShellSideLeftDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: ElderShellSideLeftDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
22
- ElderShellSideLeftDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.1", type: ElderShellSideLeftDirective, selector: "[elderShellSideLeft], [ebsShellSideLeft]", ngImport: i0 });
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: ElderShellSideLeftDirective, decorators: [{
24
+ ElderShellSideLeftDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: ElderShellSideLeftDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
25
+ ElderShellSideLeftDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.2", type: ElderShellSideLeftDirective, selector: "[elderShellSideLeft], [ebsShellSideLeft]", ngImport: i0 });
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: ElderShellSideLeftDirective, decorators: [{
24
27
  type: Directive,
25
28
  args: [{ selector: '[elderShellSideLeft], [ebsShellSideLeft]' }]
26
29
  }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; } });
@@ -30,9 +33,9 @@ export class ElderShellSideRightDirective {
30
33
  this.viewContainer = viewContainer;
31
34
  }
32
35
  }
33
- ElderShellSideRightDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: ElderShellSideRightDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
34
- ElderShellSideRightDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.1", type: ElderShellSideRightDirective, selector: "[elderShellSideRight], [ebsShellSideRight]", ngImport: i0 });
35
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: ElderShellSideRightDirective, decorators: [{
36
+ ElderShellSideRightDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: ElderShellSideRightDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
37
+ ElderShellSideRightDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.2", type: ElderShellSideRightDirective, selector: "[elderShellSideRight], [ebsShellSideRight]", ngImport: i0 });
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: ElderShellSideRightDirective, decorators: [{
36
39
  type: Directive,
37
40
  args: [{ selector: '[elderShellSideRight], [ebsShellSideRight]' }]
38
41
  }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; } });
@@ -42,9 +45,9 @@ export class ElderShellCenterDirective {
42
45
  this.viewContainer = viewContainer;
43
46
  }
44
47
  }
45
- ElderShellCenterDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: ElderShellCenterDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
46
- ElderShellCenterDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.1", type: ElderShellCenterDirective, selector: "[elderShellCenter], [ebsShellCenter]", ngImport: i0 });
47
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: ElderShellCenterDirective, decorators: [{
48
+ ElderShellCenterDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: ElderShellCenterDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
49
+ ElderShellCenterDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.2", type: ElderShellCenterDirective, selector: "[elderShellCenter], [ebsShellCenter]", ngImport: i0 });
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: ElderShellCenterDirective, decorators: [{
48
51
  type: Directive,
49
52
  args: [{ selector: '[elderShellCenter], [ebsShellCenter]' }]
50
53
  }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; } });
@@ -54,10 +57,11 @@ export class ElderShellComponent {
54
57
  * Constructor *
55
58
  * *
56
59
  **************************************************************************/
57
- constructor(shellService, outletDrawerService, changeDetectorRef) {
60
+ constructor(shellService, outletDrawerService, changeDetectorRef, themeService) {
58
61
  this.shellService = shellService;
59
62
  this.outletDrawerService = outletDrawerService;
60
63
  this.changeDetectorRef = changeDetectorRef;
64
+ this.themeService = themeService;
61
65
  /***************************************************************************
62
66
  * *
63
67
  * Fields *
@@ -66,11 +70,12 @@ export class ElderShellComponent {
66
70
  this.logger = LoggerFactory.getLogger('ElderShellComponent');
67
71
  /** Controls if the SideNav toggle should be displayed. Default: true */
68
72
  this.sideNavToggleEnabled = true;
69
- this.color = 'primary';
70
- this.menuColor = 'accent';
71
73
  this.leftSideAutoFocus = false;
72
74
  this.rightSideAutoFocus = false;
73
75
  this.rightSideOutletName = 'side';
76
+ this.destroy$ = new Subject();
77
+ this.color = 'primary';
78
+ this.menuColor$ = new BehaviorSubject('accent');
74
79
  this.headerTemplate$ = shellService.activeSlotTemplate('header').pipe(tap(() => this.checkSoon()));
75
80
  this.centerTemplate$ = shellService.activeSlotTemplate('center').pipe(tap(() => this.checkSoon()));
76
81
  this.footerTemplate$ = shellService.activeSlotTemplate('footer').pipe(tap(() => this.checkSoon()));
@@ -82,10 +87,27 @@ export class ElderShellComponent {
82
87
  **************************************************************************/
83
88
  ngOnInit() {
84
89
  this.outletDrawerService.registerOutletDrawer(this.rightSideOutletName, this.rightSideDrawer);
85
- this._sub = this.outletDrawerService.drawerVisibilityChange.subscribe(drawer => this.changeDetectorRef.markForCheck());
90
+ this.outletDrawerService
91
+ .drawerVisibilityChange
92
+ .pipe(takeUntil(this.destroy$))
93
+ .subscribe(drawer => this.changeDetectorRef.markForCheck());
86
94
  this.leftSideContentOpen$ = this.shellService.navigationOpenChange;
95
+ this.themeService.activeTheme$.pipe(takeUntil(this.destroy$)).subscribe(theme => this.adjustColorsForTheme(theme));
87
96
  }
88
97
  ngOnDestroy() {
98
+ this.destroy$.next();
99
+ this.destroy$.complete();
100
+ }
101
+ /***************************************************************************
102
+ * *
103
+ * Properties *
104
+ * *
105
+ **************************************************************************/
106
+ set menuColor(c) {
107
+ this.menuColor$.next(c);
108
+ }
109
+ get menuColor() {
110
+ return this.menuColor$.getValue();
89
111
  }
90
112
  /***************************************************************************
91
113
  * *
@@ -117,6 +139,9 @@ export class ElderShellComponent {
117
139
  * Private methods *
118
140
  * *
119
141
  **************************************************************************/
142
+ adjustColorsForTheme(theme) {
143
+ this.menuColor = theme?.dark ? 'primary' : 'accent';
144
+ }
120
145
  isContained(child, id) {
121
146
  if (child.id === id) {
122
147
  return true;
@@ -141,16 +166,12 @@ export class ElderShellComponent {
141
166
  }, 5);
142
167
  }
143
168
  }
144
- ElderShellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: ElderShellComponent, deps: [{ token: i1.ElderShellService }, { token: i2.ElderRouteOutletDrawerService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
145
- ElderShellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.1", type: ElderShellComponent, selector: "elder-shell, ebs-shell", inputs: { sideNavToggleEnabled: "sideNavToggleEnabled", color: "color", menuColor: "menuColor", leftSideAutoFocus: "leftSideAutoFocus", rightSideAutoFocus: "rightSideAutoFocus" }, queries: [{ propertyName: "sideContentLeft", first: true, predicate: ElderShellSideLeftDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "sideContentRight", first: true, predicate: ElderShellSideRightDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "centerContent", first: true, predicate: ElderShellCenterDirective, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "rightSideDrawer", first: true, predicate: ["rightSideDetail"], descendants: true, static: true }], ngImport: i0, template: "\n<mat-sidenav-container style=\"height:100%; width: 100%\" (backdropClick)=\"onBackdropClick($event)\">\n\n <!-- Left Side Nav -->\n <mat-sidenav position=\"start\"\n mode=\"over\"\n [fixedInViewport]=\"true\"\n [autoFocus]=\"leftSideAutoFocus\"\n [opened]=\"leftSideContentOpen$ | async\"\n (closed)=\"closeLeftSideContent()\">\n <div fxFill fxLayout=\"column\">\n <ng-container *ngTemplateOutlet=\"sideContentLeft || fallbackSideContentLeft;\"></ng-container>\n </div>\n </mat-sidenav>\n\n <!-- Main Content -->\n <mat-sidenav-content>\n <div fxLayout=\"column\" fxFill>\n <ng-container *ngTemplateOutlet=\"centerContent || fallbackCenterContent;\"></ng-container>\n </div>\n </mat-sidenav-content>\n\n <!-- Right Side Detail -->\n <mat-sidenav mode=\"over\" #rightSideDetail id=\"elder-right-side-detail\"\n position=\"end\"\n [fixedInViewport]=\"true\"\n [autoFocus]=\"rightSideAutoFocus\"\n [disableClose]=\"true\" (keydown.escape)=\"onEscapeRightSide($event)\">\n <div fxFill fxLayout=\"column\">\n <ng-container *ngTemplateOutlet=\"sideContentRight || fallbackSideContentRight;\"></ng-container>\n </div>\n </mat-sidenav>\n\n</mat-sidenav-container>\n\n<ng-template #fallbackSideContentLeft>\n <div fxLayout=\"column\" fxFlex>\n <p class=\"noselect\">No Left Side Content Defined!</p>\n </div>\n</ng-template>\n\n<ng-template #fallbackSideContentRight>\n <router-outlet name=\"side\" class=\"router-flex\"></router-outlet>\n</ng-template>\n\n<ng-template #fallbackCenterContent>\n <div fxLayout=\"column\" fxFill>\n\n <!-- Header -->\n <ng-container *ngTemplateOutlet=\"(headerTemplate$ | async) || defaultHeaderTemplate\"></ng-container>\n\n <!-- Center -->\n <ng-container *ngTemplateOutlet=\"(centerTemplate$ | async) || defaultCenterTemplate\"></ng-container>\n\n <!-- Footer -->\n <ng-container *ngTemplateOutlet=\"(footerTemplate$ | async) || defaultFooterTemplate\"></ng-container>\n\n </div>\n</ng-template>\n\n\n<ng-template #defaultHeaderTemplate>\n\n <elder-toolbar [color]=\"color\">\n\n <!-- Toolbar Prefix: Sidenav Toggle -->\n <mat-toolbar *ngIf=\"sideNavToggleEnabled\" fxFlex=\"0\"\n fxLayout=\"row\" fxLayoutAlign=\"center center\"\n [color]=\"menuColor\">\n <button mat-icon-button type=\"button\" (click)=\"toggleSideNav()\">\n <mat-icon>menu</mat-icon>\n </button>\n </mat-toolbar>\n </elder-toolbar>\n\n</ng-template>\n\n<ng-template #defaultCenterTemplate>\n\n <!-- Primary Router Outlet -->\n <router-outlet class=\"router-flex\"></router-outlet>\n\n</ng-template>\n\n<ng-template #defaultFooterTemplate>\n <!-- Default Footer is empty -->\n</ng-template>\n", styles: ["mat-sidenav{margin:0;height:100%;overflow:hidden}mat-sidenav-container{margin:0;width:100%;height:100%;overflow:hidden}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: i5.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i5.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i5.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "component", type: i6.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i9.ElderToolbarComponent, selector: "elder-toolbar, ebs-toolbar", inputs: ["color"] }, { kind: "directive", type: i10.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i10.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i10.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i10.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
146
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: ElderShellComponent, decorators: [{
169
+ ElderShellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: ElderShellComponent, deps: [{ token: i1.ElderShellService }, { token: i2.ElderRouteOutletDrawerService }, { token: i0.ChangeDetectorRef }, { token: i3.ElderThemeService }], target: i0.ɵɵFactoryTarget.Component });
170
+ ElderShellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: ElderShellComponent, selector: "elder-shell, ebs-shell", inputs: { sideNavToggleEnabled: "sideNavToggleEnabled", leftSideAutoFocus: "leftSideAutoFocus", rightSideAutoFocus: "rightSideAutoFocus", color: "color", menuColor: "menuColor" }, queries: [{ propertyName: "sideContentLeft", first: true, predicate: ElderShellSideLeftDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "sideContentRight", first: true, predicate: ElderShellSideRightDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "centerContent", first: true, predicate: ElderShellCenterDirective, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "rightSideDrawer", first: true, predicate: ["rightSideDetail"], descendants: true, static: true }], ngImport: i0, template: "\n<mat-sidenav-container\n elderThemeApplier\n style=\"height:100%; width: 100%\"\n (backdropClick)=\"onBackdropClick($event)\"\n>\n\n <!-- Left Side Nav -->\n <mat-sidenav position=\"start\"\n mode=\"over\"\n [fixedInViewport]=\"true\"\n [autoFocus]=\"leftSideAutoFocus\"\n [opened]=\"leftSideContentOpen$ | async\"\n (closed)=\"closeLeftSideContent()\">\n <div fxFill fxLayout=\"column\">\n <ng-container *ngTemplateOutlet=\"sideContentLeft || fallbackSideContentLeft;\"></ng-container>\n </div>\n </mat-sidenav>\n\n <!-- Main Content -->\n <mat-sidenav-content>\n <div fxLayout=\"column\" fxFill>\n <ng-container *ngTemplateOutlet=\"centerContent || fallbackCenterContent;\"></ng-container>\n </div>\n </mat-sidenav-content>\n\n <!-- Right Side Detail -->\n <mat-sidenav mode=\"over\" #rightSideDetail id=\"elder-right-side-detail\"\n position=\"end\"\n [fixedInViewport]=\"true\"\n [autoFocus]=\"rightSideAutoFocus\"\n [disableClose]=\"true\" (keydown.escape)=\"onEscapeRightSide($event)\">\n <div fxFill fxLayout=\"column\">\n <ng-container *ngTemplateOutlet=\"sideContentRight || fallbackSideContentRight;\"></ng-container>\n </div>\n </mat-sidenav>\n\n</mat-sidenav-container>\n\n<ng-template #fallbackSideContentLeft>\n <div fxLayout=\"column\" fxFlex>\n <p class=\"noselect\">No Left Side Content Defined!</p>\n </div>\n</ng-template>\n\n<ng-template #fallbackSideContentRight>\n <router-outlet name=\"side\" class=\"router-flex\"></router-outlet>\n</ng-template>\n\n<ng-template #fallbackCenterContent>\n <div fxLayout=\"column\" fxFill>\n\n <!-- Header -->\n <ng-container *ngTemplateOutlet=\"(headerTemplate$ | async) || defaultHeaderTemplate\"></ng-container>\n\n <!-- Center -->\n <ng-container *ngTemplateOutlet=\"(centerTemplate$ | async) || defaultCenterTemplate\"></ng-container>\n\n <!-- Footer -->\n <ng-container *ngTemplateOutlet=\"(footerTemplate$ | async) || defaultFooterTemplate\"></ng-container>\n\n </div>\n</ng-template>\n\n\n<ng-template #defaultHeaderTemplate>\n\n <elder-toolbar [color]=\"color\">\n\n <!-- Toolbar Prefix: Sidenav Toggle -->\n <mat-toolbar *ngIf=\"sideNavToggleEnabled\" fxFlex=\"0\"\n fxLayout=\"row\" fxLayoutAlign=\"center center\"\n [color]=\"menuColor$ | async\">\n <button mat-icon-button type=\"button\" (click)=\"toggleSideNav()\">\n <mat-icon>menu</mat-icon>\n </button>\n </mat-toolbar>\n\n </elder-toolbar>\n\n</ng-template>\n\n<ng-template #defaultCenterTemplate>\n\n <!-- Primary Router Outlet -->\n <router-outlet class=\"router-flex\"></router-outlet>\n\n</ng-template>\n\n<ng-template #defaultFooterTemplate>\n <!-- Default Footer is empty -->\n</ng-template>\n", styles: ["mat-sidenav{margin:0;height:100%;overflow:hidden}mat-sidenav-container{margin:0;width:100%;height:100%;overflow:hidden}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i5.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: i6.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i6.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i6.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "component", type: i7.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i10.ElderToolbarComponent, selector: "elder-toolbar, ebs-toolbar", inputs: ["color"] }, { kind: "directive", type: i11.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i11.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i11.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i11.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i12.ElderThemeApplierDirective, selector: "[elderThemeApplier]" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
171
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: ElderShellComponent, decorators: [{
147
172
  type: Component,
148
- args: [{ selector: 'elder-shell, ebs-shell', changeDetection: ChangeDetectionStrategy.OnPush, template: "\n<mat-sidenav-container style=\"height:100%; width: 100%\" (backdropClick)=\"onBackdropClick($event)\">\n\n <!-- Left Side Nav -->\n <mat-sidenav position=\"start\"\n mode=\"over\"\n [fixedInViewport]=\"true\"\n [autoFocus]=\"leftSideAutoFocus\"\n [opened]=\"leftSideContentOpen$ | async\"\n (closed)=\"closeLeftSideContent()\">\n <div fxFill fxLayout=\"column\">\n <ng-container *ngTemplateOutlet=\"sideContentLeft || fallbackSideContentLeft;\"></ng-container>\n </div>\n </mat-sidenav>\n\n <!-- Main Content -->\n <mat-sidenav-content>\n <div fxLayout=\"column\" fxFill>\n <ng-container *ngTemplateOutlet=\"centerContent || fallbackCenterContent;\"></ng-container>\n </div>\n </mat-sidenav-content>\n\n <!-- Right Side Detail -->\n <mat-sidenav mode=\"over\" #rightSideDetail id=\"elder-right-side-detail\"\n position=\"end\"\n [fixedInViewport]=\"true\"\n [autoFocus]=\"rightSideAutoFocus\"\n [disableClose]=\"true\" (keydown.escape)=\"onEscapeRightSide($event)\">\n <div fxFill fxLayout=\"column\">\n <ng-container *ngTemplateOutlet=\"sideContentRight || fallbackSideContentRight;\"></ng-container>\n </div>\n </mat-sidenav>\n\n</mat-sidenav-container>\n\n<ng-template #fallbackSideContentLeft>\n <div fxLayout=\"column\" fxFlex>\n <p class=\"noselect\">No Left Side Content Defined!</p>\n </div>\n</ng-template>\n\n<ng-template #fallbackSideContentRight>\n <router-outlet name=\"side\" class=\"router-flex\"></router-outlet>\n</ng-template>\n\n<ng-template #fallbackCenterContent>\n <div fxLayout=\"column\" fxFill>\n\n <!-- Header -->\n <ng-container *ngTemplateOutlet=\"(headerTemplate$ | async) || defaultHeaderTemplate\"></ng-container>\n\n <!-- Center -->\n <ng-container *ngTemplateOutlet=\"(centerTemplate$ | async) || defaultCenterTemplate\"></ng-container>\n\n <!-- Footer -->\n <ng-container *ngTemplateOutlet=\"(footerTemplate$ | async) || defaultFooterTemplate\"></ng-container>\n\n </div>\n</ng-template>\n\n\n<ng-template #defaultHeaderTemplate>\n\n <elder-toolbar [color]=\"color\">\n\n <!-- Toolbar Prefix: Sidenav Toggle -->\n <mat-toolbar *ngIf=\"sideNavToggleEnabled\" fxFlex=\"0\"\n fxLayout=\"row\" fxLayoutAlign=\"center center\"\n [color]=\"menuColor\">\n <button mat-icon-button type=\"button\" (click)=\"toggleSideNav()\">\n <mat-icon>menu</mat-icon>\n </button>\n </mat-toolbar>\n </elder-toolbar>\n\n</ng-template>\n\n<ng-template #defaultCenterTemplate>\n\n <!-- Primary Router Outlet -->\n <router-outlet class=\"router-flex\"></router-outlet>\n\n</ng-template>\n\n<ng-template #defaultFooterTemplate>\n <!-- Default Footer is empty -->\n</ng-template>\n", styles: ["mat-sidenav{margin:0;height:100%;overflow:hidden}mat-sidenav-container{margin:0;width:100%;height:100%;overflow:hidden}\n"] }]
149
- }], ctorParameters: function () { return [{ type: i1.ElderShellService }, { type: i2.ElderRouteOutletDrawerService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { sideNavToggleEnabled: [{
150
- type: Input
151
- }], color: [{
152
- type: Input
153
- }], menuColor: [{
173
+ args: [{ selector: 'elder-shell, ebs-shell', changeDetection: ChangeDetectionStrategy.OnPush, template: "\n<mat-sidenav-container\n elderThemeApplier\n style=\"height:100%; width: 100%\"\n (backdropClick)=\"onBackdropClick($event)\"\n>\n\n <!-- Left Side Nav -->\n <mat-sidenav position=\"start\"\n mode=\"over\"\n [fixedInViewport]=\"true\"\n [autoFocus]=\"leftSideAutoFocus\"\n [opened]=\"leftSideContentOpen$ | async\"\n (closed)=\"closeLeftSideContent()\">\n <div fxFill fxLayout=\"column\">\n <ng-container *ngTemplateOutlet=\"sideContentLeft || fallbackSideContentLeft;\"></ng-container>\n </div>\n </mat-sidenav>\n\n <!-- Main Content -->\n <mat-sidenav-content>\n <div fxLayout=\"column\" fxFill>\n <ng-container *ngTemplateOutlet=\"centerContent || fallbackCenterContent;\"></ng-container>\n </div>\n </mat-sidenav-content>\n\n <!-- Right Side Detail -->\n <mat-sidenav mode=\"over\" #rightSideDetail id=\"elder-right-side-detail\"\n position=\"end\"\n [fixedInViewport]=\"true\"\n [autoFocus]=\"rightSideAutoFocus\"\n [disableClose]=\"true\" (keydown.escape)=\"onEscapeRightSide($event)\">\n <div fxFill fxLayout=\"column\">\n <ng-container *ngTemplateOutlet=\"sideContentRight || fallbackSideContentRight;\"></ng-container>\n </div>\n </mat-sidenav>\n\n</mat-sidenav-container>\n\n<ng-template #fallbackSideContentLeft>\n <div fxLayout=\"column\" fxFlex>\n <p class=\"noselect\">No Left Side Content Defined!</p>\n </div>\n</ng-template>\n\n<ng-template #fallbackSideContentRight>\n <router-outlet name=\"side\" class=\"router-flex\"></router-outlet>\n</ng-template>\n\n<ng-template #fallbackCenterContent>\n <div fxLayout=\"column\" fxFill>\n\n <!-- Header -->\n <ng-container *ngTemplateOutlet=\"(headerTemplate$ | async) || defaultHeaderTemplate\"></ng-container>\n\n <!-- Center -->\n <ng-container *ngTemplateOutlet=\"(centerTemplate$ | async) || defaultCenterTemplate\"></ng-container>\n\n <!-- Footer -->\n <ng-container *ngTemplateOutlet=\"(footerTemplate$ | async) || defaultFooterTemplate\"></ng-container>\n\n </div>\n</ng-template>\n\n\n<ng-template #defaultHeaderTemplate>\n\n <elder-toolbar [color]=\"color\">\n\n <!-- Toolbar Prefix: Sidenav Toggle -->\n <mat-toolbar *ngIf=\"sideNavToggleEnabled\" fxFlex=\"0\"\n fxLayout=\"row\" fxLayoutAlign=\"center center\"\n [color]=\"menuColor$ | async\">\n <button mat-icon-button type=\"button\" (click)=\"toggleSideNav()\">\n <mat-icon>menu</mat-icon>\n </button>\n </mat-toolbar>\n\n </elder-toolbar>\n\n</ng-template>\n\n<ng-template #defaultCenterTemplate>\n\n <!-- Primary Router Outlet -->\n <router-outlet class=\"router-flex\"></router-outlet>\n\n</ng-template>\n\n<ng-template #defaultFooterTemplate>\n <!-- Default Footer is empty -->\n</ng-template>\n", styles: ["mat-sidenav{margin:0;height:100%;overflow:hidden}mat-sidenav-container{margin:0;width:100%;height:100%;overflow:hidden}\n"] }]
174
+ }], ctorParameters: function () { return [{ type: i1.ElderShellService }, { type: i2.ElderRouteOutletDrawerService }, { type: i0.ChangeDetectorRef }, { type: i3.ElderThemeService }]; }, propDecorators: { sideNavToggleEnabled: [{
154
175
  type: Input
155
176
  }], leftSideAutoFocus: [{
156
177
  type: Input
@@ -168,5 +189,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImpor
168
189
  }], rightSideDrawer: [{
169
190
  type: ViewChild,
170
191
  args: ['rightSideDetail', { static: true }]
192
+ }], color: [{
193
+ type: Input
194
+ }], menuColor: [{
195
+ type: Input
171
196
  }] } });
172
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItc2hlbGwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9zaGVsbC9zaGVsbC9lbGRlci1zaGVsbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL3NoZWxsL3NoZWxsL2VsZGVyLXNoZWxsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixTQUFTLEVBQ1QsS0FBSyxFQUdMLFdBQVcsRUFDWCxTQUFTLEVBRVYsTUFBTSxlQUFlLENBQUM7QUFJdkIsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRW5ELE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7O0FBS25DLE1BQU0sT0FBTywyQkFBMkI7SUFDdEMsWUFDUyxXQUE2QixFQUM3QixhQUErQjtRQUQvQixnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7UUFDN0Isa0JBQWEsR0FBYixhQUFhLENBQWtCO0lBQUksQ0FBQzs7d0hBSGxDLDJCQUEyQjs0R0FBM0IsMkJBQTJCOzJGQUEzQiwyQkFBMkI7a0JBRHZDLFNBQVM7bUJBQUMsRUFBQyxRQUFRLEVBQUUsMENBQTBDLEVBQUM7O0FBUWpFLE1BQU0sT0FBTyw0QkFBNEI7SUFDdkMsWUFDUyxXQUE2QixFQUM3QixhQUErQjtRQUQvQixnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7UUFDN0Isa0JBQWEsR0FBYixhQUFhLENBQWtCO0lBQUksQ0FBQzs7eUhBSGxDLDRCQUE0Qjs2R0FBNUIsNEJBQTRCOzJGQUE1Qiw0QkFBNEI7a0JBRHhD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QixLQUFLO2dCQUlDLEtBQUs7c0JBRFgsS0FBSztnQkFJQyxTQUFTO3NCQURmLEtBQUs7Z0JBSUMsaUJBQWlCO3NCQUR2QixLQUFLO2dCQUlDLGtCQUFrQjtzQkFEeEIsS0FBSztnQkFJQyxlQUFlO3NCQURyQixZQUFZO3VCQUFDLDJCQUEyQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUl2RSxnQkFBZ0I7c0JBRHRCLFlBQVk7dUJBQUMsNEJBQTRCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSXhFLGFBQWE7c0JBRG5CLFlBQVk7dUJBQUMseUJBQXlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSXJFLGVBQWU7c0JBRHJCLFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRGlyZWN0aXZlLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0VsZGVyU2hlbGxTZXJ2aWNlfSBmcm9tICcuLi9lbGRlci1zaGVsbC5zZXJ2aWNlJztcbmltcG9ydCB7IE1hdFNpZGVuYXYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2JztcbmltcG9ydCB7RWxkZXJSb3V0ZU91dGxldERyYXdlclNlcnZpY2V9IGZyb20gJy4uL2RyYXdlcnMvZWxkZXItcm91dGUtb3V0bGV0LWRyYXdlci5zZXJ2aWNlJztcbmltcG9ydCB7TG9nZ2VyRmFjdG9yeX0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHt0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7VGhlbWVQYWxldHRlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcblxuXG5ARGlyZWN0aXZlKHtzZWxlY3RvcjogJ1tlbGRlclNoZWxsU2lkZUxlZnRdLCBbZWJzU2hlbGxTaWRlTGVmdF0nfSlcbmV4cG9ydCBjbGFzcyBFbGRlclNoZWxsU2lkZUxlZnREaXJlY3RpdmUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4sXG4gICAgcHVibGljIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYpIHsgfVxufVxuXG5ARGlyZWN0aXZlKHtzZWxlY3RvcjogJ1tlbGRlclNoZWxsU2lkZVJpZ2h0XSwgW2Vic1NoZWxsU2lkZVJpZ2h0XSd9KVxuZXhwb3J0IGNsYXNzIEVsZGVyU2hlbGxTaWRlUmlnaHREaXJlY3RpdmUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4sXG4gICAgcHVibGljIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYpIHsgfVxufVxuXG5ARGlyZWN0aXZlKHtzZWxlY3RvcjogJ1tlbGRlclNoZWxsQ2VudGVyXSwgW2Vic1NoZWxsQ2VudGVyXSd9KVxuZXhwb3J0IGNsYXNzIEVsZGVyU2hlbGxDZW50ZXJEaXJlY3RpdmUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4sXG4gICAgcHVibGljIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYpIHsgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlbGRlci1zaGVsbCwgZWJzLXNoZWxsJywgLy8gZWJzLSogcHJlZml4IGlzIGRlcHJlY2F0ZWQhXG4gIHRlbXBsYXRlVXJsOiAnLi9lbGRlci1zaGVsbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VsZGVyLXNoZWxsLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyU2hlbGxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignRWxkZXJTaGVsbENvbXBvbmVudCcpO1xuXG4gIC8qKiBDb250cm9scyBpZiB0aGUgU2lkZU5hdiB0b2dnbGUgc2hvdWxkIGJlIGRpc3BsYXllZC4gRGVmYXVsdDogdHJ1ZSAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2lkZU5hdlRvZ2dsZUVuYWJsZWQgPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjb2xvcjogVGhlbWVQYWxldHRlID0gJ3ByaW1hcnknO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtZW51Q29sb3I6IFRoZW1lUGFsZXR0ZSA9ICdhY2NlbnQnO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsZWZ0U2lkZUF1dG9Gb2N1cyA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByaWdodFNpZGVBdXRvRm9jdXMgPSBmYWxzZTtcblxuICBAQ29udGVudENoaWxkKEVsZGVyU2hlbGxTaWRlTGVmdERpcmVjdGl2ZSwgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlIH0pXG4gIHB1YmxpYyBzaWRlQ29udGVudExlZnQ6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQENvbnRlbnRDaGlsZChFbGRlclNoZWxsU2lkZVJpZ2h0RGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIHNpZGVDb250ZW50UmlnaHQ6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQENvbnRlbnRDaGlsZChFbGRlclNoZWxsQ2VudGVyRGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIGNlbnRlckNvbnRlbnQ6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQFZpZXdDaGlsZCgncmlnaHRTaWRlRGV0YWlsJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIHJpZ2h0U2lkZURyYXdlcjogTWF0U2lkZW5hdjtcblxuICBwdWJsaWMgcmlnaHRTaWRlT3V0bGV0TmFtZSA9ICdzaWRlJztcblxuICBwdWJsaWMgbGVmdFNpZGVDb250ZW50T3BlbiQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cblxuICBwdWJsaWMgcmVhZG9ubHkgaGVhZGVyVGVtcGxhdGUkOiBPYnNlcnZhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuICBwdWJsaWMgcmVhZG9ubHkgY2VudGVyVGVtcGxhdGUkOiBPYnNlcnZhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuICBwdWJsaWMgcmVhZG9ubHkgZm9vdGVyVGVtcGxhdGUkOiBPYnNlcnZhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gIHByaXZhdGUgX3N1YjogU3Vic2NyaXB0aW9uO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2hlbGxTZXJ2aWNlOiBFbGRlclNoZWxsU2VydmljZSxcbiAgICBwcml2YXRlIG91dGxldERyYXdlclNlcnZpY2U6IEVsZGVyUm91dGVPdXRsZXREcmF3ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHRoaXMuaGVhZGVyVGVtcGxhdGUkID0gc2hlbGxTZXJ2aWNlLmFjdGl2ZVNsb3RUZW1wbGF0ZSgnaGVhZGVyJykucGlwZShcbiAgICAgIHRhcCgoKSA9PiB0aGlzLmNoZWNrU29vbigpKVxuICAgICk7XG4gICAgdGhpcy5jZW50ZXJUZW1wbGF0ZSQgPSBzaGVsbFNlcnZpY2UuYWN0aXZlU2xvdFRlbXBsYXRlKCdjZW50ZXInKS5waXBlKFxuICAgICAgdGFwKCgpID0+IHRoaXMuY2hlY2tTb29uKCkpXG4gICAgKTtcbiAgICB0aGlzLmZvb3RlclRlbXBsYXRlJCA9IHNoZWxsU2VydmljZS5hY3RpdmVTbG90VGVtcGxhdGUoJ2Zvb3RlcicpLnBpcGUoXG4gICAgICB0YXAoKCkgPT4gdGhpcy5jaGVja1Nvb24oKSlcbiAgICApO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIExpZmUgQ3ljbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMub3V0bGV0RHJhd2VyU2VydmljZS5yZWdpc3Rlck91dGxldERyYXdlcihcbiAgICAgIHRoaXMucmlnaHRTaWRlT3V0bGV0TmFtZSxcbiAgICAgIHRoaXMucmlnaHRTaWRlRHJhd2VyXG4gICAgKTtcblxuICAgIHRoaXMuX3N1YiA9IHRoaXMub3V0bGV0RHJhd2VyU2VydmljZS5kcmF3ZXJWaXNpYmlsaXR5Q2hhbmdlLnN1YnNjcmliZShcbiAgICAgIGRyYXdlciA9PiAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKVxuICAgICk7XG5cbiAgICB0aGlzLmxlZnRTaWRlQ29udGVudE9wZW4kID0gIHRoaXMuc2hlbGxTZXJ2aWNlLm5hdmlnYXRpb25PcGVuQ2hhbmdlO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuXG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgY2xvc2VMZWZ0U2lkZUNvbnRlbnQoKSB7XG4gICAgdGhpcy5zaGVsbFNlcnZpY2UuY2xvc2VTaWRlTmF2KCk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlU2lkZU5hdigpOiB2b2lkIHtcbiAgICB0aGlzLnNoZWxsU2VydmljZS50b2dnbGVTaWRlbmF2KCk7XG4gIH1cblxuICBwdWJsaWMgb25CYWNrZHJvcENsaWNrKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zaGVsbFNlcnZpY2UuaXNTaWRlQ29udGVudEFjdGl2ZSgpKSB7XG4gICAgICB0aGlzLnNoZWxsU2VydmljZS5jbG9zZVNpZGVDb250ZW50KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uRXNjYXBlUmlnaHRTaWRlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBpZiAodGFyZ2V0ICYmIHRoaXMuaXNDb250YWluZWQodGFyZ2V0LCAnZWxkZXItcmlnaHQtc2lkZS1kZXRhaWwnKSkge1xuICAgICAgLy8gRW5zdXJlIHdlIG9ubHkgcmVhY3QgdG8gRXNjIEV2ZW50cyB0YXJnZXRlZCBhdCBvdXIgc2lkZSBuYXYhXG4gICAgICBpZiAodGhpcy5zaGVsbFNlcnZpY2UuaXNTaWRlQ29udGVudEFjdGl2ZSgpKSB7XG4gICAgICAgIHRoaXMuc2hlbGxTZXJ2aWNlLmNsb3NlU2lkZUNvbnRlbnQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBtZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIGlzQ29udGFpbmVkKGNoaWxkOiBIVE1MRWxlbWVudCwgaWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuXG4gICAgaWYgKGNoaWxkLmlkID09PSBpZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IG1heERlcHRoID0gMTtcbiAgICBsZXQgZGVwdGggPSAwO1xuICAgIGxldCBub2RlID0gY2hpbGQucGFyZW50Tm9kZSBhcyBIVE1MRWxlbWVudDtcbiAgICB3aGlsZSAobm9kZSkge1xuICAgICAgaWYgKG5vZGUuaWQgPT09IGlkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZSBhcyBIVE1MRWxlbWVudDtcbiAgICAgIGlmIChtYXhEZXB0aCA+PSArK2RlcHRoKSB7IGJyZWFrOyB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tTb29uKCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9LCA1KTtcbiAgfVxufVxuIiwiXG48bWF0LXNpZGVuYXYtY29udGFpbmVyIHN0eWxlPVwiaGVpZ2h0OjEwMCU7IHdpZHRoOiAxMDAlXCIgKGJhY2tkcm9wQ2xpY2spPVwib25CYWNrZHJvcENsaWNrKCRldmVudClcIj5cblxuICA8IS0tIExlZnQgU2lkZSBOYXYgLS0+XG4gIDxtYXQtc2lkZW5hdiBwb3NpdGlvbj1cInN0YXJ0XCJcbiAgICAgICAgICAgICAgIG1vZGU9XCJvdmVyXCJcbiAgICAgICAgICAgICAgIFtmaXhlZEluVmlld3BvcnRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICBbYXV0b0ZvY3VzXT1cImxlZnRTaWRlQXV0b0ZvY3VzXCJcbiAgICAgICAgICAgICAgIFtvcGVuZWRdPVwibGVmdFNpZGVDb250ZW50T3BlbiQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAoY2xvc2VkKT1cImNsb3NlTGVmdFNpZGVDb250ZW50KClcIj5cbiAgICA8ZGl2IGZ4RmlsbCBmeExheW91dD1cImNvbHVtblwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpZGVDb250ZW50TGVmdCB8fCBmYWxsYmFja1NpZGVDb250ZW50TGVmdDtcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtc2lkZW5hdj5cblxuICA8IS0tIE1haW4gQ29udGVudCAtLT5cbiAgPG1hdC1zaWRlbmF2LWNvbnRlbnQ+XG4gICAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4RmlsbD5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjZW50ZXJDb250ZW50IHx8IGZhbGxiYWNrQ2VudGVyQ29udGVudDtcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtc2lkZW5hdi1jb250ZW50PlxuXG4gIDwhLS0gUmlnaHQgU2lkZSBEZXRhaWwgLS0+XG4gIDxtYXQtc2lkZW5hdiBtb2RlPVwib3ZlclwiICNyaWdodFNpZGVEZXRhaWwgaWQ9XCJlbGRlci1yaWdodC1zaWRlLWRldGFpbFwiXG4gICAgICAgICAgICAgICBwb3NpdGlvbj1cImVuZFwiXG4gICAgICAgICAgICAgICBbZml4ZWRJblZpZXdwb3J0XT1cInRydWVcIlxuICAgICAgICAgICAgICAgW2F1dG9Gb2N1c109XCJyaWdodFNpZGVBdXRvRm9jdXNcIlxuICAgICAgICAgICAgICAgW2Rpc2FibGVDbG9zZV09XCJ0cnVlXCIgKGtleWRvd24uZXNjYXBlKT1cIm9uRXNjYXBlUmlnaHRTaWRlKCRldmVudClcIj5cbiAgICA8ZGl2IGZ4RmlsbCBmeExheW91dD1cImNvbHVtblwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpZGVDb250ZW50UmlnaHQgfHwgZmFsbGJhY2tTaWRlQ29udGVudFJpZ2h0O1wiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L21hdC1zaWRlbmF2PlxuXG48L21hdC1zaWRlbmF2LWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNmYWxsYmFja1NpZGVDb250ZW50TGVmdD5cbiAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4RmxleD5cbiAgICA8cCBjbGFzcz1cIm5vc2VsZWN0XCI+Tm8gTGVmdCBTaWRlIENvbnRlbnQgRGVmaW5lZCE8L3A+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNmYWxsYmFja1NpZGVDb250ZW50UmlnaHQ+XG4gIDxyb3V0ZXItb3V0bGV0IG5hbWU9XCJzaWRlXCIgY2xhc3M9XCJyb3V0ZXItZmxleFwiPjwvcm91dGVyLW91dGxldD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZmFsbGJhY2tDZW50ZXJDb250ZW50PlxuICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhGaWxsPlxuXG4gICAgPCEtLSBIZWFkZXIgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIihoZWFkZXJUZW1wbGF0ZSQgfCBhc3luYykgfHwgZGVmYXVsdEhlYWRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIENlbnRlciAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiKGNlbnRlclRlbXBsYXRlJCB8IGFzeW5jKSB8fCBkZWZhdWx0Q2VudGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gRm9vdGVyIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCIoZm9vdGVyVGVtcGxhdGUkIHwgYXN5bmMpIHx8IGRlZmF1bHRGb290ZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuXG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHRIZWFkZXJUZW1wbGF0ZT5cblxuICA8ZWxkZXItdG9vbGJhciBbY29sb3JdPVwiY29sb3JcIj5cblxuICAgIDwhLS0gVG9vbGJhciBQcmVmaXg6IFNpZGVuYXYgVG9nZ2xlIC0tPlxuICAgIDxtYXQtdG9vbGJhciAqbmdJZj1cInNpZGVOYXZUb2dnbGVFbmFibGVkXCIgZnhGbGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgIGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIlxuICAgICAgICAgICAgICAgICBbY29sb3JdPVwibWVudUNvbG9yXCI+XG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInRvZ2dsZVNpZGVOYXYoKVwiPlxuICAgICAgICA8bWF0LWljb24+bWVudTwvbWF0LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L21hdC10b29sYmFyPlxuICA8L2VsZGVyLXRvb2xiYXI+XG5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdENlbnRlclRlbXBsYXRlPlxuXG4gIDwhLS0gUHJpbWFyeSBSb3V0ZXIgT3V0bGV0IC0tPlxuICA8cm91dGVyLW91dGxldCBjbGFzcz1cInJvdXRlci1mbGV4XCI+PC9yb3V0ZXItb3V0bGV0PlxuXG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHRGb290ZXJUZW1wbGF0ZT5cbiAgPCEtLSBEZWZhdWx0IEZvb3RlciBpcyBlbXB0eSAtLT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItc2hlbGwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9zaGVsbC9zaGVsbC9lbGRlci1zaGVsbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL3NoZWxsL3NoZWxsL2VsZGVyLXNoZWxsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFlBQVksRUFDWixTQUFTLEVBQ1QsS0FBSyxFQUdMLFdBQVcsRUFDWCxTQUFTLEVBRVYsTUFBTSxlQUFlLENBQUM7QUFJdkIsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxlQUFlLEVBQWMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzFELE9BQU8sRUFBQyxTQUFTLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBTzlDLE1BQU0sT0FBTywyQkFBMkI7SUFDdEMsWUFDUyxXQUE2QixFQUM3QixhQUErQjtRQUQvQixnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7UUFDN0Isa0JBQWEsR0FBYixhQUFhLENBQWtCO0lBQUksQ0FBQzs7d0hBSGxDLDJCQUEyQjs0R0FBM0IsMkJBQTJCOzJGQUEzQiwyQkFBMkI7a0JBRHZDLFNBQVM7bUJBQUMsRUFBQyxRQUFRLEVBQUUsMENBQTBDLEVBQUM7O0FBUWpFLE1BQU0sT0FBTyw0QkFBNEI7SUFDdkMsWUFDUyxXQUE2QixFQUM3QixhQUErQjtRQUQvQixnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7UUFDN0Isa0JBQWEsR0FBYixhQUFhLENB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LDRCQUE0QixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUl4RSxhQUFhO3NCQURuQixZQUFZO3VCQUFDLHlCQUF5QixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUlyRSxlQUFlO3NCQURyQixTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFldkMsS0FBSztzQkFEWCxLQUFLO2dCQWtFSyxTQUFTO3NCQURuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRGlyZWN0aXZlLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0VsZGVyU2hlbGxTZXJ2aWNlfSBmcm9tICcuLi9lbGRlci1zaGVsbC5zZXJ2aWNlJztcbmltcG9ydCB7TWF0U2lkZW5hdn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdic7XG5pbXBvcnQge0VsZGVyUm91dGVPdXRsZXREcmF3ZXJTZXJ2aWNlfSBmcm9tICcuLi9kcmF3ZXJzL2VsZGVyLXJvdXRlLW91dGxldC1kcmF3ZXIuc2VydmljZSc7XG5pbXBvcnQge0xvZ2dlckZhY3Rvcnl9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7dGFrZVVudGlsLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7VGhlbWVQYWxldHRlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7RWxkZXJUaGVtZVNlcnZpY2V9IGZyb20gJy4uLy4uL3RoZW1lL2VsZGVyLXRoZW1lLnNlcnZpY2UnO1xuaW1wb3J0IHtUaGVtZVNwZWN9IGZyb20gJy4uLy4uL3RoZW1lL3RoZW1lLXNwZWMnO1xuXG5cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnW2VsZGVyU2hlbGxTaWRlTGVmdF0sIFtlYnNTaGVsbFNpZGVMZWZ0XSd9KVxuZXhwb3J0IGNsYXNzIEVsZGVyU2hlbGxTaWRlTGVmdERpcmVjdGl2ZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PixcbiAgICBwdWJsaWMgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZikgeyB9XG59XG5cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnW2VsZGVyU2hlbGxTaWRlUmlnaHRdLCBbZWJzU2hlbGxTaWRlUmlnaHRdJ30pXG5leHBvcnQgY2xhc3MgRWxkZXJTaGVsbFNpZGVSaWdodERpcmVjdGl2ZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PixcbiAgICBwdWJsaWMgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZikgeyB9XG59XG5cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnW2VsZGVyU2hlbGxDZW50ZXJdLCBbZWJzU2hlbGxDZW50ZXJdJ30pXG5leHBvcnQgY2xhc3MgRWxkZXJTaGVsbENlbnRlckRpcmVjdGl2ZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PixcbiAgICBwdWJsaWMgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZikgeyB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VsZGVyLXNoZWxsLCBlYnMtc2hlbGwnLCAvLyBlYnMtKiBwcmVmaXggaXMgZGVwcmVjYXRlZCFcbiAgdGVtcGxhdGVVcmw6ICcuL2VsZGVyLXNoZWxsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZWxkZXItc2hlbGwuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRWxkZXJTaGVsbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdFbGRlclNoZWxsQ29tcG9uZW50Jyk7XG5cbiAgLyoqIENvbnRyb2xzIGlmIHRoZSBTaWRlTmF2IHRvZ2dsZSBzaG91bGQgYmUgZGlzcGxheWVkLiBEZWZhdWx0OiB0cnVlICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaWRlTmF2VG9nZ2xlRW5hYmxlZCA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGxlZnRTaWRlQXV0b0ZvY3VzID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHJpZ2h0U2lkZUF1dG9Gb2N1cyA9IGZhbHNlO1xuXG4gIEBDb250ZW50Q2hpbGQoRWxkZXJTaGVsbFNpZGVMZWZ0RGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIHNpZGVDb250ZW50TGVmdDogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAQ29udGVudENoaWxkKEVsZGVyU2hlbGxTaWRlUmlnaHREaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICBwdWJsaWMgc2lkZUNvbnRlbnRSaWdodDogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAQ29udGVudENoaWxkKEVsZGVyU2hlbGxDZW50ZXJEaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICBwdWJsaWMgY2VudGVyQ29udGVudDogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAVmlld0NoaWxkKCdyaWdodFNpZGVEZXRhaWwnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwdWJsaWMgcmlnaHRTaWRlRHJhd2VyOiBNYXRTaWRlbmF2O1xuXG4gIHB1YmxpYyByaWdodFNpZGVPdXRsZXROYW1lID0gJ3NpZGUnO1xuXG4gIHB1YmxpYyBsZWZ0U2lkZUNvbnRlbnRPcGVuJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuXG4gIHB1YmxpYyByZWFkb25seSBoZWFkZXJUZW1wbGF0ZSQ6IE9ic2VydmFibGU8VGVtcGxhdGVSZWY8YW55Pj47XG4gIHB1YmxpYyByZWFkb25seSBjZW50ZXJUZW1wbGF0ZSQ6IE9ic2VydmFibGU8VGVtcGxhdGVSZWY8YW55Pj47XG4gIHB1YmxpYyByZWFkb25seSBmb290ZXJUZW1wbGF0ZSQ6IE9ic2VydmFibGU8VGVtcGxhdGVSZWY8YW55Pj47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGNvbG9yOiBUaGVtZVBhbGV0dGUgPSAncHJpbWFyeSc7XG5cbiAgcHVibGljIHJlYWRvbmx5IG1lbnVDb2xvciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRoZW1lUGFsZXR0ZT4oJ2FjY2VudCcpO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2hlbGxTZXJ2aWNlOiBFbGRlclNoZWxsU2VydmljZSxcbiAgICBwcml2YXRlIG91dGxldERyYXdlclNlcnZpY2U6IEVsZGVyUm91dGVPdXRsZXREcmF3ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgdGhlbWVTZXJ2aWNlOiBFbGRlclRoZW1lU2VydmljZVxuICApIHtcbiAgICB0aGlzLmhlYWRlclRlbXBsYXRlJCA9IHNoZWxsU2VydmljZS5hY3RpdmVTbG90VGVtcGxhdGUoJ2hlYWRlcicpLnBpcGUoXG4gICAgICB0YXAoKCkgPT4gdGhpcy5jaGVja1Nvb24oKSlcbiAgICApO1xuICAgIHRoaXMuY2VudGVyVGVtcGxhdGUkID0gc2hlbGxTZXJ2aWNlLmFjdGl2ZVNsb3RUZW1wbGF0ZSgnY2VudGVyJykucGlwZShcbiAgICAgIHRhcCgoKSA9PiB0aGlzLmNoZWNrU29vbigpKVxuICAgICk7XG4gICAgdGhpcy5mb290ZXJUZW1wbGF0ZSQgPSBzaGVsbFNlcnZpY2UuYWN0aXZlU2xvdFRlbXBsYXRlKCdmb290ZXInKS5waXBlKFxuICAgICAgdGFwKCgpID0+IHRoaXMuY2hlY2tTb29uKCkpXG4gICAgKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBMaWZlIEN5Y2xlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm91dGxldERyYXdlclNlcnZpY2UucmVnaXN0ZXJPdXRsZXREcmF3ZXIoXG4gICAgICB0aGlzLnJpZ2h0U2lkZU91dGxldE5hbWUsXG4gICAgICB0aGlzLnJpZ2h0U2lkZURyYXdlclxuICAgICk7XG5cbiAgICB0aGlzLm91dGxldERyYXdlclNlcnZpY2VcbiAgICAgIC5kcmF3ZXJWaXNpYmlsaXR5Q2hhbmdlXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGRyYXdlciA9PiAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSk7XG5cbiAgICB0aGlzLmxlZnRTaWRlQ29udGVudE9wZW4kID0gIHRoaXMuc2hlbGxTZXJ2aWNlLm5hdmlnYXRpb25PcGVuQ2hhbmdlO1xuXG4gICAgdGhpcy50aGVtZVNlcnZpY2UuYWN0aXZlVGhlbWUkLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICApLnN1YnNjcmliZSh0aGVtZSA9PiB0aGlzLmFkanVzdENvbG9yc0ZvclRoZW1lKHRoZW1lKSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBtZW51Q29sb3IoYzogVGhlbWVQYWxldHRlKSB7XG4gICAgdGhpcy5tZW51Q29sb3IkLm5leHQoYyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1lbnVDb2xvcigpOiBUaGVtZVBhbGV0dGUge1xuICAgIHJldHVybiB0aGlzLm1lbnVDb2xvciQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBjbG9zZUxlZnRTaWRlQ29udGVudCgpIHtcbiAgICB0aGlzLnNoZWxsU2VydmljZS5jbG9zZVNpZGVOYXYoKTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVTaWRlTmF2KCk6IHZvaWQge1xuICAgIHRoaXMuc2hlbGxTZXJ2aWNlLnRvZ2dsZVNpZGVuYXYoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkJhY2tkcm9wQ2xpY2soZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNoZWxsU2VydmljZS5pc1NpZGVDb250ZW50QWN0aXZlKCkpIHtcbiAgICAgIHRoaXMuc2hlbGxTZXJ2aWNlLmNsb3NlU2lkZUNvbnRlbnQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25Fc2NhcGVSaWdodFNpZGUoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGlmICh0YXJnZXQgJiYgdGhpcy5pc0NvbnRhaW5lZCh0YXJnZXQsICdlbGRlci1yaWdodC1zaWRlLWRldGFpbCcpKSB7XG4gICAgICAvLyBFbnN1cmUgd2Ugb25seSByZWFjdCB0byBFc2MgRXZlbnRzIHRhcmdldGVkIGF0IG91ciBzaWRlIG5hdiFcbiAgICAgIGlmICh0aGlzLnNoZWxsU2VydmljZS5pc1NpZGVDb250ZW50QWN0aXZlKCkpIHtcbiAgICAgICAgdGhpcy5zaGVsbFNlcnZpY2UuY2xvc2VTaWRlQ29udGVudCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgYWRqdXN0Q29sb3JzRm9yVGhlbWUodGhlbWU6IFRoZW1lU3BlYyk6IHZvaWQge1xuICAgIHRoaXMubWVudUNvbG9yID0gdGhlbWU/LmRhcmsgPyAncHJpbWFyeScgOiAnYWNjZW50JztcbiAgfVxuXG4gIHByaXZhdGUgaXNDb250YWluZWQoY2hpbGQ6IEhUTUxFbGVtZW50LCBpZDogc3RyaW5nKTogYm9vbGVhbiB7XG5cbiAgICBpZiAoY2hpbGQuaWQgPT09IGlkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgbWF4RGVwdGggPSAxO1xuICAgIGxldCBkZXB0aCA9IDA7XG4gICAgbGV0IG5vZGUgPSBjaGlsZC5wYXJlbnROb2RlIGFzIEhUTUxFbGVtZW50O1xuICAgIHdoaWxlIChub2RlKSB7XG4gICAgICBpZiAobm9kZS5pZCA9PT0gaWQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlIGFzIEhUTUxFbGVtZW50O1xuICAgICAgaWYgKG1heERlcHRoID49ICsrZGVwdGgpIHsgYnJlYWs7IH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja1Nvb24oKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH0sIDUpO1xuICB9XG59XG4iLCJcbjxtYXQtc2lkZW5hdi1jb250YWluZXJcbiAgZWxkZXJUaGVtZUFwcGxpZXJcbiAgc3R5bGU9XCJoZWlnaHQ6MTAwJTsgd2lkdGg6IDEwMCVcIlxuICAoYmFja2Ryb3BDbGljayk9XCJvbkJhY2tkcm9wQ2xpY2soJGV2ZW50KVwiXG4+XG5cbiAgPCEtLSBMZWZ0IFNpZGUgTmF2IC0tPlxuICA8bWF0LXNpZGVuYXYgcG9zaXRpb249XCJzdGFydFwiXG4gICAgICAgICAgICAgICBtb2RlPVwib3ZlclwiXG4gICAgICAgICAgICAgICBbZml4ZWRJblZpZXdwb3J0XT1cInRydWVcIlxuICAgICAgICAgICAgICAgW2F1dG9Gb2N1c109XCJsZWZ0U2lkZUF1dG9Gb2N1c1wiXG4gICAgICAgICAgICAgICBbb3BlbmVkXT1cImxlZnRTaWRlQ29udGVudE9wZW4kIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgKGNsb3NlZCk9XCJjbG9zZUxlZnRTaWRlQ29udGVudCgpXCI+XG4gICAgPGRpdiBmeEZpbGwgZnhMYXlvdXQ9XCJjb2x1bW5cIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaWRlQ29udGVudExlZnQgfHwgZmFsbGJhY2tTaWRlQ29udGVudExlZnQ7XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvbWF0LXNpZGVuYXY+XG5cbiAgPCEtLSBNYWluIENvbnRlbnQgLS0+XG4gIDxtYXQtc2lkZW5hdi1jb250ZW50PlxuICAgIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeEZpbGw+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2VudGVyQ29udGVudCB8fCBmYWxsYmFja0NlbnRlckNvbnRlbnQ7XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvbWF0LXNpZGVuYXYtY29udGVudD5cblxuICA8IS0tIFJpZ2h0IFNpZGUgRGV0YWlsIC0tPlxuICA8bWF0LXNpZGVuYXYgbW9kZT1cIm92ZXJcIiAjcmlnaHRTaWRlRGV0YWlsIGlkPVwiZWxkZXItcmlnaHQtc2lkZS1kZXRhaWxcIlxuICAgICAgICAgICAgICAgcG9zaXRpb249XCJlbmRcIlxuICAgICAgICAgICAgICAgW2ZpeGVkSW5WaWV3cG9ydF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgIFthdXRvRm9jdXNdPVwicmlnaHRTaWRlQXV0b0ZvY3VzXCJcbiAgICAgICAgICAgICAgIFtkaXNhYmxlQ2xvc2VdPVwidHJ1ZVwiIChrZXlkb3duLmVzY2FwZSk9XCJvbkVzY2FwZVJpZ2h0U2lkZSgkZXZlbnQpXCI+XG4gICAgPGRpdiBmeEZpbGwgZnhMYXlvdXQ9XCJjb2x1bW5cIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaWRlQ29udGVudFJpZ2h0IHx8IGZhbGxiYWNrU2lkZUNvbnRlbnRSaWdodDtcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtc2lkZW5hdj5cblxuPC9tYXQtc2lkZW5hdi1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjZmFsbGJhY2tTaWRlQ29udGVudExlZnQ+XG4gIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeEZsZXg+XG4gICAgPHAgY2xhc3M9XCJub3NlbGVjdFwiPk5vIExlZnQgU2lkZSBDb250ZW50IERlZmluZWQhPC9wPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZmFsbGJhY2tTaWRlQ29udGVudFJpZ2h0PlxuICA8cm91dGVyLW91dGxldCBuYW1lPVwic2lkZVwiIGNsYXNzPVwicm91dGVyLWZsZXhcIj48L3JvdXRlci1vdXRsZXQ+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2ZhbGxiYWNrQ2VudGVyQ29udGVudD5cbiAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4RmlsbD5cblxuICAgIDwhLS0gSGVhZGVyIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCIoaGVhZGVyVGVtcGxhdGUkIHwgYXN5bmMpIHx8IGRlZmF1bHRIZWFkZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLSBDZW50ZXIgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIihjZW50ZXJUZW1wbGF0ZSQgfCBhc3luYykgfHwgZGVmYXVsdENlbnRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIEZvb3RlciAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiKGZvb3RlclRlbXBsYXRlJCB8IGFzeW5jKSB8fCBkZWZhdWx0Rm9vdGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cblxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0SGVhZGVyVGVtcGxhdGU+XG5cbiAgPGVsZGVyLXRvb2xiYXIgW2NvbG9yXT1cImNvbG9yXCI+XG5cbiAgICA8IS0tIFRvb2xiYXIgUHJlZml4OiBTaWRlbmF2IFRvZ2dsZSAtLT5cbiAgICA8bWF0LXRvb2xiYXIgKm5nSWY9XCJzaWRlTmF2VG9nZ2xlRW5hYmxlZFwiIGZ4RmxleD1cIjBcIlxuICAgICAgICAgICAgICAgICBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgW2NvbG9yXT1cIm1lbnVDb2xvciQgfCBhc3luY1wiPlxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJ0b2dnbGVTaWRlTmF2KClcIj5cbiAgICAgICAgPG1hdC1pY29uPm1lbnU8L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9tYXQtdG9vbGJhcj5cblxuICA8L2VsZGVyLXRvb2xiYXI+XG5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdENlbnRlclRlbXBsYXRlPlxuXG4gIDwhLS0gUHJpbWFyeSBSb3V0ZXIgT3V0bGV0IC0tPlxuICA8cm91dGVyLW91dGxldCBjbGFzcz1cInJvdXRlci1mbGV4XCI+PC9yb3V0ZXItb3V0bGV0PlxuXG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHRGb290ZXJUZW1wbGF0ZT5cbiAgPCEtLSBEZWZhdWx0IEZvb3RlciBpcyBlbXB0eSAtLT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -124,9 +124,9 @@ export class ElderShellNavigationToggleComponent {
124
124
  return parts.join('/');
125
125
  }
126
126
  }
127
- ElderShellNavigationToggleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: ElderShellNavigationToggleComponent, deps: [{ token: i1.Router }, { token: i2.ElderShellService }], target: i0.ɵɵFactoryTarget.Component });
128
- ElderShellNavigationToggleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.1", type: ElderShellNavigationToggleComponent, selector: "elder-shell-nav-toggle", inputs: { roots: "roots", hide: "hide" }, ngImport: i0, template: "\n<button mat-icon-button type=\"button\" (click)=\"onClick()\" *ngIf=\"showComponent()\">\n <mat-icon>{{icon | async}}</mat-icon>\n</button>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] });
129
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: ElderShellNavigationToggleComponent, decorators: [{
127
+ ElderShellNavigationToggleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: ElderShellNavigationToggleComponent, deps: [{ token: i1.Router }, { token: i2.ElderShellService }], target: i0.ɵɵFactoryTarget.Component });
128
+ ElderShellNavigationToggleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: ElderShellNavigationToggleComponent, selector: "elder-shell-nav-toggle", inputs: { roots: "roots", hide: "hide" }, ngImport: i0, template: "\n<button mat-icon-button type=\"button\" (click)=\"onClick()\" *ngIf=\"showComponent()\">\n <mat-icon>{{icon | async}}</mat-icon>\n</button>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] });
129
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: ElderShellNavigationToggleComponent, decorators: [{
130
130
  type: Component,
131
131
  args: [{ selector: 'elder-shell-nav-toggle', template: "\n<button mat-icon-button type=\"button\" (click)=\"onClick()\" *ngIf=\"showComponent()\">\n <mat-icon>{{icon | async}}</mat-icon>\n</button>\n" }]
132
132
  }], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.ElderShellService }]; }, propDecorators: { roots: [{
@@ -11,9 +11,9 @@ export class ElderTabDirective {
11
11
  this.tab = tab;
12
12
  }
13
13
  }
14
- ElderTabDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: ElderTabDirective, deps: [{ token: i1.MatTab }], target: i0.ɵɵFactoryTarget.Directive });
15
- ElderTabDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.1", type: ElderTabDirective, selector: "[elderTab]", inputs: { id: ["elderTab", "id"] }, ngImport: i0 });
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: ElderTabDirective, decorators: [{
14
+ ElderTabDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: ElderTabDirective, deps: [{ token: i1.MatTab }], target: i0.ɵɵFactoryTarget.Directive });
15
+ ElderTabDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.2", type: ElderTabDirective, selector: "[elderTab]", inputs: { id: ["elderTab", "id"] }, ngImport: i0 });
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: ElderTabDirective, decorators: [{
17
17
  type: Directive,
18
18
  args: [{
19
19
  selector: '[elderTab]'
@@ -235,9 +235,9 @@ export class ElderTabGroupRoutingDirective {
235
235
  * Prefix used to indicate and index-based tab marker.
236
236
  */
237
237
  ElderTabGroupRoutingDirective.TAB_INDEX_PREFIX = 'idx:';
238
- ElderTabGroupRoutingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: ElderTabGroupRoutingDirective, deps: [{ token: i1.ElderUrlFragmentParamsService }, { token: i2.MatTabGroup }], target: i0.ɵɵFactoryTarget.Directive });
239
- ElderTabGroupRoutingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.1", type: ElderTabGroupRoutingDirective, selector: "[elderTabGroupRouting]", inputs: { tabGroupQueryParamKey: ["elderTabGroupRouting", "tabGroupQueryParamKey"] }, queries: [{ propertyName: "tabs", predicate: MatTab }, { propertyName: "elderTabs", predicate: ElderTabDirective }], exportAs: ["elderTabGroupRouting"], ngImport: i0 });
240
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: ElderTabGroupRoutingDirective, decorators: [{
238
+ ElderTabGroupRoutingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: ElderTabGroupRoutingDirective, deps: [{ token: i1.ElderUrlFragmentParamsService }, { token: i2.MatTabGroup }], target: i0.ɵɵFactoryTarget.Directive });
239
+ ElderTabGroupRoutingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.2", type: ElderTabGroupRoutingDirective, selector: "[elderTabGroupRouting]", inputs: { tabGroupQueryParamKey: ["elderTabGroupRouting", "tabGroupQueryParamKey"] }, queries: [{ propertyName: "tabs", predicate: MatTab }, { propertyName: "elderTabs", predicate: ElderTabDirective }], exportAs: ["elderTabGroupRouting"], ngImport: i0 });
240
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: ElderTabGroupRoutingDirective, decorators: [{
241
241
  type: Directive,
242
242
  args: [{
243
243
  selector: '[elderTabGroupRouting]',
@@ -9,14 +9,14 @@ export * from './elder-tab/elder-tab.directive';
9
9
  export * from './elder-tab-group-routing/elder-tab-group-routing.directive';
10
10
  export class ElderTabModule {
11
11
  }
12
- ElderTabModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: ElderTabModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
13
- ElderTabModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.1", ngImport: i0, type: ElderTabModule, declarations: [ElderTabDirective,
12
+ ElderTabModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: ElderTabModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
13
+ ElderTabModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.2", ngImport: i0, type: ElderTabModule, declarations: [ElderTabDirective,
14
14
  ElderTabGroupRoutingDirective], imports: [CommonModule, MatCommonModule,
15
15
  FlexLayoutModule], exports: [ElderTabDirective,
16
16
  ElderTabGroupRoutingDirective] });
17
- ElderTabModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: ElderTabModule, imports: [CommonModule, MatCommonModule,
17
+ ElderTabModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: ElderTabModule, imports: [CommonModule, MatCommonModule,
18
18
  FlexLayoutModule] });
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: ElderTabModule, decorators: [{
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: ElderTabModule, decorators: [{
20
20
  type: NgModule,
21
21
  args: [{
22
22
  imports: [