@coolon/angular-ui-powerups 0.0.90 → 0.0.91

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 (42) hide show
  1. package/bundles/coolon-angular-ui-powerups.umd.js +468 -396
  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 +19 -18
  6. package/coolon-angular-ui-powerups.metadata.json +1 -1
  7. package/esm2015/coolon-angular-ui-powerups.js +18 -17
  8. package/esm2015/lib/directives/command.directive.js +28 -5
  9. package/esm2015/lib/interaction/components/activity-container/activity-container.component.js +2 -7
  10. package/esm2015/lib/interaction/components/inplace-interaction-context/inplace-interaction-context.component.js +3 -8
  11. package/esm2015/lib/interaction/interaction-context.js +70 -14
  12. package/esm2015/lib/interaction/services/dialog-interaction.service.js +11 -19
  13. package/esm2015/lib/place/navigation-session.js +182 -39
  14. package/esm2015/lib/place/place-component.js +4 -19
  15. package/esm2015/lib/place/place-router.js +65 -31
  16. package/esm2015/lib/place/route/guards/enter-place-guard.service.js +2 -2
  17. package/esm2015/lib/place/route/guards/leave-place.guard.js +7 -177
  18. package/esm5/coolon-angular-ui-powerups.js +18 -17
  19. package/esm5/lib/directives/command.directive.js +32 -5
  20. package/esm5/lib/interaction/components/activity-container/activity-container.component.js +2 -11
  21. package/esm5/lib/interaction/components/inplace-interaction-context/inplace-interaction-context.component.js +3 -12
  22. package/esm5/lib/interaction/interaction-context.js +89 -27
  23. package/esm5/lib/interaction/services/dialog-interaction.service.js +11 -22
  24. package/esm5/lib/place/navigation-session.js +225 -54
  25. package/esm5/lib/place/place-component.js +4 -35
  26. package/esm5/lib/place/place-router.js +75 -37
  27. package/esm5/lib/place/route/guards/enter-place-guard.service.js +2 -2
  28. package/esm5/lib/place/route/guards/leave-place.guard.js +7 -176
  29. package/fesm2015/coolon-angular-ui-powerups.js +353 -299
  30. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  31. package/fesm5/coolon-angular-ui-powerups.js +430 -359
  32. package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
  33. package/lib/directives/command.directive.d.ts +2 -0
  34. package/lib/interaction/components/activity-container/activity-container.component.d.ts +1 -2
  35. package/lib/interaction/components/inplace-interaction-context/inplace-interaction-context.component.d.ts +3 -4
  36. package/lib/interaction/interaction-context.d.ts +6 -3
  37. package/lib/interaction/services/dialog-interaction.service.d.ts +3 -5
  38. package/lib/place/navigation-session.d.ts +26 -9
  39. package/lib/place/place-component.d.ts +4 -9
  40. package/lib/place/place-router.d.ts +6 -3
  41. package/lib/place/route/guards/leave-place.guard.d.ts +2 -10
  42. package/package.json +1 -1
@@ -4,7 +4,7 @@ import { FormsModule } from '@angular/forms';
4
4
  import { MatInputModule, MatFormFieldModule, MatSelectModule, MatDialog, MatButtonModule, MatDialogModule, MatTabsModule as MatTabsModule$1, MatProgressSpinnerModule } from '@angular/material';
5
5
  import { MatTabsModule } from '@angular/material/tabs';
6
6
  import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
7
- import { GarbageCollector, assert, UnaryCommand, lang, Dsl, Logger, DelegatingFormValueModel, UseDelegate, ValueModel, ListModel, StoreInListModel, DelegatingValueModel, MutableStream, MutableListModel, DelegatingListModel, Binding, MutableValueModel, Trace, Guard as Guard$1, Command, StoreInValueModel, OptionsHelper, ValueHolder } from '@coolon/pectin';
7
+ import { GarbageCollector, DelegatingValueModel, assert, UnaryCommand, lang, Dsl, Logger, DelegatingFormValueModel, UseDelegate, ValueModel, ListModel, StoreInListModel, DelegatingListModel, Deferred, MutableStream, MutableListModel, MutableValueModel, Binding, Trace, Guard as Guard$1, Command, StoreInValueModel, OptionsHelper, ValueHolder } from '@coolon/pectin';
8
8
  import { __decorate, __metadata, __awaiter } from 'tslib';
9
9
  import { PortalModule } from '@angular/cdk/portal';
