@elderbyte/ngx-starter 17.11.0 → 18.0.0-beta1

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 (452) hide show
  1. package/esm2022/lib/common/arrays.mjs +1 -1
  2. package/esm2022/lib/common/async/refreshing-entity.mjs +1 -1
  3. package/esm2022/lib/common/csv/csv-serializer.mjs +1 -1
  4. package/esm2022/lib/common/csv/csv-spec.mjs +1 -1
  5. package/esm2022/lib/common/data/data-context/data-context-active-page.mjs +1 -1
  6. package/esm2022/lib/common/data/data-context/data-context-auto-starter.mjs +1 -1
  7. package/esm2022/lib/common/data/data-context/data-context-base.mjs +1 -1
  8. package/esm2022/lib/common/data/data-context/data-context-builder.mjs +1 -1
  9. package/esm2022/lib/common/data/data-context/data-context-continuable-base.mjs +1 -1
  10. package/esm2022/lib/common/data/data-context/data-context-continuable-paged.mjs +1 -1
  11. package/esm2022/lib/common/data/data-context/data-context-continuable-token.mjs +1 -1
  12. package/esm2022/lib/common/data/data-context/data-context-life-cycle-binding.mjs +1 -1
  13. package/esm2022/lib/common/data/data-context/data-context-simple.mjs +1 -1
  14. package/esm2022/lib/common/data/data-context/data-context-source-event-binding.mjs +1 -1
  15. package/esm2022/lib/common/data/data-context/data-context.mjs +1 -1
  16. package/esm2022/lib/common/data/data-context/indexed-entities.mjs +1 -1
  17. package/esm2022/lib/common/data/data-context/mat-table-data-context-binding.mjs +1 -1
  18. package/esm2022/lib/common/data/datasource/data-source-adapter.mjs +1 -1
  19. package/esm2022/lib/common/data/datasource/data-source-processor.mjs +1 -1
  20. package/esm2022/lib/common/data/datasource/data-source.mjs +1 -1
  21. package/esm2022/lib/common/data/datasource/entity-id-util.mjs +1 -1
  22. package/esm2022/lib/common/data/datasource/fetcher/delegate-data-source.mjs +1 -1
  23. package/esm2022/lib/common/data/datasource/local/local-list-data-source.mjs +1 -1
  24. package/esm2022/lib/common/data/datasource/local/local-paged-data-source.mjs +1 -1
  25. package/esm2022/lib/common/data/datasource/rest/rest-client.mjs +1 -1
  26. package/esm2022/lib/common/data/entity-set-patch.mjs +1 -1
  27. package/esm2022/lib/common/data/field-comparator.mjs +1 -1
  28. package/esm2022/lib/common/data/filters/filter-commons.mjs +12 -0
  29. package/esm2022/lib/common/data/filters/filter-context.mjs +1 -1
  30. package/esm2022/lib/common/data/filters/filter-value.mjs +2 -0
  31. package/esm2022/lib/common/data/filters/filter.mjs +1 -1
  32. package/esm2022/lib/common/data/http-params-builder.mjs +1 -1
  33. package/esm2022/lib/common/data/page.mjs +1 -1
  34. package/esm2022/lib/common/data/required-filter-evaluator.mjs +1 -1
  35. package/esm2022/lib/common/data/sort-context.mjs +1 -1
  36. package/esm2022/lib/common/enums/elder-enum-translation.service.mjs +4 -4
  37. package/esm2022/lib/common/format/bytes-format.mjs +1 -1
  38. package/esm2022/lib/common/format/bytes-per-second-format.mjs +1 -1
  39. package/esm2022/lib/common/format/curency-format-util.mjs +1 -1
  40. package/esm2022/lib/common/format/duration-format-util.mjs +1 -1
  41. package/esm2022/lib/common/format/iso-interval-format-util.mjs +1 -1
  42. package/esm2022/lib/common/forms/elder-entity-value-accessor.mjs +1 -1
  43. package/esm2022/lib/common/forms/elder-form-field-control-base.directive.mjs +4 -4
  44. package/esm2022/lib/common/forms/elder-from-field-base.mjs +4 -4
  45. package/esm2022/lib/common/forms/elder-from-field-customizable-base.mjs +4 -4
  46. package/esm2022/lib/common/forms/elder-from-field-entity-base.mjs +4 -4
  47. package/esm2022/lib/common/forms/elder-from-field-multi-entity-base.mjs +4 -4
  48. package/esm2022/lib/common/forms/elder-multi-entity-value-accessor.mjs +1 -1
  49. package/esm2022/lib/common/forms/form-field-base.component.mjs +4 -4
  50. package/esm2022/lib/common/forms/multi-model-base.component.mjs +4 -4
  51. package/esm2022/lib/common/forms/template-composite-control.mjs +4 -4
  52. package/esm2022/lib/common/forms/value-accessor-base.mjs +4 -4
  53. package/esm2022/lib/common/http/http-client-builder.service.mjs +4 -4
  54. package/esm2022/lib/common/http/http-client-pristine.mjs +4 -4
  55. package/esm2022/lib/common/http/transfer/data-transfer-base.mjs +1 -1
  56. package/esm2022/lib/common/http/transfer/data-transfer-factory.mjs +4 -4
  57. package/esm2022/lib/common/http/transfer/data-transfer-progress-aggregate.mjs +1 -1
  58. package/esm2022/lib/common/http/transfer/http-data-transfer.mjs +1 -1
  59. package/esm2022/lib/common/i18n/entity/localisation-picker.mjs +1 -1
  60. package/esm2022/lib/common/i18n/entity/translated-converter.mjs +1 -1
  61. package/esm2022/lib/common/objects.mjs +1 -1
  62. package/esm2022/lib/common/selection/selection-model.mjs +1 -1
  63. package/esm2022/lib/common/sets.mjs +1 -1
  64. package/esm2022/lib/common/templates/template-slot-manager.mjs +1 -1
  65. package/esm2022/lib/common/time/date-util.mjs +1 -1
  66. package/esm2022/lib/common/time/interval-coerce.mjs +1 -1
  67. package/esm2022/lib/common/time/interval.mjs +1 -1
  68. package/esm2022/lib/common/time/period-duration.mjs +1 -1
  69. package/esm2022/lib/common/time/time-util.mjs +1 -1
  70. package/esm2022/lib/common/url/elder-router.service.mjs +4 -4
  71. package/esm2022/lib/common/url/elder-url-fragment-params.service.mjs +5 -5
  72. package/esm2022/lib/common/url/url-query-params.mjs +1 -1
  73. package/esm2022/lib/common/utils/batcher.mjs +1 -1
  74. package/esm2022/lib/common/utils/collection-util.mjs +1 -1
  75. package/esm2022/lib/common/utils/filter-util.mjs +1 -1
  76. package/esm2022/lib/common/utils/focus-util.mjs +1 -1
  77. package/esm2022/lib/common/utils/next-number-util.mjs +1 -1
  78. package/esm2022/lib/common/utils/parse-util.mjs +1 -1
  79. package/esm2022/lib/common/utils/property-path-util.mjs +1 -1
  80. package/esm2022/lib/common/utils/sort-util.mjs +1 -1
  81. package/esm2022/lib/common/utils/url-builder.mjs +1 -1
  82. package/esm2022/lib/components/access-denied/elder-access-denied.component.mjs +4 -4
  83. package/esm2022/lib/components/access-denied/elder-access-denied.module.mjs +5 -5
  84. package/esm2022/lib/components/auditing/audited-entity/elder-audited-entity.component.mjs +4 -4
  85. package/esm2022/lib/components/auditing/elder-audit.module.mjs +5 -5
  86. package/esm2022/lib/components/badge/elder-badge/elder-badge.component.mjs +10 -10
  87. package/esm2022/lib/components/badge/elder-badge.directive.mjs +4 -4
  88. package/esm2022/lib/components/badge/elder-badge.module.mjs +5 -5
  89. package/esm2022/lib/components/button-group/elder-button-group/elder-button-group.component.mjs +4 -4
  90. package/esm2022/lib/components/button-group/elder-button-group.module.mjs +5 -5
  91. package/esm2022/lib/components/card-organizer/card-organizer/elder-card-organizer.component.mjs +4 -4
  92. package/esm2022/lib/components/card-organizer/card-organizer/elder-stack-card.directive.mjs +4 -4
  93. package/esm2022/lib/components/card-organizer/card-organizer-data.mjs +1 -1
  94. package/esm2022/lib/components/card-organizer/card-stack/elder-card-stack.component.mjs +5 -5
  95. package/esm2022/lib/components/card-organizer/card-stack.mjs +1 -1
  96. package/esm2022/lib/components/card-organizer/elder-card-organizer.module.mjs +5 -5
  97. package/esm2022/lib/components/cards/elder-card/elder-card-header/elder-card-header.component.mjs +4 -4
  98. package/esm2022/lib/components/cards/elder-card/elder-card.component.mjs +19 -19
  99. package/esm2022/lib/components/cards/elder-card/elder-card.module.mjs +5 -5
  100. package/esm2022/lib/components/chips/elder-chip-label.directive.mjs +4 -4
  101. package/esm2022/lib/components/chips/elder-chips.module.mjs +5 -5
  102. package/esm2022/lib/components/connectivity/elder-connectivity.module.mjs +5 -5
  103. package/esm2022/lib/components/connectivity/elder-connectivity.service.mjs +4 -4
  104. package/esm2022/lib/components/connectivity/offline-indicator/elder-offline-indicator.component.mjs +4 -4
  105. package/esm2022/lib/components/containers/elder-containers.module.mjs +5 -5
  106. package/esm2022/lib/components/containers/elder-scroll-container/elder-scroll-container.component.mjs +4 -4
  107. package/esm2022/lib/components/csv/elder-csv-export-btn/elder-csv-export-btn.component.mjs +4 -4
  108. package/esm2022/lib/components/csv/elder-csv-stream-exporter-builder.service.mjs +4 -4
  109. package/esm2022/lib/components/csv/elder-csv-stream-exporter.mjs +3 -3
  110. package/esm2022/lib/components/csv/elder-csv.module.mjs +5 -5
  111. package/esm2022/lib/components/currency/elder-currency.module.mjs +5 -5
  112. package/esm2022/lib/components/currency/elder-currency.pipe.mjs +4 -4
  113. package/esm2022/lib/components/data-transfer/elder-data-transfer.module.mjs +5 -5
  114. package/esm2022/lib/components/data-transfer/elder-data-transfer.service.mjs +4 -4
  115. package/esm2022/lib/components/data-transfer/http-data-transfer/http-data-transfer.component.mjs +4 -4
  116. package/esm2022/lib/components/data-transfer/http-data-transfer-aggregate/http-data-transfer-aggregate.component.mjs +4 -4
  117. package/esm2022/lib/components/data-transfer/http-data-transfer-indicator/http-data-transfer-indicator.component.mjs +4 -4
  118. package/esm2022/lib/components/data-transfer/http-data-transfer-overview/http-data-transfer-overview.component.mjs +4 -4
  119. package/esm2022/lib/components/data-view/base/data-view-options-provider-binding.mjs +1 -1
  120. package/esm2022/lib/components/data-view/base/elder-data-view-base.mjs +4 -4
  121. package/esm2022/lib/components/data-view/common/data-context-state-indicator/data-context-state-indicator.component.mjs +4 -4
  122. package/esm2022/lib/components/data-view/common/elder-data-common.module.mjs +5 -5
  123. package/esm2022/lib/components/data-view/common/elder-data-toolbar/elder-data-toolbar.component.mjs +7 -7
  124. package/esm2022/lib/components/data-view/common/elder-single-sort/elder-single-sort.component.mjs +4 -4
  125. package/esm2022/lib/components/data-view/common/selection/data-context-selection.directive.mjs +4 -4
  126. package/esm2022/lib/components/data-view/common/selection/elder-selection-master-checkbox/elder-selection-master-checkbox.component.mjs +4 -4
  127. package/esm2022/lib/components/data-view/grid/elder-grid/elder-grid.component.mjs +12 -12
  128. package/esm2022/lib/components/data-view/grid/elder-grid.module.mjs +5 -5
  129. package/esm2022/lib/components/data-view/master-detail/elder-detail-dialog/elder-detail-dialog.component.mjs +4 -4
  130. package/esm2022/lib/components/data-view/master-detail/elder-detail.directive.mjs +4 -4
  131. package/esm2022/lib/components/data-view/master-detail/elder-master-activation.directive.mjs +4 -4
  132. package/esm2022/lib/components/data-view/master-detail/elder-master-detail.component.mjs +4 -4
  133. package/esm2022/lib/components/data-view/master-detail/elder-master-detail.module.mjs +5 -5
  134. package/esm2022/lib/components/data-view/master-detail/elder-master-detail.service.mjs +4 -4
  135. package/esm2022/lib/components/data-view/master-detail/elder-master.directive.mjs +4 -4
  136. package/esm2022/lib/components/data-view/master-detail/master-detail-activation-event.mjs +1 -1
  137. package/esm2022/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.component.mjs +4 -4
  138. package/esm2022/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.module.mjs +5 -5
  139. package/esm2022/lib/components/data-view/table/activation/elder-delete-active.directive.mjs +4 -4
  140. package/esm2022/lib/components/data-view/table/activation/elder-table-activation.directive.mjs +4 -4
  141. package/esm2022/lib/components/data-view/table/elder-number-cell.directive.mjs +4 -4
  142. package/esm2022/lib/components/data-view/table/elder-paginator-intl.mjs +4 -4
  143. package/esm2022/lib/components/data-view/table/elder-table/elder-table-toolbar.directive.mjs +4 -4
  144. package/esm2022/lib/components/data-view/table/elder-table/elder-table.component.mjs +6 -6
  145. package/esm2022/lib/components/data-view/table/elder-table-column.directive.mjs +4 -4
  146. package/esm2022/lib/components/data-view/table/elder-table-extension.directive.mjs +4 -4
  147. package/esm2022/lib/components/data-view/table/elder-table-root.directive.mjs +4 -4
  148. package/esm2022/lib/components/data-view/table/elder-table-row.directive.mjs +5 -5
  149. package/esm2022/lib/components/data-view/table/elder-table-sort.directive.mjs +4 -4
  150. package/esm2022/lib/components/data-view/table/elder-table.module.mjs +5 -5
  151. package/esm2022/lib/components/data-view/table/model/elder-column-layout.mjs +1 -1
  152. package/esm2022/lib/components/data-view/table/model/elder-table-model-cdk-table-binding.mjs +1 -1
  153. package/esm2022/lib/components/data-view/table/model/elder-table-model-query-group.mjs +1 -1
  154. package/esm2022/lib/components/data-view/table/model/elder-table-model.mjs +4 -4
  155. package/esm2022/lib/components/dialogs/confirm-dialog/elder-confirm-dialog.component.mjs +4 -4
  156. package/esm2022/lib/components/dialogs/elder-dialog.module.mjs +5 -5
  157. package/esm2022/lib/components/dialogs/elder-dialog.service.mjs +4 -4
  158. package/esm2022/lib/components/dialogs/question-dialog/elder-question-dialog.component.mjs +4 -4
  159. package/esm2022/lib/components/dialogs/selection-dialog/elder-selection-dialog/elder-selection-dialog.component.mjs +4 -4
  160. package/esm2022/lib/components/dialogs/selection-dialog/elder-selection-dialog.directive.mjs +4 -4
  161. package/esm2022/lib/components/errors/elder-error.module.mjs +5 -5
  162. package/esm2022/lib/components/errors/error-util.mjs +1 -1
  163. package/esm2022/lib/components/errors/exception-detail/elder-exception-detail.component.mjs +4 -4
  164. package/esm2022/lib/components/expand-toggle-button/elder-expand-toggle-button.component.mjs +4 -4
  165. package/esm2022/lib/components/expand-toggle-button/elder-expand-toggle-button.module.mjs +5 -5
  166. package/esm2022/lib/components/files/blob-viewer/elder-blob-viewer.component.mjs +5 -5
  167. package/esm2022/lib/components/files/drag-n-drop/elder-drop-zone/elder-drop-zone.component.mjs +4 -4
  168. package/esm2022/lib/components/files/drag-n-drop/global-drag-drop.service.mjs +4 -4
  169. package/esm2022/lib/components/files/elder-file-drop-zone.directive.mjs +4 -4
  170. package/esm2022/lib/components/files/elder-file-select.directive.mjs +4 -4
  171. package/esm2022/lib/components/files/elder-file.module.mjs +5 -5
  172. package/esm2022/lib/components/files/file-select/file-select.component.mjs +4 -4
  173. package/esm2022/lib/components/files/file-upload/file-upload.component.mjs +4 -4
  174. package/esm2022/lib/components/files/listing/file-entry.mjs +1 -1
  175. package/esm2022/lib/components/files/listing/file-listing-rx.mjs +1 -1
  176. package/esm2022/lib/components/forms/clipboard/elder-clipboard.service.mjs +4 -4
  177. package/esm2022/lib/components/forms/directives/base/elder-class-hostbinding-base.mjs +4 -4
  178. package/esm2022/lib/components/forms/directives/elder-clipboard-put.directive.mjs +4 -4
  179. package/esm2022/lib/components/forms/directives/elder-delayed-focus.directive.mjs +4 -4
  180. package/esm2022/lib/components/forms/directives/elder-form-field-dense.directive.mjs +4 -4
  181. package/esm2022/lib/components/forms/directives/elder-form-field-label.directive.mjs +4 -4
  182. package/esm2022/lib/components/forms/directives/elder-form-field-no-hint.directive.mjs +4 -4
  183. package/esm2022/lib/components/forms/directives/elder-form-field-no-spinner.directive.mjs +4 -4
  184. package/esm2022/lib/components/forms/directives/elder-forms-directives.module.mjs +5 -5
  185. package/esm2022/lib/components/forms/directives/elder-initial-value.directive.mjs +7 -17
  186. package/esm2022/lib/components/forms/directives/elder-input-pattern.directive.mjs +4 -4
  187. package/esm2022/lib/components/forms/directives/elder-key-event.directive.mjs +4 -4
  188. package/esm2022/lib/components/forms/directives/elder-next-focusable.directive.mjs +4 -4
  189. package/esm2022/lib/components/forms/directives/elder-plug-parent-form.directive.mjs +4 -4
  190. package/esm2022/lib/components/forms/directives/elder-stop-event-propagation.directive.mjs +4 -4
  191. package/esm2022/lib/components/forms/directives/elder-tab-focus-trap.directive.mjs +4 -4
  192. package/esm2022/lib/components/forms/directives/elder-touched.directive.mjs +4 -4
  193. package/esm2022/lib/components/forms/directives/elder-triple-state-checkbox.directive.mjs +4 -4
  194. package/esm2022/lib/components/forms/directives/validation/elder-validation-error.directive.mjs +4 -4
  195. package/esm2022/lib/components/forms/directives/validation/strategies/common-validation-message-strategy.mjs +4 -4
  196. package/esm2022/lib/components/forms/directives/validation/strategies/dynamic-validation-message-strategy.mjs +4 -4
  197. package/esm2022/lib/components/forms/directives/validation/validation-message-renderer.service.mjs +4 -4
  198. package/esm2022/lib/components/forms/directives/validation/validators/elder-max.validator.mjs +4 -4
  199. package/esm2022/lib/components/forms/directives/validation/validators/elder-min.validator.mjs +4 -4
  200. package/esm2022/lib/components/forms/directives/validation/validators/elder-multiple-of.validator.mjs +4 -4
  201. package/esm2022/lib/components/forms/directives/validation/validators/elder-required-ignore-zero.validator.mjs +4 -4
  202. package/esm2022/lib/components/forms/elder-forms.module.mjs +5 -5
  203. package/esm2022/lib/components/forms/search/domain/context/search-context.mjs +1 -1
  204. package/esm2022/lib/components/forms/search/domain/context/search-context.service.mjs +4 -4
  205. package/esm2022/lib/components/forms/search/domain/input/input-value.mjs +2 -0
  206. package/esm2022/lib/components/forms/search/domain/input/search-input-state.mjs +14 -15
  207. package/esm2022/lib/components/forms/search/domain/input/search-input.mjs +1 -1
  208. package/esm2022/lib/components/forms/search/domain/url/elder-search-url.directive.mjs +4 -4
  209. package/esm2022/lib/components/forms/search/domain/url/elder-search-url.service.mjs +4 -4
  210. package/esm2022/lib/components/forms/search/domain/url/search-query-params-parser.mjs +1 -1
  211. package/esm2022/lib/components/forms/search/elder-search-context.directive.mjs +46 -35
  212. package/esm2022/lib/components/forms/search/elder-search-input.directive.mjs +73 -48
  213. package/esm2022/lib/components/forms/search/elder-search.module.mjs +5 -5
  214. package/esm2022/lib/components/forms/search/filter/default-input-filter-converter.mjs +47 -0
  215. package/esm2022/lib/components/forms/search/filter/input-filter-converter.mjs +2 -0
  216. package/esm2022/lib/components/forms/search/search-box/elder-search-box.component.mjs +6 -6
  217. package/esm2022/lib/components/forms/search/search-box/elder-search-panel.component.mjs +4 -4
  218. package/esm2022/lib/components/global-search/elder-global-search.component.mjs +4 -4
  219. package/esm2022/lib/components/global-search/elder-global-search.module.mjs +5 -5
  220. package/esm2022/lib/components/global-search/elder-global-search.service.mjs +4 -4
  221. package/esm2022/lib/components/graph/elder-progress-bar/elder-progress-bar.component.mjs +4 -4
  222. package/esm2022/lib/components/graph/elder-progress-bar/elder-progress-bar.module.mjs +5 -5
  223. package/esm2022/lib/components/headers/elder-header/elder-header.component.mjs +4 -4
  224. package/esm2022/lib/components/headers/elder-header.module.mjs +5 -5
  225. package/esm2022/lib/components/http-support/elder-http-client.service.mjs +4 -4
  226. package/esm2022/lib/components/i18n/entities/elder-i18n-entities.module.mjs +5 -5
  227. package/esm2022/lib/components/i18n/entities/elder-localized-input/elder-localized-input.component.mjs +4 -4
  228. package/esm2022/lib/components/i18n/entities/elder-localized-input-dialog/elder-localized-input-dialog.component.mjs +4 -4
  229. package/esm2022/lib/components/i18n/entities/elder-localized-input-dialog.service.mjs +4 -4
  230. package/esm2022/lib/components/i18n/entities/elder-localized-input-table/elder-localized-input-table.component.mjs +4 -4
  231. package/esm2022/lib/components/i18n/entities/elder-localized-text-column.directive.mjs +4 -4
  232. package/esm2022/lib/components/i18n/entities/elder-localized-texts.directive.mjs +4 -4
  233. package/esm2022/lib/components/i18n/entities/picker/i18n-pick-async.pipe.mjs +4 -4
  234. package/esm2022/lib/components/i18n/entities/picker/i18n-pick.pipe.mjs +4 -4
  235. package/esm2022/lib/components/i18n/entities/picker/localisation-picker.service.mjs +4 -4
  236. package/esm2022/lib/components/i18n/language/elder-language-interceptor.mjs +4 -4
  237. package/esm2022/lib/components/i18n/language/elder-language.module.mjs +5 -5
  238. package/esm2022/lib/components/i18n/language/elder-language.service.mjs +4 -4
  239. package/esm2022/lib/components/i18n/language/language-switcher/elder-language-switcher.component.mjs +4 -4
  240. package/esm2022/lib/components/i18n/locales/elder-locales-de-ch.module.mjs +7 -7
  241. package/esm2022/lib/components/iframes/data-view/data-view-iframe/data-view-iframe.component.mjs +4 -4
  242. package/esm2022/lib/components/iframes/data-view/data-view-iframe-adapter.directive.mjs +4 -4
  243. package/esm2022/lib/components/iframes/elder-iframe.module.mjs +5 -5
  244. package/esm2022/lib/components/iframes/iframe-close.directive.mjs +4 -4
  245. package/esm2022/lib/components/iframes/iframe-dialog/iframe-dialog.component.mjs +4 -4
  246. package/esm2022/lib/components/iframes/iframe-host/iframe-host.component.mjs +4 -4
  247. package/esm2022/lib/components/iframes/iframe-side-content/iframe-side-content.component.mjs +4 -4
  248. package/esm2022/lib/components/iframes/iframe.service.mjs +4 -4
  249. package/esm2022/lib/components/infinitescroll/elder-infinite-autocomplete.directive.mjs +4 -4
  250. package/esm2022/lib/components/infinitescroll/elder-infinite-scroll.directive.mjs +4 -4
  251. package/esm2022/lib/components/infinitescroll/elder-infinite-scroll.module.mjs +5 -5
  252. package/esm2022/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete-option-selected.mjs +1 -1
  253. package/esm2022/lib/components/input/autocomplete/elder-autocomplete/elder-suggestion-panel.component.mjs +231 -0
  254. package/esm2022/lib/components/input/autocomplete/elder-autocomplete-many.directive.mjs +4 -4
  255. package/esm2022/lib/components/input/autocomplete/elder-autocomplete.directive.mjs +7 -4
  256. package/esm2022/lib/components/input/autocomplete/elder-autocomplete.module.mjs +12 -12
  257. package/esm2022/lib/components/input/autocomplete/many/word-position-finder.mjs +1 -1
  258. package/esm2022/lib/components/labels/elder-labels.module.mjs +5 -5
  259. package/esm2022/lib/components/labels/labels-input/labels-input.component.mjs +4 -4
  260. package/esm2022/lib/components/measures/dimensions/dimensions-input/elder-dimensions-input.component.mjs +4 -4
  261. package/esm2022/lib/components/measures/dimensions/validation/elder-required-dimensions.validator.mjs +4 -4
  262. package/esm2022/lib/components/measures/directives/elder-unit-select.directive.mjs +4 -4
  263. package/esm2022/lib/components/measures/elder-measures.module.mjs +9 -9
  264. package/esm2022/lib/components/measures/elder-quantity-transform.pipe.mjs +4 -4
  265. package/esm2022/lib/components/measures/elder-quantity.pipe.mjs +4 -4
  266. package/esm2022/lib/components/measures/elder-unit.service.mjs +6 -6
  267. package/esm2022/lib/components/measures/model/unit-registry.mjs +1 -1
  268. package/esm2022/lib/components/measures/quantity-input/quantity-form-field/elder-quantity-form-field.component.mjs +4 -4
  269. package/esm2022/lib/components/measures/quantity-input/quantity-input-control/elder-quantity-input-control.component.mjs +4 -4
  270. package/esm2022/lib/components/measures/quantity-input/validation/elder-quantity-range.validator.mjs +4 -4
  271. package/esm2022/lib/components/measures/quantity-input/validation/elder-required-quantity.validator.mjs +4 -4
  272. package/esm2022/lib/components/measures/util/elder-quantity.service.mjs +4 -4
  273. package/esm2022/lib/components/navigation/bread-crumbs/bread-crumbs/elder-bread-crumbs.component.mjs +4 -4
  274. package/esm2022/lib/components/navigation/bread-crumbs/elder-bread-crumbs.module.mjs +5 -5
  275. package/esm2022/lib/components/navigation/nav/elder-nav.module.mjs +5 -5
  276. package/esm2022/lib/components/navigation/nav/nav-group/elder-nav-group.component.mjs +4 -4
  277. package/esm2022/lib/components/navigation/nav/nav-link/elder-nav-link.component.mjs +4 -4
  278. package/esm2022/lib/components/navigation/nav/nav-list/elder-nav-list.component.mjs +4 -4
  279. package/esm2022/lib/components/navigation/toolbar/elder-toolbar-column.directive.mjs +8 -7
  280. package/esm2022/lib/components/navigation/toolbar/elder-toolbar.module.mjs +5 -5
  281. package/esm2022/lib/components/navigation/toolbar/elder-toolbar.service.mjs +4 -4
  282. package/esm2022/lib/components/navigation/toolbar/toolbar/elder-toolbar.component.mjs +4 -4
  283. package/esm2022/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.component.mjs +4 -4
  284. package/esm2022/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.service.mjs +4 -4
  285. package/esm2022/lib/components/overlays/elder-overlay-origin.directive.mjs +4 -4
  286. package/esm2022/lib/components/overlays/elder-overlay-ref.mjs +4 -4
  287. package/esm2022/lib/components/overlays/elder-overlay-trigger.directive.mjs +4 -4
  288. package/esm2022/lib/components/overlays/elder-overlay.component.mjs +4 -4
  289. package/esm2022/lib/components/overlays/elder-overlay.module.mjs +5 -5
  290. package/esm2022/lib/components/panels/card-panel/elder-card-panel.component.mjs +4 -4
  291. package/esm2022/lib/components/panels/elder-dialog-panel/elder-dialog-panel.component.mjs +4 -4
  292. package/esm2022/lib/components/panels/elder-panel.module.mjs +5 -5
  293. package/esm2022/lib/components/panels/flat/elder-panel.component.mjs +4 -4
  294. package/esm2022/lib/components/panels/toggle-panel/elder-toggle-panel-trigger.directive.mjs +4 -4
  295. package/esm2022/lib/components/panels/toggle-panel/elder-toggle-panel.component.mjs +10 -10
  296. package/esm2022/lib/components/scrollbar/elder-scrollbar.directive.mjs +4 -4
  297. package/esm2022/lib/components/scrollbar/elder-scrollbar.module.mjs +5 -5
  298. package/esm2022/lib/components/select/auto/elder-auto-select-first.directive.mjs +27 -7
  299. package/esm2022/lib/components/select/auto/elder-auto-select-first.service.mjs +38 -0
  300. package/esm2022/lib/components/select/auto/elder-auto-select-suggest-first.directive.mjs +66 -0
  301. package/esm2022/lib/components/select/auto/elder-select-first-util.mjs +4 -14
  302. package/esm2022/lib/components/select/elder-select-base.mjs +9 -9
  303. package/esm2022/lib/components/select/elder-select-chip.directive.mjs +10 -10
  304. package/esm2022/lib/components/select/elder-select-on-tab.directive.mjs +4 -4
  305. package/esm2022/lib/components/select/elder-select-value.directive.mjs +4 -4
  306. package/esm2022/lib/components/select/elder-select.module.mjs +36 -10
  307. package/esm2022/lib/components/select/filter/elder-chip-filter-style-resolver.mjs +74 -0
  308. package/esm2022/lib/components/select/filter/elder-chips-include-exclude.directive.mjs +144 -0
  309. package/esm2022/lib/components/select/filter/elder-filter-chip-template/elder-filter-chip-template.component.mjs +51 -0
  310. package/esm2022/lib/components/select/filter/include-exclude-model-filter-adapter.mjs +63 -0
  311. package/esm2022/lib/components/select/filter/include-exclude-selection-model.mjs +164 -0
  312. package/esm2022/lib/components/select/multi/elder-chip-select-option/elder-select-option.component.mjs +4 -4
  313. package/esm2022/lib/components/select/multi/elder-multi-select-base.mjs +4 -4
  314. package/esm2022/lib/components/select/multi/elder-multi-select-chip-options/chip-options-provider.mjs +1 -1
  315. package/esm2022/lib/components/select/multi/elder-multi-select-chip-options/elder-multi-select-chip-options.component.mjs +10 -9
  316. package/esm2022/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.mjs +16 -7
  317. package/esm2022/lib/components/select/multi/elder-multi-select-form-field.mjs +4 -4
  318. package/esm2022/lib/components/select/multi/elder-mutli-select-all-directive.mjs +4 -4
  319. package/esm2022/lib/components/select/multi/elder-search-include-exclude.directive.mjs +148 -0
  320. package/esm2022/lib/components/select/popup/selection-model-popup-trigger-adapter.directive.mjs +4 -4
  321. package/esm2022/lib/components/select/popup/selection-model-popup.directive.mjs +4 -4
  322. package/esm2022/lib/components/select/popup/templated-selection-dialog/templated-selection-dialog.component.mjs +4 -4
  323. package/esm2022/lib/components/select/single/elder-clear-select.directive.mjs +4 -4
  324. package/esm2022/lib/components/select/single/elder-select/elder-select.component.mjs +9 -14
  325. package/esm2022/lib/components/select/single/elder-select-form-field.mjs +4 -4
  326. package/esm2022/lib/components/select-chip-list/chip-list-select/elder-chip-list-select.component.mjs +4 -4
  327. package/esm2022/lib/components/select-chip-list/elder-chip-list-select.module.mjs +5 -5
  328. package/esm2022/lib/components/shell/drawers/drawer-outlet-binding.mjs +1 -1
  329. package/esm2022/lib/components/shell/drawers/elder-route-outlet-drawer.service.mjs +4 -4
  330. package/esm2022/lib/components/shell/drawers/elder-router-outlet.service.mjs +4 -4
  331. package/esm2022/lib/components/shell/elder-shell-slot.directive.mjs +4 -4
  332. package/esm2022/lib/components/shell/elder-shell.module.mjs +5 -5
  333. package/esm2022/lib/components/shell/elder-shell.service.mjs +4 -4
  334. package/esm2022/lib/components/shell/header/elder-app-header/elder-app-header.component.mjs +4 -4
  335. package/esm2022/lib/components/shell/shell/elder-shell.component.mjs +13 -13
  336. package/esm2022/lib/components/shell/shell-navigation-toggle/elder-shell-navigation-toggle.component.mjs +4 -4
  337. package/esm2022/lib/components/tabs/elder-tab/elder-tab.directive.mjs +4 -4
  338. package/esm2022/lib/components/tabs/elder-tab-group-routing/elder-tab-group-routing.directive.mjs +4 -4
  339. package/esm2022/lib/components/tabs/elder-tab.module.mjs +5 -5
  340. package/esm2022/lib/components/theme/elder-theme-applier.directive.mjs +4 -4
  341. package/esm2022/lib/components/theme/elder-theme-preference.service.mjs +4 -4
  342. package/esm2022/lib/components/theme/elder-theme-toggle/elder-theme-toggle.component.mjs +4 -4
  343. package/esm2022/lib/components/theme/elder-theme.directive.mjs +4 -4
  344. package/esm2022/lib/components/theme/elder-theme.module.mjs +5 -5
  345. package/esm2022/lib/components/theme/elder-theme.service.mjs +4 -4
  346. package/esm2022/lib/components/time/date-adapters/custom-date-adapter.mjs +4 -4
  347. package/esm2022/lib/components/time/date-formats/locale-date-formats.mjs +1 -1
  348. package/esm2022/lib/components/time/duration/duration-format.mjs +1 -1
  349. package/esm2022/lib/components/time/duration/elder-duration-input/elder-duration-input.component.mjs +4 -4
  350. package/esm2022/lib/components/time/elder-date-switcher/elder-date-switcher.component.mjs +4 -4
  351. package/esm2022/lib/components/time/elder-date-time-input/elder-date-time-input.component.mjs +4 -4
  352. package/esm2022/lib/components/time/elder-interval-input/elder-interval-input.component.mjs +4 -4
  353. package/esm2022/lib/components/time/elder-local-date-input/elder-local-date-input.component.mjs +4 -4
  354. package/esm2022/lib/components/time/elder-local-time-input/elder-local-time-input.component.mjs +4 -4
  355. package/esm2022/lib/components/time/elder-time.module.mjs +5 -5
  356. package/esm2022/lib/components/time/period/elder-period-input/elder-period-input.component.mjs +4 -4
  357. package/esm2022/lib/components/time/period/period-format.mjs +1 -1
  358. package/esm2022/lib/components/time/pipes/to-iso-date-string.pipe.mjs +4 -4
  359. package/esm2022/lib/components/toasts/elder-toast.module.mjs +5 -5
  360. package/esm2022/lib/components/toasts/elder-toast.service.mjs +4 -4
  361. package/esm2022/lib/components/toasts/standard-toast/standard-toast.component.mjs +5 -5
  362. package/esm2022/lib/components/url-fragment/elder-url-fragment.module.mjs +5 -5
  363. package/esm2022/lib/components/url-fragment/url-fragment-switcher/elder-url-fragment-switcher.component.mjs +4 -4
  364. package/esm2022/lib/components/viewers/elder-svg-viewer/elder-svg-viewer.component.mjs +4 -4
  365. package/esm2022/lib/components/viewers/elder-viewers.module.mjs +5 -5
  366. package/esm2022/lib/features/event-source/fetch/reactive-fetch-event-source.mjs +1 -1
  367. package/esm2022/lib/features/event-source/fetch/reactive-fetch-event-source.service.mjs +4 -4
  368. package/esm2022/lib/features/event-source/standard/elder-event-source.service.mjs +4 -4
  369. package/esm2022/lib/features/event-source/standard/reactive-event-source.mjs +1 -1
  370. package/esm2022/lib/features/kafent/access-token-provider.mjs +4 -4
  371. package/esm2022/lib/features/kafent/kafent-config.mjs +4 -4
  372. package/esm2022/lib/features/kafent/kafent-event-stream.mjs +4 -4
  373. package/esm2022/lib/features/kafent/kafent-event.service.mjs +4 -4
  374. package/esm2022/lib/features/kafent/kafent.module.mjs +5 -5
  375. package/esm2022/lib/features/kafent/sse/kafent-event-stream-sse.service.mjs +4 -4
  376. package/esm2022/lib/features/kafent/sse/kafent-topic-sse.mjs +1 -1
  377. package/esm2022/lib/pipes/bytes.pipe.mjs +4 -4
  378. package/esm2022/lib/pipes/elder-pipes.module.mjs +11 -11
  379. package/esm2022/lib/pipes/elder-repeat.pipe.mjs +4 -4
  380. package/esm2022/lib/pipes/elder-round.pipe.mjs +4 -4
  381. package/esm2022/lib/pipes/elder-safe-url.pipe.mjs +4 -4
  382. package/esm2022/lib/pipes/elder-truncate.pipe.mjs +4 -4
  383. package/esm2022/lib/pipes/iso-duration.pipe.mjs +4 -4
  384. package/esm2022/lib/pipes/iso-interval-parse.pipe.mjs +4 -4
  385. package/esm2022/lib/pipes/iso-interval.pipe.mjs +4 -4
  386. package/esm2022/lib/pipes/time-ago.pipe.mjs +4 -4
  387. package/esm2022/lib/pipes/time-duration.pipe.mjs +4 -4
  388. package/esm2022/lib/pipes/weight.pipe.mjs +4 -4
  389. package/fesm2022/elderbyte-ngx-starter.mjs +5141 -4279
  390. package/fesm2022/elderbyte-ngx-starter.mjs.map +1 -1
  391. package/lib/common/data/filters/filter-commons.d.ts +6 -0
  392. package/lib/common/data/filters/filter-value.d.ts +1 -0
  393. package/lib/components/forms/directives/elder-initial-value.directive.d.ts +1 -9
  394. package/lib/components/forms/search/domain/input/input-value.d.ts +1 -0
  395. package/lib/components/forms/search/domain/input/search-input-state.d.ts +11 -17
  396. package/lib/components/forms/search/domain/input/search-input.d.ts +4 -3
  397. package/lib/components/forms/search/elder-search-context.directive.d.ts +9 -4
  398. package/lib/components/forms/search/elder-search-input.directive.d.ts +28 -19
  399. package/lib/components/forms/search/filter/default-input-filter-converter.d.ts +31 -0
  400. package/lib/components/forms/search/filter/input-filter-converter.d.ts +16 -0
  401. package/lib/components/forms/search/search-box/elder-search-box.component.d.ts +2 -1
  402. package/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete-option-selected.d.ts +3 -3
  403. package/lib/components/input/autocomplete/elder-autocomplete/{elder-autocomplete.component.d.ts → elder-suggestion-panel.component.d.ts} +17 -6
  404. package/lib/components/input/autocomplete/elder-autocomplete-many.directive.d.ts +3 -3
  405. package/lib/components/input/autocomplete/elder-autocomplete.directive.d.ts +3 -3
  406. package/lib/components/input/autocomplete/elder-autocomplete.module.d.ts +3 -3
  407. package/lib/components/navigation/toolbar/elder-toolbar-column.directive.d.ts +2 -3
  408. package/lib/components/select/auto/elder-auto-select-first.directive.d.ts +9 -1
  409. package/lib/components/select/auto/elder-auto-select-first.service.d.ts +23 -0
  410. package/lib/components/select/auto/elder-auto-select-suggest-first.directive.d.ts +32 -0
  411. package/lib/components/select/auto/elder-select-first-util.d.ts +2 -2
  412. package/lib/components/select/elder-select-base.d.ts +1 -1
  413. package/lib/components/select/elder-select.module.d.ts +10 -1
  414. package/lib/components/select/filter/elder-chip-filter-style-resolver.d.ts +19 -0
  415. package/lib/components/select/filter/elder-chips-include-exclude.directive.d.ts +50 -0
  416. package/lib/components/select/filter/elder-filter-chip-template/elder-filter-chip-template.component.d.ts +27 -0
  417. package/lib/components/select/filter/include-exclude-model-filter-adapter.d.ts +29 -0
  418. package/lib/components/select/filter/include-exclude-selection-model.d.ts +64 -0
  419. package/lib/components/select/multi/elder-multi-select-chip-options/elder-multi-select-chip-options.component.d.ts +1 -2
  420. package/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.d.ts +2 -0
  421. package/lib/components/select/multi/elder-search-include-exclude.directive.d.ts +78 -0
  422. package/lib/components/select/single/elder-select/elder-select.component.d.ts +0 -1
  423. package/package.json +1 -1
  424. package/src/lib/components/button-group/elder-button-group/elder-button-group.component.scss +1 -1
  425. package/src/lib/components/card-organizer/card-stack/elder-card-stack.component.scss +3 -3
  426. package/src/lib/components/cards/elder-card/elder-card.component.scss +2 -2
  427. package/src/lib/components/chips/_elder-chip-theme.scss +6 -6
  428. package/src/lib/components/data-view/grid/elder-grid/elder-grid.component.scss +8 -8
  429. package/src/lib/components/data-view/table/elder-table/elder-table.component.scss +6 -6
  430. package/src/lib/components/errors/exception-detail/elder-exception-detail.component.scss +1 -1
  431. package/src/lib/components/expand-toggle-button/elder-expand-toggle-button.component.scss +1 -1
  432. package/src/lib/components/files/drag-n-drop/elder-drop-zone/elder-drop-zone.component.scss +6 -6
  433. package/src/lib/components/navigation/nav/_elder-nav-theme.scss +11 -11
  434. package/src/lib/components/panels/card-panel/elder-card-panel.component.scss +2 -2
  435. package/src/lib/components/panels/elder-dialog-panel/elder-dialog-panel.component.scss +2 -2
  436. package/src/lib/components/panels/flat/_elder-panel-theme.scss +5 -5
  437. package/src/lib/components/select/_elder-select-base.scss +2 -2
  438. package/src/lib/components/select/filter/elder-filter-chip-template/elder-filter-chip-template.component.scss +95 -0
  439. package/src/lib/components/select/multi/elder-multi-select-chip-options/elder-multi-select-chip-options.component.scss +5 -5
  440. package/src/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.scss +5 -5
  441. package/src/lib/components/select/multi/elder-select-include-exclude-chip/elder-select-include-exclude-chip.component.scss +0 -0
  442. package/src/lib/components/select/single/elder-select/elder-select.component.scss +5 -5
  443. package/src/lib/components/select-chip-list/chip-list-select/elder-chip-list-select.component.scss +2 -2
  444. package/src/lib/components/time/_elder-time-input.theme.scss +2 -2
  445. package/theming/_elder-mdc-support.scss +13 -13
  446. package/theming/_elder-palettes.scss +1 -1
  447. package/theming/_elder-scrollbar-theme.scss +2 -2
  448. package/theming/_elder-theme.scss +1 -1
  449. package/theming/_elder-toast-theme.scss +3 -3
  450. package/theming/_elder-typography-utils.scss +2 -2
  451. package/esm2022/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete.component.mjs +0 -186
  452. /package/src/lib/components/input/autocomplete/elder-autocomplete/{elder-autocomplete.component.scss → elder-suggestion-panel.component.scss} +0 -0
