@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.
- package/bundles/coolon-angular-ui-powerups.umd.js +722 -561
- package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
- package/bundles/coolon-angular-ui-powerups.umd.min.js +1 -1
- package/bundles/coolon-angular-ui-powerups.umd.min.js.map +1 -1
- package/coolon-angular-ui-powerups.d.ts +10 -10
- package/coolon-angular-ui-powerups.metadata.json +1 -1
- package/esm2015/coolon-angular-ui-powerups.js +10 -10
- package/esm2015/index.js +2 -2
- package/esm2015/lib/interaction/abstract-activity.js +5 -68
- package/esm2015/lib/interaction/activity.js +71 -11
- package/esm2015/lib/interaction/components/activity-container/activity-container.component.js +213 -120
- package/esm2015/lib/interaction/components/activity-outlet/activity-outlet-context.js +6 -7
- package/esm2015/lib/interaction/components/activity-outlet/activity-outlet.component.js +19 -43
- package/esm2015/lib/interaction/index.js +2 -2
- package/esm2015/lib/interaction/interaction-context.js +11 -5
- package/esm2015/lib/interaction/services/dialog-interaction.service.js +94 -65
- package/esm2015/lib/place/guards/leave-place.guard.js +95 -131
- package/esm2015/lib/place/place-router.js +87 -6
- package/esm2015/public_api.js +2 -2
- package/esm5/coolon-angular-ui-powerups.js +10 -10
- package/esm5/index.js +2 -2
- package/esm5/lib/interaction/abstract-activity.js +10 -96
- package/esm5/lib/interaction/activity.js +110 -11
- package/esm5/lib/interaction/components/activity-container/activity-container.component.js +285 -143
- package/esm5/lib/interaction/components/activity-outlet/activity-outlet-context.js +6 -7
- package/esm5/lib/interaction/components/activity-outlet/activity-outlet.component.js +19 -67
- package/esm5/lib/interaction/index.js +2 -2
- package/esm5/lib/interaction/interaction-context.js +18 -7
- package/esm5/lib/interaction/services/dialog-interaction.service.js +112 -64
- package/esm5/lib/place/guards/leave-place.guard.js +51 -137
- package/esm5/lib/place/place-router.js +96 -6
- package/esm5/public_api.js +2 -2
- package/fesm2015/coolon-angular-ui-powerups.js +582 -439
- package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
- package/fesm5/coolon-angular-ui-powerups.js +695 -535
- package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
- package/lib/interaction/abstract-activity.d.ts +4 -13
- package/lib/interaction/activity.d.ts +13 -6
- package/lib/interaction/components/activity-container/activity-container.component.d.ts +37 -25
- package/lib/interaction/components/activity-outlet/activity-outlet-context.d.ts +2 -5
- package/lib/interaction/components/activity-outlet/activity-outlet.component.d.ts +1 -10
- package/lib/interaction/interaction-context.d.ts +6 -6
- package/lib/interaction/services/dialog-interaction.service.d.ts +4 -6
- package/lib/place/guards/leave-place.guard.d.ts +6 -7
- package/lib/place/place-router.d.ts +14 -1
- package/package.json +1 -1
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
import { Component, ComponentFactoryResolver, Injector, Input, ViewContainerRef } from '@angular/core';
|
|
6
6
|
import { ACTIVITY_DATA } from '../../activity';
|
|
7
7
|
import { InteractionContext } from '../../interaction-context';
|
|
8
|
+
import { assert } from '@coolon/pectin';
|
|
8
9
|
/**
|
|
9
10
|
* ActivityOutletComponent creates and displays an activity and delegates the interaction context functionality to an
|
|
10
11
|
* external service.
|
|
@@ -29,9 +30,17 @@ export class ActivityOutletComponent {
|
|
|
29
30
|
* @return {?}
|
|
30
31
|
*/
|
|
31
32
|
set activityContext(activityContext) {
|
|
33
|
+
assert.isNil(this._activityContext);
|
|
34
|
+
this._activityContext = activityContext;
|
|
32
35
|
this.loadActivity(activityContext);
|
|
33
36
|
}
|
|
34
37
|
;
|
|
38
|
+
/**
|
|
39
|
+
* @return {?}
|
|
40
|
+
*/
|
|
41
|
+
get activityContext() {
|
|
42
|
+
return this._activityContext;
|
|
43
|
+
}
|
|
35
44
|
/**
|
|
36
45
|
* @return {?}
|
|
37
46
|
*/
|
|
@@ -47,7 +56,7 @@ export class ActivityOutletComponent {
|
|
|
47
56
|
providers: [
|
|
48
57
|
{
|
|
49
58
|
provide: InteractionContext,
|
|
50
|
-
useValue: this
|
|
59
|
+
useValue: this.interactionContext
|
|
51
60
|
},
|
|
52
61
|
{ provide: ACTIVITY_DATA, useValue: activityContext.activityData }
|
|
53
62
|
],
|
|
@@ -58,6 +67,9 @@ export class ActivityOutletComponent {
|
|
|
58
67
|
this.viewContainerRef.clear();
|
|
59
68
|
this.activityComponentRef = this.viewContainerRef.createComponent(componentFactory, 0, injector);
|
|
60
69
|
this.activityComponentRef.instance.initialise(activityContext);
|
|
70
|
+
if (this.activityContext.componentReady) {
|
|
71
|
+
this.activityContext.componentReady(this.component);
|
|
72
|
+
}
|
|
61
73
|
}
|
|
62
74
|
/**
|
|
63
75
|
* @return {?}
|
|
@@ -65,47 +77,6 @@ export class ActivityOutletComponent {
|
|
|
65
77
|
get component() {
|
|
66
78
|
return this.activityComponentRef.instance;
|
|
67
79
|
}
|
|
68
|
-
/**
|
|
69
|
-
* @param {?} alert
|
|
70
|
-
* @return {?}
|
|
71
|
-
*/
|
|
72
|
-
alert(alert) {
|
|
73
|
-
return this.interactionContext.alert(alert);
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* @param {?} confirm
|
|
77
|
-
* @return {?}
|
|
78
|
-
*/
|
|
79
|
-
confirm(confirm) {
|
|
80
|
-
return this.interactionContext.confirm(confirm);
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* @template D1, R1, E1
|
|
84
|
-
* @param {?} confirm
|
|
85
|
-
* @param {?} activityType
|
|
86
|
-
* @param {?=} data
|
|
87
|
-
* @return {?}
|
|
88
|
-
*/
|
|
89
|
-
confirmThen(confirm, activityType, data) {
|
|
90
|
-
return this.interactionContext.confirmThen(confirm, activityType, data);
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* @template D1, R1, E1
|
|
94
|
-
* @param {?} activityType
|
|
95
|
-
* @param {?=} data
|
|
96
|
-
* @return {?}
|
|
97
|
-
*/
|
|
98
|
-
startActivity(activityType, data) {
|
|
99
|
-
return this.interactionContext.startActivity(activityType, data);
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* @return {?}
|
|
103
|
-
*/
|
|
104
|
-
notifyReady() {
|
|
105
|
-
if (this.activityComponentRef.instance['onActivityReady']) {
|
|
106
|
-
this.activityComponentRef.instance['onActivityReady']();
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
80
|
}
|
|
110
81
|
ActivityOutletComponent.decorators = [
|
|
111
82
|
{ type: Component, args: [{
|
|
@@ -127,6 +98,11 @@ ActivityOutletComponent.propDecorators = {
|
|
|
127
98
|
if (false) {
|
|
128
99
|
/** @type {?} */
|
|
129
100
|
ActivityOutletComponent.prototype.interactionContext;
|
|
101
|
+
/**
|
|
102
|
+
* @type {?}
|
|
103
|
+
* @private
|
|
104
|
+
*/
|
|
105
|
+
ActivityOutletComponent.prototype._activityContext;
|
|
130
106
|
/**
|
|
131
107
|
* @type {?}
|
|
132
108
|
* @private
|
|
@@ -149,4 +125,4 @@ if (false) {
|
|
|
149
125
|
ActivityOutletComponent.prototype.injector;
|
|
150
126
|
/* Skipping unhandled member: ;*/
|
|
151
127
|
}
|
|
152
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktb3V0bGV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbImxpYi9pbnRlcmFjdGlvbi9jb21wb25lbnRzL2FjdGl2aXR5LW91dGxldC9hY3Rpdml0eS1vdXRsZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULHdCQUF3QixFQUV4QixRQUFRLEVBQ1IsS0FBSyxFQUVMLGdCQUFnQixFQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQVksYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFL0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7QUFjeEMsTUFBTSxPQUFPLHVCQUF1Qjs7Ozs7O0lBbUJsQyxZQUNVLHdCQUFrRCxFQUNsRCxnQkFBa0MsRUFDbEMsUUFBa0I7UUFGbEIsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUNsRCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGFBQVEsR0FBUixRQUFRLENBQVU7SUFFNUIsQ0FBQzs7Ozs7SUFsQkQsSUFDSSxlQUFlLENBQUMsZUFBK0M7UUFDakUsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUFBLENBQUM7Ozs7SUFDRixJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQzs7OztJQVlELFFBQVE7SUFDUixDQUFDOzs7OztJQUVELFlBQVksQ0FBQyxlQUErQzs7Y0FDcEQsUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFDL0IsU0FBUyxFQUFFO2dCQUNUO29CQUNFLE9BQU8sRUFBRSxrQkFBa0I7b0JBQzNCLFFBQVEsRUFBRSxJQUFJLENBQUMsa0JBQWtCO2lCQUNsQztnQkFDRCxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLGVBQWUsQ0FBQyxZQUFZLEVBQUU7YUFDbkU7WUFDRCxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVE7U0FDdEIsQ0FBQzs7Y0FDSSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsdUJBQXVCLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQztRQUM3RyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2pHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQy9ELElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLEVBQUU7WUFDdkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3JEO0lBQ0gsQ0FBQzs7OztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQztJQUM1QyxDQUFDOzs7WUF4REYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxxQ0FBcUM7Z0JBQy9DLFFBQVEsRUFBRSxFQUFFOzthQUViOzs7O1lBdkJDLHdCQUF3QjtZQUt4QixnQkFBZ0I7WUFIaEIsUUFBUTs7O2lDQXdCUCxLQUFLOzhCQUlMLEtBQUs7Ozs7SUFKTixxREFDdUM7Ozs7O0lBQ3ZDLG1EQUF5RDs7Ozs7SUFhekQsdURBQThEOzs7OztJQUc1RCwyREFBMEQ7Ozs7O0lBQzFELG1EQUEwQzs7Ozs7SUFDMUMsMkNBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gIENvbXBvbmVudFJlZixcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3Rpdml0eSwgQUNUSVZJVFlfREFUQSB9IGZyb20gJy4uLy4uL2FjdGl2aXR5JztcbmltcG9ydCB7IEludGVyYWN0aW9uQ29udGV4dCB9IGZyb20gJy4uLy4uL2ludGVyYWN0aW9uLWNvbnRleHQnO1xuaW1wb3J0IHsgQWN0aXZpdHlPdXRsZXRDb250ZXh0IH0gZnJvbSAnLi9hY3Rpdml0eS1vdXRsZXQtY29udGV4dCc7XG5pbXBvcnQgeyBhc3NlcnQgfSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5cbi8qKlxuICogQWN0aXZpdHlPdXRsZXRDb21wb25lbnQgY3JlYXRlcyBhbmQgZGlzcGxheXMgYW4gYWN0aXZpdHkgYW5kIGRlbGVnYXRlcyB0aGUgaW50ZXJhY3Rpb24gY29udGV4dCBmdW5jdGlvbmFsaXR5IHRvIGFuXG4gKiBleHRlcm5hbCBzZXJ2aWNlLlxuICpcbiAqIEl0IG1pZ2h0IGJlIG5pY2UgdG8gaGF2ZSB3cmFwcGVyIGNvbXBvbmVudCB0aGF0IGFsbG93cyBtb3JlIGRlY2xhcmF0aXZlIHVzZSwgaS5lLlxuICogPGFjdGl2aXR5LXZpZXcgW2FjdGl2aXR5Q2xhc3NdPVwiLi4uXCIsIFthY3Rpdml0eURhdGFdPVwiLi4uXCIgKGRvbmUpPVwiLi5cIiAoY2FuY2VsKT1cIi4uLlwiPjwvYWN0aXZpdHktdmlldz5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYW5ndWxhci11aS1wb3dlcnVwcy1hY3Rpdml0eS1vdXRsZXQnLFxuICB0ZW1wbGF0ZTogJycsXG4gIHN0eWxlVXJsczogWycuL2FjdGl2aXR5LW91dGxldC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEFjdGl2aXR5T3V0bGV0Q29tcG9uZW50PEQsIFIsIEU+IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKVxuICBpbnRlcmFjdGlvbkNvbnRleHQ6IEludGVyYWN0aW9uQ29udGV4dDtcbiAgcHJpdmF0ZSBfYWN0aXZpdHlDb250ZXh0OiBBY3Rpdml0eU91dGxldENvbnRleHQ8RCwgUiwgRT47XG5cbiAgQElucHV0KClcbiAgc2V0IGFjdGl2aXR5Q29udGV4dChhY3Rpdml0eUNvbnRleHQ6IEFjdGl2aXR5T3V0bGV0Q29udGV4dDxELCBSLCBFPikge1xuICAgIGFzc2VydC5pc05pbCh0aGlzLl9hY3Rpdml0eUNvbnRleHQpO1xuICAgIHRoaXMuX2FjdGl2aXR5Q29udGV4dCA9IGFjdGl2aXR5Q29udGV4dDtcbiAgICB0aGlzLmxvYWRBY3Rpdml0eShhY3Rpdml0eUNvbnRleHQpO1xuICB9O1xuICBnZXQgYWN0aXZpdHlDb250ZXh0KCk6QWN0aXZpdHlPdXRsZXRDb250ZXh0PEQsUixFPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2aXR5Q29udGV4dDtcbiAgfVxuXG5cbiAgcHJpdmF0ZSBhY3Rpdml0eUNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPEFjdGl2aXR5PEQsIFIsIEU+PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvclxuICApIHtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICB9XG5cbiAgbG9hZEFjdGl2aXR5KGFjdGl2aXR5Q29udGV4dDogQWN0aXZpdHlPdXRsZXRDb250ZXh0PEQsIFIsIEU+KSB7XG4gICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBJbnRlcmFjdGlvbkNvbnRleHQsXG4gICAgICAgICAgdXNlVmFsdWU6IHRoaXMuaW50ZXJhY3Rpb25Db250ZXh0XG4gICAgICAgIH0sXG4gICAgICAgIHsgcHJvdmlkZTogQUNUSVZJVFlfREFUQSwgdXNlVmFsdWU6IGFjdGl2aXR5Q29udGV4dC5hY3Rpdml0eURhdGEgfVxuICAgICAgXSxcbiAgICAgIHBhcmVudDogdGhpcy5pbmplY3RvclxuICAgIH0pO1xuICAgIGNvbnN0IGNvbXBvbmVudEZhY3RvcnkgPSB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShhY3Rpdml0eUNvbnRleHQuYWN0aXZpdHlDbGFzcyk7XG4gICAgdGhpcy52aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XG4gICAgdGhpcy5hY3Rpdml0eUNvbXBvbmVudFJlZiA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50RmFjdG9yeSwgMCwgaW5qZWN0b3IpO1xuICAgIHRoaXMuYWN0aXZpdHlDb21wb25lbnRSZWYuaW5zdGFuY2UuaW5pdGlhbGlzZShhY3Rpdml0eUNvbnRleHQpO1xuICAgIGlmICh0aGlzLmFjdGl2aXR5Q29udGV4dC5jb21wb25lbnRSZWFkeSkge1xuICAgICAgdGhpcy5hY3Rpdml0eUNvbnRleHQuY29tcG9uZW50UmVhZHkodGhpcy5jb21wb25lbnQpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBjb21wb25lbnQoKTogQWN0aXZpdHk8RCwgUiwgRT4ge1xuICAgIHJldHVybiB0aGlzLmFjdGl2aXR5Q29tcG9uZW50UmVmLmluc3RhbmNlO1xuICB9XG5cbn1cbiJdfQ==
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* @file Automatically generated by barrelsby.
|
|
7
7
|
*/
|
|
8
8
|
export { AbstractActivity } from "./abstract-activity";
|
|
9
|
-
export { ACTIVITY_DATA } from "./activity";
|
|
9
|
+
export { ACTIVITY_DATA, Activity } from "./activity";
|
|
10
10
|
export {} from "./alert";
|
|
11
11
|
export {} from "./confirm";
|
|
12
12
|
export { InteractionContext } from "./interaction-context";
|
|
@@ -20,4 +20,4 @@ export { ConfirmThenDialogComponent } from "./components/confirm-then-dialog/con
|
|
|
20
20
|
export { ConfirmationDialogComponent } from "./components/confirmation-dialog/confirmation-dialog.component";
|
|
21
21
|
export { CloseInteractionGuard } from "./guards/close-interaction.guard";
|
|
22
22
|
export { DIALOG_INTERACTION_SERVICE_DEFAULTS, DialogInteractionService } from "./services/dialog-interaction.service";
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvaW50ZXJhY3Rpb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUlBLGlDQUFjLHFCQUFxQixDQUFDO0FBQ3BDLHdDQUFjLFlBQVksQ0FBQztBQUMzQixlQUFjLFNBQVMsQ0FBQztBQUN4QixlQUFjLFdBQVcsQ0FBQztBQUMxQixtQ0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxrQ0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxlQUFjLFVBQVUsQ0FBQztBQUN6QiwyQ0FBYyw4REFBOEQsQ0FBQztBQUM3RSxlQUFjLHNEQUFzRCxDQUFDO0FBQ3JFLHdDQUFjLHdEQUF3RCxDQUFDO0FBQ3ZFLHFDQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLDJDQUFjLGdFQUFnRSxDQUFDO0FBQy9FLDRDQUFjLGdFQUFnRSxDQUFDO0FBQy9FLHNDQUFjLGtDQUFrQyxDQUFDO0FBQ2pELDhFQUFjLHVDQUF1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZSBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBiYXJyZWxzYnkuXG4gKi9cblxuZXhwb3J0ICogZnJvbSBcIi4vYWJzdHJhY3QtYWN0aXZpdHlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2FjdGl2aXR5XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9hbGVydFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29uZmlybVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vaW50ZXJhY3Rpb24tY29udGV4dFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vaW50ZXJhY3Rpb24ubW9kdWxlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yZXN1bHRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvYWN0aXZpdHktY29udGFpbmVyL2FjdGl2aXR5LWNvbnRhaW5lci5jb21wb25lbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvYWN0aXZpdHktb3V0bGV0L2FjdGl2aXR5LW91dGxldC1jb250ZXh0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL2FjdGl2aXR5LW91dGxldC9hY3Rpdml0eS1vdXRsZXQuY29tcG9uZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL2FsZXJ0LWRpYWxvZy9hbGVydC1kaWFsb2cuY29tcG9uZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL2NvbmZpcm0tdGhlbi1kaWFsb2cvY29uZmlybS10aGVuLWRpYWxvZy5jb21wb25lbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvY29uZmlybWF0aW9uLWRpYWxvZy9jb25maXJtYXRpb24tZGlhbG9nLmNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZ3VhcmRzL2Nsb3NlLWludGVyYWN0aW9uLmd1YXJkXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zZXJ2aWNlcy9kaWFsb2ctaW50ZXJhY3Rpb24uc2VydmljZVwiO1xuIl19
|
|
@@ -3,21 +3,27 @@
|
|
|
3
3
|
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
4
|
*/
|
|
5
5
|
import { GarbageCollector } from '@coolon/pectin';
|
|
6
|
+
import * as _ from 'lodash';
|
|
6
7
|
/**
|
|
7
8
|
* @abstract
|
|
8
9
|
*/
|
|
9
10
|
export class InteractionContext extends GarbageCollector {
|
|
11
|
+
/**
|
|
12
|
+
* @protected
|
|
13
|
+
*/
|
|
10
14
|
constructor() {
|
|
11
15
|
super();
|
|
12
16
|
}
|
|
13
|
-
}
|
|
14
|
-
if (false) {
|
|
15
17
|
/**
|
|
16
18
|
* Returns the activity that is currently active.
|
|
17
19
|
* This model is only updated in the next tick after the view has been updated.
|
|
18
|
-
* @
|
|
20
|
+
* @return {?}
|
|
19
21
|
*/
|
|
20
|
-
|
|
22
|
+
get currentActivity() {
|
|
23
|
+
return _.last(this.activityList.value);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
if (false) {
|
|
21
27
|
/**
|
|
22
28
|
* Returns the current list of activities that are in progress.
|
|
23
29
|
* This model is only updated in the next tick after the view has been updated.
|
|
@@ -61,4 +67,4 @@ if (false) {
|
|
|
61
67
|
*/
|
|
62
68
|
InteractionContext.prototype.alert = function (alert) { };
|
|
63
69
|
}
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJhY3Rpb24tY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbImxpYi9pbnRlcmFjdGlvbi9pbnRlcmFjdGlvbi1jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQWlCLGdCQUFnQixFQUFnQyxNQUFNLGdCQUFnQixDQUFDO0FBSS9GLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDOzs7O0FBRTVCLE1BQU0sT0FBZ0Isa0JBQW1CLFNBQVEsZ0JBQWdCOzs7O0lBUS9EO1FBQ0UsS0FBSyxFQUFFLENBQUM7SUFDVixDQUFDOzs7Ozs7SUFNRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekMsQ0FBQztDQXFCRjs7Ozs7OztJQWpDQywwQ0FBOEQ7Ozs7OztJQWlCOUQsd0RBQTZCOzs7Ozs7OztJQUU3QiwrRUFBc0c7Ozs7OztJQUV0Ryw4REFBa0Q7Ozs7Ozs7Ozs7SUFRbEQsc0ZBQXNIOzs7Ozs7SUFFdEgsMERBQTRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0YWJsZSwgR2FyYmFnZUNvbGxlY3RvciwgTGlzdE1vZGVsLCBUcmFjZSwgVmFsdWVNb2RlbCB9IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCB7IEFjdGl2aXR5IH0gZnJvbSAnLi9hY3Rpdml0eSc7XG5pbXBvcnQgeyBBbGVydCB9IGZyb20gJy4vYWxlcnQnO1xuaW1wb3J0IHsgQ29uZmlybSB9IGZyb20gJy4vY29uZmlybSc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBJbnRlcmFjdGlvbkNvbnRleHQgZXh0ZW5kcyBHYXJiYWdlQ29sbGVjdG9yIHtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY3VycmVudCBsaXN0IG9mIGFjdGl2aXRpZXMgdGhhdCBhcmUgaW4gcHJvZ3Jlc3MuXG4gICAqIFRoaXMgbW9kZWwgaXMgb25seSB1cGRhdGVkIGluIHRoZSBuZXh0IHRpY2sgYWZ0ZXIgdGhlIHZpZXcgaGFzIGJlZW4gdXBkYXRlZC5cbiAgICovXG4gIGFic3RyYWN0IHJlYWRvbmx5IGFjdGl2aXR5TGlzdDogTGlzdE1vZGVsPEFjdGl2aXR5PGFueSwgYW55Pj47XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgYWN0aXZpdHkgdGhhdCBpcyBjdXJyZW50bHkgYWN0aXZlLlxuICAgKiBUaGlzIG1vZGVsIGlzIG9ubHkgdXBkYXRlZCBpbiB0aGUgbmV4dCB0aWNrIGFmdGVyIHRoZSB2aWV3IGhhcyBiZWVuIHVwZGF0ZWQuXG4gICAqL1xuICBnZXQgY3VycmVudEFjdGl2aXR5KCk6IEFjdGl2aXR5PGFueSwgYW55PiB7XG4gICAgcmV0dXJuIF8ubGFzdCh0aGlzLmFjdGl2aXR5TGlzdC52YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0cnVlIGlmIGFuIGFjdGl2aXR5IGlzIGN1cnJlbnRseSBydW5uaW5nLlxuICAgKi9cbiAgYWJzdHJhY3QgaXNBY3RpdmUoKTogYm9vbGVhbjtcblxuICBhYnN0cmFjdCBzdGFydEFjdGl2aXR5PEQsIFIsIEU+KGFjdGl2aXR5VHlwZTogQ29uc3RydWN0YWJsZTxBY3Rpdml0eTxELCBSLCBFPj4sIGRhdGE/OiBEKTogUHJvbWlzZTxSPjtcblxuICBhYnN0cmFjdCBjb25maXJtKGNvbmZpcm06IENvbmZpcm0pOiBQcm9taXNlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBQcmVzZW50cyB0aGUgY29uZmlybWF0aW9uIHRvIHRoZSB1c2VyIGFuZCBydW5zIHRoZSBhY3Rpdml0eSBvbmx5IGlmIHRoZSB1c2VyIGNvbmZpcm1zLlxuICAgKiBAcGFyYW0gY29uZmlybTpDb25maXJtIHRoZSBjb25maXJtYXRpb24gdG8gZGlzcGxheS5cbiAgICogQHBhcmFtIGFjdGl2aXR5VHlwZSB0aGUgYWN0aXZpdHkgdG8gcnVuIGlmIGNvbmZpcm1lZC5cbiAgICogQHBhcmFtIGRhdGEgdGhlIGFjdGl2aXR5IGRhdGEuXG4gICAqL1xuICBhYnN0cmFjdCBjb25maXJtVGhlbjxELCBSLCBFPihjb25maXJtOiBDb25maXJtLCBhY3Rpdml0eVR5cGU6IENvbnN0cnVjdGFibGU8QWN0aXZpdHk8RCwgUiwgRT4+LCBkYXRhPzogRCk6IFByb21pc2U8Uj47XG5cbiAgYWJzdHJhY3QgYWxlcnQoYWxlcnQ6IEFsZXJ0KTogUHJvbWlzZTx2b2lkPjtcblxufVxuXG4iXX0=
|
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
import { Inject, Injectable, InjectionToken, Optional } from '@angular/core';
|
|
6
6
|
import { MatDialog } from '@angular/material';
|
|
7
7
|
import { MAT_DIALOG_DEFAULT_OPTIONS, MatDialogConfig } from '@angular/material/dialog';
|
|
8
|
-
import {
|
|
9
|
-
import { DelegatingListModel, Dsl, lang } from '@coolon/pectin';
|
|
8
|
+
import { DelegatingListModel, lang, ValueModel } from '@coolon/pectin';
|
|
10
9
|
import { assert } from '@coolon/typescript-utilities';
|
|
10
|
+
import * as uuid from 'uuid';
|
|
11
11
|
import { ActivityContainerComponent } from '../components/activity-container/activity-container.component';
|
|
12
12
|
import { AlertDialogComponent } from '../components/alert-dialog/alert-dialog.component';
|
|
13
13
|
import { ConfirmThenDialogComponent } from '../components/confirm-then-dialog/confirm-then-dialog.component';
|
|
@@ -15,39 +15,68 @@ import { ConfirmationDialogComponent } from '../components/confirmation-dialog/c
|
|
|
15
15
|
import { InteractionContext } from '../interaction-context';
|
|
16
16
|
import * as i0 from "@angular/core";
|
|
17
17
|
import * as i1 from "@angular/material/dialog";
|
|
18
|
-
import * as i2 from "@angular/router";
|
|
19
18
|
/** @type {?} */
|
|
20
19
|
export const DIALOG_INTERACTION_SERVICE_DEFAULTS = new InjectionToken('DIALOG_INTERACTION_SERVICE_DEFAULTS');
|
|
20
|
+
class Guard extends ValueModel {
|
|
21
|
+
constructor() {
|
|
22
|
+
super({ initialValue: false });
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* @return {?}
|
|
26
|
+
*/
|
|
27
|
+
get value() {
|
|
28
|
+
return this.store.read();
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* @template R
|
|
32
|
+
* @param {?} fun
|
|
33
|
+
* @return {?}
|
|
34
|
+
*/
|
|
35
|
+
whileTrue(fun) {
|
|
36
|
+
this.startTransaction().commit(true);
|
|
37
|
+
try {
|
|
38
|
+
return fun();
|
|
39
|
+
}
|
|
40
|
+
finally {
|
|
41
|
+
this.startTransaction().commit(false);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* @template R
|
|
46
|
+
* @param {?} fun
|
|
47
|
+
* @param {?=} defaultValue
|
|
48
|
+
* @return {?}
|
|
49
|
+
*/
|
|
50
|
+
runIfFalse(fun, defaultValue = null) {
|
|
51
|
+
return !this.value ? fun() : defaultValue;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
21
54
|
export class DialogInteractionService extends InteractionContext {
|
|
22
55
|
/**
|
|
23
56
|
* @param {?} dialogService
|
|
24
|
-
* @param {?} router
|
|
25
57
|
* @param {?} dialogServiceDefaults
|
|
26
58
|
* @param {?} matDialogDefaultConfig
|
|
27
59
|
*/
|
|
28
|
-
constructor(dialogService,
|
|
60
|
+
constructor(dialogService, dialogServiceDefaults, matDialogDefaultConfig) {
|
|
29
61
|
super();
|
|
30
62
|
this.dialogService = dialogService;
|
|
31
|
-
this.router = router;
|
|
32
63
|
this.dialogServiceDefaults = dialogServiceDefaults;
|
|
33
64
|
this.matDialogDefaultConfig = matDialogDefaultConfig;
|
|
34
65
|
this._activityList = new DelegatingListModel();
|
|
35
|
-
this.
|
|
66
|
+
this.startingGuard = new Guard();
|
|
36
67
|
assert.notNil(dialogService);
|
|
37
|
-
const { chain, observe } = Dsl.disposeWith(this);
|
|
38
|
-
this.currentActivity = chain(this.activityList).last();
|
|
39
68
|
}
|
|
40
69
|
/**
|
|
41
70
|
* @return {?}
|
|
42
71
|
*/
|
|
43
72
|
isActive() {
|
|
44
|
-
return this.
|
|
73
|
+
return !!this.currentActivityId;
|
|
45
74
|
}
|
|
46
75
|
/**
|
|
47
76
|
* @return {?}
|
|
48
77
|
*/
|
|
49
78
|
cancelActivity() {
|
|
50
|
-
this.currentActivity.
|
|
79
|
+
this.currentActivity.cancel(null);
|
|
51
80
|
}
|
|
52
81
|
/**
|
|
53
82
|
* @return {?}
|
|
@@ -80,56 +109,59 @@ export class DialogInteractionService extends InteractionContext {
|
|
|
80
109
|
*/
|
|
81
110
|
a => a.constructor.name)).join(', ')}`);
|
|
82
111
|
}
|
|
83
|
-
this.
|
|
84
|
-
/** @type {?} */
|
|
85
|
-
const self = this;
|
|
86
|
-
/** @type {?} */
|
|
87
|
-
const config = Object.assign({ autoFocus: false, hasBackdrop: true, closeOnNavigation: false }, this.matDialogDefaultConfig, this.dialogServiceDefaults, {
|
|
88
|
-
data,
|
|
89
|
-
disableClose,
|
|
90
|
-
panelClass: 'dialog-interaction-service'
|
|
91
|
-
});
|
|
92
|
-
/** @type {?} */
|
|
93
|
-
const matDialogRef = (/** @type {?} */ (this.dialogService.open(ActivityContainerComponent, config)));
|
|
94
|
-
return new Promise((/**
|
|
95
|
-
* @param {?} resolve
|
|
96
|
-
* @param {?} reject
|
|
112
|
+
return this.startingGuard.whileTrue((/**
|
|
97
113
|
* @return {?}
|
|
98
114
|
*/
|
|
99
|
-
(
|
|
115
|
+
() => {
|
|
116
|
+
this.currentActivityId = uuid.v1();
|
|
100
117
|
/** @type {?} */
|
|
101
|
-
const
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
/**
|
|
108
|
-
* @param {?} result
|
|
109
|
-
* @return {?}
|
|
110
|
-
*/
|
|
111
|
-
onDone(result) {
|
|
112
|
-
// TODO: should I be calling resolve after close?
|
|
113
|
-
resolve(result);
|
|
114
|
-
matDialogRef.close(result);
|
|
115
|
-
},
|
|
116
|
-
/**
|
|
117
|
-
* @param {?} error
|
|
118
|
-
* @return {?}
|
|
119
|
-
*/
|
|
120
|
-
onCancel(error) {
|
|
121
|
-
// TODO: should I be calling reject after close?
|
|
122
|
-
reject(error);
|
|
123
|
-
matDialogRef.close(error);
|
|
124
|
-
}
|
|
118
|
+
const self = this;
|
|
119
|
+
/** @type {?} */
|
|
120
|
+
const config = Object.assign({ autoFocus: false, hasBackdrop: true, closeOnNavigation: false }, this.matDialogDefaultConfig, this.dialogServiceDefaults, {
|
|
121
|
+
data,
|
|
122
|
+
disableClose,
|
|
123
|
+
panelClass: 'dialog-interaction-service'
|
|
125
124
|
});
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
125
|
+
/** @type {?} */
|
|
126
|
+
const matDialogRef = (/** @type {?} */ (this.dialogService.open(ActivityContainerComponent, config)));
|
|
127
|
+
return new Promise((/**
|
|
128
|
+
* @param {?} resolve
|
|
129
|
+
* @param {?} reject
|
|
130
|
+
* @return {?}
|
|
131
|
+
*/
|
|
132
|
+
(resolve, reject) => {
|
|
133
|
+
/** @type {?} */
|
|
134
|
+
const activityContainer = matDialogRef.componentInstance;
|
|
135
|
+
activityContainer.parentInteractionContext = this;
|
|
136
|
+
self.safelyUpdateActivityListDelegate(activityContainer.activityList);
|
|
137
|
+
activityContainer.initialActivityOutletContext = {
|
|
138
|
+
activityClass: activityType,
|
|
139
|
+
activityData: data,
|
|
140
|
+
/**
|
|
141
|
+
* @param {?} result
|
|
142
|
+
* @return {?}
|
|
143
|
+
*/
|
|
144
|
+
onDone(result) {
|
|
145
|
+
resolve(result);
|
|
146
|
+
matDialogRef.close(result);
|
|
147
|
+
},
|
|
148
|
+
/**
|
|
149
|
+
* @param {?} error
|
|
150
|
+
* @return {?}
|
|
151
|
+
*/
|
|
152
|
+
onCancel(error) {
|
|
153
|
+
reject(error);
|
|
154
|
+
matDialogRef.close(error);
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
matDialogRef.updateSize();
|
|
158
|
+
})).finally((/**
|
|
159
|
+
* @return {?}
|
|
160
|
+
*/
|
|
161
|
+
() => {
|
|
162
|
+
this.currentActivityId = null;
|
|
163
|
+
self.safelyUpdateActivityListDelegate(null);
|
|
164
|
+
}));
|
|
133
165
|
}));
|
|
134
166
|
}
|
|
135
167
|
/**
|
|
@@ -180,14 +212,11 @@ DialogInteractionService.decorators = [
|
|
|
180
212
|
/** @nocollapse */
|
|
181
213
|
DialogInteractionService.ctorParameters = () => [
|
|
182
214
|
{ type: MatDialog },
|
|
183
|
-
{ type: Router },
|
|
184
215
|
{ type: MatDialogConfig, decorators: [{ type: Optional }, { type: Inject, args: [DIALOG_INTERACTION_SERVICE_DEFAULTS,] }] },
|
|
185
216
|
{ type: MatDialogConfig, decorators: [{ type: Optional }, { type: Inject, args: [MAT_DIALOG_DEFAULT_OPTIONS,] }] }
|
|
186
217
|
];
|
|
187
|
-
/** @nocollapse */ DialogInteractionService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function DialogInteractionService_Factory() { return new DialogInteractionService(i0.ɵɵinject(i1.MatDialog), i0.ɵɵinject(
|
|
218
|
+
/** @nocollapse */ DialogInteractionService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function DialogInteractionService_Factory() { return new DialogInteractionService(i0.ɵɵinject(i1.MatDialog), i0.ɵɵinject(DIALOG_INTERACTION_SERVICE_DEFAULTS, 8), i0.ɵɵinject(i1.MAT_DIALOG_DEFAULT_OPTIONS, 8)); }, token: DialogInteractionService, providedIn: "root" });
|
|
188
219
|
if (false) {
|
|
189
|
-
/** @type {?} */
|
|
190
|
-
DialogInteractionService.prototype.currentActivity;
|
|
191
220
|
/**
|
|
192
221
|
* @type {?}
|
|
193
222
|
* @private
|
|
@@ -197,20 +226,20 @@ if (false) {
|
|
|
197
226
|
* @type {?}
|
|
198
227
|
* @private
|
|
199
228
|
*/
|
|
200
|
-
DialogInteractionService.prototype.
|
|
229
|
+
DialogInteractionService.prototype.startingGuard;
|
|
201
230
|
/**
|
|
202
231
|
* @type {?}
|
|
203
232
|
* @private
|
|
204
233
|
*/
|
|
205
|
-
DialogInteractionService.prototype.
|
|
234
|
+
DialogInteractionService.prototype.currentActivityId;
|
|
206
235
|
/**
|
|
207
236
|
* @type {?}
|
|
208
237
|
* @private
|
|
209
238
|
*/
|
|
210
|
-
DialogInteractionService.prototype.
|
|
239
|
+
DialogInteractionService.prototype.dialogService;
|
|
211
240
|
/** @type {?} */
|
|
212
241
|
DialogInteractionService.prototype.dialogServiceDefaults;
|
|
213
242
|
/** @type {?} */
|
|
214
243
|
DialogInteractionService.prototype.matDialogDefaultConfig;
|
|
215
244
|
}
|
|
216
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWludGVyYWN0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvaW50ZXJhY3Rpb24vc2VydmljZXMvZGlhbG9nLWludGVyYWN0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLFNBQVMsRUFBZ0IsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBaUIsbUJBQW1CLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBeUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHdEQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFDM0csT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDekYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDN0csT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFFOUcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7O0FBRTVELE1BQU0sT0FBTyxtQ0FBbUMsR0FBRyxJQUFJLGNBQWMsQ0FBdUIscUNBQXFDLENBQUM7QUFLbEksTUFBTSxPQUFPLHdCQUF5QixTQUFRLGtCQUFrQjs7Ozs7OztJQU05RCxZQUE2QixhQUF3QixFQUN4QixNQUFjLEVBQ21DLHFCQUEyQyxFQUNwRCxzQkFBNEM7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K0U7Ozs7O0lBQy9FLDJDQUF3Qjs7Ozs7SUFFWixpREFBeUM7Ozs7O0lBQ3pDLDBDQUErQjs7SUFDL0IseURBQTZHOztJQUM3RywwREFBcUciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbCc7XG5pbXBvcnQgeyBNQVRfRElBTE9HX0RFRkFVTFRfT1BUSU9OUywgTWF0RGlhbG9nQ29uZmlnIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBDb25zdHJ1Y3RhYmxlLCBEZWxlZ2F0aW5nTGlzdE1vZGVsLCBEc2wsIGxhbmcsIExpc3RNb2RlbCwgVmFsdWVNb2RlbCB9IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCB7IGFzc2VydCB9IGZyb20gJ0Bjb29sb24vdHlwZXNjcmlwdC11dGlsaXRpZXMnO1xuaW1wb3J0IHsgQWN0aXZpdHkgfSBmcm9tICcuLi9hY3Rpdml0eSc7XG5pbXBvcnQgeyBBbGVydCB9IGZyb20gJy4uL2FsZXJ0JztcbmltcG9ydCB7IEFjdGl2aXR5Q29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9hY3Rpdml0eS1jb250YWluZXIvYWN0aXZpdHktY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBbGVydERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvYWxlcnQtZGlhbG9nL2FsZXJ0LWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29uZmlybVRoZW5EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2NvbmZpcm0tdGhlbi1kaWFsb2cvY29uZmlybS10aGVuLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9jb25maXJtYXRpb24tZGlhbG9nL2NvbmZpcm1hdGlvbi1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IENvbmZpcm0gfSBmcm9tICcuLi9jb25maXJtJztcbmltcG9ydCB7IEludGVyYWN0aW9uQ29udGV4dCB9IGZyb20gJy4uL2ludGVyYWN0aW9uLWNvbnRleHQnO1xuXG5leHBvcnQgY29uc3QgRElBTE9HX0lOVEVSQUNUSU9OX1NFUlZJQ0VfREVGQVVMVFMgPSBuZXcgSW5qZWN0aW9uVG9rZW48TWF0RGlhbG9nQ29uZmlnPGFueT4+KCdESUFMT0dfSU5URVJBQ1RJT05fU0VSVklDRV9ERUZBVUxUUycpO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBEaWFsb2dJbnRlcmFjdGlvblNlcnZpY2UgZXh0ZW5kcyBJbnRlcmFjdGlvbkNvbnRleHQge1xuXG4gIHJlYWRvbmx5IGN1cnJlbnRBY3Rpdml0eTogVmFsdWVNb2RlbDxBY3Rpdml0eTxhbnksIGFueT4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9hY3Rpdml0eUxpc3QgPSBuZXcgRGVsZWdhdGluZ0xpc3RNb2RlbDxBY3Rpdml0eTxhbnksIGFueT4+KCk7XG4gIHByaXZhdGUgX2FjdGl2ZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nU2VydmljZTogTWF0RGlhbG9nLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERJQUxPR19JTlRFUkFDVElPTl9TRVJWSUNFX0RFRkFVTFRTKSByZWFkb25seSBkaWFsb2dTZXJ2aWNlRGVmYXVsdHM6IE1hdERpYWxvZ0NvbmZpZzxhbnk+LFxuICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE1BVF9ESUFMT0dfREVGQVVMVF9PUFRJT05TKSByZWFkb25seSBtYXREaWFsb2dEZWZhdWx0Q29uZmlnOiBNYXREaWFsb2dDb25maWc8YW55PlxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIGFzc2VydC5ub3ROaWwoZGlhbG9nU2VydmljZSk7XG4gICAgY29uc3QgeyBjaGFpbiwgb2JzZXJ2ZSB9ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMpO1xuICAgIHRoaXMuY3VycmVudEFjdGl2aXR5ID0gY2hhaW4odGhpcy5hY3Rpdml0eUxpc3QpLmxhc3QoKTtcbiAgfVxuXG4gIGlzQWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmU7XG4gIH1cblxuICBjYW5jZWxBY3Rpdml0eSgpIHtcbiAgICB0aGlzLmN1cnJlbnRBY3Rpdml0eS52YWx1ZS5jYW5jZWwobnVsbCk7XG4gIH1cblxuICBnZXQgYWN0aXZpdHlMaXN0KCk6IExpc3RNb2RlbDxBY3Rpdml0eTxhbnksIGFueT4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZpdHlMaXN0LnJlYWRvbmx5O1xuICB9XG5cbiAgc3RhcnRBY3Rpdml0eTxELCBSLCBFPihhY3Rpdml0eVR5cGU6IENvbnN0cnVjdGFibGU8QWN0aXZpdHk8RCwgUiwgRT4+LCBkYXRhPzogRCk6IFByb21pc2U8Uj4ge1xuICAgIHJldHVybiB0aGlzLl9zdGFydEFjdGl2aXR5KGFjdGl2aXR5VHlwZSwgZGF0YSk7XG4gIH1cblxuICBwcml2YXRlIF9zdGFydEFjdGl2aXR5PEQsIFIsIEU+KGFjdGl2aXR5VHlwZTogQ29uc3RydWN0YWJsZTxBY3Rpdml0eTxELCBSLCBFPj4sIGRhdGE6IEQsIGRpc2FibGVDbG9zZTogYm9vbGVhbiA9IHRydWUpIHtcbiAgICBpZiAodGhpcy5pc0FjdGl2ZSgpKSB7XG4gICAgICBsYW5nLmlsbGVnYWxTdGF0ZShgQWN0aXZpdHkgYWxyZWFkeSBpbiBwcm9ncmVzczogJHt0aGlzLmFjdGl2aXR5TGlzdC52YWx1ZS5tYXAoYSA9PiBhLmNvbnN0cnVjdG9yLm5hbWUpLmpvaW4oJywgJyl9YCk7XG4gICAgfVxuICAgIHRoaXMuX2FjdGl2ZSA9IHRydWU7XG5cbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBjb25zdCBjb25maWc6IE1hdERpYWxvZ0NvbmZpZyA9IHtcbiAgICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgIGNsb3NlT25OYXZpZ2F0aW9uOiBmYWxzZSxcbiAgICAgIC4uLnRoaXMubWF0RGlhbG9nRGVmYXVsdENvbmZpZyxcbiAgICAgIC4uLnRoaXMuZGlhbG9nU2VydmljZURlZmF1bHRzLFxuICAgICAgLi4ue1xuICAgICAgICBkYXRhLFxuICAgICAgICBkaXNhYmxlQ2xvc2UsXG4gICAgICAgIHBhbmVsQ2xhc3M6ICdkaWFsb2ctaW50ZXJhY3Rpb24tc2VydmljZSdcbiAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IG1hdERpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKEFjdGl2aXR5Q29udGFpbmVyQ29tcG9uZW50LCBjb25maWcpIGFzIE1hdERpYWxvZ1JlZjxBY3Rpdml0eUNvbnRhaW5lckNvbXBvbmVudD47XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPFI+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IGFjdGl2aXR5Q29udGFpbmVyID0gbWF0RGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlO1xuICAgICAgYWN0aXZpdHlDb250YWluZXIucGFyZW50SW50ZXJhY3Rpb25Db250ZXh0ID0gdGhpcztcbiAgICAgIHNlbGYuc2FmZWx5VXBkYXRlQWN0aXZpdHlMaXN0RGVsZWdhdGUoYWN0aXZpdHlDb250YWluZXIuYWN0aXZpdHlMaXN0KTtcbiAgICAgIGFjdGl2aXR5Q29udGFpbmVyLmluaXRpYWxpc2Uoe1xuICAgICAgICBhY3Rpdml0eUNsYXNzOiBhY3Rpdml0eVR5cGUsXG4gICAgICAgIGFjdGl2aXR5RGF0YTogZGF0YSxcbiAgICAgICAgb25Eb25lKHJlc3VsdCkge1xuICAgICAgICAgIC8vIFRPRE86IHNob3VsZCBJIGJlIGNhbGxpbmcgcmVzb2x2ZSBhZnRlciBjbG9zZT9cbiAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgbWF0RGlhbG9nUmVmLmNsb3NlKHJlc3VsdCk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uQ2FuY2VsKGVycm9yKSB7XG4gICAgICAgICAgLy8gVE9ETzogc2hvdWxkIEkgYmUgY2FsbGluZyByZWplY3QgYWZ0ZXIgY2xvc2U/XG4gICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICBtYXREaWFsb2dSZWYuY2xvc2UoZXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIG1hdERpYWxvZ1JlZi51cGRhdGVTaXplKCk7XG4gICAgfSkuZmluYWxseSgoKSA9PiB7XG4gICAgICBzZWxmLnNhZmVseVVwZGF0ZUFjdGl2aXR5TGlzdERlbGVnYXRlKG51bGwpO1xuICAgICAgc2VsZi5fYWN0aXZlID0gZmFsc2U7XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGVoIGRlbGVnYXRlIG9uIHRoZSBuZXh0IHRpY2sgdG8gYXZvaWQgbW9kaWZ5aW5nIHN0YXRlIGR1cmluZyB0aGUgY3VycmVudCBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlLlxuICAgKiBAcGFyYW0gZGVsZWdhdGVcbiAgICovXG4gIHNhZmVseVVwZGF0ZUFjdGl2aXR5TGlzdERlbGVnYXRlKGRlbGVnYXRlOiBMaXN0TW9kZWw8QWN0aXZpdHk8YW55LCBhbnk+Pikge1xuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5fYWN0aXZpdHlMaXN0LnNldERlbGVnYXRlKGRlbGVnYXRlKSk7XG4gIH1cblxuICBhbGVydChhbGVydDogQWxlcnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fc3RhcnRBY3Rpdml0eShBbGVydERpYWxvZ0NvbXBvbmVudCwgYWxlcnQsIGZhbHNlKTtcbiAgfVxuXG4gIGNvbmZpcm0oY29uZmlybTogQ29uZmlybSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9zdGFydEFjdGl2aXR5KENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCwgY29uZmlybSwgdHJ1ZSk7XG4gIH1cblxuICBjb25maXJtVGhlbjxELCBSLCBFPihjb25maXJtOiBDb25maXJtLCBhY3Rpdml0eVR5cGU6IENvbnN0cnVjdGFibGU8QWN0aXZpdHk8RCwgUiwgRT4+LCBkYXRhPzogRCk6IFByb21pc2U8Uj4ge1xuICAgIHJldHVybiB0aGlzLl9zdGFydEFjdGl2aXR5PENvbmZpcm1UaGVuRGlhbG9nQ29tcG9uZW50LkRhdGE8RCwgUiwgRT4sIFIsIEU+KENvbmZpcm1UaGVuRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICBjb25maXJtLFxuICAgICAgYWN0aXZpdHlUeXBlOiBhY3Rpdml0eVR5cGUsXG4gICAgICBkYXRhOiBkYXRhXG4gICAgfSwgdHJ1ZSk7XG4gIH1cblxufVxuIl19
|
|
245
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWludGVyYWN0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvaW50ZXJhY3Rpb24vc2VydmljZXMvZGlhbG9nLWludGVyYWN0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLFNBQVMsRUFBZ0IsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkYsT0FBTyxFQUFpQixtQkFBbUIsRUFBRSxJQUFJLEVBQWEsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakcsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3RELE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBRzdCLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBQzNHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQzdHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBRTlHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7O0FBRTVELE1BQU0sT0FBTyxtQ0FBbUMsR0FBRyxJQUFJLGNBQWMsQ0FBdUIscUNBQXFDLENBQUM7QUFFbEksTUFBTSxLQUFNLFNBQVEsVUFBbUI7SUFFckM7UUFDRSxLQUFLLENBQUMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNqQyxDQUFDOzs7O0lBRUQsSUFB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QUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDekUsQ0FBQzs7Ozs7Ozs7SUFFRCxXQUFXLENBQVUsT0FBZ0IsRUFBRSxZQUE4QyxFQUFFLElBQVE7UUFDN0YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFpRCwwQkFBMEIsRUFBRTtZQUNyRyxPQUFPO1lBQ1AsWUFBWSxFQUFFLFlBQVk7WUFDMUIsSUFBSSxFQUFFLElBQUk7U0FDWCxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ1gsQ0FBQzs7O1lBckdGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7OztZQTNDUSxTQUFTO1lBQ21CLGVBQWUsdUJBa0RyQyxRQUFRLFlBQUksTUFBTSxTQUFDLG1DQUFtQztZQWxEaEMsZUFBZSx1QkFtRHJDLFFBQVEsWUFBSSxNQUFNLFNBQUMsMEJBQTBCOzs7Ozs7OztJQU4xRCxpREFBK0U7Ozs7O0lBQy9FLGlEQUFvQzs7Ozs7SUFDcEMscURBQWtDOzs7OztJQUV0QixpREFBeUM7O0lBQ3pDLHlEQUE2Rzs7SUFDN0csMERBQXFHIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwnO1xuaW1wb3J0IHsgTUFUX0RJQUxPR19ERUZBVUxUX09QVElPTlMsIE1hdERpYWxvZ0NvbmZpZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3RhYmxlLCBEZWxlZ2F0aW5nTGlzdE1vZGVsLCBsYW5nLCBMaXN0TW9kZWwsIFZhbHVlTW9kZWwgfSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgeyBhc3NlcnQgfSBmcm9tICdAY29vbG9uL3R5cGVzY3JpcHQtdXRpbGl0aWVzJztcbmltcG9ydCAqIGFzIHV1aWQgZnJvbSAndXVpZCc7XG5pbXBvcnQgeyBBY3Rpdml0eSB9IGZyb20gJy4uL2FjdGl2aXR5JztcbmltcG9ydCB7IEFsZXJ0IH0gZnJvbSAnLi4vYWxlcnQnO1xuaW1wb3J0IHsgQWN0aXZpdHlDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2FjdGl2aXR5LWNvbnRhaW5lci9hY3Rpdml0eS1jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEFsZXJ0RGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9hbGVydC1kaWFsb2cvYWxlcnQtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb25maXJtVGhlbkRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvY29uZmlybS10aGVuLWRpYWxvZy9jb25maXJtLXRoZW4tZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb25maXJtYXRpb25EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2NvbmZpcm1hdGlvbi1kaWFsb2cvY29uZmlybWF0aW9uLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29uZmlybSB9IGZyb20gJy4uL2NvbmZpcm0nO1xuaW1wb3J0IHsgSW50ZXJhY3Rpb25Db250ZXh0IH0gZnJvbSAnLi4vaW50ZXJhY3Rpb24tY29udGV4dCc7XG5cbmV4cG9ydCBjb25zdCBESUFMT0dfSU5URVJBQ1RJT05fU0VSVklDRV9ERUZBVUxUUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxNYXREaWFsb2dDb25maWc8YW55Pj4oJ0RJQUxPR19JTlRFUkFDVElPTl9TRVJWSUNFX0RFRkFVTFRTJyk7XG5cbmNsYXNzIEd1YXJkIGV4dGVuZHMgVmFsdWVNb2RlbDxib29sZWFuPiB7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoeyBpbml0aWFsVmFsdWU6IGZhbHNlIH0pO1xuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnJlYWQoKTtcbiAgfVxuXG4gIHdoaWxlVHJ1ZTxSPihmdW46ICgpID0+IFIpOiBSIHtcbiAgICB0aGlzLnN0YXJ0VHJhbnNhY3Rpb24oKS5jb21taXQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBmdW4oKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5zdGFydFRyYW5zYWN0aW9uKCkuY29tbWl0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBydW5JZkZhbHNlPFI+KGZ1bjogKCkgPT4gUiwgZGVmYXVsdFZhbHVlOiBSID0gbnVsbCk6IFIge1xuICAgIHJldHVybiAhdGhpcy52YWx1ZSA/IGZ1bigpIDogZGVmYXVsdFZhbHVlO1xuICB9XG59XG5cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRGlhbG9nSW50ZXJhY3Rpb25TZXJ2aWNlIGV4dGVuZHMgSW50ZXJhY3Rpb25Db250ZXh0IHtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9hY3Rpdml0eUxpc3QgPSBuZXcgRGVsZWdhdGluZ0xpc3RNb2RlbDxBY3Rpdml0eTxhbnksIGFueT4+KCk7XG4gIHByaXZhdGUgc3RhcnRpbmdHdWFyZCA9IG5ldyBHdWFyZCgpO1xuICBwcml2YXRlIGN1cnJlbnRBY3Rpdml0eUlkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkaWFsb2dTZXJ2aWNlOiBNYXREaWFsb2csXG4gICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRElBTE9HX0lOVEVSQUNUSU9OX1NFUlZJQ0VfREVGQVVMVFMpIHJlYWRvbmx5IGRpYWxvZ1NlcnZpY2VEZWZhdWx0czogTWF0RGlhbG9nQ29uZmlnPGFueT4sXG4gICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTUFUX0RJQUxPR19ERUZBVUxUX09QVElPTlMpIHJlYWRvbmx5IG1hdERpYWxvZ0RlZmF1bHRDb25maWc6IE1hdERpYWxvZ0NvbmZpZzxhbnk+XG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgYXNzZXJ0Lm5vdE5pbChkaWFsb2dTZXJ2aWNlKTtcbiAgfVxuXG4gIGlzQWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuY3VycmVudEFjdGl2aXR5SWQ7XG4gIH1cblxuICBjYW5jZWxBY3Rpdml0eSgpIHtcbiAgICB0aGlzLmN1cnJlbnRBY3Rpdml0eS5jYW5jZWwobnVsbCk7XG4gIH1cblxuICBnZXQgYWN0aXZpdHlMaXN0KCk6IExpc3RNb2RlbDxBY3Rpdml0eTxhbnksIGFueT4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZpdHlMaXN0LnJlYWRvbmx5O1xuICB9XG5cbiAgc3RhcnRBY3Rpdml0eTxELCBSLCBFPihhY3Rpdml0eVR5cGU6IENvbnN0cnVjdGFibGU8QWN0aXZpdHk8RCwgUiwgRT4+LCBkYXRhPzogRCk6IFByb21pc2U8Uj4ge1xuICAgIHJldHVybiB0aGlzLl9zdGFydEFjdGl2aXR5KGFjdGl2aXR5VHlwZSwgZGF0YSk7XG4gIH1cblxuICBwcml2YXRlIF9zdGFydEFjdGl2aXR5PEQsIFIsIEU+KGFjdGl2aXR5VHlwZTogQ29uc3RydWN0YWJsZTxBY3Rpdml0eTxELCBSLCBFPj4sIGRhdGE6IEQsIGRpc2FibGVDbG9zZTogYm9vbGVhbiA9IHRydWUpIHtcbiAgICBpZiAodGhpcy5pc0FjdGl2ZSgpKSB7XG4gICAgICBsYW5nLmlsbGVnYWxTdGF0ZShgQWN0aXZpdHkgYWxyZWFkeSBpbiBwcm9ncmVzczogJHt0aGlzLmFjdGl2aXR5TGlzdC52YWx1ZS5tYXAoYSA9PiBhLmNvbnN0cnVjdG9yLm5hbWUpLmpvaW4oJywgJyl9YCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnN0YXJ0aW5nR3VhcmQud2hpbGVUcnVlKCgpID0+IHtcbiAgICAgIHRoaXMuY3VycmVudEFjdGl2aXR5SWQgPSB1dWlkLnYxKCk7XG5cbiAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgY29uc3QgY29uZmlnOiBNYXREaWFsb2dDb25maWcgPSB7XG4gICAgICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICBjbG9zZU9uTmF2aWdhdGlvbjogZmFsc2UsXG4gICAgICAgIC4uLnRoaXMubWF0RGlhbG9nRGVmYXVsdENvbmZpZyxcbiAgICAgICAgLi4udGhpcy5kaWFsb2dTZXJ2aWNlRGVmYXVsdHMsXG4gICAgICAgIC4uLntcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIGRpc2FibGVDbG9zZSxcbiAgICAgICAgICBwYW5lbENsYXNzOiAnZGlhbG9nLWludGVyYWN0aW9uLXNlcnZpY2UnXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBjb25zdCBtYXREaWFsb2dSZWYgPSB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbihBY3Rpdml0eUNvbnRhaW5lckNvbXBvbmVudCwgY29uZmlnKSBhcyBNYXREaWFsb2dSZWY8QWN0aXZpdHlDb250YWluZXJDb21wb25lbnQ8RCxSLEU+PjtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxSPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGFjdGl2aXR5Q29udGFpbmVyID0gbWF0RGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlO1xuICAgICAgICBhY3Rpdml0eUNvbnRhaW5lci5wYXJlbnRJbnRlcmFjdGlvbkNvbnRleHQgPSB0aGlzO1xuICAgICAgICBzZWxmLnNhZmVseVVwZGF0ZUFjdGl2aXR5TGlzdERlbGVnYXRlKGFjdGl2aXR5Q29udGFpbmVyLmFjdGl2aXR5TGlzdCk7XG5cbiAgICAgICAgYWN0aXZpdHlDb250YWluZXIuaW5pdGlhbEFjdGl2aXR5T3V0bGV0Q29udGV4dCA9IHtcbiAgICAgICAgICBhY3Rpdml0eUNsYXNzOiBhY3Rpdml0eVR5cGUsXG4gICAgICAgICAgYWN0aXZpdHlEYXRhOiBkYXRhLFxuICAgICAgICAgIG9uRG9uZShyZXN1bHQpIHtcbiAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICAgIG1hdERpYWxvZ1JlZi5jbG9zZShyZXN1bHQpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgb25DYW5jZWwoZXJyb3IpIHtcbiAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICBtYXREaWFsb2dSZWYuY2xvc2UoZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgbWF0RGlhbG9nUmVmLnVwZGF0ZVNpemUoKTtcbiAgICAgIH0pLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICB0aGlzLmN1cnJlbnRBY3Rpdml0eUlkID0gbnVsbDtcbiAgICAgICAgc2VsZi5zYWZlbHlVcGRhdGVBY3Rpdml0eUxpc3REZWxlZ2F0ZShudWxsKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGVoIGRlbGVnYXRlIG9uIHRoZSBuZXh0IHRpY2sgdG8gYXZvaWQgbW9kaWZ5aW5nIHN0YXRlIGR1cmluZyB0aGUgY3VycmVudCBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlLlxuICAgKiBAcGFyYW0gZGVsZWdhdGVcbiAgICovXG4gIHNhZmVseVVwZGF0ZUFjdGl2aXR5TGlzdERlbGVnYXRlKGRlbGVnYXRlOiBMaXN0TW9kZWw8QWN0aXZpdHk8YW55LCBhbnk+Pikge1xuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5fYWN0aXZpdHlMaXN0LnNldERlbGVnYXRlKGRlbGVnYXRlKSk7XG4gIH1cblxuICBhbGVydChhbGVydDogQWxlcnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fc3RhcnRBY3Rpdml0eShBbGVydERpYWxvZ0NvbXBvbmVudCwgYWxlcnQsIGZhbHNlKTtcbiAgfVxuXG4gIGNvbmZpcm0oY29uZmlybTogQ29uZmlybSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9zdGFydEFjdGl2aXR5KENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCwgY29uZmlybSwgdHJ1ZSk7XG4gIH1cblxuICBjb25maXJtVGhlbjxELCBSLCBFPihjb25maXJtOiBDb25maXJtLCBhY3Rpdml0eVR5cGU6IENvbnN0cnVjdGFibGU8QWN0aXZpdHk8RCwgUiwgRT4+LCBkYXRhPzogRCk6IFByb21pc2U8Uj4ge1xuICAgIHJldHVybiB0aGlzLl9zdGFydEFjdGl2aXR5PENvbmZpcm1UaGVuRGlhbG9nQ29tcG9uZW50LkRhdGE8RCwgUiwgRT4sIFIsIEU+KENvbmZpcm1UaGVuRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICBjb25maXJtLFxuICAgICAgYWN0aXZpdHlUeXBlOiBhY3Rpdml0eVR5cGUsXG4gICAgICBkYXRhOiBkYXRhXG4gICAgfSwgdHJ1ZSk7XG4gIH1cbn1cbiJdfQ==
|