@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
@@ -16,7 +16,6 @@ export * from "./components/alert-dialog/alert-dialog.component";
16
16
  export * from "./components/confirm-then-dialog/confirm-then-dialog.component";
17
17
  export * from "./components/confirmation-dialog/confirmation-dialog.component";
18
18
  export * from "./components/inplace-interaction-context/inplace-interaction-context.component";
19
- export * from "./components/interaction-outlet/interaction-outlet.component";
20
19
  export * from "./services/interaction.service";
21
20
  export * from "./services/modal-interaction-context.factory";
22
21
  export * from "./services/mat-dialog-interaction/dialog-interaction-context-factory";
@@ -1,4 +1,4 @@
1
- import { Constructable, ListModel } from '@coolon/pectin';
1
+ import { Constructable, ListModel, ValueModel } from '@coolon/pectin';
2
2
  import { Activity } from './activity';
3
3
  import { Alert } from './alert';
4
4
  import { Confirm } from './confirm';
@@ -10,9 +10,11 @@ export declare abstract class InteractionContextBase extends InteractionContext
10
10
  */
11
11
  private readonly _activityListDelegate;
12
12
  private deferredGetCurrentActivity;
13
+ private _currentActivity;
13
14
  protected constructor();
14
15
  protected setActivityList(activityList: ListModel<Activity<any, any>>): void;
15
16
  readonly activityList: ListModel<Activity<any, any, any>>;
17
+ readonly activeActivity: ValueModel<Activity<any, any, any>>;
16
18
  /**
17
19
  * Returns the activity that is currently active.
18
20
  * This model is only updated in the next tick after the view has been updated.
@@ -3,18 +3,24 @@ import { Activity } from './activity';
3
3
  import { Alert } from './alert';
4
4
  import { Confirm } from './confirm';
5
5
  export declare abstract class InteractionContext extends GarbageCollector {
6
- abstract readonly activityList: ListModel<Activity<any, any, any>>;
7
6
  abstract readonly active: ValueModel<boolean>;
7
+ abstract readonly activityList: ListModel<Activity<any, any, any>>;
8
+ abstract readonly activeActivity: ValueModel<Activity<any, any, any>>;
8
9
  /**
9
10
  * Returns true if an activity is currently running.
10
11
  */
11
12
  isActive(): boolean;
12
13
  dispose(): void;
14
+ /**
15
+ * Cancels the current activity and returns true the context is no longer active, false if
16
+ * there is still another activity running.
17
+ */
18
+ cancelCurrentActivity(): Promise<boolean>;
13
19
  /**
14
20
  * Returns the activity that is currently active.
15
21
  * This model is only updated in the next tick after the view has been updated.
16
22
  */
17
- abstract getCurrentActivity(): Promise<Activity<any, any>>;
23
+ protected abstract getCurrentActivity(): Promise<Activity<any, any>>;
18
24
  abstract startActivity<D, R, E>(activityType: Constructable<Activity<D, R, E>>, data?: D): Promise<R>;
19
25
  abstract alert(alert: Alert): Promise<void>;
20
26
  abstract confirm(confirm: Confirm): Promise<boolean>;
@@ -26,4 +32,5 @@ export declare abstract class InteractionContext extends GarbageCollector {
26
32
  * @param data the activity data.
27
33
  */
28
34
  abstract confirmThen<D, R, E>(confirm: Confirm, activityType: Constructable<Activity<D, R, E>>, data?: D): Promise<R>;
35
+ abort(): Promise<void>;
29
36
  }
@@ -1,5 +1,4 @@
1
1
  import { BooleanValueModelChain, Disposable, GarbageCollector, ListModelChain, MutableValueModel, ValueModel } from '@coolon/pectin';
2
- import { Activity } from '../activity';
3
2
  import { InteractionContext } from '../interaction-context';
4
3
  import { ModalInteractionContextFactory } from './modal-interaction-context.factory';
