@elderbyte/ngx-starter 14.12.0-beta4 → 15.0.0-mdc

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 (467) hide show
  1. package/_index.scss +4 -3
  2. package/esm2020/lib/common/enums/elder-enum-translation.service.mjs +4 -4
  3. package/esm2020/lib/common/forms/elder-form-field-control-base.directive.mjs +4 -4
  4. package/esm2020/lib/common/forms/elder-from-field-base.mjs +4 -4
  5. package/esm2020/lib/common/forms/elder-from-field-customizable-base.mjs +52 -0
  6. package/esm2020/lib/common/forms/elder-from-field-entity-base.mjs +4 -4
  7. package/esm2020/lib/common/forms/elder-from-field-multi-entity-base.mjs +4 -4
  8. package/esm2020/lib/common/forms/form-field-base.component.mjs +10 -4
  9. package/esm2020/lib/common/forms/multi-model-base.component.mjs +4 -4
  10. package/esm2020/lib/common/forms/template-composite-control.mjs +4 -4
  11. package/esm2020/lib/common/forms/value-accessor-base.mjs +4 -4
  12. package/esm2020/lib/common/http/http-client-builder.service.mjs +4 -4
  13. package/esm2020/lib/common/http/http-client-pristine.mjs +4 -4
  14. package/esm2020/lib/common/http/transfer/data-transfer-factory.mjs +4 -4
  15. package/esm2020/lib/common/url/elder-router.service.mjs +4 -4
  16. package/esm2020/lib/common/url/elder-url-fragment-params.service.mjs +4 -4
  17. package/esm2020/lib/components/access-denied/elder-access-denied.component.mjs +5 -5
  18. package/esm2020/lib/components/access-denied/elder-access-denied.module.mjs +5 -5
  19. package/esm2020/lib/components/auditing/audited-entity/elder-audited-entity.component.mjs +6 -6
  20. package/esm2020/lib/components/auditing/elder-audit.module.mjs +5 -5
  21. package/esm2020/lib/components/button-group/elder-button-group/elder-button-group.component.mjs +4 -4
  22. package/esm2020/lib/components/button-group/elder-button-group.module.mjs +5 -5
  23. package/esm2020/lib/components/card-organizer/card-organizer/elder-card-organizer.component.mjs +4 -4
  24. package/esm2020/lib/components/card-organizer/card-organizer/elder-stack-card.directive.mjs +5 -5
  25. package/esm2020/lib/components/card-organizer/card-stack/elder-card-stack.component.mjs +5 -5
  26. package/esm2020/lib/components/card-organizer/elder-card-organizer.module.mjs +5 -5
  27. package/esm2020/lib/components/cards/elder-card/elder-card-header/elder-card-header.component.mjs +4 -4
  28. package/esm2020/lib/components/cards/elder-card/elder-card.component.mjs +40 -51
  29. package/esm2020/lib/components/cards/elder-card/elder-card.module.mjs +9 -8
  30. package/esm2020/lib/components/connectivity/elder-connectivity.module.mjs +5 -5
  31. package/esm2020/lib/components/connectivity/elder-connectivity.service.mjs +4 -4
  32. package/esm2020/lib/components/connectivity/offline-indicator/elder-offline-indicator.component.mjs +4 -4
  33. package/esm2020/lib/components/containers/elder-containers.module.mjs +5 -5
  34. package/esm2020/lib/components/containers/elder-scroll-container/elder-scroll-container.component.mjs +4 -4
  35. package/esm2020/lib/components/csv/elder-csv-export-btn/elder-csv-export-btn.component.mjs +4 -4
  36. package/esm2020/lib/components/csv/elder-csv-stream-exporter-builder.service.mjs +4 -4
  37. package/esm2020/lib/components/csv/elder-csv.module.mjs +5 -5
  38. package/esm2020/lib/components/currency/elder-currency.module.mjs +5 -5
  39. package/esm2020/lib/components/currency/elder-currency.pipe.mjs +4 -4
  40. package/esm2020/lib/components/data-transfer/elder-data-transfer.module.mjs +5 -5
  41. package/esm2020/lib/components/data-transfer/elder-data-transfer.service.mjs +4 -4
  42. package/esm2020/lib/components/data-transfer/http-data-transfer/http-data-transfer.component.mjs +5 -5
  43. package/esm2020/lib/components/data-transfer/http-data-transfer-aggregate/http-data-transfer-aggregate.component.mjs +4 -4
  44. package/esm2020/lib/components/data-transfer/http-data-transfer-indicator/http-data-transfer-indicator.component.mjs +4 -4
  45. package/esm2020/lib/components/data-transfer/http-data-transfer-overview/http-data-transfer-overview.component.mjs +5 -5
  46. package/esm2020/lib/components/data-view/base/elder-data-view-base.mjs +17 -10
  47. package/esm2020/lib/components/data-view/common/data-context-state-indicator/data-context-state-indicator.component.mjs +5 -5
  48. package/esm2020/lib/components/data-view/common/elder-data-common.module.mjs +5 -5
  49. package/esm2020/lib/components/data-view/common/elder-data-toolbar/elder-data-toolbar.component.mjs +8 -8
  50. package/esm2020/lib/components/data-view/common/elder-single-sort/elder-single-sort.component.mjs +5 -5
  51. package/esm2020/lib/components/data-view/common/selection/data-context-selection.directive.mjs +4 -4
  52. package/esm2020/lib/components/data-view/common/selection/elder-selection-master-checkbox/elder-selection-master-checkbox.component.mjs +5 -5
  53. package/esm2020/lib/components/data-view/grid/elder-grid/elder-grid.component.mjs +13 -12
  54. package/esm2020/lib/components/data-view/grid/elder-grid.module.mjs +9 -8
  55. package/esm2020/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.component.mjs +4 -4
  56. package/esm2020/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.module.mjs +5 -5
  57. package/esm2020/lib/components/data-view/table/activation/elder-table-activation.directive.mjs +4 -4
  58. package/esm2020/lib/components/data-view/table/elder-number-cell.directive.mjs +4 -4
  59. package/esm2020/lib/components/data-view/table/elder-paginator-intl.mjs +4 -4
  60. package/esm2020/lib/components/data-view/table/elder-table/elder-table-toolbar.directive.mjs +4 -4
  61. package/esm2020/lib/components/data-view/table/elder-table/elder-table.component.mjs +9 -8
  62. package/esm2020/lib/components/data-view/table/elder-table-column.directive.mjs +4 -4
  63. package/esm2020/lib/components/data-view/table/elder-table-extension.directive.mjs +4 -4
  64. package/esm2020/lib/components/data-view/table/elder-table-root.directive.mjs +4 -4
  65. package/esm2020/lib/components/data-view/table/elder-table-row.directive.mjs +4 -4
  66. package/esm2020/lib/components/data-view/table/elder-table-sort.directive.mjs +4 -4
  67. package/esm2020/lib/components/data-view/table/elder-table.module.mjs +9 -8
  68. package/esm2020/lib/components/data-view/table/model/elder-table-model.mjs +4 -4
  69. package/esm2020/lib/components/dialogs/confirm-dialog/elder-confirm-dialog.component.mjs +5 -5
  70. package/esm2020/lib/components/dialogs/elder-dialog.module.mjs +6 -26
  71. package/esm2020/lib/components/dialogs/elder-dialog.service.mjs +5 -5
  72. package/esm2020/lib/components/dialogs/question-dialog/elder-question-dialog.component.mjs +7 -7
  73. package/esm2020/lib/components/dialogs/selection-dialog/elder-selection-dialog/elder-selection-dialog.component.mjs +4 -4
  74. package/esm2020/lib/components/dialogs/selection-dialog/elder-selection-dialog.directive.mjs +4 -4
  75. package/esm2020/lib/components/errors/elder-error.module.mjs +5 -5
  76. package/esm2020/lib/components/errors/exception-detail/elder-exception-detail.component.mjs +6 -6
  77. package/esm2020/lib/components/expand-toggle-button/elder-expand-toggle-button.component.mjs +5 -5
  78. package/esm2020/lib/components/expand-toggle-button/elder-expand-toggle-button.module.mjs +5 -5
  79. package/esm2020/lib/components/files/blob-viewer/elder-blob-viewer.component.mjs +4 -4
  80. package/esm2020/lib/components/files/elder-file-drop-zone.directive.mjs +4 -4
  81. package/esm2020/lib/components/files/elder-file-select.directive.mjs +4 -4
  82. package/esm2020/lib/components/files/elder-file.module.mjs +5 -5
  83. package/esm2020/lib/components/files/file-select/file-select.component.mjs +5 -5
  84. package/esm2020/lib/components/files/file-upload/file-upload.component.mjs +11 -12
  85. package/esm2020/lib/components/forms/clipboard/elder-clipboard.service.mjs +4 -4
  86. package/esm2020/lib/components/forms/directives/base/elder-class-hostbinding-base.mjs +4 -4
  87. package/esm2020/lib/components/forms/directives/elder-clipboard-put.directive.mjs +4 -4
  88. package/esm2020/lib/components/forms/directives/elder-delayed-focus.directive.mjs +4 -4
  89. package/esm2020/lib/components/forms/directives/elder-form-field-dense.directive.mjs +17 -6
  90. package/esm2020/lib/components/forms/directives/elder-form-field-label.directive.mjs +5 -4
  91. package/esm2020/lib/components/forms/directives/elder-form-field-no-hint.directive.mjs +11 -6
  92. package/esm2020/lib/components/forms/directives/elder-form-field-no-spinner.directive.mjs +4 -4
  93. package/esm2020/lib/components/forms/directives/elder-forms-directives.module.mjs +44 -71
  94. package/esm2020/lib/components/forms/directives/elder-input-pattern.directive.mjs +4 -4
  95. package/esm2020/lib/components/forms/directives/elder-key-event.directive.mjs +4 -4
  96. package/esm2020/lib/components/forms/directives/elder-next-focusable.directive.mjs +4 -4
  97. package/esm2020/lib/components/forms/directives/elder-plug-parent-form.directive.mjs +4 -4
  98. package/esm2020/lib/components/forms/directives/elder-stop-event-propagation.directive.mjs +4 -4
  99. package/esm2020/lib/components/forms/directives/elder-tab-focus-trap.directive.mjs +4 -4
  100. package/esm2020/lib/components/forms/directives/elder-touched.directive.mjs +4 -4
  101. package/esm2020/lib/components/forms/directives/elder-triple-state-checkbox.directive.mjs +4 -4
  102. package/esm2020/lib/components/forms/directives/validation/elder-validation-error.directive.mjs +85 -0
  103. package/esm2020/lib/components/forms/directives/validation/strategies/common-validation-message-strategy.mjs +47 -0
  104. package/esm2020/lib/components/forms/directives/validation/strategies/dynamic-validation-message-strategy.mjs +48 -0
  105. package/esm2020/lib/components/forms/directives/validation/strategies/fallback-validation-message-strategy.mjs +6 -0
  106. package/esm2020/lib/components/forms/directives/validation/validation-message-renderer.service.mjs +55 -0
  107. package/esm2020/lib/components/forms/directives/validation/validation-message-strategy.mjs +2 -0
  108. package/esm2020/lib/components/forms/directives/validation/validators/elder-max.validator.mjs +40 -0
  109. package/esm2020/lib/components/forms/directives/validation/validators/elder-min.validator.mjs +40 -0
  110. package/esm2020/lib/components/forms/directives/validation/validators/elder-multiple-of.validator.mjs +96 -0
  111. package/esm2020/lib/components/forms/directives/validation/validators/elder-required-ignore-zero.validator.mjs +68 -0
  112. package/esm2020/lib/components/forms/elder-forms.module.mjs +5 -5
  113. package/esm2020/lib/components/forms/search/elder-search-context.directive.mjs +4 -4
  114. package/esm2020/lib/components/forms/search/elder-search-input.directive.mjs +4 -4
  115. package/esm2020/lib/components/forms/search/elder-search.module.mjs +5 -5
  116. package/esm2020/lib/components/forms/search/search-box/elder-search-box.component.mjs +9 -7
  117. package/esm2020/lib/components/forms/search/search-box/elder-search-panel.component.mjs +4 -4
  118. package/esm2020/lib/components/global-search/elder-global-search.component.mjs +7 -7
  119. package/esm2020/lib/components/global-search/elder-global-search.module.mjs +5 -5
  120. package/esm2020/lib/components/global-search/elder-global-search.service.mjs +4 -4
  121. package/esm2020/lib/components/graph/elder-progress-bar/elder-progress-bar.component.mjs +7 -7
  122. package/esm2020/lib/components/graph/elder-progress-bar/elder-progress-bar.module.mjs +5 -5
  123. package/esm2020/lib/components/headers/elder-header/elder-header.component.mjs +4 -4
  124. package/esm2020/lib/components/headers/elder-header.module.mjs +5 -5
  125. package/esm2020/lib/components/http-support/elder-http-client.service.mjs +4 -4
  126. package/esm2020/lib/components/i18n/entities/elder-i18n-entities.module.mjs +5 -5
  127. package/esm2020/lib/components/i18n/entities/elder-localized-input/elder-localized-input.component.mjs +6 -6
  128. package/esm2020/lib/components/i18n/entities/elder-localized-input-dialog/elder-localized-input-dialog.component.mjs +4 -4
  129. package/esm2020/lib/components/i18n/entities/elder-localized-input-dialog.service.mjs +4 -4
  130. package/esm2020/lib/components/i18n/entities/elder-localized-input-table/elder-localized-input-table.component.mjs +9 -8
  131. package/esm2020/lib/components/i18n/entities/elder-localized-text-column.directive.mjs +4 -4
  132. package/esm2020/lib/components/i18n/entities/elder-localized-texts.directive.mjs +4 -4
  133. package/esm2020/lib/components/i18n/entities/picker/i18n-pick-async.pipe.mjs +4 -4
  134. package/esm2020/lib/components/i18n/entities/picker/i18n-pick.pipe.mjs +4 -4
  135. package/esm2020/lib/components/i18n/entities/picker/localisation-picker.service.mjs +4 -4
  136. package/esm2020/lib/components/i18n/language/elder-language-interceptor.mjs +4 -4
  137. package/esm2020/lib/components/i18n/language/elder-language.module.mjs +5 -5
  138. package/esm2020/lib/components/i18n/language/elder-language.service.mjs +4 -4
  139. package/esm2020/lib/components/i18n/language/language-switcher/elder-language-switcher.component.mjs +6 -6
  140. package/esm2020/lib/components/i18n/locales/elder-locales-de-ch.module.mjs +5 -5
  141. package/esm2020/lib/components/iframes/data-view/data-view-iframe/data-view-iframe.component.mjs +4 -4
  142. package/esm2020/lib/components/iframes/data-view/data-view-iframe-adapter.directive.mjs +4 -4
  143. package/esm2020/lib/components/iframes/elder-iframe.module.mjs +16 -8
  144. package/esm2020/lib/components/iframes/iframe-close.directive.mjs +4 -4
  145. package/esm2020/lib/components/iframes/iframe-dialog/iframe-dialog.component.mjs +4 -4
  146. package/esm2020/lib/components/iframes/iframe-host/iframe-host.component.mjs +8 -6
  147. package/esm2020/lib/components/iframes/iframe-side-content/iframe-side-content.component.mjs +4 -4
  148. package/esm2020/lib/components/iframes/iframe.service.mjs +4 -4
  149. package/esm2020/lib/components/infinitescroll/elder-infinite-autocomplete.directive.mjs +4 -4
  150. package/esm2020/lib/components/infinitescroll/elder-infinite-scroll.directive.mjs +4 -4
  151. package/esm2020/lib/components/infinitescroll/elder-infinite-scroll.module.mjs +8 -8
  152. package/esm2020/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete.component.mjs +4 -4
  153. package/esm2020/lib/components/input/autocomplete/elder-autocomplete-many.directive.mjs +4 -4
  154. package/esm2020/lib/components/input/autocomplete/elder-autocomplete.directive.mjs +4 -4
  155. package/esm2020/lib/components/input/autocomplete/elder-autocomplete.module.mjs +5 -5
  156. package/esm2020/lib/components/labels/elder-labels.module.mjs +5 -5
  157. package/esm2020/lib/components/labels/labels-input/labels-input.component.mjs +8 -9
  158. package/esm2020/lib/components/measures/dimensions/dimensions-input/elder-dimensions-input.component.mjs +273 -0
  159. package/esm2020/lib/components/measures/dimensions/validation/elder-required-dimensions.validator.mjs +91 -0
  160. package/esm2020/lib/components/measures/directives/elder-unit-select.directive.mjs +4 -4
  161. package/esm2020/lib/components/measures/elder-measures.module.mjs +44 -20
  162. package/esm2020/lib/components/measures/elder-quantity-transform.pipe.mjs +4 -4
  163. package/esm2020/lib/components/measures/elder-quantity.pipe.mjs +4 -4
  164. package/esm2020/lib/components/measures/elder-unit.service.mjs +4 -4
  165. package/esm2020/lib/components/measures/quantity-input/quantity-form-field/elder-quantity-form-field.component.mjs +33 -0
  166. package/esm2020/lib/components/measures/quantity-input/quantity-input-control/elder-quantity-input-control.component.mjs +176 -0
  167. package/esm2020/lib/components/measures/quantity-input/validation/elder-quantity-range.validator.mjs +87 -0
  168. package/esm2020/lib/components/measures/quantity-input/validation/elder-required-quantity.validator.mjs +76 -0
  169. package/esm2020/lib/components/measures/util/elder-quantity.service.mjs +4 -4
  170. package/esm2020/lib/components/navigation/bread-crumbs/bread-crumbs/elder-bread-crumbs.component.mjs +4 -4
  171. package/esm2020/lib/components/navigation/bread-crumbs/elder-bread-crumbs.module.mjs +5 -5
  172. package/esm2020/lib/components/navigation/nav/elder-nav.module.mjs +10 -8
  173. package/esm2020/lib/components/navigation/nav/nav-group/elder-nav-group.component.mjs +52 -18
  174. package/esm2020/lib/components/navigation/nav/nav-link/elder-nav-link.component.mjs +115 -32
  175. package/esm2020/lib/components/navigation/nav/nav-list/elder-nav-list.component.mjs +64 -8
  176. package/esm2020/lib/components/navigation/toolbar/elder-toolbar-column.directive.mjs +5 -5
  177. package/esm2020/lib/components/navigation/toolbar/elder-toolbar.module.mjs +5 -5
  178. package/esm2020/lib/components/navigation/toolbar/elder-toolbar.service.mjs +4 -4
  179. package/esm2020/lib/components/navigation/toolbar/toolbar/elder-toolbar.component.mjs +5 -5
  180. package/esm2020/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.component.mjs +5 -5
  181. package/esm2020/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.service.mjs +4 -4
  182. package/esm2020/lib/components/overlays/elder-overlay-origin.directive.mjs +4 -4
  183. package/esm2020/lib/components/overlays/elder-overlay-trigger.directive.mjs +4 -4
  184. package/esm2020/lib/components/overlays/elder-overlay.component.mjs +4 -4
  185. package/esm2020/lib/components/overlays/elder-overlay.module.mjs +5 -5
  186. package/esm2020/lib/components/panels/card-panel/elder-card-panel.component.mjs +4 -4
  187. package/esm2020/lib/components/panels/elder-dialog-panel/elder-dialog-panel.component.mjs +4 -4
  188. package/esm2020/lib/components/panels/elder-panel.module.mjs +5 -5
  189. package/esm2020/lib/components/panels/flat/elder-panel.component.mjs +4 -4
  190. package/esm2020/lib/components/public_api.mjs +1 -2
  191. package/esm2020/lib/components/select/auto/elder-auto-select-first.directive.mjs +4 -4
  192. package/esm2020/lib/components/select/elder-select-base.mjs +4 -4
  193. package/esm2020/lib/components/select/elder-select-chip.directive.mjs +10 -10
  194. package/esm2020/lib/components/select/elder-select-on-tab.directive.mjs +4 -4
  195. package/esm2020/lib/components/select/elder-select-value.directive.mjs +4 -4
  196. package/esm2020/lib/components/select/elder-select.module.mjs +5 -5
  197. package/esm2020/lib/components/select/multi/elder-multi-select-base.mjs +4 -4
  198. package/esm2020/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.mjs +44 -21
  199. package/esm2020/lib/components/select/multi/elder-multi-select-form-field.mjs +37 -13
  200. package/esm2020/lib/components/select/popup/selection-model-popup-trigger-adapter.directive.mjs +4 -4
  201. package/esm2020/lib/components/select/popup/selection-model-popup.directive.mjs +4 -4
  202. package/esm2020/lib/components/select/popup/templated-selection-dialog/templated-selection-dialog.component.mjs +4 -4
  203. package/esm2020/lib/components/select/single/elder-clear-select.directive.mjs +4 -4
  204. package/esm2020/lib/components/select/single/elder-select/elder-select.component.mjs +9 -8
  205. package/esm2020/lib/components/select/single/elder-select-form-field.mjs +4 -4
  206. package/esm2020/lib/components/select-chip-list/chip-list-select/elder-chip-list-select.component.mjs +10 -13
  207. package/esm2020/lib/components/select-chip-list/elder-chip-list-select.module.mjs +5 -5
  208. package/esm2020/lib/components/shell/drawers/elder-route-outlet-drawer.service.mjs +4 -4
  209. package/esm2020/lib/components/shell/drawers/elder-router-outlet.service.mjs +4 -4
  210. package/esm2020/lib/components/shell/elder-shell-slot.directive.mjs +4 -4
  211. package/esm2020/lib/components/shell/elder-shell.module.mjs +5 -5
  212. package/esm2020/lib/components/shell/elder-shell.service.mjs +4 -4
  213. package/esm2020/lib/components/shell/header/elder-app-header/elder-app-header.component.mjs +4 -4
  214. package/esm2020/lib/components/shell/shell/elder-shell.component.mjs +17 -17
  215. package/esm2020/lib/components/shell/shell-navigation-toggle/elder-shell-navigation-toggle.component.mjs +4 -4
  216. package/esm2020/lib/components/tabs/elder-tab/elder-tab.directive.mjs +4 -4
  217. package/esm2020/lib/components/tabs/elder-tab-group-routing/elder-tab-group-routing.directive.mjs +4 -4
  218. package/esm2020/lib/components/tabs/elder-tab.module.mjs +5 -5
  219. package/esm2020/lib/components/theme/elder-theme-applier.directive.mjs +4 -4
  220. package/esm2020/lib/components/theme/elder-theme-preference.service.mjs +4 -4
  221. package/esm2020/lib/components/theme/elder-theme-toggle/elder-theme-toggle.component.mjs +4 -4
  222. package/esm2020/lib/components/theme/elder-theme.directive.mjs +4 -4
  223. package/esm2020/lib/components/theme/elder-theme.module.mjs +5 -5
  224. package/esm2020/lib/components/theme/elder-theme.service.mjs +4 -4
  225. package/esm2020/lib/components/time/date-adapters/custom-date-adapter.mjs +4 -4
  226. package/esm2020/lib/components/time/duration/elder-duration-input/elder-duration-input.component.mjs +6 -6
  227. package/esm2020/lib/components/time/elder-date-switcher/elder-date-switcher.component.mjs +5 -5
  228. package/esm2020/lib/components/time/elder-date-time-input/elder-date-time-input.component.mjs +6 -6
  229. package/esm2020/lib/components/time/elder-interval-input/elder-interval-input.component.mjs +4 -4
  230. package/esm2020/lib/components/time/elder-local-date-input/elder-local-date-input.component.mjs +6 -6
  231. package/esm2020/lib/components/time/elder-local-time-input/elder-local-time-input.component.mjs +8 -8
  232. package/esm2020/lib/components/time/elder-time.module.mjs +9 -9
  233. package/esm2020/lib/components/time/period/elder-period-input/elder-period-input.component.mjs +6 -6
  234. package/esm2020/lib/components/toasts/elder-toast.module.mjs +5 -5
  235. package/esm2020/lib/components/toasts/elder-toast.service.mjs +5 -31
  236. package/esm2020/lib/components/toasts/standard-toast/standard-toast.component.mjs +6 -6
  237. package/esm2020/lib/components/url-fragment/elder-url-fragment.module.mjs +5 -5
  238. package/esm2020/lib/components/url-fragment/url-fragment-switcher/elder-url-fragment-switcher.component.mjs +4 -4
  239. package/esm2020/lib/components/viewers/elder-svg-viewer/elder-svg-viewer.component.mjs +4 -4
  240. package/esm2020/lib/components/viewers/elder-viewers.module.mjs +5 -5
  241. package/esm2020/lib/features/event-source/elder-event-source.service.mjs +4 -4
  242. package/esm2020/lib/features/kafent/access-token-provider.mjs +4 -4
  243. package/esm2020/lib/features/kafent/kafent-config.mjs +4 -4
  244. package/esm2020/lib/features/kafent/kafent-event-stream.mjs +4 -4
  245. package/esm2020/lib/features/kafent/kafent-event.service.mjs +4 -4
  246. package/esm2020/lib/features/kafent/kafent.module.mjs +5 -5
  247. package/esm2020/lib/features/kafent/sse/kafent-event-stream-sse.service.mjs +4 -4
  248. package/esm2020/lib/pipes/bytes.pipe.mjs +4 -4
  249. package/esm2020/lib/pipes/elder-pipes.module.mjs +11 -11
  250. package/esm2020/lib/pipes/elder-repeat.pipe.mjs +4 -4
  251. package/esm2020/lib/pipes/elder-round.pipe.mjs +4 -4
  252. package/esm2020/lib/pipes/elder-safe-url.pipe.mjs +4 -4
  253. package/esm2020/lib/pipes/elder-truncate.pipe.mjs +4 -4
  254. package/esm2020/lib/pipes/iso-duration.pipe.mjs +4 -4
  255. package/esm2020/lib/pipes/iso-interval-parse.pipe.mjs +4 -4
  256. package/esm2020/lib/pipes/iso-interval.pipe.mjs +4 -4
  257. package/esm2020/lib/pipes/time-ago.pipe.mjs +4 -4
  258. package/esm2020/lib/pipes/time-duration.pipe.mjs +4 -4
  259. package/esm2020/lib/pipes/weight.pipe.mjs +4 -4
  260. package/fesm2015/elderbyte-ngx-starter.mjs +2600 -2012
  261. package/fesm2015/elderbyte-ngx-starter.mjs.map +1 -1
  262. package/fesm2020/elderbyte-ngx-starter.mjs +2604 -2024
  263. package/fesm2020/elderbyte-ngx-starter.mjs.map +1 -1
  264. package/lib/common/forms/elder-form-field-control-base.directive.d.ts +1 -1
  265. package/lib/common/forms/elder-from-field-base.d.ts +1 -1
  266. package/lib/common/forms/elder-from-field-customizable-base.d.ts +36 -0
  267. package/lib/common/forms/elder-from-field-entity-base.d.ts +1 -1
  268. package/lib/common/forms/elder-from-field-multi-entity-base.d.ts +1 -1
  269. package/lib/common/forms/form-field-base.component.d.ts +7 -1
  270. package/lib/common/forms/multi-model-base.component.d.ts +1 -1
  271. package/lib/common/forms/template-composite-control.d.ts +1 -1
  272. package/lib/common/forms/value-accessor-base.d.ts +1 -1
  273. package/lib/components/access-denied/elder-access-denied.component.d.ts +1 -1
  274. package/lib/components/auditing/audited-entity/elder-audited-entity.component.d.ts +1 -1
  275. package/lib/components/button-group/elder-button-group/elder-button-group.component.d.ts +1 -1
  276. package/lib/components/card-organizer/card-organizer/elder-card-organizer.component.d.ts +1 -1
  277. package/lib/components/card-organizer/card-organizer/elder-stack-card.directive.d.ts +1 -1
  278. package/lib/components/card-organizer/card-stack/elder-card-stack.component.d.ts +1 -1
  279. package/lib/components/cards/elder-card/elder-card-header/elder-card-header.component.d.ts +1 -1
  280. package/lib/components/cards/elder-card/elder-card.component.d.ts +18 -20
  281. package/lib/components/cards/elder-card/elder-card.module.d.ts +2 -1
  282. package/lib/components/connectivity/offline-indicator/elder-offline-indicator.component.d.ts +1 -1
  283. package/lib/components/containers/elder-scroll-container/elder-scroll-container.component.d.ts +1 -1
  284. package/lib/components/csv/elder-csv-export-btn/elder-csv-export-btn.component.d.ts +1 -1
  285. package/lib/components/data-transfer/http-data-transfer/http-data-transfer.component.d.ts +1 -1
  286. package/lib/components/data-transfer/http-data-transfer-aggregate/http-data-transfer-aggregate.component.d.ts +1 -1
  287. package/lib/components/data-transfer/http-data-transfer-indicator/http-data-transfer-indicator.component.d.ts +1 -1
  288. package/lib/components/data-transfer/http-data-transfer-overview/http-data-transfer-overview.component.d.ts +1 -1
  289. package/lib/components/data-view/base/elder-data-view-base.d.ts +11 -6
  290. package/lib/components/data-view/common/data-context-state-indicator/data-context-state-indicator.component.d.ts +1 -1
  291. package/lib/components/data-view/common/elder-data-toolbar/elder-data-toolbar.component.d.ts +2 -2
  292. package/lib/components/data-view/common/elder-single-sort/elder-single-sort.component.d.ts +1 -1
  293. package/lib/components/data-view/common/selection/data-context-selection.directive.d.ts +1 -1
  294. package/lib/components/data-view/common/selection/elder-selection-master-checkbox/elder-selection-master-checkbox.component.d.ts +1 -1
  295. package/lib/components/data-view/grid/elder-grid/elder-grid.component.d.ts +3 -3
  296. package/lib/components/data-view/grid/elder-grid.module.d.ts +2 -1
  297. package/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.component.d.ts +1 -1
  298. package/lib/components/data-view/table/activation/elder-table-activation.directive.d.ts +1 -1
  299. package/lib/components/data-view/table/elder-number-cell.directive.d.ts +1 -1
  300. package/lib/components/data-view/table/elder-table/elder-table-toolbar.directive.d.ts +1 -1
  301. package/lib/components/data-view/table/elder-table/elder-table.component.d.ts +1 -1
  302. package/lib/components/data-view/table/elder-table-column.directive.d.ts +1 -1
  303. package/lib/components/data-view/table/elder-table-extension.directive.d.ts +1 -1
  304. package/lib/components/data-view/table/elder-table-root.directive.d.ts +1 -1
  305. package/lib/components/data-view/table/elder-table-row.directive.d.ts +1 -1
  306. package/lib/components/data-view/table/elder-table-sort.directive.d.ts +1 -1
  307. package/lib/components/data-view/table/elder-table.module.d.ts +2 -1
  308. package/lib/components/dialogs/confirm-dialog/elder-confirm-dialog.component.d.ts +1 -1
  309. package/lib/components/dialogs/elder-dialog.module.d.ts +0 -10
  310. package/lib/components/dialogs/question-dialog/elder-question-dialog.component.d.ts +1 -1
  311. package/lib/components/dialogs/selection-dialog/elder-selection-dialog/elder-selection-dialog.component.d.ts +1 -1
  312. package/lib/components/dialogs/selection-dialog/elder-selection-dialog.directive.d.ts +1 -1
  313. package/lib/components/errors/exception-detail/elder-exception-detail.component.d.ts +1 -1
  314. package/lib/components/expand-toggle-button/elder-expand-toggle-button.component.d.ts +1 -1
  315. package/lib/components/files/blob-viewer/elder-blob-viewer.component.d.ts +1 -1
  316. package/lib/components/files/elder-file-drop-zone.directive.d.ts +1 -1
  317. package/lib/components/files/elder-file-select.directive.d.ts +1 -1
  318. package/lib/components/files/file-select/file-select.component.d.ts +1 -1
  319. package/lib/components/files/file-upload/file-upload.component.d.ts +1 -1
  320. package/lib/components/forms/directives/base/elder-class-hostbinding-base.d.ts +1 -1
  321. package/lib/components/forms/directives/elder-clipboard-put.directive.d.ts +1 -1
  322. package/lib/components/forms/directives/elder-delayed-focus.directive.d.ts +1 -1
  323. package/lib/components/forms/directives/elder-form-field-dense.directive.d.ts +12 -3
  324. package/lib/components/forms/directives/elder-form-field-label.directive.d.ts +1 -1
  325. package/lib/components/forms/directives/elder-form-field-no-hint.directive.d.ts +7 -3
  326. package/lib/components/forms/directives/elder-form-field-no-spinner.directive.d.ts +1 -1
  327. package/lib/components/forms/directives/elder-forms-directives.module.d.ts +13 -35
  328. package/lib/components/forms/directives/elder-input-pattern.directive.d.ts +1 -1
  329. package/lib/components/forms/directives/elder-key-event.directive.d.ts +1 -1
  330. package/lib/components/forms/directives/elder-next-focusable.directive.d.ts +1 -1
  331. package/lib/components/forms/directives/elder-plug-parent-form.directive.d.ts +1 -1
  332. package/lib/components/forms/directives/elder-stop-event-propagation.directive.d.ts +1 -1
  333. package/lib/components/forms/directives/elder-tab-focus-trap.directive.d.ts +1 -1
  334. package/lib/components/forms/directives/elder-touched.directive.d.ts +1 -1
  335. package/lib/components/forms/directives/elder-triple-state-checkbox.directive.d.ts +1 -1
  336. package/lib/components/forms/directives/validation/elder-validation-error.directive.d.ts +44 -0
  337. package/lib/components/forms/directives/validation/strategies/common-validation-message-strategy.d.ts +26 -0
  338. package/lib/components/forms/directives/validation/strategies/dynamic-validation-message-strategy.d.ts +36 -0
  339. package/lib/components/forms/directives/validation/strategies/fallback-validation-message-strategy.d.ts +5 -0
  340. package/lib/components/forms/directives/validation/validation-message-renderer.service.d.ts +28 -0
  341. package/lib/components/forms/directives/validation/validation-message-strategy.d.ts +4 -0
  342. package/lib/components/forms/directives/validation/validators/elder-max.validator.d.ts +11 -0
  343. package/lib/components/forms/directives/validation/validators/elder-min.validator.d.ts +11 -0
  344. package/lib/components/forms/directives/validation/{elder-multiple-of.validator.d.ts → validators/elder-multiple-of.validator.d.ts} +17 -2
  345. package/lib/components/forms/directives/validation/{elder-required-ignore-zero.validator.d.ts → validators/elder-required-ignore-zero.validator.d.ts} +1 -1
  346. package/lib/components/forms/search/elder-search-context.directive.d.ts +1 -1
  347. package/lib/components/forms/search/elder-search-input.directive.d.ts +1 -1
  348. package/lib/components/forms/search/search-box/elder-search-box.component.d.ts +3 -1
  349. package/lib/components/forms/search/search-box/elder-search-panel.component.d.ts +1 -1
  350. package/lib/components/global-search/elder-global-search.component.d.ts +1 -1
  351. package/lib/components/graph/elder-progress-bar/elder-progress-bar.component.d.ts +1 -1
  352. package/lib/components/headers/elder-header/elder-header.component.d.ts +1 -1
  353. package/lib/components/i18n/entities/elder-localized-input/elder-localized-input.component.d.ts +1 -1
  354. package/lib/components/i18n/entities/elder-localized-input-dialog/elder-localized-input-dialog.component.d.ts +1 -1
  355. package/lib/components/i18n/entities/elder-localized-input-table/elder-localized-input-table.component.d.ts +1 -1
  356. package/lib/components/i18n/entities/elder-localized-text-column.directive.d.ts +1 -1
  357. package/lib/components/i18n/entities/elder-localized-texts.directive.d.ts +1 -1
  358. package/lib/components/i18n/language/language-switcher/elder-language-switcher.component.d.ts +1 -1
  359. package/lib/components/iframes/data-view/data-view-iframe/data-view-iframe.component.d.ts +1 -1
  360. package/lib/components/iframes/data-view/data-view-iframe-adapter.directive.d.ts +1 -1
  361. package/lib/components/iframes/elder-iframe.module.d.ts +3 -1
  362. package/lib/components/iframes/iframe-close.directive.d.ts +1 -1
  363. package/lib/components/iframes/iframe-dialog/iframe-dialog.component.d.ts +1 -1
  364. package/lib/components/iframes/iframe-host/iframe-host.component.d.ts +1 -1
  365. package/lib/components/iframes/iframe-side-content/iframe-side-content.component.d.ts +1 -1
  366. package/lib/components/infinitescroll/elder-infinite-autocomplete.directive.d.ts +1 -1
  367. package/lib/components/infinitescroll/elder-infinite-scroll.directive.d.ts +1 -1
  368. package/lib/components/infinitescroll/elder-infinite-scroll.module.d.ts +1 -1
  369. package/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete.component.d.ts +1 -1
  370. package/lib/components/input/autocomplete/elder-autocomplete-many.directive.d.ts +1 -1
  371. package/lib/components/input/autocomplete/elder-autocomplete.directive.d.ts +1 -1
  372. package/lib/components/labels/labels-input/labels-input.component.d.ts +1 -2
  373. package/lib/components/measures/{dimensions-input → dimensions/dimensions-input}/elder-dimensions-input.component.d.ts +41 -30
  374. package/lib/components/measures/dimensions/validation/elder-required-dimensions.validator.d.ts +37 -0
  375. package/lib/components/measures/directives/elder-unit-select.directive.d.ts +1 -1
  376. package/lib/components/measures/elder-measures.module.d.ts +20 -12
  377. package/lib/components/measures/quantity-input/quantity-form-field/elder-quantity-form-field.component.d.ts +20 -0
  378. package/lib/components/measures/quantity-input/{elder-quantity-input.component.d.ts → quantity-input-control/elder-quantity-input-control.component.d.ts} +27 -42
  379. package/lib/components/{select-list/select-list/elder-select-list.component.d.ts → measures/quantity-input/validation/elder-quantity-range.validator.d.ts} +22 -32
  380. package/lib/components/measures/quantity-input/validation/elder-required-quantity.validator.d.ts +36 -0
  381. package/lib/components/navigation/bread-crumbs/bread-crumbs/elder-bread-crumbs.component.d.ts +1 -1
  382. package/lib/components/navigation/nav/elder-nav.module.d.ts +3 -1
  383. package/lib/components/navigation/nav/nav-group/elder-nav-group.component.d.ts +23 -9
  384. package/lib/components/navigation/nav/nav-link/elder-nav-link.component.d.ts +69 -13
  385. package/lib/components/navigation/nav/nav-list/elder-nav-list.component.d.ts +43 -3
  386. package/lib/components/navigation/toolbar/elder-toolbar-column.directive.d.ts +1 -1
  387. package/lib/components/navigation/toolbar/toolbar/elder-toolbar.component.d.ts +1 -1
  388. package/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.component.d.ts +1 -1
  389. package/lib/components/overlays/elder-overlay-origin.directive.d.ts +1 -1
  390. package/lib/components/overlays/elder-overlay-trigger.directive.d.ts +1 -1
  391. package/lib/components/overlays/elder-overlay.component.d.ts +1 -1
  392. package/lib/components/panels/card-panel/elder-card-panel.component.d.ts +1 -1
  393. package/lib/components/panels/elder-dialog-panel/elder-dialog-panel.component.d.ts +1 -1
  394. package/lib/components/panels/flat/elder-panel.component.d.ts +1 -1
  395. package/lib/components/public_api.d.ts +0 -1
  396. package/lib/components/select/auto/elder-auto-select-first.directive.d.ts +1 -1
  397. package/lib/components/select/elder-select-base.d.ts +1 -1
  398. package/lib/components/select/elder-select-chip.directive.d.ts +3 -3
  399. package/lib/components/select/elder-select-on-tab.directive.d.ts +1 -1
  400. package/lib/components/select/elder-select-value.directive.d.ts +1 -1
  401. package/lib/components/select/multi/elder-multi-select-base.d.ts +1 -1
  402. package/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.d.ts +13 -7
  403. package/lib/components/select/multi/elder-multi-select-form-field.d.ts +10 -5
  404. package/lib/components/select/popup/selection-model-popup-trigger-adapter.directive.d.ts +1 -1
  405. package/lib/components/select/popup/selection-model-popup.directive.d.ts +1 -1
  406. package/lib/components/select/popup/templated-selection-dialog/templated-selection-dialog.component.d.ts +1 -1
  407. package/lib/components/select/single/elder-clear-select.directive.d.ts +1 -1
  408. package/lib/components/select/single/elder-select/elder-select.component.d.ts +3 -2
  409. package/lib/components/select/single/elder-select-form-field.d.ts +1 -1
  410. package/lib/components/select-chip-list/chip-list-select/elder-chip-list-select.component.d.ts +5 -10
  411. package/lib/components/shell/elder-shell-slot.directive.d.ts +1 -1
  412. package/lib/components/shell/header/elder-app-header/elder-app-header.component.d.ts +1 -1
  413. package/lib/components/shell/shell/elder-shell.component.d.ts +4 -4
  414. package/lib/components/shell/shell-navigation-toggle/elder-shell-navigation-toggle.component.d.ts +1 -1
  415. package/lib/components/tabs/elder-tab/elder-tab.directive.d.ts +1 -1
  416. package/lib/components/tabs/elder-tab-group-routing/elder-tab-group-routing.directive.d.ts +1 -1
  417. package/lib/components/theme/elder-theme-applier.directive.d.ts +1 -1
  418. package/lib/components/theme/elder-theme-toggle/elder-theme-toggle.component.d.ts +1 -1
  419. package/lib/components/theme/elder-theme.directive.d.ts +1 -1
  420. package/lib/components/time/duration/elder-duration-input/elder-duration-input.component.d.ts +1 -1
  421. package/lib/components/time/elder-date-switcher/elder-date-switcher.component.d.ts +1 -1
  422. package/lib/components/time/elder-date-time-input/elder-date-time-input.component.d.ts +1 -1
  423. package/lib/components/time/elder-interval-input/elder-interval-input.component.d.ts +1 -1
  424. package/lib/components/time/elder-local-date-input/elder-local-date-input.component.d.ts +1 -1
  425. package/lib/components/time/elder-local-time-input/elder-local-time-input.component.d.ts +1 -1
  426. package/lib/components/time/period/elder-period-input/elder-period-input.component.d.ts +1 -1
  427. package/lib/components/toasts/elder-toast.service.d.ts +0 -14
  428. package/lib/components/toasts/standard-toast/standard-toast.component.d.ts +3 -2
  429. package/lib/components/url-fragment/url-fragment-switcher/elder-url-fragment-switcher.component.d.ts +1 -1
  430. package/lib/components/viewers/elder-svg-viewer/elder-svg-viewer.component.d.ts +1 -1
  431. package/package.json +5 -5
  432. package/src/lib/components/cards/elder-card/elder-card.component.scss +1 -9
  433. package/src/lib/components/data-view/grid/elder-grid/elder-grid.component.scss +1 -2
  434. package/src/lib/components/data-view/table/elder-table/elder-table.component.scss +9 -8
  435. package/src/lib/components/forms/search/search-box/elder-search-box.component.scss +7 -0
  436. package/src/lib/components/iframes/iframe-host/iframe-host.component.scss +7 -4
  437. package/src/lib/components/measures/{dimensions-input → dimensions/dimensions-input}/elder-dimensions-input.component.scss +0 -0
  438. package/src/lib/components/measures/quantity-input/quantity-form-field/elder-quantity-form-field.component.scss +0 -0
  439. package/src/lib/components/measures/quantity-input/{elder-quantity-input.component.scss → quantity-input-control/elder-quantity-input-control.component.scss} +0 -3
  440. package/src/lib/components/navigation/nav/_elder-nav-theme.scss +68 -0
  441. package/src/lib/components/navigation/nav/nav-group/elder-nav-group.component.scss +12 -32
  442. package/src/lib/components/navigation/nav/nav-link/elder-nav-link.component.scss +12 -42
  443. package/src/lib/components/navigation/nav/nav-list/elder-nav-list.component.scss +1 -1
  444. package/src/lib/components/panels/flat/_elder-panel-theme.scss +3 -2
  445. package/src/lib/components/select/_elder-select-base.scss +15 -92
  446. package/src/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.scss +0 -8
  447. package/theming/_elder-common.scss +114 -19
  448. package/theming/_elder-flex-layout.scss +1 -0
  449. package/theming/_elder-mdc-support.scss +147 -0
  450. package/theming/_elder-style-fixes.scss +35 -2
  451. package/theming/_elder-toast-theme.scss +2 -1
  452. package/theming/_mat-icon-button-size.scss +29 -0
  453. package/esm2020/lib/components/forms/directives/elder-max.directive.mjs +0 -39
  454. package/esm2020/lib/components/forms/directives/elder-min.directive.mjs +0 -39
  455. package/esm2020/lib/components/forms/directives/validation/elder-multiple-of.validator.mjs +0 -57
  456. package/esm2020/lib/components/forms/directives/validation/elder-required-ignore-zero.validator.mjs +0 -68
  457. package/esm2020/lib/components/measures/dimensions-input/elder-dimensions-input.component.mjs +0 -229
  458. package/esm2020/lib/components/measures/quantity-input/elder-quantity-input.component.mjs +0 -189
  459. package/esm2020/lib/components/select-list/elder-select-list.module.mjs +0 -36
  460. package/esm2020/lib/components/select-list/select-list/elder-select-list.component.mjs +0 -75
  461. package/esm2020/lib/components/select-list/select-list-item/elder-select-list-item.component.mjs +0 -118
  462. package/lib/components/forms/directives/elder-max.directive.d.ts +0 -11
  463. package/lib/components/forms/directives/elder-min.directive.d.ts +0 -11
  464. package/lib/components/select-list/elder-select-list.module.d.ts +0 -15
  465. package/lib/components/select-list/select-list-item/elder-select-list-item.component.d.ts +0 -57
  466. package/src/lib/components/select-list/select-list/elder-select-list.component.scss +0 -19
  467. package/src/lib/components/select-list/select-list-item/elder-select-list-item.component.scss +0 -37
