@elderbyte/ngx-starter 17.1.0 → 17.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (284) hide show
  1. package/esm2022/lib/common/enums/elder-enum-translation.service.mjs +3 -3
  2. package/esm2022/lib/common/forms/elder-form-field-control-base.directive.mjs +3 -3
  3. package/esm2022/lib/common/forms/elder-from-field-base.mjs +3 -3
  4. package/esm2022/lib/common/forms/elder-from-field-customizable-base.mjs +3 -3
  5. package/esm2022/lib/common/forms/elder-from-field-entity-base.mjs +3 -3
  6. package/esm2022/lib/common/forms/elder-from-field-multi-entity-base.mjs +3 -3
  7. package/esm2022/lib/common/forms/form-field-base.component.mjs +3 -3
  8. package/esm2022/lib/common/forms/multi-model-base.component.mjs +3 -3
  9. package/esm2022/lib/common/forms/template-composite-control.mjs +3 -3
  10. package/esm2022/lib/common/forms/value-accessor-base.mjs +3 -3
  11. package/esm2022/lib/common/http/http-client-builder.service.mjs +3 -3
  12. package/esm2022/lib/common/http/http-client-pristine.mjs +3 -3
  13. package/esm2022/lib/common/http/transfer/data-transfer-factory.mjs +3 -3
  14. package/esm2022/lib/common/url/elder-router.service.mjs +3 -3
  15. package/esm2022/lib/common/url/elder-url-fragment-params.service.mjs +3 -3
  16. package/esm2022/lib/components/access-denied/elder-access-denied.component.mjs +3 -3
  17. package/esm2022/lib/components/access-denied/elder-access-denied.module.mjs +4 -4
  18. package/esm2022/lib/components/auditing/audited-entity/elder-audited-entity.component.mjs +3 -3
  19. package/esm2022/lib/components/auditing/elder-audit.module.mjs +4 -4
  20. package/esm2022/lib/components/badge/elder-badge/elder-badge.component.mjs +9 -9
  21. package/esm2022/lib/components/badge/elder-badge.directive.mjs +3 -3
  22. package/esm2022/lib/components/badge/elder-badge.module.mjs +4 -4
  23. package/esm2022/lib/components/button-group/elder-button-group/elder-button-group.component.mjs +3 -3
  24. package/esm2022/lib/components/button-group/elder-button-group.module.mjs +4 -4
  25. package/esm2022/lib/components/card-organizer/card-organizer/elder-card-organizer.component.mjs +3 -3
  26. package/esm2022/lib/components/card-organizer/card-organizer/elder-stack-card.directive.mjs +3 -3
  27. package/esm2022/lib/components/card-organizer/card-stack/elder-card-stack.component.mjs +3 -3
  28. package/esm2022/lib/components/card-organizer/elder-card-organizer.module.mjs +4 -4
  29. package/esm2022/lib/components/cards/elder-card/elder-card-header/elder-card-header.component.mjs +3 -3
  30. package/esm2022/lib/components/cards/elder-card/elder-card.component.mjs +18 -18
  31. package/esm2022/lib/components/cards/elder-card/elder-card.module.mjs +4 -4
  32. package/esm2022/lib/components/chips/elder-chip-label.directive.mjs +3 -3
  33. package/esm2022/lib/components/chips/elder-chips.module.mjs +4 -4
  34. package/esm2022/lib/components/connectivity/elder-connectivity.module.mjs +4 -4
  35. package/esm2022/lib/components/connectivity/elder-connectivity.service.mjs +3 -3
  36. package/esm2022/lib/components/connectivity/offline-indicator/elder-offline-indicator.component.mjs +3 -3
  37. package/esm2022/lib/components/containers/elder-containers.module.mjs +4 -4
  38. package/esm2022/lib/components/containers/elder-scroll-container/elder-scroll-container.component.mjs +3 -3
  39. package/esm2022/lib/components/csv/elder-csv-export-btn/elder-csv-export-btn.component.mjs +3 -3
  40. package/esm2022/lib/components/csv/elder-csv-stream-exporter-builder.service.mjs +3 -3
  41. package/esm2022/lib/components/csv/elder-csv.module.mjs +4 -4
  42. package/esm2022/lib/components/currency/elder-currency.module.mjs +4 -4
  43. package/esm2022/lib/components/currency/elder-currency.pipe.mjs +3 -3
  44. package/esm2022/lib/components/data-transfer/elder-data-transfer.module.mjs +4 -4
  45. package/esm2022/lib/components/data-transfer/elder-data-transfer.service.mjs +3 -3
  46. package/esm2022/lib/components/data-transfer/http-data-transfer/http-data-transfer.component.mjs +3 -3
  47. package/esm2022/lib/components/data-transfer/http-data-transfer-aggregate/http-data-transfer-aggregate.component.mjs +3 -3
  48. package/esm2022/lib/components/data-transfer/http-data-transfer-indicator/http-data-transfer-indicator.component.mjs +3 -3
  49. package/esm2022/lib/components/data-transfer/http-data-transfer-overview/http-data-transfer-overview.component.mjs +3 -3
  50. package/esm2022/lib/components/data-view/base/elder-data-view-base.mjs +3 -3
  51. package/esm2022/lib/components/data-view/common/data-context-state-indicator/data-context-state-indicator.component.mjs +3 -3
  52. package/esm2022/lib/components/data-view/common/elder-data-common.module.mjs +4 -4
  53. package/esm2022/lib/components/data-view/common/elder-data-toolbar/elder-data-toolbar.component.mjs +6 -6
  54. package/esm2022/lib/components/data-view/common/elder-single-sort/elder-single-sort.component.mjs +3 -3
  55. package/esm2022/lib/components/data-view/common/selection/data-context-selection.directive.mjs +3 -3
  56. package/esm2022/lib/components/data-view/common/selection/elder-selection-master-checkbox/elder-selection-master-checkbox.component.mjs +3 -3
  57. package/esm2022/lib/components/data-view/grid/elder-grid/elder-grid.component.mjs +9 -9
  58. package/esm2022/lib/components/data-view/grid/elder-grid.module.mjs +4 -4
  59. package/esm2022/lib/components/data-view/master-detail/elder-detail-dialog/elder-detail-dialog.component.mjs +3 -3
  60. package/esm2022/lib/components/data-view/master-detail/elder-detail.directive.mjs +3 -3
  61. package/esm2022/lib/components/data-view/master-detail/elder-master-activation.directive.mjs +3 -3
  62. package/esm2022/lib/components/data-view/master-detail/elder-master-detail.component.mjs +3 -3
  63. package/esm2022/lib/components/data-view/master-detail/elder-master-detail.module.mjs +4 -4
  64. package/esm2022/lib/components/data-view/master-detail/elder-master-detail.service.mjs +3 -3
  65. package/esm2022/lib/components/data-view/master-detail/elder-master.directive.mjs +3 -3
  66. package/esm2022/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.component.mjs +3 -3
  67. package/esm2022/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.module.mjs +4 -4
  68. package/esm2022/lib/components/data-view/table/activation/elder-delete-active.directive.mjs +3 -3
  69. package/esm2022/lib/components/data-view/table/activation/elder-table-activation.directive.mjs +3 -3
  70. package/esm2022/lib/components/data-view/table/elder-number-cell.directive.mjs +3 -3
  71. package/esm2022/lib/components/data-view/table/elder-paginator-intl.mjs +3 -3
  72. package/esm2022/lib/components/data-view/table/elder-table/elder-table-toolbar.directive.mjs +3 -3
  73. package/esm2022/lib/components/data-view/table/elder-table/elder-table.component.mjs +3 -3
  74. package/esm2022/lib/components/data-view/table/elder-table-column.directive.mjs +3 -3
  75. package/esm2022/lib/components/data-view/table/elder-table-extension.directive.mjs +3 -3
  76. package/esm2022/lib/components/data-view/table/elder-table-root.directive.mjs +3 -3
  77. package/esm2022/lib/components/data-view/table/elder-table-row.directive.mjs +3 -3
  78. package/esm2022/lib/components/data-view/table/elder-table-sort.directive.mjs +3 -3
  79. package/esm2022/lib/components/data-view/table/elder-table.module.mjs +4 -4
  80. package/esm2022/lib/components/data-view/table/model/elder-table-model.mjs +3 -3
  81. package/esm2022/lib/components/dialogs/confirm-dialog/elder-confirm-dialog.component.mjs +3 -3
  82. package/esm2022/lib/components/dialogs/elder-dialog.module.mjs +4 -4
  83. package/esm2022/lib/components/dialogs/elder-dialog.service.mjs +3 -3
  84. package/esm2022/lib/components/dialogs/question-dialog/elder-question-dialog.component.mjs +3 -3
  85. package/esm2022/lib/components/dialogs/selection-dialog/elder-selection-dialog/elder-selection-dialog.component.mjs +3 -3
  86. package/esm2022/lib/components/dialogs/selection-dialog/elder-selection-dialog.directive.mjs +3 -3
  87. package/esm2022/lib/components/errors/elder-error.module.mjs +4 -4
  88. package/esm2022/lib/components/errors/exception-detail/elder-exception-detail.component.mjs +3 -3
  89. package/esm2022/lib/components/expand-toggle-button/elder-expand-toggle-button.component.mjs +3 -3
  90. package/esm2022/lib/components/expand-toggle-button/elder-expand-toggle-button.module.mjs +4 -4
  91. package/esm2022/lib/components/files/blob-viewer/elder-blob-viewer.component.mjs +3 -3
  92. package/esm2022/lib/components/files/drag-n-drop/elder-drop-zone/elder-drop-zone.component.mjs +3 -3
  93. package/esm2022/lib/components/files/drag-n-drop/global-drag-drop.service.mjs +3 -3
  94. package/esm2022/lib/components/files/elder-file-drop-zone.directive.mjs +3 -3
  95. package/esm2022/lib/components/files/elder-file-select.directive.mjs +3 -3
  96. package/esm2022/lib/components/files/elder-file.module.mjs +4 -4
  97. package/esm2022/lib/components/files/file-select/file-select.component.mjs +3 -3
  98. package/esm2022/lib/components/files/file-upload/file-upload.component.mjs +3 -3
  99. package/esm2022/lib/components/forms/clipboard/elder-clipboard.service.mjs +3 -3
  100. package/esm2022/lib/components/forms/directives/base/elder-class-hostbinding-base.mjs +3 -3
  101. package/esm2022/lib/components/forms/directives/elder-clipboard-put.directive.mjs +3 -3
  102. package/esm2022/lib/components/forms/directives/elder-delayed-focus.directive.mjs +3 -3
  103. package/esm2022/lib/components/forms/directives/elder-form-field-dense.directive.mjs +3 -3
  104. package/esm2022/lib/components/forms/directives/elder-form-field-label.directive.mjs +3 -3
  105. package/esm2022/lib/components/forms/directives/elder-form-field-no-hint.directive.mjs +3 -3
  106. package/esm2022/lib/components/forms/directives/elder-form-field-no-spinner.directive.mjs +3 -3
  107. package/esm2022/lib/components/forms/directives/elder-forms-directives.module.mjs +4 -4
  108. package/esm2022/lib/components/forms/directives/elder-initial-value.directive.mjs +3 -3
  109. package/esm2022/lib/components/forms/directives/elder-input-pattern.directive.mjs +3 -3
  110. package/esm2022/lib/components/forms/directives/elder-key-event.directive.mjs +3 -3
  111. package/esm2022/lib/components/forms/directives/elder-next-focusable.directive.mjs +3 -3
  112. package/esm2022/lib/components/forms/directives/elder-plug-parent-form.directive.mjs +3 -3
  113. package/esm2022/lib/components/forms/directives/elder-stop-event-propagation.directive.mjs +3 -3
  114. package/esm2022/lib/components/forms/directives/elder-tab-focus-trap.directive.mjs +3 -3
  115. package/esm2022/lib/components/forms/directives/elder-touched.directive.mjs +3 -3
  116. package/esm2022/lib/components/forms/directives/elder-triple-state-checkbox.directive.mjs +6 -5
  117. package/esm2022/lib/components/forms/directives/validation/elder-validation-error.directive.mjs +3 -3
  118. package/esm2022/lib/components/forms/directives/validation/strategies/common-validation-message-strategy.mjs +3 -3
  119. package/esm2022/lib/components/forms/directives/validation/strategies/dynamic-validation-message-strategy.mjs +3 -3
  120. package/esm2022/lib/components/forms/directives/validation/validation-message-renderer.service.mjs +3 -3
  121. package/esm2022/lib/components/forms/directives/validation/validators/elder-max.validator.mjs +3 -3
  122. package/esm2022/lib/components/forms/directives/validation/validators/elder-min.validator.mjs +3 -3
  123. package/esm2022/lib/components/forms/directives/validation/validators/elder-multiple-of.validator.mjs +3 -3
  124. package/esm2022/lib/components/forms/directives/validation/validators/elder-required-ignore-zero.validator.mjs +3 -3
  125. package/esm2022/lib/components/forms/elder-forms.module.mjs +4 -4
  126. package/esm2022/lib/components/forms/search/domain/context/search-context.service.mjs +3 -3
  127. package/esm2022/lib/components/forms/search/domain/url/elder-search-url.directive.mjs +3 -3
  128. package/esm2022/lib/components/forms/search/domain/url/elder-search-url.service.mjs +3 -3
  129. package/esm2022/lib/components/forms/search/elder-search-context.directive.mjs +3 -3
  130. package/esm2022/lib/components/forms/search/elder-search-input.directive.mjs +3 -3
  131. package/esm2022/lib/components/forms/search/elder-search.module.mjs +4 -4
  132. package/esm2022/lib/components/forms/search/search-box/elder-search-box.component.mjs +3 -3
  133. package/esm2022/lib/components/forms/search/search-box/elder-search-panel.component.mjs +3 -3
  134. package/esm2022/lib/components/global-search/elder-global-search.component.mjs +3 -3
  135. package/esm2022/lib/components/global-search/elder-global-search.module.mjs +4 -4
  136. package/esm2022/lib/components/global-search/elder-global-search.service.mjs +3 -3
  137. package/esm2022/lib/components/graph/elder-progress-bar/elder-progress-bar.component.mjs +3 -3
  138. package/esm2022/lib/components/graph/elder-progress-bar/elder-progress-bar.module.mjs +4 -4
  139. package/esm2022/lib/components/headers/elder-header/elder-header.component.mjs +3 -3
  140. package/esm2022/lib/components/headers/elder-header.module.mjs +4 -4
  141. package/esm2022/lib/components/http-support/elder-http-client.service.mjs +3 -3
  142. package/esm2022/lib/components/i18n/entities/elder-i18n-entities.module.mjs +4 -4
  143. package/esm2022/lib/components/i18n/entities/elder-localized-input/elder-localized-input.component.mjs +3 -3
  144. package/esm2022/lib/components/i18n/entities/elder-localized-input-dialog/elder-localized-input-dialog.component.mjs +3 -3
  145. package/esm2022/lib/components/i18n/entities/elder-localized-input-dialog.service.mjs +3 -3
  146. package/esm2022/lib/components/i18n/entities/elder-localized-input-table/elder-localized-input-table.component.mjs +3 -3
  147. package/esm2022/lib/components/i18n/entities/elder-localized-text-column.directive.mjs +3 -3
  148. package/esm2022/lib/components/i18n/entities/elder-localized-texts.directive.mjs +3 -3
  149. package/esm2022/lib/components/i18n/entities/picker/i18n-pick-async.pipe.mjs +3 -3
  150. package/esm2022/lib/components/i18n/entities/picker/i18n-pick.pipe.mjs +3 -3
  151. package/esm2022/lib/components/i18n/entities/picker/localisation-picker.service.mjs +3 -3
  152. package/esm2022/lib/components/i18n/language/elder-language-interceptor.mjs +3 -3
  153. package/esm2022/lib/components/i18n/language/elder-language.module.mjs +4 -4
  154. package/esm2022/lib/components/i18n/language/elder-language.service.mjs +3 -3
  155. package/esm2022/lib/components/i18n/language/language-switcher/elder-language-switcher.component.mjs +3 -3
  156. package/esm2022/lib/components/i18n/locales/elder-locales-de-ch.module.mjs +4 -4
  157. package/esm2022/lib/components/iframes/data-view/data-view-iframe/data-view-iframe.component.mjs +3 -3
  158. package/esm2022/lib/components/iframes/data-view/data-view-iframe-adapter.directive.mjs +3 -3
  159. package/esm2022/lib/components/iframes/elder-iframe.module.mjs +4 -4
  160. package/esm2022/lib/components/iframes/iframe-close.directive.mjs +3 -3
  161. package/esm2022/lib/components/iframes/iframe-dialog/iframe-dialog.component.mjs +3 -3
  162. package/esm2022/lib/components/iframes/iframe-host/iframe-host.component.mjs +3 -3
  163. package/esm2022/lib/components/iframes/iframe-side-content/iframe-side-content.component.mjs +3 -3
  164. package/esm2022/lib/components/iframes/iframe.service.mjs +3 -3
  165. package/esm2022/lib/components/infinitescroll/elder-infinite-autocomplete.directive.mjs +3 -3
  166. package/esm2022/lib/components/infinitescroll/elder-infinite-scroll.directive.mjs +3 -3
  167. package/esm2022/lib/components/infinitescroll/elder-infinite-scroll.module.mjs +4 -4
  168. package/esm2022/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete.component.mjs +3 -3
  169. package/esm2022/lib/components/input/autocomplete/elder-autocomplete-many.directive.mjs +3 -3
  170. package/esm2022/lib/components/input/autocomplete/elder-autocomplete.directive.mjs +3 -3
  171. package/esm2022/lib/components/input/autocomplete/elder-autocomplete.module.mjs +4 -4
  172. package/esm2022/lib/components/labels/elder-labels.module.mjs +4 -4
  173. package/esm2022/lib/components/labels/labels-input/labels-input.component.mjs +3 -3
  174. package/esm2022/lib/components/measures/dimensions/dimensions-input/elder-dimensions-input.component.mjs +3 -3
  175. package/esm2022/lib/components/measures/dimensions/validation/elder-required-dimensions.validator.mjs +3 -3
  176. package/esm2022/lib/components/measures/directives/elder-unit-select.directive.mjs +3 -3
  177. package/esm2022/lib/components/measures/elder-measures.module.mjs +8 -8
  178. package/esm2022/lib/components/measures/elder-quantity-transform.pipe.mjs +3 -3
  179. package/esm2022/lib/components/measures/elder-quantity.pipe.mjs +3 -3
  180. package/esm2022/lib/components/measures/elder-unit.service.mjs +3 -3
  181. package/esm2022/lib/components/measures/quantity-input/quantity-form-field/elder-quantity-form-field.component.mjs +3 -3
  182. package/esm2022/lib/components/measures/quantity-input/quantity-input-control/elder-quantity-input-control.component.mjs +3 -3
  183. package/esm2022/lib/components/measures/quantity-input/validation/elder-quantity-range.validator.mjs +3 -3
  184. package/esm2022/lib/components/measures/quantity-input/validation/elder-required-quantity.validator.mjs +3 -3
  185. package/esm2022/lib/components/measures/util/elder-quantity.service.mjs +37 -4
  186. package/esm2022/lib/components/navigation/bread-crumbs/bread-crumbs/elder-bread-crumbs.component.mjs +3 -3
  187. package/esm2022/lib/components/navigation/bread-crumbs/elder-bread-crumbs.module.mjs +4 -4
  188. package/esm2022/lib/components/navigation/nav/elder-nav.module.mjs +4 -4
  189. package/esm2022/lib/components/navigation/nav/nav-group/elder-nav-group.component.mjs +3 -3
  190. package/esm2022/lib/components/navigation/nav/nav-link/elder-nav-link.component.mjs +3 -3
  191. package/esm2022/lib/components/navigation/nav/nav-list/elder-nav-list.component.mjs +3 -3
  192. package/esm2022/lib/components/navigation/toolbar/elder-toolbar-column.directive.mjs +3 -3
  193. package/esm2022/lib/components/navigation/toolbar/elder-toolbar.module.mjs +4 -4
  194. package/esm2022/lib/components/navigation/toolbar/elder-toolbar.service.mjs +3 -3
  195. package/esm2022/lib/components/navigation/toolbar/toolbar/elder-toolbar.component.mjs +3 -3
  196. package/esm2022/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.component.mjs +3 -3
  197. package/esm2022/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.service.mjs +3 -3
  198. package/esm2022/lib/components/overlays/elder-overlay-origin.directive.mjs +3 -3
  199. package/esm2022/lib/components/overlays/elder-overlay-trigger.directive.mjs +3 -3
  200. package/esm2022/lib/components/overlays/elder-overlay.component.mjs +3 -3
  201. package/esm2022/lib/components/overlays/elder-overlay.module.mjs +4 -4
  202. package/esm2022/lib/components/panels/card-panel/elder-card-panel.component.mjs +3 -3
  203. package/esm2022/lib/components/panels/elder-dialog-panel/elder-dialog-panel.component.mjs +3 -3
  204. package/esm2022/lib/components/panels/elder-panel.module.mjs +4 -4
  205. package/esm2022/lib/components/panels/flat/elder-panel.component.mjs +3 -3
  206. package/esm2022/lib/components/panels/toggle-panel/elder-toggle-panel-trigger.directive.mjs +3 -3
  207. package/esm2022/lib/components/panels/toggle-panel/elder-toggle-panel.component.mjs +9 -9
  208. package/esm2022/lib/components/scrollbar/elder-scrollbar.directive.mjs +3 -3
  209. package/esm2022/lib/components/scrollbar/elder-scrollbar.module.mjs +4 -4
  210. package/esm2022/lib/components/select/auto/elder-auto-select-first.directive.mjs +3 -3
  211. package/esm2022/lib/components/select/elder-select-base.mjs +3 -3
  212. package/esm2022/lib/components/select/elder-select-chip.directive.mjs +9 -9
  213. package/esm2022/lib/components/select/elder-select-on-tab.directive.mjs +3 -3
  214. package/esm2022/lib/components/select/elder-select-value.directive.mjs +3 -3
  215. package/esm2022/lib/components/select/elder-select.module.mjs +4 -4
  216. package/esm2022/lib/components/select/multi/elder-multi-select-base.mjs +3 -3
  217. package/esm2022/lib/components/select/multi/elder-multi-select-chip-options/elder-multi-select-chip-options.component.mjs +3 -3
  218. package/esm2022/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.mjs +3 -3
  219. package/esm2022/lib/components/select/multi/elder-multi-select-form-field.mjs +3 -3
  220. package/esm2022/lib/components/select/popup/selection-model-popup-trigger-adapter.directive.mjs +3 -3
  221. package/esm2022/lib/components/select/popup/selection-model-popup.directive.mjs +3 -3
  222. package/esm2022/lib/components/select/popup/templated-selection-dialog/templated-selection-dialog.component.mjs +3 -3
  223. package/esm2022/lib/components/select/single/elder-clear-select.directive.mjs +3 -3
  224. package/esm2022/lib/components/select/single/elder-select/elder-select.component.mjs +3 -3
  225. package/esm2022/lib/components/select/single/elder-select-form-field.mjs +3 -3
  226. package/esm2022/lib/components/select-chip-list/chip-list-select/elder-chip-list-select.component.mjs +3 -3
  227. package/esm2022/lib/components/select-chip-list/elder-chip-list-select.module.mjs +4 -4
  228. package/esm2022/lib/components/shell/drawers/elder-route-outlet-drawer.service.mjs +3 -3
  229. package/esm2022/lib/components/shell/drawers/elder-router-outlet.service.mjs +3 -3
  230. package/esm2022/lib/components/shell/elder-shell-slot.directive.mjs +3 -3
  231. package/esm2022/lib/components/shell/elder-shell.module.mjs +4 -4
  232. package/esm2022/lib/components/shell/elder-shell.service.mjs +3 -3
  233. package/esm2022/lib/components/shell/header/elder-app-header/elder-app-header.component.mjs +3 -3
  234. package/esm2022/lib/components/shell/shell/elder-shell.component.mjs +12 -12
  235. package/esm2022/lib/components/shell/shell-navigation-toggle/elder-shell-navigation-toggle.component.mjs +3 -3
  236. package/esm2022/lib/components/tabs/elder-tab/elder-tab.directive.mjs +3 -3
  237. package/esm2022/lib/components/tabs/elder-tab-group-routing/elder-tab-group-routing.directive.mjs +3 -3
  238. package/esm2022/lib/components/tabs/elder-tab.module.mjs +4 -4
  239. package/esm2022/lib/components/theme/elder-theme-applier.directive.mjs +3 -3
  240. package/esm2022/lib/components/theme/elder-theme-preference.service.mjs +3 -3
  241. package/esm2022/lib/components/theme/elder-theme-toggle/elder-theme-toggle.component.mjs +3 -3
  242. package/esm2022/lib/components/theme/elder-theme.directive.mjs +3 -3
  243. package/esm2022/lib/components/theme/elder-theme.module.mjs +4 -4
  244. package/esm2022/lib/components/theme/elder-theme.service.mjs +3 -3
  245. package/esm2022/lib/components/time/date-adapters/custom-date-adapter.mjs +3 -3
  246. package/esm2022/lib/components/time/duration/elder-duration-input/elder-duration-input.component.mjs +3 -3
  247. package/esm2022/lib/components/time/elder-date-switcher/elder-date-switcher.component.mjs +3 -3
  248. package/esm2022/lib/components/time/elder-date-time-input/elder-date-time-input.component.mjs +3 -3
  249. package/esm2022/lib/components/time/elder-interval-input/elder-interval-input.component.mjs +3 -3
  250. package/esm2022/lib/components/time/elder-local-date-input/elder-local-date-input.component.mjs +3 -3
  251. package/esm2022/lib/components/time/elder-local-time-input/elder-local-time-input.component.mjs +3 -3
  252. package/esm2022/lib/components/time/elder-time.module.mjs +4 -4
  253. package/esm2022/lib/components/time/period/elder-period-input/elder-period-input.component.mjs +3 -3
  254. package/esm2022/lib/components/time/pipes/to-iso-date-string.pipe.mjs +3 -3
  255. package/esm2022/lib/components/toasts/elder-toast.module.mjs +4 -4
  256. package/esm2022/lib/components/toasts/elder-toast.service.mjs +3 -3
  257. package/esm2022/lib/components/toasts/standard-toast/standard-toast.component.mjs +3 -3
  258. package/esm2022/lib/components/url-fragment/elder-url-fragment.module.mjs +4 -4
  259. package/esm2022/lib/components/url-fragment/url-fragment-switcher/elder-url-fragment-switcher.component.mjs +3 -3
  260. package/esm2022/lib/components/viewers/elder-svg-viewer/elder-svg-viewer.component.mjs +3 -3
  261. package/esm2022/lib/components/viewers/elder-viewers.module.mjs +4 -4
  262. package/esm2022/lib/features/event-source/elder-event-source.service.mjs +3 -3
  263. package/esm2022/lib/features/kafent/access-token-provider.mjs +3 -3
  264. package/esm2022/lib/features/kafent/kafent-config.mjs +3 -3
  265. package/esm2022/lib/features/kafent/kafent-event-stream.mjs +3 -3
  266. package/esm2022/lib/features/kafent/kafent-event.service.mjs +3 -3
  267. package/esm2022/lib/features/kafent/kafent.module.mjs +4 -4
  268. package/esm2022/lib/features/kafent/sse/kafent-event-stream-sse.service.mjs +3 -3
  269. package/esm2022/lib/pipes/bytes.pipe.mjs +3 -3
  270. package/esm2022/lib/pipes/elder-pipes.module.mjs +10 -10
  271. package/esm2022/lib/pipes/elder-repeat.pipe.mjs +3 -3
  272. package/esm2022/lib/pipes/elder-round.pipe.mjs +3 -3
  273. package/esm2022/lib/pipes/elder-safe-url.pipe.mjs +3 -3
  274. package/esm2022/lib/pipes/elder-truncate.pipe.mjs +3 -3
  275. package/esm2022/lib/pipes/iso-duration.pipe.mjs +3 -3
  276. package/esm2022/lib/pipes/iso-interval-parse.pipe.mjs +3 -3
  277. package/esm2022/lib/pipes/iso-interval.pipe.mjs +3 -3
  278. package/esm2022/lib/pipes/time-ago.pipe.mjs +3 -3
  279. package/esm2022/lib/pipes/time-duration.pipe.mjs +3 -3
  280. package/esm2022/lib/pipes/weight.pipe.mjs +3 -3
  281. package/fesm2022/elderbyte-ngx-starter.mjs +988 -954
  282. package/fesm2022/elderbyte-ngx-starter.mjs.map +1 -1
  283. package/lib/components/measures/util/elder-quantity.service.d.ts +15 -0
  284. package/package.json +1 -1
