@elderbyte/ngx-starter 16.3.1 → 16.3.3

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 (290) 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/common/utils/filter-util.mjs +26 -1
  17. package/esm2022/lib/components/access-denied/elder-access-denied.component.mjs +3 -3
  18. package/esm2022/lib/components/access-denied/elder-access-denied.module.mjs +4 -4
  19. package/esm2022/lib/components/auditing/audited-entity/elder-audited-entity.component.mjs +3 -3
  20. package/esm2022/lib/components/auditing/elder-audit.module.mjs +4 -4
  21. package/esm2022/lib/components/badge/elder-badge/elder-badge.component.mjs +3 -3
  22. package/esm2022/lib/components/badge/elder-badge.directive.mjs +3 -3
  23. package/esm2022/lib/components/badge/elder-badge.module.mjs +4 -4
  24. package/esm2022/lib/components/button-group/elder-button-group/elder-button-group.component.mjs +3 -3
  25. package/esm2022/lib/components/button-group/elder-button-group.module.mjs +4 -4
  26. package/esm2022/lib/components/card-organizer/card-organizer/elder-card-organizer.component.mjs +3 -3
  27. package/esm2022/lib/components/card-organizer/card-organizer/elder-stack-card.directive.mjs +3 -3
  28. package/esm2022/lib/components/card-organizer/card-stack/elder-card-stack.component.mjs +3 -3
  29. package/esm2022/lib/components/card-organizer/elder-card-organizer.module.mjs +4 -4
  30. package/esm2022/lib/components/cards/elder-card/elder-card-header/elder-card-header.component.mjs +3 -3
  31. package/esm2022/lib/components/cards/elder-card/elder-card.component.mjs +18 -18
  32. package/esm2022/lib/components/cards/elder-card/elder-card.module.mjs +4 -4
  33. package/esm2022/lib/components/chips/elder-chip-label.directive.mjs +3 -3
  34. package/esm2022/lib/components/chips/elder-chips.module.mjs +4 -4
  35. package/esm2022/lib/components/connectivity/elder-connectivity.module.mjs +4 -4
  36. package/esm2022/lib/components/connectivity/elder-connectivity.service.mjs +3 -3
  37. package/esm2022/lib/components/connectivity/offline-indicator/elder-offline-indicator.component.mjs +3 -3
  38. package/esm2022/lib/components/containers/elder-containers.module.mjs +4 -4
  39. package/esm2022/lib/components/containers/elder-scroll-container/elder-scroll-container.component.mjs +3 -3
  40. package/esm2022/lib/components/csv/elder-csv-export-btn/elder-csv-export-btn.component.mjs +3 -3
  41. package/esm2022/lib/components/csv/elder-csv-stream-exporter-builder.service.mjs +3 -3
  42. package/esm2022/lib/components/csv/elder-csv.module.mjs +4 -4
  43. package/esm2022/lib/components/currency/elder-currency.module.mjs +4 -4
  44. package/esm2022/lib/components/currency/elder-currency.pipe.mjs +3 -3
  45. package/esm2022/lib/components/data-transfer/elder-data-transfer.module.mjs +4 -4
  46. package/esm2022/lib/components/data-transfer/elder-data-transfer.service.mjs +3 -3
  47. package/esm2022/lib/components/data-transfer/http-data-transfer/http-data-transfer.component.mjs +3 -3
  48. package/esm2022/lib/components/data-transfer/http-data-transfer-aggregate/http-data-transfer-aggregate.component.mjs +3 -3
  49. package/esm2022/lib/components/data-transfer/http-data-transfer-indicator/http-data-transfer-indicator.component.mjs +3 -3
  50. package/esm2022/lib/components/data-transfer/http-data-transfer-overview/http-data-transfer-overview.component.mjs +3 -3
  51. package/esm2022/lib/components/data-view/base/elder-data-view-base.mjs +3 -3
  52. package/esm2022/lib/components/data-view/common/data-context-state-indicator/data-context-state-indicator.component.mjs +3 -3
  53. package/esm2022/lib/components/data-view/common/elder-data-common.module.mjs +4 -4
  54. package/esm2022/lib/components/data-view/common/elder-data-toolbar/elder-data-toolbar.component.mjs +6 -6
  55. package/esm2022/lib/components/data-view/common/elder-single-sort/elder-single-sort.component.mjs +3 -3
  56. package/esm2022/lib/components/data-view/common/selection/data-context-selection.directive.mjs +3 -3
  57. package/esm2022/lib/components/data-view/common/selection/elder-selection-master-checkbox/elder-selection-master-checkbox.component.mjs +3 -3
  58. package/esm2022/lib/components/data-view/grid/elder-grid/elder-grid.component.mjs +9 -9
  59. package/esm2022/lib/components/data-view/grid/elder-grid.module.mjs +4 -4
  60. package/esm2022/lib/components/data-view/master-detail/elder-detail-dialog/elder-detail-dialog.component.mjs +3 -3
  61. package/esm2022/lib/components/data-view/master-detail/elder-detail.directive.mjs +3 -3
  62. package/esm2022/lib/components/data-view/master-detail/elder-master-activation.directive.mjs +3 -3
  63. package/esm2022/lib/components/data-view/master-detail/elder-master-detail.component.mjs +3 -3
  64. package/esm2022/lib/components/data-view/master-detail/elder-master-detail.module.mjs +4 -4
  65. package/esm2022/lib/components/data-view/master-detail/elder-master-detail.service.mjs +3 -3
  66. package/esm2022/lib/components/data-view/master-detail/elder-master.directive.mjs +3 -3
  67. package/esm2022/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.component.mjs +3 -3
  68. package/esm2022/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.module.mjs +4 -4
  69. package/esm2022/lib/components/data-view/table/activation/elder-delete-active.directive.mjs +3 -3
  70. package/esm2022/lib/components/data-view/table/activation/elder-table-activation.directive.mjs +3 -3
  71. package/esm2022/lib/components/data-view/table/elder-number-cell.directive.mjs +3 -3
  72. package/esm2022/lib/components/data-view/table/elder-paginator-intl.mjs +3 -3
  73. package/esm2022/lib/components/data-view/table/elder-table/elder-table-toolbar.directive.mjs +3 -3
  74. package/esm2022/lib/components/data-view/table/elder-table/elder-table.component.mjs +3 -3
  75. package/esm2022/lib/components/data-view/table/elder-table-column.directive.mjs +3 -3
  76. package/esm2022/lib/components/data-view/table/elder-table-extension.directive.mjs +3 -3
  77. package/esm2022/lib/components/data-view/table/elder-table-root.directive.mjs +3 -3
  78. package/esm2022/lib/components/data-view/table/elder-table-row.directive.mjs +3 -3
  79. package/esm2022/lib/components/data-view/table/elder-table-sort.directive.mjs +3 -3
  80. package/esm2022/lib/components/data-view/table/elder-table.module.mjs +4 -4
  81. package/esm2022/lib/components/data-view/table/model/elder-table-model.mjs +3 -3
  82. package/esm2022/lib/components/dialogs/confirm-dialog/elder-confirm-dialog.component.mjs +3 -3
  83. package/esm2022/lib/components/dialogs/elder-dialog.module.mjs +4 -4
  84. package/esm2022/lib/components/dialogs/elder-dialog.service.mjs +3 -3
  85. package/esm2022/lib/components/dialogs/question-dialog/elder-question-dialog.component.mjs +3 -3
  86. package/esm2022/lib/components/dialogs/selection-dialog/elder-selection-dialog/elder-selection-dialog.component.mjs +3 -3
  87. package/esm2022/lib/components/dialogs/selection-dialog/elder-selection-dialog.directive.mjs +3 -3
  88. package/esm2022/lib/components/errors/elder-error.module.mjs +4 -4
  89. package/esm2022/lib/components/errors/exception-detail/elder-exception-detail.component.mjs +3 -3
  90. package/esm2022/lib/components/expand-toggle-button/elder-expand-toggle-button.component.mjs +3 -3
  91. package/esm2022/lib/components/expand-toggle-button/elder-expand-toggle-button.module.mjs +4 -4
  92. package/esm2022/lib/components/files/blob-viewer/elder-blob-viewer.component.mjs +3 -3
  93. package/esm2022/lib/components/files/drag-n-drop/elder-drop-zone/elder-drop-zone.component.mjs +3 -3
  94. package/esm2022/lib/components/files/drag-n-drop/global-drag-drop.service.mjs +3 -3
  95. package/esm2022/lib/components/files/elder-file-drop-zone.directive.mjs +3 -3
  96. package/esm2022/lib/components/files/elder-file-select.directive.mjs +3 -3
  97. package/esm2022/lib/components/files/elder-file.module.mjs +4 -4
  98. package/esm2022/lib/components/files/file-select/file-select.component.mjs +3 -3
  99. package/esm2022/lib/components/files/file-upload/file-upload.component.mjs +3 -3
  100. package/esm2022/lib/components/forms/clipboard/elder-clipboard.service.mjs +3 -3
  101. package/esm2022/lib/components/forms/directives/base/elder-class-hostbinding-base.mjs +3 -3
  102. package/esm2022/lib/components/forms/directives/elder-clipboard-put.directive.mjs +3 -3
  103. package/esm2022/lib/components/forms/directives/elder-delayed-focus.directive.mjs +3 -3
  104. package/esm2022/lib/components/forms/directives/elder-form-field-dense.directive.mjs +3 -3
  105. package/esm2022/lib/components/forms/directives/elder-form-field-label.directive.mjs +3 -3
  106. package/esm2022/lib/components/forms/directives/elder-form-field-no-hint.directive.mjs +3 -3
  107. package/esm2022/lib/components/forms/directives/elder-form-field-no-spinner.directive.mjs +3 -3
  108. package/esm2022/lib/components/forms/directives/elder-forms-directives.module.mjs +4 -4
  109. package/esm2022/lib/components/forms/directives/elder-initial-value.directive.mjs +11 -28
  110. package/esm2022/lib/components/forms/directives/elder-input-pattern.directive.mjs +3 -3
  111. package/esm2022/lib/components/forms/directives/elder-key-event.directive.mjs +3 -3
  112. package/esm2022/lib/components/forms/directives/elder-next-focusable.directive.mjs +3 -3
  113. package/esm2022/lib/components/forms/directives/elder-plug-parent-form.directive.mjs +3 -3
  114. package/esm2022/lib/components/forms/directives/elder-stop-event-propagation.directive.mjs +3 -3
  115. package/esm2022/lib/components/forms/directives/elder-tab-focus-trap.directive.mjs +3 -3
  116. package/esm2022/lib/components/forms/directives/elder-touched.directive.mjs +3 -3
  117. package/esm2022/lib/components/forms/directives/elder-triple-state-checkbox.directive.mjs +3 -3
  118. package/esm2022/lib/components/forms/directives/validation/elder-validation-error.directive.mjs +3 -3
  119. package/esm2022/lib/components/forms/directives/validation/strategies/common-validation-message-strategy.mjs +3 -3
  120. package/esm2022/lib/components/forms/directives/validation/strategies/dynamic-validation-message-strategy.mjs +3 -3
  121. package/esm2022/lib/components/forms/directives/validation/validation-message-renderer.service.mjs +3 -3
  122. package/esm2022/lib/components/forms/directives/validation/validators/elder-max.validator.mjs +3 -3
  123. package/esm2022/lib/components/forms/directives/validation/validators/elder-min.validator.mjs +3 -3
  124. package/esm2022/lib/components/forms/directives/validation/validators/elder-multiple-of.validator.mjs +3 -3
  125. package/esm2022/lib/components/forms/directives/validation/validators/elder-required-ignore-zero.validator.mjs +3 -3
  126. package/esm2022/lib/components/forms/elder-forms.module.mjs +4 -4
  127. package/esm2022/lib/components/forms/search/elder-search-context-url-binding.directive.mjs +9 -6
  128. package/esm2022/lib/components/forms/search/elder-search-context.directive.mjs +33 -35
  129. package/esm2022/lib/components/forms/search/elder-search-input.directive.mjs +9 -6
  130. package/esm2022/lib/components/forms/search/elder-search.module.mjs +4 -4
  131. package/esm2022/lib/components/forms/search/search-box/elder-search-box.component.mjs +3 -3
  132. package/esm2022/lib/components/forms/search/search-box/elder-search-panel.component.mjs +3 -3
  133. package/esm2022/lib/components/forms/search/search-box/elder-search-url-binding.service.mjs +84 -36
  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 +3 -3
  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 +1084 -1071
  282. package/fesm2022/elderbyte-ngx-starter.mjs.map +1 -1
  283. package/lib/common/utils/filter-util.d.ts +14 -0
  284. package/lib/components/forms/directives/elder-initial-value.directive.d.ts +0 -8
  285. package/lib/components/forms/search/elder-search-context.directive.d.ts +10 -11
  286. package/lib/components/forms/search/elder-search-input.directive.d.ts +3 -2
  287. package/lib/components/forms/search/search-box/elder-search-url-binding.service.d.ts +40 -4
  288. package/package.json +1 -1
  289. package/esm2022/lib/components/forms/search/search-filter-context.mjs +0 -50
  290. package/lib/components/forms/search/search-filter-context.d.ts +0 -34
@@ -33,10 +33,13 @@ export class ElderSearchInputDirective {
33
33
  * Life Cycle *
34
34
  * *
35
35
  **************************************************************************/
36
- ngAfterViewInit() {
36
+ ngOnInit() {
37
37
  this._extractedName = this.extractName();
38
- this.log.debug(this.extractName() + "|" + this.queryKey + "|" + this.resolvePath);
39
38
  this.searchContext.register(this);
39
+ }
40
+ ngAfterViewInit() {
41
+ this._extractedName = this.extractName();
42
+ this.log.debug(this._extractedName + "|" + this.queryKey + "|" + this.resolvePath);
40
43
  this.stateObservable().subscribe(state => {
41
44
  this.emitState(state);
42
45
  });
@@ -195,10 +198,10 @@ export class ElderSearchInputDirective {
195
198
  });
196
199
  return CollectionUtil.flatten(arrays);
197
200
  }
198
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: ElderSearchInputDirective, deps: [{ token: i1.ElderSearchContextDirective }, { token: i2.NgModel, host: true }], target: i0.ɵɵFactoryTarget.Directive }); }
199
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.11", type: ElderSearchInputDirective, selector: "[elderSearchInput]", inputs: { queryKey: ["elderSearchInputKey", "queryKey"], valueTransform: ["elderSearchInputTransform", "valueTransform"], resolvePath: ["elderSearchInput", "resolvePath"], dataSource: "dataSource", fallbackValue: ["elderSearchInputFallback", "fallbackValue"], valueAsId: "valueAsId" }, exportAs: ["elderSearchInput"], ngImport: i0 }); }
201
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ElderSearchInputDirective, deps: [{ token: i1.ElderSearchContextDirective }, { token: i2.NgModel, host: true }], target: i0.ɵɵFactoryTarget.Directive }); }
202
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: ElderSearchInputDirective, selector: "[elderSearchInput]", inputs: { queryKey: ["elderSearchInputKey", "queryKey"], valueTransform: ["elderSearchInputTransform", "valueTransform"], resolvePath: ["elderSearchInput", "resolvePath"], dataSource: "dataSource", fallbackValue: ["elderSearchInputFallback", "fallbackValue"], valueAsId: "valueAsId" }, exportAs: ["elderSearchInput"], ngImport: i0 }); }
200
203
  }