5
4
  export declare class InteractionService {
@@ -15,9 +14,10 @@ export declare class InteractionService {
15
14
  readonly inlineInteractionActive: BooleanValueModelChain;
16
15
  constructor(modelInteractionContextFactory: ModalInteractionContextFactory);
17
16
  isActive(): boolean;
17
+ isModalActive(): boolean;
18
18
  createModalInteractionContextFor(disposable: Disposable.Collector): InteractionContext;
19
19
  _registerInplaceInteractionContext(interactionContext: InteractionContext): void;
20
- getCurrentActivity(): Promise<Activity<any, any, any>>;
20
+ getActiveContext(): InteractionContext;
21
21
  /**
22
22
  * Creates an interaction context that will prevent any other contexts from starting an
23
23
  * activity until it is disposed. This is intended for use by the router for passing
@@ -14,23 +14,26 @@ export declare abstract class NavigationState extends GarbageCollector {
14
14
  abstract readonly startingUrl: string;
15
15
  abstract readonly isPopState: boolean;
16
16
  constructor(context: NavigationState.Context);
17
+ readonly name: string;
17
18
  readonly idle: boolean;
18
19
  readonly placeRouter: PlaceRouter;
19
20
  readonly interactionService: InteractionService;
20
21
  readonly interactionContext: InteractionContext;
21
22
  storeVisit(visit: Visit): void;
22
23
  getVisitFor(placeDef: PlaceDefinition): Visit;
24
+ onPlaceNavigationStart(visit: Visit, initialUrl: string): NavigationState;
23
25
  onPopState(event: NavigationStart): NavigationState;
24
- onStart(event: NavigationStart): NavigationState;
25
- onCancel(event: NavigationCancel): NavigationState;
26
- onError(event: NavigationError): NavigationState;
27
- onEnd(event: NavigationEnd): NavigationState;
26
+ onRouterStarted(event: NavigationStart): NavigationState;
27
+ onRouterCancelled(event: NavigationCancel): NavigationState;
28
+ onRouterError(event: NavigationError): NavigationState;
29
+ onRouterEnd(event: NavigationEnd): NavigationState;
28
30
  onBackClickedDuringNavigationInteraction(newUrl: string): NavigationState;
29
- canDeactivatePlace(component: PlaceComponent, nextState: UrlSnapshot): Promise<boolean>;
31
+ canDeactivatePlace(component: PlaceComponent, currentUrl: UrlSnapshot, nextUrl: UrlSnapshot): Promise<boolean | UrlSnapshot>;
30
32
  getVisits(): Visit[];
31
33
  protected illegalTransition<R>(message: string | RouterEvent): R;
32
34
  protected currentRouterUrl(): string;
33
- protected createTransitionStateFor(event: NavigationStart): NavigationState.NavigationBackTransition | NavigationState.NavigationTransition;
35
+ protected createTransitionStateFor(event: NavigationStart): any;
36
+ protected createIdleState(): any;
34
37
  resetBrowserLocation(url: any): void;
35
38
  toString(): string;
36
39
  }
@@ -46,41 +49,47 @@ export declare namespace NavigationState {
46
49
  readonly startingUrl: any;
47
50
  readonly isPopState = false;
48
51
  constructor(context: Context);
49
- onStart(event: NavigationStart): NavigationState;
52
+ onPlaceNavigationStart(visit: Visit, initialUrl: string): NavigationState;
53
+ onRouterStarted(event: NavigationStart): NavigationState;
50
54
  onPopState(event: NavigationStart): NavigationState;
51
55
  }
52
56
  abstract class AbstractNavigationTransition extends NavigationState {
53
- readonly isPopState: boolean;
54
57
  readonly startingUrl: string;
55
58
  readonly isTransitional = true;
56
59
  private componentDeactivationHandlers;
57
60
  private _interactionContext;
58
- constructor(context: Context, isPopState: boolean, startingUrl: string);
61
+ constructor(context: Context, startingUrl: string);
59
62
  readonly interactionContext: InteractionContext;
60
- onStart(event: NavigationStart): NavigationState;
61
- onEnd(event: NavigationEnd): NavigationState;
63
+ onRouterStarted(event: NavigationStart): NavigationState;
64
+ onRouterEnd(event: NavigationEnd): NavigationState;
62
65
  onBackClickedDuringNavigationInteraction(locationTriggerUrl: string): NavigationState;
63
- canDeactivatePlace(component: PlaceComponent, nextState: UrlSnapshot): Promise<boolean>;
66
+ canDeactivatePlace(component: PlaceComponent, currentUrl: UrlSnapshot, nextUrl: UrlSnapshot): Promise<boolean | UrlSnapshot>;
64
67
  private detachInteractionContext;
65
68
  }
66
69
  class NavigationTransition extends AbstractNavigationTransition {
67
70
  readonly isPopState = false;
68
- onStart(event: NavigationStart): NavigationState;
69
- onEnd(event: NavigationEnd): NavigationState;
70
- onCancel(event: NavigationCancel): NavigationState;
71
- onError(event: NavigationError): NavigationState;
71
+ onRouterCancelled(event: NavigationCancel): NavigationState;
72
+ onRouterError(event: NavigationError): NavigationState;
72
73
  toString(): string;
73
74
  }
74
- class NavigationBackTransition extends AbstractNavigationTransition {
75
+ class PopStateTransition extends AbstractNavigationTransition {
75
76
  readonly isPopState = true;
76
- onCancel(event: NavigationCancel): NavigationState;
77
- onError(event: NavigationError): NavigationState;
77
+ onRouterCancelled(event: NavigationCancel): NavigationState;
78
+ onRouterError(event: NavigationError): NavigationState;
79
+ }
80
+ class IdleDuringInteraction extends NavigationState {
81
+ readonly startingUrl: string;
82
+ readonly isTransitional = false;
83
+ readonly isPopState = false;
84
+ constructor(context: Context, startingUrl: string);
85
+ onPlaceNavigationStart(visit: Visit, initialUrl: string): NavigationState;
86
+ onRouterStarted(event: NavigationStart): NavigationState;
87
+ onPopState(event: NavigationStart): NavigationState;
78
88
  }
79
- abstract class AbstractInteractionTransition extends NavigationState {
89
+ abstract class AbstractInteractionTransition extends AbstractNavigationTransition {
80
90
  readonly startingUrl: string;
81
91
  readonly isTransitional = true;
82
92
  constructor(context: Context, startingUrl: string);
83
- protected reinstateInteractionRoute(): void;
84
93
  }
85
94
  /**
86
95
  * This state exists to handle all events while any kind of navigation is in progress. That way all other states can
@@ -88,36 +97,33 @@ export declare namespace NavigationState {
88
97
  */
89
98
  class InteractionTransition extends AbstractInteractionTransition {
90
99
  readonly isPopState = false;
91
- onEnd(event: NavigationEnd): NavigationState;
100
+ onRouterCancelled(event: NavigationCancel): NavigationState;
101
+ onRouterError(event: NavigationError): NavigationState;
102
+ onRouterEnd(event: NavigationEnd): NavigationState;
92
103
  }
93
104
  /**
94
105
  * This state exists to handle all events while any kind of navigation is in progress. That way all other states can
95
106
  * happily ignore interaction contexts.
96
107
  */
97
- class InteractionBackTransition extends AbstractInteractionTransition {
108
+ class InteractionPopStateTransition extends AbstractInteractionTransition {
98
109
  readonly isPopState = true;
99
- onEnd(event: NavigationEnd): NavigationState;
100
- }
101
- class IdleDuringInteraction extends NavigationState {
102
- readonly startingUrl: string;
103
- readonly isTransitional = false;
104
- readonly isPopState = false;
105
- constructor(context: Context, startingUrl: string);
106
- onStart(event: NavigationStart): NavigationState;
107
- onPopState(event: NavigationStart): NavigationState;
110
+ onRouterCancelled(event: NavigationCancel): NavigationState;
111
+ onRouterEnd(event: NavigationEnd): NavigationState;
108
112
  }
109
113
  class CancelledDuringNavigationInteraction extends NavigationState {
110
114
  readonly startingUrl: string;
115
+ readonly startingEventWasAPopState: boolean;
111
116
  readonly locationChangeTriggerUrl: string;
112
117
  readonly isPopState = false;
113
- private capturedFauxRouterStart;
114
- constructor(context: Context, startingUrl: string, locationChangeTriggerUrl: string);
118
+ private gotPopStateWithLeavingUrl;
119
+ constructor(context: Context, startingUrl: string, startingEventWasAPopState: boolean, locationChangeTriggerUrl: string);
115
120
  readonly isTransitional: boolean;
116
- onStart(event: NavigationStart): NavigationState;
117
- onCancel(event: NavigationCancel): NavigationState;
118
- onEnd(event: NavigationEnd): NavigationState;
119
- onError(event: NavigationError): NavigationState;
121
+ onRouterStarted(event: NavigationStart): NavigationState;
122
+ onRouterCancelled(event: NavigationCancel): NavigationState;
123
+ onRouterEnd(event: NavigationEnd): NavigationState;
124
+ onRouterError(event: NavigationError): NavigationState;
120
125
  onPopState(event: NavigationStart): NavigationState;
126
+ canDeactivatePlace(component: PlaceComponent, currentUrl: UrlSnapshot, nextUrl: UrlSnapshot): Promise<boolean | UrlSnapshot>;
121
127
  ignore(event: RouterEvent, reason?: string): NavigationState;
122
128
  toString(): string;
123
129
  }
@@ -3,10 +3,13 @@ import { UrlSnapshot } from '../url-snapshot';
3
3
  import { NavigationState } from './navigation-state';
4
4
  export declare class PlaceComponentDeactivationHandler {
5
5
  readonly component: PlaceComponent;
6
- readonly navigationSession: NavigationState;
6
+ readonly navigationState: NavigationState;
7
+ readonly isPrimaryComponent: boolean;
7
8
  private canDeactivatePromise;
8
- constructor(component: PlaceComponent, navigationSession: NavigationState);
9
- canDeactivate(nextState: UrlSnapshot): Promise<boolean>;
10
- protected canDeactivateComponent(nextState: UrlSnapshot): Promise<boolean>;
9
+ constructor(component: PlaceComponent, navigationState: NavigationState, isPrimaryComponent: boolean);
10
+ readonly interactionService: import("../../interaction").InteractionService;
11
+ readonly placeRouter: import("..").PlaceRouter;
12
+ canDeactivate(currentUrl: UrlSnapshot, nextState: UrlSnapshot): Promise<boolean | UrlSnapshot>;
13
+ protected canDeactivateComponent(currentUrl: UrlSnapshot, nextState: UrlSnapshot): Promise<UrlSnapshot | boolean>;
11
14
  protected isNotJustAChangeInRouteId(nextState: UrlSnapshot): boolean;
12
15
  }
@@ -1,19 +1,24 @@
1
1
  import { Injector } from '@angular/core';
2
2
  import { ActivatedRouteSnapshot, CanActivate, CanDeactivate, Router, RouterStateSnapshot, UrlSerializer, UrlTree } from '@angular/router';
3
+ import { InteractionService } from '../../interaction/services/interaction.service';
3
4
  import { PlaceComponent } from '../place-component';
4
5
  import { PlaceDefinition } from '../place-definition';
5
6
  import { PlaceHistory } from '../place-history';
6
7
  import { PlaceRouter } from '../place-router';
7
- export declare abstract class AbstractPlaceGuard implements CanActivate, CanDeactivate<PlaceComponent> {
8
+ import { UrlSnapshot } from '../url-snapshot';
9
+ export declare abstract class PlaceGuard implements CanActivate, CanDeactivate<PlaceComponent> {
8
10
  private readonly router;
9
11
  private urlSerializer;
10
12
  private readonly placeRouter;
11
13
  private readonly placeHistory;
14
+ private readonly interactionService;
12
15
  private readonly injector;
13
- constructor(router: Router, urlSerializer: UrlSerializer, placeRouter: PlaceRouter, placeHistory: PlaceHistory, injector: Injector);
16
+ constructor(router: Router, urlSerializer: UrlSerializer, placeRouter: PlaceRouter, placeHistory: PlaceHistory, interactionService: InteractionService, injector: Injector);
14
17
  canActivate(activatedRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean | UrlTree>;
15
- canDeactivate(component: PlaceComponent, currentRoute: ActivatedRouteSnapshot, currentState: RouterStateSnapshot, nextState?: RouterStateSnapshot): Promise<boolean>;
18
+ canDeactivate(component: PlaceComponent, currentRoute: ActivatedRouteSnapshot, currentState: RouterStateSnapshot, nextState?: RouterStateSnapshot): Promise<boolean | UrlTree>;
19
+ private handleGuardResult;
16
20
  protected authorisePlaceThen(activatedRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot, runPlaceGuards: (placeDefinition: PlaceDefinition) => Promise<boolean | UrlTree>): Promise<boolean | UrlTree>;
17
21
  isAuthorised(activatedRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean | UrlTree>;
18
22
  abstract getAuthGuard(injector: Injector): CanActivate;
23
+ cleanInteractionState(route: ActivatedRouteSnapshot, state: RouterStateSnapshot, then: () => Promise<boolean | UrlSnapshot>): Promise<boolean | UrlSnapshot>;
19
24
  }
@@ -18,12 +18,11 @@ export * from "./components/list-place-nav/list-place-nav.component";
18
18
  export * from "./components/place-outlet/place-outlet.component";
19
19
  export * from "./components/place-outlet/route-animations";
20
20
  export * from "./components/tabbed-place-navigation/tabbed-place-navigation.component";
21
- export * from "./guards/abstract-place.guard";
22
21
  export * from "./guards/consolidated-param-map";
23
- export * from "./guards/interaction.guard";
24
22
  export * from "./guards/navigation-state";
25
23
  export * from "./guards/noop-auth-guard.service";
26
24
  export * from "./guards/place-component-deactivation-handler";
25
+ export * from "./guards/place.guard";
27
26
  export * from "./route/formatter";
28
27
  export * from "./route/json-types";
29
28
  export * from "./route/parameter-decorators";
@@ -38,7 +38,9 @@ export declare class PlaceRouter extends GarbageCollector {
38
38
  parseUrl(url: string): UrlSnapshot;
39
39
  resetBrowserLocation(url: string): void;
40
40
  getCurrentRouterUrl(): string;
41
+ getCurrentRouteSnapshot(): UrlSnapshot;
41
42
  getActiveInteractionIdsFromUrl(url: string): string[];
42
43
  hasActiveInteractionIds(url: string): boolean;
44
+ navigateByUrl(urlSnapshot: UrlSnapshot): void;
43
45
  syncInteractionIdsWithRouter(): void;
44
46
  }
@@ -1,28 +1,33 @@
1
- import { UrlSegment, UrlSerializer } from '@angular/router';
1
+ import { NavigationExtras, UrlSegment, UrlSerializer, UrlTree } from '@angular/router';
2
2
  import { PlaceDefinition } from './place-definition';
3
3
  import { Visit } from './visit';
4
4
  export declare class UrlSnapshot {
5
5
  readonly urlSerializer: UrlSerializer;
6
6
  readonly url: string;
7
- private readonly urlTree;
8
- constructor(urlSerializer: UrlSerializer, url: string);
9
- protected replaceExistingVisitSegmentsWith(visit: Visit): UrlSegment[];
7
+ private readonly options;
8
+ readonly urlTree: UrlTree;
9
+ constructor(urlSerializer: UrlSerializer, url: string, options: NavigationExtras);
10
+ updateVisitSegments(visit: Visit): UrlSnapshot;
10
11
  private getPrimarySegments;
11
12
  /**
12
13
  * Converts the visit into segments. Please not that these segments are not e
13
14
  * @param visit
14
15
  */
15
16
  protected getSegmentsFor(visit: Visit): UrlSegment[];
16
- createRedirectCommandsFor(visit: Visit): any[];
17
17
  includesPathOf(placeDef: PlaceDefinition): UrlSegment;
18
18
  getInteractionIds(): string[];
19
- addOrReplaceInteractionIds(ids: string[]): UrlSnapshot;
19
+ hasInteractionIds(): boolean;
20
+ updateInteractionIds(ids: string[]): UrlSnapshot;
21
+ removeInteractionIds(): UrlSnapshot;
22
+ withOptions(options: NavigationExtras): UrlSnapshot;
23
+ getNavigationExtras(): NavigationExtras;
20
24
  }
21
25
  export declare namespace UrlSnapshot {
22
- const INTERACTION_ROUTER_OUTLET = "aup-interactions";
23
- const INTERACTION_ROUTER_PATH = "active";
26
+ const INTERACTION_QUERY_PARAM = "aup-interactions";
24
27
  const INTERACTION_ID_SEPARATOR = "--";
25
28
  function parseInteractionIds(path: string): string[];
26
29
  function createPathIdFor(interactionIds: string[]): string;
27
- function createInteractionOutletRouterCommands(interactionIds: string[]): string[];
30
+ interface NavigationOptions {
31
+ replaceUrl?: boolean;
32
+ }
28
33
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coolon/angular-ui-powerups",
3
- "version": "0.0.101",
3
+ "version": "0.0.103",
4
4
  "schematics": "./schematics/collection.json",
5
5
  "dependencies": {
6
6
  "ts-morph": "^3.1.3",
@@ -98,6 +98,7 @@ class PlaceDef {
98
98
  component: ${this.componentClass},
99
99
  canActivate: [PlaceGuard],
100
100
  canDeactivate: [PlaceGuard],
101
+ runGuardsAndResolvers: "paramsOrQueryParamsChange",
101
102
  children:[
102
103
  ${this.getChildRouteTemplates().join(', ')}
103
104
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"place-def.js","sourceRoot":"","sources":["../../../../../libs/angular-ui-powerups/schematics/place-routes/place-def.ts"],"names":[],"mappings":";;;;;;;;AACA,2CAAsC;AACtC,0EAA2E;AAE3E,+DAA0D;AAE1D,MAAa,QAAQ;IAInB,YACW,cAAsB,EACtB,UAAkB,EAClB,cAAsB,EACtB,UAA4B,EAC5B,QAA4B,EAC5B,eAAqC,EACrC,SAA8B,EAC9B,0BAAkC;QAPlC,mBAAc,GAAd,cAAc,CAAQ;QACtB,eAAU,GAAV,UAAU,CAAQ;QAClB,mBAAc,GAAd,cAAc,CAAQ;QACtB,eAAU,GAAV,UAAU,CAAkB;QAC5B,aAAQ,GAAR,QAAQ,CAAoB;QAC5B,oBAAe,GAAf,eAAe,CAAsB;QACrC,cAAS,GAAT,SAAS,CAAqB;QAC9B,+BAA0B,GAA1B,0BAA0B,CAAQ;IAE7C,CAAC;IAGD,IAAI,IAAI;QACN,OAAO,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC7B,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC,CAAC;YACvD,IAAI,CAAC,IAAI,CAAC;IACd,CAAC;IAED,+BAA+B,CAAC,IAAY;QAC1C,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;SACrF;QACD,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,aAAa,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;YACvF,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,QAAQ,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACrD;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,oCAAoC;QAClC,MAAM,cAAc,GAAa,EAAE,CAAC;QAEpC,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;SACzD;QACD,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3D,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SACpC;QAED,OAAO,eAAe,IAAI,CAAC,+BAA+B,CAAC,aAAa,CAAC;mBAC1D,IAAI,CAAC,cAAc,SAAS,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;MAClE,CAAC;IACL,CAAC;IAED,mCAAmC;QACjC,MAAM,cAAc,GAAa,EAAE,CAAC;QAEpC,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;SACzD;QAED,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3D,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;SACvC;QAED,OAAO,eAAe,IAAI,CAAC,+BAA+B,CAAC,aAAa,CAAC;2CAClC,IAAI,CAAC,cAAc,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;MACxF,CAAC;IACL,CAAC;IAGD,IAAI,SAAS;QACX,MAAM,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QACxD,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,SAAS,CAAC,QAAkB;QAC1B,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;IACzB,CAAC;IAED,OAAO;QACL,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAGO,kBAAkB;QACxB,OAAO,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;IACjE,CAAC;IAGD,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;IACxD,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,KAAK,MAAM,CAAC;IACjD,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,gBAAgB;QACd,MAAM,IAAI,GAAG,EAAE,CAAC;QAChB,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,mBAAmB,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC;SACnE;QACD,IAAI,CAAC,IAAI,CAAC;aACD,IAAI,CAAC,QAAQ;iBACT,IAAI,CAAC,cAAc;;;;QAI5B,IAAI,CAAC,sBAAsB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;;IAE5C,CAAC,CAAC;QACF,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,sBAAsB;QACpB,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;YACtH,OAAO;gBACL,yBAAyB,UAAU,sBAAsB;gBACzD,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;aAChD,CAAC;SACH;aAAM;YACL,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC;SACrD;IACH,CAAC;IAGD,IAAI,eAAe;QACjB,IAAI,IAAI,CAAC,0BAA0B,EAAE;YACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,KAAK,IAAI,CAAC,0BAA0B,CAAC,CAAC;YAC/F,IAAI,CAAC,QAAQ,EAAE;gBACb,aAAI,CAAC,YAAY,CAAC,qEAAqE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,SAAS,IAAI,CAAC,0BAA0B,EAAE,CAAC,CAAC;aAC5K;YACD,OAAO,QAAQ,CAAC;SACjB;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CAEF;AAlIC;IADC,aAAO,EAAE;oCAGT;AAwDD;IADC,aAAO,EAAE;yCAIT;AAgBD;IADC,aAAO,EAAE;8CAGT;AAwCD;IADC,aAAO,EAAE;+CAUT;AAjJH,4BAmJC;AAED,WAAiB,QAAQ;IAcvB,SAAgB,IAAI,CAAC,UAAsB,EAAE,SAA2B,EAAE,OAAyB;QACjG,OAAO,IAAI,uCAAiB,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC/D,CAAC;IAFe,aAAI,OAEnB,CAAA;IAED,SAAgB,oBAAoB,CAAC,KAAa;QAChD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;QACrD,+CAA+C;QAC/C,OAAO,MAAM,CAAC;IAChB,CAAC;IAJe,6BAAoB,uBAInC,CAAA;IAED,MAAa,QAAQ;QAGnB,YAAqB,QAAgB,EAAW,cAAsB;YAAjD,aAAQ,GAAR,QAAQ,CAAQ;YAAW,mBAAc,GAAd,cAAc,CAAQ;QACtE,CAAC;QAED,IAAI,QAAQ;YACV,OAAO,IAAI,CAAC,SAAS,CAAC;QACxB,CAAC;QAED,OAAO,CAAC,SAAqB;YAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,KAAK,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,cAAc,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC;YACrH,OAAO,IAAI,CAAC,SAAS,CAAC;QACxB,CAAC;KACF;IAdY,iBAAQ,WAcpB,CAAA;AAGH,CAAC,EAzCgB,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAyCxB"}
1
+ {"version":3,"file":"place-def.js","sourceRoot":"","sources":["../../../../../libs/angular-ui-powerups/schematics/place-routes/place-def.ts"],"names":[],"mappings":"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"}
@@ -12,8 +12,13 @@
12
12
 
13
13
 
14
14
  import { Injectable, Injector } from '@angular/core';
15
- import { Router, UrlSerializer } from '@angular/router';
16
- import { AbstractPlaceGuard, PlaceHistory, PlaceRouter, InteractionGuard, NoopComponent, UrlSnapshot } from '@coolon/angular-ui-powerups';
15
+ import { Routes, Router, UrlSerializer } from '@angular/router';
16
+ import {
17
+ InteractionService,
18
+ PlaceGuard as AbstractPlaceGuard,
19
+ PlaceHistory,
20
+ PlaceRouter
21
+ } from '@coolon/angular-ui-powerups';
17
22
  import { <%= config.authGuard.className %> } from '<%= config.authGuard.importPath %>';
18
23
 
19
24
  <% placeDefs.forEach(def => { %>import {<%= def.componentClass %>} from "<%= def.importPath %>";
@@ -28,8 +33,9 @@ export class PlaceGuard extends AbstractPlaceGuard {
28
33
  urlSerializer: UrlSerializer,
29
34
  placeRouter: PlaceRouter,
30
35
  placeHistory: PlaceHistory,
36
+ interactionService:InteractionService,
31
37
  injector: Injector) {
32
- super(router, urlSerializer, placeRouter, placeHistory, injector);
38
+ super(router, urlSerializer, placeRouter, placeHistory,interactionService, injector);
33
39
  }
34
40
 
35
41
  getAuthGuard(injector:Injector) {
@@ -37,14 +43,7 @@ export class PlaceGuard extends AbstractPlaceGuard {
37
43
  }
38
44
  }
39
45
 
40
- export const placeRoutes = [<% placeDefs.filter(def=> !def.isChild()).forEach(def => { %>
46
+ export const placeRoutes:Routes = [<% placeDefs.filter(def=> !def.isChild()).forEach(def => { %>
41
47
  <%= def.getRouteTemplate() %>,
42
48
  <% }) %>
43
- {
44
- path: "active/:ids", // Must match `${UrlSnapshot.INTERACTION_ROUTER_PATH}/:ids`
45
- outlet:UrlSnapshot.INTERACTION_ROUTER_OUTLET,
46
- component: NoopComponent,
47
- canDeactivate: [InteractionGuard],
48
- canActivate: [InteractionGuard]
49
- }
50
49
  ];
@@ -1,19 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
- import { Component } from '@angular/core';
6
- export class InteractionOutletComponent {
7
- constructor() {
8
- }
9
- }
10
- InteractionOutletComponent.decorators = [
11
- { type: Component, args: [{
12
- selector: 'aup-interaction-outlet',
13
- template: "<router-outlet name=\"interaction-context\"></router-outlet>\n",
14
- styles: [":host{display:block}"]
15
- }] }
16
- ];
17
- /** @nocollapse */
18
- InteractionOutletComponent.ctorParameters = () => [];
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJhY3Rpb24tb3V0bGV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbImxpYi9pbnRlcmFjdGlvbi9jb21wb25lbnRzL2ludGVyYWN0aW9uLW91dGxldC9pbnRlcmFjdGlvbi1vdXRsZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTzFDLE1BQU0sT0FBTywwQkFBMEI7SUFDckM7SUFDQSxDQUFDOzs7WUFQRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHdCQUF3QjtnQkFDbEMsMEVBQWtEOzthQUVuRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhdXAtaW50ZXJhY3Rpb24tb3V0bGV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ludGVyYWN0aW9uLW91dGxldC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ludGVyYWN0aW9uLW91dGxldC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEludGVyYWN0aW9uT3V0bGV0Q29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gIH1cbn1cbiJdfQ==
@@ -1,166 +0,0 @@
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 { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
7
- import { lang, Trace } from '@coolon/pectin';
8
- import { Observable } from 'rxjs';
9
- import { PlaceComponent } from '../place-component';
10
- import { VisitSanitiser } from '../route/visit-sanitiser';
11
- import { Visit } from '../visit';
12
- import { ConsolidatedParameterMap } from './consolidated-param-map';
13
- /**
14
- * @abstract
15
- */
16
- export class AbstractPlaceGuard {
17
- /**
18
- * @param {?} router
19
- * @param {?} urlSerializer
20
- * @param {?} placeRouter
21
- * @param {?} placeHistory
22
- * @param {?} injector
23
- */
24
- constructor(router, urlSerializer, placeRouter, placeHistory, injector) {
25
- this.router = router;
26
- this.urlSerializer = urlSerializer;
27
- this.placeRouter = placeRouter;
28
- this.placeHistory = placeHistory;
29
- this.injector = injector;
30
- }
31
- // @Trace()
32
- /**
33
- * @param {?} activatedRoute
34
- * @param {?} state
35
- * @return {?}
36
- */
37
- canActivate(activatedRoute, state) {
38
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
39
- return this.authorisePlaceThen(activatedRoute, state, (/**
40
- * @param {?} placeDefinition
41
- * @return {?}
42
- */
43
- (placeDefinition) => tslib_1.__awaiter(this, void 0, void 0, function* () {
44
- // Parse our route params.
45
- /** @type {?} */
46
- const params = new ConsolidatedParameterMap(activatedRoute.paramMap, activatedRoute.url);
47
- /** @type {?} */
48
- const parsedParams = placeDefinition.parseRouteParams(params);
49
- /** @type {?} */
50
- const initialVisit = this.placeRouter.navigationState.getVisitFor(placeDefinition) || new Visit(placeDefinition, parsedParams);
51
- /** @type {?} */
52
- const sanitiser = new VisitSanitiser(activatedRoute, this.router, this.placeHistory, this.injector);
53
- /** @type {?} */
54
- const sanitisedVisit = yield sanitiser.sanitise(initialVisit.mergeRouteParameters(parsedParams));
55
- // Save the visit with any updated parameters. We need to save it so we remember any non route parameters
56
- this.placeRouter.navigationState.storeVisit(sanitisedVisit);
57
- if (initialVisit.hasRoutingChangedFrom(sanitisedVisit)) {
58
- // Regenerate the url
59
- /** @type {?} */
60
- const commands = this.placeRouter.parseUrl(state.url).createRedirectCommandsFor(sanitisedVisit);
61
- console.log('##### Place Guard Redirect', commands);
62
- return this.router.createUrlTree(commands, {
63
- replaceUrl: true,
64
- skipLocationChange: false
65
- });
66
- }
67
- else {
68
- return true;
69
- }
70
- })));
71
- });
72
- }
73
- /**
74
- * @param {?} component
75
- * @param {?} currentRoute
76
- * @param {?} currentState
77
- * @param {?=} nextState
78
- * @return {?}
79
- */
80
- canDeactivate(component, currentRoute, currentState, nextState) {
81
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
82
- return this.placeRouter.navigationState.canDeactivatePlace(component, this.placeRouter.parseUrl(nextState.url));
83
- });
84
- }
85
- // @Trace()
86
- /**
87
- * @protected
88
- * @param {?} activatedRoute
89
- * @param {?} state
90
- * @param {?} runPlaceGuards
91
- * @return {?}
92
- */
93
- authorisePlaceThen(activatedRoute, state, runPlaceGuards) {
94
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
95
- if (PlaceComponent.isPlaceComponentConstructor(activatedRoute.component)) {
96
- /** @type {?} */
97
- const placeDefinition = PlaceComponent.getDefinition(activatedRoute.component);
98
- /** @type {?} */
99
- const authoriseResult = placeDefinition.authenticate ? yield this.isAuthorised(activatedRoute, state) : true;
100
- if (authoriseResult === true) {
101
- // we're authorised, now run the place guards.
102
- return runPlaceGuards(placeDefinition);
103
- }
104
- else {
105
- console.log('not authorised result', authoriseResult);
106
- return authoriseResult;
107
- }
108
- }
109
- else {
110
- return lang.illegalState(`expected component to be an instance of PlaceComponent, got ${activatedRoute.component}`);
111
- }
112
- });
113
- }
114
- /**
115
- * @param {?} activatedRoute
116
- * @param {?} state
117
- * @return {?}
118
- */
119
- isAuthorised(activatedRoute, state) {
120
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
121
- /** @type {?} */
122
- const authorised = this.getAuthGuard(this.injector).canActivate(activatedRoute, state);
123
- return (authorised instanceof Observable) ? authorised.toPromise() : authorised;
124
- });
125
- }
126
- }
127
- tslib_1.__decorate([
128
- Trace(),
129
- tslib_1.__metadata("design:type", Function),
130
- tslib_1.__metadata("design:paramtypes", [ActivatedRouteSnapshot, RouterStateSnapshot]),
131
- tslib_1.__metadata("design:returntype", Promise)
132
- ], AbstractPlaceGuard.prototype, "isAuthorised", null);
133
- if (false) {
134
- /**
135
- * @type {?}
136
- * @private
137
- */
138
- AbstractPlaceGuard.prototype.router;
139
- /**
140
- * @type {?}
141
- * @private
142
- */
143
- AbstractPlaceGuard.prototype.urlSerializer;
144
- /**
145
- * @type {?}
146
- * @private
147
- */
148
- AbstractPlaceGuard.prototype.placeRouter;
149
- /**
150
- * @type {?}
151
- * @private
152
- */
153
- AbstractPlaceGuard.prototype.placeHistory;
154
- /**
155
- * @type {?}
156
- * @private
157
- */
158
- AbstractPlaceGuard.prototype.injector;
159
- /**
160
- * @abstract
161
- * @param {?} injector
162
- * @return {?}
163
- */
164
- AbstractPlaceGuard.prototype.getAuthGuard = function (injector) { };
165
- }
166
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtcGxhY2UuZ3VhcmQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvcGxhY2UvZ3VhcmRzL2Fic3RyYWN0LXBsYWNlLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsT0FBTyxFQUNMLHNCQUFzQixFQUd0QixtQkFBbUIsRUFHcEIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSXBELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7O0FBR3BFLE1BQU0sT0FBZ0Isa0JBQWtCOzs7Ozs7OztJQUd0QyxZQUE2QixNQUFjLEVBQ3ZCLGFBQTRCLEVBQ25CLFdBQXdCLEVBQ3hCLFlBQTBCLEVBQzFCLFFBQWtCO1FBSmxCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDdkIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDbkIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUMvQyxDQUFDOzs7Ozs7O0lBR0ssV0FBVyxDQUFDLGNBQXNDLEVBQUUsS0FBMEI7O1lBQ2xGLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsRUFBRSxLQUFLOzs7O1lBQUUsQ0FBTSxlQUFlLEVBQUMsRUFBRTs7O3NCQUd0RSxNQUFNLEdBQUcsSUFBSSx3QkFBd0IsQ0FBQyxjQUFj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U0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztRQUNsRixDQUFDO0tBQUE7Q0FHRjtBQU5DO0lBREMsS0FBSyxFQUFFOzs2Q0FDMkIsc0JBQXNCLEVBQVMsbUJBQW1COztzREFHcEY7Ozs7OztJQTVEVyxvQ0FBK0I7Ozs7O0lBQy9CLDJDQUFvQzs7Ozs7SUFDcEMseUNBQXlDOzs7OztJQUN6QywwQ0FBMkM7Ozs7O0lBQzNDLHNDQUFtQzs7Ozs7O0lBMEQvQyxvRUFBdUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgQ2FuQWN0aXZhdGUsIENhbkRlYWN0aXZhdGUsXG4gIFJvdXRlcixcbiAgUm91dGVyU3RhdGVTbmFwc2hvdCxcbiAgVXJsU2VyaWFsaXplcixcbiAgVXJsVHJlZVxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgbGFuZywgVHJhY2UgfSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJbnRlcmFjdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9pbnRlcmFjdGlvbi9zZXJ2aWNlcy9pbnRlcmFjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFBsYWNlQ29tcG9uZW50IH0gZnJvbSAnLi4vcGxhY2UtY29tcG9uZW50JztcbmltcG9ydCB7IFBsYWNlRGVmaW5pdGlvbiB9IGZyb20gJy4uL3BsYWNlLWRlZmluaXRpb24nO1xuaW1wb3J0IHsgUGxhY2VIaXN0b3J5IH0gZnJvbSAnLi4vcGxhY2UtaGlzdG9yeSc7XG5pbXBvcnQgeyBQbGFjZVJvdXRlciB9IGZyb20gJy4uL3BsYWNlLXJvdXRlcic7XG5pbXBvcnQgeyBWaXNpdFNhbml0aXNlciB9IGZyb20gJy4uL3JvdXRlL3Zpc2l0LXNhbml0aXNlcic7XG5pbXBvcnQgeyBWaXNpdCB9IGZyb20gJy4uL3Zpc2l0JztcbmltcG9ydCB7IENvbnNvbGlkYXRlZFBhcmFtZXRlck1hcCB9IGZyb20gJy4vY29uc29saWRhdGVkLXBhcmFtLW1hcCc7XG5cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0UGxhY2VHdWFyZCBpbXBsZW1lbnRzIENhbkFjdGl2YXRlLCBDYW5EZWFjdGl2YXRlPFBsYWNlQ29tcG9uZW50PiB7XG5cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgICAgICAgICAgICBwcml2YXRlIHVybFNlcmlhbGl6ZXI6IFVybFNlcmlhbGl6ZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcGxhY2VSb3V0ZXI6IFBsYWNlUm91dGVyLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHBsYWNlSGlzdG9yeTogUGxhY2VIaXN0b3J5LFxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3Rvcikge1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgYXN5bmMgY2FuQWN0aXZhdGUoYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogUHJvbWlzZTxib29sZWFuIHwgVXJsVHJlZT4ge1xuICAgIHJldHVybiB0aGlzLmF1dGhvcmlzZVBsYWNlVGhlbihhY3RpdmF0ZWRSb3V0ZSwgc3RhdGUsIGFzeW5jIHBsYWNlRGVmaW5pdGlvbiA9PiB7XG5cbiAgICAgIC8vIFBhcnNlIG91ciByb3V0ZSBwYXJhbXMuXG4gICAgICBjb25zdCBwYXJhbXMgPSBuZXcgQ29uc29saWRhdGVkUGFyYW1ldGVyTWFwKGFjdGl2YXRlZFJvdXRlLnBhcmFtTWFwLCBhY3RpdmF0ZWRSb3V0ZS51cmwpO1xuICAgICAgY29uc3QgcGFyc2VkUGFyYW1zID0gcGxhY2VEZWZpbml0aW9uLnBhcnNlUm91dGVQYXJhbXMocGFyYW1zKTtcblxuICAgICAgY29uc3QgaW5pdGlhbFZpc2l0ID0gdGhpcy5wbGFjZVJvdXRlci5uYXZpZ2F0aW9uU3RhdGUuZ2V0VmlzaXRGb3IocGxhY2VEZWZpbml0aW9uKSB8fCBuZXcgVmlzaXQocGxhY2VEZWZpbml0aW9uLCBwYXJzZWRQYXJhbXMpO1xuICAgICAgY29uc3Qgc2FuaXRpc2VyID0gbmV3IFZpc2l0U2FuaXRpc2VyKGFjdGl2YXRlZFJvdXRlLCB0aGlzLnJvdXRlciwgdGhpcy5wbGFjZUhpc3RvcnksIHRoaXMuaW5qZWN0b3IpO1xuICAgICAgY29uc3Qgc2FuaXRpc2VkVmlzaXQgPSBhd2FpdCBzYW5pdGlzZXIuc2FuaXRpc2UoaW5pdGlhbFZpc2l0Lm1lcmdlUm91dGVQYXJhbWV0ZXJzKHBhcnNlZFBhcmFtcykpO1xuXG4gICAgICAvLyBTYXZlIHRoZSB2aXNpdCB3aXRoIGFueSB1cGRhdGVkIHBhcmFtZXRlcnMuICBXZSBuZWVkIHRvIHNhdmUgaXQgc28gd2UgcmVtZW1iZXIgYW55IG5vbiByb3V0ZSBwYXJhbWV0ZXJzXG4gICAgICB0aGlzLnBsYWNlUm91dGVyLm5hdmlnYXRpb25TdGF0ZS5zdG9yZVZpc2l0KHNhbml0aXNlZFZpc2l0KTtcbiAgICAgIGlmIChpbml0aWFsVmlzaXQuaGFzUm91dGluZ0NoYW5nZWRGcm9tKHNhbml0aXNlZFZpc2l0KSkge1xuICAgICAgICAvLyBSZWdlbmVyYXRlIHRoZSB1cmxcbiAgICAgICAgY29uc3QgY29tbWFuZHMgPSB0aGlzLnBsYWNlUm91dGVyLnBhcnNlVXJsKHN0YXRlLnVybCkuY3JlYXRlUmVkaXJlY3RDb21tYW5kc0ZvcihzYW5pdGlzZWRWaXNpdCk7XG4gICAgICAgIGNvbnNvbGUubG9nKCcjIyMjIyBQbGFjZSBHdWFyZCBSZWRpcmVjdCcsIGNvbW1hbmRzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUoY29tbWFuZHMsIHtcbiAgICAgICAgICByZXBsYWNlVXJsOiB0cnVlLFxuICAgICAgICAgIHNraXBMb2NhdGlvbkNoYW5nZTogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGNhbkRlYWN0aXZhdGUoY29tcG9uZW50OiBQbGFjZUNvbXBvbmVudCwgY3VycmVudFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBjdXJyZW50U3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QsIG5leHRTdGF0ZT86IFJvdXRlclN0YXRlU25hcHNob3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5wbGFjZVJvdXRlci5uYXZpZ2F0aW9uU3RhdGUuY2FuRGVhY3RpdmF0ZVBsYWNlKGNvbXBvbmVudCwgdGhpcy5wbGFjZVJvdXRlci5wYXJzZVVybChuZXh0U3RhdGUudXJsKSk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBwcm90ZWN0ZWQgYXN5bmMgYXV0aG9yaXNlUGxhY2VUaGVuKGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCwgcnVuUGxhY2VHdWFyZHM6IChwbGFjZURlZmluaXRpb246IFBsYWNlRGVmaW5pdGlvbikgPT4gUHJvbWlzZTxib29sZWFuIHwgVXJsVHJlZT4pIHtcbiAgICBpZiAoUGxhY2VDb21wb25lbnQuaXNQbGFjZUNvbXBvbmVudENvbnN0cnVjdG9yKGFjdGl2YXRlZFJvdXRlLmNvbXBvbmVudCkpIHtcbiAgICAgIGNvbnN0IHBsYWNlRGVmaW5pdGlvbiA9IFBsYWNlQ29tcG9uZW50LmdldERlZmluaXRpb24oYWN0aXZhdGVkUm91dGUuY29tcG9uZW50KTtcbiAgICAgIGNvbnN0IGF1dGhvcmlzZVJlc3VsdCA9IHBsYWNlRGVmaW5pdGlvbi5hdXRoZW50aWNhdGUgPyBhd2FpdCB0aGlzLmlzQXV0aG9yaXNlZChhY3RpdmF0ZWRSb3V0ZSwgc3RhdGUpIDogdHJ1ZTtcbiAgICAgIGlmIChhdXRob3Jpc2VSZXN1bHQgPT09IHRydWUpIHtcbiAgICAgICAgLy8gd2UncmUgYXV0aG9yaXNlZCwgbm93IHJ1biB0aGUgcGxhY2UgZ3VhcmRzLlxuICAgICAgICByZXR1cm4gcnVuUGxhY2VHdWFyZHMocGxhY2VEZWZpbml0aW9uKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdub3QgYXV0aG9yaXNlZCByZXN1bHQnLCBhdXRob3Jpc2VSZXN1bHQpO1xuICAgICAgICByZXR1cm4gYXV0aG9yaXNlUmVzdWx0O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgcmV0dXJuIGxhbmcuaWxsZWdhbFN0YXRlKGBleHBlY3RlZCBjb21wb25lbnQgdG8gYmUgYW4gaW5zdGFuY2Ugb2YgUGxhY2VDb21wb25lbnQsIGdvdCAke2FjdGl2YXRlZFJvdXRlLmNvbXBvbmVudH1gKTtcbiAgICB9XG4gIH1cblxuICBAVHJhY2UoKVxuICBhc3luYyBpc0F1dGhvcmlzZWQoYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogUHJvbWlzZTxib29sZWFuIHwgVXJsVHJlZT4ge1xuICAgIGNvbnN0IGF1dGhvcmlzZWQgPSB0aGlzLmdldEF1dGhHdWFyZCh0aGlzLmluamVjdG9yKS5jYW5BY3RpdmF0ZShhY3RpdmF0ZWRSb3V0ZSwgc3RhdGUpO1xuICAgIHJldHVybiAoYXV0aG9yaXNlZCBpbnN0YW5jZW9mIE9ic2VydmFibGUpID8gYXV0aG9yaXNlZC50b1Byb21pc2UoKSA6IGF1dGhvcmlzZWQ7XG4gIH1cblxuICBhYnN0cmFjdCBnZXRBdXRoR3VhcmQoaW5qZWN0b3I6IEluamVjdG9yKTogQ2FuQWN0aXZhdGU7XG59XG4iXX0=