@coolon/angular-ui-powerups 0.0.101 → 0.0.103

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 (64) hide show
  1. package/bundles/coolon-angular-ui-powerups.umd.js +885 -632
  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 +1 -2
  6. package/coolon-angular-ui-powerups.metadata.json +1 -1
  7. package/esm2015/coolon-angular-ui-powerups.js +3 -4
  8. package/esm2015/index.js +2 -2
  9. package/esm2015/lib/interaction/components/activity-container/activity-container.component.js +2 -1
  10. package/esm2015/lib/interaction/index.js +1 -2
  11. package/esm2015/lib/interaction/interaction-context-base.js +21 -8
  12. package/esm2015/lib/interaction/interaction-context.js +56 -3
  13. package/esm2015/lib/interaction/interaction.module.js +1 -4
  14. package/esm2015/lib/interaction/services/interaction.service.js +11 -7
  15. package/esm2015/lib/place/guards/navigation-state.js +216 -135
  16. package/esm2015/lib/place/guards/place-component-deactivation-handler.js +63 -28
  17. package/esm2015/lib/place/guards/place.guard.js +215 -0
  18. package/esm2015/lib/place/index.js +2 -3
  19. package/esm2015/lib/place/place-router.js +34 -36
  20. package/esm2015/lib/place/place.decorator.js +2 -2
  21. package/esm2015/lib/place/url-snapshot.js +69 -53
  22. package/esm2015/public_api.js +3 -3
  23. package/esm5/coolon-angular-ui-powerups.js +3 -4
  24. package/esm5/index.js +2 -2
  25. package/esm5/lib/interaction/components/activity-container/activity-container.component.js +2 -1
  26. package/esm5/lib/interaction/index.js +1 -2
  27. package/esm5/lib/interaction/interaction-context-base.js +25 -8
  28. package/esm5/lib/interaction/interaction-context.js +88 -10
  29. package/esm5/lib/interaction/interaction.module.js +1 -4
  30. package/esm5/lib/interaction/services/interaction.service.js +17 -8
  31. package/esm5/lib/place/guards/navigation-state.js +280 -162
  32. package/esm5/lib/place/guards/place-component-deactivation-handler.js +73 -27
  33. package/esm5/lib/place/guards/place.guard.js +300 -0
  34. package/esm5/lib/place/index.js +2 -3
  35. package/esm5/lib/place/place-router.js +52 -39
  36. package/esm5/lib/place/place.decorator.js +2 -2
  37. package/esm5/lib/place/url-snapshot.js +85 -58
  38. package/esm5/public_api.js +3 -3
  39. package/fesm2015/coolon-angular-ui-powerups.js +661 -539
  40. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  41. package/fesm5/coolon-angular-ui-powerups.js +884 -628
  42. package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
  43. package/lib/interaction/index.d.ts +0 -1
  44. package/lib/interaction/interaction-context-base.d.ts +3 -1
  45. package/lib/interaction/interaction-context.d.ts +9 -2
  46. package/lib/interaction/services/interaction.service.d.ts +2 -2
  47. package/lib/place/guards/navigation-state.d.ts +44 -38
  48. package/lib/place/guards/place-component-deactivation-handler.d.ts +7 -4
  49. package/lib/place/guards/{abstract-place.guard.d.ts → place.guard.d.ts} +8 -3
  50. package/lib/place/index.d.ts +1 -2
  51. package/lib/place/place-router.d.ts +2 -0
  52. package/lib/place/url-snapshot.d.ts +14 -9
  53. package/package.json +1 -1
  54. package/schematics/place-routes/place-def.js +1 -0
  55. package/schematics/place-routes/place-def.js.map +1 -1
  56. package/schematics/place-routes/templates/place-routes.ts.template +10 -11
  57. package/esm2015/lib/interaction/components/interaction-outlet/interaction-outlet.component.js +0 -19
  58. package/esm2015/lib/place/guards/abstract-place.guard.js +0 -166
  59. package/esm2015/lib/place/guards/interaction.guard.js +0 -121
  60. package/esm5/lib/interaction/components/interaction-outlet/interaction-outlet.component.js +0 -21
  61. package/esm5/lib/place/guards/abstract-place.guard.js +0 -213
  62. package/esm5/lib/place/guards/interaction.guard.js +0 -133
  63. package/lib/interaction/components/interaction-outlet/interaction-outlet.component.d.ts +0 -3
  64. package/lib/place/guards/interaction.guard.d.ts +0 -17
