@coolon/angular-ui-powerups 16.1.0-aplpha.18 → 16.1.0-aplpha.180

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 (251) hide show
  1. package/assets/activities/activities.scss +5 -3
  2. package/assets/activities/input-activities.scss +14 -6
  3. package/assets/draw.scss +20 -0
  4. package/assets/form.scss +74 -27
  5. package/assets/icons.scss +1 -0
  6. package/assets/layout.scss +3 -0
  7. package/assets/styles.scss +2 -0
  8. package/assets/table.scss +41 -19
  9. package/assets/tabs.scss +15 -5
  10. package/esm2022/lib/animations/slide-animations.mjs +15 -10
  11. package/esm2022/lib/components/cards/abstract-card-container.component.mjs +28 -5
  12. package/esm2022/lib/components/cards/card-container/card-container.component.mjs +4 -4
  13. package/esm2022/lib/components/commands/button-renderer/button-renderer.component.mjs +115 -0
  14. package/esm2022/lib/components/commands/command/command.component.mjs +34 -29
  15. package/esm2022/lib/components/commands/command-face/command-face.component.mjs +11 -3
  16. package/esm2022/lib/components/commands/command-face.mjs +12 -11
  17. package/esm2022/lib/components/commands/group/popup-aware.component.mjs +31 -8
  18. package/esm2022/lib/components/commands/group/popup-menu/abstract-popup-menu.component.mjs +25 -23
  19. package/esm2022/lib/components/commands/group/popup-menu/more-menu.component.mjs +11 -20
  20. package/esm2022/lib/components/commands/group/popup-menu/popup-menu-renderer/popup-menu-renderer.component.mjs +12 -7
  21. package/esm2022/lib/components/commands/group/popup-menu/popup-menu.component.mjs +11 -20
  22. package/esm2022/lib/components/commands/group/tool-bar/tool-bar.component.mjs +8 -6
  23. package/esm2022/lib/components/commands/separator.component.mjs +6 -12
  24. package/esm2022/lib/components/components.module.mjs +55 -30
  25. package/esm2022/lib/components/disposable-component.mjs +32 -7
  26. package/esm2022/lib/components/exports.mjs +14 -5
  27. package/esm2022/lib/components/file/file-download/file-download.component.mjs +78 -0
  28. package/esm2022/lib/components/forms/abstract-input.component.mjs +55 -12
  29. package/esm2022/lib/components/forms/autocomplete-input/autocomplete-input.component.mjs +4 -4
  30. package/esm2022/lib/components/forms/checkbox-input/checkbox-input.component.mjs +8 -6
  31. package/esm2022/lib/components/forms/form-field.mjs +2 -0
  32. package/esm2022/lib/components/forms/multiple-select-input/multiple-select-input.component.mjs +4 -4
  33. package/esm2022/lib/components/forms/number-input/number-input.component.mjs +85 -9
  34. package/esm2022/lib/components/forms/password-input/password-input.component.mjs +40 -3
  35. package/esm2022/lib/components/forms/search-input/search-input.component.mjs +33 -0
  36. package/esm2022/lib/components/forms/select-input/select-input.component.mjs +11 -10
  37. package/esm2022/lib/components/forms/string-input/string-input.component.mjs +30 -11
  38. package/esm2022/lib/components/forms/text-input/text-input.component.mjs +8 -4
  39. package/esm2022/lib/components/icon/icon.component.mjs +7 -4
  40. package/esm2022/lib/components/loadable-component.mjs +21 -10
  41. package/esm2022/lib/components/resize-aware.component.mjs +61 -24
  42. package/esm2022/lib/components/switch-case/switch-case.component.mjs +5 -7
  43. package/esm2022/lib/components/tables/abstract-table-model.mjs +112 -63
  44. package/esm2022/lib/components/tables/abstract-table.component.mjs +19 -5
  45. package/esm2022/lib/components/tables/column/column-manager.mjs +81 -0
  46. package/esm2022/lib/components/tables/column/column-model.mjs +16 -6
  47. package/esm2022/lib/components/tables/column/column-order-manager.mjs +19 -0
  48. package/esm2022/lib/components/tables/column/custom-template-column-model.mjs +3 -3
  49. package/esm2022/lib/components/tables/column/custom-value-column-model.mjs +3 -3
  50. package/esm2022/lib/components/tables/column/editor-controls-column-model.mjs +3 -3
  51. package/esm2022/lib/components/tables/column/list-propery-column-model.mjs +3 -3
  52. package/esm2022/lib/components/tables/column/property-column-model.mjs +3 -3
  53. package/esm2022/lib/components/tables/column/selection-column-model.mjs +35 -13
  54. package/esm2022/lib/components/tables/editor/edit-row-controls/edit-row-controls.component.mjs +2 -2
  55. package/esm2022/lib/components/tables/editor/edit-session.mjs +1 -1
  56. package/esm2022/lib/components/tables/filter/table-filter-model.mjs +4 -2
  57. package/esm2022/lib/components/tables/filter/text-search-predicate.mjs +16 -2
  58. package/esm2022/lib/components/tables/footer/footer-row-model.mjs +38 -0
  59. package/esm2022/lib/components/tables/paginator/paginator.component.mjs +1 -1
  60. package/esm2022/lib/components/tables/renderer/abstract-cell-renderer.mjs +7 -0
  61. package/esm2022/lib/components/tables/renderer/cell-portal-ref.mjs +23 -5
  62. package/esm2022/lib/components/tables/renderer/default-cell-renderer/default-cell-renderer.component.mjs +3 -3
  63. package/esm2022/lib/components/tables/renderer/select-header-cell/selection-header-cell.component.mjs +7 -4
  64. package/esm2022/lib/components/tables/renderer/table-action-column/menu-builder.mjs +2 -0
  65. package/esm2022/lib/components/tables/renderer/table-action-column/table-action-column.component.mjs +153 -0
  66. package/esm2022/lib/components/tables/renderer/table-body/table-body.component.mjs +150 -40
  67. package/esm2022/lib/components/tables/renderer/table-cell/table-cell.component.mjs +6 -6
  68. package/esm2022/lib/components/tables/renderer/table-custom-more-menu/table-custom-more-menu-popup.component.mjs +45 -0
  69. package/esm2022/lib/components/tables/renderer/table-custom-more-menu/table-custom-more-menu.component.mjs +71 -0
  70. package/esm2022/lib/components/tables/renderer/table-footer-row/table-footer-row.component.mjs +30 -0
  71. package/esm2022/lib/components/tables/table/table-model.mjs +12 -3
  72. package/esm2022/lib/components/tables/table/table.component.mjs +39 -61
  73. package/esm2022/lib/components/tables/tree-table/decorated-tree-node.mjs +5 -4
  74. package/esm2022/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.mjs +1 -1
  75. package/esm2022/lib/components/tables/tree-table/tree-label-column-model.mjs +3 -3
  76. package/esm2022/lib/components/tables/tree-table/tree-table-component.mjs +12 -5
  77. package/esm2022/lib/components/tables/tree-table/tree-table-model.mjs +4 -7
  78. package/esm2022/lib/components/text/markdown/markdown.component.mjs +2 -2
  79. package/esm2022/lib/directives/command.directive.mjs +18 -7
  80. package/esm2022/lib/directives/directives.module.mjs +1 -1
  81. package/esm2022/lib/directives/exports.mjs +2 -1
  82. package/esm2022/lib/directives/highlight.pipe.mjs +9 -8
  83. package/esm2022/lib/directives/resize-observer.directive.mjs +40 -0
  84. package/esm2022/lib/interaction/abstract-interaction-context.mjs +6 -7
  85. package/esm2022/lib/interaction/activity-context.mjs +4 -0
  86. package/esm2022/lib/interaction/activity.mjs +20 -21
  87. package/esm2022/lib/interaction/alert.mjs +2 -2
  88. package/esm2022/lib/interaction/components/abstract-confirm-dialog.component.mjs +11 -8
  89. package/esm2022/lib/interaction/components/abstract-dialog.component.mjs +1 -41
  90. package/esm2022/lib/interaction/components/activity-actions/activity-actions.component.mjs +28 -16
  91. package/esm2022/lib/interaction/components/activity-body/activity-body.component.mjs +8 -2
  92. package/esm2022/lib/interaction/components/activity-container/activity-container.component.mjs +46 -15
  93. package/esm2022/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.mjs +53 -15
  94. package/esm2022/lib/interaction/components/activity-title/activity-title.component.mjs +4 -4
  95. package/esm2022/lib/interaction/components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.mjs +1 -1
  96. package/esm2022/lib/interaction/components/add-card-activity/add-card-activity.component.mjs +1 -1
  97. package/esm2022/lib/interaction/components/add-item-interaction-context/add-item-interaction-context.component.mjs +1 -1
  98. package/esm2022/lib/interaction/components/alert-dialog/alert-dialog.component.mjs +10 -10
  99. package/esm2022/lib/interaction/components/alert-renderer/alert-renderer.component.mjs +55 -0
  100. package/esm2022/lib/interaction/components/confirm-renderer/confirm-renderer.component.mjs +54 -0
  101. package/esm2022/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.mjs +4 -8
  102. package/esm2022/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.mjs +4 -8
  103. package/esm2022/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.mjs +7 -9
  104. package/esm2022/lib/interaction/components/editors/edit-context.mjs +1 -1
  105. package/esm2022/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.mjs +4 -4
  106. package/esm2022/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.mjs +21 -5
  107. package/esm2022/lib/interaction/components/input-activities/input-activity.mjs +2 -2
  108. package/esm2022/lib/interaction/components/input-activities/select-input-activity.mjs +4 -2
  109. package/esm2022/lib/interaction/components/input-activities/string-input-activity.mjs +8 -4
  110. package/esm2022/lib/interaction/components/slide-down-interaction-context/slide-down-interaction-context.component.mjs +134 -0
  111. package/esm2022/lib/interaction/confirm.mjs +26 -2
  112. package/esm2022/lib/interaction/directives/interaction-context-trigger-for.directive.mjs +2 -2
  113. package/esm2022/lib/interaction/exports.mjs +6 -1
  114. package/esm2022/lib/interaction/interaction-context-provider.mjs +17 -0
  115. package/esm2022/lib/interaction/interaction-context.mjs +3 -2
  116. package/esm2022/lib/interaction/interaction.module.mjs +22 -14
  117. package/esm2022/lib/interaction/services/interaction-service-routing-adapter.mjs +4 -4
  118. package/esm2022/lib/interaction/services/interaction.service.mjs +18 -6
  119. package/esm2022/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context-factory.mjs +2 -2
  120. package/esm2022/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context.mjs +23 -4
  121. package/esm2022/lib/place/components/list-place-nav/list-place-nav.component.mjs +4 -5
  122. package/esm2022/lib/place/components/place-outlet/place-outlet.component.mjs +7 -9
  123. package/esm2022/lib/place/components/side-place-navigation/side-place-navigation.component.mjs +2 -2
  124. package/esm2022/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.mjs +1 -1
  125. package/esm2022/lib/place/guards/consolidated-param-map.mjs +4 -4
  126. package/esm2022/lib/place/guards/place.guard.mjs +6 -5
  127. package/esm2022/lib/place/navigation/place-component-deactivation-handler.mjs +2 -2
  128. package/esm2022/lib/place/navigation/session/interactions/synchronise-interaction-context-ids-with-route.mjs +3 -6
  129. package/esm2022/lib/place/navigation/session/navigation-session.mjs +2 -2
  130. package/esm2022/lib/place/place-auth-service.mjs +7 -6
  131. package/esm2022/lib/place/place-component.mjs +29 -19
  132. package/esm2022/lib/place/place-definition.mjs +15 -4
  133. package/esm2022/lib/place/place-history.mjs +2 -2
  134. package/esm2022/lib/place/place-router.mjs +27 -23
  135. package/esm2022/lib/place/place.decorator.mjs +2 -2
  136. package/esm2022/lib/place/place.module.mjs +1 -5
  137. package/esm2022/lib/place/route/formatter.mjs +2 -2
  138. package/esm2022/lib/place/route/parameter-decorators.mjs +54 -50
  139. package/esm2022/lib/place/route/parameter-definition.mjs +2 -2
  140. package/esm2022/lib/place/url-snapshot.mjs +3 -3
  141. package/esm2022/lib/place/visit-segment.mjs +2 -2
  142. package/esm2022/lib/place/visit.mjs +2 -2
  143. package/esm2022/lib/services/exports.mjs +2 -1
  144. package/esm2022/lib/services/loading-monitor.mjs +83 -0
  145. package/fesm2022/coolon-angular-ui-powerups.mjs +2543 -1086
  146. package/fesm2022/coolon-angular-ui-powerups.mjs.map +1 -1
  147. package/lib/animations/slide-animations.d.ts +1 -0
  148. package/lib/components/cards/abstract-card-container.component.d.ts +6 -3
  149. package/lib/components/cards/card-container/card-container.component.d.ts +1 -1
  150. package/lib/components/commands/button-renderer/button-renderer.component.d.ts +30 -0
  151. package/lib/components/commands/command/command.component.d.ts +8 -8
  152. package/lib/components/commands/command-face/command-face.component.d.ts +2 -0
  153. package/lib/components/commands/command-face.d.ts +8 -9
  154. package/lib/components/commands/group/popup-aware.component.d.ts +9 -4
  155. package/lib/components/commands/group/popup-menu/abstract-popup-menu.component.d.ts +4 -4
  156. package/lib/components/commands/group/popup-menu/more-menu.component.d.ts +2 -4
  157. package/lib/components/commands/group/popup-menu/popup-menu-renderer/popup-menu-renderer.component.d.ts +2 -0
  158. package/lib/components/commands/group/popup-menu/popup-menu.component.d.ts +2 -4
  159. package/lib/components/commands/group/tool-bar/tool-bar.component.d.ts +1 -1
  160. package/lib/components/commands/separator.component.d.ts +2 -4
  161. package/lib/components/components.module.d.ts +60 -55
  162. package/lib/components/disposable-component.d.ts +16 -3
  163. package/lib/components/exports.d.ts +13 -4
  164. package/lib/components/file/file-download/file-download.component.d.ts +43 -0
  165. package/lib/components/forms/abstract-input.component.d.ts +13 -5
  166. package/lib/components/forms/checkbox-input/checkbox-input.component.d.ts +2 -0
  167. package/lib/components/forms/form-field.d.ts +5 -0
  168. package/lib/components/forms/number-input/number-input.component.d.ts +16 -4
  169. package/lib/components/forms/password-input/password-input.component.d.ts +7 -1
  170. package/lib/components/forms/search-input/search-input.component.d.ts +10 -0
  171. package/lib/components/forms/select-input/select-input.component.d.ts +4 -3
  172. package/lib/components/forms/string-input/string-input.component.d.ts +7 -1
  173. package/lib/components/forms/text-input/text-input.component.d.ts +3 -0
  174. package/lib/components/loadable-component.d.ts +10 -5
  175. package/lib/components/resize-aware.component.d.ts +24 -5
  176. package/lib/components/switch-case/switch-case.component.d.ts +2 -3
  177. package/lib/components/tables/abstract-table-model.d.ts +50 -25
  178. package/lib/components/tables/abstract-table.component.d.ts +4 -3
  179. package/lib/components/tables/column/column-manager.d.ts +19 -0
  180. package/lib/components/tables/column/column-model.d.ts +7 -3
  181. package/lib/components/tables/column/column-order-manager.d.ts +20 -0
  182. package/lib/components/tables/column/custom-template-column-model.d.ts +3 -2
  183. package/lib/components/tables/column/custom-value-column-model.d.ts +3 -2
  184. package/lib/components/tables/column/editor-controls-column-model.d.ts +3 -2
  185. package/lib/components/tables/column/list-propery-column-model.d.ts +3 -2
  186. package/lib/components/tables/column/property-column-model.d.ts +3 -2
  187. package/lib/components/tables/column/selection-column-model.d.ts +10 -4
  188. package/lib/components/tables/editor/edit-row-controls/edit-row-controls.component.d.ts +1 -1
  189. package/lib/components/tables/editor/edit-session.d.ts +1 -1
  190. package/lib/components/tables/filter/text-search-predicate.d.ts +9 -0
  191. package/lib/components/tables/footer/footer-row-model.d.ts +22 -0
  192. package/lib/components/tables/renderer/abstract-cell-renderer.d.ts +6 -0
  193. package/lib/components/tables/renderer/cell-portal-ref.d.ts +20 -12
  194. package/lib/components/tables/renderer/select-header-cell/selection-header-cell.component.d.ts +1 -1
  195. package/lib/components/tables/renderer/table-action-column/menu-builder.d.ts +7 -0
  196. package/lib/components/tables/renderer/table-action-column/table-action-column.component.d.ts +42 -0
  197. package/lib/components/tables/renderer/table-body/table-body.component.d.ts +40 -16
  198. package/lib/components/tables/renderer/table-cell/table-cell.component.d.ts +2 -3
  199. package/lib/components/tables/renderer/table-custom-more-menu/table-custom-more-menu-popup.component.d.ts +19 -0
  200. package/lib/components/tables/renderer/{table-more-menu/table-more-menu.component.d.ts → table-custom-more-menu/table-custom-more-menu.component.d.ts} +8 -7
  201. package/lib/components/tables/renderer/table-footer-row/table-footer-row.component.d.ts +11 -0
  202. package/lib/components/tables/table/table-model.d.ts +4 -4
  203. package/lib/components/tables/table/table.component.d.ts +14 -10
  204. package/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.d.ts +1 -1
  205. package/lib/components/tables/tree-table/tree-label-column-model.d.ts +3 -2
  206. package/lib/components/tables/tree-table/tree-table-component.d.ts +3 -0
  207. package/lib/components/tables/tree-table/tree-table-model.d.ts +4 -5
  208. package/lib/directives/command.directive.d.ts +6 -4
  209. package/lib/directives/exports.d.ts +1 -0
  210. package/lib/directives/resize-observer.directive.d.ts +16 -0
  211. package/lib/interaction/abstract-interaction-context.d.ts +1 -1
  212. package/lib/interaction/activity-context.d.ts +9 -0
  213. package/lib/interaction/activity.d.ts +7 -7
  214. package/lib/interaction/components/abstract-confirm-dialog.component.d.ts +2 -1
  215. package/lib/interaction/components/abstract-dialog.component.d.ts +5 -14
  216. package/lib/interaction/components/activity-actions/activity-actions.component.d.ts +12 -9
  217. package/lib/interaction/components/activity-body/activity-body.component.d.ts +2 -1
  218. package/lib/interaction/components/activity-container/activity-container.component.d.ts +10 -4
  219. package/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.d.ts +3 -3
  220. package/lib/interaction/components/activity-title/activity-title.component.d.ts +1 -1
  221. package/lib/interaction/components/alert-dialog/alert-dialog.component.d.ts +6 -1
  222. package/lib/interaction/components/alert-renderer/alert-renderer.component.d.ts +17 -0
  223. package/lib/interaction/components/confirm-renderer/confirm-renderer.component.d.ts +15 -0
  224. package/lib/interaction/components/editors/edit-context.d.ts +1 -1
  225. package/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.d.ts +5 -3
  226. package/lib/interaction/components/slide-down-interaction-context/slide-down-interaction-context.component.d.ts +53 -0
  227. package/lib/interaction/confirm.d.ts +4 -0
  228. package/lib/interaction/exports.d.ts +5 -0
  229. package/lib/interaction/interaction-context-provider.d.ts +11 -0
  230. package/lib/interaction/interaction-context.d.ts +7 -1
  231. package/lib/interaction/interaction.module.d.ts +35 -33
  232. package/lib/interaction/services/interaction-service-routing-adapter.d.ts +2 -2
  233. package/lib/interaction/services/interaction.service.d.ts +2 -1
  234. package/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context-factory.d.ts +1 -1
  235. package/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context.d.ts +3 -1
  236. package/lib/place/components/place-outlet/place-outlet.component.d.ts +3 -4
  237. package/lib/place/place-auth-service.d.ts +4 -4
  238. package/lib/place/place-component.d.ts +7 -5
  239. package/lib/place/place-definition.d.ts +2 -0
  240. package/lib/place/place-router.d.ts +6 -2
  241. package/lib/place/place.module.d.ts +4 -5
  242. package/lib/services/exports.d.ts +1 -0
  243. package/lib/services/loading-monitor.d.ts +29 -0
  244. package/package.json +6 -4
  245. package/esm2022/lib/components/tables/column/column-list-model.mjs +0 -44
  246. package/esm2022/lib/components/tables/renderer/table-more-menu/table-more-menu-popup/table-more-menu-popup.component.mjs +0 -33
  247. package/esm2022/lib/components/tables/renderer/table-more-menu/table-more-menu.component.mjs +0 -60
  248. package/esm2022/lib/components/tables/table-row-menu/table-row-menu.component.mjs +0 -84
  249. package/lib/components/tables/column/column-list-model.d.ts +0 -13
  250. package/lib/components/tables/renderer/table-more-menu/table-more-menu-popup/table-more-menu-popup.component.d.ts +0 -15
  251. package/lib/components/tables/table-row-menu/table-row-menu.component.d.ts +0 -28
