@coolon/angular-ui-powerups 16.1.0-aplpha.148 → 16.1.0-aplpha.15

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 (227) hide show
  1. package/assets/activities/input-activities.scss +6 -14
  2. package/assets/form.scss +27 -74
  3. package/assets/icons.scss +0 -1
  4. package/assets/styles.scss +0 -2
  5. package/assets/table.scss +27 -47
  6. package/assets/tabs.scss +5 -15
  7. package/esm2022/lib/animations/slide-animations.mjs +10 -15
  8. package/esm2022/lib/components/cards/card-container/card-container.component.mjs +4 -4
  9. package/esm2022/lib/components/commands/command/command.component.mjs +29 -34
  10. package/esm2022/lib/components/commands/command-face/command-face.component.mjs +3 -11
  11. package/esm2022/lib/components/commands/command-face.mjs +11 -12
  12. package/esm2022/lib/components/commands/group/popup-aware.component.mjs +8 -31
  13. package/esm2022/lib/components/commands/group/popup-menu/abstract-popup-menu.component.mjs +23 -25
  14. package/esm2022/lib/components/commands/group/popup-menu/more-menu.component.mjs +20 -11
  15. package/esm2022/lib/components/commands/group/popup-menu/popup-menu-renderer/popup-menu-renderer.component.mjs +7 -12
  16. package/esm2022/lib/components/commands/group/popup-menu/popup-menu.component.mjs +20 -11
  17. package/esm2022/lib/components/commands/group/tool-bar/tool-bar.component.mjs +6 -8
  18. package/esm2022/lib/components/commands/separator.component.mjs +12 -6
  19. package/esm2022/lib/components/components.module.mjs +19 -44
  20. package/esm2022/lib/components/disposable-component.mjs +7 -32
  21. package/esm2022/lib/components/exports.mjs +2 -10
  22. package/esm2022/lib/components/forms/abstract-input.component.mjs +12 -55
  23. package/esm2022/lib/components/forms/autocomplete-input/autocomplete-input.component.mjs +2 -2
  24. package/esm2022/lib/components/forms/checkbox-input/checkbox-input.component.mjs +6 -8
  25. package/esm2022/lib/components/forms/multiple-select-input/multiple-select-input.component.mjs +2 -2
  26. package/esm2022/lib/components/forms/number-input/number-input.component.mjs +9 -84
  27. package/esm2022/lib/components/forms/password-input/password-input.component.mjs +3 -40
  28. package/esm2022/lib/components/forms/select-input/select-input.component.mjs +10 -11
  29. package/esm2022/lib/components/forms/string-input/string-input.component.mjs +10 -26
  30. package/esm2022/lib/components/forms/text-input/text-input.component.mjs +2 -6
  31. package/esm2022/lib/components/icon/icon.component.mjs +4 -7
  32. package/esm2022/lib/components/loadable-component.mjs +2 -4
  33. package/esm2022/lib/components/resize-aware.component.mjs +24 -61
  34. package/esm2022/lib/components/switch-case/switch-case.component.mjs +7 -5
  35. package/esm2022/lib/components/tables/abstract-table-model.mjs +47 -77
  36. package/esm2022/lib/components/tables/abstract-table.component.mjs +5 -19
  37. package/esm2022/lib/components/tables/column/column-list-model.mjs +44 -0
  38. package/esm2022/lib/components/tables/column/column-model.mjs +6 -16
  39. package/esm2022/lib/components/tables/column/custom-template-column-model.mjs +3 -3
  40. package/esm2022/lib/components/tables/column/custom-value-column-model.mjs +3 -3
  41. package/esm2022/lib/components/tables/column/editor-controls-column-model.mjs +3 -3
  42. package/esm2022/lib/components/tables/column/list-propery-column-model.mjs +3 -3
  43. package/esm2022/lib/components/tables/column/property-column-model.mjs +3 -3
  44. package/esm2022/lib/components/tables/column/selection-column-model.mjs +13 -35
  45. package/esm2022/lib/components/tables/editor/edit-row-controls/edit-row-controls.component.mjs +2 -2
  46. package/esm2022/lib/components/tables/editor/edit-session.mjs +1 -3
  47. package/esm2022/lib/components/tables/filter/table-filter-model.mjs +2 -4
  48. package/esm2022/lib/components/tables/filter/text-search-predicate.mjs +2 -16
  49. package/esm2022/lib/components/tables/paginator/paginator.component.mjs +1 -1
  50. package/esm2022/lib/components/tables/renderer/cell-portal-ref.mjs +5 -23
  51. package/esm2022/lib/components/tables/renderer/default-cell-renderer/default-cell-renderer.component.mjs +3 -3
  52. package/esm2022/lib/components/tables/renderer/select-header-cell/selection-header-cell.component.mjs +2 -3
  53. package/esm2022/lib/components/tables/renderer/table-body/table-body.component.mjs +40 -150
  54. package/esm2022/lib/components/tables/renderer/table-cell/table-cell.component.mjs +6 -6
  55. package/esm2022/lib/components/tables/renderer/table-more-menu/table-more-menu-popup/table-more-menu-popup.component.mjs +5 -12
  56. package/esm2022/lib/components/tables/renderer/table-more-menu/table-more-menu.component.mjs +2 -7
  57. package/esm2022/lib/components/tables/table/table-model.mjs +3 -12
  58. package/esm2022/lib/components/tables/table/table.component.mjs +61 -39
  59. package/esm2022/lib/components/tables/tree-table/decorated-tree-node.mjs +4 -5
  60. package/esm2022/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.mjs +1 -1
  61. package/esm2022/lib/components/tables/tree-table/tree-label-column-model.mjs +3 -3
  62. package/esm2022/lib/components/tables/tree-table/tree-table-component.mjs +5 -12
  63. package/esm2022/lib/components/tables/tree-table/tree-table-model.mjs +7 -4
  64. package/esm2022/lib/components/text/markdown/markdown.component.mjs +2 -2
  65. package/esm2022/lib/directives/command.directive.mjs +7 -18
  66. package/esm2022/lib/directives/directives.module.mjs +1 -1
  67. package/esm2022/lib/directives/exports.mjs +1 -2
  68. package/esm2022/lib/directives/highlight.pipe.mjs +7 -9
  69. package/esm2022/lib/interaction/activity.mjs +21 -20
  70. package/esm2022/lib/interaction/alert.mjs +2 -2
  71. package/esm2022/lib/interaction/components/abstract-confirm-dialog.component.mjs +8 -11
  72. package/esm2022/lib/interaction/components/abstract-dialog.component.mjs +41 -1
  73. package/esm2022/lib/interaction/components/activity-actions/activity-actions.component.mjs +16 -28
  74. package/esm2022/lib/interaction/components/activity-container/activity-container.component.mjs +11 -36
  75. package/esm2022/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.mjs +15 -53
  76. package/esm2022/lib/interaction/components/activity-title/activity-title.component.mjs +4 -4
  77. package/esm2022/lib/interaction/components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.mjs +1 -1
  78. package/esm2022/lib/interaction/components/add-card-activity/add-card-activity.component.mjs +1 -1
  79. package/esm2022/lib/interaction/components/add-item-interaction-context/add-item-interaction-context.component.mjs +1 -1
  80. package/esm2022/lib/interaction/components/alert-dialog/alert-dialog.component.mjs +10 -10
  81. package/esm2022/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.mjs +8 -4
  82. package/esm2022/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.mjs +8 -4
  83. package/esm2022/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.mjs +9 -7
  84. package/esm2022/lib/interaction/components/editors/edit-context.mjs +1 -1
  85. package/esm2022/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.mjs +3 -3
  86. package/esm2022/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.mjs +5 -21
  87. package/esm2022/lib/interaction/components/input-activities/input-activity.mjs +2 -2
  88. package/esm2022/lib/interaction/components/input-activities/select-input-activity.mjs +2 -4
  89. package/esm2022/lib/interaction/components/input-activities/string-input-activity.mjs +4 -8
  90. package/esm2022/lib/interaction/confirm.mjs +2 -26
  91. package/esm2022/lib/interaction/directives/interaction-context-trigger-for.directive.mjs +2 -2
  92. package/esm2022/lib/interaction/exports.mjs +1 -6
  93. package/esm2022/lib/interaction/interaction-context.mjs +2 -3
  94. package/esm2022/lib/interaction/interaction.module.mjs +14 -22
  95. package/esm2022/lib/interaction/services/interaction-service-routing-adapter.mjs +4 -4
  96. package/esm2022/lib/interaction/services/interaction.service.mjs +6 -18
  97. package/esm2022/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context.mjs +2 -7
  98. package/esm2022/lib/place/components/list-place-nav/list-place-nav.component.mjs +4 -3
  99. package/esm2022/lib/place/components/place-outlet/place-outlet.component.mjs +9 -7
  100. package/esm2022/lib/place/components/side-place-navigation/side-place-navigation.component.mjs +2 -2
  101. package/esm2022/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.mjs +1 -1
  102. package/esm2022/lib/place/guards/consolidated-param-map.mjs +4 -4
  103. package/esm2022/lib/place/guards/place.guard.mjs +5 -6
  104. package/esm2022/lib/place/navigation/place-component-deactivation-handler.mjs +2 -2
  105. package/esm2022/lib/place/navigation/session/interactions/synchronise-interaction-context-ids-with-route.mjs +6 -3
  106. package/esm2022/lib/place/navigation/session/navigation-session.mjs +2 -2
  107. package/esm2022/lib/place/place-auth-service.mjs +5 -5
  108. package/esm2022/lib/place/place-component.mjs +19 -29
  109. package/esm2022/lib/place/place-definition.mjs +4 -15
  110. package/esm2022/lib/place/place-history.mjs +2 -2
  111. package/esm2022/lib/place/place-router.mjs +20 -22
  112. package/esm2022/lib/place/place.decorator.mjs +2 -2
  113. package/esm2022/lib/place/place.module.mjs +5 -1
  114. package/esm2022/lib/place/route/formatter.mjs +2 -2
  115. package/esm2022/lib/place/route/parameter-decorators.mjs +50 -54
  116. package/esm2022/lib/place/route/parameter-definition.mjs +2 -2
  117. package/esm2022/lib/place/url-snapshot.mjs +3 -3
  118. package/esm2022/lib/place/visit-segment.mjs +2 -2
  119. package/esm2022/lib/place/visit.mjs +2 -2
  120. package/fesm2022/coolon-angular-ui-powerups.mjs +999 -2220
  121. package/fesm2022/coolon-angular-ui-powerups.mjs.map +1 -1
  122. package/lib/animations/slide-animations.d.ts +0 -1
  123. package/lib/components/cards/card-container/card-container.component.d.ts +1 -1
  124. package/lib/components/commands/command/command.component.d.ts +8 -8
  125. package/lib/components/commands/command-face/command-face.component.d.ts +0 -2
  126. package/lib/components/commands/command-face.d.ts +9 -8
  127. package/lib/components/commands/group/popup-aware.component.d.ts +4 -9
  128. package/lib/components/commands/group/popup-menu/abstract-popup-menu.component.d.ts +4 -4
  129. package/lib/components/commands/group/popup-menu/more-menu.component.d.ts +4 -2
  130. package/lib/components/commands/group/popup-menu/popup-menu-renderer/popup-menu-renderer.component.d.ts +0 -2
  131. package/lib/components/commands/group/popup-menu/popup-menu.component.d.ts +4 -2
  132. package/lib/components/commands/group/tool-bar/tool-bar.component.d.ts +1 -1
  133. package/lib/components/commands/separator.component.d.ts +4 -2
  134. package/lib/components/components.module.d.ts +53 -58
  135. package/lib/components/disposable-component.d.ts +3 -16
  136. package/lib/components/exports.d.ts +1 -9
  137. package/lib/components/forms/abstract-input.component.d.ts +5 -13
  138. package/lib/components/forms/checkbox-input/checkbox-input.component.d.ts +0 -2
  139. package/lib/components/forms/number-input/number-input.component.d.ts +4 -16
  140. package/lib/components/forms/password-input/password-input.component.d.ts +1 -7
  141. package/lib/components/forms/select-input/select-input.component.d.ts +3 -4
  142. package/lib/components/forms/string-input/string-input.component.d.ts +1 -6
  143. package/lib/components/forms/text-input/text-input.component.d.ts +0 -3
  144. package/lib/components/loadable-component.d.ts +2 -5
  145. package/lib/components/resize-aware.component.d.ts +5 -24
  146. package/lib/components/switch-case/switch-case.component.d.ts +3 -2
  147. package/lib/components/tables/abstract-table-model.d.ts +11 -29
  148. package/lib/components/tables/abstract-table.component.d.ts +3 -4
  149. package/lib/components/tables/column/column-list-model.d.ts +13 -0
  150. package/lib/components/tables/column/column-model.d.ts +3 -7
  151. package/lib/components/tables/column/custom-template-column-model.d.ts +2 -3
  152. package/lib/components/tables/column/custom-value-column-model.d.ts +2 -3
  153. package/lib/components/tables/column/editor-controls-column-model.d.ts +2 -3
  154. package/lib/components/tables/column/list-propery-column-model.d.ts +2 -3
  155. package/lib/components/tables/column/property-column-model.d.ts +2 -3
  156. package/lib/components/tables/column/selection-column-model.d.ts +4 -10
  157. package/lib/components/tables/editor/edit-row-controls/edit-row-controls.component.d.ts +1 -1
  158. package/lib/components/tables/editor/edit-session.d.ts +1 -1
  159. package/lib/components/tables/filter/text-search-predicate.d.ts +0 -9
  160. package/lib/components/tables/renderer/cell-portal-ref.d.ts +12 -20
  161. package/lib/components/tables/renderer/table-body/table-body.component.d.ts +16 -40
  162. package/lib/components/tables/renderer/table-cell/table-cell.component.d.ts +3 -2
  163. package/lib/components/tables/renderer/table-more-menu/table-more-menu-popup/table-more-menu-popup.component.d.ts +2 -5
  164. package/lib/components/tables/renderer/table-more-menu/table-more-menu.component.d.ts +1 -2
  165. package/lib/components/tables/table/table-model.d.ts +4 -4
  166. package/lib/components/tables/table/table.component.d.ts +10 -14
  167. package/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.d.ts +1 -1
  168. package/lib/components/tables/tree-table/tree-label-column-model.d.ts +2 -3
  169. package/lib/components/tables/tree-table/tree-table-component.d.ts +0 -3
  170. package/lib/components/tables/tree-table/tree-table-model.d.ts +5 -4
  171. package/lib/directives/command.directive.d.ts +4 -6
  172. package/lib/directives/exports.d.ts +0 -1
  173. package/lib/interaction/activity.d.ts +7 -7
  174. package/lib/interaction/components/abstract-confirm-dialog.component.d.ts +1 -2
  175. package/lib/interaction/components/abstract-dialog.component.d.ts +14 -5
  176. package/lib/interaction/components/activity-actions/activity-actions.component.d.ts +9 -12
  177. package/lib/interaction/components/activity-container/activity-container.component.d.ts +3 -8
  178. package/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.d.ts +3 -3
  179. package/lib/interaction/components/activity-title/activity-title.component.d.ts +1 -1
  180. package/lib/interaction/components/alert-dialog/alert-dialog.component.d.ts +1 -6
  181. package/lib/interaction/components/editors/edit-context.d.ts +1 -1
  182. package/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.d.ts +3 -5
  183. package/lib/interaction/confirm.d.ts +0 -4
  184. package/lib/interaction/exports.d.ts +0 -5
  185. package/lib/interaction/interaction-context.d.ts +0 -5
  186. package/lib/interaction/interaction.module.d.ts +33 -35
  187. package/lib/interaction/services/interaction-service-routing-adapter.d.ts +2 -2
  188. package/lib/interaction/services/interaction.service.d.ts +1 -2
  189. package/lib/place/components/place-outlet/place-outlet.component.d.ts +4 -3
  190. package/lib/place/place-auth-service.d.ts +4 -4
  191. package/lib/place/place-component.d.ts +5 -7
  192. package/lib/place/place-definition.d.ts +0 -2
  193. package/lib/place/place-router.d.ts +2 -6
  194. package/lib/place/place.module.d.ts +5 -4
  195. package/package.json +4 -6
  196. package/assets/draw.scss +0 -20
  197. package/assets/layout.scss +0 -3
  198. package/esm2022/lib/components/commands/button-renderer/button-renderer.component.mjs +0 -115
  199. package/esm2022/lib/components/file/file-download/file-download.component.mjs +0 -78
  200. package/esm2022/lib/components/forms/form-field.mjs +0 -2
  201. package/esm2022/lib/components/forms/search-input/search-input.component.mjs +0 -33
  202. package/esm2022/lib/components/tables/column/column-manager.mjs +0 -81
  203. package/esm2022/lib/components/tables/column/column-order-manager.mjs +0 -19
  204. package/esm2022/lib/components/tables/footer/footer-row-model.mjs +0 -38
  205. package/esm2022/lib/components/tables/renderer/abstract-cell-renderer.mjs +0 -7
  206. package/esm2022/lib/components/tables/renderer/table-footer-row/table-footer-row.component.mjs +0 -30
  207. package/esm2022/lib/directives/resize-observer.directive.mjs +0 -40
  208. package/esm2022/lib/interaction/activity-context.mjs +0 -4
  209. package/esm2022/lib/interaction/components/alert-renderer/alert-renderer.component.mjs +0 -55
  210. package/esm2022/lib/interaction/components/confirm-renderer/confirm-renderer.component.mjs +0 -54
  211. package/esm2022/lib/interaction/components/slide-down-interaction-context/slide-down-interaction-context.component.mjs +0 -134
  212. package/esm2022/lib/interaction/interaction-context-provider.mjs +0 -17
  213. package/lib/components/commands/button-renderer/button-renderer.component.d.ts +0 -30
  214. package/lib/components/file/file-download/file-download.component.d.ts +0 -43
  215. package/lib/components/forms/form-field.d.ts +0 -5
  216. package/lib/components/forms/search-input/search-input.component.d.ts +0 -10
  217. package/lib/components/tables/column/column-manager.d.ts +0 -19
  218. package/lib/components/tables/column/column-order-manager.d.ts +0 -20
  219. package/lib/components/tables/footer/footer-row-model.d.ts +0 -22
  220. package/lib/components/tables/renderer/abstract-cell-renderer.d.ts +0 -6
  221. package/lib/components/tables/renderer/table-footer-row/table-footer-row.component.d.ts +0 -11
  222. package/lib/directives/resize-observer.directive.d.ts +0 -16
  223. package/lib/interaction/activity-context.d.ts +0 -9
  224. package/lib/interaction/components/alert-renderer/alert-renderer.component.d.ts +0 -17
  225. package/lib/interaction/components/confirm-renderer/confirm-renderer.component.d.ts +0 -15
  226. package/lib/interaction/components/slide-down-interaction-context/slide-down-interaction-context.component.d.ts +0 -53
  227. package/lib/interaction/interaction-context-provider.d.ts +0 -11