@@ -1,186 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, ContentChild, Input, Output, TemplateRef, ViewChild } from '@angular/core';
2
- import { LoggerFactory } from '@elderbyte/ts-logger';
3
- import { BehaviorSubject, of, Subject } from 'rxjs';
4
- import { isContinuableDataContext } from '../../../../common/data/data-context/data-context';
5
- import { coerceBooleanProperty } from '@angular/cdk/coercion';
6
- import { filter, switchMap } from 'rxjs/operators';
7
- import { runInZone } from '../../../../common/utils/ng-zone-utils';
8
- import { MatAutocomplete } from '@angular/material/autocomplete';
9
- import { ElderSelectValueDirective } from '../../../select/elder-select-value.directive';
10
- import { ElderAutocompleteOptionSelected } from './elder-autocomplete-option-selected';
11
- import { MatProgressBar } from '@angular/material/progress-bar';
12
- import { MatIcon } from '@angular/material/icon';
13
- import { MatOption } from '@angular/material/core';
14
- import { NgIf, NgFor, NgTemplateOutlet, AsyncPipe } from '@angular/common';
15
- import { ElderInfiniteScrollDirective } from '../../../infinitescroll/elder-infinite-scroll.directive';
16
- import { ElderInfiniteAutocompleteDirective } from '../../../infinitescroll/elder-infinite-autocomplete.directive';
17
- import * as i0 from "@angular/core";
18
- export class ElderAutocompleteComponent {
19
- set matAutocomplete(auto) {
20
- this.matAutocomplete$.next(auto);
21
- }
22
- /***************************************************************************
23
- * *
24
- * Constructor *
25
- * *
26
- **************************************************************************/
27
- constructor(zone) {
28
- this.zone = zone;
29
- /***************************************************************************
30
- * *
31
- * Fields *
32
- * *
33
- **************************************************************************/
34
- this.logger = LoggerFactory.getLogger(this.constructor.name);
35
- /**
36
- * Is this auto-complete enabled?
37
- */
38
- this._enabled = true;
39
- /**
40
- * The underlying Material Autocomplete
41
- */
42
- this.matAutocomplete$ = new BehaviorSubject(null);
43
- /**
44
- * The DataContext which holds the autocomplete suggestions.
45
- */
46
- this.dataContext$ = new BehaviorSubject(null);
47
- this.triggerReload$ = new Subject();
48
- this.displayPropertyResolver$ = new BehaviorSubject((value) => this.propertyStringValue(value, null));
49
- this.optionSelected = new Subject();
50
- this.dataState$ = this.dataContext$.pipe(filter(dc => !!dc), switchMap(dc => dc.status), runInZone(this.zone));
51
- this.availableSuggestions$ = this.dataContext$.pipe(switchMap(dc => dc ? dc.data : of([])), runInZone(this.zone));
52
- }
53
- /***************************************************************************
54
- * *
55
- * Properties *
56
- * *
57
- **************************************************************************/
58
- set enabled(value) {
59
- this._enabled = coerceBooleanProperty(value);
60
- }
61
- get enabled() {
62
- return this._enabled;
63
- }
64
- set valueTemplate(template) {
65
- this._valueTemplate = template;
66
- }
67
- get valueTemplate() {
68
- return this._valueTemplate || this.valueTemplateQuery;
69
- }
70
- set dataContext(data) {
71
- this.dataContext$.next(data);
72
- }
73
- get dataContext() {
74
- return this.dataContext$.getValue();
75
- }
76
- set displayPropertyResolver(resolver) {
77
- this.displayPropertyResolver$.next(resolver);
78
- }
79
- /***************************************************************************
80
- * *
81
- * Public API *
82
- * *
83
- **************************************************************************/
84
- onOptionSelected(event) {
85
- const option = event.option;
86
- const id = option.id;
87
- this.optionSelected.next(new ElderAutocompleteOptionSelected(this, id, this.getEntityById(id), option.value));
88
- }
89
- getEntityById(id) {
90
- const dc = this.dataContext;
91
- if (dc) {
92
- return dc.snapshot.data.find(e => this.getId(e) == id);
93
- }
94
- return undefined;
95
- }
96
- onAutocompleteOpened(event) {
97
- this.logger.debug('Autocomplete opened:', event);
98
- if (this.enabled) {
99
- this.triggerReload$.next(null);
100
- }
101
- }
102
- onAutoCompleteCloseToEnd(event) {
103
- // this.logger.debug('Autocomplete is close to end!');
104
- if (isContinuableDataContext(this.dataContext)) {
105
- if (!this.dataContext.snapshot.isLoading) {
106
- this.dataContext.loadMore();
107
- }
108
- }
109
- }
110
- getIdAsString(value) {
111
- return String(this.getId(value));
112
- }
113
- getId(value) {
114
- return this.dataContext?.dataSource?.getId(value) || value;
115
- }
116
- isOptionAvailable(option) {
117
- if (this.isOptionDisabledFn) {
118
- return !this.isOptionDisabledFn(option);
119
- }
120
- else {
121
- return true;
122
- }
123
- }
124
- isOptionVisible(option) {
125
- if (this.isOptionHiddenFn) {
126
- return !this.isOptionHiddenFn(option);
127
- }
128
- else {
129
- return true;
130
- }
131
- }
132
- toOptionValue(option) {
133
- if (this.optionValueConverterFn) {
134
- return this.optionValueConverterFn(option);
135
- }
136
- else {
137
- return option;
138
- }
139
- }
140
- /***************************************************************************
141
- * *
142
- * Private methods *
143
- * *
144
- **************************************************************************/
145
- /**
146
- * TODO Duplicate in elder-select
147
- */
148
- propertyStringValue(value, property) {
149
- if (value === null || value === undefined) {
150
- return null;
151
- }
152
- if (property) {
153
- return value[property];
154
- }
155
- return String(value);
156
- }
157
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ElderAutocompleteComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
158
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ElderAutocompleteComponent, isStandalone: true, selector: "elder-autocomplete", inputs: { isOptionDisabledFn: "isOptionDisabledFn", isOptionHiddenFn: "isOptionHiddenFn", optionValueConverterFn: "optionValueConverterFn", enabled: "enabled", valueTemplate: "valueTemplate", dataContext: "dataContext", displayPropertyResolver: "displayPropertyResolver" }, outputs: { optionSelected: "optionSelected" }, queries: [{ propertyName: "valueTemplateQuery", first: true, predicate: ElderSelectValueDirective, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "matAutocomplete", first: true, predicate: ["auto"], descendants: true }], exportAs: ["elderAutocomplete"], ngImport: i0, template: "<mat-autocomplete\n #auto=\"matAutocomplete\"\n panelWidth=\"auto\"\n [autoActiveFirstOption]=\"true\"\n (opened)=\"onAutocompleteOpened($event)\"\n (optionSelected)=\"onOptionSelected($event)\"\n elderInfiniteScroll elderElderInfiniteAutocomplete (closeToEnd)=\"onAutoCompleteCloseToEnd($event)\"\n>\n <!--\n <mat-option *ngIf=\"allowNull\" [value]=\"null\">{{nullDisplay | translate}}</mat-option>\n -->\n\n <mat-option disabled *ngIf=\"!(dataContext$ | async)\">\n <span class=\"mat-caption\">No DataSource / DataContext!</span>\n </mat-option>\n\n <ng-container *ngIf=\"dataContext$ | async as dc\">\n\n <mat-option disabled *ngIf=\"dc.isClosed\">\n <div class=\"layout-row place-start-center gap-sm\">\n <mat-icon color=\"warn\">warning</mat-icon>\n <span class=\"mat-caption\">DataContext Closed!</span>\n </div>\n </mat-option>\n\n <ng-container *ngIf=\"availableSuggestions$ | async as suggestions\">\n\n <mat-option *ngIf=\"suggestions.length === 0\" disabled>\n No Data.\n </mat-option>\n\n <ng-container *ngFor=\"let suggestion of suggestions\">\n <mat-option\n *ngIf=\"isOptionVisible(suggestion)\"\n [value]=\"toOptionValue(suggestion)\"\n [id]=\"getIdAsString(suggestion)\"\n [disabled]=\"!isOptionAvailable(suggestion)\"\n >\n <ng-container\n *ngTemplateOutlet=\"valueTemplate || simpleValueTemplate; context: {$implicit: suggestion}\">\n </ng-container>\n <!--\n <span class=\"mat-caption\">value: {{toOptionValue(suggestion)}}</span>\n -->\n </mat-option>\n </ng-container>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"dataState$ | async as state\">\n\n <mat-option disabled *ngIf=\"!state.idle || state.loading\">\n <mat-progress-bar\n [value]=\"100\"\n [mode]=\"state.loading ? 'query' : 'determinate'\"\n [color]=\"state.error ? 'warn' : 'primary'\"\n ></mat-progress-bar>\n </mat-option>\n\n </ng-container>\n</mat-autocomplete>\n\n<ng-template #simpleValueTemplate let-value>\n <ng-container *ngIf=\"displayPropertyResolver$ | async as propertyResolver\">\n <span class=\"noselect\">{{propertyResolver(value)}}</span>\n </ng-container>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "component", type: MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: ElderInfiniteAutocompleteDirective, selector: "mat-autocomplete[elderElderInfiniteAutocomplete]" }, { kind: "directive", type: ElderInfiniteScrollDirective, selector: "[elderInfiniteScroll]", inputs: ["listenToHost", "eventThrottle", "offsetFactor", "ignoreScrollEvent", "containerId", "scrollContainer"], outputs: ["closeToEnd", "scrolling"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
159
- }
160
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ElderAutocompleteComponent, decorators: [{
161
- type: Component,
162
- args: [{ selector: 'elder-autocomplete', exportAs: 'elderAutocomplete', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [MatAutocomplete, ElderInfiniteAutocompleteDirective, ElderInfiniteScrollDirective, NgIf, MatOption, MatIcon, NgFor, NgTemplateOutlet, MatProgressBar, AsyncPipe], template: "<mat-autocomplete\n #auto=\"matAutocomplete\"\n panelWidth=\"auto\"\n [autoActiveFirstOption]=\"true\"\n (opened)=\"onAutocompleteOpened($event)\"\n (optionSelected)=\"onOptionSelected($event)\"\n elderInfiniteScroll elderElderInfiniteAutocomplete (closeToEnd)=\"onAutoCompleteCloseToEnd($event)\"\n>\n <!--\n <mat-option *ngIf=\"allowNull\" [value]=\"null\">{{nullDisplay | translate}}</mat-option>\n -->\n\n <mat-option disabled *ngIf=\"!(dataContext$ | async)\">\n <span class=\"mat-caption\">No DataSource / DataContext!</span>\n </mat-option>\n\n <ng-container *ngIf=\"dataContext$ | async as dc\">\n\n <mat-option disabled *ngIf=\"dc.isClosed\">\n <div class=\"layout-row place-start-center gap-sm\">\n <mat-icon color=\"warn\">warning</mat-icon>\n <span class=\"mat-caption\">DataContext Closed!</span>\n </div>\n </mat-option>\n\n <ng-container *ngIf=\"availableSuggestions$ | async as suggestions\">\n\n <mat-option *ngIf=\"suggestions.length === 0\" disabled>\n No Data.\n </mat-option>\n\n <ng-container *ngFor=\"let suggestion of suggestions\">\n <mat-option\n *ngIf=\"isOptionVisible(suggestion)\"\n [value]=\"toOptionValue(suggestion)\"\n [id]=\"getIdAsString(suggestion)\"\n [disabled]=\"!isOptionAvailable(suggestion)\"\n >\n <ng-container\n *ngTemplateOutlet=\"valueTemplate || simpleValueTemplate; context: {$implicit: suggestion}\">\n </ng-container>\n <!--\n <span class=\"mat-caption\">value: {{toOptionValue(suggestion)}}</span>\n -->\n </mat-option>\n </ng-container>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"dataState$ | async as state\">\n\n <mat-option disabled *ngIf=\"!state.idle || state.loading\">\n <mat-progress-bar\n [value]=\"100\"\n [mode]=\"state.loading ? 'query' : 'determinate'\"\n [color]=\"state.error ? 'warn' : 'primary'\"\n ></mat-progress-bar>\n </mat-option>\n\n </ng-container>\n</mat-autocomplete>\n\n<ng-template #simpleValueTemplate let-value>\n <ng-container *ngIf=\"displayPropertyResolver$ | async as propertyResolver\">\n <span class=\"noselect\">{{propertyResolver(value)}}</span>\n </ng-container>\n</ng-template>\n" }]
163
- }], ctorParameters: () => [{ type: i0.NgZone }], propDecorators: { valueTemplateQuery: [{
164
- type: ContentChild,
165
- args: [ElderSelectValueDirective, { read: TemplateRef, static: true }]
166
- }], matAutocomplete: [{
167
- type: ViewChild,
168
- args: ['auto']
169
- }], isOptionDisabledFn: [{
170
- type: Input
171
- }], isOptionHiddenFn: [{
172
- type: Input
173
- }], optionValueConverterFn: [{
174
- type: Input
175
- }], optionSelected: [{
176
- type: Output
177
- }], enabled: [{
178
- type: Input
179
- }], valueTemplate: [{
180
- type: Input
181
- }], dataContext: [{
182
- type: Input
183
- }], displayPropertyResolver: [{
184
- type: Input
185
- }] } });
186
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXQvYXV0b2NvbXBsZXRlL2VsZGVyLWF1dG9jb21wbGV0ZS9lbGRlci1hdXRvY29tcGxldGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9pbnB1dC9hdXRvY29tcGxldGUvZWxkZXItYXV0b2NvbXBsZXRlL2VsZGVyLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDOUgsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxlQUFlLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUM5RCxPQUFPLEVBQWUsd0JBQXdCLEVBQUMsTUFBTSxtREFBbUQsQ0FBQztBQUN6RyxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQUMsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUVqRSxPQUFPLEVBQUMsZUFBZSxFQUErQixNQUFNLGdDQUFnQyxDQUFDO0FBQzdGLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQ3ZGLE9BQU8sRUFBQywrQkFBK0IsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3JGLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDL0MsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pFLE9BQU8sRUFBQyw0QkFBNEIsRUFBQyxNQUFNLHlEQUF5RCxDQUFDO0FBQ3JHLE9BQU8sRUFBQyxrQ0FBa0MsRUFBQyxNQUFNLCtEQUErRCxDQUFDOztBQWFqSCxNQUFNLE9BQU8sMEJBQTBCO0lBMkJyQyxJQUNXLGVBQWUsQ0FBQyxJQUFxQjtRQUM5QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUEyQkQ7Ozs7Z0ZBSTRFO0lBRTVFLFlBQ21CLElBQVk7UUFBWixTQUFJLEdBQUosSUFBSSxDQUFRO1FBOUQvQjs7OztvRkFJNEU7UUFFM0QsV0FBTSxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV6RTs7V0FFRztRQUNLLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFTeEI7O1dBRUc7UUFDYSxxQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBa0IsSUFBSSxDQUFDLENBQUM7UUFnQjlFOztXQUVHO1FBQ2EsaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FBa0IsSUFBSSxDQUFDLENBQUM7UUFFMUQsbUJBQWMsR0FBRyxJQUFJLE9BQU8sRUFBTyxDQUFDO1FBRXBDLDZCQUF3QixHQUFHLElBQUksZUFBZSxDQUFpQixDQUFDLEtBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBT3BILG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQW1DLENBQUM7UUFXOUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDdEMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUNsQixTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQzFCLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQ3JCLENBQUM7UUFFRixJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQ2pELFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3RDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQ3JCLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRTVFLElBQ1csT0FBTyxDQUFDLEtBQWM7UUFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFDVyxhQUFhLENBQUMsUUFBMEI7UUFDakQsSUFBSSxDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUM7SUFDakMsQ0FBQztJQUVELElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDO0lBQ3hELENBQUM7SUFFRCxJQUNXLFdBQVcsQ0FBQyxJQUFxQjtRQUMxQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBVyxXQUFXO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsSUFDVyx1QkFBdUIsQ0FBQyxRQUF3QjtRQUN6RCxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7OztnRkFJNEU7SUFFckUsZ0JBQWdCLENBQUMsS0FBbUM7UUFDekQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUM1QixNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsRUFBb0IsQ0FBQztRQUN2QyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FDdEIsSUFBSSwrQkFBK0IsQ0FDakMsSUFBSSxFQUNKLEVBQUUsRUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxFQUN0QixNQUFNLENBQUMsS0FBSyxDQUNiLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTyxhQUFhLENBQUMsRUFBTztRQUMzQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQzVCLElBQUcsRUFBRSxFQUFDO1lBQ0osT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ3hEO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVNLG9CQUFvQixDQUFDLEtBQVU7UUFDcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDakQsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQztJQUVNLHdCQUF3QixDQUFDLEtBQWM7UUFDNUMsc0RBQXNEO1FBQ3RELElBQUksd0JBQXdCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUU7Z0JBQ3hDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDN0I7U0FDRjtJQUNILENBQUM7SUFFTSxhQUFhLENBQUMsS0FBUTtRQUMzQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVNLEtBQUssQ0FBQyxLQUFRO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUM3RCxDQUFDO0lBRU0saUJBQWlCLENBQUMsTUFBUztRQUNoQyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUMzQixPQUFPLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3pDO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQztTQUNiO0lBQ0gsQ0FBQztJQUVNLGVBQWUsQ0FBQyxNQUFTO1FBQzlCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDdkM7YUFBTTtZQUNMLE9BQU8sSUFBSSxDQUFDO1NBQ2I7SUFDSCxDQUFDO0lBRU0sYUFBYSxDQUFDLE1BQVM7UUFDNUIsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDL0IsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDNUM7YUFBTTtZQUNMLE9BQU8sTUFBTSxDQUFDO1NBQ2Y7SUFDSCxDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRTVFOztPQUVHO0lBQ0ssbUJBQW1CLENBQUMsS0FBUSxFQUFFLFFBQWdCO1FBQ3BELElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQ3pDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxJQUFJLFFBQVEsRUFBRTtZQUNaLE9BQWEsS0FBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQy9CO1FBRUQsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkIsQ0FBQzsrR0FsTlUsMEJBQTBCO21HQUExQiwwQkFBMEIsK2JBa0J2Qix5QkFBeUIsMkJBQVMsV0FBVyxxTEMvQzdELDR4RUFtRUEsMEREeENjLGVBQWUseVdBQUUsa0NBQWtDLDZGQUFFLDRCQUE0QiwwTkFBRSxJQUFJLDZGQUFFLFNBQVMscUpBQUUsT0FBTywySUFBRSxLQUFLLG1IQUFFLGdCQUFnQixvSkFBRSxjQUFjLG9LQUFFLFNBQVM7OzRGQUVoSywwQkFBMEI7a0JBVHRDLFNBQVM7K0JBQ0ksb0JBQW9CLFlBQ3BCLG1CQUFtQixtQkFHWix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUCxDQUFDLGVBQWUsRUFBRSxrQ0FBa0MsRUFBRSw0QkFBNEIsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLFNBQVMsQ0FBQzsyRUFxQnJLLGtCQUFrQjtzQkFEeEIsWUFBWTt1QkFBQyx5QkFBeUIsRUFBRSxFQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQztnQkFVL0QsZUFBZTtzQkFEekIsU0FBUzt1QkFBQyxNQUFNO2dCQU1WLGtCQUFrQjtzQkFEeEIsS0FBSztnQkFJQyxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBSUMsc0JBQXNCO3NCQUQ1QixLQUFLO2dCQWlCVSxjQUFjO3NCQUQ3QixNQUFNO2dCQStCSSxPQUFPO3NCQURqQixLQUFLO2dCQVVLLGFBQWE7c0JBRHZCLEtBQUs7Z0JBVUssV0FBVztzQkFEckIsS0FBSztnQkFVSyx1QkFBdUI7c0JBRGpDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgSW5wdXQsIE5nWm9uZSwgT3V0cHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TG9nZ2VyRmFjdG9yeX0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7SURhdGFDb250ZXh0LCBpc0NvbnRpbnVhYmxlRGF0YUNvbnRleHR9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi9kYXRhL2RhdGEtY29udGV4dC9kYXRhLWNvbnRleHQnO1xuaW1wb3J0IHtjb2VyY2VCb29sZWFuUHJvcGVydHl9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge2ZpbHRlciwgc3dpdGNoTWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge3J1bkluWm9uZX0gZnJvbSAnLi4vLi4vLi4vLi4vY29tbW9uL3V0aWxzL25nLXpvbmUtdXRpbHMnO1xuaW1wb3J0IHtEYXRhQ29udGV4dFN0YXR1c30gZnJvbSAnLi4vLi4vLi4vLi4vY29tbW9uL2RhdGEvZGF0YS1jb250ZXh0L2RhdGEtY29udGV4dC1zdGF0dXMnO1xuaW1wb3J0IHtNYXRBdXRvY29tcGxldGUsIE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnR9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQge0VsZGVyU2VsZWN0VmFsdWVEaXJlY3RpdmV9IGZyb20gJy4uLy4uLy4uL3NlbGVjdC9lbGRlci1zZWxlY3QtdmFsdWUuZGlyZWN0aXZlJztcbmltcG9ydCB7RWxkZXJBdXRvY29tcGxldGVPcHRpb25TZWxlY3RlZH0gZnJvbSAnLi9lbGRlci1hdXRvY29tcGxldGUtb3B0aW9uLXNlbGVjdGVkJztcbmltcG9ydCB7TWF0UHJvZ3Jlc3NCYXJ9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLWJhcic7XG5pbXBvcnQge01hdEljb259IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHtNYXRPcHRpb259IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHtOZ0lmLCBOZ0ZvciwgTmdUZW1wbGF0ZU91dGxldCwgQXN5bmNQaXBlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtFbGRlckluZmluaXRlU2Nyb2xsRGlyZWN0aXZlfSBmcm9tICcuLi8uLi8uLi9pbmZpbml0ZXNjcm9sbC9lbGRlci1pbmZpbml0ZS1zY3JvbGwuZGlyZWN0aXZlJztcbmltcG9ydCB7RWxkZXJJbmZpbml0ZUF1dG9jb21wbGV0ZURpcmVjdGl2ZX0gZnJvbSAnLi4vLi4vLi4vaW5maW5pdGVzY3JvbGwvZWxkZXItaW5maW5pdGUtYXV0b2NvbXBsZXRlLmRpcmVjdGl2ZSc7XG5cbnR5cGUgVGV4dFJlc29sdmVyRm4gPSAodmFsdWU6IGFueSkgPT4gc3RyaW5nO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2VsZGVyLWF1dG9jb21wbGV0ZScsXG4gICAgZXhwb3J0QXM6ICdlbGRlckF1dG9jb21wbGV0ZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2VsZGVyLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZWxkZXItYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTWF0QXV0b2NvbXBsZXRlLCBFbGRlckluZmluaXRlQXV0b2NvbXBsZXRlRGlyZWN0aXZlLCBFbGRlckluZmluaXRlU2Nyb2xsRGlyZWN0aXZlLCBOZ0lmLCBNYXRPcHRpb24sIE1hdEljb24sIE5nRm9yLCBOZ1RlbXBsYXRlT3V0bGV0LCBNYXRQcm9ncmVzc0JhciwgQXN5bmNQaXBlXVxufSlcbmV4cG9ydCBjbGFzcyBFbGRlckF1dG9jb21wbGV0ZUNvbXBvbmVudDxUID0gYW55LCBUSWQgPSBhbnk+IHtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXMuY29uc3RydWN0b3IubmFtZSk7XG5cbiAgLyoqXG4gICAqIElzIHRoaXMgYXV0by1jb21wbGV0ZSBlbmFibGVkP1xuICAgKi9cbiAgcHJpdmF0ZSBfZW5hYmxlZCA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSB0ZW1wbGF0ZSB0byBjdXN0b21pemUgdGhlIHVpIGxvb2suXG4gICAqL1xuICBAQ29udGVudENoaWxkKEVsZGVyU2VsZWN0VmFsdWVEaXJlY3RpdmUsIHtyZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlfSlcbiAgcHVibGljIHZhbHVlVGVtcGxhdGVRdWVyeTogVGVtcGxhdGVSZWY8YW55PjtcbiAgcHJpdmF0ZSBfdmFsdWVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvKipcbiAgICogVGhlIHVuZGVybHlpbmcgTWF0ZXJpYWwgQXV0b2NvbXBsZXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbWF0QXV0b2NvbXBsZXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF0QXV0b2NvbXBsZXRlPihudWxsKTtcblxuICBAVmlld0NoaWxkKCdhdXRvJylcbiAgcHVibGljIHNldCBtYXRBdXRvY29tcGxldGUoYXV0bzogTWF0QXV0b2NvbXBsZXRlKSB7XG4gICAgdGhpcy5tYXRBdXRvY29tcGxldGUkLm5leHQoYXV0byk7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgaXNPcHRpb25EaXNhYmxlZEZuOiAob3B0aW9uOiBUKSA9PiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpc09wdGlvbkhpZGRlbkZuOiAob3B0aW9uOiBUKSA9PiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBvcHRpb25WYWx1ZUNvbnZlcnRlckZuOiAob3B0aW9uOiBUKSA9PiBhbnk7XG5cbiAgLyoqXG4gICAqIFRoZSBEYXRhQ29udGV4dCB3aGljaCBob2xkcyB0aGUgYXV0b2NvbXBsZXRlIHN1Z2dlc3Rpb25zLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRhdGFDb250ZXh0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SURhdGFDb250ZXh0PFQ+PihudWxsKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgdHJpZ2dlclJlbG9hZCQgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRpc3BsYXlQcm9wZXJ0eVJlc29sdmVyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGV4dFJlc29sdmVyRm4+KCh2YWx1ZTogVCkgPT4gdGhpcy5wcm9wZXJ0eVN0cmluZ1ZhbHVlKHZhbHVlLCBudWxsKSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRhdGFTdGF0ZSQ6IE9ic2VydmFibGU8RGF0YUNvbnRleHRTdGF0dXM+O1xuXG4gIHB1YmxpYyByZWFkb25seSBhdmFpbGFibGVTdWdnZXN0aW9ucyQ6IE9ic2VydmFibGU8VFtdPjtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIHJlYWRvbmx5IG9wdGlvblNlbGVjdGVkID0gbmV3IFN1YmplY3Q8RWxkZXJBdXRvY29tcGxldGVPcHRpb25TZWxlY3RlZD4oKTtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHpvbmU6IE5nWm9uZSxcbiAgKSB7XG4gICAgdGhpcy5kYXRhU3RhdGUkID0gdGhpcy5kYXRhQ29udGV4dCQucGlwZShcbiAgICAgIGZpbHRlcihkYyA9PiAhIWRjKSxcbiAgICAgIHN3aXRjaE1hcChkYyA9PiBkYy5zdGF0dXMpLFxuICAgICAgcnVuSW5ab25lKHRoaXMuem9uZSlcbiAgICApO1xuXG4gICAgdGhpcy5hdmFpbGFibGVTdWdnZXN0aW9ucyQgPSB0aGlzLmRhdGFDb250ZXh0JC5waXBlKFxuICAgICAgc3dpdGNoTWFwKGRjID0+IGRjID8gZGMuZGF0YSA6IG9mKFtdKSksXG4gICAgICBydW5JblpvbmUodGhpcy56b25lKVxuICAgICk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGVuYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9lbmFibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZW5hYmxlZDtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdmFsdWVUZW1wbGF0ZSh0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgIHRoaXMuX3ZhbHVlVGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmFsdWVUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWVUZW1wbGF0ZSB8fCB0aGlzLnZhbHVlVGVtcGxhdGVRdWVyeTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGF0YUNvbnRleHQoZGF0YTogSURhdGFDb250ZXh0PFQ+KSB7XG4gICAgdGhpcy5kYXRhQ29udGV4dCQubmV4dChkYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGF0YUNvbnRleHQoKTogSURhdGFDb250ZXh0PFQ+IHtcbiAgICByZXR1cm4gdGhpcy5kYXRhQ29udGV4dCQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGlzcGxheVByb3BlcnR5UmVzb2x2ZXIocmVzb2x2ZXI6IFRleHRSZXNvbHZlckZuKSB7XG4gICAgdGhpcy5kaXNwbGF5UHJvcGVydHlSZXNvbHZlciQubmV4dChyZXNvbHZlcik7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgb25PcHRpb25TZWxlY3RlZChldmVudDogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IG9wdGlvbiA9IGV2ZW50Lm9wdGlvbjtcbiAgICBjb25zdCBpZCA9IG9wdGlvbi5pZCBhcyB1bmtub3duIGFzIFRJZDtcbiAgICB0aGlzLm9wdGlvblNlbGVjdGVkLm5leHQoXG4gICAgICBuZXcgRWxkZXJBdXRvY29tcGxldGVPcHRpb25TZWxlY3RlZChcbiAgICAgICAgdGhpcyxcbiAgICAgICAgaWQsXG4gICAgICAgIHRoaXMuZ2V0RW50aXR5QnlJZChpZCksXG4gICAgICAgIG9wdGlvbi52YWx1ZVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldEVudGl0eUJ5SWQoaWQ6IFRJZCk6IFQgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGRjID0gdGhpcy5kYXRhQ29udGV4dDtcbiAgICBpZihkYyl7XG4gICAgICByZXR1cm4gZGMuc25hcHNob3QuZGF0YS5maW5kKGUgPT4gdGhpcy5nZXRJZChlKSA9PSBpZCk7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgb25BdXRvY29tcGxldGVPcGVuZWQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdBdXRvY29tcGxldGUgb3BlbmVkOicsIGV2ZW50KTtcbiAgICBpZiAodGhpcy5lbmFibGVkKSB7XG4gICAgICB0aGlzLnRyaWdnZXJSZWxvYWQkLm5leHQobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uQXV0b0NvbXBsZXRlQ2xvc2VUb0VuZChldmVudDogVUlFdmVudCk6IHZvaWQge1xuICAgIC8vIHRoaXMubG9nZ2VyLmRlYnVnKCdBdXRvY29tcGxldGUgaXMgY2xvc2UgdG8gZW5kIScpO1xuICAgIGlmIChpc0NvbnRpbnVhYmxlRGF0YUNvbnRleHQodGhpcy5kYXRhQ29udGV4dCkpIHtcbiAgICAgIGlmICghdGhpcy5kYXRhQ29udGV4dC5zbmFwc2hvdC5pc0xvYWRpbmcpIHtcbiAgICAgICAgdGhpcy5kYXRhQ29udGV4dC5sb2FkTW9yZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRJZEFzU3RyaW5nKHZhbHVlOiBUKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU3RyaW5nKHRoaXMuZ2V0SWQodmFsdWUpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRJZCh2YWx1ZTogVCk6IFRJZCB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YUNvbnRleHQ/LmRhdGFTb3VyY2U/LmdldElkKHZhbHVlKSB8fCB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBpc09wdGlvbkF2YWlsYWJsZShvcHRpb246IFQpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5pc09wdGlvbkRpc2FibGVkRm4pIHtcbiAgICAgIHJldHVybiAhdGhpcy5pc09wdGlvbkRpc2FibGVkRm4ob3B0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGlzT3B0aW9uVmlzaWJsZShvcHRpb246IFQpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5pc09wdGlvbkhpZGRlbkZuKSB7XG4gICAgICByZXR1cm4gIXRoaXMuaXNPcHRpb25IaWRkZW5GbihvcHRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdG9PcHRpb25WYWx1ZShvcHRpb246IFQpOiBhbnkge1xuICAgIGlmICh0aGlzLm9wdGlvblZhbHVlQ29udmVydGVyRm4pIHtcbiAgICAgIHJldHVybiB0aGlzLm9wdGlvblZhbHVlQ29udmVydGVyRm4ob3B0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICB9XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBtZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogVE9ETyBEdXBsaWNhdGUgaW4gZWxkZXItc2VsZWN0XG4gICAqL1xuICBwcml2YXRlIHByb3BlcnR5U3RyaW5nVmFsdWUodmFsdWU6IFQsIHByb3BlcnR5OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHByb3BlcnR5KSB7XG4gICAgICByZXR1cm4gKDxhbnk+dmFsdWUpW3Byb3BlcnR5XTtcbiAgICB9XG5cbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgfVxufVxuIiwiPG1hdC1hdXRvY29tcGxldGVcbiAgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIlxuICBwYW5lbFdpZHRoPVwiYXV0b1wiXG4gIFthdXRvQWN0aXZlRmlyc3RPcHRpb25dPVwidHJ1ZVwiXG4gIChvcGVuZWQpPVwib25BdXRvY29tcGxldGVPcGVuZWQoJGV2ZW50KVwiXG4gIChvcHRpb25TZWxlY3RlZCk9XCJvbk9wdGlvblNlbGVjdGVkKCRldmVudClcIlxuICBlbGRlckluZmluaXRlU2Nyb2xsIGVsZGVyRWxkZXJJbmZpbml0ZUF1dG9jb21wbGV0ZSAoY2xvc2VUb0VuZCk9XCJvbkF1dG9Db21wbGV0ZUNsb3NlVG9FbmQoJGV2ZW50KVwiXG4+XG4gIDwhLS1cbiAgPG1hdC1vcHRpb24gKm5nSWY9XCJhbGxvd051bGxcIiBbdmFsdWVdPVwibnVsbFwiPnt7bnVsbERpc3BsYXkgfCB0cmFuc2xhdGV9fTwvbWF0LW9wdGlvbj5cbiAgLS0+XG5cbiAgPG1hdC1vcHRpb24gZGlzYWJsZWQgICpuZ0lmPVwiIShkYXRhQ29udGV4dCQgfCBhc3luYylcIj5cbiAgICA8c3BhbiBjbGFzcz1cIm1hdC1jYXB0aW9uXCI+Tm8gRGF0YVNvdXJjZSAvIERhdGFDb250ZXh0ITwvc3Bhbj5cbiAgPC9tYXQtb3B0aW9uPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhQ29udGV4dCQgfCBhc3luYyBhcyBkY1wiPlxuXG4gICAgPG1hdC1vcHRpb24gZGlzYWJsZWQgICpuZ0lmPVwiZGMuaXNDbG9zZWRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtcm93IHBsYWNlLXN0YXJ0LWNlbnRlciBnYXAtc21cIj5cbiAgICAgICAgPG1hdC1pY29uIGNvbG9yPVwid2FyblwiPndhcm5pbmc8L21hdC1pY29uPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdC1jYXB0aW9uXCI+RGF0YUNvbnRleHQgQ2xvc2VkITwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbWF0LW9wdGlvbj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdmFpbGFibGVTdWdnZXN0aW9ucyQgfCBhc3luYyBhcyBzdWdnZXN0aW9uc1wiPlxuXG4gICAgICA8bWF0LW9wdGlvbiAqbmdJZj1cInN1Z2dlc3Rpb25zLmxlbmd0aCA9PT0gMFwiIGRpc2FibGVkPlxuICAgICAgICBObyBEYXRhLlxuICAgICAgPC9tYXQtb3B0aW9uPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdWdnZXN0aW9uIG9mIHN1Z2dlc3Rpb25zXCI+XG4gICAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICAgKm5nSWY9XCJpc09wdGlvblZpc2libGUoc3VnZ2VzdGlvbilcIlxuICAgICAgICAgIFt2YWx1ZV09XCJ0b09wdGlvblZhbHVlKHN1Z2dlc3Rpb24pXCJcbiAgICAgICAgICBbaWRdPVwiZ2V0SWRBc1N0cmluZyhzdWdnZXN0aW9uKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc09wdGlvbkF2YWlsYWJsZShzdWdnZXN0aW9uKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInZhbHVlVGVtcGxhdGUgfHwgc2ltcGxlVmFsdWVUZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogc3VnZ2VzdGlvbn1cIj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8IS0tXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXQtY2FwdGlvblwiPnZhbHVlOiB7e3RvT3B0aW9uVmFsdWUoc3VnZ2VzdGlvbil9fTwvc3Bhbj5cbiAgICAgICAgICAtLT5cbiAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhU3RhdGUkIHwgYXN5bmMgYXMgc3RhdGVcIj5cblxuICAgIDxtYXQtb3B0aW9uIGRpc2FibGVkICpuZ0lmPVwiIXN0YXRlLmlkbGUgfHwgc3RhdGUubG9hZGluZ1wiPlxuICAgICAgPG1hdC1wcm9ncmVzcy1iYXJcbiAgICAgICAgW3ZhbHVlXT1cIjEwMFwiXG4gICAgICAgIFttb2RlXT1cInN0YXRlLmxvYWRpbmcgPyAncXVlcnknIDogJ2RldGVybWluYXRlJ1wiXG4gICAgICAgIFtjb2xvcl09XCJzdGF0ZS5lcnJvciA/ICd3YXJuJyA6ICdwcmltYXJ5J1wiXG4gICAgICA+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxuICAgIDwvbWF0LW9wdGlvbj5cblxuICA8L25nLWNvbnRhaW5lcj5cbjwvbWF0LWF1dG9jb21wbGV0ZT5cblxuPG5nLXRlbXBsYXRlICNzaW1wbGVWYWx1ZVRlbXBsYXRlIGxldC12YWx1ZT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlQcm9wZXJ0eVJlc29sdmVyJCB8IGFzeW5jIGFzIHByb3BlcnR5UmVzb2x2ZXJcIj5cbiAgICA8c3BhbiBjbGFzcz1cIm5vc2VsZWN0XCI+e3twcm9wZXJ0eVJlc29sdmVyKHZhbHVlKX19PC9zcGFuPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=