@@ -0,0 +1,273 @@
1
+ import { ChangeDetectionStrategy, Component, Input, Optional, Output, Self, ViewEncapsulation } from '@angular/core';
2
+ import { LoggerFactory } from '@elderbyte/ts-logger';
3
+ import { MatFormFieldControl } from '@angular/material/form-field';
4
+ import { Dimensions } from '../../model/dimensions';
5
+ import { BehaviorSubject } from 'rxjs';
6
+ import { map } from 'rxjs/operators';
7
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
8
+ import { ElderFormFieldControlBase } from '../../../../common/forms/elder-form-field-control-base.directive';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "@angular/cdk/a11y";
11
+ import * as i2 from "@ngx-translate/core";
12
+ import * as i3 from "@angular/forms";
13
+ import * as i4 from "@angular/common";
14
+ import * as i5 from "../../quantity-input/quantity-input-control/elder-quantity-input-control.component";
15
+ class DimensionsContext {
16
+ constructor(lengthActive, widthActive, heightActive) {
17
+ this.lengthActive = lengthActive;
18
+ this.widthActive = widthActive;
19
+ this.heightActive = heightActive;
20
+ }
21
+ static of(mode) {
22
+ switch (mode) {
23
+ case 'length': return new DimensionsContext(true, false, false);
24
+ case 'width': return new DimensionsContext(false, true, false);
25
+ case 'height': return new DimensionsContext(false, false, true);
26
+ case 'area': return new DimensionsContext(true, true, false);
27
+ case 'volume': return new DimensionsContext(true, true, true);
28
+ }
29
+ }
30
+ get isLengthLast() {
31
+ return this.lengthActive && !this.widthActive && !this.heightActive;
32
+ }
33
+ get isWidthLast() {
34
+ return this.widthActive && !this.heightActive;
35
+ }
36
+ get isHeightLast() {
37
+ return this.heightActive;
38
+ }
39
+ get isHeightFirst() {
40
+ return !this.lengthActive && !this.widthActive && this.heightActive;
41
+ }
42
+ get isWidthFirst() {
43
+ return !this.lengthActive && this.widthActive;
44
+ }
45
+ get isLengthFirst() {
46
+ return this.lengthActive;
47
+ }
48
+ }
49
+ export class ElderDimensionsInputComponent extends ElderFormFieldControlBase {
50
+ /***************************************************************************
51
+ * *
52
+ * Constructor *
53
+ * *
54
+ **************************************************************************/
55
+ constructor(hostRef, zone, focusMonitor, translateService, ngControl) {
56
+ super(hostRef, 'dimensions-input', focusMonitor, translateService, ngControl);
57
+ this.ngControl = ngControl;
58
+ /***************************************************************************
59
+ * *
60
+ * Fields *
61
+ * *
62
+ **************************************************************************/
63
+ this.log = LoggerFactory.getLogger(this.constructor.name);
64
+ this._requiredLength = false;
65
+ this._requiredWidth = false;
66
+ this._requiredHeight = false;
67
+ /**
68
+ * Display format for the quantity value:
69
+ * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}
70
+ */
71
+ this.displayFormat = null;
72
+ this.defaultMode = 'volume';
73
+ this.mode$ = new BehaviorSubject(this.defaultMode);
74
+ this.context$ = new BehaviorSubject(DimensionsContext.of(this.defaultMode));
75
+ this.afterInit = false;
76
+ }
77
+ /***************************************************************************
78
+ * *
79
+ * Life Cycle *
80
+ * *
81
+ **************************************************************************/
82
+ ngOnInit() {
83
+ this.value = Dimensions.from(this.initialUnit, this.initialLength, this.initialWidth, this.initialHeight);
84
+ this.afterInit = true;
85
+ }
86
+ /***************************************************************************
87
+ * *
88
+ * Properties *
89
+ * *
90
+ **************************************************************************/
91
+ set mode(mode) {
92
+ this.mode$.next(mode ?? this.defaultMode);
93
+ this.context$.next(DimensionsContext.of(this.mode$.getValue()));
94
+ }
95
+ get mode() {
96
+ return this.mode$.getValue();
97
+ }
98
+ set requiredLength(value) {
99
+ this._requiredLength = coerceBooleanProperty(value);
100
+ }
101
+ get requiredLength() {
102
+ return this._requiredLength;
103
+ }
104
+ set requiredWidth(value) {
105
+ this._requiredWidth = coerceBooleanProperty(value);
106
+ }
107
+ get requiredWidth() {
108
+ return this._requiredWidth;
109
+ }
110
+ set requiredHeight(value) {
111
+ this._requiredHeight = coerceBooleanProperty(value);
112
+ }
113
+ get requiredHeight() {
114
+ return this._requiredHeight;
115
+ }
116
+ get unitChange() {
117
+ return this.valueChange.pipe(map(d => d?.unit));
118
+ }
119
+ get unit() {
120
+ return this.value?.unit;
121
+ }
122
+ set unit(unit) {
123
+ if (this.afterInit) {
124
+ this.value = Dimensions.from(unit, this.value?.length, this.value?.width, this.value?.height);
125
+ }
126
+ else {
127
+ this.initialUnit = unit;
128
+ }
129
+ }
130
+ get lengthValueChange() {
131
+ return this.valueChange.pipe(map(d => d?.length));
132
+ }
133
+ get lengthValue() {
134
+ return this.value?.length;
135
+ }
136
+ set lengthValue(lengthValue) {
137
+ if (this.afterInit) {
138
+ this.value = this.dimensionsOfLength(lengthValue);
139
+ }
140
+ else {
141
+ this.initialLength = lengthValue;
142
+ }
143
+ }
144
+ get widthValueChange() {
145
+ return this.valueChange.pipe(map(d => d?.width));
146
+ }
147
+ get widthValue() {
148
+ return this.value?.width;
149
+ }
150
+ set widthValue(widthValue) {
151
+ if (this.afterInit) {
152
+ this.value = this.dimensionsOfWidth(widthValue);
153
+ }
154
+ else {
155
+ this.initialWidth = widthValue;
156
+ }
157
+ }
158
+ get heightValueChange() {
159
+ return this.valueChange.pipe(map(d => d?.height));
160
+ }
161
+ get heightValue() {
162
+ return this.value?.height;
163
+ }
164
+ set heightValue(heightValue) {
165
+ if (this.afterInit) {
166
+ this.value = this.dimensionsOfHeight(heightValue);
167
+ }
168
+ else {
169
+ this.initialHeight = heightValue;
170
+ }
171
+ }
172
+ /***************************************************************************
173
+ * *
174
+ * Public API *
175
+ * *
176
+ **************************************************************************/
177
+ onLengthValueChanged(value) {
178
+ this.updateValue(this.dimensionsOfLength(value));
179
+ }
180
+ onWidthValueChanged(value) {
181
+ this.updateValue(this.dimensionsOfWidth(value));
182
+ }
183
+ onHeightValueChanged(value) {
184
+ this.updateValue(this.dimensionsOfHeight(value));
185
+ }
186
+ blur() {
187
+ // TODO this.inputRef?.nativeElement?.blur();
188
+ }
189
+ focus(options) {
190
+ // TODO this.inputRef?.nativeElement?.focus(options);
191
+ }
192
+ /***************************************************************************
193
+ * *
194
+ * Protected *
195
+ * *
196
+ **************************************************************************/
197
+ valuesEquals(a, b) {
198
+ if (a === b) {
199
+ return true;
200
+ }
201
+ return a?.length === b?.length
202
+ && a?.width === b?.width
203
+ && a?.height === b?.height
204
+ && a?.unit === b?.unit;
205
+ }
206
+ /***************************************************************************
207
+ * *
208
+ * Private Methods *
209
+ * *
210
+ **************************************************************************/
211
+ dimensionsOfLength(value) {
212
+ return Dimensions.from(this.unit, value, this.widthValue, this.heightValue);
213
+ }
214
+ dimensionsOfWidth(value) {
215
+ return Dimensions.from(this.unit, this.lengthValue, value, this.heightValue);
216
+ }
217
+ dimensionsOfHeight(value) {
218
+ return Dimensions.from(this.unit, this.lengthValue, this.widthValue, value);
219
+ }
220
+ }
221
+ ElderDimensionsInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ElderDimensionsInputComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.FocusMonitor }, { token: i2.TranslateService }, { token: i3.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component });
222
+ ElderDimensionsInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ElderDimensionsInputComponent, selector: "elder-dimensions-input", inputs: { name: "name", appearance: "appearance", color: "color", placeholderLength: "placeholderLength", placeholderWidth: "placeholderWidth", placeholderHeight: "placeholderHeight", displayFormat: "displayFormat", mode: "mode", requiredLength: "requiredLength", requiredWidth: "requiredWidth", requiredHeight: "requiredHeight", unit: "unit", lengthValue: "lengthValue", widthValue: "widthValue", heightValue: "heightValue" }, outputs: { unitChange: "unitChange", lengthValueChange: "lengthValueChange", widthValueChange: "widthValueChange", heightValueChange: "heightValueChange" }, providers: [
223
+ { provide: MatFormFieldControl, useExisting: ElderDimensionsInputComponent },
224
+ ], usesInheritance: true, ngImport: i0, template: "<div role=\"group\" class=\"layout-row place-start-baseline g-md full\"\n *ngIf=\"context$ | async as context\">\n\n <!-- elder-form-field-small -->\n <elder-quantity-input *ngIf=\"context.lengthActive\"\n [quantityValue]=\"lengthValue\"\n (quantityValueChange)=\"onLengthValueChanged($event)\"\n [unit]=\"unit\"\n [placeholder]=\"(placeholderLength ? placeholderLength : 'dimensions.length') | translate\"\n [displayFormat]=\"displayFormat\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [hideUnit]=\"!context.isLengthLast\"\n >\n </elder-quantity-input>\n\n <span class=\"noselect\" *ngIf=\"context.lengthActive && context.widthActive\">&times;</span>\n\n <elder-quantity-input *ngIf=\"context.widthActive\"\n [quantityValue]=\"widthValue\"\n (quantityValueChange)=\"onWidthValueChanged($event)\"\n [unit]=\"unit\"\n [displayFormat]=\"displayFormat\"\n [placeholder]=\"(placeholderWidth ? placeholderWidth : 'dimensions.width') | translate\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [hideUnit]=\"!context.isWidthLast\"\n >\n </elder-quantity-input>\n\n <span class=\"noselect\" *ngIf=\"context.widthActive && context.heightActive\">&times;</span>\n\n <elder-quantity-input *ngIf=\"context.heightActive\"\n [quantityValue]=\"heightValue\"\n (quantityValueChange)=\"onHeightValueChanged($event)\"\n [unit]=\"unit\"\n [displayFormat]=\"displayFormat\"\n [placeholder]=\"(placeholderHeight ? placeholderHeight : 'dimensions.height') | translate\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n >\n </elder-quantity-input>\n\n <!--\n[requiredIgnoreZero]=\"requiredIgnoreZero\"\n [elderMultipleOf]=\"multipleOf\" ngModel\n [min]=\"min\"\n [max]=\"max\"\n [required]=\"requiredLength\"\n -->\n</div>\n\n\n", styles: [""], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.ElderQuantityInputControlComponent, selector: "elder-quantity-input", inputs: ["displayFormat", "quantityValue", "unit", "hideUnit"], outputs: ["quantityValueChange", "unitChange"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
225
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ElderDimensionsInputComponent, decorators: [{
226
+ type: Component,
227
+ args: [{ selector: 'elder-dimensions-input', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
228
+ { provide: MatFormFieldControl, useExisting: ElderDimensionsInputComponent },
229
+ ], template: "<div role=\"group\" class=\"layout-row place-start-baseline g-md full\"\n *ngIf=\"context$ | async as context\">\n\n <!-- elder-form-field-small -->\n <elder-quantity-input *ngIf=\"context.lengthActive\"\n [quantityValue]=\"lengthValue\"\n (quantityValueChange)=\"onLengthValueChanged($event)\"\n [unit]=\"unit\"\n [placeholder]=\"(placeholderLength ? placeholderLength : 'dimensions.length') | translate\"\n [displayFormat]=\"displayFormat\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [hideUnit]=\"!context.isLengthLast\"\n >\n </elder-quantity-input>\n\n <span class=\"noselect\" *ngIf=\"context.lengthActive && context.widthActive\">&times;</span>\n\n <elder-quantity-input *ngIf=\"context.widthActive\"\n [quantityValue]=\"widthValue\"\n (quantityValueChange)=\"onWidthValueChanged($event)\"\n [unit]=\"unit\"\n [displayFormat]=\"displayFormat\"\n [placeholder]=\"(placeholderWidth ? placeholderWidth : 'dimensions.width') | translate\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [hideUnit]=\"!context.isWidthLast\"\n >\n </elder-quantity-input>\n\n <span class=\"noselect\" *ngIf=\"context.widthActive && context.heightActive\">&times;</span>\n\n <elder-quantity-input *ngIf=\"context.heightActive\"\n [quantityValue]=\"heightValue\"\n (quantityValueChange)=\"onHeightValueChanged($event)\"\n [unit]=\"unit\"\n [displayFormat]=\"displayFormat\"\n [placeholder]=\"(placeholderHeight ? placeholderHeight : 'dimensions.height') | translate\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n >\n </elder-quantity-input>\n\n <!--\n[requiredIgnoreZero]=\"requiredIgnoreZero\"\n [elderMultipleOf]=\"multipleOf\" ngModel\n [min]=\"min\"\n [max]=\"max\"\n [required]=\"requiredLength\"\n -->\n</div>\n\n\n" }]
230
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.FocusMonitor }, { type: i2.TranslateService }, { type: i3.NgControl, decorators: [{
231
+ type: Optional
232
+ }, {
233
+ type: Self
234
+ }] }]; }, propDecorators: { name: [{
235
+ type: Input
236
+ }], appearance: [{
237
+ type: Input
238
+ }], color: [{
239
+ type: Input
240
+ }], placeholderLength: [{
241
+ type: Input
242
+ }], placeholderWidth: [{
243
+ type: Input
244
+ }], placeholderHeight: [{
245
+ type: Input
246
+ }], displayFormat: [{
247
+ type: Input
248
+ }], mode: [{
249
+ type: Input
250
+ }], requiredLength: [{
251
+ type: Input
252
+ }], requiredWidth: [{
253
+ type: Input
254
+ }], requiredHeight: [{
255
+ type: Input
256
+ }], unitChange: [{
257
+ type: Output
258
+ }], unit: [{
259
+ type: Input
260
+ }], lengthValueChange: [{
261
+ type: Output
262
+ }], lengthValue: [{
263
+ type: Input
264
+ }], widthValueChange: [{
265
+ type: Output
266
+ }], widthValue: [{
267
+ type: Input
268
+ }], heightValueChange: [{
269
+ type: Output
270
+ }], heightValue: [{
271
+ type: Input
272
+ }] } });
273
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItZGltZW5zaW9ucy1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL21lYXN1cmVzL2RpbWVuc2lvbnMvZGltZW5zaW9ucy1pbnB1dC9lbGRlci1kaW1lbnNpb25zLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvbWVhc3VyZXMvZGltZW5zaW9ucy9kaW1lbnNpb25zLWlucHV0L2VsZGVyLWRpbWVuc2lvbnMtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBQ04sSUFBSSxFQUNKLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUF5QixtQkFBbUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3pGLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRCxPQUFPLEVBQUMsZUFBZSxFQUFhLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuQyxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUU1RCxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxrRUFBa0UsQ0FBQzs7Ozs7OztBQU8zRyxNQUFNLGlCQUFpQjtJQVlyQixZQUNrQixZQUFxQixFQUNyQixXQUFvQixFQUNwQixZQUFxQjtRQUZyQixp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UUFDVCxFQUFDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsNkJBQTZCLEVBQUM7S0FDM0UsaURDM0VILGk0REFxREE7MkZEd0JhLDZCQUE2QjtrQkFWekMsU0FBUzsrQkFDRSx3QkFBd0IsaUJBR25CLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1QsRUFBQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVywrQkFBK0IsRUFBQztxQkFDM0U7OzBCQThERSxRQUFROzswQkFBSSxJQUFJOzRDQTdDWixJQUFJO3NCQURWLEtBQUs7Z0JBSUMsVUFBVTtzQkFEaEIsS0FBSztnQkFJQyxLQUFLO3NCQURYLEtBQUs7Z0JBSUMsaUJBQWlCO3NCQUR2QixLQUFLO2dCQUlDLGdCQUFnQjtzQkFEdEIsS0FBSztnQkFJQyxpQkFBaUI7c0JBRHZCLEtBQUs7Z0JBUUMsYUFBYTtzQkFEbkIsS0FBSztnQkF5REssSUFBSTtzQkFEZCxLQUFLO2dCQVdLLGNBQWM7c0JBRHhCLEtBQUs7Z0JBVUssYUFBYTtzQkFEdkIsS0FBSztnQkFVSyxjQUFjO3NCQUR4QixLQUFLO2dCQVVLLFVBQVU7c0JBRHBCLE1BQU07Z0JBWUksSUFBSTtzQkFEZCxLQUFLO2dCQWVLLGlCQUFpQjtzQkFEM0IsTUFBTTtnQkFZSSxXQUFXO3NCQURyQixLQUFLO2dCQVVLLGdCQUFnQjtzQkFEMUIsTUFBTTtnQkFZSSxVQUFVO3NCQURwQixLQUFLO2dCQVVLLGlCQUFpQjtzQkFEM0IsTUFBTTtnQkFZSSxXQUFXO3NCQURyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBTZWxmLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TG9nZ2VyRmFjdG9yeX0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInO1xuaW1wb3J0IHtNYXRGb3JtRmllbGRBcHBlYXJhbmNlLCBNYXRGb3JtRmllbGRDb250cm9sfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7RGltZW5zaW9uc30gZnJvbSAnLi4vLi4vbW9kZWwvZGltZW5zaW9ucyc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtVbml0fSBmcm9tICcuLi8uLi9tb2RlbC91bml0JztcbmltcG9ydCB7Y29lcmNlQm9vbGVhblByb3BlcnR5fSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtUaGVtZVBhbGV0dGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHtFbGRlckZvcm1GaWVsZENvbnRyb2xCYXNlfSBmcm9tICcuLi8uLi8uLi8uLi9jb21tb24vZm9ybXMvZWxkZXItZm9ybS1maWVsZC1jb250cm9sLWJhc2UuZGlyZWN0aXZlJztcbmltcG9ydCB7Rm9jdXNNb25pdG9yfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtOZ0NvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxudHlwZSBEaW1lbnNpb25zTW9kZSA9ICdsZW5ndGgnIHwgJ3dpZHRoJyB8ICdoZWlnaHQnIHwgJ2FyZWEnIHwgJ3ZvbHVtZSc7XG5cbmNsYXNzIERpbWVuc2lvbnNDb250ZXh0IHtcblxuICBwdWJsaWMgc3RhdGljIG9mKG1vZGU6IERpbWVuc2lvbnNNb2RlKTogRGltZW5zaW9uc0NvbnRleHQge1xuICAgIHN3aXRjaCAobW9kZSkge1xuICAgICAgY2FzZSAnbGVuZ3RoJzogcmV0dXJuIG5ldyBEaW1lbnNpb25zQ29udGV4dCh0cnVlLCBmYWxzZSwgZmFsc2UpO1xuICAgICAgY2FzZSAnd2lkdGgnOiByZXR1cm4gbmV3IERpbWVuc2lvbnNDb250ZXh0KGZhbHNlLCB0cnVlLCBmYWxzZSk7XG4gICAgICBjYXNlICdoZWlnaHQnOiByZXR1cm4gbmV3IERpbWVuc2lvbnNDb250ZXh0KGZhbHNlLCBmYWxzZSwgdHJ1ZSk7XG4gICAgICBjYXNlICdhcmVhJzogcmV0dXJuIG5ldyBEaW1lbnNpb25zQ29udGV4dCh0cnVlLCB0cnVlLCBmYWxzZSk7XG4gICAgICBjYXNlICd2b2x1bWUnOiByZXR1cm4gbmV3IERpbWVuc2lvbnNDb250ZXh0KHRydWUsIHRydWUsIHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSBsZW5ndGhBY3RpdmU6IGJvb2xlYW4sXG4gICAgcHVibGljIHJlYWRvbmx5IHdpZHRoQWN0aXZlOiBib29sZWFuLFxuICAgIHB1YmxpYyByZWFkb25seSBoZWlnaHRBY3RpdmU6IGJvb2xlYW4sXG4gICkgeyB9XG5cbiAgcHVibGljIGdldCBpc0xlbmd0aExhc3QoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubGVuZ3RoQWN0aXZlICYmICF0aGlzLndpZHRoQWN0aXZlICYmICF0aGlzLmhlaWdodEFjdGl2ZTtcbiAgfVxuICBwdWJsaWMgZ2V0IGlzV2lkdGhMYXN0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLndpZHRoQWN0aXZlICYmICF0aGlzLmhlaWdodEFjdGl2ZTtcbiAgfVxuICBwdWJsaWMgZ2V0IGlzSGVpZ2h0TGFzdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oZWlnaHRBY3RpdmU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzSGVpZ2h0Rmlyc3QoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmxlbmd0aEFjdGl2ZSAmJiAhdGhpcy53aWR0aEFjdGl2ZSAmJiB0aGlzLmhlaWdodEFjdGl2ZTtcbiAgfVxuICBwdWJsaWMgZ2V0IGlzV2lkdGhGaXJzdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMubGVuZ3RoQWN0aXZlICYmIHRoaXMud2lkdGhBY3RpdmU7XG4gIH1cbiAgcHVibGljIGdldCBpc0xlbmd0aEZpcnN0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxlbmd0aEFjdGl2ZTtcbiAgfVxufVxuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VsZGVyLWRpbWVuc2lvbnMtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZWxkZXItZGltZW5zaW9ucy1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VsZGVyLWRpbWVuc2lvbnMtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIHtwcm92aWRlOiBNYXRGb3JtRmllbGRDb250cm9sLCB1c2VFeGlzdGluZzogRWxkZXJEaW1lbnNpb25zSW5wdXRDb21wb25lbnR9LFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyRGltZW5zaW9uc0lucHV0Q29tcG9uZW50IGV4dGVuZHMgRWxkZXJGb3JtRmllbGRDb250cm9sQmFzZTxEaW1lbnNpb25zPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2cgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpO1xuXG4gIHByaXZhdGUgX3JlcXVpcmVkTGVuZ3RoID0gZmFsc2U7XG4gIHByaXZhdGUgX3JlcXVpcmVkV2lkdGggPSBmYWxzZTtcbiAgcHJpdmF0ZSBfcmVxdWlyZWRIZWlnaHQgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgbmFtZTogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhcHBlYXJhbmNlOiBNYXRGb3JtRmllbGRBcHBlYXJhbmNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjb2xvcjogVGhlbWVQYWxldHRlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwbGFjZWhvbGRlckxlbmd0aDogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwbGFjZWhvbGRlcldpZHRoOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHBsYWNlaG9sZGVySGVpZ2h0OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERpc3BsYXkgZm9ybWF0IGZvciB0aGUgcXVhbnRpdHkgdmFsdWU6XG4gICAqIHttaW5JbnRlZ2VyRGlnaXRzfS57bWluRnJhY3Rpb25EaWdpdHN9LXttYXhGcmFjdGlvbkRpZ2l0c31cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkaXNwbGF5Rm9ybWF0OiBzdHJpbmcgPSBudWxsO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdE1vZGU6IERpbWVuc2lvbnNNb2RlID0gJ3ZvbHVtZSdcbiAgcHJpdmF0ZSByZWFkb25seSBtb2RlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGltZW5zaW9uc01vZGU+KHRoaXMuZGVmYXVsdE1vZGUpO1xuICByZWFkb25seSBjb250ZXh0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGltZW5zaW9uc0NvbnRleHQ+KERpbWVuc2lvbnNDb250ZXh0Lm9mKHRoaXMuZGVmYXVsdE1vZGUpKTtcblxuICBwcml2YXRlIGFmdGVySW5pdCA9IGZhbHNlO1xuICBwcml2YXRlIGluaXRpYWxVbml0OiBVbml0O1xuICBwcml2YXRlIGluaXRpYWxMZW5ndGg6IG51bWJlcjtcbiAgcHJpdmF0ZSBpbml0aWFsV2lkdGg6IG51bWJlcjtcbiAgcHJpdmF0ZSBpbml0aWFsSGVpZ2h0OiBudW1iZXI7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgY29uc3RydWN0b3IoXG4gICAgaG9zdFJlZjogRWxlbWVudFJlZixcbiAgICB6b25lOiBOZ1pvbmUsXG4gICAgZm9jdXNNb25pdG9yOiBGb2N1c01vbml0b3IsXG4gICAgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbFxuICApIHtcbiAgICBzdXBlcihcbiAgICAgIGhvc3RSZWYsXG4gICAgICAnZGltZW5zaW9ucy1pbnB1dCcsXG4gICAgICBmb2N1c01vbml0b3IsXG4gICAgICB0cmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgbmdDb250cm9sXG4gICAgKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBMaWZlIEN5Y2xlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gRGltZW5zaW9ucy5mcm9tKFxuICAgICAgdGhpcy5pbml0aWFsVW5pdCxcbiAgICAgIHRoaXMuaW5pdGlhbExlbmd0aCxcbiAgICAgIHRoaXMuaW5pdGlhbFdpZHRoLFxuICAgICAgdGhpcy5pbml0aWFsSGVpZ2h0XG4gICAgKTtcbiAgICB0aGlzLmFmdGVySW5pdCA9IHRydWU7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBtb2RlKG1vZGU6IERpbWVuc2lvbnNNb2RlKXtcbiAgICB0aGlzLm1vZGUkLm5leHQobW9kZSA/PyB0aGlzLmRlZmF1bHRNb2RlKTtcbiAgICB0aGlzLmNvbnRleHQkLm5leHQoRGltZW5zaW9uc0NvbnRleHQub2YodGhpcy5tb2RlJC5nZXRWYWx1ZSgpKSlcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbW9kZSgpOiBEaW1lbnNpb25zTW9kZSB7XG4gICAgcmV0dXJuIHRoaXMubW9kZSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgcmVxdWlyZWRMZW5ndGgodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9yZXF1aXJlZExlbmd0aCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlcXVpcmVkTGVuZ3RoKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZExlbmd0aDtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgcmVxdWlyZWRXaWR0aCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3JlcXVpcmVkV2lkdGggPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGdldCByZXF1aXJlZFdpZHRoKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZFdpZHRoO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCByZXF1aXJlZEhlaWdodCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3JlcXVpcmVkSGVpZ2h0ID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVxdWlyZWRIZWlnaHQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkSGVpZ2h0O1xuICB9XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBnZXQgdW5pdENoYW5nZSgpOiBPYnNlcnZhYmxlPFVuaXQgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVDaGFuZ2UucGlwZShcbiAgICAgIG1hcChkID0+IGQ/LnVuaXQpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdW5pdCgpOiBVbml0IHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZT8udW5pdDtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdW5pdCh1bml0OiBVbml0KSB7XG4gICAgaWYgKHRoaXMuYWZ0ZXJJbml0KSB7XG4gICAgICB0aGlzLnZhbHVlID0gRGltZW5zaW9ucy5mcm9tKFxuICAgICAgICB1bml0LFxuICAgICAgICB0aGlzLnZhbHVlPy5sZW5ndGgsXG4gICAgICAgIHRoaXMudmFsdWU/LndpZHRoLFxuICAgICAgICB0aGlzLnZhbHVlPy5oZWlnaHRcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5pdGlhbFVuaXQgPSB1bml0O1xuICAgIH1cbiAgfVxuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgZ2V0IGxlbmd0aFZhbHVlQ2hhbmdlKCk6IE9ic2VydmFibGU8bnVtYmVyIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLnZhbHVlQ2hhbmdlLnBpcGUoXG4gICAgICBtYXAoZCA9PiBkPy5sZW5ndGgpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbGVuZ3RoVmFsdWUoKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWU/Lmxlbmd0aDtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbGVuZ3RoVmFsdWUobGVuZ3RoVmFsdWU6IG51bWJlciB8IG51bGwpIHtcbiAgICBpZiAodGhpcy5hZnRlckluaXQpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmRpbWVuc2lvbnNPZkxlbmd0aChsZW5ndGhWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5pdGlhbExlbmd0aCA9IGxlbmd0aFZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgZ2V0IHdpZHRoVmFsdWVDaGFuZ2UoKTogT2JzZXJ2YWJsZTxudW1iZXIgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVDaGFuZ2UucGlwZShcbiAgICAgIG1hcChkID0+IGQ/LndpZHRoKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHdpZHRoVmFsdWUoKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWU/LndpZHRoO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB3aWR0aFZhbHVlKHdpZHRoVmFsdWU6IG51bWJlciB8IG51bGwpIHtcbiAgICBpZiAodGhpcy5hZnRlckluaXQpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmRpbWVuc2lvbnNPZldpZHRoKHdpZHRoVmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmluaXRpYWxXaWR0aCA9IHdpZHRoVmFsdWU7XG4gICAgfVxuICB9XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBnZXQgaGVpZ2h0VmFsdWVDaGFuZ2UoKTogT2JzZXJ2YWJsZTxudW1iZXIgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVDaGFuZ2UucGlwZShcbiAgICAgIG1hcChkID0+IGQ/LmhlaWdodClcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldCBoZWlnaHRWYWx1ZSgpOiBudW1iZXIgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZT8uaGVpZ2h0O1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBoZWlnaHRWYWx1ZShoZWlnaHRWYWx1ZTogbnVtYmVyIHwgbnVsbCkge1xuICAgIGlmICh0aGlzLmFmdGVySW5pdCkge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuZGltZW5zaW9uc09mSGVpZ2h0KGhlaWdodFZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbml0aWFsSGVpZ2h0ID0gaGVpZ2h0VmFsdWU7XG4gICAgfVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIG9uTGVuZ3RoVmFsdWVDaGFuZ2VkKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZVZhbHVlKHRoaXMuZGltZW5zaW9uc09mTGVuZ3RoKHZhbHVlKSk7XG4gIH1cblxuICBwdWJsaWMgb25XaWR0aFZhbHVlQ2hhbmdlZCh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVWYWx1ZSh0aGlzLmRpbWVuc2lvbnNPZldpZHRoKHZhbHVlKSk7XG4gIH1cblxuICBwdWJsaWMgb25IZWlnaHRWYWx1ZUNoYW5nZWQodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlVmFsdWUodGhpcy5kaW1lbnNpb25zT2ZIZWlnaHQodmFsdWUpKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyKCk6IHZvaWQge1xuICAgIC8vIFRPRE8gdGhpcy5pbnB1dFJlZj8ubmF0aXZlRWxlbWVudD8uYmx1cigpO1xuICB9XG5cbiAgcHVibGljIGZvY3VzKG9wdGlvbnM6IEZvY3VzT3B0aW9ucyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIC8vIFRPRE8gdGhpcy5pbnB1dFJlZj8ubmF0aXZlRWxlbWVudD8uZm9jdXMob3B0aW9ucyk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvdGVjdGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcm90ZWN0ZWQgdmFsdWVzRXF1YWxzKGE6IERpbWVuc2lvbnMsIGI6IERpbWVuc2lvbnMpOiBib29sZWFuIHtcbiAgICBpZiAoYSA9PT0gYikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBhPy5sZW5ndGggPT09IGI/Lmxlbmd0aFxuICAgICAgJiYgYT8ud2lkdGggPT09IGI/LndpZHRoXG4gICAgICAmJiBhPy5oZWlnaHQgPT09IGI/LmhlaWdodFxuICAgICAgJiYgYT8udW5pdCA9PT0gYj8udW5pdDtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIE1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgZGltZW5zaW9uc09mTGVuZ3RoKHZhbHVlOiBudW1iZXIpIHtcbiAgICByZXR1cm4gRGltZW5zaW9ucy5mcm9tKFxuICAgICAgdGhpcy51bml0LFxuICAgICAgdmFsdWUsXG4gICAgICB0aGlzLndpZHRoVmFsdWUsXG4gICAgICB0aGlzLmhlaWdodFZhbHVlXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZGltZW5zaW9uc09mV2lkdGgodmFsdWU6IG51bWJlcikge1xuICAgIHJldHVybiBEaW1lbnNpb25zLmZyb20oXG4gICAgICB0aGlzLnVuaXQsXG4gICAgICB0aGlzLmxlbmd0aFZhbHVlLFxuICAgICAgdmFsdWUsXG4gICAgICB0aGlzLmhlaWdodFZhbHVlXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZGltZW5zaW9uc09mSGVpZ2h0KHZhbHVlOiBudW1iZXIpIHtcbiAgICByZXR1cm4gRGltZW5zaW9ucy5mcm9tKFxuICAgICAgdGhpcy51bml0LFxuICAgICAgdGhpcy5sZW5ndGhWYWx1ZSxcbiAgICAgIHRoaXMud2lkdGhWYWx1ZSxcbiAgICAgIHZhbHVlXG4gICAgKTtcbiAgfVxufVxuIiwiPGRpdiByb2xlPVwiZ3JvdXBcIiBjbGFzcz1cImxheW91dC1yb3cgcGxhY2Utc3RhcnQtYmFzZWxpbmUgZy1tZCBmdWxsXCJcbiAgICAgKm5nSWY9XCJjb250ZXh0JCB8IGFzeW5jIGFzIGNvbnRleHRcIj5cblxuICA8IS0tIGVsZGVyLWZvcm0tZmllbGQtc21hbGwgLS0+XG4gIDxlbGRlci1xdWFudGl0eS1pbnB1dCAqbmdJZj1cImNvbnRleHQubGVuZ3RoQWN0aXZlXCJcbiAgICBbcXVhbnRpdHlWYWx1ZV09XCJsZW5ndGhWYWx1ZVwiXG4gICAgKHF1YW50aXR5VmFsdWVDaGFuZ2UpPVwib25MZW5ndGhWYWx1ZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgW3VuaXRdPVwidW5pdFwiXG4gICAgW3BsYWNlaG9sZGVyXT1cIihwbGFjZWhvbGRlckxlbmd0aCA/IHBsYWNlaG9sZGVyTGVuZ3RoIDogJ2RpbWVuc2lvbnMubGVuZ3RoJykgfCB0cmFuc2xhdGVcIlxuICAgIFtkaXNwbGF5Rm9ybWF0XT1cImRpc3BsYXlGb3JtYXRcIlxuICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbaGlkZVVuaXRdPVwiIWNvbnRleHQuaXNMZW5ndGhMYXN0XCJcbiAgPlxuICA8L2VsZGVyLXF1YW50aXR5LWlucHV0PlxuXG4gIDxzcGFuIGNsYXNzPVwibm9zZWxlY3RcIiAqbmdJZj1cImNvbnRleHQubGVuZ3RoQWN0aXZlICYmIGNvbnRleHQud2lkdGhBY3RpdmVcIj4mdGltZXM7PC9zcGFuPlxuXG4gIDxlbGRlci1xdWFudGl0eS1pbnB1dCAqbmdJZj1cImNvbnRleHQud2lkdGhBY3RpdmVcIlxuICAgIFtxdWFudGl0eVZhbHVlXT1cIndpZHRoVmFsdWVcIlxuICAgIChxdWFudGl0eVZhbHVlQ2hhbmdlKT1cIm9uV2lkdGhWYWx1ZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgW3VuaXRdPVwidW5pdFwiXG4gICAgW2Rpc3BsYXlGb3JtYXRdPVwiZGlzcGxheUZvcm1hdFwiXG4gICAgW3BsYWNlaG9sZGVyXT1cIihwbGFjZWhvbGRlcldpZHRoID8gcGxhY2Vob2xkZXJXaWR0aCA6ICdkaW1lbnNpb25zLndpZHRoJykgfCB0cmFuc2xhdGVcIlxuICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbaGlkZVVuaXRdPVwiIWNvbnRleHQuaXNXaWR0aExhc3RcIlxuICA+XG4gIDwvZWxkZXItcXVhbnRpdHktaW5wdXQ+XG5cbiAgPHNwYW4gY2xhc3M9XCJub3NlbGVjdFwiICpuZ0lmPVwiY29udGV4dC53aWR0aEFjdGl2ZSAmJiBjb250ZXh0LmhlaWdodEFjdGl2ZVwiPiZ0aW1lczs8L3NwYW4+XG5cbiAgPGVsZGVyLXF1YW50aXR5LWlucHV0ICpuZ0lmPVwiY29udGV4dC5oZWlnaHRBY3RpdmVcIlxuICAgIFtxdWFudGl0eVZhbHVlXT1cImhlaWdodFZhbHVlXCJcbiAgICAocXVhbnRpdHlWYWx1ZUNoYW5nZSk9XCJvbkhlaWdodFZhbHVlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICBbdW5pdF09XCJ1bml0XCJcbiAgICBbZGlzcGxheUZvcm1hdF09XCJkaXNwbGF5Rm9ybWF0XCJcbiAgICBbcGxhY2Vob2xkZXJdPVwiKHBsYWNlaG9sZGVySGVpZ2h0ID8gcGxhY2Vob2xkZXJIZWlnaHQgOiAnZGltZW5zaW9ucy5oZWlnaHQnKSB8IHRyYW5zbGF0ZVwiXG4gICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICA+XG4gIDwvZWxkZXItcXVhbnRpdHktaW5wdXQ+XG5cbiAgPCEtLVxuW3JlcXVpcmVkSWdub3JlWmVyb109XCJyZXF1aXJlZElnbm9yZVplcm9cIlxuICAgICAgICAgICAgICAgICAgICAgIFtlbGRlck11bHRpcGxlT2ZdPVwibXVsdGlwbGVPZlwiIG5nTW9kZWxcbiAgICAgICAgICAgICAgICAgICAgICBbbWluXT1cIm1pblwiXG4gICAgICAgICAgICAgICAgICAgICAgW21heF09XCJtYXhcIlxuICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZExlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgLS0+XG48L2Rpdj5cblxuXG4iXX0=
@@ -0,0 +1,91 @@
1
+ import { Directive, Input } from '@angular/core';
2
+ import { NG_VALIDATORS } from '@angular/forms';
3
+ import { LoggerFactory } from '@elderbyte/ts-logger';
4
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
5
+ import * as i0 from "@angular/core";
6
+ export class ElderRequiredDimensionsValidator {
7
+ constructor() {
8
+ /***************************************************************************
9
+ * *
10
+ * Fields *
11
+ * *
12
+ **************************************************************************/
13
+ this.log = LoggerFactory.getLogger(this.constructor.name);
14
+ this._requiredIgnoreZero = false;
15
+ }
16
+ /***************************************************************************
17
+ * *
18
+ * Properties *
19
+ * *
20
+ **************************************************************************/
21
+ set requiredIgnoreZero(value) {
22
+ this._requiredIgnoreZero = coerceBooleanProperty(value);
23
+ }
24
+ get requiredIgnoreZero() {
25
+ return this._requiredIgnoreZero;
26
+ }
27
+ set required(value) {
28
+ this._required = coerceBooleanProperty(value);
29
+ }
30
+ get required() {
31
+ return this._required;
32
+ }
33
+ /***************************************************************************
34
+ * *
35
+ * Public API *
36
+ * *
37
+ **************************************************************************/
38
+ validate(c) {
39
+ let result = {};
40
+ if (this.required && !this.isDimensionsDefined(c.value)) {
41
+ result = Object.assign(result, { required: { valid: false } });
42
+ }
43
+ // this.log.info('"' + c.value + '" --> validate result: ' + JSON.stringify(result), c);
44
+ return result;
45
+ }
46
+ /***************************************************************************
47
+ * *
48
+ * Private Methods *
49
+ * *
50
+ **************************************************************************/
51
+ isDimensionsDefined(dimensions) {
52
+ if (dimensions?.unit != null) {
53
+ if (!this.isValueDefined(dimensions.length)) {
54
+ return false;
55
+ }
56
+ if (!this.isValueDefined(dimensions.width)) {
57
+ return false;
58
+ }
59
+ if (!this.isValueDefined(dimensions.height)) {
60
+ return false;
61
+ }
62
+ return true;
63
+ }
64
+ return false;
65
+ }
66
+ isValueDefined(value) {
67
+ if (value != null) {
68
+ return !(this._requiredIgnoreZero && value === 0);
69
+ }
70
+ return false;
71
+ }
72
+ }
73
+ ElderRequiredDimensionsValidator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ElderRequiredDimensionsValidator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
74
+ ElderRequiredDimensionsValidator.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: ElderRequiredDimensionsValidator, selector: "elder-dimensions-input[required][formControl],elder-dimensions-input[required][formControlName],elder-dimensions-input[required][ngModel]", inputs: { requiredIgnoreZero: "requiredIgnoreZero", required: "required" }, providers: [
75
+ { provide: NG_VALIDATORS, useExisting: ElderRequiredDimensionsValidator, multi: true }
76
+ ], ngImport: i0 });
77
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ElderRequiredDimensionsValidator, decorators: [{
78
+ type: Directive,
79
+ args: [{
80
+ // eslint-disable-next-line @angular-eslint/directive-selector
81
+ selector: 'elder-dimensions-input[required][formControl],elder-dimensions-input[required][formControlName],elder-dimensions-input[required][ngModel]',
82
+ providers: [
83
+ { provide: NG_VALIDATORS, useExisting: ElderRequiredDimensionsValidator, multi: true }
84
+ ]
85
+ }]
86
+ }], propDecorators: { requiredIgnoreZero: [{
87
+ type: Input
88
+ }], required: [{
89
+ type: Input
90
+ }] } });
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItcmVxdWlyZWQtZGltZW5zaW9ucy52YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL21lYXN1cmVzL2RpbWVuc2lvbnMvdmFsaWRhdGlvbi9lbGRlci1yZXF1aXJlZC1kaW1lbnNpb25zLnZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQWtCLGFBQWEsRUFBOEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFlLHFCQUFxQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7O0FBVzFFLE1BQU0sT0FBTyxnQ0FBZ0M7SUFQN0M7UUFTRTs7OztvRkFJNEU7UUFFM0QsUUFBRyxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUc5RCx3QkFBbUIsR0FBWSxLQUFLLENBQUM7S0F3RTlDO0lBdEVDOzs7O2dGQUk0RTtJQUU1RSxJQUNXLGtCQUFrQixDQUFDLEtBQW1CO1FBQy9DLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsSUFBVyxrQkFBa0I7UUFDM0IsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQ1csUUFBUSxDQUFDLEtBQW1CO1FBQ3JDLElBQUksQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVEOzs7O2dGQUk0RTtJQUVyRSxRQUFRLENBQUMsQ0FBa0I7UUFFaEMsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBRWhCLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDdkQsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUMsUUFBUSxFQUFFLEVBQUMsS0FBSyxFQUFFLEtBQUssRUFBQyxFQUFDLENBQUMsQ0FBQztTQUM1RDtRQUNELHdGQUF3RjtRQUN4RixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRXBFLG1CQUFtQixDQUFDLFVBQXNCO1FBQ2hELElBQUksVUFBVSxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUU7WUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUMzQyxPQUFPLEtBQUssQ0FBQzthQUNkO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUMxQyxPQUFPLEtBQUssQ0FBQzthQUNkO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUMzQyxPQUFPLEtBQUssQ0FBQzthQUNkO1lBQ0QsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVPLGNBQWMsQ0FBQyxLQUFhO1FBQ2xDLElBQUksS0FBSyxJQUFJLElBQUksRUFBRTtZQUNqQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQ25EO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzs2SEFqRlUsZ0NBQWdDO2lIQUFoQyxnQ0FBZ0MsZ1BBSmhDO1FBQ1QsRUFBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxnQ0FBZ0MsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDO0tBQ3JGOzJGQUVVLGdDQUFnQztrQkFQNUMsU0FBUzttQkFBQztvQkFDVCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSwySUFBMkk7b0JBQ3JKLFNBQVMsRUFBRTt3QkFDVCxFQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxrQ0FBa0MsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDO3FCQUNyRjtpQkFDRjs4QkFxQlksa0JBQWtCO3NCQUQ1QixLQUFLO2dCQVVLLFFBQVE7c0JBRGxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBYnN0cmFjdENvbnRyb2wsIE5HX1ZBTElEQVRPUlMsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvcn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtMb2dnZXJGYWN0b3J5fSBmcm9tICdAZWxkZXJieXRlL3RzLWxvZ2dlcic7XG5pbXBvcnQge0Jvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5fSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtRdWFudGl0eX0gZnJvbSAnLi4vLi4vbW9kZWwvcXVhbnRpdHknO1xuaW1wb3J0IHtEaW1lbnNpb25zfSBmcm9tICcuLi8uLi9tb2RlbC9kaW1lbnNpb25zJztcblxuQERpcmVjdGl2ZSh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnZWxkZXItZGltZW5zaW9ucy1pbnB1dFtyZXF1aXJlZF1bZm9ybUNvbnRyb2xdLGVsZGVyLWRpbWVuc2lvbnMtaW5wdXRbcmVxdWlyZWRdW2Zvcm1Db250cm9sTmFtZV0sZWxkZXItZGltZW5zaW9ucy1pbnB1dFtyZXF1aXJlZF1bbmdNb2RlbF0nLFxuICBwcm92aWRlcnM6IFtcbiAgICB7cHJvdmlkZTogTkdfVkFMSURBVE9SUywgdXNlRXhpc3Rpbmc6IEVsZGVyUmVxdWlyZWREaW1lbnNpb25zVmFsaWRhdG9yLCBtdWx0aTogdHJ1ZX1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBFbGRlclJlcXVpcmVkRGltZW5zaW9uc1ZhbGlkYXRvciBpbXBsZW1lbnRzIFZhbGlkYXRvciB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2cgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpO1xuXG4gIHByaXZhdGUgX3JlcXVpcmVkOiBib29sZWFuO1xuICBwcml2YXRlIF9yZXF1aXJlZElnbm9yZVplcm86IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHJlcXVpcmVkSWdub3JlWmVybyh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5fcmVxdWlyZWRJZ25vcmVaZXJvID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVxdWlyZWRJZ25vcmVaZXJvKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZElnbm9yZVplcm87XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHJlcXVpcmVkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICB0aGlzLl9yZXF1aXJlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZDtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyB2YWxpZGF0ZShjOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgYW55IHtcblxuICAgIGxldCByZXN1bHQgPSB7fTtcblxuICAgIGlmICh0aGlzLnJlcXVpcmVkICYmICF0aGlzLmlzRGltZW5zaW9uc0RlZmluZWQoYy52YWx1ZSkpIHtcbiAgICAgIHJlc3VsdCA9IE9iamVjdC5hc3NpZ24ocmVzdWx0LCB7cmVxdWlyZWQ6IHt2YWxpZDogZmFsc2V9fSk7XG4gICAgfVxuICAgIC8vIHRoaXMubG9nLmluZm8oJ1wiJyArIGMudmFsdWUgKyAnXCIgLS0+IHZhbGlkYXRlIHJlc3VsdDogJyArIEpTT04uc3RyaW5naWZ5KHJlc3VsdCksIGMpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBNZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIGlzRGltZW5zaW9uc0RlZmluZWQoZGltZW5zaW9uczogRGltZW5zaW9ucyk6IGJvb2xlYW4ge1xuICAgIGlmIChkaW1lbnNpb25zPy51bml0ICE9IG51bGwpIHtcbiAgICAgIGlmICghdGhpcy5pc1ZhbHVlRGVmaW5lZChkaW1lbnNpb25zLmxlbmd0aCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLmlzVmFsdWVEZWZpbmVkKGRpbWVuc2lvbnMud2lkdGgpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5pc1ZhbHVlRGVmaW5lZChkaW1lbnNpb25zLmhlaWdodCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgaXNWYWx1ZURlZmluZWQodmFsdWU6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gISh0aGlzLl9yZXF1aXJlZElnbm9yZVplcm8gJiYgdmFsdWUgPT09IDApO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxufVxuIl19
@@ -49,9 +49,9 @@ export class ElderUnitSelectDirective {
49
49
  this.select.filters = [];
50
50
  }