201
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: ElderSearchInputDirective, decorators: [{
204
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ElderSearchInputDirective, decorators: [{
202
205
  type: Directive,
203
206
  args: [{
204
207
  selector: "[elderSearchInput]",
@@ -225,4 +228,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImpo
225
228
  type: Input,
226
229
  args: ["valueAsId"]
227
230
  }] } });
228
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItc2VhcmNoLWlucHV0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvc2VhcmNoL2VsZGVyLXNlYXJjaC1pbnB1dC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNqRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFLckQsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBR3ZFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOzs7O0FBRXpGOztHQUVHO0FBS0gsTUFBTSxPQUFPLHlCQUF5QjtJQThDcEM7Ozs7Z0ZBSTRFO0lBRTVFLFlBQ1UsYUFBMEMsRUFDbEMsT0FBZ0I7UUFEeEIsa0JBQWEsR0FBYixhQUFhLENBQTZCO1FBQ2xDLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFyRGxDLG9HQUFvRztRQUNuRiwwQkFBcUIsR0FBRyxJQUFJLDBCQUEwQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQXVDckUsV0FBTSxHQUFHLElBQUksZUFBZSxDQUFtQixn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dUJBQUMscUJBQXFCO2dCQU9yQixjQUFjO3NCQURwQixLQUFLO3VCQUFDLDJCQUEyQjtnQkFRM0IsV0FBVztzQkFEakIsS0FBSzt1QkFBQyxrQkFBa0I7Z0JBSWxCLFVBQVU7c0JBRGhCLEtBQUs7dUJBQUMsWUFBWTtnQkFPWixhQUFhO3NCQURuQixLQUFLO3VCQUFDLDBCQUEwQjtnQkFJMUIsU0FBUztzQkFEZixLQUFLO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEhvc3QsIElucHV0LCBPbkRlc3Ryb3kgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTG9nZ2VyRmFjdG9yeSB9IGZyb20gXCJAZWxkZXJieXRlL3RzLWxvZ2dlclwiO1xuaW1wb3J0IHsgRWxkZXJTZWFyY2hDb250ZXh0RGlyZWN0aXZlIH0gZnJvbSBcIi4vZWxkZXItc2VhcmNoLWNvbnRleHQuZGlyZWN0aXZlXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anMvaW50ZXJuYWwvT2JzZXJ2YWJsZVwiO1xuaW1wb3J0IHsgTmdNb2RlbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgU2VhcmNoSW5wdXQgfSBmcm9tIFwiLi9tb2RlbC9zZWFyY2gtaW5wdXRcIjtcbmltcG9ydCB7IG1hcCwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgeyBQcm9wZXJ0eVBhdGhVdGlsIH0gZnJvbSBcIi4uLy4uLy4uL2NvbW1vbi91dGlscy9wcm9wZXJ0eS1wYXRoLXV0aWxcIjtcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBTZWFyY2hJbnB1dFN0YXRlIH0gZnJvbSBcIi4vbW9kZWwvc2VhcmNoLWlucHV0LXN0YXRlXCI7XG5pbXBvcnQgeyBPYmplY3RzIH0gZnJvbSBcIi4uLy4uLy4uL2NvbW1vbi9vYmplY3RzXCI7XG5pbXBvcnQgeyBDb2xsZWN0aW9uVXRpbCB9IGZyb20gXCIuLi8uLi8uLi9jb21tb24vdXRpbHMvY29sbGVjdGlvbi11dGlsXCI7XG5pbXBvcnQgeyBMb2NhbFBhZ2VkRGF0YVNvdXJjZSB9IGZyb20gXCIuLi8uLi8uLi9jb21tb24vZGF0YS9kYXRhc291cmNlL2xvY2FsL2xvY2FsLXBhZ2VkLWRhdGEtc291cmNlXCI7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2NvZXJjaW9uXCI7XG5pbXBvcnQgeyBFbGRlckluaXRpYWxWYWx1ZURpcmVjdGl2ZSB9IGZyb20gXCIuLi9kaXJlY3RpdmVzL2VsZGVyLWluaXRpYWwtdmFsdWUuZGlyZWN0aXZlXCI7XG5cbi8qKlxuICogU2VhcmNoIG5hbWUgYWRhcHRlciBmb3IgaW5wdXQgY29udHJvbHMuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogXCJbZWxkZXJTZWFyY2hJbnB1dF1cIixcbiAgZXhwb3J0QXM6IFwiZWxkZXJTZWFyY2hJbnB1dFwiXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyU2VhcmNoSW5wdXREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQsIFNlYXJjaElucHV0IHtcbiAgLy9UT0RPOiBJbiBBbmd1bGFyIDE2LCB1c2Ugc3RhbmRhbG9uZSBkaXJlY3RpdmVzIGFuZCBob3N0IGNvbXBvbmVudCB0byBpbmplY3QgZGlyZWN0aXZlIHRvIGNvbXBvbmVudFxuICBwcml2YXRlIHJlYWRvbmx5IGluaXRpYWxWYWx1ZURpcmVjdGl2ZSA9IG5ldyBFbGRlckluaXRpYWxWYWx1ZURpcmVjdGl2ZSh0aGlzLm5nTW9kZWwpO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFVzdWFsbHkgdGhlIGNvbnRyb2wgbmFtZSBpcyB1c2VkLCB0aGlzIGFsbG93cyBhIGN1c3RvbSBxdWVyeSBrZXlcbiAgICovXG4gIEBJbnB1dChcImVsZGVyU2VhcmNoSW5wdXRLZXlcIilcbiAgcHVibGljIHF1ZXJ5S2V5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIChPcHRpb25hbCkgRnVuY3Rpb24gd2hpY2ggdHJhbnNmb3JtcyB0aGUgdmFsdWUgb2JqZWN0IHRvIGEgcXVlcnkgcGFyYW0gdmFsdWVcbiAgICovXG4gIEBJbnB1dChcImVsZGVyU2VhcmNoSW5wdXRUcmFuc2Zvcm1cIilcbiAgcHVibGljIHZhbHVlVHJhbnNmb3JtOiAoKHZhbHVlOiBhbnkpID0+IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCk7XG5cbiAgLyoqXG4gICAqIChPcHRpb25hbCwgRGVmYXVsdCkgUGF0aCBvbiB0aGUgdmFsdWUgb2JqZWN0IHRvIHVzZSBhcyBxdWVyeSBwYXJhbSB2YWx1ZVxuICAgKiAgdmFsdWUgPSBcInR5cGUuaWRcIlxuICAgKi9cbiAgQElucHV0KFwiZWxkZXJTZWFyY2hJbnB1dFwiKVxuICBwdWJsaWMgcmVzb2x2ZVBhdGg6IHN0cmluZztcblxuICBASW5wdXQoXCJkYXRhU291cmNlXCIpXG4gIHB1YmxpYyBkYXRhU291cmNlOiBMb2NhbFBhZ2VkRGF0YVNvdXJjZTxhbnk+O1xuXG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFVzZSB0aGlzIHZhbHVlIGZvciB0aGUgcXVlcnkgaWYgbm9uZSBpcyBwcm92aWRlZC5cbiAgICovXG4gIEBJbnB1dChcImVsZGVyU2VhcmNoSW5wdXRGYWxsYmFja1wiKVxuICBwdWJsaWMgZmFsbGJhY2tWYWx1ZTogc3RyaW5nIHwgc3RyaW5nW107XG5cbiAgQElucHV0KFwidmFsdWVBc0lkXCIpXG4gIHB1YmxpYyB2YWx1ZUFzSWQ6IEJvb2xlYW5JbnB1dDtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zdGF0ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2VhcmNoSW5wdXRTdGF0ZT4oU2VhcmNoSW5wdXRTdGF0ZS51bmtub3duKCkpO1xuICBwcml2YXRlIF9leHRyYWN0ZWROYW1lOiBzdHJpbmcgfCBudWxsO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBsb2cgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2VhcmNoQ29udGV4dDogRWxkZXJTZWFyY2hDb250ZXh0RGlyZWN0aXZlLFxuICAgIEBIb3N0KCkgcHJpdmF0ZSBuZ01vZGVsOiBOZ01vZGVsXG4gICkge1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIExpZmUgQ3ljbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9leHRyYWN0ZWROYW1lID0gdGhpcy5leHRyYWN0TmFtZSgpO1xuXG4gICAgdGhpcy5sb2cuZGVidWcodGhpcy5leHRyYWN0TmFtZSgpICsgXCJ8XCIgKyB0aGlzLnF1ZXJ5S2V5ICsgXCJ8XCIgKyB0aGlzLnJlc29sdmVQYXRoKTtcblxuICAgIHRoaXMuc2VhcmNoQ29udGV4dC5yZWdpc3Rlcih0aGlzKTtcblxuICAgIHRoaXMuc3RhdGVPYnNlcnZhYmxlKCkuc3Vic2NyaWJlKHN0YXRlID0+IHtcbiAgICAgIHRoaXMuZW1pdFN0YXRlKHN0YXRlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgZ2V0IHN0YXRlJCgpOiBPYnNlcnZhYmxlPFNlYXJjaElucHV0U3RhdGU+IHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGUuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YXRlU25hcHNob3QoKTogU2VhcmNoSW5wdXRTdGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5xdWVyeUtleSkge1xuICAgICAgcmV0dXJuIHRoaXMucXVlcnlLZXk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9leHRyYWN0ZWROYW1lKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZXh0cmFjdGVkTmFtZTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBzZWFyY2ggbmFtZSBrZXkgbmFtZS5cIiArXG4gICAgICBcIiBFaXRoZXIgc3BlY2lmeSB0aGUgbmFtZSBwcm9wZXJ0eSBvciBleHBsaWNpdGx5IHNldCBbZWxkZXJTZWFyY2hJbnB1dEtleV0uXCIpO1xuICB9XG5cbiAgcHVibGljIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLm5nTW9kZWwudmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlYWRvbmx5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm5nTW9kZWwuaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGhhc0ZhbGxiYWNrKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTZWFyY2hJbnB1dFN0YXRlLmlzVmFsdWVEZWZpbmVkKHRoaXMuZmFsbGJhY2tWYWx1ZSk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgYXBwbHlJbml0aWFsVmFsdWUocXVlcnlTdHJpbmc6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5jb252ZXJ0UXVlcnlTdHJpbmdUb1Jhd01vZGVsVmFsdWUocXVlcnlTdHJpbmcpO1xuICAgIHRoaXMuaW5pdGlhbFZhbHVlRGlyZWN0aXZlLmFwcGx5SW5pdGlhbFZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLm5nTW9kZWwucmVzZXQoKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgc3RhdGVPYnNlcnZhYmxlKCk6IE9ic2VydmFibGU8U2VhcmNoSW5wdXRTdGF0ZT4ge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxWYWx1ZURpcmVjdGl2ZS52YWx1ZUNoYW5nZXMkLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICBtYXAodmFsdWUgPT4ge1xuXG4gICAgICAgIGNvbnN0IHF1ZXJ5VmFsdWUgPSB0aGlzLmNvbnZlcnRSYXdNb2RlbFZhbHVlVG9RdWVyeVN0cmluZyh2YWx1ZSk7XG4gICAgICAgIGNvbnN0IHByaXN0aW5lID0gIXRoaXMuaXNBdHRyaWJ1dGVWYWx1ZVByZXNlbnQodmFsdWUpO1xuXG4gICAgICAgIHJldHVybiBuZXcgU2VhcmNoSW5wdXRTdGF0ZShcbiAgICAgICAgICB0aGlzLm5hbWUsXG4gICAgICAgICAgcXVlcnlWYWx1ZSxcbiAgICAgICAgICB0aGlzLnF1ZXJ5S2V5IHx8IHRoaXMubmFtZSxcbiAgICAgICAgICBwcmlzdGluZVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0UXVlcnlTdHJpbmdUb1Jhd01vZGVsVmFsdWUocXVlcnlTdHJpbmc6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCkge1xuICAgIGlmIChPYmplY3RzLm5vbk51bGwocXVlcnlTdHJpbmcpKSB7XG4gICAgICByZXR1cm4gcXVlcnlTdHJpbmc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29udmVydFJhd01vZGVsVmFsdWVUb1F1ZXJ5U3RyaW5nKG1vZGVsOiBhbnkpOiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGwge1xuXG4gICAgbGV0IHF1ZXJ5VmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCA9IG51bGw7XG5cbiAgICBpZiAodGhpcy52YWx1ZUFzSWQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICBxdWVyeVZhbHVlID0gdGhpcy5jaGVja0FuZENvbnZlcnRGYXVsdHlWYWx1ZXNUb051bGwobW9kZWwpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0F0dHJpYnV0ZVZhbHVlUHJlc2VudChtb2RlbCkpIHtcbiAgICAgIC8vIEF0dHJpYnV0ZSB2YWx1ZSBpcyBwcmVzZW50XG4gICAgICBxdWVyeVZhbHVlID0gdGhpcy5yZXNvbHZlVmFsdWUobW9kZWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5oYXNGYWxsYmFjaykge1xuICAgICAgICBxdWVyeVZhbHVlID0gdGhpcy5mYWxsYmFja1ZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBxdWVyeVZhbHVlO1xuICB9XG5cbiAgcHVibGljIGVtaXRTdGF0ZShzdGF0ZTogU2VhcmNoSW5wdXRTdGF0ZSk6IHZvaWQge1xuICAgIHRoaXMuX3N0YXRlLm5leHQoc3RhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0FuZENvbnZlcnRGYXVsdHlWYWx1ZXNUb051bGwodmFsdWU6IGFueSkge1xuICAgIGxldCBmaXhlZFZhbHVlID0gdmFsdWU7XG4gICAgZml4ZWRWYWx1ZSA9IHRoaXMuY29udmVydEVtcHR5QXJyYXlUb051bGwoZml4ZWRWYWx1ZSk7XG4gICAgZml4ZWRWYWx1ZSA9IHRoaXMuY29udmVydEVtcHR5U3RyaW5nVG9OdWxsKGZpeGVkVmFsdWUpO1xuXG4gICAgcmV0dXJuIGZpeGVkVmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRFbXB0eUFycmF5VG9OdWxsKHZhbHVlOiBhbnkpIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSAmJiB2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRFbXB0eVN0cmluZ1RvTnVsbCh2YWx1ZTogYW55KSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiB2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGlzQXR0cmlidXRlVmFsdWVQcmVzZW50KHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU2VhcmNoSW5wdXRTdGF0ZS5pc1ZhbHVlRGVmaW5lZCh2YWx1ZSlcbiAgICAgICYmICh2YWx1ZSArIFwiXCIpLmxlbmd0aCAhPT0gMDtcbiAgfVxuXG5cbiAgcHJpdmF0ZSByZXNvbHZlVmFsdWUodmFsdWU6IGFueSk6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCB7XG4gICAgaWYgKE9iamVjdHMubm9uTnVsbCh2YWx1ZSkpIHtcbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG5cbiAgICAgICAgY29uc3QgcmVzb2x2ZWRWYWx1ZXMgPSB2YWx1ZVxuICAgICAgICAgIC5tYXAodiA9PiB0aGlzLnJlc29sdmVTaW5nbGVWYWx1ZSh2KSlcbiAgICAgICAgICAuZmlsdGVyKHYgPT4gT2JqZWN0cy5ub25OdWxsKHYpKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5jb25jYXRJZk5lY2Vzc2FyeShyZXNvbHZlZFZhbHVlcyk7XG5cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlc29sdmVTaW5nbGVWYWx1ZSh2YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVNpbmdsZVZhbHVlKHZhbHVlOiBhbnkpOiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGwge1xuICAgIHZhbHVlID0gUHJvcGVydHlQYXRoVXRpbC5yZXNvbHZlVmFsdWUodmFsdWUsIHRoaXMucmVzb2x2ZVBhdGgpO1xuICAgIHZhbHVlID0gdGhpcy52YWx1ZVRyYW5zZm9ybSA/IHRoaXMudmFsdWVUcmFuc2Zvcm0odmFsdWUpIDogdmFsdWU7XG5cblxuICAgIGlmIChPYmplY3RzLm5vbk51bGwodmFsdWUpKSB7XG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICByZXR1cm4gdmFsdWVcbiAgICAgICAgICAuZmlsdGVyKGkgPT4gT2JqZWN0cy5ub25OdWxsKGkpKVxuICAgICAgICAgIC5tYXAoaSA9PiBpLnRvU3RyaW5nKCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZXh0cmFjdE5hbWUoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMubmdNb2RlbC5uYW1lO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25jYXRJZk5lY2Vzc2FyeSh2YWx1ZXM6IChzdHJpbmcgfCBzdHJpbmdbXSlbXSk6IGFueVtdIHtcbiAgICBjb25zdCBhcnJheXMgPSB2YWx1ZXMubWFwKHYgPT4ge1xuICAgICAgaWYgKHYgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICByZXR1cm4gdjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBbdl07XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIENvbGxlY3Rpb25VdGlsLmZsYXR0ZW4oYXJyYXlzKTtcbiAgfVxuXG59XG4iXX0=
231
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItc2VhcmNoLWlucHV0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvc2VhcmNoL2VsZGVyLXNlYXJjaC1pbnB1dC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBS3JELE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUd2RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7OztBQUV6Rjs7R0FFRztBQUtILE1BQU0sT0FBTyx5QkFBeUI7SUE4Q3BDOzs7O2dGQUk0RTtJQUU1RSxZQUNVLGFBQTBDLEVBQ2xDLE9BQWdCO1FBRHhCLGtCQUFhLEdBQWIsYUFBYSxDQUE2QjtRQUNsQyxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBckRsQyxvR0FBb0c7UUFDbkYsMEJBQXFCLEdBQUcsSUFBSSwwQkFBMEIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUF1Q3JFLFdBQU0sR0FBRyxJQUFJLGVBQWUsQ0FBbUIs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b0JBQzlCLFFBQVEsRUFBRSxrQkFBa0I7aUJBQzdCOzswQkF1REksSUFBSTs0Q0F4Q0EsUUFBUTtzQkFEZCxLQUFLO3VCQUFDLHFCQUFxQjtnQkFPckIsY0FBYztzQkFEcEIsS0FBSzt1QkFBQywyQkFBMkI7Z0JBUTNCLFdBQVc7c0JBRGpCLEtBQUs7dUJBQUMsa0JBQWtCO2dCQUlsQixVQUFVO3NCQURoQixLQUFLO3VCQUFDLFlBQVk7Z0JBT1osYUFBYTtzQkFEbkIsS0FBSzt1QkFBQywwQkFBMEI7Z0JBSTFCLFNBQVM7c0JBRGYsS0FBSzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBIb3N0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTG9nZ2VyRmFjdG9yeSB9IGZyb20gXCJAZWxkZXJieXRlL3RzLWxvZ2dlclwiO1xuaW1wb3J0IHsgRWxkZXJTZWFyY2hDb250ZXh0RGlyZWN0aXZlIH0gZnJvbSBcIi4vZWxkZXItc2VhcmNoLWNvbnRleHQuZGlyZWN0aXZlXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anMvaW50ZXJuYWwvT2JzZXJ2YWJsZVwiO1xuaW1wb3J0IHsgTmdNb2RlbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgU2VhcmNoSW5wdXQgfSBmcm9tIFwiLi9tb2RlbC9zZWFyY2gtaW5wdXRcIjtcbmltcG9ydCB7IG1hcCwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgeyBQcm9wZXJ0eVBhdGhVdGlsIH0gZnJvbSBcIi4uLy4uLy4uL2NvbW1vbi91dGlscy9wcm9wZXJ0eS1wYXRoLXV0aWxcIjtcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBTZWFyY2hJbnB1dFN0YXRlIH0gZnJvbSBcIi4vbW9kZWwvc2VhcmNoLWlucHV0LXN0YXRlXCI7XG5pbXBvcnQgeyBPYmplY3RzIH0gZnJvbSBcIi4uLy4uLy4uL2NvbW1vbi9vYmplY3RzXCI7XG5pbXBvcnQgeyBDb2xsZWN0aW9uVXRpbCB9IGZyb20gXCIuLi8uLi8uLi9jb21tb24vdXRpbHMvY29sbGVjdGlvbi11dGlsXCI7XG5pbXBvcnQgeyBMb2NhbFBhZ2VkRGF0YVNvdXJjZSB9IGZyb20gXCIuLi8uLi8uLi9jb21tb24vZGF0YS9kYXRhc291cmNlL2xvY2FsL2xvY2FsLXBhZ2VkLWRhdGEtc291cmNlXCI7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2NvZXJjaW9uXCI7XG5pbXBvcnQgeyBFbGRlckluaXRpYWxWYWx1ZURpcmVjdGl2ZSB9IGZyb20gXCIuLi9kaXJlY3RpdmVzL2VsZGVyLWluaXRpYWwtdmFsdWUuZGlyZWN0aXZlXCI7XG5cbi8qKlxuICogU2VhcmNoIG5hbWUgYWRhcHRlciBmb3IgaW5wdXQgY29udHJvbHMuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogXCJbZWxkZXJTZWFyY2hJbnB1dF1cIixcbiAgZXhwb3J0QXM6IFwiZWxkZXJTZWFyY2hJbnB1dFwiXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyU2VhcmNoSW5wdXREaXJlY3RpdmUgaW1wbGVtZW50cyBTZWFyY2hJbnB1dCwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAvL1RPRE86IEluIEFuZ3VsYXIgMTYsIHVzZSBzdGFuZGFsb25lIGRpcmVjdGl2ZXMgYW5kIGhvc3QgY29tcG9uZW50IHRvIGluamVjdCBkaXJlY3RpdmUgdG8gY29tcG9uZW50XG4gIHByaXZhdGUgcmVhZG9ubHkgaW5pdGlhbFZhbHVlRGlyZWN0aXZlID0gbmV3IEVsZGVySW5pdGlhbFZhbHVlRGlyZWN0aXZlKHRoaXMubmdNb2RlbCk7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIChPcHRpb25hbCkgVXN1YWxseSB0aGUgY29udHJvbCBuYW1lIGlzIHVzZWQsIHRoaXMgYWxsb3dzIGEgY3VzdG9tIHF1ZXJ5IGtleVxuICAgKi9cbiAgQElucHV0KFwiZWxkZXJTZWFyY2hJbnB1dEtleVwiKVxuICBwdWJsaWMgcXVlcnlLZXk6IHN0cmluZztcblxuICAvKipcbiAgICogKE9wdGlvbmFsKSBGdW5jdGlvbiB3aGljaCB0cmFuc2Zvcm1zIHRoZSB2YWx1ZSBvYmplY3QgdG8gYSBxdWVyeSBwYXJhbSB2YWx1ZVxuICAgKi9cbiAgQElucHV0KFwiZWxkZXJTZWFyY2hJbnB1dFRyYW5zZm9ybVwiKVxuICBwdWJsaWMgdmFsdWVUcmFuc2Zvcm06ICgodmFsdWU6IGFueSkgPT4gc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsKTtcblxuICAvKipcbiAgICogKE9wdGlvbmFsLCBEZWZhdWx0KSBQYXRoIG9uIHRoZSB2YWx1ZSBvYmplY3QgdG8gdXNlIGFzIHF1ZXJ5IHBhcmFtIHZhbHVlXG4gICAqICB2YWx1ZSA9IFwidHlwZS5pZFwiXG4gICAqL1xuICBASW5wdXQoXCJlbGRlclNlYXJjaElucHV0XCIpXG4gIHB1YmxpYyByZXNvbHZlUGF0aDogc3RyaW5nO1xuXG4gIEBJbnB1dChcImRhdGFTb3VyY2VcIilcbiAgcHVibGljIGRhdGFTb3VyY2U6IExvY2FsUGFnZWREYXRhU291cmNlPGFueT47XG5cbiAgLyoqXG4gICAqIChPcHRpb25hbCkgVXNlIHRoaXMgdmFsdWUgZm9yIHRoZSBxdWVyeSBpZiBub25lIGlzIHByb3ZpZGVkLlxuICAgKi9cbiAgQElucHV0KFwiZWxkZXJTZWFyY2hJbnB1dEZhbGxiYWNrXCIpXG4gIHB1YmxpYyBmYWxsYmFja1ZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXTtcblxuICBASW5wdXQoXCJ2YWx1ZUFzSWRcIilcbiAgcHVibGljIHZhbHVlQXNJZDogQm9vbGVhbklucHV0O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0YXRlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTZWFyY2hJbnB1dFN0YXRlPihTZWFyY2hJbnB1dFN0YXRlLnVua25vd24oKSk7XG4gIHByaXZhdGUgX2V4dHJhY3RlZE5hbWU6IHN0cmluZyB8IG51bGw7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IGxvZyA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXMuY29uc3RydWN0b3IubmFtZSk7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZWFyY2hDb250ZXh0OiBFbGRlclNlYXJjaENvbnRleHREaXJlY3RpdmUsXG4gICAgQEhvc3QoKSBwcml2YXRlIG5nTW9kZWw6IE5nTW9kZWxcbiAgKSB7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogTGlmZSBDeWNsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5fZXh0cmFjdGVkTmFtZSA9IHRoaXMuZXh0cmFjdE5hbWUoKTtcbiAgICB0aGlzLnNlYXJjaENvbnRleHQucmVnaXN0ZXIodGhpcyk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX2V4dHJhY3RlZE5hbWUgPSB0aGlzLmV4dHJhY3ROYW1lKCk7XG4gICAgdGhpcy5sb2cuZGVidWcodGhpcy5fZXh0cmFjdGVkTmFtZSArIFwifFwiICsgdGhpcy5xdWVyeUtleSArIFwifFwiICsgdGhpcy5yZXNvbHZlUGF0aCk7XG4gICAgdGhpcy5zdGF0ZU9ic2VydmFibGUoKS5zdWJzY3JpYmUoc3RhdGUgPT4ge1xuICAgICAgdGhpcy5lbWl0U3RhdGUoc3RhdGUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBnZXQgc3RhdGUkKCk6IE9ic2VydmFibGU8U2VhcmNoSW5wdXRTdGF0ZT4ge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZS5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RhdGVTbmFwc2hvdCgpOiBTZWFyY2hJbnB1dFN0YXRlIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGUuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnF1ZXJ5S2V5KSB7XG4gICAgICByZXR1cm4gdGhpcy5xdWVyeUtleTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2V4dHJhY3RlZE5hbWUpIHtcbiAgICAgIHJldHVybiB0aGlzLl9leHRyYWN0ZWROYW1lO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcihcIkNvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIHNlYXJjaCBuYW1lIGtleSBuYW1lLlwiICtcbiAgICAgIFwiIEVpdGhlciBzcGVjaWZ5IHRoZSBuYW1lIHByb3BlcnR5IG9yIGV4cGxpY2l0bHkgc2V0IFtlbGRlclNlYXJjaElucHV0S2V5XS5cIik7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMubmdNb2RlbC52YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVhZG9ubHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubmdNb2RlbC5pc0Rpc2FibGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgaGFzRmFsbGJhY2soKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFNlYXJjaElucHV0U3RhdGUuaXNWYWx1ZURlZmluZWQodGhpcy5mYWxsYmFja1ZhbHVlKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBhcHBseUluaXRpYWxWYWx1ZShxdWVyeVN0cmluZzogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsKTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmNvbnZlcnRRdWVyeVN0cmluZ1RvUmF3TW9kZWxWYWx1ZShxdWVyeVN0cmluZyk7XG4gICAgdGhpcy5pbml0aWFsVmFsdWVEaXJlY3RpdmUuYXBwbHlJbml0aWFsVmFsdWUodmFsdWUpO1xuICB9XG5cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMubmdNb2RlbC5yZXNldCgpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgbWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSBzdGF0ZU9ic2VydmFibGUoKTogT2JzZXJ2YWJsZTxTZWFyY2hJbnB1dFN0YXRlPiB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbFZhbHVlRGlyZWN0aXZlLnZhbHVlQ2hhbmdlcyQucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgIG1hcCh2YWx1ZSA9PiB7XG5cbiAgICAgICAgY29uc3QgcXVlcnlWYWx1ZSA9IHRoaXMuY29udmVydFJhd01vZGVsVmFsdWVUb1F1ZXJ5U3RyaW5nKHZhbHVlKTtcbiAgICAgICAgY29uc3QgcHJpc3RpbmUgPSAhdGhpcy5pc0F0dHJpYnV0ZVZhbHVlUHJlc2VudCh2YWx1ZSk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBTZWFyY2hJbnB1dFN0YXRlKFxuICAgICAgICAgIHRoaXMubmFtZSxcbiAgICAgICAgICBxdWVyeVZhbHVlLFxuICAgICAgICAgIHRoaXMucXVlcnlLZXkgfHwgdGhpcy5uYW1lLFxuICAgICAgICAgIHByaXN0aW5lXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRRdWVyeVN0cmluZ1RvUmF3TW9kZWxWYWx1ZShxdWVyeVN0cmluZzogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsKSB7XG4gICAgaWYgKE9iamVjdHMubm9uTnVsbChxdWVyeVN0cmluZykpIHtcbiAgICAgIHJldHVybiBxdWVyeVN0cmluZztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0UmF3TW9kZWxWYWx1ZVRvUXVlcnlTdHJpbmcobW9kZWw6IGFueSk6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCB7XG5cbiAgICBsZXQgcXVlcnlWYWx1ZTogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsID0gbnVsbDtcblxuICAgIGlmICh0aGlzLnZhbHVlQXNJZCAhPSB1bmRlZmluZWQpIHtcbiAgICAgIHF1ZXJ5VmFsdWUgPSB0aGlzLmNoZWNrQW5kQ29udmVydEZhdWx0eVZhbHVlc1RvTnVsbChtb2RlbCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzQXR0cmlidXRlVmFsdWVQcmVzZW50KG1vZGVsKSkge1xuICAgICAgLy8gQXR0cmlidXRlIHZhbHVlIGlzIHByZXNlbnRcbiAgICAgIHF1ZXJ5VmFsdWUgPSB0aGlzLnJlc29sdmVWYWx1ZShtb2RlbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmhhc0ZhbGxiYWNrKSB7XG4gICAgICAgIHF1ZXJ5VmFsdWUgPSB0aGlzLmZhbGxiYWNrVmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHF1ZXJ5VmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZW1pdFN0YXRlKHN0YXRlOiBTZWFyY2hJbnB1dFN0YXRlKTogdm9pZCB7XG4gICAgdGhpcy5fc3RhdGUubmV4dChzdGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrQW5kQ29udmVydEZhdWx0eVZhbHVlc1RvTnVsbCh2YWx1ZTogYW55KSB7XG4gICAgbGV0IGZpeGVkVmFsdWUgPSB2YWx1ZTtcbiAgICBmaXhlZFZhbHVlID0gdGhpcy5jb252ZXJ0RW1wdHlBcnJheVRvTnVsbChmaXhlZFZhbHVlKTtcbiAgICBmaXhlZFZhbHVlID0gdGhpcy5jb252ZXJ0RW1wdHlTdHJpbmdUb051bGwoZml4ZWRWYWx1ZSk7XG5cbiAgICByZXR1cm4gZml4ZWRWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydEVtcHR5QXJyYXlUb051bGwodmFsdWU6IGFueSkge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5ICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydEVtcHR5U3RyaW5nVG9OdWxsKHZhbHVlOiBhbnkpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgaXNBdHRyaWJ1dGVWYWx1ZVByZXNlbnQodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTZWFyY2hJbnB1dFN0YXRlLmlzVmFsdWVEZWZpbmVkKHZhbHVlKVxuICAgICAgJiYgKHZhbHVlICsgXCJcIikubGVuZ3RoICE9PSAwO1xuICB9XG5cblxuICBwcml2YXRlIHJlc29sdmVWYWx1ZSh2YWx1ZTogYW55KTogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsIHtcbiAgICBpZiAoT2JqZWN0cy5ub25OdWxsKHZhbHVlKSkge1xuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHtcblxuICAgICAgICBjb25zdCByZXNvbHZlZFZhbHVlcyA9IHZhbHVlXG4gICAgICAgICAgLm1hcCh2ID0+IHRoaXMucmVzb2x2ZVNpbmdsZVZhbHVlKHYpKVxuICAgICAgICAgIC5maWx0ZXIodiA9PiBPYmplY3RzLm5vbk51bGwodikpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmNvbmNhdElmTmVjZXNzYXJ5KHJlc29sdmVkVmFsdWVzKTtcblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZVNpbmdsZVZhbHVlKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlU2luZ2xlVmFsdWUodmFsdWU6IGFueSk6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCB7XG4gICAgdmFsdWUgPSBQcm9wZXJ0eVBhdGhVdGlsLnJlc29sdmVWYWx1ZSh2YWx1ZSwgdGhpcy5yZXNvbHZlUGF0aCk7XG4gICAgdmFsdWUgPSB0aGlzLnZhbHVlVHJhbnNmb3JtID8gdGhpcy52YWx1ZVRyYW5zZm9ybSh2YWx1ZSkgOiB2YWx1ZTtcblxuXG4gICAgaWYgKE9iamVjdHMubm9uTnVsbCh2YWx1ZSkpIHtcbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICAgIC5maWx0ZXIoaSA9PiBPYmplY3RzLm5vbk51bGwoaSkpXG4gICAgICAgICAgLm1hcChpID0+IGkudG9TdHJpbmcoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0TmFtZSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5uZ01vZGVsLm5hbWU7XG4gIH1cblxuICBwcml2YXRlIGNvbmNhdElmTmVjZXNzYXJ5KHZhbHVlczogKHN0cmluZyB8IHN0cmluZ1tdKVtdKTogYW55W10ge1xuICAgIGNvbnN0IGFycmF5cyA9IHZhbHVlcy5tYXAodiA9PiB7XG4gICAgICBpZiAodiBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIHJldHVybiB2O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFt2XTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gQ29sbGVjdGlvblV0aWwuZmxhdHRlbihhcnJheXMpO1xuICB9XG5cbn1cbiJdfQ==
@@ -23,8 +23,8 @@ export { ElderSearchInputDirective } from "./elder-search-input.directive";
23
23
  export { ElderSearchBoxComponent } from "./search-box/elder-search-box.component";
24
24
  export { ElderSearchPanelComponent } from "./search-box/elder-search-panel.component";
25
25
  export class ElderSearchModule {
26
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: ElderSearchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
27
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.11", ngImport: i0, type: ElderSearchModule, declarations: [ElderSearchContextDirective,
26
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ElderSearchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
27
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: ElderSearchModule, declarations: [ElderSearchContextDirective,
28
28
  ElderSearchContextUrlBindingDirective,
29
29
  ElderSearchInputDirective,
30
30
  ElderInitialValueDirective,
@@ -41,7 +41,7 @@ export class ElderSearchModule {
41
41
  ElderSearchInputDirective,
42
42
  ElderSearchBoxComponent,
43
43
  ElderSearchPanelComponent] }); }
