@coolon/angular-ui-powerups 0.0.63 → 0.0.65

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 (46) hide show
  1. package/bundles/coolon-angular-ui-powerups.umd.js +722 -561
  2. package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
  3. package/bundles/coolon-angular-ui-powerups.umd.min.js +1 -1
  4. package/bundles/coolon-angular-ui-powerups.umd.min.js.map +1 -1
  5. package/coolon-angular-ui-powerups.d.ts +10 -10
  6. package/coolon-angular-ui-powerups.metadata.json +1 -1
  7. package/esm2015/coolon-angular-ui-powerups.js +10 -10
  8. package/esm2015/index.js +2 -2
  9. package/esm2015/lib/interaction/abstract-activity.js +5 -68
  10. package/esm2015/lib/interaction/activity.js +71 -11
  11. package/esm2015/lib/interaction/components/activity-container/activity-container.component.js +213 -120
  12. package/esm2015/lib/interaction/components/activity-outlet/activity-outlet-context.js +6 -7
  13. package/esm2015/lib/interaction/components/activity-outlet/activity-outlet.component.js +19 -43
  14. package/esm2015/lib/interaction/index.js +2 -2
  15. package/esm2015/lib/interaction/interaction-context.js +11 -5
  16. package/esm2015/lib/interaction/services/dialog-interaction.service.js +94 -65
  17. package/esm2015/lib/place/guards/leave-place.guard.js +95 -131
  18. package/esm2015/lib/place/place-router.js +87 -6
  19. package/esm2015/public_api.js +2 -2
  20. package/esm5/coolon-angular-ui-powerups.js +10 -10
  21. package/esm5/index.js +2 -2
  22. package/esm5/lib/interaction/abstract-activity.js +10 -96
  23. package/esm5/lib/interaction/activity.js +110 -11
  24. package/esm5/lib/interaction/components/activity-container/activity-container.component.js +285 -143
  25. package/esm5/lib/interaction/components/activity-outlet/activity-outlet-context.js +6 -7
  26. package/esm5/lib/interaction/components/activity-outlet/activity-outlet.component.js +19 -67
  27. package/esm5/lib/interaction/index.js +2 -2
  28. package/esm5/lib/interaction/interaction-context.js +18 -7
  29. package/esm5/lib/interaction/services/dialog-interaction.service.js +112 -64
  30. package/esm5/lib/place/guards/leave-place.guard.js +51 -137
  31. package/esm5/lib/place/place-router.js +96 -6
  32. package/esm5/public_api.js +2 -2
  33. package/fesm2015/coolon-angular-ui-powerups.js +582 -439
  34. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  35. package/fesm5/coolon-angular-ui-powerups.js +695 -535
  36. package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
  37. package/lib/interaction/abstract-activity.d.ts +4 -13
  38. package/lib/interaction/activity.d.ts +13 -6
  39. package/lib/interaction/components/activity-container/activity-container.component.d.ts +37 -25
  40. package/lib/interaction/components/activity-outlet/activity-outlet-context.d.ts +2 -5
  41. package/lib/interaction/components/activity-outlet/activity-outlet.component.d.ts +1 -10
  42. package/lib/interaction/interaction-context.d.ts +6 -6
  43. package/lib/interaction/services/dialog-interaction.service.d.ts +4 -6
  44. package/lib/place/guards/leave-place.guard.d.ts +6 -7
  45. package/lib/place/place-router.d.ts +14 -1
  46. package/package.json +1 -1
@@ -3,30 +3,90 @@
3
3
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
4
  */
5
5
  import { InjectionToken } from '@angular/core';
6
+ import { DelegatingValueModel } from '@coolon/pectin';
7
+ import { assert } from '@coolon/typescript-utilities';
6
8
  /** @type {?} */
7
9
  export const ACTIVITY_DATA = new InjectionToken('InteractionActivityData');
8
10
  /**
9
- * @record
11
+ * @abstract
10
12
  * @template D, R, E
11
13
  */
