@elderbyte/ngx-starter 16.0.3 → 16.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (300) hide show
  1. package/esm2022/lib/common/data/filters/filter-context.mjs +8 -2
  2. package/esm2022/lib/common/enums/elder-enum-translation.service.mjs +3 -3
  3. package/esm2022/lib/common/forms/elder-form-field-control-base.directive.mjs +3 -3
  4. package/esm2022/lib/common/forms/elder-from-field-base.mjs +3 -3
  5. package/esm2022/lib/common/forms/elder-from-field-customizable-base.mjs +3 -3
  6. package/esm2022/lib/common/forms/elder-from-field-entity-base.mjs +3 -3
  7. package/esm2022/lib/common/forms/elder-from-field-multi-entity-base.mjs +3 -3
  8. package/esm2022/lib/common/forms/form-field-base.component.mjs +3 -3
  9. package/esm2022/lib/common/forms/multi-model-base.component.mjs +3 -3
  10. package/esm2022/lib/common/forms/template-composite-control.mjs +3 -3
  11. package/esm2022/lib/common/forms/value-accessor-base.mjs +3 -3
  12. package/esm2022/lib/common/http/http-client-builder.service.mjs +3 -3
  13. package/esm2022/lib/common/http/http-client-pristine.mjs +3 -3
  14. package/esm2022/lib/common/http/transfer/data-transfer-factory.mjs +3 -3
  15. package/esm2022/lib/common/url/elder-router.service.mjs +3 -3
  16. package/esm2022/lib/common/url/elder-url-fragment-params.service.mjs +3 -3
  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 +4 -4
  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 +56 -0
  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 +68 -0
  128. package/esm2022/lib/components/forms/search/elder-search-context.directive.mjs +42 -33
  129. package/esm2022/lib/components/forms/search/elder-search-input.directive.mjs +85 -30
  130. package/esm2022/lib/components/forms/search/elder-search.module.mjs +50 -33
  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-context-filters.mjs +10 -0
  133. package/esm2022/lib/components/forms/search/search-box/elder-search-panel.component.mjs +3 -3
  134. package/esm2022/lib/components/forms/search/search-box/elder-search-url-binding.service.mjs +136 -0
  135. package/esm2022/lib/components/global-search/elder-global-search.component.mjs +3 -3
  136. package/esm2022/lib/components/global-search/elder-global-search.module.mjs +4 -4
  137. package/esm2022/lib/components/global-search/elder-global-search.service.mjs +3 -3
  138. package/esm2022/lib/components/graph/elder-progress-bar/elder-progress-bar.component.mjs +3 -3
  139. package/esm2022/lib/components/graph/elder-progress-bar/elder-progress-bar.module.mjs +4 -4
  140. package/esm2022/lib/components/headers/elder-header/elder-header.component.mjs +3 -3
  141. package/esm2022/lib/components/headers/elder-header.module.mjs +4 -4
  142. package/esm2022/lib/components/http-support/elder-http-client.service.mjs +3 -3
  143. package/esm2022/lib/components/i18n/entities/elder-i18n-entities.module.mjs +4 -4
  144. package/esm2022/lib/components/i18n/entities/elder-localized-input/elder-localized-input.component.mjs +3 -3
  145. package/esm2022/lib/components/i18n/entities/elder-localized-input-dialog/elder-localized-input-dialog.component.mjs +3 -3
  146. package/esm2022/lib/components/i18n/entities/elder-localized-input-dialog.service.mjs +3 -3
  147. package/esm2022/lib/components/i18n/entities/elder-localized-input-table/elder-localized-input-table.component.mjs +3 -3
  148. package/esm2022/lib/components/i18n/entities/elder-localized-text-column.directive.mjs +3 -3
  149. package/esm2022/lib/components/i18n/entities/elder-localized-texts.directive.mjs +3 -3
  150. package/esm2022/lib/components/i18n/entities/picker/i18n-pick-async.pipe.mjs +3 -3
  151. package/esm2022/lib/components/i18n/entities/picker/i18n-pick.pipe.mjs +3 -3
  152. package/esm2022/lib/components/i18n/entities/picker/localisation-picker.service.mjs +3 -3
  153. package/esm2022/lib/components/i18n/language/elder-language-interceptor.mjs +3 -3
  154. package/esm2022/lib/components/i18n/language/elder-language.module.mjs +4 -4
  155. package/esm2022/lib/components/i18n/language/elder-language.service.mjs +3 -3
  156. package/esm2022/lib/components/i18n/language/language-switcher/elder-language-switcher.component.mjs +3 -3
  157. package/esm2022/lib/components/i18n/locales/elder-locales-de-ch.module.mjs +4 -4
  158. package/esm2022/lib/components/iframes/data-view/data-view-iframe/data-view-iframe.component.mjs +3 -3
  159. package/esm2022/lib/components/iframes/data-view/data-view-iframe-adapter.directive.mjs +3 -3
  160. package/esm2022/lib/components/iframes/elder-iframe.module.mjs +4 -4
  161. package/esm2022/lib/components/iframes/iframe-close.directive.mjs +3 -3
  162. package/esm2022/lib/components/iframes/iframe-dialog/iframe-dialog.component.mjs +3 -3
  163. package/esm2022/lib/components/iframes/iframe-host/iframe-host.component.mjs +3 -3
  164. package/esm2022/lib/components/iframes/iframe-side-content/iframe-side-content.component.mjs +3 -3
  165. package/esm2022/lib/components/iframes/iframe.service.mjs +3 -3
  166. package/esm2022/lib/components/infinitescroll/elder-infinite-autocomplete.directive.mjs +3 -3
  167. package/esm2022/lib/components/infinitescroll/elder-infinite-scroll.directive.mjs +3 -3
  168. package/esm2022/lib/components/infinitescroll/elder-infinite-scroll.module.mjs +4 -4
  169. package/esm2022/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete.component.mjs +3 -3
  170. package/esm2022/lib/components/input/autocomplete/elder-autocomplete-many.directive.mjs +3 -3
  171. package/esm2022/lib/components/input/autocomplete/elder-autocomplete.directive.mjs +3 -3
  172. package/esm2022/lib/components/input/autocomplete/elder-autocomplete.module.mjs +4 -4
  173. package/esm2022/lib/components/labels/elder-labels.module.mjs +4 -4
  174. package/esm2022/lib/components/labels/labels-input/labels-input.component.mjs +3 -3
  175. package/esm2022/lib/components/measures/dimensions/dimensions-input/elder-dimensions-input.component.mjs +3 -3
  176. package/esm2022/lib/components/measures/dimensions/validation/elder-required-dimensions.validator.mjs +3 -3
  177. package/esm2022/lib/components/measures/directives/elder-unit-select.directive.mjs +3 -3
  178. package/esm2022/lib/components/measures/elder-measures.module.mjs +8 -8
  179. package/esm2022/lib/components/measures/elder-quantity-transform.pipe.mjs +3 -3
  180. package/esm2022/lib/components/measures/elder-quantity.pipe.mjs +3 -3
  181. package/esm2022/lib/components/measures/elder-unit.service.mjs +3 -3
  182. package/esm2022/lib/components/measures/quantity-input/quantity-form-field/elder-quantity-form-field.component.mjs +3 -3
  183. package/esm2022/lib/components/measures/quantity-input/quantity-input-control/elder-quantity-input-control.component.mjs +3 -3
  184. package/esm2022/lib/components/measures/quantity-input/validation/elder-quantity-range.validator.mjs +3 -3
  185. package/esm2022/lib/components/measures/quantity-input/validation/elder-required-quantity.validator.mjs +3 -3
  186. package/esm2022/lib/components/measures/util/elder-quantity.service.mjs +3 -3
  187. package/esm2022/lib/components/navigation/bread-crumbs/bread-crumbs/elder-bread-crumbs.component.mjs +3 -3
  188. package/esm2022/lib/components/navigation/bread-crumbs/elder-bread-crumbs.module.mjs +4 -4
  189. package/esm2022/lib/components/navigation/nav/elder-nav.module.mjs +4 -4
  190. package/esm2022/lib/components/navigation/nav/nav-group/elder-nav-group.component.mjs +3 -3
  191. package/esm2022/lib/components/navigation/nav/nav-link/elder-nav-link.component.mjs +3 -3
  192. package/esm2022/lib/components/navigation/nav/nav-list/elder-nav-list.component.mjs +3 -3
  193. package/esm2022/lib/components/navigation/toolbar/elder-toolbar-column.directive.mjs +3 -3
  194. package/esm2022/lib/components/navigation/toolbar/elder-toolbar.module.mjs +4 -4
  195. package/esm2022/lib/components/navigation/toolbar/elder-toolbar.service.mjs +3 -3
  196. package/esm2022/lib/components/navigation/toolbar/toolbar/elder-toolbar.component.mjs +3 -3
  197. package/esm2022/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.component.mjs +3 -3
  198. package/esm2022/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.service.mjs +3 -3
  199. package/esm2022/lib/components/overlays/elder-overlay-origin.directive.mjs +3 -3
  200. package/esm2022/lib/components/overlays/elder-overlay-trigger.directive.mjs +3 -3
  201. package/esm2022/lib/components/overlays/elder-overlay.component.mjs +3 -3
  202. package/esm2022/lib/components/overlays/elder-overlay.module.mjs +4 -4
  203. package/esm2022/lib/components/panels/card-panel/elder-card-panel.component.mjs +3 -3
  204. package/esm2022/lib/components/panels/elder-dialog-panel/elder-dialog-panel.component.mjs +3 -3
  205. package/esm2022/lib/components/panels/elder-panel.module.mjs +4 -4
  206. package/esm2022/lib/components/panels/flat/elder-panel.component.mjs +3 -3
  207. package/esm2022/lib/components/panels/toggle-panel/elder-toggle-panel-trigger.directive.mjs +3 -3
  208. package/esm2022/lib/components/panels/toggle-panel/elder-toggle-panel.component.mjs +9 -9
  209. package/esm2022/lib/components/scrollbar/elder-scrollbar.directive.mjs +3 -3
  210. package/esm2022/lib/components/scrollbar/elder-scrollbar.module.mjs +4 -4
  211. package/esm2022/lib/components/select/auto/elder-auto-select-first.directive.mjs +3 -3
  212. package/esm2022/lib/components/select/elder-select-base.mjs +3 -3
  213. package/esm2022/lib/components/select/elder-select-chip.directive.mjs +9 -9
  214. package/esm2022/lib/components/select/elder-select-on-tab.directive.mjs +3 -3
  215. package/esm2022/lib/components/select/elder-select-value.directive.mjs +3 -3
  216. package/esm2022/lib/components/select/elder-select.module.mjs +5 -5
  217. package/esm2022/lib/components/select/multi/elder-multi-select-base.mjs +6 -5
  218. package/esm2022/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.mjs +50 -50
  219. package/esm2022/lib/components/select/multi/elder-multi-select-chips/select-chip-spec.mjs +2 -0
  220. package/esm2022/lib/components/select/multi/elder-multi-select-form-field.mjs +3 -3
  221. package/esm2022/lib/components/select/multi/public_api.mjs +4 -0
  222. package/esm2022/lib/components/select/popup/selection-model-popup-trigger-adapter.directive.mjs +3 -3
  223. package/esm2022/lib/components/select/popup/selection-model-popup.directive.mjs +3 -3
  224. package/esm2022/lib/components/select/popup/templated-selection-dialog/templated-selection-dialog.component.mjs +3 -3
  225. package/esm2022/lib/components/select/public_api.mjs +2 -3
  226. package/esm2022/lib/components/select/single/elder-clear-select.directive.mjs +3 -3
  227. package/esm2022/lib/components/select/single/elder-select/elder-select.component.mjs +3 -3
  228. package/esm2022/lib/components/select/single/elder-select-form-field.mjs +3 -3
  229. package/esm2022/lib/components/select-chip-list/chip-list-select/elder-chip-list-select.component.mjs +3 -3
  230. package/esm2022/lib/components/select-chip-list/elder-chip-list-select.module.mjs +4 -4
  231. package/esm2022/lib/components/shell/drawers/elder-route-outlet-drawer.service.mjs +3 -3
  232. package/esm2022/lib/components/shell/drawers/elder-router-outlet.service.mjs +3 -3
  233. package/esm2022/lib/components/shell/elder-shell-slot.directive.mjs +3 -3
  234. package/esm2022/lib/components/shell/elder-shell.module.mjs +4 -4
  235. package/esm2022/lib/components/shell/elder-shell.service.mjs +3 -3
  236. package/esm2022/lib/components/shell/header/elder-app-header/elder-app-header.component.mjs +3 -3
  237. package/esm2022/lib/components/shell/shell/elder-shell.component.mjs +12 -12
  238. package/esm2022/lib/components/shell/shell-navigation-toggle/elder-shell-navigation-toggle.component.mjs +3 -3
  239. package/esm2022/lib/components/tabs/elder-tab/elder-tab.directive.mjs +3 -3
  240. package/esm2022/lib/components/tabs/elder-tab-group-routing/elder-tab-group-routing.directive.mjs +3 -3
  241. package/esm2022/lib/components/tabs/elder-tab.module.mjs +4 -4
  242. package/esm2022/lib/components/theme/elder-theme-applier.directive.mjs +3 -3
  243. package/esm2022/lib/components/theme/elder-theme-preference.service.mjs +3 -3
  244. package/esm2022/lib/components/theme/elder-theme-toggle/elder-theme-toggle.component.mjs +3 -3
  245. package/esm2022/lib/components/theme/elder-theme.directive.mjs +3 -3
  246. package/esm2022/lib/components/theme/elder-theme.module.mjs +4 -4
  247. package/esm2022/lib/components/theme/elder-theme.service.mjs +3 -3
  248. package/esm2022/lib/components/time/date-adapters/custom-date-adapter.mjs +3 -3
  249. package/esm2022/lib/components/time/duration/elder-duration-input/elder-duration-input.component.mjs +3 -3
  250. package/esm2022/lib/components/time/elder-date-switcher/elder-date-switcher.component.mjs +3 -3
  251. package/esm2022/lib/components/time/elder-date-time-input/elder-date-time-input.component.mjs +3 -3
  252. package/esm2022/lib/components/time/elder-interval-input/elder-interval-input.component.mjs +3 -3
  253. package/esm2022/lib/components/time/elder-local-date-input/elder-local-date-input.component.mjs +3 -3
  254. package/esm2022/lib/components/time/elder-local-time-input/elder-local-time-input.component.mjs +3 -3
  255. package/esm2022/lib/components/time/elder-time.module.mjs +4 -4
  256. package/esm2022/lib/components/time/period/elder-period-input/elder-period-input.component.mjs +3 -3
  257. package/esm2022/lib/components/time/pipes/to-iso-date-string.pipe.mjs +3 -3
  258. package/esm2022/lib/components/toasts/elder-toast.module.mjs +4 -4
  259. package/esm2022/lib/components/toasts/elder-toast.service.mjs +3 -3
  260. package/esm2022/lib/components/toasts/standard-toast/standard-toast.component.mjs +3 -3
  261. package/esm2022/lib/components/url-fragment/elder-url-fragment.module.mjs +4 -4
  262. package/esm2022/lib/components/url-fragment/url-fragment-switcher/elder-url-fragment-switcher.component.mjs +3 -3
  263. package/esm2022/lib/components/viewers/elder-svg-viewer/elder-svg-viewer.component.mjs +3 -3
  264. package/esm2022/lib/components/viewers/elder-viewers.module.mjs +4 -4
  265. package/esm2022/lib/features/event-source/elder-event-source.service.mjs +3 -3
  266. package/esm2022/lib/features/kafent/access-token-provider.mjs +3 -3
  267. package/esm2022/lib/features/kafent/kafent-config.mjs +3 -3
  268. package/esm2022/lib/features/kafent/kafent-event-stream.mjs +3 -3
  269. package/esm2022/lib/features/kafent/kafent-event.service.mjs +3 -3
  270. package/esm2022/lib/features/kafent/kafent.module.mjs +4 -4
  271. package/esm2022/lib/features/kafent/sse/kafent-event-stream-sse.service.mjs +3 -3
  272. package/esm2022/lib/pipes/bytes.pipe.mjs +3 -3
  273. package/esm2022/lib/pipes/elder-pipes.module.mjs +10 -10
  274. package/esm2022/lib/pipes/elder-repeat.pipe.mjs +3 -3
  275. package/esm2022/lib/pipes/elder-round.pipe.mjs +3 -3
  276. package/esm2022/lib/pipes/elder-safe-url.pipe.mjs +3 -3
  277. package/esm2022/lib/pipes/elder-truncate.pipe.mjs +3 -3
  278. package/esm2022/lib/pipes/iso-duration.pipe.mjs +3 -3
  279. package/esm2022/lib/pipes/iso-interval-parse.pipe.mjs +3 -3
  280. package/esm2022/lib/pipes/iso-interval.pipe.mjs +3 -3
  281. package/esm2022/lib/pipes/time-ago.pipe.mjs +3 -3
  282. package/esm2022/lib/pipes/time-duration.pipe.mjs +3 -3
  283. package/esm2022/lib/pipes/weight.pipe.mjs +3 -3
  284. package/fesm2022/elderbyte-ngx-starter.mjs +1484 -1150
  285. package/fesm2022/elderbyte-ngx-starter.mjs.map +1 -1
  286. package/lib/common/data/filters/filter-context.d.ts +2 -1
  287. package/lib/components/forms/directives/elder-initial-value.directive.d.ts +21 -0
  288. package/lib/components/forms/search/elder-search-context-url-binding.directive.d.ts +42 -0
  289. package/lib/components/forms/search/elder-search-context.directive.d.ts +14 -13
  290. package/lib/components/forms/search/elder-search-input.directive.d.ts +25 -12
  291. package/lib/components/forms/search/elder-search.module.d.ts +22 -19
  292. package/lib/components/forms/search/search-box/elder-search-context-filters.d.ts +7 -0
  293. package/lib/components/forms/search/search-box/elder-search-url-binding.service.d.ts +38 -0
  294. package/lib/components/select/elder-select.module.d.ts +1 -1
  295. package/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.d.ts +11 -26
  296. package/lib/components/select/multi/elder-multi-select-chips/select-chip-spec.d.ts +27 -0
  297. package/lib/components/select/multi/public_api.d.ts +3 -0
  298. package/lib/components/select/public_api.d.ts +1 -2
  299. package/package.json +1 -1
  300. package/src/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.scss +5 -0