44
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: ElderSearchModule, imports: [CommonModule, FormsModule,
44
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ElderSearchModule, imports: [CommonModule, FormsModule,
45
45
  MatInputModule, MatButtonModule, MatIconModule,
46
46
  MatBadgeModule,
47
47
  A11yModule,
@@ -50,7 +50,7 @@ export class ElderSearchModule {
50
50
  ElderFormsDirectivesModule,
51
51
  TranslateModule] }); }
52
52
  }
53
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: ElderSearchModule, decorators: [{
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ElderSearchModule, decorators: [{
54
54
  type: NgModule,
55
55
  args: [{
56
56
  imports: [
@@ -91,10 +91,10 @@ export class ElderSearchBoxComponent {
91
91
  clearSearch(event) {
92
92
  this.searchModel.reset();
93
93
  }
94
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: ElderSearchBoxComponent, deps: [{ token: i1.ElderSearchContextDirective }], target: i0.ɵɵFactoryTarget.Component }); }
95
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.11", type: ElderSearchBoxComponent, selector: "elder-search-box", inputs: { autoPanel: "autoPanel", name: "name", queryKey: "queryKey", placeholder: "placeholder", label: "label", hint: "hint", autocomplete: "autocomplete", appearance: "appearance", dense: "dense" }, host: { classAttribute: "elder-form-field-host" }, queries: [{ propertyName: "advancedSearch", first: true, predicate: ElderSearchPanelComponent, descendants: true }], viewQueries: [{ propertyName: "search", first: true, predicate: ["search"], descendants: true }], exportAs: ["elderSearchBox"], ngImport: i0, template: "<div class=\"layout-row place-stretch-center full flex\" style=\"overflow: hidden\">\n <mat-form-field\n *ngIf=\"overlayState$ | async as overlayState\"\n [appearance]=\"appearance\"\n class=\"elder-search-box-field flex-auto\" subscriptSizing=\"dynamic\"\n [elderDense]=\"dense\">\n\n <button matPrefix mat-icon-button type=\"button\"\n [elderOverlayTrigger]=\"searchPanel\" (click)=\"blurFocus($event)\"\n >\n <mat-icon>search</mat-icon>\n </button>\n\n <input matInput type=\"text\" [name]=\"name\" [placeholder]=\"placeholder\" #search cdkFocusInitial\n ngModel\n elderSearchInput [elderSearchInputKey]=\"queryKey\" #searchInput=\"elderSearchInput\"\n [autocomplete]=\"(autoPanel && overlayState.hasOverlay) ? 'off' : autocomplete\"\n [elderOverlayOrigin]=\"searchPanel\"\n [elderOverlayTrigger]=\"searchPanel\"\n [elderOverlayTriggerType]=\"'focus'\"\n [elderOverlayTriggerEnabled]=\"autoPanel && overlayState.hasOverlay && (searchInput?.state$ | async)?.pristine\"\n >\n <mat-hint *ngIf=\"hint\">{{hint}}</mat-hint>\n\n <div class=\"layout-row\" matSuffix *ngIf=\"searchModel.userDefinedAttributes$ | async as userDefinedFilters\">\n\n <button mat-icon-button type=\"button\"\n *ngIf=\"userDefinedFilters.length > 0\"\n (click)=\"clearSearch($event)\"\n name=\"clear\" aria-label=\"Clear\">\n <mat-icon>close</mat-icon>\n </button>\n\n <button mat-icon-button type=\"button\"\n *ngIf=\"overlayState.hasOverlay\" name=\"openPanel\"\n [elderOverlayTrigger]=\"searchPanel\" (click)=\"blurFocus($event)\">\n <mat-icon\n [matBadge]=\"userDefinedFilters.length\"\n matBadgeSize=\"small\"\n [matBadgeOverlap]=\"true\"\n [matBadgeHidden]=\"userDefinedFilters.length == 0\"\n matBadgeColor=\"accent\"\n [color]=\"userDefinedFilters.length > 0 ? 'accent' : undefined\"\n >\n filter_list\n </mat-icon>\n </button>\n </div>\n </mat-form-field>\n</div>\n\n\n<!-- Overlay Panel for advanced search -->\n<elder-overlay #searchPanel=\"elderOverlay\">\n <elder-dialog-panel class=\"elder-search-panel-container\">\n\n <!-- Project the users search inputs here -->\n <ng-content select=\"elder-search-panel\"></ng-content>\n\n <div class=\"layout-row place-between-center\">\n <button mat-raised-button type=\"button\" name=\"clear\"\n (click)=\"clearSearch($event)\">{{'context.reset' | translate}}\n </button>\n\n <button mat-raised-button type=\"button\" name=\"ok\" color=\"primary\"\n (click)=\"searchPanel.closeOverlay()\">Ok\n </button>\n </div>\n </elder-dialog-panel>\n</elder-overlay>\n", styles: [".elder-search-box-field{margin-top:4px;margin-bottom:4px}.elder-search-panel-container{min-width:250px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.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: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i5.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgeColor", "matBadgeOverlap", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: i9.ElderOverlayComponent, selector: "elder-overlay", inputs: ["originX", "originY", "overlayX", "overlayY", "offsetY", "offsetX", "backdrop", "backdropVisible", "origin", "positionStrategy", "overlaySize"], outputs: ["keydownEvents", "attachedChange"], exportAs: ["elderOverlay"] }, { kind: "directive", type: i10.ElderOverlayTriggerDirective, selector: "[elderOverlayTrigger]", inputs: ["elderOverlayTrigger", "elderOverlayTriggerType", "elderOverlayTriggerEnabled"] }, { kind: "directive", type: i11.ElderOverlayOriginDirective, selector: "[elderOverlayOrigin]", inputs: ["elderOverlayOrigin"] }, { kind: "component", type: i12.ElderDialogPanelComponent, selector: "elder-dialog-panel" }, { kind: "directive", type: i13.ElderFormFieldDenseDirective, selector: "mat-form-field[elderDense]", inputs: ["elderDense", "subscriptSizing", "floatLabel"] }, { kind: "directive", type: i14.ElderSearchInputDirective, selector: "[elderSearchInput]", inputs: ["elderSearchInputKey", "elderSearchInputTransform", "elderSearchInput", "dataSource", "elderSearchInputFallback", "valueAsId"], exportAs: ["elderSearchInput"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i15.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
94
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ElderSearchBoxComponent, deps: [{ token: i1.ElderSearchContextDirective }], target: i0.ɵɵFactoryTarget.Component }); }
95
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ElderSearchBoxComponent, selector: "elder-search-box", inputs: { autoPanel: "autoPanel", name: "name", queryKey: "queryKey", placeholder: "placeholder", label: "label", hint: "hint", autocomplete: "autocomplete", appearance: "appearance", dense: "dense" }, host: { classAttribute: "elder-form-field-host" }, queries: [{ propertyName: "advancedSearch", first: true, predicate: ElderSearchPanelComponent, descendants: true }], viewQueries: [{ propertyName: "search", first: true, predicate: ["search"], descendants: true }], exportAs: ["elderSearchBox"], ngImport: i0, template: "<div class=\"layout-row place-stretch-center full flex\" style=\"overflow: hidden\">\n <mat-form-field\n *ngIf=\"overlayState$ | async as overlayState\"\n [appearance]=\"appearance\"\n class=\"elder-search-box-field flex-auto\" subscriptSizing=\"dynamic\"\n [elderDense]=\"dense\">\n\n <button matPrefix mat-icon-button type=\"button\"\n [elderOverlayTrigger]=\"searchPanel\" (click)=\"blurFocus($event)\"\n >\n <mat-icon>search</mat-icon>\n </button>\n\n <input matInput type=\"text\" [name]=\"name\" [placeholder]=\"placeholder\" #search cdkFocusInitial\n ngModel\n elderSearchInput [elderSearchInputKey]=\"queryKey\" #searchInput=\"elderSearchInput\"\n [autocomplete]=\"(autoPanel && overlayState.hasOverlay) ? 'off' : autocomplete\"\n [elderOverlayOrigin]=\"searchPanel\"\n [elderOverlayTrigger]=\"searchPanel\"\n [elderOverlayTriggerType]=\"'focus'\"\n [elderOverlayTriggerEnabled]=\"autoPanel && overlayState.hasOverlay && (searchInput?.state$ | async)?.pristine\"\n >\n <mat-hint *ngIf=\"hint\">{{hint}}</mat-hint>\n\n <div class=\"layout-row\" matSuffix *ngIf=\"searchModel.userDefinedAttributes$ | async as userDefinedFilters\">\n\n <button mat-icon-button type=\"button\"\n *ngIf=\"userDefinedFilters.length > 0\"\n (click)=\"clearSearch($event)\"\n name=\"clear\" aria-label=\"Clear\">\n <mat-icon>close</mat-icon>\n </button>\n\n <button mat-icon-button type=\"button\"\n *ngIf=\"overlayState.hasOverlay\" name=\"openPanel\"\n [elderOverlayTrigger]=\"searchPanel\" (click)=\"blurFocus($event)\">\n <mat-icon\n [matBadge]=\"userDefinedFilters.length\"\n matBadgeSize=\"small\"\n [matBadgeOverlap]=\"true\"\n [matBadgeHidden]=\"userDefinedFilters.length == 0\"\n matBadgeColor=\"accent\"\n [color]=\"userDefinedFilters.length > 0 ? 'accent' : undefined\"\n >\n filter_list\n </mat-icon>\n </button>\n </div>\n </mat-form-field>\n</div>\n\n\n<!-- Overlay Panel for advanced search -->\n<elder-overlay #searchPanel=\"elderOverlay\">\n <elder-dialog-panel class=\"elder-search-panel-container\">\n\n <!-- Project the users search inputs here -->\n <ng-content select=\"elder-search-panel\"></ng-content>\n\n <div class=\"layout-row place-between-center\">\n <button mat-raised-button type=\"button\" name=\"clear\"\n (click)=\"clearSearch($event)\">{{'context.reset' | translate}}\n </button>\n\n <button mat-raised-button type=\"button\" name=\"ok\" color=\"primary\"\n (click)=\"searchPanel.closeOverlay()\">Ok\n </button>\n </div>\n </elder-dialog-panel>\n</elder-overlay>\n", styles: [".elder-search-box-field{margin-top:4px;margin-bottom:4px}.elder-search-panel-container{min-width:250px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.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: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i5.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgeColor", "matBadgeOverlap", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: i9.ElderOverlayComponent, selector: "elder-overlay", inputs: ["originX", "originY", "overlayX", "overlayY", "offsetY", "offsetX", "backdrop", "backdropVisible", "origin", "positionStrategy", "overlaySize"], outputs: ["keydownEvents", "attachedChange"], exportAs: ["elderOverlay"] }, { kind: "directive", type: i10.ElderOverlayTriggerDirective, selector: "[elderOverlayTrigger]", inputs: ["elderOverlayTrigger", "elderOverlayTriggerType", "elderOverlayTriggerEnabled"] }, { kind: "directive", type: i11.ElderOverlayOriginDirective, selector: "[elderOverlayOrigin]", inputs: ["elderOverlayOrigin"] }, { kind: "component", type: i12.ElderDialogPanelComponent, selector: "elder-dialog-panel" }, { kind: "directive", type: i13.ElderFormFieldDenseDirective, selector: "mat-form-field[elderDense]", inputs: ["elderDense", "subscriptSizing", "floatLabel"] }, { kind: "directive", type: i14.ElderSearchInputDirective, selector: "[elderSearchInput]", inputs: ["elderSearchInputKey", "elderSearchInputTransform", "elderSearchInput", "dataSource", "elderSearchInputFallback", "valueAsId"], exportAs: ["elderSearchInput"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i15.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
96
96
  }
97
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: ElderSearchBoxComponent, decorators: [{
97
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ElderSearchBoxComponent, decorators: [{
98
98
  type: Component,
99
99
  args: [{ selector: 'elder-search-box', exportAs: 'elderSearchBox', host: { 'class': 'elder-form-field-host' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"layout-row place-stretch-center full flex\" style=\"overflow: hidden\">\n <mat-form-field\n *ngIf=\"overlayState$ | async as overlayState\"\n [appearance]=\"appearance\"\n class=\"elder-search-box-field flex-auto\" subscriptSizing=\"dynamic\"\n [elderDense]=\"dense\">\n\n <button matPrefix mat-icon-button type=\"button\"\n [elderOverlayTrigger]=\"searchPanel\" (click)=\"blurFocus($event)\"\n >\n <mat-icon>search</mat-icon>\n </button>\n\n <input matInput type=\"text\" [name]=\"name\" [placeholder]=\"placeholder\" #search cdkFocusInitial\n ngModel\n elderSearchInput [elderSearchInputKey]=\"queryKey\" #searchInput=\"elderSearchInput\"\n [autocomplete]=\"(autoPanel && overlayState.hasOverlay) ? 'off' : autocomplete\"\n [elderOverlayOrigin]=\"searchPanel\"\n [elderOverlayTrigger]=\"searchPanel\"\n [elderOverlayTriggerType]=\"'focus'\"\n [elderOverlayTriggerEnabled]=\"autoPanel && overlayState.hasOverlay && (searchInput?.state$ | async)?.pristine\"\n >\n <mat-hint *ngIf=\"hint\">{{hint}}</mat-hint>\n\n <div class=\"layout-row\" matSuffix *ngIf=\"searchModel.userDefinedAttributes$ | async as userDefinedFilters\">\n\n <button mat-icon-button type=\"button\"\n *ngIf=\"userDefinedFilters.length > 0\"\n (click)=\"clearSearch($event)\"\n name=\"clear\" aria-label=\"Clear\">\n <mat-icon>close</mat-icon>\n </button>\n\n <button mat-icon-button type=\"button\"\n *ngIf=\"overlayState.hasOverlay\" name=\"openPanel\"\n [elderOverlayTrigger]=\"searchPanel\" (click)=\"blurFocus($event)\">\n <mat-icon\n [matBadge]=\"userDefinedFilters.length\"\n matBadgeSize=\"small\"\n [matBadgeOverlap]=\"true\"\n [matBadgeHidden]=\"userDefinedFilters.length == 0\"\n matBadgeColor=\"accent\"\n [color]=\"userDefinedFilters.length > 0 ? 'accent' : undefined\"\n >\n filter_list\n </mat-icon>\n </button>\n </div>\n </mat-form-field>\n</div>\n\n\n<!-- Overlay Panel for advanced search -->\n<elder-overlay #searchPanel=\"elderOverlay\">\n <elder-dialog-panel class=\"elder-search-panel-container\">\n\n <!-- Project the users search inputs here -->\n <ng-content select=\"elder-search-panel\"></ng-content>\n\n <div class=\"layout-row place-between-center\">\n <button mat-raised-button type=\"button\" name=\"clear\"\n (click)=\"clearSearch($event)\">{{'context.reset' | translate}}\n </button>\n\n <button mat-raised-button type=\"button\" name=\"ok\" color=\"primary\"\n (click)=\"searchPanel.closeOverlay()\">Ok\n </button>\n </div>\n </elder-dialog-panel>\n</elder-overlay>\n", styles: [".elder-search-box-field{margin-top:4px;margin-bottom:4px}.elder-search-panel-container{min-width:250px}\n"] }]
100
100
  }], ctorParameters: function () { return [{ type: i1.ElderSearchContextDirective }]; }, propDecorators: { search: [{
@@ -2,10 +2,10 @@ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export class ElderSearchPanelComponent {
4
4
  constructor() { }
5
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: ElderSearchPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.11", type: ElderSearchPanelComponent, selector: "elder-search-panel", ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ElderSearchPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ElderSearchPanelComponent, selector: "elder-search-panel", ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7
7
  }
8
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: ElderSearchPanelComponent, decorators: [{
8
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ElderSearchPanelComponent, decorators: [{
9
9
  type: Component,
10
10
  args: [{
11
11
  selector: 'elder-search-panel',
@@ -1,77 +1,108 @@
1
1
  import { Injectable } from "@angular/core";
2
- import { first, takeUntil } from "rxjs/operators";
2
+ import { filter, first, takeUntil } from "rxjs/operators";
3
3
  import { Subject } from "rxjs";
4
4
  import { ElderSearchContextFilters } from "./elder-search-context-filters";
5
5
  import { Filter } from "../../../../common/data/filters/filter";
6
6
  import { BehaviorSubject } from "rxjs/internal/BehaviorSubject";
7
+ import { LoggerFactory } from "@elderbyte/ts-logger";
7
8
  import * as i0 from "@angular/core";
8
9
  import * as i1 from "@angular/router";
9
10
  export class ElderSearchUrlBindingService {
11
+ /***************************************************************************
12
+ * *
13
+ * Constructor *
14
+ * *
15
+ **************************************************************************/
10
16
  constructor(router, route) {
11
17
  this.router = router;
12
18
  this.route = route;
13
- //A search param has following structure: search-[searchContextId]-[filterId]=[value]
19
+ //A search param has following structure: q-[searchContextId]-[filterId]=[value]
14
20
  //Example: search-browser1-hasStarted=true
15
- this._searchMap$ = new BehaviorSubject(new Map());
21
+ /***************************************************************************
22
+ * *
23
+ * Fields *
24
+ * *
25
+ **************************************************************************/
26
+ this.log = LoggerFactory.getLogger(this.constructor.name);
27
+ this._searchMap$ = new BehaviorSubject({
28
+ value: new Map(),
29
+ emit: true
30
+ });
16
31
  this._initialSearchMap$ = new BehaviorSubject(new Map());
17
32
  this.searchParamPrefix = "q";
18
33
  this.unsubscribe$ = new Subject();
19
34
  this.router.events.pipe(first()).subscribe(() => {
20
35
  this.handleSearchParameters(this.route.snapshot.queryParams);
21
36
  });
22
- this._searchMap$.pipe(takeUntil(this.unsubscribe$)).subscribe(searchMap => {
37
+ this._searchMap$.pipe(filter(searchMapUpdate => searchMapUpdate.emit), takeUntil(this.unsubscribe$)).subscribe(searchMapUpdate => {
38
+ this.log.warn("SET URL");
39
+ const searchMap = searchMapUpdate.value;
23
40
  const resetParams = this.resetSearchParams();
24
41
  const queryParams = { ...resetParams, ...this.buildQueryParams(searchMap) };
42
+ this.log.warn("searchMap :", searchMap);
43
+ this.log.warn("queryParams :", queryParams);
25
44
  this.router.navigate([], {
26
- relativeTo: this.route,
27
45
  queryParams: queryParams,
28
46
  replaceUrl: true,
29
47
  queryParamsHandling: "merge"
30
48
  });
31
49
  });
50
+ this.router.events.subscribe((event) => this.log.warn("Type: " + event.constructor?.name, event));
32
51
  }
33
- resetSearchParams() {
34
- let params = { ...this.route.snapshot.queryParams };
35
- const searchParams = this.extractSearchParameters(params);
36
- for (const searchParam of searchParams) {
37
- params[searchParam] = null;
38
- }
39
- return params;
40
- }
41
- buildQueryParams(searchMap) {
42
- const params = {};
43
- for (const searchContextId of searchMap.keys()) {
44
- const filters = searchMap.get(searchContextId).filters;
45
- for (const filter of filters.values()) {
46
- params[`${this.searchParamPrefix}-${searchContextId}-${filter.key}`] = this.convertValueToArrayOrSingleValue(filter.value);
47
- }
48
- }
49
- return params;
50
- }
51
- convertValueToArrayOrSingleValue(value) {
52
- return Array.isArray(value) ? `(${value.toString()})` : value;
52
+ /***************************************************************************
53
+ * *
54
+ * Life Cycle *
55
+ * *
56
+ **************************************************************************/
57
+ ngOnDestroy() {
58
+ this.unsubscribe$.next();
59
+ this.unsubscribe$.complete();
53
60
  }
61
+ /***************************************************************************
62
+ * *
63
+ * Properties *
64
+ * *
65
+ **************************************************************************/
54
66
  get initialSearchMap$() {
55
67
  return this._initialSearchMap$;
56
68
  }
69
+ /***************************************************************************
70
+ * *
71
+ * Public API *
72
+ * *
73
+ **************************************************************************/
57
74
  updateFiltersForContext(searchContextId, filters) {
58
- const searchMap = this._searchMap$.getValue();
75
+ const searchMapUpdate = this._searchMap$.getValue();
76
+ const searchMap = searchMapUpdate.value;
59
77
  const filtersMap = new Map(filters
60
78
  .filter(filter => filter.value != null)
61
79
  .map(filter => {
62
80
  return [filter.key, filter];
63
81
  }));
64
82
  searchMap.set(searchContextId, new ElderSearchContextFilters(searchContextId, filtersMap));
65
- this._searchMap$.next(searchMap);
83
+ this._searchMap$.next({ value: searchMap, emit: true });
84
+ }
85
+ resetFilterForContext(contextId) {
86
+ const searchMapUpdate = this._searchMap$.getValue();
87
+ const searchMap = searchMapUpdate.value;
88
+ if (searchMap.has(contextId)) {
89
+ searchMap.delete(contextId);
90
+ this._searchMap$.next({ value: searchMap, emit: false });
91
+ }
66
92
  }
93
+ /***************************************************************************
94
+ * *
95
+ * Private methods *
96
+ * *
97
+ **************************************************************************/
67
98
  handleSearchParameters(params) {
68
99
  const searchParamKeys = this.extractSearchParameters(params);
69
100
  const searchMap = this.buildSearchContextMap(params, searchParamKeys);
70
- this._searchMap$.next(searchMap);
101
+ this._searchMap$.next({ value: searchMap, emit: true });
71
102
  this._initialSearchMap$.next(searchMap);
72
103
  }
73
104
  extractSearchParameters(params) {
74
- return Object.getOwnPropertyNames(params).filter(param => param.startsWith(this.searchParamPrefix));
105
+ return Object.getOwnPropertyNames(params).filter(param => param.startsWith(this.searchParamPrefix + "-"));
75
106
  }
76
107
  buildSearchContextMap(params, searchParamKeys) {
77
108
  const searchMap = new Map();
@@ -120,17 +151,34 @@ export class ElderSearchUrlBindingService {
120
151
  convertValueToArray(value) {
121
152
  return value.slice(1).slice(0, -1).split(",");
122
153
  }
123
- ngOnDestroy() {
124
- this.unsubscribe$.next();
125
- this.unsubscribe$.complete();
154
+ resetSearchParams() {
155
+ let params = { ...this.route.snapshot.queryParams };
156
+ const searchParams = this.extractSearchParameters(params);
157
+ for (const searchParam of searchParams) {
158
+ params[searchParam] = null;
159
+ }
160
+ return params;
161
+ }
162
+ buildQueryParams(searchMap) {
163
+ const params = {};
164
+ for (const searchContextId of searchMap.keys()) {
165
+ const filters = searchMap.get(searchContextId).filters;
166
+ for (const filter of filters.values()) {
167
+ params[`${this.searchParamPrefix}-${searchContextId}-${filter.key}`] = this.convertValueToArrayOrSingleValue(filter.value);
168
+ }
169
+ }
170
+ return params;
171
+ }
172
+ convertValueToArrayOrSingleValue(value) {
173
+ return Array.isArray(value) ? `(${value.toString()})` : value;
126
174
  }
127
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: ElderSearchUrlBindingService, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Injectable }); }
128
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: ElderSearchUrlBindingService, providedIn: "root" }); }
175
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ElderSearchUrlBindingService, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Injectable }); }
176
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ElderSearchUrlBindingService, providedIn: "root" }); }
129
177
  }
130
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: ElderSearchUrlBindingService, decorators: [{
178
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ElderSearchUrlBindingService, decorators: [{
131
179
  type: Injectable,
132
180
  args: [{
133
181
  providedIn: "root"
134
182
  }]
135
183
  }], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }]; } });
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItc2VhcmNoLXVybC1iaW5kaW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1zL3NlYXJjaC9zZWFyY2gtYm94L2VsZGVyLXNlYXJjaC11cmwtYmluZGluZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFFdEQsT0FBTyxFQUFFLEtBQUssRUFBUSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7OztBQVdoRSxNQUFNLE9BQU8sNEJBQTRCO0lBV3ZDLFlBQW9CLE1BQWMsRUFBVSxLQUFxQjtRQUE3QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFUakUscUZBQXFGO1FBQ3JGLDBDQUEwQztRQUVsQyxnQkFBVyxHQUFHLElBQUksZUFBZSxDQUF5QyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDckYsdUJBQWtCLEdBQUcsSUFBSSxlQUFlLENBQXlDLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQztRQUVuRixzQkFBaUIsR0FBRyxHQUFHLENBQUM7UUFDakMsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBR3pDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDckIsS0FBSyxFQUFFLENBQ1IsQ0FBQyxTQUFTLENB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QUksS0FBSyxHQUFzQixVQUFVLENBQUM7UUFFMUMsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxFQUFFO1lBQ3JELEtBQUssR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDekM7UUFFRCxPQUFPLElBQUksTUFBTSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVPLG9CQUFvQixDQUFDLEtBQXdCLEVBQUUsZUFBZ0M7UUFDckYsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksZUFBZSxDQUFDLE9BQU8sQ0FBQztJQUMxRCxDQUFDO0lBRU8sbUJBQW1CLENBQUMsS0FBYTtRQUN2QyxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMvQixDQUFDOytHQWhLVSw0QkFBNEI7bUhBQTVCLDRCQUE0QixjQUYzQixNQUFNOzs0RkFFUCw0QkFBNEI7a0JBSHhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBQYXJhbXMsIFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7IGZpcnN0LCBza2lwLCB0YWtlVW50aWwgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgRWxkZXJTZWFyY2hDb250ZXh0RmlsdGVycyB9IGZyb20gXCIuL2VsZGVyLXNlYXJjaC1jb250ZXh0LWZpbHRlcnNcIjtcbmltcG9ydCB7IEZpbHRlciB9IGZyb20gXCIuLi8uLi8uLi8uLi9jb21tb24vZGF0YS9maWx0ZXJzL2ZpbHRlclwiO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSBcInJ4anMvaW50ZXJuYWwvQmVoYXZpb3JTdWJqZWN0XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyUGFyYW1EYXRhIHtcbiAgc2VhcmNoQ29udGV4dElkOiBzdHJpbmcsXG4gIGZpbHRlcklkOiBzdHJpbmcsXG4gIGlzQXJyYXk6IGJvb2xlYW5cbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiBcInJvb3RcIlxufSlcbmV4cG9ydCBjbGFzcyBFbGRlclNlYXJjaFVybEJpbmRpbmdTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICAvL0Egc2VhcmNoIHBhcmFtIGhhcyBmb2xsb3dpbmcgc3RydWN0dXJlOiBzZWFyY2gtW3NlYXJjaENvbnRleHRJZF0tW2ZpbHRlcklkXT1bdmFsdWVdXG4gIC8vRXhhbXBsZTogc2VhcmNoLWJyb3dzZXIxLWhhc1N0YXJ0ZWQ9dHJ1ZVxuXG4gIHByaXZhdGUgX3NlYXJjaE1hcCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hcDxzdHJpbmcsIEVsZGVyU2VhcmNoQ29udGV4dEZpbHRlcnM+PihuZXcgTWFwKCkpO1xuICBwcml2YXRlIF9pbml0aWFsU2VhcmNoTWFwJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWFwPHN0cmluZywgRWxkZXJTZWFyY2hDb250ZXh0RmlsdGVycz4+KG5ldyBNYXAoKSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzZWFyY2hQYXJhbVByZWZpeCA9IFwicVwiO1xuICBwcml2YXRlIHVuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUpIHtcbiAgICB0aGlzLnJvdXRlci5ldmVudHMucGlwZShcbiAgICAgIGZpcnN0KClcbiAgICApLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmhhbmRsZVNlYXJjaFBhcmFtZXRlcnModGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9zZWFyY2hNYXAkLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpLFxuICAgICkuc3Vic2NyaWJlKHNlYXJjaE1hcCA9PiB7XG4gICAgICBjb25zdCByZXNldFBhcmFtcyA9IHRoaXMucmVzZXRTZWFyY2hQYXJhbXMoKTtcbiAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0geyAuLi5yZXNldFBhcmFtcywgLi4udGhpcy5idWlsZFF1ZXJ5UGFyYW1zKHNlYXJjaE1hcCkgfTtcblxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoXG4gICAgICAgIFtdLFxuICAgICAgICB7XG4gICAgICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcbiAgICAgICAgICBxdWVyeVBhcmFtczogcXVlcnlQYXJhbXMsXG4gICAgICAgICAgcmVwbGFjZVVybDogdHJ1ZSxcbiAgICAgICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiBcIm1lcmdlXCJcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0U2VhcmNoUGFyYW1zKCk6IFBhcmFtcyB7XG4gICAgbGV0IHBhcmFtcyA9IHsgLi4udGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcyB9O1xuICAgIGNvbnN0IHNlYXJjaFBhcmFtcyA9IHRoaXMuZXh0cmFjdFNlYXJjaFBhcmFtZXRlcnMocGFyYW1zKTtcbiAgICBmb3IgKGNvbnN0IHNlYXJjaFBhcmFtIG9mIHNlYXJjaFBhcmFtcykge1xuICAgICAgcGFyYW1zW3NlYXJjaFBhcmFtXSA9IG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRRdWVyeVBhcmFtcyhzZWFyY2hNYXA6IE1hcDxzdHJpbmcsIEVsZGVyU2VhcmNoQ29udGV4dEZpbHRlcnM+KTogUGFyYW1zIHtcbiAgICBjb25zdCBwYXJhbXM6IFBhcmFtcyA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBzZWFyY2hDb250ZXh0SWQgb2Ygc2VhcmNoTWFwLmtleXMoKSkge1xuICAgICAgY29uc3QgZmlsdGVycyA9IHNlYXJjaE1hcC5nZXQoc2VhcmNoQ29udGV4dElkKS5maWx0ZXJzO1xuXG4gICAgICBmb3IgKGNvbnN0IGZpbHRlciBvZiBmaWx0ZXJzLnZhbHVlcygpKSB7XG4gICAgICAgIHBhcmFtc1tgJHt0aGlzLnNlYXJjaFBhcmFtUHJlZml4fS0ke3NlYXJjaENvbnRleHRJZH0tJHtmaWx0ZXIua2V5fWBdID0gdGhpcy5jb252ZXJ0VmFsdWVUb0FycmF5T3JTaW5nbGVWYWx1ZShmaWx0ZXIudmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwYXJhbXM7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRWYWx1ZVRvQXJyYXlPclNpbmdsZVZhbHVlKHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpID8gYCgke3ZhbHVlLnRvU3RyaW5nKCl9KWAgOiB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaW5pdGlhbFNlYXJjaE1hcCQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2luaXRpYWxTZWFyY2hNYXAkO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUZpbHRlcnNGb3JDb250ZXh0KHNlYXJjaENvbnRleHRJZDogc3RyaW5nLCBmaWx0ZXJzOiBGaWx0ZXJbXSkge1xuICAgIGNvbnN0IHNlYXJjaE1hcCA9IHRoaXMuX3NlYXJjaE1hcCQuZ2V0VmFsdWUoKTtcblxuICAgIGNvbnN0IGZpbHRlcnNNYXAgPSBuZXcgTWFwKFxuICAgICAgZmlsdGVyc1xuICAgICAgICAuZmlsdGVyKGZpbHRlciA9PiBmaWx0ZXIudmFsdWUgIT0gbnVsbClcbiAgICAgICAgLm1hcChmaWx0ZXIgPT4ge1xuICAgICAgICAgIHJldHVybiBbZmlsdGVyLmtleSwgZmlsdGVyXTtcbiAgICAgICAgfSlcbiAgICApO1xuICAgIHNlYXJjaE1hcC5zZXQoc2VhcmNoQ29udGV4dElkLCBuZXcgRWxkZXJTZWFyY2hDb250ZXh0RmlsdGVycyhzZWFyY2hDb250ZXh0SWQsIGZpbHRlcnNNYXApKTtcbiAgICB0aGlzLl9zZWFyY2hNYXAkLm5leHQoc2VhcmNoTWFwKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU2VhcmNoUGFyYW1ldGVycyhwYXJhbXM6IFBhcmFtcykge1xuICAgIGNvbnN0IHNlYXJjaFBhcmFtS2V5cyA9IHRoaXMuZXh0cmFjdFNlYXJjaFBhcmFtZXRlcnMocGFyYW1zKTtcbiAgICBjb25zdCBzZWFyY2hNYXAgPSB0aGlzLmJ1aWxkU2VhcmNoQ29udGV4dE1hcChwYXJhbXMsIHNlYXJjaFBhcmFtS2V5cyk7XG4gICAgdGhpcy5fc2VhcmNoTWFwJC5uZXh0KHNlYXJjaE1hcCk7XG4gICAgdGhpcy5faW5pdGlhbFNlYXJjaE1hcCQubmV4dChzZWFyY2hNYXApO1xuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0U2VhcmNoUGFyYW1ldGVycyhwYXJhbXM6IFBhcmFtcyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMocGFyYW1zKS5maWx0ZXIocGFyYW0gPT4gcGFyYW0uc3RhcnRzV2l0aCh0aGlzLnNlYXJjaFBhcmFtUHJlZml4KSk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkU2VhcmNoQ29udGV4dE1hcChwYXJhbXM6IFBhcmFtcywgc2VhcmNoUGFyYW1LZXlzOiBzdHJpbmdbXSk6IE1hcDxzdHJpbmcsIEVsZGVyU2VhcmNoQ29udGV4dEZpbHRlcnM+IHtcbiAgICBjb25zdCBzZWFyY2hNYXAgPSBuZXcgTWFwPHN0cmluZywgRWxkZXJTZWFyY2hDb250ZXh0RmlsdGVycz4oKTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBzZWFyY2hQYXJhbUtleXMpIHtcbiAgICAgIGNvbnN0IGZpbHRlclZhbHVlID0gcGFyYW1zW2tleV07XG4gICAgICBjb25zdCBmaWx0ZXJQYXJhbURhdGEgPSB0aGlzLmV4dHJhY3RGaWx0ZXJQYXJhbShrZXksIGZpbHRlclZhbHVlKTtcbiAgICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuY29udmVydEZpbHRlclN0cmluZ1RvRmlsdGVyKGZpbHRlclZhbHVlLCBmaWx0ZXJQYXJhbURhdGEpO1xuICAgICAgdGhpcy5jaGVja0FuZFNldEZpbHRlcihzZWFyY2hNYXAsIGZpbHRlclBhcmFtRGF0YSwgZmlsdGVyKTtcbiAgICB9XG4gICAgcmV0dXJuIHNlYXJjaE1hcDtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tBbmRTZXRGaWx0ZXIoXG4gICAgc2VhcmNoTWFwOiBNYXA8c3RyaW5nLCBFbGRlclNlYXJjaENvbnRleHRGaWx0ZXJzPixcbiAgICBmaWx0ZXJQYXJhbURhdGE6IEZpbHRlclBhcmFtRGF0YSxcbiAgICBmaWx0ZXI6IEZpbHRlclxuICApIHtcbiAgICBpZiAoc2VhcmNoTWFwLmhhcyhmaWx0ZXJQYXJhbURhdGEuc2VhcmNoQ29udGV4dElkKSkge1xuICAgICAgdGhpcy5zZXRGaWx0ZXIoc2VhcmNoTWFwLCBmaWx0ZXJQYXJhbURhdGEsIGZpbHRlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlYXJjaE1hcC5zZXQoZmlsdGVyUGFyYW1EYXRhLnNlYXJjaENvbnRleHRJZCwgRWxkZXJTZWFyY2hDb250ZXh0RmlsdGVycy5lbXB0eShmaWx0ZXJQYXJhbURhdGEuc2VhcmNoQ29udGV4dElkKSk7XG4gICAgICB0aGlzLnNldEZpbHRlcihzZWFyY2hNYXAsIGZpbHRlclBhcmFtRGF0YSwgZmlsdGVyKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldEZpbHRlcihcbiAgICBzZWFyY2hNYXA6IE1hcDxzdHJpbmcsIEVsZGVyU2VhcmNoQ29udGV4dEZpbHRlcnM+LFxuICAgIGZpbHRlclBhcmFtRGF0YTogRmlsdGVyUGFyYW1EYXRhLFxuICAgIGZpbHRlcjogRmlsdGVyXG4gICkge1xuICAgIGNvbnN0IHNlYXJjaENvbnRleHQgPSBzZWFyY2hNYXAuZ2V0KGZpbHRlclBhcmFtRGF0YS5zZWFyY2hDb250ZXh0SWQpO1xuICAgIHNlYXJjaENvbnRleHQuZmlsdGVycy5zZXQoZmlsdGVyUGFyYW1EYXRhLmZpbHRlcklkLCBmaWx0ZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0RmlsdGVyUGFyYW0oa2V5OiBzdHJpbmcsIGZpbHRlclZhbHVlOiBzdHJpbmcpOiBGaWx0ZXJQYXJhbURhdGEge1xuICAgIGNvbnN0IHNwbGl0UGFyYW1zID0ga2V5LnNwbGl0KFwiLVwiKTtcblxuICAgIHJldHVybiB7XG4gICAgICBzZWFyY2hDb250ZXh0SWQ6IHNwbGl0UGFyYW1zWzFdLFxuICAgICAgZmlsdGVySWQ6IHNwbGl0UGFyYW1zWzJdLFxuICAgICAgaXNBcnJheTogdGhpcy5jaGVja0lmUGFyYW1Jc0FycmF5KGZpbHRlclZhbHVlKVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNoZWNrSWZQYXJhbUlzQXJyYXkoZmlsdGVyVmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmaWx0ZXJWYWx1ZS5zdGFydHNXaXRoKFwiKFwiKSAmJiBmaWx0ZXJWYWx1ZS5lbmRzV2l0aChcIilcIik7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRGaWx0ZXJTdHJpbmdUb0ZpbHRlcihwYXJhbVZhbHVlOiBzdHJpbmcsIGZpbHRlclBhcmFtRGF0YTogRmlsdGVyUGFyYW1EYXRhKTogRmlsdGVyIHtcbiAgICBsZXQgdmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdID0gcGFyYW1WYWx1ZTtcblxuICAgIGlmICh0aGlzLmlzU2luZ3VsYXJBcnJheVZhbHVlKHZhbHVlLCBmaWx0ZXJQYXJhbURhdGEpKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMuY29udmVydFZhbHVlVG9BcnJheSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBGaWx0ZXIoZmlsdGVyUGFyYW1EYXRhLmZpbHRlcklkLCB2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGlzU2luZ3VsYXJBcnJheVZhbHVlKHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSwgZmlsdGVyUGFyYW1EYXRhOiBGaWx0ZXJQYXJhbURhdGEpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIUFycmF5LmlzQXJyYXkodmFsdWUpICYmIGZpbHRlclBhcmFtRGF0YS5pc0FycmF5O1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0VmFsdWVUb0FycmF5KHZhbHVlOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHZhbHVlLnNsaWNlKDEpLnNsaWNlKDAsIC0xKS5zcGxpdChcIixcIik7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgfVxuXG59XG5cblxuIl19
184
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItc2VhcmNoLXVybC1iaW5kaW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1zL3NlYXJjaC9zZWFyY2gtYm94L2VsZGVyLXNlYXJjaC11cmwtYmluZGluZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFFdEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBZ0JyRCxNQUFNLE9BQU8sNEJBQTRCO0lBc0J2Qzs7OztnRkFJNEU7SUFHNUUsWUFBb0IsTUFBYyxFQUFVLEtBQXFCO1FBQTdDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQTNCakUsZ0ZBQWdGO1FBQ2hGLDBDQUEwQztRQUUxQzs7OztvRkFJNEU7UUFFM0QsUUFBRyxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU5RCxnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFrQjtZQUN6RCxLQUFLLEVBQUUsSUFBSSxHQUFHLEVBQXFDO1lBQ25ELElBQUksRUFBRSxJQUFJO1NBQ1gsQ0FBQyxD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OlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBQYXJhbXMsIFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7IGZpbHRlciwgZmlyc3QsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBFbGRlclNlYXJjaENvbnRleHRGaWx0ZXJzIH0gZnJvbSBcIi4vZWxkZXItc2VhcmNoLWNvbnRleHQtZmlsdGVyc1wiO1xuaW1wb3J0IHsgRmlsdGVyIH0gZnJvbSBcIi4uLy4uLy4uLy4uL2NvbW1vbi9kYXRhL2ZpbHRlcnMvZmlsdGVyXCI7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tIFwicnhqcy9pbnRlcm5hbC9CZWhhdmlvclN1YmplY3RcIjtcbmltcG9ydCB7IExvZ2dlckZhY3RvcnkgfSBmcm9tIFwiQGVsZGVyYnl0ZS90cy1sb2dnZXJcIjtcblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJQYXJhbURhdGEge1xuICBzZWFyY2hDb250ZXh0SWQ6IHN0cmluZyxcbiAgZmlsdGVySWQ6IHN0cmluZyxcbiAgaXNBcnJheTogYm9vbGVhblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaE1hcFVwZGF0ZSB7XG4gIHZhbHVlOiBNYXA8c3RyaW5nLCBFbGRlclNlYXJjaENvbnRleHRGaWx0ZXJzPixcbiAgZW1pdDogYm9vbGVhblxufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46IFwicm9vdFwiXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyU2VhcmNoVXJsQmluZGluZ1NlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gIC8vQSBzZWFyY2ggcGFyYW0gaGFzIGZvbGxvd2luZyBzdHJ1Y3R1cmU6IHEtW3NlYXJjaENvbnRleHRJZF0tW2ZpbHRlcklkXT1bdmFsdWVdXG4gIC8vRXhhbXBsZTogc2VhcmNoLWJyb3dzZXIxLWhhc1N0YXJ0ZWQ9dHJ1ZVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKTtcblxuICBwcml2YXRlIF9zZWFyY2hNYXAkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTZWFyY2hNYXBVcGRhdGU+KHtcbiAgICB2YWx1ZTogbmV3IE1hcDxzdHJpbmcsIEVsZGVyU2VhcmNoQ29udGV4dEZpbHRlcnM+KCksXG4gICAgZW1pdDogdHJ1ZVxuICB9KTtcbiAgcHJpdmF0ZSBfaW5pdGlhbFNlYXJjaE1hcCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hcDxzdHJpbmcsIEVsZGVyU2VhcmNoQ29udGV4dEZpbHRlcnM+PihuZXcgTWFwKCkpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2VhcmNoUGFyYW1QcmVmaXggPSBcInFcIjtcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUpIHtcbiAgICB0aGlzLnJvdXRlci5ldmVudHMucGlwZShcbiAgICAgIGZpcnN0KClcbiAgICApLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmhhbmRsZVNlYXJjaFBhcmFtZXRlcnModGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9zZWFyY2hNYXAkLnBpcGUoXG4gICAgICBmaWx0ZXIoc2VhcmNoTWFwVXBkYXRlID0+IHNlYXJjaE1hcFVwZGF0ZS5lbWl0KSxcbiAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJClcbiAgICApLnN1YnNjcmliZShzZWFyY2hNYXBVcGRhdGUgPT4ge1xuICAgICAgdGhpcy5sb2cud2FybihcIlNFVCBVUkxcIik7XG4gICAgICBjb25zdCBzZWFyY2hNYXAgPSBzZWFyY2hNYXBVcGRhdGUudmFsdWU7XG5cbiAgICAgIGNvbnN0IHJlc2V0UGFyYW1zID0gdGhpcy5yZXNldFNlYXJjaFBhcmFtcygpO1xuICAgICAgY29uc3QgcXVlcnlQYXJhbXMgPSB7IC4uLnJlc2V0UGFyYW1zLCAuLi50aGlzLmJ1aWxkUXVlcnlQYXJhbXMoc2VhcmNoTWFwKSB9O1xuXG4gICAgICB0aGlzLmxvZy53YXJuKFwic2VhcmNoTWFwIDpcIiwgc2VhcmNoTWFwKTtcbiAgICAgIHRoaXMubG9nLndhcm4oXCJxdWVyeVBhcmFtcyA6XCIsIHF1ZXJ5UGFyYW1zKTtcblxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoXG4gICAgICAgIFtdLFxuICAgICAgICB7XG4gICAgICAgICAgcXVlcnlQYXJhbXM6IHF1ZXJ5UGFyYW1zLFxuICAgICAgICAgIHJlcGxhY2VVcmw6IHRydWUsXG4gICAgICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogXCJtZXJnZVwiXG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZSgoZXZlbnQpID0+XG4gICAgICB0aGlzLmxvZy53YXJuKFwiVHlwZTogXCIgKyBldmVudC5jb25zdHJ1Y3Rvcj8ubmFtZSwgZXZlbnQpKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBMaWZlIEN5Y2xlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMudW5zdWJzY3JpYmUkLm5leHQoKTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIGdldCBpbml0aWFsU2VhcmNoTWFwJCgpIHtcbiAgICByZXR1cm4gdGhpcy5faW5pdGlhbFNlYXJjaE1hcCQ7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgdXBkYXRlRmlsdGVyc0ZvckNvbnRleHQoc2VhcmNoQ29udGV4dElkOiBzdHJpbmcsIGZpbHRlcnM6IEZpbHRlcltdKSB7XG4gICAgY29uc3Qgc2VhcmNoTWFwVXBkYXRlID0gdGhpcy5fc2VhcmNoTWFwJC5nZXRWYWx1ZSgpO1xuICAgIGNvbnN0IHNlYXJjaE1hcCA9IHNlYXJjaE1hcFVwZGF0ZS52YWx1ZTtcblxuICAgIGNvbnN0IGZpbHRlcnNNYXAgPSBuZXcgTWFwKFxuICAgICAgZmlsdGVyc1xuICAgICAgICAuZmlsdGVyKGZpbHRlciA9PiBmaWx0ZXIudmFsdWUgIT0gbnVsbClcbiAgICAgICAgLm1hcChmaWx0ZXIgPT4ge1xuICAgICAgICAgIHJldHVybiBbZmlsdGVyLmtleSwgZmlsdGVyXTtcbiAgICAgICAgfSlcbiAgICApO1xuICAgIHNlYXJjaE1hcC5zZXQoc2VhcmNoQ29udGV4dElkLCBuZXcgRWxkZXJTZWFyY2hDb250ZXh0RmlsdGVycyhzZWFyY2hDb250ZXh0SWQsIGZpbHRlcnNNYXApKTtcbiAgICB0aGlzLl9zZWFyY2hNYXAkLm5leHQoeyB2YWx1ZTogc2VhcmNoTWFwLCBlbWl0OiB0cnVlIH0pO1xuICB9XG5cbiAgcHVibGljIHJlc2V0RmlsdGVyRm9yQ29udGV4dChjb250ZXh0SWQ6IHN0cmluZykge1xuICAgIGNvbnN0IHNlYXJjaE1hcFVwZGF0ZSA9IHRoaXMuX3NlYXJjaE1hcCQuZ2V0VmFsdWUoKTtcbiAgICBjb25zdCBzZWFyY2hNYXAgPSBzZWFyY2hNYXBVcGRhdGUudmFsdWU7XG4gICAgaWYgKHNlYXJjaE1hcC5oYXMoY29udGV4dElkKSkge1xuICAgICAgc2VhcmNoTWFwLmRlbGV0ZShjb250ZXh0SWQpO1xuICAgICAgdGhpcy5fc2VhcmNoTWFwJC5uZXh0KHsgdmFsdWU6IHNlYXJjaE1hcCwgZW1pdDogZmFsc2UgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgbWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSBoYW5kbGVTZWFyY2hQYXJhbWV0ZXJzKHBhcmFtczogUGFyYW1zKSB7XG4gICAgY29uc3Qgc2VhcmNoUGFyYW1LZXlzID0gdGhpcy5leHRyYWN0U2VhcmNoUGFyYW1ldGVycyhwYXJhbXMpO1xuICAgIGNvbnN0IHNlYXJjaE1hcCA9IHRoaXMuYnVpbGRTZWFyY2hDb250ZXh0TWFwKHBhcmFtcywgc2VhcmNoUGFyYW1LZXlzKTtcbiAgICB0aGlzLl9zZWFyY2hNYXAkLm5leHQoeyB2YWx1ZTogc2VhcmNoTWFwLCBlbWl0OiB0cnVlIH0pO1xuICAgIHRoaXMuX2luaXRpYWxTZWFyY2hNYXAkLm5leHQoc2VhcmNoTWFwKTtcbiAgfVxuXG4gIHByaXZhdGUgZXh0cmFjdFNlYXJjaFBhcmFtZXRlcnMocGFyYW1zOiBQYXJhbXMpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHBhcmFtcykuZmlsdGVyKHBhcmFtID0+IHBhcmFtLnN0YXJ0c1dpdGgodGhpcy5zZWFyY2hQYXJhbVByZWZpeCArIFwiLVwiKSk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkU2VhcmNoQ29udGV4dE1hcChwYXJhbXM6IFBhcmFtcywgc2VhcmNoUGFyYW1LZXlzOiBzdHJpbmdbXSk6IE1hcDxzdHJpbmcsIEVsZGVyU2VhcmNoQ29udGV4dEZpbHRlcnM+IHtcbiAgICBjb25zdCBzZWFyY2hNYXAgPSBuZXcgTWFwPHN0cmluZywgRWxkZXJTZWFyY2hDb250ZXh0RmlsdGVycz4oKTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBzZWFyY2hQYXJhbUtleXMpIHtcbiAgICAgIGNvbnN0IGZpbHRlclZhbHVlID0gcGFyYW1zW2tleV07XG4gICAgICBjb25zdCBmaWx0ZXJQYXJhbURhdGEgPSB0aGlzLmV4dHJhY3RGaWx0ZXJQYXJhbShrZXksIGZpbHRlclZhbHVlKTtcbiAgICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuY29udmVydEZpbHRlclN0cmluZ1RvRmlsdGVyKGZpbHRlclZhbHVlLCBmaWx0ZXJQYXJhbURhdGEpO1xuICAgICAgdGhpcy5jaGVja0FuZFNldEZpbHRlcihzZWFyY2hNYXAsIGZpbHRlclBhcmFtRGF0YSwgZmlsdGVyKTtcbiAgICB9XG4gICAgcmV0dXJuIHNlYXJjaE1hcDtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tBbmRTZXRGaWx0ZXIoXG4gICAgc2VhcmNoTWFwOiBNYXA8c3RyaW5nLCBFbGRlclNlYXJjaENvbnRleHRGaWx0ZXJzPixcbiAgICBmaWx0ZXJQYXJhbURhdGE6IEZpbHRlclBhcmFtRGF0YSxcbiAgICBmaWx0ZXI6IEZpbHRlclxuICApIHtcbiAgICBpZiAoc2VhcmNoTWFwLmhhcyhmaWx0ZXJQYXJhbURhdGEuc2VhcmNoQ29udGV4dElkKSkge1xuICAgICAgdGhpcy5zZXRGaWx0ZXIoc2VhcmNoTWFwLCBmaWx0ZXJQYXJhbURhdGEsIGZpbHRlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlYXJjaE1hcC5zZXQoZmlsdGVyUGFyYW1EYXRhLnNlYXJjaENvbnRleHRJZCwgRWxkZXJTZWFyY2hDb250ZXh0RmlsdGVycy5lbXB0eShmaWx0ZXJQYXJhbURhdGEuc2VhcmNoQ29udGV4dElkKSk7XG4gICAgICB0aGlzLnNldEZpbHRlcihzZWFyY2hNYXAsIGZpbHRlclBhcmFtRGF0YSwgZmlsdGVyKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldEZpbHRlcihcbiAgICBzZWFyY2hNYXA6IE1hcDxzdHJpbmcsIEVsZGVyU2VhcmNoQ29udGV4dEZpbHRlcnM+LFxuICAgIGZpbHRlclBhcmFtRGF0YTogRmlsdGVyUGFyYW1EYXRhLFxuICAgIGZpbHRlcjogRmlsdGVyXG4gICkge1xuICAgIGNvbnN0IHNlYXJjaENvbnRleHQgPSBzZWFyY2hNYXAuZ2V0KGZpbHRlclBhcmFtRGF0YS5zZWFyY2hDb250ZXh0SWQpO1xuICAgIHNlYXJjaENvbnRleHQuZmlsdGVycy5zZXQoZmlsdGVyUGFyYW1EYXRhLmZpbHRlcklkLCBmaWx0ZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0RmlsdGVyUGFyYW0oa2V5OiBzdHJpbmcsIGZpbHRlclZhbHVlOiBzdHJpbmcpOiBGaWx0ZXJQYXJhbURhdGEge1xuICAgIGNvbnN0IHNwbGl0UGFyYW1zID0ga2V5LnNwbGl0KFwiLVwiKTtcblxuICAgIHJldHVybiB7XG4gICAgICBzZWFyY2hDb250ZXh0SWQ6IHNwbGl0UGFyYW1zWzFdLFxuICAgICAgZmlsdGVySWQ6IHNwbGl0UGFyYW1zWzJdLFxuICAgICAgaXNBcnJheTogdGhpcy5jaGVja0lmUGFyYW1Jc0FycmF5KGZpbHRlclZhbHVlKVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNoZWNrSWZQYXJhbUlzQXJyYXkoZmlsdGVyVmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmaWx0ZXJWYWx1ZS5zdGFydHNXaXRoKFwiKFwiKSAmJiBmaWx0ZXJWYWx1ZS5lbmRzV2l0aChcIilcIik7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRGaWx0ZXJTdHJpbmdUb0ZpbHRlcihwYXJhbVZhbHVlOiBzdHJpbmcsIGZpbHRlclBhcmFtRGF0YTogRmlsdGVyUGFyYW1EYXRhKTogRmlsdGVyIHtcbiAgICBsZXQgdmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdID0gcGFyYW1WYWx1ZTtcblxuICAgIGlmICh0aGlzLmlzU2luZ3VsYXJBcnJheVZhbHVlKHZhbHVlLCBmaWx0ZXJQYXJhbURhdGEpKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMuY29udmVydFZhbHVlVG9BcnJheSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBGaWx0ZXIoZmlsdGVyUGFyYW1EYXRhLmZpbHRlcklkLCB2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGlzU2luZ3VsYXJBcnJheVZhbHVlKHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSwgZmlsdGVyUGFyYW1EYXRhOiBGaWx0ZXJQYXJhbURhdGEpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIUFycmF5LmlzQXJyYXkodmFsdWUpICYmIGZpbHRlclBhcmFtRGF0YS5pc0FycmF5O1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0VmFsdWVUb0FycmF5KHZhbHVlOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHZhbHVlLnNsaWNlKDEpLnNsaWNlKDAsIC0xKS5zcGxpdChcIixcIik7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0U2VhcmNoUGFyYW1zKCk6IFBhcmFtcyB7XG4gICAgbGV0IHBhcmFtcyA9IHsgLi4udGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcyB9O1xuICAgIGNvbnN0IHNlYXJjaFBhcmFtcyA9IHRoaXMuZXh0cmFjdFNlYXJjaFBhcmFtZXRlcnMocGFyYW1zKTtcbiAgICBmb3IgKGNvbnN0IHNlYXJjaFBhcmFtIG9mIHNlYXJjaFBhcmFtcykge1xuICAgICAgcGFyYW1zW3NlYXJjaFBhcmFtXSA9IG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRRdWVyeVBhcmFtcyhzZWFyY2hNYXA6IE1hcDxzdHJpbmcsIEVsZGVyU2VhcmNoQ29udGV4dEZpbHRlcnM+KTogUGFyYW1zIHtcbiAgICBjb25zdCBwYXJhbXM6IFBhcmFtcyA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBzZWFyY2hDb250ZXh0SWQgb2Ygc2VhcmNoTWFwLmtleXMoKSkge1xuICAgICAgY29uc3QgZmlsdGVycyA9IHNlYXJjaE1hcC5nZXQoc2VhcmNoQ29udGV4dElkKS5maWx0ZXJzO1xuXG4gICAgICBmb3IgKGNvbnN0IGZpbHRlciBvZiBmaWx0ZXJzLnZhbHVlcygpKSB7XG4gICAgICAgIHBhcmFtc1tgJHt0aGlzLnNlYXJjaFBhcmFtUHJlZml4fS0ke3NlYXJjaENvbnRleHRJZH0tJHtmaWx0ZXIua2V5fWBdID0gdGhpcy5jb252ZXJ0VmFsdWVUb0FycmF5T3JTaW5nbGVWYWx1ZShmaWx0ZXIudmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwYXJhbXM7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRWYWx1ZVRvQXJyYXlPclNpbmdsZVZhbHVlKHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpID8gYCgke3ZhbHVlLnRvU3RyaW5nKCl9KWAgOiB2YWx1ZTtcbiAgfVxuXG59XG5cblxuIl19
@@ -107,10 +107,10 @@ export class ElderGlobalSearchComponent {
107
107
  }
108
108
  return '';
109
109
  }
110
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: ElderGlobalSearchComponent, deps: [{ token: i1.Router }, { token: i2.ElderGlobalSearchService }], target: i0.ɵɵFactoryTarget.Component }); }
111
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.11", type: ElderGlobalSearchComponent, selector: "elder-global-search", inputs: { hideWhenDisabled: "hideWhenDisabled", searchCollapsed: "searchCollapsed" }, outputs: { searchCollapsedChange: "searchCollapsedChange" }, viewQueries: [{ propertyName: "txtSearch", first: true, predicate: ["txtSearch"], descendants: true }], ngImport: i0, template: "<div class=\"layout-row place-center-center\">\n\n <span *ngIf=\"searchCollapsed\" class=\"flex\"></span>\n\n\n <div *ngIf=\"!searchCollapsed\" class=\"layout-row place-center-center flex\">\n\n <!-- Query Keywords -->\n <mat-form-field color=\"accent\" floatPlaceholder=\"never\" class=\"flex\">\n <mat-icon matPrefix>search</mat-icon>\n <input matInput type=\"search\"\n (keyup)=\"onQueryChanged()\"\n #txtSearch>\n </mat-form-field>\n\n <!-- Sort -->\n <mat-menu #sortMenu=\"matMenu\">\n <button mat-menu-item type=\"button\"\n *ngFor=\"let sort of availableSort\"\n class=\"layout-row place-between-center\"\n (click)=\"sortBy(sort)\"\n >\n {{sort.name | translate}}\n <mat-icon *ngIf=\"selectedSort?.id==sort.id\">check</mat-icon>\n </button>\n </mat-menu>\n <button mat-icon-button type=\"button\"\n *ngIf=\"canSort\"\n [matMenuTriggerFor]=\"sortMenu\">\n <mat-icon>sort</mat-icon>\n </button>\n\n <!-- Sort Asc/Desc-->\n <button mat-icon-button type=\"button\"\n *ngIf=\"canSort\"\n (click)=\"toggleSortAsc()\">\n <mat-icon>{{sortAsc ? \"arrow_downward\" : \"arrow_upward\"}}</mat-icon>\n </button>\n </div>\n\n\n <!-- Toggle Global Search -->\n <button mat-icon-button type=\"button\"\n *ngIf=\"!isSearchHidden\"\n (click)=\"toggleSearch()\"\n [disabled]=\"globalSearchDisabled\" >\n <mat-icon>{{toggleIcon}}</mat-icon>\n </button>\n</div>\n\n\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.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: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i8.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i8.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }] }); }
110
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ElderGlobalSearchComponent, deps: [{ token: i1.Router }, { token: i2.ElderGlobalSearchService }], target: i0.ɵɵFactoryTarget.Component }); }
111
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ElderGlobalSearchComponent, selector: "elder-global-search", inputs: { hideWhenDisabled: "hideWhenDisabled", searchCollapsed: "searchCollapsed" }, outputs: { searchCollapsedChange: "searchCollapsedChange" }, viewQueries: [{ propertyName: "txtSearch", first: true, predicate: ["txtSearch"], descendants: true }], ngImport: i0, template: "<div class=\"layout-row place-center-center\">\n\n <span *ngIf=\"searchCollapsed\" class=\"flex\"></span>\n\n\n <div *ngIf=\"!searchCollapsed\" class=\"layout-row place-center-center flex\">\n\n <!-- Query Keywords -->\n <mat-form-field color=\"accent\" floatPlaceholder=\"never\" class=\"flex\">\n <mat-icon matPrefix>search</mat-icon>\n <input matInput type=\"search\"\n (keyup)=\"onQueryChanged()\"\n #txtSearch>\n </mat-form-field>\n\n <!-- Sort -->\n <mat-menu #sortMenu=\"matMenu\">\n <button mat-menu-item type=\"button\"\n *ngFor=\"let sort of availableSort\"\n class=\"layout-row place-between-center\"\n (click)=\"sortBy(sort)\"\n >\n {{sort.name | translate}}\n <mat-icon *ngIf=\"selectedSort?.id==sort.id\">check</mat-icon>\n </button>\n </mat-menu>\n <button mat-icon-button type=\"button\"\n *ngIf=\"canSort\"\n [matMenuTriggerFor]=\"sortMenu\">\n <mat-icon>sort</mat-icon>\n </button>\n\n <!-- Sort Asc/Desc-->\n <button mat-icon-button type=\"button\"\n *ngIf=\"canSort\"\n (click)=\"toggleSortAsc()\">\n <mat-icon>{{sortAsc ? \"arrow_downward\" : \"arrow_upward\"}}</mat-icon>\n </button>\n </div>\n\n\n <!-- Toggle Global Search -->\n <button mat-icon-button type=\"button\"\n *ngIf=\"!isSearchHidden\"\n (click)=\"toggleSearch()\"\n [disabled]=\"globalSearchDisabled\" >\n <mat-icon>{{toggleIcon}}</mat-icon>\n </button>\n</div>\n\n\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.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: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i8.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i8.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }] }); }
112
112
  }