12
- export function Activity() { }
13
- if (false) {
14
- /** @type {?} */
15
- Activity.prototype.busy;
14
+ export class Activity {
15
+ constructor() {
16
+ this._busyModel = new DelegatingValueModel().withDefault(false);
17
+ }
16
18
  /**
17
19
  * @param {?} activityContext
18
20
  * @return {?}
19
21
  */
20
- Activity.prototype.initialise = function (activityContext) { };
22
+ initialise(activityContext) {
23
+ assert.isNil(this._activityContext);
24
+ this._activityContext = activityContext;
25
+ }
26
+ /**
27
+ * @param {?=} result
28
+ * @return {?}
29
+ */
30
+ done(result) {
31
+ return this._activityContext.onDone(result);
32
+ }
21
33
  /**
22
- * @param {?} result
34
+ * @param {?=} error
23
35
  * @return {?}
24
36
  */
25
- Activity.prototype.done = function (result) { };
37
+ cancel(error) {
38
+ this._activityContext.onCancel(error);
39
+ }
40
+ // @Trace()
26
41
  /**
27
- * @param {?} e
28
42
  * @return {?}
29
43
  */
30
- Activity.prototype.cancel = function (e) { };
44
+ onActivityReady() {
45
+ }
46
+ /**
47
+ * @return {?}
48
+ */
49
+ get busy() {
50
+ return this._busyModel.readonly;
51
+ }
52
+ /**
53
+ * @param {?} busyModel
54
+ * @return {?}
55
+ */
56
+ busyWhile(busyModel) {
57
+ this._busyModel.setDelegate(busyModel);
58
+ }
59
+ /**
60
+ * @return {?}
61
+ */
62
+ isBusy() {
63
+ return this._busyModel.value;
64
+ }
65
+ }
66
+ if (false) {
67
+ /**
68
+ * @type {?}
69
+ * @private
70
+ */
71
+ Activity.prototype._busyModel;
72
+ /**
73
+ * @type {?}
74
+ * @private
75
+ */
76
+ Activity.prototype._activityContext;
31
77
  }
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHkuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvaW50ZXJhY3Rpb24vYWN0aXZpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSS9DLE1BQU0sT0FBTyxhQUFhLEdBQUcsSUFBSSxjQUFjLENBQU0seUJBQXlCLENBQUM7Ozs7O0FBRS9FLDhCQUtDOzs7SUFKQyx3QkFBbUM7Ozs7O0lBQ25DLCtEQUFrRTs7Ozs7SUFDbEUsZ0RBQWU7Ozs7O0lBQ2YsNkNBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmFsdWVNb2RlbCB9IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCB7IEFjdGl2aXR5T3V0bGV0Q29udGV4dCB9IGZyb20gJy4vY29tcG9uZW50cy9hY3Rpdml0eS1vdXRsZXQvYWN0aXZpdHktb3V0bGV0LWNvbnRleHQnO1xuXG5leHBvcnQgY29uc3QgQUNUSVZJVFlfREFUQSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxhbnk+KCdJbnRlcmFjdGlvbkFjdGl2aXR5RGF0YScpO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFjdGl2aXR5PEQsIFIsIEUgPSBhbnk+IHtcbiAgcmVhZG9ubHkgYnVzeTogVmFsdWVNb2RlbDxib29sZWFuPjtcbiAgaW5pdGlhbGlzZShhY3Rpdml0eUNvbnRleHQ6IEFjdGl2aXR5T3V0bGV0Q29udGV4dDxELCBSLCBFPik6IHZvaWQ7XG4gIGRvbmUocmVzdWx0OlIpO1xuICBjYW5jZWwoZTpFKTtcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBBY3Rpdml0eSB7XG4gIGV4cG9ydCB0eXBlIENhbGxCYWNrPFQ+ID0gKHZhbHVlOiBUKSA9PiB2b2lkIHwgUHJvbWlzZTxhbnk+O1xufVxuIl19
78
+ (function (Activity) {
79
+ /**
80
+ * @record
81
+ * @template R, E
82
+ */
83
+ function Callbacks() { }
84
+ Activity.Callbacks = Callbacks;
85
+ if (false) {
86
+ /** @type {?} */
87
+ Callbacks.prototype.onDone;
88
+ /** @type {?} */
89
+ Callbacks.prototype.onCancel;
90
+ }
91
+ })(Activity || (Activity = {}));
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHkuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvaW50ZXJhY3Rpb24vYWN0aXZpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFjLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQUV0RCxNQUFNLE9BQU8sYUFBYSxHQUFHLElBQUksY0FBYyxDQUFNLHlCQUF5QixDQUFDOzs7OztBQUUvRSxNQUFNLE9BQWdCLFFBQVE7SUFBOUI7UUFFbUIsZUFBVSxHQUFHLElBQUksb0JBQW9CLEVBQVcsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFpQ3ZGLENBQUM7Ozs7O0lBOUJDLFVBQVUsQ0FBQyxlQUF5QztRQUNsRCxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxlQUFlLENBQUM7SUFDMUMsQ0FBQzs7Ozs7SUFFRCxJQUFJLENBQUMsTUFBVTtRQUNiLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QyxDQUFDOzs7OztJQUVELE1BQU0sQ0FBQyxLQUFTO1FBQ2QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDOzs7OztJQUdELGVBQWU7SUFDZixDQUFDOzs7O0lBR0QsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztJQUNsQyxDQUFDOzs7OztJQUVELFNBQVMsQ0FBQyxTQUE4QjtRQUN0QyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN6QyxDQUFDOzs7O0lBRUQsTUFBTTtRQUNKLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7SUFDL0IsQ0FBQztDQUVGOzs7Ozs7SUFqQ0MsOEJBQXFGOzs7OztJQUNyRixvQ0FBbUQ7O0FBa0NyRCxXQUFpQixRQUFROzs7OztJQUV2Qix3QkFHQzs7OztRQUZDLDJCQUE0Qjs7UUFDNUIsNkJBQTZCOztBQUVqQyxDQUFDLEVBTmdCLFFBQVEsS0FBUixRQUFRLFFBTXhCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERlbGVnYXRpbmdWYWx1ZU1vZGVsLCBWYWx1ZU1vZGVsIH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnQGNvb2xvbi90eXBlc2NyaXB0LXV0aWxpdGllcyc7XG5cbmV4cG9ydCBjb25zdCBBQ1RJVklUWV9EQVRBID0gbmV3IEluamVjdGlvblRva2VuPGFueT4oJ0ludGVyYWN0aW9uQWN0aXZpdHlEYXRhJyk7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBY3Rpdml0eTxELCBSLCBFID0gYW55PiB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfYnVzeU1vZGVsID0gbmV3IERlbGVnYXRpbmdWYWx1ZU1vZGVsPGJvb2xlYW4+KCkud2l0aERlZmF1bHQoZmFsc2UpO1xuICBwcml2YXRlIF9hY3Rpdml0eUNvbnRleHQ6IEFjdGl2aXR5LkNhbGxiYWNrczxSLCBFPjtcblxuICBpbml0aWFsaXNlKGFjdGl2aXR5Q29udGV4dDogQWN0aXZpdHkuQ2FsbGJhY2tzPFIsIEU+KTogdm9pZCB7XG4gICAgYXNzZXJ0LmlzTmlsKHRoaXMuX2FjdGl2aXR5Q29udGV4dCk7XG4gICAgdGhpcy5fYWN0aXZpdHlDb250ZXh0ID0gYWN0aXZpdHlDb250ZXh0O1xuICB9XG5cbiAgZG9uZShyZXN1bHQ/OiBSKTogdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2aXR5Q29udGV4dC5vbkRvbmUocmVzdWx0KTtcbiAgfVxuXG4gIGNhbmNlbChlcnJvcj86IEUpOiB2b2lkIHtcbiAgICB0aGlzLl9hY3Rpdml0eUNvbnRleHQub25DYW5jZWwoZXJyb3IpO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgb25BY3Rpdml0eVJlYWR5KCkge1xuICB9XG5cblxuICBnZXQgYnVzeSgpOiBWYWx1ZU1vZGVsPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fYnVzeU1vZGVsLnJlYWRvbmx5O1xuICB9XG5cbiAgYnVzeVdoaWxlKGJ1c3lNb2RlbDogVmFsdWVNb2RlbDxib29sZWFuPikge1xuICAgIHRoaXMuX2J1c3lNb2RlbC5zZXREZWxlZ2F0ZShidXN5TW9kZWwpO1xuICB9XG5cbiAgaXNCdXN5KCkge1xuICAgIHJldHVybiB0aGlzLl9idXN5TW9kZWwudmFsdWU7XG4gIH1cblxufVxuXG5leHBvcnQgbmFtZXNwYWNlIEFjdGl2aXR5IHtcblxuICBleHBvcnQgaW50ZXJmYWNlIENhbGxiYWNrczxSLCBFPiB7XG4gICAgb25Eb25lOiAocmVzdWx0OiBSKSA9PiB2b2lkLFxuICAgIG9uQ2FuY2VsOiAoZXJyb3I6IEUpID0+IHZvaWQsXG4gIH1cbn1cbiJdfQ==
@@ -4,108 +4,181 @@
4
4
  */
5
5
  import { Component, Input, QueryList, ViewChild, ViewChildren } from '@angular/core';
6
6
  import { MatTabGroup } from '@angular/material';
7
- import { Dsl, MutableListModel } from '@coolon/pectin';
8
- import { DisposableComponent } from '../../../components/disposable-component';
7
+ import { assert, Dsl, MutableListModel, MutableStream } from '@coolon/pectin';
9
8
  import { InteractionContext } from '../../interaction-context';
10
9
  import { ActivityOutletComponent } from '../activity-outlet/activity-outlet.component';
11
10
  import { AlertDialogComponent } from '../alert-dialog/alert-dialog.component';
12
11
  import { ConfirmThenDialogComponent } from '../confirm-then-dialog/confirm-then-dialog.component';
13
12
  import { ConfirmationDialogComponent } from '../confirmation-dialog/confirmation-dialog.component';
14
- export class ActivityContainerComponent extends DisposableComponent {
15
- constructor() {
16
- super();
17
- this.activityOutletTabs = new MutableListModel();
18
- this.obsoleteTabs = [];
19
- this.finished = false;
20
- this._activityList = new MutableListModel();
13
+ /**
14
+ * Note: this class is mutable and is stored in a list model. This is normally a big no no but
15
+ * we're manually deriving other models from the list after view state changes. I.e. we not
16
+ * using pectin chains on any of the mutable fields.
17
+ * @template D, R, E
18
+ */
19
+ class TabContext {
20
+ /**
21
+ * @param {?} activityData
22
+ * @param {?} activityClass
23
+ * @param {?} interactionContext
24
+ * @param {?} activityCallbacks
25
+ */
26
+ constructor(activityData, activityClass, interactionContext, activityCallbacks) {
27
+ this.activityData = activityData;
28
+ this.activityClass = activityClass;
29
+ this.interactionContext = interactionContext;
30
+ this.activityCallbacks = activityCallbacks;
31
+ this._complete = false;
21
32
  }
22
33
  /**
23
34
  * @return {?}
24
35
  */
25
- isActive() {
26
- return this.parentInteractionContext.isActive();
36
+ isComponentRealised() {
37
+ return !!this._component;
27
38
  }
28
39
  /**
29
40
  * @return {?}
30
41
  */
31
- get activityList() {
32
- return this._activityList.readonly;
42
+ isComplete() {
43
+ return this._complete;
33
44
  }
34
45
  /**
46
+ * @param {?} component
35
47
  * @return {?}
36
48
  */
37
- ngOnInit() {
49
+ componentReady(component) {
50
+ assert.isNil(this._component);
51
+ this._component = component;
38
52
  }
39
53
  /**
40
54
  * @return {?}
41
55
  */
42
- ngAfterViewInit() {
43
- const { observe } = Dsl.disposeWith(this);
44
- this._activityList.value = this.outlets.toArray().map((/**
45
- * @param {?} c
46
- * @return {?}
47
- */
48
- c => c.component));
49
- observe.valuesFrom(this.outlets.changes).subscribe((/**
50
- * @param {?} change
51
- * @return {?}
52
- */
53
- (change) => {
54
- this.safelyUpdateActivityList(change.map((/**
55
- * @param {?} c
56
- * @return {?}
57
- */
58
- c => c.component)));
59
- }));
60
- observe.valuesFrom(this.tabs.animationDone).subscribe((/**
61
- * @return {?}
62
- */
63
- () => this.onAnimationFinished()));
56
+ get component() {
57
+ return this._component;
64
58
  }
59
+ // @Trace()
65
60
  /**
66
- * Update in the next tick to avoid changing state in the current change detection cycle.
67
- * @private
68
- * @param {?} activities
61
+ * @param {?} result
69
62
  * @return {?}
70
63
  */
71
- safelyUpdateActivityList(activities) {
72
- setTimeout((/**
64
+ onDone(result) {
65
+ this._complete = true;
66
+ this.activityCallbacks.onDone(result);
67
+ }
68
+ // @Trace()
69
+ /**
70
+ * @param {?} error
71
+ * @return {?}
72
+ */
73
+ onCancel(error) {
74
+ this._complete = true;
75
+ this.activityCallbacks.onCancel(error);
76
+ }
77
+ }
78
+ if (false) {
79
+ /**
80
+ * @type {?}
81
+ * @private
82
+ */
83
+ TabContext.prototype._complete;
84
+ /**
85
+ * @type {?}
86
+ * @private
87
+ */
88
+ TabContext.prototype._component;
89
+ /** @type {?} */
90
+ TabContext.prototype.activityData;
91
+ /** @type {?} */
92
+ TabContext.prototype.activityClass;
93
+ /** @type {?} */
94
+ TabContext.prototype.interactionContext;
95
+ /** @type {?} */
96
+ TabContext.prototype.activityCallbacks;
97
+ }
98
+ /**
99
+ * @template D, R, E
100
+ */
101
+ export class ActivityContainerComponent extends InteractionContext {
102
+ constructor() {
103
+ super();
104
+ this.activityFinishedEvents = new MutableStream();
105
+ this.activityTabs = new MutableListModel();
106
+ this.finished = false;
107
+ this._activityList = new MutableListModel();
108
+ const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
109
+ chain(this.activityFinishedEvents).throttle(50).subscribe((/**
73
110
  * @return {?}
74
111
  */
75
- () => this._activityList.value = activities));
112
+ () => this.onActivityFinished()));
76
113
  }
77
114
  /**
78
- * @template D, R, E
79
115
  * @param {?} initialContext
80
116
  * @return {?}
81
117
  */
82
- initialise(initialContext) {
83
- /** @type {?} */
84
- const self = this;
85
- this.initialActivityOutletContext = {
86
- activityClass: initialContext.activityClass,
87
- activityData: initialContext.activityData,
118
+ set initialActivityOutletContext(initialContext) {
119
+ assert.isNil(this.initialActivityOutletContext);
120
+ this.activityTabs.push(new TabContext(initialContext.activityData, initialContext.activityClass, this, {
88
121
  onDone: (/**
89
122
  * @param {?} result
90
123
  * @return {?}
91
124
  */
92
- function (result) {
93
- self.finished = true;
125
+ (result) => {
126
+ this.finished = true;
94
127
  return initialContext.onDone(result);
95
128
  }),
96
129
  onCancel: (/**
97
130
  * @param {?} error
98
131
  * @return {?}
99
132
  */
100
- function (error) {
101
- self.finished = true;
133
+ (error) => {
134
+ this.finished = true;
102
135
  return initialContext.onCancel(error);
103
- }),
104
- interactionContext: this
105
- };
136
+ })
137
+ }));
138
+ }
139
+ /**
140
+ * @return {?}
141
+ */
142
+ get initialActivityOutletContext() {
143
+ return this.activityTabs.length > 0 ? this.activityTabs.value[0] : null;
144
+ }
145
+ /**
146
+ * @return {?}
147
+ */
148
+ isActive() {
149
+ return this.parentInteractionContext.isActive();
106
150
  }
107
151
  /**
108
- * @template D, R, E
152
+ * @return {?}
153
+ */
154
+ get activityList() {
155
+ return this._activityList.readonly;
156
+ }
157
+ /**
158
+ * @return {?}
159
+ */
160
+ ngOnInit() {
161
+ }
162
+ /**
163
+ * @return {?}
164
+ */
165
+ ngAfterViewInit() {
166
+ const { chain, observe } = Dsl.disposeWith(this);
167
+ observe.valuesFrom(this.outlets.changes).subscribe((/**
168
+ * @return {?}
169
+ */
170
+ () => setTimeout((/**
171
+ * @return {?}
172
+ */
173
+ () => this.updateActivityList()))));
174
+ observe.valuesFrom(this.tabs.animationDone).subscribe((/**
175
+ * @return {?}
176
+ */
177
+ () => this.onAnimationFinished()));
178
+ this.updateActivityList();
179
+ }
180
+ /**
181
+ * @template D1, R1, E1
109
182
  * @param {?} activityType
110
183
  * @param {?=} data
111
184
  * @return {?}
@@ -120,41 +193,26 @@ export class ActivityContainerComponent extends DisposableComponent {
120
193
  */
121
194
  (resolve, reject) => {
122
195
  /** @type {?} */
123
- const context = {
124
- interactionContext: self,
125
- activityClass: activityType,
126
- activityData: data,
196
+ const context = new TabContext(data, activityType, self, {
127
197
  onDone: (/**
128
198
  * @param {?} result
129
199
  * @return {?}
130
200
  */
131
201
  function (result) {
132
- self.obsoleteTabs.push(context);
133
- // animating on the next tick gives chained done's a chance to
134
- // finished before we start an animations
135
202
  resolve(result);
136
- setTimeout((/**
137
- * @return {?}
138
- */
139
- () => self.animateTabs()));
203
+ self.activityFinishedEvents.publish({});
140
204
  }),
141
205
  onCancel: (/**
142
206
  * @param {?} error
143
207
  * @return {?}
144
208
  */
145
209
  function (error) {
146
- self.obsoleteTabs.push(context);
147
- // finished before we start an animations
148
210
  reject(error);
149
- // animating on the next tick gives chained done's a chance to complete before we animate
150
- setTimeout((/**
151
- * @return {?}
152
- */
153
- () => self.animateTabs()));
211
+ self.activityFinishedEvents.publish({});
154
212
  })
155
- };
156
- self.activityOutletTabs.push(context);
157
- self.tabs.selectedIndex = this.activityOutletTabs.length;
213
+ });
214
+ self.activityTabs.push(context);
215
+ self.tabs.selectedIndex = this.activityTabs.length;
158
216
  }));
159
217
  }
160
218
  /**
@@ -172,7 +230,7 @@ export class ActivityContainerComponent extends DisposableComponent {
172
230
  return this.startActivity(ConfirmationDialogComponent, confirm);
173
231
  }
174
232
  /**
175
- * @template D, R, E
233
+ * @template D1, R1, E1
176
234
  * @param {?} confirm
177
235
  * @param {?} activityType
178
236
  * @param {?=} data
@@ -185,35 +243,92 @@ export class ActivityContainerComponent extends DisposableComponent {
185
243
  data: data
186
244
  });
187
245
  }
246
+ // @Trace()
247
+ /**
248
+ * @private
249
+ * @return {?}
250
+ */
251
+ onActivityFinished() {
252
+ // don't do anything if job already queued up.
253
+ if (!this.finished) {
254
+ if (this.synchroniseSelectedTabIndex()) {
255
+ this.cleanupStaleActivities();
256
+ }
257
+ this.updateActivityList();
258
+ }
259
+ }
260
+ // @Trace()
261
+ /**
262
+ * @private
263
+ * @return {?}
264
+ */
265
+ cleanupStaleActivities() {
266
+ // clean up old tabs
267
+ if (this.tabs.selectedIndex < this.activityTabs.length - 1) {
268
+ this.activityTabs.runInTransaction((/**
269
+ * @param {?} draft
270
+ * @return {?}
271
+ */
272
+ draft => {
273
+ draft.value = draft.value.slice(0, 1 + this.tabs.selectedIndex);
274
+ }));
275
+ }
276
+ }
277
+ /**
278
+ * Synchronises the selected tab index. Returns true if there was no change to the selected index.
279
+ * @private
280
+ * @return {?}
281
+ */
282
+ // @Trace()
283
+ synchroniseSelectedTabIndex() {
284
+ /** @type {?} */
285
+ const previousIndex = this.tabs.selectedIndex;
286
+ /** @type {?} */
287
+ const newIndex = this.activityTabs.query().findIndex((/**
288
+ * @param {?} t
289
+ * @return {?}
290
+ */
291
+ t => t.isComplete())) - 1;
292
+ this.tabs.selectedIndex = newIndex;
293
+ return previousIndex === newIndex;
294
+ }
295
+ // @Trace()
188
296
  /**
189
297
  * @private
190
298
  * @return {?}
191
299
  */
192
300
  onAnimationFinished() {
193
- this.activityOutletTabs.value = this.activityOutletTabs.value.filter((/**
194
- * @param {?} tab
301
+ this.getSelectedOutlet().component.onActivityReady();
302
+ this.cleanupStaleActivities();
303
+ this.updateActivityList();
304
+ }
305
+ /**
306
+ * @private
307
+ * @return {?}
308
+ */
309
+ updateActivityList() {
310
+ this._activityList.value = this.activityTabs.value.filter((/**
311
+ * @param {?} t
195
312
  * @return {?}
196
313
  */
197
- tab => {
198
- return !this.obsoleteTabs.includes(tab);
199
- }));
200
- this.obsoleteTabs = [];
201
- this.outlets.toArray()[this.tabs.selectedIndex].notifyReady();
314
+ t => !t.isComplete() && t.isComponentRealised())).map((/**
315
+ * @param {?} t
316
+ * @return {?}
317
+ */
318
+ t => t.component));
202
319
  }
203
320
  /**
204
321
  * @private
205
322
  * @return {?}
206
323
  */
207
- animateTabs() {
208
- if (!this.finished) {
209
- this.tabs.selectedIndex = this.activityOutletTabs.length - this.obsoleteTabs.length;
210
- }
324
+ getSelectedOutlet() {
325
+ return this.outlets.toArray()[this.tabs.selectedIndex];
211
326
  }
212
327
  }
213
328
  ActivityContainerComponent.decorators = [
214
329
  { type: Component, args: [{
215
330
  selector: 'angular-ui-powerups-activity-container',
216
- template: "<mat-tab-group #tabs no-tab-header [dynamicHeight]=\"true\">\n <mat-tab>\n <angular-ui-powerups-activity-outlet [interactionContext]=\"this\"\n [activityContext]=\"initialActivityOutletContext\"></angular-ui-powerups-activity-outlet>\n </mat-tab>\n <mat-tab *ngFor=\"let tab of activityOutletTabs.value\">\n <angular-ui-powerups-activity-outlet [interactionContext]=\"this\"\n [activityContext]=\"tab\"></angular-ui-powerups-activity-outlet>\n </mat-tab>\n</mat-tab-group>\n",
331
+ template: "<mat-tab-group #tabs no-tab-header [dynamicHeight]=\"true\">\n <mat-tab *ngFor=\"let tab of activityTabs.value\">\n <angular-ui-powerups-activity-outlet [interactionContext]=\"this\"\n [activityContext]=\"tab\"></angular-ui-powerups-activity-outlet>\n </mat-tab>\n</mat-tab-group>\n",
217
332
  styles: [":host{display:block}"]
218
333
  }] }
219
334
  ];
@@ -226,23 +341,19 @@ ActivityContainerComponent.propDecorators = {
226
341
  outlets: [{ type: ViewChildren, args: [ActivityOutletComponent,] }]
227
342
  };
228
343
  if (false) {
344
+ /**
345
+ * @type {?}
346
+ * @private
347
+ */
348
+ ActivityContainerComponent.prototype.activityFinishedEvents;
229
349
  /** @type {?} */
230
350
  ActivityContainerComponent.prototype.parentInteractionContext;
231
351
  /** @type {?} */
232
- ActivityContainerComponent.prototype.initialActivityOutletContext;
233
- /** @type {?} */
234
- ActivityContainerComponent.prototype.currentActivity;
235
- /** @type {?} */
236
352
  ActivityContainerComponent.prototype.tabs;
237
353
  /** @type {?} */
238
354
  ActivityContainerComponent.prototype.outlets;
239
355
  /** @type {?} */
240
- ActivityContainerComponent.prototype.activityOutletTabs;
241
- /**
242
- * @type {?}
243
- * @private
244
- */
245
- ActivityContainerComponent.prototype.obsoleteTabs;
356
+ ActivityContainerComponent.prototype.activityTabs;
246
357
  /**
247
358
  * @type {?}
248
359
  * @private
@@ -254,22 +365,4 @@ if (false) {
254
365
  */
255
366
  ActivityContainerComponent.prototype._activityList;
256
367
  }
257
- (function (ActivityContainerComponent) {
258
- /**
259
- * @record
260
- * @template D, R, E
261
- */
262
- function ActivityContext() { }
263
- ActivityContainerComponent.ActivityContext = ActivityContext;
264
- if (false) {
265
- /** @type {?} */
266
- ActivityContext.prototype.activityClass;
267
- /** @type {?} */
268
- ActivityContext.prototype.activityData;
269
- /** @type {?} */
270
- ActivityContext.prototype.onDone;
271
- /** @type {?} */
272
- ActivityContext.prototype.onCancel;
273
- }
274
- })(ActivityContainerComponent || (ActivityContainerComponent = {}));
275
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbImxpYi9pbnRlcmFjdGlvbi9jb21wb25lbnRzL2FjdGl2aXR5LWNvbnRhaW5lci9hY3Rpdml0eS1jb250YWluZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sRUFFTCxHQUFHLEVBRUgsZ0JBQWdCLEVBSWpCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFLL0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFL0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDdkYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDbEcsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFPbkcsTUFBTSxPQUFPLDBCQUEyQixTQUFRLG1CQUFtQjtJQXNCakU7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQVBELHVCQUFrQixHQUFHLElBQUksZ0JBQWdCLEVBQXdDLENBQUM7UUFDbkYsaUJBQVksR0FBMkMsRUFBRSxDQUFDO1FBQzFELGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFUixrQkFBYSxHQUFHLElBQUksZ0JBQWdCLEVBQXNCLENBQUM7SUFJNUUsQ0FBQzs7OztJQUVELFFBQVE7UUFDTixPQUFP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YSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDaEUsQ0FBQzs7Ozs7SUFFTyxXQUFXO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7U0FDckY7SUFDSCxDQUFDOzs7WUFwSUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSx3Q0FBd0M7Z0JBQ2xELGdrQkFBa0Q7O2FBRW5EOzs7Ozt1Q0FHRSxLQUFLOzJDQUdMLEtBQUs7bUJBS0wsU0FBUyxTQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7c0JBR2xDLFlBQVksU0FBQyx1QkFBdUI7Ozs7SUFYckMsOERBQzZDOztJQUU3QyxrRUFDbUU7O0lBRW5FLHFEQUF5RDs7SUFFekQsMENBQ2tCOztJQUVsQiw2Q0FDMkQ7O0lBRTNELHdEQUEyRjs7Ozs7SUFDM0Ysa0RBQWtFOzs7OztJQUNsRSw4Q0FBeUI7Ozs7O0lBRXpCLG1EQUE0RTs7QUE4RzlFLFdBQWlCLDBCQUEwQjs7Ozs7SUFFekMsOEJBS0M7Ozs7UUFKQyx3Q0FBZ0Q7O1FBQ2hELHVDQUFnQjs7UUFDaEIsaUNBQTRCOztRQUM1QixtQ0FBNkI7O0FBRWpDLENBQUMsRUFSZ0IsMEJBQTBCLEtBQTFCLDBCQUEwQixRQVExQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgUXVlcnlMaXN0LCBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0VGFiR3JvdXAgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbCc7XG5pbXBvcnQge1xuICBDb25zdHJ1Y3RhYmxlLFxuICBEc2wsXG4gIExpc3RNb2RlbCxcbiAgTXV0YWJsZUxpc3RNb2RlbCxcbiAgVHJhbnNhY3Rpb25PYnNlcnZlcixcbiAgVXNlRGVsZWdhdGUsXG4gIFZhbHVlTW9kZWxcbn0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IHsgRGlzcG9zYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvZGlzcG9zYWJsZS1jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBBY3Rpdml0eSB9IGZyb20gJy4uLy4uL2FjdGl2aXR5JztcbmltcG9ydCB7IEFsZXJ0IH0gZnJvbSAnLi4vLi4vYWxlcnQnO1xuaW1wb3J0IHsgQ29uZmlybSB9IGZyb20gJy4uLy4uL2NvbmZpcm0nO1xuaW1wb3J0IHsgSW50ZXJhY3Rpb25Db250ZXh0IH0gZnJvbSAnLi4vLi4vaW50ZXJhY3Rpb24tY29udGV4dCc7XG5pbXBvcnQgeyBBY3Rpdml0eU91dGxldENvbnRleHQgfSBmcm9tICcuLi9hY3Rpdml0eS1vdXRsZXQvYWN0aXZpdHktb3V0bGV0LWNvbnRleHQnO1xuaW1wb3J0IHsgQWN0aXZpdHlPdXRsZXRDb21wb25lbnQgfSBmcm9tICcuLi9hY3Rpdml0eS1vdXRsZXQvYWN0aXZpdHktb3V0bGV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBbGVydERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2FsZXJ0LWRpYWxvZy9hbGVydC1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IENvbmZpcm1UaGVuRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vY29uZmlybS10aGVuLWRpYWxvZy9jb25maXJtLXRoZW4tZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb25maXJtYXRpb25EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9jb25maXJtYXRpb24tZGlhbG9nL2NvbmZpcm1hdGlvbi1kaWFsb2cuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYW5ndWxhci11aS1wb3dlcnVwcy1hY3Rpdml0eS1jb250YWluZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vYWN0aXZpdHktY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYWN0aXZpdHktY29udGFpbmVyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQWN0aXZpdHlDb250YWluZXJDb21wb25lbnQgZXh0ZW5kcyBEaXNwb3NhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBJbnRlcmFjdGlvbkNvbnRleHQge1xuXG4gIEBJbnB1dCgpXG4gIHBhcmVudEludGVyYWN0aW9uQ29udGV4dDogSW50ZXJhY3Rpb25Db250ZXh0O1xuXG4gIEBJbnB1dCgpXG4gIGluaXRpYWxBY3Rpdml0eU91dGxldENvbnRleHQ6IEFjdGl2aXR5T3V0bGV0Q29udGV4dDxhbnksIGFueSwgYW55PjtcblxuICByZWFkb25seSBjdXJyZW50QWN0aXZpdHk6IFZhbHVlTW9kZWw8QWN0aXZpdHk8YW55LCBhbnk+PjtcblxuICBAVmlld0NoaWxkKCd0YWJzJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgdGFiczogTWF0VGFiR3JvdXA7XG5cbiAgQFZpZXdDaGlsZHJlbihBY3Rpdml0eU91dGxldENvbXBvbmVudClcbiAgb3V0bGV0czogUXVlcnlMaXN0PEFjdGl2aXR5T3V0bGV0Q29tcG9uZW50PGFueSwgYW55LCBhbnk+PjtcblxuICByZWFkb25seSBhY3Rpdml0eU91dGxldFRhYnMgPSBuZXcgTXV0YWJsZUxpc3RNb2RlbDxBY3Rpdml0eU91dGxldENvbnRleHQ8YW55LCBhbnksIGFueT4+KCk7XG4gIHByaXZhdGUgb2Jzb2xldGVUYWJzOiBBY3Rpdml0eU91dGxldENvbnRleHQ8YW55LCBhbnksIGFueT5bXSA9IFtdO1xuICBwcml2YXRlIGZpbmlzaGVkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aXZpdHlMaXN0ID0gbmV3IE11dGFibGVMaXN0TW9kZWw8QWN0aXZpdHk8YW55LCBhbnk+PigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBpc0FjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnRJbnRlcmFjdGlvbkNvbnRleHQuaXNBY3RpdmUoKTtcbiAgfVxuXG4gIGdldCBhY3Rpdml0eUxpc3QoKTpMaXN0TW9kZWw8QWN0aXZpdHk8YW55LGFueT4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZpdHlMaXN0LnJlYWRvbmx5O1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgY29uc3QgeyBvYnNlcnZlIH0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG4gICAgdGhpcy5fYWN0aXZpdHlMaXN0LnZhbHVlID0gdGhpcy5vdXRsZXRzLnRvQXJyYXkoKS5tYXAoYyA9PiBjLmNvbXBvbmVudCk7XG4gICAgb2JzZXJ2ZS52YWx1ZXNGcm9tKHRoaXMub3V0bGV0cy5jaGFuZ2VzKS5zdWJzY3JpYmUoKGNoYW5nZSkgPT4ge1xuICAgICAgdGhpcy5zYWZlbHlVcGRhdGVBY3Rpdml0eUxpc3QoY2hhbmdlLm1hcChjID0+IGMuY29tcG9uZW50KSk7XG4gICAgfSk7XG4gICAgb2JzZXJ2ZS52YWx1ZXNGcm9tKHRoaXMudGFicy5hbmltYXRpb25Eb25lKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5vbkFuaW1hdGlvbkZpbmlzaGVkKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBpbiB0aGUgbmV4dCB0aWNrIHRvIGF2b2lkIGNoYW5naW5nIHN0YXRlIGluIHRoZSBjdXJyZW50IGNoYW5nZSBkZXRlY3Rpb24gY3ljbGUuXG4gICAqIEBwYXJhbSBhY3Rpdml0aWVzXG4gICAqL1xuICBwcml2YXRlIHNhZmVseVVwZGF0ZUFjdGl2aXR5TGlzdChhY3Rpdml0aWVzOkFjdGl2aXR5PGFueSxhbnk+W10pIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuX2FjdGl2aXR5TGlzdC52YWx1ZSA9IGFjdGl2aXRpZXMpO1xuICB9XG5cbiAgaW5pdGlhbGlzZTxELCBSLCBFPihpbml0aWFsQ29udGV4dDogQWN0aXZpdHlDb250YWluZXJDb21wb25lbnQuQWN0aXZpdHlDb250ZXh0PEQsIFIsIEU+KSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgdGhpcy5pbml0aWFsQWN0aXZpdHlPdXRsZXRDb250ZXh0ID0ge1xuICAgICAgYWN0aXZpdHlDbGFzczogaW5pdGlhbENvbnRleHQuYWN0aXZpdHlDbGFzcyxcbiAgICAgIGFjdGl2aXR5RGF0YTogaW5pdGlhbENvbnRleHQuYWN0aXZpdHlEYXRhLFxuICAgICAgb25Eb25lOiBmdW5jdGlvbihyZXN1bHQ6IFIpIHtcbiAgICAgICAgc2VsZi5maW5pc2hlZCA9IHRydWU7XG4gICAgICAgIHJldHVybiBpbml0aWFsQ29udGV4dC5vbkRvbmUocmVzdWx0KTtcbiAgICAgIH0sXG4gICAgICBvbkNhbmNlbDogZnVuY3Rpb24oZXJyb3I6IEUpIHtcbiAgICAgICAgc2VsZi5maW5pc2hlZCA9IHRydWU7XG4gICAgICAgIHJldHVybiBpbml0aWFsQ29udGV4dC5vbkNhbmNlbChlcnJvcik7XG4gICAgICB9LFxuICAgICAgaW50ZXJhY3Rpb25Db250ZXh0OiB0aGlzXG4gICAgfTtcbiAgfVxuXG4gIHN0YXJ0QWN0aXZpdHk8RCwgUiwgRT4oYWN0aXZpdHlUeXBlOiBDb25zdHJ1Y3RhYmxlPEFjdGl2aXR5PEQsIFIsIEU+PiwgZGF0YT86IEQpOiBQcm9taXNlPFI+IHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICByZXR1cm4gbmV3IFByb21pc2U8Uj4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgY29udGV4dCA9IHtcbiAgICAgICAgaW50ZXJhY3Rpb25Db250ZXh0OiBzZWxmLFxuICAgICAgICBhY3Rpdml0eUNsYXNzOiBhY3Rpdml0eVR5cGUsXG4gICAgICAgIGFjdGl2aXR5RGF0YTogZGF0YSxcbiAgICAgICAgb25Eb25lOiBmdW5jdGlvbihyZXN1bHQ6IFIpIHtcbiAgICAgICAgICBzZWxmLm9ic29sZXRlVGFicy5wdXNoKGNvbnRleHQpO1xuICAgICAgICAgIC8vIGFuaW1hdGluZyBvbiB0aGUgbmV4dCB0aWNrIGdpdmVzIGNoYWluZWQgZG9uZSdzIGEgY2hhbmNlIHRvXG4gICAgICAgICAgLy8gZmluaXNoZWQgYmVmb3JlIHdlIHN0YXJ0IGFuIGFuaW1hdGlvbnNcbiAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBzZWxmLmFuaW1hdGVUYWJzKCkpO1xuICAgICAgICB9LFxuICAgICAgICBvbkNhbmNlbDogZnVuY3Rpb24oZXJyb3I6IEUpIHtcbiAgICAgICAgICBzZWxmLm9ic29sZXRlVGFicy5wdXNoKGNvbnRleHQpO1xuICAgICAgICAgIC8vIGZpbmlzaGVkIGJlZm9yZSB3ZSBzdGFydCBhbiBhbmltYXRpb25zXG4gICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAvLyBhbmltYXRpbmcgb24gdGhlIG5leHQgdGljayBnaXZlcyBjaGFpbmVkIGRvbmUncyBhIGNoYW5jZSB0byBjb21wbGV0ZSBiZWZvcmUgd2UgYW5pbWF0ZVxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gc2VsZi5hbmltYXRlVGFicygpKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHNlbGYuYWN0aXZpdHlPdXRsZXRUYWJzLnB1c2goY29udGV4dCk7XG4gICAgICBzZWxmLnRhYnMuc2VsZWN0ZWRJbmRleCA9IHRoaXMuYWN0aXZpdHlPdXRsZXRUYWJzLmxlbmd0aDtcbiAgICB9KTtcbiAgfVxuXG4gIGFsZXJ0KGFsZXJ0OiBBbGVydCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnN0YXJ0QWN0aXZpdHkoQWxlcnREaWFsb2dDb21wb25lbnQsIGFsZXJ0KTtcbiAgfVxuXG4gIGNvbmZpcm0oY29uZmlybTogQ29uZmlybSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnN0YXJ0QWN0aXZpdHkoQ29uZmlybWF0aW9uRGlhbG9nQ29tcG9uZW50LCBjb25maXJtKTtcbiAgfVxuXG4gIGNvbmZpcm1UaGVuPEQsIFIsIEU+KGNvbmZpcm06IENvbmZpcm0sIGFjdGl2aXR5VHlwZTogQ29uc3RydWN0YWJsZTxBY3Rpdml0eTxELCBSLCBFPj4sIGRhdGE/OiBEKTogUHJvbWlzZTxSPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhcnRBY3Rpdml0eTxDb25maXJtVGhlbkRpYWxvZ0NvbXBvbmVudC5EYXRhPEQsIFIsIEU+LCBSLCBFPihDb25maXJtVGhlbkRpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgY29uZmlybSxcbiAgICAgIGFjdGl2aXR5VHlwZTogYWN0aXZpdHlUeXBlLFxuICAgICAgZGF0YTogZGF0YVxuICAgIH0pO1xuICB9XG5cblxuICBwcml2YXRlIG9uQW5pbWF0aW9uRmluaXNoZWQoKSB7XG4gICAgdGhpcy5hY3Rpdml0eU91dGxldFRhYnMudmFsdWUgPSB0aGlzLmFjdGl2aXR5T3V0bGV0VGFicy52YWx1ZS5maWx0ZXIodGFiID0+IHtcbiAgICAgIHJldHVybiAhdGhpcy5vYnNvbGV0ZVRhYnMuaW5jbHVkZXModGFiKTtcbiAgICB9KTtcbiAgICB0aGlzLm9ic29sZXRlVGFicyA9IFtdO1xuICAgIHRoaXMub3V0bGV0cy50b0FycmF5KClbdGhpcy50YWJzLnNlbGVjdGVkSW5kZXhdLm5vdGlmeVJlYWR5KCk7XG4gIH1cblxuICBwcml2YXRlIGFuaW1hdGVUYWJzKCkge1xuICAgIGlmICghdGhpcy5maW5pc2hlZCkge1xuICAgICAgdGhpcy50YWJzLnNlbGVjdGVkSW5kZXggPSB0aGlzLmFjdGl2aXR5T3V0bGV0VGFicy5sZW5ndGggLSB0aGlzLm9ic29sZXRlVGFicy5sZW5ndGg7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgQWN0aXZpdHlDb250YWluZXJDb21wb25lbnQge1xuXG4gIGV4cG9ydCBpbnRlcmZhY2UgQWN0aXZpdHlDb250ZXh0PEQsIFIsIEU+IHtcbiAgICBhY3Rpdml0eUNsYXNzOiBDb25zdHJ1Y3RhYmxlPEFjdGl2aXR5PEQsIFIsIEU+PixcbiAgICBhY3Rpdml0eURhdGE6IEQsXG4gICAgb25Eb25lOiAocmVzdWx0OiBSKSA9PiB2b2lkLFxuICAgIG9uQ2FuY2VsOiAoZXJyb3I6IEUpID0+IHZvaWQsXG4gIH1cbn1cbiJdfQ==
368
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbImxpYi9pbnRlcmFjdGlvbi9jb21wb25lbnRzL2FjdGl2aXR5LWNvbnRhaW5lci9hY3Rpdml0eS1jb250YWluZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxNQUFNLEVBQWlCLEdBQUcsRUFBYSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUt4RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUUvRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN2RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNsRyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQzs7Ozs7OztBQU9uRyxNQUFNLFVBQVU7Ozs7Ozs7SUFLZCxZQUFxQixZQUFlLEVBQ2YsYUFBK0MsRUFDL0Msa0JBQXNDLEVBQ3RDLGlCQUEyQztRQUgzQyxpQkFBWSxHQUFaLFlBQVksQ0FBRztRQUNmLGtCQUFhLEdBQWIsYUFBYSxDQUFrQztRQUMvQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBMEI7UUFOeEQsY0FBUyxHQUFHLEtBQUssQ0FBQztJQU8xQixDQUFDOzs7O0lBRUQsbUJBQW1CO1FB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LElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDekQsQ0FBQzs7O1lBbEpGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsd0NBQXdDO2dCQUNsRCxtVkFBa0Q7O2FBRW5EOzs7Ozt1Q0FLRSxLQUFLOzJDQUdMLEtBQUs7bUJBbUJMLFNBQVMsU0FBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO3NCQUdsQyxZQUFZLFNBQUMsdUJBQXVCOzs7Ozs7O0lBM0JyQyw0REFBbUU7O0lBRW5FLDhEQUM2Qzs7SUFxQjdDLDBDQUNrQjs7SUFFbEIsNkNBQzJEOztJQUUzRCxrREFBMEU7Ozs7O0lBQzFFLDhDQUF5Qjs7Ozs7SUFFekIsbURBQTRFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBRdWVyeUxpc3QsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRUYWJHcm91cCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsJztcbmltcG9ydCB7IGFzc2VydCwgQ29uc3RydWN0YWJsZSwgRHNsLCBMaXN0TW9kZWwsIE11dGFibGVMaXN0TW9kZWwsIE11dGFibGVTdHJlYW0gfSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5cbmltcG9ydCB7IEFjdGl2aXR5IH0gZnJvbSAnLi4vLi4vYWN0aXZpdHknO1xuaW1wb3J0IHsgQWxlcnQgfSBmcm9tICcuLi8uLi9hbGVydCc7XG5pbXBvcnQgeyBDb25maXJtIH0gZnJvbSAnLi4vLi4vY29uZmlybSc7XG5pbXBvcnQgeyBJbnRlcmFjdGlvbkNvbnRleHQgfSBmcm9tICcuLi8uLi9pbnRlcmFjdGlvbi1jb250ZXh0JztcbmltcG9ydCB7IEFjdGl2aXR5T3V0bGV0Q29udGV4dCB9IGZyb20gJy4uL2FjdGl2aXR5LW91dGxldC9hY3Rpdml0eS1vdXRsZXQtY29udGV4dCc7XG5pbXBvcnQgeyBBY3Rpdml0eU91dGxldENvbXBvbmVudCB9IGZyb20gJy4uL2FjdGl2aXR5LW91dGxldC9hY3Rpdml0eS1vdXRsZXQuY29tcG9uZW50JztcbmltcG9ydCB7IEFsZXJ0RGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vYWxlcnQtZGlhbG9nL2FsZXJ0LWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29uZmlybVRoZW5EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9jb25maXJtLXRoZW4tZGlhbG9nL2NvbmZpcm0tdGhlbi1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbmZpcm1hdGlvbi1kaWFsb2cvY29uZmlybWF0aW9uLWRpYWxvZy5jb21wb25lbnQnO1xuXG4vKipcbiAqIE5vdGU6IHRoaXMgY2xhc3MgaXMgbXV0YWJsZSBhbmQgaXMgc3RvcmVkIGluIGEgbGlzdCBtb2RlbC4gIFRoaXMgaXMgbm9ybWFsbHkgYSBiaWcgbm8gbm8gYnV0XG4gKiAgd2UncmUgbWFudWFsbHkgZGVyaXZpbmcgb3RoZXIgbW9kZWxzIGZyb20gdGhlIGxpc3QgYWZ0ZXIgdmlldyBzdGF0ZSBjaGFuZ2VzLiAgSS5lLiB3ZSBub3RcbiAqICB1c2luZyBwZWN0aW4gY2hhaW5zIG9uIGFueSBvZiB0aGUgbXV0YWJsZSBmaWVsZHMuXG4gKi9cbmNsYXNzIFRhYkNvbnRleHQ8RCwgUiwgRT4gaW1wbGVtZW50cyBBY3Rpdml0eU91dGxldENvbnRleHQ8RCwgUiwgRT4ge1xuXG4gIHByaXZhdGUgX2NvbXBsZXRlID0gZmFsc2U7XG4gIHByaXZhdGUgX2NvbXBvbmVudDogQWN0aXZpdHk8RCwgUiwgRT47XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgYWN0aXZpdHlEYXRhOiBELFxuICAgICAgICAgICAgICByZWFkb25seSBhY3Rpdml0eUNsYXNzOiBDb25zdHJ1Y3RhYmxlPEFjdGl2aXR5PEQsIFIsIEU+PixcbiAgICAgICAgICAgICAgcmVhZG9ubHkgaW50ZXJhY3Rpb25Db250ZXh0OiBJbnRlcmFjdGlvbkNvbnRleHQsXG4gICAgICAgICAgICAgIHJlYWRvbmx5IGFjdGl2aXR5Q2FsbGJhY2tzOiBBY3Rpdml0eS5DYWxsYmFja3M8UiwgRT4pIHtcbiAgfVxuXG4gIGlzQ29tcG9uZW50UmVhbGlzZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5fY29tcG9uZW50O1xuICB9XG5cbiAgaXNDb21wbGV0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fY29tcGxldGU7XG4gIH1cblxuICBjb21wb25lbnRSZWFkeShjb21wb25lbnQ6IEFjdGl2aXR5PEQsIFIsIEU+KSB7XG4gICAgYXNzZXJ0LmlzTmlsKHRoaXMuX2NvbXBvbmVudCk7XG4gICAgdGhpcy5fY29tcG9uZW50ID0gY29tcG9uZW50O1xuICB9XG5cbiAgZ2V0IGNvbXBvbmVudCgpOiBBY3Rpdml0eTxELCBSLCBFPiB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbXBvbmVudDtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIG9uRG9uZShyZXN1bHQ6IFIpOiB2b2lkIHtcbiAgICB0aGlzLl9jb21wbGV0ZSA9IHRydWU7XG4gICAgdGhpcy5hY3Rpdml0eUNhbGxiYWNrcy5vbkRvbmUocmVzdWx0KTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIG9uQ2FuY2VsKGVycm9yOiBFKTogdm9pZCB7XG4gICAgdGhpcy5fY29tcGxldGUgPSB0cnVlO1xuICAgIHRoaXMuYWN0aXZpdHlDYWxsYmFja3Mub25DYW5jZWwoZXJyb3IpO1xuICB9XG5cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYW5ndWxhci11aS1wb3dlcnVwcy1hY3Rpdml0eS1jb250YWluZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vYWN0aXZpdHktY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYWN0aXZpdHktY29udGFpbmVyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQWN0aXZpdHlDb250YWluZXJDb21wb25lbnQ8RCwgUiwgRT4gZXh0ZW5kcyBJbnRlcmFjdGlvbkNvbnRleHQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZpdHlGaW5pc2hlZEV2ZW50cyA9IG5ldyBNdXRhYmxlU3RyZWFtPGFueT4oKTtcblxuICBASW5wdXQoKVxuICBwYXJlbnRJbnRlcmFjdGlvbkNvbnRleHQ6IEludGVyYWN0aW9uQ29udGV4dDtcblxuICBASW5wdXQoKVxuICBzZXQgaW5pdGlhbEFjdGl2aXR5T3V0bGV0Q29udGV4dChpbml0aWFsQ29udGV4dDogQWN0aXZpdHlPdXRsZXRDb250ZXh0PEQsIFIsIEU+KSB7XG4gICAgYXNzZXJ0LmlzTmlsKHRoaXMuaW5pdGlhbEFjdGl2aXR5T3V0bGV0Q29udGV4dCk7XG4gICAgdGhpcy5hY3Rpdml0eVRhYnMucHVzaChuZXcgVGFiQ29udGV4dChpbml0aWFsQ29udGV4dC5hY3Rpdml0eURhdGEsIGluaXRpYWxDb250ZXh0LmFjdGl2aXR5Q2xhc3MsIHRoaXMsIHtcbiAgICAgIG9uRG9uZTogKHJlc3VsdDogUikgPT4ge1xuICAgICAgICB0aGlzLmZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGluaXRpYWxDb250ZXh0Lm9uRG9uZShyZXN1bHQpO1xuICAgICAgfSxcbiAgICAgIG9uQ2FuY2VsOiAoZXJyb3I6IEUpID0+IHtcbiAgICAgICAgdGhpcy5maW5pc2hlZCA9IHRydWU7XG4gICAgICAgIHJldHVybiBpbml0aWFsQ29udGV4dC5vbkNhbmNlbChlcnJvcik7XG4gICAgICB9XG4gICAgfSkpO1xuICB9XG5cbiAgZ2V0IGluaXRpYWxBY3Rpdml0eU91dGxldENvbnRleHQoKTogQWN0aXZpdHlPdXRsZXRDb250ZXh0PEQsIFIsIEU+IHtcbiAgICByZXR1cm4gdGhpcy5hY3Rpdml0eVRhYnMubGVuZ3RoID4gMCA/IHRoaXMuYWN0aXZpdHlUYWJzLnZhbHVlWzBdIDogbnVsbDtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ3RhYnMnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICB0YWJzOiBNYXRUYWJHcm91cDtcblxuICBAVmlld0NoaWxkcmVuKEFjdGl2aXR5T3V0bGV0Q29tcG9uZW50KVxuICBvdXRsZXRzOiBRdWVyeUxpc3Q8QWN0aXZpdHlPdXRsZXRDb21wb25lbnQ8YW55LCBhbnksIGFueT4+O1xuXG4gIHJlYWRvbmx5IGFjdGl2aXR5VGFicyA9IG5ldyBNdXRhYmxlTGlzdE1vZGVsPFRhYkNvbnRleHQ8YW55LCBhbnksIGFueT4+KCk7XG4gIHByaXZhdGUgZmluaXNoZWQgPSBmYWxzZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9hY3Rpdml0eUxpc3QgPSBuZXcgTXV0YWJsZUxpc3RNb2RlbDxBY3Rpdml0eTxhbnksIGFueT4+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICBjb25zdCB7IGNoYWluLCB2YWx1ZU9mLCBiZWZvcmUsIHdoZW4sIGFmdGVyLCBvYnNlcnZlLCBzd2l0Y2hPbiB9ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMpO1xuICAgIGNoYWluKHRoaXMuYWN0aXZpdHlGaW5pc2hlZEV2ZW50cykudGhyb3R0bGUoNTApLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uQWN0aXZpdHlGaW5pc2hlZCgpKTtcbiAgfVxuXG4gIGlzQWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnBhcmVudEludGVyYWN0aW9uQ29udGV4dC5pc0FjdGl2ZSgpO1xuICB9XG5cbiAgZ2V0IGFjdGl2aXR5TGlzdCgpOiBMaXN0TW9kZWw8QWN0aXZpdHk8YW55LCBhbnksIGFueT4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZpdHlMaXN0LnJlYWRvbmx5O1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgY29uc3QgeyBjaGFpbiwgb2JzZXJ2ZSB9ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMpO1xuICAgIG9ic2VydmUudmFsdWVzRnJvbSh0aGlzLm91dGxldHMuY2hhbmdlcykuc3Vic2NyaWJlKCgpID0+IHNldFRpbWVvdXQoKCkgPT4gdGhpcy51cGRhdGVBY3Rpdml0eUxpc3QoKSkpO1xuICAgIG9ic2VydmUudmFsdWVzRnJvbSh0aGlzLnRhYnMuYW5pbWF0aW9uRG9uZSkuc3Vic2NyaWJlKCgpID0+IHRoaXMub25BbmltYXRpb25GaW5pc2hlZCgpKTtcbiAgICB0aGlzLnVwZGF0ZUFjdGl2aXR5TGlzdCgpO1xuICB9XG5cbiAgc3RhcnRBY3Rpdml0eTxEMSwgUjEsIEUxPihhY3Rpdml0eVR5cGU6IENvbnN0cnVjdGFibGU8QWN0aXZpdHk8RDEsIFIxLCBFMT4+LCBkYXRhPzogRDEpOiBQcm9taXNlPFIxPiB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPFIxPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBjb250ZXh0ID0gbmV3IFRhYkNvbnRleHQoZGF0YSwgYWN0aXZpdHlUeXBlLCBzZWxmLCB7XG4gICAgICAgIG9uRG9uZTogZnVuY3Rpb24ocmVzdWx0OiBSMSkge1xuICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICBzZWxmLmFjdGl2aXR5RmluaXNoZWRFdmVudHMucHVibGlzaCh7fSk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uQ2FuY2VsOiBmdW5jdGlvbihlcnJvcjogRTEpIHtcbiAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgIHNlbGYuYWN0aXZpdHlGaW5pc2hlZEV2ZW50cy5wdWJsaXNoKHt9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBzZWxmLmFjdGl2aXR5VGFicy5wdXNoKGNvbnRleHQpO1xuICAgICAgc2VsZi50YWJzLnNlbGVjdGVkSW5kZXggPSB0aGlzLmFjdGl2aXR5VGFicy5sZW5ndGg7XG4gICAgfSk7XG4gIH1cblxuXG4gIGFsZXJ0KGFsZXJ0OiBBbGVydCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnN0YXJ0QWN0aXZpdHkoQWxlcnREaWFsb2dDb21wb25lbnQsIGFsZXJ0KTtcbiAgfVxuXG4gIGNvbmZpcm0oY29uZmlybTogQ29uZmlybSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnN0YXJ0QWN0aXZpdHkoQ29uZmlybWF0aW9uRGlhbG9nQ29tcG9uZW50LCBjb25maXJtKTtcbiAgfVxuXG4gIGNvbmZpcm1UaGVuPEQxLCBSMSwgRTE+KGNvbmZpcm06IENvbmZpcm0sIGFjdGl2aXR5VHlwZTogQ29uc3RydWN0YWJsZTxBY3Rpdml0eTxEMSwgUjEsIEUxPj4sIGRhdGE/OiBEMSk6IFByb21pc2U8UjE+IHtcbiAgICByZXR1cm4gdGhpcy5zdGFydEFjdGl2aXR5PENvbmZpcm1UaGVuRGlhbG9nQ29tcG9uZW50LkRhdGE8RDEsIFIxLCBFMT4sIFIxLCBFMT4oQ29uZmlybVRoZW5EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIGNvbmZpcm0sXG4gICAgICBhY3Rpdml0eVR5cGU6IGFjdGl2aXR5VHlwZSxcbiAgICAgIGRhdGE6IGRhdGFcbiAgICB9KTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIHByaXZhdGUgb25BY3Rpdml0eUZpbmlzaGVkKCkge1xuICAgIC8vIGRvbid0IGRvIGFueXRoaW5nIGlmIGpvYiBhbHJlYWR5IHF1ZXVlZCB1cC5cbiAgICBpZiAoIXRoaXMuZmluaXNoZWQpIHtcbiAgICAgIGlmICh0aGlzLnN5bmNocm9uaXNlU2VsZWN0ZWRUYWJJbmRleCgpKSB7XG4gICAgICAgIHRoaXMuY2xlYW51cFN0YWxlQWN0aXZpdGllcygpO1xuICAgICAgfVxuICAgICAgdGhpcy51cGRhdGVBY3Rpdml0eUxpc3QoKTtcbiAgICB9XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBwcml2YXRlIGNsZWFudXBTdGFsZUFjdGl2aXRpZXMoKSB7XG4gICAgLy8gY2xlYW4gdXAgb2xkIHRhYnNcbiAgICBpZiAodGhpcy50YWJzLnNlbGVjdGVkSW5kZXggPCB0aGlzLmFjdGl2aXR5VGFicy5sZW5ndGggLSAxKSB7XG4gICAgICB0aGlzLmFjdGl2aXR5VGFicy5ydW5JblRyYW5zYWN0aW9uKGRyYWZ0ID0+IHtcbiAgICAgICAgZHJhZnQudmFsdWUgPSBkcmFmdC52YWx1ZS5zbGljZSgwLCAxICsgdGhpcy50YWJzLnNlbGVjdGVkSW5kZXgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFN5bmNocm9uaXNlcyB0aGUgc2VsZWN0ZWQgdGFiIGluZGV4LiAgUmV0dXJucyB0cnVlIGlmIHRoZXJlIHdhcyBubyBjaGFuZ2UgdG8gdGhlIHNlbGVjdGVkIGluZGV4LlxuICAgKi9cbiAgLy8gQFRyYWNlKClcbiAgcHJpdmF0ZSBzeW5jaHJvbmlzZVNlbGVjdGVkVGFiSW5kZXgoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcHJldmlvdXNJbmRleCA9IHRoaXMudGFicy5zZWxlY3RlZEluZGV4O1xuICAgIGNvbnN0IG5ld0luZGV4ID0gdGhpcy5hY3Rpdml0eVRhYnMucXVlcnkoKS5maW5kSW5kZXgodCA9PiB0LmlzQ29tcGxldGUoKSkgLSAxO1xuICAgIHRoaXMudGFicy5zZWxlY3RlZEluZGV4ID0gbmV3SW5kZXg7XG4gICAgcmV0dXJuIHByZXZpb3VzSW5kZXggPT09IG5ld0luZGV4O1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgcHJpdmF0ZSBvbkFuaW1hdGlvbkZpbmlzaGVkKCkge1xuICAgIHRoaXMuZ2V0U2VsZWN0ZWRPdXRsZXQoKS5jb21wb25lbnQub25BY3Rpdml0eVJlYWR5KCk7XG4gICAgdGhpcy5jbGVhbnVwU3RhbGVBY3Rpdml0aWVzKCk7XG4gICAgdGhpcy51cGRhdGVBY3Rpdml0eUxpc3QoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQWN0aXZpdHlMaXN0KCkge1xuICAgIHRoaXMuX2FjdGl2aXR5TGlzdC52YWx1ZSA9IHRoaXMuYWN0aXZpdHlUYWJzLnZhbHVlLmZpbHRlcih0ID0+ICF0LmlzQ29tcGxldGUoKSAmJiB0LmlzQ29tcG9uZW50UmVhbGlzZWQoKSkubWFwKHQgPT4gdC5jb21wb25lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTZWxlY3RlZE91dGxldCgpIHtcbiAgICByZXR1cm4gdGhpcy5vdXRsZXRzLnRvQXJyYXkoKVt0aGlzLnRhYnMuc2VsZWN0ZWRJbmRleF07XG4gIH1cbn1cbiJdfQ==
@@ -8,15 +8,14 @@
8
8
  */
9
9
  export function ActivityOutletContext() { }
10
10
  if (false) {
11
- /** @type {?} */
12
- ActivityOutletContext.prototype.interactionContext;
13
11
  /** @type {?} */
14
12
  ActivityOutletContext.prototype.activityClass;
15
13
  /** @type {?} */
16
14
  ActivityOutletContext.prototype.activityData;
17
- /** @type {?} */
18
- ActivityOutletContext.prototype.onDone;
19
- /** @type {?} */
20
- ActivityOutletContext.prototype.onCancel;
15
+ /**
16
+ * @param {?} component
17
+ * @return {?}
18
+ */
19
+ ActivityOutletContext.prototype.componentReady = function (component) { };
21
20
  }
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktb3V0bGV0LWNvbnRleHQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvaW50ZXJhY3Rpb24vY29tcG9uZW50cy9hY3Rpdml0eS1vdXRsZXQvYWN0aXZpdHktb3V0bGV0LWNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFLQSwyQ0FNQzs7O0lBTEMsbURBQXVDOztJQUN2Qyw4Q0FBZ0Q7O0lBQ2hELDZDQUFnQjs7SUFDaEIsdUNBQTRCOztJQUM1Qix5Q0FBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3RhYmxlIH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IHsgQWN0aXZpdHkgfSBmcm9tICcuLi8uLi9hY3Rpdml0eSc7XG5pbXBvcnQgeyBJbnRlcmFjdGlvbkNvbnRleHQgfSBmcm9tICcuLi8uLi9pbnRlcmFjdGlvbi1jb250ZXh0JztcblxuXG5leHBvcnQgaW50ZXJmYWNlIEFjdGl2aXR5T3V0bGV0Q29udGV4dDxELCBSLCBFPiB7XG4gIGludGVyYWN0aW9uQ29udGV4dDogSW50ZXJhY3Rpb25Db250ZXh0LFxuICBhY3Rpdml0eUNsYXNzOiBDb25zdHJ1Y3RhYmxlPEFjdGl2aXR5PEQsIFIsIEU+PixcbiAgYWN0aXZpdHlEYXRhOiBELFxuICBvbkRvbmU6IChyZXN1bHQ6IFIpID0+IHZvaWQsXG4gIG9uQ2FuY2VsOiAoZXJyb3I6IEUpID0+IHZvaWQsXG59XG4iXX0=
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktb3V0bGV0LWNvbnRleHQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvaW50ZXJhY3Rpb24vY29tcG9uZW50cy9hY3Rpdml0eS1vdXRsZXQvYWN0aXZpdHktb3V0bGV0LWNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFJQSwyQ0FJQzs7O0lBSEMsOENBQWdEOztJQUNoRCw2Q0FBZ0I7Ozs7O0lBQ2hCLDBFQUEyQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdGFibGUgfSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgeyBBY3Rpdml0eSB9IGZyb20gJy4uLy4uL2FjdGl2aXR5JztcblxuXG5leHBvcnQgaW50ZXJmYWNlIEFjdGl2aXR5T3V0bGV0Q29udGV4dDxELCBSLCBFPiBleHRlbmRzIEFjdGl2aXR5LkNhbGxiYWNrczxSLCBFPiB7XG4gIGFjdGl2aXR5Q2xhc3M6IENvbnN0cnVjdGFibGU8QWN0aXZpdHk8RCwgUiwgRT4+LFxuICBhY3Rpdml0eURhdGE6IEQsXG4gIGNvbXBvbmVudFJlYWR5Pyhjb21wb25lbnQ6QWN0aXZpdHk8RCxSLEU+KTtcbn1cbiJdfQ==