10
10
  import { Router, RouterModule, NavigationStart, NavigationEnd, NavigationError, UrlSerializer, UrlSegment, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
@@ -34,8 +34,23 @@ class CommandDirective extends GarbageCollector {
34
34
  constructor(elementRef) {
35
35
  super();
36
36
  this.elementRef = elementRef;
37
+ this._commandEnabled = new DelegatingValueModel().withDefault(false);
37
38
  this._commandParameterProvided = false;
38
39
  }
40
+ /**
41
+ * @param {?} command
42
+ * @return {?}
43
+ */
44
+ set pectinCommand(command) {
45
+ this._command = command;
46
+ this._commandEnabled.setDelegate(command ? command.enabled : null);
47
+ }
48
+ /**
49
+ * @return {?}
50
+ */
51
+ get pectinCommand() {
52
+ return this._command;
53
+ }
39
54
  /**
40
55
  * @param {?} value
41
56
  * @return {?}
@@ -73,7 +88,7 @@ class CommandDirective extends GarbageCollector {
73
88
  // for some reason mat-buttons kills the disabled host binding. It works on a regular button but for now
74
89
  // we need to do this.
75
90
  const { chain } = Dsl.disposeWith(this);
76
- chain(this.pectinCommand.enabled).subscribe((/**
91
+ chain(this._commandEnabled).subscribe((/**
77
92
  * @param {?} enabled
78
93
  * @return {?}
79
94
  */
@@ -134,8 +149,16 @@ CommandDirective.propDecorators = {
134
149
  notifyClick: [{ type: HostListener, args: ['click', ['$event'],] }]
135
150
  };
136
151
  if (false) {
137
- /** @type {?} */
138
- CommandDirective.prototype.pectinCommand;
152
+ /**
153
+ * @type {?}
154
+ * @private
155
+ */
156
+ CommandDirective.prototype._command;
157
+ /**
158
+ * @type {?}
159
+ * @private
160
+ */
161
+ CommandDirective.prototype._commandEnabled;
139
162
  /**
140
163
  * @type {?}
141
164
  * @private
@@ -741,38 +764,94 @@ class InteractionContext extends GarbageCollector {
741
764
  */
742
765
  constructor() {
743
766
  super();
767
+ /**
768
+ * Returns the current list of activities that are in progress.
769
+ * This model is only updated in the next tick after the view has been updated.
770
+ */
771
+ this._activityListDelegate = new DelegatingListModel();
772
+ const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
773
+ when.listOf(this.activityList).becomesPopulated((/**
774
+ * @param {?} activities
775
+ * @return {?}
776
+ */
777
+ (activities) => {
778
+ if (this.deferredGetCurrentActivity) {
779
+ this.deferredGetCurrentActivity.resolve(last(activities));
780
+ this.deferredGetCurrentActivity = null;
781
+ }
782
+ }));
744
783
  }
745
784
  /**
746
- * Returns the activity that is currently active.
747
- * This model is only updated in the next tick after the view has been updated.
785
+ * @protected
786
+ * @param {?} activityList
748
787
  * @return {?}
749
788
  */
750
- get currentActivity() {
751
- return last(this.activityList.value);
789
+ setActivityList(activityList) {
790
+ this._activityListDelegate.setDelegate(activityList);
752
791
  }
753
792
  /**
754
- * @param {?} confirm
755
793
  * @return {?}
756
794
  */
757
- confirm(confirm) {
795
+ get activityList() {
796
+ return this._activityListDelegate.readonly;
797
+ }
798
+ /**
799
+ * Returns the activity that is currently active.
800
+ * This model is only updated in the next tick after the view has been updated.
801
+ * @return {?}
802
+ */
803
+ getCurrentActivity() {
758
804
  return __awaiter(this, void 0, void 0, function* () {
759
- try {
760
- yield this.confirmOrReject(confirm);
761
- return true;
805
+ if (!this.isActive()) {
806
+ return Promise.reject('no activity in progress');
762
807
  }
763
- catch (_a) {
764
- return false;
808
+ else {
809
+ if (this.deferredGetCurrentActivity) {
810
+ // we're already waiting then just return the same promise
811
+ return this.deferredGetCurrentActivity.promise;
812
+ }
813
+ else {
814
+ if (this.activityList.length < 1) {
815
+ this.deferredGetCurrentActivity = Deferred.defer();
816
+ return this.deferredGetCurrentActivity.promise;
817
+ }
818
+ else {
819
+ return last(this.activityList.value);
820
+ }
821
+ }
765
822
  }
766
823
  });
767
824
  }
825
+ /**
826
+ * @param {?} confirm
827
+ * @return {?}
828
+ */
829
+ confirm(confirm) {
830
+ // Important: we have to implement confirmOrReject as the main entry point
831
+ // as the canDeactivation guards need to be able to cancel an interaction
832
+ // without caring about returning a value.
833
+ return this.confirmOrReject(confirm).then((/**
834
+ * @return {?}
835
+ */
836
+ () => true)).catch((/**
837
+ * @return {?}
838
+ */
839
+ () => false));
840
+ }
768
841
  }
769
842
  if (false) {
770
843
  /**
771
844
  * Returns the current list of activities that are in progress.
772
845
  * This model is only updated in the next tick after the view has been updated.
773
846
  * @type {?}
847
+ * @private
848
+ */
849
+ InteractionContext.prototype._activityListDelegate;
850
+ /**
851
+ * @type {?}
852
+ * @private
774
853
  */
775
- InteractionContext.prototype.activityList;
854
+ InteractionContext.prototype.deferredGetCurrentActivity;
776
855
  /**
777
856
  * Returns true if an activity is currently running.
778
857
  * @abstract
@@ -1305,6 +1384,7 @@ class ActivityContainerComponent extends InteractionContext {
1305
1384
  * @return {?}
1306
1385
  */
1307
1386
  () => this.onNestedActivityFinished()));
1387
+ this.setActivityList(this._activityList.readonly);
1308
1388
  }
1309
1389
  /**
1310
1390
  * @param {?} initialContext
@@ -1352,12 +1432,6 @@ class ActivityContainerComponent extends InteractionContext {
1352
1432
  isActive() {
1353
1433
  return !!this._initialActivityOutletContext;
1354
1434
  }
1355
- /**
1356
- * @return {?}
1357
- */
1358
- get activityList() {
1359
- return this._activityList.readonly;
1360
- }
1361
1435
  /**
1362
1436
  * @return {?}
1363
1437
  */
@@ -1596,13 +1670,8 @@ class InplaceInteractionContextComponent extends InteractionContext {
1596
1670
  /**
1597
1671
  * @return {?}
1598
1672
  */
1599
- ngOnInit() {
1600
- }
1601
- /**
1602
- * @return {?}
1603
- */
1604
- get activityList() {
1605
- return this.interactionContext.activityList;
1673
+ ngAfterViewInit() {
1674
+ this.setActivityList(this.interactionContext.activityList);
1606
1675
  }
1607
1676
  /**
1608
1677
  * @return {?}
@@ -1777,29 +1846,21 @@ class DialogInteractionService extends InteractionContext {
1777
1846
  this.router = router;
1778
1847
  this.dialogServiceDefaults = dialogServiceDefaults;
1779
1848
  this.matDialogDefaultConfig = matDialogDefaultConfig;
1780
- this._activityList = new DelegatingListModel();
1781
1849
  this.startingGuard = new Guard();
1850
+ this._inActivityPromise = new MutableValueModel(false);
1782
1851
  assert$1.notNil(dialogService);
1783
- const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
1784
- this.active = chain(this._activityList).isNotEmpty();
1785
1852
  }
1786
1853
  /**
1787
1854
  * @return {?}
1788
1855
  */
1789
1856
  isActive() {
1790
- return this.active.value;
1857
+ return this._inActivityPromise.value;
1791
1858
  }
1792
1859
  /**
1793
1860
  * @return {?}
1794
1861
  */
1795
- cancelActivity() {
1796
- this.currentActivity.cancel(null);
1797
- }
1798
- /**
1799
- * @return {?}
1800
- */
1801
- get activityList() {
1802
- return this._activityList.readonly;
1862
+ get active() {
1863
+ return this._inActivityPromise.readonly;
1803
1864
  }
1804
1865
  /**
1805
1866
  * @template D, R, E
@@ -1831,6 +1892,7 @@ class DialogInteractionService extends InteractionContext {
1831
1892
  */
1832
1893
  () => {
1833
1894
  console.log('###### STARTING');
1895
+ this._inActivityPromise.value = true;
1834
1896
  // this.currentActivityId = uuid.v1();
1835
1897
  // this.location.go(this.router.routerState.snapshot.url, "aup");
1836
1898
  /** @type {?} */
@@ -1889,6 +1951,7 @@ class DialogInteractionService extends InteractionContext {
1889
1951
  * @return {?}
1890
1952
  */
1891
1953
  () => {
1954
+ this._inActivityPromise.value = false;
1892
1955
  console.log('###### FINISHED');
1893
1956
  // this.currentActivityId = null;
1894
1957
  self.safelyUpdateActivityListDelegate(null);
@@ -1904,7 +1967,7 @@ class DialogInteractionService extends InteractionContext {
1904
1967
  setTimeout((/**
1905
1968
  * @return {?}
1906
1969
  */
1907
- () => this._activityList.setDelegate(delegate)));
1970
+ () => this.setActivityList(delegate)));
1908
1971
  }
1909
1972
  /**
1910
1973
  * @param {?} alert
@@ -1955,14 +2018,12 @@ if (false) {
1955
2018
  * @type {?}
1956
2019
  * @private
1957
2020
  */
1958
- DialogInteractionService.prototype._activityList;
2021
+ DialogInteractionService.prototype.startingGuard;
1959
2022
  /**
1960
2023
  * @type {?}
1961
2024
  * @private
1962
2025
  */
1963
- DialogInteractionService.prototype.startingGuard;
1964
- /** @type {?} */
1965
- DialogInteractionService.prototype.active;
2026
+ DialogInteractionService.prototype._inActivityPromise;
1966
2027
  /**
1967
2028
  * @type {?}
1968
2029
  * @private
@@ -2527,7 +2588,7 @@ const DEFINITION_META_DATA_KEY = 'PLACE_DEFINITION_OPTIONS';
2527
2588
  // this one seems ok.
2528
2589
  /** @type {?} */
2529
2590
  const ROUTE_PARAMETER_LIST_KEY = Symbol('place:route:parameters');
2530
- class PlaceComponent extends GarbageCollector {
2591
+ class PlaceComponent extends DisposableComponent {
2531
2592
  constructor() {
2532
2593
  super();
2533
2594
  }
@@ -2594,27 +2655,11 @@ class PlaceComponent extends GarbageCollector {
2594
2655
  */
2595
2656
  d => d.component));
2596
2657
  }
2597
- /**
2598
- * @return {?}
2599
- */
2600
- canDeactivate() {
2601
- return true;
2602
- }
2603
2658
  /**
2604
2659
  * @return {?}
2605
2660
  */
2606
2661
  onPlaceReady() {
2607
2662
  }
2608
- /**
2609
- * Called by the place outlet after all animations have finished. We need this instead of ngOnDestroy
2610
- * to avoid the fact that the angular router calls it before the animations have run causing the component
2611
- * to loose any pectin bindings.
2612
- * @return {?}
2613
- */
2614
- // @Trace()
2615
- onPlaceDestroyed() {
2616
- this.dispose();
2617
- }
2618
2663
  }
2619
2664
  __decorate([
2620
2665
  Memoize$1(),
@@ -2814,11 +2859,15 @@ class NavigationSession {
2814
2859
  /**
2815
2860
  * @protected
2816
2861
  * @param {?} firstNavigation
2862
+ * @param {?} appModalInteractionContext
2817
2863
  */
2818
- constructor(firstNavigation) {
2864
+ constructor(firstNavigation, appModalInteractionContext) {
2819
2865
  this.firstNavigation = firstNavigation;
2866
+ this.appModalInteractionContext = appModalInteractionContext;
2820
2867
  this._alreadyAccepted = [];
2821
2868
  this._visits = new Map();
2869
+ this.componentDeactivationHandlers = new Map();
2870
+ this.dialogOpenOnStart = this.appModalInteractionContext.isActive();
2822
2871
  }
2823
2872
  /**
2824
2873
  * @param {?} visit
@@ -2834,34 +2883,30 @@ class NavigationSession {
2834
2883
  getVisitFor(placeDef) {
2835
2884
  return this._visits.get(placeDef);
2836
2885
  }
2837
- /**
2838
- * @param {?} params
2839
- * @return {?}
2840
- */
2841
- mergePrivatePlaceParameters(params) {
2842
- return null;
2843
- }
2844
- // @Trace()
2845
- /**
2846
- * @param {?} placeComponent
2847
- * @return {?}
2848
- */
2849
- alreadyAccepted(placeComponent) {
2850
- return this._alreadyAccepted.includes(placeComponent);
2851
- }
2852
- // @Trace()
2853
2886
  /**
2854
2887
  * @param {?} component
2888
+ * @param {?} nextState
2855
2889
  * @return {?}
2856
2890
  */
2857
- rememberAcceptanceOf(component) {
2858
- this._alreadyAccepted.push(component);
2891
+ canDeactivate(component, nextState) {
2892
+ return __awaiter(this, void 0, void 0, function* () {
2893
+ // lookup the handler and create it if we've not seen it yet
2894
+ /** @type {?} */
2895
+ let handler = this.componentDeactivationHandlers.get(component);
2896
+ if (!handler) {
2897
+ /** @type {?} */
2898
+ const isPrimaryHandler = this.componentDeactivationHandlers.size === 0;
2899
+ handler = new NavigationSession.ComponentDeactivationHandler(component, this.appModalInteractionContext, isPrimaryHandler);
2900
+ this.componentDeactivationHandlers.set(component, handler);
2901
+ }
2902
+ return handler.canDeactivate(nextState);
2903
+ });
2859
2904
  }
2860
2905
  /**
2861
2906
  * @param {?} url
2862
2907
  * @return {?}
2863
2908
  */
2864
- setPopstateReturn(url) {
2909
+ setPopstateReturnUrl(url) {
2865
2910
  this._popStateReturnUrl = url;
2866
2911
  }
2867
2912
  /**
@@ -2902,15 +2947,28 @@ if (false) {
2902
2947
  /** @type {?} */
2903
2948
  NavigationSession.prototype.isExternal;
2904
2949
  /** @type {?} */
2950
+ NavigationSession.prototype.dialogOpenOnStart;
2951
+ /**
2952
+ * @type {?}
2953
+ * @private
2954
+ */
2955
+ NavigationSession.prototype.componentDeactivationHandlers;
2956
+ /** @type {?} */
2905
2957
  NavigationSession.prototype.firstNavigation;
2958
+ /**
2959
+ * @type {?}
2960
+ * @private
2961
+ */
2962
+ NavigationSession.prototype.appModalInteractionContext;
2906
2963
  }
2907
2964
  (function (NavigationSession) {
2908
2965
  class External extends NavigationSession {
2909
2966
  /**
2910
2967
  * @param {?} isFirstTime
2968
+ * @param {?} appModelInteractionContext
2911
2969
  */
2912
- constructor(isFirstTime) {
2913
- super(isFirstTime);
2970
+ constructor(isFirstTime, appModelInteractionContext) {
2971
+ super(isFirstTime, appModelInteractionContext);
2914
2972
  this.isExternal = true;
2915
2973
  }
2916
2974
  }
@@ -2921,9 +2979,10 @@ if (false) {
2921
2979
  class Internal extends NavigationSession {
2922
2980
  /**
2923
2981
  * @param {?} visit
2982
+ * @param {?} appModelInteractionContext
2924
2983
  */
2925
- constructor(visit) {
2926
- super(false);
2984
+ constructor(visit, appModelInteractionContext) {
2985
+ super(false, appModelInteractionContext);
2927
2986
  this.isExternal = false;
2928
2987
  this.storeVisit(visit);
2929
2988
  }
@@ -2932,22 +2991,148 @@ if (false) {
2932
2991
  /** @type {?} */
2933
2992
  Internal.prototype.isExternal;
2934
2993
  }
2935
- /**
2936
- * @param {?} visit
2937
- * @return {?}
2938
- */
2939
- function createInternal(visit) {
2940
- return new Internal(visit);
2994
+ class Factory {
2995
+ /**
2996
+ * @param {?} appModelInteractionContext
2997
+ */
2998
+ constructor(appModelInteractionContext) {
2999
+ this.appModelInteractionContext = appModelInteractionContext;
3000
+ }
3001
+ /**
3002
+ * @param {?} visit
3003
+ * @return {?}
3004
+ */
3005
+ createInternal(visit) {
3006
+ return new Internal(visit, this.appModelInteractionContext);
3007
+ }
3008
+ /**
3009
+ * @param {?} firstTimeRoute
3010
+ * @return {?}
3011
+ */
3012
+ createExternal(firstTimeRoute) {
3013
+ return new External(firstTimeRoute, this.appModelInteractionContext);
3014
+ }
2941
3015
  }
2942
- NavigationSession.createInternal = createInternal;
2943
- /**
2944
- * @param {?} firstTimeRoute
2945
- * @return {?}
2946
- */
2947
- function createExternal(firstTimeRoute) {
2948
- return new External(firstTimeRoute);
3016
+ Factory.decorators = [
3017
+ { type: Injectable, args: [{
3018
+ providedIn: 'root'
3019
+ },] },
3020
+ ];
3021
+ /** @nocollapse */
3022
+ Factory.ctorParameters = () => [
3023
+ { type: InteractionContext }
3024
+ ];
3025
+ NavigationSession.Factory = Factory;
3026
+ if (false) {
3027
+ /** @type {?} */
3028
+ Factory.prototype.appModelInteractionContext;
3029
+ }
3030
+ class ComponentDeactivationHandler {
3031
+ /**
3032
+ * @param {?} component
3033
+ * @param {?} appModelInteractionContext
3034
+ * @param {?} primary
3035
+ */
3036
+ constructor(component, appModelInteractionContext, primary) {
3037
+ this.component = component;
3038
+ this.appModelInteractionContext = appModelInteractionContext;
3039
+ this.primary = primary;
3040
+ this.alreadyAccepted = false;
3041
+ // super();
3042
+ }
3043
+ /**
3044
+ * @param {?} nextState
3045
+ * @return {?}
3046
+ */
3047
+ canDeactivate(nextState) {
3048
+ return __awaiter(this, void 0, void 0, function* () {
3049
+ console.log(`${this.constructor.name}.canDeactivate`, { component: this.component });
3050
+ if (this.alreadyAccepted) {
3051
+ // We'll get called multiple times if there's any parameter sanitisation so
3052
+ // we always return true if we accepted on a previous cycle of the current
3053
+ // navigation session.
3054
+ return true;
3055
+ }
3056
+ else {
3057
+ if (this.primary && this.appModelInteractionContext.isActive()) {
3058
+ // We check the global interaction first
3059
+ yield this.cancelCurrentActivityOf(this.appModelInteractionContext);
3060
+ return false;
3061
+ }
3062
+ this.alreadyAccepted = yield this.canDeactivateComponent(nextState);
3063
+ return this.alreadyAccepted;
3064
+ }
3065
+ });
3066
+ }
3067
+ /**
3068
+ * @protected
3069
+ * @param {?} nextState
3070
+ * @return {?}
3071
+ */
3072
+ canDeactivateComponent(nextState) {
3073
+ return __awaiter(this, void 0, void 0, function* () {
3074
+ // check if the component has an active interaction. This will handle
3075
+ // an inplace interaction contexts
3076
+ /** @type {?} */
3077
+ const hasCustomInteractionContext = this.component.interactionContext &&
3078
+ !this.isAppModalInteractionContext(this.component.interactionContext) &&
3079
+ this.component.interactionContext.isActive();
3080
+ if (hasCustomInteractionContext) {
3081
+ this.cancelCurrentActivityOf(this.component.interactionContext);
3082
+ return false;
3083
+ }
3084
+ if (this.isLeavingCurrentPlace(nextState) && this.component.canDeactivate) {
3085
+ // No interaction in progress, so ask the component .
3086
+ // This may start an interaction, hence checking the interaction context before now. I.e. if the place pops up the dialog, and
3087
+ // the user clicks back again, we'll re-enter here and go bang when the component tries to open another dialog.
3088
+ return this.component.canDeactivate();
3089
+ }
3090
+ return true;
3091
+ });
3092
+ }
3093
+ /**
3094
+ * @param {?} interactionContext
3095
+ * @return {?}
3096
+ */
3097
+ isAppModalInteractionContext(interactionContext) {
3098
+ return this.appModelInteractionContext === interactionContext;
3099
+ }
3100
+ /**
3101
+ * @protected
3102
+ * @param {?} interactionContext
3103
+ * @return {?}
3104
+ */
3105
+ cancelCurrentActivityOf(interactionContext) {
3106
+ return __awaiter(this, void 0, void 0, function* () {
3107
+ /** @type {?} */
3108
+ const activity = yield interactionContext.getCurrentActivity();
3109
+ console.log('cancelling', { activity });
3110
+ activity.cancel(null);
3111
+ });
3112
+ }
3113
+ /**
3114
+ * @protected
3115
+ * @param {?} nextState
3116
+ * @return {?}
3117
+ */
3118
+ isLeavingCurrentPlace(nextState) {
3119
+ return !nextState.includesPathOf(this.component.placeDefinition);
3120
+ }
3121
+ }
3122
+ NavigationSession.ComponentDeactivationHandler = ComponentDeactivationHandler;
3123
+ if (false) {
3124
+ /**
3125
+ * @type {?}
3126
+ * @private
3127
+ */
3128
+ ComponentDeactivationHandler.prototype.alreadyAccepted;
3129
+ /** @type {?} */
3130
+ ComponentDeactivationHandler.prototype.component;
3131
+ /** @type {?} */
3132
+ ComponentDeactivationHandler.prototype.appModelInteractionContext;
3133
+ /** @type {?} */
3134
+ ComponentDeactivationHandler.prototype.primary;
2949
3135
  }
2950
- NavigationSession.createExternal = createExternal;
2951
3136
  })(NavigationSession || (NavigationSession = {}));
2952
3137
 
2953
3138
  /**
@@ -3020,13 +3205,15 @@ class PlaceRouter extends GarbageCollector {
3020
3205
  /**
3021
3206
  * @param {?} router
3022
3207
  * @param {?} urlSerializer
3208
+ * @param {?} navigationSessionFactory
3023
3209
  * @param {?} angularLocation
3024
3210
  * @param {?} placeHistory
3025
3211
  */
3026
- constructor(router, urlSerializer, angularLocation, placeHistory) {
3212
+ constructor(router, urlSerializer, navigationSessionFactory, angularLocation, placeHistory) {
3027
3213
  super();
3028
3214
  this.router = router;
3029
3215
  this.urlSerializer = urlSerializer;
3216
+ this.navigationSessionFactory = navigationSessionFactory;
3030
3217
  this.angularLocation = angularLocation;
3031
3218
  this.placeHistory = placeHistory;
3032
3219
  this.firstRoute = true;
@@ -3056,8 +3243,11 @@ class PlaceRouter extends GarbageCollector {
3056
3243
  if (event instanceof NavigationStart) {
3057
3244
  this.onAngularRouterStarted(event);
3058
3245
  }
3059
- if (event instanceof NavigationEnd || event instanceof NavigationError) {
3060
- this.onAngularRouterFinished();
3246
+ if (event instanceof NavigationEnd) {
3247
+ this.onAngularRouterFinished(false);
3248
+ }
3249
+ if (event instanceof NavigationError) {
3250
+ this.onAngularRouterFinished(true);
3061
3251
  }
3062
3252
  }));
3063
3253
  this.navigationSessionActive = chain(this.navigationSessionModel).isNotNil();
@@ -3133,7 +3323,7 @@ class PlaceRouter extends GarbageCollector {
3133
3323
  */
3134
3324
  router => {
3135
3325
  /** @type {?} */
3136
- const commands = this.createUrlManipulator(this.router.routerState.snapshot).createRedirectCommandsFor(next);
3326
+ const commands = this.parseUrl(this.router.routerState.snapshot).createRedirectCommandsFor(next);
3137
3327
  // // we have to to use the definition for route id as our redirection always includes
3138
3328
  // // the id in the url segements (but leaves it blank when there's no id). I.e. in the
3139
3329
  // // no id case we're doing the following redirect [<placePath>, ""] -> ["..", <id>]
@@ -3156,13 +3346,15 @@ class PlaceRouter extends GarbageCollector {
3156
3346
  */
3157
3347
  doNavigation(visit, customNavigation) {
3158
3348
  return __awaiter(this, void 0, void 0, function* () {
3159
- this._navigationSessionModel.value = NavigationSession.createInternal(visit);
3349
+ this._navigationSessionModel.value = this.navigationSessionFactory.createInternal(visit);
3160
3350
  try {
3161
3351
  yield customNavigation(this.router);
3162
3352
  }
3163
3353
  finally {
3354
+ // Router has finished (since there was no router change required) so we
3355
+ // need to end the navigation session.
3164
3356
  if (this.navigationSession && !this.router.getCurrentNavigation()) {
3165
- this.onAngularRouterFinished();
3357
+ this.onAngularRouterFinished(false);
3166
3358
  }
3167
3359
  }
3168
3360
  });
@@ -3189,9 +3381,9 @@ class PlaceRouter extends GarbageCollector {
3189
3381
  if (!this.navigationSession) { // We been activated by an external route rather than placeRouter.go(visit)
3190
3382
  console.log('navigation started', { firstTime: this.firstRoute });
3191
3383
  /** @type {?} */
3192
- const session = NavigationSession.createExternal(this.firstRoute);
3384
+ const session = this.navigationSessionFactory.createExternal(this.firstRoute);
3193
3385
  if (event.navigationTrigger === 'popstate') {
3194
- session.setPopstateReturn(this.router.routerState.snapshot.url);
3386
+ session.setPopstateReturnUrl(this.router.routerState.snapshot.url);
3195
3387
  }
3196
3388
  this._navigationSessionModel.value = session;
3197
3389
  }
@@ -3200,23 +3392,32 @@ class PlaceRouter extends GarbageCollector {
3200
3392
  // @Trace()
3201
3393
  /**
3202
3394
  * @private
3395
+ * @param {?} cancelled
3203
3396
  * @return {?}
3204
3397
  */
3205
- onAngularRouterFinished() {
3398
+ onAngularRouterFinished(cancelled) {
3206
3399
  /** @type {?} */
3207
3400
  const session = this._navigationSessionModel.value;
3208
- // Update visits before we end the navigation session. This allows the place out let to
3209
- // gate ignore changes that occur while the visit is active
3210
- /** @type {?} */
3211
- const visits = session.getVisits();
3212
- visits.forEach((/**
3213
- * @param {?} v
3214
- * @return {?}
3215
- */
3216
- v => {
3217
- this.placeHistory.add(v);
3218
- }));
3219
- this._activeVisits.value = visits;
3401
+ if (!cancelled) {
3402
+ // Update visits before we end the navigation session. This allows the placeOutets to
3403
+ // ignore visit changes that occur while the navigation is in progress
3404
+ /** @type {?} */
3405
+ const visits = session.getVisits();
3406
+ visits.forEach((/**
3407
+ * @param {?} v
3408
+ * @return {?}
3409
+ */
3410
+ v => this.placeHistory.add(v)));
3411
+ this._activeVisits.value = visits;
3412
+ }
3413
+ else {
3414
+ // Angular doesn't preserve the url when a guard cancels the back button.
3415
+ // See https://github.com/angular/angular/issues/13586#issuecomment-432795720
3416
+ if (session.isPopState) {
3417
+ console.log('cancelled during popstate');
3418
+ this.angularLocation.go(session.popStateReturnUrl);
3419
+ }
3420
+ }
3220
3421
  this._navigationSessionModel.value = null;
3221
3422
  }
3222
3423
  /**
@@ -3234,8 +3435,8 @@ class PlaceRouter extends GarbageCollector {
3234
3435
  * @param {?} snapshot
3235
3436
  * @return {?}
3236
3437
  */
3237
- createUrlManipulator(snapshot) {
3238
- return new PlaceRouter.UrlManipulator(this.urlSerializer.parse(snapshot.url));
3438
+ parseUrl(snapshot) {
3439
+ return new PlaceRouter.UrlHelper(this.urlSerializer.parse(snapshot.url));
3239
3440
  }
3240
3441
  }
3241
3442
  PlaceRouter.decorators = [
@@ -3247,10 +3448,11 @@ PlaceRouter.decorators = [
3247
3448
  PlaceRouter.ctorParameters = () => [
3248
3449
  { type: Router },
3249
3450
  { type: UrlSerializer },
3451
+ { type: NavigationSession.Factory },
3250
3452
  { type: Location },
3251
3453
  { type: PlaceHistory }
3252
3454
  ];
3253
- /** @nocollapse */ PlaceRouter.ngInjectableDef = ɵɵdefineInjectable({ factory: function PlaceRouter_Factory() { return new PlaceRouter(ɵɵinject(Router), ɵɵinject(UrlSerializer), ɵɵinject(Location), ɵɵinject(PlaceHistory)); }, token: PlaceRouter, providedIn: "root" });
3455
+ /** @nocollapse */ PlaceRouter.ngInjectableDef = ɵɵdefineInjectable({ factory: function PlaceRouter_Factory() { return new PlaceRouter(ɵɵinject(Router), ɵɵinject(UrlSerializer), ɵɵinject(NavigationSession.Factory), ɵɵinject(Location), ɵɵinject(PlaceHistory)); }, token: PlaceRouter, providedIn: "root" });
3254
3456
  __decorate([
3255
3457
  Trace(),
3256
3458
  __metadata("design:type", Function),
@@ -3287,13 +3489,18 @@ if (false) {
3287
3489
  * @private
3288
3490
  */
3289
3491
  PlaceRouter.prototype.urlSerializer;
3492
+ /**
3493
+ * @type {?}
3494
+ * @private
3495
+ */
3496
+ PlaceRouter.prototype.navigationSessionFactory;
3290
3497
  /** @type {?} */
3291
3498
  PlaceRouter.prototype.angularLocation;
3292
3499
  /** @type {?} */
3293
3500
  PlaceRouter.prototype.placeHistory;
3294
3501
  }
3295
3502
  (function (PlaceRouter) {
3296
- class UrlManipulator {
3503
+ class UrlHelper {
3297
3504
  /**
3298
3505
  * @param {?} urlTree
3299
3506
  */
@@ -3367,20 +3574,31 @@ if (false) {
3367
3574
  }));
3368
3575
  return commands;
3369
3576
  }
3577
+ /**
3578
+ * @param {?} placeDef
3579
+ * @return {?}
3580
+ */
3581
+ includesPathOf(placeDef) {
3582
+ return this.cloneUrlSegmentList().find((/**
3583
+ * @param {?} s
3584
+ * @return {?}
3585
+ */
3586
+ s => s.path === placeDef.path));
3587
+ }
3370
3588
  }
3371
3589
  __decorate([
3372
3590
  Trace(),
3373
3591
  __metadata("design:type", Function),
3374
3592
  __metadata("design:paramtypes", [Visit]),
3375
3593
  __metadata("design:returntype", Array)
3376
- ], UrlManipulator.prototype, "createRedirectCommandsFor", null);
3377
- PlaceRouter.UrlManipulator = UrlManipulator;
3594
+ ], UrlHelper.prototype, "createRedirectCommandsFor", null);
3595
+ PlaceRouter.UrlHelper = UrlHelper;
3378
3596
  if (false) {
3379
3597
  /**
3380
3598
  * @type {?}
3381
3599
  * @private
3382
3600
  */
3383
- UrlManipulator.prototype.urlTree;
3601
+ UrlHelper.prototype.urlTree;
3384
3602
  }
3385
3603
  })(PlaceRouter || (PlaceRouter = {}));
3386
3604
 
@@ -4963,7 +5181,7 @@ class EnterPlaceGuard {
4963
5181
  if (initialVisit.hasRoutingChangedFrom(sanitisedVisit)) {
4964
5182
  // Regenerate the url
4965
5183
  /** @type {?} */
4966
- const commands = this.placeRouter.createUrlManipulator(state).createRedirectCommandsFor(sanitisedVisit);
5184
+ const commands = this.placeRouter.parseUrl(state).createRedirectCommandsFor(sanitisedVisit);
4967
5185
  console.log('##### Place Guard Redirect', commands);
4968
5186
  return this.router.createUrlTree(commands, {
4969
5187
  replaceUrl: true,
@@ -5157,86 +5375,10 @@ if (false) {
5157
5375
  */
5158
5376
  class LeavePlaceGuard {
5159
5377
  /**
5160
- * @param {?} router
5161
- * @param {?} injector
5162
5378
  * @param {?} placeRouter
5163
- * @param {?} dialogInteractionContext
5164
- * @param {?} angularLocation
5165
5379
  */
5166
- constructor(router, injector, placeRouter, dialogInteractionContext, angularLocation) {
5167
- this.router = router;
5168
- this.injector = injector;
5380
+ constructor(placeRouter) {
5169
5381
  this.placeRouter = placeRouter;
5170
- this.dialogInteractionContext = dialogInteractionContext;
5171
- this.angularLocation = angularLocation;
5172
- }
5173
- // @Trace()
5174
- /**
5175
- * @private
5176
- * @param {?} nextState
5177
- * @param {?} placeDefinition
5178
- * @return {?}
5179
- */
5180
- isLeavingTheCurrentPlace(nextState, placeDefinition) {
5181
- // TODO: this will break with child routes... need to examine the router states properly.
5182
- // console.log('canDeactivate', {
5183
- // staticPath: placeDefinitionPath,
5184
- // currentStateUrl: currentState.url,
5185
- // nextStateUrl: nextState.url
5186
- // // alreadyDeclined: this._alreadyAccepted
5187
- // });
5188
- // Example of the above when navigating to a different child route.
5189
- // canDeactivate {staticPath: "/hero-details",
5190
- // currentStateUrl: "/route-parameters/-1;dv=A;dl=a,b,c;rdv=A;rdl=a,b,c/hero-details",
5191
- // nextStateUrl: "/route-parameters/-1;dv=A;dl=a,b,c;rdv=A;rdl=a,b,c/hero-stats"
5192
- // }
5193
- // TODO: this will break with child routes... need to examine the router states properly.
5194
- // console.log('canDeactivate', {
5195
- // staticPath: placeDefinitionPath,
5196
- // currentStateUrl: currentState.url,
5197
- // nextStateUrl: nextState.url
5198
- // // alreadyDeclined: this._alreadyAccepted
5199
- // });
5200
- // Example of the above when navigating to a different child route.
5201
- // canDeactivate {staticPath: "/hero-details",
5202
- // currentStateUrl: "/route-parameters/-1;dv=A;dl=a,b,c;rdv=A;rdl=a,b,c/hero-details",
5203
- // nextStateUrl: "/route-parameters/-1;dv=A;dl=a,b,c;rdv=A;rdl=a,b,c/hero-stats"
5204
- // }
5205
- // Example clicking on router tab of the parent component (de-activates the parent due to route param changes)
5206
- // canDeactivate {
5207
- // staticPath: "/hero-stats",
5208
- // currentStateUrl: "/route-parameters/-1;dv=A;dl=a,b,c;rdv=A;rdl=a,b,c/hero-stats",
5209
- // nextStateUrl: "/route-parameters/"
5210
- // }
5211
- // canDeactivate {
5212
- // staticPath: "/route-parameters",
5213
- // currentStateUrl: "/route-parameters/-1;dv=A;dl=a,b,c;rdv=A;rdl=a,b,c/hero-stats",
5214
- // nextStateUrl: "/route-parameters/"
5215
- // }
5216
- // logger.class.js:54 ParameterSnapshot.sanitise -> {idModel: -1, pv: undefined, pl: Array(0), dv: undefined, dl: Array(0), …}
5217
- // parameter-snapshot.ts:20 {name: "idModel", mine: -1, theirs: null}
5218
- // place-router.ts:28 redirect path (3) ["route-parameters", "-1", {…}]
5219
- // canDeactivate {
5220
- // staticPath: "/hero-stats",
5221
- // currentStateUrl: "/route-parameters/-1;dv=A;dl=a,b,c;rdv=A;rdl=a,b,c/hero-stats",
5222
- // nextStateUrl: "/route-parameters/-1"
5223
- // }
5224
- // canDeactivate {
5225
- // staticPath: "/route-parameters",
5226
- // currentStateUrl: "/route-parameters/-1;dv=A;dl=a,b,c;rdv=A;rdl=a,b,c/hero-stats",
5227
- // nextStateUrl: "/route-parameters/-1"
5228
- // }
5229
- // logger.class.js:54 ParameterSnapshot.sanitise -> {idModel: -1, pv: undefined, pl: Array(0), dv: "A", dl: Array(3), …}
5230
- // parameter-snapshot.ts:20 {name: "dv", mine: "A", theirs: undefined}
5231
- // place-router.ts:28 redirect path (3) ["route-parameters", "-1", {…}]
5232
- // canDeactivate {
5233
- // staticPath: "/hero-stats",
5234
- // currentStateUrl: "/route-parameters/-1;dv=A;dl=a,b,c;rdv=A;rdl=a,b,c/hero-stats",
5235
- // nextStateUrl: "/route-parameters/-1;dv=A;dl=a,b,c;rdv=A;rdl=a,b,c"
5236
- // }
5237
- /** @type {?} */
5238
- const placeDefinitionPath = `/${placeDefinition.path}`;
5239
- return !nextState.url.startsWith(placeDefinitionPath);
5240
5382
  }
5241
5383
  /**
5242
5384
  * @param {?} component
@@ -5247,77 +5389,7 @@ class LeavePlaceGuard {
5247
5389
  */
5248
5390
  canDeactivate(component, currentRoute, currentState, nextState) {
5249
5391
  return __awaiter(this, void 0, void 0, function* () {
5250
- if (this.placeRouter.navigationSession.alreadyAccepted(component)) {
5251
- // We'll get called multiple times if there's any parameter sanitisation so
5252
- // we always return true if we accepted on a previous cycle of the current
5253
- // navigation session.
5254
- return true;
5255
- }
5256
- else {
5257
- /** @type {?} */
5258
- const self = this;
5259
- /** @type {?} */
5260
- let canLeave = true;
5261
- if (this.isLeavingTheCurrentPlace(nextState, component.placeDefinition)) {
5262
- // we check the dialog interaction first, so that components that don't need to check if they're in an
5263
- // interaction during the canDeactivate cycle.
5264
- // TODO: Add tests: show dialog -> hit back -> same route
5265
- if (this.dialogInteractionContext.isActive()) {
5266
- console.log('cancelling', { activity: this.dialogInteractionContext.currentActivity });
5267
- this.dialogInteractionContext.currentActivity.cancel(null);
5268
- canLeave = false;
5269
- }
5270
- else {
5271
- canLeave = true;
5272
- }
5273
- if (canLeave) {
5274
- // now check if the component has an active interaction. This will handle
5275
- // an inplace interaction contexts
5276
- if (component.interactionContext && component.interactionContext.isActive()) {
5277
- canLeave = false;
5278
- console.log('cancelling', { activity: component.interactionContext.currentActivity });
5279
- component.interactionContext.currentActivity.cancel(null);
5280
- }
5281
- }
5282
- // No interaction in progress, so ask the component .
5283
- // This may start an interaction, hence checking the interaction context above. I.e. if the place pops up the dialog, and
5284
- // the user clicks back again, we'll re-enter here and go bang when the component tries to open another
5285
- // dialog.
5286
- if (canLeave) {
5287
- // TODO: Add tests: hit back -> confirm leave dialog -> hit back -> close dialog -> hit back -> confirm leave dialog.
5288
- canLeave = yield component.canDeactivate();
5289
- }
5290
- // We also block back button parameter changes while the dialog is open.
5291
- // NOTE: Now that I'm catching parameter changes I could possibly retry using a fragment or
5292
- // query parameter to track the dialog being open. Previously I was just checking this on
5293
- // path changes... if that worked it'd fix the case where the back button breaks with an activity
5294
- // open on the first page: https://coolon.atlassian.net/browse/AUP-33
5295
- }
5296
- else {
5297
- if (this.dialogInteractionContext.isActive()) {
5298
- console.log('cancelling', { activity: this.dialogInteractionContext.currentActivity });
5299
- this.dialogInteractionContext.currentActivity.cancel(null);
5300
- canLeave = false;
5301
- }
5302
- else {
5303
- canLeave = true;
5304
- }
5305
- }
5306
- if (canLeave) {
5307
- // We'll get called multiple times if there's any parameter sanitisation so
5308
- // we remember the acceptance for the duration of the current navigation session.
5309
- self.placeRouter.navigationSession.rememberAcceptanceOf(component);
5310
- }
5311
- else {
5312
- // Angular doesn't preserve the url when a guard cancels the back button.
5313
- // See https://github.com/angular/angular/issues/13586#issuecomment-432795720
5314
- if (this.placeRouter.navigationSession.isPopState) {
5315
- console.log('cancelled during popstate');
5316
- this.angularLocation.go(this.placeRouter.navigationSession.popStateReturnUrl);
5317
- }
5318
- }
5319
- return canLeave;
5320
- }
5392
+ return this.placeRouter.navigationSession.canDeactivate(component, this.placeRouter.parseUrl(nextState));
5321
5393
  });
5322
5394
  }
5323
5395
  }
@@ -5328,33 +5400,15 @@ LeavePlaceGuard.decorators = [
5328
5400
  ];
5329
5401
  /** @nocollapse */
5330
5402
  LeavePlaceGuard.ctorParameters = () => [
5331
- { type: Router },
5332
- { type: Injector },
5333
- { type: PlaceRouter },
5334
- { type: InteractionContext },
5335
- { type: Location }
5403
+ { type: PlaceRouter }
5336
5404
  ];
5337
- /** @nocollapse */ LeavePlaceGuard.ngInjectableDef = ɵɵdefineInjectable({ factory: function LeavePlaceGuard_Factory() { return new LeavePlaceGuard(ɵɵinject(Router), ɵɵinject(INJECTOR), ɵɵinject(PlaceRouter), ɵɵinject(InteractionContext), ɵɵinject(Location)); }, token: LeavePlaceGuard, providedIn: "root" });
5405
+ /** @nocollapse */ LeavePlaceGuard.ngInjectableDef = ɵɵdefineInjectable({ factory: function LeavePlaceGuard_Factory() { return new LeavePlaceGuard(ɵɵinject(PlaceRouter)); }, token: LeavePlaceGuard, providedIn: "root" });
5338
5406
  if (false) {
5339
- /**
5340
- * @type {?}
5341
- * @private
5342
- */
5343
- LeavePlaceGuard.prototype.router;
5344
- /**
5345
- * @type {?}
5346
- * @private
5347
- */
5348
- LeavePlaceGuard.prototype.injector;
5349
5407
  /**
5350
5408
  * @type {?}
5351
5409
  * @private
5352
5410
  */
5353
5411
  LeavePlaceGuard.prototype.placeRouter;
5354
- /** @type {?} */
5355
- LeavePlaceGuard.prototype.dialogInteractionContext;
5356
- /** @type {?} */
5357
- LeavePlaceGuard.prototype.angularLocation;
5358
5412
  }
5359
5413
 
5360
5414
  /**
@@ -5377,5 +5431,5 @@ if (false) {
5377
5431
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5378
5432
  */
5379
5433
 
5380
- export { ACTIVITY_DATA, AUP_PLACE_CONFIG, AbstractActivity, AbstractInputComponent, AbstractPlaceNavigationComponent, Activity, ActivityContainerComponent, ActivityOutletComponent, AlertDialogComponent, AngularUiPowerupsModule, Bounds, BusyOverlayComponent, CommandDirective, ComponentsModule, ConfirmThenDialogComponent, ConfirmationDialogComponent, DEFINITION_META_DATA_KEY, DIALOG_INTERACTION_SERVICE_DEFAULTS, DialogInteractionService, Dimension, DirectivesModule, DisposableComponent, EmptyStateComponent, EnterPlaceGuard, FocusBindingDirective, Formatter, InplaceInteractionContextComponent, InteractionContext, InteractionGuard, InteractionModule, InteractionOutletComponent, LEFT_RIGHT_PLACE_ANIMATION, LeavePlaceGuard, ListPlaceNavComponent, NavigationSession, NoopComponent, NumberInputComponent, ParameterDefinition, PasswordInputComponent, Place, PlaceComponent, PlaceDefinition, PlaceHistory, PlaceModule, PlaceOutletComponent, PlaceRouter, Point, ROUTE_PARAMETER_LIST_KEY, ResizeAwareComponent, RouteId, SelectInputComponent, StringInputComponent, TabbedPlaceNavigationComponent, Visit, VisitParameter, VisitParameterList, VisitSanitiser, leftRightPlaceAnimation, slideDownAndUpAnimation, DirectivesModule as ɵa, CommandDirective as ɵb, InteractionContext as ɵba, ActivityOutletComponent as ɵbb, ConfirmationDialogComponent as ɵbc, AbstractActivity as ɵbd, ACTIVITY_DATA as ɵbe, Activity as ɵbf, ConfirmThenDialogComponent as ɵbh, AlertDialogComponent as ɵbi, InteractionOutletComponent as ɵbk, InplaceInteractionContextComponent as ɵbl, DIALOG_INTERACTION_SERVICE_DEFAULTS as ɵbm, DialogInteractionService as ɵbn, FocusBindingDirective as ɵc, DisposableComponent as ɵd, ComponentsModule as ɵe, NumberInputComponent as ɵf, AbstractInputComponent as ɵg, StringInputComponent as ɵh, PasswordInputComponent as ɵi, SelectInputComponent as ɵj, NoopComponent as ɵk, PlaceModule as ɵl, EmptyStateComponent as ɵm, BusyOverlayComponent as ɵn, PlaceOutletComponent as ɵo, leftRightPlaceAnimation as ɵp, LEFT_RIGHT_PLACE_ANIMATION as ɵq, AUP_PLACE_CONFIG as ɵr, PlaceRouter as ɵt, PlaceHistory as ɵu, TabbedPlaceNavigationComponent as ɵv, AbstractPlaceNavigationComponent as ɵw, ListPlaceNavComponent as ɵx, InteractionModule as ɵy, ActivityContainerComponent as ɵz };
5434
+ export { ACTIVITY_DATA, AUP_PLACE_CONFIG, AbstractActivity, AbstractInputComponent, AbstractPlaceNavigationComponent, Activity, ActivityContainerComponent, ActivityOutletComponent, AlertDialogComponent, AngularUiPowerupsModule, Bounds, BusyOverlayComponent, CommandDirective, ComponentsModule, ConfirmThenDialogComponent, ConfirmationDialogComponent, DEFINITION_META_DATA_KEY, DIALOG_INTERACTION_SERVICE_DEFAULTS, DialogInteractionService, Dimension, DirectivesModule, DisposableComponent, EmptyStateComponent, EnterPlaceGuard, FocusBindingDirective, Formatter, InplaceInteractionContextComponent, InteractionContext, InteractionGuard, InteractionModule, InteractionOutletComponent, LEFT_RIGHT_PLACE_ANIMATION, LeavePlaceGuard, ListPlaceNavComponent, NavigationSession, NoopComponent, NumberInputComponent, ParameterDefinition, PasswordInputComponent, Place, PlaceComponent, PlaceDefinition, PlaceHistory, PlaceModule, PlaceOutletComponent, PlaceRouter, Point, ROUTE_PARAMETER_LIST_KEY, ResizeAwareComponent, RouteId, SelectInputComponent, StringInputComponent, TabbedPlaceNavigationComponent, Visit, VisitParameter, VisitParameterList, VisitSanitiser, leftRightPlaceAnimation, slideDownAndUpAnimation, DirectivesModule as ɵa, CommandDirective as ɵb, InteractionModule as ɵba, ActivityContainerComponent as ɵbb, ActivityOutletComponent as ɵbc, ConfirmationDialogComponent as ɵbd, AbstractActivity as ɵbe, ACTIVITY_DATA as ɵbf, Activity as ɵbg, ConfirmThenDialogComponent as ɵbi, AlertDialogComponent as ɵbj, InteractionOutletComponent as ɵbl, InplaceInteractionContextComponent as ɵbm, DIALOG_INTERACTION_SERVICE_DEFAULTS as ɵbn, DialogInteractionService as ɵbo, FocusBindingDirective as ɵc, DisposableComponent as ɵd, ComponentsModule as ɵe, NumberInputComponent as ɵf, AbstractInputComponent as ɵg, StringInputComponent as ɵh, PasswordInputComponent as ɵi, SelectInputComponent as ɵj, NoopComponent as ɵk, PlaceModule as ɵl, EmptyStateComponent as ɵm, BusyOverlayComponent as ɵn, PlaceOutletComponent as ɵo, leftRightPlaceAnimation as ɵp, LEFT_RIGHT_PLACE_ANIMATION as ɵq, AUP_PLACE_CONFIG as ɵr, PlaceRouter as ɵt, NavigationSession as ɵu, InteractionContext as ɵv, PlaceHistory as ɵw, TabbedPlaceNavigationComponent as ɵx, AbstractPlaceNavigationComponent as ɵy, ListPlaceNavComponent as ɵz };
5381
5435
  //# sourceMappingURL=coolon-angular-ui-powerups.js.map