@@ -57,10 +57,10 @@ export class ElderInputPatternDirective {
57
57
  }
58
58
  return true;
59
59
  }
60
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ElderInputPatternDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
61
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.5", type: ElderInputPatternDirective, selector: "textarea[elderInputPattern],input[elderInputPattern]", inputs: { elderInputPattern: "elderInputPattern" }, host: { listeners: { "beforeinput": "onBeforeInput($event)", "paste": "onPasteEvent($event)" } }, ngImport: i0 }); }
60
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderInputPatternDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
61
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: ElderInputPatternDirective, selector: "textarea[elderInputPattern],input[elderInputPattern]", inputs: { elderInputPattern: "elderInputPattern" }, host: { listeners: { "beforeinput": "onBeforeInput($event)", "paste": "onPasteEvent($event)" } }, ngImport: i0 }); }
62
62
  }
63
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ElderInputPatternDirective, decorators: [{
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderInputPatternDirective, decorators: [{
64
64
  type: Directive,
65
65
  args: [{
66
66
  selector: 'textarea[elderInputPattern],input[elderInputPattern]'
@@ -78,10 +78,10 @@ export class ElderKeyEventDirective {
78
78
  this.callback(event);
79
79
  }
80
80
  }
81
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ElderKeyEventDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
82
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.5", type: ElderKeyEventDirective, selector: "[elderKeyEvent]", inputs: { keyFilter: ["elderKeyEventFilter", "keyFilter"], keyDown: ["elderKeyEventDown", "keyDown"], includeChildren: ["elderKeyEventChildren", "includeChildren"], callback: ["elderKeyEventCallback", "callback"] }, outputs: { keyEvent: "onElderKeyEvent" }, host: { listeners: { "window:keyup": "keyupEvent($event)", "window:keydown": "keydownEvent($event)" } }, ngImport: i0 }); }
81
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderKeyEventDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
82
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: ElderKeyEventDirective, selector: "[elderKeyEvent]", inputs: { keyFilter: ["elderKeyEventFilter", "keyFilter"], keyDown: ["elderKeyEventDown", "keyDown"], includeChildren: ["elderKeyEventChildren", "includeChildren"], callback: ["elderKeyEventCallback", "callback"] }, outputs: { keyEvent: "onElderKeyEvent" }, host: { listeners: { "window:keyup": "keyupEvent($event)", "window:keydown": "keydownEvent($event)" } }, ngImport: i0 }); }
83
83
  }
84
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ElderKeyEventDirective, decorators: [{
84
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderKeyEventDirective, decorators: [{
85
85
  type: Directive,
86
86
  args: [{
87
87
  selector: '[elderKeyEvent]'
@@ -76,10 +76,10 @@ export class ElderNextFocusableDirective {
76
76
  }
77
77
  return true;
78
78
  }
79
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ElderNextFocusableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
80
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.5", type: ElderNextFocusableDirective, selector: "[elderNextFocusable]", inputs: { nextElement: ["elderNextFocusable", "nextElement"], enabled: ["elderNextFocusableEnabled", "enabled"], nextElements: ["elderNextElements", "nextElements"] }, host: { listeners: { "keydown": "onKeyDown($event)" } }, exportAs: ["elderNextFocusable"], ngImport: i0 }); }
79
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderNextFocusableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
80
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: ElderNextFocusableDirective, selector: "[elderNextFocusable]", inputs: { nextElement: ["elderNextFocusable", "nextElement"], enabled: ["elderNextFocusableEnabled", "enabled"], nextElements: ["elderNextElements", "nextElements"] }, host: { listeners: { "keydown": "onKeyDown($event)" } }, exportAs: ["elderNextFocusable"], ngImport: i0 }); }
81
81
  }
82
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ElderNextFocusableDirective, decorators: [{
82
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderNextFocusableDirective, decorators: [{
83
83
  type: Directive,
84
84
  args: [{
85
85
  selector: '[elderNextFocusable]',
@@ -8,8 +8,8 @@ import * as i0 from "@angular/core";
8
8
  * e.g. for validation.
9
9
  */
10
10
  export class ElderPlugParentFormDirective {
11
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ElderPlugParentFormDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
12
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.5", type: ElderPlugParentFormDirective, selector: "[elderPlugParentForm]", providers: [
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderPlugParentFormDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
12
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: ElderPlugParentFormDirective, selector: "[elderPlugParentForm]", providers: [
13
13
  {
14
14
  provide: ControlContainer,
15
15
  useFactory: provideForm,
@@ -17,7 +17,7 @@ export class ElderPlugParentFormDirective {
17
17
  }
18
18
  ], ngImport: i0 }); }
19
19
  }
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ElderPlugParentFormDirective, decorators: [{
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderPlugParentFormDirective, decorators: [{
21
21
  type: Directive,
22
22
  args: [{
23
23
  selector: '[elderPlugParentForm]',
@@ -14,10 +14,10 @@ export class ElderStopEventPropagationDirective {
14
14
  onClick(event) {
15
15
  event.stopPropagation();
16
16
  }
17
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ElderStopEventPropagationDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
18
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.5", type: ElderStopEventPropagationDirective, selector: "[elderStopEventPropagation]", host: { listeners: { "click": "onClick($event)" } }, ngImport: i0 }); }
17
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderStopEventPropagationDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
18
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: ElderStopEventPropagationDirective, selector: "[elderStopEventPropagation]", host: { listeners: { "click": "onClick($event)" } }, ngImport: i0 }); }
19
19
  }
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ElderStopEventPropagationDirective, decorators: [{
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderStopEventPropagationDirective, decorators: [{
21
21
  type: Directive,
22
22
  args: [{
23
23
  selector: '[elderStopEventPropagation]'
@@ -143,10 +143,10 @@ export class ElderTabFocusTrapDirective {
143
143
  }
144
144
  return false;
145
145
  }
146
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ElderTabFocusTrapDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
147
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.5", type: ElderTabFocusTrapDirective, selector: "[elderTabFocusTrap]", inputs: { focusableQuerySelector: "focusableQuerySelector" }, ngImport: i0 }); }
146
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderTabFocusTrapDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
147
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: ElderTabFocusTrapDirective, selector: "[elderTabFocusTrap]", inputs: { focusableQuerySelector: "focusableQuerySelector" }, ngImport: i0 }); }
148
148
  }
149
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ElderTabFocusTrapDirective, decorators: [{
149
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderTabFocusTrapDirective, decorators: [{
150
150
  type: Directive,
151
151
  args: [{
152
152
  selector: '[elderTabFocusTrap]'
@@ -15,10 +15,10 @@ export class ElderTouchedDirective {
15
15
  control.markAsTouched();
16
16
  }
17
17
  }
18
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ElderTouchedDirective, deps: [{ token: i1.NgControl }], target: i0.ɵɵFactoryTarget.Directive }); }
19
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.5", type: ElderTouchedDirective, selector: "[elderTouched]", ngImport: i0 }); }
18
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderTouchedDirective, deps: [{ token: i1.NgControl }], target: i0.ɵɵFactoryTarget.Directive }); }
19
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: ElderTouchedDirective, selector: "[elderTouched]", ngImport: i0 }); }
20
20
  }
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ElderTouchedDirective, decorators: [{
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderTouchedDirective, decorators: [{
22
22
  type: Directive,
23
23
  args: [{
24
24
  selector: '[elderTouched]'
@@ -94,10 +94,10 @@ export class ElderTripleStateCheckboxDirective {
94
94
  this.ngModel.viewToModelUpdate(val);
95
95
  }
96
96
  }
97
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ElderTripleStateCheckboxDirective, deps: [{ token: i1.MatCheckbox }, { token: i2.NgModel, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
98
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.5", type: ElderTripleStateCheckboxDirective, selector: "mat-checkbox[elderTripleStateCheckbox]", ngImport: i0 }); }
97
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderTripleStateCheckboxDirective, deps: [{ token: i1.MatCheckbox }, { token: i2.NgModel, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
98
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: ElderTripleStateCheckboxDirective, selector: "mat-checkbox[elderTripleStateCheckbox]", ngImport: i0 }); }
99
99
  }
100
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ElderTripleStateCheckboxDirective, decorators: [{
100
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderTripleStateCheckboxDirective, decorators: [{
101
101
  type: Directive,
102
102
  args: [{
103
103
  selector: 'mat-checkbox[elderTripleStateCheckbox]'
@@ -73,10 +73,10 @@ export class ElderValidationErrorDirective {
73
73
  this.ref.markForCheck();
74
74
  }
75
75
  }
76
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ElderValidationErrorDirective, deps: [{ token: i1.ValidationMessageRendererService }, { token: i2.MatFormField }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
77
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.5", type: ElderValidationErrorDirective, selector: "mat-error[elderValidationError]", ngImport: i0 }); }
76
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderValidationErrorDirective, deps: [{ token: i1.ValidationMessageRendererService }, { token: i2.MatFormField }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
77
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: ElderValidationErrorDirective, selector: "mat-error[elderValidationError]", ngImport: i0 }); }
78
78
  }
79
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ElderValidationErrorDirective, decorators: [{
79
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderValidationErrorDirective, decorators: [{
80
80
  type: Directive,
81
81
  args: [{
82
82
  selector: 'mat-error[elderValidationError]'
@@ -35,10 +35,10 @@ export class CommonValidationMessageStrategy {
35
35
  }
36
36
  return undefined;
37
37
  }
38
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: CommonValidationMessageStrategy, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
39
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: CommonValidationMessageStrategy, providedIn: 'root' }); }
38
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: CommonValidationMessageStrategy, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
39
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: CommonValidationMessageStrategy, providedIn: 'root' }); }
40
40
  }
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: CommonValidationMessageStrategy, decorators: [{
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: CommonValidationMessageStrategy, decorators: [{
42
42
  type: Injectable,
43
43
  args: [{
44
44
  providedIn: 'root'
@@ -36,10 +36,10 @@ export class DynamicValidationMessageStrategy {
36
36
  renderDynamicMessage(message) {
37
37
  return this.translateService.instant(message.message, message.messageParams);
38
38
  }
39
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: DynamicValidationMessageStrategy, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
40
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: DynamicValidationMessageStrategy, providedIn: 'root' }); }
39
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: DynamicValidationMessageStrategy, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
40
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: DynamicValidationMessageStrategy, providedIn: 'root' }); }
41
41
  }
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: DynamicValidationMessageStrategy, decorators: [{
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: DynamicValidationMessageStrategy, decorators: [{
43
43
  type: Injectable,
44
44
  args: [{
45
45
  providedIn: 'root'
@@ -43,10 +43,10 @@ export class ValidationMessageRendererService {
43
43
  return 'no error';
44
44
  }
45
45
  }
46
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ValidationMessageRendererService, deps: [{ token: i1.CommonValidationMessageStrategy }, { token: i2.DynamicValidationMessageStrategy }], target: i0.ɵɵFactoryTarget.Injectable }); }
47
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ValidationMessageRendererService, providedIn: 'root' }); }
46
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ValidationMessageRendererService, deps: [{ token: i1.CommonValidationMessageStrategy }, { token: i2.DynamicValidationMessageStrategy }], target: i0.ɵɵFactoryTarget.Injectable }); }
47
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ValidationMessageRendererService, providedIn: 'root' }); }
48
48
  }
49
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ValidationMessageRendererService, decorators: [{
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ValidationMessageRendererService, decorators: [{
50
50
  type: Injectable,
51
51
  args: [{
52
52
  providedIn: 'root'
@@ -15,15 +15,15 @@ export class ElderMaxValidator {
15
15
  validate(control) {
16
16
  return this._validator(control);
17
17
  }
18
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ElderMaxValidator, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
19
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.5", type: ElderMaxValidator, selector: "[matInput][max][formControlName],[matInput][max][formControl],[matInput][max][ngModel]", inputs: { max: "max" }, providers: [
18
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderMaxValidator, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
19
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: ElderMaxValidator, selector: "[matInput][max][formControlName],[matInput][max][formControl],[matInput][max][ngModel]", inputs: { max: "max" }, providers: [
20
20
  { provide: NG_VALIDATORS,
21
21
  useExisting: forwardRef(() => ElderMaxValidator),
22
22
  multi: true
23
23
  }
24
24
  ], ngImport: i0 }); }
25
25
  }
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ElderMaxValidator, decorators: [{
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderMaxValidator, decorators: [{
27
27
  type: Directive,
28
28
  args: [{
29
29
  // eslint-disable-next-line @angular-eslint/directive-selector
@@ -15,15 +15,15 @@ export class ElderMinValidator {
15
15
  validate(control) {
16
16
  return this._validator(control);
17
17
  }
18
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ElderMinValidator, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
19
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.5", type: ElderMinValidator, selector: "[matInput][min][formControlName],[matInput][min][formControl],[matInput][min][ngModel]", inputs: { min: "min" }, providers: [
18
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderMinValidator, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
19
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: ElderMinValidator, selector: "[matInput][min][formControlName],[matInput][min][formControl],[matInput][min][ngModel]", inputs: { min: "min" }, providers: [
20
20
  { provide: NG_VALIDATORS,
21
21
  useExisting: forwardRef(() => ElderMinValidator),
22
22
  multi: true
23
23
  }
24
24
  ], ngImport: i0 }); }
25
25
  }
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ElderMinValidator, decorators: [{
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderMinValidator, decorators: [{
27
27
  type: Directive,
28
28
  args: [{
29
29
  // eslint-disable-next-line @angular-eslint/directive-selector
@@ -69,8 +69,8 @@ export class ElderMultipleOfValidator {
69
69
  return null;
70
70
  }
71
71
  }
72
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ElderMultipleOfValidator, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
73
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.5", type: ElderMultipleOfValidator, selector: "[elderMultipleOf][formControlName],[elderMultipleOf][formControl],[elderMultipleOf][ngModel]", inputs: { elderMultipleOf: "elderMultipleOf" }, providers: [
72
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderMultipleOfValidator, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
73
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: ElderMultipleOfValidator, selector: "[elderMultipleOf][formControlName],[elderMultipleOf][formControl],[elderMultipleOf][ngModel]", inputs: { elderMultipleOf: "elderMultipleOf" }, providers: [
74
74
  {
75
75
  provide: NG_VALIDATORS,
76
76
  useExisting: forwardRef(() => ElderMultipleOfValidator),
@@ -78,7 +78,7 @@ export class ElderMultipleOfValidator {
78
78
  }
79
79
  ], ngImport: i0 }); }
80
80
  }
81
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ElderMultipleOfValidator, decorators: [{
81
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderMultipleOfValidator, decorators: [{
82
82
  type: Directive,
83
83
  args: [{
84
84
  selector: '[elderMultipleOf][formControlName],[elderMultipleOf][formControl],[elderMultipleOf][ngModel]',
@@ -46,12 +46,12 @@ export class ElderRequiredIgnoreZeroValidator {
46
46
  // this.log.info('"' + c.value + '" --> validate result: ' + JSON.stringify(result), c);
47
47
  return result;
48
48
  }
49
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ElderRequiredIgnoreZeroValidator, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
50
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.5", type: ElderRequiredIgnoreZeroValidator, selector: "[elderRequiredIgnoreZeroValidator][ngModel]", inputs: { enabled: ["elderRequiredIgnoreZeroValidator", "enabled"], required: "required" }, providers: [
49
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderRequiredIgnoreZeroValidator, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
50
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: ElderRequiredIgnoreZeroValidator, selector: "[elderRequiredIgnoreZeroValidator][ngModel]", inputs: { enabled: ["elderRequiredIgnoreZeroValidator", "enabled"], required: "required" }, providers: [
51
51
  { provide: NG_VALIDATORS, useExisting: ElderRequiredIgnoreZeroValidator, multi: true }
52
52
  ], ngImport: i0 }); }
53
53
  }
54
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ElderRequiredIgnoreZeroValidator, decorators: [{
54
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderRequiredIgnoreZeroValidator, decorators: [{
55
55
  type: Directive,
56
56
  args: [{
57
57
  selector: '[elderRequiredIgnoreZeroValidator][ngModel]',
@@ -7,11 +7,11 @@ export * from './clipboard/elder-clipboard.service';
7
7
  export * from './directives/elder-forms-directives.module';
8
8
  export * from './search/elder-search.module';
9
9
  export class ElderFormsModule {
10
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ElderFormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
11
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.5", ngImport: i0, type: ElderFormsModule, imports: [CommonModule, ElderFormsDirectivesModule, ElderSearchModule], exports: [ElderFormsDirectivesModule, ElderSearchModule] }); }
12
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ElderFormsModule, imports: [CommonModule, ElderFormsDirectivesModule, ElderSearchModule, ElderFormsDirectivesModule, ElderSearchModule] }); }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderFormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
11
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.9", ngImport: i0, type: ElderFormsModule, imports: [CommonModule, ElderFormsDirectivesModule, ElderSearchModule], exports: [ElderFormsDirectivesModule, ElderSearchModule] }); }
12
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderFormsModule, imports: [CommonModule, ElderFormsDirectivesModule, ElderSearchModule, ElderFormsDirectivesModule, ElderSearchModule] }); }
13
13
  }
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ElderFormsModule, decorators: [{
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderFormsModule, decorators: [{
15
15
  type: NgModule,
16
16
  args: [{
17
17
  imports: [CommonModule, ElderFormsDirectivesModule, ElderSearchModule],
@@ -0,0 +1,68 @@
1
+ import { Directive, Input } from "@angular/core";
2
+ import { LoggerFactory } from "@elderbyte/ts-logger";
3
+ import { filter, first, map, skip, takeUntil } from "rxjs/operators";
4
+ import { Subject } from "rxjs/internal/Subject";
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "./elder-search-context.directive";
7
+ import * as i2 from "./search-box/elder-search-url-binding.service";
8
+ /**
9
+ * The search container manages a group of search-inputs
10
+ * and holds their values in a central search model.
11
+ */
12
+ export class ElderSearchContextUrlBindingDirective {
13
+ /***************************************************************************
14
+ * *
15
+ * Constructor *
16
+ * *
17
+ **************************************************************************/
18
+ constructor(searchContext, urlBindingService) {
19
+ this.searchContext = searchContext;
20
+ this.urlBindingService = urlBindingService;
21
+ /***************************************************************************
22
+ * *
23
+ * Fields *
24
+ * *
25
+ **************************************************************************/
26
+ this.log = LoggerFactory.getLogger(this.constructor.name);
27
+ this._unsubscribe$ = new Subject();
28
+ }
29
+ /***************************************************************************
30
+ * *
31
+ * Life Cycle *
32
+ * *
33
+ **************************************************************************/
34
+ ngAfterViewInit() {
35
+ this.urlBindingService.initialSearchMap$.pipe(first(), takeUntil(this._unsubscribe$), filter(searchMap => searchMap.has(this._urlBinding)), map(searchMap => searchMap.get(this._urlBinding)), map(filterMap => Array.from(filterMap.filters.values()))).subscribe(filters => {
36
+ this.searchContext.registerInitialFilters(filters);
37
+ });
38
+ this.searchContext.filters$.pipe(takeUntil(this._unsubscribe$), skip(2) //Skip empty and skip initial filter
39
+ ).subscribe(filters => this.urlBindingService.updateFiltersForContext(this._urlBinding, filters));
40
+ }
41
+ ngOnDestroy() {
42
+ this._unsubscribe$.next();
43
+ this._unsubscribe$.complete();
44
+ }
45
+ /***************************************************************************
46
+ * *
47
+ * Properties *
48
+ * *
49
+ **************************************************************************/
50
+ set elderSearchContextUrlBinding(value) {
51
+ this._urlBinding = value;
52
+ }
53
+ get elderSearchContextUrlBinding() {
54
+ return this._urlBinding;
55
+ }
56
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderSearchContextUrlBindingDirective, deps: [{ token: i1.ElderSearchContextDirective }, { token: i2.ElderSearchUrlBindingService }], target: i0.ɵɵFactoryTarget.Directive }); }
57
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: ElderSearchContextUrlBindingDirective, selector: "[elderSearchContextUrlBinding]", inputs: { elderSearchContextUrlBinding: "elderSearchContextUrlBinding" }, exportAs: ["elderSearchContextUrlBinding"], ngImport: i0 }); }
58
+ }
59
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderSearchContextUrlBindingDirective, decorators: [{
60
+ type: Directive,
61
+ args: [{
62
+ selector: "[elderSearchContextUrlBinding]",
63
+ exportAs: "elderSearchContextUrlBinding"
64
+ }]
65
+ }], ctorParameters: function () { return [{ type: i1.ElderSearchContextDirective }, { type: i2.ElderSearchUrlBindingService }]; }, propDecorators: { elderSearchContextUrlBinding: [{
66
+ type: Input
67
+ }] } });
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItc2VhcmNoLWNvbnRleHQtdXJsLWJpbmRpbmcuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9mb3Jtcy9zZWFyY2gvZWxkZXItc2VhcmNoLWNvbnRleHQtdXJsLWJpbmRpbmcuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFnQixNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7O0FBSWhEOzs7R0FHRztBQUtILE1BQU0sT0FBTyxxQ0FBcUM7SUFlaEQ7Ozs7Z0ZBSTRFO0lBRTVFLFlBQ1UsYUFBMEMsRUFDMUMsaUJBQStDO1FBRC9DLGtCQUFhLEdBQWIsYUFBYSxDQUE2QjtRQUMxQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQThCO1FBcEJ6RDs7OztvRkFJNEU7UUFFM0QsUUFBRyxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVyRCxrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFjckQsQ0FBQztJQUVEOzs7O2dGQUk0RTtJQUVyRSxlQUFlO1FBQ3BCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQzNDLEtBQUssRUFBRSxFQUNQLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQzdCLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQ3BELEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQ2pELEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQ3pELENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxhQUFhLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUNGLENBQUM7UUFFRixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQzlCLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQzdCLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQ0FBb0M7U0FDN0MsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FDcEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQzFFLENBQUM7SUFDSixDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7O2dGQUk0RTtJQUU1RSxJQUNXLDRCQUE0QixDQUFDLEtBQWE7UUFDbkQsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQVcsNEJBQTRCO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDOzhHQXZFVSxxQ0FBcUM7a0dBQXJDLHFDQUFxQzs7MkZBQXJDLHFDQUFxQztrQkFKakQsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0NBQWdDO29CQUMxQyxRQUFRLEVBQUUsOEJBQThCO2lCQUN6Qzs2SkFrRVksNEJBQTRCO3NCQUR0QyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBJbnB1dCwgT25EZXN0cm95IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IExvZ2dlckZhY3RvcnkgfSBmcm9tIFwiQGVsZGVyYnl0ZS90cy1sb2dnZXJcIjtcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlsdGVyLCBmaXJzdCwgbWFwLCBza2lwLCB0YWtlVW50aWwgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqcy9pbnRlcm5hbC9TdWJqZWN0XCI7XG5pbXBvcnQgeyBFbGRlclNlYXJjaFVybEJpbmRpbmdTZXJ2aWNlIH0gZnJvbSBcIi4vc2VhcmNoLWJveC9lbGRlci1zZWFyY2gtdXJsLWJpbmRpbmcuc2VydmljZVwiO1xuaW1wb3J0IHsgRWxkZXJTZWFyY2hDb250ZXh0RGlyZWN0aXZlIH0gZnJvbSBcIi4vZWxkZXItc2VhcmNoLWNvbnRleHQuZGlyZWN0aXZlXCI7XG5cbi8qKlxuICogVGhlIHNlYXJjaCBjb250YWluZXIgbWFuYWdlcyBhIGdyb3VwIG9mIHNlYXJjaC1pbnB1dHNcbiAqIGFuZCBob2xkcyB0aGVpciB2YWx1ZXMgaW4gYSBjZW50cmFsIHNlYXJjaCBtb2RlbC5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiBcIltlbGRlclNlYXJjaENvbnRleHRVcmxCaW5kaW5nXVwiLFxuICBleHBvcnRBczogXCJlbGRlclNlYXJjaENvbnRleHRVcmxCaW5kaW5nXCJcbn0pXG5leHBvcnQgY2xhc3MgRWxkZXJTZWFyY2hDb250ZXh0VXJsQmluZGluZ0RpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlYWRvbmx5IGxvZyA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXMuY29uc3RydWN0b3IubmFtZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfdW5zdWJzY3JpYmUkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIF91cmxCaW5kaW5nOiBzdHJpbmc7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZWFyY2hDb250ZXh0OiBFbGRlclNlYXJjaENvbnRleHREaXJlY3RpdmUsXG4gICAgcHJpdmF0ZSB1cmxCaW5kaW5nU2VydmljZTogRWxkZXJTZWFyY2hVcmxCaW5kaW5nU2VydmljZVxuICApIHtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBMaWZlIEN5Y2xlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy51cmxCaW5kaW5nU2VydmljZS5pbml0aWFsU2VhcmNoTWFwJC5waXBlKFxuICAgICAgZmlyc3QoKSxcbiAgICAgIHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZSQpLFxuICAgICAgZmlsdGVyKHNlYXJjaE1hcCA9PiBzZWFyY2hNYXAuaGFzKHRoaXMuX3VybEJpbmRpbmcpKSxcbiAgICAgIG1hcChzZWFyY2hNYXAgPT4gc2VhcmNoTWFwLmdldCh0aGlzLl91cmxCaW5kaW5nKSksXG4gICAgICBtYXAoZmlsdGVyTWFwID0+IEFycmF5LmZyb20oZmlsdGVyTWFwLmZpbHRlcnMudmFsdWVzKCkpKSxcbiAgICApLnN1YnNjcmliZShmaWx0ZXJzID0+IHtcbiAgICAgICAgdGhpcy5zZWFyY2hDb250ZXh0LnJlZ2lzdGVySW5pdGlhbEZpbHRlcnMoZmlsdGVycyk7XG4gICAgICB9XG4gICAgKTtcblxuICAgIHRoaXMuc2VhcmNoQ29udGV4dC5maWx0ZXJzJC5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlJCksXG4gICAgICBza2lwKDIpIC8vU2tpcCBlbXB0eSBhbmQgc2tpcCBpbml0aWFsIGZpbHRlclxuICAgICkuc3Vic2NyaWJlKGZpbHRlcnMgPT5cbiAgICAgIHRoaXMudXJsQmluZGluZ1NlcnZpY2UudXBkYXRlRmlsdGVyc0ZvckNvbnRleHQodGhpcy5fdXJsQmluZGluZywgZmlsdGVycylcbiAgICApO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3Vuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgdGhpcy5fdW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGVsZGVyU2VhcmNoQ29udGV4dFVybEJpbmRpbmcodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3VybEJpbmRpbmcgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZWxkZXJTZWFyY2hDb250ZXh0VXJsQmluZGluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl91cmxCaW5kaW5nO1xuICB9XG59XG5cbiJdfQ==
@@ -1,10 +1,11 @@
1
- import { Directive, Input } from '@angular/core';
2
- import { LoggerFactory } from '@elderbyte/ts-logger';
3
- import { combineLatestWith, debounceTime, map, switchMap, takeUntil } from 'rxjs/operators';
4
- import { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';
5
- import { Subject } from 'rxjs/internal/Subject';
6
- import { combineLatest } from 'rxjs';
7
- import { Filter } from '../../../common/data/filters/filter';
1
+ import { ContentChildren, Directive, Input } from "@angular/core";
2
+ import { LoggerFactory } from "@elderbyte/ts-logger";
3
+ import { combineLatestWith, debounceTime, map, skip, startWith, switchMap, takeUntil } from "rxjs/operators";
4
+ import { BehaviorSubject } from "rxjs/internal/BehaviorSubject";
5
+ import { Subject } from "rxjs/internal/Subject";
6
+ import { combineLatest } from "rxjs";
7
+ import { Filter } from "../../../common/data/filters/filter";
8
+ import { ElderSearchInputDirective } from "./elder-search-input.directive";
8
9
  import * as i0 from "@angular/core";
9
10
  /**
10
11
  * The search container manages a group of search-inputs
@@ -19,10 +20,11 @@ export class ElderSearchContextDirective {
19
20
  **************************************************************************/
20
21
  this.forcedFilters$ = new BehaviorSubject([]);
21
22
  this.log = LoggerFactory.getLogger(this.constructor.name);
22
- this.unsubscribe$ = new Subject();
23
+ this._unsubscribe$ = new Subject();
23
24
  this._searchInputs = new BehaviorSubject([]);
24
25
  this._searchStates = new BehaviorSubject([]);
25
- this._filters = new BehaviorSubject([]);
26
+ this._filters$ = new BehaviorSubject([]);
27
+ this._initialFilters$ = new BehaviorSubject([]);
26
28
  }
27
29
  /***************************************************************************
28
30
  * *
@@ -30,16 +32,21 @@ export class ElderSearchContextDirective {
30
32
  * *
31
33
  **************************************************************************/
32
34
  ngAfterViewInit() {
33
- this._searchInputs.pipe(takeUntil(this.unsubscribe$), switchMap(inputs => combineLatest(inputs.map(i => i.state$))), combineLatestWith(this.forcedFilters$), debounceTime(5)).subscribe(([states, forcedFilters]) => {
35
+ this._searchInputs.next(this.searchInputs.toArray());
36
+ this.searchInputs.changes
37
+ .pipe(startWith(this.searchInputs), takeUntil(this._unsubscribe$), map(input => input), switchMap(inputs => combineLatest(inputs.map(i => i.state$))), combineLatestWith(this.forcedFilters$), debounceTime(5)).subscribe(([states, forcedFilters]) => {
34
38
  this._searchStates.next(states);
35
39
  const userFilters = this.convertToFilters(states);
36
- this._filters.next(userFilters);
40
+ this._filters$.next(userFilters);
37
41
  this.applyFilters(userFilters, forcedFilters);
38
42
  });
43
+ this.initialFilters$.pipe(takeUntil(this._unsubscribe$), skip(1)).subscribe((initialFilters) => {
44
+ this.searchInputs.forEach(input => input.setInitialFilter(initialFilters));
45
+ });
39
46
  }
40
47
  ngOnDestroy() {
41
- this.unsubscribe$.next();
42
- this.unsubscribe$.complete();
48
+ this._unsubscribe$.next();
49
+ this._unsubscribe$.complete();
43
50
  }
44
51
  /***************************************************************************
45
52
  * *
@@ -65,10 +72,10 @@ export class ElderSearchContextDirective {
65
72
  return this.forcedFilters$.getValue();
66
73
  }
67
74
  get attributes() {
68
- return this._searchInputs.asObservable();
75
+ return this.searchInputs.changes.pipe(map(inputs => inputs), map(inputs => inputs.toArray()));
69
76
  }
70
77
  get attributesSnapshot() {
71
- return this._searchInputs.getValue();
78
+ return this.searchInputs.toArray();
72
79
  }
73
80
  get states$() {
74
81
  return this._searchStates.asObservable();
@@ -86,28 +93,27 @@ export class ElderSearchContextDirective {
86
93
  * Returns the current active filters
87
94
  */
88
95
  get filters$() {
89
- return this._filters.asObservable();
96
+ return this._filters$.asObservable();
97
+ }
98
+ get initialFilters$() {
99
+ return this._initialFilters$.asObservable();
90
100
  }
91
101
  get filtersSnapshot() {
92
- return this._filters.getValue();
102
+ return this._filters$.getValue();
93
103
  }
94
104
  /***************************************************************************
95
105
  * *
96
106
  * Public API *
97
107
  * *
98
108
  **************************************************************************/
99
- /**
100
- * Register a new search name in this container
101
- */
102
- register(searchInput) {
103
- this.log.debug('Registering search input [' + searchInput.name + ']');
104
- const current = this._searchInputs.getValue();
105
- this._searchInputs.next([...current, searchInput]);
109
+ registerInitialFilters(filters) {
110
+ this._initialFilters$.next(filters);
106
111
  }
107
112
  reset() {
108
113
  this.attributesSnapshot
109
114
  .filter(attr => !attr.readonly)
110
115
  .forEach(a => {
116
+ console.log(a.name);
111
117
  a.reset();
112
118
  });
113
119
  }
@@ -125,22 +131,25 @@ export class ElderSearchContextDirective {
125
131
  if (context) {
126
132
  context.updateFilters(userFilters);
127
133
  context.mergeFilters(forcedFilters);
128
- this.log.trace('Search-Model filters updated:', Array.from(context.filtersSnapshot));
134
+ this.log.trace("Search-Model filters updated:", Array.from(context.filtersSnapshot));
129
135
  }
130
136
  }
131
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ElderSearchContextDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
132
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.5", type: ElderSearchContextDirective, selector: "[elderSearchContext]", inputs: { filterContext: ["elderSearchContext", "filterContext"], forcedFilters: "forcedFilters" }, exportAs: ["elderSearchContext"], ngImport: i0 }); }
137
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderSearchContextDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
138
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: ElderSearchContextDirective, selector: "[elderSearchContext]", inputs: { filterContext: ["elderSearchContext", "filterContext"], forcedFilters: "forcedFilters" }, queries: [{ propertyName: "searchInputs", predicate: ElderSearchInputDirective, descendants: true }], exportAs: ["elderSearchContext"], ngImport: i0 }); }
133
139
  }
134
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ElderSearchContextDirective, decorators: [{
140
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderSearchContextDirective, decorators: [{
135
141
  type: Directive,
136
142
  args: [{
137
- selector: '[elderSearchContext]',
138
- exportAs: 'elderSearchContext'
143
+ selector: "[elderSearchContext]",
144
+ exportAs: "elderSearchContext"
139
145
  }]
140
- }], propDecorators: { filterContext: [{
146
+ }], propDecorators: { searchInputs: [{
147
+ type: ContentChildren,
148
+ args: [ElderSearchInputDirective, { descendants: true }]
149
+ }], filterContext: [{
141
150
  type: Input,
142
- args: ['elderSearchContext']
151
+ args: ["elderSearchContext"]
143
152
  }], forcedFilters: [{
144
153
  type: Input
145
154
  }] } });
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItc2VhcmNoLWNvbnRleHQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9mb3Jtcy9zZWFyY2gvZWxkZXItc2VhcmNoLWNvbnRleHQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLEtBQUssRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDakYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRW5ELE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDOUQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQzlDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDbkMsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLHFDQUFxQyxDQUFDOztBQUszRDs7O0dBR0c7QUFLSCxNQUFNLE9BQU8sMkJBQTJCO0lBSnhDO1FBT0U7Ozs7b0ZBSTRFO1FBRXBFLG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQVcsRUFBRSxDQUFDLENBQUM7UUFFMUMsUUFBRyxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVyRCxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFbkMsa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBZ0IsRUFBRSxDQUFDLENBQUM7UUFDdkQsa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBcUIsRUFBRSxDQUFDLENBQUM7UUFDNUQsYUFBUSxH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aUJBQy9COzhCQXNEWSxhQUFhO3NCQUR2QixLQUFLO3VCQUFDLG9CQUFvQjtnQkFnQmhCLGFBQWE7c0JBRHZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TG9nZ2VyRmFjdG9yeX0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzL2ludGVybmFsL09ic2VydmFibGUnO1xuaW1wb3J0IHtjb21iaW5lTGF0ZXN0V2l0aCwgZGVib3VuY2VUaW1lLCBtYXAsIHN3aXRjaE1hcCwgdGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1NlYXJjaElucHV0fSBmcm9tICcuL21vZGVsL3NlYXJjaC1pbnB1dCc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdH0gZnJvbSAncnhqcy9pbnRlcm5hbC9CZWhhdmlvclN1YmplY3QnO1xuaW1wb3J0IHtTdWJqZWN0fSBmcm9tICdyeGpzL2ludGVybmFsL1N1YmplY3QnO1xuaW1wb3J0IHtjb21iaW5lTGF0ZXN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7RmlsdGVyfSBmcm9tICcuLi8uLi8uLi9jb21tb24vZGF0YS9maWx0ZXJzL2ZpbHRlcic7XG5pbXBvcnQge0ZpbHRlckNvbnRleHR9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9kYXRhL2ZpbHRlcnMvZmlsdGVyLWNvbnRleHQnO1xuaW1wb3J0IHtTZWFyY2hJbnB1dFN0YXRlfSBmcm9tICcuL21vZGVsL3NlYXJjaC1pbnB1dC1zdGF0ZSc7XG5cblxuLyoqXG4gKiBUaGUgc2VhcmNoIGNvbnRhaW5lciBtYW5hZ2VzIGEgZ3JvdXAgb2Ygc2VhcmNoLWlucHV0c1xuICogYW5kIGhvbGRzIHRoZWlyIHZhbHVlcyBpbiBhIGNlbnRyYWwgc2VhcmNoIG1vZGVsLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZWxkZXJTZWFyY2hDb250ZXh0XScsXG4gIGV4cG9ydEFzOiAnZWxkZXJTZWFyY2hDb250ZXh0J1xufSlcbmV4cG9ydCBjbGFzcyBFbGRlclNlYXJjaENvbnRleHREaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSBmb3JjZWRGaWx0ZXJzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RmlsdGVyW10+KFtdKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGxvZyA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXMuY29uc3RydWN0b3IubmFtZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3NlYXJjaElucHV0cyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2VhcmNoSW5wdXRbXT4oW10pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZWFyY2hTdGF0ZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNlYXJjaElucHV0U3RhdGVbXT4oW10pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9maWx0ZXJzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGaWx0ZXJbXT4oW10pO1xuXG4gIHByaXZhdGUgX2ZpbHRlckNvbnRleHQ6IEZpbHRlckNvbnRleHQ7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIExpZmUgQ3ljbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9zZWFyY2hJbnB1dHMucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCksXG4gICAgICBzd2l0Y2hNYXAoaW5wdXRzID0+IGNvbWJpbmVMYXRlc3QoaW5wdXRzLm1hcChpID0+IGkuc3RhdGUkKSkpLFxuICAgICAgY29tYmluZUxhdGVzdFdpdGgodGhpcy5mb3JjZWRGaWx0ZXJzJCksXG4gICAgICBkZWJvdW5jZVRpbWUoNSksXG4gICAgKS5zdWJzY3JpYmUoKFtzdGF0ZXMsIGZvcmNlZEZpbHRlcnNdKSA9PiB7XG4gICAgICB0aGlzLl9zZWFyY2hTdGF0ZXMubmV4dChzdGF0ZXMpO1xuICAgICAgY29uc3QgdXNlckZpbHRlcnMgPSB0aGlzLmNvbnZlcnRUb0ZpbHRlcnMoc3RhdGVzKTtcbiAgICAgIHRoaXMuX2ZpbHRlcnMubmV4dCh1c2VyRmlsdGVycyk7XG4gICAgICB0aGlzLmFwcGx5RmlsdGVycyh1c2VyRmlsdGVycywgZm9yY2VkRmlsdGVycyk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy51bnN1YnNjcmliZSQubmV4dCgpO1xuICAgIHRoaXMudW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBASW5wdXQoJ2VsZGVyU2VhcmNoQ29udGV4dCcpXG4gIHB1YmxpYyBzZXQgZmlsdGVyQ29udGV4dCh2YWx1ZTogRmlsdGVyQ29udGV4dCkge1xuICAgIHRoaXMuX2ZpbHRlckNvbnRleHQgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZmlsdGVyQ29udGV4dCgpOiBGaWx0ZXJDb250ZXh0IHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyQ29udGV4dDtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JjZWQgZmlsdGVycyBhcmUgYWx3YXlzIG1lcmdlZCBpbnRvIHRoZSBmaW5hbCBGaWx0ZXJDb250ZXh0LlxuICAgKlxuICAgKiBUaGlzIG1lYW5zIHRoZXkgb3ZlcnJpZGUgdXNlciBkZWZpbmVkIGZpbHRlcnMsIGJ1dCBhdHRlbXB0XG4gICAqIHRvIGFsc28ga2VlcCB0aGUgdXNlcnMgaW50ZW50IChieSBtZXJnaW5nKSB0aGVtLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBmb3JjZWRGaWx0ZXJzKGZpbHRlcnM6IEZpbHRlcltdKXtcbiAgICB0aGlzLmZvcmNlZEZpbHRlcnMkLm5leHQoZmlsdGVycyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZvcmNlZEZpbHRlcnMoKTogRmlsdGVyW10ge1xuICAgIHJldHVybiB0aGlzLmZvcmNlZEZpbHRlcnMkLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGF0dHJpYnV0ZXMoKTogT2JzZXJ2YWJsZTxTZWFyY2hJbnB1dFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlYXJjaElucHV0cy5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXR0cmlidXRlc1NuYXBzaG90KCk6IFNlYXJjaElucHV0W10ge1xuICAgIHJldHVybiB0aGlzLl9zZWFyY2hJbnB1dHMuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RhdGVzJCgpOiBPYnNlcnZhYmxlPFNlYXJjaElucHV0U3RhdGVbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWFyY2hTdGF0ZXMuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YXRlc1NuYXBzaG90KCk6IFNlYXJjaElucHV0U3RhdGVbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlYXJjaFN0YXRlcy5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGN1cnJlbnQgdXNlciB0b3VjaGVkIGF0dHJpYnV0ZXMuIChpZ25vcmluZyBmYWxsYmFja3MpXG4gICAqL1xuICBwdWJsaWMgZ2V0IHVzZXJEZWZpbmVkQXR0cmlidXRlcyQoKTogT2JzZXJ2YWJsZTxTZWFyY2hJbnB1dFN0YXRlW10+IHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZXMkLnBpcGUoXG4gICAgICBtYXAoc3RhdGVzID0+IHN0YXRlcy5maWx0ZXIocyA9PiAhcy5wcmlzdGluZSkpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IGFjdGl2ZSBmaWx0ZXJzXG4gICAqL1xuICBwdWJsaWMgZ2V0IGZpbHRlcnMkKCk6IE9ic2VydmFibGU8RmlsdGVyW10+IHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVycy5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZmlsdGVyc1NuYXBzaG90KCk6IEZpbHRlcltdIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVycy5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGEgbmV3IHNlYXJjaCBuYW1lIGluIHRoaXMgY29udGFpbmVyXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXIoc2VhcmNoSW5wdXQ6IFNlYXJjaElucHV0KTogdm9pZCB7XG4gICAgdGhpcy5sb2cuZGVidWcoJ1JlZ2lzdGVyaW5nIHNlYXJjaCBpbnB1dCBbJyArIHNlYXJjaElucHV0Lm5hbWUgKyAnXScpO1xuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLl9zZWFyY2hJbnB1dHMuZ2V0VmFsdWUoKTtcbiAgICB0aGlzLl9zZWFyY2hJbnB1dHMubmV4dChbLi4uY3VycmVudCwgc2VhcmNoSW5wdXRdKTtcbiAgfVxuXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLmF0dHJpYnV0ZXNTbmFwc2hvdFxuICAgICAgLmZpbHRlcihhdHRyID0+ICFhdHRyLnJlYWRvbmx5KVxuICAgICAgLmZvckVhY2goYSA9PiB7XG4gICAgICAgIGEucmVzZXQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgY29udmVydFRvRmlsdGVycyhzdGF0ZXM6IFNlYXJjaElucHV0U3RhdGVbXSk6IEZpbHRlcltdIHtcbiAgICByZXR1cm4gc3RhdGVzXG4gICAgICAubWFwKHMgPT4gbmV3IEZpbHRlcihzLnF1ZXJ5S2V5LCBzLnF1ZXJ5VmFsdWUpKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlGaWx0ZXJzKFxuICAgIHVzZXJGaWx0ZXJzOiBGaWx0ZXJbXSxcbiAgICBmb3JjZWRGaWx0ZXJzOiBGaWx0ZXJbXVxuICApOiB2b2lkIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5maWx0ZXJDb250ZXh0O1xuICAgIGlmIChjb250ZXh0KSB7XG4gICAgICBjb250ZXh0LnVwZGF0ZUZpbHRlcnModXNlckZpbHRlcnMpO1xuICAgICAgY29udGV4dC5tZXJnZUZpbHRlcnMoZm9yY2VkRmlsdGVycyk7XG4gICAgICB0aGlzLmxvZy50cmFjZSgnU2VhcmNoLU1vZGVsIGZpbHRlcnMgdXBkYXRlZDonLCBBcnJheS5mcm9tKGNvbnRleHQuZmlsdGVyc1NuYXBzaG90KSk7XG4gICAgfVxuICB9XG5cbn1cblxuIl19
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItc2VhcmNoLWNvbnRleHQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9mb3Jtcy9zZWFyY2gvZWxkZXItc2VhcmNoLWNvbnRleHQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsZUFBZSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXdCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQVEsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRzdELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQUUzRTs7O0dBR0c7QUFLSCxNQUFNLE9BQU8sMkJBQTJCO0lBSnhDO1FBT0U7Ozs7b0ZBSTRFO1FBRXBFLG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQVcsRUFBRSxDQUFDLENBQUM7UUFFMUMsUUFBRyxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVyRCxrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFcEMsa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBZ0Is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Q0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNaLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7O2dGQUk0RTtJQUVwRSxnQkFBZ0IsQ0FBQyxNQUEwQjtRQUNqRCxPQUFPLE1BQU07YUFDVixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFTyxZQUFZLENBQ2xCLFdBQXFCLEVBQ3JCLGFBQXVCO1FBRXZCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDbkMsSUFBSSxPQUFPLEVBQUU7WUFDWCxPQUFPLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ25DLE9BQU8sQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsK0JBQStCLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztTQUN0RjtJQUNILENBQUM7OEdBNUtVLDJCQUEyQjtrR0FBM0IsMkJBQTJCLDZMQUNyQix5QkFBeUI7OzJGQUQvQiwyQkFBMkI7a0JBSnZDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsUUFBUSxFQUFFLG9CQUFvQjtpQkFDL0I7OEJBRW9FLFlBQVk7c0JBQTlFLGVBQWU7dUJBQUMseUJBQXlCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQWlFdEQsYUFBYTtzQkFEdkIsS0FBSzt1QkFBQyxvQkFBb0I7Z0JBZ0JoQixhQUFhO3NCQUR2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29udGVudENoaWxkcmVuLCBEaXJlY3RpdmUsIElucHV0LCBPbkRlc3Ryb3ksIFF1ZXJ5TGlzdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBMb2dnZXJGYWN0b3J5IH0gZnJvbSBcIkBlbGRlcmJ5dGUvdHMtbG9nZ2VyXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anMvaW50ZXJuYWwvT2JzZXJ2YWJsZVwiO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdFdpdGgsIGRlYm91bmNlVGltZSwgbWFwLCBza2lwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgeyBTZWFyY2hJbnB1dCB9IGZyb20gXCIuL21vZGVsL3NlYXJjaC1pbnB1dFwiO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSBcInJ4anMvaW50ZXJuYWwvQmVoYXZpb3JTdWJqZWN0XCI7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSBcInJ4anMvaW50ZXJuYWwvU3ViamVjdFwiO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgZnJvbSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBGaWx0ZXIgfSBmcm9tIFwiLi4vLi4vLi4vY29tbW9uL2RhdGEvZmlsdGVycy9maWx0ZXJcIjtcbmltcG9ydCB7IEZpbHRlckNvbnRleHQgfSBmcm9tIFwiLi4vLi4vLi4vY29tbW9uL2RhdGEvZmlsdGVycy9maWx0ZXItY29udGV4dFwiO1xuaW1wb3J0IHsgU2VhcmNoSW5wdXRTdGF0ZSB9IGZyb20gXCIuL21vZGVsL3NlYXJjaC1pbnB1dC1zdGF0ZVwiO1xuaW1wb3J0IHsgRWxkZXJTZWFyY2hJbnB1dERpcmVjdGl2ZSB9IGZyb20gXCIuL2VsZGVyLXNlYXJjaC1pbnB1dC5kaXJlY3RpdmVcIjtcblxuLyoqXG4gKiBUaGUgc2VhcmNoIGNvbnRhaW5lciBtYW5hZ2VzIGEgZ3JvdXAgb2Ygc2VhcmNoLWlucHV0c1xuICogYW5kIGhvbGRzIHRoZWlyIHZhbHVlcyBpbiBhIGNlbnRyYWwgc2VhcmNoIG1vZGVsLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6IFwiW2VsZGVyU2VhcmNoQ29udGV4dF1cIixcbiAgZXhwb3J0QXM6IFwiZWxkZXJTZWFyY2hDb250ZXh0XCJcbn0pXG5leHBvcnQgY2xhc3MgRWxkZXJTZWFyY2hDb250ZXh0RGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgQENvbnRlbnRDaGlsZHJlbihFbGRlclNlYXJjaElucHV0RGlyZWN0aXZlLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIHNlYXJjaElucHV0cyE6IFF1ZXJ5TGlzdDxFbGRlclNlYXJjaElucHV0RGlyZWN0aXZlPjtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIGZvcmNlZEZpbHRlcnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGaWx0ZXJbXT4oW10pO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF91bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3NlYXJjaElucHV0cyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2VhcmNoSW5wdXRbXT4oW10pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZWFyY2hTdGF0ZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNlYXJjaElucHV0U3RhdGVbXT4oW10pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9maWx0ZXJzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RmlsdGVyW10+KFtdKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5pdGlhbEZpbHRlcnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGaWx0ZXJbXT4oW10pO1xuXG4gIHByaXZhdGUgX2ZpbHRlckNvbnRleHQ6IEZpbHRlckNvbnRleHQ7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIExpZmUgQ3ljbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9zZWFyY2hJbnB1dHMubmV4dCh0aGlzLnNlYXJjaElucHV0cy50b0FycmF5KCkpO1xuXG4gICAgdGhpcy5zZWFyY2hJbnB1dHMuY2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aCh0aGlzLnNlYXJjaElucHV0cyksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZSQpLFxuICAgICAgICBtYXAoaW5wdXQgPT4gaW5wdXQgYXMgUXVlcnlMaXN0PEVsZGVyU2VhcmNoSW5wdXREaXJlY3RpdmU+KSxcbiAgICAgICAgc3dpdGNoTWFwKGlucHV0cyA9PiBjb21iaW5lTGF0ZXN0KGlucHV0cy5tYXAoaSA9PiBpLnN0YXRlJCkpKSxcbiAgICAgICAgY29tYmluZUxhdGVzdFdpdGgodGhpcy5mb3JjZWRGaWx0ZXJzJCksXG4gICAgICAgIGRlYm91bmNlVGltZSg1KVxuICAgICAgKS5zdWJzY3JpYmUoKFtzdGF0ZXMsIGZvcmNlZEZpbHRlcnNdKSA9PiB7XG4gICAgICB0aGlzLl9zZWFyY2hTdGF0ZXMubmV4dChzdGF0ZXMpO1xuICAgICAgY29uc3QgdXNlckZpbHRlcnMgPSB0aGlzLmNvbnZlcnRUb0ZpbHRlcnMoc3RhdGVzKTtcbiAgICAgIHRoaXMuX2ZpbHRlcnMkLm5leHQodXNlckZpbHRlcnMpO1xuICAgICAgdGhpcy5hcHBseUZpbHRlcnModXNlckZpbHRlcnMsIGZvcmNlZEZpbHRlcnMpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5pbml0aWFsRmlsdGVycyQucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZSQpLFxuICAgICAgc2tpcCgxKVxuICAgICkuc3Vic2NyaWJlKChpbml0aWFsRmlsdGVycykgPT4ge1xuICAgICAgdGhpcy5zZWFyY2hJbnB1dHMuZm9yRWFjaChpbnB1dCA9PiBpbnB1dC5zZXRJbml0aWFsRmlsdGVyKGluaXRpYWxGaWx0ZXJzKSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fdW5zdWJzY3JpYmUkLm5leHQoKTtcbiAgICB0aGlzLl91bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIEBJbnB1dChcImVsZGVyU2VhcmNoQ29udGV4dFwiKVxuICBwdWJsaWMgc2V0IGZpbHRlckNvbnRleHQodmFsdWU6IEZpbHRlckNvbnRleHQpIHtcbiAgICB0aGlzLl9maWx0ZXJDb250ZXh0ID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZpbHRlckNvbnRleHQoKTogRmlsdGVyQ29udGV4dCB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlckNvbnRleHQ7XG4gIH1cblxuICAvKipcbiAgICogRm9yY2VkIGZpbHRlcnMgYXJlIGFsd2F5cyBtZXJnZWQgaW50byB0aGUgZmluYWwgRmlsdGVyQ29udGV4dC5cbiAgICpcbiAgICogVGhpcyBtZWFucyB0aGV5IG92ZXJyaWRlIHVzZXIgZGVmaW5lZCBmaWx0ZXJzLCBidXQgYXR0ZW1wdFxuICAgKiB0byBhbHNvIGtlZXAgdGhlIHVzZXJzIGludGVudCAoYnkgbWVyZ2luZykgdGhlbS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZm9yY2VkRmlsdGVycyhmaWx0ZXJzOiBGaWx0ZXJbXSkge1xuICAgIHRoaXMuZm9yY2VkRmlsdGVycyQubmV4dChmaWx0ZXJzKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZm9yY2VkRmlsdGVycygpOiBGaWx0ZXJbXSB7XG4gICAgcmV0dXJuIHRoaXMuZm9yY2VkRmlsdGVycyQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXR0cmlidXRlcygpOiBPYnNlcnZhYmxlPFNlYXJjaElucHV0W10+IHtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hJbnB1dHMuY2hhbmdlcy5waXBlKFxuICAgICAgbWFwKGlucHV0cyA9PiBpbnB1dHMgYXMgUXVlcnlMaXN0PEVsZGVyU2VhcmNoSW5wdXREaXJlY3RpdmU+KSxcbiAgICAgIG1hcChpbnB1dHMgPT4gaW5wdXRzLnRvQXJyYXkoKSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldCBhdHRyaWJ1dGVzU25hcHNob3QoKTogU2VhcmNoSW5wdXRbXSB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoSW5wdXRzLnRvQXJyYXkoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RhdGVzJCgpOiBPYnNlcnZhYmxlPFNlYXJjaElucHV0U3RhdGVbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWFyY2hTdGF0ZXMuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YXRlc1NuYXBzaG90KCk6IFNlYXJjaElucHV0U3RhdGVbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlYXJjaFN0YXRlcy5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGN1cnJlbnQgdXNlciB0b3VjaGVkIGF0dHJpYnV0ZXMuIChpZ25vcmluZyBmYWxsYmFja3MpXG4gICAqL1xuICBwdWJsaWMgZ2V0IHVzZXJEZWZpbmVkQXR0cmlidXRlcyQoKTogT2JzZXJ2YWJsZTxTZWFyY2hJbnB1dFN0YXRlW10+IHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZXMkLnBpcGUoXG4gICAgICBtYXAoc3RhdGVzID0+IHN0YXRlcy5maWx0ZXIocyA9PiAhcy5wcmlzdGluZSkpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IGFjdGl2ZSBmaWx0ZXJzXG4gICAqL1xuICBwdWJsaWMgZ2V0IGZpbHRlcnMkKCk6IE9ic2VydmFibGU8RmlsdGVyW10+IHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVycyQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGluaXRpYWxGaWx0ZXJzJCgpOiBPYnNlcnZhYmxlPEZpbHRlcltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2luaXRpYWxGaWx0ZXJzJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZmlsdGVyc1NuYXBzaG90KCk6IEZpbHRlcltdIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVycyQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyByZWdpc3RlckluaXRpYWxGaWx0ZXJzKGZpbHRlcnM6IEZpbHRlcltdKSB7XG4gICAgdGhpcy5faW5pdGlhbEZpbHRlcnMkLm5leHQoZmlsdGVycyk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5hdHRyaWJ1dGVzU25hcHNob3RcbiAgICAgIC5maWx0ZXIoYXR0ciA9PiAhYXR0ci5yZWFkb25seSlcbiAgICAgIC5mb3JFYWNoKGEgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZyhhLm5hbWUpO1xuICAgICAgICBhLnJlc2V0KCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgY29udmVydFRvRmlsdGVycyhzdGF0ZXM6IFNlYXJjaElucHV0U3RhdGVbXSk6IEZpbHRlcltdIHtcbiAgICByZXR1cm4gc3RhdGVzXG4gICAgICAubWFwKHMgPT4gbmV3IEZpbHRlcihzLnF1ZXJ5S2V5LCBzLnF1ZXJ5VmFsdWUpKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlGaWx0ZXJzKFxuICAgIHVzZXJGaWx0ZXJzOiBGaWx0ZXJbXSxcbiAgICBmb3JjZWRGaWx0ZXJzOiBGaWx0ZXJbXVxuICApOiB2b2lkIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5maWx0ZXJDb250ZXh0O1xuICAgIGlmIChjb250ZXh0KSB7XG4gICAgICBjb250ZXh0LnVwZGF0ZUZpbHRlcnModXNlckZpbHRlcnMpO1xuICAgICAgY29udGV4dC5tZXJnZUZpbHRlcnMoZm9yY2VkRmlsdGVycyk7XG4gICAgICB0aGlzLmxvZy50cmFjZShcIlNlYXJjaC1Nb2RlbCBmaWx0ZXJzIHVwZGF0ZWQ6XCIsIEFycmF5LmZyb20oY29udGV4dC5maWx0ZXJzU25hcHNob3QpKTtcbiAgICB9XG4gIH1cbn1cblxuIl19