@@ -1,14 +1,54 @@
1
1
  import { Component, Inject, InjectionToken } from '@angular/core';
2
2
  import { assert } from '@coolon/pectin';
3
+ import { lang } from '@coolon/typescript-utilities';
4
+ import { isFunction } from "lodash-es";
3
5
  import { Activity } from '../activity';
6
+ import { Alert } from '../alert';
4
7
  import * as i0 from "@angular/core";
5
8
  export const ALERT_CONFIG = new InjectionToken('AlertConfig');
6
9
  export class AbstractDialogComponent extends Activity {
7
10
  config;
11
+ confirmFace;
12
+ title;
13
+ content;
14
+ color;
8
15
  constructor(config) {
9
16
  super();
10
17
  this.config = config;
11
18
  assert.notNil(config);
19
+ this.title = Alert.getTitle(config);
20
+ this.color = this.checkColor(Alert.getColor(config));
21
+ this.content = Alert.getContent(config);
22
+ this.confirmFace = {
23
+ text: () => config.ok(),
24
+ color: () => this.color || 'primary',
25
+ style: () => 'raised'
26
+ };
27
+ this.onActivityReady(() => {
28
+ if (this.activityActions) {
29
+ this.isDestructive() ? this.activityActions.focusCancel() : this.activityActions.focusConfirm();
30
+ }
31
+ });
32
+ }
33
+ getConfig() {
34
+ return lang.abstractMethod(this.constructor);
35
+ }
36
+ checkColor(rawColor) {
37
+ if (this.isDestructive()) {
38
+ return 'warn';
39
+ }
40
+ else {
41
+ if (['primary', 'accent', 'warn'].includes(rawColor)) {
42
+ return rawColor;
43
+ }
44
+ else {
45
+ console.warn(`Invalid color string ${rawColor}`);
46
+ return undefined;
47
+ }
48
+ }
49
+ }
50
+ isDestructive() {
51
+ return isFunction(this.config['destructive']) && this.config["destructive"]();
12
52
  }
13
53
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AbstractDialogComponent, deps: [{ token: ALERT_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
14
54
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: AbstractDialogComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: '', isInline: true });
@@ -22,4 +62,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
22
62
  type: Inject,
23
63
  args: [ALERT_CONFIG]
24
64
  }] }]; } });
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL2ludGVyYWN0aW9uL2NvbXBvbmVudHMvYWJzdHJhY3QtZGlhbG9nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBR3RDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxhQUFhLENBQUM7O0FBSXJDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxJQUFJLGNBQWMsQ0FBTSxhQUFhLENBQUMsQ0FBQztBQUtuRSxNQUFNLE9BQU8sdUJBQXdELFNBQVEsUUFBaUI7SUFFdkM7SUFBckQsWUFBcUQsTUFBUztRQUM1RCxLQUFLLEVBQUUsQ0FBQztRQUQyQyxXQUFNLEdBQU4sTUFBTSxDQUFHO1FBRTVELE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEIsQ0FBQzt1R0FMVSx1QkFBdUIsa0JBRWQsWUFBWTsyRkFGckIsdUJBQXVCLDJFQUZ4QixFQUFFOzsyRkFFRCx1QkFBdUI7a0JBSG5DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLEVBQUU7aUJBQ2I7OzBCQUdjLE1BQU07MkJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbmplY3QsIEluamVjdGlvblRva2VufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7YXNzZXJ0fSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQge2xhbmd9IGZyb20gJ0Bjb29sb24vdHlwZXNjcmlwdC11dGlsaXRpZXMnO1xuaW1wb3J0IHtDb21tYW5kRmFjZX0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9jb21tYW5kcy9jb21tYW5kLWZhY2UnO1xuaW1wb3J0IHtBY3Rpdml0eX0gZnJvbSAnLi4vYWN0aXZpdHknO1xuaW1wb3J0IHtBbGVydH0gZnJvbSAnLi4vYWxlcnQnO1xuaW1wb3J0IHtDb25maXJtfSBmcm9tICcuLi9jb25maXJtJztcblxuZXhwb3J0IGNvbnN0IEFMRVJUX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxhbnk+KCdBbGVydENvbmZpZycpO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6ICcnXG59KVxuZXhwb3J0IGNsYXNzIEFic3RyYWN0RGlhbG9nQ29tcG9uZW50PEMgZXh0ZW5kcyBBbGVydCwgRCwgUiwgRSA9IGFueT4gZXh0ZW5kcyBBY3Rpdml0eTxELCBSLCBFPiB7XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChBTEVSVF9DT05GSUcpIHByb3RlY3RlZCByZWFkb25seSBjb25maWc6IEMpIHtcbiAgICBzdXBlcigpO1xuICAgIGFzc2VydC5ub3ROaWwoY29uZmlnKTtcbiAgfVxufVxuIl19
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL2ludGVyYWN0aW9uL2NvbXBvbmVudHMvYWJzdHJhY3QtZGlhbG9nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBRXJDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDckMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLFVBQVUsQ0FBQzs7QUFHL0IsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLElBQUksY0FBYyxDQUFNLGFBQWEsQ0FBQyxDQUFDO0FBSW5FLE1BQU0sT0FBTyx1QkFBdUMsU0FBUSxRQUFpQjtJQU90QjtJQUw1QyxXQUFXLENBQWM7SUFDekIsS0FBSyxDQUFTO0lBQ2QsT0FBTyxDQUFXO0lBQ2xCLEtBQUssQ0FBaUM7SUFFL0MsWUFBcUQsTUFBdUI7UUFDMUUsS0FBSyxFQUFFLENBQUM7UUFEMkMsV0FBTSxHQUFOLE1BQU0sQ0FBaUI7UUFFMUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFeEMsSUFBSSxDQUFDLFdBQVcsR0FBRztZQUNqQixJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRTtZQUN2QixLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxTQUFTO1lBQ3BDLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxRQUFRO1NBQ3RCLENBQUM7UUFFRixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRTtZQUN4QixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7Z0JBQ3hCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQTthQUNoRztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQzlDLENBQUM7SUFFUyxVQUFVLENBQUMsUUFBZ0I7UUFDbkMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUU7WUFDeEIsT0FBTyxNQUFNLENBQUM7U0FDZjthQUFNO1lBQ0wsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUNwRCxPQUFPLFFBQXlDLENBQUM7YUFDbEQ7aUJBQU07Z0JBQ0wsT0FBTyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDakQsT0FBTyxTQUFTLENBQUM7YUFDbEI7U0FDRjtJQUNILENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztJQUNoRixDQUFDO3VHQTlDVSx1QkFBdUIsa0JBT2QsWUFBWTsyRkFQckIsdUJBQXVCLDJFQUZ4QixFQUFFOzsyRkFFRCx1QkFBdUI7a0JBSG5DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLEVBQUU7aUJBQ2I7OzBCQVFjLE1BQU07MkJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbmplY3QsIEluamVjdGlvblRva2VufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7YXNzZXJ0fSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQge2xhbmd9IGZyb20gJ0Bjb29sb24vdHlwZXNjcmlwdC11dGlsaXRpZXMnO1xuaW1wb3J0IHtpc0Z1bmN0aW9ufSBmcm9tIFwibG9kYXNoLWVzXCI7XG5pbXBvcnQge0NvbW1hbmRGYWNlfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2NvbW1hbmRzL2NvbW1hbmQtZmFjZSc7XG5pbXBvcnQge0FjdGl2aXR5fSBmcm9tICcuLi9hY3Rpdml0eSc7XG5pbXBvcnQge0FsZXJ0fSBmcm9tICcuLi9hbGVydCc7XG5pbXBvcnQge0NvbmZpcm19IGZyb20gJy4uL2NvbmZpcm0nO1xuXG5leHBvcnQgY29uc3QgQUxFUlRfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPGFueT4oJ0FsZXJ0Q29uZmlnJyk7XG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6ICcnXG59KVxuZXhwb3J0IGNsYXNzIEFic3RyYWN0RGlhbG9nQ29tcG9uZW50PEQsIFIsIEUgPSBhbnk+IGV4dGVuZHMgQWN0aXZpdHk8RCwgUiwgRT4ge1xuXG4gIHJlYWRvbmx5IGNvbmZpcm1GYWNlOiBDb21tYW5kRmFjZTtcbiAgcmVhZG9ubHkgdGl0bGU6IHN0cmluZztcbiAgcmVhZG9ubHkgY29udGVudDogc3RyaW5nW107XG4gIHJlYWRvbmx5IGNvbG9yPzogJ3ByaW1hcnknIHwgJ2FjY2VudCcgfCAnd2Fybic7XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChBTEVSVF9DT05GSUcpIHByb3RlY3RlZCByZWFkb25seSBjb25maWc6IEFsZXJ0IHwgQ29uZmlybSkge1xuICAgIHN1cGVyKCk7XG4gICAgYXNzZXJ0Lm5vdE5pbChjb25maWcpO1xuICAgIHRoaXMudGl0bGUgPSBBbGVydC5nZXRUaXRsZShjb25maWcpO1xuICAgIHRoaXMuY29sb3IgPSB0aGlzLmNoZWNrQ29sb3IoQWxlcnQuZ2V0Q29sb3IoY29uZmlnKSk7XG4gICAgdGhpcy5jb250ZW50ID0gQWxlcnQuZ2V0Q29udGVudChjb25maWcpO1xuXG4gICAgdGhpcy5jb25maXJtRmFjZSA9IHtcbiAgICAgIHRleHQ6ICgpID0+IGNvbmZpZy5vaygpLFxuICAgICAgY29sb3I6ICgpID0+IHRoaXMuY29sb3IgfHwgJ3ByaW1hcnknLFxuICAgICAgc3R5bGU6ICgpID0+ICdyYWlzZWQnXG4gICAgfTtcblxuICAgIHRoaXMub25BY3Rpdml0eVJlYWR5KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmFjdGl2aXR5QWN0aW9ucykge1xuICAgICAgICB0aGlzLmlzRGVzdHJ1Y3RpdmUoKSA/IHRoaXMuYWN0aXZpdHlBY3Rpb25zLmZvY3VzQ2FuY2VsKCkgOiB0aGlzLmFjdGl2aXR5QWN0aW9ucy5mb2N1c0NvbmZpcm0oKVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0Q29uZmlnKCk6QWxlcnQgfCBDb25maXJtIHtcbiAgICByZXR1cm4gbGFuZy5hYnN0cmFjdE1ldGhvZCh0aGlzLmNvbnN0cnVjdG9yKVxuICB9XG5cbiAgcHJvdGVjdGVkIGNoZWNrQ29sb3IocmF3Q29sb3I6IHN0cmluZyk6ICdwcmltYXJ5JyB8ICdhY2NlbnQnIHwgJ3dhcm4nIHtcbiAgICBpZiAodGhpcy5pc0Rlc3RydWN0aXZlKCkpIHtcbiAgICAgIHJldHVybiAnd2Fybic7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChbJ3ByaW1hcnknLCAnYWNjZW50JywgJ3dhcm4nXS5pbmNsdWRlcyhyYXdDb2xvcikpIHtcbiAgICAgICAgcmV0dXJuIHJhd0NvbG9yIGFzICdwcmltYXJ5JyB8ICdhY2NlbnQnIHwgJ3dhcm4nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBJbnZhbGlkIGNvbG9yIHN0cmluZyAke3Jhd0NvbG9yfWApO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlzRGVzdHJ1Y3RpdmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzRnVuY3Rpb24odGhpcy5jb25maWdbJ2Rlc3RydWN0aXZlJ10pICYmIHRoaXMuY29uZmlnW1wiZGVzdHJ1Y3RpdmVcIl0oKTtcbiAgfVxuXG59XG4iXX0=
@@ -1,11 +1,10 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
- import { Component, HostBinding, Input, ViewChild } from "@angular/core";
2
+ import { ChangeDetectorRef, Component, HostBinding, Input, ViewChild } from "@angular/core";
3
3
  import { Command, proxify, Proxify } from '@coolon/pectin';
4
4
  import { Enum } from 'typescript-string-enums';
5
5
  import { CommandFace } from '../../../components/commands/command-face';
6
6
  import { CommandComponent } from "../../../components/commands/command/command.component";
7
7
  import { DisposableComponent } from '../../../components/disposable-component';
8
- import { ActivityContext } from "../../activity-context";
9
8
  import * as i0 from "@angular/core";
10
9
  import * as i1 from "@angular/common";
11
10
  import * as i2 from "../../../components/commands/command/command.component";
@@ -31,6 +30,7 @@ import * as i2 from "../../../components/commands/command/command.component";
31
30
  * </aup-activity-actions>
32
31
  */