113
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: ElderGlobalSearchComponent, decorators: [{
113
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ElderGlobalSearchComponent, decorators: [{
114
114
  type: Component,
115
115
  args: [{ selector: 'elder-global-search', template: "<div class=\"layout-row place-center-center\">\n\n <span *ngIf=\"searchCollapsed\" class=\"flex\"></span>\n\n\n <div *ngIf=\"!searchCollapsed\" class=\"layout-row place-center-center flex\">\n\n <!-- Query Keywords -->\n <mat-form-field color=\"accent\" floatPlaceholder=\"never\" class=\"flex\">\n <mat-icon matPrefix>search</mat-icon>\n <input matInput type=\"search\"\n (keyup)=\"onQueryChanged()\"\n #txtSearch>\n </mat-form-field>\n\n <!-- Sort -->\n <mat-menu #sortMenu=\"matMenu\">\n <button mat-menu-item type=\"button\"\n *ngFor=\"let sort of availableSort\"\n class=\"layout-row place-between-center\"\n (click)=\"sortBy(sort)\"\n >\n {{sort.name | translate}}\n <mat-icon *ngIf=\"selectedSort?.id==sort.id\">check</mat-icon>\n </button>\n </mat-menu>\n <button mat-icon-button type=\"button\"\n *ngIf=\"canSort\"\n [matMenuTriggerFor]=\"sortMenu\">\n <mat-icon>sort</mat-icon>\n </button>\n\n <!-- Sort Asc/Desc-->\n <button mat-icon-button type=\"button\"\n *ngIf=\"canSort\"\n (click)=\"toggleSortAsc()\">\n <mat-icon>{{sortAsc ? \"arrow_downward\" : \"arrow_upward\"}}</mat-icon>\n </button>\n </div>\n\n\n <!-- Toggle Global Search -->\n <button mat-icon-button type=\"button\"\n *ngIf=\"!isSearchHidden\"\n (click)=\"toggleSearch()\"\n [disabled]=\"globalSearchDisabled\" >\n <mat-icon>{{toggleIcon}}</mat-icon>\n </button>\n</div>\n\n\n" }]
116
116
  }], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.ElderGlobalSearchService }]; }, propDecorators: { searchCollapsedChange: [{
@@ -13,11 +13,11 @@ export * from './elder-global-search.service';
13
13
  * @deprecated This module is considered EOL
14
14
  */
15
15
  export class ElderGlobalSearchModule {
16
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: ElderGlobalSearchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
17
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.11", ngImport: i0, type: ElderGlobalSearchModule, declarations: [ElderGlobalSearchComponent], imports: [CommonModule, MatIconModule, MatInputModule, MatButtonModule, MatMenuModule, TranslateModule], exports: [ElderGlobalSearchComponent] }); }
18
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: ElderGlobalSearchModule, imports: [CommonModule, MatIconModule, MatInputModule, MatButtonModule, MatMenuModule, TranslateModule] }); }
16
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ElderGlobalSearchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
17
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: ElderGlobalSearchModule, declarations: [ElderGlobalSearchComponent], imports: [CommonModule, MatIconModule, MatInputModule, MatButtonModule, MatMenuModule, TranslateModule], exports: [ElderGlobalSearchComponent] }); }
18
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ElderGlobalSearchModule, imports: [CommonModule, MatIconModule, MatInputModule, MatButtonModule, MatMenuModule, TranslateModule] }); }
19
19
  }
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: ElderGlobalSearchModule, decorators: [{
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ElderGlobalSearchModule, decorators: [{
21
21
  type: NgModule,
22
22
  args: [{
23
23
  declarations: [
@@ -81,10 +81,10 @@ export class ElderGlobalSearchService {
81
81
  this._showGlobalSearch = value;
82
82
  this._showGlobalSearchSubject.next(value);
83
83
  }
84
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: ElderGlobalSearchService, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
85
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: ElderGlobalSearchService, providedIn: 'root' }); }
84
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ElderGlobalSearchService, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
85
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ElderGlobalSearchService, providedIn: 'root' }); }
86
86
  }
87
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: ElderGlobalSearchService, decorators: [{
87
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ElderGlobalSearchService, decorators: [{
88
88
  type: Injectable,
89
89
  args: [{
90
90
  providedIn: 'root'