51
51
  }
52
- ElderUnitSelectDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: ElderUnitSelectDirective, deps: [{ token: i1.ElderSelectComponent }, { token: i2.ElderUnitService }], target: i0.ɵɵFactoryTarget.Directive });
53
- ElderUnitSelectDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.10", type: ElderUnitSelectDirective, selector: "[elderUnitSelect]", inputs: { unitDimension: "unitDimension", baseUnit: "baseUnit" }, ngImport: i0 });
54
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: ElderUnitSelectDirective, decorators: [{
52
+ ElderUnitSelectDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ElderUnitSelectDirective, deps: [{ token: i1.ElderSelectComponent }, { token: i2.ElderUnitService }], target: i0.ɵɵFactoryTarget.Directive });
53
+ ElderUnitSelectDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: ElderUnitSelectDirective, selector: "[elderUnitSelect]", inputs: { unitDimension: "unitDimension", baseUnit: "baseUnit" }, ngImport: i0 });
54
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ElderUnitSelectDirective, decorators: [{
55
55
  type: Directive,
56
56
  args: [{
57
57
  selector: '[elderUnitSelect]'
@@ -61,4 +61,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImpo
61
61
  }], baseUnit: [{
62
62
  type: Input
63
63
  }] } });
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItdW5pdC1zZWxlY3QuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9tZWFzdXJlcy9kaXJlY3RpdmVzL2VsZGVyLXVuaXQtc2VsZWN0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUcvQyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSw4REFBOEQsQ0FBQztBQUdqRyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDM0QsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQzs7OztBQUs3RCxNQUFNLE9BQU8sd0JBQXdCO0lBRW5DOzs7O2dGQUk0RTtJQUU1RSxZQUNVLE1BQTRCLEVBQzVCLFdBQTZCO1FBRDdCLFdBQU0sR0FBTixNQUFNLENBQXNCO1FBQzVCLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtRQUVyQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsR0FBRyxjQUFjLENBQUM7UUFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEdBQUcsWUFBWSxDQUFDO1FBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FDL0MsV0FBVyxDQUFDLGVBQWUsRUFBRSxFQUM3QixNQUFNLEVBQ04sUUFBUSxDQUFDLFFBQVEsRUFDakIsVUFBVSxDQUFDLFVBQVUsQ0FDdEIsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztnRkFJNEU7SUFFNUUsSUFDVyxhQUFhLENBQUMsYUFBNEI7UUFDbkQsSUFBSSxhQUFhLEVBQUU7WUFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQztTQUNoRTthQUFNO1lBQ0wsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQztJQUVELElBQ1csUUFBUSxDQUFDLFFBQWM7UUFDaEMsSUFBSSxRQUFRLEVBQUU7WUFDWixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDbEU7YUFBTTtZQUNMLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUNyQjtJQUNILENBQUM7SUFFRDs7OztnRkFJNEU7SUFFcEUsWUFBWTtRQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7c0hBdERVLHdCQUF3QjswR0FBeEIsd0JBQXdCOzRGQUF4Qix3QkFBd0I7a0JBSHBDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtpQkFDOUI7MElBOEJZLGFBQWE7c0JBRHZCLEtBQUs7Z0JBVUssUUFBUTtzQkFEbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0VsZGVyU2VsZWN0Q29tcG9uZW50fSBmcm9tICcuLi8uLi9zZWxlY3Qvc2luZ2xlL2VsZGVyLXNlbGVjdC9lbGRlci1zZWxlY3QuY29tcG9uZW50JztcbmltcG9ydCB7RWxkZXJVbml0U2VydmljZX0gZnJvbSAnLi4vZWxkZXItdW5pdC5zZXJ2aWNlJztcbmltcG9ydCB7TG9jYWxMaXN0RGF0YVNvdXJjZX0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2RhdGEvZGF0YXNvdXJjZS9sb2NhbC9sb2NhbC1saXN0LWRhdGEtc291cmNlJztcbmltcG9ydCB7VW5pdH0gZnJvbSAnLi4vbW9kZWwvdW5pdCc7XG5pbXBvcnQge1VuaXREaW1lbnNpb259IGZyb20gJy4uL21vZGVsL3VuaXQtZGltZW5zaW9uJztcbmltcG9ydCB7RmlsdGVyfSBmcm9tICcuLi8uLi8uLi9jb21tb24vZGF0YS9maWx0ZXJzL2ZpbHRlcic7XG5pbXBvcnQge1NvcnRVdGlsfSBmcm9tICcuLi8uLi8uLi9jb21tb24vdXRpbHMvc29ydC11dGlsJztcbmltcG9ydCB7RmlsdGVyVXRpbH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3V0aWxzL2ZpbHRlci11dGlsJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2VsZGVyVW5pdFNlbGVjdF0nXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyVW5pdFNlbGVjdERpcmVjdGl2ZSB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZWxlY3Q6IEVsZGVyU2VsZWN0Q29tcG9uZW50LFxuICAgIHByaXZhdGUgdW5pdFNlcnZpY2U6IEVsZGVyVW5pdFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5zZWxlY3QucGxhY2Vob2xkZXIgPSAnY29udGV4dC51bml0JztcbiAgICB0aGlzLnNlbGVjdC5kaXNwbGF5UHJvcGVydHkgPSAndW5pdFN5bWJvbCc7XG4gICAgdGhpcy5zZWxlY3QuZGF0YVNvdXJjZSA9IExvY2FsTGlzdERhdGFTb3VyY2UuZnJvbShcbiAgICAgIHVuaXRTZXJ2aWNlLmdldEFsbFVuaXRJbmZvcygpLFxuICAgICAgJ3VuaXQnLFxuICAgICAgU29ydFV0aWwuc29ydERhdGEsXG4gICAgICBGaWx0ZXJVdGlsLmZpbHRlckRhdGFcbiAgICApO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB1bml0RGltZW5zaW9uKHVuaXREaW1lbnNpb246IFVuaXREaW1lbnNpb24pIHtcbiAgICBpZiAodW5pdERpbWVuc2lvbikge1xuICAgICAgdGhpcy5zZWxlY3QuZmlsdGVycyA9IFtuZXcgRmlsdGVyKCdkaW1lbnNpb24nLCB1bml0RGltZW5zaW9uKV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVzZXRGaWx0ZXJzKCk7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBiYXNlVW5pdChiYXNlVW5pdDogVW5pdCkge1xuICAgIGlmIChiYXNlVW5pdCkge1xuICAgICAgdGhpcy51bml0RGltZW5zaW9uID0gdGhpcy51bml0U2VydmljZS5nZXRVbml0RGltZW5zaW9uKGJhc2VVbml0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZXNldEZpbHRlcnMoKTtcbiAgICB9XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBtZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlc2V0RmlsdGVycygpIHtcbiAgICB0aGlzLnNlbGVjdC5maWx0ZXJzID0gW107XG4gIH1cblxufVxuIl19
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItdW5pdC1zZWxlY3QuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9tZWFzdXJlcy9kaXJlY3RpdmVzL2VsZGVyLXVuaXQtc2VsZWN0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUcvQyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSw4REFBOEQsQ0FBQztBQUdqRyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDM0QsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQzs7OztBQUs3RCxNQUFNLE9BQU8sd0JBQXdCO0lBRW5DOzs7O2dGQUk0RTtJQUU1RSxZQUNVLE1BQTRCLEVBQzVCLFdBQTZCO1FBRDdCLFdBQU0sR0FBTixNQUFNLENBQXNCO1FBQzVCLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtRQUVyQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsR0FBRyxjQUFjLENBQUM7UUFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEdBQUcsWUFBWSxDQUFDO1FBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FDL0MsV0FBVyxDQUFDLGVBQWUsRUFBRSxFQUM3QixNQUFNLEVBQ04sUUFBUSxDQUFDLFFBQVEsRUFDakIsVUFBVSxDQUFDLFVBQVUsQ0FDdEIsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztnRkFJNEU7SUFFNUUsSUFDVyxhQUFhLENBQUMsYUFBNEI7UUFDbkQsSUFBSSxhQUFhLEVBQUU7WUFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQztTQUNoRTthQUFNO1lBQ0wsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQztJQUVELElBQ1csUUFBUSxDQUFDLFFBQWM7UUFDaEMsSUFBSSxRQUFRLEVBQUU7WUFDWixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDbEU7YUFBTTtZQUNMLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUNyQjtJQUNILENBQUM7SUFFRDs7OztnRkFJNEU7SUFFcEUsWUFBWTtRQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7cUhBdERVLHdCQUF3Qjt5R0FBeEIsd0JBQXdCOzJGQUF4Qix3QkFBd0I7a0JBSHBDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtpQkFDOUI7MElBOEJZLGFBQWE7c0JBRHZCLEtBQUs7Z0JBVUssUUFBUTtzQkFEbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0VsZGVyU2VsZWN0Q29tcG9uZW50fSBmcm9tICcuLi8uLi9zZWxlY3Qvc2luZ2xlL2VsZGVyLXNlbGVjdC9lbGRlci1zZWxlY3QuY29tcG9uZW50JztcbmltcG9ydCB7RWxkZXJVbml0U2VydmljZX0gZnJvbSAnLi4vZWxkZXItdW5pdC5zZXJ2aWNlJztcbmltcG9ydCB7TG9jYWxMaXN0RGF0YVNvdXJjZX0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2RhdGEvZGF0YXNvdXJjZS9sb2NhbC9sb2NhbC1saXN0LWRhdGEtc291cmNlJztcbmltcG9ydCB7VW5pdH0gZnJvbSAnLi4vbW9kZWwvdW5pdCc7XG5pbXBvcnQge1VuaXREaW1lbnNpb259IGZyb20gJy4uL21vZGVsL3VuaXQtZGltZW5zaW9uJztcbmltcG9ydCB7RmlsdGVyfSBmcm9tICcuLi8uLi8uLi9jb21tb24vZGF0YS9maWx0ZXJzL2ZpbHRlcic7XG5pbXBvcnQge1NvcnRVdGlsfSBmcm9tICcuLi8uLi8uLi9jb21tb24vdXRpbHMvc29ydC11dGlsJztcbmltcG9ydCB7RmlsdGVyVXRpbH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3V0aWxzL2ZpbHRlci11dGlsJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2VsZGVyVW5pdFNlbGVjdF0nXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyVW5pdFNlbGVjdERpcmVjdGl2ZSB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZWxlY3Q6IEVsZGVyU2VsZWN0Q29tcG9uZW50LFxuICAgIHByaXZhdGUgdW5pdFNlcnZpY2U6IEVsZGVyVW5pdFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5zZWxlY3QucGxhY2Vob2xkZXIgPSAnY29udGV4dC51bml0JztcbiAgICB0aGlzLnNlbGVjdC5kaXNwbGF5UHJvcGVydHkgPSAndW5pdFN5bWJvbCc7XG4gICAgdGhpcy5zZWxlY3QuZGF0YVNvdXJjZSA9IExvY2FsTGlzdERhdGFTb3VyY2UuZnJvbShcbiAgICAgIHVuaXRTZXJ2aWNlLmdldEFsbFVuaXRJbmZvcygpLFxuICAgICAgJ3VuaXQnLFxuICAgICAgU29ydFV0aWwuc29ydERhdGEsXG4gICAgICBGaWx0ZXJVdGlsLmZpbHRlckRhdGFcbiAgICApO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB1bml0RGltZW5zaW9uKHVuaXREaW1lbnNpb246IFVuaXREaW1lbnNpb24pIHtcbiAgICBpZiAodW5pdERpbWVuc2lvbikge1xuICAgICAgdGhpcy5zZWxlY3QuZmlsdGVycyA9IFtuZXcgRmlsdGVyKCdkaW1lbnNpb24nLCB1bml0RGltZW5zaW9uKV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVzZXRGaWx0ZXJzKCk7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBiYXNlVW5pdChiYXNlVW5pdDogVW5pdCkge1xuICAgIGlmIChiYXNlVW5pdCkge1xuICAgICAgdGhpcy51bml0RGltZW5zaW9uID0gdGhpcy51bml0U2VydmljZS5nZXRVbml0RGltZW5zaW9uKGJhc2VVbml0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZXNldEZpbHRlcnMoKTtcbiAgICB9XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBtZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlc2V0RmlsdGVycygpIHtcbiAgICB0aGlzLnNlbGVjdC5maWx0ZXJzID0gW107XG4gIH1cblxufVxuIl19