33
32
  export class ActivityActionsComponent extends DisposableComponent {
33
+ cdr;
34
34
  confirmCommandComponent;
35
35
  cancelCommandComponent;
36
36
  #confirmCommand_accessor_storage = proxify((Command));
@@ -59,16 +59,9 @@ export class ActivityActionsComponent extends DisposableComponent {
59
59
  }
60
60
  layout = ActivityActionsComponent.Layout.BLOCK;
61
61
  align = ActivityActionsComponent.Align.STRETCH;
62
- alignContent = ActivityActionsComponent.AlignContent.CENTER;
63
- activityContext = this.inject(ActivityContext, {
64
- optional: true
65
- });
66
- constructor() {
62
+ constructor(cdr) {
67
63
  super();
68
- if (this.activityContext) {
69
- this.confirmCommand = this.activityContext.confirmCommand;
70
- this.cancelCommand = this.activityContext.cancelCommand;
71
- }
64
+ this.cdr = cdr;
72
65
  }
73
66
  hasConfirmFace() {
74
67
  return !!this.confirmFace;
@@ -76,14 +69,19 @@ export class ActivityActionsComponent extends DisposableComponent {
76
69
  hasCancelFace() {
77
70
  return !!this.cancelFace;
78
71
  }
72
+ initCommands(activity) {
73
+ this.confirmCommand = activity.confirmCommand;
74
+ this.cancelCommand = activity.cancelCommand;
75
+ this.cdr.detectChanges();
76
+ }
79
77
  focusConfirm() {
80
78
  this.confirmCommandComponent.requestFocus();
81
79
  }
82
80
  focusCancel() {
83
81
  this.cancelCommandComponent.requestFocus();
84
82
  }
85
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ActivityActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
86
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: ActivityActionsComponent, selector: "aup-activity-actions", inputs: { confirmCommand: "confirmCommand", cancelCommand: "cancelCommand", faces: "faces", confirmFace: "confirmFace", cancelFace: "cancelFace", style: "style", layout: "layout", align: "align", alignContent: "alignContent" }, host: { properties: { "attr.layout": "this.layout", "attr.align": "this.align", "attr.align-content": "this.alignContent" } }, viewQueries: [{ propertyName: "confirmCommandComponent", first: true, predicate: ["confirmCommandComponent"], descendants: true }, { propertyName: "cancelCommandComponent", first: true, predicate: ["cancelCommandComponent"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"content\">\n <ng-content></ng-content>\n</div>\n<ng-container *ngIf=\"hasCancelFace()\">\n <aup-command #cancelCommandComponent class=\"cancel\" [command]=\"cancelCommand\" [face]=\"cancelFace\" data-cy=\"cancel-command\"></aup-command>\n</ng-container>\n<ng-container *ngIf=\"hasConfirmFace()\">\n <aup-command #confirmCommandComponent class=\"confirm\" [command]=\"confirmCommand\" [face]=\"confirmFace\" data-cy=\"confirm-command\"></aup-command>\n</ng-container>\n", styles: [":host{display:grid;grid-template-rows:auto;align-items:center;justify-content:end;--resolved-activity-actions-gap: var(--activity-actions-gap, 8px);grid-gap:var(--resolved-activity-actions-gap)}:host[layout=block][align=start]{grid-template-areas:\"cancel confirm content\";grid-template-columns:auto auto 1fr}:host[layout=block][align=start] .confirm{margin-left:var(--resolved-activity-actions-gap)}:host[layout=block][align=end]{grid-template-areas:\"content cancel confirm\";grid-template-columns:1fr auto auto}:host[layout=block][align=end] .confirm{margin-left:var(--resolved-activity-actions-gap)}:host[layout=block][align=stretch]{grid-template-areas:\"cancel content confirm\";grid-template-columns:auto 1fr auto}:host[layout=inline]{grid-template-areas:\"confirm cancel content\";grid-template-columns:auto auto 1fr}:host[layout=inline] .cancel{margin-left:var(--resolved-activity-actions-gap)}:host .cancel{grid-area:cancel}:host .confirm{grid-area:confirm}:host .content{display:flex;flex-direction:row;align-items:center}:host[align-content=start] .content{justify-items:start}:host[align-content=end]{justify-items:end}:host[align-content=center]{justify-items:center}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.CommandComponent, selector: "aup-command", inputs: ["command", "face$", "face", "busyFace$", "busyFace", "alignFace"] }] });
83
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ActivityActionsComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
84
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: ActivityActionsComponent, selector: "aup-activity-actions", inputs: { confirmCommand: "confirmCommand", cancelCommand: "cancelCommand", faces: "faces", confirmFace: "confirmFace", cancelFace: "cancelFace", style: "style", layout: "layout", align: "align" }, host: { properties: { "attr.layout": "this.layout", "attr.align": "this.align" } }, viewQueries: [{ propertyName: "confirmCommandComponent", first: true, predicate: ["confirmCommandComponent"], descendants: true }, { propertyName: "cancelCommandComponent", first: true, predicate: ["cancelCommandComponent"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"content\">\n <ng-content></ng-content>\n</div>\n<ng-container *ngIf=\"hasConfirmFace()\">\n <aup-command #confirmCommandComponent class=\"confirm\" [command]=\"confirmCommand\" [face]=\"confirmFace\" data-cy=\"confirm-command\"></aup-command>\n</ng-container>\n<ng-container *ngIf=\"hasCancelFace()\">\n <aup-command #cancelCommandComponent class=\"cancel\" [command]=\"cancelCommand\" [face]=\"cancelFace\" data-cy=\"cancel-command\"></aup-command>\n</ng-container>\n", styles: [":host{display:grid;grid-template-rows:auto;align-items:center;justify-content:end;--resolved-activity-actions-gap: var(--activity-actions-gap, 8px)}:host[layout=block][align=start]{grid-template-areas:\"cancel confirm content\";grid-template-columns:auto auto 1fr}:host[layout=block][align=start] .confirm{margin-left:var(--resolved-activity-actions-gap)}:host[layout=block][align=end]{grid-template-areas:\"content cancel confirm\";grid-template-columns:1fr auto auto}:host[layout=block][align=end] .confirm{margin-left:var(--resolved-activity-actions-gap)}:host[layout=block][align=stretch]{grid-template-areas:\"cancel content confirm\";grid-template-columns:auto 1fr auto}:host[layout=inline]{grid-template-areas:\"confirm cancel content\";grid-template-columns:auto auto 1fr}:host[layout=inline] .cancel{margin-left:var(--resolved-activity-actions-gap)}.cancel{grid-area:cancel}.confirm{grid-area:confirm}.content{grid-area:content;text-align:left}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.CommandComponent, selector: "aup-command", inputs: ["command", "face$", "face", "busyFace$", "busyFace", "alignFace"] }] });
87
85
  }
88
86
  __decorate([
89
87
  Proxify(),
@@ -95,8 +93,8 @@ __decorate([
95
93
  ], ActivityActionsComponent.prototype, "cancelCommand", null);
96
94
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ActivityActionsComponent, decorators: [{
97
95
  type: Component,
98
- args: [{ selector: 'aup-activity-actions', template: "<div class=\"content\">\n <ng-content></ng-content>\n</div>\n<ng-container *ngIf=\"hasCancelFace()\">\n <aup-command #cancelCommandComponent class=\"cancel\" [command]=\"cancelCommand\" [face]=\"cancelFace\" data-cy=\"cancel-command\"></aup-command>\n</ng-container>\n<ng-container *ngIf=\"hasConfirmFace()\">\n <aup-command #confirmCommandComponent class=\"confirm\" [command]=\"confirmCommand\" [face]=\"confirmFace\" data-cy=\"confirm-command\"></aup-command>\n</ng-container>\n", styles: [":host{display:grid;grid-template-rows:auto;align-items:center;justify-content:end;--resolved-activity-actions-gap: var(--activity-actions-gap, 8px);grid-gap:var(--resolved-activity-actions-gap)}:host[layout=block][align=start]{grid-template-areas:\"cancel confirm content\";grid-template-columns:auto auto 1fr}:host[layout=block][align=start] .confirm{margin-left:var(--resolved-activity-actions-gap)}:host[layout=block][align=end]{grid-template-areas:\"content cancel confirm\";grid-template-columns:1fr auto auto}:host[layout=block][align=end] .confirm{margin-left:var(--resolved-activity-actions-gap)}:host[layout=block][align=stretch]{grid-template-areas:\"cancel content confirm\";grid-template-columns:auto 1fr auto}:host[layout=inline]{grid-template-areas:\"confirm cancel content\";grid-template-columns:auto auto 1fr}:host[layout=inline] .cancel{margin-left:var(--resolved-activity-actions-gap)}:host .cancel{grid-area:cancel}:host .confirm{grid-area:confirm}:host .content{display:flex;flex-direction:row;align-items:center}:host[align-content=start] .content{justify-items:start}:host[align-content=end]{justify-items:end}:host[align-content=center]{justify-items:center}\n"] }]
99
- }], ctorParameters: function () { return []; }, propDecorators: { confirmCommandComponent: [{
96
+ args: [{ selector: 'aup-activity-actions', template: "<div class=\"content\">\n <ng-content></ng-content>\n</div>\n<ng-container *ngIf=\"hasConfirmFace()\">\n <aup-command #confirmCommandComponent class=\"confirm\" [command]=\"confirmCommand\" [face]=\"confirmFace\" data-cy=\"confirm-command\"></aup-command>\n</ng-container>\n<ng-container *ngIf=\"hasCancelFace()\">\n <aup-command #cancelCommandComponent class=\"cancel\" [command]=\"cancelCommand\" [face]=\"cancelFace\" data-cy=\"cancel-command\"></aup-command>\n</ng-container>\n", styles: [":host{display:grid;grid-template-rows:auto;align-items:center;justify-content:end;--resolved-activity-actions-gap: var(--activity-actions-gap, 8px)}:host[layout=block][align=start]{grid-template-areas:\"cancel confirm content\";grid-template-columns:auto auto 1fr}:host[layout=block][align=start] .confirm{margin-left:var(--resolved-activity-actions-gap)}:host[layout=block][align=end]{grid-template-areas:\"content cancel confirm\";grid-template-columns:1fr auto auto}:host[layout=block][align=end] .confirm{margin-left:var(--resolved-activity-actions-gap)}:host[layout=block][align=stretch]{grid-template-areas:\"cancel content confirm\";grid-template-columns:auto 1fr auto}:host[layout=inline]{grid-template-areas:\"confirm cancel content\";grid-template-columns:auto auto 1fr}:host[layout=inline] .cancel{margin-left:var(--resolved-activity-actions-gap)}.cancel{grid-area:cancel}.confirm{grid-area:confirm}.content{grid-area:content;text-align:left}\n"] }]
97
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { confirmCommandComponent: [{
100
98
  type: ViewChild,
101
99
  args: ["confirmCommandComponent"]
102
100
  }], cancelCommandComponent: [{
@@ -124,11 +122,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
124
122
  }, {
125
123
  type: HostBinding,
126
124
  args: ['attr.align']
127
- }], alignContent: [{
128
- type: Input
129
- }, {
130
- type: HostBinding,
131
- args: ['attr.align-content']
132
125
  }] } });
133
126
  (function (ActivityActionsComponent) {
134
127
  ActivityActionsComponent.Layout = Enum({
@@ -137,13 +130,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
137
130
  });
138
131
  ActivityActionsComponent.Align = Enum({
139
132
  START: 'start',
140
- STRETCH: 'stretch',
141
- END: 'end'
142
- });
143
- ActivityActionsComponent.AlignContent = Enum({
144
- START: 'start',
145
- CENTER: 'center',
146
- END: 'end'
133
+ END: 'end',
134
+ STRETCH: 'stretch'
147
135
  });
148
136
  })(ActivityActionsComponent || (ActivityActionsComponent = {}));
149
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktYWN0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9pbnRlcmFjdGlvbi9jb21wb25lbnRzL2FjdGl2aXR5LWFjdGlvbnMvYWN0aXZpdHktYWN0aW9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9pbnRlcmFjdGlvbi9jb21wb25lbnRzL2FjdGl2aXR5LWFjdGlvbnMvYWN0aXZpdHktYWN0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RCxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFFN0MsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHdEQUF3RCxDQUFDO0FBQ3hGLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBQzdFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7OztBQUV2RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFNSCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsbUJBQW1CO0lBR3JELHVCQUF1QixDQUFrQjtJQUd6QyxzQkFBc0IsQ0FBa0I7SUFNekMsbUNBQWlCLE9BQU8sQ0FBQyxDQUFBLE9BQVksQ0FBQSxDQUFDLENBQUM7SUFKaEQ7O09BRUc7SUFFTSxJQUFBLGNBQWMsb0RB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LFFBQVE7UUFDaEIsR0FBRyxFQUFFLEtBQUs7S0FDWCxDQUFDLENBQUM7QUFRTCxDQUFDLEVBM0JnQix3QkFBd0IsS0FBeEIsd0JBQXdCLFFBMkJ4QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQsIFZpZXdDaGlsZH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7Q29tbWFuZCwgcHJveGlmeSwgUHJveGlmeX0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IHtFbnVtfSBmcm9tICd0eXBlc2NyaXB0LXN0cmluZy1lbnVtcyc7XG5cbmltcG9ydCB7Q29tbWFuZEZhY2V9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvY29tbWFuZHMvY29tbWFuZC1mYWNlJztcbmltcG9ydCB7Q29tbWFuZENvbXBvbmVudH0gZnJvbSBcIi4uLy4uLy4uL2NvbXBvbmVudHMvY29tbWFuZHMvY29tbWFuZC9jb21tYW5kLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtEaXNwb3NhYmxlQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2Rpc3Bvc2FibGUtY29tcG9uZW50JztcbmltcG9ydCB7QWN0aXZpdHlDb250ZXh0fSBmcm9tIFwiLi4vLi4vYWN0aXZpdHktY29udGV4dFwiO1xuXG4vKipcbiAqIEBleGFtcGxlXG4gKiA8YXVwLWFjdGl2aXR5LWFjdGlvbnMgW2NvbmZpcm1GYWNlXT1cInNhdmVGYWNlXCIgW2NhbmNlbEZhY2VdPVwiY2FuY2VsRmFjZVwiPlxuICogPC9hdXAtYWN0aXZpdHktYWN0aW9ucz5cbiAqXG4gKiAgPGF1cC1hY3Rpdml0eS1hY3Rpb25zIFtmYWNlc109XCJ7Y29uZmlybTogc2F2ZUZhY2UsIGNhbmNlbDogY2FuY2VsRmFjZX1cIj5cbiAqICA8L2F1cC1hY3Rpdml0eS1hY3Rpb25zPlxuICpcbiAqIC8vIFJ1bm5pbmcgYG5nIGcgQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzOmF1cC1pMThuYCB3aWxsIGluc3RhbGwgZGVmYXVsdFxuICogLy8gc3R5bGUgZGVmaW5pdGlvbnNcbiAqIDxhdXAtYWN0aXZpdHktYWN0aW9ucyBbZmFjZXNdPVwiSTE4bi5hdXAuY29tcG9uZW50cy5hY3Rpdml0eUFjdGlvbnMuc3R5bGVzLm9rQ2FuY2VsSWNvbnNcIj5cbiAqIDwvYXVwLWFjdGl2aXR5LWFjdGlvbnM+XG4gKlxuICogLy8geW91IGNhbiBhbHNvIGFkZCBhZGRpdGlvbmFsIGNvbnRlbnQgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCBhbG9uZyB3aXRoIHRoZSBidXR0b25zLlxuICogLy8gVGhlIGxvY2F0aW9uIG9mIHRoZSBjb250ZW50IGRlcGVuZHMgb24gdGhlIGFsaWdubWVudCBhdHRyaWJ1dGUuXG4gKiA8YXVwLWFjdGl2aXR5LWFjdGlvbnNcbiAqICAgICBhbGlnbj1cInN0cmV0Y2hcIlxuICogICAgIFtmYWNlc109XCJJMThuLmF1cC5jb21wb25lbnRzLmFjdGl2aXR5QWN0aW9ucy5zdHlsZXMub2tDYW5jZWxJY29uc1wiPlxuICogICAgIDxzcGFuPlRoaXMgY29udGVudCB3aWxsIGJlIGJldHdlZW4gdGhlIHR3byBjb21tYW5kczwvc3Bhbj5cbiAqIDwvYXVwLWFjdGl2aXR5LWFjdGlvbnM+XG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F1cC1hY3Rpdml0eS1hY3Rpb25zJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FjdGl2aXR5LWFjdGlvbnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hY3Rpdml0eS1hY3Rpb25zLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQWN0aXZpdHlBY3Rpb25zQ29tcG9uZW50IGV4dGVuZHMgRGlzcG9zYWJsZUNvbXBvbmVudCB7XG5cbiAgQFZpZXdDaGlsZChcImNvbmZpcm1Db21tYW5kQ29tcG9uZW50XCIpXG4gIHByb3RlY3RlZCBjb25maXJtQ29tbWFuZENvbXBvbmVudDogQ29tbWFuZENvbXBvbmVudFxuXG4gIEBWaWV3Q2hpbGQoXCJjYW5jZWxDb21tYW5kQ29tcG9uZW50XCIpXG4gIHByb3RlY3RlZCBjYW5jZWxDb21tYW5kQ29tcG9uZW50OiBDb21tYW5kQ29tcG9uZW50XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIGFjdGl2aXR5IGFjdGlvbnMgbm93IHVzZSB0aGUgY29uZmlybSBjb21tYW5kIG9mIHRoZSBhY3Rpdml0eSBhdXRvbWF0aWNhbGx5XG4gICAqL1xuICBASW5wdXQoKSBAUHJveGlmeSgpXG4gIGFjY2Vzc29yIGNvbmZpcm1Db21tYW5kID0gcHJveGlmeShDb21tYW5kPGFueT4pO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBhY3Rpdml0eSBhY3Rpb25zIG5vdyB1c2UgdGhlIGNhbmNlbCBjb21tYW5kIG9mIHRoZSBhY3Rpdml0eSBhdXRvbWF0aWNhbGx5XG4gICAqL1xuICBASW5wdXQoKSBAUHJveGlmeSgpXG4gIGFjY2Vzc29yIGNhbmNlbENvbW1hbmQgPSBwcm94aWZ5KENvbW1hbmQ8YW55Pik7XG5cbiAgQElucHV0KClcbiAgc2V0IGZhY2VzKGZhY2VzOiBBY3Rpdml0eUFjdGlvbnNDb21wb25lbnQuU3R5bGUpIHtcbiAgICB0aGlzLmNvbmZpcm1GYWNlID0gZmFjZXMuY29uZmlybTtcbiAgICB0aGlzLmNhbmNlbEZhY2UgPSBmYWNlcy5jYW5jZWw7XG4gIH1cblxuICBASW5wdXQoKVxuICBjb25maXJtRmFjZTogQ29tbWFuZEZhY2U7XG5cbiAgQElucHV0KClcbiAgY2FuY2VsRmFjZTogQ29tbWFuZEZhY2U7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSAjZmFjZXMgaW5zdGVhZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBzdHlsZShzdHlsZTogQWN0aXZpdHlBY3Rpb25zQ29tcG9uZW50LlN0eWxlKSB7XG4gICAgdGhpcy5mYWNlcyA9IHN0eWxlO1xuICB9XG5cbiAgQElucHV0KClcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmxheW91dCcpXG4gIGxheW91dDogQWN0aXZpdHlBY3Rpb25zQ29tcG9uZW50LkxheW91dCA9IEFjdGl2aXR5QWN0aW9uc0NvbXBvbmVudC5MYXlvdXQuQkxPQ0s7XG5cbiAgQElucHV0KClcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFsaWduJylcbiAgYWxpZ246IEFjdGl2aXR5QWN0aW9uc0NvbXBvbmVudC5BbGlnbiA9IEFjdGl2aXR5QWN0aW9uc0NvbXBvbmVudC5BbGlnbi5TVFJFVENIO1xuXG4gIEBJbnB1dCgpXG4gIEBIb3N0QmluZGluZygnYXR0ci5hbGlnbi1jb250ZW50JylcbiAgYWxpZ25Db250ZW50OiBBY3Rpdml0eUFjdGlvbnNDb21wb25lbnQuQWxpZ25Db250ZW50ID0gQWN0aXZpdHlBY3Rpb25zQ29tcG9uZW50LkFsaWduQ29udGVudC5DRU5URVI7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFjdGl2aXR5Q29udGV4dCA9IHRoaXMuaW5qZWN0KEFjdGl2aXR5Q29udGV4dCwge1xuICAgIG9wdGlvbmFsOiB0cnVlXG4gIH0pO1xuXG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICBpZiAodGhpcy5hY3Rpdml0eUNvbnRleHQpIHtcbiAgICAgIHRoaXMuY29uZmlybUNvbW1hbmQgPSB0aGlzLmFjdGl2aXR5Q29udGV4dC5jb25maXJtQ29tbWFuZDtcbiAgICAgIHRoaXMuY2FuY2VsQ29tbWFuZCA9IHRoaXMuYWN0aXZpdHlDb250ZXh0LmNhbmNlbENvbW1hbmQ7XG4gICAgfVxuICB9XG5cbiAgaGFzQ29uZmlybUZhY2UoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5jb25maXJtRmFjZTtcbiAgfVxuXG4gIGhhc0NhbmNlbEZhY2UoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5jYW5jZWxGYWNlO1xuICB9XG5cbiAgZm9jdXNDb25maXJtKCkge1xuICAgIHRoaXMuY29uZmlybUNvbW1hbmRDb21wb25lbnQucmVxdWVzdEZvY3VzKCk7XG4gIH1cblxuICBmb2N1c0NhbmNlbCgpIHtcbiAgICB0aGlzLmNhbmNlbENvbW1hbmRDb21wb25lbnQucmVxdWVzdEZvY3VzKCk7XG4gIH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBBY3Rpdml0eUFjdGlvbnNDb21wb25lbnQge1xuXG4gIGV4cG9ydCBjb25zdCBMYXlvdXQgPSBFbnVtKHtcbiAgICBJTkxJTkU6ICdpbmxpbmUnLFxuICAgIEJMT0NLOiAnYmxvY2snXG4gIH0pO1xuICBleHBvcnQgdHlwZSBMYXlvdXQgPSBFbnVtPHR5cGVvZiBMYXlvdXQ+O1xuXG4gIGV4cG9ydCBjb25zdCBBbGlnbiA9IEVudW0oe1xuICAgIFNUQVJUOiAnc3RhcnQnLFxuICAgIFNUUkVUQ0g6ICdzdHJldGNoJyxcbiAgICBFTkQ6ICdlbmQnXG4gIH0pO1xuICBleHBvcnQgdHlwZSBBbGlnbiA9IEVudW08dHlwZW9mIEFsaWduPjtcblxuICBleHBvcnQgY29uc3QgQWxpZ25Db250ZW50ID0gRW51bSh7XG4gICAgU1RBUlQ6ICdzdGFydCcsXG4gICAgQ0VOVEVSOiAnY2VudGVyJyxcbiAgICBFTkQ6ICdlbmQnXG4gIH0pO1xuICBleHBvcnQgdHlwZSBBbGlnbkNvbnRlbnQgPSBFbnVtPHR5cGVvZiBBbGlnbkNvbnRlbnQ+O1xuXG4gIGV4cG9ydCBpbnRlcmZhY2UgU3R5bGUge1xuICAgIGNvbmZpcm06IENvbW1hbmRGYWNlO1xuICAgIGNhbmNlbDogQ29tbWFuZEZhY2U7XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cImNvbnRlbnRcIj5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+XG48bmctY29udGFpbmVyICpuZ0lmPVwiaGFzQ2FuY2VsRmFjZSgpXCI+XG4gIDxhdXAtY29tbWFuZCAjY2FuY2VsQ29tbWFuZENvbXBvbmVudCBjbGFzcz1cImNhbmNlbFwiIFtjb21tYW5kXT1cImNhbmNlbENvbW1hbmRcIiBbZmFjZV09XCJjYW5jZWxGYWNlXCIgZGF0YS1jeT1cImNhbmNlbC1jb21tYW5kXCI+PC9hdXAtY29tbWFuZD5cbjwvbmctY29udGFpbmVyPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc0NvbmZpcm1GYWNlKClcIj5cbiAgPGF1cC1jb21tYW5kICNjb25maXJtQ29tbWFuZENvbXBvbmVudCBjbGFzcz1cImNvbmZpcm1cIiBbY29tbWFuZF09XCJjb25maXJtQ29tbWFuZFwiIFtmYWNlXT1cImNvbmZpcm1GYWNlXCIgZGF0YS1jeT1cImNvbmZpcm0tY29tbWFuZFwiPjwvYXVwLWNvbW1hbmQ+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktYWN0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9pbnRlcmFjdGlvbi9jb21wb25lbnRzL2FjdGl2aXR5LWFjdGlvbnMvYWN0aXZpdHktYWN0aW9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9pbnRlcmFjdGlvbi9jb21wb25lbnRzL2FjdGl2aXR5LWFjdGlvbnMvYWN0aXZpdHktYWN0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RCxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHdEQUF3RCxDQUFDO0FBQ3hGLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLDBDQUEwQyxDQUFDOzs7O0FBRTdFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQU1ILE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxtQkFBbUI7SUFpRGxDO0lBOUNuQix1QkFBdUIsQ0FBa0I7SUFHekMsc0JBQXNCLENBQWtCO0lBTXpDLG1DQUFpQixPQUFPLENBQUMsQ0FBQSxPQUFZLENBQUEsQ0FBQyxDQUFDO0lBSmhEOztPQUVHO0lBRU0sSUFBQSxjQUFjLG9EQUF5QjtJQUF2QyxJQUFBLGNBQWMsMERBQXlCO0lBTXZDLGtDQUFlLE9BQU8sQ0FBQyxDQUFBLE9BQVksQ0FBQSxDQUFDLENBQUM7SUFKOUM7O09BRUc7SUFFTSxJQUFBLGFBQWEsbURBQXdCO0lBQXJDLElBQUEsYUFBYSx5REFBd0I7SUFFOUMsSUFDSSxLQUFLLENBQUMsS0FBcUM7UUFDN0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUNqQyxDQUFDO0lBR0QsV0FBVyxDQUFjO0lBR3pCLFVBQVUsQ0FBYztJQUV4Qjs7T0FFRztJQUNILElBQ0ksS0FBSyxDQUFDLEtBQXFDO1FBQzdDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFJRCxNQUFNLEdBQW9DLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFJaEYsS0FBSyxHQUFtQyx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBRy9FLFlBQTZCLEdBQXNCO1FBQ2pELEtBQUssRUFBRSxDQUFDO1FBRG1CLFFBQUcsR0FBSCxHQUFHLENBQW1CO0lBRW5ELENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQztJQUVELFlBQVksQ0FBQyxRQUErRTtRQUMxRixJQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUM7UUFDOUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDO1FBQzVDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsdUJBQXVCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsc0JBQXNCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDN0MsQ0FBQzt1R0F6RVUsd0JBQXdCOzJGQUF4Qix3QkFBd0Isb21CQ2pDckMsc2VBU0E7O0FEb0NXO0lBREMsT0FBTyxFQUFFOzs4REFDNkI7QUFNdkM7SUFEQyxPQUFPLEVBQUU7OzZEQUMyQjsyRkFsQm5DLHdCQUF3QjtrQkFMcEMsU0FBUzsrQkFDRSxzQkFBc0I7d0dBT3RCLHVCQUF1QjtzQkFEaEMsU0FBUzt1QkFBQyx5QkFBeUI7Z0JBSTFCLHNCQUFzQjtzQkFEL0IsU0FBUzt1QkFBQyx3QkFBd0I7Z0JBTzFCLGNBQWM7c0JBRHRCLEtBQUs7Z0JBT0csYUFBYTtzQkFEckIsS0FBSztnQkFJRixLQUFLO3NCQURSLEtBQUs7Z0JBT04sV0FBVztzQkFEVixLQUFLO2dCQUlOLFVBQVU7c0JBRFQsS0FBSztnQkFPRixLQUFLO3NCQURSLEtBQUs7Z0JBT04sTUFBTTtzQkFGTCxLQUFLOztzQkFDTCxXQUFXO3VCQUFDLGFBQWE7Z0JBSzFCLEtBQUs7c0JBRkosS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxZQUFZOztBQStCM0IsV0FBaUIsd0JBQXdCO0lBRTFCLCtCQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLEtBQUssRUFBRSxPQUFPO0tBQ2YsQ0FBQyxDQUFDO0lBR1UsOEJBQUssR0FBRyxJQUFJLENBQUM7UUFDeEIsS0FBSyxFQUFFLE9BQU87UUFDZCxHQUFHLEVBQUUsS0FBSztRQUNWLE9BQU8sRUFBRSxTQUFTO0tBQ25CLENBQUMsQ0FBQztBQVFMLENBQUMsRUFwQmdCLHdCQUF3QixLQUF4Qix3QkFBd0IsUUFvQnhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQsIFZpZXdDaGlsZH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7Q29tbWFuZCwgcHJveGlmeSwgUHJveGlmeX0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IHtFbnVtfSBmcm9tICd0eXBlc2NyaXB0LXN0cmluZy1lbnVtcyc7XG5pbXBvcnQge0NvbW1hbmRGYWNlfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2NvbW1hbmRzL2NvbW1hbmQtZmFjZSc7XG5pbXBvcnQge0NvbW1hbmRDb21wb25lbnR9IGZyb20gXCIuLi8uLi8uLi9jb21wb25lbnRzL2NvbW1hbmRzL2NvbW1hbmQvY29tbWFuZC5jb21wb25lbnRcIjtcbmltcG9ydCB7RGlzcG9zYWJsZUNvbXBvbmVudH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9kaXNwb3NhYmxlLWNvbXBvbmVudCc7XG5cbi8qKlxuICogQGV4YW1wbGVcbiAqIDxhdXAtYWN0aXZpdHktYWN0aW9ucyBbY29uZmlybUZhY2VdPVwic2F2ZUZhY2VcIiBbY2FuY2VsRmFjZV09XCJjYW5jZWxGYWNlXCI+XG4gKiA8L2F1cC1hY3Rpdml0eS1hY3Rpb25zPlxuICpcbiAqICA8YXVwLWFjdGl2aXR5LWFjdGlvbnMgW2ZhY2VzXT1cIntjb25maXJtOiBzYXZlRmFjZSwgY2FuY2VsOiBjYW5jZWxGYWNlfVwiPlxuICogIDwvYXVwLWFjdGl2aXR5LWFjdGlvbnM+XG4gKlxuICogLy8gUnVubmluZyBgbmcgZyBAY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHM6YXVwLWkxOG5gIHdpbGwgaW5zdGFsbCBkZWZhdWx0XG4gKiAvLyBzdHlsZSBkZWZpbml0aW9uc1xuICogPGF1cC1hY3Rpdml0eS1hY3Rpb25zIFtmYWNlc109XCJJMThuLmF1cC5jb21wb25lbnRzLmFjdGl2aXR5QWN0aW9ucy5zdHlsZXMub2tDYW5jZWxJY29uc1wiPlxuICogPC9hdXAtYWN0aXZpdHktYWN0aW9ucz5cbiAqXG4gKiAvLyB5b3UgY2FuIGFsc28gYWRkIGFkZGl0aW9uYWwgY29udGVudCB0aGF0IHdpbGwgYmUgZGlzcGxheWVkIGFsb25nIHdpdGggdGhlIGJ1dHRvbnMuXG4gKiAvLyBUaGUgbG9jYXRpb24gb2YgdGhlIGNvbnRlbnQgZGVwZW5kcyBvbiB0aGUgYWxpZ25tZW50IGF0dHJpYnV0ZS5cbiAqIDxhdXAtYWN0aXZpdHktYWN0aW9uc1xuICogICAgIGFsaWduPVwic3RyZXRjaFwiXG4gKiAgICAgW2ZhY2VzXT1cIkkxOG4uYXVwLmNvbXBvbmVudHMuYWN0aXZpdHlBY3Rpb25zLnN0eWxlcy5va0NhbmNlbEljb25zXCI+XG4gKiAgICAgPHNwYW4+VGhpcyBjb250ZW50IHdpbGwgYmUgYmV0d2VlbiB0aGUgdHdvIGNvbW1hbmRzPC9zcGFuPlxuICogPC9hdXAtYWN0aXZpdHktYWN0aW9ucz5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXVwLWFjdGl2aXR5LWFjdGlvbnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWN0aXZpdHktYWN0aW9ucy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FjdGl2aXR5LWFjdGlvbnMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBBY3Rpdml0eUFjdGlvbnNDb21wb25lbnQgZXh0ZW5kcyBEaXNwb3NhYmxlQ29tcG9uZW50IHtcblxuICBAVmlld0NoaWxkKFwiY29uZmlybUNvbW1hbmRDb21wb25lbnRcIilcbiAgcHJvdGVjdGVkIGNvbmZpcm1Db21tYW5kQ29tcG9uZW50OiBDb21tYW5kQ29tcG9uZW50XG5cbiAgQFZpZXdDaGlsZChcImNhbmNlbENvbW1hbmRDb21wb25lbnRcIilcbiAgcHJvdGVjdGVkIGNhbmNlbENvbW1hbmRDb21wb25lbnQ6IENvbW1hbmRDb21wb25lbnRcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgYWN0aXZpdHkgYWN0aW9ucyBub3cgdXNlIHRoZSBjb25maXJtIGNvbW1hbmQgb2YgdGhlIGFjdGl2aXR5IGF1dG9tYXRpY2FsbHlcbiAgICovXG4gIEBJbnB1dCgpIEBQcm94aWZ5KClcbiAgYWNjZXNzb3IgY29uZmlybUNvbW1hbmQgPSBwcm94aWZ5KENvbW1hbmQ8YW55Pik7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIGFjdGl2aXR5IGFjdGlvbnMgbm93IHVzZSB0aGUgY2FuY2VsIGNvbW1hbmQgb2YgdGhlIGFjdGl2aXR5IGF1dG9tYXRpY2FsbHlcbiAgICovXG4gIEBJbnB1dCgpIEBQcm94aWZ5KClcbiAgYWNjZXNzb3IgY2FuY2VsQ29tbWFuZD0gcHJveGlmeShDb21tYW5kPGFueT4pO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBmYWNlcyhmYWNlczogQWN0aXZpdHlBY3Rpb25zQ29tcG9uZW50LlN0eWxlKSB7XG4gICAgdGhpcy5jb25maXJtRmFjZSA9IGZhY2VzLmNvbmZpcm07XG4gICAgdGhpcy5jYW5jZWxGYWNlID0gZmFjZXMuY2FuY2VsO1xuICB9XG5cbiAgQElucHV0KClcbiAgY29uZmlybUZhY2U6IENvbW1hbmRGYWNlO1xuXG4gIEBJbnB1dCgpXG4gIGNhbmNlbEZhY2U6IENvbW1hbmRGYWNlO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgI2ZhY2VzIGluc3RlYWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgc3R5bGUoc3R5bGU6IEFjdGl2aXR5QWN0aW9uc0NvbXBvbmVudC5TdHlsZSkge1xuICAgIHRoaXMuZmFjZXMgPSBzdHlsZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIEBIb3N0QmluZGluZygnYXR0ci5sYXlvdXQnKVxuICBsYXlvdXQ6IEFjdGl2aXR5QWN0aW9uc0NvbXBvbmVudC5MYXlvdXQgPSBBY3Rpdml0eUFjdGlvbnNDb21wb25lbnQuTGF5b3V0LkJMT0NLO1xuXG4gIEBJbnB1dCgpXG4gIEBIb3N0QmluZGluZygnYXR0ci5hbGlnbicpXG4gIGFsaWduOiBBY3Rpdml0eUFjdGlvbnNDb21wb25lbnQuQWxpZ24gPSBBY3Rpdml0eUFjdGlvbnNDb21wb25lbnQuQWxpZ24uU1RSRVRDSDtcblxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBoYXNDb25maXJtRmFjZSgpIHtcbiAgICByZXR1cm4gISF0aGlzLmNvbmZpcm1GYWNlO1xuICB9XG5cbiAgaGFzQ2FuY2VsRmFjZSgpIHtcbiAgICByZXR1cm4gISF0aGlzLmNhbmNlbEZhY2U7XG4gIH1cblxuICBpbml0Q29tbWFuZHMoYWN0aXZpdHk6IHsgY29uZmlybUNvbW1hbmQ6IENvbW1hbmQ8dW5rbm93bj4sIGNhbmNlbENvbW1hbmQ6IENvbW1hbmQ8dW5rbm93bj4gfSkge1xuICAgIHRoaXMuY29uZmlybUNvbW1hbmQgPSBhY3Rpdml0eS5jb25maXJtQ29tbWFuZDtcbiAgICB0aGlzLmNhbmNlbENvbW1hbmQgPSBhY3Rpdml0eS5jYW5jZWxDb21tYW5kO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGZvY3VzQ29uZmlybSgpIHtcbiAgICB0aGlzLmNvbmZpcm1Db21tYW5kQ29tcG9uZW50LnJlcXVlc3RGb2N1cygpO1xuICB9XG5cbiAgZm9jdXNDYW5jZWwoKSB7XG4gICAgdGhpcy5jYW5jZWxDb21tYW5kQ29tcG9uZW50LnJlcXVlc3RGb2N1cygpO1xuICB9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgQWN0aXZpdHlBY3Rpb25zQ29tcG9uZW50IHtcblxuICBleHBvcnQgY29uc3QgTGF5b3V0ID0gRW51bSh7XG4gICAgSU5MSU5FOiAnaW5saW5lJyxcbiAgICBCTE9DSzogJ2Jsb2NrJ1xuICB9KTtcbiAgZXhwb3J0IHR5cGUgTGF5b3V0ID0gRW51bTx0eXBlb2YgTGF5b3V0PjtcblxuICBleHBvcnQgY29uc3QgQWxpZ24gPSBFbnVtKHtcbiAgICBTVEFSVDogJ3N0YXJ0JyxcbiAgICBFTkQ6ICdlbmQnLFxuICAgIFNUUkVUQ0g6ICdzdHJldGNoJ1xuICB9KTtcbiAgZXhwb3J0IHR5cGUgQWxpZ24gPSBFbnVtPHR5cGVvZiBBbGlnbj47XG5cbiAgZXhwb3J0IGludGVyZmFjZSBTdHlsZSB7XG4gICAgY29uZmlybTogQ29tbWFuZEZhY2U7XG4gICAgY2FuY2VsOiBDb21tYW5kRmFjZTtcbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNDb25maXJtRmFjZSgpXCI+XG4gIDxhdXAtY29tbWFuZCAjY29uZmlybUNvbW1hbmRDb21wb25lbnQgY2xhc3M9XCJjb25maXJtXCIgW2NvbW1hbmRdPVwiY29uZmlybUNvbW1hbmRcIiBbZmFjZV09XCJjb25maXJtRmFjZVwiIGRhdGEtY3k9XCJjb25maXJtLWNvbW1hbmRcIj48L2F1cC1jb21tYW5kPlxuPC9uZy1jb250YWluZXI+XG48bmctY29udGFpbmVyICpuZ0lmPVwiaGFzQ2FuY2VsRmFjZSgpXCI+XG4gIDxhdXAtY29tbWFuZCAjY2FuY2VsQ29tbWFuZENvbXBvbmVudCBjbGFzcz1cImNhbmNlbFwiIFtjb21tYW5kXT1cImNhbmNlbENvbW1hbmRcIiBbZmFjZV09XCJjYW5jZWxGYWNlXCIgZGF0YS1jeT1cImNhbmNlbC1jb21tYW5kXCI+PC9hdXAtY29tbWFuZD5cbjwvbmctY29udGFpbmVyPlxuIl19
@@ -6,7 +6,6 @@ import { findLast } from "lodash-es";
6
6
  import { PlaceRouter } from "../../../place/place-router";
7
7
  import { AbstractInteractionContext } from "../../abstract-interaction-context";
8
8
  import { ActivityRef } from "../../activity-ref";
9
- import { INTERACTION_CONTEXT } from "../../interaction-context";
10
9
  import { ActivityOutletComponent } from "./activity-outlet/activity-outlet.component";
11
10
  import * as i0 from "@angular/core";
12
11
  import * as i1 from "../../../place/place-router";
@@ -21,7 +20,6 @@ export class ActivityContainerComponent extends AbstractInteractionContext {
21
20
  tabs;
22
21
  activityOutlets;
23
22
  activityRefs = [];
24
- animationDuration = "500ms";
25
23
  _identifier;
26
24
  _deferredCleanUp;
27
25
  interactionServiceApi;
@@ -34,7 +32,6 @@ export class ActivityContainerComponent extends AbstractInteractionContext {
34
32
  busy = this.registerDisposable(new DelegatingValueModel().withDefault(false));
35
33
  syncTabsJob = undefined;
36
34
  stable$;
37
- wasActive = false;
38
35
  constructor(placeRouter) {
39
36
  super();
40
37
  this.placeRouter = placeRouter;
@@ -71,12 +68,7 @@ export class ActivityContainerComponent extends AbstractInteractionContext {
71
68
  * Returns true if an activity is currently running.
72
69
  */
73
70
  isActive() {
74
- const isActive = this.getActiveActivityCount() > 0;
75
- // if (this.wasActive !== isActive) {
76
- // console.log({was: this.wasActive, is: isActive});
77
- // }
78
- // this.wasActive = isActive
79
- return isActive;
71
+ return this.getActiveActivityCount() > 0;
80
72
  }
81
73
  registerDisposable(disposable) {
82
74
  return this.garbage.registerDisposable(disposable);
@@ -94,9 +86,6 @@ export class ActivityContainerComponent extends AbstractInteractionContext {
94
86
  }
95
87
  return findLast(this.activityRefs, tab => !tab.isComplete());
96
88
  }
97
- get disableClose() {
98
- return this.getActiveActivityRef().activity.disableClose;
99
- }
100
89
  /**
101
90
  * Cancels the current activity and returns true the context is no longer active, false if
102
91
  * there is still another activity running.
@@ -162,7 +151,7 @@ export class ActivityContainerComponent extends AbstractInteractionContext {
162
151
  // by activity index)
163
152
  setTimeout(() => {
164
153
  this.activityRefs = []; // we have to do it after the animation timeout or the activity disappears before the animatin finsihes
165
- }, this.getTabAnimationDurationInMillis());
154
+ }, this.getTabAnimationDuration());
166
155
  const promise = this.interactionServiceApi.notifyFinished(this);
167
156
  this._deferredCleanUp = promise
168
157
  .finally(() => {
@@ -188,6 +177,7 @@ export class ActivityContainerComponent extends AbstractInteractionContext {
188
177
  /**
189
178
  * Synchronises the selected tab index.
190
179
  */
180
+ // @Trace()
191
181
  synchroniseSelectedTabIndex() {
192
182
  assert.isTruthy(this.isActive());
193
183
  const previousIndex = this.tabs.selectedIndex;
@@ -199,10 +189,10 @@ export class ActivityContainerComponent extends AbstractInteractionContext {
199
189
  activityRef.setFocused(false);
200
190
  this.busy.setDelegate(activityRef.activityBusy);
201
191
  this.tabs.selectedIndex = newIndex;
202
- // if (this.ready$.value) {
203
- // // Note: We're not using the animation done event as it's firing almost immeadiately.
204
- // setTimeout(() => this.finaliseActivityStates(), animate ? this.getTabAnimationDurationInMillis() : 0);
205
- // }
192
+ if (this.ready$.value) {
193
+ // Note: We're not using the animation done event as it's firing almost immeadiately.
194
+ setTimeout(() => this.finaliseActivityStates(), animate ? this.getTabAnimationDuration() : 0);
195
+ }
206
196
  }
207
197
  }
208
198
  finaliseActivityStates() {
@@ -216,12 +206,7 @@ export class ActivityContainerComponent extends AbstractInteractionContext {
216
206
  return this.activityOutlets.toArray()[this.tabs.selectedIndex];
217
207
  }
218
208
  getTabAnimationDuration() {
219
- // const s = this._started$.value ? this.animationDuration : "0";
220
- // return s
221
- return this.animationDuration;
222
- }
223
- getTabAnimationDurationInMillis() {
224
- const match = this.animationDuration.match(/(\d+)(.*)/);
209
+ const match = this.tabs.animationDuration.match(/(\d+)(.*)/);
225
210
  const numericValue = parseFloat(match[1]);
226
211
  switch (match[2].trim()) {
227
212
  case "ms":
@@ -247,20 +232,12 @@ export class ActivityContainerComponent extends AbstractInteractionContext {
247
232
  }
248
233
  }, 75);
249
234
  }
250
- onAnimationDone() {
251
- this._started$.value = true;
252
- this.finaliseActivityStates();
253
- }
254
235
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ActivityContainerComponent, deps: [{ token: i1.PlaceRouter }], target: i0.ɵɵFactoryTarget.Component });
255
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: ActivityContainerComponent, selector: "aup-activity-container", inputs: { dynamicHeight: "dynamicHeight", animationDuration: "animationDuration" }, providers: [
256
- { provide: INTERACTION_CONTEXT, useClass: ActivityContainerComponent },
257
- ], viewQueries: [{ propertyName: "tabs", first: true, predicate: ["tabs"], descendants: true, static: true }, { propertyName: "activityOutlets", predicate: ActivityOutletComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-tab-group #tabs no-tab-header\n [dynamicHeight]=\"dynamicHeight\"\n [class.full-height-tabs]=\"!dynamicHeight\"\n [animationDuration]=\"getTabAnimationDuration()\"\n (animationDone)=\"onAnimationDone()\"\n>\n <mat-tab *ngFor=\"let activityRef of activityRefs; let i = index; trackBy: activityIndex\">\n <aup-busy-overlay [busy$]=\"busy\" cdkTrapFocus cdkTrapFocusAutoCapture>\n <!--\n We have issues where angular is triggering a leave animation when an\n new activity is started, but is not running the enter animation\n when it is scrolled back into view. So we track the tab changes and\n disable all animations inside the tab while we're animating.\n -->\n <div class=\"activity-outlet-wrapper\" [@.disabled]=\"!activityRef.focused\">\n <aup-activity-outlet [nestedInteractionContext]=\"this\" [activityRef]=\"activityRef\"></aup-activity-outlet>\n </div>\n </aup-busy-overlay>\n </mat-tab>\n</mat-tab-group>\n", styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}aup-busy-overlay{flex:1}.activity-outlet-wrapper{flex:1}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i3.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i3.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "component", type: i4.BusyOverlayComponent, selector: "aup-busy-overlay", inputs: ["busy$", "busy"] }, { kind: "directive", type: i5.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: i6.ActivityOutletComponent, selector: "aup-activity-outlet", inputs: ["nestedInteractionContext", "activityRef"] }] });
236
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: ActivityContainerComponent, selector: "aup-activity-container", inputs: { dynamicHeight: "dynamicHeight" }, viewQueries: [{ propertyName: "tabs", first: true, predicate: ["tabs"], descendants: true, static: true }, { propertyName: "activityOutlets", predicate: ActivityOutletComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-tab-group #tabs no-tab-header\n [dynamicHeight]=\"dynamicHeight\"\n [class.full-height-tabs]=\"!dynamicHeight\">\n <mat-tab *ngFor=\"let activityRef of activityRefs; let i = index; trackBy: activityIndex\">\n <aup-busy-overlay [busy$]=\"busy\" cdkTrapFocus cdkTrapFocusAutoCapture>\n <!--\n We have issues where angular is triggering a leave animation when an\n new activity is started, but is not running the enter animation\n when it is scrolled back into view. So we track the tab changes and\n disable all animations inside the tab while we're animating.\n -->\n <div class=\"activity-outlet-wrapper\" [@.disabled]=\"!activityRef.focused\">\n <aup-activity-outlet [nestedInteractionContext]=\"this\" [activityRef]=\"activityRef\"></aup-activity-outlet>\n </div>\n </aup-busy-overlay>\n </mat-tab>\n</mat-tab-group>\n", styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}aup-busy-overlay{flex:1}.activity-outlet-wrapper{flex:1}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i3.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i3.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "component", type: i4.BusyOverlayComponent, selector: "aup-busy-overlay", inputs: ["busy$", "busy"] }, { kind: "directive", type: i5.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: i6.ActivityOutletComponent, selector: "aup-activity-outlet", inputs: ["nestedInteractionContext", "activityRef"] }] });
258
237
  }
259
238
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ActivityContainerComponent, decorators: [{
260
239
  type: Component,
261
- args: [{ selector: "aup-activity-container", providers: [
262
- { provide: INTERACTION_CONTEXT, useClass: ActivityContainerComponent },
263
- ], template: "<mat-tab-group #tabs no-tab-header\n [dynamicHeight]=\"dynamicHeight\"\n [class.full-height-tabs]=\"!dynamicHeight\"\n [animationDuration]=\"getTabAnimationDuration()\"\n (animationDone)=\"onAnimationDone()\"\n>\n <mat-tab *ngFor=\"let activityRef of activityRefs; let i = index; trackBy: activityIndex\">\n <aup-busy-overlay [busy$]=\"busy\" cdkTrapFocus cdkTrapFocusAutoCapture>\n <!--\n We have issues where angular is triggering a leave animation when an\n new activity is started, but is not running the enter animation\n when it is scrolled back into view. So we track the tab changes and\n disable all animations inside the tab while we're animating.\n -->\n <div class=\"activity-outlet-wrapper\" [@.disabled]=\"!activityRef.focused\">\n <aup-activity-outlet [nestedInteractionContext]=\"this\" [activityRef]=\"activityRef\"></aup-activity-outlet>\n </div>\n </aup-busy-overlay>\n </mat-tab>\n</mat-tab-group>\n", styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}aup-busy-overlay{flex:1}.activity-outlet-wrapper{flex:1}\n"] }]
240
+ args: [{ selector: "aup-activity-container", template: "<mat-tab-group #tabs no-tab-header\n [dynamicHeight]=\"dynamicHeight\"\n [class.full-height-tabs]=\"!dynamicHeight\">\n <mat-tab *ngFor=\"let activityRef of activityRefs; let i = index; trackBy: activityIndex\">\n <aup-busy-overlay [busy$]=\"busy\" cdkTrapFocus cdkTrapFocusAutoCapture>\n <!--\n We have issues where angular is triggering a leave animation when an\n new activity is started, but is not running the enter animation\n when it is scrolled back into view. So we track the tab changes and\n disable all animations inside the tab while we're animating.\n -->\n <div class=\"activity-outlet-wrapper\" [@.disabled]=\"!activityRef.focused\">\n <aup-activity-outlet [nestedInteractionContext]=\"this\" [activityRef]=\"activityRef\"></aup-activity-outlet>\n </div>\n </aup-busy-overlay>\n </mat-tab>\n</mat-tab-group>\n", styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}aup-busy-overlay{flex:1}.activity-outlet-wrapper{flex:1}\n"] }]
264
241
  }], ctorParameters: function () { return [{ type: i1.PlaceRouter }]; }, propDecorators: { dynamicHeight: [{
265
242
  type: Input
266
243
  }], tabs: [{
@@ -269,7 +246,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
269
246
  }], activityOutlets: [{
270
247
  type: ViewChildren,
271
248
  args: [ActivityOutletComponent]
272
- }], animationDuration: [{
273
- type: Input
274
249
  }] } });
275
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL2ludGVyYWN0aW9uL2NvbXBvbmVudHMvYWN0aXZpdHktY29udGFpbmVyL2FjdGl2aXR5LWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9pbnRlcmFjdGlvbi9jb21wb25lbnRzL2FjdGl2aXR5LWNvbnRhaW5lci9hY3Rpdml0eS1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBZSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDaEcsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFDTCxNQUFNLEVBR04sb0JBQW9CLEVBRXBCLEdBQUcsRUFDSCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2xCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBRWxELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDbkMsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3hELE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBRTlFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUMvQyxPQUFPLEVBQUMsbUJBQW1CLEVBQXFCLE1BQU0sMkJBQTJCLENBQUM7QUFFbEYsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sNkNBQTZDLENBQUM7Ozs7Ozs7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YUFDcEM7UUFDSCxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDVCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQTtRQUMzQixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQTtJQUMvQixDQUFDO3VHQXZSVSwwQkFBMEI7MkZBQTFCLDBCQUEwQixxSUFKM0I7WUFDUixFQUFDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsMEJBQTBCLEVBQUM7U0FDckUsMkpBVWEsdUJBQXVCLHVFQ3ZDdkMseWdDQW9CQTs7MkZEV2EsMEJBQTBCO2tCQVJ0QyxTQUFTOytCQUNFLHdCQUF3QixhQUd4Qjt3QkFDUixFQUFDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxRQUFRLDRCQUE0QixFQUFDO3FCQUNyRTtrR0FLRCxhQUFhO3NCQURaLEtBQUs7Z0JBSU4sSUFBSTtzQkFESCxTQUFTO3VCQUFDLE1BQU0sRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7Z0JBSWpDLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyx1QkFBdUI7Z0JBTXJDLGlCQUFpQjtzQkFEaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkLCBWaWV3Q2hpbGRyZW59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge01hdFRhYkdyb3VwfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvdGFic1wiO1xuaW1wb3J0IHtcbiAgYXNzZXJ0LFxuICBCb29sZWFuVmFsdWVNb2RlbENoYWluLFxuICBDb25zdHJ1Y3RhYmxlLFxuICBEZWxlZ2F0aW5nVmFsdWVNb2RlbCxcbiAgRGlzcG9zYWJsZSxcbiAgRHNsLFxuICBHYXJiYWdlQ29sbGVjdG9yLFxuICBNdXRhYmxlVmFsdWVNb2RlbCwgVHJhY2Vcbn0gZnJvbSBcIkBjb29sb24vcGVjdGluXCI7XG5pbXBvcnQge2xhbmd9IGZyb20gXCJAY29vbG9uL3R5cGVzY3JpcHQtdXRpbGl0aWVzXCI7XG5cbmltcG9ydCB7ZmluZExhc3R9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7UGxhY2VSb3V0ZXJ9IGZyb20gXCIuLi8uLi8uLi9wbGFjZS9wbGFjZS1yb3V0ZXJcIjtcbmltcG9ydCB7QWJzdHJhY3RJbnRlcmFjdGlvbkNvbnRleHR9IGZyb20gXCIuLi8uLi9hYnN0cmFjdC1pbnRlcmFjdGlvbi1jb250ZXh0XCI7XG5pbXBvcnQge0FjdGl2aXR5fSBmcm9tIFwiLi4vLi4vYWN0aXZpdHlcIjtcbmltcG9ydCB7QWN0aXZpdHlSZWZ9IGZyb20gXCIuLi8uLi9hY3Rpdml0eS1yZWZcIjtcbmltcG9ydCB7SU5URVJBQ1RJT05fQ09OVEVYVCwgSW50ZXJhY3Rpb25Db250ZXh0fSBmcm9tIFwiLi4vLi4vaW50ZXJhY3Rpb24tY29udGV4dFwiO1xuaW1wb3J0IHtJbnRlcmFjdGlvblNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9pbnRlcmFjdGlvbi5zZXJ2aWNlXCI7XG5pbXBvcnQge0FjdGl2aXR5T3V0bGV0Q29tcG9uZW50fSBmcm9tIFwiLi9hY3Rpdml0eS1vdXRsZXQvYWN0aXZpdHktb3V0bGV0LmNvbXBvbmVudFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiYXVwLWFjdGl2aXR5LWNvbnRhaW5lclwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2FjdGl2aXR5LWNvbnRhaW5lci5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vYWN0aXZpdHktY29udGFpbmVyLmNvbXBvbmVudC5zY3NzXCJdLFxuICBwcm92aWRlcnM6W1xuICAgIHtwcm92aWRlOiBJTlRFUkFDVElPTl9DT05URVhULCB1c2VDbGFzczogQWN0aXZpdHlDb250YWluZXJDb21wb25lbnR9LFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEFjdGl2aXR5Q29udGFpbmVyQ29tcG9uZW50PEQsIFIsIEU+IGV4dGVuZHMgQWJzdHJhY3RJbnRlcmFjdGlvbkNvbnRleHQge1xuXG4gIEBJbnB1dCgpXG4gIGR5bmFtaWNIZWlnaHQgPSBmYWxzZTtcblxuICBAVmlld0NoaWxkKFwidGFic1wiLCB7c3RhdGljOiB0cnVlfSlcbiAgdGFiczogTWF0VGFiR3JvdXA7XG5cbiAgQFZpZXdDaGlsZHJlbihBY3Rpdml0eU91dGxldENvbXBvbmVudClcbiAgYWN0aXZpdHlPdXRsZXRzOiBRdWVyeUxpc3Q8QWN0aXZpdHlPdXRsZXRDb21wb25lbnQ8YW55LCBhbnksIGFueT4+O1xuXG4gIGFjdGl2aXR5UmVmczogQWN0aXZpdHlSZWY8YW55LCBhbnksIGFueT5bXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIGFuaW1hdGlvbkR1cmF0aW9uID0gXCI1MDBtc1wiXG5cbiAgcHJpdmF0ZSBfaWRlbnRpZmllcjogc3RyaW5nO1xuICBwcml2YXRlIF9kZWZlcnJlZENsZWFuVXA6IFByb21pc2U8YW55PjtcblxuICBwcml2YXRlIGludGVyYWN0aW9uU2VydmljZUFwaTogSW50ZXJhY3Rpb25TZXJ2aWNlLkFwaTtcblxuICBwcml2YXRlIGdhcmJhZ2UgPSBuZXcgR2FyYmFnZUNvbGxlY3RvcigpO1xuICBwcml2YXRlIHN5bmNTZWxlY3RlZFRhYlRpbWVvdXQ6IGFueTtcbiAgcHJpdmF0ZSBvbkFuaW1hdGlvbkZpbmlzaGVkSm9iOiAoKSA9PiB2b2lkO1xuXG4gIHJlYWRvbmx5IF9zdGFydGVkJCA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IF9yZWFkeSQgPSBuZXcgTXV0YWJsZVZhbHVlTW9kZWw8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBfYW5pbWF0aW5nJCA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxib29sZWFuPihmYWxzZSk7XG5cbiAgcmVhZG9ubHkgYnVzeSA9IHRoaXMucmVnaXN0ZXJEaXNwb3NhYmxlKG5ldyBEZWxlZ2F0aW5nVmFsdWVNb2RlbDxib29sZWFuPigpLndpdGhEZWZhdWx0KGZhbHNlKSk7XG5cbiAgcmVhZG9ubHkgc3luY1RhYnNKb2I6ICgpID0+IHZvaWQgPSB1bmRlZmluZWQ7XG5cbiAgcmVhZG9ubHkgc3RhYmxlJDogQm9vbGVhblZhbHVlTW9kZWxDaGFpbjtcbiAgcHJpdmF0ZSB3YXNBY3RpdmUgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBwbGFjZVJvdXRlcjogUGxhY2VSb3V0ZXIpIHtcbiAgICBzdXBlcigpO1xuICAgIGNvbnN0IHtjaGFpbiwgdmFsdWVPZiwgd2hlbn0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG4gICAgd2hlbih0aGlzLnJlYWR5JCkuYmVjb21lc1RydXRoeSgoKSA9PiB0aGlzLmZpbmFsaXNlQWN0aXZpdHlTdGF0ZXMoKSlcbiAgICB0aGlzLnN0YWJsZSQgPSB2YWx1ZU9mLmFsbChcbiAgICAgIHRoaXMucmVhZHkkLFxuICAgICAgdGhpcy5fc3RhcnRlZCQsXG4gICAgICBjaGFpbih0aGlzLmFuaW1hdGluZyQpLmlzRmFsc2V5KClcbiAgICApLmFyZVRydXRoeSgpO1xuICB9XG5cbiAgZ2V0IHN0YXJ0ZWQkKCkge1xuICAgIHJldHVybiB0aGlzLl9zdGFydGVkJC5yZWFkb25seSQ7XG4gIH1cblxuICBnZXQgcmVhZHkkKCkge1xuICAgIHJldHVybiB0aGlzLl9yZWFkeSQucmVhZG9ubHkkO1xuICB9XG5cbiAgZ2V0IGFuaW1hdGluZyQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FuaW1hdGluZyQucmVhZG9ubHkkO1xuICB9XG5cbiAgaW5pdGlhbGlzZShpZGVudGlmaWVyOiBzdHJpbmcsIGFwaTogSW50ZXJhY3Rpb25TZXJ2aWNlLkFwaSkge1xuICAgIGFzc2VydC5pc0ZhbHNleSh0aGlzLmlzSW5pdGlhbGlzZWQoKSk7XG4gICAgYXNzZXJ0Lm5vdE5pbChpZGVudGlmaWVyKTtcbiAgICBhc3NlcnQubm90TmlsKGFwaSk7XG4gICAgdGhpcy5faWRlbnRpZmllciA9IGlkZW50aWZpZXI7XG4gICAgdGhpcy5pbnRlcmFjdGlvblNlcnZpY2VBcGkgPSBhcGk7XG4gIH1cblxuICBub3RpZnlSZWFkeShyZWFkeTogYm9vbGVhbikge1xuICAgIHRoaXMuX3JlYWR5JC52YWx1ZSA9IHJlYWR5O1xuICB9XG5cbiAgZ2V0IGlkZW50aWZpZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lkZW50aWZpZXI7XG4gIH1cblxuICBpc0luaXRpYWxpc2VkKCkge1xuICAgIHJldHVybiAhIXRoaXMuaWRlbnRpZmllcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRydWUgaWYgYW4gYWN0aXZpdHkgaXMgY3VycmVudGx5IHJ1bm5pbmcuXG4gICAqL1xuICBpc0FjdGl2ZSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBpc0FjdGl2ZSA9IHRoaXMuZ2V0QWN0aXZlQWN0aXZpdHlDb3VudCgpID4gMDtcbiAgICAvLyBpZiAodGhpcy53YXNBY3RpdmUgIT09IGlzQWN0aXZlKSB7XG4gICAgLy8gICBjb25zb2xlLmxvZyh7d2FzOiB0aGlzLndhc0FjdGl2ZSwgaXM6IGlzQWN0aXZlfSk7XG4gICAgLy8gfVxuICAgIC8vIHRoaXMud2FzQWN0aXZlID0gaXNBY3RpdmVcbiAgICByZXR1cm4gaXNBY3RpdmU7XG4gIH1cblxuICByZWdpc3RlckRpc3Bvc2FibGU8VCBleHRlbmRzIERpc3Bvc2FibGU+KGRpc3Bvc2FibGU6IFQpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5nYXJiYWdlLnJlZ2lzdGVyRGlzcG9zYWJsZShkaXNwb3NhYmxlKTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgLy8gVE9ETzogdGhpbmsgYWJvdXQgYXV0byBjYW5jZWxsaW5nIGFueSBvdXRzdGFuZGluZyBhY3Rpdml0eSBvbiBkaXNwb3NlLlxuICAgIC8vICAgICAgIFNlZSBOYXZpZ2F0aW9uU3RhdGUuTmF2aWdhdGluZyBmb3IgYSB1c2UtY2FzZS5cbiAgICBhc3NlcnQuaXNGYWxzZXkodGhpcy5pc0FjdGl2ZSgpKTtcbiAgICB0aGlzLmdhcmJhZ2UuZGlzcG9zZSgpO1xuICB9XG5cbiAgZ2V0QWN0aXZlQWN0aXZpdHlSZWYoKTogQWN0aXZpdHlSZWY8YW55LCBhbnksIGFueT4ge1xuICAgIGlmICghdGhpcy5pc0FjdGl2ZSgpKSB7XG4gICAgICBsYW5nLmlsbGVnYWxTdGF0ZShcIm5vIGFjdGl2aXR5IGluIHByb2dyZXNzXCIpO1xuICAgIH1cbiAgICByZXR1cm4gZmluZExhc3QodGhpcy5hY3Rpdml0eVJlZnMsIHRhYiA9PiAhdGFiLmlzQ29tcGxldGUoKSk7XG4gIH1cblxuICBnZXQgZGlzYWJsZUNsb3NlKCkge1xuICAgIHJldHVybiB0aGlzLmdldEFjdGl2ZUFjdGl2aXR5UmVmKCkuYWN0aXZpdHkuZGlzYWJsZUNsb3NlXG4gIH1cblxuICAvKipcbiAgICogQ2FuY2VscyB0aGUgY3VycmVudCBhY3Rpdml0eSBhbmQgcmV0dXJucyB0cnVlIHRoZSBjb250ZXh0IGlzIG5vIGxvbmdlciBhY3RpdmUsIGZhbHNlIGlmXG4gICAqIHRoZXJlIGlzIHN0aWxsIGFub3RoZXIgYWN0aXZpdHkgcnVubmluZy5cbiAgICovXG4gIC8vIEBUcmFjZSgpXG4gIGFzeW5jIGNhbmNlbEFjdGl2ZUFjdGl2aXR5KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGFjdGl2aXR5ID0gdGhpcy5nZXRBY3RpdmVBY3Rpdml0eVJlZigpO1xuICAgIGFjdGl2aXR5LmNhbmNlbCgpO1xuICAgIGlmICh0aGlzLmlzQ2xlYW5pbmdVcCgpKSB7XG4gICAgICByZXR1cm4gdGhpcy53YWl0Rm9ySW50ZXJhY3Rpb25Db250ZXh0Q2xlYW51cFRvRmluaXNoKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAhdGhpcy5pc0FjdGl2ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFRPRE86IHRoaXMgaGFuZGxpbmcgb2YgbXVsdGlwbGUgbmVzdGVkIGFjdGl2aXRpZXMgaXMgb25seSB1c2VkIGJ5IHRoZSBhY3Rpdml0eSBjb21wb25lbnQgYW5kIGlzIG5vdCBhIGdlbmVyYWwgY2FzZS5cbiAgLy8gQFRyYWNlKClcbiAgcHJvdGVjdGVkIGFzeW5jIGNyZWF0ZUFuZExhdW5jaEFjdGl2aXR5PEQxLCBSMSwgRTE+KGFjdGl2aXR5VHlwZTogQ29uc3RydWN0YWJsZTxBY3Rpdml0eTxEMSwgUjEsIEUxPj4sIGRhdGE6IEQxLCBkaXNhYmxlQ2xvc2U6IGJvb2xlYW4pOiBQcm9taXNlPFIxPiB7XG4gICAgYXNzZXJ0LmlzVHJ1dGh5KHRoaXMuaXNJbml0aWFsaXNlZCgpKTsgLy8gbWFrZSBzdXJlIHdlJ3ZlIGJlZW4gaW5pdGlhbGlzZWRcbiAgICBjb25zdCBhY3Rpdml0eVJlZiA9IG5ldyBBY3Rpdml0eVJlZjxEMSwgUjEsIEUxPihhY3Rpdml0eVR5cGUsIGRhdGEsICgpID0+IHtcbiAgICAgIGNvbnN0IGlzQWN0aXZlID0gdGhpcy5nZXRBY3RpdmVBY3Rpdml0eUNvdW50KCkgPiAwO1xuICAgICAgaWYgKGlzQWN0aXZlKSB7XG4gICAgICAgIHRoaXMudHJpZ2dlclRhYlN5bmNocm9uaXNhdGlvbigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5maW5pc2hBbmRTdGFydENsZWFudXAoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmxhdW5jaEFjdGl2aXR5KGFjdGl2aXR5UmVmKTtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgYWN0aXZpdHlSZWYuYWN0aXZpdHlSZXN1bHQ7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKFwiY2xvc2luZyBhY3Rpdml0eVwiLCBhY3Rpdml0eVR5cGUubmFtZSwgdGhpcy5hY3Rpdml0eVJlZnMpXG4gICAgICBpZiAoIXRoaXMuaXNBY3RpdmUoKSkge1xuICAgICAgICAvLyB3YWl0IHVudGlsIHRoZSBhY3Rpdml0eSByb3V0ZSBzeW5jaW5nIGhhcyBmaW5pc2hlZFxuICAgICAgICBhd2FpdCB0aGlzLnBsYWNlUm91dGVyLndhaXRBY3Rpdml0aWVzU3luY2hyb25pc2VkKCk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwiYWN0aXZpdHkgc3luY2luZyBmaW5pc2hlZFwiKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0QWN0aXZlQWN0aXZpdHlDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmFjdGl2aXR5UmVmcy5maWx0ZXIocmVmID0+ICFyZWYuaXNDb21wbGV0ZSgpKS5sZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoaXMgaW50ZXJhY3Rpb24gY29udGV4dCBoYXMgZmluaXNoZWQgYW4gaXMgaW4gdGhlIHByb2Nlc3Mgb2Ygd2FpdGluZ1xuICAgKiBmb3IgYWxsIHRoZSBpbmZyYXN0cnVjdHVyZSAoaW5jbHVkaW5nIHJvdXRlIHVwZGF0ZXMpIHRvIGJlIGNvbXBsZXRlZC5cbiAgICovXG4gIGlzQ2xlYW5pbmdVcCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLl9kZWZlcnJlZENsZWFuVXA7XG4gIH1cblxuICBhc3luYyB3YWl0Rm9ySW50ZXJhY3Rpb25Db250ZXh0Q2xlYW51cFRvRmluaXNoKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX2RlZmVycmVkQ2xlYW5VcCA/XG4gICAgICB0aGlzLl9kZWZlcnJlZENsZWFuVXAgOlxuICAgICAgdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZmluaXNoQW5kU3RhcnRDbGVhbnVwKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fZGVmZXJyZWRDbGVhblVwKSB7XG4gICAgICAvLyBJbXBvcnRhbnQ6XG4gICAgICAvLyBDbGVhciBvdXIgdGFicyBzbyB0aGUgbmV4dCBhY3Rpdml0eSB0cmlnZ2VycyBhIHRhYiBjaGFuZ2UuXG4gICAgICAvLyBXaXRob3V0IHRoaXMgb3VyIGFuaW1hdGlvbiBkb25lIHdhc24ndCBjYWxsZWQgd2hlbiBhIHNpbmdsZVxuICAgICAgLy8gbmV3IGFjdGl2aXR5IGZvbGxvd2VkIGEgc2luZ2xlIHRhYiBhY3Rpdml0eSAoc2luY2Ugd2UncmUgdHJhY2tpbmdcbiAgICAgIC8vIGJ5IGFjdGl2aXR5IGluZGV4KVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuYWN0aXZpdHlSZWZzID0gW107IC8vIHdlIGhhdmUgdG8gZG8gaXQgYWZ0ZXIgdGhlIGFuaW1hdGlvbiB0aW1lb3V0IG9yIHRoZSBhY3Rpdml0eSBkaXNhcHBlYXJzIGJlZm9yZSB0aGUgYW5pbWF0aW4gZmluc2loZXNcbiAgICAgIH0sIHRoaXMuZ2V0VGFiQW5pbWF0aW9uRHVyYXRpb25Jbk1pbGxpcygpKTtcbiAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLmludGVyYWN0aW9uU2VydmljZUFwaS5ub3RpZnlGaW5pc2hlZCh0aGlzKTtcbiAgICAgIHRoaXMuX2RlZmVycmVkQ2xlYW5VcCA9IHByb21pc2VcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX2RlZmVycmVkQ2xlYW5VcCA9IG51bGw7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4vLyBAVHJhY2UoKVxuICBsYXVuY2hBY3Rpdml0eTxEMSwgUjEsIEUxPihhY3Rpdml0eVJlZjogQWN0aXZpdHlSZWY8RDEsIFIxLCBFMT4pIHtcbiAgICAvLyBpZiB0aGlzIGlzIHRoZSBmaXJzdCBhY3Rpdml0eSBsZXQgdGhlIGludGVyYWN0aW9uIHNlcnZpY2Uga25vdy5cbiAgICBjb25zdCBjbGVhbmVkVGFicyA9IHRoaXMuYWN0aXZpdHlSZWZzLmZpbHRlcih0YWIgPT4gIXRhYi5pc0NvbXBsZXRlKCkpO1xuICAgIHRoaXMuYWN0aXZpdHlSZWZzID0gY2xlYW5lZFRhYnMuY29uY2F0KGFjdGl2aXR5UmVmKTtcbiAgICBjb25zdCBmaXJzdFRpbWUgPSB0aGlzLmFjdGl2aXR5UmVmcy5sZW5ndGggPT09IDE7XG4gICAgaWYgKGZpcnN0VGltZSkge1xuICAgICAgdGhpcy5pbnRlcmFjdGlvblNlcnZpY2VBcGkubm90aWZ5QWN0aXZlKHRoaXMpO1xuICAgIH1cbiAgICB0aGlzLnN5bmNocm9uaXNlU2VsZWN0ZWRUYWJJbmRleCgpO1xuICB9XG5cbiAgYWN0aXZpdHlJbmRleChpbmRleDogbnVtYmVyLCBhY3Rpdml0eVJlZjogQWN0aXZpdHlSZWY8YW55LCBhbnksIGFueT4pIHtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH07XG5cbiAgLyoqXG4gICAqIFN5bmNocm9uaXNlcyB0aGUgc2VsZWN0ZWQgdGFiIGluZGV4LlxuICAgKi9cbiAgcHJpdmF0ZSBzeW5jaHJvbmlzZVNlbGVjdGVkVGFiSW5kZXgoKTogdm9pZCB7XG4gICAgYXNzZXJ0LmlzVHJ1dGh5KHRoaXMuaXNBY3RpdmUoKSk7XG4gICAgY29uc3QgcHJldmlvdXNJbmRleCA9IHRoaXMudGFicy5zZWxlY3RlZEluZGV4O1xuICAgIGNvbnN0IG5ld0luZGV4ID0gdGhpcy5nZXRBY3RpdmVBY3Rpdml0eUNvdW50KCkgLSAxO1xuICAgIGNvbnN0IGFuaW1hdGUgPSB0aGlzLmFjdGl2aXR5UmVmcy5sZW5ndGggPiAxO1xuICAgIGlmIChwcmV2aW91c0luZGV4ICE9PSBuZXdJbmRleCkge1xuICAgICAgdGhpcy5fYW5pbWF0aW5nJC52YWx1ZSA9IGFuaW1hdGU7XG4gICAgICBjb25zdCBhY3Rpdml0eVJlZiA9IHRoaXMuYWN0aXZpdHlSZWZzW25ld0luZGV4XTtcbiAgICAgIGFjdGl2aXR5UmVmLnNldEZvY3VzZWQoZmFsc2UpO1xuICAgICAgdGhpcy5idXN5LnNldERlbGVnYXRlKGFjdGl2aXR5UmVmLmFjdGl2aXR5QnVzeSk7XG4gICAgICB0aGlzLnRhYnMuc2VsZWN0ZWRJbmRleCA9IG5ld0luZGV4O1xuICAgICAgLy8gaWYgKHRoaXMucmVhZHkkLnZhbHVlKSB7XG4gICAgICAvLyAgIC8vIE5vdGU6IFdlJ3JlIG5vdCB1c2luZyB0aGUgYW5pbWF0aW9uIGRvbmUgZXZlbnQgYXMgaXQncyBmaXJpbmcgYWxtb3N0IGltbWVhZGlhdGVseS5cbiAgICAgIC8vICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmZpbmFsaXNlQWN0aXZpdHlTdGF0ZXMoKSwgYW5pbWF0ZSA/IHRoaXMuZ2V0VGFiQW5pbWF0aW9uRHVyYXRpb25Jbk1pbGxpcygpIDogMCk7XG4gICAgICAvLyB9XG4gICAgfVxuICB9XG5cbiAgZmluYWxpc2VBY3Rpdml0eVN0YXRlcygpIHtcbiAgICB0aGlzLl9hbmltYXRpbmckLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5hY3Rpdml0eVJlZnMgPSB0aGlzLmFjdGl2aXR5UmVmcy5maWx0ZXIodGFiID0+ICF0YWIuaXNDb21wbGV0ZSgpKTtcbiAgICB0aGlzLmFjdGl2aXR5UmVmcy5mb3JFYWNoKChyZWYsIGluZGV4KSA9PiB7XG4gICAgICByZWYuc2V0Rm9jdXNlZChpbmRleCA9PT0gdGhpcy50YWJzLnNlbGVjdGVkSW5kZXgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTZWxlY3RlZE91dGxldCgpIHtcbiAgICByZXR1cm4gdGhpcy5hY3Rpdml0eU91dGxldHMudG9BcnJheSgpW3RoaXMudGFicy5zZWxlY3RlZEluZGV4XTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRUYWJBbmltYXRpb25EdXJhdGlvbigpOiBzdHJpbmcge1xuICAgIC8vIGNvbnN0IHMgPSB0aGlzLl9zdGFydGVkJC52YWx1ZSA/IHRoaXMuYW5pbWF0aW9uRHVyYXRpb24gOiBcIjBcIjtcbiAgICAvLyByZXR1cm4gc1xuICAgIHJldHVybiB0aGlzLmFuaW1hdGlvbkR1cmF0aW9uO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldFRhYkFuaW1hdGlvbkR1cmF0aW9uSW5NaWxsaXMoKTogbnVtYmVyIHtcbiAgICBjb25zdCBtYXRjaCA9IHRoaXMuYW5pbWF0aW9uRHVyYXRpb24ubWF0Y2goLyhcXGQrKSguKikvKTtcbiAgICBjb25zdCBudW1lcmljVmFsdWUgPSBwYXJzZUZsb2F0KG1hdGNoWzFdKTtcbiAgICBzd2l0Y2ggKG1hdGNoWzJdLnRyaW0oKSkge1xuICAgICAgY2FzZSBcIm1zXCI6XG4gICAgICAgIHJldHVybiBudW1lcmljVmFsdWU7XG4gICAgICBjYXNlIFwic1wiOlxuICAgICAgICByZXR1cm4gMTAwMCAqIG51bWVyaWNWYWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGxhbmcuaWxsZWdhbFN0YXRlKGB1bnN1cHBvcnRlZCBkdXJhdGlvbiBzdHJpbmc6ICR7dGhpcy50YWJzLmFuaW1hdGlvbkR1cmF0aW9ufWApO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgZ2V0U2VsZWN0ZWRUYWJJbmRleCgpIHtcbiAgICByZXR1cm4gdGhpcy50YWJzLnNlbGVjdGVkSW5kZXg7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBwcml2YXRlIHRyaWdnZXJUYWJTeW5jaHJvbmlzYXRpb24oKSB7XG4gICAgaWYgKHRoaXMuc3luY1NlbGVjdGVkVGFiVGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc3luY1NlbGVjdGVkVGFiVGltZW91dCk7XG4gICAgfVxuICAgIHRoaXMuc3luY1NlbGVjdGVkVGFiVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zeW5jU2VsZWN0ZWRUYWJUaW1lb3V0ID0gbnVsbDtcbiAgICAgIGlmICh0aGlzLmlzQWN0aXZlKCkpIHtcbiAgICAgICAgdGhpcy5zeW5jaHJvbmlzZVNlbGVjdGVkVGFiSW5kZXgoKTtcbiAgICAgIH1cbiAgICB9LCA3NSk7XG4gIH1cblxuICBvbkFuaW1hdGlvbkRvbmUoKSB7XG4gICAgdGhpcy5fc3RhcnRlZCQudmFsdWUgPSB0cnVlXG4gICAgdGhpcy5maW5hbGlzZUFjdGl2aXR5U3RhdGVzKClcbiAgfVxufVxuIiwiPG1hdC10YWItZ3JvdXAgI3RhYnMgbm8tdGFiLWhlYWRlclxuICAgICAgICAgICAgICAgW2R5bmFtaWNIZWlnaHRdPVwiZHluYW1pY0hlaWdodFwiXG4gICAgICAgICAgICAgICBbY2xhc3MuZnVsbC1oZWlnaHQtdGFic109XCIhZHluYW1pY0hlaWdodFwiXG4gICAgICAgICAgICAgICBbYW5pbWF0aW9uRHVyYXRpb25dPVwiZ2V0VGFiQW5pbWF0aW9uRHVyYXRpb24oKVwiXG4gICAgICAgICAgICAgICAoYW5pbWF0aW9uRG9uZSk9XCJvbkFuaW1hdGlvbkRvbmUoKVwiXG4+XG4gIDxtYXQtdGFiICpuZ0Zvcj1cImxldCBhY3Rpdml0eVJlZiBvZiBhY3Rpdml0eVJlZnM7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IGFjdGl2aXR5SW5kZXhcIj5cbiAgICA8YXVwLWJ1c3ktb3ZlcmxheSBbYnVzeSRdPVwiYnVzeVwiIGNka1RyYXBGb2N1cyBjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZT5cbiAgICAgIDwhLS1cbiAgICAgIFdlIGhhdmUgaXNzdWVzIHdoZXJlIGFuZ3VsYXIgaXMgdHJpZ2dlcmluZyBhIGxlYXZlIGFuaW1hdGlvbiB3aGVuIGFuXG4gICAgICBuZXcgYWN0aXZpdHkgaXMgc3RhcnRlZCwgYnV0IGlzIG5vdCBydW5uaW5nIHRoZSBlbnRlciBhbmltYXRpb25cbiAgICAgIHdoZW4gaXQgaXMgc2Nyb2xsZWQgYmFjayBpbnRvIHZpZXcuICBTbyB3ZSB0cmFjayB0aGUgdGFiIGNoYW5nZXMgYW5kXG4gICAgICBkaXNhYmxlIGFsbCBhbmltYXRpb25zIGluc2lkZSB0aGUgdGFiIHdoaWxlIHdlJ3JlIGFuaW1hdGluZy5cbiAgICAgIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImFjdGl2aXR5LW91dGxldC13cmFwcGVyXCIgW0AuZGlzYWJsZWRdPVwiIWFjdGl2aXR5UmVmLmZvY3VzZWRcIj5cbiAgICAgICAgPGF1cC1hY3Rpdml0eS1vdXRsZXQgW25lc3RlZEludGVyYWN0aW9uQ29udGV4dF09XCJ0aGlzXCIgW2FjdGl2aXR5UmVmXT1cImFjdGl2aXR5UmVmXCI+PC9hdXAtYWN0aXZpdHktb3V0bGV0PlxuICAgICAgPC9kaXY+XG4gICAgPC9hdXAtYnVzeS1vdmVybGF5PlxuICA8L21hdC10YWI+XG48L21hdC10YWItZ3JvdXA+XG4iXX0=
250
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL2ludGVyYWN0aW9uL2NvbXBvbmVudHMvYWN0aXZpdHktY29udGFpbmVyL2FjdGl2aXR5LWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9pbnRlcmFjdGlvbi9jb21wb25lbnRzL2FjdGl2aXR5LWNvbnRhaW5lci9hY3Rpdml0eS1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFDTCxNQUFNLEVBR04sb0JBQW9CLEVBRXBCLEdBQUcsRUFDSCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2xCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBRWxELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDbkMsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3hELE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBRTlFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUUvQyxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw2Q0FBNkMsQ0FBQzs7Ozs7Ozs7QUFPcEYsTUFBTSxPQUFPLDBCQUFvQyxTQUFRLDBCQUEwQjtJQWdDNUQ7SUE3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REgsU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDO2dCQUlqQyxlQUFlO3NCQURkLFlBQVk7dUJBQUMsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIElucHV0LCBRdWVyeUxpc3QsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtNYXRUYWJHcm91cH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3RhYnNcIjtcbmltcG9ydCB7XG4gIGFzc2VydCxcbiAgQm9vbGVhblZhbHVlTW9kZWxDaGFpbixcbiAgQ29uc3RydWN0YWJsZSxcbiAgRGVsZWdhdGluZ1ZhbHVlTW9kZWwsXG4gIERpc3Bvc2FibGUsXG4gIERzbCxcbiAgR2FyYmFnZUNvbGxlY3RvcixcbiAgTXV0YWJsZVZhbHVlTW9kZWxcbn0gZnJvbSBcIkBjb29sb24vcGVjdGluXCI7XG5pbXBvcnQge2xhbmd9IGZyb20gXCJAY29vbG9uL3R5cGVzY3JpcHQtdXRpbGl0aWVzXCI7XG5cbmltcG9ydCB7ZmluZExhc3R9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7UGxhY2VSb3V0ZXJ9IGZyb20gXCIuLi8uLi8uLi9wbGFjZS9wbGFjZS1yb3V0ZXJcIjtcbmltcG9ydCB7QWJzdHJhY3RJbnRlcmFjdGlvbkNvbnRleHR9IGZyb20gXCIuLi8uLi9hYnN0cmFjdC1pbnRlcmFjdGlvbi1jb250ZXh0XCI7XG5pbXBvcnQge0FjdGl2aXR5fSBmcm9tIFwiLi4vLi4vYWN0aXZpdHlcIjtcbmltcG9ydCB7QWN0aXZpdHlSZWZ9IGZyb20gXCIuLi8uLi9hY3Rpdml0eS1yZWZcIjtcbmltcG9ydCB7SW50ZXJhY3Rpb25TZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvaW50ZXJhY3Rpb24uc2VydmljZVwiO1xuaW1wb3J0IHtBY3Rpdml0eU91dGxldENvbXBvbmVudH0gZnJvbSBcIi4vYWN0aXZpdHktb3V0bGV0L2FjdGl2aXR5LW91dGxldC5jb21wb25lbnRcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImF1cC1hY3Rpdml0eS1jb250YWluZXJcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9hY3Rpdml0eS1jb250YWluZXIuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL2FjdGl2aXR5LWNvbnRhaW5lci5jb21wb25lbnQuc2Nzc1wiXVxufSlcbmV4cG9ydCBjbGFzcyBBY3Rpdml0eUNvbnRhaW5lckNvbXBvbmVudDxELCBSLCBFPiBleHRlbmRzIEFic3RyYWN0SW50ZXJhY3Rpb25Db250ZXh0IHtcblxuICBASW5wdXQoKVxuICBkeW5hbWljSGVpZ2h0ID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZChcInRhYnNcIiwge3N0YXRpYzogdHJ1ZX0pXG4gIHRhYnM6IE1hdFRhYkdyb3VwO1xuXG4gIEBWaWV3Q2hpbGRyZW4oQWN0aXZpdHlPdXRsZXRDb21wb25lbnQpXG4gIGFjdGl2aXR5T3V0bGV0czogUXVlcnlMaXN0PEFjdGl2aXR5T3V0bGV0Q29tcG9uZW50PGFueSwgYW55LCBhbnk+PjtcblxuICBhY3Rpdml0eVJlZnM6IEFjdGl2aXR5UmVmPGFueSwgYW55LCBhbnk+W10gPSBbXTtcblxuICBwcml2YXRlIF9pZGVudGlmaWVyOiBzdHJpbmc7XG4gIHByaXZhdGUgX2RlZmVycmVkQ2xlYW5VcDogUHJvbWlzZTxhbnk+O1xuXG4gIHByaXZhdGUgaW50ZXJhY3Rpb25TZXJ2aWNlQXBpOiBJbnRlcmFjdGlvblNlcnZpY2UuQXBpO1xuXG4gIHByaXZhdGUgZ2FyYmFnZSA9IG5ldyBHYXJiYWdlQ29sbGVjdG9yKCk7XG4gIHByaXZhdGUgc3luY1NlbGVjdGVkVGFiVGltZW91dDogYW55O1xuICBwcml2YXRlIG9uQW5pbWF0aW9uRmluaXNoZWRKb2I6ICgpID0+IHZvaWQ7XG5cbiAgcmVhZG9ubHkgX3N0YXJ0ZWQkID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgX3JlYWR5JCA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IF9hbmltYXRpbmckID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPGJvb2xlYW4+KGZhbHNlKTtcblxuICByZWFkb25seSBidXN5ID0gdGhpcy5yZWdpc3RlckRpc3Bvc2FibGUobmV3IERlbGVnYXRpbmdWYWx1ZU1vZGVsPGJvb2xlYW4+KCkud2l0aERlZmF1bHQoZmFsc2UpKTtcblxuICByZWFkb25seSBzeW5jVGFic0pvYjogKCkgPT4gdm9pZCA9IHVuZGVmaW5lZDtcblxuICByZWFkb25seSBzdGFibGUkOiBCb29sZWFuVmFsdWVNb2RlbENoYWluO1xuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IHBsYWNlUm91dGVyOiBQbGFjZVJvdXRlcikge1xuICAgIHN1cGVyKCk7XG4gICAgY29uc3Qge2NoYWluLCB2YWx1ZU9mLCB3aGVufSA9IERzbC5kaXNwb3NlV2l0aCh0aGlzKTtcbiAgICB3aGVuKHRoaXMucmVhZHkkKS5iZWNvbWVzVHJ1dGh5KCgpID0+IHRoaXMuZmluYWxpc2VBY3Rpdml0eVN0YXRlcygpKVxuICAgIHRoaXMuc3RhYmxlJCA9IHZhbHVlT2YuYWxsKFxuICAgICAgdGhpcy5yZWFkeSQsXG4gICAgICB0aGlzLl9zdGFydGVkJCxcbiAgICAgIGNoYWluKHRoaXMuYW5pbWF0aW5nJCkuaXNGYWxzZXkoKVxuICAgICkuYXJlVHJ1dGh5KCk7XG4gIH1cblxuICBnZXQgc3RhcnRlZCQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXJ0ZWQkLnJlYWRvbmx5JDtcbiAgfVxuXG4gIGdldCByZWFkeSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWR5JC5yZWFkb25seSQ7XG4gIH1cblxuICBnZXQgYW5pbWF0aW5nJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fYW5pbWF0aW5nJC5yZWFkb25seSQ7XG4gIH1cblxuICBpbml0aWFsaXNlKGlkZW50aWZpZXI6IHN0cmluZywgYXBpOiBJbnRlcmFjdGlvblNlcnZpY2UuQXBpKSB7XG4gICAgYXNzZXJ0LmlzRmFsc2V5KHRoaXMuaXNJbml0aWFsaXNlZCgpKTtcbiAgICBhc3NlcnQubm90TmlsKGlkZW50aWZpZXIpO1xuICAgIGFzc2VydC5ub3ROaWwoYXBpKTtcbiAgICB0aGlzLl9pZGVudGlmaWVyID0gaWRlbnRpZmllcjtcbiAgICB0aGlzLmludGVyYWN0aW9uU2VydmljZUFwaSA9IGFwaTtcbiAgfVxuXG4gIG5vdGlmeVJlYWR5KHJlYWR5OiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmVhZHkkLnZhbHVlID0gcmVhZHk7XG4gIH1cblxuICBnZXQgaWRlbnRpZmllcigpIHtcbiAgICByZXR1cm4gdGhpcy5faWRlbnRpZmllcjtcbiAgfVxuXG4gIGlzSW5pdGlhbGlzZWQoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5pZGVudGlmaWVyO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdHJ1ZSBpZiBhbiBhY3Rpdml0eSBpcyBjdXJyZW50bHkgcnVubmluZy5cbiAgICovXG4gIGlzQWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdldEFjdGl2ZUFjdGl2aXR5Q291bnQoKSA+IDA7XG4gIH1cblxuICByZWdpc3RlckRpc3Bvc2FibGU8VCBleHRlbmRzIERpc3Bvc2FibGU+KGRpc3Bvc2FibGU6IFQpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5nYXJiYWdlLnJlZ2lzdGVyRGlzcG9zYWJsZShkaXNwb3NhYmxlKTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgLy8gVE9ETzogdGhpbmsgYWJvdXQgYXV0byBjYW5jZWxsaW5nIGFueSBvdXRzdGFuZGluZyBhY3Rpdml0eSBvbiBkaXNwb3NlLlxuICAgIC8vICAgICAgIFNlZSBOYXZpZ2F0aW9uU3RhdGUuTmF2aWdhdGluZyBmb3IgYSB1c2UtY2FzZS5cbiAgICBhc3NlcnQuaXNGYWxzZXkodGhpcy5pc0FjdGl2ZSgpKTtcbiAgICB0aGlzLmdhcmJhZ2UuZGlzcG9zZSgpO1xuICB9XG5cbiAgZ2V0QWN0aXZlQWN0aXZpdHlSZWYoKTogQWN0aXZpdHlSZWY8YW55LCBhbnksIGFueT4ge1xuICAgIGlmICghdGhpcy5pc0FjdGl2ZSgpKSB7XG4gICAgICBsYW5nLmlsbGVnYWxTdGF0ZShcIm5vIGFjdGl2aXR5IGluIHByb2dyZXNzXCIpO1xuICAgIH1cbiAgICByZXR1cm4gZmluZExhc3QodGhpcy5hY3Rpdml0eVJlZnMsIHRhYiA9PiAhdGFiLmlzQ29tcGxldGUoKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FuY2VscyB0aGUgY3VycmVudCBhY3Rpdml0eSBhbmQgcmV0dXJucyB0cnVlIHRoZSBjb250ZXh0IGlzIG5vIGxvbmdlciBhY3RpdmUsIGZhbHNlIGlmXG4gICAqIHRoZXJlIGlzIHN0aWxsIGFub3RoZXIgYWN0aXZpdHkgcnVubmluZy5cbiAgICovXG4gIC8vIEBUcmFjZSgpXG4gIGFzeW5jIGNhbmNlbEFjdGl2ZUFjdGl2aXR5KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGFjdGl2aXR5ID0gdGhpcy5nZXRBY3RpdmVBY3Rpdml0eVJlZigpO1xuICAgIGFjdGl2aXR5LmNhbmNlbCgpO1xuICAgIGlmICh0aGlzLmlzQ2xlYW5pbmdVcCgpKSB7XG4gICAgICByZXR1cm4gdGhpcy53YWl0Rm9ySW50ZXJhY3Rpb25Db250ZXh0Q2xlYW51cFRvRmluaXNoKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAhdGhpcy5pc0FjdGl2ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFRPRE86IHRoaXMgaGFuZGxpbmcgb2YgbXVsdGlwbGUgbmVzdGVkIGFjdGl2aXRpZXMgaXMgb25seSB1c2VkIGJ5IHRoZSBhY3Rpdml0eSBjb21wb25lbnQgYW5kIGlzIG5vdCBhIGdlbmVyYWwgY2FzZS5cbiAgLy8gQFRyYWNlKClcbiAgcHJvdGVjdGVkIGFzeW5jIGNyZWF0ZUFuZExhdW5jaEFjdGl2aXR5PEQxLCBSMSwgRTE+KGFjdGl2aXR5VHlwZTogQ29uc3RydWN0YWJsZTxBY3Rpdml0eTxEMSwgUjEsIEUxPj4sIGRhdGE6IEQxLCBkaXNhYmxlQ2xvc2U6IGJvb2xlYW4pOiBQcm9taXNlPFIxPiB7XG4gICAgYXNzZXJ0LmlzVHJ1dGh5KHRoaXMuaXNJbml0aWFsaXNlZCgpKTsgLy8gbWFrZSBzdXJlIHdlJ3ZlIGJlZW4gaW5pdGlhbGlzZWRcbiAgICBjb25zdCBhY3Rpdml0eVJlZiA9IG5ldyBBY3Rpdml0eVJlZjxEMSwgUjEsIEUxPihhY3Rpdml0eVR5cGUsIGRhdGEsICgpID0+IHtcbiAgICAgIGNvbnN0IGlzQWN0aXZlID0gdGhpcy5nZXRBY3RpdmVBY3Rpdml0eUNvdW50KCkgPiAwO1xuICAgICAgaWYgKGlzQWN0aXZlKSB7XG4gICAgICAgIHRoaXMudHJpZ2dlclRhYlN5bmNocm9uaXNhdGlvbigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5maW5pc2hBbmRTdGFydENsZWFudXAoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmxhdW5jaEFjdGl2aXR5KGFjdGl2aXR5UmVmKTtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgYWN0aXZpdHlSZWYuYWN0aXZpdHlSZXN1bHQ7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKFwiY2xvc2luZyBhY3Rpdml0eVwiLCBhY3Rpdml0eVR5cGUubmFtZSwgdGhpcy5hY3Rpdml0eVJlZnMpXG4gICAgICBpZiAoIXRoaXMuaXNBY3RpdmUoKSkge1xuICAgICAgICAvLyB3YWl0IHVudGlsIHRoZSBhY3Rpdml0eSByb3V0ZSBzeW5jaW5nIGhhcyBmaW5pc2hlZFxuICAgICAgICBhd2FpdCB0aGlzLnBsYWNlUm91dGVyLndhaXRBY3Rpdml0aWVzU3luY2hyb25pc2VkKCk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwiYWN0aXZpdHkgc3luY2luZyBmaW5pc2hlZFwiKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0QWN0aXZlQWN0aXZpdHlDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmFjdGl2aXR5UmVmcy5maWx0ZXIocmVmID0+ICFyZWYuaXNDb21wbGV0ZSgpKS5sZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoaXMgaW50ZXJhY3Rpb24gY29udGV4dCBoYXMgZmluaXNoZWQgYW4gaXMgaW4gdGhlIHByb2Nlc3Mgb2Ygd2FpdGluZ1xuICAgKiBmb3IgYWxsIHRoZSBpbmZyYXN0cnVjdHVyZSAoaW5jbHVkaW5nIHJvdXRlIHVwZGF0ZXMpIHRvIGJlIGNvbXBsZXRlZC5cbiAgICovXG4gIGlzQ2xlYW5pbmdVcCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLl9kZWZlcnJlZENsZWFuVXA7XG4gIH1cblxuICBhc3luYyB3YWl0Rm9ySW50ZXJhY3Rpb25Db250ZXh0Q2xlYW51cFRvRmluaXNoKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX2RlZmVycmVkQ2xlYW5VcCA/XG4gICAgICB0aGlzLl9kZWZlcnJlZENsZWFuVXAgOlxuICAgICAgdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZmluaXNoQW5kU3RhcnRDbGVhbnVwKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fZGVmZXJyZWRDbGVhblVwKSB7XG4gICAgICAvLyBJbXBvcnRhbnQ6XG4gICAgICAvLyBDbGVhciBvdXIgdGFicyBzbyB0aGUgbmV4dCBhY3Rpdml0eSB0cmlnZ2VycyBhIHRhYiBjaGFuZ2UuXG4gICAgICAvLyBXaXRob3V0IHRoaXMgb3VyIGFuaW1hdGlvbiBkb25lIHdhc24ndCBjYWxsZWQgd2hlbiBhIHNpbmdsZVxuICAgICAgLy8gbmV3IGFjdGl2aXR5IGZvbGxvd2VkIGEgc2luZ2xlIHRhYiBhY3Rpdml0eSAoc2luY2Ugd2UncmUgdHJhY2tpbmdcbiAgICAgIC8vIGJ5IGFjdGl2aXR5IGluZGV4KVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuYWN0aXZpdHlSZWZzID0gW107IC8vIHdlIGhhdmUgdG8gZG8gaXQgYWZ0ZXIgdGhlIGFuaW1hdGlvbiB0aW1lb3V0IG9yIHRoZSBhY3Rpdml0eSBkaXNhcHBlYXJzIGJlZm9yZSB0aGUgYW5pbWF0aW4gZmluc2loZXNcbiAgICAgIH0sIHRoaXMuZ2V0VGFiQW5pbWF0aW9uRHVyYXRpb24oKSk7XG4gICAgICBjb25zdCBwcm9taXNlID0gdGhpcy5pbnRlcmFjdGlvblNlcnZpY2VBcGkubm90aWZ5RmluaXNoZWQodGhpcyk7XG4gICAgICB0aGlzLl9kZWZlcnJlZENsZWFuVXAgPSBwcm9taXNlXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9kZWZlcnJlZENsZWFuVXAgPSBudWxsO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuLy8gQFRyYWNlKClcbiAgbGF1bmNoQWN0aXZpdHk8RDEsIFIxLCBFMT4oYWN0aXZpdHlSZWY6IEFjdGl2aXR5UmVmPEQxLCBSMSwgRTE+KSB7XG4gICAgLy8gaWYgdGhpcyBpcyB0aGUgZmlyc3QgYWN0aXZpdHkgbGV0IHRoZSBpbnRlcmFjdGlvbiBzZXJ2aWNlIGtub3cuXG4gICAgY29uc3QgY2xlYW5lZFRhYnMgPSB0aGlzLmFjdGl2aXR5UmVmcy5maWx0ZXIodGFiID0+ICF0YWIuaXNDb21wbGV0ZSgpKTtcbiAgICB0aGlzLmFjdGl2aXR5UmVmcyA9IGNsZWFuZWRUYWJzLmNvbmNhdChhY3Rpdml0eVJlZik7XG4gICAgY29uc3QgZmlyc3RUaW1lID0gdGhpcy5hY3Rpdml0eVJlZnMubGVuZ3RoID09PSAxO1xuICAgIGlmIChmaXJzdFRpbWUpIHtcbiAgICAgIHRoaXMuaW50ZXJhY3Rpb25TZXJ2aWNlQXBpLm5vdGlmeUFjdGl2ZSh0aGlzKTtcbiAgICB9XG4gICAgdGhpcy5zeW5jaHJvbmlzZVNlbGVjdGVkVGFiSW5kZXgoKTtcbiAgfVxuXG4gIGFjdGl2aXR5SW5kZXgoaW5kZXg6IG51bWJlciwgYWN0aXZpdHlSZWY6IEFjdGl2aXR5UmVmPGFueSwgYW55LCBhbnk+KSB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9O1xuXG4gIC8qKlxuICAgKiBTeW5jaHJvbmlzZXMgdGhlIHNlbGVjdGVkIHRhYiBpbmRleC5cbiAgICovXG4gIC8vIEBUcmFjZSgpXG4gIHByaXZhdGUgc3luY2hyb25pc2VTZWxlY3RlZFRhYkluZGV4KCk6IHZvaWQge1xuICAgIGFzc2VydC5pc1RydXRoeSh0aGlzLmlzQWN0aXZlKCkpO1xuICAgIGNvbnN0IHByZXZpb3VzSW5kZXggPSB0aGlzLnRhYnMuc2VsZWN0ZWRJbmRleDtcbiAgICBjb25zdCBuZXdJbmRleCA9IHRoaXMuZ2V0QWN0aXZlQWN0aXZpdHlDb3VudCgpIC0gMTtcbiAgICBjb25zdCBhbmltYXRlID0gdGhpcy5hY3Rpdml0eVJlZnMubGVuZ3RoID4gMTtcbiAgICBpZiAocHJldmlvdXNJbmRleCAhPT0gbmV3SW5kZXgpIHtcbiAgICAgIHRoaXMuX2FuaW1hdGluZyQudmFsdWUgPSBhbmltYXRlO1xuICAgICAgY29uc3QgYWN0aXZpdHlSZWYgPSB0aGlzLmFjdGl2aXR5UmVmc1tuZXdJbmRleF07XG4gICAgICBhY3Rpdml0eVJlZi5zZXRGb2N1c2VkKGZhbHNlKTtcbiAgICAgIHRoaXMuYnVzeS5zZXREZWxlZ2F0ZShhY3Rpdml0eVJlZi5hY3Rpdml0eUJ1c3kpO1xuICAgICAgdGhpcy50YWJzLnNlbGVjdGVkSW5kZXggPSBuZXdJbmRleDtcbiAgICAgIGlmICh0aGlzLnJlYWR5JC52YWx1ZSkge1xuICAgICAgICAvLyBOb3RlOiBXZSdyZSBub3QgdXNpbmcgdGhlIGFuaW1hdGlvbiBkb25lIGV2ZW50IGFzIGl0J3MgZmlyaW5nIGFsbW9zdCBpbW1lYWRpYXRlbHkuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5maW5hbGlzZUFjdGl2aXR5U3RhdGVzKCksIGFuaW1hdGUgPyB0aGlzLmdldFRhYkFuaW1hdGlvbkR1cmF0aW9uKCkgOiAwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZpbmFsaXNlQWN0aXZpdHlTdGF0ZXMoKSB7XG4gICAgdGhpcy5fYW5pbWF0aW5nJC52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuYWN0aXZpdHlSZWZzID0gdGhpcy5hY3Rpdml0eVJlZnMuZmlsdGVyKHRhYiA9PiAhdGFiLmlzQ29tcGxldGUoKSk7XG4gICAgdGhpcy5hY3Rpdml0eVJlZnMuZm9yRWFjaCgocmVmLCBpbmRleCkgPT4ge1xuICAgICAgcmVmLnNldEZvY3VzZWQoaW5kZXggPT09IHRoaXMudGFicy5zZWxlY3RlZEluZGV4KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2VsZWN0ZWRPdXRsZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZpdHlPdXRsZXRzLnRvQXJyYXkoKVt0aGlzLnRhYnMuc2VsZWN0ZWRJbmRleF07XG4gIH1cblxuICBwcml2YXRlIGdldFRhYkFuaW1hdGlvbkR1cmF0aW9uKCk6IG51bWJlciB7XG4gICAgY29uc3QgbWF0Y2ggPSB0aGlzLnRhYnMuYW5pbWF0aW9uRHVyYXRpb24ubWF0Y2goLyhcXGQrKSguKikvKTtcbiAgICBjb25zdCBudW1lcmljVmFsdWUgPSBwYXJzZUZsb2F0KG1hdGNoWzFdKTtcbiAgICBzd2l0Y2ggKG1hdGNoWzJdLnRyaW0oKSkge1xuICAgICAgY2FzZSBcIm1zXCI6XG4gICAgICAgIHJldHVybiBudW1lcmljVmFsdWU7XG4gICAgICBjYXNlIFwic1wiOlxuICAgICAgICByZXR1cm4gMTAwMCAqIG51bWVyaWNWYWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGxhbmcuaWxsZWdhbFN0YXRlKGB1bnN1cHBvcnRlZCBkdXJhdGlvbiBzdHJpbmc6ICR7dGhpcy50YWJzLmFuaW1hdGlvbkR1cmF0aW9ufWApO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgZ2V0U2VsZWN0ZWRUYWJJbmRleCgpIHtcbiAgICByZXR1cm4gdGhpcy50YWJzLnNlbGVjdGVkSW5kZXg7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBwcml2YXRlIHRyaWdnZXJUYWJTeW5jaHJvbmlzYXRpb24oKSB7XG4gICAgaWYgKHRoaXMuc3luY1NlbGVjdGVkVGFiVGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc3luY1NlbGVjdGVkVGFiVGltZW91dCk7XG4gICAgfVxuICAgIHRoaXMuc3luY1NlbGVjdGVkVGFiVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zeW5jU2VsZWN0ZWRUYWJUaW1lb3V0ID0gbnVsbDtcbiAgICAgIGlmICh0aGlzLmlzQWN0aXZlKCkpIHtcbiAgICAgICAgdGhpcy5zeW5jaHJvbmlzZVNlbGVjdGVkVGFiSW5kZXgoKTtcbiAgICAgIH1cbiAgICB9LCA3NSk7XG4gIH1cbn1cbiIsIjxtYXQtdGFiLWdyb3VwICN0YWJzIG5vLXRhYi1oZWFkZXJcbiAgICAgICAgICAgICAgIFtkeW5hbWljSGVpZ2h0XT1cImR5bmFtaWNIZWlnaHRcIlxuICAgICAgICAgICAgICAgW2NsYXNzLmZ1bGwtaGVpZ2h0LXRhYnNdPVwiIWR5bmFtaWNIZWlnaHRcIj5cbiAgPG1hdC10YWIgKm5nRm9yPVwibGV0IGFjdGl2aXR5UmVmIG9mIGFjdGl2aXR5UmVmczsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogYWN0aXZpdHlJbmRleFwiPlxuICAgIDxhdXAtYnVzeS1vdmVybGF5IFtidXN5JF09XCJidXN5XCIgY2RrVHJhcEZvY3VzIGNka1RyYXBGb2N1c0F1dG9DYXB0dXJlPlxuICAgICAgPCEtLVxuICAgICAgV2UgaGF2ZSBpc3N1ZXMgd2hlcmUgYW5ndWxhciBpcyB0cmlnZ2VyaW5nIGEgbGVhdmUgYW5pbWF0aW9uIHdoZW4gYW5cbiAgICAgIG5ldyBhY3Rpdml0eSBpcyBzdGFydGVkLCBidXQgaXMgbm90IHJ1bm5pbmcgdGhlIGVudGVyIGFuaW1hdGlvblxuICAgICAgd2hlbiBpdCBpcyBzY3JvbGxlZCBiYWNrIGludG8gdmlldy4gIFNvIHdlIHRyYWNrIHRoZSB0YWIgY2hhbmdlcyBhbmRcbiAgICAgIGRpc2FibGUgYWxsIGFuaW1hdGlvbnMgaW5zaWRlIHRoZSB0YWIgd2hpbGUgd2UncmUgYW5pbWF0aW5nLlxuICAgICAgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiYWN0aXZpdHktb3V0bGV0LXdyYXBwZXJcIiBbQC5kaXNhYmxlZF09XCIhYWN0aXZpdHlSZWYuZm9jdXNlZFwiPlxuICAgICAgICA8YXVwLWFjdGl2aXR5LW91dGxldCBbbmVzdGVkSW50ZXJhY3Rpb25Db250ZXh0XT1cInRoaXNcIiBbYWN0aXZpdHlSZWZdPVwiYWN0aXZpdHlSZWZcIj48L2F1cC1hY3Rpdml0eS1vdXRsZXQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2F1cC1idXN5LW92ZXJsYXk+XG4gIDwvbWF0LXRhYj5cbjwvbWF0LXRhYi1ncm91cD5cbiJdfQ==