@elderbyte/ngx-starter 18.10.0 → 18.11.1

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 (621) hide show
  1. package/_index.scss +38 -33
  2. package/esm2022/lib/common/arrays.mjs +1 -1
  3. package/esm2022/lib/common/async/public_api.mjs +1 -1
  4. package/esm2022/lib/common/async/refreshing-entity.mjs +5 -3
  5. package/esm2022/lib/common/csv/csv-serializer.mjs +5 -5
  6. package/esm2022/lib/common/csv/csv-spec.mjs +2 -2
  7. package/esm2022/lib/common/csv/public_api.mjs +1 -1
  8. package/esm2022/lib/common/data/continuable-listing.mjs +1 -1
  9. package/esm2022/lib/common/data/data-context/data-context-active-page.mjs +5 -4
  10. package/esm2022/lib/common/data/data-context/data-context-auto-starter.mjs +7 -5
  11. package/esm2022/lib/common/data/data-context/data-context-base.mjs +19 -12
  12. package/esm2022/lib/common/data/data-context/data-context-builder.mjs +5 -7
  13. package/esm2022/lib/common/data/data-context/data-context-continuable-base.mjs +5 -7
  14. package/esm2022/lib/common/data/data-context/data-context-continuable-paged.mjs +2 -2
  15. package/esm2022/lib/common/data/data-context/data-context-continuable-token.mjs +17 -7
  16. package/esm2022/lib/common/data/data-context/data-context-life-cycle-binding.mjs +2 -2
  17. package/esm2022/lib/common/data/data-context/data-context-simple.mjs +5 -4
  18. package/esm2022/lib/common/data/data-context/data-context-source-event-binding.mjs +2 -2
  19. package/esm2022/lib/common/data/data-context/data-context-status.mjs +1 -1
  20. package/esm2022/lib/common/data/data-context/data-context.mjs +5 -5
  21. package/esm2022/lib/common/data/data-context/indexed-entities.mjs +2 -2
  22. package/esm2022/lib/common/data/data-context/mat-table-data-context-binding.mjs +14 -8
  23. package/esm2022/lib/common/data/data-context/public_api.mjs +1 -1
  24. package/esm2022/lib/common/data/datasource/data-source-adapter.mjs +9 -5
  25. package/esm2022/lib/common/data/datasource/data-source-base.mjs +1 -1
  26. package/esm2022/lib/common/data/datasource/data-source-change-event.mjs +1 -1
  27. package/esm2022/lib/common/data/datasource/data-source-processor.mjs +14 -15
  28. package/esm2022/lib/common/data/datasource/data-source.mjs +4 -4
  29. package/esm2022/lib/common/data/datasource/entity-id-util.mjs +2 -2
  30. package/esm2022/lib/common/data/datasource/fetcher/delegate-data-source.mjs +2 -2
  31. package/esm2022/lib/common/data/datasource/local/local-list-data-source.mjs +9 -11
  32. package/esm2022/lib/common/data/datasource/local/local-paged-data-source.mjs +4 -2
  33. package/esm2022/lib/common/data/datasource/public_api.mjs +1 -1
  34. package/esm2022/lib/common/data/datasource/rest/public_api.mjs +1 -1
  35. package/esm2022/lib/common/data/datasource/rest/rest-client.mjs +44 -39
  36. package/esm2022/lib/common/data/entity-set-patch.mjs +6 -9
  37. package/esm2022/lib/common/data/field-comparator.mjs +2 -2
  38. package/esm2022/lib/common/data/filters/filter-commons.mjs +1 -1
  39. package/esm2022/lib/common/data/filters/filter-context.mjs +9 -9
  40. package/esm2022/lib/common/data/filters/filter-value.mjs +1 -1
  41. package/esm2022/lib/common/data/filters/filter.mjs +2 -2
  42. package/esm2022/lib/common/data/http-params-builder.mjs +5 -7
  43. package/esm2022/lib/common/data/page.mjs +1 -1
  44. package/esm2022/lib/common/data/public_api.mjs +1 -1
  45. package/esm2022/lib/common/data/required-filter-evaluator.mjs +7 -10
  46. package/esm2022/lib/common/data/sort-context.mjs +4 -6
  47. package/esm2022/lib/common/data/sort.mjs +1 -1
  48. package/esm2022/lib/common/data/token-chunk-request.mjs +1 -1
  49. package/esm2022/lib/common/enums/elder-enum-translation.service.mjs +9 -9
  50. package/esm2022/lib/common/enums/public_api.mjs +1 -1
  51. package/esm2022/lib/common/errors/exception-detail.mjs +1 -1
  52. package/esm2022/lib/common/errors/public_api.mjs +1 -1
  53. package/esm2022/lib/common/errors/standard-error-detail.mjs +1 -1
  54. package/esm2022/lib/common/format/bytes-format.mjs +2 -9
  55. package/esm2022/lib/common/format/bytes-per-second-format.mjs +1 -1
  56. package/esm2022/lib/common/format/curency-format-util.mjs +1 -1
  57. package/esm2022/lib/common/format/duration-format-util.mjs +1 -1
  58. package/esm2022/lib/common/format/iso-interval-format-util.mjs +6 -4
  59. package/esm2022/lib/common/format/public_api.mjs +1 -1
  60. package/esm2022/lib/common/forms/elder-entity-value-accessor.mjs +7 -7
  61. package/esm2022/lib/common/forms/elder-form-field-control-base.directive.mjs +7 -7
  62. package/esm2022/lib/common/forms/elder-from-field-base.mjs +3 -3
  63. package/esm2022/lib/common/forms/elder-from-field-customizable-base.mjs +1 -1
  64. package/esm2022/lib/common/forms/elder-from-field-entity-base.mjs +5 -5
  65. package/esm2022/lib/common/forms/elder-from-field-multi-entity-base.mjs +7 -7
  66. package/esm2022/lib/common/forms/elder-multi-entity-value-accessor.mjs +7 -7
  67. package/esm2022/lib/common/forms/form-field-base.component.mjs +3 -4
  68. package/esm2022/lib/common/forms/multi-model-base.component.mjs +2 -2
  69. package/esm2022/lib/common/forms/public_api.mjs +1 -1
  70. package/esm2022/lib/common/forms/template-composite-control.mjs +17 -13
  71. package/esm2022/lib/common/forms/value-accessor-base.mjs +3 -3
  72. package/esm2022/lib/common/forms/view-providers.mjs +1 -1
  73. package/esm2022/lib/common/http/http-client-builder.service.mjs +2 -2
  74. package/esm2022/lib/common/http/http-client-pristine.mjs +2 -2
  75. package/esm2022/lib/common/http/public_api.mjs +1 -1
  76. package/esm2022/lib/common/http/transfer/data-transfer-base.mjs +2 -2
  77. package/esm2022/lib/common/http/transfer/data-transfer-factory.mjs +4 -4
  78. package/esm2022/lib/common/http/transfer/data-transfer-progress-aggregate.mjs +6 -5
  79. package/esm2022/lib/common/http/transfer/data-transfer-progress.mjs +1 -1
  80. package/esm2022/lib/common/http/transfer/data-transfer-state.mjs +1 -1
  81. package/esm2022/lib/common/http/transfer/data-transfer-status.mjs +1 -1
  82. package/esm2022/lib/common/http/transfer/data-transfer.mjs +1 -1
  83. package/esm2022/lib/common/http/transfer/http-data-transfer.mjs +9 -9
  84. package/esm2022/lib/common/http/transfer/public_api.mjs +1 -1
  85. package/esm2022/lib/common/http/upload/file-upload-client.mjs +2 -2
  86. package/esm2022/lib/common/i18n/entity/impl/i18n-base.mjs +1 -1
  87. package/esm2022/lib/common/i18n/entity/impl/i18n-text.mjs +1 -1
  88. package/esm2022/lib/common/i18n/entity/impl/translated.mjs +1 -1
  89. package/esm2022/lib/common/i18n/entity/language-tag.mjs +1 -1
  90. package/esm2022/lib/common/i18n/entity/locale.mjs +1 -1
  91. package/esm2022/lib/common/i18n/entity/localisation-picker.mjs +4 -4
  92. package/esm2022/lib/common/i18n/entity/localized.mjs +1 -1
  93. package/esm2022/lib/common/i18n/entity/public_api.mjs +1 -1
  94. package/esm2022/lib/common/i18n/entity/translated-converter.mjs +4 -4
  95. package/esm2022/lib/common/i18n/entity/translated.mjs +1 -1
  96. package/esm2022/lib/common/i18n/public_api.mjs +1 -1
  97. package/esm2022/lib/common/json-map.mjs +3 -4
  98. package/esm2022/lib/common/objects.mjs +1 -1
  99. package/esm2022/lib/common/public_api.mjs +1 -1
  100. package/esm2022/lib/common/reactive-map.mjs +5 -5
  101. package/esm2022/lib/common/rxjs/operators/lazy-sample.mjs +2 -2
  102. package/esm2022/lib/common/rxjs/public_api.mjs +1 -1
  103. package/esm2022/lib/common/selection/public_api.mjs +1 -1
  104. package/esm2022/lib/common/selection/selection-model.mjs +8 -8
  105. package/esm2022/lib/common/sets.mjs +3 -2
  106. package/esm2022/lib/common/suggestion-provider.mjs +1 -1
  107. package/esm2022/lib/common/templates/template-slot-manager.mjs +2 -2
  108. package/esm2022/lib/common/theme-sizes.mjs +1 -1
  109. package/esm2022/lib/common/time/date-util.mjs +8 -10
  110. package/esm2022/lib/common/time/interval-coerce.mjs +3 -3
  111. package/esm2022/lib/common/time/interval.mjs +19 -16
  112. package/esm2022/lib/common/time/period-duration.mjs +1 -1
  113. package/esm2022/lib/common/time/public_api.mjs +1 -1
  114. package/esm2022/lib/common/time/temporal-plain-date-interval.mjs +1 -1
  115. package/esm2022/lib/common/time/temporal-util.mjs +1 -1
  116. package/esm2022/lib/common/time/time-util.mjs +3 -6
  117. package/esm2022/lib/common/url/elder-router.service.mjs +2 -2
  118. package/esm2022/lib/common/url/elder-url-fragment-params.service.mjs +4 -6
  119. package/esm2022/lib/common/url/public_api.mjs +1 -1
  120. package/esm2022/lib/common/url/url-query-params.mjs +2 -2
  121. package/esm2022/lib/common/utils/batcher.mjs +2 -2
  122. package/esm2022/lib/common/utils/collection-util.mjs +7 -5
  123. package/esm2022/lib/common/utils/filter-util.mjs +10 -8
  124. package/esm2022/lib/common/utils/focus-util.mjs +1 -1
  125. package/esm2022/lib/common/utils/input-utils.mjs +1 -1
  126. package/esm2022/lib/common/utils/next-number-util.mjs +4 -3
  127. package/esm2022/lib/common/utils/ng-zone-utils.mjs +2 -2
  128. package/esm2022/lib/common/utils/parse-util.mjs +1 -1
  129. package/esm2022/lib/common/utils/property-path-util.mjs +2 -2
  130. package/esm2022/lib/common/utils/public_api.mjs +1 -1
  131. package/esm2022/lib/common/utils/query-list-binding.mjs +5 -4
  132. package/esm2022/lib/common/utils/sort-util.mjs +2 -2
  133. package/esm2022/lib/common/utils/url-builder.mjs +1 -1
  134. package/esm2022/lib/common/utils/uuid-util.mjs +3 -4
  135. package/esm2022/lib/common/utils/value-wrapper.mjs +1 -1
  136. package/esm2022/lib/components/access-denied/elder-access-denied.component.mjs +4 -5
  137. package/esm2022/lib/components/access-denied/elder-access-denied.module.mjs +5 -15
  138. package/esm2022/lib/components/auditing/audited-entity/elder-audited-entity.component.mjs +16 -6
  139. package/esm2022/lib/components/auditing/elder-audit.module.mjs +4 -6
  140. package/esm2022/lib/components/auditing/i-audited-entity.mjs +1 -1
  141. package/esm2022/lib/components/badge/elder-badge/elder-badge.component.mjs +18 -12
  142. package/esm2022/lib/components/badge/elder-badge.directive.mjs +7 -7
  143. package/esm2022/lib/components/badge/elder-badge.module.mjs +4 -4
  144. package/esm2022/lib/components/button-group/elder-button-group/elder-button-group.component.mjs +3 -5
  145. package/esm2022/lib/components/button-group/elder-button-group.module.mjs +5 -20
  146. package/esm2022/lib/components/card-organizer/card-organizer/elder-card-organizer.component.mjs +4 -5
  147. package/esm2022/lib/components/card-organizer/card-organizer/elder-stack-card.directive.mjs +2 -2
  148. package/esm2022/lib/components/card-organizer/card-organizer-data.mjs +7 -7
  149. package/esm2022/lib/components/card-organizer/card-stack/elder-card-stack.component.mjs +24 -12
  150. package/esm2022/lib/components/card-organizer/card-stack.mjs +3 -3
  151. package/esm2022/lib/components/card-organizer/elder-card-organizer.module.mjs +18 -7
  152. package/esm2022/lib/components/cards/elder-card/elder-card-header/elder-card-header.component.mjs +3 -3
  153. package/esm2022/lib/components/cards/elder-card/elder-card.component.mjs +9 -9
  154. package/esm2022/lib/components/cards/elder-card/elder-card.module.mjs +16 -10
  155. package/esm2022/lib/components/chips/elder-chip-label.directive.mjs +3 -3
  156. package/esm2022/lib/components/chips/elder-chips.module.mjs +3 -5
  157. package/esm2022/lib/components/connectivity/elder-connectivity.module.mjs +9 -8
  158. package/esm2022/lib/components/connectivity/elder-connectivity.service.mjs +10 -12
  159. package/esm2022/lib/components/connectivity/offline-indicator/elder-offline-indicator.component.mjs +3 -3
  160. package/esm2022/lib/components/connectivity/public_api.mjs +1 -1
  161. package/esm2022/lib/components/containers/elder-containers.module.mjs +4 -10
  162. package/esm2022/lib/components/containers/elder-scroll-container/elder-scroll-container.component.mjs +4 -4
  163. package/esm2022/lib/components/containers/public_api.mjs +1 -1
  164. package/esm2022/lib/components/csv/elder-csv-export-btn/elder-csv-export-btn.component.mjs +6 -6
  165. package/esm2022/lib/components/csv/elder-csv-stream-exporter-builder.mjs +2 -4
  166. package/esm2022/lib/components/csv/elder-csv-stream-exporter-builder.service.mjs +2 -2
  167. package/esm2022/lib/components/csv/elder-csv-stream-exporter.mjs +12 -12
  168. package/esm2022/lib/components/csv/elder-csv.module.mjs +6 -19
  169. package/esm2022/lib/components/currency/elder-currency.module.mjs +6 -18
  170. package/esm2022/lib/components/currency/elder-currency.pipe.mjs +2 -2
  171. package/esm2022/lib/components/currency/model/currency-code.mjs +1 -1
  172. package/esm2022/lib/components/currency/model/currency-unit-registry.mjs +1 -1
  173. package/esm2022/lib/components/currency/model/currency-unit.mjs +1 -1
  174. package/esm2022/lib/components/currency/model/currency.mjs +1 -1
  175. package/esm2022/lib/components/currency/public_api.mjs +1 -1
  176. package/esm2022/lib/components/data-transfer/elder-data-transfer.module.mjs +28 -16
  177. package/esm2022/lib/components/data-transfer/elder-data-transfer.service.mjs +12 -10
  178. package/esm2022/lib/components/data-transfer/http-data-transfer/http-data-transfer.component.mjs +23 -12
  179. package/esm2022/lib/components/data-transfer/http-data-transfer-aggregate/http-data-transfer-aggregate.component.mjs +3 -3
  180. package/esm2022/lib/components/data-transfer/http-data-transfer-indicator/http-data-transfer-indicator.component.mjs +13 -3
  181. package/esm2022/lib/components/data-transfer/http-data-transfer-overview/http-data-transfer-overview.component.mjs +11 -3
  182. package/esm2022/lib/components/data-view/base/data-view-options-provider-binding.mjs +4 -2
  183. package/esm2022/lib/components/data-view/base/elder-data-view-base.mjs +4 -5
  184. package/esm2022/lib/components/data-view/base/elder-data-view-options-provider.mjs +1 -1
  185. package/esm2022/lib/components/data-view/base/elder-data-view-options.mjs +1 -1
  186. package/esm2022/lib/components/data-view/base/elder-data-view.mjs +1 -1
  187. package/esm2022/lib/components/data-view/base/public_api.mjs +1 -1
  188. package/esm2022/lib/components/data-view/common/composite-sort/composite-sort-context.mjs +2 -2
  189. package/esm2022/lib/components/data-view/common/composite-sort/composite-sort-dc.directive.mjs +5 -7
  190. package/esm2022/lib/components/data-view/common/composite-sort/composite-sort.mjs +4 -5
  191. package/esm2022/lib/components/data-view/common/composite-sort/elder-composite-sort/elder-composite-sort.component.mjs +6 -6
  192. package/esm2022/lib/components/data-view/common/data-context-state-indicator/data-context-state-indicator.component.mjs +4 -5
  193. package/esm2022/lib/components/data-view/common/elder-data-common.module.mjs +38 -20
  194. package/esm2022/lib/components/data-view/common/elder-data-toolbar/elder-data-toolbar.component.mjs +5 -13
  195. package/esm2022/lib/components/data-view/common/elder-single-sort/elder-single-sort.component.mjs +16 -6
  196. package/esm2022/lib/components/data-view/common/selection/data-context-selection.directive.mjs +6 -4
  197. package/esm2022/lib/components/data-view/common/selection/elder-selection-master-checkbox/elder-selection-master-checkbox.component.mjs +4 -5
  198. package/esm2022/lib/components/data-view/common/selection/master-selection-state.mjs +1 -1
  199. package/esm2022/lib/components/data-view/elder-data-view-interaction-mode.mjs +1 -1
  200. package/esm2022/lib/components/data-view/grid/elder-grid/elder-grid.component.mjs +46 -26
  201. package/esm2022/lib/components/data-view/grid/elder-grid.module.mjs +30 -21
  202. package/esm2022/lib/components/data-view/master-detail/elder-detail-dialog/elder-detail-dialog.component.mjs +15 -9
  203. package/esm2022/lib/components/data-view/master-detail/elder-detail.directive.mjs +5 -7
  204. package/esm2022/lib/components/data-view/master-detail/elder-master-activation.directive.mjs +8 -6
  205. package/esm2022/lib/components/data-view/master-detail/elder-master-detail-provider.mjs +2 -2
  206. package/esm2022/lib/components/data-view/master-detail/elder-master-detail.component.mjs +19 -25
  207. package/esm2022/lib/components/data-view/master-detail/elder-master-detail.module.mjs +4 -4
  208. package/esm2022/lib/components/data-view/master-detail/elder-master-detail.service.mjs +5 -4
  209. package/esm2022/lib/components/data-view/master-detail/elder-master.directive.mjs +2 -2
  210. package/esm2022/lib/components/data-view/master-detail/master-detail-activation-event.mjs +1 -1
  211. package/esm2022/lib/components/data-view/public_api.mjs +1 -1
  212. package/esm2022/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.component.mjs +4 -5
  213. package/esm2022/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.module.mjs +41 -16
  214. package/esm2022/lib/components/data-view/table/activation/activation-event-source.mjs +1 -1
  215. package/esm2022/lib/components/data-view/table/activation/elder-activation-context.mjs +1 -1
  216. package/esm2022/lib/components/data-view/table/activation/elder-delete-active.directive.mjs +6 -6
  217. package/esm2022/lib/components/data-view/table/activation/elder-table-activation-options.mjs +1 -1
  218. package/esm2022/lib/components/data-view/table/activation/elder-table-activation.directive.mjs +23 -15
  219. package/esm2022/lib/components/data-view/table/activation/item-activation-event.mjs +1 -1
  220. package/esm2022/lib/components/data-view/table/activation/item-activation-options.mjs +1 -1
  221. package/esm2022/lib/components/data-view/table/activation/public_api.mjs +1 -1
  222. package/esm2022/lib/components/data-view/table/elder-center-cell.directive.mjs +4 -5
  223. package/esm2022/lib/components/data-view/table/elder-number-cell.directive.mjs +3 -3
  224. package/esm2022/lib/components/data-view/table/elder-paginator-intl.mjs +8 -7
  225. package/esm2022/lib/components/data-view/table/elder-table/elder-table-toolbar.directive.mjs +2 -2
  226. package/esm2022/lib/components/data-view/table/elder-table/elder-table.component.mjs +54 -38
  227. package/esm2022/lib/components/data-view/table/elder-table-column.directive.mjs +2 -2
  228. package/esm2022/lib/components/data-view/table/elder-table-extension.directive.mjs +6 -11
  229. package/esm2022/lib/components/data-view/table/elder-table-root.directive.mjs +4 -8
  230. package/esm2022/lib/components/data-view/table/elder-table-row.directive.mjs +8 -6
  231. package/esm2022/lib/components/data-view/table/elder-table-sort.directive.mjs +2 -2
  232. package/esm2022/lib/components/data-view/table/elder-table.module.mjs +57 -25
  233. package/esm2022/lib/components/data-view/table/model/elder-column-layout.mjs +7 -7
  234. package/esm2022/lib/components/data-view/table/model/elder-table-model-cdk-table-binding.mjs +15 -11
  235. package/esm2022/lib/components/data-view/table/model/elder-table-model-provider.mjs +4 -4
  236. package/esm2022/lib/components/data-view/table/model/elder-table-model-query-group.mjs +11 -9
  237. package/esm2022/lib/components/data-view/table/model/elder-table-model.mjs +7 -5
  238. package/esm2022/lib/components/dialogs/confirm-dialog/elder-confirm-dialog.component.mjs +13 -3
  239. package/esm2022/lib/components/dialogs/elder-dialog-config.mjs +1 -1
  240. package/esm2022/lib/components/dialogs/elder-dialog.module.mjs +34 -13
  241. package/esm2022/lib/components/dialogs/elder-dialog.service.mjs +19 -22
  242. package/esm2022/lib/components/dialogs/question-dialog/elder-question-dialog.component.mjs +17 -5
  243. package/esm2022/lib/components/dialogs/selection-dialog/elder-selection-dialog/elder-selection-dialog.component.mjs +4 -5
  244. package/esm2022/lib/components/dialogs/selection-dialog/elder-selection-dialog.directive.mjs +5 -5
  245. package/esm2022/lib/components/errors/elder-error.module.mjs +4 -6
  246. package/esm2022/lib/components/errors/error-util.mjs +5 -5
  247. package/esm2022/lib/components/errors/exception-detail/elder-exception-detail.component.mjs +17 -6
  248. package/esm2022/lib/components/expand-toggle-button/elder-expand-toggle-button.component.mjs +3 -3
  249. package/esm2022/lib/components/expand-toggle-button/elder-expand-toggle-button.module.mjs +15 -8
  250. package/esm2022/lib/components/files/blob-url.mjs +1 -1
  251. package/esm2022/lib/components/files/blob-viewer/elder-blob-viewer.component.mjs +16 -11
  252. package/esm2022/lib/components/files/drag-n-drop/elder-drop-zone/elder-drop-zone.component.mjs +3 -3
  253. package/esm2022/lib/components/files/drag-n-drop/global-drag-drop.service.mjs +4 -4
  254. package/esm2022/lib/components/files/elder-file-drop-zone.directive.mjs +7 -7
  255. package/esm2022/lib/components/files/elder-file-select-input.mjs +3 -3
  256. package/esm2022/lib/components/files/elder-file-select.directive.mjs +14 -16
  257. package/esm2022/lib/components/files/elder-file.module.mjs +16 -10
  258. package/esm2022/lib/components/files/file-select/file-select.component.mjs +5 -6
  259. package/esm2022/lib/components/files/file-system-api.mjs +2 -2
  260. package/esm2022/lib/components/files/file-upload/file-upload.component.mjs +16 -3
  261. package/esm2022/lib/components/files/listing/file-entry.mjs +3 -3
  262. package/esm2022/lib/components/files/listing/file-listing-rx.mjs +5 -5
  263. package/esm2022/lib/components/files/listing/file-listing-system-handle.mjs +3 -3
  264. package/esm2022/lib/components/files/listing/file-listing-webkit.mjs +10 -11
  265. package/esm2022/lib/components/forms/clipboard/elder-clipboard.service.mjs +2 -2
  266. package/esm2022/lib/components/forms/directives/base/elder-class-hostbinding-base.mjs +1 -1
  267. package/esm2022/lib/components/forms/directives/elder-clipboard-put.directive.mjs +5 -3
  268. package/esm2022/lib/components/forms/directives/elder-delayed-focus.directive.mjs +2 -2
  269. package/esm2022/lib/components/forms/directives/elder-form-field-dense.directive.mjs +1 -1
  270. package/esm2022/lib/components/forms/directives/elder-form-field-label.directive.mjs +2 -2
  271. package/esm2022/lib/components/forms/directives/elder-form-field-no-hint.directive.mjs +2 -2
  272. package/esm2022/lib/components/forms/directives/elder-form-field-no-spinner.directive.mjs +2 -2
  273. package/esm2022/lib/components/forms/directives/elder-forms-directives.module.mjs +13 -6
  274. package/esm2022/lib/components/forms/directives/elder-initial-value.directive.mjs +5 -5
  275. package/esm2022/lib/components/forms/directives/elder-input-pattern.directive.mjs +2 -2
  276. package/esm2022/lib/components/forms/directives/elder-key-event.directive.mjs +2 -2
  277. package/esm2022/lib/components/forms/directives/elder-next-focusable.directive.mjs +3 -3
  278. package/esm2022/lib/components/forms/directives/elder-plug-parent-form.directive.mjs +6 -6
  279. package/esm2022/lib/components/forms/directives/elder-stop-event-propagation.directive.mjs +2 -2
  280. package/esm2022/lib/components/forms/directives/elder-tab-focus-trap.directive.mjs +13 -10
  281. package/esm2022/lib/components/forms/directives/elder-touched.directive.mjs +2 -2
  282. package/esm2022/lib/components/forms/directives/elder-triple-state-checkbox.directive.mjs +4 -4
  283. package/esm2022/lib/components/forms/directives/validation/elder-validation-error.directive.mjs +5 -3
  284. package/esm2022/lib/components/forms/directives/validation/strategies/common-validation-message-strategy.mjs +2 -2
  285. package/esm2022/lib/components/forms/directives/validation/strategies/dynamic-validation-message-strategy.mjs +2 -2
  286. package/esm2022/lib/components/forms/directives/validation/strategies/fallback-validation-message-strategy.mjs +1 -1
  287. package/esm2022/lib/components/forms/directives/validation/validation-message-renderer.service.mjs +4 -6
  288. package/esm2022/lib/components/forms/directives/validation/validation-message-strategy.mjs +1 -1
  289. package/esm2022/lib/components/forms/directives/validation/validators/elder-max.validator.mjs +4 -9
  290. package/esm2022/lib/components/forms/directives/validation/validators/elder-min.validator.mjs +4 -9
  291. package/esm2022/lib/components/forms/directives/validation/validators/elder-multiple-of.validator.mjs +12 -11
  292. package/esm2022/lib/components/forms/directives/validation/validators/elder-required-ignore-zero.validator.mjs +4 -4
  293. package/esm2022/lib/components/forms/elder-forms.module.mjs +1 -1
  294. package/esm2022/lib/components/forms/public_api.mjs +1 -1
  295. package/esm2022/lib/components/forms/search/domain/context/search-context.mjs +7 -3
  296. package/esm2022/lib/components/forms/search/domain/context/search-context.service.mjs +2 -2
  297. package/esm2022/lib/components/forms/search/domain/input/input-value.mjs +1 -1
  298. package/esm2022/lib/components/forms/search/domain/input/search-input-state.mjs +2 -2
  299. package/esm2022/lib/components/forms/search/domain/input/search-input.mjs +1 -1
  300. package/esm2022/lib/components/forms/search/domain/input/simple-search-input.mjs +1 -1
  301. package/esm2022/lib/components/forms/search/domain/url/elder-search-url.directive.mjs +14 -8
  302. package/esm2022/lib/components/forms/search/domain/url/elder-search-url.service.mjs +15 -12
  303. package/esm2022/lib/components/forms/search/domain/url/search-query-params-parser.mjs +3 -3
  304. package/esm2022/lib/components/forms/search/elder-search-context.directive.mjs +30 -25
  305. package/esm2022/lib/components/forms/search/elder-search-input.directive.mjs +14 -19
  306. package/esm2022/lib/components/forms/search/elder-search.module.mjs +24 -13
  307. package/esm2022/lib/components/forms/search/filter/default-input-filter-converter.mjs +2 -4
  308. package/esm2022/lib/components/forms/search/filter/input-filter-converter.mjs +1 -1
  309. package/esm2022/lib/components/forms/search/search-box/elder-search-box.component.mjs +27 -8
  310. package/esm2022/lib/components/forms/search/search-box/elder-search-panel.component.mjs +4 -4
  311. package/esm2022/lib/components/global-search/elder-global-search.component.mjs +19 -10
  312. package/esm2022/lib/components/global-search/elder-global-search.module.mjs +24 -6
  313. package/esm2022/lib/components/global-search/elder-global-search.service.mjs +8 -6
  314. package/esm2022/lib/components/graph/elder-progress-bar/elder-progress-bar.component.mjs +6 -6
  315. package/esm2022/lib/components/graph/elder-progress-bar/elder-progress-bar.module.mjs +4 -10
  316. package/esm2022/lib/components/graph/elder-progress-bar/sub-bar.mjs +1 -1
  317. package/esm2022/lib/components/graph/public_api.mjs +1 -1
  318. package/esm2022/lib/components/headers/elder-header/elder-header.component.mjs +3 -3
  319. package/esm2022/lib/components/headers/elder-header.module.mjs +12 -14
  320. package/esm2022/lib/components/http-support/elder-http-client.service.mjs +4 -9
  321. package/esm2022/lib/components/http-support/public_api.mjs +1 -1
  322. package/esm2022/lib/components/i18n/entities/elder-i18n-entities.module.mjs +3 -3
  323. package/esm2022/lib/components/i18n/entities/elder-localized-input/elder-localized-input.component.mjs +31 -20
  324. package/esm2022/lib/components/i18n/entities/elder-localized-input-dialog/elder-localized-input-dialog.component.mjs +14 -5
  325. package/esm2022/lib/components/i18n/entities/elder-localized-input-dialog.service.mjs +4 -4
  326. package/esm2022/lib/components/i18n/entities/elder-localized-input-table/elder-localized-input-table.component.mjs +42 -19
  327. package/esm2022/lib/components/i18n/entities/elder-localized-text-column.directive.mjs +2 -2
  328. package/esm2022/lib/components/i18n/entities/elder-localized-texts.directive.mjs +4 -5
  329. package/esm2022/lib/components/i18n/entities/picker/i18n-pick-async.pipe.mjs +3 -3
  330. package/esm2022/lib/components/i18n/entities/picker/i18n-pick.pipe.mjs +2 -2
  331. package/esm2022/lib/components/i18n/entities/picker/localisation-picker.service.mjs +6 -6
  332. package/esm2022/lib/components/i18n/language/elder-language-config.mjs +1 -1
  333. package/esm2022/lib/components/i18n/language/elder-language-interceptor.mjs +8 -7
  334. package/esm2022/lib/components/i18n/language/elder-language.module.mjs +11 -10
  335. package/esm2022/lib/components/i18n/language/elder-language.service.mjs +3 -4
  336. package/esm2022/lib/components/i18n/language/language-switcher/elder-language-switcher.component.mjs +17 -5
  337. package/esm2022/lib/components/i18n/locales/elder-locales-de-ch.module.mjs +7 -7
  338. package/esm2022/lib/components/i18n/public_api.mjs +1 -1
  339. package/esm2022/lib/components/iframes/data-view/data-view-iframe/data-view-iframe.component.mjs +13 -13
  340. package/esm2022/lib/components/iframes/data-view/data-view-iframe-adapter.directive.mjs +13 -11
  341. package/esm2022/lib/components/iframes/elder-iframe.module.mjs +4 -4
  342. package/esm2022/lib/components/iframes/iframe-close.directive.mjs +2 -3
  343. package/esm2022/lib/components/iframes/iframe-dialog/iframe-dialog.component.mjs +3 -3
  344. package/esm2022/lib/components/iframes/iframe-host/iframe-host.component.mjs +12 -4
  345. package/esm2022/lib/components/iframes/iframe-messages.mjs +1 -1
  346. package/esm2022/lib/components/iframes/iframe-side-content/iframe-side-content.component.mjs +11 -9
  347. package/esm2022/lib/components/iframes/iframe.service.mjs +7 -5
  348. package/esm2022/lib/components/iframes/typed-event-message.mjs +1 -1
  349. package/esm2022/lib/components/infinitescroll/elder-infinite-autocomplete.directive.mjs +10 -6
  350. package/esm2022/lib/components/infinitescroll/elder-infinite-scroll.directive.mjs +12 -7
  351. package/esm2022/lib/components/infinitescroll/elder-infinite-scroll.module.mjs +4 -10
  352. package/esm2022/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete-option-selected.mjs +1 -1
  353. package/esm2022/lib/components/input/autocomplete/elder-autocomplete/elder-suggestion-panel.component.mjs +26 -17
  354. package/esm2022/lib/components/input/autocomplete/elder-autocomplete-many.directive.mjs +11 -7
  355. package/esm2022/lib/components/input/autocomplete/elder-autocomplete.directive.mjs +8 -6
  356. package/esm2022/lib/components/input/autocomplete/elder-autocomplete.module.mjs +9 -6
  357. package/esm2022/lib/components/input/autocomplete/many/word-position-finder.mjs +1 -1
  358. package/esm2022/lib/components/input/public_api.mjs +1 -1
  359. package/esm2022/lib/components/labels/elder-labels.module.mjs +26 -8
  360. package/esm2022/lib/components/labels/labels-input/labels-input.component.mjs +28 -11
  361. package/esm2022/lib/components/measures/dimensions/dimensions-input/elder-dimensions-input.component.mjs +22 -21
  362. package/esm2022/lib/components/measures/dimensions/validation/elder-required-dimensions.validator.mjs +4 -4
  363. package/esm2022/lib/components/measures/directives/elder-unit-select.directive.mjs +2 -2
  364. package/esm2022/lib/components/measures/elder-measures.module.mjs +7 -19
  365. package/esm2022/lib/components/measures/elder-quantity-transform.pipe.mjs +2 -2
  366. package/esm2022/lib/components/measures/elder-quantity.pipe.mjs +2 -2
  367. package/esm2022/lib/components/measures/elder-unit.service.mjs +4 -6
  368. package/esm2022/lib/components/measures/model/dimensions.mjs +1 -1
  369. package/esm2022/lib/components/measures/model/quantity.mjs +1 -1
  370. package/esm2022/lib/components/measures/model/unit-dimension.mjs +1 -1
  371. package/esm2022/lib/components/measures/model/unit-registry.mjs +1 -1
  372. package/esm2022/lib/components/measures/model/unit.mjs +1 -1
  373. package/esm2022/lib/components/measures/public_api.mjs +1 -1
  374. package/esm2022/lib/components/measures/quantity-input/quantity-form-field/elder-quantity-form-field.component.mjs +13 -3
  375. package/esm2022/lib/components/measures/quantity-input/quantity-input-control/elder-quantity-input-control.component.mjs +18 -16
  376. package/esm2022/lib/components/measures/quantity-input/validation/elder-quantity-range.validator.mjs +4 -8
  377. package/esm2022/lib/components/measures/quantity-input/validation/elder-required-quantity.validator.mjs +4 -8
  378. package/esm2022/lib/components/measures/util/elder-quantity.service.mjs +15 -10
  379. package/esm2022/lib/components/navigation/bread-crumbs/bread-crumbs/elder-bread-crumbs.component.mjs +26 -6
  380. package/esm2022/lib/components/navigation/bread-crumbs/elder-bread-crumbs.module.mjs +12 -8
  381. package/esm2022/lib/components/navigation/bread-crumbs/path/path.mjs +1 -1
  382. package/esm2022/lib/components/navigation/nav/elder-nav.module.mjs +26 -20
  383. package/esm2022/lib/components/navigation/nav/nav-group/elder-nav-group.component.mjs +15 -21
  384. package/esm2022/lib/components/navigation/nav/nav-link/elder-nav-link.component.mjs +20 -7
  385. package/esm2022/lib/components/navigation/nav/nav-list/elder-nav-list.component.mjs +3 -3
  386. package/esm2022/lib/components/navigation/public_api.mjs +1 -1
  387. package/esm2022/lib/components/navigation/toolbar/elder-toolbar-column.directive.mjs +2 -2
  388. package/esm2022/lib/components/navigation/toolbar/elder-toolbar.module.mjs +26 -20
  389. package/esm2022/lib/components/navigation/toolbar/elder-toolbar.service.mjs +2 -2
  390. package/esm2022/lib/components/navigation/toolbar/toolbar/elder-toolbar.component.mjs +12 -7
  391. package/esm2022/lib/components/navigation/toolbar/toolbar-column-position.mjs +1 -1
  392. package/esm2022/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.component.mjs +4 -5
  393. package/esm2022/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.service.mjs +5 -4
  394. package/esm2022/lib/components/overlays/elder-overlay-origin.directive.mjs +2 -2
  395. package/esm2022/lib/components/overlays/elder-overlay-ref.mjs +1 -1
  396. package/esm2022/lib/components/overlays/elder-overlay-trigger.directive.mjs +3 -3
  397. package/esm2022/lib/components/overlays/elder-overlay.component.mjs +23 -14
  398. package/esm2022/lib/components/overlays/elder-overlay.module.mjs +4 -10
  399. package/esm2022/lib/components/page/exit-guard/page-exit-guard.module.mjs +5 -12
  400. package/esm2022/lib/components/page/exit-guard/page-exit-guard.service.mjs +6 -6
  401. package/esm2022/lib/components/page/exit-guard/page-exit-lock/page-exit-lock.component.mjs +3 -5
  402. package/esm2022/lib/components/page/exit-guard/page-exit-lock-indicator/page-exit-lock-indicator.component.mjs +3 -8
  403. package/esm2022/lib/components/page/exit-guard/page-exit-lock-overview/page-exit-lock-overview.component.mjs +3 -7
  404. package/esm2022/lib/components/panels/card-panel/elder-card-panel.component.mjs +3 -3
  405. package/esm2022/lib/components/panels/elder-dialog-panel/elder-dialog-panel.component.mjs +3 -3
  406. package/esm2022/lib/components/panels/elder-panel.module.mjs +10 -7
  407. package/esm2022/lib/components/panels/flat/elder-panel.component.mjs +4 -4
  408. package/esm2022/lib/components/panels/toggle-panel/elder-toggle-panel-trigger.directive.mjs +2 -2
  409. package/esm2022/lib/components/panels/toggle-panel/elder-toggle-panel.component.mjs +6 -6
  410. package/esm2022/lib/components/public_api.mjs +1 -1
  411. package/esm2022/lib/components/scrollbar/elder-scrollbar.directive.mjs +2 -2
  412. package/esm2022/lib/components/scrollbar/elder-scrollbar.module.mjs +2 -2
  413. package/esm2022/lib/components/select/auto/elder-auto-select-first.directive.mjs +5 -8
  414. package/esm2022/lib/components/select/auto/elder-auto-select-first.service.mjs +1 -1
  415. package/esm2022/lib/components/select/auto/elder-auto-select-suggest-first.directive.mjs +7 -9
  416. package/esm2022/lib/components/select/auto/elder-select-first-util.mjs +7 -4
  417. package/esm2022/lib/components/select/elder-select-base.mjs +12 -13
  418. package/esm2022/lib/components/select/elder-select-chip.directive.mjs +4 -4
  419. package/esm2022/lib/components/select/elder-select-on-tab.directive.mjs +10 -5
  420. package/esm2022/lib/components/select/elder-select-value.directive.mjs +2 -2
  421. package/esm2022/lib/components/select/elder-select.module.mjs +65 -29
  422. package/esm2022/lib/components/select/filter/elder-chip-filter-style-resolver.mjs +9 -9
  423. package/esm2022/lib/components/select/filter/elder-chips-include-exclude.directive.mjs +19 -15
  424. package/esm2022/lib/components/select/filter/elder-filter-chip-template/elder-filter-chip-template.component.mjs +3 -3
  425. package/esm2022/lib/components/select/filter/include-exclude-model-filter-adapter.mjs +6 -8
  426. package/esm2022/lib/components/select/filter/include-exclude-selection-model.mjs +7 -11
  427. package/esm2022/lib/components/select/multi/elder-chip-select-option/elder-select-option.component.mjs +2 -3
  428. package/esm2022/lib/components/select/multi/elder-multi-select-base.mjs +29 -27
  429. package/esm2022/lib/components/select/multi/elder-multi-select-chip-options/chip-options-provider.mjs +12 -10
  430. package/esm2022/lib/components/select/multi/elder-multi-select-chip-options/elder-multi-select-chip-options.component.mjs +40 -29
  431. package/esm2022/lib/components/select/multi/elder-multi-select-chip-options/select-option-chip-spec.mjs +4 -4
  432. package/esm2022/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.mjs +41 -21
  433. package/esm2022/lib/components/select/multi/elder-multi-select-chips/select-chip-spec.mjs +4 -4
  434. package/esm2022/lib/components/select/multi/elder-multi-select-form-field.mjs +2 -2
  435. package/esm2022/lib/components/select/multi/elder-mutli-select-all-directive.mjs +7 -8
  436. package/esm2022/lib/components/select/multi/elder-search-include-exclude.directive.mjs +8 -10
  437. package/esm2022/lib/components/select/popup/selection-model-popup-trigger-adapter.directive.mjs +7 -5
  438. package/esm2022/lib/components/select/popup/selection-model-popup.directive.mjs +13 -13
  439. package/esm2022/lib/components/select/popup/templated-selection-dialog/templated-selection-dialog.component.mjs +15 -5
  440. package/esm2022/lib/components/select/public_api.mjs +1 -1
  441. package/esm2022/lib/components/select/single/elder-clear-select.directive.mjs +5 -3
  442. package/esm2022/lib/components/select/single/elder-select/elder-select.component.mjs +39 -29
  443. package/esm2022/lib/components/select/single/elder-select-form-field.mjs +1 -1
  444. package/esm2022/lib/components/select-chip-list/chip-list-select/elder-chip-list-select.component.mjs +11 -12
  445. package/esm2022/lib/components/select-chip-list/elder-chip-list-select.module.mjs +3 -5
  446. package/esm2022/lib/components/shell/drawers/drawer-outlet-binding.mjs +8 -4
  447. package/esm2022/lib/components/shell/drawers/elder-route-outlet-drawer.service.mjs +6 -4
  448. package/esm2022/lib/components/shell/drawers/elder-router-outlet.service.mjs +7 -7
  449. package/esm2022/lib/components/shell/elder-shell-slot.directive.mjs +2 -2
  450. package/esm2022/lib/components/shell/elder-shell.module.mjs +10 -7
  451. package/esm2022/lib/components/shell/elder-shell.service.mjs +6 -9
  452. package/esm2022/lib/components/shell/header/elder-app-header/elder-app-header.component.mjs +6 -6
  453. package/esm2022/lib/components/shell/shell/elder-shell.component.mjs +34 -14
  454. package/esm2022/lib/components/shell/shell-content-slot.mjs +1 -1
  455. package/esm2022/lib/components/shell/shell-navigation-toggle/elder-shell-navigation-toggle.component.mjs +5 -5
  456. package/esm2022/lib/components/tabs/elder-tab/elder-tab.directive.mjs +2 -2
  457. package/esm2022/lib/components/tabs/elder-tab-group-routing/elder-tab-group-routing.directive.mjs +12 -12
  458. package/esm2022/lib/components/tabs/elder-tab.module.mjs +4 -14
  459. package/esm2022/lib/components/theme/elder-theme-applier.directive.mjs +5 -6
  460. package/esm2022/lib/components/theme/elder-theme-preference.service.mjs +3 -4
  461. package/esm2022/lib/components/theme/elder-theme-toggle/elder-theme-toggle.component.mjs +6 -7
  462. package/esm2022/lib/components/theme/elder-theme.directive.mjs +5 -3
  463. package/esm2022/lib/components/theme/elder-theme.module.mjs +9 -15
  464. package/esm2022/lib/components/theme/elder-theme.service.mjs +7 -9
  465. package/esm2022/lib/components/theme/known-elder-themes.mjs +1 -1
  466. package/esm2022/lib/components/theme/public_api.mjs +1 -1
  467. package/esm2022/lib/components/theme/theme-spec.mjs +3 -7
  468. package/esm2022/lib/components/time/date-adapters/custom-date-adapter.mjs +1 -1
  469. package/esm2022/lib/components/time/date-formats/locale-date-formats.mjs +2 -2
  470. package/esm2022/lib/components/time/duration/duration-bucket.mjs +3 -2
  471. package/esm2022/lib/components/time/duration/duration-format.mjs +1 -1
  472. package/esm2022/lib/components/time/duration/elder-duration-input/elder-duration-input.component.mjs +6 -12
  473. package/esm2022/lib/components/time/duration/iso-duration-str.mjs +1 -1
  474. package/esm2022/lib/components/time/elder-date-switcher/elder-date-switcher.component.mjs +13 -7
  475. package/esm2022/lib/components/time/elder-date-time-input/elder-date-time-input.component.mjs +7 -13
  476. package/esm2022/lib/components/time/elder-interval-input/elder-interval-input.component.mjs +27 -27
  477. package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker-binding.directive.mjs +1 -1
  478. package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker-toggle/elder-interval-picker-toggle.component.mjs +7 -14
  479. package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker.component.mjs +5 -11
  480. package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker.service.mjs +4 -9
  481. package/esm2022/lib/components/time/elder-local-date-input/elder-local-date-input.component.mjs +22 -13
  482. package/esm2022/lib/components/time/elder-local-time-input/elder-local-time-input.component.mjs +7 -13
  483. package/esm2022/lib/components/time/elder-time.module.mjs +29 -21
  484. package/esm2022/lib/components/time/period/elder-period-input/elder-period-input.component.mjs +6 -12
  485. package/esm2022/lib/components/time/period/period-bucket.mjs +1 -1
  486. package/esm2022/lib/components/time/period/period-format.mjs +1 -1
  487. package/esm2022/lib/components/time/pipes/to-iso-date-string.pipe.mjs +2 -2
  488. package/esm2022/lib/components/time/public_api.mjs +1 -1
  489. package/esm2022/lib/components/toasts/elder-toast.module.mjs +18 -4
  490. package/esm2022/lib/components/toasts/elder-toast.service.mjs +9 -10
  491. package/esm2022/lib/components/toasts/standard-toast/standard-toast.component.mjs +21 -14
  492. package/esm2022/lib/components/toasts/toast-type.mjs +1 -1
  493. package/esm2022/lib/components/toasts/toast.mjs +1 -1
  494. package/esm2022/lib/components/url-fragment/elder-url-fragment.mjs +1 -1
  495. package/esm2022/lib/components/url-fragment/elder-url-fragment.module.mjs +3 -5
  496. package/esm2022/lib/components/url-fragment/url-fragment-switcher/elder-url-fragment-switcher.component.mjs +16 -5
  497. package/esm2022/lib/components/viewers/elder-svg-viewer/elder-svg-viewer.component.mjs +3 -4
  498. package/esm2022/lib/components/viewers/elder-viewers.module.mjs +4 -10
  499. package/esm2022/lib/features/event-source/fetch/public_api.mjs +1 -1
  500. package/esm2022/lib/features/event-source/fetch/reactive-fetch-event-source.mjs +14 -14
  501. package/esm2022/lib/features/event-source/fetch/reactive-fetch-event-source.service.mjs +2 -2
  502. package/esm2022/lib/features/event-source/public_api.mjs +1 -1
  503. package/esm2022/lib/features/event-source/standard/elder-event-source.service.mjs +2 -2
  504. package/esm2022/lib/features/event-source/standard/public_api.mjs +1 -1
  505. package/esm2022/lib/features/event-source/standard/reactive-event-source.mjs +8 -7
  506. package/esm2022/lib/features/kafent/access-token-provider.mjs +1 -1
  507. package/esm2022/lib/features/kafent/kafent-config.mjs +1 -1
  508. package/esm2022/lib/features/kafent/kafent-event-stream.mjs +1 -1
  509. package/esm2022/lib/features/kafent/kafent-event.mjs +1 -1
  510. package/esm2022/lib/features/kafent/kafent-event.service.mjs +16 -8
  511. package/esm2022/lib/features/kafent/kafent-live-event-request.mjs +1 -1
  512. package/esm2022/lib/features/kafent/kafent.module.mjs +10 -13
  513. package/esm2022/lib/features/kafent/sse/kafent-event-stream-sse.service.mjs +12 -9
  514. package/esm2022/lib/features/kafent/sse/kafent-topic-sse.mjs +2 -3
  515. package/esm2022/lib/features/public_api.mjs +1 -1
  516. package/esm2022/lib/pipes/bytes.pipe.mjs +2 -2
  517. package/esm2022/lib/pipes/elder-pipes.module.mjs +52 -8
  518. package/esm2022/lib/pipes/elder-repeat.pipe.mjs +2 -2
  519. package/esm2022/lib/pipes/elder-round.pipe.mjs +2 -2
  520. package/esm2022/lib/pipes/elder-safe-url.pipe.mjs +2 -2
  521. package/esm2022/lib/pipes/elder-truncate.pipe.mjs +3 -3
  522. package/esm2022/lib/pipes/iso-duration.pipe.mjs +2 -2
  523. package/esm2022/lib/pipes/iso-interval-parse.pipe.mjs +4 -5
  524. package/esm2022/lib/pipes/iso-interval.pipe.mjs +2 -2
  525. package/esm2022/lib/pipes/public_api.mjs +1 -1
  526. package/esm2022/lib/pipes/time-ago.pipe.mjs +12 -7
  527. package/esm2022/lib/pipes/time-duration.pipe.mjs +6 -4
  528. package/esm2022/lib/pipes/weight.pipe.mjs +4 -3
  529. package/esm2022/public_api.mjs +1 -1
  530. package/fesm2022/elderbyte-ngx-starter.mjs +2929 -2311
  531. package/fesm2022/elderbyte-ngx-starter.mjs.map +1 -1
  532. package/lib/common/arrays.d.ts +1 -1
  533. package/lib/common/data/data-context/data-context-active-page.d.ts +1 -1
  534. package/lib/common/data/data-context/data-context-base.d.ts +1 -1
  535. package/lib/common/data/data-context/data-context-builder.d.ts +2 -2
  536. package/lib/common/data/data-context/data-context-continuable-base.d.ts +1 -1
  537. package/lib/common/data/data-context/data-context-continuable-paged.d.ts +1 -1
  538. package/lib/common/data/data-context/data-context-continuable-token.d.ts +1 -1
  539. package/lib/common/data/data-context/data-context-simple.d.ts +1 -1
  540. package/lib/common/data/datasource/local/local-list-data-source.d.ts +3 -3
  541. package/lib/common/data/datasource/local/local-paged-data-source.d.ts +1 -1
  542. package/lib/common/json-map.d.ts +1 -1
  543. package/lib/common/selection/selection-model.d.ts +2 -2
  544. package/lib/common/time/interval.d.ts +4 -4
  545. package/lib/common/utils/collection-util.d.ts +1 -1
  546. package/lib/components/card-organizer/card-organizer-data.d.ts +3 -3
  547. package/lib/components/card-organizer/card-stack.d.ts +2 -2
  548. package/lib/components/data-view/base/elder-data-view-options-provider.d.ts +1 -1
  549. package/lib/components/data-view/common/elder-data-common.module.d.ts +1 -1
  550. package/lib/components/data-view/elder-data-view-interaction-mode.d.ts +2 -2
  551. package/lib/components/data-view/grid/elder-grid.module.d.ts +1 -1
  552. package/lib/components/forms/search/elder-search-input.directive.d.ts +1 -1
  553. package/lib/components/navigation/toolbar/elder-toolbar.module.d.ts +1 -1
  554. package/lib/components/navigation/toolbar/toolbar-column-position.d.ts +3 -3
  555. package/lib/components/select/elder-select.module.d.ts +1 -1
  556. package/lib/components/time/elder-interval-input/elder-interval-input.component.d.ts +4 -4
  557. package/package.json +3 -2
  558. package/src/assets/i18n/de.json +136 -0
  559. package/src/assets/i18n/en.json +122 -0
  560. package/src/lib/components/access-denied/elder-access-denied.component.scss +1 -5
  561. package/src/lib/components/auditing/audited-entity/elder-audited-entity.component.scss +0 -1
  562. package/src/lib/components/badge/elder-badge/elder-badge.component.scss +2 -7
  563. package/src/lib/components/card-organizer/card-organizer/elder-card-organizer.component.scss +0 -1
  564. package/src/lib/components/card-organizer/card-stack/elder-card-stack.component.scss +4 -14
  565. package/src/lib/components/cards/elder-card/elder-card.component.scss +3 -9
  566. package/src/lib/components/chips/_elder-chip-theme.scss +5 -9
  567. package/src/lib/components/containers/elder-scroll-container/elder-scroll-container.component.scss +0 -1
  568. package/src/lib/components/data-transfer/http-data-transfer/http-data-transfer.component.scss +0 -1
  569. package/src/lib/components/data-transfer/http-data-transfer-indicator/http-data-transfer-indicator.component.scss +0 -1
  570. package/src/lib/components/data-transfer/http-data-transfer-overview/http-data-transfer-overview.component.scss +4 -5
  571. package/src/lib/components/data-view/common/selection/elder-selection-master-checkbox/elder-selection-master-checkbox.component.scss +1 -1
  572. package/src/lib/components/data-view/grid/elder-grid/elder-grid.component.scss +21 -13
  573. package/src/lib/components/data-view/table/elder-table/elder-table.component.scss +12 -21
  574. package/src/lib/components/dialogs/confirm-dialog/elder-confirm-dialog.component.scss +2 -3
  575. package/src/lib/components/errors/exception-detail/elder-exception-detail.component.scss +2 -4
  576. package/src/lib/components/expand-toggle-button/elder-expand-toggle-button.component.scss +0 -4
  577. package/src/lib/components/files/blob-viewer/elder-blob-viewer.component.scss +2 -4
  578. package/src/lib/components/files/drag-n-drop/elder-drop-zone/elder-drop-zone.component.scss +2 -7
  579. package/src/lib/components/forms/search/search-box/elder-search-box.component.scss +0 -2
  580. package/src/lib/components/global-search/elder-global-search.component.scss +1 -2
  581. package/src/lib/components/graph/elder-progress-bar/elder-progress-bar.component.scss +0 -1
  582. package/src/lib/components/iframes/iframe-host/iframe-host.component.scss +0 -1
  583. package/src/lib/components/labels/labels-input/labels-input.component.scss +0 -2
  584. package/src/lib/components/navigation/bread-crumbs/bread-crumbs/elder-bread-crumbs.component.scss +0 -2
  585. package/src/lib/components/navigation/nav/_elder-nav-theme.scss +4 -8
  586. package/src/lib/components/navigation/nav/nav-group/elder-nav-group.component.scss +6 -6
  587. package/src/lib/components/navigation/nav/nav-list/elder-nav-list.component.scss +0 -1
  588. package/src/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.component.scss +1 -2
  589. package/src/lib/components/panels/card-panel/elder-card-panel.component.scss +0 -3
  590. package/src/lib/components/panels/elder-dialog-panel/elder-dialog-panel.component.scss +0 -1
  591. package/src/lib/components/panels/flat/_elder-panel-theme.scss +0 -2
  592. package/src/lib/components/panels/flat/elder-panel.component.scss +1 -2
  593. package/src/lib/components/select/_elder-select-base.scss +0 -1
  594. package/src/lib/components/select/filter/elder-filter-chip-template/elder-filter-chip-template.component.scss +7 -7
  595. package/src/lib/components/select/multi/elder-multi-select-chip-options/elder-multi-select-chip-options.component.scss +3 -4
  596. package/src/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.scss +7 -7
  597. package/src/lib/components/select/single/elder-select/elder-select.component.scss +1 -1
  598. package/src/lib/components/select-chip-list/chip-list-select/elder-chip-list-select.component.scss +2 -3
  599. package/src/lib/components/shell/header/elder-app-header/elder-app-header.component.scss +1 -2
  600. package/src/lib/components/shell/shell/elder-shell.component.scss +0 -1
  601. package/src/lib/components/shell/shell-navigation-toggle/elder-shell-navigation-toggle.component.scss +1 -2
  602. package/src/lib/components/time/_elder-time-input.theme.scss +2 -2
  603. package/src/lib/components/time/duration/elder-duration-input/elder-duration-input.component.scss +0 -4
  604. package/src/lib/components/time/elder-date-time-input/elder-date-time-input.component.scss +1 -3
  605. package/src/lib/components/time/elder-interval-input/elder-interval-input.component.scss +0 -1
  606. package/src/lib/components/time/elder-local-date-input/elder-local-date-input.component.scss +2 -5
  607. package/src/lib/components/time/period/elder-period-input/elder-period-input.component.scss +0 -4
  608. package/src/lib/components/toasts/standard-toast/standard-toast.component.scss +0 -1
  609. package/src/lib/components/url-fragment/url-fragment-switcher/elder-url-fragment-switcher.component.scss +0 -5
  610. package/src/lib/components/viewers/elder-svg-viewer/elder-svg-viewer.component.scss +0 -1
  611. package/theming/_elder-common.scss +10 -11
  612. package/theming/_elder-defaults.scss +2 -4
  613. package/theming/_elder-flex-layout.scss +7 -8
  614. package/theming/_elder-mdc-support.scss +22 -19
  615. package/theming/_elder-palettes.scss +28 -25
  616. package/theming/_elder-scrollbar-theme.scss +0 -2
  617. package/theming/_elder-style-fixes.scss +10 -7
  618. package/theming/_elder-theme.scss +6 -1
  619. package/theming/_elder-toast-theme.scss +0 -2
  620. package/theming/_mat-icon-button-size.scss +3 -2
  621. package/theming/_mixins.scss +11 -9