@@ -1,7 +1,7 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
2
  import { Component, ContentChild, Input, TemplateRef } from '@angular/core';
3
3
  import { Binding, Dsl, ListModel, MutableValueModel, Proxify, proxify, StoreInListModel } from '@coolon/pectin';
4
- import { isNil } from "lodash";
4
+ import { isNil } from "lodash-es";
5
5
  import { AbstractValueInputComponent } from '../abstract-value-input.component';
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "@angular/common";
@@ -12,9 +12,10 @@ import * as i5 from "@angular/material/core";
12
12
  import * as i6 from "../../../directives/focus-binding.directive";
13
13
  /**
14
14
  * Using templates:
15
- * <aup-select-input [valueModel]="myModel" [options]="myOptions">
15
+ * <aup-select-input [value$]="myModel" [options]="myOptions">
16
16
  * <ng-template #optionTemplate let-option>{{option.thePropertyYouWant}}</ng-template>
17
- * <ng-template #nilOptionTemplate let-option>{{option.thePropertyYouWant}}</ng-template>
17
+ * <ng-template #selectedOptionTemplate let-option>{{option.thePropertyYouWant}} note, not used for nils (the placeholder is used)</ng-template>
18
+ * <ng-template #nilOptionTemplate>Uses the placeholder by default but you can customise it</ng-template>
18
19
  * </aup-select_input>
19
20
  */
