@elderbyte/ngx-starter 14.4.0-beta.2 → 14.4.0-beta.22

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 (302) hide show
  1. package/esm2020/lib/common/data/entity-set-patch.mjs +76 -3
  2. package/esm2020/lib/common/enums/elder-enum-translation.service.mjs +3 -3
  3. package/esm2020/lib/common/forms/elder-form-field-control-base.directive.mjs +12 -8
  4. package/esm2020/lib/common/forms/elder-from-field-base.mjs +3 -3
  5. package/esm2020/lib/common/forms/elder-from-field-entity-base.mjs +3 -3
  6. package/esm2020/lib/common/forms/elder-from-field-multi-entity-base.mjs +3 -3
  7. package/esm2020/lib/common/forms/form-field-base.component.mjs +3 -3
  8. package/esm2020/lib/common/forms/multi-model-base.component.mjs +3 -3
  9. package/esm2020/lib/common/forms/template-composite-control.mjs +3 -3
  10. package/esm2020/lib/common/forms/value-accessor-base.mjs +3 -3
  11. package/esm2020/lib/common/http/http-client-builder.service.mjs +3 -3
  12. package/esm2020/lib/common/http/http-client-pristine.mjs +3 -3
  13. package/esm2020/lib/common/http/transfer/data-transfer-factory.mjs +3 -3
  14. package/esm2020/lib/common/json-map.mjs +3 -3
  15. package/esm2020/lib/common/url/elder-url-fragment-params.service.mjs +3 -3
  16. package/esm2020/lib/common/utils/sort-util.mjs +17 -1
  17. package/esm2020/lib/components/access-denied/elder-access-denied.component.mjs +3 -3
  18. package/esm2020/lib/components/access-denied/elder-access-denied.module.mjs +4 -4
  19. package/esm2020/lib/components/auditing/audited-entity/elder-audited-entity.component.mjs +3 -3
  20. package/esm2020/lib/components/auditing/elder-audit.module.mjs +4 -4
  21. package/esm2020/lib/components/button-group/elder-button-group/elder-button-group.component.mjs +3 -3
  22. package/esm2020/lib/components/button-group/elder-button-group.module.mjs +4 -4
  23. package/esm2020/lib/components/card-organizer/card-organizer/elder-card-organizer.component.mjs +3 -3
  24. package/esm2020/lib/components/card-organizer/card-organizer/elder-stack-card.directive.mjs +3 -3
  25. package/esm2020/lib/components/card-organizer/card-stack/elder-card-stack.component.mjs +4 -4
  26. package/esm2020/lib/components/card-organizer/elder-card-organizer.module.mjs +4 -4
  27. package/esm2020/lib/components/cards/elder-card/elder-card-header/elder-card-header.component.mjs +3 -3
  28. package/esm2020/lib/components/cards/elder-card/elder-card.component.mjs +18 -18
  29. package/esm2020/lib/components/cards/elder-card/elder-card.module.mjs +4 -4
  30. package/esm2020/lib/components/connectivity/elder-connectivity.module.mjs +4 -4
  31. package/esm2020/lib/components/connectivity/elder-connectivity.service.mjs +3 -3
  32. package/esm2020/lib/components/connectivity/offline-indicator/elder-offline-indicator.component.mjs +3 -3
  33. package/esm2020/lib/components/containers/elder-containers.module.mjs +4 -4
  34. package/esm2020/lib/components/containers/elder-scroll-container/elder-scroll-container.component.mjs +3 -3
  35. package/esm2020/lib/components/csv/elder-csv-export-btn/elder-csv-export-btn.component.mjs +3 -3
  36. package/esm2020/lib/components/csv/elder-csv-stream-exporter-builder.service.mjs +3 -3
  37. package/esm2020/lib/components/csv/elder-csv.module.mjs +4 -4
  38. package/esm2020/lib/components/currency/elder-currency.module.mjs +4 -4
  39. package/esm2020/lib/components/currency/elder-currency.pipe.mjs +3 -3
  40. package/esm2020/lib/components/data-transfer/elder-data-transfer.module.mjs +4 -4
  41. package/esm2020/lib/components/data-transfer/elder-data-transfer.service.mjs +3 -3
  42. package/esm2020/lib/components/data-transfer/http-data-transfer/http-data-transfer.component.mjs +3 -3
  43. package/esm2020/lib/components/data-transfer/http-data-transfer-aggregate/http-data-transfer-aggregate.component.mjs +3 -3
  44. package/esm2020/lib/components/data-transfer/http-data-transfer-indicator/http-data-transfer-indicator.component.mjs +3 -3
  45. package/esm2020/lib/components/data-transfer/http-data-transfer-overview/http-data-transfer-overview.component.mjs +3 -3
  46. package/esm2020/lib/components/data-view/base/data-view-options-provider-binding.mjs +63 -0
  47. package/esm2020/lib/components/data-view/base/elder-data-view-base.mjs +54 -11
  48. package/esm2020/lib/components/data-view/base/elder-data-view-options-provider.mjs +44 -0
  49. package/esm2020/lib/components/data-view/base/elder-data-view-options.mjs +42 -0
  50. package/esm2020/lib/components/data-view/base/public_api.mjs +5 -0
  51. package/esm2020/lib/components/data-view/common/data-context-state-indicator/data-context-state-indicator.component.mjs +3 -3
  52. package/esm2020/lib/components/data-view/common/elder-data-common.module.mjs +4 -4
  53. package/esm2020/lib/components/data-view/common/elder-data-toolbar/elder-data-toolbar.component.mjs +6 -6
  54. package/esm2020/lib/components/data-view/common/elder-single-sort/elder-single-sort.component.mjs +3 -3
  55. package/esm2020/lib/components/data-view/common/selection/data-context-selection.directive.mjs +3 -3
  56. package/esm2020/lib/components/data-view/common/selection/elder-selection-master-checkbox/elder-selection-master-checkbox.component.mjs +3 -3
  57. package/esm2020/lib/components/data-view/grid/elder-grid/elder-grid.component.mjs +16 -30
  58. package/esm2020/lib/components/data-view/grid/elder-grid.module.mjs +4 -4
  59. package/esm2020/lib/components/data-view/public_api.mjs +2 -2
  60. package/esm2020/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.component.mjs +3 -3
  61. package/esm2020/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.module.mjs +4 -4
  62. package/esm2020/lib/components/data-view/table/activation/elder-table-activation.directive.mjs +3 -3
  63. package/esm2020/lib/components/data-view/table/elder-number-cell.directive.mjs +3 -3
  64. package/esm2020/lib/components/data-view/table/elder-paginator-intl.mjs +3 -3
  65. package/esm2020/lib/components/data-view/table/elder-table/elder-table-toolbar.directive.mjs +3 -3
  66. package/esm2020/lib/components/data-view/table/elder-table/elder-table.component.mjs +12 -46
  67. package/esm2020/lib/components/data-view/table/elder-table-column.directive.mjs +3 -3
  68. package/esm2020/lib/components/data-view/table/elder-table-extension.directive.mjs +3 -3
  69. package/esm2020/lib/components/data-view/table/elder-table-root.directive.mjs +3 -3
  70. package/esm2020/lib/components/data-view/table/elder-table-row.directive.mjs +3 -3
  71. package/esm2020/lib/components/data-view/table/elder-table-sort.directive.mjs +3 -3
  72. package/esm2020/lib/components/data-view/table/elder-table.module.mjs +4 -4
  73. package/esm2020/lib/components/data-view/table/model/elder-table-model.mjs +3 -3
  74. package/esm2020/lib/components/dialogs/confirm-dialog/elder-confirm-dialog.component.mjs +3 -3
  75. package/esm2020/lib/components/dialogs/elder-dialog.module.mjs +7 -7
  76. package/esm2020/lib/components/dialogs/elder-dialog.service.mjs +3 -3
  77. package/esm2020/lib/components/dialogs/question-dialog/elder-question-dialog.component.mjs +3 -3
  78. package/esm2020/lib/components/dialogs/selection-dialog/elder-selection-dialog/elder-selection-dialog.component.mjs +3 -3
  79. package/esm2020/lib/components/dialogs/selection-dialog/elder-selection-dialog.directive.mjs +3 -3
  80. package/esm2020/lib/components/errors/elder-error.module.mjs +4 -4
  81. package/esm2020/lib/components/errors/exception-detail/elder-exception-detail.component.mjs +3 -3
  82. package/esm2020/lib/components/expand-toggle-button/elder-expand-toggle-button.component.mjs +3 -3
  83. package/esm2020/lib/components/expand-toggle-button/elder-expand-toggle-button.module.mjs +4 -4
  84. package/esm2020/lib/components/files/blob-viewer/elder-blob-viewer.component.mjs +3 -3
  85. package/esm2020/lib/components/files/elder-file-drop-zone.directive.mjs +3 -3
  86. package/esm2020/lib/components/files/elder-file-select.directive.mjs +3 -3
  87. package/esm2020/lib/components/files/elder-file.module.mjs +4 -4
  88. package/esm2020/lib/components/files/file-select/file-select.component.mjs +3 -3
  89. package/esm2020/lib/components/files/file-upload/file-upload.component.mjs +3 -3
  90. package/esm2020/lib/components/forms/clipboard/elder-clipboard.service.mjs +3 -3
  91. package/esm2020/lib/components/forms/directives/base/elder-class-hostbinding-base.mjs +3 -3
  92. package/esm2020/lib/components/forms/directives/elder-clipboard-put.directive.mjs +3 -3
  93. package/esm2020/lib/components/forms/directives/elder-delayed-focus.directive.mjs +3 -3
  94. package/esm2020/lib/components/forms/directives/elder-form-field-dense.directive.mjs +3 -3
  95. package/esm2020/lib/components/forms/directives/elder-form-field-label.directive.mjs +33 -20
  96. package/esm2020/lib/components/forms/directives/elder-form-field-no-hint.directive.mjs +3 -3
  97. package/esm2020/lib/components/forms/directives/elder-form-field-no-spinner.directive.mjs +3 -3
  98. package/esm2020/lib/components/forms/directives/elder-forms-directives.module.mjs +13 -13
  99. package/esm2020/lib/components/forms/directives/elder-input-pattern.directive.mjs +3 -3
  100. package/esm2020/lib/components/forms/directives/elder-key-event.directive.mjs +3 -3
  101. package/esm2020/lib/components/forms/directives/elder-max.directive.mjs +3 -3
  102. package/esm2020/lib/components/forms/directives/elder-min.directive.mjs +3 -3
  103. package/esm2020/lib/components/forms/directives/elder-next-focusable.directive.mjs +3 -3
  104. package/esm2020/lib/components/forms/directives/elder-plug-parent-form.directive.mjs +3 -3
  105. package/esm2020/lib/components/forms/directives/elder-stop-event-propagation.directive.mjs +3 -3
  106. package/esm2020/lib/components/forms/directives/elder-tab-focus-trap.directive.mjs +3 -3
  107. package/esm2020/lib/components/forms/directives/elder-touched.directive.mjs +3 -3
  108. package/esm2020/lib/components/forms/directives/elder-triple-state-checkbox.directive.mjs +3 -3
  109. package/esm2020/lib/components/forms/directives/validation/elder-multiple-of.validator.mjs +3 -3
  110. package/esm2020/lib/components/forms/directives/validation/elder-required-ignore-zero.validator.mjs +3 -3
  111. package/esm2020/lib/components/forms/elder-forms.module.mjs +4 -4
  112. package/esm2020/lib/components/forms/search/elder-search-context.directive.mjs +3 -3
  113. package/esm2020/lib/components/forms/search/elder-search-input.directive.mjs +3 -3
  114. package/esm2020/lib/components/forms/search/elder-search.module.mjs +4 -4
  115. package/esm2020/lib/components/forms/search/search-box/elder-search-box.component.mjs +7 -5
  116. package/esm2020/lib/components/forms/search/search-box/elder-search-panel.component.mjs +3 -3
  117. package/esm2020/lib/components/global-search/elder-global-search.component.mjs +3 -3
  118. package/esm2020/lib/components/global-search/elder-global-search.module.mjs +4 -4
  119. package/esm2020/lib/components/global-search/elder-global-search.service.mjs +3 -3
  120. package/esm2020/lib/components/graph/elder-progress-bar/elder-progress-bar.component.mjs +3 -3
  121. package/esm2020/lib/components/graph/elder-progress-bar/elder-progress-bar.module.mjs +4 -4
  122. package/esm2020/lib/components/headers/elder-header/elder-header.component.mjs +3 -3
  123. package/esm2020/lib/components/headers/elder-header.module.mjs +4 -4
  124. package/esm2020/lib/components/http-support/elder-http-client.service.mjs +3 -3
  125. package/esm2020/lib/components/i18n/entities/elder-i18n-entities.module.mjs +4 -4
  126. package/esm2020/lib/components/i18n/entities/elder-localized-input/elder-localized-input.component.mjs +3 -3
  127. package/esm2020/lib/components/i18n/entities/elder-localized-input-dialog/elder-localized-input-dialog.component.mjs +3 -3
  128. package/esm2020/lib/components/i18n/entities/elder-localized-input-dialog.service.mjs +3 -3
  129. package/esm2020/lib/components/i18n/entities/elder-localized-input-table/elder-localized-input-table.component.mjs +3 -3
  130. package/esm2020/lib/components/i18n/entities/elder-localized-text-column.directive.mjs +3 -3
  131. package/esm2020/lib/components/i18n/entities/elder-localized-texts.directive.mjs +3 -3
  132. package/esm2020/lib/components/i18n/entities/picker/i18n-pick-async.pipe.mjs +3 -3
  133. package/esm2020/lib/components/i18n/entities/picker/i18n-pick.pipe.mjs +3 -3
  134. package/esm2020/lib/components/i18n/entities/picker/localisation-picker.service.mjs +3 -3
  135. package/esm2020/lib/components/i18n/language/elder-language-interceptor.mjs +3 -3
  136. package/esm2020/lib/components/i18n/language/elder-language.module.mjs +4 -4
  137. package/esm2020/lib/components/i18n/language/elder-language.service.mjs +3 -3
  138. package/esm2020/lib/components/i18n/language/language-switcher/elder-language-switcher.component.mjs +3 -3
  139. package/esm2020/lib/components/i18n/locales/elder-locales-de-ch.module.mjs +4 -4
  140. package/esm2020/lib/components/iframes/data-view/data-view-iframe/data-view-iframe.component.mjs +119 -0
  141. package/esm2020/lib/components/iframes/data-view/data-view-iframe-adapter.directive.mjs +137 -0
  142. package/esm2020/lib/components/iframes/elder-iframe.module.mjs +22 -10
  143. package/esm2020/lib/components/iframes/iframe-close.directive.mjs +3 -3
  144. package/esm2020/lib/components/iframes/iframe-dialog/iframe-dialog.component.mjs +3 -3
  145. package/esm2020/lib/components/iframes/iframe-host/iframe-host.component.mjs +58 -32
  146. package/esm2020/lib/components/iframes/iframe-side-content/iframe-side-content.component.mjs +3 -3
  147. package/esm2020/lib/components/iframes/iframe.service.mjs +5 -5
  148. package/esm2020/lib/components/iframes/typed-event-message.mjs +42 -0
  149. package/esm2020/lib/components/infinitescroll/elder-infinite-autocomplete.directive.mjs +3 -3
  150. package/esm2020/lib/components/infinitescroll/elder-infinite-scroll.directive.mjs +3 -3
  151. package/esm2020/lib/components/infinitescroll/elder-infinite-scroll.module.mjs +7 -7
  152. package/esm2020/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete.component.mjs +3 -3
  153. package/esm2020/lib/components/input/autocomplete/elder-autocomplete.directive.mjs +3 -3
  154. package/esm2020/lib/components/input/autocomplete/elder-autocomplete.module.mjs +4 -4
  155. package/esm2020/lib/components/labels/elder-labels.module.mjs +4 -4
  156. package/esm2020/lib/components/labels/labels-input/labels-input.component.mjs +3 -3
  157. package/esm2020/lib/components/measures/dimensions-input/elder-dimensions-input.component.mjs +3 -3
  158. package/esm2020/lib/components/measures/directives/elder-unit-select.directive.mjs +3 -3
  159. package/esm2020/lib/components/measures/elder-measures.module.mjs +8 -8
  160. package/esm2020/lib/components/measures/elder-quantity-transform.pipe.mjs +3 -3
  161. package/esm2020/lib/components/measures/elder-quantity.pipe.mjs +3 -3
  162. package/esm2020/lib/components/measures/elder-unit.service.mjs +3 -3
  163. package/esm2020/lib/components/measures/quantity-input/elder-quantity-input.component.mjs +3 -3
  164. package/esm2020/lib/components/measures/util/elder-quantity.service.mjs +3 -3
  165. package/esm2020/lib/components/multi-autocomplete/elder-multi-auto-complete.module.mjs +4 -4
  166. package/esm2020/lib/components/multi-autocomplete/elder-multi-autocomplete.component.mjs +3 -3
  167. package/esm2020/lib/components/navigation/bread-crumbs/bread-crumbs/elder-bread-crumbs.component.mjs +3 -3
  168. package/esm2020/lib/components/navigation/bread-crumbs/elder-bread-crumbs.module.mjs +4 -4
  169. package/esm2020/lib/components/navigation/nav/elder-nav.module.mjs +4 -4
  170. package/esm2020/lib/components/navigation/nav/nav-group/elder-nav-group.component.mjs +3 -3
  171. package/esm2020/lib/components/navigation/nav/nav-link/elder-nav-link.component.mjs +3 -3
  172. package/esm2020/lib/components/navigation/nav/nav-list/elder-nav-list.component.mjs +3 -3
  173. package/esm2020/lib/components/navigation/toolbar/elder-toolbar-column.directive.mjs +3 -3
  174. package/esm2020/lib/components/navigation/toolbar/elder-toolbar.module.mjs +4 -4
  175. package/esm2020/lib/components/navigation/toolbar/elder-toolbar.service.mjs +3 -3
  176. package/esm2020/lib/components/navigation/toolbar/toolbar/elder-toolbar.component.mjs +3 -3
  177. package/esm2020/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.component.mjs +3 -3
  178. package/esm2020/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.service.mjs +3 -3
  179. package/esm2020/lib/components/overlays/elder-overlay-origin.directive.mjs +3 -3
  180. package/esm2020/lib/components/overlays/elder-overlay-trigger.directive.mjs +3 -3
  181. package/esm2020/lib/components/overlays/elder-overlay.component.mjs +3 -3
  182. package/esm2020/lib/components/overlays/elder-overlay.module.mjs +4 -4
  183. package/esm2020/lib/components/panels/card-panel/elder-card-panel.component.mjs +3 -3
  184. package/esm2020/lib/components/panels/elder-panel.module.mjs +4 -4
  185. package/esm2020/lib/components/panels/flat/elder-panel.component.mjs +3 -3
  186. package/esm2020/lib/components/select/auto/elder-auto-select-first.directive.mjs +3 -3
  187. package/esm2020/lib/components/select/elder-select-base.mjs +9 -8
  188. package/esm2020/lib/components/select/elder-select-chip.directive.mjs +9 -9
  189. package/esm2020/lib/components/select/elder-select-on-tab.directive.mjs +3 -3
  190. package/esm2020/lib/components/select/elder-select-value.directive.mjs +3 -3
  191. package/esm2020/lib/components/select/elder-select.module.mjs +10 -9
  192. package/esm2020/lib/components/select/multi/elder-multi-select-base.mjs +105 -39
  193. package/esm2020/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.mjs +34 -22
  194. package/esm2020/lib/components/select/multi/elder-multi-select-form-field.mjs +11 -5
  195. package/esm2020/lib/components/select/popup/selection-model-popup.directive.mjs +23 -41
  196. package/esm2020/lib/components/select/popup/templated-selection-dialog/templated-selection-dialog.component.mjs +7 -6
  197. package/esm2020/lib/components/select/public_api.mjs +2 -1
  198. package/esm2020/lib/components/select/single/elder-clear-select.directive.mjs +3 -3
  199. package/esm2020/lib/components/select/single/elder-select/elder-select.component.mjs +26 -39
  200. package/esm2020/lib/components/select/single/elder-select-form-field.mjs +3 -3
  201. package/esm2020/lib/components/select-chip-list/chip-list-select/elder-chip-list-select.component.mjs +3 -3
  202. package/esm2020/lib/components/select-chip-list/elder-chip-list-select.module.mjs +4 -4
  203. package/esm2020/lib/components/select-list/elder-select-list.module.mjs +4 -4
  204. package/esm2020/lib/components/select-list/select-list/elder-select-list.component.mjs +3 -3
  205. package/esm2020/lib/components/select-list/select-list-item/elder-select-list-item.component.mjs +3 -3
  206. package/esm2020/lib/components/shell/drawers/elder-route-outlet-drawer.service.mjs +3 -3
  207. package/esm2020/lib/components/shell/drawers/elder-router-outlet.service.mjs +3 -3
  208. package/esm2020/lib/components/shell/elder-shell-slot.directive.mjs +3 -3
  209. package/esm2020/lib/components/shell/elder-shell.module.mjs +4 -4
  210. package/esm2020/lib/components/shell/elder-shell.service.mjs +3 -3
  211. package/esm2020/lib/components/shell/header/elder-app-header/elder-app-header.component.mjs +3 -3
  212. package/esm2020/lib/components/shell/shell/elder-shell.component.mjs +25 -15
  213. package/esm2020/lib/components/shell/shell-navigation-toggle/elder-shell-navigation-toggle.component.mjs +3 -3
  214. package/esm2020/lib/components/tabs/elder-tab/elder-tab.directive.mjs +3 -3
  215. package/esm2020/lib/components/tabs/elder-tab-group-routing/elder-tab-group-routing.directive.mjs +3 -3
  216. package/esm2020/lib/components/tabs/elder-tab.module.mjs +4 -4
  217. package/esm2020/lib/components/theme/elder-theme-applier.directive.mjs +3 -3
  218. package/esm2020/lib/components/theme/elder-theme-preference.service.mjs +3 -3
  219. package/esm2020/lib/components/theme/elder-theme-toggle/elder-theme-toggle.component.mjs +3 -3
  220. package/esm2020/lib/components/theme/elder-theme.directive.mjs +3 -3
  221. package/esm2020/lib/components/theme/elder-theme.module.mjs +4 -4
  222. package/esm2020/lib/components/theme/elder-theme.service.mjs +3 -3
  223. package/esm2020/lib/components/time/date-adapters/custom-date-adapter.mjs +3 -3
  224. package/esm2020/lib/components/time/duration/elder-duration-input/elder-duration-input.component.mjs +3 -3
  225. package/esm2020/lib/components/time/elder-date-switcher/elder-date-switcher.component.mjs +3 -3
  226. package/esm2020/lib/components/time/elder-date-time-input/elder-date-time-input.component.mjs +3 -3
  227. package/esm2020/lib/components/time/elder-interval-input/elder-interval-input.component.mjs +3 -3
  228. package/esm2020/lib/components/time/elder-local-date-input/elder-local-date-input.component.mjs +3 -3
  229. package/esm2020/lib/components/time/elder-local-time-input/elder-local-time-input.component.mjs +3 -3
  230. package/esm2020/lib/components/time/elder-time.module.mjs +8 -8
  231. package/esm2020/lib/components/time/period/elder-period-input/elder-period-input.component.mjs +3 -3
  232. package/esm2020/lib/components/toasts/elder-toast.module.mjs +4 -4
  233. package/esm2020/lib/components/toasts/elder-toast.service.mjs +9 -9
  234. package/esm2020/lib/components/toasts/standard-toast/standard-toast.component.mjs +3 -3
  235. package/esm2020/lib/components/url-fragment/elder-url-fragment.module.mjs +4 -4
  236. package/esm2020/lib/components/url-fragment/url-fragment-switcher/elder-url-fragment-switcher.component.mjs +3 -3
  237. package/esm2020/lib/components/viewers/elder-svg-viewer/elder-svg-viewer.component.mjs +3 -3
  238. package/esm2020/lib/components/viewers/elder-viewers.module.mjs +4 -4
  239. package/esm2020/lib/features/event-source/elder-event-source.service.mjs +3 -3
  240. package/esm2020/lib/features/kafent/access-token-provider.mjs +3 -3
  241. package/esm2020/lib/features/kafent/kafent-config.mjs +3 -3
  242. package/esm2020/lib/features/kafent/kafent-event-stream.mjs +3 -3
  243. package/esm2020/lib/features/kafent/kafent-event.service.mjs +3 -3
  244. package/esm2020/lib/features/kafent/kafent.module.mjs +4 -4
  245. package/esm2020/lib/features/kafent/sse/kafent-event-stream-sse.service.mjs +3 -3
  246. package/esm2020/lib/pipes/bytes.pipe.mjs +3 -3
  247. package/esm2020/lib/pipes/elder-pipes.module.mjs +10 -10
  248. package/esm2020/lib/pipes/elder-repeat.pipe.mjs +3 -3
  249. package/esm2020/lib/pipes/elder-round.pipe.mjs +3 -3
  250. package/esm2020/lib/pipes/elder-safe-url.pipe.mjs +3 -3
  251. package/esm2020/lib/pipes/elder-truncate.pipe.mjs +3 -3
  252. package/esm2020/lib/pipes/iso-duration.pipe.mjs +3 -3
  253. package/esm2020/lib/pipes/iso-interval-parse.pipe.mjs +3 -3
  254. package/esm2020/lib/pipes/iso-interval.pipe.mjs +3 -3
  255. package/esm2020/lib/pipes/time-ago.pipe.mjs +3 -3
  256. package/esm2020/lib/pipes/time-duration.pipe.mjs +3 -3
  257. package/esm2020/lib/pipes/weight.pipe.mjs +3 -3
  258. package/fesm2015/elderbyte-ngx-starter.mjs +2862 -2260
  259. package/fesm2015/elderbyte-ngx-starter.mjs.map +1 -1
  260. package/fesm2020/elderbyte-ngx-starter.mjs +2841 -2241
  261. package/fesm2020/elderbyte-ngx-starter.mjs.map +1 -1
  262. package/lib/common/data/entity-set-patch.d.ts +32 -1
  263. package/lib/common/forms/elder-form-field-control-base.directive.d.ts +3 -1
  264. package/lib/common/json-map.d.ts +1 -1
  265. package/lib/common/utils/sort-util.d.ts +6 -0
  266. package/lib/components/data-view/base/data-view-options-provider-binding.d.ts +39 -0
  267. package/lib/components/data-view/base/elder-data-view-base.d.ts +29 -6
  268. package/lib/components/data-view/base/elder-data-view-options-provider.d.ts +38 -0
  269. package/lib/components/data-view/base/elder-data-view-options.d.ts +33 -0
  270. package/lib/components/data-view/base/public_api.d.ts +4 -0
  271. package/lib/components/data-view/grid/elder-grid/elder-grid.component.d.ts +4 -6
  272. package/lib/components/data-view/public_api.d.ts +1 -1
  273. package/lib/components/data-view/table/elder-table/elder-table.component.d.ts +5 -19
  274. package/lib/components/forms/directives/elder-form-field-label.directive.d.ts +19 -6
  275. package/lib/components/forms/search/search-box/elder-search-box.component.d.ts +2 -1
  276. package/lib/components/iframes/data-view/data-view-iframe/data-view-iframe.component.d.ts +66 -0
  277. package/lib/components/iframes/data-view/data-view-iframe-adapter.directive.d.ts +62 -0
  278. package/lib/components/iframes/elder-iframe.module.d.ts +14 -10
  279. package/lib/components/iframes/iframe-host/iframe-host.component.d.ts +28 -10
  280. package/lib/components/iframes/iframe.service.d.ts +3 -3
  281. package/lib/components/iframes/typed-event-message.d.ts +26 -0
  282. package/lib/components/select/elder-select-base.d.ts +2 -1
  283. package/lib/components/select/elder-select.module.d.ts +3 -2
  284. package/lib/components/select/multi/elder-multi-select-base.d.ts +25 -3
  285. package/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.d.ts +6 -3
  286. package/lib/components/select/multi/elder-multi-select-form-field.d.ts +2 -1
  287. package/lib/components/select/popup/selection-model-popup.directive.d.ts +7 -27
  288. package/lib/components/select/public_api.d.ts +1 -0
  289. package/lib/components/select/single/elder-select/elder-select.component.d.ts +6 -9
  290. package/lib/components/shell/shell/elder-shell.component.d.ts +4 -1
  291. package/package.json +4 -4
  292. package/src/lib/components/cards/elder-card/elder-card.component.scss +1 -6
  293. package/src/lib/components/iframes/data-view/data-view-iframe/data-view-iframe.component.scss +0 -0
  294. package/src/lib/components/select/_elder-select-base.scss +131 -0
  295. package/src/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.scss +33 -49
  296. package/src/lib/components/select/single/elder-select/elder-select.component.scss +36 -73
  297. package/theming/_elder-common.scss +4 -38
  298. package/theming/_elder-typography-utils.scss +11 -0
  299. package/esm2020/lib/components/data-view/base/elder-data-view-base.module.mjs +0 -18
  300. package/esm2020/lib/components/iframes/iframe-message.mjs +0 -2
  301. package/lib/components/data-view/base/elder-data-view-base.module.d.ts +0 -9
  302. package/lib/components/iframes/iframe-message.d.ts +0 -5