@@ -22,17 +22,21 @@ export class ElderInfiniteAutocompleteDirective {
22
22
  this.logger = LoggerFactory.getLogger(this.constructor.name);
23
23
  this.unsubscribe$ = new Subject();
24
24
  this.infiniteScroll.listenToHost = false; // We find the scroll container with our own logic
25
- this.autoComplete.opened.pipe(takeUntil(this.unsubscribe$), tap(() => {
25
+ this.autoComplete.opened
26
+ .pipe(takeUntil(this.unsubscribe$), tap(() => {
26
27
  // Note: When autocomplete raises opened, panel is not yet created (by Overlay)
27
28
  // Note: The panel will be available on next tick
28
29
  // Note: The panel wil NOT open if there are no options to display
29
30
  setTimeout(() => {
30
31
  this.infiniteScroll.scrollContainer = this.autoComplete.panel.nativeElement;
31
32
  });
32
- })).subscribe();
33
- this.autoComplete.closed.pipe(takeUntil(this.unsubscribe$), tap(() => {
33
+ }))
34
+ .subscribe();
35
+ this.autoComplete.closed
36
+ .pipe(takeUntil(this.unsubscribe$), tap(() => {
34
37
  this.infiniteScroll.scrollContainer = null;
35
- })).subscribe();
38
+ }))
39
+ .subscribe();
36
40
  }