20
21
  export class SelectInputComponent extends AbstractValueInputComponent {
@@ -39,7 +40,7 @@ export class SelectInputComponent extends AbstractValueInputComponent {
39
40
  super();
40
41
  const { chain } = Dsl.disposeWith(this);
41
42
  this.cookedOptions$ = chain(this.options$)
42
- .reduceToList(options => {
43
+ .mapAll(options => {
43
44
  return options.length < 1 && !isNil(this.componentValue$.value) ? [this.componentValue$.value] : options;
44
45
  }, {
45
46
  dependsOn: this.componentValue$
@@ -78,21 +79,21 @@ export class SelectInputComponent extends AbstractValueInputComponent {
78
79
  id: this.delegatedIdentityOf(value)
79
80
  });
80
81
  let lastIdSnapshot = snapshotValueAndId(this.componentValue$.value);
81
- console.log(lastIdSnapshot);
82
+ // console.log(lastIdSnapshot)
82
83
  before(this.options$).changes(() => {
83
84
  lastIdSnapshot = snapshotValueAndId(this.componentValue$.value);
84
- console.log(lastIdSnapshot);
85
+ // console.log(lastIdSnapshot)
85
86
  });
86
87
  when(this.options$).changes((is, was) => {
87
88
  const newIdSnapshot = snapshotValueAndId(lastIdSnapshot.value);
88
- console.log(lastIdSnapshot, newIdSnapshot);
89
+ // console.log(lastIdSnapshot, newIdSnapshot)
89
90
  if (newIdSnapshot !== lastIdSnapshot.id) {
90
91
  this.id$.value = this.delegatedIdentityOf(this.componentValue$.value);
91
92
  }
92
93
  });
93
94
  }
94
95
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SelectInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
95
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: SelectInputComponent, selector: "aup-select-input", inputs: { options$: "options$", options: "options", optionLabel: "optionLabel", allowNil: "allowNil", optionLabelFormat: "optionLabelFormat" }, queries: [{ propertyName: "selectedOptionTemplateRef", first: true, predicate: ["selectedOptionTemplate"], descendants: true }, { propertyName: "optionTemplateRef", first: true, predicate: ["optionTemplate"], descendants: true }, { propertyName: "nilOptionTemplateRef", first: true, predicate: ["nilOptionTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <mat-select placeholder=\"{{placeholder}}\"\n [ngModel]=\"componentValue$.value\"\n (ngModelChange)=\"select($event)\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n\n <!--\n TODO: dave has a scenario where the selected item isn't rendering that I can't reproduce so we explicity render it..\n It typically happens because the ngModel value isn't the one contained in the list - this means our source model\n identifyOf function has changed and our id$/lookup$/componentValue$ are out of sync.\n We get around this for now by explicity rendering the component value.\n Please Note: I haven't been able to reproduce this\n -->\n <mat-select-trigger *ngIf=\"!selectedOptionTemplateRef\">\n {{optionLabelFormat(componentValue$.value)}}\n </mat-select-trigger>\n\n <mat-select-trigger *ngIf=\"selectedOptionTemplateRef\">\n <ng-container [ngTemplateOutlet]=\"selectedOptionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: componentValue$.value}\"></ng-container>\n </mat-select-trigger>\n\n <mat-option *ngIf=\"allowNil\">\n <ng-container *ngIf=\"!nilOptionTemplateRef\">{{placeholder}}</ng-container>\n <ng-container *ngIf=\"nilOptionTemplateRef\" [ngTemplateOutlet]=\"nilOptionTemplateRef\"></ng-container>\n </mat-option>\n <mat-option *ngFor=\"let option of cookedOptions$.value; trackBy: trackByIdentity;let i = index\"\n [value]=\"option\">\n <ng-container *ngIf=\"!optionTemplateRef\">{{optionLabelFormat(option)}}</ng-container>\n <ng-container *ngIf=\"optionTemplateRef\"\n [ngTemplateOutlet]=\"optionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: option, index: i }\"\n >\n </ng-container>\n </mat-option>\n </mat-select>\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n<div class=\"width-strut\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <div class=\"item\" *ngFor=\"let item of cookedOptions$.value\">\n <ng-container *ngIf=\"!optionTemplateRef\">{{optionLabelFormat(item)}}</ng-container>\n <ng-container *ngIf=\"optionTemplateRef\"\n [ngTemplateOutlet]=\"optionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item, index: 0 }\"\n >\n </ng-container>\n </div>\n</div>\n", styles: [":host{display:inline-block}mat-form-field{width:100%}.width-strut{display:block;height:0;max-height:0;width:auto;visibility:hidden;overflow:hidden;padding-right:35px}.width-strut mat-label{font-size:75%}.width-strut>.item{font-size:16px;padding-left:0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "panelWidth", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "directive", type: i4.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i6.FocusBindingDirective, selector: "[pectinFocusBinding]", inputs: ["pectinFocusBinding", "focusBindingTarget"] }] });
96
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: SelectInputComponent, selector: "aup-select-input", inputs: { options$: "options$", options: "options", optionLabel: "optionLabel", allowNil: "allowNil", optionLabelFormat: "optionLabelFormat" }, queries: [{ propertyName: "selectedOptionTemplateRef", first: true, predicate: ["selectedOptionTemplate"], descendants: true }, { propertyName: "optionTemplateRef", first: true, predicate: ["optionTemplate"], descendants: true }, { propertyName: "nilOptionTemplateRef", first: true, predicate: ["nilOptionTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <mat-select placeholder=\"{{placeholder}}\"\n [ngModel]=\"componentValue$.value\"\n (ngModelChange)=\"select($event)\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n\n <!--\n TODO: dave has a scenario where the selected item isn't rendering that I can't reproduce so we explicity render it..\n It typically happens because the ngModel value isn't the one contained in the list - this means our source model\n identifyOf function has changed and our id$/lookup$/componentValue$ are out of sync.\n We get around this for now by explicity rendering the component value.\n Please Note: I haven't been able to reproduce this\n -->\n <mat-select-trigger *ngIf=\"!selectedOptionTemplateRef\">\n {{optionLabelFormat(componentValue$.value)}}\n </mat-select-trigger>\n\n <mat-select-trigger *ngIf=\"selectedOptionTemplateRef\">\n <ng-container [ngTemplateOutlet]=\"selectedOptionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: componentValue$.value}\"></ng-container>\n </mat-select-trigger>\n\n <mat-option *ngIf=\"allowNil\">\n <ng-container *ngIf=\"!nilOptionTemplateRef\">{{placeholder}}</ng-container>\n <ng-container *ngIf=\"nilOptionTemplateRef\" [ngTemplateOutlet]=\"nilOptionTemplateRef\"></ng-container>\n </mat-option>\n <mat-option *ngFor=\"let option of cookedOptions$.value; trackBy: trackByIdentity;let i = index\"\n [value]=\"option\">\n <ng-container *ngIf=\"!optionTemplateRef\">{{optionLabelFormat(option)}}</ng-container>\n <ng-container *ngIf=\"optionTemplateRef\"\n [ngTemplateOutlet]=\"optionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: option, index: i }\"\n >\n </ng-container>\n </mat-option>\n <ng-content select=\"[select-option-footer]\"></ng-content>\n </mat-select>\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors()\">{{firstError}}</mat-error>\n</mat-form-field>\n<div class=\"width-strut\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <div class=\"item\" *ngFor=\"let item of cookedOptions$.value\">\n <ng-container *ngIf=\"!optionTemplateRef\">{{optionLabelFormat(item)}}</ng-container>\n <ng-container *ngIf=\"optionTemplateRef\"\n [ngTemplateOutlet]=\"optionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item, index: 0 }\"\n >\n </ng-container>\n </div>\n</div>\n", styles: [":host{display:inline-block}mat-form-field{width:100%}.width-strut{display:block;height:0;max-height:0;width:auto;visibility:hidden;overflow:hidden;padding-right:35px}.width-strut mat-label{font-size:75%}.width-strut>.item{font-size:16px;padding-left:0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "panelWidth", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "directive", type: i4.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i6.FocusBindingDirective, selector: "[pectinFocusBinding]", inputs: ["pectinFocusBinding", "focusBindingTarget"] }] });
96
97
  }
97
98
  __decorate([
98
99
  Proxify(),
@@ -104,7 +105,7 @@ __decorate([
104
105
  ], SelectInputComponent.prototype, "options", null);
105
106
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SelectInputComponent, decorators: [{
106
107
  type: Component,
107
- args: [{ selector: 'aup-select-input', template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <mat-select placeholder=\"{{placeholder}}\"\n [ngModel]=\"componentValue$.value\"\n (ngModelChange)=\"select($event)\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n\n <!--\n TODO: dave has a scenario where the selected item isn't rendering that I can't reproduce so we explicity render it..\n It typically happens because the ngModel value isn't the one contained in the list - this means our source model\n identifyOf function has changed and our id$/lookup$/componentValue$ are out of sync.\n We get around this for now by explicity rendering the component value.\n Please Note: I haven't been able to reproduce this\n -->\n <mat-select-trigger *ngIf=\"!selectedOptionTemplateRef\">\n {{optionLabelFormat(componentValue$.value)}}\n </mat-select-trigger>\n\n <mat-select-trigger *ngIf=\"selectedOptionTemplateRef\">\n <ng-container [ngTemplateOutlet]=\"selectedOptionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: componentValue$.value}\"></ng-container>\n </mat-select-trigger>\n\n <mat-option *ngIf=\"allowNil\">\n <ng-container *ngIf=\"!nilOptionTemplateRef\">{{placeholder}}</ng-container>\n <ng-container *ngIf=\"nilOptionTemplateRef\" [ngTemplateOutlet]=\"nilOptionTemplateRef\"></ng-container>\n </mat-option>\n <mat-option *ngFor=\"let option of cookedOptions$.value; trackBy: trackByIdentity;let i = index\"\n [value]=\"option\">\n <ng-container *ngIf=\"!optionTemplateRef\">{{optionLabelFormat(option)}}</ng-container>\n <ng-container *ngIf=\"optionTemplateRef\"\n [ngTemplateOutlet]=\"optionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: option, index: i }\"\n >\n </ng-container>\n </mat-option>\n </mat-select>\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n<div class=\"width-strut\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <div class=\"item\" *ngFor=\"let item of cookedOptions$.value\">\n <ng-container *ngIf=\"!optionTemplateRef\">{{optionLabelFormat(item)}}</ng-container>\n <ng-container *ngIf=\"optionTemplateRef\"\n [ngTemplateOutlet]=\"optionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item, index: 0 }\"\n >\n </ng-container>\n </div>\n</div>\n", styles: [":host{display:inline-block}mat-form-field{width:100%}.width-strut{display:block;height:0;max-height:0;width:auto;visibility:hidden;overflow:hidden;padding-right:35px}.width-strut mat-label{font-size:75%}.width-strut>.item{font-size:16px;padding-left:0}\n"] }]
108
+ args: [{ selector: 'aup-select-input', template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <mat-select placeholder=\"{{placeholder}}\"\n [ngModel]=\"componentValue$.value\"\n (ngModelChange)=\"select($event)\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n\n <!--\n TODO: dave has a scenario where the selected item isn't rendering that I can't reproduce so we explicity render it..\n It typically happens because the ngModel value isn't the one contained in the list - this means our source model\n identifyOf function has changed and our id$/lookup$/componentValue$ are out of sync.\n We get around this for now by explicity rendering the component value.\n Please Note: I haven't been able to reproduce this\n -->\n <mat-select-trigger *ngIf=\"!selectedOptionTemplateRef\">\n {{optionLabelFormat(componentValue$.value)}}\n </mat-select-trigger>\n\n <mat-select-trigger *ngIf=\"selectedOptionTemplateRef\">\n <ng-container [ngTemplateOutlet]=\"selectedOptionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: componentValue$.value}\"></ng-container>\n </mat-select-trigger>\n\n <mat-option *ngIf=\"allowNil\">\n <ng-container *ngIf=\"!nilOptionTemplateRef\">{{placeholder}}</ng-container>\n <ng-container *ngIf=\"nilOptionTemplateRef\" [ngTemplateOutlet]=\"nilOptionTemplateRef\"></ng-container>\n </mat-option>\n <mat-option *ngFor=\"let option of cookedOptions$.value; trackBy: trackByIdentity;let i = index\"\n [value]=\"option\">\n <ng-container *ngIf=\"!optionTemplateRef\">{{optionLabelFormat(option)}}</ng-container>\n <ng-container *ngIf=\"optionTemplateRef\"\n [ngTemplateOutlet]=\"optionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: option, index: i }\"\n >\n </ng-container>\n </mat-option>\n <ng-content select=\"[select-option-footer]\"></ng-content>\n </mat-select>\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors()\">{{firstError}}</mat-error>\n</mat-form-field>\n<div class=\"width-strut\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <div class=\"item\" *ngFor=\"let item of cookedOptions$.value\">\n <ng-container *ngIf=\"!optionTemplateRef\">{{optionLabelFormat(item)}}</ng-container>\n <ng-container *ngIf=\"optionTemplateRef\"\n [ngTemplateOutlet]=\"optionTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item, index: 0 }\"\n >\n </ng-container>\n </div>\n</div>\n", styles: [":host{display:inline-block}mat-form-field{width:100%}.width-strut{display:block;height:0;max-height:0;width:auto;visibility:hidden;overflow:hidden;padding-right:35px}.width-strut mat-label{font-size:75%}.width-strut>.item{font-size:16px;padding-left:0}\n"] }]
108
109
  }], ctorParameters: function () { return []; }, propDecorators: { options$: [{
109
110
  type: Input
110
111
  }], options: [{
@@ -125,4 +126,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
125
126
  }], optionLabelFormat: [{
126
127
  type: Input
127
128
  }] } });
128
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvc2VsZWN0LWlucHV0L3NlbGVjdC1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1zL3NlbGVjdC1pbnB1dC9zZWxlY3QtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxXQUFXLEVBQWtCLE1BQU0sZUFBZSxDQUFDO0FBQ25HLE9BQU8sRUFDTCxPQUFPLEVBRVAsR0FBRyxFQUNILFNBQVMsRUFFVCxpQkFBaUIsRUFDakIsT0FBTyxFQUNQLE9BQU8sRUFDUCxnQkFBZ0IsRUFDakIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBQzdCLE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDOzs7Ozs7OztBQUU5RTs7Ozs7O0dBTUc7QUFNSCxNQUFNLE9BQU8sb0JBQThCLFNBQVEsMkJBQThCO0lBR3RFLDZCQUFXLE9BQU8sQ0FBQyxDQUFBLFNBQVksQ0FBQSxDQUFDLENBQUM7SUFBakMsSUFBQSxRQUFRLDhDQUF5QjtJQUFqQyxJQUFBLFFBQVEsb0RBQXlCO0lBSWpDLDBCQUFzQjtJQUF0QixJQUFBLE9BQU8sNkNBQWU7SUFBdEIsSUFBQSxPQUFPLG1EQUFlO0lBRy9CLFdBQVcsQ0FBVTtJQUdyQixRQUFRLENBQVU7SUFHbEIseUJBQXlCLENBQW1CO0lBRzVDLGlCQUFpQixDQUFtQjtJQUdwQyxvQkFBb0IsQ0FBbUI7SUFHdkMs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U0FBUzsrQkFDRSxrQkFBa0I7MEVBT25CLFFBQVE7c0JBRGhCLEtBQUs7Z0JBS0csT0FBTztzQkFEZixLQUFLO2dCQUlOLFdBQVc7c0JBRFYsS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4seUJBQXlCO3NCQUR4QixZQUFZO3VCQUFDLHdCQUF3QjtnQkFJdEMsaUJBQWlCO3NCQURoQixZQUFZO3VCQUFDLGdCQUFnQjtnQkFJOUIsb0JBQW9CO3NCQURuQixZQUFZO3VCQUFDLG1CQUFtQjtnQkFJakMsaUJBQWlCO3NCQURoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgSW5wdXQsIE9uSW5pdCwgVGVtcGxhdGVSZWYsIFRyYWNrQnlGdW5jdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBCaW5kaW5nLFxuICBCb29sZWFuVmFsdWVNb2RlbENoYWluLFxuICBEc2wsXG4gIExpc3RNb2RlbCxcbiAgTGlzdE1vZGVsQ2hhaW4sXG4gIE11dGFibGVWYWx1ZU1vZGVsLFxuICBQcm94aWZ5LFxuICBwcm94aWZ5LFxuICBTdG9yZUluTGlzdE1vZGVsXG59IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCB7aXNOaWx9IGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCB7QWJzdHJhY3RWYWx1ZUlucHV0Q29tcG9uZW50fSBmcm9tICcuLi9hYnN0cmFjdC12YWx1ZS1pbnB1dC5jb21wb25lbnQnO1xuXG4vKipcbiAqIFVzaW5nIHRlbXBsYXRlczpcbiAqIDxhdXAtc2VsZWN0LWlucHV0IFt2YWx1ZU1vZGVsXT1cIm15TW9kZWxcIiBbb3B0aW9uc109XCJteU9wdGlvbnNcIj5cbiAqICAgPG5nLXRlbXBsYXRlICNvcHRpb25UZW1wbGF0ZSBsZXQtb3B0aW9uPnt7b3B0aW9uLnRoZVByb3BlcnR5WW91V2FudH19PC9uZy10ZW1wbGF0ZT5cbiAqICAgPG5nLXRlbXBsYXRlICNuaWxPcHRpb25UZW1wbGF0ZSBsZXQtb3B0aW9uPnt7b3B0aW9uLnRoZVByb3BlcnR5WW91V2FudH19PC9uZy10ZW1wbGF0ZT5cbiAqIDwvYXVwLXNlbGVjdF9pbnB1dD5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXVwLXNlbGVjdC1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3QtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWxlY3QtaW5wdXQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RJbnB1dENvbXBvbmVudDxUID0gYW55PiBleHRlbmRzIEFic3RyYWN0VmFsdWVJbnB1dENvbXBvbmVudDxUPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KCkgQFByb3hpZnkoKVxuICBhY2Nlc3NvciBvcHRpb25zJCA9IHByb3hpZnkoTGlzdE1vZGVsPFQ+KTtcblxuXG4gIEBJbnB1dCgpIEBTdG9yZUluTGlzdE1vZGVsKClcbiAgYWNjZXNzb3Igb3B0aW9uczogcmVhZG9ubHkgVFtdO1xuXG4gIEBJbnB1dCgpXG4gIG9wdGlvbkxhYmVsOiBrZXlvZiBUO1xuXG4gIEBJbnB1dCgpXG4gIGFsbG93TmlsOiBib29sZWFuO1xuXG4gIEBDb250ZW50Q2hpbGQoJ3NlbGVjdGVkT3B0aW9uVGVtcGxhdGUnKVxuICBzZWxlY3RlZE9wdGlvblRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBDb250ZW50Q2hpbGQoJ29wdGlvblRlbXBsYXRlJylcbiAgb3B0aW9uVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQENvbnRlbnRDaGlsZCgnbmlsT3B0aW9uVGVtcGxhdGUnKVxuICBuaWxPcHRpb25UZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICBASW5wdXQoKVxuICBvcHRpb25MYWJlbEZvcm1hdDogKG9wdGlvbjogVCkgPT4gYW55ID0gKG9wdGlvbikgPT4gKG9wdGlvbiAmJiB0aGlzLm9wdGlvbkxhYmVsKSA/IG9wdGlvblt0aGlzLm9wdGlvbkxhYmVsXSA6IG9wdGlvbjtcblxuICByZWFkb25seSBpc05pbCQ6IEJvb2xlYW5WYWx1ZU1vZGVsQ2hhaW47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpZCQgPSBuZXcgTXV0YWJsZVZhbHVlTW9kZWw8YW55PigpO1xuXG4gIHJlYWRvbmx5IGNvb2tlZE9wdGlvbnMkOiBMaXN0TW9kZWxDaGFpbjxUPjtcblxuICBwcml2YXRlIHJlYWRvbmx5IGRlbGVnYXRlZElkZW50aXR5T2YgPSAoaXRlbTogVCkgPT4gdGhpcy5vcHRpb25zJC5pZGVudGl0eU9mKGl0ZW0pO1xuXG4gIHJlYWRvbmx5IHRyYWNrQnlJZGVudGl0eTogVHJhY2tCeUZ1bmN0aW9uPFQ+ID0gKGluZGV4OiBudW1iZXIsIGl0ZW06IFQpID0+IHRoaXMuZGVsZWdhdGVkSWRlbnRpdHlPZihpdGVtKSA/PyBpbmRleDtcblxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgY29uc3Qge2NoYWlufSA9IERzbC5kaXNwb3NlV2l0aCh0aGlzKTtcbiAgICB0aGlzLmNvb2tlZE9wdGlvbnMkID0gY2hhaW4odGhpcy5vcHRpb25zJClcbiAgICAgIC5yZWR1Y2VUb0xpc3Qob3B0aW9ucyA9PiB7XG4gICAgICAgIHJldHVybiBvcHRpb25zLmxlbmd0aCA8IDEgJiYgIWlzTmlsKHRoaXMuY29tcG9uZW50VmFsdWUkLnZhbHVlKSA/IFt0aGlzLmNvbXBvbmVudFZhbHVlJC52YWx1ZV0gOiBvcHRpb25zXG4gICAgICB9LCB7XG4gICAgICAgIGRlcGVuZHNPbjogdGhpcy5jb21wb25lbnRWYWx1ZSRcbiAgICAgIH0pXG4gICAgICAuaWRlbnRpZmllZFdpdGgodGhpcy5kZWxlZ2F0ZWRJZGVudGl0eU9mKVxuICB9XG5cbiAgc2VsZWN0KGl0ZW06IFQpIHtcbiAgICB0aGlzLmlkJC52YWx1ZSA9IHRoaXMuZGVsZWdhdGVkSWRlbnRpdHlPZihpdGVtKTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KClcblxuICAgIC8vIE5PVEU6IHRoaXMgaGFzIHRvIGJlIGRvbmUgYWZ0ZXIgb3VyIHBhcmFtZXRlciBoYXZlIGJlZW4gYm91bmQgb3Igd2UnbGwgY2xvYmJlciB0aGUgaW5pdGlhbCBzZWxlY3RlZCB2YWx1ZXMgd2l0aCB0aGUgd3JpdGVSaWdodFxuICAgIGNvbnN0IHtjaGFpbiwgYmVmb3JlLCB3aGVufSA9IERzbC5kaXNwb3NlV2l0aCh0aGlzKTtcbiAgICBjb25zdCBsb29rdXAgPSBjaGFpbih0aGlzLm9wdGlvbnMkKS5pbmRleFVzaW5nKHRoaXMuZGVsZWdhdGVkSWRlbnRpdHlPZik7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cbiAgICBjb25zdCBiaW5kaW5nID0gdGhpcy5yZWdpc3RlckRpc3Bvc2FibGUobmV3IEJpbmRpbmcodGhpcy5jb21wb25lbnRWYWx1ZSQsIHRoaXMuaWQkLCB7XG4gICAgICB0b0xlZnQoc2VsZWN0ZWRJZDogYW55LCBjdXJyZW50VmFsdWU/OiBUKTogVCB7XG4gICAgICAgIGlmIChpc05pbChzZWxlY3RlZElkKSkge1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBsb29rdXAuZ2V0KHNlbGVjdGVkSWQpOyAvLyB0aGUgbGlzdCBpcyBlbXB0eSBvciB3ZSdyZSBtaXNzaW5nIGZvcm0gaXQgc28gZG9uJ3QgdG91Y2ggdGhlIHJlYWwgdmFsdWUuXG4gICAgICAgIHJldHVybiBpc05pbChuZXdWYWx1ZSkgPyBjdXJyZW50VmFsdWUgOiBuZXdWYWx1ZTtcbiAgICAgIH0sXG4gICAgICBsZWZ0RGVwZW5kc09uOiBsb29rdXAsXG4gICAgICB0b1JpZ2h0KHNlbGVjdGVkVmFsdWU6IFQsIHNlbGVjdGVkSWQ/OiBhbnkpOiBhbnkge1xuICAgICAgICByZXR1cm4gc2VsZi5kZWxlZ2F0ZWRJZGVudGl0eU9mKHNlbGVjdGVkVmFsdWUpXG4gICAgICB9XG4gICAgfSkpLndyaXRlUmlnaHQoKTtcblxuICAgIC8vIFRPRE86IHdlIGhhdmUgdG8gZG8gdGhpcyBhcyB0aGUgb3B0aW9ucyBpZGVudGl0eSBmdW5jdGlvbiBjYW4gY2hhbmdlIGZyb20gaWRlbnRpdHkgdG8gc29tZXRoaWduIGVsc2UgYWZ0ZXJcbiAgICAvLyAgICAgICB3ZSBhbHJlYWR5IGhhdmUgYW4gaW5pdGlhbCB2YWx1ZS4gIEluIHRoYXQgY2FzZSB0aGUgc3RvcmVkIGlkIHdpbGwgYmUgd3JvbmcuXG4gICAgLy8gICAgICAgUHJvYmFibHkgYSByZWFzb25hYmxlIHNvbHV0aW9uIGZvciBpdCBiZSB0byB0cmFjayBjaGFuZ2VzIGluIHRoZSBpZGVudGl0eSBmdW5jdGlvbiBhbmQgaGFuZGxlIGl0XG4gICAgLy8gICAgICAgYXQgYSBtb3JlIGZ1bmRhbWVudGFsIGxldmVsLiAgVGhpcyBtYXkgaW5jbHVkZSBjaGVja2luZyBpZiB0aGUgZnVuY3Rpb24gaGFzIGNoYW5nZWQuLi4gYnV0IGN1cnJlbnRseVxuICAgIC8vICAgICAgIHRoZSBmdW5jdGlvbiBjaGFuZ2UgdGhpbmdzIHVuZGVyIHRoZSBob29kLlxuICAgIGNvbnN0IHNuYXBzaG90VmFsdWVBbmRJZCA9ICh2YWx1ZTogVCk6IGFueSA9PiAoe1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgaWQ6IHRoaXMuZGVsZWdhdGVkSWRlbnRpdHlPZih2YWx1ZSlcbiAgICB9KTtcbiAgICBsZXQgbGFzdElkU25hcHNob3Q6IHsgdmFsdWU6IFQsIGlkOiBhbnkgfSA9IHNuYXBzaG90VmFsdWVBbmRJZCh0aGlzLmNvbXBvbmVudFZhbHVlJC52YWx1ZSk7XG4gICAgY29uc29sZS5sb2cobGFzdElkU25hcHNob3QpXG4gICAgYmVmb3JlKHRoaXMub3B0aW9ucyQpLmNoYW5nZXMoKCkgPT4ge1xuICAgICAgbGFzdElkU25hcHNob3QgPSBzbmFwc2hvdFZhbHVlQW5kSWQodGhpcy5jb21wb25lbnRWYWx1ZSQudmFsdWUpO1xuICAgICAgY29uc29sZS5sb2cobGFzdElkU25hcHNob3QpXG4gICAgfSlcbiAgICB3aGVuKHRoaXMub3B0aW9ucyQpLmNoYW5nZXMoKGlzLCB3YXMpID0+IHtcbiAgICAgIGNvbnN0IG5ld0lkU25hcHNob3QgPSBzbmFwc2hvdFZhbHVlQW5kSWQobGFzdElkU25hcHNob3QudmFsdWUpO1xuICAgICAgY29uc29sZS5sb2cobGFzdElkU25hcHNob3QsIG5ld0lkU25hcHNob3QpXG4gICAgICBpZiAobmV3SWRTbmFwc2hvdCAhPT0gbGFzdElkU25hcHNob3QuaWQpIHtcbiAgICAgICAgdGhpcy5pZCQudmFsdWUgPSB0aGlzLmRlbGVnYXRlZElkZW50aXR5T2YodGhpcy5jb21wb25lbnRWYWx1ZSQudmFsdWUpXG4gICAgICB9XG4gICAgfSlcblxuICB9XG5cbn1cbiIsIjxtYXQtZm9ybS1maWVsZCBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCI+XG4gIDxtYXQtbGFiZWwgKm5nSWY9XCJsYWJlbFwiPnt7bGFiZWx9fTwvbWF0LWxhYmVsPlxuICA8bWF0LXNlbGVjdCBwbGFjZWhvbGRlcj1cInt7cGxhY2Vob2xkZXJ9fVwiXG4gICAgICAgICAgICAgIFtuZ01vZGVsXT1cImNvbXBvbmVudFZhbHVlJC52YWx1ZVwiXG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlbGVjdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFlbmFibGVkJC52YWx1ZVwiXG4gICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm5vdGlmeUVudGVyS2V5KClcIlxuICAgICAgICAgICAgICAoa2V5ZG93bi5lc2NhcGUpPVwibm90aWZ5RXNjYXBlS2V5KClcIlxuICAgICAgICAgICAgICBbcGVjdGluRm9jdXNCaW5kaW5nXT1cImZvY3VzQ29udGV4dFwiXG4gICAgICAgICAgICAgIFtlcnJvclN0YXRlTWF0Y2hlcl09XCJlcnJvclN0YXRlTWF0Y2hlclwiXG4gID5cblxuICAgIDwhLS1cbiAgICBUT0RPOiBkYXZlIGhhcyBhIHNjZW5hcmlvIHdoZXJlIHRoZSBzZWxlY3RlZCBpdGVtIGlzbid0IHJlbmRlcmluZyB0aGF0IEkgY2FuJ3QgcmVwcm9kdWNlIHNvIHdlIGV4cGxpY2l0eSByZW5kZXIgaXQuLlxuICAgICAgICAgIEl0IHR5cGljYWxseSBoYXBwZW5zIGJlY2F1c2UgdGhlIG5nTW9kZWwgdmFsdWUgaXNuJ3QgdGhlIG9uZSBjb250YWluZWQgaW4gdGhlIGxpc3QgLSB0aGlzIG1lYW5zIG91ciBzb3VyY2UgbW9kZWxcbiAgICAgICAgICBpZGVudGlmeU9mIGZ1bmN0aW9uIGhhcyBjaGFuZ2VkIGFuZCBvdXIgaWQkL2xvb2t1cCQvY29tcG9uZW50VmFsdWUkIGFyZSBvdXQgb2Ygc3luYy5cbiAgICAgICAgICBXZSBnZXQgYXJvdW5kIHRoaXMgZm9yIG5vdyBieSBleHBsaWNpdHkgcmVuZGVyaW5nIHRoZSBjb21wb25lbnQgdmFsdWUuXG4gICAgICAgICAgUGxlYXNlIE5vdGU6IEkgaGF2ZW4ndCBiZWVuIGFibGUgdG8gcmVwcm9kdWNlIHRoaXNcbiAgICAtLT5cbiAgICA8bWF0LXNlbGVjdC10cmlnZ2VyICpuZ0lmPVwiIXNlbGVjdGVkT3B0aW9uVGVtcGxhdGVSZWZcIj5cbiAgICAgIHt7b3B0aW9uTGFiZWxGb3JtYXQoY29tcG9uZW50VmFsdWUkLnZhbHVlKX19XG4gICAgPC9tYXQtc2VsZWN0LXRyaWdnZXI+XG5cbiAgICA8bWF0LXNlbGVjdC10cmlnZ2VyICpuZ0lmPVwic2VsZWN0ZWRPcHRpb25UZW1wbGF0ZVJlZlwiPlxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzZWxlY3RlZE9wdGlvblRlbXBsYXRlUmVmXCJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb21wb25lbnRWYWx1ZSQudmFsdWV9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9tYXQtc2VsZWN0LXRyaWdnZXI+XG5cbiAgICA8bWF0LW9wdGlvbiAqbmdJZj1cImFsbG93TmlsXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW5pbE9wdGlvblRlbXBsYXRlUmVmXCI+e3twbGFjZWhvbGRlcn19PC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibmlsT3B0aW9uVGVtcGxhdGVSZWZcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJuaWxPcHRpb25UZW1wbGF0ZVJlZlwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbWF0LW9wdGlvbj5cbiAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGNvb2tlZE9wdGlvbnMkLnZhbHVlOyB0cmFja0J5OiB0cmFja0J5SWRlbnRpdHk7bGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvblwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFvcHRpb25UZW1wbGF0ZVJlZlwiPnt7b3B0aW9uTGFiZWxGb3JtYXQob3B0aW9uKX19PC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib3B0aW9uVGVtcGxhdGVSZWZcIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJvcHRpb25UZW1wbGF0ZVJlZlwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogb3B0aW9uLCBpbmRleDogaSB9XCJcbiAgICAgID5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbWF0LW9wdGlvbj5cbiAgPC9tYXQtc2VsZWN0PlxuICA8bWF0LWhpbnQgKm5nSWY9XCJzaG93SGludFwiPnt7aGludH19PC9tYXQtaGludD5cbiAgPG1hdC1lcnJvciAqbmdJZj1cImhhc0Vycm9yc1wiPnt7Zmlyc3RFcnJvcn19PC9tYXQtZXJyb3I+XG48L21hdC1mb3JtLWZpZWxkPlxuPGRpdiBjbGFzcz1cIndpZHRoLXN0cnV0XCI+XG4gIDxtYXQtbGFiZWwgKm5nSWY9XCJsYWJlbFwiPnt7bGFiZWx9fTwvbWF0LWxhYmVsPlxuICA8ZGl2IGNsYXNzPVwiaXRlbVwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNvb2tlZE9wdGlvbnMkLnZhbHVlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFvcHRpb25UZW1wbGF0ZVJlZlwiPnt7b3B0aW9uTGFiZWxGb3JtYXQoaXRlbSl9fTwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb25UZW1wbGF0ZVJlZlwiXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJvcHRpb25UZW1wbGF0ZVJlZlwiXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0sIGluZGV4OiAwIH1cIlxuICAgID5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvc2VsZWN0LWlucHV0L3NlbGVjdC1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1zL3NlbGVjdC1pbnB1dC9zZWxlY3QtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxXQUFXLEVBQWtCLE1BQU0sZUFBZSxDQUFDO0FBQ25HLE9BQU8sRUFDTCxPQUFPLEVBRVAsR0FBRyxFQUNILFNBQVMsRUFFVCxpQkFBaUIsRUFDakIsT0FBTyxFQUNQLE9BQU8sRUFDUCxnQkFBZ0IsRUFDakIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQ2hDLE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDOzs7Ozs7OztBQUU5RTs7Ozs7OztHQU9HO0FBTUgsTUFBTSxPQUFPLG9CQUE4QixTQUFRLDJCQUE4QjtJQUd0RSw2QkFBVyxPQUFPLENBQUMsQ0FBQSxTQUFZLENBQUEsQ0FBQyxDQUFDO0lBQWpDLElBQUEsUUFBUSw4Q0FBeUI7SUFBakMsSUFBQSxRQUFRLG9EQUF5QjtJQUlqQywwQkFBc0I7SUFBdEIsSUFBQSxPQUFPLDZDQUFlO0lBQXRCLElBQUEsT0FBTyxtREFBZTtJQUcvQixXQUFXLENBQVU7SUFHckIsUUFBUSxDQUFVO0lBR2xCLHlCQUF5QixDQUFtQjtJQUc1QyxpQkFBaUIsQ0FBbUI7SUFHcEMsb0JBQW9CLENBQW1CO0lBR3ZD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QUFRO3NCQURQLEtBQUs7Z0JBSU4seUJBQXlCO3NCQUR4QixZQUFZO3VCQUFDLHdCQUF3QjtnQkFJdEMsaUJBQWlCO3NCQURoQixZQUFZO3VCQUFDLGdCQUFnQjtnQkFJOUIsb0JBQW9CO3NCQURuQixZQUFZO3VCQUFDLG1CQUFtQjtnQkFJakMsaUJBQWlCO3NCQURoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgSW5wdXQsIE9uSW5pdCwgVGVtcGxhdGVSZWYsIFRyYWNrQnlGdW5jdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBCaW5kaW5nLFxuICBCb29sZWFuVmFsdWVNb2RlbENoYWluLFxuICBEc2wsXG4gIExpc3RNb2RlbCxcbiAgTGlzdE1vZGVsQ2hhaW4sXG4gIE11dGFibGVWYWx1ZU1vZGVsLFxuICBQcm94aWZ5LFxuICBwcm94aWZ5LFxuICBTdG9yZUluTGlzdE1vZGVsXG59IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCB7aXNOaWx9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7QWJzdHJhY3RWYWx1ZUlucHV0Q29tcG9uZW50fSBmcm9tICcuLi9hYnN0cmFjdC12YWx1ZS1pbnB1dC5jb21wb25lbnQnO1xuXG4vKipcbiAqIFVzaW5nIHRlbXBsYXRlczpcbiAqIDxhdXAtc2VsZWN0LWlucHV0IFt2YWx1ZSRdPVwibXlNb2RlbFwiIFtvcHRpb25zXT1cIm15T3B0aW9uc1wiPlxuICogICA8bmctdGVtcGxhdGUgI29wdGlvblRlbXBsYXRlIGxldC1vcHRpb24+e3tvcHRpb24udGhlUHJvcGVydHlZb3VXYW50fX08L25nLXRlbXBsYXRlPlxuICogICA8bmctdGVtcGxhdGUgI3NlbGVjdGVkT3B0aW9uVGVtcGxhdGUgbGV0LW9wdGlvbj57e29wdGlvbi50aGVQcm9wZXJ0eVlvdVdhbnR9fSBub3RlLCBub3QgdXNlZCBmb3IgbmlscyAodGhlIHBsYWNlaG9sZGVyIGlzIHVzZWQpPC9uZy10ZW1wbGF0ZT5cbiAqICAgPG5nLXRlbXBsYXRlICNuaWxPcHRpb25UZW1wbGF0ZT5Vc2VzIHRoZSBwbGFjZWhvbGRlciBieSBkZWZhdWx0IGJ1dCB5b3UgY2FuIGN1c3RvbWlzZSBpdDwvbmctdGVtcGxhdGU+XG4gKiA8L2F1cC1zZWxlY3RfaW5wdXQ+XG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F1cC1zZWxlY3QtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LWlucHV0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0SW5wdXRDb21wb25lbnQ8VCA9IGFueT4gZXh0ZW5kcyBBYnN0cmFjdFZhbHVlSW5wdXRDb21wb25lbnQ8VD4gaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dCgpIEBQcm94aWZ5KClcbiAgYWNjZXNzb3Igb3B0aW9ucyQgPSBwcm94aWZ5KExpc3RNb2RlbDxUPik7XG5cblxuICBASW5wdXQoKSBAU3RvcmVJbkxpc3RNb2RlbCgpXG4gIGFjY2Vzc29yIG9wdGlvbnM6IHJlYWRvbmx5IFRbXTtcblxuICBASW5wdXQoKVxuICBvcHRpb25MYWJlbDoga2V5b2YgVDtcblxuICBASW5wdXQoKVxuICBhbGxvd05pbDogYm9vbGVhbjtcblxuICBAQ29udGVudENoaWxkKCdzZWxlY3RlZE9wdGlvblRlbXBsYXRlJylcbiAgc2VsZWN0ZWRPcHRpb25UZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAQ29udGVudENoaWxkKCdvcHRpb25UZW1wbGF0ZScpXG4gIG9wdGlvblRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBDb250ZW50Q2hpbGQoJ25pbE9wdGlvblRlbXBsYXRlJylcbiAgbmlsT3B0aW9uVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQElucHV0KClcbiAgb3B0aW9uTGFiZWxGb3JtYXQ6IChvcHRpb246IFQpID0+IGFueSA9IChvcHRpb24pID0+IChvcHRpb24gJiYgdGhpcy5vcHRpb25MYWJlbCkgPyBvcHRpb25bdGhpcy5vcHRpb25MYWJlbF0gOiBvcHRpb247XG5cbiAgcmVhZG9ubHkgaXNOaWwkOiBCb29sZWFuVmFsdWVNb2RlbENoYWluO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaWQkID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPGFueT4oKTtcblxuICByZWFkb25seSBjb29rZWRPcHRpb25zJDogTGlzdE1vZGVsQ2hhaW48VD47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkZWxlZ2F0ZWRJZGVudGl0eU9mID0gKGl0ZW06IFQpID0+IHRoaXMub3B0aW9ucyQuaWRlbnRpdHlPZihpdGVtKTtcblxuICByZWFkb25seSB0cmFja0J5SWRlbnRpdHk6IFRyYWNrQnlGdW5jdGlvbjxUPiA9IChpbmRleDogbnVtYmVyLCBpdGVtOiBUKSA9PiB0aGlzLmRlbGVnYXRlZElkZW50aXR5T2YoaXRlbSkgPz8gaW5kZXg7XG5cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIGNvbnN0IHtjaGFpbn0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG4gICAgdGhpcy5jb29rZWRPcHRpb25zJCA9IGNoYWluKHRoaXMub3B0aW9ucyQpXG4gICAgICAubWFwQWxsKG9wdGlvbnMgPT4ge1xuICAgICAgICByZXR1cm4gb3B0aW9ucy5sZW5ndGggPCAxICYmICFpc05pbCh0aGlzLmNvbXBvbmVudFZhbHVlJC52YWx1ZSkgPyBbdGhpcy5jb21wb25lbnRWYWx1ZSQudmFsdWVdIDogb3B0aW9uc1xuICAgICAgfSwge1xuICAgICAgICBkZXBlbmRzT246IHRoaXMuY29tcG9uZW50VmFsdWUkXG4gICAgICB9KVxuICAgICAgLmlkZW50aWZpZWRXaXRoKHRoaXMuZGVsZWdhdGVkSWRlbnRpdHlPZilcbiAgfVxuXG4gIHNlbGVjdChpdGVtOiBUKSB7XG4gICAgdGhpcy5pZCQudmFsdWUgPSB0aGlzLmRlbGVnYXRlZElkZW50aXR5T2YoaXRlbSk7XG4gIH1cblxuICBvdmVycmlkZSBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpXG5cbiAgICAvLyBOT1RFOiB0aGlzIGhhcyB0byBiZSBkb25lIGFmdGVyIG91ciBwYXJhbWV0ZXIgaGF2ZSBiZWVuIGJvdW5kIG9yIHdlJ2xsIGNsb2JiZXIgdGhlIGluaXRpYWwgc2VsZWN0ZWQgdmFsdWVzIHdpdGggdGhlIHdyaXRlUmlnaHRcbiAgICBjb25zdCB7Y2hhaW4sIGJlZm9yZSwgd2hlbn0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG4gICAgY29uc3QgbG9va3VwID0gY2hhaW4odGhpcy5vcHRpb25zJCkuaW5kZXhVc2luZyh0aGlzLmRlbGVnYXRlZElkZW50aXR5T2YpO1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgY29uc3QgYmluZGluZyA9IHRoaXMucmVnaXN0ZXJEaXNwb3NhYmxlKG5ldyBCaW5kaW5nKHRoaXMuY29tcG9uZW50VmFsdWUkLCB0aGlzLmlkJCwge1xuICAgICAgdG9MZWZ0KHNlbGVjdGVkSWQ6IGFueSwgY3VycmVudFZhbHVlPzogVCk6IFQge1xuICAgICAgICBpZiAoaXNOaWwoc2VsZWN0ZWRJZCkpIHtcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gbG9va3VwLmdldChzZWxlY3RlZElkKTsgLy8gdGhlIGxpc3QgaXMgZW1wdHkgb3Igd2UncmUgbWlzc2luZyBmb3JtIGl0IHNvIGRvbid0IHRvdWNoIHRoZSByZWFsIHZhbHVlLlxuICAgICAgICByZXR1cm4gaXNOaWwobmV3VmFsdWUpID8gY3VycmVudFZhbHVlIDogbmV3VmFsdWU7XG4gICAgICB9LFxuICAgICAgbGVmdERlcGVuZHNPbjogbG9va3VwLFxuICAgICAgdG9SaWdodChzZWxlY3RlZFZhbHVlOiBULCBzZWxlY3RlZElkPzogYW55KTogYW55IHtcbiAgICAgICAgcmV0dXJuIHNlbGYuZGVsZWdhdGVkSWRlbnRpdHlPZihzZWxlY3RlZFZhbHVlKVxuICAgICAgfVxuICAgIH0pKS53cml0ZVJpZ2h0KCk7XG5cbiAgICAvLyBUT0RPOiB3ZSBoYXZlIHRvIGRvIHRoaXMgYXMgdGhlIG9wdGlvbnMgaWRlbnRpdHkgZnVuY3Rpb24gY2FuIGNoYW5nZSBmcm9tIGlkZW50aXR5IHRvIHNvbWV0aGlnbiBlbHNlIGFmdGVyXG4gICAgLy8gICAgICAgd2UgYWxyZWFkeSBoYXZlIGFuIGluaXRpYWwgdmFsdWUuICBJbiB0aGF0IGNhc2UgdGhlIHN0b3JlZCBpZCB3aWxsIGJlIHdyb25nLlxuICAgIC8vICAgICAgIFByb2JhYmx5IGEgcmVhc29uYWJsZSBzb2x1dGlvbiBmb3IgaXQgYmUgdG8gdHJhY2sgY2hhbmdlcyBpbiB0aGUgaWRlbnRpdHkgZnVuY3Rpb24gYW5kIGhhbmRsZSBpdFxuICAgIC8vICAgICAgIGF0IGEgbW9yZSBmdW5kYW1lbnRhbCBsZXZlbC4gIFRoaXMgbWF5IGluY2x1ZGUgY2hlY2tpbmcgaWYgdGhlIGZ1bmN0aW9uIGhhcyBjaGFuZ2VkLi4uIGJ1dCBjdXJyZW50bHlcbiAgICAvLyAgICAgICB0aGUgZnVuY3Rpb24gY2hhbmdlIHRoaW5ncyB1bmRlciB0aGUgaG9vZC5cbiAgICBjb25zdCBzbmFwc2hvdFZhbHVlQW5kSWQgPSAodmFsdWU6IFQpOiBhbnkgPT4gKHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGlkOiB0aGlzLmRlbGVnYXRlZElkZW50aXR5T2YodmFsdWUpXG4gICAgfSk7XG4gICAgbGV0IGxhc3RJZFNuYXBzaG90OiB7IHZhbHVlOiBULCBpZDogYW55IH0gPSBzbmFwc2hvdFZhbHVlQW5kSWQodGhpcy5jb21wb25lbnRWYWx1ZSQudmFsdWUpO1xuICAgIC8vIGNvbnNvbGUubG9nKGxhc3RJZFNuYXBzaG90KVxuICAgIGJlZm9yZSh0aGlzLm9wdGlvbnMkKS5jaGFuZ2VzKCgpID0+IHtcbiAgICAgIGxhc3RJZFNuYXBzaG90ID0gc25hcHNob3RWYWx1ZUFuZElkKHRoaXMuY29tcG9uZW50VmFsdWUkLnZhbHVlKTtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGxhc3RJZFNuYXBzaG90KVxuICAgIH0pXG4gICAgd2hlbih0aGlzLm9wdGlvbnMkKS5jaGFuZ2VzKChpcywgd2FzKSA9PiB7XG4gICAgICBjb25zdCBuZXdJZFNuYXBzaG90ID0gc25hcHNob3RWYWx1ZUFuZElkKGxhc3RJZFNuYXBzaG90LnZhbHVlKTtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGxhc3RJZFNuYXBzaG90LCBuZXdJZFNuYXBzaG90KVxuICAgICAgaWYgKG5ld0lkU25hcHNob3QgIT09IGxhc3RJZFNuYXBzaG90LmlkKSB7XG4gICAgICAgIHRoaXMuaWQkLnZhbHVlID0gdGhpcy5kZWxlZ2F0ZWRJZGVudGl0eU9mKHRoaXMuY29tcG9uZW50VmFsdWUkLnZhbHVlKVxuICAgICAgfVxuICAgIH0pXG5cbiAgfVxuXG59XG4iLCI8bWF0LWZvcm0tZmllbGQgW2Zsb2F0TGFiZWxdPVwiZmxvYXRMYWJlbFwiPlxuICA8bWF0LWxhYmVsICpuZ0lmPVwibGFiZWxcIj57e2xhYmVsfX08L21hdC1sYWJlbD5cbiAgPG1hdC1zZWxlY3QgcGxhY2Vob2xkZXI9XCJ7e3BsYWNlaG9sZGVyfX1cIlxuICAgICAgICAgICAgICBbbmdNb2RlbF09XCJjb21wb25lbnRWYWx1ZSQudmFsdWVcIlxuICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZWxlY3QoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZW5hYmxlZCQudmFsdWVcIlxuICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJub3RpZnlFbnRlcktleSgpXCJcbiAgICAgICAgICAgICAgKGtleWRvd24uZXNjYXBlKT1cIm5vdGlmeUVzY2FwZUtleSgpXCJcbiAgICAgICAgICAgICAgW3BlY3RpbkZvY3VzQmluZGluZ109XCJmb2N1c0NvbnRleHRcIlxuICAgICAgICAgICAgICBbZXJyb3JTdGF0ZU1hdGNoZXJdPVwiZXJyb3JTdGF0ZU1hdGNoZXJcIlxuICA+XG5cbiAgICA8IS0tXG4gICAgVE9ETzogZGF2ZSBoYXMgYSBzY2VuYXJpbyB3aGVyZSB0aGUgc2VsZWN0ZWQgaXRlbSBpc24ndCByZW5kZXJpbmcgdGhhdCBJIGNhbid0IHJlcHJvZHVjZSBzbyB3ZSBleHBsaWNpdHkgcmVuZGVyIGl0Li5cbiAgICAgICAgICBJdCB0eXBpY2FsbHkgaGFwcGVucyBiZWNhdXNlIHRoZSBuZ01vZGVsIHZhbHVlIGlzbid0IHRoZSBvbmUgY29udGFpbmVkIGluIHRoZSBsaXN0IC0gdGhpcyBtZWFucyBvdXIgc291cmNlIG1vZGVsXG4gICAgICAgICAgaWRlbnRpZnlPZiBmdW5jdGlvbiBoYXMgY2hhbmdlZCBhbmQgb3VyIGlkJC9sb29rdXAkL2NvbXBvbmVudFZhbHVlJCBhcmUgb3V0IG9mIHN5bmMuXG4gICAgICAgICAgV2UgZ2V0IGFyb3VuZCB0aGlzIGZvciBub3cgYnkgZXhwbGljaXR5IHJlbmRlcmluZyB0aGUgY29tcG9uZW50IHZhbHVlLlxuICAgICAgICAgIFBsZWFzZSBOb3RlOiBJIGhhdmVuJ3QgYmVlbiBhYmxlIHRvIHJlcHJvZHVjZSB0aGlzXG4gICAgLS0+XG4gICAgPG1hdC1zZWxlY3QtdHJpZ2dlciAqbmdJZj1cIiFzZWxlY3RlZE9wdGlvblRlbXBsYXRlUmVmXCI+XG4gICAgICB7e29wdGlvbkxhYmVsRm9ybWF0KGNvbXBvbmVudFZhbHVlJC52YWx1ZSl9fVxuICAgIDwvbWF0LXNlbGVjdC10cmlnZ2VyPlxuXG4gICAgPG1hdC1zZWxlY3QtdHJpZ2dlciAqbmdJZj1cInNlbGVjdGVkT3B0aW9uVGVtcGxhdGVSZWZcIj5cbiAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic2VsZWN0ZWRPcHRpb25UZW1wbGF0ZVJlZlwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29tcG9uZW50VmFsdWUkLnZhbHVlfVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbWF0LXNlbGVjdC10cmlnZ2VyPlxuXG4gICAgPG1hdC1vcHRpb24gKm5nSWY9XCJhbGxvd05pbFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFuaWxPcHRpb25UZW1wbGF0ZVJlZlwiPnt7cGxhY2Vob2xkZXJ9fTwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5pbE9wdGlvblRlbXBsYXRlUmVmXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwibmlsT3B0aW9uVGVtcGxhdGVSZWZcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L21hdC1vcHRpb24+XG4gICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBjb29rZWRPcHRpb25zJC52YWx1ZTsgdHJhY2tCeTogdHJhY2tCeUlkZW50aXR5O2xldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb25cIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhb3B0aW9uVGVtcGxhdGVSZWZcIj57e29wdGlvbkxhYmVsRm9ybWF0KG9wdGlvbil9fTwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9wdGlvblRlbXBsYXRlUmVmXCJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwib3B0aW9uVGVtcGxhdGVSZWZcIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IG9wdGlvbiwgaW5kZXg6IGkgfVwiXG4gICAgICA+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L21hdC1vcHRpb24+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3NlbGVjdC1vcHRpb24tZm9vdGVyXVwiPjwvbmctY29udGVudD5cbiAgPC9tYXQtc2VsZWN0PlxuICA8bWF0LWhpbnQgKm5nSWY9XCJzaG93SGludFwiPnt7aGludH19PC9tYXQtaGludD5cbiAgPG1hdC1lcnJvciAqbmdJZj1cImhhc0Vycm9ycygpXCI+e3tmaXJzdEVycm9yfX08L21hdC1lcnJvcj5cbjwvbWF0LWZvcm0tZmllbGQ+XG48ZGl2IGNsYXNzPVwid2lkdGgtc3RydXRcIj5cbiAgPG1hdC1sYWJlbCAqbmdJZj1cImxhYmVsXCI+e3tsYWJlbH19PC9tYXQtbGFiZWw+XG4gIDxkaXYgY2xhc3M9XCJpdGVtXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY29va2VkT3B0aW9ucyQudmFsdWVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW9wdGlvblRlbXBsYXRlUmVmXCI+e3tvcHRpb25MYWJlbEZvcm1hdChpdGVtKX19PC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9wdGlvblRlbXBsYXRlUmVmXCJcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm9wdGlvblRlbXBsYXRlUmVmXCJcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbSwgaW5kZXg6IDAgfVwiXG4gICAgPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -1,5 +1,5 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
- import { Component, Input } from '@angular/core';
2
+ import { Component, ElementRef, Input } from '@angular/core';
3
3
  import { Command, Dsl, Proxify, proxify, StoreInValueModel, ValueModel } from '@coolon/pectin';
4
4
  import { AbstractValueInputComponent } from '../abstract-value-input.component';
5
5
  import * as i0 from "@angular/core";
@@ -7,10 +7,9 @@ import * as i1 from "@angular/common";
7
7
  import * as i2 from "@angular/forms";
8
8
  import * as i3 from "@angular/material/input";
9
9
  import * as i4 from "@angular/material/form-field";
10
- import * as i5 from "../../../directives/command.directive";
11
- import * as i6 from "../../../directives/focus-binding.directive";
12
- import * as i7 from "@angular/material/button";
13
- import * as i8 from "../../icon/icon.component";
10
+ import * as i5 from "../../../directives/focus-binding.directive";
11
+ import * as i6 from "../../icon/icon.component";
12
+ import * as i7 from "../../commands/command/command.component";
14
13
  export class StringInputComponent extends AbstractValueInputComponent {
15
14
  autocomplete;
16
15
  #enableClear$_accessor_storage = proxify((ValueModel));
@@ -20,17 +19,29 @@ export class StringInputComponent extends AbstractValueInputComponent {
20
19
  get enableClear() { return this.#enableClear_accessor_storage; }
21
20
  set enableClear(value) { this.#enableClear_accessor_storage = value; }
22
21
  iconPrefix;
22
+ #suffixCommand_accessor_storage = proxify(Command);
23
+ get suffixCommand() { return this.#suffixCommand_accessor_storage; }
24
+ set suffixCommand(value) { this.#suffixCommand_accessor_storage = value; }
25
+ inputMode = 'text';
23
26
  clearCommand;
27
+ elementRef = this.inject(ElementRef);
24
28
  constructor() {
25
29
  super();
26
30
  const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
27
31
  this.clearCommand = Command.create(() => {
28
- this.componentValue$.value = "";
29
- });
30
- this.clearCommand.disableWhile(chain.stringValue(this.componentValue$).isBlank());
32
+ this.componentValue$.value = '';
33
+ })
34
+ .withFace({ icon: () => 'mat:clear' })
35
+ .enableWhile(chain.stringValue(this.componentValue$).isNotBlank());
36
+ }
37
+ get hasSuffixCommand() {
38
+ return Proxify.hasTarget(this.suffixCommand);
39
+ }
40
+ select() {
41
+ this.elementRef.nativeElement.querySelector('input').select();
31
42
  }
32
43
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: StringInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
33
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: StringInputComponent, selector: "aup-string-input", inputs: { autocomplete: "autocomplete", enableClear$: "enableClear$", enableClear: "enableClear", iconPrefix: "iconPrefix" }, usesInheritance: true, ngImport: i0, template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input matInput\n placeholder=\"{{placeholder}}\"\n [attr.autocomplete]=\"autocomplete\"\n [(ngModel)]=\"componentValue$.value\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n <aup-icon *ngIf=\"iconPrefix\" matPrefix [icon]=\"iconPrefix\"></aup-icon>\n <button mat-icon-button matSuffix *ngIf=\"enableClear\" [pectinCommand]=\"clearCommand\">\n <aup-icon icon=\"mat:close\"></aup-icon>\n </button>\n</mat-form-field>\n\n", styles: ["button[disabled]{visibility:hidden}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i5.CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }, { kind: "directive", type: i6.FocusBindingDirective, selector: "[pectinFocusBinding]", inputs: ["pectinFocusBinding", "focusBindingTarget"] }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i8.IconComponent, selector: "aup-icon", inputs: ["icon"] }] });
44
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: StringInputComponent, selector: "aup-string-input", inputs: { autocomplete: "autocomplete", enableClear$: "enableClear$", enableClear: "enableClear", iconPrefix: "iconPrefix", suffixCommand: "suffixCommand", inputMode: "inputMode" }, usesInheritance: true, ngImport: i0, template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input matInput\n placeholder=\"{{placeholder}}\"\n [attr.inputmode]=\"inputMode\"\n [attr.autocomplete]=\"autocomplete\"\n [(ngModel)]=\"componentValue$.value\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors()\">{{firstError}}</mat-error>\n <aup-icon *ngIf=\"iconPrefix\" matPrefix [icon]=\"iconPrefix\"></aup-icon>\n <span matSuffix>\n <aup-command *ngIf=\"enableClear\" [command]=\"clearCommand\" data-cy=\"clearCommand\"></aup-command>\n <aup-command *ngIf=\"hasSuffixCommand\" [command]=\"suffixCommand\" data-cy=\"suffixCommand\"></aup-command>\n </span>\n</mat-form-field>\n\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i5.FocusBindingDirective, selector: "[pectinFocusBinding]", inputs: ["pectinFocusBinding", "focusBindingTarget"] }, { kind: "component", type: i6.IconComponent, selector: "aup-icon", inputs: ["icon"] }, { kind: "component", type: i7.CommandComponent, selector: "aup-command", inputs: ["command", "face$", "face", "busyFace$", "busyFace", "alignFace"] }] });
34
45
  }
35
46
  __decorate([
36
47
  Proxify(),
@@ -40,9 +51,13 @@ __decorate([
40
51
  StoreInValueModel(),
41
52
  __metadata("design:type", Object)
42
53
  ], StringInputComponent.prototype, "enableClear", null);
54
+ __decorate([
55
+ Proxify(),
56
+ __metadata("design:type", Command)
57
+ ], StringInputComponent.prototype, "suffixCommand", null);
43
58
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: StringInputComponent, decorators: [{
44
59
  type: Component,
45
- args: [{ selector: 'aup-string-input', template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input matInput\n placeholder=\"{{placeholder}}\"\n [attr.autocomplete]=\"autocomplete\"\n [(ngModel)]=\"componentValue$.value\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n <aup-icon *ngIf=\"iconPrefix\" matPrefix [icon]=\"iconPrefix\"></aup-icon>\n <button mat-icon-button matSuffix *ngIf=\"enableClear\" [pectinCommand]=\"clearCommand\">\n <aup-icon icon=\"mat:close\"></aup-icon>\n </button>\n</mat-form-field>\n\n", styles: ["button[disabled]{visibility:hidden}\n"] }]
60
+ args: [{ selector: 'aup-string-input', template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input matInput\n placeholder=\"{{placeholder}}\"\n [attr.inputmode]=\"inputMode\"\n [attr.autocomplete]=\"autocomplete\"\n [(ngModel)]=\"componentValue$.value\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n >\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors()\">{{firstError}}</mat-error>\n <aup-icon *ngIf=\"iconPrefix\" matPrefix [icon]=\"iconPrefix\"></aup-icon>\n <span matSuffix>\n <aup-command *ngIf=\"enableClear\" [command]=\"clearCommand\" data-cy=\"clearCommand\"></aup-command>\n <aup-command *ngIf=\"hasSuffixCommand\" [command]=\"suffixCommand\" data-cy=\"suffixCommand\"></aup-command>\n </span>\n</mat-form-field>\n\n" }]
46
61
  }], ctorParameters: function () { return []; }, propDecorators: { autocomplete: [{
47
62
  type: Input
48
63
  }], enableClear$: [{
@@ -51,5 +66,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
51
66
  type: Input
52
67
  }], iconPrefix: [{
53
68
  type: Input
69
+ }], suffixCommand: [{
70
+ type: Input
71
+ }], inputMode: [{
72
+ type: Input
54
73
  }] } });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvc3RyaW5nLWlucHV0L3N0cmluZy1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1zL3N0cmluZy1pbnB1dC9zdHJpbmctaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0YsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7Ozs7Ozs7Ozs7QUFPOUUsTUFBTSxPQUFPLG9CQUFxQixTQUFRLDJCQUFtQztJQUVsRSxZQUFZLENBQVM7SUFHckIsaUNBQWUsT0FBTyxDQUFDLENBQUEsVUFBbUIsQ0FBQSxDQUFDLENBQUM7SUFBNUMsSUFBQSxZQUFZLGtEQUFnQztJQUE1QyxJQUFBLFlBQVksd0RBQWdDO0lBRzVDLGdDQUFjLEtBQUssQ0FBQztJQUFwQixJQUFBLFdBQVcsaURBQVM7SUFBcEIsSUFBQSxXQUFXLHVEQUFTO0lBRXBCLFVBQVUsQ0FBUztJQUduQixZQUFZLENBQWdCO0lBRXJDO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFDUixNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6RixJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ3RDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDcEYsQ0FBQzt1R0F0QlUsb0JBQW9COzJGQUFwQixvQkFBb0IsNk1DVGpDLDgxQkFvQkE7O0FETlc7SUFEQyxPQUFPLEVBQUU7O3dEQUNrQztBQUc1QztJQURDLGlCQUFpQixFQUFFOzt1REFDQTsyRkFSbEIsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGtCQUFrQjswRUFNbkIsWUFBWTtzQkFBcEIsS0FBSztnQkFHRyxZQUFZO3NCQURwQixLQUFLO2dCQUlHLFdBQVc7c0JBRG5CLEtBQUs7Z0JBR0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1hbmQsIERzbCwgUHJveGlmeSwgcHJveGlmeSwgU3RvcmVJblZhbHVlTW9kZWwsIFZhbHVlTW9kZWx9IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCB7QWJzdHJhY3RWYWx1ZUlucHV0Q29tcG9uZW50fSBmcm9tICcuLi9hYnN0cmFjdC12YWx1ZS1pbnB1dC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhdXAtc3RyaW5nLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N0cmluZy1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3N0cmluZy1pbnB1dC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFN0cmluZ0lucHV0Q29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RWYWx1ZUlucHV0Q29tcG9uZW50PHN0cmluZz4ge1xuXG4gIEBJbnB1dCgpIGF1dG9jb21wbGV0ZTogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIEBQcm94aWZ5KClcbiAgYWNjZXNzb3IgZW5hYmxlQ2xlYXIkID0gcHJveGlmeShWYWx1ZU1vZGVsPGJvb2xlYW4+KTtcblxuICBASW5wdXQoKSBAU3RvcmVJblZhbHVlTW9kZWwoKVxuICBhY2Nlc3NvciBlbmFibGVDbGVhciA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGljb25QcmVmaXg6IHN0cmluZztcblxuXG4gIHJlYWRvbmx5IGNsZWFyQ29tbWFuZDogQ29tbWFuZDx2b2lkPjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIGNvbnN0IHsgY2hhaW4sIHZhbHVlT2YsIGJlZm9yZSwgd2hlbiwgYWZ0ZXIsIG9ic2VydmUsIHN3aXRjaE9uIH0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG4gICAgdGhpcy5jbGVhckNvbW1hbmQgPSBDb21tYW5kLmNyZWF0ZSgoKSA9PiB7XG4gICAgICB0aGlzLmNvbXBvbmVudFZhbHVlJC52YWx1ZSA9IFwiXCI7XG4gICAgfSk7XG4gICAgdGhpcy5jbGVhckNvbW1hbmQuZGlzYWJsZVdoaWxlKGNoYWluLnN0cmluZ1ZhbHVlKHRoaXMuY29tcG9uZW50VmFsdWUkKS5pc0JsYW5rKCkpO1xuICB9XG5cbn1cbiIsIjxtYXQtZm9ybS1maWVsZCBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCI+XG4gIDxtYXQtbGFiZWwgKm5nSWY9XCJsYWJlbFwiPnt7bGFiZWx9fTwvbWF0LWxhYmVsPlxuICA8aW5wdXQgbWF0SW5wdXRcbiAgICAgICAgIHBsYWNlaG9sZGVyPVwie3twbGFjZWhvbGRlcn19XCJcbiAgICAgICAgIFthdHRyLmF1dG9jb21wbGV0ZV09XCJhdXRvY29tcGxldGVcIlxuICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21wb25lbnRWYWx1ZSQudmFsdWVcIlxuICAgICAgICAgW2Rpc2FibGVkXT1cIiFlbmFibGVkJC52YWx1ZVwiXG4gICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJub3RpZnlFbnRlcktleSgpXCJcbiAgICAgICAgIChrZXlkb3duLmVzY2FwZSk9XCJub3RpZnlFc2NhcGVLZXkoKVwiXG4gICAgICAgICBbcGVjdGluRm9jdXNCaW5kaW5nXT1cImZvY3VzQ29udGV4dFwiXG4gICAgICAgICBbZXJyb3JTdGF0ZU1hdGNoZXJdPVwiZXJyb3JTdGF0ZU1hdGNoZXJcIlxuICA+XG4gIDxtYXQtaGludCAqbmdJZj1cInNob3dIaW50XCI+e3toaW50fX08L21hdC1oaW50PlxuICA8bWF0LWVycm9yICpuZ0lmPVwiaGFzRXJyb3JzXCI+e3tmaXJzdEVycm9yfX08L21hdC1lcnJvcj5cbiAgPGF1cC1pY29uICpuZ0lmPVwiaWNvblByZWZpeFwiIG1hdFByZWZpeCBbaWNvbl09XCJpY29uUHJlZml4XCI+PC9hdXAtaWNvbj5cbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gbWF0U3VmZml4ICpuZ0lmPVwiZW5hYmxlQ2xlYXJcIiBbcGVjdGluQ29tbWFuZF09XCJjbGVhckNvbW1hbmRcIj5cbiAgICA8YXVwLWljb24gaWNvbj1cIm1hdDpjbG9zZVwiPjwvYXVwLWljb24+XG4gIDwvYnV0dG9uPlxuPC9tYXQtZm9ybS1maWVsZD5cblxuIl19
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvc3RyaW5nLWlucHV0L3N0cmluZy1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1zL3N0cmluZy1pbnB1dC9zdHJpbmctaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9GLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7Ozs7Ozs7QUFPaEYsTUFBTSxPQUFPLG9CQUFxQixTQUFRLDJCQUFtQztJQUVsRSxZQUFZLENBQVM7SUFHckIsaUNBQWUsT0FBTyxDQUFDLENBQUEsVUFBbUIsQ0FBQSxDQUFDLENBQUM7SUFBNUMsSUFBQSxZQUFZLGtEQUFnQztJQUE1QyxJQUFBLFlBQVksd0RBQWdDO0lBRzVDLGdDQUFjLEtBQUssQ0FBQztJQUFwQixJQUFBLFdBQVcsaURBQVM7SUFBcEIsSUFBQSxXQUFXLHVEQUFTO0lBRXBCLFVBQVUsQ0FBUztJQUduQixrQ0FBeUIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQTFDLElBQUEsYUFBYSxtREFBNkI7SUFBMUMsSUFBQSxhQUFhLHlEQUE2QjtJQUduRCxTQUFTLEdBQXdFLE1BQU0sQ0FBQztJQUUvRSxZQUFZLENBQWdCO0lBRTVCLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRTlDO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFDUixNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6RixJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ3RDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNsQyxDQUFDLENBQUM7YUFDQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDckMsV0FBVyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEUsQ0FBQzt1R0F0Q1Usb0JBQW9COzJGQUFwQixvQkFBb0IscVFDVGpDLDYrQkFzQkE7O0FEUlc7SUFEQyxPQUFPLEVBQUU7O3dEQUNrQztBQUc1QztJQURDLGlCQUFpQixFQUFFOzt1REFDQTtBQUtwQjtJQURDLE9BQU8sRUFBRTs4QkFDSyxPQUFPO3lEQUFvQjsyRkFieEMsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGtCQUFrQjswRUFNbkIsWUFBWTtzQkFBcEIsS0FBSztnQkFHRyxZQUFZO3NCQURwQixLQUFLO2dCQUlHLFdBQVc7c0JBRG5CLEtBQUs7Z0JBR0csVUFBVTtzQkFBbEIsS0FBSztnQkFHRyxhQUFhO3NCQURyQixLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1hbmQsIERzbCwgUHJveGlmeSwgcHJveGlmeSwgU3RvcmVJblZhbHVlTW9kZWwsIFZhbHVlTW9kZWwgfSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgeyBBYnN0cmFjdFZhbHVlSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi9hYnN0cmFjdC12YWx1ZS1pbnB1dC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhdXAtc3RyaW5nLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N0cmluZy1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3N0cmluZy1pbnB1dC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFN0cmluZ0lucHV0Q29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RWYWx1ZUlucHV0Q29tcG9uZW50PHN0cmluZz4ge1xuXG4gIEBJbnB1dCgpIGF1dG9jb21wbGV0ZTogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIEBQcm94aWZ5KClcbiAgYWNjZXNzb3IgZW5hYmxlQ2xlYXIkID0gcHJveGlmeShWYWx1ZU1vZGVsPGJvb2xlYW4+KTtcblxuICBASW5wdXQoKSBAU3RvcmVJblZhbHVlTW9kZWwoKVxuICBhY2Nlc3NvciBlbmFibGVDbGVhciA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGljb25QcmVmaXg6IHN0cmluZztcblxuICBASW5wdXQoKSBAUHJveGlmeSgpXG4gIGFjY2Vzc29yIHN1ZmZpeENvbW1hbmQ6IENvbW1hbmQgPSBwcm94aWZ5KENvbW1hbmQpO1xuXG4gIEBJbnB1dCgpXG4gIGlucHV0TW9kZTogJ3RleHQnIHwgJ2RlY2ltYWwnIHwgJ251bWVyaWMnIHwgJ3RlbCcgfCAnc2VhcmNoJyB8ICdlbWFpbCcgfCAndXJsJyA9ICd0ZXh0JztcblxuICByZWFkb25seSBjbGVhckNvbW1hbmQ6IENvbW1hbmQ8dm9pZD47XG5cbiAgcmVhZG9ubHkgZWxlbWVudFJlZiA9IHRoaXMuaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgY29uc3QgeyBjaGFpbiwgdmFsdWVPZiwgYmVmb3JlLCB3aGVuLCBhZnRlciwgb2JzZXJ2ZSwgc3dpdGNoT24gfSA9IERzbC5kaXNwb3NlV2l0aCh0aGlzKTtcbiAgICB0aGlzLmNsZWFyQ29tbWFuZCA9IENvbW1hbmQuY3JlYXRlKCgpID0+IHtcbiAgICAgIHRoaXMuY29tcG9uZW50VmFsdWUkLnZhbHVlID0gJyc7XG4gICAgfSlcbiAgICAgIC53aXRoRmFjZSh7IGljb246ICgpID0+ICdtYXQ6Y2xlYXInIH0pXG4gICAgICAuZW5hYmxlV2hpbGUoY2hhaW4uc3RyaW5nVmFsdWUodGhpcy5jb21wb25lbnRWYWx1ZSQpLmlzTm90QmxhbmsoKSk7XG4gIH1cblxuICBnZXQgaGFzU3VmZml4Q29tbWFuZCgpIHtcbiAgICByZXR1cm4gUHJveGlmeS5oYXNUYXJnZXQodGhpcy5zdWZmaXhDb21tYW5kKTtcbiAgfVxuXG4gIHNlbGVjdCgpIHtcbiAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpLnNlbGVjdCgpO1xuICB9XG5cbn1cbiIsIjxtYXQtZm9ybS1maWVsZCBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCI+XG4gIDxtYXQtbGFiZWwgKm5nSWY9XCJsYWJlbFwiPnt7bGFiZWx9fTwvbWF0LWxhYmVsPlxuICA8aW5wdXQgbWF0SW5wdXRcbiAgICAgICAgIHBsYWNlaG9sZGVyPVwie3twbGFjZWhvbGRlcn19XCJcbiAgICAgICAgIFthdHRyLmlucHV0bW9kZV09XCJpbnB1dE1vZGVcIlxuICAgICAgICAgW2F0dHIuYXV0b2NvbXBsZXRlXT1cImF1dG9jb21wbGV0ZVwiXG4gICAgICAgICBbKG5nTW9kZWwpXT1cImNvbXBvbmVudFZhbHVlJC52YWx1ZVwiXG4gICAgICAgICBbZGlzYWJsZWRdPVwiIWVuYWJsZWQkLnZhbHVlXCJcbiAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm5vdGlmeUVudGVyS2V5KClcIlxuICAgICAgICAgKGtleWRvd24uZXNjYXBlKT1cIm5vdGlmeUVzY2FwZUtleSgpXCJcbiAgICAgICAgIFtwZWN0aW5Gb2N1c0JpbmRpbmddPVwiZm9jdXNDb250ZXh0XCJcbiAgICAgICAgIFtlcnJvclN0YXRlTWF0Y2hlcl09XCJlcnJvclN0YXRlTWF0Y2hlclwiXG4gID5cbiAgPG1hdC1oaW50ICpuZ0lmPVwic2hvd0hpbnRcIj57e2hpbnR9fTwvbWF0LWhpbnQ+XG4gIDxtYXQtZXJyb3IgKm5nSWY9XCJoYXNFcnJvcnMoKVwiPnt7Zmlyc3RFcnJvcn19PC9tYXQtZXJyb3I+XG4gIDxhdXAtaWNvbiAqbmdJZj1cImljb25QcmVmaXhcIiBtYXRQcmVmaXggW2ljb25dPVwiaWNvblByZWZpeFwiPjwvYXVwLWljb24+XG4gIDxzcGFuIG1hdFN1ZmZpeD5cbiAgICA8YXVwLWNvbW1hbmQgKm5nSWY9XCJlbmFibGVDbGVhclwiIFtjb21tYW5kXT1cImNsZWFyQ29tbWFuZFwiIGRhdGEtY3k9XCJjbGVhckNvbW1hbmRcIj48L2F1cC1jb21tYW5kPlxuICAgIDxhdXAtY29tbWFuZCAqbmdJZj1cImhhc1N1ZmZpeENvbW1hbmRcIiBbY29tbWFuZF09XCJzdWZmaXhDb21tYW5kXCIgZGF0YS1jeT1cInN1ZmZpeENvbW1hbmRcIj48L2F1cC1jb21tYW5kPlxuICA8L3NwYW4+XG48L21hdC1mb3JtLWZpZWxkPlxuXG4iXX0=
@@ -1,4 +1,4 @@
1
- import { Component, Input } from '@angular/core';
1
+ import { Component, ElementRef, Input } from '@angular/core';
2
2
  import { AbstractValueInputComponent } from '../abstract-value-input.component';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@angular/common";
@@ -11,19 +11,23 @@ export class TextInputComponent extends AbstractValueInputComponent {
11
11
  // valueModel: Form.ValueModelBase<string> | MutableValueModel<string>;
12
12
  rows = 2;
13
13
  cols;
14
+ elementRef = this.inject(ElementRef);
14
15
  constructor() {
15
16
  super();
16
17
  // const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
17
18
  }
19
+ select() {
20
+ this.elementRef.nativeElement.querySelector('input').select();
21
+ }
18
22
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TextInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
19
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TextInputComponent, selector: "aup-text-input", inputs: { rows: "rows", cols: "cols" }, usesInheritance: true, ngImport: i0, template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <textarea matInput\n placeholder=\"{{placeholder}}\"\n [(ngModel)]=\"componentValue$.value\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n [rows]=\"rows\"\n [cols]=\"cols\"\n >\n </textarea>\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n\n", styles: ["button[disabled]{visibility:hidden}textarea{overflow:auto}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i5.FocusBindingDirective, selector: "[pectinFocusBinding]", inputs: ["pectinFocusBinding", "focusBindingTarget"] }] });
23
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TextInputComponent, selector: "aup-text-input", inputs: { rows: "rows", cols: "cols" }, usesInheritance: true, ngImport: i0, template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <textarea matInput\n placeholder=\"{{placeholder}}\"\n [(ngModel)]=\"componentValue$.value\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n [rows]=\"rows\"\n [cols]=\"cols\"\n >\n </textarea>\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors()\">{{firstError}}</mat-error>\n</mat-form-field>\n\n", styles: ["button[disabled]{visibility:hidden}textarea{overflow:auto}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i5.FocusBindingDirective, selector: "[pectinFocusBinding]", inputs: ["pectinFocusBinding", "focusBindingTarget"] }] });
20
24
  }
21
25
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TextInputComponent, decorators: [{
22
26
  type: Component,
23
- args: [{ selector: 'aup-text-input', template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <textarea matInput\n placeholder=\"{{placeholder}}\"\n [(ngModel)]=\"componentValue$.value\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n [rows]=\"rows\"\n [cols]=\"cols\"\n >\n </textarea>\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>\n</mat-form-field>\n\n", styles: ["button[disabled]{visibility:hidden}textarea{overflow:auto}\n"] }]
27
+ args: [{ selector: 'aup-text-input', template: "<mat-form-field [floatLabel]=\"floatLabel\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <textarea matInput\n placeholder=\"{{placeholder}}\"\n [(ngModel)]=\"componentValue$.value\"\n [disabled]=\"!enabled$.value\"\n (keydown.enter)=\"notifyEnterKey()\"\n (keydown.escape)=\"notifyEscapeKey()\"\n [pectinFocusBinding]=\"focusContext\"\n [errorStateMatcher]=\"errorStateMatcher\"\n [rows]=\"rows\"\n [cols]=\"cols\"\n >\n </textarea>\n <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>\n <mat-error *ngIf=\"hasErrors()\">{{firstError}}</mat-error>\n</mat-form-field>\n\n", styles: ["button[disabled]{visibility:hidden}textarea{overflow:auto}\n"] }]
24
28
  }], ctorParameters: function () { return []; }, propDecorators: { rows: [{
25
29
  type: Input
26
30
  }], cols: [{
27
31
  type: Input
28
32
  }] } });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1zL3RleHQtaW5wdXQvdGV4dC1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1zL3RleHQtaW5wdXQvdGV4dC1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7OztBQU85RSxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsMkJBQW1DO0lBRXpFLGtEQUFrRDtJQUNsRCx1RUFBdUU7SUFFOUQsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNULElBQUksQ0FBUztJQUV0QjtRQUNFLEtBQUssRUFBRSxDQUFDO1FBQ1IsNEZBQTRGO0lBQzlGLENBQUM7dUdBWFUsa0JBQWtCOzJGQUFsQixrQkFBa0IscUhDUi9CLDBxQkFrQkE7OzJGRFZhLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxnQkFBZ0I7MEVBU2pCLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBYnN0cmFjdFZhbHVlSW5wdXRDb21wb25lbnR9IGZyb20gJy4uL2Fic3RyYWN0LXZhbHVlLWlucHV0LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F1cC10ZXh0LWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RleHQtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90ZXh0LWlucHV0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgVGV4dElucHV0Q29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RWYWx1ZUlucHV0Q29tcG9uZW50PHN0cmluZz4ge1xuXG4gIC8vIEBJbnB1dCgpIEBQcm94aWZ5KHsgZGVsZWdhdGVUbzogJ2lucHV0TW9kZWwnIH0pXG4gIC8vIHZhbHVlTW9kZWw6IEZvcm0uVmFsdWVNb2RlbEJhc2U8c3RyaW5nPiB8IE11dGFibGVWYWx1ZU1vZGVsPHN0cmluZz47XG5cbiAgQElucHV0KCkgcm93cyA9IDI7XG4gIEBJbnB1dCgpIGNvbHM6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIC8vIGNvbnN0IHsgY2hhaW4sIHZhbHVlT2YsIGJlZm9yZSwgd2hlbiwgYWZ0ZXIsIG9ic2VydmUsIHN3aXRjaE9uIH0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG4gIH1cblxufVxuIiwiPG1hdC1mb3JtLWZpZWxkIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWxcIj5cbiAgPG1hdC1sYWJlbCAqbmdJZj1cImxhYmVsXCI+e3tsYWJlbH19PC9tYXQtbGFiZWw+XG4gIDx0ZXh0YXJlYSBtYXRJbnB1dFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7e3BsYWNlaG9sZGVyfX1cIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21wb25lbnRWYWx1ZSQudmFsdWVcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFlbmFibGVkJC52YWx1ZVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJub3RpZnlFbnRlcktleSgpXCJcbiAgICAgICAgICAgIChrZXlkb3duLmVzY2FwZSk9XCJub3RpZnlFc2NhcGVLZXkoKVwiXG4gICAgICAgICAgICBbcGVjdGluRm9jdXNCaW5kaW5nXT1cImZvY3VzQ29udGV4dFwiXG4gICAgICAgICAgICBbZXJyb3JTdGF0ZU1hdGNoZXJdPVwiZXJyb3JTdGF0ZU1hdGNoZXJcIlxuICAgICAgICAgICAgW3Jvd3NdPVwicm93c1wiXG4gICAgICAgICAgICBbY29sc109XCJjb2xzXCJcbiAgPlxuICA8L3RleHRhcmVhPlxuICA8bWF0LWhpbnQgKm5nSWY9XCJzaG93SGludFwiPnt7aGludH19PC9tYXQtaGludD5cbiAgPG1hdC1lcnJvciAqbmdJZj1cImhhc0Vycm9yc1wiPnt7Zmlyc3RFcnJvcn19PC9tYXQtZXJyb3I+XG48L21hdC1mb3JtLWZpZWxkPlxuXG4iXX0=
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1zL3RleHQtaW5wdXQvdGV4dC1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1zL3RleHQtaW5wdXQvdGV4dC1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7Ozs7Ozs7QUFPOUUsTUFBTSxPQUFPLGtCQUFtQixTQUFRLDJCQUFtQztJQUV6RSxrREFBa0Q7SUFDbEQsdUVBQXVFO0lBRTlELElBQUksR0FBRyxDQUFDLENBQUM7SUFDVCxJQUFJLENBQVM7SUFFYixVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUU3QztRQUNFLEtBQUssRUFBRSxDQUFDO1FBQ1IsNEZBQTRGO0lBQzlGLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFBO0lBQy9ELENBQUM7dUdBakJVLGtCQUFrQjsyRkFBbEIsa0JBQWtCLHFIQ1IvQiw0cUJBa0JBOzsyRkRWYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsZ0JBQWdCOzBFQVNqQixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWJzdHJhY3RWYWx1ZUlucHV0Q29tcG9uZW50fSBmcm9tICcuLi9hYnN0cmFjdC12YWx1ZS1pbnB1dC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhdXAtdGV4dC1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXh0LWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGV4dC1pbnB1dC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFRleHRJbnB1dENvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0VmFsdWVJbnB1dENvbXBvbmVudDxzdHJpbmc+IHtcblxuICAvLyBASW5wdXQoKSBAUHJveGlmeSh7IGRlbGVnYXRlVG86ICdpbnB1dE1vZGVsJyB9KVxuICAvLyB2YWx1ZU1vZGVsOiBGb3JtLlZhbHVlTW9kZWxCYXNlPHN0cmluZz4gfCBNdXRhYmxlVmFsdWVNb2RlbDxzdHJpbmc+O1xuXG4gIEBJbnB1dCgpIHJvd3MgPSAyO1xuICBASW5wdXQoKSBjb2xzOiBudW1iZXI7XG5cbiAgcmVhZG9ubHkgZWxlbWVudFJlZiA9IHRoaXMuaW5qZWN0KEVsZW1lbnRSZWYpXG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICAvLyBjb25zdCB7IGNoYWluLCB2YWx1ZU9mLCBiZWZvcmUsIHdoZW4sIGFmdGVyLCBvYnNlcnZlLCBzd2l0Y2hPbiB9ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMpO1xuICB9XG5cbiAgc2VsZWN0KCkge1xuICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jykuc2VsZWN0KClcbiAgfVxuXG5cbn1cbiIsIjxtYXQtZm9ybS1maWVsZCBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCI+XG4gIDxtYXQtbGFiZWwgKm5nSWY9XCJsYWJlbFwiPnt7bGFiZWx9fTwvbWF0LWxhYmVsPlxuICA8dGV4dGFyZWEgbWF0SW5wdXRcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3twbGFjZWhvbGRlcn19XCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tcG9uZW50VmFsdWUkLnZhbHVlXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZW5hYmxlZCQudmFsdWVcIlxuICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwibm90aWZ5RW50ZXJLZXkoKVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5lc2NhcGUpPVwibm90aWZ5RXNjYXBlS2V5KClcIlxuICAgICAgICAgICAgW3BlY3RpbkZvY3VzQmluZGluZ109XCJmb2N1c0NvbnRleHRcIlxuICAgICAgICAgICAgW2Vycm9yU3RhdGVNYXRjaGVyXT1cImVycm9yU3RhdGVNYXRjaGVyXCJcbiAgICAgICAgICAgIFtyb3dzXT1cInJvd3NcIlxuICAgICAgICAgICAgW2NvbHNdPVwiY29sc1wiXG4gID5cbiAgPC90ZXh0YXJlYT5cbiAgPG1hdC1oaW50ICpuZ0lmPVwic2hvd0hpbnRcIj57e2hpbnR9fTwvbWF0LWhpbnQ+XG4gIDxtYXQtZXJyb3IgKm5nSWY9XCJoYXNFcnJvcnMoKVwiPnt7Zmlyc3RFcnJvcn19PC9tYXQtZXJyb3I+XG48L21hdC1mb3JtLWZpZWxkPlxuXG4iXX0=
@@ -1,4 +1,5 @@
1
- import { Component, HostBinding, Input } from '@angular/core';
1
+ /* eslint-disable @angular-eslint/no-host-metadata-property */
2
+ import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';
2
3
  import { Enum } from 'typescript-string-enums';
3
4
  import * as i0 from "@angular/core";
4
5
  import * as i1 from "@angular/common";
@@ -35,11 +36,13 @@ export class IconComponent {
35
36
  return `fa-${this.suffix}`;
36
37
  }
37
38
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: IconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
38
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: IconComponent, selector: "aup-icon", inputs: { icon: "icon" }, host: { properties: { "attr.icon": "this.icon" } }, ngImport: i0, template: "<ng-container [ngSwitch]=\"prefix\">\n\n <mat-icon *ngSwitchCase=\"iconPrefix.SVG\"\n [svgIcon]=\"suffix\"\n class=\"svgIcon\">\n </mat-icon>\n\n <mat-icon *ngSwitchCase=\"iconPrefix.MATERIAL\">\n {{suffix}}\n </mat-icon>\n\n <div *ngSwitchCase=\"iconPrefix.FONT_AWESOME\" class=\"faIconWrapper\">\n <i class=\"fa-solid\" [class]=\"faIcon\"></i>\n </div>\n\n <mat-icon *ngSwitchDefault\n [matTooltip]=\"errorMessage\">\n bug_report\n </mat-icon>\n\n</ng-container>\n\n", styles: [":host{display:inline-flex;--resolved-size: var(--aup-icon-size, 24px);width:var(--resolved-size) fa-icon;width-vertical-align:middle}:host .faIconWrapper{display:flex;flex-direction:row;align-items:center;justify-content:center;width:var(--resolved-size);height:var(--resolved-size)}:host .svgIcon{width:var(--resolved-size);height:var(--resolved-size)}:host :host(.mat-chip-remove){--aup-icon-size: 18px}:host mat-icon{font-size:var(--resolved-size);width:var(--resolved-size);height:var(--resolved-size);margin-right:0!important}\n"], dependencies: [{ kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
39
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: IconComponent, selector: "aup-icon", inputs: { icon: "icon" }, host: { properties: { "attr.icon": "this.icon" }, classAttribute: "mat-icon" }, ngImport: i0, template: "<ng-container [ngSwitch]=\"prefix\">\n\n <mat-icon *ngSwitchCase=\"iconPrefix.SVG\"\n [svgIcon]=\"suffix\"\n class=\"svgIcon\">\n </mat-icon>\n\n <mat-icon *ngSwitchCase=\"iconPrefix.MATERIAL\">\n {{suffix}}\n </mat-icon>\n\n <div *ngSwitchCase=\"iconPrefix.FONT_AWESOME\" class=\"faIconWrapper\">\n <i class=\"fa-solid\" [class]=\"faIcon\"></i>\n </div>\n\n <mat-icon *ngSwitchDefault\n [matTooltip]=\"errorMessage\">\n bug_report\n </mat-icon>\n\n</ng-container>\n\n", styles: [":host{display:inline-flex;--resolved-size: var(--aup-icon-size, 24px);width:var(--resolved-size)!important;min-width:var(--resolved-size)!important;height:var(--resolved-size)!important;min-height:var(--resolved-size)!important}:host fa-icon{vertical-align:middle}:host .faIconWrapper{display:flex;flex-direction:row;align-items:center;justify-content:center;width:var(--resolved-size)!important;height:var(--resolved-size)!important}:host .svgIcon{width:var(--resolved-size)!important;height:var(--resolved-size)!important}:host :host(.mat-chip-remove){--aup-icon-size: 18px}:host mat-icon{font-size:var(--resolved-size)!important;width:var(--resolved-size)!important;height:var(--resolved-size)!important;margin-right:0!important}\n"], dependencies: [{ kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
39
40
  }
40
41
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: IconComponent, decorators: [{
41
42
  type: Component,
42
- args: [{ selector: 'aup-icon', template: "<ng-container [ngSwitch]=\"prefix\">\n\n <mat-icon *ngSwitchCase=\"iconPrefix.SVG\"\n [svgIcon]=\"suffix\"\n class=\"svgIcon\">\n </mat-icon>\n\n <mat-icon *ngSwitchCase=\"iconPrefix.MATERIAL\">\n {{suffix}}\n </mat-icon>\n\n <div *ngSwitchCase=\"iconPrefix.FONT_AWESOME\" class=\"faIconWrapper\">\n <i class=\"fa-solid\" [class]=\"faIcon\"></i>\n </div>\n\n <mat-icon *ngSwitchDefault\n [matTooltip]=\"errorMessage\">\n bug_report\n </mat-icon>\n\n</ng-container>\n\n", styles: [":host{display:inline-flex;--resolved-size: var(--aup-icon-size, 24px);width:var(--resolved-size) fa-icon;width-vertical-align:middle}:host .faIconWrapper{display:flex;flex-direction:row;align-items:center;justify-content:center;width:var(--resolved-size);height:var(--resolved-size)}:host .svgIcon{width:var(--resolved-size);height:var(--resolved-size)}:host :host(.mat-chip-remove){--aup-icon-size: 18px}:host mat-icon{font-size:var(--resolved-size);width:var(--resolved-size);height:var(--resolved-size);margin-right:0!important}\n"] }]
43
+ args: [{ selector: 'aup-icon', changeDetection: ChangeDetectionStrategy.OnPush, host: {
44
+ class: "mat-icon" // this ensures angular form styles that target mat icon also work with us
45
+ }, template: "<ng-container [ngSwitch]=\"prefix\">\n\n <mat-icon *ngSwitchCase=\"iconPrefix.SVG\"\n [svgIcon]=\"suffix\"\n class=\"svgIcon\">\n </mat-icon>\n\n <mat-icon *ngSwitchCase=\"iconPrefix.MATERIAL\">\n {{suffix}}\n </mat-icon>\n\n <div *ngSwitchCase=\"iconPrefix.FONT_AWESOME\" class=\"faIconWrapper\">\n <i class=\"fa-solid\" [class]=\"faIcon\"></i>\n </div>\n\n <mat-icon *ngSwitchDefault\n [matTooltip]=\"errorMessage\">\n bug_report\n </mat-icon>\n\n</ng-container>\n\n", styles: [":host{display:inline-flex;--resolved-size: var(--aup-icon-size, 24px);width:var(--resolved-size)!important;min-width:var(--resolved-size)!important;height:var(--resolved-size)!important;min-height:var(--resolved-size)!important}:host fa-icon{vertical-align:middle}:host .faIconWrapper{display:flex;flex-direction:row;align-items:center;justify-content:center;width:var(--resolved-size)!important;height:var(--resolved-size)!important}:host .svgIcon{width:var(--resolved-size)!important;height:var(--resolved-size)!important}:host :host(.mat-chip-remove){--aup-icon-size: 18px}:host mat-icon{font-size:var(--resolved-size)!important;width:var(--resolved-size)!important;height:var(--resolved-size)!important;margin-right:0!important}\n"] }]
43
46
  }], propDecorators: { icon: [{
44
47
  type: Input
45
48
  }, {
@@ -53,4 +56,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
53
56
  MATERIAL: 'mat'
54
57
  });
55
58
  })(IconComponent || (IconComponent = {}));
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9jb21wb25lbnRzL2ljb24vaWNvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9jb21wb25lbnRzL2ljb24vaWNvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHlCQUF5QixDQUFDOzs7OztBQU83QyxNQUFNLE9BQU8sYUFBYTtJQUV4QixLQUFLLENBQVM7SUFFZCxNQUFNLENBQVM7SUFDZixNQUFNLENBQVM7SUFDZixZQUFZLENBQVM7SUFFckIsZUFBZSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxRSxVQUFVLEdBQUcsYUFBYSxDQUFDLFVBQVUsQ0FBQztJQUV0QyxJQUVJLElBQUksQ0FBQyxRQUFnQjtRQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztRQUN0QixJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2IsSUFBSSxDQUFDLFlBQVksR0FBRyxhQUFhLENBQUM7WUFDbEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7WUFDeEIsT0FBTztTQUNSO1FBRUQsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QyxJQUFJLFVBQVUsR0FBRyxDQUFDLEVBQUU7WUFDbEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDN0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDL0M7UUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZixJQUFJLENBQUMsWUFBWSxHQUFHLGlCQUFpQixRQUFRLEdBQUcsQ0FBQztTQUNsRDtRQUNELElBQUksQ0FBQyxZQUFZLEdBQUcseUNBQXlDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQztJQUN2SCxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLE1BQU0sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzdCLENBQUM7dUdBdENVLGFBQWE7MkZBQWIsYUFBYSw4SENSMUIsd2dCQXNCQTs7MkZEZGEsYUFBYTtrQkFMekIsU0FBUzsrQkFDRSxVQUFVOzhCQWlCaEIsSUFBSTtzQkFGUCxLQUFLOztzQkFDTCxXQUFXO3VCQUFDLFdBQVc7O0FBK0IxQixXQUFpQixhQUFhO0lBRWYsd0JBQVUsR0FBRyxJQUFJLENBQUM7UUFDN0IsR0FBRyxFQUFFLEtBQUs7UUFDVixZQUFZLEVBQUUsSUFBSTtRQUNsQixRQUFRLEVBQUUsS0FBSztLQUNoQixDQUFDLENBQUM7QUFHTCxDQUFDLEVBVGdCLGFBQWEsS0FBYixhQUFhLFFBUzdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0VudW19IGZyb20gJ3R5cGVzY3JpcHQtc3RyaW5nLWVudW1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXVwLWljb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vaWNvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ljb24uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBJY29uQ29tcG9uZW50IHtcblxuICBfaWNvbjogc3RyaW5nO1xuXG4gIHByZWZpeDogc3RyaW5nO1xuICBzdWZmaXg6IHN0cmluZztcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmc7XG5cbiAgYWxsb3dlZFByZWZpeGVzID0gRW51bS52YWx1ZXMoSWNvbkNvbXBvbmVudC5JY29uUHJlZml4KS5tYXAocCA9PiBgJHtwfTpgKTtcbiAgaWNvblByZWZpeCA9IEljb25Db21wb25lbnQuSWNvblByZWZpeDtcblxuICBASW5wdXQoKVxuICBASG9zdEJpbmRpbmcoXCJhdHRyLmljb25cIilcbiAgc2V0IGljb24oaWNvbk5hbWU6IHN0cmluZykge1xuICAgIHRoaXMuX2ljb24gPSBpY29uTmFtZTtcbiAgICBpZiAoIWljb25OYW1lKSB7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICdpY29uIGlzIG5pbCc7XG4gICAgICB0aGlzLnByZWZpeCA9IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb2xvbkluZGV4ID0gaWNvbk5hbWUuaW5kZXhPZignOicpO1xuICAgIGlmIChjb2xvbkluZGV4ID4gMCkge1xuICAgICAgdGhpcy5wcmVmaXggPSB0aGlzLmljb24uc2xpY2UoMCwgY29sb25JbmRleCk7XG4gICAgICB0aGlzLnN1ZmZpeCA9IHRoaXMuaWNvbi5zbGljZShjb2xvbkluZGV4ICsgMSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnByZWZpeCkge1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBgVW5rbm93biBpY29uIFwiJHtpY29uTmFtZX1cImA7XG4gICAgfVxuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gYFVua25vd24gaWNvbiBwcmVmaXgsIGV4cGVjdGVkIG9uZSBvZiBbJHt0aGlzLmFsbG93ZWRQcmVmaXhlcy5qb2luKCcsJyl9XSBnb3QgXCIke3RoaXMucHJlZml4fTpcImA7XG4gIH1cblxuICBnZXQgaWNvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9pY29uO1xuICB9XG5cbiAgZ2V0IGZhSWNvbigpOnN0cmluZyB7XG4gICAgcmV0dXJuIGBmYS0ke3RoaXMuc3VmZml4fWA7XG4gIH1cblxufVxuXG5cbmV4cG9ydCBuYW1lc3BhY2UgSWNvbkNvbXBvbmVudCB7XG5cbiAgZXhwb3J0IGNvbnN0IEljb25QcmVmaXggPSBFbnVtKHtcbiAgICBTVkc6ICdzdmcnLFxuICAgIEZPTlRfQVdFU09NRTogJ2ZhJyxcbiAgICBNQVRFUklBTDogJ21hdCdcbiAgfSk7XG4gIGV4cG9ydCB0eXBlIEljb25QcmVmaXggPSBFbnVtPHR5cGVvZiBJY29uUHJlZml4PjtcblxufVxuIiwiPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwicHJlZml4XCI+XG5cbiAgPG1hdC1pY29uICpuZ1N3aXRjaENhc2U9XCJpY29uUHJlZml4LlNWR1wiXG4gICAgICAgICAgICBbc3ZnSWNvbl09XCJzdWZmaXhcIlxuICAgICAgICAgICAgY2xhc3M9XCJzdmdJY29uXCI+XG4gIDwvbWF0LWljb24+XG5cbiAgPG1hdC1pY29uICpuZ1N3aXRjaENhc2U9XCJpY29uUHJlZml4Lk1BVEVSSUFMXCI+XG4gICAge3tzdWZmaXh9fVxuICA8L21hdC1pY29uPlxuXG4gIDxkaXYgKm5nU3dpdGNoQ2FzZT1cImljb25QcmVmaXguRk9OVF9BV0VTT01FXCIgY2xhc3M9XCJmYUljb25XcmFwcGVyXCI+XG4gICAgPGkgY2xhc3M9XCJmYS1zb2xpZFwiIFtjbGFzc109XCJmYUljb25cIj48L2k+XG4gIDwvZGl2PlxuXG4gIDxtYXQtaWNvbiAqbmdTd2l0Y2hEZWZhdWx0XG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJlcnJvck1lc3NhZ2VcIj5cbiAgICBidWdfcmVwb3J0XG4gIDwvbWF0LWljb24+XG5cbjwvbmctY29udGFpbmVyPlxuXG4iXX0=
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9jb21wb25lbnRzL2ljb24vaWNvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9jb21wb25lbnRzL2ljb24vaWNvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw4REFBOEQ7QUFDOUQsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3JGLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7QUFXN0MsTUFBTSxPQUFPLGFBQWE7SUFFeEIsS0FBSyxDQUFTO0lBRWQsTUFBTSxDQUFTO0lBQ2YsTUFBTSxDQUFTO0lBQ2YsWUFBWSxDQUFTO0lBRXJCLGVBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUUsVUFBVSxHQUFHLGFBQWEsQ0FBQyxVQUFVLENBQUM7SUFFdEMsSUFFSSxJQUFJLENBQUMsUUFBZ0I7UUFDdkIsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUM7UUFDdEIsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNiLElBQUksQ0FBQyxZQUFZLEdBQUcsYUFBYSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO1lBQ3hCLE9BQU87U0FDUjtRQUVELE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekMsSUFBSSxVQUFVLEdBQUcsQ0FBQyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQzdDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQy9DO1FBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2YsSUFBSSxDQUFDLFlBQVksR0FBRyxpQkFBaUIsUUFBUSxHQUFHLENBQUM7U0FDbEQ7UUFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLHlDQUF5QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUM7SUFDdkgsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUM3QixDQUFDO3VHQXRDVSxhQUFhOzJGQUFiLGFBQWEsMEpDYjFCLHdnQkFzQkE7OzJGRFRhLGFBQWE7a0JBVHpCLFNBQVM7K0JBQ0UsVUFBVSxtQkFHSCx1QkFBdUIsQ0FBQyxNQUFNLFFBQ3pDO3dCQUNKLEtBQUssRUFBRSxVQUFVLENBQUUsMEVBQTBFO3FCQUM5Rjs4QkFlRyxJQUFJO3NCQUZQLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsV0FBVzs7QUErQjFCLFdBQWlCLGFBQWE7SUFFZix3QkFBVSxHQUFHLElBQUksQ0FBQztRQUM3QixHQUFHLEVBQUUsS0FBSztRQUNWLFlBQVksRUFBRSxJQUFJO1FBQ2xCLFFBQVEsRUFBRSxLQUFLO0tBQ2hCLENBQUMsQ0FBQztBQUdMLENBQUMsRUFUZ0IsYUFBYSxLQUFiLGFBQWEsUUFTN0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvbm8taG9zdC1tZXRhZGF0YS1wcm9wZXJ0eSAqL1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtFbnVtfSBmcm9tICd0eXBlc2NyaXB0LXN0cmluZy1lbnVtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F1cC1pY29uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ljb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pY29uLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7XG4gICAgY2xhc3M6IFwibWF0LWljb25cIiAgLy8gdGhpcyBlbnN1cmVzIGFuZ3VsYXIgZm9ybSBzdHlsZXMgdGhhdCB0YXJnZXQgbWF0IGljb24gYWxzbyB3b3JrIHdpdGggdXNcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBJY29uQ29tcG9uZW50IHtcblxuICBfaWNvbjogc3RyaW5nO1xuXG4gIHByZWZpeDogc3RyaW5nO1xuICBzdWZmaXg6IHN0cmluZztcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmc7XG5cbiAgYWxsb3dlZFByZWZpeGVzID0gRW51bS52YWx1ZXMoSWNvbkNvbXBvbmVudC5JY29uUHJlZml4KS5tYXAocCA9PiBgJHtwfTpgKTtcbiAgaWNvblByZWZpeCA9IEljb25Db21wb25lbnQuSWNvblByZWZpeDtcblxuICBASW5wdXQoKVxuICBASG9zdEJpbmRpbmcoXCJhdHRyLmljb25cIilcbiAgc2V0IGljb24oaWNvbk5hbWU6IHN0cmluZykge1xuICAgIHRoaXMuX2ljb24gPSBpY29uTmFtZTtcbiAgICBpZiAoIWljb25OYW1lKSB7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICdpY29uIGlzIG5pbCc7XG4gICAgICB0aGlzLnByZWZpeCA9IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb2xvbkluZGV4ID0gaWNvbk5hbWUuaW5kZXhPZignOicpO1xuICAgIGlmIChjb2xvbkluZGV4ID4gMCkge1xuICAgICAgdGhpcy5wcmVmaXggPSB0aGlzLmljb24uc2xpY2UoMCwgY29sb25JbmRleCk7XG4gICAgICB0aGlzLnN1ZmZpeCA9IHRoaXMuaWNvbi5zbGljZShjb2xvbkluZGV4ICsgMSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnByZWZpeCkge1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBgVW5rbm93biBpY29uIFwiJHtpY29uTmFtZX1cImA7XG4gICAgfVxuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gYFVua25vd24gaWNvbiBwcmVmaXgsIGV4cGVjdGVkIG9uZSBvZiBbJHt0aGlzLmFsbG93ZWRQcmVmaXhlcy5qb2luKCcsJyl9XSBnb3QgXCIke3RoaXMucHJlZml4fTpcImA7XG4gIH1cblxuICBnZXQgaWNvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9pY29uO1xuICB9XG5cbiAgZ2V0IGZhSWNvbigpOnN0cmluZyB7XG4gICAgcmV0dXJuIGBmYS0ke3RoaXMuc3VmZml4fWA7XG4gIH1cblxufVxuXG5cbmV4cG9ydCBuYW1lc3BhY2UgSWNvbkNvbXBvbmVudCB7XG5cbiAgZXhwb3J0IGNvbnN0IEljb25QcmVmaXggPSBFbnVtKHtcbiAgICBTVkc6ICdzdmcnLFxuICAgIEZPTlRfQVdFU09NRTogJ2ZhJyxcbiAgICBNQVRFUklBTDogJ21hdCdcbiAgfSk7XG4gIGV4cG9ydCB0eXBlIEljb25QcmVmaXggPSBFbnVtPHR5cGVvZiBJY29uUHJlZml4PjtcblxufVxuIiwiPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwicHJlZml4XCI+XG5cbiAgPG1hdC1pY29uICpuZ1N3aXRjaENhc2U9XCJpY29uUHJlZml4LlNWR1wiXG4gICAgICAgICAgICBbc3ZnSWNvbl09XCJzdWZmaXhcIlxuICAgICAgICAgICAgY2xhc3M9XCJzdmdJY29uXCI+XG4gIDwvbWF0LWljb24+XG5cbiAgPG1hdC1pY29uICpuZ1N3aXRjaENhc2U9XCJpY29uUHJlZml4Lk1BVEVSSUFMXCI+XG4gICAge3tzdWZmaXh9fVxuICA8L21hdC1pY29uPlxuXG4gIDxkaXYgKm5nU3dpdGNoQ2FzZT1cImljb25QcmVmaXguRk9OVF9BV0VTT01FXCIgY2xhc3M9XCJmYUljb25XcmFwcGVyXCI+XG4gICAgPGkgY2xhc3M9XCJmYS1zb2xpZFwiIFtjbGFzc109XCJmYUljb25cIj48L2k+XG4gIDwvZGl2PlxuXG4gIDxtYXQtaWNvbiAqbmdTd2l0Y2hEZWZhdWx0XG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJlcnJvck1lc3NhZ2VcIj5cbiAgICBidWdfcmVwb3J0XG4gIDwvbWF0LWljb24+XG5cbjwvbmctY29udGFpbmVyPlxuXG4iXX0=
@@ -1,21 +1,27 @@
1
1
  import { Directive, inject } from '@angular/core';
2
2
  import { MutableValueModel } from '@coolon/pectin';
3
- import { DisposableComponent } from "./disposable-component";
3
+ import { LoadingMonitor } from '../services/loading-monitor';
4
+ import { DisposableComponent } from './disposable-component';
4
5
  import * as i0 from "@angular/core";
5
6
  export class LoadableComponent extends DisposableComponent {
6
7
  #_loaded$ = new MutableValueModel();
7
8
  #asyncLoadables = [];
8
9
  #awaitedLoadables = [];
10
+ #loadTracker;
11
+ constructor() {
12
+ super();
13
+ this.#loadTracker = inject(LoadingMonitor, { optional: true })?.createTracker(this);
14
+ }
9
15
  get loaded$() {
10
16
  return this.#_loaded$.readonly$;
11
17
  }
12
18
  ngOnInit() {
13
19
  super.ngOnInit();
14
- this.#asyncLoadables.forEach(it => it.ensureLoaded());
20
+ this.loadDependencies();
21
+ }
22
+ loadDependencies() {
15
23
  if (this.#awaitedLoadables.length > 0) {
16
- Promise.all(this.#awaitedLoadables.map(it => {
17
- return it.ensureLoaded(); //.then(() => console.log(`${it.constructor.name} loaded`));
18
- })).then(() => {
24
+ Promise.all(this.#awaitedLoadables.map((it) => it.ensureLoaded())).then(() => {
19
25
  this.#_loaded$.value = true;
20
26
  });
21
27
  }
@@ -24,12 +30,17 @@ export class LoadableComponent extends DisposableComponent {
24
30
  }
25
31
  }
26
32
  injectLoadable(token, options) {
27
- const loadable = inject(token);
33
+ return this.registerLoadable(inject(token, options), options);
34
+ }
35
+ registerLoadable(loadable, options) {
36
+ const shouldWait = !options || options.wait === true;
37
+ if (shouldWait)
38
+ this.#loadTracker?.registerLoadableDependency(loadable);
28
39
  if (this.loaded$.value) {
29
40
  loadable.ensureLoaded();
30
41
  }
31
42
  else {
32
- if (!options || options.wait === true) {
43
+ if (shouldWait) {
33
44
  this.#awaitedLoadables.push(loadable);
34
45
  }
35
46
  else {
@@ -38,10 +49,10 @@ export class LoadableComponent extends DisposableComponent {
38
49
  }
39
50
  return loadable;
40
51
  }
41
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: LoadableComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive });
52
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: LoadableComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
42
53
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: LoadableComponent, usesInheritance: true, ngImport: i0 });
43
54
  }
44
55
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: LoadableComponent, decorators: [{
45
56
  type: Directive
46
- }] });
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGFibGUtY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvY29tcG9uZW50cy9sb2FkYWJsZS1jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQy9ELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHdCQUF3QixDQUFDOztBQUkzRCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsbUJBQW1CO0lBRXhELFNBQVMsR0FBRyxJQUFJLGlCQUFpQixFQUFXLENBQUM7SUFDN0MsZUFBZSxHQUFlLEVBQUUsQ0FBQztJQUNqQyxpQkFBaUIsR0FBZSxFQUFFLENBQUM7SUFFbkMsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQTtJQUNqQyxDQUFDO0lBRVEsUUFBUTtRQUNmLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQTtRQUNoQixJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDckMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFO2dCQUMxQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFBLDREQUE0RDtZQUN2RixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQzlCLENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztTQUM3QjtJQUNILENBQUM7SUFHUyxjQUFjLENBQXFCLEtBQXVCLEVBQUUsT0FBeUI7UUFDN0YsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDdEIsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3pCO2FBQU07WUFDTCxJQUFJLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFO2dCQUNyQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO2FBQ3RDO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO2FBQ3BDO1NBQ0Y7UUFDRCxPQUFRLFFBQVEsQ0FBQztJQUNuQixDQUFDO3VHQXJDVSxpQkFBaUI7MkZBQWpCLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFEN0IsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBpbmplY3QsIFByb3ZpZGVyVG9rZW59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNdXRhYmxlVmFsdWVNb2RlbH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IHtEaXNwb3NhYmxlQ29tcG9uZW50fSBmcm9tIFwiLi9kaXNwb3NhYmxlLWNvbXBvbmVudFwiO1xuaW1wb3J0IHtMb2FkYWJsZX0gZnJvbSBcIi4vdHlwZXMvbG9hZGFibGVcIjtcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgY2xhc3MgTG9hZGFibGVDb21wb25lbnQgZXh0ZW5kcyBEaXNwb3NhYmxlQ29tcG9uZW50IHtcblxuICAjX2xvYWRlZCQgPSBuZXcgTXV0YWJsZVZhbHVlTW9kZWw8Ym9vbGVhbj4oKTtcbiAgI2FzeW5jTG9hZGFibGVzOiBMb2FkYWJsZVtdID0gW107XG4gICNhd2FpdGVkTG9hZGFibGVzOiBMb2FkYWJsZVtdID0gW107XG5cbiAgZ2V0IGxvYWRlZCQoKSB7XG4gICAgcmV0dXJuIHRoaXMuI19sb2FkZWQkLnJlYWRvbmx5JFxuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkluaXQoKVxuICAgIHRoaXMuI2FzeW5jTG9hZGFibGVzLmZvckVhY2goaXQgPT4gaXQuZW5zdXJlTG9hZGVkKCkpO1xuICAgIGlmICh0aGlzLiNhd2FpdGVkTG9hZGFibGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIFByb21pc2UuYWxsKHRoaXMuI2F3YWl0ZWRMb2FkYWJsZXMubWFwKGl0ID0+IHtcbiAgICAgICAgcmV0dXJuIGl0LmVuc3VyZUxvYWRlZCgpOy8vLnRoZW4oKCkgPT4gY29uc29sZS5sb2coYCR7aXQuY29uc3RydWN0b3IubmFtZX0gbG9hZGVkYCkpO1xuICAgICAgfSkpLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLiNfbG9hZGVkJC52YWx1ZSA9IHRydWU7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jX2xvYWRlZCQudmFsdWUgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG5cbiAgcHJvdGVjdGVkIGluamVjdExvYWRhYmxlPFQgZXh0ZW5kcyBMb2FkYWJsZT4odG9rZW46IFByb3ZpZGVyVG9rZW48VD4sIG9wdGlvbnM/OiB7d2FpdDogYm9vbGVhbn0pOlQge1xuICAgIGNvbnN0IGxvYWRhYmxlID0gaW5qZWN0KHRva2VuKTtcbiAgICBpZiAodGhpcy5sb2FkZWQkLnZhbHVlKSB7XG4gICAgICBsb2FkYWJsZS5lbnN1cmVMb2FkZWQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFvcHRpb25zIHx8IG9wdGlvbnMud2FpdCA9PT0gdHJ1ZSkge1xuICAgICAgICB0aGlzLiNhd2FpdGVkTG9hZGFibGVzLnB1c2gobG9hZGFibGUpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLiNhc3luY0xvYWRhYmxlcy5wdXNoKGxvYWRhYmxlKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gIGxvYWRhYmxlO1xuICB9XG5cbn1cbiJdfQ==
57
+ }], ctorParameters: function () { return []; } });
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGFibGUtY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvY29tcG9uZW50cy9sb2FkYWJsZS1jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQXdDLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFJN0QsTUFBTSxPQUFPLGlCQUFrQixTQUFRLG1CQUFtQjtJQUUvQyxTQUFTLEdBQUcsSUFBSSxpQkFBaUIsRUFBVyxDQUFDO0lBQzdDLGVBQWUsR0FBZSxFQUFFLENBQUM7SUFDakMsaUJBQWlCLEdBQWUsRUFBRSxDQUFDO0lBRW5DLFlBQVksQ0FBcUM7SUFFMUQ7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLGNBQWMsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQztJQUNsQyxDQUFDO0lBRVEsUUFBUTtRQUNmLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU8sZ0JBQWdCO1FBQ3RCLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDckMsT0FBTyxDQUFDLEdBQUcsQ0FDVCxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FDdEQsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNWLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUM5QixDQUFDLENBQUMsQ0FBQztTQUNKO2FBQU07WUFDTCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7U0FDN0I7SUFDSCxDQUFDO0lBRVMsY0FBYyxDQUFxQixLQUF1QixFQUFFLE9BRXJFO1FBQ0MsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsZ0JBQWdCLENBQXFCLFFBQVcsRUFBRSxPQUEyQjtRQUMzRSxNQUFNLFVBQVUsR0FBRyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQztRQUNyRCxJQUFJLFVBQVU7WUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLDBCQUEwQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXhFLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDdEIsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3pCO2FBQU07WUFDTCxJQUFJLFVBQVUsRUFBRTtnQkFDZCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ3ZDO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ3JDO1NBQ0Y7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO3VHQXREVSxpQkFBaUI7MkZBQWpCLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFEN0IsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgaW5qZWN0LCBJbmplY3RPcHRpb25zLCBPbkluaXQsIFByb3ZpZGVyVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE11dGFibGVWYWx1ZU1vZGVsIH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IHsgTG9hZGluZ01vbml0b3IgfSBmcm9tICcuLi9zZXJ2aWNlcy9sb2FkaW5nLW1vbml0b3InO1xuaW1wb3J0IHsgRGlzcG9zYWJsZUNvbXBvbmVudCB9IGZyb20gJy4vZGlzcG9zYWJsZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgTG9hZGFibGUgfSBmcm9tICcuL3R5cGVzL2xvYWRhYmxlJztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgY2xhc3MgTG9hZGFibGVDb21wb25lbnQgZXh0ZW5kcyBEaXNwb3NhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICByZWFkb25seSAjX2xvYWRlZCQgPSBuZXcgTXV0YWJsZVZhbHVlTW9kZWw8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgI2FzeW5jTG9hZGFibGVzOiBMb2FkYWJsZVtdID0gW107XG4gIHJlYWRvbmx5ICNhd2FpdGVkTG9hZGFibGVzOiBMb2FkYWJsZVtdID0gW107XG5cbiAgcmVhZG9ubHkgI2xvYWRUcmFja2VyOiBMb2FkaW5nTW9uaXRvci5UcmFja2VyIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy4jbG9hZFRyYWNrZXIgPSBpbmplY3QoTG9hZGluZ01vbml0b3IsIHsgb3B0aW9uYWw6IHRydWUgfSk/LmNyZWF0ZVRyYWNrZXIodGhpcyk7XG4gIH1cblxuICBnZXQgbG9hZGVkJCgpIHtcbiAgICByZXR1cm4gdGhpcy4jX2xvYWRlZCQucmVhZG9ubHkkO1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB0aGlzLmxvYWREZXBlbmRlbmNpZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZERlcGVuZGVuY2llcygpIHtcbiAgICBpZiAodGhpcy4jYXdhaXRlZExvYWRhYmxlcy5sZW5ndGggPiAwKSB7XG4gICAgICBQcm9taXNlLmFsbChcbiAgICAgICAgdGhpcy4jYXdhaXRlZExvYWRhYmxlcy5tYXAoKGl0KSA9PiBpdC5lbnN1cmVMb2FkZWQoKSlcbiAgICAgICkudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuI19sb2FkZWQkLnZhbHVlID0gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLiNfbG9hZGVkJC52YWx1ZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGluamVjdExvYWRhYmxlPFQgZXh0ZW5kcyBMb2FkYWJsZT4odG9rZW46IFByb3ZpZGVyVG9rZW48VD4sIG9wdGlvbnM/OiBJbmplY3RPcHRpb25zICYge1xuICAgIHdhaXQ6IGJvb2xlYW5cbiAgfSk6IFQge1xuICAgIHJldHVybiB0aGlzLnJlZ2lzdGVyTG9hZGFibGUoaW5qZWN0KHRva2VuLCBvcHRpb25zKSwgb3B0aW9ucyk7XG4gIH1cblxuICByZWdpc3RlckxvYWRhYmxlPFQgZXh0ZW5kcyBMb2FkYWJsZT4obG9hZGFibGU6IFQsIG9wdGlvbnM/OiB7IHdhaXQ6IGJvb2xlYW4gfSkge1xuICAgIGNvbnN0IHNob3VsZFdhaXQgPSAhb3B0aW9ucyB8fCBvcHRpb25zLndhaXQgPT09IHRydWU7XG4gICAgaWYgKHNob3VsZFdhaXQpIHRoaXMuI2xvYWRUcmFja2VyPy5yZWdpc3RlckxvYWRhYmxlRGVwZW5kZW5jeShsb2FkYWJsZSk7XG5cbiAgICBpZiAodGhpcy5sb2FkZWQkLnZhbHVlKSB7XG4gICAgICBsb2FkYWJsZS5lbnN1cmVMb2FkZWQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHNob3VsZFdhaXQpIHtcbiAgICAgICAgdGhpcy4jYXdhaXRlZExvYWRhYmxlcy5wdXNoKGxvYWRhYmxlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuI2FzeW5jTG9hZGFibGVzLnB1c2gobG9hZGFibGUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbG9hZGFibGU7XG4gIH1cbn1cbiJdfQ==