@@ -27,9 +27,9 @@ export class CsvStreamExporterBuilderService {
27
27
  return new CsvStreamExporterBuilder(this.translateService, dataSource, csvSpec);
28
28
  }
29
29
  }
30
- CsvStreamExporterBuilderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: CsvStreamExporterBuilderService, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable });
31
- CsvStreamExporterBuilderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: CsvStreamExporterBuilderService, providedIn: 'root' });
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: CsvStreamExporterBuilderService, decorators: [{
30
+ CsvStreamExporterBuilderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: CsvStreamExporterBuilderService, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable });
31
+ CsvStreamExporterBuilderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: CsvStreamExporterBuilderService, providedIn: 'root' });
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: CsvStreamExporterBuilderService, decorators: [{
33
33
  type: Injectable,
34
34
  args: [{
35
35
  providedIn: 'root'
@@ -10,14 +10,14 @@ export * from './elder-csv-stream-exporter-builder';
10
10
  export * from './elder-csv-stream-exporter';
11
11
  export class ElderCsvModule {
12
12
  }
13
- ElderCsvModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: ElderCsvModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
14
- ElderCsvModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.4", ngImport: i0, type: ElderCsvModule, declarations: [ElderCsvExportBtnComponent], imports: [CommonModule,
13
+ ElderCsvModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderCsvModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
14
+ ElderCsvModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.0", ngImport: i0, type: ElderCsvModule, declarations: [ElderCsvExportBtnComponent], imports: [CommonModule,
15
15
  MatButtonModule,
16
16
  MatIconModule], exports: [ElderCsvExportBtnComponent] });
17
- ElderCsvModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: ElderCsvModule, imports: [CommonModule,
17
+ ElderCsvModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderCsvModule, imports: [CommonModule,
18
18
  MatButtonModule,
19
19
  MatIconModule] });
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: ElderCsvModule, decorators: [{
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderCsvModule, decorators: [{
21
21
  type: NgModule,
22
22
  args: [{
23
23
  imports: [
@@ -4,10 +4,10 @@ import { ElderCurrencyPipe } from './elder-currency.pipe';
4
4
  import * as i0 from "@angular/core";
5
5
  export class ElderCurrencyModule {
6
6
  }
7
- ElderCurrencyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: ElderCurrencyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
- ElderCurrencyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.4", ngImport: i0, type: ElderCurrencyModule, declarations: [ElderCurrencyPipe], imports: [CommonModule], exports: [ElderCurrencyPipe] });
9
- ElderCurrencyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: ElderCurrencyModule, imports: [CommonModule] });
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: ElderCurrencyModule, decorators: [{
7
+ ElderCurrencyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderCurrencyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
+ ElderCurrencyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.0", ngImport: i0, type: ElderCurrencyModule, declarations: [ElderCurrencyPipe], imports: [CommonModule], exports: [ElderCurrencyPipe] });
9
+ ElderCurrencyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderCurrencyModule, imports: [CommonModule] });
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderCurrencyModule, decorators: [{
11
11
  type: NgModule,
12
12
  args: [{
13
13
  imports: [
@@ -22,9 +22,9 @@ export class ElderCurrencyPipe {
22
22
  return this.currencyPipe.transform(currency.value, currency.code, display, digitsInfo, locale);
23
23
  }
24
24
  }
25
- ElderCurrencyPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: ElderCurrencyPipe, deps: [{ token: i1.CurrencyPipe }], target: i0.ɵɵFactoryTarget.Pipe });
26
- ElderCurrencyPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.0.4", ngImport: i0, type: ElderCurrencyPipe, name: "elderCurrency" });
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: ElderCurrencyPipe, decorators: [{
25
+ ElderCurrencyPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderCurrencyPipe, deps: [{ token: i1.CurrencyPipe }], target: i0.ɵɵFactoryTarget.Pipe });
26
+ ElderCurrencyPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.1.0", ngImport: i0, type: ElderCurrencyPipe, name: "elderCurrency" });
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderCurrencyPipe, decorators: [{
28
28
  type: Pipe,
29
29
  args: [{
30
30
  name: 'elderCurrency'
@@ -23,8 +23,8 @@ export { HttpDataTransferOverviewComponent } from './http-data-transfer-overview
23
23
  export { HttpDataTransferIndicatorComponent } from './http-data-transfer-indicator/http-data-transfer-indicator.component';
24
24
  export class ElderDataTransferModule {
25
25
  }
26
- ElderDataTransferModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: ElderDataTransferModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
27
- ElderDataTransferModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.4", ngImport: i0, type: ElderDataTransferModule, declarations: [HttpDataTransferComponent,
26
+ ElderDataTransferModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderDataTransferModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
27
+ ElderDataTransferModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.0", ngImport: i0, type: ElderDataTransferModule, declarations: [HttpDataTransferComponent,
28
28
  HttpDataTransferAggregateComponent,
29
29
  HttpDataTransferOverviewComponent,
30
30
  HttpDataTransferIndicatorComponent], imports: [CommonModule,
@@ -38,7 +38,7 @@ ElderDataTransferModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0",
38
38
  HttpDataTransferAggregateComponent,
39
39
  HttpDataTransferOverviewComponent,
40
40
  HttpDataTransferIndicatorComponent] });
41
- ElderDataTransferModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: ElderDataTransferModule, imports: [CommonModule,
41
+ ElderDataTransferModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderDataTransferModule, imports: [CommonModule,
42
42
  MatIconModule, MatProgressBarModule,
43
43
  MatTooltipModule, MatToolbarModule,
44
44
  MatButtonModule, MatBadgeModule,
@@ -46,7 +46,7 @@ ElderDataTransferModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0",
46
46
  FlexLayoutModule, TranslateModule,
47
47
  ElderPipesModule,
48
48
  ElderOverlayModule] });
49
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: ElderDataTransferModule, decorators: [{
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderDataTransferModule, decorators: [{
50
50
  type: NgModule,
51
51
  args: [{
52
52
  imports: [
@@ -78,9 +78,9 @@ export class ElderDataTransferService {
78
78
  return combineLatest(transfersInProgress).pipe(map(latestTransferStates => DataTransferProgressAggregate.aggregate(latestTransferStates)));
79
79
  }
80
80
  }
81
- ElderDataTransferService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: ElderDataTransferService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
82
- ElderDataTransferService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: ElderDataTransferService, providedIn: 'root' });
83
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: ElderDataTransferService, decorators: [{
81
+ ElderDataTransferService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderDataTransferService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
82
+ ElderDataTransferService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderDataTransferService, providedIn: 'root' });
83
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderDataTransferService, decorators: [{
84
84
  type: Injectable,
85
85
  args: [{
86
86
  providedIn: 'root'
@@ -57,9 +57,9 @@ export class HttpDataTransferComponent {
57
57
  }));
58
58
  }
59
59
  }
60
- HttpDataTransferComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: HttpDataTransferComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
61
- HttpDataTransferComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.4", type: HttpDataTransferComponent, selector: "elder-data-transfer", inputs: { transfer: "transfer" }, ngImport: i0, template: "\n\n<div *ngIf=\"($state | async) as state\"\n fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"16px\" fxFlex class=\"padding-10 transfer\"\n>\n\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFlex=\"10\">\n <mat-icon class=\"noselect\">\n {{state.isCompleted ? 'check' : 'attachment'}}\n </mat-icon>\n\n <!--\n <mat-icon\n *ngIf=\"!(statusOf(file)?.error | async) && (statusOf(file)?.progress | async) === 100\"\n class=\"green-icon\"\n >check</mat-icon>\n -->\n\n </div>\n\n\n <div fxLayout=\"column\" fxFlex=\"80\" style=\"overflow: hidden\">\n\n <span class=\"mat-body-2 noselect title\">{{transfer.name}}</span>\n\n <mat-progress-bar\n [matTooltip]=\"state.error?.message\"\n [color]=\"(state.error ? 'warn' : '')\"\n mode=\"determinate\"\n [value]=\"state.progress.percentDone\"\n ></mat-progress-bar>\n\n <span class=\"mat-caption noselect\">{{($detail | async)}}</span>\n\n </div>\n\n\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFlex=\"10\">\n <button mat-icon-button type=\"button\"\n (click)=\"transfer.abort()\" [disabled]=\"state.isDone\">\n <mat-icon>\n close\n </mat-icon>\n </button>\n </div>\n\n</div>\n", styles: [".transfer{overflow:hidden}.title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-bottom:5px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i6.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i6.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i6.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i6.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
62
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: HttpDataTransferComponent, decorators: [{
60
+ HttpDataTransferComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: HttpDataTransferComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
61
+ HttpDataTransferComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: HttpDataTransferComponent, selector: "elder-data-transfer", inputs: { transfer: "transfer" }, ngImport: i0, template: "\n\n<div *ngIf=\"($state | async) as state\"\n fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"16px\" fxFlex class=\"padding-10 transfer\"\n>\n\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFlex=\"10\">\n <mat-icon class=\"noselect\">\n {{state.isCompleted ? 'check' : 'attachment'}}\n </mat-icon>\n\n <!--\n <mat-icon\n *ngIf=\"!(statusOf(file)?.error | async) && (statusOf(file)?.progress | async) === 100\"\n class=\"green-icon\"\n >check</mat-icon>\n -->\n\n </div>\n\n\n <div fxLayout=\"column\" fxFlex=\"80\" style=\"overflow: hidden\">\n\n <span class=\"mat-body-2 noselect title\">{{transfer.name}}</span>\n\n <mat-progress-bar\n [matTooltip]=\"state.error?.message\"\n [color]=\"(state.error ? 'warn' : '')\"\n mode=\"determinate\"\n [value]=\"state.progress.percentDone\"\n ></mat-progress-bar>\n\n <span class=\"mat-caption noselect\">{{($detail | async)}}</span>\n\n </div>\n\n\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFlex=\"10\">\n <button mat-icon-button type=\"button\"\n (click)=\"transfer.abort()\" [disabled]=\"state.isDone\">\n <mat-icon>\n close\n </mat-icon>\n </button>\n </div>\n\n</div>\n", styles: [".transfer{overflow:hidden}.title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-bottom:5px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i6.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i6.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i6.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i6.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
62
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: HttpDataTransferComponent, decorators: [{
63
63
  type: Component,
64
64
  args: [{ selector: 'elder-data-transfer', changeDetection: ChangeDetectionStrategy.OnPush, template: "\n\n<div *ngIf=\"($state | async) as state\"\n fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"16px\" fxFlex class=\"padding-10 transfer\"\n>\n\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFlex=\"10\">\n <mat-icon class=\"noselect\">\n {{state.isCompleted ? 'check' : 'attachment'}}\n </mat-icon>\n\n <!--\n <mat-icon\n *ngIf=\"!(statusOf(file)?.error | async) && (statusOf(file)?.progress | async) === 100\"\n class=\"green-icon\"\n >check</mat-icon>\n -->\n\n </div>\n\n\n <div fxLayout=\"column\" fxFlex=\"80\" style=\"overflow: hidden\">\n\n <span class=\"mat-body-2 noselect title\">{{transfer.name}}</span>\n\n <mat-progress-bar\n [matTooltip]=\"state.error?.message\"\n [color]=\"(state.error ? 'warn' : '')\"\n mode=\"determinate\"\n [value]=\"state.progress.percentDone\"\n ></mat-progress-bar>\n\n <span class=\"mat-caption noselect\">{{($detail | async)}}</span>\n\n </div>\n\n\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFlex=\"10\">\n <button mat-icon-button type=\"button\"\n (click)=\"transfer.abort()\" [disabled]=\"state.isDone\">\n <mat-icon>\n close\n </mat-icon>\n </button>\n </div>\n\n</div>\n", styles: [".transfer{overflow:hidden}.title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-bottom:5px}\n"] }]
65
65
  }], ctorParameters: function () { return []; }, propDecorators: { transfer: [{
@@ -24,9 +24,9 @@ export class HttpDataTransferAggregateComponent {
24
24
  this.aggregate$ = this.transferService.transferAggregate;
25
25
  }
26
26
  }
27
- HttpDataTransferAggregateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: HttpDataTransferAggregateComponent, deps: [{ token: i1.ElderDataTransferService }], target: i0.ɵɵFactoryTarget.Component });
28
- HttpDataTransferAggregateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.4", type: HttpDataTransferAggregateComponent, selector: "elder-data-transfer-aggregate", inputs: { hiddenWhenInactive: "hiddenWhenInactive" }, ngImport: i0, template: "<ng-container *ngIf=\"(aggregate$ | async) as aggregate\">\n\n <div *ngIf=\"!hiddenWhenInactive || aggregate.inTransfer > 0\" fxLayout=\"column\" fxFlex>\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <span>{{aggregate.bps}}</span>\n </div>\n\n <mat-progress-bar\n [color]=\"'accent'\"\n mode=\"determinate\"\n [value]=\"aggregate.percentDone\"\n\n ></mat-progress-bar>\n\n <div fxLayout=\"row\">\n\n <!--\n <span class=\"mat-caption\">{{aggregate.doneBytesAgg | bytes:1}}</span>\n -->\n <span class=\"mat-caption\">{{aggregate.percentDone}}%</span>\n\n <span fxFlex></span>\n <span class=\"mat-caption\">TOTAL {{aggregate.totalBytesAgg | bytes:1}}</span>\n </div>\n </div>\n</ng-container>\n\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i4.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.BytesPipe, name: "bytes" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: HttpDataTransferAggregateComponent, decorators: [{
27
+ HttpDataTransferAggregateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: HttpDataTransferAggregateComponent, deps: [{ token: i1.ElderDataTransferService }], target: i0.ɵɵFactoryTarget.Component });
28
+ HttpDataTransferAggregateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: HttpDataTransferAggregateComponent, selector: "elder-data-transfer-aggregate", inputs: { hiddenWhenInactive: "hiddenWhenInactive" }, ngImport: i0, template: "<ng-container *ngIf=\"(aggregate$ | async) as aggregate\">\n\n <div *ngIf=\"!hiddenWhenInactive || aggregate.inTransfer > 0\" fxLayout=\"column\" fxFlex>\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <span>{{aggregate.bps}}</span>\n </div>\n\n <mat-progress-bar\n [color]=\"'accent'\"\n mode=\"determinate\"\n [value]=\"aggregate.percentDone\"\n\n ></mat-progress-bar>\n\n <div fxLayout=\"row\">\n\n <!--\n <span class=\"mat-caption\">{{aggregate.doneBytesAgg | bytes:1}}</span>\n -->\n <span class=\"mat-caption\">{{aggregate.percentDone}}%</span>\n\n <span fxFlex></span>\n <span class=\"mat-caption\">TOTAL {{aggregate.totalBytesAgg | bytes:1}}</span>\n </div>\n </div>\n</ng-container>\n\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i4.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.BytesPipe, name: "bytes" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: HttpDataTransferAggregateComponent, decorators: [{
30
30
  type: Component,
31
31
  args: [{ selector: 'elder-data-transfer-aggregate', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"(aggregate$ | async) as aggregate\">\n\n <div *ngIf=\"!hiddenWhenInactive || aggregate.inTransfer > 0\" fxLayout=\"column\" fxFlex>\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <span>{{aggregate.bps}}</span>\n </div>\n\n <mat-progress-bar\n [color]=\"'accent'\"\n mode=\"determinate\"\n [value]=\"aggregate.percentDone\"\n\n ></mat-progress-bar>\n\n <div fxLayout=\"row\">\n\n <!--\n <span class=\"mat-caption\">{{aggregate.doneBytesAgg | bytes:1}}</span>\n -->\n <span class=\"mat-caption\">{{aggregate.percentDone}}%</span>\n\n <span fxFlex></span>\n <span class=\"mat-caption\">TOTAL {{aggregate.totalBytesAgg | bytes:1}}</span>\n </div>\n </div>\n</ng-container>\n\n" }]
32
32
  }], ctorParameters: function () { return [{ type: i1.ElderDataTransferService }]; }, propDecorators: { hiddenWhenInactive: [{
@@ -35,9 +35,9 @@ export class HttpDataTransferIndicatorComponent {
35
35
  this.aggregate$ = this.transferService.transferAggregate;
36
36
  }
37
37
  }
38
- HttpDataTransferIndicatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: HttpDataTransferIndicatorComponent, deps: [{ token: i1.ElderDataTransferService }], target: i0.ɵɵFactoryTarget.Component });
39
- HttpDataTransferIndicatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.4", type: HttpDataTransferIndicatorComponent, selector: "elder-data-transfer-indicator", inputs: { activeColor: "activeColor", inactiveColor: "inactiveColor" }, ngImport: i0, template: "\n<ng-container *ngIf=\"aggregate$ | async as aggregate\">\n\n <button mat-icon-button type=\"button\"\n fxLayout=\"row\" fxLayoutAlign=\"center center\"\n [elderOverlayTrigger]=\"overlay\">\n\n <mat-icon *ngIf=\"aggregate.inTransfer == 0\" [color]=\"inactiveColor\">cloud_upload</mat-icon>\n\n <mat-progress-spinner\n *ngIf=\"aggregate.inTransfer > 0\"\n [matBadge]=\"aggregate.inTransfer\"\n matBadgePosition=\"above after\"\n matBadgeSize=\"small\"\n [matBadgeColor]=\"activeColor\"\n [color]=\"activeColor\"\n [strokeWidth]=\"3\"\n [diameter]=\"38\"\n [value]=\"aggregate.percentDone\"\n mode=\"determinate\"\n >\n </mat-progress-spinner>\n\n </button>\n</ng-container>\n\n<elder-overlay #overlay=\"elderOverlay\" originX=\"center\" overlayX=\"center\">\n <elder-data-transfer-overview class=\"panel\">\n </elder-data-transfer-overview>\n</elder-overlay>\n\n", styles: [".panel{width:380px;height:350px;background-color:#fff;border-radius:5px;overflow:hidden;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i5.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgeColor", "matBadgeOverlap", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: i6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i7.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i7.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "component", type: i8.ElderOverlayComponent, selector: "elder-overlay", inputs: ["originX", "originY", "overlayX", "overlayY", "offsetY", "offsetX", "backdrop", "backdropVisible", "origin", "positionStrategy", "overlaySize"], outputs: ["keydownEvents", "attachedChange"], exportAs: ["elderOverlay"] }, { kind: "directive", type: i9.ElderOverlayTriggerDirective, selector: "[elderOverlayTrigger]", inputs: ["elderOverlayTrigger", "elderOverlayTriggerType", "elderOverlayTriggerEnabled"] }, { kind: "component", type: i10.HttpDataTransferOverviewComponent, selector: "elder-data-transfer-overview" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: HttpDataTransferIndicatorComponent, decorators: [{
38
+ HttpDataTransferIndicatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: HttpDataTransferIndicatorComponent, deps: [{ token: i1.ElderDataTransferService }], target: i0.ɵɵFactoryTarget.Component });
39
+ HttpDataTransferIndicatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: HttpDataTransferIndicatorComponent, selector: "elder-data-transfer-indicator", inputs: { activeColor: "activeColor", inactiveColor: "inactiveColor" }, ngImport: i0, template: "\n<ng-container *ngIf=\"aggregate$ | async as aggregate\">\n\n <button mat-icon-button type=\"button\"\n fxLayout=\"row\" fxLayoutAlign=\"center center\"\n [elderOverlayTrigger]=\"overlay\">\n\n <mat-icon *ngIf=\"aggregate.inTransfer == 0\" [color]=\"inactiveColor\">cloud_upload</mat-icon>\n\n <mat-progress-spinner\n *ngIf=\"aggregate.inTransfer > 0\"\n [matBadge]=\"aggregate.inTransfer\"\n matBadgePosition=\"above after\"\n matBadgeSize=\"small\"\n [matBadgeColor]=\"activeColor\"\n [color]=\"activeColor\"\n [strokeWidth]=\"3\"\n [diameter]=\"38\"\n [value]=\"aggregate.percentDone\"\n mode=\"determinate\"\n >\n </mat-progress-spinner>\n\n </button>\n</ng-container>\n\n<elder-overlay #overlay=\"elderOverlay\" originX=\"center\" overlayX=\"center\">\n <elder-data-transfer-overview class=\"panel\">\n </elder-data-transfer-overview>\n</elder-overlay>\n\n", styles: [".panel{width:380px;height:350px;background-color:#fff;border-radius:5px;overflow:hidden;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i5.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgeColor", "matBadgeOverlap", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: i6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i7.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i7.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "component", type: i8.ElderOverlayComponent, selector: "elder-overlay", inputs: ["originX", "originY", "overlayX", "overlayY", "offsetY", "offsetX", "backdrop", "backdropVisible", "origin", "positionStrategy", "overlaySize"], outputs: ["keydownEvents", "attachedChange"], exportAs: ["elderOverlay"] }, { kind: "directive", type: i9.ElderOverlayTriggerDirective, selector: "[elderOverlayTrigger]", inputs: ["elderOverlayTrigger", "elderOverlayTriggerType", "elderOverlayTriggerEnabled"] }, { kind: "component", type: i10.HttpDataTransferOverviewComponent, selector: "elder-data-transfer-overview" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: HttpDataTransferIndicatorComponent, decorators: [{
41
41
  type: Component,
42
42
  args: [{ selector: 'elder-data-transfer-indicator', changeDetection: ChangeDetectionStrategy.OnPush, template: "\n<ng-container *ngIf=\"aggregate$ | async as aggregate\">\n\n <button mat-icon-button type=\"button\"\n fxLayout=\"row\" fxLayoutAlign=\"center center\"\n [elderOverlayTrigger]=\"overlay\">\n\n <mat-icon *ngIf=\"aggregate.inTransfer == 0\" [color]=\"inactiveColor\">cloud_upload</mat-icon>\n\n <mat-progress-spinner\n *ngIf=\"aggregate.inTransfer > 0\"\n [matBadge]=\"aggregate.inTransfer\"\n matBadgePosition=\"above after\"\n matBadgeSize=\"small\"\n [matBadgeColor]=\"activeColor\"\n [color]=\"activeColor\"\n [strokeWidth]=\"3\"\n [diameter]=\"38\"\n [value]=\"aggregate.percentDone\"\n mode=\"determinate\"\n >\n </mat-progress-spinner>\n\n </button>\n</ng-container>\n\n<elder-overlay #overlay=\"elderOverlay\" originX=\"center\" overlayX=\"center\">\n <elder-data-transfer-overview class=\"panel\">\n </elder-data-transfer-overview>\n</elder-overlay>\n\n", styles: [".panel{width:380px;height:350px;background-color:#fff;border-radius:5px;overflow:hidden;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}\n"] }]
43
43
  }], ctorParameters: function () { return [{ type: i1.ElderDataTransferService }]; }, propDecorators: { activeColor: [{
@@ -24,9 +24,9 @@ export class HttpDataTransferOverviewComponent {
24
24
  this.transfers$ = this.transferService.transfers;
25
25
  }
26
26
  }
27
- HttpDataTransferOverviewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: HttpDataTransferOverviewComponent, deps: [{ token: i1.ElderDataTransferService }], target: i0.ɵɵFactoryTarget.Component });
28
- HttpDataTransferOverviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.4", type: HttpDataTransferOverviewComponent, selector: "elder-data-transfer-overview", ngImport: i0, template: "<div fxLayout=\"column\" fxFill>\n\n <div fxLayout=\"column\" fxFlex *ngIf=\"transfers$ | async as transfers\">\n\n <div *ngIf=\"transfers.length > 0 else noData\" fxLayout=\"column\" fxFlex class=\"scroll-list\">\n <elder-data-transfer fxFlex=\"none\"\n *ngFor=\"let transfer of transfers\"\n [transfer]=\"transfer\">\n </elder-data-transfer>\n </div>\n\n <ng-template #noData>\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFlex>\n <span class=\"mat-body-2 noselect\" style=\"color: gray\">No data transfers.</span>\n </div>\n </ng-template>\n\n </div>\n\n\n <mat-toolbar fxFlex=\"none\" class=\"mat-elevation-z5\">\n <elder-data-transfer-aggregate fxFlex [hiddenWhenInactive]=\"false\"></elder-data-transfer-aggregate>\n </mat-toolbar>\n</div>\n", styles: [":host{min-width:0;min-height:0}.scroll-list{overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.scroll-fix{min-width:0;min-height:0}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i4.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i4.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i5.HttpDataTransferComponent, selector: "elder-data-transfer", inputs: ["transfer"] }, { kind: "component", type: i6.HttpDataTransferAggregateComponent, selector: "elder-data-transfer-aggregate", inputs: ["hiddenWhenInactive"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: HttpDataTransferOverviewComponent, decorators: [{
27
+ HttpDataTransferOverviewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: HttpDataTransferOverviewComponent, deps: [{ token: i1.ElderDataTransferService }], target: i0.ɵɵFactoryTarget.Component });
28
+ HttpDataTransferOverviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: HttpDataTransferOverviewComponent, selector: "elder-data-transfer-overview", ngImport: i0, template: "<div fxLayout=\"column\" fxFill>\n\n <div fxLayout=\"column\" fxFlex *ngIf=\"transfers$ | async as transfers\">\n\n <div *ngIf=\"transfers.length > 0 else noData\" fxLayout=\"column\" fxFlex class=\"scroll-list\">\n <elder-data-transfer fxFlex=\"none\"\n *ngFor=\"let transfer of transfers\"\n [transfer]=\"transfer\">\n </elder-data-transfer>\n </div>\n\n <ng-template #noData>\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFlex>\n <span class=\"mat-body-2 noselect\" style=\"color: gray\">No data transfers.</span>\n </div>\n </ng-template>\n\n </div>\n\n\n <mat-toolbar fxFlex=\"none\" class=\"mat-elevation-z5\">\n <elder-data-transfer-aggregate fxFlex [hiddenWhenInactive]=\"false\"></elder-data-transfer-aggregate>\n </mat-toolbar>\n</div>\n", styles: [":host{min-width:0;min-height:0}.scroll-list{overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.scroll-fix{min-width:0;min-height:0}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i4.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i4.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i5.HttpDataTransferComponent, selector: "elder-data-transfer", inputs: ["transfer"] }, { kind: "component", type: i6.HttpDataTransferAggregateComponent, selector: "elder-data-transfer-aggregate", inputs: ["hiddenWhenInactive"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: HttpDataTransferOverviewComponent, decorators: [{
30
30
  type: Component,
31
31
  args: [{ selector: 'elder-data-transfer-overview', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div fxLayout=\"column\" fxFill>\n\n <div fxLayout=\"column\" fxFlex *ngIf=\"transfers$ | async as transfers\">\n\n <div *ngIf=\"transfers.length > 0 else noData\" fxLayout=\"column\" fxFlex class=\"scroll-list\">\n <elder-data-transfer fxFlex=\"none\"\n *ngFor=\"let transfer of transfers\"\n [transfer]=\"transfer\">\n </elder-data-transfer>\n </div>\n\n <ng-template #noData>\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFlex>\n <span class=\"mat-body-2 noselect\" style=\"color: gray\">No data transfers.</span>\n </div>\n </ng-template>\n\n </div>\n\n\n <mat-toolbar fxFlex=\"none\" class=\"mat-elevation-z5\">\n <elder-data-transfer-aggregate fxFlex [hiddenWhenInactive]=\"false\"></elder-data-transfer-aggregate>\n </mat-toolbar>\n</div>\n", styles: [":host{min-width:0;min-height:0}.scroll-list{overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.scroll-fix{min-width:0;min-height:0}\n"] }]
32
32
  }], ctorParameters: function () { return [{ type: i1.ElderDataTransferService }]; } });
@@ -0,0 +1,63 @@
1
+ import { LoggerFactory } from '@elderbyte/ts-logger';
2
+ import { takeUntil } from 'rxjs/operators';
3
+ export class DataViewOptionsProviderBinding {
4
+ /***************************************************************************
5
+ * *
6
+ * Constructor *
7
+ * *
8
+ **************************************************************************/
9
+ constructor(_dataViewBaseComponent) {
10
+ this._dataViewBaseComponent = _dataViewBaseComponent;
11
+ /***************************************************************************
12
+ * *
13
+ * Fields *
14
+ * *
15
+ **************************************************************************/
16
+ this.log = LoggerFactory.getLogger(this.constructor.name);
17
+ if (_dataViewBaseComponent == null) {
18
+ throw new Error('dataViewBaseComponent must not be null!');
19
+ }
20
+ }
21
+ /***************************************************************************
22
+ * *
23
+ * Static Builder *
24
+ * *
25
+ **************************************************************************/
26
+ static of(dataViewBaseComponent) {
27
+ return new DataViewOptionsProviderBinding(dataViewBaseComponent);
28
+ }
29
+ /***************************************************************************
30
+ * *
31
+ * Public API *
32
+ * *
33
+ **************************************************************************/
34
+ dataViewOptionsProvider(optionsProvider) {
35
+ if (!optionsProvider) {
36
+ throw new Error('dataViewSelection must not be null!');
37
+ }
38
+ this._optionsProvider = optionsProvider;
39
+ return this;
40
+ }
41
+ bindUntil(unsubscribe$) {
42
+ if (!this._optionsProvider) {
43
+ throw new Error('DataView must be defined to start binding. Use .dataView(dataView)!');
44
+ }
45
+ this._optionsProvider.options$.pipe(takeUntil(unsubscribe$)).subscribe(options => this.applyOptions(options));
46
+ return this;
47
+ }
48
+ /***************************************************************************
49
+ * *
50
+ * Private Methods *
51
+ * *
52
+ **************************************************************************/
53
+ applyOptions(options) {
54
+ const dataCtx = this._dataViewBaseComponent.dataContext;
55
+ if (dataCtx) {
56
+ dataCtx.filter.updateFilters(options.filters);
57
+ dataCtx.sort.updateSorts(options.sorts);
58
+ }
59
+ this._dataViewBaseComponent.interactionMode = options.interactionMode;
60
+ this._dataViewBaseComponent.selectionMultiEnabled = options.selectionMultiEnabled;
61
+ }
62
+ }
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS12aWV3LW9wdGlvbnMtcHJvdmlkZXItYmluZGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvZGF0YS12aWV3L2Jhc2UvZGF0YS12aWV3LW9wdGlvbnMtcHJvdmlkZXItYmluZGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBS3pDLE1BQU0sT0FBTyw4QkFBOEI7SUFzQnpDOzs7O2dGQUk0RTtJQUU1RSxZQUNtQixzQkFBa0Q7UUFBbEQsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUE0QjtRQTNCckU7Ozs7b0ZBSTRFO1FBRTNELFFBQUcsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUF1QnBFLElBQUksc0JBQXNCLElBQUksSUFBSSxFQUFFO1lBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQztTQUM1RDtJQUNILENBQUM7SUF0QkQ7Ozs7Z0ZBSTRFO0lBRXJFLE1BQU0sQ0FBQyxFQUFFLENBQUMscUJBQWlEO1FBQ2hFLE9BQU8sSUFBSSw4QkFBOEIsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFnQkQ7Ozs7Z0ZBSTRFO0lBRXJFLHVCQUF1QixDQUFDLGVBQTZDO1FBQzFFLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1NBQ3hEO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGVBQWUsQ0FBQztRQUN4QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxTQUFTLENBQ2QsWUFBNkI7UUFHN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUMxQixNQUFNLElBQUksS0FBSyxDQUFDLHFFQUFxRSxDQUFDLENBQUM7U0FDeEY7UUFFRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDakMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUN4QixDQUFDLFNBQVMsQ0FDVCxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQ3RDLENBQUM7UUFFRixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7OztnRkFJNEU7SUFFckUsWUFBWSxDQUFDLE9BQTZCO1FBQy9DLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLENBQUM7UUFFeEQsSUFBSSxPQUFPLEVBQUU7WUFDWCxPQUFPLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDOUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3pDO1FBRUQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDO1FBQ3RFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxxQkFBcUIsR0FBRyxPQUFPLENBQUMscUJBQXFCLENBQUM7SUFDcEYsQ0FBQztDQUdGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7TG9nZ2VyRmFjdG9yeX0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInO1xuaW1wb3J0IHt0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7RWxkZXJEYXRhVmlld0Jhc2VDb21wb25lbnR9IGZyb20gJy4vZWxkZXItZGF0YS12aWV3LWJhc2UnO1xuaW1wb3J0IHtFbGRlckRhdGFWaWV3T3B0aW9uc1Byb3ZpZGVyfSBmcm9tICcuL2VsZGVyLWRhdGEtdmlldy1vcHRpb25zLXByb3ZpZGVyJztcbmltcG9ydCB7RWxkZXJEYXRhVmlld09wdGlvbnN9IGZyb20gJy4vZWxkZXItZGF0YS12aWV3LW9wdGlvbnMnO1xuXG5leHBvcnQgY2xhc3MgRGF0YVZpZXdPcHRpb25zUHJvdmlkZXJCaW5kaW5nIHtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlYWRvbmx5IGxvZyA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXMuY29uc3RydWN0b3IubmFtZSk7XG5cbiAgcHJpdmF0ZSBfb3B0aW9uc1Byb3ZpZGVyOiBFbGRlckRhdGFWaWV3T3B0aW9uc1Byb3ZpZGVyO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBTdGF0aWMgQnVpbGRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBzdGF0aWMgb2YoZGF0YVZpZXdCYXNlQ29tcG9uZW50OiBFbGRlckRhdGFWaWV3QmFzZUNvbXBvbmVudCk6IERhdGFWaWV3T3B0aW9uc1Byb3ZpZGVyQmluZGluZyB7XG4gICAgcmV0dXJuIG5ldyBEYXRhVmlld09wdGlvbnNQcm92aWRlckJpbmRpbmcoZGF0YVZpZXdCYXNlQ29tcG9uZW50KTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kYXRhVmlld0Jhc2VDb21wb25lbnQ6IEVsZGVyRGF0YVZpZXdCYXNlQ29tcG9uZW50XG4gICkge1xuICAgIGlmIChfZGF0YVZpZXdCYXNlQ29tcG9uZW50ID09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZGF0YVZpZXdCYXNlQ29tcG9uZW50IG11c3Qgbm90IGJlIG51bGwhJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIGRhdGFWaWV3T3B0aW9uc1Byb3ZpZGVyKG9wdGlvbnNQcm92aWRlcjogRWxkZXJEYXRhVmlld09wdGlvbnNQcm92aWRlcik6IHRoaXMge1xuICAgIGlmICghb3B0aW9uc1Byb3ZpZGVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2RhdGFWaWV3U2VsZWN0aW9uIG11c3Qgbm90IGJlIG51bGwhJyk7XG4gICAgfVxuICAgIHRoaXMuX29wdGlvbnNQcm92aWRlciA9IG9wdGlvbnNQcm92aWRlcjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBiaW5kVW50aWwoXG4gICAgdW5zdWJzY3JpYmUkOiBPYnNlcnZhYmxlPGFueT5cbiAgKTogdGhpcyB7XG5cbiAgICBpZiAoIXRoaXMuX29wdGlvbnNQcm92aWRlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdEYXRhVmlldyBtdXN0IGJlIGRlZmluZWQgdG8gc3RhcnQgYmluZGluZy4gVXNlIC5kYXRhVmlldyhkYXRhVmlldykhJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fb3B0aW9uc1Byb3ZpZGVyLm9wdGlvbnMkLnBpcGUoXG4gICAgICB0YWtlVW50aWwodW5zdWJzY3JpYmUkKVxuICAgICkuc3Vic2NyaWJlKFxuICAgICAgb3B0aW9ucyA9PiB0aGlzLmFwcGx5T3B0aW9ucyhvcHRpb25zKVxuICAgICk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIE1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBhcHBseU9wdGlvbnMob3B0aW9uczogRWxkZXJEYXRhVmlld09wdGlvbnMpIHtcbiAgICBjb25zdCBkYXRhQ3R4ID0gdGhpcy5fZGF0YVZpZXdCYXNlQ29tcG9uZW50LmRhdGFDb250ZXh0O1xuXG4gICAgaWYgKGRhdGFDdHgpIHtcbiAgICAgIGRhdGFDdHguZmlsdGVyLnVwZGF0ZUZpbHRlcnMob3B0aW9ucy5maWx0ZXJzKTtcbiAgICAgIGRhdGFDdHguc29ydC51cGRhdGVTb3J0cyhvcHRpb25zLnNvcnRzKTtcbiAgICB9XG5cbiAgICB0aGlzLl9kYXRhVmlld0Jhc2VDb21wb25lbnQuaW50ZXJhY3Rpb25Nb2RlID0gb3B0aW9ucy5pbnRlcmFjdGlvbk1vZGU7XG4gICAgdGhpcy5fZGF0YVZpZXdCYXNlQ29tcG9uZW50LnNlbGVjdGlvbk11bHRpRW5hYmxlZCA9IG9wdGlvbnMuc2VsZWN0aW9uTXVsdGlFbmFibGVkO1xuICB9XG5cblxufVxuIl19
@@ -1,20 +1,21 @@
1
1
  import { coerceBooleanProperty } from '@angular/cdk/coercion';
2
- import { Component, Input, Output } from '@angular/core';
2
+ import { Directive, Input, Output } from '@angular/core';
3
3
  import { BehaviorSubject, Subject } from 'rxjs';
4
4
  import { map } from 'rxjs/operators';
5
5
  import { isActivePagedDataContext, isContinuableDataContext } from '../../../common/data/data-context/data-context';
6
6
  import { SelectionModel } from '../../../common/selection/selection-model';
7
+ import { DataViewOptionsProviderBinding } from './data-view-options-provider-binding';
7
8
  import * as i0 from "@angular/core";
8
9
  import * as i1 from "../../../common/selection/selection-model";
9
- import * as i2 from "../../select/popup/selection-model-popup.directive";
10
+ import * as i2 from "./elder-data-view-options-provider";
10
11
  export class ElderDataViewBaseComponent {
11
12
  /***************************************************************************
12
13
  * *
13
14
  * Constructor *
14
15
  * *
15
16
  **************************************************************************/
16
- constructor(selectionModel, dataViewSelection) {
17
- this.dataViewSelection = dataViewSelection;
17
+ constructor(selectionModel, dataViewOptionsProvider) {
18
+ this.dataViewOptionsProvider = dataViewOptionsProvider;
18
19
  /***************************************************************************
19
20
  * *
20
21
  * Fields *
@@ -25,6 +26,14 @@ export class ElderDataViewBaseComponent {
25
26
  */
26
27
  this.dataContext$ = new BehaviorSubject(null);
27
28
  this.interactionMode = 'open';
29
+ /**
30
+ * Define if elder-table should clean up the
31
+ * data-context resources for you.
32
+ *
33
+ * In more advanced scenarios where you plan to reuse the same data-context
34
+ * set this to false and release the resources yourself. (dataContext.close)
35
+ */
36
+ this.cleanUp = true;
28
37
  /**
29
38
  * If true, this table is in dense mode.
30
39
  * Heights are generally reduced.
@@ -42,6 +51,7 @@ export class ElderDataViewBaseComponent {
42
51
  this._embedded = false;
43
52
  this._itemClickSubject = new Subject();
44
53
  this.EntityIdKeyFn = (entity) => entity ? this.getId(entity) : 0;
54
+ this.destroy$ = new Subject();
45
55
  if (!selectionModel) {
46
56
  this.selectionModel = new SelectionModel(false, [], this.EntityIdKeyFn);
47
57
  }
@@ -49,6 +59,29 @@ export class ElderDataViewBaseComponent {
49
59
  this.selectionModel = selectionModel;
50
60
  }
51
61
  }
62
+ /***************************************************************************
63
+ * *
64
+ * Life Cycle *
65
+ * *
66
+ **************************************************************************/
67
+ ngOnInit() {
68
+ if (this.dataViewOptionsProvider) {
69
+ if (this.dataViewOptionsProvider.options.interactionMode === 'selection') {
70
+ this.selectionVisible = true;
71
+ this.float = false;
72
+ }
73
+ if (this.dataContext) {
74
+ DataViewOptionsProviderBinding.of(this)
75
+ .dataViewOptionsProvider(this.dataViewOptionsProvider)
76
+ .bindUntil(this.destroy$);
77
+ }
78
+ }
79
+ }
80
+ ngOnDestroy() {
81
+ this.destroy$.next();
82
+ this.destroy$.complete();
83
+ this.autoCleanUp();
84
+ }
52
85
  /***************************************************************************
53
86
  * *
54
87
  * Properties *
@@ -190,13 +223,23 @@ export class ElderDataViewBaseComponent {
190
223
  getId(entity) {
191
224
  return this.dataContext?.dataSource?.getId(entity) || entity;
192
225
  }
226
+ /**
227
+ * Performs clean up of the current data context if auto clean up is enabled.
228
+ */
229
+ autoCleanUp() {
230
+ if (this.cleanUp && this.dataContext) {
231
+ //this.logger.debug('Releasing DataContext resources to prevent memory leak. [cleanUp]="true"');
232
+ this.dataContext.close();
233
+ }
234
+ }
193
235
  }
194
- ElderDataViewBaseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: ElderDataViewBaseComponent, deps: [{ token: i1.SelectionModel }, { token: i2.ElderDataViewSelectionMode }], target: i0.ɵɵFactoryTarget.Component });
195
- ElderDataViewBaseComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.4", type: ElderDataViewBaseComponent, selector: "elder-data-view-base", inputs: { interactionMode: "interactionMode", selectableEvaluatorFn: "selectableEvaluatorFn", selection: "selection", selectionMultiEnabled: "selectionMultiEnabled", dense: "dense", float: "float", embedded: "embedded" }, outputs: { selectionChange: "selectionChange", selectionSingleChange: "selectionSingleChange", itemClick: "itemClick" }, ngImport: i0, template: '', isInline: true });
196
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: ElderDataViewBaseComponent, decorators: [{
197
- type: Component,
198
- args: [{ selector: 'elder-data-view-base', template: '' }]
199
- }], ctorParameters: function () { return [{ type: i1.SelectionModel }, { type: i2.ElderDataViewSelectionMode }]; }, propDecorators: { interactionMode: [{
236
+ ElderDataViewBaseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderDataViewBaseComponent, deps: [{ token: i1.SelectionModel }, { token: i2.ElderDataViewOptionsProvider }], target: i0.ɵɵFactoryTarget.Directive });
237
+ ElderDataViewBaseComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.0", type: ElderDataViewBaseComponent, inputs: { interactionMode: "interactionMode", cleanUp: "cleanUp", selectableEvaluatorFn: "selectableEvaluatorFn", selection: "selection", selectionMultiEnabled: "selectionMultiEnabled", dense: "dense", float: "float", embedded: "embedded" }, outputs: { selectionChange: "selectionChange", selectionSingleChange: "selectionSingleChange", itemClick: "itemClick" }, ngImport: i0 });
238
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderDataViewBaseComponent, decorators: [{
239
+ type: Directive
240
+ }], ctorParameters: function () { return [{ type: i1.SelectionModel }, { type: i2.ElderDataViewOptionsProvider }]; }, propDecorators: { interactionMode: [{
241
+ type: Input
242
+ }], cleanUp: [{
200
243
  type: Input
201
244
  }], selectableEvaluatorFn: [{
202
245
  type: Input
@@ -217,4 +260,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImpor
217
260
  }], embedded: [{
218
261
  type: Input
219
262
  }] } });
220
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItZGF0YS12aWV3LWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdmlldy9iYXNlL2VsZGVyLWRhdGEtdmlldy1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBQUMsZUFBZSxFQUFjLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUMxRCxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkMsT0FBTyxFQUlMLHdCQUF3QixFQUN4Qix3QkFBd0IsRUFDekIsTUFBTSxnREFBZ0QsQ0FBQztBQUN4RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sMkNBQTJDLENBQUM7Ozs7QUFJekUsTUFBTSxPQUFPLDBCQUEwQjtJQTJDckM7Ozs7Z0ZBSTRFO0lBRTVFLFlBQ0UsY0FBbUMsRUFDaEIsaUJBQTZDO1FBQTdDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBNEI7UUFqRGxFOzs7O29GQUk0RTtRQUU1RTs7V0FFRztRQUNhLGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQW9CLElBQUksQ0FBQyxDQUFDO1FBUXJFLG9CQUFlLEdBQWlDLE1BQU0sQ0FBQztRQUU5RDs7O1dBR0c7UUFDSyxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBRXZCOzs7V0FHRztRQUNLLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFFdkI7OztXQUdHO1FBQ0ssY0FBUyxHQUFHLEtBQUssQ0FBQztRQUVULHNCQUFpQixHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7UUFFdkMsa0JBQWEsR0FBRyxDQUFDLE1BQVcs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RDs7OztnRkFJNEU7SUFFbEUsS0FBSyxDQUFDLE1BQVc7UUFDekIsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDO0lBQy9ELENBQUM7O3VIQTNQVSwwQkFBMEI7MkdBQTFCLDBCQUEwQixtWkFEaUIsRUFBRTsyRkFDN0MsMEJBQTBCO2tCQUR0QyxTQUFTO21CQUFDLEVBQUMsUUFBUSxFQUFFLHNCQUFzQixFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUM7OElBb0JsRCxlQUFlO3NCQURyQixLQUFLO2dCQXNGSyxxQkFBcUI7c0JBRC9CLEtBQUs7Z0JBUUssU0FBUztzQkFEbkIsS0FBSztnQkFNSyxlQUFlO3NCQUR6QixNQUFNO2dCQU1JLHFCQUFxQjtzQkFEL0IsTUFBTTtnQkFjSSxxQkFBcUI7c0JBRC9CLEtBQUs7Z0JBY0ssU0FBUztzQkFEbkIsTUFBTTtnQkFZSSxLQUFLO3NCQURmLEtBQUs7Z0JBVUssS0FBSztzQkFEZixLQUFLO2dCQVVLLFFBQVE7c0JBRGxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2NvZXJjZUJvb2xlYW5Qcm9wZXJ0eX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0VsZGVyRGF0YVZpZXdTZWxlY3Rpb25Nb2RlfSBmcm9tICcuLi8uLi9zZWxlY3QvcG9wdXAvc2VsZWN0aW9uLW1vZGVsLXBvcHVwLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1xuICBJRGF0YUNvbnRleHQsXG4gIElEYXRhQ29udGV4dEFjdGl2ZVBhZ2UsXG4gIElEYXRhQ29udGV4dENvbnRpbnVhYmxlLFxuICBpc0FjdGl2ZVBhZ2VkRGF0YUNvbnRleHQsXG4gIGlzQ29udGludWFibGVEYXRhQ29udGV4dFxufSBmcm9tICcuLi8uLi8uLi9jb21tb24vZGF0YS9kYXRhLWNvbnRleHQvZGF0YS1jb250ZXh0JztcbmltcG9ydCB7U2VsZWN0aW9uTW9kZWx9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9zZWxlY3Rpb24vc2VsZWN0aW9uLW1vZGVsJztcbmltcG9ydCB7RWxkZXJEYXRhVmlld0ludGVyYWN0aW9uTW9kZSwgSUVsZGVyRGF0YVZpZXd9IGZyb20gJy4vZWxkZXItZGF0YS12aWV3JztcblxuQENvbXBvbmVudCh7c2VsZWN0b3I6ICdlbGRlci1kYXRhLXZpZXctYmFzZScsIHRlbXBsYXRlOiAnJ30pXG5leHBvcnQgY2xhc3MgRWxkZXJEYXRhVmlld0Jhc2VDb21wb25lbnQgaW1wbGVtZW50cyBJRWxkZXJEYXRhVmlldyB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIFVuZGVybHlpbmcgZGF0YSBjb250ZXh0LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRhdGFDb250ZXh0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SURhdGFDb250ZXh0PGFueT4+KG51bGwpO1xuXG4gIC8qKlxuICAgKiBIb2xkcyB0aGUgY3VycmVudCBzZWxlY3Rpb25cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3Rpb25Nb2RlbDogU2VsZWN0aW9uTW9kZWw8YW55PjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgaW50ZXJhY3Rpb25Nb2RlOiBFbGRlckRhdGFWaWV3SW50ZXJhY3Rpb25Nb2RlID0gJ29wZW4nO1xuXG4gIC8qKlxuICAgKiBJZiB0cnVlLCB0aGlzIHRhYmxlIGlzIGluIGRlbnNlIG1vZGUuXG4gICAqIEhlaWdodHMgYXJlIGdlbmVyYWxseSByZWR1Y2VkLlxuICAgKi9cbiAgcHJpdmF0ZSBfZGVuc2UgPSBmYWxzZTtcblxuICAvKipcbiAgICogSWYgdHJ1ZSwgdGhpcyB0YWJsZSBpcyBpbiBhIGZsb2F0aW5nIGNhcmQgbW9kZS5cbiAgICogT3RoZXJ3aXNlLCBpdCBpcyBmbGF0IG9uIHRoZSBjdXJyZW50IHBhbmVsLlxuICAgKi9cbiAgcHJpdmF0ZSBfZmxvYXQgPSBmYWxzZTtcblxuICAvKipcbiAgICogSWYgdHJ1ZSwgdGhpcyB0YWJsZSBpcyBpbiBlbWJlZGRlZCBtb2RlLlxuICAgKiBObyBib3JkZXJzIC8gZmxvYXRpbmcgdmlzaWJsZSBzbyB0aGF0IHRoZSB0YWJsZSBjYW4gYmUgZW1iZWRkZWQgaW50byBhbm90aGVyIGNvbnRhaW5lclxuICAgKi9cbiAgcHJpdmF0ZSBfZW1iZWRkZWQgPSBmYWxzZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9pdGVtQ2xpY2tTdWJqZWN0ID0gbmV3IFN1YmplY3Q8YW55PigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgRW50aXR5SWRLZXlGbiA9IChlbnRpdHk6IGFueSkgPT4gZW50aXR5ID8gdGhpcy5nZXRJZChlbnRpdHkpIDogMDtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcihcbiAgICBzZWxlY3Rpb25Nb2RlbDogU2VsZWN0aW9uTW9kZWw8YW55PixcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGF0YVZpZXdTZWxlY3Rpb246IEVsZGVyRGF0YVZpZXdTZWxlY3Rpb25Nb2RlXG4gICkge1xuICAgIGlmICghc2VsZWN0aW9uTW9kZWwpIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZWwgPSBuZXcgU2VsZWN0aW9uTW9kZWw8YW55PihmYWxzZSwgW10sIHRoaXMuRW50aXR5SWRLZXlGbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZWwgPSBzZWxlY3Rpb25Nb2RlbDtcbiAgICB9XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgZ2V0IGRhdGFDb250ZXh0KCk6IElEYXRhQ29udGV4dDxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5kYXRhQ29udGV4dCQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgZGF0YUNvbnRleHQoZGF0YTogSURhdGFDb250ZXh0PGFueT4pIHtcbiAgICB0aGlzLmRhdGFDb250ZXh0JC5uZXh0KGRhdGEpO1xuICAgIHRoaXMub25EYXRhQ29udGV4dFNldChkYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGF0YUFjdGl2ZVBhZ2VkKCk6IElEYXRhQ29udGV4dEFjdGl2ZVBhZ2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YUNvbnRleHQgYXMgSURhdGFDb250ZXh0QWN0aXZlUGFnZTxhbnk+O1xuICB9XG5cbiAgcHVibGljIGdldCBkYXRhQ29udGludWFibGUoKTogSURhdGFDb250ZXh0Q29udGludWFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YUNvbnRleHQgYXMgSURhdGFDb250ZXh0Q29udGludWFibGU8YW55PjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNDb250aW51YWJsZSgpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuZGF0YUNvbnRleHQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGlzQ29udGludWFibGVEYXRhQ29udGV4dCh0aGlzLmRhdGFDb250ZXh0KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNBY3RpdmVQYWdlZCgpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuZGF0YUNvbnRleHQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGlzQWN0aXZlUGFnZWREYXRhQ29udGV4dCh0aGlzLmRhdGFDb250ZXh0KTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBTZWxlY3Rpb24gUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2VsZWN0YWJsZUV2YWx1YXRvckZuKFxuICAgIHNlbGVjdGFibGVFdmFsdWF0b3JGbjogKGVudGl0eTogYW55KSA9PiBib29sZWFuXG4gICkge1xuICAgIHRoaXMuc2VsZWN0aW9uTW9kZWwuc2VsZWN0YWJsZUV2YWx1YXRvckZuID0gc2VsZWN0YWJsZUV2YWx1YXRvckZuO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzZWxlY3Rpb24oc2VsZWN0aW9uOiBhbnlbXSkge1xuICAgIHRoaXMuc2VsZWN0aW9uTW9kZWwucmVwbGFjZVNlbGVjdGlvbihzZWxlY3Rpb24pO1xuICB9XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBnZXQgc2VsZWN0aW9uQ2hhbmdlKCk6IE9ic2VydmFibGU8YW55W10+IHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25Nb2RlbC5jaGFuZ2VkO1xuICB9XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBnZXQgc2VsZWN0aW9uU2luZ2xlQ2hhbmdlKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uTW9kZWwuY2hhbmdlZC5waXBlKFxuICAgICAgbWFwKChzZWxlY3Rpb24pID0+IHtcbiAgICAgICAgaWYgKHNlbGVjdGlvbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcmV0dXJuIHNlbGVjdGlvblswXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzZWxlY3Rpb25NdWx0aUVuYWJsZWQoZW5hYmxlTXVsdGlTZWxlY3Rpb246IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlbCkge1xuICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC5pc011bHRpcGxlU2VsZWN0aW9uID0gZW5hYmxlTXVsdGlTZWxlY3Rpb247XG4gICAgfVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIE9uIGNsaWNrIHByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBnZXQgaXRlbUNsaWNrKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1DbGlja1N1YmplY3Q7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogU3R5bGUgUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRlbnNlKHZhbHVlOiBib29sZWFuIHwgJycpIHtcbiAgICB0aGlzLl9kZW5zZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRlbnNlKCk6IGJvb2xlYW4gfCAnJyB7XG4gICAgcmV0dXJuIHRoaXMuX2RlbnNlO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBmbG9hdCh2YWx1ZTogYm9vbGVhbiB8ICcnKSB7XG4gICAgdGhpcy5fZmxvYXQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGdldCBmbG9hdCgpOiBib29sZWFuIHwgJycge1xuICAgIHJldHVybiB0aGlzLl9mbG9hdDtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZW1iZWRkZWQodmFsdWU6IGJvb2xlYW4gfCAnJykge1xuICAgIHRoaXMuX2VtYmVkZGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZW1iZWRkZWQoKTogYm9vbGVhbiB8ICcnIHtcbiAgICByZXR1cm4gdGhpcy5fZW1iZWRkZWQ7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRXZlbnQgRW50cnkgUG9pbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogQ2FsbGVkIGFmdGVyIGEgbmV3IERhdGFDb250ZXh0IGhhcyBiZWVuIHNldC5cbiAgICogU3ViY2xhc3NlcyBtYXkgYWRkIGFkZGl0aW9uYWwgYmVoYXZpb3VyIGF0IHRoaXMgc3RhZ2UuXG4gICAqIEBwYXJhbSBkYXRhXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBvbkRhdGFDb250ZXh0U2V0KGRhdGE6IElEYXRhQ29udGV4dDxhbnk+KTogdm9pZCB7XG4gIH1cblxuICBwdWJsaWMgb25JdGVtQ2xpY2soZW50aXR5OiBhbnkpOiB2b2lkIHtcblxuICAgIGlmIChlbnRpdHkpIHtcblxuICAgICAgc3dpdGNoICh0aGlzLmludGVyYWN0aW9uTW9kZSkge1xuXG4gICAgICAgIGNhc2UgJ29wZW4nOlxuICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGVsLmhhc1ZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbk1vZGVsLnRvZ2dsZShlbnRpdHkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9pdGVtQ2xpY2tTdWJqZWN0Lm5leHQoZW50aXR5KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnc2VsZWN0aW9uJzpcbiAgICAgICAgICB0aGlzLnNlbGVjdGlvbk1vZGVsLnRvZ2dsZShlbnRpdHkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgfVxuXG4gIH1cblxuICBwdWJsaWMgb25JdGVtRG91YmxlQ2xpY2soZW50aXR5OiBhbnkpOiB2b2lkIHtcblxuICAgIGlmIChlbnRpdHkpIHtcblxuICAgICAgc3dpdGNoICh0aGlzLmludGVyYWN0aW9uTW9kZSkge1xuXG4gICAgICAgIC8vIGRvdWJsZSBjbGljayBpbiBvcGVuIG1vZGUgbm90IHN1cHBvcnRlZFxuICAgICAgICBjYXNlICdvcGVuJzpcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICAvLyBkb3VibGUgY2xpY2sgaW4gc2VsZWN0aW9uIG1vZGUgdHJpZ2dlcnMgbm9ybWFsIGl0ZW0gY2xpY2tcbiAgICAgICAgY2FzZSAnc2VsZWN0aW9uJzpcbiAgICAgICAgICB0aGlzLl9pdGVtQ2xpY2tTdWJqZWN0Lm5leHQoZW50aXR5KTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgfVxuXG4gICAgfVxuXG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBNZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcm90ZWN0ZWQgZ2V0SWQoZW50aXR5OiBhbnkpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmRhdGFDb250ZXh0Py5kYXRhU291cmNlPy5nZXRJZChlbnRpdHkpIHx8IGVudGl0eTtcbiAgfVxuXG59XG4iXX0=
263
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItZGF0YS12aWV3LWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdmlldy9iYXNlL2VsZGVyLWRhdGEtdmlldy1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFBWSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDckYsT0FBTyxFQUFDLGVBQWUsRUFBYyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDMUQsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25DLE9BQU8sRUFJTCx3QkFBd0IsRUFDeEIsd0JBQXdCLEVBQ3pCLE1BQU0sZ0RBQWdELENBQUM7QUFDeEQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBR3pFLE9BQU8sRUFBQyw4QkFBOEIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDOzs7O0FBR3BGLE1BQU0sT0FBZ0IsMEJBQTBCO0lBdUQ5Qzs7OztnRkFJNEU7SUFFNUUsWUFDRSxjQUFtQyxFQUNoQix1QkFBcUQ7UUFBckQsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUE4QjtRQTdEMUU7Ozs7b0ZBSTRFO1FBRTVFOztXQUVHO1FBQ2EsaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FBb0IsSUFBSSxDQUFDLENBQUM7UUFRckUsb0JBQWUsR0FBaUMsTUFBTSxDQUFDO1FBRTlEOzs7Ozs7V0FNRztRQUVJLFlBQU8sR0FBRyxJQUFJLENBQUM7UUFFdEI7OztXQUdHO1FBQ0ssV0FBTSxHQUFHLEtBQUssQ0FBQztRQUV2Qjs7O1dBR0c7UUFDSyxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBRXZCOzs7V0FHRztR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alRtQiwwQkFBMEI7MkdBQTFCLDBCQUEwQjsyRkFBMUIsMEJBQTBCO2tCQUQvQyxTQUFTO2dKQW9CRCxlQUFlO3NCQURyQixLQUFLO2dCQVdDLE9BQU87c0JBRGIsS0FBSztnQkFvSEsscUJBQXFCO3NCQUQvQixLQUFLO2dCQVFLLFNBQVM7c0JBRG5CLEtBQUs7Z0JBTUssZUFBZTtzQkFEekIsTUFBTTtnQkFNSSxxQkFBcUI7c0JBRC9CLE1BQU07Z0JBY0kscUJBQXFCO3NCQUQvQixLQUFLO2dCQWtCSyxTQUFTO3NCQURuQixNQUFNO2dCQVlJLEtBQUs7c0JBRGYsS0FBSztnQkFVSyxLQUFLO3NCQURmLEtBQUs7Z0JBVUssUUFBUTtzQkFEbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y29lcmNlQm9vbGVhblByb3BlcnR5fSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtDb21wb25lbnQsIERpcmVjdGl2ZSwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIElEYXRhQ29udGV4dCxcbiAgSURhdGFDb250ZXh0QWN0aXZlUGFnZSxcbiAgSURhdGFDb250ZXh0Q29udGludWFibGUsXG4gIGlzQWN0aXZlUGFnZWREYXRhQ29udGV4dCxcbiAgaXNDb250aW51YWJsZURhdGFDb250ZXh0XG59IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9kYXRhL2RhdGEtY29udGV4dC9kYXRhLWNvbnRleHQnO1xuaW1wb3J0IHtTZWxlY3Rpb25Nb2RlbH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3NlbGVjdGlvbi9zZWxlY3Rpb24tbW9kZWwnO1xuaW1wb3J0IHtFbGRlckRhdGFWaWV3SW50ZXJhY3Rpb25Nb2RlLCBJRWxkZXJEYXRhVmlld30gZnJvbSAnLi9lbGRlci1kYXRhLXZpZXcnO1xuaW1wb3J0IHtFbGRlckRhdGFWaWV3T3B0aW9uc1Byb3ZpZGVyfSBmcm9tICcuL2VsZGVyLWRhdGEtdmlldy1vcHRpb25zLXByb3ZpZGVyJztcbmltcG9ydCB7RGF0YVZpZXdPcHRpb25zUHJvdmlkZXJCaW5kaW5nfSBmcm9tICcuL2RhdGEtdmlldy1vcHRpb25zLXByb3ZpZGVyLWJpbmRpbmcnO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBFbGRlckRhdGFWaWV3QmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIElFbGRlckRhdGFWaWV3LCBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIFVuZGVybHlpbmcgZGF0YSBjb250ZXh0LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRhdGFDb250ZXh0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SURhdGFDb250ZXh0PGFueT4+KG51bGwpO1xuXG4gIC8qKlxuICAgKiBIb2xkcyB0aGUgY3VycmVudCBzZWxlY3Rpb25cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3Rpb25Nb2RlbDogU2VsZWN0aW9uTW9kZWw8YW55PjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgaW50ZXJhY3Rpb25Nb2RlOiBFbGRlckRhdGFWaWV3SW50ZXJhY3Rpb25Nb2RlID0gJ29wZW4nO1xuXG4gIC8qKlxuICAgKiBEZWZpbmUgaWYgZWxkZXItdGFibGUgc2hvdWxkIGNsZWFuIHVwIHRoZVxuICAgKiBkYXRhLWNvbnRleHQgcmVzb3VyY2VzIGZvciB5b3UuXG4gICAqXG4gICAqIEluIG1vcmUgYWR2YW5jZWQgc2NlbmFyaW9zIHdoZXJlIHlvdSBwbGFuIHRvIHJldXNlIHRoZSBzYW1lIGRhdGEtY29udGV4dFxuICAgKiBzZXQgdGhpcyB0byBmYWxzZSBhbmQgcmVsZWFzZSB0aGUgcmVzb3VyY2VzIHlvdXJzZWxmLiAoZGF0YUNvbnRleHQuY2xvc2UpXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgY2xlYW5VcCA9IHRydWU7XG5cbiAgLyoqXG4gICAqIElmIHRydWUsIHRoaXMgdGFibGUgaXMgaW4gZGVuc2UgbW9kZS5cbiAgICogSGVpZ2h0cyBhcmUgZ2VuZXJhbGx5IHJlZHVjZWQuXG4gICAqL1xuICBwcml2YXRlIF9kZW5zZSA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBJZiB0cnVlLCB0aGlzIHRhYmxlIGlzIGluIGEgZmxvYXRpbmcgY2FyZCBtb2RlLlxuICAgKiBPdGhlcndpc2UsIGl0IGlzIGZsYXQgb24gdGhlIGN1cnJlbnQgcGFuZWwuXG4gICAqL1xuICBwcml2YXRlIF9mbG9hdCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBJZiB0cnVlLCB0aGlzIHRhYmxlIGlzIGluIGVtYmVkZGVkIG1vZGUuXG4gICAqIE5vIGJvcmRlcnMgLyBmbG9hdGluZyB2aXNpYmxlIHNvIHRoYXQgdGhlIHRhYmxlIGNhbiBiZSBlbWJlZGRlZCBpbnRvIGFub3RoZXIgY29udGFpbmVyXG4gICAqL1xuICBwcml2YXRlIF9lbWJlZGRlZCA9IGZhbHNlO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2l0ZW1DbGlja1N1YmplY3QgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBFbnRpdHlJZEtleUZuID0gKGVudGl0eTogYW55KSA9PiBlbnRpdHkgPyB0aGlzLmdldElkKGVudGl0eSkgOiAwO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2VsZWN0aW9uTW9kZWw6IFNlbGVjdGlvbk1vZGVsPGFueT4sXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRhdGFWaWV3T3B0aW9uc1Byb3ZpZGVyOiBFbGRlckRhdGFWaWV3T3B0aW9uc1Byb3ZpZGVyXG4gICkge1xuICAgIGlmICghc2VsZWN0aW9uTW9kZWwpIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZWwgPSBuZXcgU2VsZWN0aW9uTW9kZWw8YW55PihmYWxzZSwgW10sIHRoaXMuRW50aXR5SWRLZXlGbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZWwgPSBzZWxlY3Rpb25Nb2RlbDtcbiAgICB9XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogTGlmZSBDeWNsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGF0YVZpZXdPcHRpb25zUHJvdmlkZXIpIHtcblxuICAgICAgaWYgKHRoaXMuZGF0YVZpZXdPcHRpb25zUHJvdmlkZXIub3B0aW9ucy5pbnRlcmFjdGlvbk1vZGUgPT09ICdzZWxlY3Rpb24nKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uVmlzaWJsZSA9IHRydWU7XG4gICAgICAgIHRoaXMuZmxvYXQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuZGF0YUNvbnRleHQpIHtcbiAgICAgICAgRGF0YVZpZXdPcHRpb25zUHJvdmlkZXJCaW5kaW5nLm9mKHRoaXMpXG4gICAgICAgICAgLmRhdGFWaWV3T3B0aW9uc1Byb3ZpZGVyKHRoaXMuZGF0YVZpZXdPcHRpb25zUHJvdmlkZXIpXG4gICAgICAgICAgLmJpbmRVbnRpbCh0aGlzLmRlc3Ryb3kkKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuYXV0b0NsZWFuVXAoKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBnZXQgZGF0YUNvbnRleHQoKTogSURhdGFDb250ZXh0PGFueT4ge1xuICAgIHJldHVybiB0aGlzLmRhdGFDb250ZXh0JC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIHNldCBkYXRhQ29udGV4dChkYXRhOiBJRGF0YUNvbnRleHQ8YW55Pikge1xuICAgIHRoaXMuZGF0YUNvbnRleHQkLm5leHQoZGF0YSk7XG4gICAgdGhpcy5vbkRhdGFDb250ZXh0U2V0KGRhdGEpO1xuICB9XG5cbiAgcHVibGljIGdldCBkYXRhQWN0aXZlUGFnZWQoKTogSURhdGFDb250ZXh0QWN0aXZlUGFnZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5kYXRhQ29udGV4dCBhcyBJRGF0YUNvbnRleHRBY3RpdmVQYWdlPGFueT47XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRhdGFDb250aW51YWJsZSgpOiBJRGF0YUNvbnRleHRDb250aW51YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5kYXRhQ29udGV4dCBhcyBJRGF0YUNvbnRleHRDb250aW51YWJsZTxhbnk+O1xuICB9XG5cbiAgcHVibGljIGdldCBpc0NvbnRpbnVhYmxlKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5kYXRhQ29udGV4dCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gaXNDb250aW51YWJsZURhdGFDb250ZXh0KHRoaXMuZGF0YUNvbnRleHQpO1xuICB9XG5cbiAgcHVibGljIGdldCBpc0FjdGl2ZVBhZ2VkKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5kYXRhQ29udGV4dCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gaXNBY3RpdmVQYWdlZERhdGFDb250ZXh0KHRoaXMuZGF0YUNvbnRleHQpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFNlbGVjdGlvbiBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzZWxlY3RhYmxlRXZhbHVhdG9yRm4oXG4gICAgc2VsZWN0YWJsZUV2YWx1YXRvckZuOiAoZW50aXR5OiBhbnkpID0+IGJvb2xlYW5cbiAgKSB7XG4gICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC5zZWxlY3RhYmxlRXZhbHVhdG9yRm4gPSBzZWxlY3RhYmxlRXZhbHVhdG9yRm47XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNlbGVjdGlvbihzZWxlY3Rpb246IGFueVtdKSB7XG4gICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC5yZXBsYWNlU2VsZWN0aW9uKHNlbGVjdGlvbik7XG4gIH1cblxuICBAT3V0cHV0KClcbiAgcHVibGljIGdldCBzZWxlY3Rpb25DaGFuZ2UoKTogT2JzZXJ2YWJsZTxhbnlbXT4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbk1vZGVsLmNoYW5nZWQ7XG4gIH1cblxuICBAT3V0cHV0KClcbiAgcHVibGljIGdldCBzZWxlY3Rpb25TaW5nbGVDaGFuZ2UoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25Nb2RlbC5jaGFuZ2VkLnBpcGUoXG4gICAgICBtYXAoKHNlbGVjdGlvbikgPT4ge1xuICAgICAgICBpZiAoc2VsZWN0aW9uLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICByZXR1cm4gc2VsZWN0aW9uWzBdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNlbGVjdGlvbk11bHRpRW5hYmxlZChlbmFibGVNdWx0aVNlbGVjdGlvbjogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGVsKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvbk1vZGVsLmlzTXVsdGlwbGVTZWxlY3Rpb24gPSBlbmFibGVNdWx0aVNlbGVjdGlvbjtcbiAgICB9XG4gIH1cblxuICBhYnN0cmFjdCBnZXQgc2VsZWN0aW9uVmlzaWJsZSgpO1xuXG4gIGFic3RyYWN0IHNldCBzZWxlY3Rpb25WaXNpYmxlKHNlbGVjdGlvblZpc2libGU6IGJvb2xlYW4pO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBPbiBjbGljayBwcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgZ2V0IGl0ZW1DbGljaygpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLl9pdGVtQ2xpY2tTdWJqZWN0O1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFN0eWxlIFByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkZW5zZSh2YWx1ZTogYm9vbGVhbiB8ICcnKSB7XG4gICAgdGhpcy5fZGVuc2UgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGdldCBkZW5zZSgpOiBib29sZWFuIHwgJycge1xuICAgIHJldHVybiB0aGlzLl9kZW5zZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZmxvYXQodmFsdWU6IGJvb2xlYW4gfCAnJykge1xuICAgIHRoaXMuX2Zsb2F0ID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZmxvYXQoKTogYm9vbGVhbiB8ICcnIHtcbiAgICByZXR1cm4gdGhpcy5fZmxvYXQ7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGVtYmVkZGVkKHZhbHVlOiBib29sZWFuIHwgJycpIHtcbiAgICB0aGlzLl9lbWJlZGRlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVtYmVkZGVkKCk6IGJvb2xlYW4gfCAnJyB7XG4gICAgcmV0dXJuIHRoaXMuX2VtYmVkZGVkO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEV2ZW50IEVudHJ5IFBvaW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIENhbGxlZCBhZnRlciBhIG5ldyBEYXRhQ29udGV4dCBoYXMgYmVlbiBzZXQuXG4gICAqIFN1YmNsYXNzZXMgbWF5IGFkZCBhZGRpdGlvbmFsIGJlaGF2aW91ciBhdCB0aGlzIHN0YWdlLlxuICAgKiBAcGFyYW0gZGF0YVxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgb25EYXRhQ29udGV4dFNldChkYXRhOiBJRGF0YUNvbnRleHQ8YW55Pik6IHZvaWQge1xuICB9XG5cbiAgcHVibGljIG9uSXRlbUNsaWNrKGVudGl0eTogYW55KTogdm9pZCB7XG5cbiAgICBpZiAoZW50aXR5KSB7XG5cbiAgICAgIHN3aXRjaCAodGhpcy5pbnRlcmFjdGlvbk1vZGUpIHtcblxuICAgICAgICBjYXNlICdvcGVuJzpcbiAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlbC5oYXNWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC50b2dnbGUoZW50aXR5KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5faXRlbUNsaWNrU3ViamVjdC5uZXh0KGVudGl0eSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3NlbGVjdGlvbic6XG4gICAgICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC50b2dnbGUoZW50aXR5KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgIH1cblxuICB9XG5cbiAgcHVibGljIG9uSXRlbURvdWJsZUNsaWNrKGVudGl0eTogYW55KTogdm9pZCB7XG5cbiAgICBpZiAoZW50aXR5KSB7XG5cbiAgICAgIHN3aXRjaCAodGhpcy5pbnRlcmFjdGlvbk1vZGUpIHtcblxuICAgICAgICAvLyBkb3VibGUgY2xpY2sgaW4gb3BlbiBtb2RlIG5vdCBzdXBwb3J0ZWRcbiAgICAgICAgY2FzZSAnb3Blbic6XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgLy8gZG91YmxlIGNsaWNrIGluIHNlbGVjdGlvbiBtb2RlIHRyaWdnZXJzIG5vcm1hbCBpdGVtIGNsaWNrXG4gICAgICAgIGNhc2UgJ3NlbGVjdGlvbic6XG4gICAgICAgICAgdGhpcy5faXRlbUNsaWNrU3ViamVjdC5uZXh0KGVudGl0eSk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgIH1cblxuICAgIH1cblxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgTWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJvdGVjdGVkIGdldElkKGVudGl0eTogYW55KTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5kYXRhQ29udGV4dD8uZGF0YVNvdXJjZT8uZ2V0SWQoZW50aXR5KSB8fCBlbnRpdHk7XG4gIH1cblxuICAvKipcbiAgICogUGVyZm9ybXMgY2xlYW4gdXAgb2YgdGhlIGN1cnJlbnQgZGF0YSBjb250ZXh0IGlmIGF1dG8gY2xlYW4gdXAgaXMgZW5hYmxlZC5cbiAgICovXG4gIHByb3RlY3RlZCBhdXRvQ2xlYW5VcCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jbGVhblVwICYmIHRoaXMuZGF0YUNvbnRleHQpIHtcbiAgICAgIC8vdGhpcy5sb2dnZXIuZGVidWcoJ1JlbGVhc2luZyBEYXRhQ29udGV4dCByZXNvdXJjZXMgdG8gcHJldmVudCBtZW1vcnkgbGVhay4gW2NsZWFuVXBdPVwidHJ1ZVwiJyk7XG4gICAgICB0aGlzLmRhdGFDb250ZXh0LmNsb3NlKCk7XG4gICAgfVxuICB9XG5cblxuXG59XG4iXX0=