37
41
  /***************************************************************************
38
42
  * *
@@ -51,11 +55,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
51
55
  type: Directive,
52
56
  args: [{
53
57
  selector: 'mat-autocomplete[elderElderInfiniteAutocomplete]',
54
- standalone: true
58
+ standalone: true,
55
59
  }]
56
60
  }], ctorParameters: () => [{ type: i1.MatAutocomplete, decorators: [{
57
61
  type: Host
58
62
  }] }, { type: i2.ElderInfiniteScrollDirective, decorators: [{
59
63
  type: Host
60
64
  }] }] });
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItaW5maW5pdGUtYXV0b2NvbXBsZXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvaW5maW5pdGVzY3JvbGwvZWxkZXItaW5maW5pdGUtYXV0b2NvbXBsZXRlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRW5ELE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQU85QyxNQUFNLE9BQU8sa0NBQWtDO0lBYTdDOzs7O2dGQUk0RTtJQUU1RSxZQUMwQixZQUE2QixFQUM3QixjQUE0QztRQUQ1QyxpQkFBWSxHQUFaLFlBQVksQ0FBaUI7UUFDN0IsbUJBQWMsR0FBZCxjQUFjLENBQThCO1FBbEJ0RTs7OztvRkFJNEU7UUFFM0QsV0FBTSxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV4RCxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFhbEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLENBQUMsa0RBQWtEO1FBRTVGLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDM0IsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFDNUIsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNQLCtFQUErRTtZQUMvRSxpREFBaUQ7WUFDakQsa0VBQWtFO1lBQ2xFLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDO1lBQzlFLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQ0QsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUVoQixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQzNCLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQzVCLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUCxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDN0MsQ0FBQyxDQUFDLENBQ0QsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRXJFLFFBQVEsS0FBVyxDQUFDO0lBRXBCLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQy9CLENBQUM7OEdBekRVLGtDQUFrQztrR0FBbEMsa0NBQWtDOzsyRkFBbEMsa0NBQWtDO2tCQUo5QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxrREFBa0Q7b0JBQzVELFVBQVUsRUFBRSxJQUFJO2lCQUNuQjs7MEJBcUJJLElBQUk7OzBCQUNKLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgSG9zdCwgT25EZXN0cm95LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtMb2dnZXJGYWN0b3J5fSBmcm9tICdAZWxkZXJieXRlL3RzLWxvZ2dlcic7XG5pbXBvcnQge01hdEF1dG9jb21wbGV0ZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7U3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge3Rha2VVbnRpbCwgdGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0VsZGVySW5maW5pdGVTY3JvbGxEaXJlY3RpdmV9IGZyb20gJy4vZWxkZXItaW5maW5pdGUtc2Nyb2xsLmRpcmVjdGl2ZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnbWF0LWF1dG9jb21wbGV0ZVtlbGRlckVsZGVySW5maW5pdGVBdXRvY29tcGxldGVdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVySW5maW5pdGVBdXRvY29tcGxldGVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXMuY29uc3RydWN0b3IubmFtZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBIb3N0KCkgcHVibGljIHJlYWRvbmx5IGF1dG9Db21wbGV0ZTogTWF0QXV0b2NvbXBsZXRlLFxuICAgIEBIb3N0KCkgcHVibGljIHJlYWRvbmx5IGluZmluaXRlU2Nyb2xsOiBFbGRlckluZmluaXRlU2Nyb2xsRGlyZWN0aXZlXG4gICkge1xuXG4gICAgdGhpcy5pbmZpbml0ZVNjcm9sbC5saXN0ZW5Ub0hvc3QgPSBmYWxzZTsgLy8gV2UgZmluZCB0aGUgc2Nyb2xsIGNvbnRhaW5lciB3aXRoIG91ciBvd24gbG9naWNcblxuICAgIHRoaXMuYXV0b0NvbXBsZXRlLm9wZW5lZC5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSxcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIC8vIE5vdGU6IFdoZW4gYXV0b2NvbXBsZXRlIHJhaXNlcyBvcGVuZWQsIHBhbmVsIGlzIG5vdCB5ZXQgY3JlYXRlZCAoYnkgT3ZlcmxheSlcbiAgICAgICAgLy8gTm90ZTogVGhlIHBhbmVsIHdpbGwgYmUgYXZhaWxhYmxlIG9uIG5leHQgdGlja1xuICAgICAgICAvLyBOb3RlOiBUaGUgcGFuZWwgd2lsIE5PVCBvcGVuIGlmIHRoZXJlIGFyZSBubyBvcHRpb25zIHRvIGRpc3BsYXlcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pbmZpbml0ZVNjcm9sbC5zY3JvbGxDb250YWluZXIgPSB0aGlzLmF1dG9Db21wbGV0ZS5wYW5lbC5uYXRpdmVFbGVtZW50O1xuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgICApLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5hdXRvQ29tcGxldGUuY2xvc2VkLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpLFxuICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgdGhpcy5pbmZpbml0ZVNjcm9sbC5zY3JvbGxDb250YWluZXIgPSBudWxsO1xuICAgICAgfSksXG4gICAgICApLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIExpZmUtQ3ljbGUgSG9va3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQgeyB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudW5zdWJzY3JpYmUkLm5leHQoKTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgbWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cblxuXG59XG4iXX0=
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItaW5maW5pdGUtYXV0b2NvbXBsZXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvaW5maW5pdGVzY3JvbGwvZWxkZXItaW5maW5pdGUtYXV0b2NvbXBsZXRlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBcUIsTUFBTSxlQUFlLENBQUE7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBRXBELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDOUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTs7OztBQU8vQyxNQUFNLE9BQU8sa0NBQWtDO0lBVzdDOzs7O2dGQUk0RTtJQUU1RSxZQUMwQixZQUE2QixFQUM3QixjQUE0QztRQUQ1QyxpQkFBWSxHQUFaLFlBQVksQ0FBaUI7UUFDN0IsbUJBQWMsR0FBZCxjQUFjLENBQThCO1FBbEJ0RTs7OztvRkFJNEU7UUFFM0QsV0FBTSxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUV2RCxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUE7UUFZakQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFBLENBQUMsa0RBQWtEO1FBRTNGLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTTthQUNyQixJQUFJLENBQ0gsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFDNUIsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNQLCtFQUErRTtZQUMvRSxpREFBaUQ7WUFDakQsa0VBQWtFO1lBQ2xFLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFBO1lBQzdFLENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFDLENBQ0g7YUFDQSxTQUFTLEVBQUUsQ0FBQTtRQUVkLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTTthQUNyQixJQUFJLENBQ0gsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFDNUIsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNQLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQTtRQUM1QyxDQUFDLENBQUMsQ0FDSDthQUNBLFNBQVMsRUFBRSxDQUFBO0lBQ2hCLENBQUM7SUFFRDs7OztnRkFJNEU7SUFFckUsUUFBUSxLQUFVLENBQUM7SUFFbkIsV0FBVztRQUNoQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFBO1FBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDOUIsQ0FBQzs4R0ExRFUsa0NBQWtDO2tHQUFsQyxrQ0FBa0M7OzJGQUFsQyxrQ0FBa0M7a0JBSjlDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtEQUFrRDtvQkFDNUQsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOzswQkFtQkksSUFBSTs7MEJBQ0osSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgTG9nZ2VyRmFjdG9yeSB9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJ1xuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJ1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHsgRWxkZXJJbmZpbml0ZVNjcm9sbERpcmVjdGl2ZSB9IGZyb20gJy4vZWxkZXItaW5maW5pdGUtc2Nyb2xsLmRpcmVjdGl2ZSdcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnbWF0LWF1dG9jb21wbGV0ZVtlbGRlckVsZGVySW5maW5pdGVBdXRvY29tcGxldGVdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgRWxkZXJJbmZpbml0ZUF1dG9jb21wbGV0ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpXG5cbiAgcHJpdmF0ZSByZWFkb25seSB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpXG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEhvc3QoKSBwdWJsaWMgcmVhZG9ubHkgYXV0b0NvbXBsZXRlOiBNYXRBdXRvY29tcGxldGUsXG4gICAgQEhvc3QoKSBwdWJsaWMgcmVhZG9ubHkgaW5maW5pdGVTY3JvbGw6IEVsZGVySW5maW5pdGVTY3JvbGxEaXJlY3RpdmVcbiAgKSB7XG4gICAgdGhpcy5pbmZpbml0ZVNjcm9sbC5saXN0ZW5Ub0hvc3QgPSBmYWxzZSAvLyBXZSBmaW5kIHRoZSBzY3JvbGwgY29udGFpbmVyIHdpdGggb3VyIG93biBsb2dpY1xuXG4gICAgdGhpcy5hdXRvQ29tcGxldGUub3BlbmVkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSxcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAvLyBOb3RlOiBXaGVuIGF1dG9jb21wbGV0ZSByYWlzZXMgb3BlbmVkLCBwYW5lbCBpcyBub3QgeWV0IGNyZWF0ZWQgKGJ5IE92ZXJsYXkpXG4gICAgICAgICAgLy8gTm90ZTogVGhlIHBhbmVsIHdpbGwgYmUgYXZhaWxhYmxlIG9uIG5leHQgdGlja1xuICAgICAgICAgIC8vIE5vdGU6IFRoZSBwYW5lbCB3aWwgTk9UIG9wZW4gaWYgdGhlcmUgYXJlIG5vIG9wdGlvbnMgdG8gZGlzcGxheVxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pbmZpbml0ZVNjcm9sbC5zY3JvbGxDb250YWluZXIgPSB0aGlzLmF1dG9Db21wbGV0ZS5wYW5lbC5uYXRpdmVFbGVtZW50XG4gICAgICAgICAgfSlcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKVxuXG4gICAgdGhpcy5hdXRvQ29tcGxldGUuY2xvc2VkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSxcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmluZmluaXRlU2Nyb2xsLnNjcm9sbENvbnRhaW5lciA9IG51bGxcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIExpZmUtQ3ljbGUgSG9va3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge31cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy51bnN1YnNjcmliZSQubmV4dCgpXG4gICAgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgbWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG59XG4iXX0=
@@ -37,8 +37,11 @@ export class ElderInfiniteScrollDirective {
37
37
  this._zonedoutScrollEvents.next(ev);
38
38
  };
39
39
  this.scrollEventListenerOptions = { capture: true, passive: true };
40
- const scrollEvents$ = this._zonedoutScrollEvents.pipe(takeUntil(this.destroy$), filter(ev => !!ev.target));
41
- scrollEvents$.pipe(lazySampleTime(this.eventThrottle, true)).subscribe(event => {
40
+ const scrollEvents$ = this._zonedoutScrollEvents.pipe(takeUntil(this.destroy$), filter((ev) => !!ev.target));
41
+ scrollEvents$
42
+ .pipe(lazySampleTime(this.eventThrottle, true) // Relax
43
+ )
44
+ .subscribe((event) => {
42
45
  const eventTarget = event.target;
43
46
  if (this.isCloseToEnd(eventTarget)) {
44
47
  // The zoned out events are not tracked by angular change detection for performance.
@@ -46,11 +49,13 @@ export class ElderInfiniteScrollDirective {
46
49
  this._closeToEndSubject.next(event);
47
50
  }
48
51
  });
49
- scrollEvents$.pipe(tap(ev => {
52
+ scrollEvents$
53
+ .pipe(tap((ev) => {
50
54
  if (!this._scrollingSubject.getValue()) {
51
55
  this._scrollingSubject.next(true); // Scrolling Started
52
56
  }
53
- }), debounceTime(300)).subscribe(event => {
57
+ }), debounceTime(300))
58
+ .subscribe((event) => {
54
59
  if (this._scrollingSubject.getValue()) {
55
60
  this._scrollingSubject.next(false); // Scrolling Ended
56
61
  }
@@ -126,7 +131,7 @@ export class ElderInfiniteScrollDirective {
126
131
  const range = el.offsetHeight * this.offsetFactor;
127
132
  const total = el.scrollHeight;
128
133
  const current = el.scrollTop + el.offsetHeight;
129
- return (total - current) < range;
134
+ return total - current < range;
130
135
  }
131
136
  else {
132
137
  return false;
@@ -139,7 +144,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
139
144
  type: Directive,
140
145
  args: [{
141
146
  selector: '[elderInfiniteScroll]',
142
- standalone: true
147
+ standalone: true,
143
148
  }]
144
149
  }], ctorParameters: () => [{ type: i0.NgZone }, { type: i0.ElementRef }], propDecorators: { listenToHost: [{
145
150
  type: Input
@@ -158,4 +163,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
158
163
  }], scrollContainer: [{
159
164
  type: Input
160
165
  }] } });
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItaW5maW5pdGUtc2Nyb2xsLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvaW5maW5pdGVzY3JvbGwvZWxkZXItaW5maW5pdGUtc2Nyb2xsLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFjLEtBQUssRUFBNkIsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsZUFBZSxFQUFjLGFBQWEsRUFBRSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDekUsT0FBTyxFQUFDLFlBQVksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQzs7QUFPdkUsTUFBTSxPQUFPLDRCQUE0QjtJQStCdkM7Ozs7Z0ZBSTRFO0lBRTVFLFlBQ21CLE1BQWMsRUFDZCxPQUFtQjtRQURuQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQXJDdEM7Ozs7b0ZBSTRFO1FBRTNELFdBQU0sR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFHbEUsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFHcEIsa0JBQWEsR0FBRyxHQUFHLENBQUM7UUFHcEIsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFHakIsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBSWhCLDBCQUFxQixHQUFHLElBQUksT0FBTyxFQUFTLENBQUM7UUFDN0MsdUJBQWtCLEdBQUcsSUFBSSxhQUFhLENBQVEs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QUFLLEdBQUcsRUFBRSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1lBQ2xELE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUM7WUFDOUIsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDO1lBQy9DLE9BQU8sQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ25DLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQzs4R0F2S1UsNEJBQTRCO2tHQUE1Qiw0QkFBNEI7OzJGQUE1Qiw0QkFBNEI7a0JBSnhDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsVUFBVSxFQUFFLElBQUk7aUJBQ25CO29HQVlRLFlBQVk7c0JBRGxCLEtBQUs7Z0JBSUMsYUFBYTtzQkFEbkIsS0FBSztnQkFJQyxZQUFZO3NCQURsQixLQUFLO2dCQUlDLGlCQUFpQjtzQkFEdkIsS0FBSztnQkFvRkssVUFBVTtzQkFEcEIsTUFBTTtnQkFTSSxTQUFTO3NCQURuQixNQUFNO2dCQU1JLFdBQVc7c0JBRHJCLEtBQUs7Z0JBV0ssZUFBZTtzQkFEekIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgTmdab25lLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TG9nZ2VyRmFjdG9yeX0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWUsIGZpbHRlciwgdGFrZVVudGlsLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7bGF6eVNhbXBsZVRpbWV9IGZyb20gJy4uLy4uL2NvbW1vbi9yeGpzL29wZXJhdG9ycy9sYXp5LXNhbXBsZSc7XG5cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZWxkZXJJbmZpbml0ZVNjcm9sbF0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgRWxkZXJJbmZpbml0ZVNjcm9sbERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXMuY29uc3RydWN0b3IubmFtZSk7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGxpc3RlblRvSG9zdCA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGV2ZW50VGhyb3R0bGUgPSAxODA7XG5cbiAgQElucHV0KClcbiAgcHVibGljIG9mZnNldEZhY3RvciA9IDE7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGlnbm9yZVNjcm9sbEV2ZW50ID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBzY3JvbGxFdmVudExpc3RlbmVyT3B0aW9uczogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnM7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfem9uZWRvdXRTY3JvbGxFdmVudHMgPSBuZXcgU3ViamVjdDxFdmVudD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY2xvc2VUb0VuZFN1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxFdmVudD4oMSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Njcm9sbGluZ1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBfc2Nyb2xsQ29udGFpbmVyOiBIVE1MRWxlbWVudDtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaG9zdFJlZjogRWxlbWVudFJlZlxuICApIHtcblxuICAgIHRoaXMuc2Nyb2xsRXZlbnRMaXN0ZW5lck9wdGlvbnMgPSB7Y2FwdHVyZTogdHJ1ZSwgcGFzc2l2ZTogdHJ1ZX07XG5cbiAgICBjb25zdCBzY3JvbGxFdmVudHMkID0gdGhpcy5fem9uZWRvdXRTY3JvbGxFdmVudHMucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgIGZpbHRlcihldiA9PiAhIShldi50YXJnZXQgYXMgSFRNTEVsZW1lbnQpKVxuICAgICk7XG5cbiAgICBzY3JvbGxFdmVudHMkLnBpcGUoXG4gICAgICBsYXp5U2FtcGxlVGltZSh0aGlzLmV2ZW50VGhyb3R0bGUsIHRydWUpLCAvLyBSZWxheFxuICAgICkuc3Vic2NyaWJlKFxuICAgICAgZXZlbnQgPT4ge1xuXG4gICAgICAgIGNvbnN0IGV2ZW50VGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICAgIGlmICh0aGlzLmlzQ2xvc2VUb0VuZChldmVudFRhcmdldCkpIHtcbiAgICAgICAgICAvLyBUaGUgem9uZWQgb3V0IGV2ZW50cyBhcmUgbm90IHRyYWNrZWQgYnkgYW5ndWxhciBjaGFuZ2UgZGV0ZWN0aW9uIGZvciBwZXJmb3JtYW5jZS5cbiAgICAgICAgICAvLyBBZnRlciB3ZSBoYXZlIGRlYm91bmNlZCBhbmQgZGlzdGlsbGVkIG91dCBhbiBpbnRlcmVzdGluZyBjbG9zZS10by1lbmQgZXZlbnQsIHdlIGxldCBhbmd1bGFyIGtub3c6XG4gICAgICAgICAgdGhpcy5fY2xvc2VUb0VuZFN1YmplY3QubmV4dChldmVudCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuXG4gICAgc2Nyb2xsRXZlbnRzJC5waXBlKFxuICAgICAgdGFwKGV2ID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLl9zY3JvbGxpbmdTdWJqZWN0LmdldFZhbHVlKCkpIHtcbiAgICAgICAgICB0aGlzLl9zY3JvbGxpbmdTdWJqZWN0Lm5leHQodHJ1ZSk7ICAvLyBTY3JvbGxpbmcgU3RhcnRlZFxuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIGRlYm91bmNlVGltZSgzMDApXG4gICAgKS5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgaWYgKHRoaXMuX3Njcm9sbGluZ1N1YmplY3QuZ2V0VmFsdWUoKSkge1xuICAgICAgICB0aGlzLl9zY3JvbGxpbmdTdWJqZWN0Lm5leHQoZmFsc2UpOyAgIC8vIFNjcm9sbGluZyBFbmRlZFxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIExpZmUtQ3ljbGUgSG9va3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxpc3RlblRvSG9zdCAmJiAhdGhpcy5zY3JvbGxDb250YWluZXIpIHtcbiAgICAgIHRoaXMuc2Nyb2xsQ29udGFpbmVyID0gdGhpcy5ob3N0UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB0aGlzLnVucmVnaXN0ZXIodGhpcy5fc2Nyb2xsQ29udGFpbmVyKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgZ2V0IGNsb3NlVG9FbmQoKTogT2JzZXJ2YWJsZTxFdmVudD4ge1xuICAgIHJldHVybiB0aGlzLl9jbG9zZVRvRW5kU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJcyB0aGUgdXNlciBjdXJyZW50bHkgc2Nyb2xsaW5nP1xuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBnZXQgc2Nyb2xsaW5nKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9zY3JvbGxpbmdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBjb250YWluZXJJZChjb250YWluZXJJZDogc3RyaW5nKSB7XG4gICAgY29uc3Qgc2Nyb2xsQ29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY29udGFpbmVySWQpO1xuICAgIGlmIChzY3JvbGxDb250YWluZXIpIHtcbiAgICAgIHRoaXMuc2Nyb2xsQ29udGFpbmVyID0gc2Nyb2xsQ29udGFpbmVyO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZ2dlci53YXJuKCdDb3VsZCBub3QgZmluZCBzY3JvbGwtY29udGFpbmVyIGJ5IGlkOiAnICsgY29udGFpbmVySWQpO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2Nyb2xsQ29udGFpbmVyKGNvbnRhaW5lcjogSFRNTEVsZW1lbnQpIHtcbiAgICB0aGlzLnVucmVnaXN0ZXIodGhpcy5fc2Nyb2xsQ29udGFpbmVyKTtcbiAgICB0aGlzLl9zY3JvbGxDb250YWluZXIgPSBjb250YWluZXI7XG4gICAgdGhpcy5yZWdpc3Rlcih0aGlzLl9zY3JvbGxDb250YWluZXIpO1xuICB9XG5cbiAgcHVibGljIGdldCBzY3JvbGxDb250YWluZXIoKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLl9zY3JvbGxDb250YWluZXI7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBtZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlZ2lzdGVyKHNjcm9sbENvbnRhaW5lcjogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAoc2Nyb2xsQ29udGFpbmVyKSB7XG4gICAgICAvLyB0aGlzLmxvZ2dlci5kZWJ1ZygnUmVnaXN0ZXJlZCBvbiBzY3JvbGwgY29udGFpbmVyOiAnLCB0aGlzLl9zY3JvbGxDb250YWluZXIpO1xuICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAvLyBBdHRhY2ggdGhlIHNjcm9sbCBldmVudCBsaXN0ZW5lciBvdXRzaWRlIG9mIEFuZ3VsYXIgY2hhbmdlIGRldGVjdGlvbiB6b25lXG4gICAgICAgIHNjcm9sbENvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLnNjcm9sbCwgdGhpcy5zY3JvbGxFdmVudExpc3RlbmVyT3B0aW9ucyk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVucmVnaXN0ZXIoc2Nyb2xsQ29udGFpbmVyOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGlmIChzY3JvbGxDb250YWluZXIpIHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLnNjcm9sbCwgdGhpcy5zY3JvbGxFdmVudExpc3RlbmVyT3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc0Nsb3NlVG9FbmQoZWw6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgaWYgKGVsKSB7XG4gICAgICBjb25zdCByYW5nZSA9IGVsLm9mZnNldEhlaWdodCAqIHRoaXMub2Zmc2V0RmFjdG9yO1xuICAgICAgY29uc3QgdG90YWwgPSBlbC5zY3JvbGxIZWlnaHQ7XG4gICAgICBjb25zdCBjdXJyZW50ID0gZWwuc2Nyb2xsVG9wICsgZWwub2Zmc2V0SGVpZ2h0O1xuICAgICAgcmV0dXJuICh0b3RhbCAtIGN1cnJlbnQpIDwgcmFuZ2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2Nyb2xsIGV2ZW50IGhhbmRsZXIsIGludm9rZWQgb3V0c2lkZSBvZiBhbmd1bGFyIHpvbmUuXG4gICAqL1xuICBwcml2YXRlIHNjcm9sbCA9IChldjogRXZlbnQpOiB2b2lkID0+IHtcbiAgICBpZiAodGhpcy5pZ25vcmVTY3JvbGxFdmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl96b25lZG91dFNjcm9sbEV2ZW50cy5uZXh0KGV2KTtcbiAgfVxuXG59XG4iXX0=
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItaW5maW5pdGUtc2Nyb2xsLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvaW5maW5pdGVzY3JvbGwvZWxkZXItaW5maW5pdGUtc2Nyb2xsLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBNkIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQy9GLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFjLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTs7QUFNeEUsTUFBTSxPQUFPLDRCQUE0QjtJQThCdkM7Ozs7Z0ZBSTRFO0lBRTVFLFlBQ21CLE1BQWMsRUFDZCxPQUFtQjtRQURuQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQXJDdEM7Ozs7b0ZBSTRFO1FBRTNELFdBQU0sR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUE7UUFHakUsaUJBQVksR0FBRyxJQUFJLENBQUE7UUFHbkIsa0JBQWEsR0FBRyxHQUFHLENBQUE7UUFHbkIsaUJBQVksR0FBRyxDQUFDLENBQUE7UUFHaEIsc0JBQWlCLEdBQUcsS0FBSyxDQUFBO1FBSWYsMEJBQXFCLEdBQUcsSUFBSSxPQUFPLEVBQVMsQ0FBQTtRQUM1Qyx1QkFBa0IsR0FBRyxJQUFJLGFBQWEsQ0FBUSxD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SSxFQUFFLEVBQUUsQ0FBQztZQUNQLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQTtZQUNqRCxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFBO1lBQzdCLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQTtZQUM5QyxPQUFPLEtBQUssR0FBRyxPQUFPLEdBQUcsS0FBSyxDQUFBO1FBQ2hDLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxLQUFLLENBQUE7UUFDZCxDQUFDO0lBQ0gsQ0FBQzs4R0F0S1UsNEJBQTRCO2tHQUE1Qiw0QkFBNEI7OzJGQUE1Qiw0QkFBNEI7a0JBSnhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsVUFBVSxFQUFFLElBQUk7aUJBQ2pCO29HQVdRLFlBQVk7c0JBRGxCLEtBQUs7Z0JBSUMsYUFBYTtzQkFEbkIsS0FBSztnQkFJQyxZQUFZO3NCQURsQixLQUFLO2dCQUlDLGlCQUFpQjtzQkFEdkIsS0FBSztnQkFvRkssVUFBVTtzQkFEcEIsTUFBTTtnQkFTSSxTQUFTO3NCQURuQixNQUFNO2dCQU1JLFdBQVc7c0JBRHJCLEtBQUs7Z0JBV0ssZUFBZTtzQkFEekIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQsIE5nWm9uZSwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBMb2dnZXJGYWN0b3J5IH0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgeyBsYXp5U2FtcGxlVGltZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9yeGpzL29wZXJhdG9ycy9sYXp5LXNhbXBsZSdcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2VsZGVySW5maW5pdGVTY3JvbGxdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgRWxkZXJJbmZpbml0ZVNjcm9sbERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpXG5cbiAgQElucHV0KClcbiAgcHVibGljIGxpc3RlblRvSG9zdCA9IHRydWVcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZXZlbnRUaHJvdHRsZSA9IDE4MFxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBvZmZzZXRGYWN0b3IgPSAxXG5cbiAgQElucHV0KClcbiAgcHVibGljIGlnbm9yZVNjcm9sbEV2ZW50ID0gZmFsc2VcblxuICBwcml2YXRlIHNjcm9sbEV2ZW50TGlzdGVuZXJPcHRpb25zOiBBZGRFdmVudExpc3RlbmVyT3B0aW9uc1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3pvbmVkb3V0U2Nyb2xsRXZlbnRzID0gbmV3IFN1YmplY3Q8RXZlbnQ+KClcbiAgcHJpdmF0ZSByZWFkb25seSBfY2xvc2VUb0VuZFN1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxFdmVudD4oMSlcbiAgcHJpdmF0ZSByZWFkb25seSBfc2Nyb2xsaW5nU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpXG5cbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KClcbiAgcHJpdmF0ZSBfc2Nyb2xsQ29udGFpbmVyOiBIVE1MRWxlbWVudFxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBob3N0UmVmOiBFbGVtZW50UmVmXG4gICkge1xuICAgIHRoaXMuc2Nyb2xsRXZlbnRMaXN0ZW5lck9wdGlvbnMgPSB7IGNhcHR1cmU6IHRydWUsIHBhc3NpdmU6IHRydWUgfVxuXG4gICAgY29uc3Qgc2Nyb2xsRXZlbnRzJCA9IHRoaXMuX3pvbmVkb3V0U2Nyb2xsRXZlbnRzLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICBmaWx0ZXIoKGV2KSA9PiAhIShldi50YXJnZXQgYXMgSFRNTEVsZW1lbnQpKVxuICAgIClcblxuICAgIHNjcm9sbEV2ZW50cyRcbiAgICAgIC5waXBlKFxuICAgICAgICBsYXp5U2FtcGxlVGltZSh0aGlzLmV2ZW50VGhyb3R0bGUsIHRydWUpIC8vIFJlbGF4XG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICBjb25zdCBldmVudFRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudFxuXG4gICAgICAgIGlmICh0aGlzLmlzQ2xvc2VUb0VuZChldmVudFRhcmdldCkpIHtcbiAgICAgICAgICAvLyBUaGUgem9uZWQgb3V0IGV2ZW50cyBhcmUgbm90IHRyYWNrZWQgYnkgYW5ndWxhciBjaGFuZ2UgZGV0ZWN0aW9uIGZvciBwZXJmb3JtYW5jZS5cbiAgICAgICAgICAvLyBBZnRlciB3ZSBoYXZlIGRlYm91bmNlZCBhbmQgZGlzdGlsbGVkIG91dCBhbiBpbnRlcmVzdGluZyBjbG9zZS10by1lbmQgZXZlbnQsIHdlIGxldCBhbmd1bGFyIGtub3c6XG4gICAgICAgICAgdGhpcy5fY2xvc2VUb0VuZFN1YmplY3QubmV4dChldmVudClcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgIHNjcm9sbEV2ZW50cyRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKGV2KSA9PiB7XG4gICAgICAgICAgaWYgKCF0aGlzLl9zY3JvbGxpbmdTdWJqZWN0LmdldFZhbHVlKCkpIHtcbiAgICAgICAgICAgIHRoaXMuX3Njcm9sbGluZ1N1YmplY3QubmV4dCh0cnVlKSAvLyBTY3JvbGxpbmcgU3RhcnRlZFxuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIGRlYm91bmNlVGltZSgzMDApXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5fc2Nyb2xsaW5nU3ViamVjdC5nZXRWYWx1ZSgpKSB7XG4gICAgICAgICAgdGhpcy5fc2Nyb2xsaW5nU3ViamVjdC5uZXh0KGZhbHNlKSAvLyBTY3JvbGxpbmcgRW5kZWRcbiAgICAgICAgfVxuICAgICAgfSlcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBMaWZlLUN5Y2xlIEhvb2tzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5saXN0ZW5Ub0hvc3QgJiYgIXRoaXMuc2Nyb2xsQ29udGFpbmVyKSB7XG4gICAgICB0aGlzLnNjcm9sbENvbnRhaW5lciA9IHRoaXMuaG9zdFJlZi5uYXRpdmVFbGVtZW50XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpXG4gICAgdGhpcy51bnJlZ2lzdGVyKHRoaXMuX3Njcm9sbENvbnRhaW5lcilcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgZ2V0IGNsb3NlVG9FbmQoKTogT2JzZXJ2YWJsZTxFdmVudD4ge1xuICAgIHJldHVybiB0aGlzLl9jbG9zZVRvRW5kU3ViamVjdC5hc09ic2VydmFibGUoKVxuICB9XG5cbiAgLyoqXG4gICAqIElzIHRoZSB1c2VyIGN1cnJlbnRseSBzY3JvbGxpbmc/XG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGdldCBzY3JvbGxpbmcoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3Njcm9sbGluZ1N1YmplY3QuYXNPYnNlcnZhYmxlKClcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgY29udGFpbmVySWQoY29udGFpbmVySWQ6IHN0cmluZykge1xuICAgIGNvbnN0IHNjcm9sbENvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGNvbnRhaW5lcklkKVxuICAgIGlmIChzY3JvbGxDb250YWluZXIpIHtcbiAgICAgIHRoaXMuc2Nyb2xsQ29udGFpbmVyID0gc2Nyb2xsQ29udGFpbmVyXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9nZ2VyLndhcm4oJ0NvdWxkIG5vdCBmaW5kIHNjcm9sbC1jb250YWluZXIgYnkgaWQ6ICcgKyBjb250YWluZXJJZClcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNjcm9sbENvbnRhaW5lcihjb250YWluZXI6IEhUTUxFbGVtZW50KSB7XG4gICAgdGhpcy51bnJlZ2lzdGVyKHRoaXMuX3Njcm9sbENvbnRhaW5lcilcbiAgICB0aGlzLl9zY3JvbGxDb250YWluZXIgPSBjb250YWluZXJcbiAgICB0aGlzLnJlZ2lzdGVyKHRoaXMuX3Njcm9sbENvbnRhaW5lcilcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2Nyb2xsQ29udGFpbmVyKCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5fc2Nyb2xsQ29udGFpbmVyXG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBtZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlZ2lzdGVyKHNjcm9sbENvbnRhaW5lcjogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAoc2Nyb2xsQ29udGFpbmVyKSB7XG4gICAgICAvLyB0aGlzLmxvZ2dlci5kZWJ1ZygnUmVnaXN0ZXJlZCBvbiBzY3JvbGwgY29udGFpbmVyOiAnLCB0aGlzLl9zY3JvbGxDb250YWluZXIpO1xuICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAvLyBBdHRhY2ggdGhlIHNjcm9sbCBldmVudCBsaXN0ZW5lciBvdXRzaWRlIG9mIEFuZ3VsYXIgY2hhbmdlIGRldGVjdGlvbiB6b25lXG4gICAgICAgIHNjcm9sbENvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLnNjcm9sbCwgdGhpcy5zY3JvbGxFdmVudExpc3RlbmVyT3B0aW9ucylcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1bnJlZ2lzdGVyKHNjcm9sbENvbnRhaW5lcjogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAoc2Nyb2xsQ29udGFpbmVyKSB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5zY3JvbGwsIHRoaXMuc2Nyb2xsRXZlbnRMaXN0ZW5lck9wdGlvbnMpXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc0Nsb3NlVG9FbmQoZWw6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgaWYgKGVsKSB7XG4gICAgICBjb25zdCByYW5nZSA9IGVsLm9mZnNldEhlaWdodCAqIHRoaXMub2Zmc2V0RmFjdG9yXG4gICAgICBjb25zdCB0b3RhbCA9IGVsLnNjcm9sbEhlaWdodFxuICAgICAgY29uc3QgY3VycmVudCA9IGVsLnNjcm9sbFRvcCArIGVsLm9mZnNldEhlaWdodFxuICAgICAgcmV0dXJuIHRvdGFsIC0gY3VycmVudCA8IHJhbmdlXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTY3JvbGwgZXZlbnQgaGFuZGxlciwgaW52b2tlZCBvdXRzaWRlIG9mIGFuZ3VsYXIgem9uZS5cbiAgICovXG4gIHByaXZhdGUgc2Nyb2xsID0gKGV2OiBFdmVudCk6IHZvaWQgPT4ge1xuICAgIGlmICh0aGlzLmlnbm9yZVNjcm9sbEV2ZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgdGhpcy5fem9uZWRvdXRTY3JvbGxFdmVudHMubmV4dChldilcbiAgfVxufVxuIl19
@@ -7,20 +7,14 @@ export { ElderInfiniteScrollDirective } from './elder-infinite-scroll.directive'
7
7
  export { ElderInfiniteAutocompleteDirective } from './elder-infinite-autocomplete.directive';
8
8
  export class ElderInfiniteScrollModule {
9
9
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ElderInfiniteScrollModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
10
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.2", ngImport: i0, type: ElderInfiniteScrollModule, imports: [CommonModule, ElderInfiniteScrollDirective,
11
- ElderInfiniteAutocompleteDirective], exports: [ElderInfiniteScrollDirective,
12
- ElderInfiniteAutocompleteDirective] }); }
10
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.2", ngImport: i0, type: ElderInfiniteScrollModule, imports: [CommonModule, ElderInfiniteScrollDirective, ElderInfiniteAutocompleteDirective], exports: [ElderInfiniteScrollDirective, ElderInfiniteAutocompleteDirective] }); }
13
11
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ElderInfiniteScrollModule, imports: [CommonModule] }); }
14
12
  }
15
13
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ElderInfiniteScrollModule, decorators: [{
16
14
  type: NgModule,
17
15
  args: [{
18
- exports: [
19
- ElderInfiniteScrollDirective,
20
- ElderInfiniteAutocompleteDirective
21
- ],
22
- imports: [CommonModule, ElderInfiniteScrollDirective,
23
- ElderInfiniteAutocompleteDirective]
16
+ exports: [ElderInfiniteScrollDirective, ElderInfiniteAutocompleteDirective],
17
+ imports: [CommonModule, ElderInfiniteScrollDirective, ElderInfiniteAutocompleteDirective],
24
18
  }]
25
19
  }] });
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItaW5maW5pdGUtc2Nyb2xsLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvaW5maW5pdGVzY3JvbGwvZWxkZXItaW5maW5pdGUtc2Nyb2xsLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyw0QkFBNEIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQy9FLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsa0NBQWtDLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQzs7QUFFM0YsT0FBTyxFQUFDLDRCQUE0QixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDL0UsT0FBTyxFQUFDLGtDQUFrQyxFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFXM0YsTUFBTSxPQUFPLHlCQUF5Qjs4R0FBekIseUJBQXlCOytHQUF6Qix5QkFBeUIsWUFIeEIsWUFBWSxFQUFFLDRCQUE0QjtZQUNoRCxrQ0FBa0MsYUFKbEMsNEJBQTRCO1lBQzVCLGtDQUFrQzsrR0FLN0IseUJBQXlCLFlBSHhCLFlBQVk7OzJGQUdiLHlCQUF5QjtrQkFSckMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wsNEJBQTRCO3dCQUM1QixrQ0FBa0M7cUJBQ3JDO29CQUNELE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSw0QkFBNEI7d0JBQ2hELGtDQUFrQyxDQUFDO2lCQUMxQyIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0VsZGVySW5maW5pdGVTY3JvbGxEaXJlY3RpdmV9IGZyb20gJy4vZWxkZXItaW5maW5pdGUtc2Nyb2xsLmRpcmVjdGl2ZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7RWxkZXJJbmZpbml0ZUF1dG9jb21wbGV0ZURpcmVjdGl2ZX0gZnJvbSAnLi9lbGRlci1pbmZpbml0ZS1hdXRvY29tcGxldGUuZGlyZWN0aXZlJztcblxuZXhwb3J0IHtFbGRlckluZmluaXRlU2Nyb2xsRGlyZWN0aXZlfSBmcm9tICcuL2VsZGVyLWluZmluaXRlLXNjcm9sbC5kaXJlY3RpdmUnO1xuZXhwb3J0IHtFbGRlckluZmluaXRlQXV0b2NvbXBsZXRlRGlyZWN0aXZlfSBmcm9tICcuL2VsZGVyLWluZmluaXRlLWF1dG9jb21wbGV0ZS5kaXJlY3RpdmUnO1xuXG5cbkBOZ01vZHVsZSh7XG4gICAgZXhwb3J0czogW1xuICAgICAgICBFbGRlckluZmluaXRlU2Nyb2xsRGlyZWN0aXZlLFxuICAgICAgICBFbGRlckluZmluaXRlQXV0b2NvbXBsZXRlRGlyZWN0aXZlXG4gICAgXSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBFbGRlckluZmluaXRlU2Nyb2xsRGlyZWN0aXZlLFxuICAgICAgICBFbGRlckluZmluaXRlQXV0b2NvbXBsZXRlRGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBFbGRlckluZmluaXRlU2Nyb2xsTW9kdWxlIHsgfVxuXG5cblxuIl19
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItaW5maW5pdGUtc2Nyb2xsLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvaW5maW5pdGVzY3JvbGwvZWxkZXItaW5maW5pdGUtc2Nyb2xsLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3hDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG1DQUFtQyxDQUFBO0FBQ2hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTs7QUFFNUYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUNBQW1DLENBQUE7QUFDaEYsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0seUNBQXlDLENBQUE7QUFNNUYsTUFBTSxPQUFPLHlCQUF5Qjs4R0FBekIseUJBQXlCOytHQUF6Qix5QkFBeUIsWUFGMUIsWUFBWSxFQUFFLDRCQUE0QixFQUFFLGtDQUFrQyxhQUQ5RSw0QkFBNEIsRUFBRSxrQ0FBa0M7K0dBRy9ELHlCQUF5QixZQUYxQixZQUFZOzsyRkFFWCx5QkFBeUI7a0JBSnJDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsNEJBQTRCLEVBQUUsa0NBQWtDLENBQUM7b0JBQzNFLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSw0QkFBNEIsRUFBRSxrQ0FBa0MsQ0FBQztpQkFDMUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBFbGRlckluZmluaXRlU2Nyb2xsRGlyZWN0aXZlIH0gZnJvbSAnLi9lbGRlci1pbmZpbml0ZS1zY3JvbGwuZGlyZWN0aXZlJ1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgRWxkZXJJbmZpbml0ZUF1dG9jb21wbGV0ZURpcmVjdGl2ZSB9IGZyb20gJy4vZWxkZXItaW5maW5pdGUtYXV0b2NvbXBsZXRlLmRpcmVjdGl2ZSdcblxuZXhwb3J0IHsgRWxkZXJJbmZpbml0ZVNjcm9sbERpcmVjdGl2ZSB9IGZyb20gJy4vZWxkZXItaW5maW5pdGUtc2Nyb2xsLmRpcmVjdGl2ZSdcbmV4cG9ydCB7IEVsZGVySW5maW5pdGVBdXRvY29tcGxldGVEaXJlY3RpdmUgfSBmcm9tICcuL2VsZGVyLWluZmluaXRlLWF1dG9jb21wbGV0ZS5kaXJlY3RpdmUnXG5cbkBOZ01vZHVsZSh7XG4gIGV4cG9ydHM6IFtFbGRlckluZmluaXRlU2Nyb2xsRGlyZWN0aXZlLCBFbGRlckluZmluaXRlQXV0b2NvbXBsZXRlRGlyZWN0aXZlXSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRWxkZXJJbmZpbml0ZVNjcm9sbERpcmVjdGl2ZSwgRWxkZXJJbmZpbml0ZUF1dG9jb21wbGV0ZURpcmVjdGl2ZV0sXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVySW5maW5pdGVTY3JvbGxNb2R1bGUge31cbiJdfQ==
@@ -6,4 +6,4 @@ export class ElderAutocompleteOptionSelected {
6
6
  this.optionValue = optionValue;
7
7
  }
8
8
  }
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItYXV0b2NvbXBsZXRlLW9wdGlvbi1zZWxlY3RlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXQvYXV0b2NvbXBsZXRlL2VsZGVyLWF1dG9jb21wbGV0ZS9lbGRlci1hdXRvY29tcGxldGUtb3B0aW9uLXNlbGVjdGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTywrQkFBK0I7SUFDMUMsWUFDa0IsTUFBNkMsRUFDN0MsUUFBYSxFQUNiLE1BQVMsRUFDVCxXQUFnQjtRQUhoQixXQUFNLEdBQU4sTUFBTSxDQUF1QztRQUM3QyxhQUFRLEdBQVIsUUFBUSxDQUFLO1FBQ2IsV0FBTSxHQUFOLE1BQU0sQ0FBRztRQUNULGdCQUFXLEdBQVgsV0FBVyxDQUFLO0lBRWxDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RWxkZXJTdWdnZXN0aW9uUGFuZWxDb21wb25lbnR9IGZyb20gJy4vZWxkZXItc3VnZ2VzdGlvbi1wYW5lbC5jb21wb25lbnQnO1xuXG5leHBvcnQgY2xhc3MgRWxkZXJBdXRvY29tcGxldGVPcHRpb25TZWxlY3RlZDxUID0gYW55LCBUSWQgPSBhbnk+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IHNvdXJjZTogRWxkZXJTdWdnZXN0aW9uUGFuZWxDb21wb25lbnQ8VCwgVElkPixcbiAgICBwdWJsaWMgcmVhZG9ubHkgZW50aXR5SWQ6IFRJZCxcbiAgICBwdWJsaWMgcmVhZG9ubHkgZW50aXR5OiBULFxuICAgIHB1YmxpYyByZWFkb25seSBvcHRpb25WYWx1ZTogYW55XG4gICkge1xuICB9XG59XG4iXX0=
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItYXV0b2NvbXBsZXRlLW9wdGlvbi1zZWxlY3RlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXQvYXV0b2NvbXBsZXRlL2VsZGVyLWF1dG9jb21wbGV0ZS9lbGRlci1hdXRvY29tcGxldGUtb3B0aW9uLXNlbGVjdGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTywrQkFBK0I7SUFDMUMsWUFDa0IsTUFBNkMsRUFDN0MsUUFBYSxFQUNiLE1BQVMsRUFDVCxXQUFnQjtRQUhoQixXQUFNLEdBQU4sTUFBTSxDQUF1QztRQUM3QyxhQUFRLEdBQVIsUUFBUSxDQUFLO1FBQ2IsV0FBTSxHQUFOLE1BQU0sQ0FBRztRQUNULGdCQUFXLEdBQVgsV0FBVyxDQUFLO0lBQy9CLENBQUM7Q0FDTCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZGVyU3VnZ2VzdGlvblBhbmVsQ29tcG9uZW50IH0gZnJvbSAnLi9lbGRlci1zdWdnZXN0aW9uLXBhbmVsLmNvbXBvbmVudCdcblxuZXhwb3J0IGNsYXNzIEVsZGVyQXV0b2NvbXBsZXRlT3B0aW9uU2VsZWN0ZWQ8VCA9IGFueSwgVElkID0gYW55PiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSBzb3VyY2U6IEVsZGVyU3VnZ2VzdGlvblBhbmVsQ29tcG9uZW50PFQsIFRJZD4sXG4gICAgcHVibGljIHJlYWRvbmx5IGVudGl0eUlkOiBUSWQsXG4gICAgcHVibGljIHJlYWRvbmx5IGVudGl0eTogVCxcbiAgICBwdWJsaWMgcmVhZG9ubHkgb3B0aW9uVmFsdWU6IGFueVxuICApIHt9XG59XG4iXX0=
@@ -1,7 +1,7 @@
1
- import { ChangeDetectionStrategy, Component, ContentChild, Input, Output, TemplateRef, ViewChild } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, ContentChild, Input, Output, TemplateRef, ViewChild, } from '@angular/core';
2
2
  import { LoggerFactory } from '@elderbyte/ts-logger';
3
3
  import { BehaviorSubject, combineLatest, of, Subject } from 'rxjs';
4
- import { isContinuableDataContext } from '../../../../common/data/data-context/data-context';
4
+ import { isContinuableDataContext, } from '../../../../common/data/data-context/data-context';
5
5
  import { coerceBooleanProperty } from '@angular/cdk/coercion';
6
6
  import { filter, map, switchMap } from 'rxjs/operators';
7
7
  import { runInZone } from '../../../../common/utils/ng-zone-utils';
@@ -53,14 +53,14 @@ export class ElderSuggestionPanelComponent {
53
53
  this.displayPropertyResolver$ = new BehaviorSubject((value) => this.propertyStringValue(value, null));
54
54
  this.optionSelected = new Subject();
55
55
  this.hiddenOptionsCount$ = new BehaviorSubject(0);
56
- this.dataState$ = this.dataContext$.pipe(filter(dc => !!dc), switchMap(dc => dc.status), runInZone(this.zone));
57
- this.availableSuggestions$ = this.dataContext$.pipe(switchMap(dc => dc ? dc.data : of([])), runInZone(this.zone));
58
- this.availableSuggestions$.pipe(takeUntilDestroyed(destroyRef), map(suggestions => suggestions.filter(suggestion => this.isOptionHidden(suggestion))), map(suggestion => suggestion.length)).subscribe(count => this.hiddenOptionsCount$.next(count));
59
- combineLatest([
60
- this.dataSource$,
61
- this.triggerReload$
62
- ])
63
- .pipe(takeUntilDestroyed(destroyRef), filter(([ds]) => !!ds)).subscribe(([ds]) => {
56
+ this.dataState$ = this.dataContext$.pipe(filter((dc) => !!dc), switchMap((dc) => dc.status), runInZone(this.zone));
57
+ this.availableSuggestions$ = this.dataContext$.pipe(switchMap((dc) => (dc ? dc.data : of([]))), runInZone(this.zone));
58
+ this.availableSuggestions$
59
+ .pipe(takeUntilDestroyed(destroyRef), map((suggestions) => suggestions.filter((suggestion) => this.isOptionHidden(suggestion))), map((suggestion) => suggestion.length))
60
+ .subscribe((count) => this.hiddenOptionsCount$.next(count));
61
+ combineLatest([this.dataSource$, this.triggerReload$])
62
+ .pipe(takeUntilDestroyed(destroyRef), filter(([ds]) => !!ds))
63
+ .subscribe(([ds]) => {
64
64
  this.dataContext$.next(this.buildDataContextWithPageSize(ds));
65
65
  });
66
66
  }
@@ -111,7 +111,7 @@ export class ElderSuggestionPanelComponent {
111
111
  getEntityById(id) {
112
112
  const dc = this.dataContext;
113
113
  if (dc) {
114
- return dc.snapshot.data.find(e => this.getId(e) == id);
114
+ return dc.snapshot.data.find((e) => this.getId(e) == id);
115
115
  }
116
116
  return undefined;
117
117
  }
@@ -190,19 +190,28 @@ export class ElderSuggestionPanelComponent {
190
190
  if (this.dataContext) {
191
191
  this.dataContext.close();
192
192
  }
193
- return DataContextBuilder.start()
194
- .pageSize(this.calculatePageSize())
195
- .build(dataSource);
193
+ return DataContextBuilder.start().pageSize(this.calculatePageSize()).build(dataSource);
196
194
  }
197
195
  calculatePageSize() {
198
196
  return this.PAGE_SIZE + this.hiddenOptionsCount$.getValue();
199
197
  }
200
198
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ElderSuggestionPanelComponent, deps: [{ token: i0.NgZone }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component }); }
201
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.2", type: ElderSuggestionPanelComponent, isStandalone: true, selector: "elder-suggestion-panel", inputs: { isOptionDisabledFn: "isOptionDisabledFn", isOptionHiddenFn: "isOptionHiddenFn", optionValueConverterFn: "optionValueConverterFn", enabled: "enabled", valueTemplate: "valueTemplate", dataContext: "dataContext", dataSource: "dataSource", 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: ["elderSuggestionPanel"], 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()\"\n>\n <!--\n <mat-option *ngIf=\"allowNull\" [value]=\"null\">{{nullDisplay | translate}}</mat-option>\n -->\n\n @if (dataContext$ | async; as dc) {\n\n @if (dc.isClosed) {\n <mat-option disabled>\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\n @if (availableSuggestions$ | async; as suggestions) {\n\n @if (suggestions.length === 0) {\n <mat-option disabled>No Data.</mat-option>\n }\n\n @for (suggestion of suggestions; track getIdAsString(suggestion)) {\n @if (isOptionVisible(suggestion)) {\n <mat-option\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 }\n }\n }\n } @else {\n <mat-option disabled>\n <span class=\"mat-caption\">\n No DataContext!\n @if(dataSource$ | async; as ds) {\n (DataSource: {{ ds ? 'available' : 'missing' }})\n {{enabled ? 'Autocomplete Enabled' : 'Autocomplete DISABLED'}}\n }\n </span>\n </mat-option>\n }\n\n <ng-container *ngIf=\"dataState$ | async as state\">\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: 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 }); }
199
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.2", type: ElderSuggestionPanelComponent, isStandalone: true, selector: "elder-suggestion-panel", inputs: { isOptionDisabledFn: "isOptionDisabledFn", isOptionHiddenFn: "isOptionHiddenFn", optionValueConverterFn: "optionValueConverterFn", enabled: "enabled", valueTemplate: "valueTemplate", dataContext: "dataContext", dataSource: "dataSource", 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: ["elderSuggestionPanel"], ngImport: i0, template: "<mat-autocomplete\n #auto=\"matAutocomplete\"\n panelWidth=\"auto\"\n [autoActiveFirstOption]=\"true\"\n (opened)=\"onAutocompleteOpened($event)\"\n (optionSelected)=\"onOptionSelected($event)\"\n elderInfiniteScroll\n elderElderInfiniteAutocomplete\n (closeToEnd)=\"onAutoCompleteCloseToEnd()\"\n>\n <!--\n <mat-option *ngIf=\"allowNull\" [value]=\"null\">{{nullDisplay | translate}}</mat-option>\n -->\n\n @if (dataContext$ | async; as dc) {\n @if (dc.isClosed) {\n <mat-option disabled>\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\n @if (availableSuggestions$ | async; as suggestions) {\n @if (suggestions.length === 0) {\n <mat-option disabled>No Data.</mat-option>\n }\n\n @for (suggestion of suggestions; track getIdAsString(suggestion)) {\n @if (isOptionVisible(suggestion)) {\n <mat-option\n [value]=\"toOptionValue(suggestion)\"\n [id]=\"getIdAsString(suggestion)\"\n [disabled]=\"!isOptionAvailable(suggestion)\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n valueTemplate || simpleValueTemplate;\n context: { $implicit: suggestion }\n \"\n >\n </ng-container>\n <!--\n <span class=\"mat-caption\">value: {{toOptionValue(suggestion)}}</span>\n -->\n </mat-option>\n }\n }\n }\n } @else {\n <mat-option disabled>\n <span class=\"mat-caption\">\n No DataContext!\n @if (dataSource$ | async; as ds) {\n (DataSource: {{ ds ? 'available' : 'missing' }})\n {{ enabled ? 'Autocomplete Enabled' : 'Autocomplete DISABLED' }}\n }\n </span>\n </mat-option>\n }\n\n <ng-container *ngIf=\"dataState$ | async as state\">\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 </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: 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 }); }
202
200
  }
203
201
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ElderSuggestionPanelComponent, decorators: [{
204
202
  type: Component,
205
- args: [{ selector: 'elder-suggestion-panel', exportAs: 'elderSuggestionPanel', 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()\"\n>\n <!--\n <mat-option *ngIf=\"allowNull\" [value]=\"null\">{{nullDisplay | translate}}</mat-option>\n -->\n\n @if (dataContext$ | async; as dc) {\n\n @if (dc.isClosed) {\n <mat-option disabled>\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\n @if (availableSuggestions$ | async; as suggestions) {\n\n @if (suggestions.length === 0) {\n <mat-option disabled>No Data.</mat-option>\n }\n\n @for (suggestion of suggestions; track getIdAsString(suggestion)) {\n @if (isOptionVisible(suggestion)) {\n <mat-option\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 }\n }\n }\n } @else {\n <mat-option disabled>\n <span class=\"mat-caption\">\n No DataContext!\n @if(dataSource$ | async; as ds) {\n (DataSource: {{ ds ? 'available' : 'missing' }})\n {{enabled ? 'Autocomplete Enabled' : 'Autocomplete DISABLED'}}\n }\n </span>\n </mat-option>\n }\n\n <ng-container *ngIf=\"dataState$ | async as state\">\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" }]
203
+ args: [{ selector: 'elder-suggestion-panel', exportAs: 'elderSuggestionPanel', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
204
+ MatAutocomplete,
205
+ ElderInfiniteAutocompleteDirective,
206
+ ElderInfiniteScrollDirective,
207
+ NgIf,
208
+ MatOption,
209
+ MatIcon,
210
+ NgFor,
211
+ NgTemplateOutlet,
212
+ MatProgressBar,
213
+ AsyncPipe,
214
+ ], template: "<mat-autocomplete\n #auto=\"matAutocomplete\"\n panelWidth=\"auto\"\n [autoActiveFirstOption]=\"true\"\n (opened)=\"onAutocompleteOpened($event)\"\n (optionSelected)=\"onOptionSelected($event)\"\n elderInfiniteScroll\n elderElderInfiniteAutocomplete\n (closeToEnd)=\"onAutoCompleteCloseToEnd()\"\n>\n <!--\n <mat-option *ngIf=\"allowNull\" [value]=\"null\">{{nullDisplay | translate}}</mat-option>\n -->\n\n @if (dataContext$ | async; as dc) {\n @if (dc.isClosed) {\n <mat-option disabled>\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\n @if (availableSuggestions$ | async; as suggestions) {\n @if (suggestions.length === 0) {\n <mat-option disabled>No Data.</mat-option>\n }\n\n @for (suggestion of suggestions; track getIdAsString(suggestion)) {\n @if (isOptionVisible(suggestion)) {\n <mat-option\n [value]=\"toOptionValue(suggestion)\"\n [id]=\"getIdAsString(suggestion)\"\n [disabled]=\"!isOptionAvailable(suggestion)\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n valueTemplate || simpleValueTemplate;\n context: { $implicit: suggestion }\n \"\n >\n </ng-container>\n <!--\n <span class=\"mat-caption\">value: {{toOptionValue(suggestion)}}</span>\n -->\n </mat-option>\n }\n }\n }\n } @else {\n <mat-option disabled>\n <span class=\"mat-caption\">\n No DataContext!\n @if (dataSource$ | async; as ds) {\n (DataSource: {{ ds ? 'available' : 'missing' }})\n {{ enabled ? 'Autocomplete Enabled' : 'Autocomplete DISABLED' }}\n }\n </span>\n </mat-option>\n }\n\n <ng-container *ngIf=\"dataState$ | async as state\">\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 </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" }]
206
215
  }], ctorParameters: () => [{ type: i0.NgZone }, { type: i0.DestroyRef }], propDecorators: { valueTemplateQuery: [{
207
216
  type: ContentChild,
208
217
  args: [ElderSelectValueDirective, { read: TemplateRef, static: true }]
@@ -228,4 +237,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
228
237
  }], displayPropertyResolver: [{
229
238
  type: Input
230
239
  }] } });
231
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItc3VnZ2VzdGlvbi1wYW5lbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0L2F1dG9jb21wbGV0ZS9lbGRlci1hdXRvY29tcGxldGUvZWxkZXItc3VnZ2VzdGlvbi1wYW5lbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0L2F1dG9jb21wbGV0ZS9lbGRlci1hdXRvY29tcGxldGUvZWxkZXItc3VnZ2VzdGlvbi1wYW5lbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBRVosS0FBSyxFQUVMLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdFLE9BQU8sRUFBZSx3QkFBd0IsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBQ3pHLE9BQU8sRUFBZSxxQkFBcUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQzFFLE9BQU8sRUFBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUVqRSxPQUFPLEVBQUMsZUFBZSxFQUErQixNQUFNLGdDQUFnQyxDQUFDO0FBQzdGLE9BQU8sRUFBQyx5QkFBeUIsRUFB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QUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM5RCxDQUFDOzhHQTVRVSw2QkFBNkI7a0dBQTdCLDZCQUE2Qiw2ZEFtQjFCLHlCQUF5QiwyQkFBUyxXQUFXLHdMQzdEN0QseTdFQTJFQSwwRERuQ1ksZUFBZSx5V0FBRSxrQ0FBa0MsNkZBQUUsNEJBQTRCLDBOQUFFLElBQUksNkZBQUUsU0FBUyxxSkFBRSxPQUFPLDJJQUFTLGdCQUFnQixvSkFBRSxjQUFjLG9LQUFFLFNBQVM7OzJGQUU5Siw2QkFBNkI7a0JBVHpDLFNBQVM7K0JBQ0Usd0JBQXdCLFlBQ3hCLHNCQUFzQixtQkFHZix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUCxDQUFDLGVBQWUsRUFBRSxrQ0FBa0MsRUFBRSw0QkFBNEIsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLFNBQVMsQ0FBQztvR0FzQm5LLGtCQUFrQjtzQkFEeEIsWUFBWTt1QkFBQyx5QkFBeUIsRUFBRSxFQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQztnQkFVL0QsZUFBZTtzQkFEekIsU0FBUzt1QkFBQyxNQUFNO2dCQU1WLGtCQUFrQjtzQkFEeEIsS0FBSztnQkFJQyxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBSUMsc0JBQXNCO3NCQUQ1QixLQUFLO2dCQWtCVSxjQUFjO3NCQUQ3QixNQUFNO2dCQXNESSxPQUFPO3NCQURqQixLQUFLO2dCQVVLLGFBQWE7c0JBRHZCLEtBQUs7Z0JBVUssV0FBVztzQkFEckIsS0FBSztnQkFVSyxVQUFVO3NCQURwQixLQUFLO2dCQVlLLHVCQUF1QjtzQkFEakMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRGVzdHJveVJlZixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtMb2dnZXJGYWN0b3J5fSBmcm9tICdAZWxkZXJieXRlL3RzLWxvZ2dlcic7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtJRGF0YUNvbnRleHQsIGlzQ29udGludWFibGVEYXRhQ29udGV4dH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tbW9uL2RhdGEvZGF0YS1jb250ZXh0L2RhdGEtY29udGV4dCc7XG5pbXBvcnQge0Jvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5fSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge3J1bkluWm9uZX0gZnJvbSAnLi4vLi4vLi4vLi4vY29tbW9uL3V0aWxzL25nLXpvbmUtdXRpbHMnO1xuaW1wb3J0IHtEYXRhQ29udGV4dFN0YXR1c30gZnJvbSAnLi4vLi4vLi4vLi4vY29tbW9uL2RhdGEvZGF0YS1jb250ZXh0L2RhdGEtY29udGV4dC1zdGF0dXMnO1xuaW1wb3J0IHtNYXRBdXRvY29tcGxldGUsIE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnR9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQge0VsZGVyU2VsZWN0VmFsdWVEaXJlY3RpdmV9IGZyb20gJy4uLy4uLy4uL3NlbGVjdC9lbGRlci1zZWxlY3QtdmFsdWUuZGlyZWN0aXZlJztcbmltcG9ydCB7RWxkZXJBdXRvY29tcGxldGVPcHRpb25TZWxlY3RlZH0gZnJvbSAnLi9lbGRlci1hdXRvY29tcGxldGUtb3B0aW9uLXNlbGVjdGVkJztcbmltcG9ydCB7SURhdGFTb3VyY2V9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi9kYXRhL2RhdGFzb3VyY2UvZGF0YS1zb3VyY2UnO1xuaW1wb3J0IHtEYXRhQ29udGV4dEJ1aWxkZXJ9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi9kYXRhL2RhdGEtY29udGV4dC9kYXRhLWNvbnRleHQtYnVpbGRlcic7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtNYXRQcm9ncmVzc0Jhcn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3MtYmFyJztcbmltcG9ydCB7TWF0SWNvbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQge01hdE9wdGlvbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQge05nSWYsIE5nRm9yLCBOZ1RlbXBsYXRlT3V0bGV0LCBBc3luY1BpcGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0VsZGVySW5maW5pdGVTY3JvbGxEaXJlY3RpdmV9IGZyb20gJy4uLy4uLy4uL2luZmluaXRlc2Nyb2xsL2VsZGVyLWluZmluaXRlLXNjcm9sbC5kaXJlY3RpdmUnO1xuaW1wb3J0IHtFbGRlckluZmluaXRlQXV0b2NvbXBsZXRlRGlyZWN0aXZlfSBmcm9tICcuLi8uLi8uLi9pbmZpbml0ZXNjcm9sbC9lbGRlci1pbmZpbml0ZS1hdXRvY29tcGxldGUuZGlyZWN0aXZlJztcblxudHlwZSBUZXh0UmVzb2x2ZXJGbiA9ICh2YWx1ZTogYW55KSA9PiBzdHJpbmc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VsZGVyLXN1Z2dlc3Rpb24tcGFuZWwnLFxuICBleHBvcnRBczogJ2VsZGVyU3VnZ2VzdGlvblBhbmVsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VsZGVyLXN1Z2dlc3Rpb24tcGFuZWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lbGRlci1zdWdnZXN0aW9uLXBhbmVsLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTWF0QXV0b2NvbXBsZXRlLCBFbGRlckluZmluaXRlQXV0b2NvbXBsZXRlRGlyZWN0aXZlLCBFbGRlckluZmluaXRlU2Nyb2xsRGlyZWN0aXZlLCBOZ0lmLCBNYXRPcHRpb24sIE1hdEljb24sIE5nRm9yLCBOZ1RlbXBsYXRlT3V0bGV0LCBNYXRQcm9ncmVzc0JhciwgQXN5bmNQaXBlXVxufSlcbmV4cG9ydCBjbGFzcyBFbGRlclN1Z2dlc3Rpb25QYW5lbENvbXBvbmVudDxUID0gYW55LCBUSWQgPSBhbnk+IHtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXMuY29uc3RydWN0b3IubmFtZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgUEFHRV9TSVpFID0gMTA7XG5cbiAgLyoqXG4gICAqIElzIHRoaXMgYXV0by1jb21wbGV0ZSBlbmFibGVkP1xuICAgKi9cbiAgcHJpdmF0ZSBfZW5hYmxlZCA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSB0ZW1wbGF0ZSB0byBjdXN0b21pemUgdGhlIHVpIGxvb2suXG4gICAqL1xuICBAQ29udGVudENoaWxkKEVsZGVyU2VsZWN0VmFsdWVEaXJlY3RpdmUsIHtyZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlfSlcbiAgcHVibGljIHZhbHVlVGVtcGxhdGVRdWVyeTogVGVtcGxhdGVSZWY8YW55PjtcbiAgcHJpdmF0ZSBfdmFsdWVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvKipcbiAgICogVGhlIHVuZGVybHlpbmcgTWF0ZXJpYWwgQXV0b2NvbXBsZXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbWF0QXV0b2NvbXBsZXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF0QXV0b2NvbXBsZXRlPihudWxsKTtcblxuICBAVmlld0NoaWxkKCdhdXRvJylcbiAgcHVibGljIHNldCBtYXRBdXRvY29tcGxldGUoYXV0bzogTWF0QXV0b2NvbXBsZXRlKSB7XG4gICAgdGhpcy5tYXRBdXRvY29tcGxldGUkLm5leHQoYXV0byk7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgaXNPcHRpb25EaXNhYmxlZEZuOiAob3B0aW9uOiBUKSA9PiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpc09wdGlvbkhpZGRlbkZuOiAob3B0aW9uOiBUKSA9PiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBvcHRpb25WYWx1ZUNvbnZlcnRlckZuOiAob3B0aW9uOiBUKSA9PiBhbnk7XG5cbiAgLyoqXG4gICAqIFRoZSBEYXRhQ29udGV4dCB3aGljaCBob2xkcyB0aGUgYXV0b2NvbXBsZXRlIHN1Z2dlc3Rpb25zLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRhdGFDb250ZXh0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SURhdGFDb250ZXh0PFQ+PihudWxsKTtcbiAgcHVibGljIHJlYWRvbmx5IGRhdGFTb3VyY2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJRGF0YVNvdXJjZTxUPj4obnVsbCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHRyaWdnZXJSZWxvYWQkID0gbmV3IFN1YmplY3Q8YW55PigpO1xuXG4gIHB1YmxpYyByZWFkb25seSBkaXNwbGF5UHJvcGVydHlSZXNvbHZlciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRleHRSZXNvbHZlckZuPigodmFsdWU6IFQpID0+IHRoaXMucHJvcGVydHlTdHJpbmdWYWx1ZSh2YWx1ZSwgbnVsbCkpO1xuXG4gIHB1YmxpYyByZWFkb25seSBkYXRhU3RhdGUkOiBPYnNlcnZhYmxlPERhdGFDb250ZXh0U3RhdHVzPjtcblxuICBwdWJsaWMgcmVhZG9ubHkgYXZhaWxhYmxlU3VnZ2VzdGlvbnMkOiBPYnNlcnZhYmxlPFRbXT47XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyByZWFkb25seSBvcHRpb25TZWxlY3RlZCA9IG5ldyBTdWJqZWN0PEVsZGVyQXV0b2NvbXBsZXRlT3B0aW9uU2VsZWN0ZWQ+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBoaWRkZW5PcHRpb25zQ291bnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgem9uZTogTmdab25lLFxuICAgIHByaXZhdGUgZGVzdHJveVJlZjogRGVzdHJveVJlZlxuICApIHtcbiAgICB0aGlzLmRhdGFTdGF0ZSQgPSB0aGlzLmRhdGFDb250ZXh0JC5waXBlKFxuICAgICAgZmlsdGVyKGRjID0+ICEhZGMpLFxuICAgICAgc3dpdGNoTWFwKGRjID0+IGRjLnN0YXR1cyksXG4gICAgICBydW5JblpvbmUodGhpcy56b25lKVxuICAgICk7XG5cbiAgICB0aGlzLmF2YWlsYWJsZVN1Z2dlc3Rpb25zJCA9IHRoaXMuZGF0YUNvbnRleHQkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoZGMgPT4gZGMgPyBkYy5kYXRhIDogb2YoW10pKSxcbiAgICAgIHJ1bkluWm9uZSh0aGlzLnpvbmUpXG4gICAgKTtcblxuICAgIHRoaXMuYXZhaWxhYmxlU3VnZ2VzdGlvbnMkLnBpcGUoXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQoZGVzdHJveVJlZiksXG4gICAgICBtYXAoc3VnZ2VzdGlvbnMgPT4gc3VnZ2VzdGlvbnMuZmlsdGVyKHN1Z2dlc3Rpb24gPT4gdGhpcy5pc09wdGlvbkhpZGRlbihzdWdnZXN0aW9uKSkpLFxuICAgICAgbWFwKHN1Z2dlc3Rpb24gPT4gc3VnZ2VzdGlvbi5sZW5ndGgpXG4gICAgKS5zdWJzY3JpYmUoY291bnQgPT5cbiAgICAgIHRoaXMuaGlkZGVuT3B0aW9uc0NvdW50JC5uZXh0KGNvdW50KVxuICAgICk7XG5cbiAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZSQsXG4gICAgICB0aGlzLnRyaWdnZXJSZWxvYWQkXG4gICAgXSlcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoZGVzdHJveVJlZiksXG4gICAgICAgIGZpbHRlcigoW2RzXSkgPT4gISFkcylcbiAgICAgICkuc3Vic2NyaWJlKChbZHNdKSA9PiB7XG4gICAgICAgIHRoaXMuZGF0YUNvbnRleHQkLm5leHQodGhpcy5idWlsZERhdGFDb250ZXh0V2l0aFBhZ2VTaXplKGRzKSk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZW5hYmxlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5fZW5hYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2VuYWJsZWQ7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHZhbHVlVGVtcGxhdGUodGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICB0aGlzLl92YWx1ZVRlbXBsYXRlID0gdGVtcGxhdGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZhbHVlVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlVGVtcGxhdGUgfHwgdGhpcy52YWx1ZVRlbXBsYXRlUXVlcnk7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRhdGFDb250ZXh0KGRhdGE6IElEYXRhQ29udGV4dDxUPikge1xuICAgIHRoaXMuZGF0YUNvbnRleHQkLm5leHQoZGF0YSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRhdGFDb250ZXh0KCk6IElEYXRhQ29udGV4dDxUPiB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YUNvbnRleHQkLmdldFZhbHVlKCk7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRhdGFTb3VyY2UoZGF0YVNvdXJjZTogSURhdGFTb3VyY2U8VD4pIHtcbiAgICBpZiAoZGF0YVNvdXJjZSkge1xuICAgICAgdGhpcy5kYXRhU291cmNlJC5uZXh0KGRhdGFTb3VyY2UpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGF0YVNvdXJjZSgpOiBJRGF0YVNvdXJjZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVNvdXJjZSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGlzcGxheVByb3BlcnR5UmVzb2x2ZXIocmVzb2x2ZXI6IFRleHRSZXNvbHZlckZuKSB7XG4gICAgdGhpcy5kaXNwbGF5UHJvcGVydHlSZXNvbHZlciQubmV4dChyZXNvbHZlcik7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgb25PcHRpb25TZWxlY3RlZChldmVudDogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IG9wdGlvbiA9IGV2ZW50Lm9wdGlvbjtcbiAgICBjb25zdCBpZCA9IG9wdGlvbi5pZCBhcyB1bmtub3duIGFzIFRJZDtcbiAgICB0aGlzLm9wdGlvblNlbGVjdGVkLm5leHQoXG4gICAgICBuZXcgRWxkZXJBdXRvY29tcGxldGVPcHRpb25TZWxlY3RlZChcbiAgICAgICAgdGhpcyxcbiAgICAgICAgaWQsXG4gICAgICAgIHRoaXMuZ2V0RW50aXR5QnlJZChpZCksXG4gICAgICAgIG9wdGlvbi52YWx1ZVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldEVudGl0eUJ5SWQoaWQ6IFRJZCk6IFQgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGRjID0gdGhpcy5kYXRhQ29udGV4dDtcbiAgICBpZiAoZGMpIHtcbiAgICAgIHJldHVybiBkYy5zbmFwc2hvdC5kYXRhLmZpbmQoZSA9PiB0aGlzLmdldElkKGUpID09IGlkKTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyBvbkF1dG9jb21wbGV0ZU9wZW5lZChldmVudDogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZW5hYmxlZCkge1xuICAgICAgdGhpcy50cmlnZ2VyUmVsb2FkJC5uZXh0KG51bGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcignQXV0b2NvbXBsZXRlIG9wZW5lZCAtPiBCVVQgRElTQUJMRUQhIScgLCBldmVudCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uQXV0b0NvbXBsZXRlQ2xvc2VUb0VuZCgpOiB2b2lkIHtcbiAgICAvLyB0aGlzLmxvZ2dlci5kZWJ1ZygnQXV0b2NvbXBsZXRlIGlzIGNsb3NlIHRvIGVuZCEnKTtcbiAgICBpZiAoaXNDb250aW51YWJsZURhdGFDb250ZXh0KHRoaXMuZGF0YUNvbnRleHQpKSB7XG4gICAgICBpZiAoIXRoaXMuZGF0YUNvbnRleHQuc25hcHNob3QuaXNMb2FkaW5nKSB7XG4gICAgICAgIHRoaXMuZGF0YUNvbnRleHQubG9hZE1vcmUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0SWRBc1N0cmluZyh2YWx1ZTogVCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFN0cmluZyh0aGlzLmdldElkKHZhbHVlKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0SWQodmFsdWU6IFQpOiBUSWQge1xuICAgIHJldHVybiB0aGlzLmRhdGFDb250ZXh0Py5kYXRhU291cmNlPy5nZXRJZCh2YWx1ZSkgfHwgdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgaXNPcHRpb25BdmFpbGFibGUob3B0aW9uOiBUKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuaXNPcHRpb25EaXNhYmxlZEZuKSB7XG4gICAgICByZXR1cm4gIXRoaXMuaXNPcHRpb25EaXNhYmxlZEZuKG9wdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc09wdGlvblZpc2libGUob3B0aW9uOiBUKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuaXNPcHRpb25IaWRkZW5Gbikge1xuICAgICAgcmV0dXJuICF0aGlzLmlzT3B0aW9uSGlkZGVuRm4ob3B0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGlzT3B0aW9uSGlkZGVuKG9wdGlvbjogVCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmlzT3B0aW9uSGlkZGVuRm4pIHtcbiAgICAgIHJldHVybiB0aGlzLmlzT3B0aW9uSGlkZGVuRm4ob3B0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB0b09wdGlvblZhbHVlKG9wdGlvbjogVCk6IGFueSB7XG4gICAgaWYgKHRoaXMub3B0aW9uVmFsdWVDb252ZXJ0ZXJGbikge1xuICAgICAgcmV0dXJuIHRoaXMub3B0aW9uVmFsdWVDb252ZXJ0ZXJGbihvcHRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gb3B0aW9uO1xuICAgIH1cbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiBUT0RPIER1cGxpY2F0ZSBpbiBlbGRlci1zZWxlY3RcbiAgICovXG4gIHByaXZhdGUgcHJvcGVydHlTdHJpbmdWYWx1ZSh2YWx1ZTogVCwgcHJvcGVydHk6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAocHJvcGVydHkpIHtcbiAgICAgIHJldHVybiAoPGFueT52YWx1ZSlbcHJvcGVydHldO1xuICAgIH1cblxuICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZERhdGFDb250ZXh0V2l0aFBhZ2VTaXplKGRhdGFTb3VyY2U6IElEYXRhU291cmNlPFQ+KTogSURhdGFDb250ZXh0PFQ+IHtcbiAgICBpZiAodGhpcy5kYXRhQ29udGV4dCkge1xuICAgICAgdGhpcy5kYXRhQ29udGV4dC5jbG9zZSgpO1xuICAgIH1cbiAgICByZXR1cm4gRGF0YUNvbnRleHRCdWlsZGVyLnN0YXJ0PFQ+KClcbiAgICAgIC5wYWdlU2l6ZSh0aGlzLmNhbGN1bGF0ZVBhZ2VTaXplKCkpXG4gICAgICAuYnVpbGQoZGF0YVNvdXJjZSk7XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZVBhZ2VTaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuUEFHRV9TSVpFICsgdGhpcy5oaWRkZW5PcHRpb25zQ291bnQkLmdldFZhbHVlKCk7XG4gIH1cbn1cbiIsIjxtYXQtYXV0b2NvbXBsZXRlXG4gICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCJcbiAgcGFuZWxXaWR0aD1cImF1dG9cIlxuICBbYXV0b0FjdGl2ZUZpcnN0T3B0aW9uXT1cInRydWVcIlxuICAob3BlbmVkKT1cIm9uQXV0b2NvbXBsZXRlT3BlbmVkKCRldmVudClcIlxuICAob3B0aW9uU2VsZWN0ZWQpPVwib25PcHRpb25TZWxlY3RlZCgkZXZlbnQpXCJcbiAgZWxkZXJJbmZpbml0ZVNjcm9sbCBlbGRlckVsZGVySW5maW5pdGVBdXRvY29tcGxldGUgKGNsb3NlVG9FbmQpPVwib25BdXRvQ29tcGxldGVDbG9zZVRvRW5kKClcIlxuPlxuICA8IS0tXG4gIDxtYXQtb3B0aW9uICpuZ0lmPVwiYWxsb3dOdWxsXCIgW3ZhbHVlXT1cIm51bGxcIj57e251bGxEaXNwbGF5IHwgdHJhbnNsYXRlfX08L21hdC1vcHRpb24+XG4gIC0tPlxuXG4gIEBpZiAoZGF0YUNvbnRleHQkIHwgYXN5bmM7IGFzIGRjKSB7XG5cbiAgICBAaWYgKGRjLmlzQ2xvc2VkKSB7XG4gICAgICA8bWF0LW9wdGlvbiBkaXNhYmxlZD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dC1yb3cgcGxhY2Utc3RhcnQtY2VudGVyIGdhcC1zbVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBjb2xvcj1cIndhcm5cIj53YXJuaW5nPC9tYXQtaWNvbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdC1jYXB0aW9uXCI+RGF0YUNvbnRleHQgQ2xvc2VkITwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21hdC1vcHRpb24+XG4gICAgfVxuXG4gICAgQGlmIChhdmFpbGFibGVTdWdnZXN0aW9ucyQgfCBhc3luYzsgYXMgc3VnZ2VzdGlvbnMpIHtcblxuICAgICAgQGlmIChzdWdnZXN0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgPG1hdC1vcHRpb24gZGlzYWJsZWQ+Tm8gRGF0YS48L21hdC1vcHRpb24+XG4gICAgICB9XG5cbiAgICAgIEBmb3IgKHN1Z2dlc3Rpb24gb2Ygc3VnZ2VzdGlvbnM7IHRyYWNrIGdldElkQXNTdHJpbmcoc3VnZ2VzdGlvbikpIHtcbiAgICAgICAgQGlmIChpc09wdGlvblZpc2libGUoc3VnZ2VzdGlvbikpIHtcbiAgICAgICAgICA8bWF0LW9wdGlvblxuICAgICAgICAgICAgW3ZhbHVlXT1cInRvT3B0aW9uVmFsdWUoc3VnZ2VzdGlvbilcIlxuICAgICAgICAgICAgW2lkXT1cImdldElkQXNTdHJpbmcoc3VnZ2VzdGlvbilcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc09wdGlvbkF2YWlsYWJsZShzdWdnZXN0aW9uKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInZhbHVlVGVtcGxhdGUgfHwgc2ltcGxlVmFsdWVUZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogc3VnZ2VzdGlvbn1cIj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPCEtLVxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXQtY2FwdGlvblwiPnZhbHVlOiB7e3RvT3B0aW9uVmFsdWUoc3VnZ2VzdGlvbil9fTwvc3Bhbj5cbiAgICAgICAgICAgIC0tPlxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgPG1hdC1vcHRpb24gZGlzYWJsZWQ+XG4gICAgICA8c3BhbiBjbGFzcz1cIm1hdC1jYXB0aW9uXCI+XG4gICAgICAgIE5vIERhdGFDb250ZXh0IVxuICAgICAgICBAaWYoZGF0YVNvdXJjZSQgfCBhc3luYzsgYXMgZHMpIHtcbiAgICAgICAgICAoRGF0YVNvdXJjZToge3sgZHMgPyAnYXZhaWxhYmxlJyA6ICdtaXNzaW5nJyB9fSlcbiAgICAgICAgICB7e2VuYWJsZWQgPyAnQXV0b2NvbXBsZXRlIEVuYWJsZWQnIDogJ0F1dG9jb21wbGV0ZSBESVNBQkxFRCd9fVxuICAgICAgICB9XG4gICAgICA8L3NwYW4+XG4gICAgPC9tYXQtb3B0aW9uPlxuICB9XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGFTdGF0ZSQgfCBhc3luYyBhcyBzdGF0ZVwiPlxuICAgIDxtYXQtb3B0aW9uIGRpc2FibGVkICpuZ0lmPVwiIXN0YXRlLmlkbGUgfHwgc3RhdGUubG9hZGluZ1wiPlxuICAgICAgPG1hdC1wcm9ncmVzcy1iYXJcbiAgICAgICAgW3ZhbHVlXT1cIjEwMFwiXG4gICAgICAgIFttb2RlXT1cInN0YXRlLmxvYWRpbmcgPyAncXVlcnknIDogJ2RldGVybWluYXRlJ1wiXG4gICAgICAgIFtjb2xvcl09XCJzdGF0ZS5lcnJvciA/ICd3YXJuJyA6ICdwcmltYXJ5J1wiXG4gICAgICA+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxuICAgIDwvbWF0LW9wdGlvbj5cblxuICA8L25nLWNvbnRhaW5lcj5cbjwvbWF0LWF1dG9jb21wbGV0ZT5cblxuPG5nLXRlbXBsYXRlICNzaW1wbGVWYWx1ZVRlbXBsYXRlIGxldC12YWx1ZT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlQcm9wZXJ0eVJlc29sdmVyJCB8IGFzeW5jIGFzIHByb3BlcnR5UmVzb2x2ZXJcIj5cbiAgICA8c3BhbiBjbGFzcz1cIm5vc2VsZWN0XCI+e3sgcHJvcGVydHlSZXNvbHZlcih2YWx1ZSkgfX08L3NwYW4+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
240
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItc3VnZ2VzdGlvbi1wYW5lbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0L2F1dG9jb21wbGV0ZS9lbGRlci1hdXRvY29tcGxldGUvZWxkZXItc3VnZ2VzdGlvbi1wYW5lbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0L2F1dG9jb21wbGV0ZS9lbGRlci1hdXRvY29tcGxldGUvZWxkZXItc3VnZ2VzdGlvbi1wYW5lbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBRVosS0FBSyxFQUVMLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzlFLE9BQU8sRUFFTCx3QkFBd0IsR0FDekIsTUFBTSxtREFBbUQsQ0FBQTtBQUMxRCxPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDM0UsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdDQUF3QyxDQUFBO0FBRWxFLE9BQU8sRUFBRSxlQUFlLEVBQWdDLE1BQU0sZ0NBQWdDLENBQUE7QUFDOUYsT0FBTyxFQUFFLHlCQUF5QixF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dHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIERlc3Ryb3lSZWYsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IExvZ2dlckZhY3RvcnkgfSBmcm9tICdAZWxkZXJieXRlL3RzLWxvZ2dlcidcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHtcbiAgSURhdGFDb250ZXh0LFxuICBpc0NvbnRpbnVhYmxlRGF0YUNvbnRleHQsXG59IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi9kYXRhL2RhdGEtY29udGV4dC9kYXRhLWNvbnRleHQnXG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbidcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcbmltcG9ydCB7IHJ1bkluWm9uZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi91dGlscy9uZy16b25lLXV0aWxzJ1xuaW1wb3J0IHsgRGF0YUNvbnRleHRTdGF0dXMgfSBmcm9tICcuLi8uLi8uLi8uLi9jb21tb24vZGF0YS9kYXRhLWNvbnRleHQvZGF0YS1jb250ZXh0LXN0YXR1cydcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZSwgTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSdcbmltcG9ydCB7IEVsZGVyU2VsZWN0VmFsdWVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9zZWxlY3QvZWxkZXItc2VsZWN0LXZhbHVlLmRpcmVjdGl2ZSdcbmltcG9ydCB7IEVsZGVyQXV0b2NvbXBsZXRlT3B0aW9uU2VsZWN0ZWQgfSBmcm9tICcuL2VsZGVyLWF1dG9jb21wbGV0ZS1vcHRpb24tc2VsZWN0ZWQnXG5pbXBvcnQgeyBJRGF0YVNvdXJjZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi9kYXRhL2RhdGFzb3VyY2UvZGF0YS1zb3VyY2UnXG5pbXBvcnQgeyBEYXRhQ29udGV4dEJ1aWxkZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9jb21tb24vZGF0YS9kYXRhLWNvbnRleHQvZGF0YS1jb250ZXh0LWJ1aWxkZXInXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCdcbmltcG9ydCB7IE1hdFByb2dyZXNzQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3MtYmFyJ1xuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nXG5pbXBvcnQgeyBNYXRPcHRpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJ1xuaW1wb3J0IHsgTmdJZiwgTmdGb3IsIE5nVGVtcGxhdGVPdXRsZXQsIEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7IEVsZGVySW5maW5pdGVTY3JvbGxEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9pbmZpbml0ZXNjcm9sbC9lbGRlci1pbmZpbml0ZS1zY3JvbGwuZGlyZWN0aXZlJ1xuaW1wb3J0IHsgRWxkZXJJbmZpbml0ZUF1dG9jb21wbGV0ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2luZmluaXRlc2Nyb2xsL2VsZGVyLWluZmluaXRlLWF1dG9jb21wbGV0ZS5kaXJlY3RpdmUnXG5cbnR5cGUgVGV4dFJlc29sdmVyRm4gPSAodmFsdWU6IGFueSkgPT4gc3RyaW5nXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VsZGVyLXN1Z2dlc3Rpb24tcGFuZWwnLFxuICBleHBvcnRBczogJ2VsZGVyU3VnZ2VzdGlvblBhbmVsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VsZGVyLXN1Z2dlc3Rpb24tcGFuZWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lbGRlci1zdWdnZXN0aW9uLXBhbmVsLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0QXV0b2NvbXBsZXRlLFxuICAgIEVsZGVySW5maW5pdGVBdXRvY29tcGxldGVEaXJlY3RpdmUsXG4gICAgRWxkZXJJbmZpbml0ZVNjcm9sbERpcmVjdGl2ZSxcbiAgICBOZ0lmLFxuICAgIE1hdE9wdGlvbixcbiAgICBNYXRJY29uLFxuICAgIE5nRm9yLFxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgTWF0UHJvZ3Jlc3NCYXIsXG4gICAgQXN5bmNQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBFbGRlclN1Z2dlc3Rpb25QYW5lbENvbXBvbmVudDxUID0gYW55LCBUSWQgPSBhbnk+IHtcbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpXG4gIHByaXZhdGUgcmVhZG9ubHkgUEFHRV9TSVpFID0gMTBcblxuICAvKipcbiAgICogSXMgdGhpcyBhdXRvLWNvbXBsZXRlIGVuYWJsZWQ/XG4gICAqL1xuICBwcml2YXRlIF9lbmFibGVkID0gdHJ1ZVxuXG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgdGVtcGxhdGUgdG8gY3VzdG9taXplIHRoZSB1aSBsb29rLlxuICAgKi9cbiAgQENvbnRlbnRDaGlsZChFbGRlclNlbGVjdFZhbHVlRGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIHZhbHVlVGVtcGxhdGVRdWVyeTogVGVtcGxhdGVSZWY8YW55PlxuICBwcml2YXRlIF92YWx1ZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+XG5cbiAgLyoqXG4gICAqIFRoZSB1bmRlcmx5aW5nIE1hdGVyaWFsIEF1dG9jb21wbGV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG1hdEF1dG9jb21wbGV0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hdEF1dG9jb21wbGV0ZT4obnVsbClcblxuICBAVmlld0NoaWxkKCdhdXRvJylcbiAgcHVibGljIHNldCBtYXRBdXRvY29tcGxldGUoYXV0bzogTWF0QXV0b2NvbXBsZXRlKSB7XG4gICAgdGhpcy5tYXRBdXRvY29tcGxldGUkLm5leHQoYXV0bylcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpc09wdGlvbkRpc2FibGVkRm46IChvcHRpb246IFQpID0+IGJvb2xlYW5cblxuICBASW5wdXQoKVxuICBwdWJsaWMgaXNPcHRpb25IaWRkZW5GbjogKG9wdGlvbjogVCkgPT4gYm9vbGVhblxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBvcHRpb25WYWx1ZUNvbnZlcnRlckZuOiAob3B0aW9uOiBUKSA9PiBhbnlcblxuICAvKipcbiAgICogVGhlIERhdGFDb250ZXh0IHdoaWNoIGhvbGRzIHRoZSBhdXRvY29tcGxldGUgc3VnZ2VzdGlvbnMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGF0YUNvbnRleHQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJRGF0YUNvbnRleHQ8VD4+KG51bGwpXG4gIHB1YmxpYyByZWFkb25seSBkYXRhU291cmNlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SURhdGFTb3VyY2U8VD4+KG51bGwpXG5cbiAgcHVibGljIHJlYWRvbmx5IHRyaWdnZXJSZWxvYWQkID0gbmV3IFN1YmplY3Q8YW55PigpXG5cbiAgcHVibGljIHJlYWRvbmx5IGRpc3BsYXlQcm9wZXJ0eVJlc29sdmVyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGV4dFJlc29sdmVyRm4+KCh2YWx1ZTogVCkgPT5cbiAgICB0aGlzLnByb3BlcnR5U3RyaW5nVmFsdWUodmFsdWUsIG51bGwpXG4gIClcblxuICBwdWJsaWMgcmVhZG9ubHkgZGF0YVN0YXRlJDogT2JzZXJ2YWJsZTxEYXRhQ29udGV4dFN0YXR1cz5cblxuICBwdWJsaWMgcmVhZG9ubHkgYXZhaWxhYmxlU3VnZ2VzdGlvbnMkOiBPYnNlcnZhYmxlPFRbXT5cblxuICBAT3V0cHV0KClcbiAgcHVibGljIHJlYWRvbmx5IG9wdGlvblNlbGVjdGVkID0gbmV3IFN1YmplY3Q8RWxkZXJBdXRvY29tcGxldGVPcHRpb25TZWxlY3RlZD4oKVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgaGlkZGVuT3B0aW9uc0NvdW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgem9uZTogTmdab25lLFxuICAgIHByaXZhdGUgZGVzdHJveVJlZjogRGVzdHJveVJlZlxuICApIHtcbiAgICB0aGlzLmRhdGFTdGF0ZSQgPSB0aGlzLmRhdGFDb250ZXh0JC5waXBlKFxuICAgICAgZmlsdGVyKChkYykgPT4gISFkYyksXG4gICAgICBzd2l0Y2hNYXAoKGRjKSA9PiBkYy5zdGF0dXMpLFxuICAgICAgcnVuSW5ab25lKHRoaXMuem9uZSlcbiAgICApXG5cbiAgICB0aGlzLmF2YWlsYWJsZVN1Z2dlc3Rpb25zJCA9IHRoaXMuZGF0YUNvbnRleHQkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKGRjKSA9PiAoZGMgPyBkYy5kYXRhIDogb2YoW10pKSksXG4gICAgICBydW5JblpvbmUodGhpcy56b25lKVxuICAgIClcblxuICAgIHRoaXMuYXZhaWxhYmxlU3VnZ2VzdGlvbnMkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKGRlc3Ryb3lSZWYpLFxuICAgICAgICBtYXAoKHN1Z2dlc3Rpb25zKSA9PiBzdWdnZXN0aW9ucy5maWx0ZXIoKHN1Z2dlc3Rpb24pID0+IHRoaXMuaXNPcHRpb25IaWRkZW4oc3VnZ2VzdGlvbikpKSxcbiAgICAgICAgbWFwKChzdWdnZXN0aW9uKSA9PiBzdWdnZXN0aW9uLmxlbmd0aClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGNvdW50KSA9PiB0aGlzLmhpZGRlbk9wdGlvbnNDb3VudCQubmV4dChjb3VudCkpXG5cbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLmRhdGFTb3VyY2UkLCB0aGlzLnRyaWdnZXJSZWxvYWQkXSlcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoZGVzdHJveVJlZiksXG4gICAgICAgIGZpbHRlcigoW2RzXSkgPT4gISFkcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKFtkc10pID0+IHtcbiAgICAgICAgdGhpcy5kYXRhQ29udGV4dCQubmV4dCh0aGlzLmJ1aWxkRGF0YUNvbnRleHRXaXRoUGFnZVNpemUoZHMpKVxuICAgICAgfSlcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZW5hYmxlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5fZW5hYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSlcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZW5hYmxlZFxuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB2YWx1ZVRlbXBsYXRlKHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgdGhpcy5fdmFsdWVUZW1wbGF0ZSA9IHRlbXBsYXRlXG4gIH1cblxuICBwdWJsaWMgZ2V0IHZhbHVlVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlVGVtcGxhdGUgfHwgdGhpcy52YWx1ZVRlbXBsYXRlUXVlcnlcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGF0YUNvbnRleHQoZGF0YTogSURhdGFDb250ZXh0PFQ+KSB7XG4gICAgdGhpcy5kYXRhQ29udGV4dCQubmV4dChkYXRhKVxuICB9XG5cbiAgcHVibGljIGdldCBkYXRhQ29udGV4dCgpOiBJRGF0YUNvbnRleHQ8VD4ge1xuICAgIHJldHVybiB0aGlzLmRhdGFDb250ZXh0JC5nZXRWYWx1ZSgpXG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRhdGFTb3VyY2UoZGF0YVNvdXJjZTogSURhdGFTb3VyY2U8VD4pIHtcbiAgICBpZiAoZGF0YVNvdXJjZSkge1xuICAgICAgdGhpcy5kYXRhU291cmNlJC5uZXh0KGRhdGFTb3VyY2UpXG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBkYXRhU291cmNlKCk6IElEYXRhU291cmNlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5kYXRhU291cmNlJC5nZXRWYWx1ZSgpXG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRpc3BsYXlQcm9wZXJ0eVJlc29sdmVyKHJlc29sdmVyOiBUZXh0UmVzb2x2ZXJGbikge1xuICAgIHRoaXMuZGlzcGxheVByb3BlcnR5UmVzb2x2ZXIkLm5leHQocmVzb2x2ZXIpXG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgb25PcHRpb25TZWxlY3RlZChldmVudDogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IG9wdGlvbiA9IGV2ZW50Lm9wdGlvblxuICAgIGNvbnN0IGlkID0gb3B0aW9uLmlkIGFzIHVua25vd24gYXMgVElkXG4gICAgdGhpcy5vcHRpb25TZWxlY3RlZC5uZXh0KFxuICAgICAgbmV3IEVsZGVyQXV0b2NvbXBsZXRlT3B0aW9uU2VsZWN0ZWQodGhpcywgaWQsIHRoaXMuZ2V0RW50aXR5QnlJZChpZCksIG9wdGlvbi52YWx1ZSlcbiAgICApXG4gIH1cblxuICBwcml2YXRlIGdldEVudGl0eUJ5SWQoaWQ6IFRJZCk6IFQgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGRjID0gdGhpcy5kYXRhQ29udGV4dFxuICAgIGlmIChkYykge1xuICAgICAgcmV0dXJuIGRjLnNuYXBzaG90LmRhdGEuZmluZCgoZSkgPT4gdGhpcy5nZXRJZChlKSA9PSBpZClcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgcHVibGljIG9uQXV0b2NvbXBsZXRlT3BlbmVkKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5lbmFibGVkKSB7XG4gICAgICB0aGlzLnRyaWdnZXJSZWxvYWQkLm5leHQobnVsbClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0F1dG9jb21wbGV0ZSBvcGVuZWQgLT4gQlVUIERJU0FCTEVEISEnLCBldmVudClcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25BdXRvQ29tcGxldGVDbG9zZVRvRW5kKCk6IHZvaWQge1xuICAgIC8vIHRoaXMubG9nZ2VyLmRlYnVnKCdBdXRvY29tcGxldGUgaXMgY2xvc2UgdG8gZW5kIScpO1xuICAgIGlmIChpc0NvbnRpbnVhYmxlRGF0YUNvbnRleHQodGhpcy5kYXRhQ29udGV4dCkpIHtcbiAgICAgIGlmICghdGhpcy5kYXRhQ29udGV4dC5zbmFwc2hvdC5pc0xvYWRpbmcpIHtcbiAgICAgICAgdGhpcy5kYXRhQ29udGV4dC5sb2FkTW9yZSgpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldElkQXNTdHJpbmcodmFsdWU6IFQpOiBzdHJpbmcge1xuICAgIHJldHVybiBTdHJpbmcodGhpcy5nZXRJZCh2YWx1ZSkpXG4gIH1cblxuICBwdWJsaWMgZ2V0SWQodmFsdWU6IFQpOiBUSWQge1xuICAgIHJldHVybiB0aGlzLmRhdGFDb250ZXh0Py5kYXRhU291cmNlPy5nZXRJZCh2YWx1ZSkgfHwgdmFsdWVcbiAgfVxuXG4gIHB1YmxpYyBpc09wdGlvbkF2YWlsYWJsZShvcHRpb246IFQpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5pc09wdGlvbkRpc2FibGVkRm4pIHtcbiAgICAgIHJldHVybiAhdGhpcy5pc09wdGlvbkRpc2FibGVkRm4ob3B0aW9uKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc09wdGlvblZpc2libGUob3B0aW9uOiBUKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuaXNPcHRpb25IaWRkZW5Gbikge1xuICAgICAgcmV0dXJuICF0aGlzLmlzT3B0aW9uSGlkZGVuRm4ob3B0aW9uKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc09wdGlvbkhpZGRlbihvcHRpb246IFQpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5pc09wdGlvbkhpZGRlbkZuKSB7XG4gICAgICByZXR1cm4gdGhpcy5pc09wdGlvbkhpZGRlbkZuKG9wdGlvbilcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9XG5cbiAgcHVibGljIHRvT3B0aW9uVmFsdWUob3B0aW9uOiBUKTogYW55IHtcbiAgICBpZiAodGhpcy5vcHRpb25WYWx1ZUNvbnZlcnRlckZuKSB7XG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25WYWx1ZUNvbnZlcnRlckZuKG9wdGlvbilcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9wdGlvblxuICAgIH1cbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiBUT0RPIER1cGxpY2F0ZSBpbiBlbGRlci1zZWxlY3RcbiAgICovXG4gIHByaXZhdGUgcHJvcGVydHlTdHJpbmdWYWx1ZSh2YWx1ZTogVCwgcHJvcGVydHk6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIGlmIChwcm9wZXJ0eSkge1xuICAgICAgcmV0dXJuICg8YW55PnZhbHVlKVtwcm9wZXJ0eV1cbiAgICB9XG5cbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKVxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZERhdGFDb250ZXh0V2l0aFBhZ2VTaXplKGRhdGFTb3VyY2U6IElEYXRhU291cmNlPFQ+KTogSURhdGFDb250ZXh0PFQ+IHtcbiAgICBpZiAodGhpcy5kYXRhQ29udGV4dCkge1xuICAgICAgdGhpcy5kYXRhQ29udGV4dC5jbG9zZSgpXG4gICAgfVxuICAgIHJldHVybiBEYXRhQ29udGV4dEJ1aWxkZXIuc3RhcnQ8VD4oKS5wYWdlU2l6ZSh0aGlzLmNhbGN1bGF0ZVBhZ2VTaXplKCkpLmJ1aWxkKGRhdGFTb3VyY2UpXG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZVBhZ2VTaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuUEFHRV9TSVpFICsgdGhpcy5oaWRkZW5PcHRpb25zQ291bnQkLmdldFZhbHVlKClcbiAgfVxufVxuIiwiPG1hdC1hdXRvY29tcGxldGVcbiAgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIlxuICBwYW5lbFdpZHRoPVwiYXV0b1wiXG4gIFthdXRvQWN0aXZlRmlyc3RPcHRpb25dPVwidHJ1ZVwiXG4gIChvcGVuZWQpPVwib25BdXRvY29tcGxldGVPcGVuZWQoJGV2ZW50KVwiXG4gIChvcHRpb25TZWxlY3RlZCk9XCJvbk9wdGlvblNlbGVjdGVkKCRldmVudClcIlxuICBlbGRlckluZmluaXRlU2Nyb2xsXG4gIGVsZGVyRWxkZXJJbmZpbml0ZUF1dG9jb21wbGV0ZVxuICAoY2xvc2VUb0VuZCk9XCJvbkF1dG9Db21wbGV0ZUNsb3NlVG9FbmQoKVwiXG4+XG4gIDwhLS1cbiAgPG1hdC1vcHRpb24gKm5nSWY9XCJhbGxvd051bGxcIiBbdmFsdWVdPVwibnVsbFwiPnt7bnVsbERpc3BsYXkgfCB0cmFuc2xhdGV9fTwvbWF0LW9wdGlvbj5cbiAgLS0+XG5cbiAgQGlmIChkYXRhQ29udGV4dCQgfCBhc3luYzsgYXMgZGMpIHtcbiAgICBAaWYgKGRjLmlzQ2xvc2VkKSB7XG4gICAgICA8bWF0LW9wdGlvbiBkaXNhYmxlZD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dC1yb3cgcGxhY2Utc3RhcnQtY2VudGVyIGdhcC1zbVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBjb2xvcj1cIndhcm5cIj53YXJuaW5nPC9tYXQtaWNvbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdC1jYXB0aW9uXCI+RGF0YUNvbnRleHQgQ2xvc2VkITwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21hdC1vcHRpb24+XG4gICAgfVxuXG4gICAgQGlmIChhdmFpbGFibGVTdWdnZXN0aW9ucyQgfCBhc3luYzsgYXMgc3VnZ2VzdGlvbnMpIHtcbiAgICAgIEBpZiAoc3VnZ2VzdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIDxtYXQtb3B0aW9uIGRpc2FibGVkPk5vIERhdGEuPC9tYXQtb3B0aW9uPlxuICAgICAgfVxuXG4gICAgICBAZm9yIChzdWdnZXN0aW9uIG9mIHN1Z2dlc3Rpb25zOyB0cmFjayBnZXRJZEFzU3RyaW5nKHN1Z2dlc3Rpb24pKSB7XG4gICAgICAgIEBpZiAoaXNPcHRpb25WaXNpYmxlKHN1Z2dlc3Rpb24pKSB7XG4gICAgICAgICAgPG1hdC1vcHRpb25cbiAgICAgICAgICAgIFt2YWx1ZV09XCJ0b09wdGlvblZhbHVlKHN1Z2dlc3Rpb24pXCJcbiAgICAgICAgICAgIFtpZF09XCJnZXRJZEFzU3RyaW5nKHN1Z2dlc3Rpb24pXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNPcHRpb25BdmFpbGFibGUoc3VnZ2VzdGlvbilcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICB2YWx1ZVRlbXBsYXRlIHx8IHNpbXBsZVZhbHVlVGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IHN1Z2dlc3Rpb24gfVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8IS0tXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdC1jYXB0aW9uXCI+dmFsdWU6IHt7dG9PcHRpb25WYWx1ZShzdWdnZXN0aW9uKX19PC9zcGFuPlxuICAgICAgICAgICAgLS0+XG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICA8bWF0LW9wdGlvbiBkaXNhYmxlZD5cbiAgICAgIDxzcGFuIGNsYXNzPVwibWF0LWNhcHRpb25cIj5cbiAgICAgICAgTm8gRGF0YUNvbnRleHQhXG4gICAgICAgIEBpZiAoZGF0YVNvdXJjZSQgfCBhc3luYzsgYXMgZHMpIHtcbiAgICAgICAgICAoRGF0YVNvdXJjZToge3sgZHMgPyAnYXZhaWxhYmxlJyA6ICdtaXNzaW5nJyB9fSlcbiAgICAgICAgICB7eyBlbmFibGVkID8gJ0F1dG9jb21wbGV0ZSBFbmFibGVkJyA6ICdBdXRvY29tcGxldGUgRElTQUJMRUQnIH19XG4gICAgICAgIH1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L21hdC1vcHRpb24+XG4gIH1cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YVN0YXRlJCB8IGFzeW5jIGFzIHN0YXRlXCI+XG4gICAgPG1hdC1vcHRpb24gZGlzYWJsZWQgKm5nSWY9XCIhc3RhdGUuaWRsZSB8fCBzdGF0ZS5sb2FkaW5nXCI+XG4gICAgICA8bWF0LXByb2dyZXNzLWJhclxuICAgICAgICBbdmFsdWVdPVwiMTAwXCJcbiAgICAgICAgW21vZGVdPVwic3RhdGUubG9hZGluZyA/ICdxdWVyeScgOiAnZGV0ZXJtaW5hdGUnXCJcbiAgICAgICAgW2NvbG9yXT1cInN0YXRlLmVycm9yID8gJ3dhcm4nIDogJ3ByaW1hcnknXCJcbiAgICAgID48L21hdC1wcm9ncmVzcy1iYXI+XG4gICAgPC9tYXQtb3B0aW9uPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbWF0LWF1dG9jb21wbGV0ZT5cblxuPG5nLXRlbXBsYXRlICNzaW1wbGVWYWx1ZVRlbXBsYXRlIGxldC12YWx1ZT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlQcm9wZXJ0eVJlc29sdmVyJCB8IGFzeW5jIGFzIHByb3BlcnR5UmVzb2x2ZXJcIj5cbiAgICA8c3BhbiBjbGFzcz1cIm5vc2VsZWN0XCI+e3sgcHJvcGVydHlSZXNvbHZlcih2YWx1ZSkgfX08L3NwYW4+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==