@coolon/angular-ui-powerups 0.0.101 → 0.0.102
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 +896 -620
- 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.metadata.json +1 -1
- package/esm2015/coolon-angular-ui-powerups.js +2 -2
- package/esm2015/index.js +2 -2
- package/esm2015/lib/interaction/components/activity-container/activity-container.component.js +2 -1
- package/esm2015/lib/interaction/interaction-context-base.js +21 -8
- package/esm2015/lib/interaction/interaction-context.js +56 -3
- package/esm2015/lib/interaction/services/interaction.service.js +11 -7
- package/esm2015/lib/place/guards/navigation-state.js +216 -135
- package/esm2015/lib/place/guards/place-component-deactivation-handler.js +63 -28
- package/esm2015/lib/place/guards/place.guard.js +215 -0
- package/esm2015/lib/place/index.js +2 -3
- package/esm2015/lib/place/place-router.js +34 -36
- package/esm2015/lib/place/url-snapshot.js +69 -53
- package/esm2015/public_api.js +2 -2
- package/esm5/coolon-angular-ui-powerups.js +2 -2
- package/esm5/index.js +2 -2
- package/esm5/lib/interaction/components/activity-container/activity-container.component.js +2 -1
- package/esm5/lib/interaction/interaction-context-base.js +25 -8
- package/esm5/lib/interaction/interaction-context.js +88 -10
- package/esm5/lib/interaction/services/interaction.service.js +17 -8
- package/esm5/lib/place/guards/navigation-state.js +280 -162
- package/esm5/lib/place/guards/place-component-deactivation-handler.js +73 -27
- package/esm5/lib/place/guards/place.guard.js +300 -0
- package/esm5/lib/place/index.js +2 -3
- package/esm5/lib/place/place-router.js +52 -39
- package/esm5/lib/place/url-snapshot.js +85 -58
- package/esm5/public_api.js +2 -2
- package/fesm2015/coolon-angular-ui-powerups.js +661 -519
- package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
- package/fesm5/coolon-angular-ui-powerups.js +896 -619
- package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
- package/lib/interaction/interaction-context-base.d.ts +3 -1
- package/lib/interaction/interaction-context.d.ts +9 -2
- package/lib/interaction/services/interaction.service.d.ts +2 -2
- package/lib/place/guards/navigation-state.d.ts +44 -38
- package/lib/place/guards/place-component-deactivation-handler.d.ts +7 -4
- package/lib/place/guards/{abstract-place.guard.d.ts → place.guard.d.ts} +8 -3
- package/lib/place/index.d.ts +1 -2
- package/lib/place/place-router.d.ts +2 -0
- package/lib/place/url-snapshot.d.ts +14 -9
- package/package.json +1 -1
- package/schematics/place-routes/place-def.js +1 -0
- package/schematics/place-routes/place-def.js.map +1 -1
- package/schematics/place-routes/templates/place-routes.ts.template +10 -11
- package/esm2015/lib/place/guards/abstract-place.guard.js +0 -166
- package/esm2015/lib/place/guards/interaction.guard.js +0 -121
- package/esm5/lib/place/guards/abstract-place.guard.js +0 -213
- package/esm5/lib/place/guards/interaction.guard.js +0 -133
- package/lib/place/guards/interaction.guard.d.ts +0 -17
|
@@ -3,68 +3,112 @@
|
|
|
3
3
|
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
4
|
*/
|
|
5
5
|
import * as tslib_1 from "tslib";
|
|
6
|
+
import * as _ from 'lodash';
|
|
6
7
|
var PlaceComponentDeactivationHandler = /** @class */ (function () {
|
|
7
|
-
function PlaceComponentDeactivationHandler(component,
|
|
8
|
+
function PlaceComponentDeactivationHandler(component, navigationState, isPrimaryComponent) {
|
|
8
9
|
this.component = component;
|
|
9
|
-
this.
|
|
10
|
+
this.navigationState = navigationState;
|
|
11
|
+
this.isPrimaryComponent = isPrimaryComponent;
|
|
10
12
|
}
|
|
13
|
+
Object.defineProperty(PlaceComponentDeactivationHandler.prototype, "interactionService", {
|
|
14
|
+
get: /**
|
|
15
|
+
* @return {?}
|
|
16
|
+
*/
|
|
17
|
+
function () {
|
|
18
|
+
return this.navigationState.interactionService;
|
|
19
|
+
},
|
|
20
|
+
enumerable: true,
|
|
21
|
+
configurable: true
|
|
22
|
+
});
|
|
23
|
+
Object.defineProperty(PlaceComponentDeactivationHandler.prototype, "placeRouter", {
|
|
24
|
+
get: /**
|
|
25
|
+
* @return {?}
|
|
26
|
+
*/
|
|
27
|
+
function () {
|
|
28
|
+
return this.navigationState.placeRouter;
|
|
29
|
+
},
|
|
30
|
+
enumerable: true,
|
|
31
|
+
configurable: true
|
|
32
|
+
});
|
|
11
33
|
/**
|
|
34
|
+
* @param {?} currentUrl
|
|
12
35
|
* @param {?} nextState
|
|
13
36
|
* @return {?}
|
|
14
37
|
*/
|
|
15
38
|
PlaceComponentDeactivationHandler.prototype.canDeactivate = /**
|
|
39
|
+
* @param {?} currentUrl
|
|
16
40
|
* @param {?} nextState
|
|
17
41
|
* @return {?}
|
|
18
42
|
*/
|
|
19
|
-
function (nextState) {
|
|
43
|
+
function (currentUrl, nextState) {
|
|
20
44
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
21
45
|
return tslib_1.__generator(this, function (_a) {
|
|
22
46
|
// We'll get called multiple times if there's any parameter sanitisation so
|
|
23
47
|
// we always return true if we accepted promise from a previous cycle of the current
|
|
24
48
|
// navigation session.
|
|
25
49
|
if (!this.canDeactivatePromise) {
|
|
26
|
-
|
|
50
|
+
console.log("creating deactivate promise for -> " + this.component.constructor.name);
|
|
51
|
+
this.canDeactivatePromise = this.canDeactivateComponent(currentUrl, nextState);
|
|
27
52
|
}
|
|
28
53
|
return [2 /*return*/, this.canDeactivatePromise];
|
|
29
54
|
});
|
|
30
55
|
});
|
|
31
56
|
};
|
|
57
|
+
// @Trace()
|
|
58
|
+
// @Trace()
|
|
32
59
|
/**
|
|
33
60
|
* @protected
|
|
61
|
+
* @param {?} currentUrl
|
|
34
62
|
* @param {?} nextState
|
|
35
63
|
* @return {?}
|
|
36
64
|
*/
|
|
37
|
-
PlaceComponentDeactivationHandler.prototype.canDeactivateComponent =
|
|
65
|
+
PlaceComponentDeactivationHandler.prototype.canDeactivateComponent =
|
|
66
|
+
// @Trace()
|
|
67
|
+
/**
|
|
38
68
|
* @protected
|
|
69
|
+
* @param {?} currentUrl
|
|
39
70
|
* @param {?} nextState
|
|
40
71
|
* @return {?}
|
|
41
72
|
*/
|
|
42
|
-
function (nextState) {
|
|
73
|
+
function (currentUrl, nextState) {
|
|
43
74
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
44
|
-
var
|
|
75
|
+
var routeIds, currentIds;
|
|
45
76
|
return tslib_1.__generator(this, function (_a) {
|
|
46
77
|
switch (_a.label) {
|
|
47
78
|
case 0:
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
// Now we just cancel the current activity...
|
|
56
|
-
return [4 /*yield*/, this.component.interactionContext.getCurrentActivity()];
|
|
79
|
+
console.log(this.navigationState.toString());
|
|
80
|
+
if (!this.navigationState.isPopState) return [3 /*break*/, 5];
|
|
81
|
+
if (!(this.isPrimaryComponent && this.interactionService.isModalActive())) return [3 /*break*/, 3];
|
|
82
|
+
routeIds = this.placeRouter.getActiveInteractionIdsFromUrl(nextState.url);
|
|
83
|
+
currentIds = this.interactionService.activeInteractionContextIds.value;
|
|
84
|
+
if (!!_.isEqual(currentIds, routeIds)) return [3 /*break*/, 2];
|
|
85
|
+
return [4 /*yield*/, this.interactionService.getActiveContext().cancelCurrentActivity()];
|
|
57
86
|
case 1:
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
case
|
|
87
|
+
_a.sent();
|
|
88
|
+
return [2 /*return*/, currentUrl.updateInteractionIds(this.interactionService.activeInteractionContextIds.value)];
|
|
89
|
+
case 2: return [3 /*break*/, 5];
|
|
90
|
+
case 3:
|
|
91
|
+
if (!(this.component.interactionContext && this.component.interactionContext.isActive())) return [3 /*break*/, 5];
|
|
92
|
+
return [4 /*yield*/, this.component.interactionContext.cancelCurrentActivity()];
|
|
93
|
+
case 4:
|
|
94
|
+
_a.sent();
|
|
95
|
+
return [2 /*return*/, currentUrl
|
|
96
|
+
.updateInteractionIds(this.interactionService.activeInteractionContextIds.value)];
|
|
97
|
+
case 5:
|
|
62
98
|
// Ok, so now we're really leaving, so we ask the component if we should.;
|
|
63
|
-
if (this.isNotJustAChangeInRouteId(nextState)
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
99
|
+
if (this.isNotJustAChangeInRouteId(nextState)) {
|
|
100
|
+
if (this.component.canDeactivate) {
|
|
101
|
+
// No interaction in progress, so ask the component .
|
|
102
|
+
// This may start an interaction, hence checking the interaction context before now. I.e. if the place pops up the dialog, and
|
|
103
|
+
// the user clicks back again, we'll re-enter here and go bang when the component tries to open another dialog.
|
|
104
|
+
return [2 /*return*/, this.component.canDeactivate(this.navigationState.interactionContext)];
|
|
105
|
+
}
|
|
106
|
+
// The component has an active interaction but no deactivation hook. Rather than guessing what to do
|
|
107
|
+
// we'll just cancel the navigation and print a warning.
|
|
108
|
+
if (this.component.interactionContext && this.component.interactionContext.isActive()) {
|
|
109
|
+
console.warn('Route changed while component has active interaction, cancelling navigation');
|
|
110
|
+
return [2 /*return*/, false];
|
|
111
|
+
}
|
|
68
112
|
}
|
|
69
113
|
return [2 /*return*/, true];
|
|
70
114
|
}
|
|
@@ -99,6 +143,8 @@ if (false) {
|
|
|
99
143
|
/** @type {?} */
|
|
100
144
|
PlaceComponentDeactivationHandler.prototype.component;
|
|
101
145
|
/** @type {?} */
|
|
102
|
-
PlaceComponentDeactivationHandler.prototype.
|
|
146
|
+
PlaceComponentDeactivationHandler.prototype.navigationState;
|
|
147
|
+
/** @type {?} */
|
|
148
|
+
PlaceComponentDeactivationHandler.prototype.isPrimaryComponent;
|
|
103
149
|
}
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
150
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UtY29tcG9uZW50LWRlYWN0aXZhdGlvbi1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL2d1YXJkcy9wbGFjZS1jb21wb25lbnQtZGVhY3RpdmF0aW9uLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUs1QjtJQUlFLDJDQUFxQixTQUF5QixFQUFXLGVBQWdDLEVBQVcsa0JBQTJCO1FBQTFHLGNBQVMsR0FBVCxTQUFTLENBQWdCO1FBQVcsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQVcsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFTO0lBQy9ILENBQUM7SUFFRCxzQkFBSSxpRUFBa0I7Ozs7UUFBdEI7WUFDRSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUM7UUFDakQsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSwwREFBVzs7OztRQUFmO1lBQ0UsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQztRQUMxQyxDQUFDOzs7T0FBQTs7Ozs7O0lBRUsseURBQWE7Ozs7O0lBQW5CLFVBQW9CLFVBQXVCLEVBQUUsU0FBc0I7OztnQkFDakUsMkVBQTJFO2dCQUMzRSxvRkFBb0Y7Z0JBQ3BGLHNCQUFzQjtnQkFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtvQkFDOUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3Q0FBc0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBTSxDQUFDLENBQUM7b0JBQ3JGLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO2lCQUNoRjtnQkFDRCxzQkFBTyxJQUFJLENBQUMsb0JBQW9CLEVBQUM7OztLQUNsQztJQUdELFdBQVc7Ozs7Ozs7O0lBQ0ssa0VBQXNCOzs7Ozs7OztJQUF0QyxVQUF1QyxVQUF1QixFQUFFLFNBQXNCOzs7Ozs7d0JBQ3BGLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDOzZCQUd6QyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsRUFBL0Isd0JBQStCOzZCQUM3QixDQUFBLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLENBQUEsRUFBbEUsd0JBQWtFO3dCQUM5RCxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyw4QkFBOEIsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDO3dCQUN6RSxVQUFVLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLDJCQUEyQixDQUFDLEtBQUs7NkJBRXhFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLEVBQWhDLHdCQUFnQzt3QkFDbEMscUJBQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGdCQUFnQixFQUFFLENBQUMscUJBQXFCLEVBQUUsRUFBQTs7d0JBQXhFLFNBQXdFLENBQUM7d0JBQ3pFLHNCQUFPLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsMkJBQTJCLENBQUMsS0FBSyxDQUFDLEVBQUM7Ozs2QkFJaEcsQ0FBQSxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFLENBQUEsRUFBakYsd0JBQWlGO3dCQUNuRixxQkFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLHFCQUFxQixFQUFFLEVBQUE7O3dCQUEvRCxTQUErRCxDQUFDO3dCQUNoRSxzQkFBTyxVQUFVO2lDQUNkLG9CQUFvQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLENBQUMsRUFBQTs7d0JBS3hGLDBFQUEwRTt3QkFDMUUsSUFBSSxJQUFJLENBQUMseUJBQXlCLENBQUMsU0FBUyxDQUFDLEVBQUU7NEJBRTdDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUU7Z0NBQ2hDLHFEQUFxRDtnQ0FDckQsOEhBQThIO2dDQUM5SCwrR0FBK0c7Z0NBQy9HLHNCQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUMsRUFBQzs2QkFDOUU7NEJBRUQscUdBQXFHOzRCQUNyRyx3REFBd0Q7NEJBQ3hELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxFQUFFO2dDQUNyRixPQUFPLENBQUMsSUFBSSxDQUFDLDZFQUE2RSxDQUFDLENBQUM7Z0NBQzVGLHNCQUFPLEtBQUssRUFBQzs2QkFDZDt5QkFFRjt3QkFDRCxzQkFBTyxJQUFJLEVBQUM7Ozs7S0FDYjs7Ozs7O0lBRVMscUVBQXlCOzs7OztJQUFuQyxVQUFvQyxTQUFzQjtRQUN4RCxxRkFBcUY7UUFDckYsZ0ZBQWdGO1FBQ2hGLDBDQUEwQztRQUMxQyxPQUFPLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFDSCx3Q0FBQztBQUFELENBQUMsQUE5RUQsSUE4RUM7Ozs7Ozs7SUE1RUMsaUVBQTZEOztJQUVqRCxzREFBa0M7O0lBQUUsNERBQXlDOztJQUFFLCtEQUFvQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYWNlIH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgUGxhY2VDb21wb25lbnQgfSBmcm9tICcuLi9wbGFjZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgVXJsU25hcHNob3QgfSBmcm9tICcuLi91cmwtc25hcHNob3QnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblN0YXRlIH0gZnJvbSAnLi9uYXZpZ2F0aW9uLXN0YXRlJztcblxuZXhwb3J0IGNsYXNzIFBsYWNlQ29tcG9uZW50RGVhY3RpdmF0aW9uSGFuZGxlciB7XG5cbiAgcHJpdmF0ZSBjYW5EZWFjdGl2YXRlUHJvbWlzZTogUHJvbWlzZTxib29sZWFuIHwgVXJsU25hcHNob3Q+O1xuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGNvbXBvbmVudDogUGxhY2VDb21wb25lbnQsIHJlYWRvbmx5IG5hdmlnYXRpb25TdGF0ZTogTmF2aWdhdGlvblN0YXRlLCByZWFkb25seSBpc1ByaW1hcnlDb21wb25lbnQ6IGJvb2xlYW4pIHtcbiAgfVxuXG4gIGdldCBpbnRlcmFjdGlvblNlcnZpY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMubmF2aWdhdGlvblN0YXRlLmludGVyYWN0aW9uU2VydmljZTtcbiAgfVxuXG4gIGdldCBwbGFjZVJvdXRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5uYXZpZ2F0aW9uU3RhdGUucGxhY2VSb3V0ZXI7XG4gIH1cblxuICBhc3luYyBjYW5EZWFjdGl2YXRlKGN1cnJlbnRVcmw6IFVybFNuYXBzaG90LCBuZXh0U3RhdGU6IFVybFNuYXBzaG90KTogUHJvbWlzZTxib29sZWFuIHwgVXJsU25hcHNob3Q+IHtcbiAgICAvLyBXZSdsbCBnZXQgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGlmIHRoZXJlJ3MgYW55IHBhcmFtZXRlciBzYW5pdGlzYXRpb24gc29cbiAgICAvLyB3ZSBhbHdheXMgcmV0dXJuIHRydWUgaWYgd2UgYWNjZXB0ZWQgcHJvbWlzZSBmcm9tIGEgcHJldmlvdXMgY3ljbGUgb2YgdGhlIGN1cnJlbnRcbiAgICAvLyBuYXZpZ2F0aW9uIHNlc3Npb24uXG4gICAgaWYgKCF0aGlzLmNhbkRlYWN0aXZhdGVQcm9taXNlKSB7XG4gICAgICBjb25zb2xlLmxvZyhgY3JlYXRpbmcgZGVhY3RpdmF0ZSBwcm9taXNlIGZvciAtPiAke3RoaXMuY29tcG9uZW50LmNvbnN0cnVjdG9yLm5hbWV9YCk7XG4gICAgICB0aGlzLmNhbkRlYWN0aXZhdGVQcm9taXNlID0gdGhpcy5jYW5EZWFjdGl2YXRlQ29tcG9uZW50KGN1cnJlbnRVcmwsIG5leHRTdGF0ZSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNhbkRlYWN0aXZhdGVQcm9taXNlO1xuICB9XG5cblxuICAvLyBAVHJhY2UoKVxuICBwcm90ZWN0ZWQgYXN5bmMgY2FuRGVhY3RpdmF0ZUNvbXBvbmVudChjdXJyZW50VXJsOiBVcmxTbmFwc2hvdCwgbmV4dFN0YXRlOiBVcmxTbmFwc2hvdCk6IFByb21pc2U8VXJsU25hcHNob3QgfCBib29sZWFuPiB7XG4gICAgY29uc29sZS5sb2codGhpcy5uYXZpZ2F0aW9uU3RhdGUudG9TdHJpbmcoKSk7XG4gICAgLy8gQXV0b21hdGljYWxseSBjYW5jZWwgYW55IGFjdGl2ZSBhY3Rpdml0aWVzIGlmIHRoZSBuYXZpZ2F0aW9uIHNlc3Npb24gd2FzIHRyaWdnZXJlZCBieSB0aGUgYmFjayBidXR0b24uXG4gICAgLy8gSWYgd2UgaGFuZGxlZCBtb3JlIHRoYW4ganVzdCB0aGUgcG9wIHN0YXRlIHRoZW4gaXQgbGVhZHMgdG8gdGhlIFVJIGlnbm9yaW5nIGNsaWNrcyBhbmQganVzdCBjYW5jZWxsaW5nIHRoaW5ncyB3aGljaCBpcyBkZWVwbHkgZGlzY29uY2VydGluZy5cbiAgICBpZiAodGhpcy5uYXZpZ2F0aW9uU3RhdGUuaXNQb3BTdGF0ZSkge1xuICAgICAgaWYgKHRoaXMuaXNQcmltYXJ5Q29tcG9uZW50ICYmIHRoaXMuaW50ZXJhY3Rpb25TZXJ2aWNlLmlzTW9kYWxBY3RpdmUoKSkge1xuICAgICAgICBjb25zdCByb3V0ZUlkcyA9IHRoaXMucGxhY2VSb3V0ZXIuZ2V0QWN0aXZlSW50ZXJhY3Rpb25JZHNGcm9tVXJsKG5leHRTdGF0ZS51cmwpO1xuICAgICAgICBjb25zdCBjdXJyZW50SWRzID0gdGhpcy5pbnRlcmFjdGlvblNlcnZpY2UuYWN0aXZlSW50ZXJhY3Rpb25Db250ZXh0SWRzLnZhbHVlO1xuXG4gICAgICAgIGlmICghXy5pc0VxdWFsKGN1cnJlbnRJZHMsIHJvdXRlSWRzKSkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuaW50ZXJhY3Rpb25TZXJ2aWNlLmdldEFjdGl2ZUNvbnRleHQoKS5jYW5jZWxDdXJyZW50QWN0aXZpdHkoKTtcbiAgICAgICAgICByZXR1cm4gY3VycmVudFVybC51cGRhdGVJbnRlcmFjdGlvbklkcyh0aGlzLmludGVyYWN0aW9uU2VydmljZS5hY3RpdmVJbnRlcmFjdGlvbkNvbnRleHRJZHMudmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBjaGVjayBpZiB0aGUgY29tcG9uZW50IGhhcyBhbiBpbiBwbGFjZSBpbnRlcmFjdGlvblxuICAgICAgICBpZiAodGhpcy5jb21wb25lbnQuaW50ZXJhY3Rpb25Db250ZXh0ICYmIHRoaXMuY29tcG9uZW50LmludGVyYWN0aW9uQ29udGV4dC5pc0FjdGl2ZSgpKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5jb21wb25lbnQuaW50ZXJhY3Rpb25Db250ZXh0LmNhbmNlbEN1cnJlbnRBY3Rpdml0eSgpO1xuICAgICAgICAgIHJldHVybiBjdXJyZW50VXJsXG4gICAgICAgICAgICAudXBkYXRlSW50ZXJhY3Rpb25JZHModGhpcy5pbnRlcmFjdGlvblNlcnZpY2UuYWN0aXZlSW50ZXJhY3Rpb25Db250ZXh0SWRzLnZhbHVlKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gT2ssIHNvIG5vdyB3ZSdyZSByZWFsbHkgbGVhdmluZywgc28gd2UgYXNrIHRoZSBjb21wb25lbnQgaWYgd2Ugc2hvdWxkLjtcbiAgICBpZiAodGhpcy5pc05vdEp1c3RBQ2hhbmdlSW5Sb3V0ZUlkKG5leHRTdGF0ZSkpIHtcblxuICAgICAgaWYgKHRoaXMuY29tcG9uZW50LmNhbkRlYWN0aXZhdGUpIHtcbiAgICAgICAgLy8gTm8gaW50ZXJhY3Rpb24gaW4gcHJvZ3Jlc3MsIHNvIGFzayB0aGUgY29tcG9uZW50IC5cbiAgICAgICAgLy8gVGhpcyBtYXkgc3RhcnQgYW4gaW50ZXJhY3Rpb24sIGhlbmNlIGNoZWNraW5nIHRoZSBpbnRlcmFjdGlvbiBjb250ZXh0IGJlZm9yZSBub3cuIEkuZS4gaWYgdGhlIHBsYWNlIHBvcHMgdXAgdGhlIGRpYWxvZywgYW5kXG4gICAgICAgIC8vIHRoZSB1c2VyIGNsaWNrcyBiYWNrIGFnYWluLCB3ZSdsbCByZS1lbnRlciBoZXJlIGFuZCBnbyBiYW5nIHdoZW4gdGhlIGNvbXBvbmVudCB0cmllcyB0byBvcGVuIGFub3RoZXIgZGlhbG9nLlxuICAgICAgICByZXR1cm4gdGhpcy5jb21wb25lbnQuY2FuRGVhY3RpdmF0ZSh0aGlzLm5hdmlnYXRpb25TdGF0ZS5pbnRlcmFjdGlvbkNvbnRleHQpO1xuICAgICAgfVxuXG4gICAgICAvLyBUaGUgY29tcG9uZW50IGhhcyBhbiBhY3RpdmUgaW50ZXJhY3Rpb24gYnV0IG5vIGRlYWN0aXZhdGlvbiBob29rLiAgUmF0aGVyIHRoYW4gZ3Vlc3Npbmcgd2hhdCB0byBkb1xuICAgICAgLy8gd2UnbGwganVzdCBjYW5jZWwgdGhlIG5hdmlnYXRpb24gYW5kIHByaW50IGEgd2FybmluZy5cbiAgICAgIGlmICh0aGlzLmNvbXBvbmVudC5pbnRlcmFjdGlvbkNvbnRleHQgJiYgdGhpcy5jb21wb25lbnQuaW50ZXJhY3Rpb25Db250ZXh0LmlzQWN0aXZlKCkpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdSb3V0ZSBjaGFuZ2VkIHdoaWxlIGNvbXBvbmVudCBoYXMgYWN0aXZlIGludGVyYWN0aW9uLCBjYW5jZWxsaW5nIG5hdmlnYXRpb24nKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGlzTm90SnVzdEFDaGFuZ2VJblJvdXRlSWQobmV4dFN0YXRlOiBVcmxTbmFwc2hvdCkge1xuICAgIC8vIEJlY2F1c2UgcGxhY2VzIHdpdGggYSByb3V0ZS1pZCBjb3ZlciB0d28gcm91dGUgc2VnbWVudHMgd2UgZ2V0IGFza2VkIHRvIGRlYWN0aXZhdGVcbiAgICAvLyBpZiB0aGUgcm91dGUgaWQgaXMgYWRkZWQgb3IgcmVtb3ZlZC4gIFNvIGlmIG91ciBwYXRoIGlzIHN0aWxsIHByZXNlbnQgdGhlIHVybFxuICAgIC8vIHRoZW4gd2Ugc2hvdWxkbid0IGRlYWN0aXZhdGUgdGhlIHBsYWNlLlxuICAgIHJldHVybiAhbmV4dFN0YXRlLmluY2x1ZGVzUGF0aE9mKHRoaXMuY29tcG9uZW50LnBsYWNlRGVmaW5pdGlvbik7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview added by tsickle
|
|
3
|
+
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
+
*/
|
|
5
|
+
import * as tslib_1 from "tslib";
|
|
6
|
+
import { lang } from '@coolon/pectin';
|
|
7
|
+
import { Observable } from 'rxjs';
|
|
8
|
+
import { PlaceComponent } from '../place-component';
|
|
9
|
+
import { VisitSanitiser } from '../route/visit-sanitiser';
|
|
10
|
+
import { UrlSnapshot } from '../url-snapshot';
|
|
11
|
+
import { Visit } from '../visit';
|
|
12
|
+
import { ConsolidatedParameterMap } from './consolidated-param-map';
|
|
13
|
+
/**
|
|
14
|
+
* @abstract
|
|
15
|
+
*/
|
|
16
|
+
var /**
|
|
17
|
+
* @abstract
|
|
18
|
+
*/
|
|
19
|
+
PlaceGuard = /** @class */ (function () {
|
|
20
|
+
function PlaceGuard(router, urlSerializer, placeRouter, placeHistory, interactionService, injector) {
|
|
21
|
+
this.router = router;
|
|
22
|
+
this.urlSerializer = urlSerializer;
|
|
23
|
+
this.placeRouter = placeRouter;
|
|
24
|
+
this.placeHistory = placeHistory;
|
|
25
|
+
this.interactionService = interactionService;
|
|
26
|
+
this.injector = injector;
|
|
27
|
+
}
|
|
28
|
+
// @Trace()
|
|
29
|
+
// @Trace()
|
|
30
|
+
/**
|
|
31
|
+
* @param {?} activatedRoute
|
|
32
|
+
* @param {?} state
|
|
33
|
+
* @return {?}
|
|
34
|
+
*/
|
|
35
|
+
PlaceGuard.prototype.canActivate =
|
|
36
|
+
// @Trace()
|
|
37
|
+
/**
|
|
38
|
+
* @param {?} activatedRoute
|
|
39
|
+
* @param {?} state
|
|
40
|
+
* @return {?}
|
|
41
|
+
*/
|
|
42
|
+
function (activatedRoute, state) {
|
|
43
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
44
|
+
var _this = this;
|
|
45
|
+
return tslib_1.__generator(this, function (_a) {
|
|
46
|
+
// TODO: this is ugly now that I'm return UrlSnapshots and not UrlTrees. It'd be better if the functions
|
|
47
|
+
// weren't nested or if I implemented a handler chain.
|
|
48
|
+
return [2 /*return*/, this.authorisePlaceThen(activatedRoute, state, (/**
|
|
49
|
+
* @param {?} placeDefinition
|
|
50
|
+
* @return {?}
|
|
51
|
+
*/
|
|
52
|
+
function (placeDefinition) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
53
|
+
var result;
|
|
54
|
+
var _this = this;
|
|
55
|
+
return tslib_1.__generator(this, function (_a) {
|
|
56
|
+
switch (_a.label) {
|
|
57
|
+
case 0: return [4 /*yield*/, this.cleanInteractionState(activatedRoute, state, (/**
|
|
58
|
+
* @return {?}
|
|
59
|
+
*/
|
|
60
|
+
function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
61
|
+
var params, parsedParams, initialVisit, sanitiser, sanitisedVisit, urlSnapshot;
|
|
62
|
+
return tslib_1.__generator(this, function (_a) {
|
|
63
|
+
switch (_a.label) {
|
|
64
|
+
case 0:
|
|
65
|
+
// Parse our route params.
|
|
66
|
+
params = new ConsolidatedParameterMap(activatedRoute.paramMap, activatedRoute.url);
|
|
67
|
+
parsedParams = placeDefinition.parseRouteParams(params);
|
|
68
|
+
initialVisit = this.placeRouter.navigationState.getVisitFor(placeDefinition) || new Visit(placeDefinition, parsedParams);
|
|
69
|
+
sanitiser = new VisitSanitiser(activatedRoute, this.router, this.placeHistory, this.injector);
|
|
70
|
+
return [4 /*yield*/, sanitiser.sanitise(initialVisit.mergeRouteParameters(parsedParams))];
|
|
71
|
+
case 1:
|
|
72
|
+
sanitisedVisit = _a.sent();
|
|
73
|
+
// Save the visit with any updated parameters. We need to save it so we remember any non route parameters
|
|
74
|
+
this.placeRouter.navigationState.storeVisit(sanitisedVisit);
|
|
75
|
+
if (initialVisit.hasRoutingChangedFrom(sanitisedVisit)) {
|
|
76
|
+
// Regenerate the url
|
|
77
|
+
urlSnapshot = this.placeRouter.parseUrl(state.url).updateVisitSegments(sanitisedVisit);
|
|
78
|
+
console.log('##### Place Guard Redirect', urlSnapshot);
|
|
79
|
+
return [2 /*return*/, urlSnapshot];
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
return [2 /*return*/, true];
|
|
83
|
+
}
|
|
84
|
+
return [2 /*return*/];
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
}); }))];
|
|
88
|
+
case 1:
|
|
89
|
+
result = _a.sent();
|
|
90
|
+
return [2 /*return*/, this.handleGuardResult(result)];
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
}); }))];
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
};
|
|
97
|
+
// @Trace()
|
|
98
|
+
// @Trace()
|
|
99
|
+
/**
|
|
100
|
+
* @param {?} component
|
|
101
|
+
* @param {?} currentRoute
|
|
102
|
+
* @param {?} currentState
|
|
103
|
+
* @param {?=} nextState
|
|
104
|
+
* @return {?}
|
|
105
|
+
*/
|
|
106
|
+
PlaceGuard.prototype.canDeactivate =
|
|
107
|
+
// @Trace()
|
|
108
|
+
/**
|
|
109
|
+
* @param {?} component
|
|
110
|
+
* @param {?} currentRoute
|
|
111
|
+
* @param {?} currentState
|
|
112
|
+
* @param {?=} nextState
|
|
113
|
+
* @return {?}
|
|
114
|
+
*/
|
|
115
|
+
function (component, currentRoute, currentState, nextState) {
|
|
116
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
117
|
+
var currentUrl, nextUrl, result;
|
|
118
|
+
return tslib_1.__generator(this, function (_a) {
|
|
119
|
+
switch (_a.label) {
|
|
120
|
+
case 0:
|
|
121
|
+
currentUrl = this.placeRouter.parseUrl(currentState.url);
|
|
122
|
+
nextUrl = this.placeRouter.parseUrl(nextState.url);
|
|
123
|
+
return [4 /*yield*/, this.placeRouter.navigationState.canDeactivatePlace(component, currentUrl, nextUrl)];
|
|
124
|
+
case 1:
|
|
125
|
+
result = _a.sent();
|
|
126
|
+
return [2 /*return*/, this.handleGuardResult(result)];
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
};
|
|
131
|
+
/**
|
|
132
|
+
* @private
|
|
133
|
+
* @param {?} result
|
|
134
|
+
* @return {?}
|
|
135
|
+
*/
|
|
136
|
+
PlaceGuard.prototype.handleGuardResult = /**
|
|
137
|
+
* @private
|
|
138
|
+
* @param {?} result
|
|
139
|
+
* @return {?}
|
|
140
|
+
*/
|
|
141
|
+
function (result) {
|
|
142
|
+
if (result instanceof UrlSnapshot) {
|
|
143
|
+
return result.urlTree;
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
return result;
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
// @Trace()
|
|
150
|
+
// @Trace()
|
|
151
|
+
/**
|
|
152
|
+
* @protected
|
|
153
|
+
* @param {?} activatedRoute
|
|
154
|
+
* @param {?} state
|
|
155
|
+
* @param {?} runPlaceGuards
|
|
156
|
+
* @return {?}
|
|
157
|
+
*/
|
|
158
|
+
PlaceGuard.prototype.authorisePlaceThen =
|
|
159
|
+
// @Trace()
|
|
160
|
+
/**
|
|
161
|
+
* @protected
|
|
162
|
+
* @param {?} activatedRoute
|
|
163
|
+
* @param {?} state
|
|
164
|
+
* @param {?} runPlaceGuards
|
|
165
|
+
* @return {?}
|
|
166
|
+
*/
|
|
167
|
+
function (activatedRoute, state, runPlaceGuards) {
|
|
168
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
169
|
+
var placeDefinition, authoriseResult, _a;
|
|
170
|
+
return tslib_1.__generator(this, function (_b) {
|
|
171
|
+
switch (_b.label) {
|
|
172
|
+
case 0:
|
|
173
|
+
if (!PlaceComponent.isPlaceComponentConstructor(activatedRoute.component)) return [3 /*break*/, 4];
|
|
174
|
+
placeDefinition = PlaceComponent.getDefinition(activatedRoute.component);
|
|
175
|
+
if (!placeDefinition.authenticate) return [3 /*break*/, 2];
|
|
176
|
+
return [4 /*yield*/, this.isAuthorised(activatedRoute, state)];
|
|
177
|
+
case 1:
|
|
178
|
+
_a = _b.sent();
|
|
179
|
+
return [3 /*break*/, 3];
|
|
180
|
+
case 2:
|
|
181
|
+
_a = true;
|
|
182
|
+
_b.label = 3;
|
|
183
|
+
case 3:
|
|
184
|
+
authoriseResult = _a;
|
|
185
|
+
if (authoriseResult === true) {
|
|
186
|
+
// we're authorised, now run the place guards.
|
|
187
|
+
return [2 /*return*/, runPlaceGuards(placeDefinition)];
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
console.log('not authorised result', authoriseResult);
|
|
191
|
+
return [2 /*return*/, authoriseResult];
|
|
192
|
+
}
|
|
193
|
+
return [3 /*break*/, 5];
|
|
194
|
+
case 4: return [2 /*return*/, lang.illegalState("expected component to be an instance of PlaceComponent, got " + activatedRoute.component)];
|
|
195
|
+
case 5: return [2 /*return*/];
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
});
|
|
199
|
+
};
|
|
200
|
+
// @Trace()
|
|
201
|
+
// @Trace()
|
|
202
|
+
/**
|
|
203
|
+
* @param {?} activatedRoute
|
|
204
|
+
* @param {?} state
|
|
205
|
+
* @return {?}
|
|
206
|
+
*/
|
|
207
|
+
PlaceGuard.prototype.isAuthorised =
|
|
208
|
+
// @Trace()
|
|
209
|
+
/**
|
|
210
|
+
* @param {?} activatedRoute
|
|
211
|
+
* @param {?} state
|
|
212
|
+
* @return {?}
|
|
213
|
+
*/
|
|
214
|
+
function (activatedRoute, state) {
|
|
215
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
216
|
+
var authorised;
|
|
217
|
+
return tslib_1.__generator(this, function (_a) {
|
|
218
|
+
authorised = this.getAuthGuard(this.injector).canActivate(activatedRoute, state);
|
|
219
|
+
return [2 /*return*/, (authorised instanceof Observable) ? authorised.toPromise() : authorised];
|
|
220
|
+
});
|
|
221
|
+
});
|
|
222
|
+
};
|
|
223
|
+
// @Trace()
|
|
224
|
+
// @Trace()
|
|
225
|
+
/**
|
|
226
|
+
* @param {?} route
|
|
227
|
+
* @param {?} state
|
|
228
|
+
* @param {?} then
|
|
229
|
+
* @return {?}
|
|
230
|
+
*/
|
|
231
|
+
PlaceGuard.prototype.cleanInteractionState =
|
|
232
|
+
// @Trace()
|
|
233
|
+
/**
|
|
234
|
+
* @param {?} route
|
|
235
|
+
* @param {?} state
|
|
236
|
+
* @param {?} then
|
|
237
|
+
* @return {?}
|
|
238
|
+
*/
|
|
239
|
+
function (route, state, then) {
|
|
240
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
241
|
+
var url;
|
|
242
|
+
return tslib_1.__generator(this, function (_a) {
|
|
243
|
+
url = this.placeRouter.parseUrl(state.url);
|
|
244
|
+
if (!this.interactionService.isActive() && url.hasInteractionIds()) {
|
|
245
|
+
// This happens if we reload the page or the url was pasted as the route should only be activated
|
|
246
|
+
// after the interaction context has become active.
|
|
247
|
+
return [2 /*return*/, url.removeInteractionIds()];
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
return [2 /*return*/, then()];
|
|
251
|
+
}
|
|
252
|
+
return [2 /*return*/];
|
|
253
|
+
});
|
|
254
|
+
});
|
|
255
|
+
};
|
|
256
|
+
return PlaceGuard;
|
|
257
|
+
}());
|
|
258
|
+
/**
|
|
259
|
+
* @abstract
|
|
260
|
+
*/
|
|
261
|
+
export { PlaceGuard };
|
|
262
|
+
if (false) {
|
|
263
|
+
/**
|
|
264
|
+
* @type {?}
|
|
265
|
+
* @private
|
|
266
|
+
*/
|
|
267
|
+
PlaceGuard.prototype.router;
|
|
268
|
+
/**
|
|
269
|
+
* @type {?}
|
|
270
|
+
* @private
|
|
271
|
+
*/
|
|
272
|
+
PlaceGuard.prototype.urlSerializer;
|
|
273
|
+
/**
|
|
274
|
+
* @type {?}
|
|
275
|
+
* @private
|
|
276
|
+
*/
|
|
277
|
+
PlaceGuard.prototype.placeRouter;
|
|
278
|
+
/**
|
|
279
|
+
* @type {?}
|
|
280
|
+
* @private
|
|
281
|
+
*/
|
|
282
|
+
PlaceGuard.prototype.placeHistory;
|
|
283
|
+
/**
|
|
284
|
+
* @type {?}
|
|
285
|
+
* @private
|
|
286
|
+
*/
|
|
287
|
+
PlaceGuard.prototype.interactionService;
|
|
288
|
+
/**
|
|
289
|
+
* @type {?}
|
|
290
|
+
* @private
|
|
291
|
+
*/
|
|
292
|
+
PlaceGuard.prototype.injector;
|
|
293
|
+
/**
|
|
294
|
+
* @abstract
|
|
295
|
+
* @param {?} injector
|
|
296
|
+
* @return {?}
|
|
297
|
+
*/
|
|
298
|
+
PlaceGuard.prototype.getAuthGuard = function (injector) { };
|
|
299
|
+
}
|
|
300
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UuZ3VhcmQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvcGxhY2UvZ3VhcmRzL3BsYWNlLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBVUEsT0FBTyxFQUFFLElBQUksRUFBUyxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSXBELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNqQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7OztBQUdwRTs7OztJQUdFLG9CQUE2QixNQUFjLEVBQ3ZCLGFBQTRCLEVBQ25CLFdBQXdCLEVBQ3hCLFlBQTBCLEVBQzFCLGtCQUFzQyxFQUN0QyxRQUFrQjtRQUxsQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ3ZCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQ25CLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUMvQyxDQUFDO0lBRUQsV0FBVzs7Ozs7OztJQUNMLGdDQUFXOzs7Ozs7O0lBQWpCLFVBQWtCLGNBQXNDLEVBQUUsS0FBMEI7Ozs7Z0JBRWpGLHlHQUF5RztnQkFDMUcsNkRBQTZEO2dCQUM3RCxzQkFBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxFQUFFLEtBQUs7Ozs7b0JBQUUsVUFBTyxlQUFlOzs7Ozt3Q0FFM0QscUJB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aUJBQ2Y7Ozs7S0FDRjtJQUVILGlCQUFDO0FBQUQsQ0FBQyxBQWhHRCxJQWdHQzs7Ozs7Ozs7OztJQTdGYSw0QkFBK0I7Ozs7O0lBQy9CLG1DQUFvQzs7Ozs7SUFDcEMsaUNBQXlDOzs7OztJQUN6QyxrQ0FBMkM7Ozs7O0lBQzNDLHdDQUF1RDs7Ozs7SUFDdkQsOEJBQW1DOzs7Ozs7SUEwRS9DLDREQUF1RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICBDYW5BY3RpdmF0ZSxcbiAgQ2FuRGVhY3RpdmF0ZSxcbiAgUm91dGVyLFxuICBSb3V0ZXJTdGF0ZVNuYXBzaG90LFxuICBVcmxTZXJpYWxpemVyLFxuICBVcmxUcmVlXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBsYW5nLCBUcmFjZSB9IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEludGVyYWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2ludGVyYWN0aW9uL3NlcnZpY2VzL2ludGVyYWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGxhY2VDb21wb25lbnQgfSBmcm9tICcuLi9wbGFjZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgUGxhY2VEZWZpbml0aW9uIH0gZnJvbSAnLi4vcGxhY2UtZGVmaW5pdGlvbic7XG5pbXBvcnQgeyBQbGFjZUhpc3RvcnkgfSBmcm9tICcuLi9wbGFjZS1oaXN0b3J5JztcbmltcG9ydCB7IFBsYWNlUm91dGVyIH0gZnJvbSAnLi4vcGxhY2Utcm91dGVyJztcbmltcG9ydCB7IFZpc2l0U2FuaXRpc2VyIH0gZnJvbSAnLi4vcm91dGUvdmlzaXQtc2FuaXRpc2VyJztcbmltcG9ydCB7IFVybFNuYXBzaG90IH0gZnJvbSAnLi4vdXJsLXNuYXBzaG90JztcbmltcG9ydCB7IFZpc2l0IH0gZnJvbSAnLi4vdmlzaXQnO1xuaW1wb3J0IHsgQ29uc29saWRhdGVkUGFyYW1ldGVyTWFwIH0gZnJvbSAnLi9jb25zb2xpZGF0ZWQtcGFyYW0tbWFwJztcblxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUGxhY2VHdWFyZCBpbXBsZW1lbnRzIENhbkFjdGl2YXRlLCBDYW5EZWFjdGl2YXRlPFBsYWNlQ29tcG9uZW50PiB7XG5cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgICAgICAgICAgICBwcml2YXRlIHVybFNlcmlhbGl6ZXI6IFVybFNlcmlhbGl6ZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcGxhY2VSb3V0ZXI6IFBsYWNlUm91dGVyLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHBsYWNlSGlzdG9yeTogUGxhY2VIaXN0b3J5LFxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGludGVyYWN0aW9uU2VydmljZTogSW50ZXJhY3Rpb25TZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3Rvcikge1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgYXN5bmMgY2FuQWN0aXZhdGUoYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogUHJvbWlzZTxib29sZWFuIHwgVXJsVHJlZT4ge1xuXG4gICAgIC8vIFRPRE86IHRoaXMgaXMgdWdseSBub3cgdGhhdCBJJ20gcmV0dXJuIFVybFNuYXBzaG90cyBhbmQgbm90IFVybFRyZWVzLiAgSXQnZCBiZSBiZXR0ZXIgaWYgdGhlIGZ1bmN0aW9uc1xuICAgIC8vICAgICAgICB3ZXJlbid0IG5lc3RlZCBvciBpZiBJIGltcGxlbWVudGVkIGEgaGFuZGxlciBjaGFpbi5cbiAgICByZXR1cm4gdGhpcy5hdXRob3Jpc2VQbGFjZVRoZW4oYWN0aXZhdGVkUm91dGUsIHN0YXRlLCBhc3luYyAocGxhY2VEZWZpbml0aW9uKSA9PiB7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuY2xlYW5JbnRlcmFjdGlvblN0YXRlKGFjdGl2YXRlZFJvdXRlLCBzdGF0ZSwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAvLyBQYXJzZSBvdXIgcm91dGUgcGFyYW1zLlxuICAgICAgICBjb25zdCBwYXJhbXMgPSBuZXcgQ29uc29saWRhdGVkUGFyYW1ldGVyTWFwKGFjdGl2YXRlZFJvdXRlLnBhcmFtTWFwLCBhY3RpdmF0ZWRSb3V0ZS51cmwpO1xuICAgICAgICBjb25zdCBwYXJzZWRQYXJhbXMgPSBwbGFjZURlZmluaXRpb24ucGFyc2VSb3V0ZVBhcmFtcyhwYXJhbXMpO1xuXG4gICAgICAgIGNvbnN0IGluaXRpYWxWaXNpdCA9IHRoaXMucGxhY2VSb3V0ZXIubmF2aWdhdGlvblN0YXRlLmdldFZpc2l0Rm9yKHBsYWNlRGVmaW5pdGlvbikgfHwgbmV3IFZpc2l0KHBsYWNlRGVmaW5pdGlvbiwgcGFyc2VkUGFyYW1zKTtcbiAgICAgICAgY29uc3Qgc2FuaXRpc2VyID0gbmV3IFZpc2l0U2FuaXRpc2VyKGFjdGl2YXRlZFJvdXRlLCB0aGlzLnJvdXRlciwgdGhpcy5wbGFjZUhpc3RvcnksIHRoaXMuaW5qZWN0b3IpO1xuICAgICAgICBjb25zdCBzYW5pdGlzZWRWaXNpdCA9IGF3YWl0IHNhbml0aXNlci5zYW5pdGlzZShpbml0aWFsVmlzaXQubWVyZ2VSb3V0ZVBhcmFtZXRlcnMocGFyc2VkUGFyYW1zKSk7XG5cbiAgICAgICAgLy8gU2F2ZSB0aGUgdmlzaXQgd2l0aCBhbnkgdXBkYXRlZCBwYXJhbWV0ZXJzLiAgV2UgbmVlZCB0byBzYXZlIGl0IHNvIHdlIHJlbWVtYmVyIGFueSBub24gcm91dGUgcGFyYW1ldGVyc1xuICAgICAgICB0aGlzLnBsYWNlUm91dGVyLm5hdmlnYXRpb25TdGF0ZS5zdG9yZVZpc2l0KHNhbml0aXNlZFZpc2l0KTtcbiAgICAgICAgaWYgKGluaXRpYWxWaXNpdC5oYXNSb3V0aW5nQ2hhbmdlZEZyb20oc2FuaXRpc2VkVmlzaXQpKSB7XG4gICAgICAgICAgLy8gUmVnZW5lcmF0ZSB0aGUgdXJsXG4gICAgICAgICAgY29uc3QgdXJsU25hcHNob3QgPSB0aGlzLnBsYWNlUm91dGVyLnBhcnNlVXJsKHN0YXRlLnVybCkudXBkYXRlVmlzaXRTZWdtZW50cyhzYW5pdGlzZWRWaXNpdCk7XG4gICAgICAgICAgY29uc29sZS5sb2coJyMjIyMjIFBsYWNlIEd1YXJkIFJlZGlyZWN0JywgdXJsU25hcHNob3QpO1xuICAgICAgICAgIHJldHVybiB1cmxTbmFwc2hvdDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVHdWFyZFJlc3VsdChyZXN1bHQpO1xuXG4gICAgfSk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBhc3luYyBjYW5EZWFjdGl2YXRlKGNvbXBvbmVudDogUGxhY2VDb21wb25lbnQsIGN1cnJlbnRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgY3VycmVudFN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBuZXh0U3RhdGU/OiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogUHJvbWlzZTxib29sZWFuIHwgVXJsVHJlZT4ge1xuICAgIGNvbnN0IGN1cnJlbnRVcmwgPSB0aGlzLnBsYWNlUm91dGVyLnBhcnNlVXJsKGN1cnJlbnRTdGF0ZS51cmwpO1xuICAgIGNvbnN0IG5leHRVcmwgPSB0aGlzLnBsYWNlUm91dGVyLnBhcnNlVXJsKG5leHRTdGF0ZS51cmwpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucGxhY2VSb3V0ZXIubmF2aWdhdGlvblN0YXRlLmNhbkRlYWN0aXZhdGVQbGFjZShjb21wb25lbnQsIGN1cnJlbnRVcmwsIG5leHRVcmwpO1xuICAgIHJldHVybiB0aGlzLmhhbmRsZUd1YXJkUmVzdWx0KHJlc3VsdCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUd1YXJkUmVzdWx0KHJlc3VsdCkge1xuICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBVcmxTbmFwc2hvdCkge1xuICAgICAgcmV0dXJuIHJlc3VsdC51cmxUcmVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgfVxuXG4vLyBAVHJhY2UoKVxuICBwcm90ZWN0ZWQgYXN5bmMgYXV0aG9yaXNlUGxhY2VUaGVuKGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCwgcnVuUGxhY2VHdWFyZHM6IChwbGFjZURlZmluaXRpb246IFBsYWNlRGVmaW5pdGlvbikgPT4gUHJvbWlzZTxib29sZWFuIHwgVXJsVHJlZT4pIHtcbiAgICBpZiAoUGxhY2VDb21wb25lbnQuaXNQbGFjZUNvbXBvbmVudENvbnN0cnVjdG9yKGFjdGl2YXRlZFJvdXRlLmNvbXBvbmVudCkpIHtcbiAgICAgIGNvbnN0IHBsYWNlRGVmaW5pdGlvbiA9IFBsYWNlQ29tcG9uZW50LmdldERlZmluaXRpb24oYWN0aXZhdGVkUm91dGUuY29tcG9uZW50KTtcbiAgICAgIGNvbnN0IGF1dGhvcmlzZVJlc3VsdCA9IHBsYWNlRGVmaW5pdGlvbi5hdXRoZW50aWNhdGUgPyBhd2FpdCB0aGlzLmlzQXV0aG9yaXNlZChhY3RpdmF0ZWRSb3V0ZSwgc3RhdGUpIDogdHJ1ZTtcbiAgICAgIGlmIChhdXRob3Jpc2VSZXN1bHQgPT09IHRydWUpIHtcbiAgICAgICAgLy8gd2UncmUgYXV0aG9yaXNlZCwgbm93IHJ1biB0aGUgcGxhY2UgZ3VhcmRzLlxuICAgICAgICByZXR1cm4gcnVuUGxhY2VHdWFyZHMocGxhY2VEZWZpbml0aW9uKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdub3QgYXV0aG9yaXNlZCByZXN1bHQnLCBhdXRob3Jpc2VSZXN1bHQpO1xuICAgICAgICByZXR1cm4gYXV0aG9yaXNlUmVzdWx0O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbGFuZy5pbGxlZ2FsU3RhdGUoYGV4cGVjdGVkIGNvbXBvbmVudCB0byBiZSBhbiBpbnN0YW5jZSBvZiBQbGFjZUNvbXBvbmVudCwgZ290ICR7YWN0aXZhdGVkUm91dGUuY29tcG9uZW50fWApO1xuICAgIH1cbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIGFzeW5jIGlzQXV0aG9yaXNlZChhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBQcm9taXNlPGJvb2xlYW4gfCBVcmxUcmVlPiB7XG4gICAgY29uc3QgYXV0aG9yaXNlZCA9IHRoaXMuZ2V0QXV0aEd1YXJkKHRoaXMuaW5qZWN0b3IpLmNhbkFjdGl2YXRlKGFjdGl2YXRlZFJvdXRlLCBzdGF0ZSk7XG4gICAgcmV0dXJuIChhdXRob3Jpc2VkIGluc3RhbmNlb2YgT2JzZXJ2YWJsZSkgPyBhdXRob3Jpc2VkLnRvUHJvbWlzZSgpIDogYXV0aG9yaXNlZDtcbiAgfVxuXG4gIGFic3RyYWN0IGdldEF1dGhHdWFyZChpbmplY3RvcjogSW5qZWN0b3IpOiBDYW5BY3RpdmF0ZTtcblxuICAvLyBAVHJhY2UoKVxuICBhc3luYyBjbGVhbkludGVyYWN0aW9uU3RhdGUocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90LCB0aGVuOiAoKSA9PiBQcm9taXNlPGJvb2xlYW4gfCBVcmxTbmFwc2hvdD4pOiBQcm9taXNlPGJvb2xlYW4gfCBVcmxTbmFwc2hvdD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMucGxhY2VSb3V0ZXIucGFyc2VVcmwoc3RhdGUudXJsKTtcbiAgICBpZiAoIXRoaXMuaW50ZXJhY3Rpb25TZXJ2aWNlLmlzQWN0aXZlKCkgJiYgdXJsLmhhc0ludGVyYWN0aW9uSWRzKCkpIHtcbiAgICAgIC8vIFRoaXMgaGFwcGVucyBpZiB3ZSByZWxvYWQgdGhlIHBhZ2Ugb3IgdGhlIHVybCB3YXMgcGFzdGVkIGFzIHRoZSByb3V0ZSBzaG91bGQgb25seSBiZSBhY3RpdmF0ZWRcbiAgICAgIC8vIGFmdGVyIHRoZSBpbnRlcmFjdGlvbiBjb250ZXh0IGhhcyBiZWNvbWUgYWN0aXZlLlxuICAgICAgcmV0dXJuIHVybC5yZW1vdmVJbnRlcmFjdGlvbklkcygpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhlbigpO1xuICAgIH1cbiAgfVxuXG59XG4iXX0=
|
package/esm5/lib/place/index.js
CHANGED
|
@@ -22,12 +22,11 @@ export { ListPlaceNavComponent } from "./components/list-place-nav/list-place-na
|
|
|
22
22
|
export { PlaceOutletComponent } from "./components/place-outlet/place-outlet.component";
|
|
23
23
|
export { leftRightPlaceAnimation, LEFT_RIGHT_PLACE_ANIMATION } from "./components/place-outlet/route-animations";
|
|
24
24
|
export { TabbedPlaceNavigationComponent } from "./components/tabbed-place-navigation/tabbed-place-navigation.component";
|
|
25
|
-
export { AbstractPlaceGuard } from "./guards/abstract-place.guard";
|
|
26
25
|
export { ConsolidatedParameterMap } from "./guards/consolidated-param-map";
|
|
27
|
-
export { InteractionGuard } from "./guards/interaction.guard";
|
|
28
26
|
export { NavigationState } from "./guards/navigation-state";
|
|
29
27
|
export { NoopAuthGuard } from "./guards/noop-auth-guard.service";
|
|
30
28
|
export { PlaceComponentDeactivationHandler } from "./guards/place-component-deactivation-handler";
|
|
29
|
+
export { PlaceGuard } from "./guards/place.guard";
|
|
31
30
|
export { Formatter } from "./route/formatter";
|
|
32
31
|
export {} from "./route/json-types";
|
|
33
32
|
export { RouteId, VisitParameter, VisitParameterList } from "./route/parameter-decorators";
|
|
@@ -35,4 +34,4 @@ export { ParameterDefinition } from "./route/parameter-definition.class";
|
|
|
35
34
|
export {} from "./route/parameter-sanitiser";
|
|
36
35
|
export {} from "./route/parameter-snapshot";
|
|
37
36
|
export { VisitSanitiser } from "./route/visit-sanitiser";
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvcGxhY2UvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUlBLGVBQWMsWUFBWSxDQUFDO0FBQzNCLG1GQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGlDQUFjLGdCQUFnQixDQUFDO0FBQy9CLGdDQUFjLG9CQUFvQixDQUFDO0FBQ25DLDZCQUFjLGlCQUFpQixDQUFDO0FBQ2hDLDRCQUFjLGdCQUFnQixDQUFDO0FBQy9CLHNCQUFjLG1CQUFtQixDQUFDO0FBQ2xDLDRCQUFjLGdCQUFnQixDQUFDO0FBQy9CLDRCQUFjLGdCQUFnQixDQUFDO0FBQy9CLHNCQUFjLFNBQVMsQ0FBQztBQUN4QixpREFBYyxrREFBa0QsQ0FBQztBQUNqRSxxQ0FBYyxrREFBa0QsQ0FBQztBQUNqRSxvQ0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxzQ0FBYyxzREFBc0QsQ0FBQztBQUNyRSxxQ0FBYyxrREFBa0QsQ0FBQztBQUNqRSxvRUFBYyw0Q0FBNEMsQ0FBQztBQUMzRCwrQ0FBYyx3RUFBd0UsQ0FBQztBQUN2Rix5Q0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxnQ0FBYywyQkFBMkIsQ0FBQztBQUMxQyw4QkFBYyxrQ0FBa0MsQ0FBQztBQUNqRCxrREFBYywrQ0FBK0MsQ0FBQztBQUM5RCwyQkFBYyxzQkFBc0IsQ0FBQztBQUNyQywwQkFBYyxtQkFBbUIsQ0FBQztBQUNsQyxlQUFjLG9CQUFvQixDQUFDO0FBQ25DLDREQUFjLDhCQUE4QixDQUFDO0FBQzdDLG9DQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGVBQWMsNkJBQTZCLENBQUM7QUFDNUMsZUFBYyw0QkFBNEIsQ0FBQztBQUMzQywrQkFBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGUgQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgYmFycmVsc2J5LlxuICovXG5cbmV4cG9ydCAqIGZyb20gXCIuL25hdi1pdGVtXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wbGFjZS1jb21wb25lbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BsYWNlLWNvbmZpZ1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGxhY2UtZGVmaW5pdGlvblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGxhY2UtaGlzdG9yeVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGxhY2Utcm91dGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wbGFjZS5kZWNvcmF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BsYWNlLm1vZHVsZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXJsLXNuYXBzaG90XCI7XG5leHBvcnQgKiBmcm9tIFwiLi92aXNpdFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9hYnN0cmFjdC1wbGFjZS1uYXZpZ2F0aW9uLmNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9idXN5LW92ZXJsYXkvYnVzeS1vdmVybGF5LmNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5jb21wb25lbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvbGlzdC1wbGFjZS1uYXYvbGlzdC1wbGFjZS1uYXYuY29tcG9uZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL3BsYWNlLW91dGxldC9wbGFjZS1vdXRsZXQuY29tcG9uZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL3BsYWNlLW91dGxldC9yb3V0ZS1hbmltYXRpb25zXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL3RhYmJlZC1wbGFjZS1uYXZpZ2F0aW9uL3RhYmJlZC1wbGFjZS1uYXZpZ2F0aW9uLmNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZ3VhcmRzL2NvbnNvbGlkYXRlZC1wYXJhbS1tYXBcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2d1YXJkcy9uYXZpZ2F0aW9uLXN0YXRlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ndWFyZHMvbm9vcC1hdXRoLWd1YXJkLnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2d1YXJkcy9wbGFjZS1jb21wb25lbnQtZGVhY3RpdmF0aW9uLWhhbmRsZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2d1YXJkcy9wbGFjZS5ndWFyZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcm91dGUvZm9ybWF0dGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yb3V0ZS9qc29uLXR5cGVzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yb3V0ZS9wYXJhbWV0ZXItZGVjb3JhdG9yc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcm91dGUvcGFyYW1ldGVyLWRlZmluaXRpb24uY2xhc3NcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JvdXRlL3BhcmFtZXRlci1zYW5pdGlzZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JvdXRlL3BhcmFtZXRlci1zbmFwc2hvdFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcm91dGUvdmlzaXQtc2FuaXRpc2VyXCI7XG4iXX0=
|