@@ -3,60 +3,93 @@
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
  export class PlaceComponentDeactivationHandler {
7
8
  /**
8
9
  * @param {?} component
9
- * @param {?} navigationSession
10
+ * @param {?} navigationState
11
+ * @param {?} isPrimaryComponent
10
12
  */
11
- constructor(component, navigationSession) {
13
+ constructor(component, navigationState, isPrimaryComponent) {
12
14
  this.component = component;
13
- this.navigationSession = navigationSession;
15
+ this.navigationState = navigationState;
16
+ this.isPrimaryComponent = isPrimaryComponent;
14
17
  }
15
18
  /**
19
+ * @return {?}
20
+ */
21
+ get interactionService() {
22
+ return this.navigationState.interactionService;
23
+ }
24
+ /**
25
+ * @return {?}
26
+ */
27
+ get placeRouter() {
28
+ return this.navigationState.placeRouter;
29
+ }
30
+ /**
31
+ * @param {?} currentUrl
16
32
  * @param {?} nextState
17
33
  * @return {?}
18
34
  */
19
- canDeactivate(nextState) {
35
+ canDeactivate(currentUrl, nextState) {
20
36
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
21
37
  // We'll get called multiple times if there's any parameter sanitisation so
22
38
  // we always return true if we accepted promise from a previous cycle of the current
23
39
  // navigation session.
24
40
  if (!this.canDeactivatePromise) {
25
- this.canDeactivatePromise = this.canDeactivateComponent(nextState);
41
+ console.log(`creating deactivate promise for -> ${this.component.constructor.name}`);
42
+ this.canDeactivatePromise = this.canDeactivateComponent(currentUrl, nextState);
26
43
  }
27
44
  return this.canDeactivatePromise;
28
45
  });
29
46
  }
47
+ // @Trace()
30
48
  /**
31
49
  * @protected
50
+ * @param {?} currentUrl
32
51
  * @param {?} nextState
33
52
  * @return {?}
34
53
  */
35
- canDeactivateComponent(nextState) {
54
+ canDeactivateComponent(currentUrl, nextState) {
36
55
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
56
+ console.log(this.navigationState.toString());
37
57
  // Automatically cancel any active activities if the navigation session was triggered by the back button.
38
- // any other navigations (such as the user clicking a differnt place) must be handled by the component itself
39
- // during the canDeativate method. If we handled more than just the pop state then it leads to the UI ignoring
40
- // clicks and just cancelling things which is deeply disconcerting.
41
- if (this.navigationSession.isPopState && this.component.interactionContext && this.component.interactionContext.isActive()) {
42
- // Note: Modal interactions are run in a different router outlet so we never get place deactivating while
43
- // a model interaction is active. This is because:
44
- // 1. the user can't click anything to navigate away
45
- // 2. clicking the back button will only change the outlet route portion of the URL. This
46
- // is all handled by the InteractionGuard and so the component guards will never run.
47
- //
48
- // Now we just cancel the current activity...
49
- /** @type {?} */
50
- const activity = yield this.component.interactionContext.getCurrentActivity();
51
- activity.cancel(null);
52
- return false; // ..and stay where we are.
58
+ // If we handled more than just the pop state then it leads to the UI ignoring clicks and just cancelling things which is deeply disconcerting.
59
+ if (this.navigationState.isPopState) {
60
+ if (this.isPrimaryComponent && this.interactionService.isModalActive()) {
61
+ /** @type {?} */
62
+ const routeIds = this.placeRouter.getActiveInteractionIdsFromUrl(nextState.url);
63
+ /** @type {?} */
64
+ const currentIds = this.interactionService.activeInteractionContextIds.value;
65
+ if (!_.isEqual(currentIds, routeIds)) {
66
+ yield this.interactionService.getActiveContext().cancelCurrentActivity();
67
+ return currentUrl.updateInteractionIds(this.interactionService.activeInteractionContextIds.value);
68
+ }
69
+ }
70
+ else {
71
+ // check if the component has an in place interaction
72
+ if (this.component.interactionContext && this.component.interactionContext.isActive()) {
73
+ yield this.component.interactionContext.cancelCurrentActivity();
74
+ return currentUrl
75
+ .updateInteractionIds(this.interactionService.activeInteractionContextIds.value);
76
+ }
77
+ }
53
78
  }
54
79
  // Ok, so now we're really leaving, so we ask the component if we should.;
55
- if (this.isNotJustAChangeInRouteId(nextState) && this.component.canDeactivate) {
56
- // No interaction in progress, so ask the component .
57
- // This may start an interaction, hence checking the interaction context before now. I.e. if the place pops up the dialog, and
58
- // the user clicks back again, we'll re-enter here and go bang when the component tries to open another dialog.
59
- return this.component.canDeactivate(this.navigationSession.interactionContext);
80
+ if (this.isNotJustAChangeInRouteId(nextState)) {
81
+ if (this.component.canDeactivate) {
82
+ // No interaction in progress, so ask the component .
83
+ // This may start an interaction, hence checking the interaction context before now. I.e. if the place pops up the dialog, and
84
+ // the user clicks back again, we'll re-enter here and go bang when the component tries to open another dialog.
85
+ return this.component.canDeactivate(this.navigationState.interactionContext);
86
+ }
87
+ // The component has an active interaction but no deactivation hook. Rather than guessing what to do
88
+ // we'll just cancel the navigation and print a warning.
89
+ if (this.component.interactionContext && this.component.interactionContext.isActive()) {
90
+ console.warn('Route changed while component has active interaction, cancelling navigation');
91
+ return false;
92
+ }
60
93
  }
61
94
  return true;
62
95
  });
@@ -82,6 +115,8 @@ if (false) {
82
115
  /** @type {?} */
83
116
  PlaceComponentDeactivationHandler.prototype.component;
84
117
  /** @type {?} */
85
- PlaceComponentDeactivationHandler.prototype.navigationSession;
118
+ PlaceComponentDeactivationHandler.prototype.navigationState;
119
+ /** @type {?} */
120
+ PlaceComponentDeactivationHandler.prototype.isPrimaryComponent;
86
121
  }
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UtY29tcG9uZW50LWRlYWN0aXZhdGlvbi1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL2d1YXJkcy9wbGFjZS1jb21wb25lbnQtZGVhY3RpdmF0aW9uLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFLQSxNQUFNLE9BQU8saUNBQWlDOzs7OztJQUk1QyxZQUFxQixTQUF5QixFQUFXLGlCQUFrQztRQUF0RSxjQUFTLEdBQVQsU0FBUyxDQUFnQjtRQUFXLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBaUI7SUFDM0YsQ0FBQzs7Ozs7SUFFSyxhQUFhLENBQUMsU0FBc0I7O1lBQ3hDLDJFQUEyRTtZQUMzRSxvRkFBb0Y7WUFDcEYsc0JBQXNCO1lBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUU7Z0JBQzlCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDcEU7WUFDRCxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztRQUNuQyxDQUFDO0tBQUE7Ozs7OztJQUVlLHNCQUFzQixDQUFDLFNBQXNCOztZQUMzRCx5R0FBeUc7WUFDekcsNkdBQTZHO1lBQzdHLCtHQUErRztZQUMvRyxtRUFBbUU7WUFDbkUsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsRUFBRTs7Ozs7Ozs7O3NCQVFwSCxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLGtCQUFrQixFQUFFO2dCQUM3RSxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN0QixPQUFPLEtBQUssQ0FBQyxDQUFDLDJCQUEyQjthQUMxQztZQUVELDBFQUEwRTtZQUMxRSxJQUFJLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRTtnQkFDN0UscURBQXFEO2dCQUNyRCw4SEFBOEg7Z0JBQzlILCtHQUErRztnQkFDL0csT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsQ0FBQzthQUNoRjtZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztLQUFBOzs7Ozs7SUFFUyx5QkFBeUIsQ0FBQyxTQUFzQjtRQUN4RCxxRkFBcUY7UUFDckYsZ0ZBQWdGO1FBQ2hGLDBDQUEwQztRQUMxQyxPQUFPLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ25FLENBQUM7Q0FDRjs7Ozs7O0lBakRDLGlFQUErQzs7SUFFbkMsc0RBQWtDOztJQUFFLDhEQUEyQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEludGVyYWN0aW9uQ29udGV4dCB9IGZyb20gJy4uLy4uL2ludGVyYWN0aW9uL2ludGVyYWN0aW9uLWNvbnRleHQnO1xuaW1wb3J0IHsgUGxhY2VDb21wb25lbnQgfSBmcm9tICcuLi9wbGFjZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgVXJsU25hcHNob3QgfSBmcm9tICcuLi91cmwtc25hcHNob3QnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblN0YXRlIH0gZnJvbSAnLi9uYXZpZ2F0aW9uLXN0YXRlJztcblxuZXhwb3J0IGNsYXNzIFBsYWNlQ29tcG9uZW50RGVhY3RpdmF0aW9uSGFuZGxlciB7XG5cbiAgcHJpdmF0ZSBjYW5EZWFjdGl2YXRlUHJvbWlzZTogUHJvbWlzZTxib29sZWFuPjtcblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBjb21wb25lbnQ6IFBsYWNlQ29tcG9uZW50LCByZWFkb25seSBuYXZpZ2F0aW9uU2Vzc2lvbjogTmF2aWdhdGlvblN0YXRlKSB7XG4gIH1cblxuICBhc3luYyBjYW5EZWFjdGl2YXRlKG5leHRTdGF0ZTogVXJsU25hcHNob3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAvLyBXZSdsbCBnZXQgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGlmIHRoZXJlJ3MgYW55IHBhcmFtZXRlciBzYW5pdGlzYXRpb24gc29cbiAgICAvLyB3ZSBhbHdheXMgcmV0dXJuIHRydWUgaWYgd2UgYWNjZXB0ZWQgcHJvbWlzZSBmcm9tIGEgcHJldmlvdXMgY3ljbGUgb2YgdGhlIGN1cnJlbnRcbiAgICAvLyBuYXZpZ2F0aW9uIHNlc3Npb24uXG4gICAgaWYgKCF0aGlzLmNhbkRlYWN0aXZhdGVQcm9taXNlKSB7XG4gICAgICB0aGlzLmNhbkRlYWN0aXZhdGVQcm9taXNlID0gdGhpcy5jYW5EZWFjdGl2YXRlQ29tcG9uZW50KG5leHRTdGF0ZSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNhbkRlYWN0aXZhdGVQcm9taXNlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGNhbkRlYWN0aXZhdGVDb21wb25lbnQobmV4dFN0YXRlOiBVcmxTbmFwc2hvdCkge1xuICAgIC8vIEF1dG9tYXRpY2FsbHkgY2FuY2VsIGFueSBhY3RpdmUgYWN0aXZpdGllcyBpZiB0aGUgbmF2aWdhdGlvbiBzZXNzaW9uIHdhcyB0cmlnZ2VyZWQgYnkgdGhlIGJhY2sgYnV0dG9uLlxuICAgIC8vIGFueSBvdGhlciBuYXZpZ2F0aW9ucyAoc3VjaCBhcyB0aGUgdXNlciBjbGlja2luZyBhIGRpZmZlcm50IHBsYWNlKSBtdXN0IGJlIGhhbmRsZWQgYnkgdGhlIGNvbXBvbmVudCBpdHNlbGZcbiAgICAvLyBkdXJpbmcgdGhlIGNhbkRlYXRpdmF0ZSBtZXRob2QuICBJZiB3ZSBoYW5kbGVkIG1vcmUgdGhhbiBqdXN0IHRoZSBwb3Agc3RhdGUgdGhlbiBpdCBsZWFkcyB0byB0aGUgVUkgaWdub3JpbmdcbiAgICAvLyBjbGlja3MgYW5kIGp1c3QgY2FuY2VsbGluZyB0aGluZ3Mgd2hpY2ggaXMgZGVlcGx5IGRpc2NvbmNlcnRpbmcuXG4gICAgaWYgKHRoaXMubmF2aWdhdGlvblNlc3Npb24uaXNQb3BTdGF0ZSAmJiB0aGlzLmNvbXBvbmVudC5pbnRlcmFjdGlvbkNvbnRleHQgJiYgdGhpcy5jb21wb25lbnQuaW50ZXJhY3Rpb25Db250ZXh0LmlzQWN0aXZlKCkpIHtcbiAgICAgIC8vIE5vdGU6IE1vZGFsIGludGVyYWN0aW9ucyBhcmUgcnVuIGluIGEgZGlmZmVyZW50IHJvdXRlciBvdXRsZXQgc28gd2UgbmV2ZXIgZ2V0IHBsYWNlIGRlYWN0aXZhdGluZyB3aGlsZVxuICAgICAgLy8gYSBtb2RlbCBpbnRlcmFjdGlvbiBpcyBhY3RpdmUuIFRoaXMgaXMgYmVjYXVzZTpcbiAgICAgIC8vIDEuIHRoZSB1c2VyIGNhbid0IGNsaWNrIGFueXRoaW5nIHRvIG5hdmlnYXRlIGF3YXlcbiAgICAgIC8vIDIuIGNsaWNraW5nIHRoZSBiYWNrIGJ1dHRvbiB3aWxsIG9ubHkgY2hhbmdlIHRoZSBvdXRsZXQgcm91dGUgcG9ydGlvbiBvZiB0aGUgVVJMLiBUaGlzXG4gICAgICAvLyAgICBpcyBhbGwgaGFuZGxlZCBieSB0aGUgSW50ZXJhY3Rpb25HdWFyZCBhbmQgc28gdGhlIGNvbXBvbmVudCBndWFyZHMgd2lsbCBuZXZlciBydW4uXG4gICAgICAvL1xuICAgICAgLy8gTm93IHdlIGp1c3QgY2FuY2VsIHRoZSBjdXJyZW50IGFjdGl2aXR5Li4uXG4gICAgICBjb25zdCBhY3Rpdml0eSA9IGF3YWl0IHRoaXMuY29tcG9uZW50LmludGVyYWN0aW9uQ29udGV4dC5nZXRDdXJyZW50QWN0aXZpdHkoKTtcbiAgICAgIGFjdGl2aXR5LmNhbmNlbChudWxsKTtcbiAgICAgIHJldHVybiBmYWxzZTsgLy8gLi5hbmQgc3RheSB3aGVyZSB3ZSBhcmUuXG4gICAgfVxuXG4gICAgLy8gT2ssIHNvIG5vdyB3ZSdyZSByZWFsbHkgbGVhdmluZywgc28gd2UgYXNrIHRoZSBjb21wb25lbnQgaWYgd2Ugc2hvdWxkLjtcbiAgICBpZiAodGhpcy5pc05vdEp1c3RBQ2hhbmdlSW5Sb3V0ZUlkKG5leHRTdGF0ZSkgJiYgdGhpcy5jb21wb25lbnQuY2FuRGVhY3RpdmF0ZSkge1xuICAgICAgLy8gTm8gaW50ZXJhY3Rpb24gaW4gcHJvZ3Jlc3MsIHNvIGFzayB0aGUgY29tcG9uZW50IC5cbiAgICAgIC8vIFRoaXMgbWF5IHN0YXJ0IGFuIGludGVyYWN0aW9uLCBoZW5jZSBjaGVja2luZyB0aGUgaW50ZXJhY3Rpb24gY29udGV4dCBiZWZvcmUgbm93LiBJLmUuIGlmIHRoZSBwbGFjZSBwb3BzIHVwIHRoZSBkaWFsb2csIGFuZFxuICAgICAgLy8gdGhlIHVzZXIgY2xpY2tzIGJhY2sgYWdhaW4sIHdlJ2xsIHJlLWVudGVyIGhlcmUgYW5kIGdvIGJhbmcgd2hlbiB0aGUgY29tcG9uZW50IHRyaWVzIHRvIG9wZW4gYW5vdGhlciBkaWFsb2cuXG4gICAgICByZXR1cm4gdGhpcy5jb21wb25lbnQuY2FuRGVhY3RpdmF0ZSh0aGlzLm5hdmlnYXRpb25TZXNzaW9uLmludGVyYWN0aW9uQ29udGV4dCk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGlzTm90SnVzdEFDaGFuZ2VJblJvdXRlSWQobmV4dFN0YXRlOiBVcmxTbmFwc2hvdCkge1xuICAgIC8vIEJlY2F1c2UgcGxhY2VzIHdpdGggYSByb3V0ZS1pZCBjb3ZlciB0d28gcm91dGUgc2VnbWVudHMgd2UgZ2V0IGFza2VkIHRvIGRlYWN0aXZhdGVcbiAgICAvLyBpZiB0aGUgcm91dGUgaWQgaXMgYWRkZWQgb3IgcmVtb3ZlZC4gIFNvIGlmIG91ciBwYXRoIGlzIHN0aWxsIHByZXNlbnQgdGhlIHVybFxuICAgIC8vIHRoZW4gd2Ugc2hvdWxkbid0IGRlYWN0aXZhdGUgdGhlIHBsYWNlLlxuICAgIHJldHVybiAhbmV4dFN0YXRlLmluY2x1ZGVzUGF0aE9mKHRoaXMuY29tcG9uZW50LnBsYWNlRGVmaW5pdGlvbik7XG4gIH1cbn1cbiJdfQ==
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UtY29tcG9uZW50LWRlYWN0aXZhdGlvbi1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL2d1YXJkcy9wbGFjZS1jb21wb25lbnQtZGVhY3RpdmF0aW9uLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUs1QixNQUFNLE9BQU8saUNBQWlDOzs7Ozs7SUFJNUMsWUFBcUIsU0FBeUIsRUFBVyxlQUFnQyxFQUFXLGtCQUEyQjtRQUExRyxjQUFTLEdBQVQsU0FBUyxDQUFnQjtRQUFXLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUFXLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBUztJQUMvSCxDQUFDOzs7O0lBRUQsSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDO0lBQ2pELENBQUM7Ozs7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDO0lBQzFDLENBQUM7Ozs7OztJQUVLLGFBQWEsQ0FBQyxVQUF1QixFQUFFLFNBQXNCOztZQUNqRSwyRUFBMkU7WUFDM0Usb0ZBQW9GO1lBQ3BGLHNCQUFzQjtZQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFO2dCQUM5QixPQUFPLENBQUMsR0FBRyxDQUFDLHNDQUFzQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUNyRixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQzthQUNoRjtZQUNELE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO1FBQ25DLENBQUM7S0FBQTs7Ozs7Ozs7SUFJZSxzQkFBc0IsQ0FBQyxVQUF1QixFQUFFLFNBQXNCOztZQUNwRixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUM3Qyx5R0FBeUc7WUFDekcsK0lBQStJO1lBQy9JLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUU7Z0JBQ25DLElBQUksSUFBSSxDQUFDLGtCQUFrQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsRUFBRTs7MEJBQ2hFLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLDhCQUE4QixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUM7OzBCQUN6RSxVQUFVLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLDJCQUEyQixDQUFDLEtBQUs7b0JBRTVFLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsRUFBRTt3QkFDcEMsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO3dCQUN6RSxPQUFPLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsMkJBQTJCLENBQUMsS0FBSyxDQUFDLENBQUM7cUJBQ25HO2lCQUNGO3FCQUFNO29CQUNMLHFEQUFxRDtvQkFDckQsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFLEVBQUU7d0JBQ3JGLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO3dCQUNoRSxPQUFPLFVBQVU7NkJBQ2Qsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLDJCQUEyQixDQUFDLEtBQUssQ0FBQyxDQUFBO3FCQUNuRjtpQkFDRjthQUNGO1lBRUQsMEVBQTBFO1lBQzFFLElBQUksSUFBSSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUU3QyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFO29CQUNoQyxxREFBcUQ7b0JBQ3JELDhIQUE4SDtvQkFDOUgsK0dBQStHO29CQUMvRyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUMsQ0FBQztpQkFDOUU7Z0JBRUQscUdBQXFHO2dCQUNyRyx3REFBd0Q7Z0JBQ3hELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxFQUFFO29CQUNyRixPQUFPLENBQUMsSUFBSSxDQUFDLDZFQUE2RSxDQUFDLENBQUM7b0JBQzVGLE9BQU8sS0FBSyxDQUFDO2lCQUNkO2FBRUY7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7S0FBQTs7Ozs7O0lBRVMseUJBQXlCLENBQUMsU0FBc0I7UUFDeEQscUZBQXFGO1FBQ3JGLGdGQUFnRjtRQUNoRiwwQ0FBMEM7UUFDMUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNuRSxDQUFDO0NBQ0Y7Ozs7OztJQTVFQyxpRUFBNkQ7O0lBRWpELHNEQUFrQzs7SUFBRSw0REFBeUM7O0lBQUUsK0RBQW9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhY2UgfSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBQbGFjZUNvbXBvbmVudCB9IGZyb20gJy4uL3BsYWNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBVcmxTbmFwc2hvdCB9IGZyb20gJy4uL3VybC1zbmFwc2hvdCc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU3RhdGUgfSBmcm9tICcuL25hdmlnYXRpb24tc3RhdGUnO1xuXG5leHBvcnQgY2xhc3MgUGxhY2VDb21wb25lbnREZWFjdGl2YXRpb25IYW5kbGVyIHtcblxuICBwcml2YXRlIGNhbkRlYWN0aXZhdGVQcm9taXNlOiBQcm9taXNlPGJvb2xlYW4gfCBVcmxTbmFwc2hvdD47XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgY29tcG9uZW50OiBQbGFjZUNvbXBvbmVudCwgcmVhZG9ubHkgbmF2aWdhdGlvblN0YXRlOiBOYXZpZ2F0aW9uU3RhdGUsIHJlYWRvbmx5IGlzUHJpbWFyeUNvbXBvbmVudDogYm9vbGVhbikge1xuICB9XG5cbiAgZ2V0IGludGVyYWN0aW9uU2VydmljZSgpIHtcbiAgICByZXR1cm4gdGhpcy5uYXZpZ2F0aW9uU3RhdGUuaW50ZXJhY3Rpb25TZXJ2aWNlO1xuICB9XG5cbiAgZ2V0IHBsYWNlUm91dGVyKCkge1xuICAgIHJldHVybiB0aGlzLm5hdmlnYXRpb25TdGF0ZS5wbGFjZVJvdXRlcjtcbiAgfVxuXG4gIGFzeW5jIGNhbkRlYWN0aXZhdGUoY3VycmVudFVybDogVXJsU25hcHNob3QsIG5leHRTdGF0ZTogVXJsU25hcHNob3QpOiBQcm9taXNlPGJvb2xlYW4gfCBVcmxTbmFwc2hvdD4ge1xuICAgIC8vIFdlJ2xsIGdldCBjYWxsZWQgbXVsdGlwbGUgdGltZXMgaWYgdGhlcmUncyBhbnkgcGFyYW1ldGVyIHNhbml0aXNhdGlvbiBzb1xuICAgIC8vIHdlIGFsd2F5cyByZXR1cm4gdHJ1ZSBpZiB3ZSBhY2NlcHRlZCBwcm9taXNlIGZyb20gYSBwcmV2aW91cyBjeWNsZSBvZiB0aGUgY3VycmVudFxuICAgIC8vIG5hdmlnYXRpb24gc2Vzc2lvbi5cbiAgICBpZiAoIXRoaXMuY2FuRGVhY3RpdmF0ZVByb21pc2UpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBjcmVhdGluZyBkZWFjdGl2YXRlIHByb21pc2UgZm9yIC0+ICR7dGhpcy5jb21wb25lbnQuY29uc3RydWN0b3IubmFtZX1gKTtcbiAgICAgIHRoaXMuY2FuRGVhY3RpdmF0ZVByb21pc2UgPSB0aGlzLmNhbkRlYWN0aXZhdGVDb21wb25lbnQoY3VycmVudFVybCwgbmV4dFN0YXRlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2FuRGVhY3RpdmF0ZVByb21pc2U7XG4gIH1cblxuXG4gIC8vIEBUcmFjZSgpXG4gIHByb3RlY3RlZCBhc3luYyBjYW5EZWFjdGl2YXRlQ29tcG9uZW50KGN1cnJlbnRVcmw6IFVybFNuYXBzaG90LCBuZXh0U3RhdGU6IFVybFNuYXBzaG90KTogUHJvbWlzZTxVcmxTbmFwc2hvdCB8IGJvb2xlYW4+IHtcbiAgICBjb25zb2xlLmxvZyh0aGlzLm5hdmlnYXRpb25TdGF0ZS50b1N0cmluZygpKTtcbiAgICAvLyBBdXRvbWF0aWNhbGx5IGNhbmNlbCBhbnkgYWN0aXZlIGFjdGl2aXRpZXMgaWYgdGhlIG5hdmlnYXRpb24gc2Vzc2lvbiB3YXMgdHJpZ2dlcmVkIGJ5IHRoZSBiYWNrIGJ1dHRvbi5cbiAgICAvLyBJZiB3ZSBoYW5kbGVkIG1vcmUgdGhhbiBqdXN0IHRoZSBwb3Agc3RhdGUgdGhlbiBpdCBsZWFkcyB0byB0aGUgVUkgaWdub3JpbmcgY2xpY2tzIGFuZCBqdXN0IGNhbmNlbGxpbmcgdGhpbmdzIHdoaWNoIGlzIGRlZXBseSBkaXNjb25jZXJ0aW5nLlxuICAgIGlmICh0aGlzLm5hdmlnYXRpb25TdGF0ZS5pc1BvcFN0YXRlKSB7XG4gICAgICBpZiAodGhpcy5pc1ByaW1hcnlDb21wb25lbnQgJiYgdGhpcy5pbnRlcmFjdGlvblNlcnZpY2UuaXNNb2RhbEFjdGl2ZSgpKSB7XG4gICAgICAgIGNvbnN0IHJvdXRlSWRzID0gdGhpcy5wbGFjZVJvdXRlci5nZXRBY3RpdmVJbnRlcmFjdGlvbklkc0Zyb21VcmwobmV4dFN0YXRlLnVybCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJZHMgPSB0aGlzLmludGVyYWN0aW9uU2VydmljZS5hY3RpdmVJbnRlcmFjdGlvbkNvbnRleHRJZHMudmFsdWU7XG5cbiAgICAgICAgaWYgKCFfLmlzRXF1YWwoY3VycmVudElkcywgcm91dGVJZHMpKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5pbnRlcmFjdGlvblNlcnZpY2UuZ2V0QWN0aXZlQ29udGV4dCgpLmNhbmNlbEN1cnJlbnRBY3Rpdml0eSgpO1xuICAgICAgICAgIHJldHVybiBjdXJyZW50VXJsLnVwZGF0ZUludGVyYWN0aW9uSWRzKHRoaXMuaW50ZXJhY3Rpb25TZXJ2aWNlLmFjdGl2ZUludGVyYWN0aW9uQ29udGV4dElkcy52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGNoZWNrIGlmIHRoZSBjb21wb25lbnQgaGFzIGFuIGluIHBsYWNlIGludGVyYWN0aW9uXG4gICAgICAgIGlmICh0aGlzLmNvbXBvbmVudC5pbnRlcmFjdGlvbkNvbnRleHQgJiYgdGhpcy5jb21wb25lbnQuaW50ZXJhY3Rpb25Db250ZXh0LmlzQWN0aXZlKCkpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmNvbXBvbmVudC5pbnRlcmFjdGlvbkNvbnRleHQuY2FuY2VsQ3VycmVudEFjdGl2aXR5KCk7XG4gICAgICAgICAgcmV0dXJuIGN1cnJlbnRVcmxcbiAgICAgICAgICAgIC51cGRhdGVJbnRlcmFjdGlvbklkcyh0aGlzLmludGVyYWN0aW9uU2VydmljZS5hY3RpdmVJbnRlcmFjdGlvbkNvbnRleHRJZHMudmFsdWUpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBPaywgc28gbm93IHdlJ3JlIHJlYWxseSBsZWF2aW5nLCBzbyB3ZSBhc2sgdGhlIGNvbXBvbmVudCBpZiB3ZSBzaG91bGQuO1xuICAgIGlmICh0aGlzLmlzTm90SnVzdEFDaGFuZ2VJblJvdXRlSWQobmV4dFN0YXRlKSkge1xuXG4gICAgICBpZiAodGhpcy5jb21wb25lbnQuY2FuRGVhY3RpdmF0ZSkge1xuICAgICAgICAvLyBObyBpbnRlcmFjdGlvbiBpbiBwcm9ncmVzcywgc28gYXNrIHRoZSBjb21wb25lbnQgLlxuICAgICAgICAvLyBUaGlzIG1heSBzdGFydCBhbiBpbnRlcmFjdGlvbiwgaGVuY2UgY2hlY2tpbmcgdGhlIGludGVyYWN0aW9uIGNvbnRleHQgYmVmb3JlIG5vdy4gSS5lLiBpZiB0aGUgcGxhY2UgcG9wcyB1cCB0aGUgZGlhbG9nLCBhbmRcbiAgICAgICAgLy8gdGhlIHVzZXIgY2xpY2tzIGJhY2sgYWdhaW4sIHdlJ2xsIHJlLWVudGVyIGhlcmUgYW5kIGdvIGJhbmcgd2hlbiB0aGUgY29tcG9uZW50IHRyaWVzIHRvIG9wZW4gYW5vdGhlciBkaWFsb2cuXG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBvbmVudC5jYW5EZWFjdGl2YXRlKHRoaXMubmF2aWdhdGlvblN0YXRlLmludGVyYWN0aW9uQ29udGV4dCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFRoZSBjb21wb25lbnQgaGFzIGFuIGFjdGl2ZSBpbnRlcmFjdGlvbiBidXQgbm8gZGVhY3RpdmF0aW9uIGhvb2suICBSYXRoZXIgdGhhbiBndWVzc2luZyB3aGF0IHRvIGRvXG4gICAgICAvLyB3ZSdsbCBqdXN0IGNhbmNlbCB0aGUgbmF2aWdhdGlvbiBhbmQgcHJpbnQgYSB3YXJuaW5nLlxuICAgICAgaWYgKHRoaXMuY29tcG9uZW50LmludGVyYWN0aW9uQ29udGV4dCAmJiB0aGlzLmNvbXBvbmVudC5pbnRlcmFjdGlvbkNvbnRleHQuaXNBY3RpdmUoKSkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1JvdXRlIGNoYW5nZWQgd2hpbGUgY29tcG9uZW50IGhhcyBhY3RpdmUgaW50ZXJhY3Rpb24sIGNhbmNlbGxpbmcgbmF2aWdhdGlvbicpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgaXNOb3RKdXN0QUNoYW5nZUluUm91dGVJZChuZXh0U3RhdGU6IFVybFNuYXBzaG90KSB7XG4gICAgLy8gQmVjYXVzZSBwbGFjZXMgd2l0aCBhIHJvdXRlLWlkIGNvdmVyIHR3byByb3V0ZSBzZWdtZW50cyB3ZSBnZXQgYXNrZWQgdG8gZGVhY3RpdmF0ZVxuICAgIC8vIGlmIHRoZSByb3V0ZSBpZCBpcyBhZGRlZCBvciByZW1vdmVkLiAgU28gaWYgb3VyIHBhdGggaXMgc3RpbGwgcHJlc2VudCB0aGUgdXJsXG4gICAgLy8gdGhlbiB3ZSBzaG91bGRuJ3QgZGVhY3RpdmF0ZSB0aGUgcGxhY2UuXG4gICAgcmV0dXJuICFuZXh0U3RhdGUuaW5jbHVkZXNQYXRoT2YodGhpcy5jb21wb25lbnQucGxhY2VEZWZpbml0aW9uKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,215 @@
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
+ export class PlaceGuard {
17
+ /**
18
+ * @param {?} router
19
+ * @param {?} urlSerializer
20
+ * @param {?} placeRouter
21
+ * @param {?} placeHistory
22
+ * @param {?} interactionService
23
+ * @param {?} injector
24
+ */
25
+ constructor(router, urlSerializer, placeRouter, placeHistory, interactionService, injector) {
26
+ this.router = router;
27
+ this.urlSerializer = urlSerializer;
28
+ this.placeRouter = placeRouter;
29
+ this.placeHistory = placeHistory;
30
+ this.interactionService = interactionService;
31
+ this.injector = injector;
32
+ }
33
+ // @Trace()
34
+ /**
35
+ * @param {?} activatedRoute
36
+ * @param {?} state
37
+ * @return {?}
38
+ */
39
+ canActivate(activatedRoute, state) {
40
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
41
+ // TODO: this is ugly now that I'm return UrlSnapshots and not UrlTrees. It'd be better if the functions
42
+ // weren't nested or if I implemented a handler chain.
43
+ return this.authorisePlaceThen(activatedRoute, state, (/**
44
+ * @param {?} placeDefinition
45
+ * @return {?}
46
+ */
47
+ (placeDefinition) => tslib_1.__awaiter(this, void 0, void 0, function* () {
48
+ /** @type {?} */
49
+ const result = yield this.cleanInteractionState(activatedRoute, state, (/**
50
+ * @return {?}
51
+ */
52
+ () => tslib_1.__awaiter(this, void 0, void 0, function* () {
53
+ // Parse our route params.
54
+ /** @type {?} */
55
+ const params = new ConsolidatedParameterMap(activatedRoute.paramMap, activatedRoute.url);
56
+ /** @type {?} */
57
+ const parsedParams = placeDefinition.parseRouteParams(params);
58
+ /** @type {?} */
59
+ const initialVisit = this.placeRouter.navigationState.getVisitFor(placeDefinition) || new Visit(placeDefinition, parsedParams);
60
+ /** @type {?} */
61
+ const sanitiser = new VisitSanitiser(activatedRoute, this.router, this.placeHistory, this.injector);
62
+ /** @type {?} */
63
+ const sanitisedVisit = yield sanitiser.sanitise(initialVisit.mergeRouteParameters(parsedParams));
64
+ // Save the visit with any updated parameters. We need to save it so we remember any non route parameters
65
+ this.placeRouter.navigationState.storeVisit(sanitisedVisit);
66
+ if (initialVisit.hasRoutingChangedFrom(sanitisedVisit)) {
67
+ // Regenerate the url
68
+ /** @type {?} */
69
+ const urlSnapshot = this.placeRouter.parseUrl(state.url).updateVisitSegments(sanitisedVisit);
70
+ console.log('##### Place Guard Redirect', urlSnapshot);
71
+ return urlSnapshot;
72
+ }
73
+ else {
74
+ return true;
75
+ }
76
+ })));
77
+ return this.handleGuardResult(result);
78
+ })));
79
+ });
80
+ }
81
+ // @Trace()
82
+ /**
83
+ * @param {?} component
84
+ * @param {?} currentRoute
85
+ * @param {?} currentState
86
+ * @param {?=} nextState
87
+ * @return {?}
88
+ */
89
+ canDeactivate(component, currentRoute, currentState, nextState) {
90
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
91
+ /** @type {?} */
92
+ const currentUrl = this.placeRouter.parseUrl(currentState.url);
93
+ /** @type {?} */
94
+ const nextUrl = this.placeRouter.parseUrl(nextState.url);
95
+ /** @type {?} */
96
+ const result = yield this.placeRouter.navigationState.canDeactivatePlace(component, currentUrl, nextUrl);
97
+ return this.handleGuardResult(result);
98
+ });
99
+ }
100
+ /**
101
+ * @private
102
+ * @param {?} result
103
+ * @return {?}
104
+ */
105
+ handleGuardResult(result) {
106
+ if (result instanceof UrlSnapshot) {
107
+ return result.urlTree;
108
+ }
109
+ else {
110
+ return result;
111
+ }
112
+ }
113
+ // @Trace()
114
+ /**
115
+ * @protected
116
+ * @param {?} activatedRoute
117
+ * @param {?} state
118
+ * @param {?} runPlaceGuards
119
+ * @return {?}
120
+ */
121
+ authorisePlaceThen(activatedRoute, state, runPlaceGuards) {
122
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
123
+ if (PlaceComponent.isPlaceComponentConstructor(activatedRoute.component)) {
124
+ /** @type {?} */
125
+ const placeDefinition = PlaceComponent.getDefinition(activatedRoute.component);
126
+ /** @type {?} */
127
+ const authoriseResult = placeDefinition.authenticate ? yield this.isAuthorised(activatedRoute, state) : true;
128
+ if (authoriseResult === true) {
129
+ // we're authorised, now run the place guards.
130
+ return runPlaceGuards(placeDefinition);
131
+ }
132
+ else {
133
+ console.log('not authorised result', authoriseResult);
134
+ return authoriseResult;
135
+ }
136
+ }
137
+ else {
138
+ return lang.illegalState(`expected component to be an instance of PlaceComponent, got ${activatedRoute.component}`);
139
+ }
140
+ });
141
+ }
142
+ // @Trace()
143
+ /**
144
+ * @param {?} activatedRoute
145
+ * @param {?} state
146
+ * @return {?}
147
+ */
148
+ isAuthorised(activatedRoute, state) {
149
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
150
+ /** @type {?} */
151
+ const authorised = this.getAuthGuard(this.injector).canActivate(activatedRoute, state);
152
+ return (authorised instanceof Observable) ? authorised.toPromise() : authorised;
153
+ });
154
+ }
155
+ // @Trace()
156
+ /**
157
+ * @param {?} route
158
+ * @param {?} state
159
+ * @param {?} then
160
+ * @return {?}
161
+ */
162
+ cleanInteractionState(route, state, then) {
163
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
164
+ /** @type {?} */
165
+ const url = this.placeRouter.parseUrl(state.url);
166
+ if (!this.interactionService.isActive() && url.hasInteractionIds()) {
167
+ // This happens if we reload the page or the url was pasted as the route should only be activated
168
+ // after the interaction context has become active.
169
+ return url.removeInteractionIds();
170
+ }
171
+ else {
172
+ return then();
173
+ }
174
+ });
175
+ }
176
+ }
177
+ if (false) {
178
+ /**
179
+ * @type {?}
180
+ * @private
181
+ */
182
+ PlaceGuard.prototype.router;
183
+ /**
184
+ * @type {?}
185
+ * @private
186
+ */
187
+ PlaceGuard.prototype.urlSerializer;
188
+ /**
189
+ * @type {?}
190
+ * @private
191
+ */
192
+ PlaceGuard.prototype.placeRouter;
193
+ /**
194
+ * @type {?}
195
+ * @private
196
+ */
197
+ PlaceGuard.prototype.placeHistory;
198
+ /**
199
+ * @type {?}
200
+ * @private
201
+ */
202
+ PlaceGuard.prototype.interactionService;
203
+ /**
204
+ * @type {?}
205
+ * @private
206
+ */
207
+ PlaceGuard.prototype.injector;
208
+ /**
209
+ * @abstract
210
+ * @param {?} injector
211
+ * @return {?}
212
+ */
213
+ PlaceGuard.prototype.getAuthGuard = function (injector) { };
214
+ }
215
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UuZ3VhcmQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvcGxhY2UvZ3VhcmRzL3BsYWNlLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBVUEsT0FBTyxFQUFFLElBQUksRUFBUyxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSXBELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNqQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7OztBQUdwRSxNQUFNLE9BQWdCLFVBQVU7Ozs7Ozs7OztJQUc5QixZQUE2QixNQUFjLEVBQ3ZCLGFBQTRCLEVBQ25CLFdBQXdCLEVBQ3hCLFlBQTBCLEVBQzFCLGtCQUFzQyxFQUN0QyxRQUFrQjtRQUxsQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ3ZCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQ25CLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUMvQyxDQUFDOzs7Ozs7O0lBR0ssV0FBVyxDQUFDLGNBQXNDLEVBQUUsS0FBMEI7O1lBRWpGLHlHQUF5RztZQUMxRyw2REFBNkQ7WUFDN0QsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxFQUFFLEtBQUs7Ozs7WUFBRSxDQUFPLGVBQWUsRUFBRSxFQUFFOztzQkFFeEUsTUFBTSxH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bXBvcnQgeyBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgQ2FuQWN0aXZhdGUsXG4gIENhbkRlYWN0aXZhdGUsXG4gIFJvdXRlcixcbiAgUm91dGVyU3RhdGVTbmFwc2hvdCxcbiAgVXJsU2VyaWFsaXplcixcbiAgVXJsVHJlZVxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgbGFuZywgVHJhY2UgfSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJbnRlcmFjdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9pbnRlcmFjdGlvbi9zZXJ2aWNlcy9pbnRlcmFjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFBsYWNlQ29tcG9uZW50IH0gZnJvbSAnLi4vcGxhY2UtY29tcG9uZW50JztcbmltcG9ydCB7IFBsYWNlRGVmaW5pdGlvbiB9IGZyb20gJy4uL3BsYWNlLWRlZmluaXRpb24nO1xuaW1wb3J0IHsgUGxhY2VIaXN0b3J5IH0gZnJvbSAnLi4vcGxhY2UtaGlzdG9yeSc7XG5pbXBvcnQgeyBQbGFjZVJvdXRlciB9IGZyb20gJy4uL3BsYWNlLXJvdXRlcic7XG5pbXBvcnQgeyBWaXNpdFNhbml0aXNlciB9IGZyb20gJy4uL3JvdXRlL3Zpc2l0LXNhbml0aXNlcic7XG5pbXBvcnQgeyBVcmxTbmFwc2hvdCB9IGZyb20gJy4uL3VybC1zbmFwc2hvdCc7XG5pbXBvcnQgeyBWaXNpdCB9IGZyb20gJy4uL3Zpc2l0JztcbmltcG9ydCB7IENvbnNvbGlkYXRlZFBhcmFtZXRlck1hcCB9IGZyb20gJy4vY29uc29saWRhdGVkLXBhcmFtLW1hcCc7XG5cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBsYWNlR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSwgQ2FuRGVhY3RpdmF0ZTxQbGFjZUNvbXBvbmVudD4ge1xuXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSB1cmxTZXJpYWxpemVyOiBVcmxTZXJpYWxpemVyLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHBsYWNlUm91dGVyOiBQbGFjZVJvdXRlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBwbGFjZUhpc3Rvcnk6IFBsYWNlSGlzdG9yeSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBpbnRlcmFjdGlvblNlcnZpY2U6IEludGVyYWN0aW9uU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIGFzeW5jIGNhbkFjdGl2YXRlKGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IFByb21pc2U8Ym9vbGVhbiB8IFVybFRyZWU+IHtcblxuICAgICAvLyBUT0RPOiB0aGlzIGlzIHVnbHkgbm93IHRoYXQgSSdtIHJldHVybiBVcmxTbmFwc2hvdHMgYW5kIG5vdCBVcmxUcmVlcy4gIEl0J2QgYmUgYmV0dGVyIGlmIHRoZSBmdW5jdGlvbnNcbiAgICAvLyAgICAgICAgd2VyZW4ndCBuZXN0ZWQgb3IgaWYgSSBpbXBsZW1lbnRlZCBhIGhhbmRsZXIgY2hhaW4uXG4gICAgcmV0dXJuIHRoaXMuYXV0aG9yaXNlUGxhY2VUaGVuKGFjdGl2YXRlZFJvdXRlLCBzdGF0ZSwgYXN5bmMgKHBsYWNlRGVmaW5pdGlvbikgPT4ge1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmNsZWFuSW50ZXJhY3Rpb25TdGF0ZShhY3RpdmF0ZWRSb3V0ZSwgc3RhdGUsIGFzeW5jICgpID0+IHtcbiAgICAgICAgLy8gUGFyc2Ugb3VyIHJvdXRlIHBhcmFtcy5cbiAgICAgICAgY29uc3QgcGFyYW1zID0gbmV3IENvbnNvbGlkYXRlZFBhcmFtZXRlck1hcChhY3RpdmF0ZWRSb3V0ZS5wYXJhbU1hcCwgYWN0aXZhdGVkUm91dGUudXJsKTtcbiAgICAgICAgY29uc3QgcGFyc2VkUGFyYW1zID0gcGxhY2VEZWZpbml0aW9uLnBhcnNlUm91dGVQYXJhbXMocGFyYW1zKTtcblxuICAgICAgICBjb25zdCBpbml0aWFsVmlzaXQgPSB0aGlzLnBsYWNlUm91dGVyLm5hdmlnYXRpb25TdGF0ZS5nZXRWaXNpdEZvcihwbGFjZURlZmluaXRpb24pIHx8IG5ldyBWaXNpdChwbGFjZURlZmluaXRpb24sIHBhcnNlZFBhcmFtcyk7XG4gICAgICAgIGNvbnN0IHNhbml0aXNlciA9IG5ldyBWaXNpdFNhbml0aXNlcihhY3RpdmF0ZWRSb3V0ZSwgdGhpcy5yb3V0ZXIsIHRoaXMucGxhY2VIaXN0b3J5LCB0aGlzLmluamVjdG9yKTtcbiAgICAgICAgY29uc3Qgc2FuaXRpc2VkVmlzaXQgPSBhd2FpdCBzYW5pdGlzZXIuc2FuaXRpc2UoaW5pdGlhbFZpc2l0Lm1lcmdlUm91dGVQYXJhbWV0ZXJzKHBhcnNlZFBhcmFtcykpO1xuXG4gICAgICAgIC8vIFNhdmUgdGhlIHZpc2l0IHdpdGggYW55IHVwZGF0ZWQgcGFyYW1ldGVycy4gIFdlIG5lZWQgdG8gc2F2ZSBpdCBzbyB3ZSByZW1lbWJlciBhbnkgbm9uIHJvdXRlIHBhcmFtZXRlcnNcbiAgICAgICAgdGhpcy5wbGFjZVJvdXRlci5uYXZpZ2F0aW9uU3RhdGUuc3RvcmVWaXNpdChzYW5pdGlzZWRWaXNpdCk7XG4gICAgICAgIGlmIChpbml0aWFsVmlzaXQuaGFzUm91dGluZ0NoYW5nZWRGcm9tKHNhbml0aXNlZFZpc2l0KSkge1xuICAgICAgICAgIC8vIFJlZ2VuZXJhdGUgdGhlIHVybFxuICAgICAgICAgIGNvbnN0IHVybFNuYXBzaG90ID0gdGhpcy5wbGFjZVJvdXRlci5wYXJzZVVybChzdGF0ZS51cmwpLnVwZGF0ZVZpc2l0U2VnbWVudHMoc2FuaXRpc2VkVmlzaXQpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKCcjIyMjIyBQbGFjZSBHdWFyZCBSZWRpcmVjdCcsIHVybFNuYXBzaG90KTtcbiAgICAgICAgICByZXR1cm4gdXJsU25hcHNob3Q7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlR3VhcmRSZXN1bHQocmVzdWx0KTtcblxuICAgIH0pO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgYXN5bmMgY2FuRGVhY3RpdmF0ZShjb21wb25lbnQ6IFBsYWNlQ29tcG9uZW50LCBjdXJyZW50Um91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIGN1cnJlbnRTdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCwgbmV4dFN0YXRlPzogUm91dGVyU3RhdGVTbmFwc2hvdCk6IFByb21pc2U8Ym9vbGVhbiB8IFVybFRyZWU+IHtcbiAgICBjb25zdCBjdXJyZW50VXJsID0gdGhpcy5wbGFjZVJvdXRlci5wYXJzZVVybChjdXJyZW50U3RhdGUudXJsKTtcbiAgICBjb25zdCBuZXh0VXJsID0gdGhpcy5wbGFjZVJvdXRlci5wYXJzZVVybChuZXh0U3RhdGUudXJsKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnBsYWNlUm91dGVyLm5hdmlnYXRpb25TdGF0ZS5jYW5EZWFjdGl2YXRlUGxhY2UoY29tcG9uZW50LCBjdXJyZW50VXJsLCBuZXh0VXJsKTtcbiAgICByZXR1cm4gdGhpcy5oYW5kbGVHdWFyZFJlc3VsdChyZXN1bHQpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVHdWFyZFJlc3VsdChyZXN1bHQpIHtcbiAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgVXJsU25hcHNob3QpIHtcbiAgICAgIHJldHVybiByZXN1bHQudXJsVHJlZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBwcm90ZWN0ZWQgYXN5bmMgYXV0aG9yaXNlUGxhY2VUaGVuKGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCwgcnVuUGxhY2VHdWFyZHM6IChwbGFjZURlZmluaXRpb246IFBsYWNlRGVmaW5pdGlvbikgPT4gUHJvbWlzZTxib29sZWFuIHwgVXJsVHJlZT4pIHtcbiAgICBpZiAoUGxhY2VDb21wb25lbnQuaXNQbGFjZUNvbXBvbmVudENvbnN0cnVjdG9yKGFjdGl2YXRlZFJvdXRlLmNvbXBvbmVudCkpIHtcbiAgICAgIGNvbnN0IHBsYWNlRGVmaW5pdGlvbiA9IFBsYWNlQ29tcG9uZW50LmdldERlZmluaXRpb24oYWN0aXZhdGVkUm91dGUuY29tcG9uZW50KTtcbiAgICAgIGNvbnN0IGF1dGhvcmlzZVJlc3VsdCA9IHBsYWNlRGVmaW5pdGlvbi5hdXRoZW50aWNhdGUgPyBhd2FpdCB0aGlzLmlzQXV0aG9yaXNlZChhY3RpdmF0ZWRSb3V0ZSwgc3RhdGUpIDogdHJ1ZTtcbiAgICAgIGlmIChhdXRob3Jpc2VSZXN1bHQgPT09IHRydWUpIHtcbiAgICAgICAgLy8gd2UncmUgYXV0aG9yaXNlZCwgbm93IHJ1biB0aGUgcGxhY2UgZ3VhcmRzLlxuICAgICAgICByZXR1cm4gcnVuUGxhY2VHdWFyZHMocGxhY2VEZWZpbml0aW9uKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdub3QgYXV0aG9yaXNlZCByZXN1bHQnLCBhdXRob3Jpc2VSZXN1bHQpO1xuICAgICAgICByZXR1cm4gYXV0aG9yaXNlUmVzdWx0O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbGFuZy5pbGxlZ2FsU3RhdGUoYGV4cGVjdGVkIGNvbXBvbmVudCB0byBiZSBhbiBpbnN0YW5jZSBvZiBQbGFjZUNvbXBvbmVudCwgZ290ICR7YWN0aXZhdGVkUm91dGUuY29tcG9uZW50fWApO1xuICAgIH1cbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIGFzeW5jIGlzQXV0aG9yaXNlZChhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBQcm9taXNlPGJvb2xlYW4gfCBVcmxUcmVlPiB7XG4gICAgY29uc3QgYXV0aG9yaXNlZCA9IHRoaXMuZ2V0QXV0aEd1YXJkKHRoaXMuaW5qZWN0b3IpLmNhbkFjdGl2YXRlKGFjdGl2YXRlZFJvdXRlLCBzdGF0ZSk7XG4gICAgcmV0dXJuIChhdXRob3Jpc2VkIGluc3RhbmNlb2YgT2JzZXJ2YWJsZSkgPyBhdXRob3Jpc2VkLnRvUHJvbWlzZSgpIDogYXV0aG9yaXNlZDtcbiAgfVxuXG4gIGFic3RyYWN0IGdldEF1dGhHdWFyZChpbmplY3RvcjogSW5qZWN0b3IpOiBDYW5BY3RpdmF0ZTtcblxuICAvLyBAVHJhY2UoKVxuICBhc3luYyBjbGVhbkludGVyYWN0aW9uU3RhdGUocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90LCB0aGVuOiAoKSA9PiBQcm9taXNlPGJvb2xlYW4gfCBVcmxTbmFwc2hvdD4pOiBQcm9taXNlPGJvb2xlYW4gfCBVcmxTbmFwc2hvdD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMucGxhY2VSb3V0ZXIucGFyc2VVcmwoc3RhdGUudXJsKTtcbiAgICBpZiAoIXRoaXMuaW50ZXJhY3Rpb25TZXJ2aWNlLmlzQWN0aXZlKCkgJiYgdXJsLmhhc0ludGVyYWN0aW9uSWRzKCkpIHtcbiAgICAgIC8vIFRoaXMgaGFwcGVucyBpZiB3ZSByZWxvYWQgdGhlIHBhZ2Ugb3IgdGhlIHVybCB3YXMgcGFzdGVkIGFzIHRoZSByb3V0ZSBzaG91bGQgb25seSBiZSBhY3RpdmF0ZWRcbiAgICAgIC8vIGFmdGVyIHRoZSBpbnRlcmFjdGlvbiBjb250ZXh0IGhhcyBiZWNvbWUgYWN0aXZlLlxuICAgICAgcmV0dXJuIHVybC5yZW1vdmVJbnRlcmFjdGlvbklkcygpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhlbigpO1xuICAgIH1cbiAgfVxuXG59XG4iXX0=
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvcGxhY2UvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUlBLGVBQWMsWUFBWSxDQUFDO0FBQzNCLG1GQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGlDQUFjLGdCQUFnQixDQUFDO0FBQy9CLGdDQUFjLG9CQUFvQixDQUFDO0FBQ25DLDZCQUFjLGlCQUFpQixDQUFDO0FBQ2hDLDRCQUFjLGdCQUFnQixDQUFDO0FBQy9CLHNCQUFjLG1CQUFtQixDQUFDO0FBQ2xDLDRCQUFjLGdCQUFnQixDQUFDO0FBQy9CLDRCQUFjLGdCQUFnQixDQUFDO0FBQy9CLHNCQUFjLFNBQVMsQ0FBQztBQUN4QixpREFBYyxrREFBa0QsQ0FBQztBQUNqRSxxQ0FBYyxrREFBa0QsQ0FBQztBQUNqRSxvQ0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxzQ0FBYyxzREFBc0QsQ0FBQztBQUNyRSxxQ0FBYyxrREFBa0QsQ0FBQztBQUNqRSxvRUFBYyw0Q0FBNEMsQ0FBQztBQUMzRCwrQ0FBYyx3RUFBd0UsQ0FBQztBQUN2RixtQ0FBYywrQkFBK0IsQ0FBQztBQUM5Qyx5Q0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxpQ0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxnQ0FBYywyQkFBMkIsQ0FBQztBQUMxQyw4QkFBYyxrQ0FBa0MsQ0FBQztBQUNqRCxrREFBYywrQ0FBK0MsQ0FBQztBQUM5RCwwQkFBYyxtQkFBbUIsQ0FBQztBQUNsQyxlQUFjLG9CQUFvQixDQUFDO0FBQ25DLDREQUFjLDhCQUE4QixDQUFDO0FBQzdDLG9DQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGVBQWMsNkJBQTZCLENBQUM7QUFDNUMsZUFBYyw0QkFBNEIsQ0FBQztBQUMzQywrQkFBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGUgQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgYmFycmVsc2J5LlxuICovXG5cbmV4cG9ydCAqIGZyb20gXCIuL25hdi1pdGVtXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wbGFjZS1jb21wb25lbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BsYWNlLWNvbmZpZ1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGxhY2UtZGVmaW5pdGlvblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGxhY2UtaGlzdG9yeVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGxhY2Utcm91dGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wbGFjZS5kZWNvcmF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BsYWNlLm1vZHVsZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXJsLXNuYXBzaG90XCI7XG5leHBvcnQgKiBmcm9tIFwiLi92aXNpdFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9hYnN0cmFjdC1wbGFjZS1uYXZpZ2F0aW9uLmNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9idXN5LW92ZXJsYXkvYnVzeS1vdmVybGF5LmNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5jb21wb25lbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvbGlzdC1wbGFjZS1uYXYvbGlzdC1wbGFjZS1uYXYuY29tcG9uZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL3BsYWNlLW91dGxldC9wbGFjZS1vdXRsZXQuY29tcG9uZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL3BsYWNlLW91dGxldC9yb3V0ZS1hbmltYXRpb25zXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL3RhYmJlZC1wbGFjZS1uYXZpZ2F0aW9uL3RhYmJlZC1wbGFjZS1uYXZpZ2F0aW9uLmNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZ3VhcmRzL2Fic3RyYWN0LXBsYWNlLmd1YXJkXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ndWFyZHMvY29uc29saWRhdGVkLXBhcmFtLW1hcFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZ3VhcmRzL2ludGVyYWN0aW9uLmd1YXJkXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ndWFyZHMvbmF2aWdhdGlvbi1zdGF0ZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZ3VhcmRzL25vb3AtYXV0aC1ndWFyZC5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ndWFyZHMvcGxhY2UtY29tcG9uZW50LWRlYWN0aXZhdGlvbi1oYW5kbGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yb3V0ZS9mb3JtYXR0ZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JvdXRlL2pzb24tdHlwZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JvdXRlL3BhcmFtZXRlci1kZWNvcmF0b3JzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yb3V0ZS9wYXJhbWV0ZXItZGVmaW5pdGlvbi5jbGFzc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcm91dGUvcGFyYW1ldGVyLXNhbml0aXNlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcm91dGUvcGFyYW1ldGVyLXNuYXBzaG90XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yb3V0ZS92aXNpdC1zYW5pdGlzZXJcIjtcbiJdfQ==
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvcGxhY2UvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUlBLGVBQWMsWUFBWSxDQUFDO0FBQzNCLG1GQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGlDQUFjLGdCQUFnQixDQUFDO0FBQy9CLGdDQUFjLG9CQUFvQixDQUFDO0FBQ25DLDZCQUFjLGlCQUFpQixDQUFDO0FBQ2hDLDRCQUFjLGdCQUFnQixDQUFDO0FBQy9CLHNCQUFjLG1CQUFtQixDQUFDO0FBQ2xDLDRCQUFjLGdCQUFnQixDQUFDO0FBQy9CLDRCQUFjLGdCQUFnQixDQUFDO0FBQy9CLHNCQUFjLFNBQVMsQ0FBQztBQUN4QixpREFBYyxrREFBa0QsQ0FBQztBQUNqRSxxQ0FBYyxrREFBa0QsQ0FBQztBQUNqRSxvQ0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxzQ0FBYyxzREFBc0QsQ0FBQztBQUNyRSxxQ0FBYyxrREFBa0QsQ0FBQztBQUNqRSxvRUFBYyw0Q0FBNEMsQ0FBQztBQUMzRCwrQ0FBYyx3RUFBd0UsQ0FBQztBQUN2Rix5Q0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxnQ0FBYywyQkFBMkIsQ0FBQztBQUMxQyw4QkFBYyxrQ0FBa0MsQ0FBQztBQUNqRCxrREFBYywrQ0FBK0MsQ0FBQztBQUM5RCwyQkFBYyxzQkFBc0IsQ0FBQztBQUNyQywwQkFBYyxtQkFBbUIsQ0FBQztBQUNsQyxlQUFjLG9CQUFvQixDQUFDO0FBQ25DLDREQUFjLDhCQUE4QixDQUFDO0FBQzdDLG9DQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGVBQWMsNkJBQTZCLENBQUM7QUFDNUMsZUFBYyw0QkFBNEIsQ0FBQztBQUMzQywrQkFBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGUgQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgYmFycmVsc2J5LlxuICovXG5cbmV4cG9ydCAqIGZyb20gXCIuL25hdi1pdGVtXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wbGFjZS1jb21wb25lbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BsYWNlLWNvbmZpZ1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGxhY2UtZGVmaW5pdGlvblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGxhY2UtaGlzdG9yeVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGxhY2Utcm91dGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wbGFjZS5kZWNvcmF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BsYWNlLm1vZHVsZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXJsLXNuYXBzaG90XCI7XG5leHBvcnQgKiBmcm9tIFwiLi92aXNpdFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9hYnN0cmFjdC1wbGFjZS1uYXZpZ2F0aW9uLmNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9idXN5LW92ZXJsYXkvYnVzeS1vdmVybGF5LmNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5jb21wb25lbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvbGlzdC1wbGFjZS1uYXYvbGlzdC1wbGFjZS1uYXYuY29tcG9uZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL3BsYWNlLW91dGxldC9wbGFjZS1vdXRsZXQuY29tcG9uZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL3BsYWNlLW91dGxldC9yb3V0ZS1hbmltYXRpb25zXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL3RhYmJlZC1wbGFjZS1uYXZpZ2F0aW9uL3RhYmJlZC1wbGFjZS1uYXZpZ2F0aW9uLmNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZ3VhcmRzL2NvbnNvbGlkYXRlZC1wYXJhbS1tYXBcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2d1YXJkcy9uYXZpZ2F0aW9uLXN0YXRlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ndWFyZHMvbm9vcC1hdXRoLWd1YXJkLnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2d1YXJkcy9wbGFjZS1jb21wb25lbnQtZGVhY3RpdmF0aW9uLWhhbmRsZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2d1YXJkcy9wbGFjZS5ndWFyZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcm91dGUvZm9ybWF0dGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yb3V0ZS9qc29uLXR5cGVzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yb3V0ZS9wYXJhbWV0ZXItZGVjb3JhdG9yc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcm91dGUvcGFyYW1ldGVyLWRlZmluaXRpb24uY2xhc3NcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JvdXRlL3BhcmFtZXRlci1zYW5pdGlzZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JvdXRlL3BhcmFtZXRlci1zbmFwc2hvdFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcm91dGUvdmlzaXQtc2FuaXRpc2VyXCI7XG4iXX0=