@@ -16,6 +16,19 @@ export class ElderQuantityService {
16
16
  createDimensions(length, width, height) {
17
17
  return Dimensions.from(length.unit, length.value, this.convertToUnit(width, length.unit).value, this.convertToUnit(height, length.unit).value);
18
18
  }
19
+ /**
20
+ * Returns a copy of the maximum (longest) edge of the dimensions.
21
+ *
22
+ * @param dimensions
23
+ */
24
+ getMaxEdge(dimensions) {
25
+ if (!dimensions) {
26
+ return null;
27
+ }
28
+ else {
29
+ return Quantity.from(dimensions.unit, Math.max(dimensions.width, dimensions.length, dimensions.height));
30
+ }
31
+ }
19
32
  /***************************************************************************
20
33
  * *
21
34
  * Constructor *
@@ -132,6 +145,26 @@ export class ElderQuantityService {
132
145
  }
133
146
  return Quantity.from(left.unit, left.value - this.convertToUnit(right, left.unit).value);
134
147
  }
148
+ /**
149
+ * Returns the max quantity of an array of quantities.
150
+ *
151
+ * Example:
152
+ * Quantity(10, 'm'), Quantity(2500, 'cm'), Quantity(0.003, 'km') = Quantity(2500, 'cm')
153
+ *
154
+ * @param quantities
155
+ */
156
+ max(quantities) {
157
+ if (!quantities || quantities.length == 0) {
158
+ return null;
159
+ }
160
+ const helpers = quantities
161
+ .map(quantity => ({
162
+ original: quantity,
163
+ baseValue: this.toBaseUnitValue(quantity)
164
+ }));
165
+ helpers.sort((a, b) => b.baseValue - a.baseValue);
166
+ return helpers[0].original;
167
+ }
135
168
  /**
136
169
  * Transforms a quantity to another quantity of the same dimension by target-SI
137
170
  *
@@ -225,13 +258,13 @@ export class ElderQuantityService {
225
258
  getQuantityIdentifier(quantity) {
226
259
  return quantity.value + '-' + quantity.unit;
227
260
  }
228
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ElderQuantityService, deps: [{ token: i1.ElderUnitService }], target: i0.ɵɵFactoryTarget.Injectable }); }
229
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ElderQuantityService, providedIn: 'root' }); }
261
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ElderQuantityService, deps: [{ token: i1.ElderUnitService }], target: i0.ɵɵFactoryTarget.Injectable }); }
262
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ElderQuantityService, providedIn: 'root' }); }
230
263
  }
231
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ElderQuantityService, decorators: [{
264
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ElderQuantityService, decorators: [{
232
265
  type: Injectable,
233
266
  args: [{
234
267
  providedIn: 'root'
235
268
  }]
236
269
  }], ctorParameters: () => [{ type: i1.ElderUnitService }] });
237
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItcXVhbnRpdHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvbWVhc3VyZXMvdXRpbC9lbGRlci1xdWFudGl0eS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7OztBQUtuRCxNQUFNLE9BQU8sb0JBQW9CO0lBYS9COzs7O2dGQUk0RTtJQUVyRSxVQUFVLENBQUMsTUFBZ0IsRUFBRSxLQUFlO1FBQ2pELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUMxQixNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUMzQixDQUFDO0lBQ0osQ0FBQztJQUVNLGdCQUFnQixDQUNyQixNQUFnQixFQUNoQixLQUFlLEVBQ2YsTUFBZ0I7UUFFaEIsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUNwQixNQUFNLENBQUMsSUFBSSxFQUNYLE1BQU0sQ0FBQyxLQUFLLEVBQ1osSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFDNUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FDOUMsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztnRkFJNEU7SUFFNUUsWUFDbUIsV0FBNkI7UUFBN0IsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FB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b0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtVbml0fSBmcm9tICcuLi9tb2RlbC91bml0JztcbmltcG9ydCB7UXVhbnRpdHl9IGZyb20gJy4uL21vZGVsL3F1YW50aXR5JztcbmltcG9ydCB7VW5pdEluZm99IGZyb20gJy4uL21vZGVsL3VuaXQtcmVnaXN0cnknO1xuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RWxkZXJVbml0U2VydmljZX0gZnJvbSAnLi4vZWxkZXItdW5pdC5zZXJ2aWNlJztcbmltcG9ydCB7RGltZW5zaW9uc30gZnJvbSAnLi4vbW9kZWwvZGltZW5zaW9ucyc7XG5pbXBvcnQge0xvZ2dlckZhY3Rvcnl9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRWxkZXJRdWFudGl0eVNlcnZpY2Uge1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IFFVQU5USVRZX0NBQ0hFX1NJWkUgPSA1MDA7XG4gIHByaXZhdGUgcmVhZG9ubHkgUVVBTlRJVFlfQ0FDSEUgPSBuZXcgTWFwPHN0cmluZywgUXVhbnRpdHk+KCk7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEJ1aWxkZXIgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIGNyZWF0ZUFyZWEobGVuZ3RoOiBRdWFudGl0eSwgd2lkdGg6IFF1YW50aXR5KTogRGltZW5zaW9ucyB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlRGltZW5zaW9ucyhcbiAgICAgIGxlbmd0aCxcbiAgICAgIHdpZHRoLFxuICAgICAgUXVhbnRpdHkuemVybyhsZW5ndGgudW5pdClcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGNyZWF0ZURpbWVuc2lvbnMoXG4gICAgbGVuZ3RoOiBRdWFudGl0eSxcbiAgICB3aWR0aDogUXVhbnRpdHksXG4gICAgaGVpZ2h0OiBRdWFudGl0eVxuICApOiBEaW1lbnNpb25zIHtcbiAgICByZXR1cm4gRGltZW5zaW9ucy5mcm9tKFxuICAgICAgbGVuZ3RoLnVuaXQsXG4gICAgICBsZW5ndGgudmFsdWUsXG4gICAgICB0aGlzLmNvbnZlcnRUb1VuaXQod2lkdGgsIGxlbmd0aC51bml0KS52YWx1ZSxcbiAgICAgIHRoaXMuY29udmVydFRvVW5pdChoZWlnaHQsIGxlbmd0aC51bml0KS52YWx1ZVxuICAgICk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVuaXRTZXJ2aWNlOiBFbGRlclVuaXRTZXJ2aWNlXG4gICkge1xuICB9XG5cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgd2l0aFVuaXQocXVhbnRpdHk6IFF1YW50aXR5LCB1bml0OiBVbml0KSB7XG4gICAgcmV0dXJuIFF1YW50aXR5LmZyb20odW5pdCwgcXVhbnRpdHkudmFsdWUpO1xuICB9XG5cbiAgcHVibGljIHdpdGhWYWx1ZShxdWFudGl0eTogUXVhbnRpdHksIHZhbHVlOiBudW1iZXIpIHtcbiAgICByZXR1cm4gUXVhbnRpdHkuZnJvbShxdWFudGl0eS51bml0LCB2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgY2FjaGVMb29rdXAobG9va3VwOiBRdWFudGl0eSk6IFF1YW50aXR5IHtcbiAgICByZXR1cm4gdGhpcy5RVUFOVElUWV9DQUNIRS5nZXQodGhpcy5nZXRRdWFudGl0eUlkZW50aWZpZXIobG9va3VwKSk7XG4gIH1cblxuICBwdWJsaWMgY2FjaGVVcGRhdGUoa2V5OiBRdWFudGl0eSwgdmFsdWU6IFF1YW50aXR5KSB7XG4gICAgaWYgKHRoaXMuUVVBTlRJVFlfQ0FDSEUuc2l6ZSA+PSB0aGlzLlFVQU5USVRZX0NBQ0hFX1NJWkUpIHtcbiAgICAgIHRoaXMuUVVBTlRJVFlfQ0FDSEUuY2xlYXIoKTtcbiAgICB9XG4gICAgdGhpcy5RVUFOVElUWV9DQUNIRS5zZXQodGhpcy5nZXRRdWFudGl0eUlkZW50aWZpZXIoa2V5KSwgdmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE11bHRpcGxpZXMgYSBxdWFudGl0eSB3aXRoIGEgbXVsdGlwbGllciBhbmQgcmV0dXJucyBhIHF1YW50aXR5LlxuICAgKlxuICAgKiBFeGFtcGxlOlxuICAgKiBRdWFudGl0eSgxMCwna2cnKSAqIDMgPSBRdWFudGl0eSgzMDAwMCwnZycpXG4gICAqXG4gICAqIEBwYXJhbSBxdWFudGl0eVxuICAgKiBAcGFyYW0gbXVsdGlwbGllclxuICAgKi9cblxuICBwdWJsaWMgbXVsdGlwbHkocXVhbnRpdHk6IFF1YW50aXR5LCBtdWx0aXBsaWVyOiBudW1iZXIpOiBRdWFudGl0eSB7XG5cbiAgICBpZiAoIXF1YW50aXR5IHx8ICFtdWx0aXBsaWVyKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIFF1YW50aXR5LmZyb20oXG4gICAgICBxdWFudGl0eS51bml0LFxuICAgICAgcXVhbnRpdHkudmFsdWUgKiBtdWx0aXBsaWVyXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXZpZGVzIGEgcXVhbnRpdHkgYnkgYW5vdGhlciBxdWFudGl0eSBhbmQgcmV0dXJucyBhIHNjYWxhci5cbiAgICpcbiAgICogRXhhbXBsZXM6XG4gICAqIFF1YW50aXR5KDEwLCdrZycpIC8gUXVhbnRpdHkoNSwna2cnKSA9IDJcbiAgICogUXVhbnRpdHkoMTAsJ2tnJykgLyBRdWFudGl0eSg1LCdnJykgPSAyMDAwXG4gICAqXG4gICAqIEBwYXJhbSBkaXZpZGVuZFxuICAgKiBAcGFyYW0gZGl2aXNvclxuICAgKi9cbiAgcHVibGljIGRpdmlkZUJ5UXVhbnRpdHkoZGl2aWRlbmQ6IFF1YW50aXR5LCBkaXZpc29yOiBRdWFudGl0eSk6IG51bWJlciB7XG5cbiAgICBpZiAoIWRpdmlkZW5kIHx8ICFkaXZpc29yKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgZGl2aWRlbmROb3JtYWwgPSAgdGhpcy50b0Jhc2VVbml0VmFsdWUoZGl2aWRlbmQpO1xuICAgIGNvbnN0IGRpdmlzb3JOb3JtYWwgPSAgdGhpcy50b0Jhc2VVbml0VmFsdWUoZGl2aXNvcik7XG4gICAgcmV0dXJuIGRpdmlkZW5kTm9ybWFsIC8gZGl2aXNvck5vcm1hbDtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFN1bXMgdXAgUXVhbnRpdGllcyBhbmQgcmV0dXJucyBhIFF1YW50aXR5LlxuICAgKlxuICAgKiBFeGFtcGxlOlxuICAgKiBRdWFudGl0eSgxMCwna2cnKSArIFF1YW50aXR5KDUsJ2tnJykgKyBRdWFudGl0eSg1LCdnJykgPSBRdWFudGl0eSgxNTAwNSwgJ2cnKVxuICAgKlxuICAgKiBAcGFyYW0gcXVhbnRpdGllc1xuICAgKi9cbiAgcHVibGljIHN1bShxdWFudGl0aWVzOiBRdWFudGl0eVtdKTogUXVhbnRpdHkge1xuICAgIGlmICghcXVhbnRpdGllcyB8fCBxdWFudGl0aWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgdGFyZ2V0VW5pdCA9IHF1YW50aXRpZXNbMF0udW5pdDtcblxuICAgIHJldHVybiBRdWFudGl0eS5mcm9tKFxuICAgICAgdGFyZ2V0VW5pdCxcbiAgICAgIHF1YW50aXRpZXMucmVkdWNlKFxuICAgICAgICAodG90YWwsIGFkZCkgPT4ge1xuICAgICAgICAgIHJldHVybiB0b3RhbCArIHRoaXMuY29udmVydFRvVW5pdChhZGQsIHRhcmdldFVuaXQpLnZhbHVlO1xuICAgICAgICB9LCAwXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJ0cmFjdHMgYSBxdWFudGl0eSBmcm9tIGFub3RoZXIgcXVhbnRpdHkgYW5kIHJldHVybnMgYSBxdWFudGl0eS5cbiAgICpcbiAgICogRXhhbXBsZTpcbiAgICogUXVhbnRpdHkoMTAsJ2tnJykgLSBRdWFudGl0eSg1LCdnJykgPSBRdWFudGl0eSg5OTk1LCAnZycpXG4gICAqXG4gICAqIEBwYXJhbSBtaW51ZW5kXG4gICAqIEBwYXJhbSBzdWJ0cmFoZW5kXG4gICAqL1xuICBwdWJsaWMgc3VidHJhY3QobWludWVuZDogUXVhbnRpdHksIHN1YnRyYWhlbmQ6IFF1YW50aXR5KTogUXVhbnRpdHkge1xuICAgIGlmICghbWludWVuZCB8fCAhc3VidHJhaGVuZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBRdWFudGl0eS5mcm9tKFxuICAgICAgbWludWVuZC51bml0LFxuICAgICAgbWludWVuZC52YWx1ZSAtIHRoaXMuY29udmVydFRvVW5pdChzdWJ0cmFoZW5kLCBtaW51ZW5kLnVuaXQpLnZhbHVlXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJ0cmFjdHMgYSBxdWFudGl0eSBmcm9tIGFub3RoZXIgcXVhbnRpdHkgYW5kIHJldHVybnMgYSBxdWFudGl0eS5cbiAgICpcbiAgICogRXhhbXBsZTpcbiAgICogUXVhbnRpdHkoMTAsJ2tnJykgKyBRdWFudGl0eSg1MDAsJ2cnKSA9IFF1YW50aXR5KDEwLjUsICdrZycpXG4gICAqXG4gICAqIEBwYXJhbSBsZWZ0XG4gICAqIEBwYXJhbSByaWdodFxuICAgKi9cbiAgcHVibGljIGFkZChsZWZ0OiBRdWFudGl0eSwgcmlnaHQ6IFF1YW50aXR5KTogUXVhbnRpdHkge1xuICAgIGlmICghbGVmdCB8fCAhcmlnaHQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gUXVhbnRpdHkuZnJvbShcbiAgICAgIGxlZnQudW5pdCxcbiAgICAgIGxlZnQudmFsdWUgLSB0aGlzLmNvbnZlcnRUb1VuaXQocmlnaHQsIGxlZnQudW5pdCkudmFsdWVcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybXMgYSBxdWFudGl0eSB0byBhbm90aGVyIHF1YW50aXR5IG9mIHRoZSBzYW1lIGRpbWVuc2lvbiBieSB0YXJnZXQtU0lcbiAgICpcbiAgICogQHBhcmFtIHF1YW50aXR5XG4gICAqIEBwYXJhbSB0YXJnZXRVbml0XG4gICAqL1xuICBwdWJsaWMgY29udmVydFRvVW5pdChxdWFudGl0eTogUXVhbnRpdHksIHRhcmdldFVuaXQ6IFVuaXQpOiBRdWFudGl0eSB7XG4gICAgaWYgKCFxdWFudGl0eSB8fCAhdGFyZ2V0VW5pdCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHF1YW50aXR5LnVuaXQgPT09IHRhcmdldFVuaXQpIHtcbiAgICAgIHJldHVybiBRdWFudGl0eS5mcm9tKHF1YW50aXR5LnVuaXQsIHF1YW50aXR5LnZhbHVlKTtcbiAgICB9XG5cbiAgICBjb25zdCB0YXJnZXRCYXNlRmFjdG9yID0gdGhpcy51bml0U2VydmljZS5nZXRUb0Jhc2VGYWN0b3IodGFyZ2V0VW5pdCk7XG5cbiAgICBpZiAodGFyZ2V0QmFzZUZhY3RvciA+IDApIHtcbiAgICAgIHJldHVybiBRdWFudGl0eS5mcm9tKFxuICAgICAgICB0YXJnZXRVbml0LFxuICAgICAgICB0aGlzLnRvQmFzZVVuaXRWYWx1ZShxdWFudGl0eSkgLyB0YXJnZXRCYXNlRmFjdG9yXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZ2dlci53YXJuKCdGYWlsZWQgdG8gY29udmVydCBxdWFudGl0eSB0byB0YXJnZXQgdW5pdDonICsgdGFyZ2V0VW5pdCArICcuIFF1YW50aXR5OiAnLCBxdWFudGl0eSk7XG4gICAgICByZXR1cm4gcXVhbnRpdHk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHRvQmFzZVVuaXRWYWx1ZShxdWFudGl0eTogUXVhbnRpdHkpOiBudW1iZXIge1xuICAgIGNvbnN0IHRhcmdldEJhc2VGYWN0b3IgPSB0aGlzLnVuaXRTZXJ2aWNlLmdldFRvQmFzZUZhY3RvcihxdWFudGl0eS51bml0KTtcbiAgICByZXR1cm4gcXVhbnRpdHkudmFsdWUgKiB0YXJnZXRCYXNlRmFjdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBxdWFudGl0eSBpbiBhIG5vcm1hbGl6ZWQgZm9ybS5cbiAgICogQSBjYWNoZSBpcyB1c2VkIHRvIHJlZHVjZSBjYWxjdWxhdGlvbnMuXG4gICAqXG4gICAqIDg1MDAga2cgLT4gOC41IHRcbiAgICogOTAwMDAwMCBtbSAtPiA5IGttXG4gICAqIDEyMTUgbSAtPiAxLjIga21cbiAgICpcbiAgICogQHBhcmFtIHF1YW50aXR5XG4gICAqL1xuICBwdWJsaWMgbm9ybWFsaXplKHF1YW50aXR5OiBRdWFudGl0eSk6IFF1YW50aXR5IHtcblxuICAgIC8vIENoZWNrIGNhY2hlXG4gICAgY29uc3QgY2FjaGVkSXRlbSA9IHRoaXMuY2FjaGVMb29rdXAocXVhbnRpdHkpO1xuXG4gICAgLy8gVmFsdWUgaXMgaW4gY2FjaGVcbiAgICBpZiAoY2FjaGVkSXRlbSkge1xuICAgICAgcmV0dXJuIGNhY2hlZEl0ZW07XG4gICAgfSBlbHNlIHtcblxuICAgICAgY29uc3QgdGFyZ2V0UXVhbnRpdHkgPSB0aGlzLm5vcm1hbGl6ZUludGVybmFsKHF1YW50aXR5KTtcblxuICAgICAgLy8gVXBkYXRlIGNhY2hlXG4gICAgICB0aGlzLmNhY2hlVXBkYXRlKHF1YW50aXR5LCB0YXJnZXRRdWFudGl0eSk7XG5cbiAgICAgIHJldHVybiB0YXJnZXRRdWFudGl0eTtcblxuICAgIH1cbiAgfVxuXG5cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBNZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIG5vcm1hbGl6ZUludGVybmFsKHF1YW50aXR5OiBRdWFudGl0eSk6IFF1YW50aXR5IHtcblxuICAgIC8vIEdpdmVuIHF1YW50aXR5IHZhbHVlIGluIGJhc2UgdW5pdFxuXG4gICAgY29uc3QgZGltZW5zaW9uID0gdGhpcy51bml0U2VydmljZS5nZXRVbml0RGltZW5zaW9uKHF1YW50aXR5LnVuaXQpO1xuXG4gICAgaWYgKCFkaW1lbnNpb24pIHsgcmV0dXJuIHF1YW50aXR5OyB9XG5cbiAgICBjb25zdCBiYXNlVmFsdWUgPSB0aGlzLnRvQmFzZVVuaXRWYWx1ZShxdWFudGl0eSk7XG5cbiAgICBsZXQgc3VpdGFibGVVbml0OiBVbml0SW5mbztcblxuICAgIGNvbnN0IGRpbWVuc2lvblVuaXRzID0gdGhpcy51bml0U2VydmljZS5nZXRVbml0SW5mb3NCeURpbWVuc2lvbihkaW1lbnNpb24pO1xuXG4gICAgaWYgKGRpbWVuc2lvblVuaXRzKSB7XG5cbiAgICAgIGNvbnN0IGZhY3RvclNvcnRlZFVuaXRzID0gZGltZW5zaW9uVW5pdHMuc29ydCgoYSwgYikgPT4gYi50b0Jhc2VGYWN0b3IgLSBhLnRvQmFzZUZhY3Rvcik7XG5cbiAgICAgIGZvciAoY29uc3QgdW5pdEluZm8gb2YgZmFjdG9yU29ydGVkVW5pdHMpIHtcbiAgICAgICAgY29uc3Qgc2lnbmVkQmFzZVZhbHVlID0gKChiYXNlVmFsdWUgPCAwKSA/IGJhc2VWYWx1ZSAqIC0xIDogYmFzZVZhbHVlKTtcbiAgICAgICAgaWYgKHVuaXRJbmZvLnRvQmFzZUZhY3RvciA8PSBzaWduZWRCYXNlVmFsdWUpIHtcbiAgICAgICAgICBzdWl0YWJsZVVuaXQgPSB1bml0SW5mbztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnQ291bGQgbm90IGZpbmQgRGltZW5zaW9uIGluZm8gZm9yICcgKyBkaW1lbnNpb24gKyAnLiAoJyArIHF1YW50aXR5LnVuaXQgKyAnIC0tPiAnICsgZGltZW5zaW9uICsgJyknKTtcbiAgICB9XG5cbiAgICBpZiAoIXN1aXRhYmxlVW5pdCkge1xuICAgICAgcmV0dXJuIHF1YW50aXR5O1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRUb0Jhc2UgPSB0aGlzLnVuaXRTZXJ2aWNlLmdldFRvQmFzZUZhY3RvcihxdWFudGl0eS51bml0KTtcblxuICAgIC8vIEVuc3VyZSB3ZSBwcmVmZXIgdGhlIGluaXRpYWwgdW5pdCBpZiB0aGUgYWN0dWFsIHZhbHVlIGlzIG5vdCBhZmZlY3RlZC5cbiAgICAvLyBUaGlzIGhlbHBzIHRvIGJlIGNvbnNpc3RlbnQgYW5kIGRpc3BsYXkgdGhlIGFjdHVhbCB1bml0IGluIHJhcmUgY2FzZXMgd2hlbiBtdWx0aXBsZSB1bml0IGFsdGVybmF0aXZlcyBleGlzdCAoc2FtZSBmYWN0b3IpXG4gICAgaWYgKHN1aXRhYmxlVW5pdC50b0Jhc2VGYWN0b3IgPT09IGN1cnJlbnRUb0Jhc2UpIHtcbiAgICAgIHJldHVybiBxdWFudGl0eTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuY29udmVydFRvVW5pdChxdWFudGl0eSwgc3VpdGFibGVVbml0LnVuaXQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0UXVhbnRpdHlJZGVudGlmaWVyKHF1YW50aXR5OiBRdWFudGl0eSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHF1YW50aXR5LnZhbHVlICsgJy0nICsgcXVhbnRpdHkudW5pdDtcbiAgfVxuXG59XG4iXX0=
270
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItcXVhbnRpdHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvbWVhc3VyZXMvdXRpbC9lbGRlci1xdWFudGl0eS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7OztBQVVuRCxNQUFNLE9BQU8sb0JBQW9CO0lBYS9COzs7O2dGQUk0RTtJQUVyRSxVQUFVLENBQUMsTUFBZ0IsRUFBRSxLQUFlO1FBQ2pELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUMxQixNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUMzQixDQUFDO0lBQ0osQ0FBQztJQUVNLGdCQUFnQixDQUNyQixNQUFnQixFQUNoQixLQUFlLEVBQ2YsTUFBZ0I7UUFFaEIsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUNwQixNQUFNLENBQUMsSUFBSSxFQUNYLE1BQU0sQ0FBQyxLQUFLLEVBQ1osSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFDNUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FDOUMsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksVUFBVSxDQUFDLFVBQXNCO1FBQ3RDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFD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O2dCQUN2RSxJQUFJLFFBQVEsQ0FBQyxZQUFZLElBQUksZUFBZSxFQUFFO29CQUM1QyxZQUFZLEdBQUcsUUFBUSxDQUFDO29CQUN4QixNQUFNO2lCQUNQO2FBQ0Y7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsb0NBQW9DLEdBQUcsU0FBUyxHQUFHLEtBQUssR0FBRyxRQUFRLENBQUMsSUFBSSxHQUFHLE9BQU8sR0FBRyxTQUFTLEdBQUcsR0FBRyxDQUFDLENBQUM7U0FDekg7UUFFRCxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ2pCLE9BQU8sUUFBUSxDQUFDO1NBQ2pCO1FBRUQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXRFLHlFQUF5RTtRQUN6RSw0SEFBNEg7UUFDNUgsSUFBSSxZQUFZLENBQUMsWUFBWSxLQUFLLGFBQWEsRUFBRTtZQUMvQyxPQUFPLFFBQVEsQ0FBQztTQUNqQjthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDeEQ7SUFDSCxDQUFDO0lBRU8scUJBQXFCLENBQUMsUUFBa0I7UUFDOUMsT0FBTyxRQUFRLENBQUMsS0FBSyxHQUFHLEdBQUcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQzlDLENBQUM7OEdBdlZVLG9CQUFvQjtrSEFBcEIsb0JBQW9CLGNBRm5CLE1BQU07OzJGQUVQLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1VuaXR9IGZyb20gJy4uL21vZGVsL3VuaXQnO1xuaW1wb3J0IHtRdWFudGl0eX0gZnJvbSAnLi4vbW9kZWwvcXVhbnRpdHknO1xuaW1wb3J0IHtVbml0SW5mb30gZnJvbSAnLi4vbW9kZWwvdW5pdC1yZWdpc3RyeSc7XG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtFbGRlclVuaXRTZXJ2aWNlfSBmcm9tICcuLi9lbGRlci11bml0LnNlcnZpY2UnO1xuaW1wb3J0IHtEaW1lbnNpb25zfSBmcm9tICcuLi9tb2RlbC9kaW1lbnNpb25zJztcbmltcG9ydCB7TG9nZ2VyRmFjdG9yeX0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInO1xuXG5pbnRlcmZhY2UgUXVhbnRpdHlXaXRoQmFzZVZhbHVlIHtcbiAgb3JpZ2luYWw6IFF1YW50aXR5O1xuICBiYXNlVmFsdWU6IG51bWJlcjtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRWxkZXJRdWFudGl0eVNlcnZpY2Uge1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IFFVQU5USVRZX0NBQ0hFX1NJWkUgPSA1MDA7XG4gIHByaXZhdGUgcmVhZG9ubHkgUVVBTlRJVFlfQ0FDSEUgPSBuZXcgTWFwPHN0cmluZywgUXVhbnRpdHk+KCk7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEJ1aWxkZXIgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIGNyZWF0ZUFyZWEobGVuZ3RoOiBRdWFudGl0eSwgd2lkdGg6IFF1YW50aXR5KTogRGltZW5zaW9ucyB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlRGltZW5zaW9ucyhcbiAgICAgIGxlbmd0aCxcbiAgICAgIHdpZHRoLFxuICAgICAgUXVhbnRpdHkuemVybyhsZW5ndGgudW5pdClcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGNyZWF0ZURpbWVuc2lvbnMoXG4gICAgbGVuZ3RoOiBRdWFudGl0eSxcbiAgICB3aWR0aDogUXVhbnRpdHksXG4gICAgaGVpZ2h0OiBRdWFudGl0eVxuICApOiBEaW1lbnNpb25zIHtcbiAgICByZXR1cm4gRGltZW5zaW9ucy5mcm9tKFxuICAgICAgbGVuZ3RoLnVuaXQsXG4gICAgICBsZW5ndGgudmFsdWUsXG4gICAgICB0aGlzLmNvbnZlcnRUb1VuaXQod2lkdGgsIGxlbmd0aC51bml0KS52YWx1ZSxcbiAgICAgIHRoaXMuY29udmVydFRvVW5pdChoZWlnaHQsIGxlbmd0aC51bml0KS52YWx1ZVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGNvcHkgb2YgdGhlIG1heGltdW0gKGxvbmdlc3QpIGVkZ2Ugb2YgdGhlIGRpbWVuc2lvbnMuXG4gICAqXG4gICAqIEBwYXJhbSBkaW1lbnNpb25zXG4gICAqL1xuICBwdWJsaWMgZ2V0TWF4RWRnZShkaW1lbnNpb25zOiBEaW1lbnNpb25zKTogUXVhbnRpdHkge1xuICAgIGlmICghZGltZW5zaW9ucykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBRdWFudGl0eS5mcm9tKFxuICAgICAgICBkaW1lbnNpb25zLnVuaXQsXG4gICAgICAgIE1hdGgubWF4KGRpbWVuc2lvbnMud2lkdGgsIGRpbWVuc2lvbnMubGVuZ3RoLCBkaW1lbnNpb25zLmhlaWdodClcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSB1bml0U2VydmljZTogRWxkZXJVbml0U2VydmljZVxuICApIHtcbiAgfVxuXG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIHdpdGhVbml0KHF1YW50aXR5OiBRdWFudGl0eSwgdW5pdDogVW5pdCkge1xuICAgIHJldHVybiBRdWFudGl0eS5mcm9tKHVuaXQsIHF1YW50aXR5LnZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyB3aXRoVmFsdWUocXVhbnRpdHk6IFF1YW50aXR5LCB2YWx1ZTogbnVtYmVyKSB7XG4gICAgcmV0dXJuIFF1YW50aXR5LmZyb20ocXVhbnRpdHkudW5pdCwgdmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGNhY2hlTG9va3VwKGxvb2t1cDogUXVhbnRpdHkpOiBRdWFudGl0eSB7XG4gICAgcmV0dXJuIHRoaXMuUVVBTlRJVFlfQ0FDSEUuZ2V0KHRoaXMuZ2V0UXVhbnRpdHlJZGVudGlmaWVyKGxvb2t1cCkpO1xuICB9XG5cbiAgcHVibGljIGNhY2hlVXBkYXRlKGtleTogUXVhbnRpdHksIHZhbHVlOiBRdWFudGl0eSkge1xuICAgIGlmICh0aGlzLlFVQU5USVRZX0NBQ0hFLnNpemUgPj0gdGhpcy5RVUFOVElUWV9DQUNIRV9TSVpFKSB7XG4gICAgICB0aGlzLlFVQU5USVRZX0NBQ0hFLmNsZWFyKCk7XG4gICAgfVxuICAgIHRoaXMuUVVBTlRJVFlfQ0FDSEUuc2V0KHRoaXMuZ2V0UXVhbnRpdHlJZGVudGlmaWVyKGtleSksIHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNdWx0aXBsaWVzIGEgcXVhbnRpdHkgd2l0aCBhIG11bHRpcGxpZXIgYW5kIHJldHVybnMgYSBxdWFudGl0eS5cbiAgICpcbiAgICogRXhhbXBsZTpcbiAgICogUXVhbnRpdHkoMTAsJ2tnJykgKiAzID0gUXVhbnRpdHkoMzAwMDAsJ2cnKVxuICAgKlxuICAgKiBAcGFyYW0gcXVhbnRpdHlcbiAgICogQHBhcmFtIG11bHRpcGxpZXJcbiAgICovXG5cbiAgcHVibGljIG11bHRpcGx5KHF1YW50aXR5OiBRdWFudGl0eSwgbXVsdGlwbGllcjogbnVtYmVyKTogUXVhbnRpdHkge1xuXG4gICAgaWYgKCFxdWFudGl0eSB8fCAhbXVsdGlwbGllcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBRdWFudGl0eS5mcm9tKFxuICAgICAgcXVhbnRpdHkudW5pdCxcbiAgICAgIHF1YW50aXR5LnZhbHVlICogbXVsdGlwbGllclxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRGl2aWRlcyBhIHF1YW50aXR5IGJ5IGFub3RoZXIgcXVhbnRpdHkgYW5kIHJldHVybnMgYSBzY2FsYXIuXG4gICAqXG4gICAqIEV4YW1wbGVzOlxuICAgKiBRdWFudGl0eSgxMCwna2cnKSAvIFF1YW50aXR5KDUsJ2tnJykgPSAyXG4gICAqIFF1YW50aXR5KDEwLCdrZycpIC8gUXVhbnRpdHkoNSwnZycpID0gMjAwMFxuICAgKlxuICAgKiBAcGFyYW0gZGl2aWRlbmRcbiAgICogQHBhcmFtIGRpdmlzb3JcbiAgICovXG4gIHB1YmxpYyBkaXZpZGVCeVF1YW50aXR5KGRpdmlkZW5kOiBRdWFudGl0eSwgZGl2aXNvcjogUXVhbnRpdHkpOiBudW1iZXIge1xuXG4gICAgaWYgKCFkaXZpZGVuZCB8fCAhZGl2aXNvcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGRpdmlkZW5kTm9ybWFsID0gIHRoaXMudG9CYXNlVW5pdFZhbHVlKGRpdmlkZW5kKTtcbiAgICBjb25zdCBkaXZpc29yTm9ybWFsID0gIHRoaXMudG9CYXNlVW5pdFZhbHVlKGRpdmlzb3IpO1xuICAgIHJldHVybiBkaXZpZGVuZE5vcm1hbCAvIGRpdmlzb3JOb3JtYWw7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBTdW1zIHVwIFF1YW50aXRpZXMgYW5kIHJldHVybnMgYSBRdWFudGl0eS5cbiAgICpcbiAgICogRXhhbXBsZTpcbiAgICogUXVhbnRpdHkoMTAsJ2tnJykgKyBRdWFudGl0eSg1LCdrZycpICsgUXVhbnRpdHkoNSwnZycpID0gUXVhbnRpdHkoMTUwMDUsICdnJylcbiAgICpcbiAgICogQHBhcmFtIHF1YW50aXRpZXNcbiAgICovXG4gIHB1YmxpYyBzdW0ocXVhbnRpdGllczogUXVhbnRpdHlbXSk6IFF1YW50aXR5IHtcbiAgICBpZiAoIXF1YW50aXRpZXMgfHwgcXVhbnRpdGllcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHRhcmdldFVuaXQgPSBxdWFudGl0aWVzWzBdLnVuaXQ7XG5cbiAgICByZXR1cm4gUXVhbnRpdHkuZnJvbShcbiAgICAgIHRhcmdldFVuaXQsXG4gICAgICBxdWFudGl0aWVzLnJlZHVjZShcbiAgICAgICAgKHRvdGFsLCBhZGQpID0+IHtcbiAgICAgICAgICByZXR1cm4gdG90YWwgKyB0aGlzLmNvbnZlcnRUb1VuaXQoYWRkLCB0YXJnZXRVbml0KS52YWx1ZTtcbiAgICAgICAgfSwgMFxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogU3VidHJhY3RzIGEgcXVhbnRpdHkgZnJvbSBhbm90aGVyIHF1YW50aXR5IGFuZCByZXR1cm5zIGEgcXVhbnRpdHkuXG4gICAqXG4gICAqIEV4YW1wbGU6XG4gICAqIFF1YW50aXR5KDEwLCdrZycpIC0gUXVhbnRpdHkoNSwnZycpID0gUXVhbnRpdHkoOTk5NSwgJ2cnKVxuICAgKlxuICAgKiBAcGFyYW0gbWludWVuZFxuICAgKiBAcGFyYW0gc3VidHJhaGVuZFxuICAgKi9cbiAgcHVibGljIHN1YnRyYWN0KG1pbnVlbmQ6IFF1YW50aXR5LCBzdWJ0cmFoZW5kOiBRdWFudGl0eSk6IFF1YW50aXR5IHtcbiAgICBpZiAoIW1pbnVlbmQgfHwgIXN1YnRyYWhlbmQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gUXVhbnRpdHkuZnJvbShcbiAgICAgIG1pbnVlbmQudW5pdCxcbiAgICAgIG1pbnVlbmQudmFsdWUgLSB0aGlzLmNvbnZlcnRUb1VuaXQoc3VidHJhaGVuZCwgbWludWVuZC51bml0KS52YWx1ZVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogU3VidHJhY3RzIGEgcXVhbnRpdHkgZnJvbSBhbm90aGVyIHF1YW50aXR5IGFuZCByZXR1cm5zIGEgcXVhbnRpdHkuXG4gICAqXG4gICAqIEV4YW1wbGU6XG4gICAqIFF1YW50aXR5KDEwLCdrZycpICsgUXVhbnRpdHkoNTAwLCdnJykgPSBRdWFudGl0eSgxMC41LCAna2cnKVxuICAgKlxuICAgKiBAcGFyYW0gbGVmdFxuICAgKiBAcGFyYW0gcmlnaHRcbiAgICovXG4gIHB1YmxpYyBhZGQobGVmdDogUXVhbnRpdHksIHJpZ2h0OiBRdWFudGl0eSk6IFF1YW50aXR5IHtcbiAgICBpZiAoIWxlZnQgfHwgIXJpZ2h0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIFF1YW50aXR5LmZyb20oXG4gICAgICBsZWZ0LnVuaXQsXG4gICAgICBsZWZ0LnZhbHVlIC0gdGhpcy5jb252ZXJ0VG9Vbml0KHJpZ2h0LCBsZWZ0LnVuaXQpLnZhbHVlXG4gICAgKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG1heCBxdWFudGl0eSBvZiBhbiBhcnJheSBvZiBxdWFudGl0aWVzLlxuICAgKlxuICAgKiBFeGFtcGxlOlxuICAgKiBRdWFudGl0eSgxMCwgJ20nKSwgUXVhbnRpdHkoMjUwMCwgJ2NtJyksIFF1YW50aXR5KDAuMDAzLCAna20nKSA9IFF1YW50aXR5KDI1MDAsICdjbScpXG4gICAqXG4gICAqIEBwYXJhbSBxdWFudGl0aWVzXG4gICAqL1xuXG4gIHB1YmxpYyBtYXgocXVhbnRpdGllczogUXVhbnRpdHlbXSk6IFF1YW50aXR5IHtcblxuICAgIGlmICghcXVhbnRpdGllcyB8fCBxdWFudGl0aWVzLmxlbmd0aCA9PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBoZWxwZXJzID0gcXVhbnRpdGllc1xuICAgICAgLm1hcChxdWFudGl0eSA9PiA8UXVhbnRpdHlXaXRoQmFzZVZhbHVlPntcbiAgICAgICAgb3JpZ2luYWw6IHF1YW50aXR5LFxuICAgICAgICBiYXNlVmFsdWU6IHRoaXMudG9CYXNlVW5pdFZhbHVlKHF1YW50aXR5KVxuICAgICAgfSk7XG5cbiAgICBoZWxwZXJzLnNvcnQoKGEsIGIpID0+IGIuYmFzZVZhbHVlIC0gYS5iYXNlVmFsdWUpO1xuXG4gICAgcmV0dXJuIGhlbHBlcnNbMF0ub3JpZ2luYWw7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm1zIGEgcXVhbnRpdHkgdG8gYW5vdGhlciBxdWFudGl0eSBvZiB0aGUgc2FtZSBkaW1lbnNpb24gYnkgdGFyZ2V0LVNJXG4gICAqXG4gICAqIEBwYXJhbSBxdWFudGl0eVxuICAgKiBAcGFyYW0gdGFyZ2V0VW5pdFxuICAgKi9cbiAgcHVibGljIGNvbnZlcnRUb1VuaXQocXVhbnRpdHk6IFF1YW50aXR5LCB0YXJnZXRVbml0OiBVbml0KTogUXVhbnRpdHkge1xuICAgIGlmICghcXVhbnRpdHkgfHwgIXRhcmdldFVuaXQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChxdWFudGl0eS51bml0ID09PSB0YXJnZXRVbml0KSB7XG4gICAgICByZXR1cm4gUXVhbnRpdHkuZnJvbShxdWFudGl0eS51bml0LCBxdWFudGl0eS52YWx1ZSk7XG4gICAgfVxuXG4gICAgY29uc3QgdGFyZ2V0QmFzZUZhY3RvciA9IHRoaXMudW5pdFNlcnZpY2UuZ2V0VG9CYXNlRmFjdG9yKHRhcmdldFVuaXQpO1xuXG4gICAgaWYgKHRhcmdldEJhc2VGYWN0b3IgPiAwKSB7XG4gICAgICByZXR1cm4gUXVhbnRpdHkuZnJvbShcbiAgICAgICAgdGFyZ2V0VW5pdCxcbiAgICAgICAgdGhpcy50b0Jhc2VVbml0VmFsdWUocXVhbnRpdHkpIC8gdGFyZ2V0QmFzZUZhY3RvclxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2dnZXIud2FybignRmFpbGVkIHRvIGNvbnZlcnQgcXVhbnRpdHkgdG8gdGFyZ2V0IHVuaXQ6JyArIHRhcmdldFVuaXQgKyAnLiBRdWFudGl0eTogJywgcXVhbnRpdHkpO1xuICAgICAgcmV0dXJuIHF1YW50aXR5O1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB0b0Jhc2VVbml0VmFsdWUocXVhbnRpdHk6IFF1YW50aXR5KTogbnVtYmVyIHtcbiAgICBjb25zdCB0YXJnZXRCYXNlRmFjdG9yID0gdGhpcy51bml0U2VydmljZS5nZXRUb0Jhc2VGYWN0b3IocXVhbnRpdHkudW5pdCk7XG4gICAgcmV0dXJuIHF1YW50aXR5LnZhbHVlICogdGFyZ2V0QmFzZUZhY3RvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgcXVhbnRpdHkgaW4gYSBub3JtYWxpemVkIGZvcm0uXG4gICAqIEEgY2FjaGUgaXMgdXNlZCB0byByZWR1Y2UgY2FsY3VsYXRpb25zLlxuICAgKlxuICAgKiA4NTAwIGtnIC0+IDguNSB0XG4gICAqIDkwMDAwMDAgbW0gLT4gOSBrbVxuICAgKiAxMjE1IG0gLT4gMS4yIGttXG4gICAqXG4gICAqIEBwYXJhbSBxdWFudGl0eVxuICAgKi9cbiAgcHVibGljIG5vcm1hbGl6ZShxdWFudGl0eTogUXVhbnRpdHkpOiBRdWFudGl0eSB7XG5cbiAgICAvLyBDaGVjayBjYWNoZVxuICAgIGNvbnN0IGNhY2hlZEl0ZW0gPSB0aGlzLmNhY2hlTG9va3VwKHF1YW50aXR5KTtcblxuICAgIC8vIFZhbHVlIGlzIGluIGNhY2hlXG4gICAgaWYgKGNhY2hlZEl0ZW0pIHtcbiAgICAgIHJldHVybiBjYWNoZWRJdGVtO1xuICAgIH0gZWxzZSB7XG5cbiAgICAgIGNvbnN0IHRhcmdldFF1YW50aXR5ID0gdGhpcy5ub3JtYWxpemVJbnRlcm5hbChxdWFudGl0eSk7XG5cbiAgICAgIC8vIFVwZGF0ZSBjYWNoZVxuICAgICAgdGhpcy5jYWNoZVVwZGF0ZShxdWFudGl0eSwgdGFyZ2V0UXVhbnRpdHkpO1xuXG4gICAgICByZXR1cm4gdGFyZ2V0UXVhbnRpdHk7XG5cbiAgICB9XG4gIH1cblxuXG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgTWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSBub3JtYWxpemVJbnRlcm5hbChxdWFudGl0eTogUXVhbnRpdHkpOiBRdWFudGl0eSB7XG5cbiAgICAvLyBHaXZlbiBxdWFudGl0eSB2YWx1ZSBpbiBiYXNlIHVuaXRcblxuICAgIGNvbnN0IGRpbWVuc2lvbiA9IHRoaXMudW5pdFNlcnZpY2UuZ2V0VW5pdERpbWVuc2lvbihxdWFudGl0eS51bml0KTtcblxuICAgIGlmICghZGltZW5zaW9uKSB7IHJldHVybiBxdWFudGl0eTsgfVxuXG4gICAgY29uc3QgYmFzZVZhbHVlID0gdGhpcy50b0Jhc2VVbml0VmFsdWUocXVhbnRpdHkpO1xuXG4gICAgbGV0IHN1aXRhYmxlVW5pdDogVW5pdEluZm87XG5cbiAgICBjb25zdCBkaW1lbnNpb25Vbml0cyA9IHRoaXMudW5pdFNlcnZpY2UuZ2V0VW5pdEluZm9zQnlEaW1lbnNpb24oZGltZW5zaW9uKTtcblxuICAgIGlmIChkaW1lbnNpb25Vbml0cykge1xuXG4gICAgICBjb25zdCBmYWN0b3JTb3J0ZWRVbml0cyA9IGRpbWVuc2lvblVuaXRzLnNvcnQoKGEsIGIpID0+IGIudG9CYXNlRmFjdG9yIC0gYS50b0Jhc2VGYWN0b3IpO1xuXG4gICAgICBmb3IgKGNvbnN0IHVuaXRJbmZvIG9mIGZhY3RvclNvcnRlZFVuaXRzKSB7XG4gICAgICAgIGNvbnN0IHNpZ25lZEJhc2VWYWx1ZSA9ICgoYmFzZVZhbHVlIDwgMCkgPyBiYXNlVmFsdWUgKiAtMSA6IGJhc2VWYWx1ZSk7XG4gICAgICAgIGlmICh1bml0SW5mby50b0Jhc2VGYWN0b3IgPD0gc2lnbmVkQmFzZVZhbHVlKSB7XG4gICAgICAgICAgc3VpdGFibGVVbml0ID0gdW5pdEluZm87XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ0NvdWxkIG5vdCBmaW5kIERpbWVuc2lvbiBpbmZvIGZvciAnICsgZGltZW5zaW9uICsgJy4gKCcgKyBxdWFudGl0eS51bml0ICsgJyAtLT4gJyArIGRpbWVuc2lvbiArICcpJyk7XG4gICAgfVxuXG4gICAgaWYgKCFzdWl0YWJsZVVuaXQpIHtcbiAgICAgIHJldHVybiBxdWFudGl0eTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50VG9CYXNlID0gdGhpcy51bml0U2VydmljZS5nZXRUb0Jhc2VGYWN0b3IocXVhbnRpdHkudW5pdCk7XG5cbiAgICAvLyBFbnN1cmUgd2UgcHJlZmVyIHRoZSBpbml0aWFsIHVuaXQgaWYgdGhlIGFjdHVhbCB2YWx1ZSBpcyBub3QgYWZmZWN0ZWQuXG4gICAgLy8gVGhpcyBoZWxwcyB0byBiZSBjb25zaXN0ZW50IGFuZCBkaXNwbGF5IHRoZSBhY3R1YWwgdW5pdCBpbiByYXJlIGNhc2VzIHdoZW4gbXVsdGlwbGUgdW5pdCBhbHRlcm5hdGl2ZXMgZXhpc3QgKHNhbWUgZmFjdG9yKVxuICAgIGlmIChzdWl0YWJsZVVuaXQudG9CYXNlRmFjdG9yID09PSBjdXJyZW50VG9CYXNlKSB7XG4gICAgICByZXR1cm4gcXVhbnRpdHk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRUb1VuaXQocXVhbnRpdHksIHN1aXRhYmxlVW5pdC51bml0KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFF1YW50aXR5SWRlbnRpZmllcihxdWFudGl0eTogUXVhbnRpdHkpOiBzdHJpbmcge1xuICAgIHJldHVybiBxdWFudGl0eS52YWx1ZSArICctJyArIHF1YW50aXR5LnVuaXQ7XG4gIH1cblxufVxuIl19
@@ -137,10 +137,10 @@ export class ElderBreadCrumbsComponent {
137
137
  }
138
138
  return nodes;
139
139
  }
140
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ElderBreadCrumbsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
141
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.3", type: ElderBreadCrumbsComponent, selector: "elder-bread-crumbs", inputs: { root: "root", rootTranslation: "rootTranslation", rootIcon: "rootIcon", backgroundColor: "backgroundColor", editModeEnabled: "editModeEnabled", path: "path" }, outputs: { pathChange: "pathChange" }, viewQueries: [{ propertyName: "trigger", first: true, predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: "<!-- main container-->\n<div class=\"layout-row place-start-center full breadcrumb-bar\"\n [style.background-color]=\"backgroundColor\"\n *ngIf=\"{enabled: editMode$ | async} as editMode\"\n>\n\n <!-- path container -->\n <form #breadCrumbForm=\"ngForm\"\n class=\"layout-row place-start-center flex breadcrumb-path\"\n (click)=\"enableEditMode()\"\n >\n <!-- path edit control (if editMode:enabled) -->\n <mat-form-field class=\"flex\" *ngIf=\"editMode.enabled\" elderDense >\n {{ pathInput.focus() }}\n <input matInput type=\"text\" name=\"pathInput\" #pathInput\n [ngModel]=\"path\" (ngModelChange)=\"onPathInputChange($event)\"\n (blur)=\"onPathEditBlur($event)\"\n elderKeyEvent [elderKeyEventFilter]=\"'Enter'\" (onElderKeyEvent)=\"onEnter()\">\n </mat-form-field>\n\n <!-- navigation control (if editMode:disabled) -->\n <ng-container *ngIf=\"!editMode.enabled\">\n <div class=\"layout-row place-center-center flex-none\"\n *ngFor=\"let node of nodes$ | async;let isFirst = first;let isLast = last\">\n\n <!-- arrow right icon as path element delimiter -->\n <mat-icon *ngIf=\"!isFirst\" class=\"noselect breadcrumb-arrow\">keyboard_arrow_right</mat-icon>\n\n <!-- root element (case root icon) -->\n <a *ngIf=\"isFirst && rootIcon\"\n mat-icon-button class=\"breadcrumb\"\n (click)=\"goToPath(node)\" elderStopEventPropagation\n >\n <mat-icon>{{rootIcon}}</mat-icon>\n </a>\n\n <!-- intermediate elements (not last and (not first or root icon)) -->\n <a *ngIf=\"!isLast && (!isFirst || !rootIcon)\"\n mat-button class=\"breadcrumb\"\n (click)=\"goToPath(node)\" elderStopEventPropagation\n >\n <span>{{node.name}}</span>\n </a>\n\n <!-- last element (is last and (not first or root icon)) -->\n <a mat-button class=\"breadcrumb\" *ngIf=\"isLast && (!isFirst || !rootIcon)\"\n (click)=\"null\" elderStopEventPropagation\n >\n {{node.name}}\n <mat-icon>arrow_drop_down</mat-icon>\n </a>\n\n </div>\n </ng-container>\n\n </form>\n\n <!-- bread crumb action menu button -->\n <button mat-icon-button type=\"button\" [matMenuTriggerFor]=\"menu\">\n\n <mat-icon style=\"font-size: 22px\">arrow_drop_down</mat-icon>\n\n <mat-menu #menu=\"matMenu\">\n\n <button mat-menu-item type=\"button\" [elderClipboardPut]=\"path\">\n <mat-icon>content_copy</mat-icon>\n <span>{{'Pfad kopieren'}}</span>\n </button>\n\n <button mat-menu-item type=\"button\" (click)=\"onMenuEditPathClick($event)\" elderStopEventPropagation>\n <mat-icon *ngIf=\"!editMode.enabled\">edit</mat-icon>\n <mat-icon *ngIf=\"editMode.enabled\">done</mat-icon>\n <span *ngIf=\"!editMode.enabled\">{{'Pfad editieren'}}</span>\n <span *ngIf=\"editMode.enabled\">{{'Pfad best\u00E4tigen'}}</span>\n </button>\n\n </mat-menu>\n\n </button>\n</div>\n\n\n", styles: [".breadcrumb-path{padding:0 8px}.breadcrumb{padding-left:4px;padding-right:4px;font-size:18px;font-weight:400}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i5.MatIconAnchor, selector: "a[mat-icon-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i7.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i7.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i7.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i8.ElderStopEventPropagationDirective, selector: "[elderStopEventPropagation]" }, { kind: "directive", type: i9.ElderKeyEventDirective, selector: "[elderKeyEvent]", inputs: ["elderKeyEventFilter", "elderKeyEventDown", "elderKeyEventChildren", "elderKeyEventCallback"], outputs: ["onElderKeyEvent"] }, { kind: "directive", type: i10.ElderClipboardPutDirective, selector: "[elderClipboardPut]", inputs: ["elderClipboardPut"], outputs: ["clipboardCopied"] }, { kind: "directive", type: i11.ElderFormFieldDenseDirective, selector: "mat-form-field[elderDense]", inputs: ["elderDense", "subscriptSizing", "floatLabel"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
140
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ElderBreadCrumbsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
141
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.7", type: ElderBreadCrumbsComponent, selector: "elder-bread-crumbs", inputs: { root: "root", rootTranslation: "rootTranslation", rootIcon: "rootIcon", backgroundColor: "backgroundColor", editModeEnabled: "editModeEnabled", path: "path" }, outputs: { pathChange: "pathChange" }, viewQueries: [{ propertyName: "trigger", first: true, predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: "<!-- main container-->\n<div class=\"layout-row place-start-center full breadcrumb-bar\"\n [style.background-color]=\"backgroundColor\"\n *ngIf=\"{enabled: editMode$ | async} as editMode\"\n>\n\n <!-- path container -->\n <form #breadCrumbForm=\"ngForm\"\n class=\"layout-row place-start-center flex breadcrumb-path\"\n (click)=\"enableEditMode()\"\n >\n <!-- path edit control (if editMode:enabled) -->\n <mat-form-field class=\"flex\" *ngIf=\"editMode.enabled\" elderDense >\n {{ pathInput.focus() }}\n <input matInput type=\"text\" name=\"pathInput\" #pathInput\n [ngModel]=\"path\" (ngModelChange)=\"onPathInputChange($event)\"\n (blur)=\"onPathEditBlur($event)\"\n elderKeyEvent [elderKeyEventFilter]=\"'Enter'\" (onElderKeyEvent)=\"onEnter()\">\n </mat-form-field>\n\n <!-- navigation control (if editMode:disabled) -->\n <ng-container *ngIf=\"!editMode.enabled\">\n <div class=\"layout-row place-center-center flex-none\"\n *ngFor=\"let node of nodes$ | async;let isFirst = first;let isLast = last\">\n\n <!-- arrow right icon as path element delimiter -->\n <mat-icon *ngIf=\"!isFirst\" class=\"noselect breadcrumb-arrow\">keyboard_arrow_right</mat-icon>\n\n <!-- root element (case root icon) -->\n <a *ngIf=\"isFirst && rootIcon\"\n mat-icon-button class=\"breadcrumb\"\n (click)=\"goToPath(node)\" elderStopEventPropagation\n >\n <mat-icon>{{rootIcon}}</mat-icon>\n </a>\n\n <!-- intermediate elements (not last and (not first or root icon)) -->\n <a *ngIf=\"!isLast && (!isFirst || !rootIcon)\"\n mat-button class=\"breadcrumb\"\n (click)=\"goToPath(node)\" elderStopEventPropagation\n >\n <span>{{node.name}}</span>\n </a>\n\n <!-- last element (is last and (not first or root icon)) -->\n <a mat-button class=\"breadcrumb\" *ngIf=\"isLast && (!isFirst || !rootIcon)\"\n (click)=\"null\" elderStopEventPropagation\n >\n {{node.name}}\n <mat-icon>arrow_drop_down</mat-icon>\n </a>\n\n </div>\n </ng-container>\n\n </form>\n\n <!-- bread crumb action menu button -->\n <button mat-icon-button type=\"button\" [matMenuTriggerFor]=\"menu\">\n\n <mat-icon style=\"font-size: 22px\">arrow_drop_down</mat-icon>\n\n <mat-menu #menu=\"matMenu\">\n\n <button mat-menu-item type=\"button\" [elderClipboardPut]=\"path\">\n <mat-icon>content_copy</mat-icon>\n <span>{{'Pfad kopieren'}}</span>\n </button>\n\n <button mat-menu-item type=\"button\" (click)=\"onMenuEditPathClick($event)\" elderStopEventPropagation>\n <mat-icon *ngIf=\"!editMode.enabled\">edit</mat-icon>\n <mat-icon *ngIf=\"editMode.enabled\">done</mat-icon>\n <span *ngIf=\"!editMode.enabled\">{{'Pfad editieren'}}</span>\n <span *ngIf=\"editMode.enabled\">{{'Pfad best\u00E4tigen'}}</span>\n </button>\n\n </mat-menu>\n\n </button>\n</div>\n\n\n", styles: [".breadcrumb-path{padding:0 8px}.breadcrumb{padding-left:4px;padding-right:4px;font-size:18px;font-weight:400}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i5.MatIconAnchor, selector: "a[mat-icon-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i7.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i7.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i7.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i8.ElderStopEventPropagationDirective, selector: "[elderStopEventPropagation]" }, { kind: "directive", type: i9.ElderKeyEventDirective, selector: "[elderKeyEvent]", inputs: ["elderKeyEventFilter", "elderKeyEventDown", "elderKeyEventChildren", "elderKeyEventCallback"], outputs: ["onElderKeyEvent"] }, { kind: "directive", type: i10.ElderClipboardPutDirective, selector: "[elderClipboardPut]", inputs: ["elderClipboardPut"], outputs: ["clipboardCopied"] }, { kind: "directive", type: i11.ElderFormFieldDenseDirective, selector: "mat-form-field[elderDense]", inputs: ["elderDense", "subscriptSizing", "floatLabel"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
142
142
  }
143
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ElderBreadCrumbsComponent, decorators: [{
143
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ElderBreadCrumbsComponent, decorators: [{
144
144
  type: Component,
145
145
  args: [{ selector: 'elder-bread-crumbs', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- main container-->\n<div class=\"layout-row place-start-center full breadcrumb-bar\"\n [style.background-color]=\"backgroundColor\"\n *ngIf=\"{enabled: editMode$ | async} as editMode\"\n>\n\n <!-- path container -->\n <form #breadCrumbForm=\"ngForm\"\n class=\"layout-row place-start-center flex breadcrumb-path\"\n (click)=\"enableEditMode()\"\n >\n <!-- path edit control (if editMode:enabled) -->\n <mat-form-field class=\"flex\" *ngIf=\"editMode.enabled\" elderDense >\n {{ pathInput.focus() }}\n <input matInput type=\"text\" name=\"pathInput\" #pathInput\n [ngModel]=\"path\" (ngModelChange)=\"onPathInputChange($event)\"\n (blur)=\"onPathEditBlur($event)\"\n elderKeyEvent [elderKeyEventFilter]=\"'Enter'\" (onElderKeyEvent)=\"onEnter()\">\n </mat-form-field>\n\n <!-- navigation control (if editMode:disabled) -->\n <ng-container *ngIf=\"!editMode.enabled\">\n <div class=\"layout-row place-center-center flex-none\"\n *ngFor=\"let node of nodes$ | async;let isFirst = first;let isLast = last\">\n\n <!-- arrow right icon as path element delimiter -->\n <mat-icon *ngIf=\"!isFirst\" class=\"noselect breadcrumb-arrow\">keyboard_arrow_right</mat-icon>\n\n <!-- root element (case root icon) -->\n <a *ngIf=\"isFirst && rootIcon\"\n mat-icon-button class=\"breadcrumb\"\n (click)=\"goToPath(node)\" elderStopEventPropagation\n >\n <mat-icon>{{rootIcon}}</mat-icon>\n </a>\n\n <!-- intermediate elements (not last and (not first or root icon)) -->\n <a *ngIf=\"!isLast && (!isFirst || !rootIcon)\"\n mat-button class=\"breadcrumb\"\n (click)=\"goToPath(node)\" elderStopEventPropagation\n >\n <span>{{node.name}}</span>\n </a>\n\n <!-- last element (is last and (not first or root icon)) -->\n <a mat-button class=\"breadcrumb\" *ngIf=\"isLast && (!isFirst || !rootIcon)\"\n (click)=\"null\" elderStopEventPropagation\n >\n {{node.name}}\n <mat-icon>arrow_drop_down</mat-icon>\n </a>\n\n </div>\n </ng-container>\n\n </form>\n\n <!-- bread crumb action menu button -->\n <button mat-icon-button type=\"button\" [matMenuTriggerFor]=\"menu\">\n\n <mat-icon style=\"font-size: 22px\">arrow_drop_down</mat-icon>\n\n <mat-menu #menu=\"matMenu\">\n\n <button mat-menu-item type=\"button\" [elderClipboardPut]=\"path\">\n <mat-icon>content_copy</mat-icon>\n <span>{{'Pfad kopieren'}}</span>\n </button>\n\n <button mat-menu-item type=\"button\" (click)=\"onMenuEditPathClick($event)\" elderStopEventPropagation>\n <mat-icon *ngIf=\"!editMode.enabled\">edit</mat-icon>\n <mat-icon *ngIf=\"editMode.enabled\">done</mat-icon>\n <span *ngIf=\"!editMode.enabled\">{{'Pfad editieren'}}</span>\n <span *ngIf=\"editMode.enabled\">{{'Pfad best\u00E4tigen'}}</span>\n </button>\n\n </mat-menu>\n\n </button>\n</div>\n\n\n", styles: [".breadcrumb-path{padding:0 8px}.breadcrumb{padding-left:4px;padding-right:4px;font-size:18px;font-weight:400}\n"] }]
146
146
  }], ctorParameters: () => [], propDecorators: { pathChange: [{
@@ -13,8 +13,8 @@ import * as i0 from "@angular/core";
13
13
  export * from './bread-crumbs/elder-bread-crumbs.component';
14
14
  export * from './path/path';
15
15
  export class ElderBreadCrumbsModule {
16
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ElderBreadCrumbsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
17
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.3", ngImport: i0, type: ElderBreadCrumbsModule, declarations: [ElderBreadCrumbsComponent], imports: [CommonModule, FormsModule, ReactiveFormsModule,
16
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ElderBreadCrumbsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
17
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.7", ngImport: i0, type: ElderBreadCrumbsModule, declarations: [ElderBreadCrumbsComponent], imports: [CommonModule, FormsModule, ReactiveFormsModule,
18
18
  TranslateModule,
19
19
  MatFormFieldModule,
20
20
  MatIconModule,
@@ -22,7 +22,7 @@ export class ElderBreadCrumbsModule {
22
22
  MatInputModule,
23
23
  MatMenuModule,
24
24
  ElderFormsDirectivesModule], exports: [ElderBreadCrumbsComponent] }); }
25
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ElderBreadCrumbsModule, imports: [CommonModule, FormsModule, ReactiveFormsModule,
25
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ElderBreadCrumbsModule, imports: [CommonModule, FormsModule, ReactiveFormsModule,
26
26
  TranslateModule,
27
27
  MatFormFieldModule,
28
28
  MatIconModule,
@@ -31,7 +31,7 @@ export class ElderBreadCrumbsModule {
31
31
  MatMenuModule,
32
32
  ElderFormsDirectivesModule] }); }
33
33
  }
34
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ElderBreadCrumbsModule, decorators: [{
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ElderBreadCrumbsModule, decorators: [{
35
35
  type: NgModule,
36
36
  args: [{
37
37
  imports: [
@@ -15,8 +15,8 @@ export { ElderNavListComponent } from './nav-list/elder-nav-list.component';
15
15
  export { ElderNavLinkComponent } from './nav-link/elder-nav-link.component';
16
16
  export { ElderNavGroupComponent } from './nav-group/elder-nav-group.component';
17
17
  export class ElderNavModule {
18
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ElderNavModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
19
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.3", ngImport: i0, type: ElderNavModule, declarations: [ElderNavListComponent,
18
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ElderNavModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
19
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.7", ngImport: i0, type: ElderNavModule, declarations: [ElderNavListComponent,
20
20
  ElderNavLinkComponent,
21
21
  ElderNavGroupComponent], imports: [CommonModule, RouterModule,
22
22
  MatIconModule, MatButtonModule,
@@ -24,12 +24,12 @@ export class ElderNavModule {
24
24
  TranslateModule, MatListModule, MatRippleModule], exports: [ElderNavListComponent,
25
25
  ElderNavLinkComponent,
26
26
  ElderNavGroupComponent] }); }
27
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ElderNavModule, imports: [CommonModule, RouterModule,
27
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ElderNavModule, imports: [CommonModule, RouterModule,
28
28
  MatIconModule, MatButtonModule,
29
29
  A11yModule,
30
30
  TranslateModule, MatListModule, MatRippleModule] }); }
31
31
  }
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ElderNavModule, decorators: [{
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ElderNavModule, decorators: [{
33
33
  type: NgModule,
34
34
  args: [{
35
35
  declarations: [
@@ -74,8 +74,8 @@ export class ElderNavGroupComponent {
74
74
  get isCurrentValueActive() {
75
75
  return this.navList.isActive(this.value);
76
76
  }
77
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ElderNavGroupComponent, deps: [{ token: i1.ElderNavListComponent }], target: i0.ɵɵFactoryTarget.Component }); }
78
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.3", type: ElderNavGroupComponent, selector: "elder-nav-group", inputs: { value: "value" }, outputs: { clicked: "clicked" }, queries: [{ propertyName: "children", predicate: ElderNavLinkComponent }], ngImport: i0, template: "\n<ng-container *ngIf=\"(state$ | async) as state\">\n <div class=\"layout-col nav-group\">\n <a matRipple\n class=\"layout-row place-start-center nav-group-button mat-button-fill\n mdc-list-item\n mdc-list-item--with-one-line\"\n [class.nav-group-button-open]=\"state.isOpen\"\n [class.nav-group-button-closed]=\"!state.isOpen\"\n [class.nav-group-button-active]=\"active$ | async\"\n (click)=\"itemClick($event)\"\n >\n\n <div class=\"layout-row place-start-center gap-lg full noselect mdc-list-item__primary-text\">\n <ng-content></ng-content>\n <span class=\"flex\"></span>\n <mat-icon>{{state.isOpen ? 'keyboard_arrow_up' : 'keyboard_arrow_down'}}</mat-icon>\n </div>\n </a>\n\n <!-- Nested Items projection -->\n <div class=\"layout-col nav-group-items-container p-sm gap-sm\"\n [@openClose]=\"state.isOpen ? 'open' : 'closed'\">\n <ng-content select=\"elder-nav-link\"></ng-content>\n </div>\n\n </div>\n</ng-container>\n", styles: [".nav-group-button-closed{padding-left:16px}.nav-group{min-height:48px}.nav-group-button{padding-right:16px;min-height:48px;font-size:16px;font-weight:400;border-radius:4px;cursor:pointer}.nav-group-button .mat-icon{height:24px;width:24px;font-size:24px;padding:4px}.nav-group-items-container{overflow:hidden}\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.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], animations: [
77
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ElderNavGroupComponent, deps: [{ token: i1.ElderNavListComponent }], target: i0.ɵɵFactoryTarget.Component }); }
78
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.7", type: ElderNavGroupComponent, selector: "elder-nav-group", inputs: { value: "value" }, outputs: { clicked: "clicked" }, queries: [{ propertyName: "children", predicate: ElderNavLinkComponent }], ngImport: i0, template: "\n<ng-container *ngIf=\"(state$ | async) as state\">\n <div class=\"layout-col nav-group\">\n <a matRipple\n class=\"layout-row place-start-center nav-group-button mat-button-fill\n mdc-list-item\n mdc-list-item--with-one-line\"\n [class.nav-group-button-open]=\"state.isOpen\"\n [class.nav-group-button-closed]=\"!state.isOpen\"\n [class.nav-group-button-active]=\"active$ | async\"\n (click)=\"itemClick($event)\"\n >\n\n <div class=\"layout-row place-start-center gap-lg full noselect mdc-list-item__primary-text\">\n <ng-content></ng-content>\n <span class=\"flex\"></span>\n <mat-icon>{{state.isOpen ? 'keyboard_arrow_up' : 'keyboard_arrow_down'}}</mat-icon>\n </div>\n </a>\n\n <!-- Nested Items projection -->\n <div class=\"layout-col nav-group-items-container p-sm gap-sm\"\n [@openClose]=\"state.isOpen ? 'open' : 'closed'\">\n <ng-content select=\"elder-nav-link\"></ng-content>\n </div>\n\n </div>\n</ng-container>\n", styles: [".nav-group-button-closed{padding-left:16px}.nav-group{min-height:48px}.nav-group-button{padding-right:16px;min-height:48px;font-size:16px;font-weight:400;border-radius:4px;cursor:pointer}.nav-group-button .mat-icon{height:24px;width:24px;font-size:24px;padding:4px}.nav-group-items-container{overflow:hidden}\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.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], animations: [
79
79
  trigger('openClose', [
80
80
  state('open', style({
81
81
  height: '*',
@@ -95,7 +95,7 @@ export class ElderNavGroupComponent {
95
95
  ])
96
96
  ], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
97
97
  }
98
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ElderNavGroupComponent, decorators: [{
98
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ElderNavGroupComponent, decorators: [{
99
99
  type: Component,
100
100
  args: [{ selector: 'elder-nav-group', animations: [
101
101
  trigger('openClose', [
@@ -119,10 +119,10 @@ export class ElderNavLinkComponent {
119
119
  get isCurrentValueActive() {
120
120
  return this.navList.isActive(this.value);
121
121
  }
122
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ElderNavLinkComponent, deps: [{ token: i1.ElderNavListComponent }], target: i0.ɵɵFactoryTarget.Component }); }
123
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.3", type: ElderNavLinkComponent, selector: "elder-nav-link", inputs: { title: "title", queryParamsHandling: "queryParamsHandling", queryParams: "queryParams", icon: "icon", fontIcon: "fontIcon", fontSet: "fontSet", svgIcon: "svgIcon", routerLink: "routerLink", href: "href", target: "target", value: "value", disabled: "disabled" }, outputs: { clicked: "clicked" }, host: { properties: { "attr.tabindex": "this.tabIndex" } }, viewQueries: [{ propertyName: "routerLinkActive", first: true, predicate: RouterLinkActive, descendants: true }], ngImport: i0, template: "<!-- Router Link -->\n<ng-container *ngIf=\"model$ | async as model\">\n <a *ngIf=\"model.routerLink as routerLink\"\n matRipple [matRippleDisabled]=\"disabled\"\n class=\"layout-row place-start-center nav-link\n mdc-list-item mdc-list-item--with-one-line\"\n [routerLink]=\"routerLink\"\n [queryParamsHandling]=\"queryParamsHandling\"\n [queryParams]=\"queryParams\"\n routerLinkActive=\"dummy\"\n [class.nav-link-clickable]=\"!disabled\"\n [class.nav-link-disabled]=\"disabled\"\n [class.nav-link-active]=\"active$ | async\"\n [class.nav-link-inactive]=\"(active$ | async) === false\"\n >\n <ng-container [ngTemplateOutlet]=\"defaultLinkTemplate\"></ng-container>\n </a>\n\n <!-- Href Link -->\n <a *ngIf=\"model.href as href\"\n matRipple [matRippleDisabled]=\"disabled\"\n class=\"layout-row place-start-center nav-link\n mdc-list-item mdc-list-item--with-one-line\"\n [href]=\"href\"\n [target]=\"model.hrefTarget\"\n [class.nav-link-clickable]=\"!disabled\"\n [class.nav-link-disabled]=\"disabled\"\n [class.nav-link-active]=\"active$ | async\"\n [class.nav-link-inactive]=\"(active$ | async) === false\"\n >\n <ng-container [ngTemplateOutlet]=\"defaultLinkTemplate\"></ng-container>\n </a>\n\n <!-- Simple Button -->\n <a *ngIf=\"!model.href && !model.routerLink\"\n matRipple [matRippleDisabled]=\"disabled\"\n class=\"layout-row place-start-center nav-link\n mdc-list-item mdc-list-item--with-one-line\"\n (click)=\"itemClick($event)\"\n [class.nav-link-clickable]=\"!disabled\"\n [class.nav-link-disabled]=\"disabled\"\n [class.nav-link-active]=\"active$ | async\"\n [class.nav-link-inactive]=\"(active$ | async) === false\"\n >\n <ng-container [ngTemplateOutlet]=\"defaultLinkTemplate\"></ng-container>\n </a>\n</ng-container>\n\n\n<ng-template #defaultLinkTemplate>\n <div class=\"layout-row place-start-center flex gap-md noselect\">\n <mat-icon *ngIf=\"!(!icon && !title)\"\n [fontIcon]=\"fontIcon\"\n [fontSet]=\"fontSet\">\n {{icon}}\n </mat-icon>\n <mat-icon *ngIf=\"svgIcon\"\n [svgIcon]=\"svgIcon\"\n ></mat-icon>\n <span *ngIf=\"title\" class=\"noselect\">\n {{ title | translate}}\n </span>\n <ng-content></ng-content>\n </div>\n</ng-template>\n", styles: [".nav-link{text-decoration:none;padding-left:16px;padding-right:16px;min-height:48px;border-radius:4px;overflow:hidden;transition:background .5s}.nav-link .mat-icon{height:24px;width:24px;font-size:24px;padding:4px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
122
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ElderNavLinkComponent, deps: [{ token: i1.ElderNavListComponent }], target: i0.ɵɵFactoryTarget.Component }); }
123
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.7", type: ElderNavLinkComponent, selector: "elder-nav-link", inputs: { title: "title", queryParamsHandling: "queryParamsHandling", queryParams: "queryParams", icon: "icon", fontIcon: "fontIcon", fontSet: "fontSet", svgIcon: "svgIcon", routerLink: "routerLink", href: "href", target: "target", value: "value", disabled: "disabled" }, outputs: { clicked: "clicked" }, host: { properties: { "attr.tabindex": "this.tabIndex" } }, viewQueries: [{ propertyName: "routerLinkActive", first: true, predicate: RouterLinkActive, descendants: true }], ngImport: i0, template: "<!-- Router Link -->\n<ng-container *ngIf=\"model$ | async as model\">\n <a *ngIf=\"model.routerLink as routerLink\"\n matRipple [matRippleDisabled]=\"disabled\"\n class=\"layout-row place-start-center nav-link\n mdc-list-item mdc-list-item--with-one-line\"\n [routerLink]=\"routerLink\"\n [queryParamsHandling]=\"queryParamsHandling\"\n [queryParams]=\"queryParams\"\n routerLinkActive=\"dummy\"\n [class.nav-link-clickable]=\"!disabled\"\n [class.nav-link-disabled]=\"disabled\"\n [class.nav-link-active]=\"active$ | async\"\n [class.nav-link-inactive]=\"(active$ | async) === false\"\n >\n <ng-container [ngTemplateOutlet]=\"defaultLinkTemplate\"></ng-container>\n </a>\n\n <!-- Href Link -->\n <a *ngIf=\"model.href as href\"\n matRipple [matRippleDisabled]=\"disabled\"\n class=\"layout-row place-start-center nav-link\n mdc-list-item mdc-list-item--with-one-line\"\n [href]=\"href\"\n [target]=\"model.hrefTarget\"\n [class.nav-link-clickable]=\"!disabled\"\n [class.nav-link-disabled]=\"disabled\"\n [class.nav-link-active]=\"active$ | async\"\n [class.nav-link-inactive]=\"(active$ | async) === false\"\n >\n <ng-container [ngTemplateOutlet]=\"defaultLinkTemplate\"></ng-container>\n </a>\n\n <!-- Simple Button -->\n <a *ngIf=\"!model.href && !model.routerLink\"\n matRipple [matRippleDisabled]=\"disabled\"\n class=\"layout-row place-start-center nav-link\n mdc-list-item mdc-list-item--with-one-line\"\n (click)=\"itemClick($event)\"\n [class.nav-link-clickable]=\"!disabled\"\n [class.nav-link-disabled]=\"disabled\"\n [class.nav-link-active]=\"active$ | async\"\n [class.nav-link-inactive]=\"(active$ | async) === false\"\n >\n <ng-container [ngTemplateOutlet]=\"defaultLinkTemplate\"></ng-container>\n </a>\n</ng-container>\n\n\n<ng-template #defaultLinkTemplate>\n <div class=\"layout-row place-start-center flex gap-md noselect\">\n <mat-icon *ngIf=\"!(!icon && !title)\"\n [fontIcon]=\"fontIcon\"\n [fontSet]=\"fontSet\">\n {{icon}}\n </mat-icon>\n <mat-icon *ngIf=\"svgIcon\"\n [svgIcon]=\"svgIcon\"\n ></mat-icon>\n <span *ngIf=\"title\" class=\"noselect\">\n {{ title | translate}}\n </span>\n <ng-content></ng-content>\n </div>\n</ng-template>\n", styles: [".nav-link{text-decoration:none;padding-left:16px;padding-right:16px;min-height:48px;border-radius:4px;overflow:hidden;transition:background .5s}.nav-link .mat-icon{height:24px;width:24px;font-size:24px;padding:4px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
124
124
  }
125
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ElderNavLinkComponent, decorators: [{
125
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ElderNavLinkComponent, decorators: [{
126
126
  type: Component,
127
127
  args: [{ selector: 'elder-nav-link', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- Router Link -->\n<ng-container *ngIf=\"model$ | async as model\">\n <a *ngIf=\"model.routerLink as routerLink\"\n matRipple [matRippleDisabled]=\"disabled\"\n class=\"layout-row place-start-center nav-link\n mdc-list-item mdc-list-item--with-one-line\"\n [routerLink]=\"routerLink\"\n [queryParamsHandling]=\"queryParamsHandling\"\n [queryParams]=\"queryParams\"\n routerLinkActive=\"dummy\"\n [class.nav-link-clickable]=\"!disabled\"\n [class.nav-link-disabled]=\"disabled\"\n [class.nav-link-active]=\"active$ | async\"\n [class.nav-link-inactive]=\"(active$ | async) === false\"\n >\n <ng-container [ngTemplateOutlet]=\"defaultLinkTemplate\"></ng-container>\n </a>\n\n <!-- Href Link -->\n <a *ngIf=\"model.href as href\"\n matRipple [matRippleDisabled]=\"disabled\"\n class=\"layout-row place-start-center nav-link\n mdc-list-item mdc-list-item--with-one-line\"\n [href]=\"href\"\n [target]=\"model.hrefTarget\"\n [class.nav-link-clickable]=\"!disabled\"\n [class.nav-link-disabled]=\"disabled\"\n [class.nav-link-active]=\"active$ | async\"\n [class.nav-link-inactive]=\"(active$ | async) === false\"\n >\n <ng-container [ngTemplateOutlet]=\"defaultLinkTemplate\"></ng-container>\n </a>\n\n <!-- Simple Button -->\n <a *ngIf=\"!model.href && !model.routerLink\"\n matRipple [matRippleDisabled]=\"disabled\"\n class=\"layout-row place-start-center nav-link\n mdc-list-item mdc-list-item--with-one-line\"\n (click)=\"itemClick($event)\"\n [class.nav-link-clickable]=\"!disabled\"\n [class.nav-link-disabled]=\"disabled\"\n [class.nav-link-active]=\"active$ | async\"\n [class.nav-link-inactive]=\"(active$ | async) === false\"\n >\n <ng-container [ngTemplateOutlet]=\"defaultLinkTemplate\"></ng-container>\n </a>\n</ng-container>\n\n\n<ng-template #defaultLinkTemplate>\n <div class=\"layout-row place-start-center flex gap-md noselect\">\n <mat-icon *ngIf=\"!(!icon && !title)\"\n [fontIcon]=\"fontIcon\"\n [fontSet]=\"fontSet\">\n {{icon}}\n </mat-icon>\n <mat-icon *ngIf=\"svgIcon\"\n [svgIcon]=\"svgIcon\"\n ></mat-icon>\n <span *ngIf=\"title\" class=\"noselect\">\n {{ title | translate}}\n </span>\n <ng-content></ng-content>\n </div>\n</ng-template>\n", styles: [".nav-link{text-decoration:none;padding-left:16px;padding-right:16px;min-height:48px;border-radius:4px;overflow:hidden;transition:background .5s}.nav-link .mat-icon{height:24px;width:24px;font-size:24px;padding:4px}\n"] }]
128
128
  }], ctorParameters: () => [{ type: i1.ElderNavListComponent }], propDecorators: { tabIndex: [{
@@ -52,10 +52,10 @@ export class ElderNavListComponent {
52
52
  return value === this.value;
53
53
  }
54
54
  }
55
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ElderNavListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
56
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.3", type: ElderNavListComponent, selector: "elder-nav-list", inputs: { compareWith: "compareWith", value: "value" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"layout-col full elder-nav-list-full\" tabindex=\"0\">\n <div class=\"layout-col p-sm gap-sm flex scrollable\n mat-mdc-nav-list mat-mdc-list-base mdc-list\"\n style=\"overflow-y: scroll\"\n >\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [":host{min-width:0;min-height:0}.scrollable{overflow-y:auto;-webkit-overflow-scrolling:touch}.elder-nav-list-full{min-width:120px}.elder-nav-list-full:focus{outline:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
55
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ElderNavListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
56
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.7", type: ElderNavListComponent, selector: "elder-nav-list", inputs: { compareWith: "compareWith", value: "value" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"layout-col full elder-nav-list-full\" tabindex=\"0\">\n <div class=\"layout-col p-sm gap-sm flex scrollable\n mat-mdc-nav-list mat-mdc-list-base mdc-list\"\n style=\"overflow-y: scroll\"\n >\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [":host{min-width:0;min-height:0}.scrollable{overflow-y:auto;-webkit-overflow-scrolling:touch}.elder-nav-list-full{min-width:120px}.elder-nav-list-full:focus{outline:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
57
57
  }
58
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ElderNavListComponent, decorators: [{
58
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ElderNavListComponent, decorators: [{
59
59
  type: Component,
60
60
  args: [{ selector: 'elder-nav-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"layout-col full elder-nav-list-full\" tabindex=\"0\">\n <div class=\"layout-col p-sm gap-sm flex scrollable\n mat-mdc-nav-list mat-mdc-list-base mdc-list\"\n style=\"overflow-y: scroll\"\n >\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [":host{min-width:0;min-height:0}.scrollable{overflow-y:auto;-webkit-overflow-scrolling:touch}.elder-nav-list-full{min-width:120px}.elder-nav-list-full:focus{outline:none}\n"] }]
61
61
  }], ctorParameters: () => [], propDecorators: { compareWith: [{
@@ -30,10 +30,10 @@ export class ElderToolbarColumnDirective {
30
30
  ngOnDestroy() {
31
31
  this.toolbarService.deregisterColumn(this.templateRef, this.elderToolbarColumn);
32
32
  }
33
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ElderToolbarColumnDirective, deps: [{ token: i0.ViewContainerRef }, { token: i1.ElderToolbarService }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
34
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.3", type: ElderToolbarColumnDirective, selector: "[elderToolbarColumn]", inputs: { elderToolbarColumn: "elderToolbarColumn", elderToolbarDefault: "elderToolbarDefault" }, ngImport: i0 }); }
33
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ElderToolbarColumnDirective, deps: [{ token: i0.ViewContainerRef }, { token: i1.ElderToolbarService }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
34
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.7", type: ElderToolbarColumnDirective, selector: "[elderToolbarColumn]", inputs: { elderToolbarColumn: "elderToolbarColumn", elderToolbarDefault: "elderToolbarDefault" }, ngImport: i0 }); }
35
35
  }
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ElderToolbarColumnDirective, decorators: [{
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ElderToolbarColumnDirective, decorators: [{
37
37
  type: Directive,
38
38
  args: [{
39
39
  selector: '[elderToolbarColumn]'
@@ -18,8 +18,8 @@ export { ElderToolbarComponent } from './toolbar/elder-toolbar.component';
18
18
  export { ElderToolbarTitleComponent } from './toolbar-title/elder-toolbar-title.component';
19
19
  export { ElderToolbarTitleService, ToolbarHeader } from './toolbar-title/elder-toolbar-title.service';
20
20
  export class ElderToolbarModule {
21
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ElderToolbarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
22
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.3", ngImport: i0, type: ElderToolbarModule, declarations: [ElderToolbarComponent,
21
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ElderToolbarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
22
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.7", ngImport: i0, type: ElderToolbarModule, declarations: [ElderToolbarComponent,
23
23
  ElderToolbarColumnDirective,
24
24
  ElderToolbarTitleComponent], imports: [
25
25
  // common
@@ -34,7 +34,7 @@ export class ElderToolbarModule {
34
34
  TranslateModule, ElderLanguageModule], exports: [ElderToolbarComponent,
35
35
  ElderToolbarColumnDirective,
36
36
  ElderToolbarTitleComponent] }); }
37
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ElderToolbarModule, imports: [
37
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ElderToolbarModule, imports: [
38
38
  // common
39
39
  CommonModule, RouterModule,
40
40
  // layout
@@ -46,7 +46,7 @@ export class ElderToolbarModule {
46
46
  // translations
47
47
  TranslateModule, ElderLanguageModule] }); }
48
48
  }
49
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ElderToolbarModule, decorators: [{
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ElderToolbarModule, decorators: [{
50
50
  type: NgModule,
51
51
  args: [{
52
52
  imports: [
@@ -56,10 +56,10 @@ export class ElderToolbarService {
56
56
  deregisterColumn(template, position) {
57
57
  this.slotManager.deregisterSlotTemplate(template, position);
58
58
  }
59
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ElderToolbarService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
60
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ElderToolbarService, providedIn: 'root' }); }
59
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ElderToolbarService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
60
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ElderToolbarService, providedIn: 'root' }); }
61
61
  }
62
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ElderToolbarService, decorators: [{
62
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ElderToolbarService, decorators: [{
63
63
  type: Injectable,
64
64
  args: [{
65
65
  providedIn: 'root'
@@ -54,10 +54,10 @@ export class ElderToolbarComponent {
54
54
  slotTemplate$(slot) {
55
55
  return this.toolbarService.activeColumnTemplate(slot);
56
56
  }
57
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ElderToolbarComponent, deps: [{ token: i1.ElderToolbarService }, { token: i2.ElderThemeService }], target: i0.ɵɵFactoryTarget.Component }); }
58
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.3", type: ElderToolbarComponent, selector: "elder-toolbar", inputs: { color: "color" }, ngImport: i0, template: "<div class=\"layout-row\">\n\n <ng-content></ng-content>\n\n <mat-toolbar class=\"layout-row place-start-center\" [color]=\"color$ | async\">\n\n <div class=\"layout-row place-start-center\">\n <ng-container *ngTemplateOutlet=\"(slotTemplate$('left.begin') | async)\"></ng-container>\n <ng-container *ngTemplateOutlet=\"(slotTemplate$('left') | async) || defaultLeftColumnTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"(slotTemplate$('left.end') | async) || defaultEmptyTemplate\"></ng-container>\n </div>\n\n <div class=\"layout-row place-center-center flex\">\n <ng-container *ngTemplateOutlet=\"(slotTemplate$('center') | async) || defaultCenterColumnTemplate\"></ng-container>\n </div>\n\n <div class=\"layout-row place-end-center\">\n <ng-container *ngTemplateOutlet=\"(slotTemplate$('right.begin') | async) || defaultEmptyTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"(slotTemplate$('right') | async) || defaultRightColumnTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"(slotTemplate$('right.end') | async)\"></ng-container>\n </div>\n\n\n <!-- Default Templates -->\n\n <ng-template #defaultLeftColumnTemplate>\n\n <elder-toolbar-title></elder-toolbar-title>\n\n </ng-template>\n\n\n <ng-template #defaultCenterColumnTemplate></ng-template>\n\n <ng-template #defaultEmptyTemplate></ng-template>\n\n\n <ng-template #defaultRightColumnTemplate>\n\n <elder-language-switcher [slimMode]=\"true\"></elder-language-switcher>\n\n </ng-template>\n\n </mat-toolbar>\n\n</div>\n\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i5.ElderLanguageSwitcherComponent, selector: "elder-language-switcher", inputs: ["slimMode"] }, { kind: "component", type: i6.ElderToolbarTitleComponent, selector: "elder-toolbar-title" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
57
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ElderToolbarComponent, deps: [{ token: i1.ElderToolbarService }, { token: i2.ElderThemeService }], target: i0.ɵɵFactoryTarget.Component }); }
58
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.7", type: ElderToolbarComponent, selector: "elder-toolbar", inputs: { color: "color" }, ngImport: i0, template: "<div class=\"layout-row\">\n\n <ng-content></ng-content>\n\n <mat-toolbar class=\"layout-row place-start-center\" [color]=\"color$ | async\">\n\n <div class=\"layout-row place-start-center\">\n <ng-container *ngTemplateOutlet=\"(slotTemplate$('left.begin') | async)\"></ng-container>\n <ng-container *ngTemplateOutlet=\"(slotTemplate$('left') | async) || defaultLeftColumnTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"(slotTemplate$('left.end') | async) || defaultEmptyTemplate\"></ng-container>\n </div>\n\n <div class=\"layout-row place-center-center flex\">\n <ng-container *ngTemplateOutlet=\"(slotTemplate$('center') | async) || defaultCenterColumnTemplate\"></ng-container>\n </div>\n\n <div class=\"layout-row place-end-center\">\n <ng-container *ngTemplateOutlet=\"(slotTemplate$('right.begin') | async) || defaultEmptyTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"(slotTemplate$('right') | async) || defaultRightColumnTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"(slotTemplate$('right.end') | async)\"></ng-container>\n </div>\n\n\n <!-- Default Templates -->\n\n <ng-template #defaultLeftColumnTemplate>\n\n <elder-toolbar-title></elder-toolbar-title>\n\n </ng-template>\n\n\n <ng-template #defaultCenterColumnTemplate></ng-template>\n\n <ng-template #defaultEmptyTemplate></ng-template>\n\n\n <ng-template #defaultRightColumnTemplate>\n\n <elder-language-switcher [slimMode]=\"true\"></elder-language-switcher>\n\n </ng-template>\n\n </mat-toolbar>\n\n</div>\n\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i5.ElderLanguageSwitcherComponent, selector: "elder-language-switcher", inputs: ["slimMode"] }, { kind: "component", type: i6.ElderToolbarTitleComponent, selector: "elder-toolbar-title" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
59
59
  }
60
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ElderToolbarComponent, decorators: [{
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ElderToolbarComponent, decorators: [{
61
61
  type: Component,
62
62
  args: [{ selector: 'elder-toolbar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"layout-row\">\n\n <ng-content></ng-content>\n\n <mat-toolbar class=\"layout-row place-start-center\" [color]=\"color$ | async\">\n\n <div class=\"layout-row place-start-center\">\n <ng-container *ngTemplateOutlet=\"(slotTemplate$('left.begin') | async)\"></ng-container>\n <ng-container *ngTemplateOutlet=\"(slotTemplate$('left') | async) || defaultLeftColumnTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"(slotTemplate$('left.end') | async) || defaultEmptyTemplate\"></ng-container>\n </div>\n\n <div class=\"layout-row place-center-center flex\">\n <ng-container *ngTemplateOutlet=\"(slotTemplate$('center') | async) || defaultCenterColumnTemplate\"></ng-container>\n </div>\n\n <div class=\"layout-row place-end-center\">\n <ng-container *ngTemplateOutlet=\"(slotTemplate$('right.begin') | async) || defaultEmptyTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"(slotTemplate$('right') | async) || defaultRightColumnTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"(slotTemplate$('right.end') | async)\"></ng-container>\n </div>\n\n\n <!-- Default Templates -->\n\n <ng-template #defaultLeftColumnTemplate>\n\n <elder-toolbar-title></elder-toolbar-title>\n\n </ng-template>\n\n\n <ng-template #defaultCenterColumnTemplate></ng-template>\n\n <ng-template #defaultEmptyTemplate></ng-template>\n\n\n <ng-template #defaultRightColumnTemplate>\n\n <elder-language-switcher [slimMode]=\"true\"></elder-language-switcher>\n\n </ng-template>\n\n </mat-toolbar>\n\n</div>\n\n" }]
63
63
  }], ctorParameters: () => [{ type: i1.ElderToolbarService }, { type: i2.ElderThemeService }], propDecorators: { color: [{
@@ -29,10 +29,10 @@ export class ElderToolbarTitleComponent {
29
29
  this.toolbarService.updateTitle(this.activatedRoute);
30
30
  }, 10);
31
31
  }
32
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ElderToolbarTitleComponent, deps: [{ token: i1.ElderToolbarTitleService }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
33
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.3", type: ElderToolbarTitleComponent, selector: "elder-toolbar-title", ngImport: i0, template: "<h3 class=\"mat-headline-6\">{{(title$ | async) | translate}}</h3>\n", styles: [""], dependencies: [{ kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
32
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ElderToolbarTitleComponent, deps: [{ token: i1.ElderToolbarTitleService }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
33
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.7", type: ElderToolbarTitleComponent, selector: "elder-toolbar-title", ngImport: i0, template: "<h3 class=\"mat-headline-6\">{{(title$ | async) | translate}}</h3>\n", styles: [""], dependencies: [{ kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
34
34
  }
35
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ElderToolbarTitleComponent, decorators: [{
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ElderToolbarTitleComponent, decorators: [{
36
36
  type: Component,
37
37
  args: [{ selector: 'elder-toolbar-title', changeDetection: ChangeDetectionStrategy.OnPush, template: "<h3 class=\"mat-headline-6\">{{(title$ | async) | translate}}</h3>\n" }]
38
38
  }], ctorParameters: () => [{ type: i1.ElderToolbarTitleService }, { type: i2.ActivatedRoute }] });
@@ -73,10 +73,10 @@ export class ElderToolbarTitleService {
73
73
  }
74
74
  return resolvedTitle;
75
75
  }
76
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ElderToolbarTitleService, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Injectable }); }
77
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ElderToolbarTitleService, providedIn: 'root' }); }
76
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ElderToolbarTitleService, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Injectable }); }
77
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ElderToolbarTitleService, providedIn: 'root' }); }
78
78
  }
79
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ElderToolbarTitleService, decorators: [{
79
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ElderToolbarTitleService, decorators: [{
80
80
  type: Injectable,
81
81
  args: [{
82
82
  providedIn: 'root'
@@ -28,10 +28,10 @@ export class ElderOverlayOriginDirective {
28
28
  get overlay() {
29
29
  return this._overlay;
30
30
  }
31
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ElderOverlayOriginDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
32
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.3", type: ElderOverlayOriginDirective, selector: "[elderOverlayOrigin]", inputs: { overlay: ["elderOverlayOrigin", "overlay"] }, ngImport: i0 }); }
31
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ElderOverlayOriginDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
32
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.7", type: ElderOverlayOriginDirective, selector: "[elderOverlayOrigin]", inputs: { overlay: ["elderOverlayOrigin", "overlay"] }, ngImport: i0 }); }
33
33
  }
34
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ElderOverlayOriginDirective, decorators: [{
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ElderOverlayOriginDirective, decorators: [{
35
35
  type: Directive,
36
36
  args: [{
37
37
  selector: '[elderOverlayOrigin]'
@@ -45,10 +45,10 @@ export class ElderOverlayTriggerDirective {
45
45
  });
46
46
  }
47
47
  }
48
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ElderOverlayTriggerDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
49
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.3", type: ElderOverlayTriggerDirective, selector: "[elderOverlayTrigger]", inputs: { overlay: ["elderOverlayTrigger", "overlay"], type: ["elderOverlayTriggerType", "type"], enabled: ["elderOverlayTriggerEnabled", "enabled"] }, host: { listeners: { "click": "handleClick($event)", "focus": "handleFocus($event)" } }, ngImport: i0 }); }
48
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ElderOverlayTriggerDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
49
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.7", type: ElderOverlayTriggerDirective, selector: "[elderOverlayTrigger]", inputs: { overlay: ["elderOverlayTrigger", "overlay"], type: ["elderOverlayTriggerType", "type"], enabled: ["elderOverlayTriggerEnabled", "enabled"] }, host: { listeners: { "click": "handleClick($event)", "focus": "handleFocus($event)" } }, ngImport: i0 }); }
50
50
  }
51
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ElderOverlayTriggerDirective, decorators: [{
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ElderOverlayTriggerDirective, decorators: [{
52
52
  type: Directive,
53
53
  args: [{
54
54
  selector: '[elderOverlayTrigger]'
@@ -152,14 +152,14 @@ export class ElderOverlayComponent {
152
152
  const searchPanelPortal = new TemplatePortal(this.templateRef, this.viewContainer);
153
153
  return this._overlayRef.attach(searchPanelPortal);
154
154
  }
155
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ElderOverlayComponent, deps: [{ token: i0.ViewContainerRef }, { token: i1.Overlay }, { token: i1.OverlayPositionBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
156
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.3", type: ElderOverlayComponent, selector: "elder-overlay", inputs: { originX: "originX", originY: "originY", overlayX: "overlayX", overlayY: "overlayY", offsetY: "offsetY", offsetX: "offsetX", backdrop: "backdrop", backdropVisible: "backdropVisible", origin: "origin", positionStrategy: "positionStrategy", overlaySize: "overlaySize" }, outputs: { keydownEvents: "keydownEvents", attachedChange: "attachedChange" }, viewQueries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true, static: true }], exportAs: ["elderOverlay"], ngImport: i0, template: `
155
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ElderOverlayComponent, deps: [{ token: i0.ViewContainerRef }, { token: i1.Overlay }, { token: i1.OverlayPositionBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
156
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.7", type: ElderOverlayComponent, selector: "elder-overlay", inputs: { originX: "originX", originY: "originY", overlayX: "overlayX", overlayY: "overlayY", offsetY: "offsetY", offsetX: "offsetX", backdrop: "backdrop", backdropVisible: "backdropVisible", origin: "origin", positionStrategy: "positionStrategy", overlaySize: "overlaySize" }, outputs: { keydownEvents: "keydownEvents", attachedChange: "attachedChange" }, viewQueries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true, static: true }], exportAs: ["elderOverlay"], ngImport: i0, template: `
157
157
  <ng-template>
158
158
  <ng-content></ng-content>
159
159
  </ng-template>
160
160
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
161
161
  }
162
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ElderOverlayComponent, decorators: [{
162
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ElderOverlayComponent, decorators: [{
163
163
  type: Component,
164
164
  args: [{
165
165
  selector: 'elder-overlay',