@coolon/angular-ui-powerups 0.0.91 → 0.0.93

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 (62) hide show
  1. package/bundles/coolon-angular-ui-powerups.umd.js +2104 -1817
  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 +23 -19
  6. package/coolon-angular-ui-powerups.metadata.json +1 -1
  7. package/esm2015/coolon-angular-ui-powerups.js +23 -19
  8. package/esm2015/index.js +2 -2
  9. package/esm2015/lib/interaction/services/dialog-interaction.service.js +3 -3
  10. package/esm2015/lib/place/components/place-outlet/place-outlet.component.js +52 -10
  11. package/esm2015/lib/place/guards/abstract-enter-place.guard.js +296 -0
  12. package/esm2015/lib/place/guards/leave-place.guard.js +47 -0
  13. package/esm2015/lib/place/guards/noop-auth-guard.service.js +30 -0
  14. package/esm2015/lib/place/index.js +5 -3
  15. package/esm2015/lib/place/navigation-session.js +7 -18
  16. package/esm2015/lib/place/place-router.js +60 -9
  17. package/esm2015/lib/place/place.decorator.js +1 -1
  18. package/esm2015/lib/place/place.module.js +4 -2
  19. package/esm2015/lib/place/places/noop-gateway-place.component.js +58 -0
  20. package/esm2015/public_api.js +2 -2
  21. package/esm5/coolon-angular-ui-powerups.js +23 -19
  22. package/esm5/index.js +2 -2
  23. package/esm5/lib/interaction/services/dialog-interaction.service.js +3 -3
  24. package/esm5/lib/place/components/place-outlet/place-outlet.component.js +52 -10
  25. package/esm5/lib/place/guards/abstract-enter-place.guard.js +372 -0
  26. package/esm5/lib/place/guards/leave-place.guard.js +55 -0
  27. package/esm5/lib/place/guards/noop-auth-guard.service.js +39 -0
  28. package/esm5/lib/place/index.js +5 -3
  29. package/esm5/lib/place/navigation-session.js +6 -17
  30. package/esm5/lib/place/place-router.js +74 -8
  31. package/esm5/lib/place/place.decorator.js +1 -1
  32. package/esm5/lib/place/place.module.js +4 -2
  33. package/esm5/lib/place/places/noop-gateway-place.component.js +61 -0
  34. package/esm5/public_api.js +2 -2
  35. package/fesm2015/coolon-angular-ui-powerups.js +568 -355
  36. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  37. package/fesm5/coolon-angular-ui-powerups.js +2048 -1766
  38. package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
  39. package/lib/place/components/place-outlet/place-outlet.component.d.ts +6 -2
  40. package/lib/place/{route/guards/enter-place-guard.service.d.ts → guards/abstract-enter-place.guard.d.ts} +9 -4
  41. package/lib/place/{route/guards → guards}/leave-place.guard.d.ts +2 -2
  42. package/lib/place/guards/noop-auth-guard.service.d.ts +5 -0
  43. package/lib/place/index.d.ts +4 -2
  44. package/lib/place/navigation-session.d.ts +2 -2
  45. package/lib/place/place-router.d.ts +8 -2
  46. package/lib/place/places/noop-gateway-place.component.d.ts +10 -0
  47. package/package.json +1 -1
  48. package/schematics/place-routes/place-builder.d.ts +2 -1
  49. package/schematics/place-routes/place-builder.js +11 -3
  50. package/schematics/place-routes/place-builder.js.map +1 -1
  51. package/schematics/place-routes/place-class-scanner.js +1 -0
  52. package/schematics/place-routes/place-class-scanner.js.map +1 -1
  53. package/schematics/place-routes/place-def.d.ts +0 -1
  54. package/schematics/place-routes/place-def.js +1 -14
  55. package/schematics/place-routes/place-def.js.map +1 -1
  56. package/schematics/place-routes/templates/place-destinations.ts.template +3 -2
  57. package/schematics/place-routes/templates/place-routes.ts.template +20 -4
  58. package/schematics/place-routes/templates/place-visits.ts.template +2 -1
  59. package/esm2015/lib/place/route/guards/enter-place-guard.service.js +0 -248
  60. package/esm2015/lib/place/route/guards/leave-place.guard.js +0 -47
  61. package/esm5/lib/place/route/guards/enter-place-guard.service.js +0 -278
  62. package/esm5/lib/place/route/guards/leave-place.guard.js +0 -55
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/common'), require('@angular/core'), require('@angular/forms'), require('@angular/material'), require('@angular/material/tabs'), require('@angular/platform-browser/animations'), require('@coolon/pectin'), require('@angular/cdk/portal'), require('@angular/router'), require('lodash'), require('@coolon/typescript-utilities'), require('@angular/material/dialog'), require('@angular/material/icon'), require('@angular/material/list'), require('@angular/material/tooltip'), require('@typescript-plus/fast-memoize-decorator/dist/src'), require('@typescript-plus/fast-memoize-decorator'), require('reflect-metadata'), require('@angular/animations'), require('resize-observer-polyfill')) :
3
- typeof define === 'function' && define.amd ? define('@coolon/angular-ui-powerups', ['exports', '@angular/common', '@angular/core', '@angular/forms', '@angular/material', '@angular/material/tabs', '@angular/platform-browser/animations', '@coolon/pectin', '@angular/cdk/portal', '@angular/router', 'lodash', '@coolon/typescript-utilities', '@angular/material/dialog', '@angular/material/icon', '@angular/material/list', '@angular/material/tooltip', '@typescript-plus/fast-memoize-decorator/dist/src', '@typescript-plus/fast-memoize-decorator', 'reflect-metadata', '@angular/animations', 'resize-observer-polyfill'], factory) :
4
- (global = global || self, factory((global.coolon = global.coolon || {}, global.coolon['angular-ui-powerups'] = {}), global.ng.common, global.ng.core, global.ng.forms, global.ng.material, global.ng.material.tabs, global.ng.platformBrowser.animations, global.pectin, global.ng.cdk.portal, global.ng.router, global.___default, global.typescriptUtilities, global.ng.material.dialog, global.ng.material.icon, global.ng.material.list, global.ng.material.tooltip, global.src, global.fastMemoizeDecorator, null, global.ng.animations, global.ResizeObserver));
5
- }(this, function (exports, common, core, forms, material, tabs, animations, pectin, portal, router, ___default, typescriptUtilities, dialog, icon, list, tooltip, src, fastMemoizeDecorator, reflectMetadata, animations$1, ResizeObserver) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/common'), require('@angular/core'), require('@angular/forms'), require('@angular/material'), require('@angular/material/tabs'), require('@angular/platform-browser/animations'), require('@coolon/pectin'), require('@angular/cdk/portal'), require('@angular/router'), require('lodash'), require('@coolon/typescript-utilities'), require('@angular/material/dialog'), require('@angular/material/icon'), require('@angular/material/list'), require('@angular/material/tooltip'), require('@typescript-plus/fast-memoize-decorator/dist/src'), require('@typescript-plus/fast-memoize-decorator'), require('reflect-metadata'), require('@angular/animations'), require('resize-observer-polyfill'), require('rxjs')) :
3
+ typeof define === 'function' && define.amd ? define('@coolon/angular-ui-powerups', ['exports', '@angular/common', '@angular/core', '@angular/forms', '@angular/material', '@angular/material/tabs', '@angular/platform-browser/animations', '@coolon/pectin', '@angular/cdk/portal', '@angular/router', 'lodash', '@coolon/typescript-utilities', '@angular/material/dialog', '@angular/material/icon', '@angular/material/list', '@angular/material/tooltip', '@typescript-plus/fast-memoize-decorator/dist/src', '@typescript-plus/fast-memoize-decorator', 'reflect-metadata', '@angular/animations', 'resize-observer-polyfill', 'rxjs'], factory) :
4
+ (global = global || self, factory((global.coolon = global.coolon || {}, global.coolon['angular-ui-powerups'] = {}), global.ng.common, global.ng.core, global.ng.forms, global.ng.material, global.ng.material.tabs, global.ng.platformBrowser.animations, global.pectin, global.ng.cdk.portal, global.ng.router, global.___default, global.typescriptUtilities, global.ng.material.dialog, global.ng.material.icon, global.ng.material.list, global.ng.material.tooltip, global.src, global.fastMemoizeDecorator, null, global.ng.animations, global.ResizeObserver, global.rxjs));
5
+ }(this, function (exports, common, core, forms, material, tabs, animations, pectin, portal, router, ___default, typescriptUtilities, dialog, icon, list, tooltip, src, fastMemoizeDecorator, reflectMetadata, animations$1, ResizeObserver, rxjs) { 'use strict';
6
6
 
7
7
  var ___default__default = 'default' in ___default ? ___default['default'] : ___default;
8
8
  ResizeObserver = ResizeObserver && ResizeObserver.hasOwnProperty('default') ? ResizeObserver['default'] : ResizeObserver;
@@ -1272,7 +1272,7 @@
1272
1272
  * @abstract
1273
1273
  * @template D, R, E
1274
1274
  */
1275
- exports.ɵbg = /** @class */ (function (_super) {
1275
+ exports.ɵbk = /** @class */ (function (_super) {
1276
1276
  __extends(Activity, _super);
1277
1277
  function Activity() {
1278
1278
  var _this = _super !== null && _super.apply(this, arguments) || this;
@@ -1362,12 +1362,12 @@
1362
1362
  * @type {?}
1363
1363
  * @private
1364
1364
  */
1365
- exports.ɵbg.prototype._busyModel;
1365
+ exports.ɵbk.prototype._busyModel;
1366
1366
  /**
1367
1367
  * @type {?}
1368
1368
  * @private
1369
1369
  */
1370
- exports.ɵbg.prototype._activityContext;
1370
+ exports.ɵbk.prototype._activityContext;
1371
1371
  }
1372
1372
  (function (Activity) {
1373
1373
  /**
@@ -1382,7 +1382,7 @@
1382
1382
  /** @type {?} */
1383
1383
  Callbacks.prototype.onCancel;
1384
1384
  }
1385
- })(exports.ɵbg || (exports.ɵbg = {}));
1385
+ })(exports.ɵbk || (exports.ɵbk = {}));
1386
1386
 
1387
1387
  /**
1388
1388
  * @fileoverview added by tsickle
@@ -1539,7 +1539,7 @@
1539
1539
  return _super !== null && _super.apply(this, arguments) || this;
1540
1540
  }
1541
1541
  return AbstractActivity;
1542
- }(exports.ɵbg));
1542
+ }(exports.ɵbk));
1543
1543
 
1544
1544
  /**
1545
1545
  * @fileoverview added by tsickle
@@ -1585,7 +1585,7 @@
1585
1585
  /**
1586
1586
  * @template D, R, E
1587
1587
  */
1588
- exports.ɵbi = /** @class */ (function (_super) {
1588
+ exports.ɵbm = /** @class */ (function (_super) {
1589
1589
  __extends(ConfirmThenDialogComponent, _super);
1590
1590
  function ConfirmThenDialogComponent(config, interactionContext) {
1591
1591
  var _this = _super.call(this) || this;
@@ -1657,9 +1657,9 @@
1657
1657
  }(AbstractActivity));
1658
1658
  if (false) {
1659
1659
  /** @type {?} */
1660
- exports.ɵbi.prototype.config;
1660
+ exports.ɵbm.prototype.config;
1661
1661
  /** @type {?} */
1662
- exports.ɵbi.prototype.interactionContext;
1662
+ exports.ɵbm.prototype.interactionContext;
1663
1663
  }
1664
1664
  (function (ConfirmThenDialogComponent) {
1665
1665
  /**
@@ -1676,7 +1676,7 @@
1676
1676
  /** @type {?} */
1677
1677
  Data.prototype.data;
1678
1678
  }
1679
- })(exports.ɵbi || (exports.ɵbi = {}));
1679
+ })(exports.ɵbm || (exports.ɵbm = {}));
1680
1680
 
1681
1681
  /**
1682
1682
  * @fileoverview added by tsickle
@@ -2040,7 +2040,7 @@
2040
2040
  * @return {?}
2041
2041
  */
2042
2042
  function (confirm, activityType, data) {
2043
- return this.startActivity(exports.ɵbi, {
2043
+ return this.startActivity(exports.ɵbm, {
2044
2044
  confirm: confirm,
2045
2045
  activityType: activityType,
2046
2046
  data: data
@@ -2287,7 +2287,7 @@
2287
2287
  * @return {?}
2288
2288
  */
2289
2289
  function (confirm, activityType, data) {
2290
- return this._startActivity(exports.ɵbi, {
2290
+ return this._startActivity(exports.ɵbm, {
2291
2291
  confirm: confirm,
2292
2292
  activityType: activityType,
2293
2293
  data: data
@@ -2528,7 +2528,7 @@
2528
2528
  * @return {?}
2529
2529
  */
2530
2530
  function () {
2531
- console.log('###### STARTING');
2531
+ // console.log('###### STARTING');
2532
2532
  _this._inActivityPromise.value = true;
2533
2533
  // this.currentActivityId = uuid.v1();
2534
2534
  // this.location.go(this.router.routerState.snapshot.url, "aup");
@@ -2589,7 +2589,7 @@
2589
2589
  */
2590
2590
  function () {
2591
2591
  _this._inActivityPromise.value = false;
2592
- console.log('###### FINISHED');
2592
+ // console.log('###### FINISHED');
2593
2593
  // this.currentActivityId = null;
2594
2594
  self.safelyUpdateActivityListDelegate(null);
2595
2595
  }));
@@ -2654,7 +2654,7 @@
2654
2654
  * @return {?}
2655
2655
  */
2656
2656
  function (confirm, activityType, data) {
2657
- return this._startActivity(exports.ɵbi, {
2657
+ return this._startActivity(exports.ɵbm, {
2658
2658
  confirm: confirm,
2659
2659
  activityType: activityType,
2660
2660
  data: data
@@ -2722,7 +2722,7 @@
2722
2722
  declarations: [
2723
2723
  ActivityContainerComponent,
2724
2724
  ConfirmationDialogComponent,
2725
- exports.ɵbi,
2725
+ exports.ɵbm,
2726
2726
  AlertDialogComponent,
2727
2727
  ActivityOutletComponent,
2728
2728
  InteractionOutletComponent,
@@ -2737,7 +2737,7 @@
2737
2737
  entryComponents: [
2738
2738
  ActivityContainerComponent,
2739
2739
  ConfirmationDialogComponent,
2740
- exports.ɵbi,
2740
+ exports.ɵbm,
2741
2741
  AlertDialogComponent
2742
2742
  ],
2743
2743
  providers: [
@@ -3374,7 +3374,7 @@
3374
3374
  // this one seems ok.
3375
3375
  /** @type {?} */
3376
3376
  var ROUTE_PARAMETER_LIST_KEY = Symbol('place:route:parameters');
3377
- exports.PlaceComponent = /** @class */ (function (_super) {
3377
+ exports.ɵba = /** @class */ (function (_super) {
3378
3378
  __extends(PlaceComponent, _super);
3379
3379
  function PlaceComponent() {
3380
3380
  return _super.call(this) || this;
@@ -3481,9 +3481,9 @@
3481
3481
  * @type {?}
3482
3482
  * @private
3483
3483
  */
3484
- exports.PlaceComponent.prototype.visit;
3484
+ exports.ɵba.prototype.visit;
3485
3485
  /** @type {?} */
3486
- exports.PlaceComponent.prototype.interactionContext;
3486
+ exports.ɵba.prototype.interactionContext;
3487
3487
  }
3488
3488
  (function (PlaceComponent) {
3489
3489
  /**
@@ -3519,7 +3519,7 @@
3519
3519
  Reflect.defineMetadata(DEFINITION_META_DATA_KEY, definition, klass);
3520
3520
  }
3521
3521
  PlaceComponent.injectDefinition = injectDefinition;
3522
- })(exports.PlaceComponent || (exports.PlaceComponent = {}));
3522
+ })(exports.ɵba || (exports.ɵba = {}));
3523
3523
 
3524
3524
  /**
3525
3525
  * @fileoverview added by tsickle
@@ -3719,7 +3719,7 @@
3719
3719
  /**
3720
3720
  * @abstract
3721
3721
  */
3722
- exports.ɵu = /** @class */ (function () {
3722
+ exports.NavigationSession = /** @class */ (function () {
3723
3723
  function NavigationSession(firstNavigation, appModalInteractionContext) {
3724
3724
  this.firstNavigation = firstNavigation;
3725
3725
  this.appModalInteractionContext = appModalInteractionContext;
@@ -3822,33 +3822,33 @@
3822
3822
  * @type {?}
3823
3823
  * @private
3824
3824
  */
3825
- exports.ɵu.prototype._alreadyAccepted;
3825
+ exports.NavigationSession.prototype._alreadyAccepted;
3826
3826
  /**
3827
3827
  * @type {?}
3828
3828
  * @private
3829
3829
  */
3830
- exports.ɵu.prototype._visits;
3830
+ exports.NavigationSession.prototype._visits;
3831
3831
  /**
3832
3832
  * @type {?}
3833
3833
  * @private
3834
3834
  */
3835
- exports.ɵu.prototype._popStateReturnUrl;
3835
+ exports.NavigationSession.prototype._popStateReturnUrl;
3836
3836
  /** @type {?} */
3837
- exports.ɵu.prototype.isExternal;
3837
+ exports.NavigationSession.prototype.isExternal;
3838
3838
  /** @type {?} */
3839
- exports.ɵu.prototype.dialogOpenOnStart;
3839
+ exports.NavigationSession.prototype.dialogOpenOnStart;
3840
3840
  /**
3841
3841
  * @type {?}
3842
3842
  * @private
3843
3843
  */
3844
- exports.ɵu.prototype.componentDeactivationHandlers;
3844
+ exports.NavigationSession.prototype.componentDeactivationHandlers;
3845
3845
  /** @type {?} */
3846
- exports.ɵu.prototype.firstNavigation;
3846
+ exports.NavigationSession.prototype.firstNavigation;
3847
3847
  /**
3848
3848
  * @type {?}
3849
3849
  * @private
3850
3850
  */
3851
- exports.ɵu.prototype.appModalInteractionContext;
3851
+ exports.NavigationSession.prototype.appModalInteractionContext;
3852
3852
  }
3853
3853
  (function (NavigationSession) {
3854
3854
  var External = /** @class */ (function (_super) {
@@ -3879,8 +3879,8 @@
3879
3879
  Internal.prototype.isExternal;
3880
3880
  }
3881
3881
  var Factory = /** @class */ (function () {
3882
- function Factory(appModelInteractionContext) {
3883
- this.appModelInteractionContext = appModelInteractionContext;
3882
+ function Factory(interactionContext) {
3883
+ this.interactionContext = interactionContext;
3884
3884
  }
3885
3885
  /**
3886
3886
  * @param {?} visit
@@ -3891,7 +3891,7 @@
3891
3891
  * @return {?}
3892
3892
  */
3893
3893
  function (visit) {
3894
- return new Internal(visit, this.appModelInteractionContext);
3894
+ return new Internal(visit, this.interactionContext);
3895
3895
  };
3896
3896
  /**
3897
3897
  * @param {?} firstTimeRoute
@@ -3902,23 +3902,14 @@
3902
3902
  * @return {?}
3903
3903
  */
3904
3904
  function (firstTimeRoute) {
3905
- return new External(firstTimeRoute, this.appModelInteractionContext);
3905
+ return new External(firstTimeRoute, this.interactionContext);
3906
3906
  };
3907
- Factory.decorators = [
3908
- { type: core.Injectable, args: [{
3909
- providedIn: 'root'
3910
- },] },
3911
- ];
3912
- /** @nocollapse */
3913
- Factory.ctorParameters = function () { return [
3914
- { type: InteractionContext }
3915
- ]; };
3916
3907
  return Factory;
3917
3908
  }());
3918
3909
  NavigationSession.Factory = Factory;
3919
3910
  if (false) {
3920
3911
  /** @type {?} */
3921
- Factory.prototype.appModelInteractionContext;
3912
+ Factory.prototype.interactionContext;
3922
3913
  }
3923
3914
  var ComponentDeactivationHandler = /** @class */ (function () {
3924
3915
  function ComponentDeactivationHandler(component, appModelInteractionContext, primary) {
@@ -4064,7 +4055,7 @@
4064
4055
  /** @type {?} */
4065
4056
  ComponentDeactivationHandler.prototype.primary;
4066
4057
  }
4067
- })(exports.ɵu || (exports.ɵu = {}));
4058
+ })(exports.NavigationSession || (exports.NavigationSession = {}));
4068
4059
 
4069
4060
  /**
4070
4061
  * @fileoverview added by tsickle
@@ -4150,1987 +4141,2070 @@
4150
4141
  * @fileoverview added by tsickle
4151
4142
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4152
4143
  */
4153
- exports.ɵt = /** @class */ (function (_super) {
4154
- __extends(PlaceRouter, _super);
4155
- function PlaceRouter(router$1, urlSerializer, navigationSessionFactory, angularLocation, placeHistory) {
4156
- var _this = _super.call(this) || this;
4157
- _this.router = router$1;
4158
- _this.urlSerializer = urlSerializer;
4159
- _this.navigationSessionFactory = navigationSessionFactory;
4160
- _this.angularLocation = angularLocation;
4161
- _this.placeHistory = placeHistory;
4162
- _this.firstRoute = true;
4163
- _this._navigationSessionModel = new pectin.MutableValueModel();
4164
- _this._activeVisits = new pectin.MutableListModel();
4165
- var _a = pectin.Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
4166
- _this.activeVisitIndex = chain(_this._activeVisits).indexBy('placeDefinition');
4167
- angularLocation.onUrlChange((/**
4168
- * @param {?} url
4144
+ /**
4145
+ * @param {?} options
4146
+ * @return {?}
4147
+ */
4148
+ function Place(options) {
4149
+ return (/**
4150
+ * @param {?} target
4151
+ * @return {?}
4152
+ */
4153
+ function (target) {
4154
+ if (exports.ɵba.isPlaceComponentConstructor(target)) {
4155
+ exports.ɵba.injectDefinition(target, new exports.PlaceDefinition(target, options.path, ___default.isNil(options.authenticate) ? false : options.authenticate, options.data, exports.ɵba.getRouteParameters(target), (options.children || []).map((/**
4156
+ * @param {?} c
4157
+ * @return {?}
4158
+ */
4159
+ function (c) { return exports.ɵba.getDefinition(c); }))));
4160
+ }
4161
+ else {
4162
+ pectin.lang.illegalState(target + " must extend PlaceComponent to use the @Place decorator");
4163
+ }
4164
+ });
4165
+ }
4166
+ (function (Place) {
4167
+ /**
4168
+ * @record
4169
+ */
4170
+ function Options() { }
4171
+ Place.Options = Options;
4172
+ if (false) {
4173
+ /** @type {?} */
4174
+ Options.prototype.path;
4175
+ /** @type {?|undefined} */
4176
+ Options.prototype.data;
4177
+ /** @type {?|undefined} */
4178
+ Options.prototype.authenticate;
4179
+ /** @type {?|undefined} */
4180
+ Options.prototype.children;
4181
+ /** @type {?|undefined} */
4182
+ Options.prototype.defaultChild;
4183
+ }
4184
+ })(Place || (Place = {}));
4185
+
4186
+ /**
4187
+ * @fileoverview added by tsickle
4188
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4189
+ */
4190
+ // WARNING: interface has both a type and a value, skipping emit
4191
+
4192
+ (function (Formatter) {
4193
+ var StringType = /** @class */ (function () {
4194
+ function StringType() {
4195
+ }
4196
+ /**
4197
+ * @param {?} value
4169
4198
  * @return {?}
4170
4199
  */
4171
- function (url) {
4172
- console.log("location.onUrlChange -> " + url);
4173
- }));
4174
- // TODO: make setup the callbacks in during module initiation to make this testable.
4175
- _this.router.events.subscribe((/**
4176
- * @param {?} event
4200
+ StringType.prototype.format = /**
4201
+ * @param {?} value
4177
4202
  * @return {?}
4178
4203
  */
4179
- function (event) {
4180
- // Routing event sequence
4181
- // ======================
4182
- // NavigationStart -> .... -> NavigationCancel --> redirect, go around again in the same session
4183
- // NavigationStart -> .... -> NavigationEnd --> navigation complete, end session.
4184
- // NavigationStart -> .... -> NavigationError --> navigation canceled, end session.
4185
- // =======================
4186
- if (event instanceof router.NavigationStart) {
4187
- _this.onAngularRouterStarted(event);
4188
- }
4189
- if (event instanceof router.NavigationEnd) {
4190
- _this.onAngularRouterFinished(false);
4191
- }
4192
- if (event instanceof router.NavigationError) {
4193
- _this.onAngularRouterFinished(true);
4194
- }
4195
- }));
4196
- _this.navigationSessionActive = chain(_this.navigationSessionModel).isNotNil();
4197
- _this.navigationSessionActive.subscribe((/**
4198
- * @param {?} active
4204
+ function (value) {
4205
+ return value;
4206
+ };
4207
+ /**
4208
+ * @param {?} value
4199
4209
  * @return {?}
4200
4210
  */
4201
- function (active) {
4202
- console.log('navigationSessionActive', active);
4203
- }));
4204
- return _this;
4205
- // const txo = new TransactionObserver().onEvent(e => console.log(e.toString()));
4206
- // txo.observe('this.navigationSessionModel', this.navigationSessionModel);
4207
- }
4208
- Object.defineProperty(PlaceRouter.prototype, "navigationSession", {
4209
- get: /**
4211
+ StringType.prototype.parse = /**
4212
+ * @param {?} value
4210
4213
  * @return {?}
4211
4214
  */
4212
- function () {
4213
- return this._navigationSessionModel.value;
4214
- },
4215
- enumerable: true,
4216
- configurable: true
4217
- });
4218
- Object.defineProperty(PlaceRouter.prototype, "navigationSessionModel", {
4219
- get: /**
4215
+ function (value) {
4216
+ return value;
4217
+ };
4218
+ return StringType;
4219
+ }());
4220
+ var NumberType = /** @class */ (function () {
4221
+ function NumberType() {
4222
+ }
4223
+ /**
4224
+ * @param {?} value
4220
4225
  * @return {?}
4221
4226
  */
4222
- function () {
4223
- return this._navigationSessionModel.readonly;
4224
- },
4225
- enumerable: true,
4226
- configurable: true
4227
- });
4228
- Object.defineProperty(PlaceRouter.prototype, "activeVisits", {
4229
- get: /**
4227
+ NumberType.prototype.format = /**
4228
+ * @param {?} value
4230
4229
  * @return {?}
4231
4230
  */
4232
- function () {
4233
- return this._activeVisits.readonly;
4234
- },
4235
- enumerable: true,
4236
- configurable: true
4237
- });
4238
- /**
4239
- * placeRouter.navigate(placeDestinations.somePlace.createVisit(routeId, ...visitParams));
4240
- * @param visit
4241
- */
4242
- /**
4243
- * placeRouter.navigate(placeDestinations.somePlace.createVisit(routeId, ...visitParams));
4244
- * @param {?} visit
4245
- * @param {?=} options
4246
- * @return {?}
4247
- */
4248
- PlaceRouter.prototype.navigate = /**
4249
- * placeRouter.navigate(placeDestinations.somePlace.createVisit(routeId, ...visitParams));
4250
- * @param {?} visit
4251
- * @param {?=} options
4252
- * @return {?}
4253
- */
4254
- function (visit, options) {
4255
- return __awaiter(this, void 0, void 0, function () {
4256
- var _this = this;
4257
- return __generator(this, function (_a) {
4258
- this.doNavigation(visit, (/**
4259
- * @param {?} router
4260
- * @return {?}
4261
- */
4262
- function (router) { return __awaiter(_this, void 0, void 0, function () {
4263
- var commands;
4264
- return __generator(this, function (_a) {
4265
- switch (_a.label) {
4266
- case 0:
4267
- commands = __spread([
4268
- visit.placeDefinition.path
4269
- ], this.createRouteParameters(visit));
4270
- return [4 /*yield*/, this.router.navigate(commands, {
4271
- relativeTo: options ? options.relativeTo : null
4272
- })];
4273
- case 1:
4274
- _a.sent();
4275
- return [2 /*return*/];
4276
- }
4277
- });
4278
- }); }));
4279
- return [2 /*return*/];
4280
- });
4281
- });
4282
- };
4283
- // @Trace()
4284
- // @Trace()
4285
- /**
4286
- * @param {?} activatedRoute
4287
- * @param {?} previous
4288
- * @param {?} next
4289
- * @return {?}
4290
- */
4291
- PlaceRouter.prototype.pushVisitChangesToRoute =
4292
- // @Trace()
4293
- /**
4294
- * @param {?} activatedRoute
4295
- * @param {?} previous
4296
- * @param {?} next
4297
- * @return {?}
4298
- */
4299
- function (activatedRoute, previous, next) {
4300
- return __awaiter(this, void 0, void 0, function () {
4301
- var _this = this;
4302
- return __generator(this, function (_a) {
4303
- // we have to push to history so our remember sanitisers don't pick up the previous value
4304
- // when it's been cleared by the user.
4305
- this.placeHistory.add(next);
4306
- // FIXME: no route id -> route id duplicates route parameters
4307
- if (next.hasRoutingChangedFrom(previous)) {
4308
- return [2 /*return*/, this.doNavigation(next, (/**
4309
- * @param {?} router
4310
- * @return {?}
4311
- */
4312
- function (router) {
4313
- /** @type {?} */
4314
- var commands = _this.parseUrl(_this.router.routerState.snapshot).createRedirectCommandsFor(next);
4315
- // // we have to to use the definition for route id as our redirection always includes
4316
- // // the id in the url segements (but leaves it blank when there's no id). I.e. in the
4317
- // // no id case we're doing the following redirect [<placePath>, ""] -> ["..", <id>]
4318
- // const relativePath = !!previous.placeDefinition.hasRouteId() ? '..' : '.';
4319
- // const commands = [
4320
- // relativePath,
4321
- // ...this.createRouteParameters(next),
4322
- // ...this.extractChildPath(activatedRoute.snapshot)
4323
- // ];
4324
- console.log('### Push Changes to route Redirect', { commands: commands });
4325
- return router.navigate(commands);
4326
- }))];
4327
- }
4328
- return [2 /*return*/];
4329
- });
4330
- });
4331
- };
4332
- /**
4333
- * @param {?} visit
4334
- * @param {?} customNavigation
4335
- * @return {?}
4336
- */
4337
- PlaceRouter.prototype.doNavigation = /**
4338
- * @param {?} visit
4339
- * @param {?} customNavigation
4340
- * @return {?}
4341
- */
4342
- function (visit, customNavigation) {
4343
- return __awaiter(this, void 0, void 0, function () {
4344
- return __generator(this, function (_a) {
4345
- switch (_a.label) {
4346
- case 0:
4347
- this._navigationSessionModel.value = this.navigationSessionFactory.createInternal(visit);
4348
- _a.label = 1;
4349
- case 1:
4350
- _a.trys.push([1, , 3, 4]);
4351
- return [4 /*yield*/, customNavigation(this.router)];
4352
- case 2:
4353
- _a.sent();
4354
- return [3 /*break*/, 4];
4355
- case 3:
4356
- // Router has finished (since there was no router change required) so we
4357
- // need to end the navigation session.
4358
- if (this.navigationSession && !this.router.getCurrentNavigation()) {
4359
- this.onAngularRouterFinished(false);
4360
- }
4361
- return [7 /*endfinally*/];
4362
- case 4: return [2 /*return*/];
4363
- }
4364
- });
4365
- });
4366
- };
4367
- /**
4368
- * @private
4369
- * @param {?} visit
4370
- * @return {?}
4371
- */
4372
- PlaceRouter.prototype.createRouteParameters = /**
4373
- * @private
4374
- * @param {?} visit
4375
- * @return {?}
4376
- */
4377
- function (visit) {
4378
- /** @type {?} */
4379
- var def = visit.placeDefinition;
4380
- return visit.hasRouteId() ?
4381
- [def.getFormattedRouteId(visit), def.getFormattedRouteParameters(visit)] :
4382
- [def.getFormattedRouteParameters(visit)];
4383
- };
4384
- // @Trace()
4385
- // @Trace()
4386
- /**
4387
- * @private
4388
- * @param {?} event
4389
- * @return {?}
4390
- */
4391
- PlaceRouter.prototype.onAngularRouterStarted =
4392
- // @Trace()
4393
- /**
4394
- * @private
4395
- * @param {?} event
4396
- * @return {?}
4397
- */
4398
- function (event) {
4399
- if (!this.navigationSession) { // We been activated by an external route rather than placeRouter.go(visit)
4400
- console.log('navigation started', { firstTime: this.firstRoute });
4401
- /** @type {?} */
4402
- var session = this.navigationSessionFactory.createExternal(this.firstRoute);
4403
- if (event.navigationTrigger === 'popstate') {
4404
- session.setPopstateReturnUrl(this.router.routerState.snapshot.url);
4405
- }
4406
- this._navigationSessionModel.value = session;
4407
- }
4408
- this.firstRoute = false;
4409
- };
4410
- // @Trace()
4411
- // @Trace()
4412
- /**
4413
- * @private
4414
- * @param {?} cancelled
4415
- * @return {?}
4416
- */
4417
- PlaceRouter.prototype.onAngularRouterFinished =
4418
- // @Trace()
4419
- /**
4420
- * @private
4421
- * @param {?} cancelled
4422
- * @return {?}
4423
- */
4424
- function (cancelled) {
4425
- var _this = this;
4426
- /** @type {?} */
4427
- var session = this._navigationSessionModel.value;
4428
- if (!cancelled) {
4429
- // Update visits before we end the navigation session. This allows the placeOutets to
4430
- // ignore visit changes that occur while the navigation is in progress
4431
- /** @type {?} */
4432
- var visits = session.getVisits();
4433
- visits.forEach((/**
4434
- * @param {?} v
4435
- * @return {?}
4436
- */
4437
- function (v) { return _this.placeHistory.add(v); }));
4438
- this._activeVisits.value = visits;
4439
- }
4440
- else {
4441
- // Angular doesn't preserve the url when a guard cancels the back button.
4442
- // See https://github.com/angular/angular/issues/13586#issuecomment-432795720
4443
- if (session.isPopState) {
4444
- console.log('cancelled during popstate');
4445
- this.angularLocation.go(session.popStateReturnUrl);
4446
- }
4447
- }
4448
- this._navigationSessionModel.value = null;
4449
- };
4450
- /**
4451
- * @param {?} activatedRoute
4452
- * @return {?}
4453
- */
4454
- PlaceRouter.prototype.extractChildPath = /**
4455
- * @param {?} activatedRoute
4456
- * @return {?}
4457
- */
4458
- function (activatedRoute) {
4459
- return ___default__default.flatten(activatedRoute.children.map((/**
4460
- * @param {?} child
4461
- * @return {?}
4462
- */
4463
- function (child) { return child.url; })));
4464
- };
4465
- /**
4466
- * @param {?} snapshot
4467
- * @return {?}
4468
- */
4469
- PlaceRouter.prototype.parseUrl = /**
4470
- * @param {?} snapshot
4471
- * @return {?}
4472
- */
4473
- function (snapshot) {
4474
- return new PlaceRouter.UrlHelper(this.urlSerializer.parse(snapshot.url));
4475
- };
4476
- PlaceRouter.decorators = [
4477
- { type: core.Injectable, args: [{
4478
- providedIn: 'root'
4479
- },] }
4480
- ];
4481
- /** @nocollapse */
4482
- PlaceRouter.ctorParameters = function () { return [
4483
- { type: router.Router },
4484
- { type: router.UrlSerializer },
4485
- { type: exports.ɵu.Factory },
4486
- { type: common.Location },
4487
- { type: PlaceHistory }
4488
- ]; };
4489
- /** @nocollapse */ PlaceRouter.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function PlaceRouter_Factory() { return new PlaceRouter(core.ɵɵinject(router.Router), core.ɵɵinject(router.UrlSerializer), core.ɵɵinject(exports.ɵu.Factory), core.ɵɵinject(common.Location), core.ɵɵinject(PlaceHistory)); }, token: PlaceRouter, providedIn: "root" });
4490
- __decorate([
4491
- pectin.Trace(),
4492
- __metadata("design:type", Function),
4493
- __metadata("design:paramtypes", [Visit, Object]),
4494
- __metadata("design:returntype", Promise)
4495
- ], PlaceRouter.prototype, "navigate", null);
4496
- return PlaceRouter;
4497
- }(pectin.GarbageCollector));
4498
- if (false) {
4499
- /**
4500
- * @type {?}
4501
- * @private
4502
- */
4503
- exports.ɵt.prototype.firstRoute;
4504
- /**
4505
- * @type {?}
4506
- * @private
4507
- */
4508
- exports.ɵt.prototype._navigationSessionModel;
4509
- /**
4510
- * @type {?}
4511
- * @private
4512
- */
4513
- exports.ɵt.prototype._activeVisits;
4514
- /** @type {?} */
4515
- exports.ɵt.prototype.navigationSessionActive;
4516
- /** @type {?} */
4517
- exports.ɵt.prototype.activeVisitIndex;
4518
- /**
4519
- * @type {?}
4520
- * @private
4521
- */
4522
- exports.ɵt.prototype.router;
4523
- /**
4524
- * @type {?}
4525
- * @private
4526
- */
4527
- exports.ɵt.prototype.urlSerializer;
4528
- /**
4529
- * @type {?}
4530
- * @private
4531
- */
4532
- exports.ɵt.prototype.navigationSessionFactory;
4533
- /** @type {?} */
4534
- exports.ɵt.prototype.angularLocation;
4535
- /** @type {?} */
4536
- exports.ɵt.prototype.placeHistory;
4537
- }
4538
- (function (PlaceRouter) {
4539
- var UrlHelper = /** @class */ (function () {
4540
- function UrlHelper(urlTree) {
4541
- this.urlTree = urlTree;
4542
- console.log({ segments: this.urlTree.root.children.primary.segments });
4543
- }
4544
- /**
4545
- * @return {?}
4546
- */
4547
- UrlHelper.prototype.cloneUrlSegmentList = /**
4548
- * @return {?}
4549
- */
4550
- function () {
4551
- return __spread(this.urlTree.root.children.primary.segments);
4231
+ function (value) {
4232
+ return ___default__default.isNumber(value) && !___default__default.isNaN(value) ? "" + value : null;
4552
4233
  };
4553
4234
  /**
4554
- * @param {?} visit
4235
+ * @param {?} value
4555
4236
  * @return {?}
4556
4237
  */
4557
- UrlHelper.prototype.updateVisitSegments = /**
4558
- * @param {?} visit
4238
+ NumberType.prototype.parse = /**
4239
+ * @param {?} value
4559
4240
  * @return {?}
4560
4241
  */
4561
- function (visit) {
4562
- // Ugly, but it works for now.
4563
- /** @type {?} */
4564
- var segments = this.cloneUrlSegmentList();
4565
- /** @type {?} */
4566
- var visitSegments = this.convertToUrlSegments(visit);
4242
+ function (value) {
4567
4243
  /** @type {?} */
4568
- var replaceAt = segments.findIndex((/**
4569
- * @param {?} segment
4570
- * @return {?}
4571
- */
4572
- function (segment) { return segment.path === visitSegments[0].path; }));
4573
- // do not use the return value, it's the items that were removed!
4574
- segments.splice.apply(segments, __spread([replaceAt, visitSegments.length], visitSegments));
4575
- return segments;
4576
- };
4577
- /**
4578
- * Converts the visit into segments. Please not that these segments are not e
4579
- * @param visit
4580
- */
4581
- /**
4582
- * Converts the visit into segments. Please not that these segments are not e
4583
- * @param {?} visit
4584
- * @return {?}
4585
- */
4586
- UrlHelper.prototype.convertToUrlSegments = /**
4587
- * Converts the visit into segments. Please not that these segments are not e
4588
- * @param {?} visit
4589
- * @return {?}
4590
- */
4591
- function (visit) {
4592
- return visit.placeDefinition.hasRouteId() ?
4593
- [
4594
- // NOTE:
4595
- // It's important to attach the params to the root path and not the id. If we attach them
4596
- // to an empty id then the angular router won't match the pattern.
4597
- new router.UrlSegment(visit.placeDefinition.path, visit.placeDefinition.getFormattedRouteParameters(visit)),
4598
- new router.UrlSegment(visit.placeDefinition.getFormattedRouteId(visit), {})
4599
- ]
4600
- :
4601
- [
4602
- new router.UrlSegment(visit.placeDefinition.path, visit.placeDefinition.getFormattedRouteParameters(visit))
4603
- ];
4244
+ var parsed = Number.parseFloat(value);
4245
+ return ___default__default.isNaN(parsed) ? null : parsed;
4604
4246
  };
4247
+ return NumberType;
4248
+ }());
4249
+ var BooleanType = /** @class */ (function () {
4250
+ function BooleanType() {
4251
+ }
4605
4252
  /**
4606
- * @param {?} visit
4253
+ * @param {?} value
4607
4254
  * @return {?}
4608
4255
  */
4609
- UrlHelper.prototype.createRedirectCommandsFor = /**
4610
- * @param {?} visit
4256
+ BooleanType.prototype.format = /**
4257
+ * @param {?} value
4611
4258
  * @return {?}
4612
4259
  */
4613
- function (visit) {
4614
- /** @type {?} */
4615
- var segments = this.updateVisitSegments(visit);
4616
- /** @type {?} */
4617
- var commands = [];
4618
- segments.forEach((/**
4619
- * @param {?} s
4620
- * @return {?}
4621
- */
4622
- function (s) {
4623
- commands.push(s.path);
4624
- if (s.parameterMap.keys.length > 0) {
4625
- commands.push(s.parameters);
4626
- }
4627
- }));
4628
- return commands;
4260
+ function (value) {
4261
+ return value ? 'true' : 'false';
4629
4262
  };
4630
4263
  /**
4631
- * @param {?} placeDef
4264
+ * @param {?} value
4632
4265
  * @return {?}
4633
4266
  */
4634
- UrlHelper.prototype.includesPathOf = /**
4635
- * @param {?} placeDef
4267
+ BooleanType.prototype.parse = /**
4268
+ * @param {?} value
4636
4269
  * @return {?}
4637
4270
  */
4638
- function (placeDef) {
4639
- return this.cloneUrlSegmentList().find((/**
4640
- * @param {?} s
4641
- * @return {?}
4642
- */
4643
- function (s) { return s.path === placeDef.path; }));
4271
+ function (value) {
4272
+ return value === 'true';
4644
4273
  };
4645
- __decorate([
4646
- pectin.Trace(),
4647
- __metadata("design:type", Function),
4648
- __metadata("design:paramtypes", [Visit]),
4649
- __metadata("design:returntype", Array)
4650
- ], UrlHelper.prototype, "createRedirectCommandsFor", null);
4651
- return UrlHelper;
4274
+ return BooleanType;
4652
4275
  }());
4653
- PlaceRouter.UrlHelper = UrlHelper;
4654
- if (false) {
4655
- /**
4656
- * @type {?}
4657
- * @private
4658
- */
4659
- UrlHelper.prototype.urlTree;
4660
- }
4661
- })(exports.ɵt || (exports.ɵt = {}));
4276
+ Formatter.STRING = new StringType();
4277
+ Formatter.NUMBER = new NumberType();
4278
+ Formatter.BOOLEAN = new BooleanType();
4279
+ })(exports.ɵbd || (exports.ɵbd = {}));
4662
4280
 
4663
4281
  /**
4664
4282
  * @fileoverview added by tsickle
4665
4283
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4666
4284
  */
4667
- // Freezes the state of the components at the start of the animation.
4668
- /** @type {?} */
4669
- var animationStartStyle = animations$1.style({ position: 'absolute', top: '0', left: '0', bottom: '0', right: '0' });
4670
- /** @type {?} */
4671
- var left = [
4672
- animations$1.query(':enter, :leave', animationStartStyle, { optional: true }),
4673
- animations$1.group([
4674
- animations$1.query(':enter', [
4675
- animations$1.style({ transform: 'translateX(-100%)' }),
4676
- animations$1.animate('{{duration}} ease-out', animations$1.style({ transform: 'translateX(0%)' }))
4677
- ], {
4678
- optional: true
4679
- }),
4680
- animations$1.query(':leave', [
4681
- animations$1.style({ transform: 'translateX(0%)' }),
4682
- animations$1.animate('{{duration}} ease-out', animations$1.style({ transform: 'translateX(100%)' }))
4683
- ], {
4684
- optional: true
4685
- })
4686
- ])
4687
- ];
4688
- /** @type {?} */
4689
- var right = [
4690
- animations$1.query(':enter, :leave', animationStartStyle, { optional: true }),
4691
- animations$1.group([
4692
- animations$1.query(':enter', [
4693
- animations$1.style({ transform: 'translateX(100%)', minHeight: '1px' }),
4694
- animations$1.animate('{{duration}} ease-out', animations$1.style({ transform: 'translateX(0%)' }))
4695
- ], {
4696
- optional: true
4697
- }),
4698
- animations$1.query(':leave', [animations$1.style({ transform: 'translateX(0%)' }), animations$1.animate('{{duration}} ease-out', animations$1.style({
4699
- transform: 'translateX(-100%)',
4700
- minHeight: '1px'
4701
- }))], {
4702
- optional: true
4703
- })
4704
- ])
4705
- ];
4706
4285
  /**
4707
- * @param {?} duration
4708
- * @return {?}
4286
+ * @record
4287
+ * @template T
4709
4288
  */
4710
- function leftRightPlaceAnimation(duration) {
4711
- return animations$1.trigger('routeAnimations', [
4712
- animations$1.transition(':increment', right, { params: { duration: duration } }),
4713
- animations$1.transition(':decrement', left, { params: { duration: duration } })
4714
- ]);
4289
+ function RouteIdOptions() { }
4290
+ if (false) {
4291
+ /** @type {?|undefined} */
4292
+ RouteIdOptions.prototype.as;
4293
+ /** @type {?|undefined} */
4294
+ RouteIdOptions.prototype.optional;
4295
+ /** @type {?|undefined} */
4296
+ RouteIdOptions.prototype.remember;
4297
+ /** @type {?|undefined} */
4298
+ RouteIdOptions.prototype.defaultValue;
4715
4299
  }
4716
- /** @type {?} */
4717
- var LEFT_RIGHT_PLACE_ANIMATION = leftRightPlaceAnimation('0.3s');
4718
-
4719
4300
  /**
4720
- * @fileoverview added by tsickle
4721
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4301
+ * @record
4302
+ * @template T
4722
4303
  */
4304
+ function RouteParameterOptions() { }
4305
+ if (false) {
4306
+ /** @type {?|undefined} */
4307
+ RouteParameterOptions.prototype.as;
4308
+ /** @type {?|undefined} */
4309
+ RouteParameterOptions.prototype.optional;
4310
+ /** @type {?|undefined} */
4311
+ RouteParameterOptions.prototype.remember;
4312
+ /** @type {?|undefined} */
4313
+ RouteParameterOptions.prototype.defaultValue;
4314
+ /** @type {?|undefined} */
4315
+ RouteParameterOptions.prototype.storeInUrl;
4316
+ }
4723
4317
  /**
4724
4318
  * @record
4319
+ * @template T
4725
4320
  */
4726
- function PlaceRef() { }
4321
+ function RouteListParameterOptions() { }
4727
4322
  if (false) {
4323
+ /** @type {?|undefined} */
4324
+ RouteListParameterOptions.prototype.as;
4325
+ /** @type {?|undefined} */
4326
+ RouteListParameterOptions.prototype.optional;
4327
+ /** @type {?|undefined} */
4328
+ RouteListParameterOptions.prototype.remember;
4329
+ /** @type {?|undefined} */
4330
+ RouteListParameterOptions.prototype.defaultValue;
4331
+ /** @type {?|undefined} */
4332
+ RouteListParameterOptions.prototype.storeInUrl;
4333
+ }
4334
+ /**
4335
+ * @template T
4336
+ * @param {?} type
4337
+ * @param {?=} options
4338
+ * @return {?}
4339
+ */
4340
+ function RouteId(type, options) {
4341
+ return (/**
4342
+ * @param {?} prototype
4343
+ * @param {?} propertyKey
4344
+ * @return {?}
4345
+ */
4346
+ function (prototype, propertyKey) {
4347
+ /** @type {?} */
4348
+ var param = new exports.ParameterDefinition.RouteId(propertyKey.toString(), options, type);
4349
+ typescriptUtilities.Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, param);
4350
+ pectin.UseDelegate()(prototype, propertyKey);
4351
+ });
4352
+ }
4353
+ /**
4354
+ * @template T
4355
+ * @param {?=} options
4356
+ * @return {?}
4357
+ */
4358
+ function VisitParameter(options) {
4728
4359
  /** @type {?} */
4729
- PlaceRef.prototype.placeDefinition;
4730
- /**
4731
- * @param {?} param
4360
+ var opts = typescriptUtilities.Opts.get(options);
4361
+ return (/**
4362
+ * @param {?} prototype
4363
+ * @param {?} propertyKey
4732
4364
  * @return {?}
4733
4365
  */
4734
- PlaceRef.prototype.initialiseBindings = function (param) { };
4366
+ function (prototype, propertyKey) {
4367
+ /** @type {?} */
4368
+ var param = new exports.ParameterDefinition.ValueParameter(propertyKey.toString(), options, opts.getOptional("storeInUrl", null));
4369
+ typescriptUtilities.Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, param);
4370
+ pectin.UseDelegate()(prototype, propertyKey);
4371
+ });
4372
+ }
4373
+ /**
4374
+ * @template E
4375
+ * @param {?=} options
4376
+ * @return {?}
4377
+ */
4378
+ function VisitParameterList(options) {
4379
+ /** @type {?} */
4380
+ var opts = typescriptUtilities.Opts.get(options);
4381
+ return (/**
4382
+ * @param {?} prototype
4383
+ * @param {?} propertyKey
4384
+ * @return {?}
4385
+ */
4386
+ function (prototype, propertyKey) {
4387
+ /** @type {?} */
4388
+ var param = new exports.ParameterDefinition.ArrayParameter(propertyKey.toString(), options, opts.getOptional("storeInUrl", null));
4389
+ typescriptUtilities.Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, param);
4390
+ pectin.UseDelegate()(prototype, propertyKey);
4391
+ });
4392
+ }
4393
+
4394
+ /**
4395
+ * @fileoverview added by tsickle
4396
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4397
+ */
4398
+ var NoopGatewayPlace = /** @class */ (function (_super) {
4399
+ __extends(NoopGatewayPlace, _super);
4400
+ function NoopGatewayPlace(router) {
4401
+ var _this = _super.call(this) || this;
4402
+ _this.router = router;
4403
+ return _this;
4404
+ }
4735
4405
  /**
4736
4406
  * @return {?}
4737
4407
  */
4738
- PlaceRef.prototype.onPlaceReady = function () { };
4408
+ NoopGatewayPlace.prototype.ngOnInit = /**
4409
+ * @return {?}
4410
+ */
4411
+ function () {
4412
+ this.router.navigateByUrl(this.returnUrl.value);
4413
+ };
4414
+ NoopGatewayPlace.ctorParameters = function () { return [
4415
+ { type: router.Router }
4416
+ ]; };
4417
+ NoopGatewayPlace.decorators = [
4418
+ { type: core.Component, args: [{
4419
+ template: ''
4420
+ }] }
4421
+ ];
4422
+ /** @nocollapse */
4423
+ NoopGatewayPlace.ctorParameters = function () { return [
4424
+ { type: router.Router }
4425
+ ]; };
4426
+ __decorate([
4427
+ VisitParameter({ storeInUrl: exports.ɵbd.STRING }),
4428
+ __metadata("design:type", pectin.MutableValueModel)
4429
+ ], NoopGatewayPlace.prototype, "returnUrl", void 0);
4430
+ NoopGatewayPlace = __decorate([
4431
+ Place({
4432
+ path: 'aup-gateway-route',
4433
+ authenticate: false
4434
+ }),
4435
+ __metadata("design:paramtypes", [router.Router])
4436
+ ], NoopGatewayPlace);
4437
+ return NoopGatewayPlace;
4438
+ }(exports.ɵba));
4439
+ if (false) {
4440
+ /** @type {?} */
4441
+ NoopGatewayPlace.prototype.returnUrl;
4442
+ /** @type {?} */
4443
+ NoopGatewayPlace.prototype.router;
4739
4444
  }
4740
- var PlaceOutletComponent = /** @class */ (function (_super) {
4741
- __extends(PlaceOutletComponent, _super);
4742
- function PlaceOutletComponent(router, placeRouter, placeConfig, parentOutlet) {
4445
+
4446
+ /**
4447
+ * @fileoverview added by tsickle
4448
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4449
+ */
4450
+ /** @type {?} */
4451
+ var noopPlaceDef = exports.ɵba.getDefinition(NoopGatewayPlace);
4452
+ exports.ɵt = /** @class */ (function (_super) {
4453
+ __extends(PlaceRouter, _super);
4454
+ function PlaceRouter(router$1, urlSerializer, interactionContext, angularLocation, placeHistory) {
4743
4455
  var _this = _super.call(this) || this;
4744
- _this.router = router;
4745
- _this.placeRouter = placeRouter;
4746
- _this.placeConfig = placeConfig;
4747
- _this.animate = true;
4748
- _this.placeChanged = new core.EventEmitter();
4749
- _this._activePlace = new pectin.MutableValueModel();
4750
- _this._activePlaceVisitModel = new pectin.DelegatingValueModel();
4751
- _this._inOutletActivation = new pectin.Guard();
4752
- _this._inOutletDeactivation = new pectin.Guard();
4753
- _this._inRouteVisitUpdate = new pectin.Guard();
4754
- _this._activatedRouteModel = new pectin.MutableValueModel();
4755
- _this._placeDefinition = new pectin.MutableValueModel();
4756
- _this.initialPlaceIndex = null;
4456
+ _this.router = router$1;
4457
+ _this.urlSerializer = urlSerializer;
4458
+ _this.interactionContext = interactionContext;
4459
+ _this.angularLocation = angularLocation;
4460
+ _this.placeHistory = placeHistory;
4461
+ _this.firstRoute = true;
4462
+ _this._navigationSessionModel = new pectin.MutableValueModel();
4463
+ _this._activeVisits = new pectin.MutableListModel();
4464
+ _this.initialRedirectStarted = false;
4465
+ _this.initialRedirectFinished = false;
4757
4466
  var _a = pectin.Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
4758
- _this.parentOutletModel = new pectin.MutableValueModel(parentOutlet);
4759
- _this._activePlaceVisitModel.setDelegate(new pectin.MutableValueModel());
4760
- _this._inOutletUpdate = valueOf.any(_this._inOutletDeactivation, _this._inOutletActivation).areTruthy();
4761
- /** @type {?} */
4762
- var defaultPlaceAnimationOrder = chain(_this.parentOutletModel)
4763
- .pullValueModel((/**
4764
- * @param {?} o
4467
+ _this.activeVisitIndex = chain(_this._activeVisits).indexBy('placeDefinition');
4468
+ _this.navigationSessionFactory = new exports.NavigationSession.Factory(interactionContext);
4469
+ angularLocation.onUrlChange((/**
4470
+ * @param {?} url
4765
4471
  * @return {?}
4766
4472
  */
4767
- function (o) { return o.activePlaceModel; }))
4768
- .pluck('placeDefinition')
4769
- .pluckList('children')
4770
- .pluck('component');
4771
- /** @type {?} */
4772
- var activatePlaceType = chain(_this.activePlaceModel).map((/**
4773
- * @param {?} p
4473
+ function (url) {
4474
+ console.log("location.onUrlChange -> " + url);
4475
+ }));
4476
+ // TODO: make setup the callbacks in during module initiation to make this testable.
4477
+ _this.router.events.subscribe((/**
4478
+ * @param {?} event
4774
4479
  * @return {?}
4775
4480
  */
4776
- function (p) { return (/** @type {?} */ (p.constructor)); }));
4777
- _this.placeAnimationOrder = chain(_this.customPlaceAnimationOrderModel)
4778
- .otherwise(defaultPlaceAnimationOrder)
4779
- .reduce((/**
4780
- * @param {?} placesInOrder
4481
+ function (event) {
4482
+ // Routing event sequence
4483
+ // ======================
4484
+ // NavigationStart -> .... -> NavigationCancel --> redirect, go around again in the same session
4485
+ // NavigationStart -> .... -> NavigationEnd --> navigation complete, end session.
4486
+ // NavigationStart -> .... -> NavigationError --> navigation canceled, end session.
4487
+ // =======================
4488
+ if (event instanceof router.NavigationStart) {
4489
+ _this.onAngularRouterStarted(event);
4490
+ }
4491
+ if (event instanceof router.NavigationEnd) {
4492
+ _this.onAngularRouterFinished(false);
4493
+ }
4494
+ if (event instanceof router.NavigationError) {
4495
+ _this.onAngularRouterFinished(true);
4496
+ }
4497
+ }));
4498
+ _this.navigationSessionActive = chain(_this.navigationSessionModel).isNotNil();
4499
+ _this.navigationSessionActive.subscribe((/**
4500
+ * @param {?} active
4781
4501
  * @return {?}
4782
4502
  */
4783
- function (placesInOrder) {
4784
- /** @type {?} */
4785
- var placeIndex = 0;
4786
- if (activatePlaceType.value) {
4787
- placeIndex = placesInOrder.indexOf(activatePlaceType.value);
4788
- if (___default.isNil(_this.initialPlaceIndex)) {
4789
- _this.initialPlaceIndex = placeIndex;
4790
- }
4791
- }
4792
- return ___default.isNil(_this.initialPlaceIndex) ? 0 : placeIndex - _this.initialPlaceIndex;
4793
- }), { dependsOn: activatePlaceType });
4794
- // Push incoming changes into the component
4795
- _this.routerVisit = chain(_this._activePlace).pluck('placeDefinition').findIn(placeRouter.activeVisitIndex);
4796
- // Our router visit will change when our active is nullified during deactivation, which will push a null visit
4797
- // the the deactivated component, which will nuke it's view before the animations have finished.
4798
- // The visit will alway updated after the router session is finsised (when the new visits are registered) so
4799
- // we can safely ignore it during outlet changes as these always happen before the router session ends.
4800
- when.valueOf(_this.routerVisit).changes((/**
4503
+ function (active) {
4504
+ console.log('navigationSessionActive', active);
4505
+ }));
4506
+ return _this;
4507
+ // const txo = new TransactionObserver().onEvent(e => console.log(e.toString()));
4508
+ // txo.observe('this.navigationSessionModel', this.navigationSessionModel);
4509
+ }
4510
+ Object.defineProperty(PlaceRouter.prototype, "navigationSession", {
4511
+ get: /**
4801
4512
  * @return {?}
4802
4513
  */
4803
- function () { return _this.pushRouteChangesToVisit(); }), { unless: _this._inOutletUpdate });
4804
- // Handle component based changes
4805
- when.valueOf(_this._activePlaceVisitModel).changes((/**
4806
- * @param {?} next
4807
- * @param {?} previous
4514
+ function () {
4515
+ return this._navigationSessionModel.value;
4516
+ },
4517
+ enumerable: true,
4518
+ configurable: true
4519
+ });
4520
+ Object.defineProperty(PlaceRouter.prototype, "navigationSessionModel", {
4521
+ get: /**
4808
4522
  * @return {?}
4809
4523
  */
4810
- function (next, previous) {
4811
- _this.pushVisitChangesToRoute(next, previous);
4812
- }), {
4813
- unless: _this.placeRouter.navigationSessionActive
4814
- });
4815
- chain(_this._activePlace)
4816
- .postponeWhile(placeRouter.navigationSessionActive)
4817
- .subscribe((/**
4818
- * @param {?} place
4524
+ function () {
4525
+ return this._navigationSessionModel.readonly;
4526
+ },
4527
+ enumerable: true,
4528
+ configurable: true
4529
+ });
4530
+ Object.defineProperty(PlaceRouter.prototype, "activeVisits", {
4531
+ get: /**
4819
4532
  * @return {?}
4820
4533
  */
4821
- function (place) { return _this.placeChanged.emit(place); }));
4822
- return _this;
4823
- // const txo = new TransactionObserver().onEvent(e => console.log(e.toString()));
4824
- // txo.observe('inRouteVisitUpdate', inRouteVisitUpdate);
4825
- }
4534
+ function () {
4535
+ return this._activeVisits.readonly;
4536
+ },
4537
+ enumerable: true,
4538
+ configurable: true
4539
+ });
4826
4540
  /**
4827
- * @return {?}
4828
- */
4829
- PlaceOutletComponent.prototype.ngOnInit = /**
4830
- * @return {?}
4541
+ * placeRouter.navigate(placeDestinations.somePlace.createVisit(routeId, ...visitParams));
4542
+ * @param visit
4831
4543
  */
4832
- function () {
4833
- };
4834
- // @Trace()
4835
- // @Trace()
4836
4544
  /**
4545
+ * placeRouter.navigate(placeDestinations.somePlace.createVisit(routeId, ...visitParams));
4546
+ * @param {?} visit
4547
+ * @param {?=} options
4837
4548
  * @return {?}
4838
4549
  */
4839
- PlaceOutletComponent.prototype.getAnimationOrder =
4840
- // @Trace()
4841
- /**
4550
+ PlaceRouter.prototype.navigate = /**
4551
+ * placeRouter.navigate(placeDestinations.somePlace.createVisit(routeId, ...visitParams));
4552
+ * @param {?} visit
4553
+ * @param {?=} options
4842
4554
  * @return {?}
4843
4555
  */
4844
- function () {
4845
- return this.placeAnimationOrder.value;
4556
+ function (visit, options) {
4557
+ return __awaiter(this, void 0, void 0, function () {
4558
+ var _this = this;
4559
+ return __generator(this, function (_a) {
4560
+ this.doNavigation(visit, (/**
4561
+ * @param {?} router
4562
+ * @return {?}
4563
+ */
4564
+ function (router) { return __awaiter(_this, void 0, void 0, function () {
4565
+ var commands;
4566
+ return __generator(this, function (_a) {
4567
+ switch (_a.label) {
4568
+ case 0:
4569
+ commands = __spread([
4570
+ visit.placeDefinition.path
4571
+ ], this.createRouteParameters(visit));
4572
+ return [4 /*yield*/, this.router.navigate(commands, {
4573
+ relativeTo: options ? options.relativeTo : null
4574
+ })];
4575
+ case 1:
4576
+ _a.sent();
4577
+ return [2 /*return*/];
4578
+ }
4579
+ });
4580
+ }); }));
4581
+ return [2 /*return*/];
4582
+ });
4583
+ });
4846
4584
  };
4847
- Object.defineProperty(PlaceOutletComponent.prototype, "animationDuration", {
4848
- get: /**
4849
- * @return {?}
4850
- */
4851
- function () {
4852
- return this.placeConfig && this.placeConfig.animationDuration ? this.placeConfig.animationDuration : '500ms';
4853
- },
4854
- enumerable: true,
4855
- configurable: true
4856
- });
4857
4585
  // @Trace()
4858
4586
  // @Trace()
4859
4587
  /**
4860
- * @param {?} visit
4588
+ * @param {?} activatedRoute
4589
+ * @param {?} previous
4590
+ * @param {?} next
4861
4591
  * @return {?}
4862
4592
  */
4863
- PlaceOutletComponent.prototype.navigate =
4593
+ PlaceRouter.prototype.pushVisitChangesToRoute =
4864
4594
  // @Trace()
4865
4595
  /**
4866
- * @param {?} visit
4596
+ * @param {?} activatedRoute
4597
+ * @param {?} previous
4598
+ * @param {?} next
4867
4599
  * @return {?}
4868
4600
  */
4869
- function (visit) {
4870
- // console.log({ activatedRoute: this._activatedRouteModel.value });
4871
- this.placeRouter.navigate(visit, {
4872
- relativeTo: this.parentOutlet ? this.parentOutlet.activatedRouteModel.value : null
4601
+ function (activatedRoute, previous, next) {
4602
+ return __awaiter(this, void 0, void 0, function () {
4603
+ var _this = this;
4604
+ return __generator(this, function (_a) {
4605
+ // we have to push to history so our remember sanitisers don't pick up the previous value
4606
+ // when it's been cleared by the user.
4607
+ this.placeHistory.add(next);
4608
+ // FIXME: no route id -> route id duplicates route parameters
4609
+ if (next.hasRoutingChangedFrom(previous)) {
4610
+ return [2 /*return*/, this.doNavigation(next, (/**
4611
+ * @param {?} router
4612
+ * @return {?}
4613
+ */
4614
+ function (router) {
4615
+ /** @type {?} */
4616
+ var commands = _this.parseUrl(_this.router.routerState.snapshot).createRedirectCommandsFor(next);
4617
+ // // we have to to use the definition for route id as our redirection always includes
4618
+ // // the id in the url segements (but leaves it blank when there's no id). I.e. in the
4619
+ // // no id case we're doing the following redirect [<placePath>, ""] -> ["..", <id>]
4620
+ // const relativePath = !!previous.placeDefinition.hasRouteId() ? '..' : '.';
4621
+ // const commands = [
4622
+ // relativePath,
4623
+ // ...this.createRouteParameters(next),
4624
+ // ...this.extractChildPath(activatedRoute.snapshot)
4625
+ // ];
4626
+ console.log('### Push Changes to route Redirect', { commands: commands });
4627
+ return router.navigate(commands);
4628
+ }))];
4629
+ }
4630
+ return [2 /*return*/];
4631
+ });
4873
4632
  });
4874
4633
  };
4875
- Object.defineProperty(PlaceOutletComponent.prototype, "parentOutlet", {
4876
- get: /**
4877
- * @return {?}
4878
- */
4879
- function () {
4880
- return this.parentOutletModel.value;
4881
- },
4882
- enumerable: true,
4883
- configurable: true
4884
- });
4885
- // @Trace()
4886
- // @Trace()
4887
4634
  /**
4635
+ * @param {?} visit
4636
+ * @param {?} customNavigation
4888
4637
  * @return {?}
4889
4638
  */
4890
- PlaceOutletComponent.prototype.pushRouteChangesToVisit =
4891
- // @Trace()
4892
- /**
4639
+ PlaceRouter.prototype.doNavigation = /**
4640
+ * @param {?} visit
4641
+ * @param {?} customNavigation
4893
4642
  * @return {?}
4894
4643
  */
4895
- function () {
4896
- var _this = this;
4897
- /** @type {?} */
4898
- var visit = this.routerVisit.value;
4899
- // console.log({
4900
- // visit,
4901
- // place: visit ? visit.placeDefinition.component : null,
4902
- // inOutletActivation: this._inOutletActivation.value,
4903
- // inRoutingSession: this.placeRouter.navigationSessionActive.value
4904
- // });
4905
- if (visit) { // can be null while the place and index sync up
4906
- this._inRouteVisitUpdate.whileTrue((/**
4907
- * @return {?}
4908
- */
4909
- function () {
4910
- _this._activePlaceVisitModel.value = visit;
4911
- }));
4912
- }
4644
+ function (visit, customNavigation) {
4645
+ return __awaiter(this, void 0, void 0, function () {
4646
+ return __generator(this, function (_a) {
4647
+ switch (_a.label) {
4648
+ case 0:
4649
+ this._navigationSessionModel.value = this.navigationSessionFactory.createInternal(visit);
4650
+ _a.label = 1;
4651
+ case 1:
4652
+ _a.trys.push([1, , 3, 4]);
4653
+ return [4 /*yield*/, customNavigation(this.router)];
4654
+ case 2:
4655
+ _a.sent();
4656
+ return [3 /*break*/, 4];
4657
+ case 3:
4658
+ // Router has finished (since there was no router change required) so we
4659
+ // need to end the navigation session.
4660
+ if (this.navigationSession && !this.router.getCurrentNavigation()) {
4661
+ this.onAngularRouterFinished(false);
4662
+ }
4663
+ return [7 /*endfinally*/];
4664
+ case 4: return [2 /*return*/];
4665
+ }
4666
+ });
4667
+ });
4913
4668
  };
4914
4669
  /**
4915
- * @param {?} next
4916
- * @param {?} previous
4670
+ * @private
4671
+ * @param {?} visit
4917
4672
  * @return {?}
4918
4673
  */
4919
- PlaceOutletComponent.prototype.pushVisitChangesToRoute = /**
4920
- * @param {?} next
4921
- * @param {?} previous
4674
+ PlaceRouter.prototype.createRouteParameters = /**
4675
+ * @private
4676
+ * @param {?} visit
4922
4677
  * @return {?}
4923
4678
  */
4924
- function (next, previous) {
4679
+ function (visit) {
4925
4680
  /** @type {?} */
4926
- var activatedRoute = this._activatedRouteModel.value;
4927
- this.placeRouter.pushVisitChangesToRoute(activatedRoute, previous, next);
4681
+ var def = visit.placeDefinition;
4682
+ return visit.hasRouteId() ?
4683
+ [def.getFormattedRouteId(visit), def.getFormattedRouteParameters(visit)] :
4684
+ [def.getFormattedRouteParameters(visit)];
4928
4685
  };
4929
- Object.defineProperty(PlaceOutletComponent.prototype, "activePlaceModel", {
4930
- get: /**
4931
- * @return {?}
4932
- */
4933
- function () {
4934
- return this._activePlace.readonly;
4935
- },
4936
- enumerable: true,
4937
- configurable: true
4938
- });
4939
- Object.defineProperty(PlaceOutletComponent.prototype, "activatedRouteModel", {
4940
- get: /**
4941
- * @return {?}
4942
- */
4943
- function () {
4944
- return this._activatedRouteModel.readonly;
4945
- },
4946
- enumerable: true,
4947
- configurable: true
4948
- });
4949
4686
  // @Trace()
4950
4687
  // @Trace()
4951
4688
  /**
4952
- * @param {?} routerOutlet
4953
- * @param {?} place
4689
+ * @private
4690
+ * @param {?} event
4954
4691
  * @return {?}
4955
4692
  */
4956
- PlaceOutletComponent.prototype.onOutletActivated =
4693
+ PlaceRouter.prototype.onAngularRouterStarted =
4957
4694
  // @Trace()
4958
4695
  /**
4959
- * @param {?} routerOutlet
4960
- * @param {?} place
4696
+ * @private
4697
+ * @param {?} event
4961
4698
  * @return {?}
4962
4699
  */
4963
- function (routerOutlet, place) {
4964
- var _this = this;
4965
- this._inOutletActivation.whileTrue((/**
4966
- * @return {?}
4967
- */
4968
- function () {
4969
- try {
4970
- _this._activePlace.value = place;
4971
- _this._activatedRouteModel.value = routerOutlet.activatedRoute;
4972
- _this._placeDefinition.value = place.placeDefinition;
4973
- /** @type {?} */
4974
- var visitModel = new pectin.MutableValueModel();
4975
- _this._activePlaceVisitModel.setDelegate(visitModel);
4976
- place.initialiseBindings(visitModel);
4977
- }
4978
- catch (error) {
4979
- console.error(error);
4700
+ function (event) {
4701
+ if (!this.navigationSession) { // We been activated by an external route rather than placeRouter.go(visit)
4702
+ console.log('navigation started', { firstTime: this.firstRoute });
4703
+ /** @type {?} */
4704
+ var session = this.navigationSessionFactory.createExternal(this.firstRoute);
4705
+ if (event.navigationTrigger === 'popstate') {
4706
+ session.setPopstateReturnUrl(this.router.routerState.snapshot.url);
4980
4707
  }
4981
- }));
4982
- if (!this.animate) {
4983
- // we're not animating so trigger any post animation callbacks now.
4984
- this.animationDone();
4708
+ this._navigationSessionModel.value = session;
4985
4709
  }
4710
+ this.firstRoute = false;
4986
4711
  };
4987
4712
  // @Trace()
4988
4713
  // @Trace()
4989
4714
  /**
4715
+ * @private
4716
+ * @param {?} cancelled
4990
4717
  * @return {?}
4991
4718
  */
4992
- PlaceOutletComponent.prototype.onOutletDeactivated =
4719
+ PlaceRouter.prototype.onAngularRouterFinished =
4993
4720
  // @Trace()
4994
4721
  /**
4722
+ * @private
4723
+ * @param {?} cancelled
4995
4724
  * @return {?}
4996
4725
  */
4997
- function () {
4726
+ function (cancelled) {
4998
4727
  var _this = this;
4999
- this._inOutletDeactivation.whileTrue((/**
5000
- * @return {?}
5001
- */
5002
- function () {
5003
- _this._activePlace.value = null;
5004
- _this._activatedRouteModel.value = null;
5005
- _this._placeDefinition.value = null;
5006
- _this._activePlaceVisitModel.setDelegate(null);
5007
- }));
4728
+ /** @type {?} */
4729
+ var session = this._navigationSessionModel.value;
4730
+ if (!cancelled) {
4731
+ // Update visits before we end the navigation session. This allows the placeOutets to
4732
+ // ignore visit changes that occur while the navigation is in progress
4733
+ /** @type {?} */
4734
+ var visits = session.getVisits();
4735
+ visits.forEach((/**
4736
+ * @param {?} v
4737
+ * @return {?}
4738
+ */
4739
+ function (v) { return _this.placeHistory.add(v); }));
4740
+ this._activeVisits.value = visits;
4741
+ }
4742
+ else {
4743
+ // Angular doesn't preserve the url when a guard cancels the back button.
4744
+ // See https://github.com/angular/angular/issues/13586#issuecomment-432795720
4745
+ if (session.isPopState) {
4746
+ console.log('cancelled during popstate');
4747
+ this.angularLocation.go(session.popStateReturnUrl);
4748
+ }
4749
+ }
4750
+ this._navigationSessionModel.value = null;
5008
4751
  };
5009
- // @Trace()
5010
- // @Trace()
5011
4752
  /**
4753
+ * @param {?} activatedRoute
5012
4754
  * @return {?}
5013
4755
  */
5014
- PlaceOutletComponent.prototype.animationStarted =
5015
- // @Trace()
5016
- /**
4756
+ PlaceRouter.prototype.extractChildPath = /**
4757
+ * @param {?} activatedRoute
5017
4758
  * @return {?}
5018
4759
  */
5019
- function () {
5020
- // console.log({ activePlace: this._activePlace.value });
4760
+ function (activatedRoute) {
4761
+ return ___default__default.flatten(activatedRoute.children.map((/**
4762
+ * @param {?} child
4763
+ * @return {?}
4764
+ */
4765
+ function (child) { return child.url; })));
5021
4766
  };
5022
- // @Trace()
5023
- // @Trace()
5024
4767
  /**
4768
+ * @param {?} snapshot
5025
4769
  * @return {?}
5026
4770
  */
5027
- PlaceOutletComponent.prototype.animationDone =
5028
- // @Trace()
5029
- /**
4771
+ PlaceRouter.prototype.parseUrl = /**
4772
+ * @param {?} snapshot
5030
4773
  * @return {?}
5031
4774
  */
5032
- function () {
5033
- if (this._activePlace.value) {
5034
- this._activePlace.value.onPlaceReady();
5035
- }
5036
- };
5037
- PlaceOutletComponent.decorators = [
5038
- { type: core.Component, args: [{
5039
- selector: 'aup-place-outlet',
5040
- template: "<div class=\"router-outlet-container\"\n [@routeAnimations]=\"{value: getAnimationOrder(), params:{duration: animationDuration}}\"\n (@routeAnimations.start)=\"animationStarted()\"\n (@routeAnimations.done)=\"animationDone()\"\n>\n <router-outlet #routerOutlet=\"outlet\"\n (activate)=\"onOutletActivated(routerOutlet, $event)\"\n (deactivate)=\"onOutletDeactivated()\">\n </router-outlet>\n</div>\n\n",
5041
- animations: [LEFT_RIGHT_PLACE_ANIMATION],
5042
- styles: [":host{display:flex;flex-direction:column;min-height:0;overflow-x:hidden}.router-outlet-container{flex:1;display:block;position:relative;min-height:0}router-outlet{display:none}"]
5043
- }] }
5044
- ];
5045
- /** @nocollapse */
5046
- PlaceOutletComponent.ctorParameters = function () { return [
5047
- { type: router.Router },
5048
- { type: exports.ɵt },
5049
- { type: undefined, decorators: [{ type: core.Optional }, { type: core.Inject, args: [AUP_PLACE_CONFIG,] }] },
5050
- { type: PlaceOutletComponent, decorators: [{ type: core.SkipSelf }, { type: core.Optional }] }
5051
- ]; };
5052
- PlaceOutletComponent.propDecorators = {
5053
- animate: [{ type: core.Input }],
5054
- customPlaceAnimationOrderModel: [{ type: core.Input, args: ['placeAnimationOrderModel',] }],
5055
- customPlaceAnimationOrder: [{ type: core.Input, args: ['placeAnimationOrder',] }],
5056
- placeChanged: [{ type: core.Output }],
5057
- routerOut: [{ type: core.ViewChild, args: ['routeOutlet', { static: true },] }]
4775
+ function (snapshot) {
4776
+ return new PlaceRouter.UrlHelper(this.urlSerializer.parse(snapshot.url));
5058
4777
  };
5059
- __decorate([
5060
- pectin.UseDelegate(),
5061
- __metadata("design:type", pectin.ListModel)
5062
- ], PlaceOutletComponent.prototype, "customPlaceAnimationOrderModel", void 0);
5063
- __decorate([
5064
- pectin.StoreInListModel('customPlaceAnimationOrderModel'),
5065
- __metadata("design:type", Array)
5066
- ], PlaceOutletComponent.prototype, "customPlaceAnimationOrder", void 0);
5067
- return PlaceOutletComponent;
5068
- }(DisposableComponent));
5069
- if (false) {
5070
- /** @type {?} */
5071
- PlaceOutletComponent.prototype.animate;
5072
- /** @type {?} */
5073
- PlaceOutletComponent.prototype.customPlaceAnimationOrderModel;
5074
- /** @type {?} */
5075
- PlaceOutletComponent.prototype.customPlaceAnimationOrder;
5076
- /** @type {?} */
5077
- PlaceOutletComponent.prototype.placeChanged;
5078
- /** @type {?} */
5079
- PlaceOutletComponent.prototype.routerOut;
5080
- /**
5081
- * @type {?}
5082
- * @private
5083
- */
5084
- PlaceOutletComponent.prototype._activePlace;
4778
+ // TODO: this all only sort of works. Opening dialogs and clicking back multiple times breaks things.
4779
+ // TODO: next stage is to investigate tracking dialog state in a different placeoutlet and keeping those
4780
+ // TODO: urls out of the history.
4781
+ // TODO: this all only sort of works. Opening dialogs and clicking back multiple times breaks things.
4782
+ // TODO: next stage is to investigate tracking dialog state in a different placeoutlet and keeping those
4783
+ // TODO: urls out of the history.
5085
4784
  /**
5086
- * @type {?}
5087
- * @private
4785
+ * @param {?} activatedRoute
4786
+ * @param {?} state
4787
+ * @return {?}
5088
4788
  */
5089
- PlaceOutletComponent.prototype._activePlaceVisitModel;
4789
+ PlaceRouter.prototype.performInitialNavigationIntercept =
4790
+ // TODO: this all only sort of works. Opening dialogs and clicking back multiple times breaks things.
4791
+ // TODO: next stage is to investigate tracking dialog state in a different placeoutlet and keeping those
4792
+ // TODO: urls out of the history.
5090
4793
  /**
5091
- * @type {?}
5092
- * @private
4794
+ * @param {?} activatedRoute
4795
+ * @param {?} state
4796
+ * @return {?}
5093
4797
  */
5094
- PlaceOutletComponent.prototype._inOutletActivation;
4798
+ function (activatedRoute, state) {
4799
+ pectin.assert.isTruthy(this.isInitialNavigation());
4800
+ pectin.Logger.get(this).info("Redirecting to: " + noopPlaceDef.path, { returnUrl: state.url });
4801
+ if (!this.initialRedirectFinished) {
4802
+ this.initialRedirectFinished = true;
4803
+ return this.router.createUrlTree([noopPlaceDef.path, {
4804
+ returnUrl: state.url
4805
+ }], {
4806
+ replaceUrl: true,
4807
+ // make sure we update our history
4808
+ skipLocationChange: false
4809
+ });
4810
+ }
4811
+ };
5095
4812
  /**
5096
- * @type {?}
5097
- * @private
4813
+ * @return {?}
5098
4814
  */
5099
- PlaceOutletComponent.prototype._inOutletDeactivation;
4815
+ PlaceRouter.prototype.isInitialNavigation = /**
4816
+ * @return {?}
4817
+ */
4818
+ function () {
4819
+ return this.navigationSession.firstNavigation && !this.initialRedirectFinished;
4820
+ };
4821
+ PlaceRouter.decorators = [
4822
+ { type: core.Injectable, args: [{
4823
+ providedIn: 'root'
4824
+ },] }
4825
+ ];
4826
+ /** @nocollapse */
4827
+ PlaceRouter.ctorParameters = function () { return [
4828
+ { type: router.Router },
4829
+ { type: router.UrlSerializer },
4830
+ { type: InteractionContext },
4831
+ { type: common.Location },
4832
+ { type: PlaceHistory }
4833
+ ]; };
4834
+ /** @nocollapse */ PlaceRouter.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function PlaceRouter_Factory() { return new PlaceRouter(core.ɵɵinject(router.Router), core.ɵɵinject(router.UrlSerializer), core.ɵɵinject(InteractionContext), core.ɵɵinject(common.Location), core.ɵɵinject(PlaceHistory)); }, token: PlaceRouter, providedIn: "root" });
4835
+ __decorate([
4836
+ pectin.Trace(),
4837
+ __metadata("design:type", Function),
4838
+ __metadata("design:paramtypes", [Visit, Object]),
4839
+ __metadata("design:returntype", Promise)
4840
+ ], PlaceRouter.prototype, "navigate", null);
4841
+ return PlaceRouter;
4842
+ }(pectin.GarbageCollector));
4843
+ if (false) {
5100
4844
  /**
5101
4845
  * @type {?}
5102
4846
  * @private
5103
4847
  */
5104
- PlaceOutletComponent.prototype._inOutletUpdate;
4848
+ exports.ɵt.prototype.firstRoute;
5105
4849
  /**
5106
4850
  * @type {?}
5107
4851
  * @private
5108
4852
  */
5109
- PlaceOutletComponent.prototype._inRouteVisitUpdate;
4853
+ exports.ɵt.prototype._navigationSessionModel;
5110
4854
  /**
5111
4855
  * @type {?}
5112
4856
  * @private
5113
4857
  */
5114
- PlaceOutletComponent.prototype._activatedRouteModel;
4858
+ exports.ɵt.prototype._activeVisits;
4859
+ /** @type {?} */
4860
+ exports.ɵt.prototype.navigationSessionActive;
4861
+ /** @type {?} */
4862
+ exports.ɵt.prototype.activeVisitIndex;
5115
4863
  /**
5116
4864
  * @type {?}
5117
4865
  * @private
5118
4866
  */
5119
- PlaceOutletComponent.prototype._placeDefinition;
4867
+ exports.ɵt.prototype.navigationSessionFactory;
5120
4868
  /**
5121
4869
  * @type {?}
5122
4870
  * @private
5123
4871
  */
5124
- PlaceOutletComponent.prototype.parentOutletModel;
5125
- /** @type {?} */
5126
- PlaceOutletComponent.prototype.placeAnimationOrder;
4872
+ exports.ɵt.prototype.initialRedirectStarted;
5127
4873
  /**
5128
4874
  * @type {?}
5129
4875
  * @private
5130
4876
  */
5131
- PlaceOutletComponent.prototype.initialPlaceIndex;
4877
+ exports.ɵt.prototype.initialRedirectFinished;
5132
4878
  /**
5133
4879
  * @type {?}
5134
4880
  * @private
5135
4881
  */
5136
- PlaceOutletComponent.prototype.routerVisit;
4882
+ exports.ɵt.prototype.router;
5137
4883
  /**
5138
4884
  * @type {?}
5139
4885
  * @private
5140
4886
  */
5141
- PlaceOutletComponent.prototype.router;
4887
+ exports.ɵt.prototype.urlSerializer;
5142
4888
  /**
5143
4889
  * @type {?}
5144
4890
  * @private
5145
4891
  */
5146
- PlaceOutletComponent.prototype.placeRouter;
4892
+ exports.ɵt.prototype.interactionContext;
5147
4893
  /** @type {?} */
5148
- PlaceOutletComponent.prototype.placeConfig;
4894
+ exports.ɵt.prototype.angularLocation;
4895
+ /** @type {?} */
4896
+ exports.ɵt.prototype.placeHistory;
5149
4897
  }
5150
-
5151
- /**
5152
- * @fileoverview added by tsickle
5153
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5154
- */
5155
- var AbstractPlaceNavigationComponent = /** @class */ (function (_super) {
5156
- __extends(AbstractPlaceNavigationComponent, _super);
5157
- function AbstractPlaceNavigationComponent() {
5158
- var _this = _super.call(this) || this;
5159
- var _a = pectin.Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
5160
- _this.placeDefinitions = chain(_this.placesModel).map((/**
5161
- * @param {?} c
4898
+ (function (PlaceRouter) {
4899
+ var UrlHelper = /** @class */ (function () {
4900
+ function UrlHelper(urlTree) {
4901
+ this.urlTree = urlTree;
4902
+ console.log({ segments: this.urlTree.root.children.primary.segments });
4903
+ }
4904
+ /**
5162
4905
  * @return {?}
5163
4906
  */
5164
- function (c) { return exports.PlaceComponent.getDefinition(c); }));
5165
- _this.commandFactory = pectin.Command.createFactory((/**
5166
- * @param {?} placeDefinition
4907
+ UrlHelper.prototype.cloneUrlSegmentList = /**
5167
4908
  * @return {?}
5168
4909
  */
5169
- function (placeDefinition) {
5170
- _this.placeOutlet.navigate(new Visit(placeDefinition));
5171
- }));
5172
- _this.activePlaceDefinition = chain(_this.placeOutletModel).pullValueModel((/**
5173
- * @param {?} o
4910
+ function () {
4911
+ return __spread(this.urlTree.root.children.primary.segments);
4912
+ };
4913
+ /**
4914
+ * @param {?} visit
5174
4915
  * @return {?}
5175
4916
  */
5176
- function (o) { return o.activePlaceModel; })).pluck("placeDefinition");
5177
- return _this;
5178
- }
5179
- /**
5180
- * @param {?} placeDef
5181
- * @return {?}
5182
- */
5183
- AbstractPlaceNavigationComponent.prototype.getNav = /**
5184
- * @param {?} placeDef
5185
- * @return {?}
5186
- */
5187
- function (placeDef) {
5188
- /** @type {?} */
5189
- var navItem = (/** @type {?} */ (placeDef.getPlaceData('nav')));
5190
- return {
5191
- title: (/**
5192
- * @return {?}
5193
- */
5194
- function () { return navItem ? navItem.title() : placeDef.searchPlaceData(['navTitle', 'title']); }),
5195
- tooltip: (/**
5196
- * @return {?}
5197
- */
5198
- function () { return navItem && navItem.tooltip ? navItem.tooltip() : placeDef.getPlaceData('navTooltip', null); }),
5199
- icon: (/**
4917
+ UrlHelper.prototype.updateVisitSegments = /**
4918
+ * @param {?} visit
4919
+ * @return {?}
4920
+ */
4921
+ function (visit) {
4922
+ // Ugly, but it works for now.
4923
+ /** @type {?} */
4924
+ var segments = this.cloneUrlSegmentList();
4925
+ /** @type {?} */
4926
+ var visitSegments = this.convertToUrlSegments(visit);
4927
+ /** @type {?} */
4928
+ var replaceAt = segments.findIndex((/**
4929
+ * @param {?} segment
5200
4930
  * @return {?}
5201
4931
  */
5202
- function () { return navItem && navItem.icon ? navItem.icon() : placeDef.getPlaceData('navIcon', null); })
4932
+ function (segment) { return segment.path === visitSegments[0].path; }));
4933
+ // do not use the return value, it's the items that were removed!
4934
+ segments.splice.apply(segments, __spread([replaceAt, visitSegments.length], visitSegments));
4935
+ return segments;
5203
4936
  };
5204
- };
5205
- /**
5206
- * @param {?} place
5207
- * @return {?}
5208
- */
5209
- AbstractPlaceNavigationComponent.prototype.isActive = /**
5210
- * @param {?} place
5211
- * @return {?}
5212
- */
5213
- function (place) {
5214
- return this.activePlaceDefinition.query().equals(place);
5215
- };
5216
- /**
5217
- * @return {?}
5218
- */
5219
- AbstractPlaceNavigationComponent.prototype.ngOnInit = /**
5220
- * @return {?}
5221
- */
5222
- function () {
5223
- };
5224
- AbstractPlaceNavigationComponent.decorators = [
5225
- { type: core.Component, args: [{
5226
- template: ''
5227
- }] }
5228
- ];
5229
- /** @nocollapse */
5230
- AbstractPlaceNavigationComponent.ctorParameters = function () { return []; };
5231
- AbstractPlaceNavigationComponent.propDecorators = {
5232
- places: [{ type: core.Input }],
5233
- placesModel: [{ type: core.Input }],
5234
- placeOutlet: [{ type: core.Input }],
5235
- placeOutletModel: [{ type: core.Input }]
5236
- };
5237
- __decorate([
5238
- pectin.StoreInListModel('placesModel'),
5239
- __metadata("design:type", Array)
5240
- ], AbstractPlaceNavigationComponent.prototype, "places", void 0);
5241
- __decorate([
5242
- pectin.UseDelegate(),
5243
- __metadata("design:type", pectin.ListModel)
5244
- ], AbstractPlaceNavigationComponent.prototype, "placesModel", void 0);
5245
- __decorate([
5246
- pectin.StoreInValueModel('placeOutletModel'),
5247
- __metadata("design:type", PlaceOutletComponent)
5248
- ], AbstractPlaceNavigationComponent.prototype, "placeOutlet", void 0);
5249
- __decorate([
5250
- pectin.UseDelegate(),
5251
- __metadata("design:type", pectin.ValueModel)
5252
- ], AbstractPlaceNavigationComponent.prototype, "placeOutletModel", void 0);
5253
- __decorate([
5254
- src.Memoize(),
5255
- __metadata("design:type", Function),
5256
- __metadata("design:paramtypes", [exports.PlaceDefinition]),
5257
- __metadata("design:returntype", Object)
5258
- ], AbstractPlaceNavigationComponent.prototype, "getNav", null);
5259
- return AbstractPlaceNavigationComponent;
5260
- }(DisposableComponent));
5261
- if (false) {
5262
- /** @type {?} */
5263
- AbstractPlaceNavigationComponent.prototype.places;
5264
- /** @type {?} */
5265
- AbstractPlaceNavigationComponent.prototype.placesModel;
5266
- /** @type {?} */
5267
- AbstractPlaceNavigationComponent.prototype.placeOutlet;
5268
- /** @type {?} */
5269
- AbstractPlaceNavigationComponent.prototype.placeOutletModel;
5270
- /** @type {?} */
5271
- AbstractPlaceNavigationComponent.prototype.placeDefinitions;
5272
- /** @type {?} */
5273
- AbstractPlaceNavigationComponent.prototype.commandFactory;
5274
- /** @type {?} */
5275
- AbstractPlaceNavigationComponent.prototype.activePlaceDefinition;
5276
- }
4937
+ /**
4938
+ * Converts the visit into segments. Please not that these segments are not e
4939
+ * @param visit
4940
+ */
4941
+ /**
4942
+ * Converts the visit into segments. Please not that these segments are not e
4943
+ * @param {?} visit
4944
+ * @return {?}
4945
+ */
4946
+ UrlHelper.prototype.convertToUrlSegments = /**
4947
+ * Converts the visit into segments. Please not that these segments are not e
4948
+ * @param {?} visit
4949
+ * @return {?}
4950
+ */
4951
+ function (visit) {
4952
+ return visit.placeDefinition.hasRouteId() ?
4953
+ [
4954
+ // NOTE:
4955
+ // It's important to attach the params to the root path and not the id. If we attach them
4956
+ // to an empty id then the angular router won't match the pattern.
4957
+ new router.UrlSegment(visit.placeDefinition.path, visit.placeDefinition.getFormattedRouteParameters(visit)),
4958
+ new router.UrlSegment(visit.placeDefinition.getFormattedRouteId(visit), {})
4959
+ ]
4960
+ :
4961
+ [
4962
+ new router.UrlSegment(visit.placeDefinition.path, visit.placeDefinition.getFormattedRouteParameters(visit))
4963
+ ];
4964
+ };
4965
+ /**
4966
+ * @param {?} visit
4967
+ * @return {?}
4968
+ */
4969
+ UrlHelper.prototype.createRedirectCommandsFor = /**
4970
+ * @param {?} visit
4971
+ * @return {?}
4972
+ */
4973
+ function (visit) {
4974
+ /** @type {?} */
4975
+ var segments = this.updateVisitSegments(visit);
4976
+ /** @type {?} */
4977
+ var commands = [];
4978
+ segments.forEach((/**
4979
+ * @param {?} s
4980
+ * @return {?}
4981
+ */
4982
+ function (s) {
4983
+ commands.push(s.path);
4984
+ if (s.parameterMap.keys.length > 0) {
4985
+ commands.push(s.parameters);
4986
+ }
4987
+ }));
4988
+ return commands;
4989
+ };
4990
+ /**
4991
+ * @param {?} placeDef
4992
+ * @return {?}
4993
+ */
4994
+ UrlHelper.prototype.includesPathOf = /**
4995
+ * @param {?} placeDef
4996
+ * @return {?}
4997
+ */
4998
+ function (placeDef) {
4999
+ return this.cloneUrlSegmentList().find((/**
5000
+ * @param {?} s
5001
+ * @return {?}
5002
+ */
5003
+ function (s) { return s.path === placeDef.path; }));
5004
+ };
5005
+ __decorate([
5006
+ pectin.Trace(),
5007
+ __metadata("design:type", Function),
5008
+ __metadata("design:paramtypes", [Visit]),
5009
+ __metadata("design:returntype", Array)
5010
+ ], UrlHelper.prototype, "createRedirectCommandsFor", null);
5011
+ return UrlHelper;
5012
+ }());
5013
+ PlaceRouter.UrlHelper = UrlHelper;
5014
+ if (false) {
5015
+ /**
5016
+ * @type {?}
5017
+ * @private
5018
+ */
5019
+ UrlHelper.prototype.urlTree;
5020
+ }
5021
+ })(exports.ɵt || (exports.ɵt = {}));
5277
5022
 
5278
5023
  /**
5279
5024
  * @fileoverview added by tsickle
5280
5025
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5281
5026
  */
5282
- var BusyOverlayComponent = /** @class */ (function () {
5283
- function BusyOverlayComponent() {
5284
- }
5285
- /**
5286
- * @return {?}
5287
- */
5288
- BusyOverlayComponent.prototype.ngOnInit = /**
5289
- * @return {?}
5290
- */
5291
- function () {
5292
- };
5293
- BusyOverlayComponent.decorators = [
5294
- { type: core.Component, args: [{
5295
- selector: 'aup-busy-overlay',
5296
- template: "<ng-content></ng-content>\n<div class=\"busy-overlay-backdrop\" *ngIf=\"busyModel.value\">\n <mat-progress-spinner mode=\"indeterminate\" [diameter]=\"52\"></mat-progress-spinner>\n</div>\n",
5297
- styles: [":host{position:relative}div.busy-overlay-backdrop{position:absolute;background-color:rgba(0,0,0,.2);top:0;left:0;bottom:0;right:0;display:-ms-grid;display:grid;-ms-grid-columns:auto;grid-template-columns:auto;-ms-grid-rows:auto;grid-template-rows:auto;place-content:center}"]
5298
- }] }
5299
- ];
5300
- /** @nocollapse */
5301
- BusyOverlayComponent.ctorParameters = function () { return []; };
5302
- BusyOverlayComponent.propDecorators = {
5303
- busyModel: [{ type: core.Input }],
5304
- busy: [{ type: core.Input }]
5305
- };
5306
- __decorate([
5307
- pectin.UseDelegate(),
5308
- __metadata("design:type", pectin.ValueModel)
5309
- ], BusyOverlayComponent.prototype, "busyModel", void 0);
5310
- __decorate([
5311
- pectin.StoreInValueModel('busyModel'),
5312
- __metadata("design:type", Boolean)
5313
- ], BusyOverlayComponent.prototype, "busy", void 0);
5314
- return BusyOverlayComponent;
5315
- }());
5316
- if (false) {
5317
- /** @type {?} */
5318
- BusyOverlayComponent.prototype.busyModel;
5319
- /** @type {?} */
5320
- BusyOverlayComponent.prototype.busy;
5027
+ // Freezes the state of the components at the start of the animation.
5028
+ /** @type {?} */
5029
+ var animationStartStyle = animations$1.style({ position: 'absolute', top: '0', left: '0', bottom: '0', right: '0' });
5030
+ /** @type {?} */
5031
+ var left = [
5032
+ animations$1.query(':enter, :leave', animationStartStyle, { optional: true }),
5033
+ animations$1.group([
5034
+ animations$1.query(':enter', [
5035
+ animations$1.style({ transform: 'translateX(-100%)' }),
5036
+ animations$1.animate('{{duration}} ease-out', animations$1.style({ transform: 'translateX(0%)' }))
5037
+ ], {
5038
+ optional: true
5039
+ }),
5040
+ animations$1.query(':leave', [
5041
+ animations$1.style({ transform: 'translateX(0%)' }),
5042
+ animations$1.animate('{{duration}} ease-out', animations$1.style({ transform: 'translateX(100%)' }))
5043
+ ], {
5044
+ optional: true
5045
+ })
5046
+ ])
5047
+ ];
5048
+ /** @type {?} */
5049
+ var right = [
5050
+ animations$1.query(':enter, :leave', animationStartStyle, { optional: true }),
5051
+ animations$1.group([
5052
+ animations$1.query(':enter', [
5053
+ animations$1.style({ transform: 'translateX(100%)', minHeight: '1px' }),
5054
+ animations$1.animate('{{duration}} ease-out', animations$1.style({ transform: 'translateX(0%)' }))
5055
+ ], {
5056
+ optional: true
5057
+ }),
5058
+ animations$1.query(':leave', [animations$1.style({ transform: 'translateX(0%)' }), animations$1.animate('{{duration}} ease-out', animations$1.style({
5059
+ transform: 'translateX(-100%)',
5060
+ minHeight: '1px'
5061
+ }))], {
5062
+ optional: true
5063
+ })
5064
+ ])
5065
+ ];
5066
+ /**
5067
+ * @param {?} duration
5068
+ * @return {?}
5069
+ */
5070
+ function leftRightPlaceAnimation(duration) {
5071
+ return animations$1.trigger('routeAnimations', [
5072
+ animations$1.transition(':increment', right, { params: { duration: duration } }),
5073
+ animations$1.transition(':decrement', left, { params: { duration: duration } })
5074
+ ]);
5321
5075
  }
5076
+ /** @type {?} */
5077
+ var LEFT_RIGHT_PLACE_ANIMATION = leftRightPlaceAnimation('0.3s');
5322
5078
 
5323
5079
  /**
5324
5080
  * @fileoverview added by tsickle
5325
5081
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5326
5082
  */
5327
- var EmptyStateComponent = /** @class */ (function () {
5328
- function EmptyStateComponent() {
5329
- }
5083
+ /**
5084
+ * @record
5085
+ */
5086
+ function PlaceRef() { }
5087
+ if (false) {
5088
+ /** @type {?} */
5089
+ PlaceRef.prototype.placeDefinition;
5330
5090
  /**
5091
+ * @param {?} param
5331
5092
  * @return {?}
5332
5093
  */
5333
- EmptyStateComponent.prototype.ngOnInit = /**
5094
+ PlaceRef.prototype.initialiseBindings = function (param) { };
5095
+ /**
5334
5096
  * @return {?}
5335
5097
  */
5336
- function () {
5337
- };
5338
- EmptyStateComponent.decorators = [
5339
- { type: core.Component, args: [{
5340
- selector: 'aup-empty-state',
5341
- template: "\n <div class=\"container\">\n <ng-content></ng-content>\n </div>\n ",
5342
- styles: [":host{display:flex;flex-direction:column;justify-content:center;align-items:center}.container{padding:var(--aup-default-padding);border:2px dashed rgba(0,0,0,.2);border-radius:5px;font-size:14px;font-weight:300}"]
5343
- }] }
5344
- ];
5345
- /** @nocollapse */
5346
- EmptyStateComponent.ctorParameters = function () { return []; };
5347
- return EmptyStateComponent;
5348
- }());
5349
-
5350
- /**
5351
- * @fileoverview added by tsickle
5352
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5353
- */
5354
- var ListPlaceNavComponent = /** @class */ (function (_super) {
5355
- __extends(ListPlaceNavComponent, _super);
5356
- function ListPlaceNavComponent() {
5098
+ PlaceRef.prototype.onPlaceReady = function () { };
5099
+ }
5100
+ var PlaceOutletComponent = /** @class */ (function (_super) {
5101
+ __extends(PlaceOutletComponent, _super);
5102
+ function PlaceOutletComponent(router, placeRouter, placeConfig, parentOutlet) {
5357
5103
  var _this = _super.call(this) || this;
5358
- _this.expanded = true;
5104
+ _this.router = router;
5105
+ _this.placeRouter = placeRouter;
5106
+ _this.placeConfig = placeConfig;
5107
+ _this.placeChanged = new core.EventEmitter();
5108
+ _this._activePlace = new pectin.MutableValueModel();
5109
+ _this._previousPlace = new pectin.MutableValueModel();
5110
+ _this._activePlaceVisitModel = new pectin.DelegatingValueModel();
5111
+ _this._inOutletActivation = new pectin.Guard();
5112
+ _this._inOutletDeactivation = new pectin.Guard();
5113
+ _this._inRouteVisitUpdate = new pectin.Guard();
5114
+ _this._activatedRouteModel = new pectin.MutableValueModel();
5115
+ _this._placeDefinition = new pectin.MutableValueModel();
5116
+ _this.initialPlaceIndex = null;
5117
+ var _a = pectin.Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
5118
+ _this.parentOutletModel = new pectin.MutableValueModel(parentOutlet);
5119
+ _this._activePlaceVisitModel.setDelegate(new pectin.MutableValueModel());
5120
+ _this._inOutletUpdate = valueOf.any(_this._inOutletDeactivation, _this._inOutletActivation).areTruthy();
5121
+ /** @type {?} */
5122
+ var defaultPlaceAnimationOrder = chain(_this.parentOutletModel)
5123
+ .pullValueModel((/**
5124
+ * @param {?} o
5125
+ * @return {?}
5126
+ */
5127
+ function (o) { return o.activePlaceModel; }))
5128
+ .pluck('placeDefinition')
5129
+ .pluckList('children')
5130
+ .pluck('component');
5131
+ // TODO: This is a hack to prevent animation during the NoopGatewayPlace
5132
+ /** @type {?} */
5133
+ var activePlaceType = chain(_this._activePlace).map((/**
5134
+ * @param {?} p
5135
+ * @return {?}
5136
+ */
5137
+ function (p) {
5138
+ return (/** @type {?} */ (p.constructor));
5139
+ }), {
5140
+ postponeWhile: chain(_this.activePlaceModel).isNil()
5141
+ });
5142
+ /** @type {?} */
5143
+ var previousPlaceType = chain(_this._previousPlace).map((/**
5144
+ * @param {?} p
5145
+ * @return {?}
5146
+ */
5147
+ function (p) { return (/** @type {?} */ (p.constructor)); }));
5148
+ _this.ready = chain.reduce(activePlaceType, previousPlaceType, (/**
5149
+ * @param {?} current
5150
+ * @param {?} previous
5151
+ * @return {?}
5152
+ */
5153
+ function (current, previous) {
5154
+ return !!current && current !== NoopGatewayPlace && previous !== NoopGatewayPlace;
5155
+ }));
5156
+ _this.enableAnimation = valueOf.all(_this.ready, _this.animateModel).areTruthy();
5157
+ _this.placeAnimationOrder = chain(_this.customPlaceAnimationOrderModel)
5158
+ .otherwise(defaultPlaceAnimationOrder)
5159
+ .reduce((/**
5160
+ * @param {?} placesInOrder
5161
+ * @return {?}
5162
+ */
5163
+ function (placesInOrder) {
5164
+ /** @type {?} */
5165
+ var placeIndex = 0;
5166
+ if (activePlaceType.value) {
5167
+ placeIndex = placesInOrder.indexOf(activePlaceType.value);
5168
+ if (___default.isNil(_this.initialPlaceIndex && placeIndex >= 0)) {
5169
+ _this.initialPlaceIndex = placeIndex;
5170
+ }
5171
+ }
5172
+ return ___default.isNil(_this.initialPlaceIndex) ? 0 : placeIndex - _this.initialPlaceIndex;
5173
+ }), { dependsOn: activePlaceType });
5174
+ // Push incoming changes into the component
5175
+ _this.routerVisit = chain(_this._activePlace).pluck('placeDefinition').findIn(placeRouter.activeVisitIndex);
5176
+ // Our router visit will change when our active is nullified during deactivation, which will push a null visit
5177
+ // the the deactivated component, which will nuke it's view before the animations have finished.
5178
+ // The visit will alway updated after the router session is finsised (when the new visits are registered) so
5179
+ // we can safely ignore it during outlet changes as these always happen before the router session ends.
5180
+ when.valueOf(_this.routerVisit).changes((/**
5181
+ * @return {?}
5182
+ */
5183
+ function () { return _this.pushRouteChangesToVisit(); }), { unless: _this._inOutletUpdate });
5184
+ // Handle component based changes
5185
+ when.valueOf(_this._activePlaceVisitModel).changes((/**
5186
+ * @param {?} next
5187
+ * @param {?} previous
5188
+ * @return {?}
5189
+ */
5190
+ function (next, previous) {
5191
+ _this.pushVisitChangesToRoute(next, previous);
5192
+ }), {
5193
+ unless: _this.placeRouter.navigationSessionActive
5194
+ });
5195
+ chain(_this._activePlace)
5196
+ .postponeWhile(placeRouter.navigationSessionActive)
5197
+ .subscribe((/**
5198
+ * @param {?} place
5199
+ * @return {?}
5200
+ */
5201
+ function (place) { return _this.placeChanged.emit(place); }));
5359
5202
  return _this;
5203
+ // const txo = new TransactionObserver().onEvent(e => console.log(e.toString()));
5204
+ // txo.observe('inRouteVisitUpdate', inRouteVisitUpdate);
5360
5205
  }
5361
5206
  /**
5362
5207
  * @return {?}
5363
5208
  */
5364
- ListPlaceNavComponent.prototype.expandMenu = /**
5209
+ PlaceOutletComponent.prototype.ngOnInit = /**
5365
5210
  * @return {?}
5366
5211
  */
5367
5212
  function () {
5368
- this.expanded = true;
5369
5213
  };
5214
+ // @Trace()
5215
+ // @Trace()
5370
5216
  /**
5371
5217
  * @return {?}
5372
5218
  */
5373
- ListPlaceNavComponent.prototype.collapseMenu = /**
5219
+ PlaceOutletComponent.prototype.getAnimationOrder =
5220
+ // @Trace()
5221
+ /**
5374
5222
  * @return {?}
5375
5223
  */
5376
5224
  function () {
5377
- this.expanded = false;
5225
+ return this.placeAnimationOrder.value;
5378
5226
  };
5227
+ Object.defineProperty(PlaceOutletComponent.prototype, "animationDuration", {
5228
+ get: /**
5229
+ * @return {?}
5230
+ */
5231
+ function () {
5232
+ return this.placeConfig && this.placeConfig.animationDuration ? this.placeConfig.animationDuration : '500ms';
5233
+ },
5234
+ enumerable: true,
5235
+ configurable: true
5236
+ });
5237
+ // @Trace()
5238
+ // @Trace()
5379
5239
  /**
5240
+ * @param {?} visit
5380
5241
  * @return {?}
5381
5242
  */
5382
- ListPlaceNavComponent.prototype.toggleMenu = /**
5243
+ PlaceOutletComponent.prototype.navigate =
5244
+ // @Trace()
5245
+ /**
5246
+ * @param {?} visit
5383
5247
  * @return {?}
5384
5248
  */
5385
- function () {
5386
- this.expanded = !this.expanded;
5387
- };
5388
- ListPlaceNavComponent.decorators = [
5389
- { type: core.Component, args: [{
5390
- selector: 'aup-list-place-nav',
5391
- template: "<mat-nav-list class=\"app-menu\">\n <a mat-list-item *ngFor=\"let placeDefinition of placeDefinitions.value\"\n [pectinCommand]=\"commandFactory.create(placeDefinition)\"\n [class.active]=\"isActive(placeDefinition)\"\n [matTooltip]=\"getNav(placeDefinition).tooltip()\">\n <mat-icon *ngIf=\"getNav(placeDefinition).icon()\">{{getNav(placeDefinition).icon()}}</mat-icon>\n <span class=\"expanded-only\">{{getNav(placeDefinition).title()}}</span>\n </a>\n</mat-nav-list>\n",
5392
- styles: [":host{display:flex;flex-direction:column;--expanded-width:235px;--nav-item-width:var(--nav-bar-height);width:var(--nav-item-width);transition:width 125ms linear}:host.expanded{width:var(--expanded-width);max-width:var(--expanded-width)}.expanded-only{max-width:0;overflow:hidden}.collapsed-only{max-width:100%;overflow:hidden}.header{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;height:var(--nav-bar-height);border-bottom:var(--pinstripe-border);cursor:pointer}.header .menu{flex:1}.header button{color:inherit;width:var(--nav-item-width);height:var(--nav-bar-height)}mat-nav-list{flex:1;display:flex;flex-direction:column}.mat-list-item{width:var(--nav-item-width);height:var(--nav-bar-height);color:rgba(0,0,0,.6)}.mat-list-item.active{background-color:rgba(0,0,0,.1);color:rgba(0,0,0,.9)}mat-icon{color:inherit}mat-icon.flip-horizontal{transform:scaleX(-1)}:host-context(.expanded) .expanded-only{max-width:100%}:host-context(.expanded) .collapsed-only{max-width:0}:host-context(.expanded) .mat-list-item mat-icon{margin-right:12px}:host-context(.expanded) .mat-list-item span{text-wrap:none;white-space:nowrap}a[ng-reflect-router-link=manage-instruments] mat-icon{transform:rotate(90deg)}.app-menu{padding-top:0}"]
5393
- }] }
5394
- ];
5395
- /** @nocollapse */
5396
- ListPlaceNavComponent.ctorParameters = function () { return []; };
5397
- ListPlaceNavComponent.propDecorators = {
5398
- expanded: [{ type: core.HostBinding, args: ['class.expanded',] }]
5249
+ function (visit) {
5250
+ // console.log({ activatedRoute: this._activatedRouteModel.value });
5251
+ this.placeRouter.navigate(visit, {
5252
+ relativeTo: this.parentOutlet ? this.parentOutlet.activatedRouteModel.value : null
5253
+ });
5254
+ };
5255
+ Object.defineProperty(PlaceOutletComponent.prototype, "parentOutlet", {
5256
+ get: /**
5257
+ * @return {?}
5258
+ */
5259
+ function () {
5260
+ return this.parentOutletModel.value;
5261
+ },
5262
+ enumerable: true,
5263
+ configurable: true
5264
+ });
5265
+ // @Trace()
5266
+ // @Trace()
5267
+ /**
5268
+ * @return {?}
5269
+ */
5270
+ PlaceOutletComponent.prototype.pushRouteChangesToVisit =
5271
+ // @Trace()
5272
+ /**
5273
+ * @return {?}
5274
+ */
5275
+ function () {
5276
+ var _this = this;
5277
+ /** @type {?} */
5278
+ var visit = this.routerVisit.value;
5279
+ // console.log({
5280
+ // visit,
5281
+ // place: visit ? visit.placeDefinition.component : null,
5282
+ // inOutletActivation: this._inOutletActivation.value,
5283
+ // inRoutingSession: this.placeRouter.navigationSessionActive.value
5284
+ // });
5285
+ if (visit) { // can be null while the place and index sync up
5286
+ this._inRouteVisitUpdate.whileTrue((/**
5287
+ * @return {?}
5288
+ */
5289
+ function () {
5290
+ _this._activePlaceVisitModel.value = visit;
5291
+ }));
5292
+ }
5399
5293
  };
5400
- return ListPlaceNavComponent;
5401
- }(AbstractPlaceNavigationComponent));
5402
- if (false) {
5403
- /** @type {?} */
5404
- ListPlaceNavComponent.prototype.expanded;
5405
- }
5406
-
5407
- /**
5408
- * @fileoverview added by tsickle
5409
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5410
- */
5411
- var TabbedPlaceNavigationComponent = /** @class */ (function (_super) {
5412
- __extends(TabbedPlaceNavigationComponent, _super);
5413
- function TabbedPlaceNavigationComponent() {
5414
- return _super.call(this) || this;
5415
- }
5416
- TabbedPlaceNavigationComponent.decorators = [
5417
- { type: core.Component, args: [{
5418
- selector: 'aup-tabbed-place-navigation',
5419
- template: "<nav mat-tab-nav-bar>\n <a mat-tab-link *ngFor=\"let placeDefinition of placeDefinitions.value\"\n [pectinCommand]=\"commandFactory.create(placeDefinition)\"\n [active]=\"isActive(placeDefinition)\"\n [matTooltip]=\"getNav(placeDefinition).tooltip()\">\n <mat-icon *ngIf=\"getNav(placeDefinition).icon()\">{{getNav(placeDefinition).icon()}}</mat-icon>\n <span>{{getNav(placeDefinition).title()}}</span>\n </a>\n</nav>\n",
5420
- styles: [""]
5421
- }] }
5422
- ];
5423
- /** @nocollapse */
5424
- TabbedPlaceNavigationComponent.ctorParameters = function () { return []; };
5425
- return TabbedPlaceNavigationComponent;
5426
- }(AbstractPlaceNavigationComponent));
5427
-
5428
- /**
5429
- * @fileoverview added by tsickle
5430
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5431
- */
5432
- var PlaceModule = /** @class */ (function () {
5433
- function PlaceModule() {
5434
- }
5435
- PlaceModule.decorators = [
5436
- { type: core.NgModule, args: [{
5437
- imports: [
5438
- common.CommonModule,
5439
- animations.BrowserAnimationsModule,
5440
- material.MatProgressSpinnerModule,
5441
- router.RouterModule,
5442
- tabs.MatTabsModule,
5443
- list.MatListModule,
5444
- tooltip.MatTooltipModule,
5445
- icon.MatIconModule,
5446
- DirectivesModule
5447
- ],
5448
- declarations: [
5449
- EmptyStateComponent,
5450
- BusyOverlayComponent,
5451
- PlaceOutletComponent,
5452
- TabbedPlaceNavigationComponent,
5453
- ListPlaceNavComponent,
5454
- AbstractPlaceNavigationComponent
5455
- ],
5456
- entryComponents: [BusyOverlayComponent],
5457
- exports: [
5458
- BusyOverlayComponent,
5459
- PlaceOutletComponent,
5460
- EmptyStateComponent,
5461
- TabbedPlaceNavigationComponent,
5462
- ListPlaceNavComponent,
5463
- AbstractPlaceNavigationComponent
5464
- ],
5465
- providers: [
5466
- // {provide: AUP_PLACE_CONFIG, useValue: {animationDuration: "2000ms"}}
5467
- ]
5468
- },] }
5469
- ];
5470
- return PlaceModule;
5471
- }());
5472
-
5473
- /**
5474
- * @fileoverview added by tsickle
5475
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5476
- */
5477
- var AngularUiPowerupsModule = /** @class */ (function () {
5478
- function AngularUiPowerupsModule() {
5479
- }
5480
- AngularUiPowerupsModule.decorators = [
5481
- { type: core.NgModule, args: [{
5482
- declarations: [],
5483
- imports: [
5484
- common.CommonModule,
5485
- animations.BrowserAnimationsModule,
5486
- forms.FormsModule,
5487
- material.MatInputModule,
5488
- material.MatFormFieldModule,
5489
- material.MatSelectModule,
5490
- tabs.MatTabsModule,
5491
- DirectivesModule,
5492
- ComponentsModule,
5493
- PlaceModule,
5494
- InteractionModule
5495
- ],
5496
- exports: [
5497
- InteractionModule,
5498
- PlaceModule,
5499
- DirectivesModule,
5500
- ComponentsModule,
5501
- NoopComponent
5502
- ]
5503
- },] }
5504
- ];
5505
- return AngularUiPowerupsModule;
5506
- }());
5507
-
5508
- /**
5509
- * @fileoverview added by tsickle
5510
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5511
- */
5512
- /** @type {?} */
5513
- var defaultHiddenStyleDef = animations$1.style({
5514
- opacity: 0,
5515
- 'height': '0',
5516
- paddingTop: '0',
5517
- paddingBottom: '0'
5518
- });
5519
- /**
5520
- * @param {?} triggerName
5521
- * @param {?=} options
5522
- * @return {?}
5523
- */
5524
- function slideDownAndUpAnimation(triggerName, options) {
5525
- // SEE to fix this: https://github.com/angular/angular/issues/15587#issuecomment-351510501
5526
- /** @type {?} */
5527
- var duration = pectin.OptionsHelper.get(options).getOptional('duration', '100ms');
5528
- /** @type {?} */
5529
- var hiddenStyleDef = pectin.OptionsHelper.get(options).getOptional('hiddenStyleDef', defaultHiddenStyleDef);
5530
- return animations$1.trigger(triggerName, [
5531
- animations$1.transition(':enter', [hiddenStyleDef, animations$1.animate('100ms')]),
5532
- animations$1.transition(':leave', [animations$1.animate('100ms', hiddenStyleDef)])
5533
- ]);
5534
- }
5535
-
5536
- /**
5537
- * @fileoverview added by tsickle
5538
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5539
- */
5540
-
5541
- /**
5542
- * @fileoverview added by tsickle
5543
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5544
- */
5545
- var Dimension = /** @class */ (function () {
5546
- function Dimension(width, height) {
5547
- this.width = width;
5548
- this.height = height;
5549
- }
5550
- return Dimension;
5551
- }());
5552
- if (false) {
5553
- /** @type {?} */
5554
- Dimension.prototype.width;
5555
- /** @type {?} */
5556
- Dimension.prototype.height;
5557
- }
5558
-
5559
- /**
5560
- * @fileoverview added by tsickle
5561
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5562
- */
5563
- var Point = /** @class */ (function () {
5564
- function Point(x, y) {
5565
- this.x = x;
5566
- this.y = y;
5567
- }
5568
5294
  /**
5569
- * @param {?} data
5295
+ * @param {?} next
5296
+ * @param {?} previous
5570
5297
  * @return {?}
5571
5298
  */
5572
- Point.from = /**
5573
- * @param {?} data
5299
+ PlaceOutletComponent.prototype.pushVisitChangesToRoute = /**
5300
+ * @param {?} next
5301
+ * @param {?} previous
5574
5302
  * @return {?}
5575
5303
  */
5576
- function (data) {
5577
- return new Point(data.x, data.y);
5304
+ function (next, previous) {
5305
+ /** @type {?} */
5306
+ var activatedRoute = this._activatedRouteModel.value;
5307
+ this.placeRouter.pushVisitChangesToRoute(activatedRoute, previous, next);
5578
5308
  };
5309
+ Object.defineProperty(PlaceOutletComponent.prototype, "activePlaceModel", {
5310
+ get: /**
5311
+ * @return {?}
5312
+ */
5313
+ function () {
5314
+ return this._activePlace.readonly;
5315
+ },
5316
+ enumerable: true,
5317
+ configurable: true
5318
+ });
5319
+ Object.defineProperty(PlaceOutletComponent.prototype, "activatedRouteModel", {
5320
+ get: /**
5321
+ * @return {?}
5322
+ */
5323
+ function () {
5324
+ return this._activatedRouteModel.readonly;
5325
+ },
5326
+ enumerable: true,
5327
+ configurable: true
5328
+ });
5329
+ // @Trace()
5330
+ // @Trace()
5579
5331
  /**
5580
- * @param {?} x
5581
- * @param {?} y
5332
+ * @param {?} routerOutlet
5333
+ * @param {?} place
5582
5334
  * @return {?}
5583
5335
  */
5584
- Point.prototype.translate = /**
5585
- * @param {?} x
5586
- * @param {?} y
5336
+ PlaceOutletComponent.prototype.onOutletActivated =
5337
+ // @Trace()
5338
+ /**
5339
+ * @param {?} routerOutlet
5340
+ * @param {?} place
5587
5341
  * @return {?}
5588
5342
  */
5589
- function (x, y) {
5590
- return new Point(this.x + x, this.y + y);
5343
+ function (routerOutlet, place) {
5344
+ var _this = this;
5345
+ this._inOutletActivation.whileTrue((/**
5346
+ * @return {?}
5347
+ */
5348
+ function () {
5349
+ try {
5350
+ _this._activePlace.value = place;
5351
+ _this._activatedRouteModel.value = routerOutlet.activatedRoute;
5352
+ _this._placeDefinition.value = place.placeDefinition;
5353
+ /** @type {?} */
5354
+ var visitModel = new pectin.MutableValueModel();
5355
+ _this._activePlaceVisitModel.setDelegate(visitModel);
5356
+ place.initialiseBindings(visitModel);
5357
+ }
5358
+ catch (error) {
5359
+ console.error(error);
5360
+ }
5361
+ }));
5362
+ if (!this.enableAnimation.value) {
5363
+ // we're not animating so trigger any post animation callbacks now.
5364
+ this.animationDone();
5365
+ }
5591
5366
  };
5592
- return Point;
5593
- }());
5594
- if (false) {
5595
- /** @type {?} */
5596
- Point.prototype.x;
5597
- /** @type {?} */
5598
- Point.prototype.y;
5599
- }
5600
-
5601
- /**
5602
- * @fileoverview added by tsickle
5603
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5604
- */
5605
- exports.Bounds = /** @class */ (function (_super) {
5606
- __extends(Bounds, _super);
5607
- function Bounds(top, left, width, height) {
5608
- var _this = _super.call(this, width, height) || this;
5609
- _this.top = top;
5610
- _this.left = left;
5611
- _this.width = width;
5612
- _this.height = height;
5613
- return _this;
5614
- }
5367
+ // @Trace()
5368
+ // @Trace()
5615
5369
  /**
5616
- * @param {?} point
5617
5370
  * @return {?}
5618
5371
  */
5619
- Bounds.prototype.relativePositionOf = /**
5620
- * @param {?} point
5372
+ PlaceOutletComponent.prototype.onOutletDeactivated =
5373
+ // @Trace()
5374
+ /**
5621
5375
  * @return {?}
5622
5376
  */
5623
- function (point) {
5624
- if (point instanceof MouseEvent) {
5625
- return new Point(point.clientX - this.left, point.clientY - this.top);
5626
- }
5627
- else {
5628
- return new Point(point.x - this.left, point.y - this.top);
5377
+ function () {
5378
+ var _this = this;
5379
+ this._inOutletDeactivation.whileTrue((/**
5380
+ * @return {?}
5381
+ */
5382
+ function () {
5383
+ _this._previousPlace.value = _this._activePlace.value;
5384
+ _this._activePlace.value = null;
5385
+ _this._activatedRouteModel.value = null;
5386
+ _this._placeDefinition.value = null;
5387
+ _this._activePlaceVisitModel.setDelegate(null);
5388
+ }));
5389
+ };
5390
+ // @Trace()
5391
+ // @Trace()
5392
+ /**
5393
+ * @return {?}
5394
+ */
5395
+ PlaceOutletComponent.prototype.animationStarted =
5396
+ // @Trace()
5397
+ /**
5398
+ * @return {?}
5399
+ */
5400
+ function () {
5401
+ // console.log({ activePlace: this._activePlace.value });
5402
+ };
5403
+ // @Trace()
5404
+ // @Trace()
5405
+ /**
5406
+ * @return {?}
5407
+ */
5408
+ PlaceOutletComponent.prototype.animationDone =
5409
+ // @Trace()
5410
+ /**
5411
+ * @return {?}
5412
+ */
5413
+ function () {
5414
+ if (this._activePlace.value) {
5415
+ this._activePlace.value.onPlaceReady();
5629
5416
  }
5630
5417
  };
5631
- return Bounds;
5632
- }(Dimension));
5418
+ PlaceOutletComponent.decorators = [
5419
+ { type: core.Component, args: [{
5420
+ selector: 'aup-place-outlet',
5421
+ template: "<div class=\"router-outlet-container\"\n [@routeAnimations]=\"{value: getAnimationOrder(), params:{duration: animationDuration}}\"\n [@.disabled]=\"!enableAnimation.value\"\n (@routeAnimations.start)=\"animationStarted()\"\n (@routeAnimations.done)=\"animationDone()\"\n>\n <router-outlet #routerOutlet=\"outlet\"\n (activate)=\"onOutletActivated(routerOutlet, $event)\"\n (deactivate)=\"onOutletDeactivated()\">\n </router-outlet>\n</div>\n\n",
5422
+ animations: [LEFT_RIGHT_PLACE_ANIMATION],
5423
+ styles: [":host{display:flex;flex-direction:column;min-height:0;overflow-x:hidden}.router-outlet-container{flex:1;display:block;position:relative;min-height:0}router-outlet{display:none}"]
5424
+ }] }
5425
+ ];
5426
+ /** @nocollapse */
5427
+ PlaceOutletComponent.ctorParameters = function () { return [
5428
+ { type: router.Router },
5429
+ { type: exports.ɵt },
5430
+ { type: undefined, decorators: [{ type: core.Optional }, { type: core.Inject, args: [AUP_PLACE_CONFIG,] }] },
5431
+ { type: PlaceOutletComponent, decorators: [{ type: core.SkipSelf }, { type: core.Optional }] }
5432
+ ]; };
5433
+ PlaceOutletComponent.propDecorators = {
5434
+ animate: [{ type: core.Input }],
5435
+ animateModel: [{ type: core.Input, args: ['animateModel',] }],
5436
+ customPlaceAnimationOrderModel: [{ type: core.Input, args: ['placeAnimationOrderModel',] }],
5437
+ customPlaceAnimationOrder: [{ type: core.Input, args: ['placeAnimationOrder',] }],
5438
+ placeChanged: [{ type: core.Output }],
5439
+ routerOut: [{ type: core.ViewChild, args: ['routeOutlet', { static: true },] }]
5440
+ };
5441
+ __decorate([
5442
+ pectin.StoreInValueModel('animateModel'),
5443
+ __metadata("design:type", Boolean)
5444
+ ], PlaceOutletComponent.prototype, "animate", void 0);
5445
+ __decorate([
5446
+ pectin.UseDelegate({ defaultValue: true }),
5447
+ __metadata("design:type", pectin.ValueModel)
5448
+ ], PlaceOutletComponent.prototype, "animateModel", void 0);
5449
+ __decorate([
5450
+ pectin.UseDelegate(),
5451
+ __metadata("design:type", pectin.ListModel)
5452
+ ], PlaceOutletComponent.prototype, "customPlaceAnimationOrderModel", void 0);
5453
+ __decorate([
5454
+ pectin.StoreInListModel('customPlaceAnimationOrderModel'),
5455
+ __metadata("design:type", Array)
5456
+ ], PlaceOutletComponent.prototype, "customPlaceAnimationOrder", void 0);
5457
+ return PlaceOutletComponent;
5458
+ }(DisposableComponent));
5633
5459
  if (false) {
5634
5460
  /** @type {?} */
5635
- exports.Bounds.prototype.top;
5461
+ PlaceOutletComponent.prototype.animate;
5636
5462
  /** @type {?} */
5637
- exports.Bounds.prototype.left;
5463
+ PlaceOutletComponent.prototype.animateModel;
5464
+ /** @type {?} */
5465
+ PlaceOutletComponent.prototype.customPlaceAnimationOrderModel;
5466
+ /** @type {?} */
5467
+ PlaceOutletComponent.prototype.customPlaceAnimationOrder;
5468
+ /** @type {?} */
5469
+ PlaceOutletComponent.prototype.placeChanged;
5470
+ /** @type {?} */
5471
+ PlaceOutletComponent.prototype.routerOut;
5472
+ /**
5473
+ * @type {?}
5474
+ * @private
5475
+ */
5476
+ PlaceOutletComponent.prototype._activePlace;
5477
+ /**
5478
+ * @type {?}
5479
+ * @private
5480
+ */
5481
+ PlaceOutletComponent.prototype._previousPlace;
5482
+ /**
5483
+ * @type {?}
5484
+ * @private
5485
+ */
5486
+ PlaceOutletComponent.prototype._activePlaceVisitModel;
5487
+ /**
5488
+ * @type {?}
5489
+ * @private
5490
+ */
5491
+ PlaceOutletComponent.prototype._inOutletActivation;
5492
+ /**
5493
+ * @type {?}
5494
+ * @private
5495
+ */
5496
+ PlaceOutletComponent.prototype._inOutletDeactivation;
5497
+ /**
5498
+ * @type {?}
5499
+ * @private
5500
+ */
5501
+ PlaceOutletComponent.prototype._inOutletUpdate;
5502
+ /**
5503
+ * @type {?}
5504
+ * @private
5505
+ */
5506
+ PlaceOutletComponent.prototype._inRouteVisitUpdate;
5507
+ /**
5508
+ * @type {?}
5509
+ * @private
5510
+ */
5511
+ PlaceOutletComponent.prototype._activatedRouteModel;
5512
+ /**
5513
+ * @type {?}
5514
+ * @private
5515
+ */
5516
+ PlaceOutletComponent.prototype._placeDefinition;
5517
+ /**
5518
+ * @type {?}
5519
+ * @private
5520
+ */
5521
+ PlaceOutletComponent.prototype.parentOutletModel;
5522
+ /** @type {?} */
5523
+ PlaceOutletComponent.prototype.placeAnimationOrder;
5524
+ /**
5525
+ * @type {?}
5526
+ * @private
5527
+ */
5528
+ PlaceOutletComponent.prototype.initialPlaceIndex;
5529
+ /**
5530
+ * @type {?}
5531
+ * @private
5532
+ */
5533
+ PlaceOutletComponent.prototype.routerVisit;
5638
5534
  /** @type {?} */
5639
- exports.Bounds.prototype.width;
5535
+ PlaceOutletComponent.prototype.ready;
5640
5536
  /** @type {?} */
5641
- exports.Bounds.prototype.height;
5642
- }
5643
- (function (Bounds) {
5537
+ PlaceOutletComponent.prototype.enableAnimation;
5644
5538
  /**
5645
- * @param {?} element
5646
- * @return {?}
5539
+ * @type {?}
5540
+ * @private
5647
5541
  */
5648
- function ofElement(element) {
5649
- /** @type {?} */
5650
- var rect = element.getBoundingClientRect();
5651
- return new Bounds(rect.top, rect.left, rect.width, rect.height);
5652
- }
5653
- Bounds.ofElement = ofElement;
5654
- })(exports.Bounds || (exports.Bounds = {}));
5542
+ PlaceOutletComponent.prototype.router;
5543
+ /**
5544
+ * @type {?}
5545
+ * @private
5546
+ */
5547
+ PlaceOutletComponent.prototype.placeRouter;
5548
+ /** @type {?} */
5549
+ PlaceOutletComponent.prototype.placeConfig;
5550
+ }
5655
5551
 
5656
5552
  /**
5657
5553
  * @fileoverview added by tsickle
5658
5554
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5659
5555
  */
5660
- var ResizeAwareComponent = /** @class */ (function (_super) {
5661
- __extends(ResizeAwareComponent, _super);
5662
- function ResizeAwareComponent(elementRef, ngZone) {
5556
+ var AbstractPlaceNavigationComponent = /** @class */ (function (_super) {
5557
+ __extends(AbstractPlaceNavigationComponent, _super);
5558
+ function AbstractPlaceNavigationComponent() {
5663
5559
  var _this = _super.call(this) || this;
5664
- _this.elementRef = elementRef;
5665
- _this.ngZone = ngZone;
5666
- _this._boundsModel = new pectin.ValueHolder(new exports.Bounds(0, 0, 0, 0));
5560
+ var _a = pectin.Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
5561
+ _this.placeDefinitions = chain(_this.placesModel).map((/**
5562
+ * @param {?} c
5563
+ * @return {?}
5564
+ */
5565
+ function (c) { return exports.ɵba.getDefinition(c); }));
5566
+ _this.commandFactory = pectin.Command.createFactory((/**
5567
+ * @param {?} placeDefinition
5568
+ * @return {?}
5569
+ */
5570
+ function (placeDefinition) {
5571
+ _this.placeOutlet.navigate(new Visit(placeDefinition));
5572
+ }));
5573
+ _this.activePlaceDefinition = chain(_this.placeOutletModel).pullValueModel((/**
5574
+ * @param {?} o
5575
+ * @return {?}
5576
+ */
5577
+ function (o) { return o.activePlaceModel; })).pluck("placeDefinition");
5667
5578
  return _this;
5668
5579
  }
5669
5580
  /**
5581
+ * @param {?} placeDef
5670
5582
  * @return {?}
5671
5583
  */
5672
- ResizeAwareComponent.prototype.ngAfterViewInit = /**
5584
+ AbstractPlaceNavigationComponent.prototype.getNav = /**
5585
+ * @param {?} placeDef
5673
5586
  * @return {?}
5674
5587
  */
5675
- function () {
5676
- var _this = this;
5677
- this.updateBounds();
5678
- /** @type {?} */
5679
- var element = this.elementRef.nativeElement;
5588
+ function (placeDef) {
5680
5589
  /** @type {?} */
5681
- var ro = new ResizeObserver((/**
5682
- * @param {?} entries
5683
- * @param {?} observer
5684
- * @return {?}
5685
- */
5686
- function (entries, observer) {
5687
- _this.ngZone.run((/**
5590
+ var navItem = (/** @type {?} */ (placeDef.getPlaceData('nav')));
5591
+ return {
5592
+ title: (/**
5688
5593
  * @return {?}
5689
5594
  */
5690
- function () { return _this.updateBounds(); }));
5691
- }));
5692
- ro.observe(element);
5693
- this.onDispose((/**
5694
- * @return {?}
5695
- */
5696
- function () { return ro.disconnect(); }));
5595
+ function () { return navItem ? navItem.title() : placeDef.searchPlaceData(['navTitle', 'title']); }),
5596
+ tooltip: (/**
5597
+ * @return {?}
5598
+ */
5599
+ function () { return navItem && navItem.tooltip ? navItem.tooltip() : placeDef.getPlaceData('navTooltip', null); }),
5600
+ icon: (/**
5601
+ * @return {?}
5602
+ */
5603
+ function () { return navItem && navItem.icon ? navItem.icon() : placeDef.getPlaceData('navIcon', null); })
5604
+ };
5697
5605
  };
5698
- Object.defineProperty(ResizeAwareComponent.prototype, "boundsModel", {
5699
- get: /**
5700
- * @return {?}
5701
- */
5702
- function () {
5703
- return this._boundsModel.readonly;
5704
- },
5705
- enumerable: true,
5706
- configurable: true
5707
- });
5708
- Object.defineProperty(ResizeAwareComponent.prototype, "nativeElement", {
5709
- get: /**
5710
- * @return {?}
5711
- */
5712
- function () {
5713
- return this.elementRef.nativeElement;
5714
- },
5715
- enumerable: true,
5716
- configurable: true
5717
- });
5718
- // TODO: Make this handle body scroll
5719
- // TODO: Make this handle body scroll
5720
5606
  /**
5721
- * @param {?} point
5607
+ * @param {?} place
5722
5608
  * @return {?}
5723
5609
  */
5724
- ResizeAwareComponent.prototype.relativePositionOf =
5725
- // TODO: Make this handle body scroll
5726
- /**
5727
- * @param {?} point
5610
+ AbstractPlaceNavigationComponent.prototype.isActive = /**
5611
+ * @param {?} place
5728
5612
  * @return {?}
5729
5613
  */
5730
- function (point) {
5731
- return this.bounds.relativePositionOf(point);
5614
+ function (place) {
5615
+ return this.activePlaceDefinition.query().equals(place);
5732
5616
  };
5733
- Object.defineProperty(ResizeAwareComponent.prototype, "bounds", {
5734
- get: /**
5735
- * @return {?}
5736
- */
5737
- function () {
5738
- return this._boundsModel.value;
5739
- },
5740
- enumerable: true,
5741
- configurable: true
5742
- });
5743
5617
  /**
5744
- * @private
5745
5618
  * @return {?}
5746
5619
  */
5747
- ResizeAwareComponent.prototype.updateBounds = /**
5748
- * @private
5620
+ AbstractPlaceNavigationComponent.prototype.ngOnInit = /**
5749
5621
  * @return {?}
5750
5622
  */
5751
5623
  function () {
5752
- this._boundsModel.value = exports.Bounds.ofElement(this.nativeElement);
5753
5624
  };
5754
- return ResizeAwareComponent;
5625
+ AbstractPlaceNavigationComponent.decorators = [
5626
+ { type: core.Component, args: [{
5627
+ template: ''
5628
+ }] }
5629
+ ];
5630
+ /** @nocollapse */
5631
+ AbstractPlaceNavigationComponent.ctorParameters = function () { return []; };
5632
+ AbstractPlaceNavigationComponent.propDecorators = {
5633
+ places: [{ type: core.Input }],
5634
+ placesModel: [{ type: core.Input }],
5635
+ placeOutlet: [{ type: core.Input }],
5636
+ placeOutletModel: [{ type: core.Input }]
5637
+ };
5638
+ __decorate([
5639
+ pectin.StoreInListModel('placesModel'),
5640
+ __metadata("design:type", Array)
5641
+ ], AbstractPlaceNavigationComponent.prototype, "places", void 0);
5642
+ __decorate([
5643
+ pectin.UseDelegate(),
5644
+ __metadata("design:type", pectin.ListModel)
5645
+ ], AbstractPlaceNavigationComponent.prototype, "placesModel", void 0);
5646
+ __decorate([
5647
+ pectin.StoreInValueModel('placeOutletModel'),
5648
+ __metadata("design:type", PlaceOutletComponent)
5649
+ ], AbstractPlaceNavigationComponent.prototype, "placeOutlet", void 0);
5650
+ __decorate([
5651
+ pectin.UseDelegate(),
5652
+ __metadata("design:type", pectin.ValueModel)
5653
+ ], AbstractPlaceNavigationComponent.prototype, "placeOutletModel", void 0);
5654
+ __decorate([
5655
+ src.Memoize(),
5656
+ __metadata("design:type", Function),
5657
+ __metadata("design:paramtypes", [exports.PlaceDefinition]),
5658
+ __metadata("design:returntype", Object)
5659
+ ], AbstractPlaceNavigationComponent.prototype, "getNav", null);
5660
+ return AbstractPlaceNavigationComponent;
5755
5661
  }(DisposableComponent));
5756
5662
  if (false) {
5757
- /**
5758
- * @type {?}
5759
- * @private
5760
- */
5761
- ResizeAwareComponent.prototype._boundsModel;
5762
- /**
5763
- * @type {?}
5764
- * @protected
5765
- */
5766
- ResizeAwareComponent.prototype.elementRef;
5767
- /**
5768
- * @type {?}
5769
- * @protected
5770
- */
5771
- ResizeAwareComponent.prototype.ngZone;
5663
+ /** @type {?} */
5664
+ AbstractPlaceNavigationComponent.prototype.places;
5665
+ /** @type {?} */
5666
+ AbstractPlaceNavigationComponent.prototype.placesModel;
5667
+ /** @type {?} */
5668
+ AbstractPlaceNavigationComponent.prototype.placeOutlet;
5669
+ /** @type {?} */
5670
+ AbstractPlaceNavigationComponent.prototype.placeOutletModel;
5671
+ /** @type {?} */
5672
+ AbstractPlaceNavigationComponent.prototype.placeDefinitions;
5673
+ /** @type {?} */
5674
+ AbstractPlaceNavigationComponent.prototype.commandFactory;
5675
+ /** @type {?} */
5676
+ AbstractPlaceNavigationComponent.prototype.activePlaceDefinition;
5772
5677
  }
5773
5678
 
5774
5679
  /**
5775
5680
  * @fileoverview added by tsickle
5776
5681
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5777
5682
  */
5778
-
5779
- /**
5780
- * @fileoverview added by tsickle
5781
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5782
- */
5783
-
5784
- /**
5785
- * @fileoverview added by tsickle
5786
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5787
- */
5788
- /**
5789
- * @record
5790
- */
5791
- function Alert() { }
5792
- if (false) {
5793
- /**
5794
- * @return {?}
5795
- */
5796
- Alert.prototype.title = function () { };
5683
+ var BusyOverlayComponent = /** @class */ (function () {
5684
+ function BusyOverlayComponent() {
5685
+ }
5797
5686
  /**
5798
5687
  * @return {?}
5799
5688
  */
5800
- Alert.prototype.content = function () { };
5801
- /**
5689
+ BusyOverlayComponent.prototype.ngOnInit = /**
5802
5690
  * @return {?}
5803
5691
  */
5804
- Alert.prototype.ok = function () { };
5692
+ function () {
5693
+ };
5694
+ BusyOverlayComponent.decorators = [
5695
+ { type: core.Component, args: [{
5696
+ selector: 'aup-busy-overlay',
5697
+ template: "<ng-content></ng-content>\n<div class=\"busy-overlay-backdrop\" *ngIf=\"busyModel.value\">\n <mat-progress-spinner mode=\"indeterminate\" [diameter]=\"52\"></mat-progress-spinner>\n</div>\n",
5698
+ styles: [":host{position:relative}div.busy-overlay-backdrop{position:absolute;background-color:rgba(0,0,0,.2);top:0;left:0;bottom:0;right:0;display:-ms-grid;display:grid;-ms-grid-columns:auto;grid-template-columns:auto;-ms-grid-rows:auto;grid-template-rows:auto;place-content:center}"]
5699
+ }] }
5700
+ ];
5701
+ /** @nocollapse */
5702
+ BusyOverlayComponent.ctorParameters = function () { return []; };
5703
+ BusyOverlayComponent.propDecorators = {
5704
+ busyModel: [{ type: core.Input }],
5705
+ busy: [{ type: core.Input }]
5706
+ };
5707
+ __decorate([
5708
+ pectin.UseDelegate(),
5709
+ __metadata("design:type", pectin.ValueModel)
5710
+ ], BusyOverlayComponent.prototype, "busyModel", void 0);
5711
+ __decorate([
5712
+ pectin.StoreInValueModel('busyModel'),
5713
+ __metadata("design:type", Boolean)
5714
+ ], BusyOverlayComponent.prototype, "busy", void 0);
5715
+ return BusyOverlayComponent;
5716
+ }());
5717
+ if (false) {
5718
+ /** @type {?} */
5719
+ BusyOverlayComponent.prototype.busyModel;
5720
+ /** @type {?} */
5721
+ BusyOverlayComponent.prototype.busy;
5805
5722
  }
5806
5723
 
5807
5724
  /**
5808
5725
  * @fileoverview added by tsickle
5809
5726
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5810
5727
  */
5811
- /**
5812
- * @record
5813
- */
5814
- function Confirm() { }
5815
- if (false) {
5816
- /** @type {?|undefined} */
5817
- Confirm.prototype.destructive;
5728
+ var EmptyStateComponent = /** @class */ (function () {
5729
+ function EmptyStateComponent() {
5730
+ }
5818
5731
  /**
5819
5732
  * @return {?}
5820
5733
  */
5821
- Confirm.prototype.cancel = function () { };
5822
- }
5823
-
5824
- /**
5825
- * @fileoverview added by tsickle
5826
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5827
- */
5828
- /**
5829
- * @record
5830
- * @template R, E
5831
- */
5832
- function Result() { }
5833
- (function (Result) {
5834
- /**
5835
- * @record
5836
- * @template R, E
5734
+ EmptyStateComponent.prototype.ngOnInit = /**
5735
+ * @return {?}
5837
5736
  */
5838
- function Callback() { }
5839
- Result.Callback = Callback;
5840
- if (false) {
5841
- /** @type {?} */
5842
- Callback.prototype.then;
5843
- /** @type {?} */
5844
- Callback.prototype.catch;
5845
- }
5846
- })(Result || (Result = {}));
5737
+ function () {
5738
+ };
5739
+ EmptyStateComponent.decorators = [
5740
+ { type: core.Component, args: [{
5741
+ selector: 'aup-empty-state',
5742
+ template: "\n <div class=\"container\">\n <ng-content></ng-content>\n </div>\n ",
5743
+ styles: [":host{display:flex;flex-direction:column;justify-content:center;align-items:center}.container{padding:var(--aup-default-padding);border:2px dashed rgba(0,0,0,.2);border-radius:5px;font-size:14px;font-weight:300}"]
5744
+ }] }
5745
+ ];
5746
+ /** @nocollapse */
5747
+ EmptyStateComponent.ctorParameters = function () { return []; };
5748
+ return EmptyStateComponent;
5749
+ }());
5847
5750
 
5848
5751
  /**
5849
5752
  * @fileoverview added by tsickle
5850
5753
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5851
5754
  */
5852
- /**
5853
- * @record
5854
- * @template D, R, E
5855
- */
5856
- function ActivityOutletContext() { }
5857
- if (false) {
5858
- /** @type {?} */
5859
- ActivityOutletContext.prototype.activityClass;
5860
- /** @type {?} */
5861
- ActivityOutletContext.prototype.activityData;
5755
+ var ListPlaceNavComponent = /** @class */ (function (_super) {
5756
+ __extends(ListPlaceNavComponent, _super);
5757
+ function ListPlaceNavComponent() {
5758
+ var _this = _super.call(this) || this;
5759
+ _this.expanded = true;
5760
+ return _this;
5761
+ }
5862
5762
  /**
5863
- * @param {?} component
5864
5763
  * @return {?}
5865
5764
  */
5866
- ActivityOutletContext.prototype.componentReady = function (component) { };
5867
- }
5868
-
5869
- /**
5870
- * @fileoverview added by tsickle
5871
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5872
- */
5873
- var InteractionGuard = /** @class */ (function () {
5874
- function InteractionGuard(router, injector, interactionContext) {
5875
- this.router = router;
5876
- this.injector = injector;
5877
- this.interactionContext = interactionContext;
5878
- }
5765
+ ListPlaceNavComponent.prototype.expandMenu = /**
5766
+ * @return {?}
5767
+ */
5768
+ function () {
5769
+ this.expanded = true;
5770
+ };
5879
5771
  /**
5880
- * @param {?} route
5881
- * @param {?} state
5882
5772
  * @return {?}
5883
5773
  */
5884
- InteractionGuard.prototype.canActivate = /**
5885
- * @param {?} route
5886
- * @param {?} state
5774
+ ListPlaceNavComponent.prototype.collapseMenu = /**
5887
5775
  * @return {?}
5888
5776
  */
5889
- function (route, state) {
5890
- return true;
5777
+ function () {
5778
+ this.expanded = false;
5891
5779
  };
5892
5780
  /**
5893
- * @param {?} component
5894
- * @param {?} currentRoute
5895
- * @param {?} currentState
5896
- * @param {?=} nextState
5897
5781
  * @return {?}
5898
5782
  */
5899
- InteractionGuard.prototype.canDeactivate = /**
5900
- * @param {?} component
5901
- * @param {?} currentRoute
5902
- * @param {?} currentState
5903
- * @param {?=} nextState
5783
+ ListPlaceNavComponent.prototype.toggleMenu = /**
5904
5784
  * @return {?}
5905
5785
  */
5906
- function (component, currentRoute, currentState, nextState) {
5907
- return !this.interactionContext.isActive();
5786
+ function () {
5787
+ this.expanded = !this.expanded;
5908
5788
  };
5909
- InteractionGuard.decorators = [
5910
- { type: core.Injectable, args: [{
5911
- providedIn: 'root'
5912
- },] }
5789
+ ListPlaceNavComponent.decorators = [
5790
+ { type: core.Component, args: [{
5791
+ selector: 'aup-list-place-nav',
5792
+ template: "<mat-nav-list class=\"app-menu\">\n <a mat-list-item *ngFor=\"let placeDefinition of placeDefinitions.value\"\n [pectinCommand]=\"commandFactory.create(placeDefinition)\"\n [class.active]=\"isActive(placeDefinition)\"\n [matTooltip]=\"getNav(placeDefinition).tooltip()\">\n <mat-icon *ngIf=\"getNav(placeDefinition).icon()\">{{getNav(placeDefinition).icon()}}</mat-icon>\n <span class=\"expanded-only\">{{getNav(placeDefinition).title()}}</span>\n </a>\n</mat-nav-list>\n",
5793
+ styles: [":host{display:flex;flex-direction:column;--expanded-width:235px;--nav-item-width:var(--nav-bar-height);width:var(--nav-item-width);transition:width 125ms linear}:host.expanded{width:var(--expanded-width);max-width:var(--expanded-width)}.expanded-only{max-width:0;overflow:hidden}.collapsed-only{max-width:100%;overflow:hidden}.header{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;height:var(--nav-bar-height);border-bottom:var(--pinstripe-border);cursor:pointer}.header .menu{flex:1}.header button{color:inherit;width:var(--nav-item-width);height:var(--nav-bar-height)}mat-nav-list{flex:1;display:flex;flex-direction:column}.mat-list-item{width:var(--nav-item-width);height:var(--nav-bar-height);color:rgba(0,0,0,.6)}.mat-list-item.active{background-color:rgba(0,0,0,.1);color:rgba(0,0,0,.9)}mat-icon{color:inherit}mat-icon.flip-horizontal{transform:scaleX(-1)}:host-context(.expanded) .expanded-only{max-width:100%}:host-context(.expanded) .collapsed-only{max-width:0}:host-context(.expanded) .mat-list-item mat-icon{margin-right:12px}:host-context(.expanded) .mat-list-item span{text-wrap:none;white-space:nowrap}a[ng-reflect-router-link=manage-instruments] mat-icon{transform:rotate(90deg)}.app-menu{padding-top:0}"]
5794
+ }] }
5913
5795
  ];
5914
5796
  /** @nocollapse */
5915
- InteractionGuard.ctorParameters = function () { return [
5916
- { type: router.Router },
5917
- { type: core.Injector },
5918
- { type: InteractionContext }
5919
- ]; };
5920
- /** @nocollapse */ InteractionGuard.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function InteractionGuard_Factory() { return new InteractionGuard(core.ɵɵinject(router.Router), core.ɵɵinject(core.INJECTOR), core.ɵɵinject(InteractionContext)); }, token: InteractionGuard, providedIn: "root" });
5921
- __decorate([
5922
- pectin.Trace(),
5923
- __metadata("design:type", Function),
5924
- __metadata("design:paramtypes", [router.ActivatedRouteSnapshot, router.RouterStateSnapshot]),
5925
- __metadata("design:returntype", Object)
5926
- ], InteractionGuard.prototype, "canActivate", null);
5927
- __decorate([
5928
- pectin.Trace(),
5929
- __metadata("design:type", Function),
5930
- __metadata("design:paramtypes", [NoopComponent, router.ActivatedRouteSnapshot, router.RouterStateSnapshot, router.RouterStateSnapshot]),
5931
- __metadata("design:returntype", Object)
5932
- ], InteractionGuard.prototype, "canDeactivate", null);
5933
- return InteractionGuard;
5934
- }());
5797
+ ListPlaceNavComponent.ctorParameters = function () { return []; };
5798
+ ListPlaceNavComponent.propDecorators = {
5799
+ expanded: [{ type: core.HostBinding, args: ['class.expanded',] }]
5800
+ };
5801
+ return ListPlaceNavComponent;
5802
+ }(AbstractPlaceNavigationComponent));
5935
5803
  if (false) {
5936
- /**
5937
- * @type {?}
5938
- * @private
5939
- */
5940
- InteractionGuard.prototype.router;
5941
- /**
5942
- * @type {?}
5943
- * @private
5944
- */
5945
- InteractionGuard.prototype.injector;
5946
- /**
5947
- * @type {?}
5948
- * @private
5949
- */
5950
- InteractionGuard.prototype.interactionContext;
5804
+ /** @type {?} */
5805
+ ListPlaceNavComponent.prototype.expanded;
5951
5806
  }
5952
5807
 
5953
5808
  /**
5954
5809
  * @fileoverview added by tsickle
5955
5810
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5956
5811
  */
5812
+ var TabbedPlaceNavigationComponent = /** @class */ (function (_super) {
5813
+ __extends(TabbedPlaceNavigationComponent, _super);
5814
+ function TabbedPlaceNavigationComponent() {
5815
+ return _super.call(this) || this;
5816
+ }
5817
+ TabbedPlaceNavigationComponent.decorators = [
5818
+ { type: core.Component, args: [{
5819
+ selector: 'aup-tabbed-place-navigation',
5820
+ template: "<nav mat-tab-nav-bar>\n <a mat-tab-link *ngFor=\"let placeDefinition of placeDefinitions.value\"\n [pectinCommand]=\"commandFactory.create(placeDefinition)\"\n [active]=\"isActive(placeDefinition)\"\n [matTooltip]=\"getNav(placeDefinition).tooltip()\">\n <mat-icon *ngIf=\"getNav(placeDefinition).icon()\">{{getNav(placeDefinition).icon()}}</mat-icon>\n <span>{{getNav(placeDefinition).title()}}</span>\n </a>\n</nav>\n",
5821
+ styles: [""]
5822
+ }] }
5823
+ ];
5824
+ /** @nocollapse */
5825
+ TabbedPlaceNavigationComponent.ctorParameters = function () { return []; };
5826
+ return TabbedPlaceNavigationComponent;
5827
+ }(AbstractPlaceNavigationComponent));
5828
+
5829
+ /**
5830
+ * @fileoverview added by tsickle
5831
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5832
+ */
5833
+ var PlaceModule = /** @class */ (function () {
5834
+ function PlaceModule() {
5835
+ }
5836
+ PlaceModule.decorators = [
5837
+ { type: core.NgModule, args: [{
5838
+ imports: [
5839
+ common.CommonModule,
5840
+ animations.BrowserAnimationsModule,
5841
+ material.MatProgressSpinnerModule,
5842
+ router.RouterModule,
5843
+ tabs.MatTabsModule,
5844
+ list.MatListModule,
5845
+ tooltip.MatTooltipModule,
5846
+ icon.MatIconModule,
5847
+ DirectivesModule
5848
+ ],
5849
+ declarations: [
5850
+ EmptyStateComponent,
5851
+ BusyOverlayComponent,
5852
+ PlaceOutletComponent,
5853
+ TabbedPlaceNavigationComponent,
5854
+ ListPlaceNavComponent,
5855
+ AbstractPlaceNavigationComponent,
5856
+ NoopGatewayPlace
5857
+ ],
5858
+ entryComponents: [BusyOverlayComponent],
5859
+ exports: [
5860
+ BusyOverlayComponent,
5861
+ PlaceOutletComponent,
5862
+ EmptyStateComponent,
5863
+ TabbedPlaceNavigationComponent,
5864
+ ListPlaceNavComponent,
5865
+ AbstractPlaceNavigationComponent
5866
+ ],
5867
+ providers: [
5868
+ // {provide: AUP_PLACE_CONFIG, useValue: {animationDuration: "2000ms"}}
5869
+ ]
5870
+ },] }
5871
+ ];
5872
+ return PlaceModule;
5873
+ }());
5874
+
5875
+ /**
5876
+ * @fileoverview added by tsickle
5877
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5878
+ */
5879
+ var AngularUiPowerupsModule = /** @class */ (function () {
5880
+ function AngularUiPowerupsModule() {
5881
+ }
5882
+ AngularUiPowerupsModule.decorators = [
5883
+ { type: core.NgModule, args: [{
5884
+ declarations: [],
5885
+ imports: [
5886
+ common.CommonModule,
5887
+ animations.BrowserAnimationsModule,
5888
+ forms.FormsModule,
5889
+ material.MatInputModule,
5890
+ material.MatFormFieldModule,
5891
+ material.MatSelectModule,
5892
+ tabs.MatTabsModule,
5893
+ DirectivesModule,
5894
+ ComponentsModule,
5895
+ PlaceModule,
5896
+ InteractionModule
5897
+ ],
5898
+ exports: [
5899
+ InteractionModule,
5900
+ PlaceModule,
5901
+ DirectivesModule,
5902
+ ComponentsModule,
5903
+ NoopComponent
5904
+ ]
5905
+ },] }
5906
+ ];
5907
+ return AngularUiPowerupsModule;
5908
+ }());
5909
+
5910
+ /**
5911
+ * @fileoverview added by tsickle
5912
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5913
+ */
5914
+ /** @type {?} */
5915
+ var defaultHiddenStyleDef = animations$1.style({
5916
+ opacity: 0,
5917
+ 'height': '0',
5918
+ paddingTop: '0',
5919
+ paddingBottom: '0'
5920
+ });
5921
+ /**
5922
+ * @param {?} triggerName
5923
+ * @param {?=} options
5924
+ * @return {?}
5925
+ */
5926
+ function slideDownAndUpAnimation(triggerName, options) {
5927
+ // SEE to fix this: https://github.com/angular/angular/issues/15587#issuecomment-351510501
5928
+ /** @type {?} */
5929
+ var duration = pectin.OptionsHelper.get(options).getOptional('duration', '100ms');
5930
+ /** @type {?} */
5931
+ var hiddenStyleDef = pectin.OptionsHelper.get(options).getOptional('hiddenStyleDef', defaultHiddenStyleDef);
5932
+ return animations$1.trigger(triggerName, [
5933
+ animations$1.transition(':enter', [hiddenStyleDef, animations$1.animate('100ms')]),
5934
+ animations$1.transition(':leave', [animations$1.animate('100ms', hiddenStyleDef)])
5935
+ ]);
5936
+ }
5957
5937
 
5958
5938
  /**
5959
5939
  * @fileoverview added by tsickle
5960
5940
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5961
5941
  */
5942
+
5962
5943
  /**
5963
- * @record
5944
+ * @fileoverview added by tsickle
5945
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5964
5946
  */
5965
- function NavItem() { }
5947
+ var Dimension = /** @class */ (function () {
5948
+ function Dimension(width, height) {
5949
+ this.width = width;
5950
+ this.height = height;
5951
+ }
5952
+ return Dimension;
5953
+ }());
5966
5954
  if (false) {
5955
+ /** @type {?} */
5956
+ Dimension.prototype.width;
5957
+ /** @type {?} */
5958
+ Dimension.prototype.height;
5959
+ }
5960
+
5961
+ /**
5962
+ * @fileoverview added by tsickle
5963
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5964
+ */
5965
+ var Point = /** @class */ (function () {
5966
+ function Point(x, y) {
5967
+ this.x = x;
5968
+ this.y = y;
5969
+ }
5967
5970
  /**
5971
+ * @param {?} data
5968
5972
  * @return {?}
5969
5973
  */
5970
- NavItem.prototype.title = function () { };
5971
- /**
5974
+ Point.from = /**
5975
+ * @param {?} data
5972
5976
  * @return {?}
5973
5977
  */
5974
- NavItem.prototype.icon = function () { };
5978
+ function (data) {
5979
+ return new Point(data.x, data.y);
5980
+ };
5975
5981
  /**
5982
+ * @param {?} x
5983
+ * @param {?} y
5976
5984
  * @return {?}
5977
5985
  */
5978
- NavItem.prototype.tooltip = function () { };
5986
+ Point.prototype.translate = /**
5987
+ * @param {?} x
5988
+ * @param {?} y
5989
+ * @return {?}
5990
+ */
5991
+ function (x, y) {
5992
+ return new Point(this.x + x, this.y + y);
5993
+ };
5994
+ return Point;
5995
+ }());
5996
+ if (false) {
5997
+ /** @type {?} */
5998
+ Point.prototype.x;
5999
+ /** @type {?} */
6000
+ Point.prototype.y;
5979
6001
  }
5980
6002
 
5981
6003
  /**
5982
6004
  * @fileoverview added by tsickle
5983
6005
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5984
6006
  */
5985
- /**
5986
- * @param {?} options
5987
- * @return {?}
5988
- */
5989
- function Place(options) {
5990
- return (/**
5991
- * @param {?} target
6007
+ exports.Bounds = /** @class */ (function (_super) {
6008
+ __extends(Bounds, _super);
6009
+ function Bounds(top, left, width, height) {
6010
+ var _this = _super.call(this, width, height) || this;
6011
+ _this.top = top;
6012
+ _this.left = left;
6013
+ _this.width = width;
6014
+ _this.height = height;
6015
+ return _this;
6016
+ }
6017
+ /**
6018
+ * @param {?} point
5992
6019
  * @return {?}
5993
6020
  */
5994
- function (target) {
5995
- if (exports.PlaceComponent.isPlaceComponentConstructor(target)) {
5996
- exports.PlaceComponent.injectDefinition(target, new exports.PlaceDefinition(target, options.path, ___default.isNil(options.authenticate) ? false : options.authenticate, options.data, exports.PlaceComponent.getRouteParameters(target), (options.children || []).map((/**
5997
- * @param {?} c
5998
- * @return {?}
5999
- */
6000
- function (c) { return exports.PlaceComponent.getDefinition(c); }))));
6021
+ Bounds.prototype.relativePositionOf = /**
6022
+ * @param {?} point
6023
+ * @return {?}
6024
+ */
6025
+ function (point) {
6026
+ if (point instanceof MouseEvent) {
6027
+ return new Point(point.clientX - this.left, point.clientY - this.top);
6001
6028
  }
6002
6029
  else {
6003
- pectin.lang.illegalState(target + " must extend PlaceComponent to use the @Place decorator");
6030
+ return new Point(point.x - this.left, point.y - this.top);
6004
6031
  }
6005
- });
6032
+ };
6033
+ return Bounds;
6034
+ }(Dimension));
6035
+ if (false) {
6036
+ /** @type {?} */
6037
+ exports.Bounds.prototype.top;
6038
+ /** @type {?} */
6039
+ exports.Bounds.prototype.left;
6040
+ /** @type {?} */
6041
+ exports.Bounds.prototype.width;
6042
+ /** @type {?} */
6043
+ exports.Bounds.prototype.height;
6006
6044
  }
6007
- (function (Place) {
6045
+ (function (Bounds) {
6008
6046
  /**
6009
- * @record
6047
+ * @param {?} element
6048
+ * @return {?}
6010
6049
  */
6011
- function Options() { }
6012
- Place.Options = Options;
6013
- if (false) {
6050
+ function ofElement(element) {
6014
6051
  /** @type {?} */
6015
- Options.prototype.path;
6016
- /** @type {?|undefined} */
6017
- Options.prototype.data;
6018
- /** @type {?|undefined} */
6019
- Options.prototype.authenticate;
6020
- /** @type {?|undefined} */
6021
- Options.prototype.children;
6022
- /** @type {?|undefined} */
6023
- Options.prototype.defaultChild;
6052
+ var rect = element.getBoundingClientRect();
6053
+ return new Bounds(rect.top, rect.left, rect.width, rect.height);
6024
6054
  }
6025
- })(Place || (Place = {}));
6055
+ Bounds.ofElement = ofElement;
6056
+ })(exports.Bounds || (exports.Bounds = {}));
6026
6057
 
6027
6058
  /**
6028
6059
  * @fileoverview added by tsickle
6029
6060
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
6030
6061
  */
6031
- // WARNING: interface has both a type and a value, skipping emit
6032
-
6033
- (function (Formatter) {
6034
- var StringType = /** @class */ (function () {
6035
- function StringType() {
6036
- }
6037
- /**
6038
- * @param {?} value
6039
- * @return {?}
6040
- */
6041
- StringType.prototype.format = /**
6042
- * @param {?} value
6043
- * @return {?}
6044
- */
6045
- function (value) {
6046
- return value;
6047
- };
6048
- /**
6049
- * @param {?} value
6050
- * @return {?}
6051
- */
6052
- StringType.prototype.parse = /**
6053
- * @param {?} value
6054
- * @return {?}
6055
- */
6056
- function (value) {
6057
- return value;
6058
- };
6059
- return StringType;
6060
- }());
6061
- var NumberType = /** @class */ (function () {
6062
- function NumberType() {
6063
- }
6064
- /**
6065
- * @param {?} value
6066
- * @return {?}
6067
- */
6068
- NumberType.prototype.format = /**
6069
- * @param {?} value
6070
- * @return {?}
6071
- */
6072
- function (value) {
6073
- return ___default__default.isNumber(value) && !___default__default.isNaN(value) ? "" + value : null;
6074
- };
6075
- /**
6076
- * @param {?} value
6077
- * @return {?}
6078
- */
6079
- NumberType.prototype.parse = /**
6080
- * @param {?} value
6062
+ var ResizeAwareComponent = /** @class */ (function (_super) {
6063
+ __extends(ResizeAwareComponent, _super);
6064
+ function ResizeAwareComponent(elementRef, ngZone) {
6065
+ var _this = _super.call(this) || this;
6066
+ _this.elementRef = elementRef;
6067
+ _this.ngZone = ngZone;
6068
+ _this._boundsModel = new pectin.ValueHolder(new exports.Bounds(0, 0, 0, 0));
6069
+ return _this;
6070
+ }
6071
+ /**
6072
+ * @return {?}
6073
+ */
6074
+ ResizeAwareComponent.prototype.ngAfterViewInit = /**
6075
+ * @return {?}
6076
+ */
6077
+ function () {
6078
+ var _this = this;
6079
+ this.updateBounds();
6080
+ /** @type {?} */
6081
+ var element = this.elementRef.nativeElement;
6082
+ /** @type {?} */
6083
+ var ro = new ResizeObserver((/**
6084
+ * @param {?} entries
6085
+ * @param {?} observer
6081
6086
  * @return {?}
6082
6087
  */
6083
- function (value) {
6084
- /** @type {?} */
6085
- var parsed = Number.parseFloat(value);
6086
- return ___default__default.isNaN(parsed) ? null : parsed;
6087
- };
6088
- return NumberType;
6089
- }());
6090
- var BooleanType = /** @class */ (function () {
6091
- function BooleanType() {
6092
- }
6093
- /**
6094
- * @param {?} value
6088
+ function (entries, observer) {
6089
+ _this.ngZone.run((/**
6090
+ * @return {?}
6091
+ */
6092
+ function () { return _this.updateBounds(); }));
6093
+ }));
6094
+ ro.observe(element);
6095
+ this.onDispose((/**
6095
6096
  * @return {?}
6096
6097
  */
6097
- BooleanType.prototype.format = /**
6098
- * @param {?} value
6098
+ function () { return ro.disconnect(); }));
6099
+ };
6100
+ Object.defineProperty(ResizeAwareComponent.prototype, "boundsModel", {
6101
+ get: /**
6099
6102
  * @return {?}
6100
6103
  */
6101
- function (value) {
6102
- return value ? 'true' : 'false';
6103
- };
6104
- /**
6105
- * @param {?} value
6104
+ function () {
6105
+ return this._boundsModel.readonly;
6106
+ },
6107
+ enumerable: true,
6108
+ configurable: true
6109
+ });
6110
+ Object.defineProperty(ResizeAwareComponent.prototype, "nativeElement", {
6111
+ get: /**
6106
6112
  * @return {?}
6107
6113
  */
6108
- BooleanType.prototype.parse = /**
6109
- * @param {?} value
6114
+ function () {
6115
+ return this.elementRef.nativeElement;
6116
+ },
6117
+ enumerable: true,
6118
+ configurable: true
6119
+ });
6120
+ // TODO: Make this handle body scroll
6121
+ // TODO: Make this handle body scroll
6122
+ /**
6123
+ * @param {?} point
6124
+ * @return {?}
6125
+ */
6126
+ ResizeAwareComponent.prototype.relativePositionOf =
6127
+ // TODO: Make this handle body scroll
6128
+ /**
6129
+ * @param {?} point
6130
+ * @return {?}
6131
+ */
6132
+ function (point) {
6133
+ return this.bounds.relativePositionOf(point);
6134
+ };
6135
+ Object.defineProperty(ResizeAwareComponent.prototype, "bounds", {
6136
+ get: /**
6110
6137
  * @return {?}
6111
6138
  */
6112
- function (value) {
6113
- return value === 'true';
6114
- };
6115
- return BooleanType;
6116
- }());
6117
- Formatter.STRING = new StringType();
6118
- Formatter.NUMBER = new NumberType();
6119
- Formatter.BOOLEAN = new BooleanType();
6120
- })(exports.Formatter || (exports.Formatter = {}));
6139
+ function () {
6140
+ return this._boundsModel.value;
6141
+ },
6142
+ enumerable: true,
6143
+ configurable: true
6144
+ });
6145
+ /**
6146
+ * @private
6147
+ * @return {?}
6148
+ */
6149
+ ResizeAwareComponent.prototype.updateBounds = /**
6150
+ * @private
6151
+ * @return {?}
6152
+ */
6153
+ function () {
6154
+ this._boundsModel.value = exports.Bounds.ofElement(this.nativeElement);
6155
+ };
6156
+ return ResizeAwareComponent;
6157
+ }(DisposableComponent));
6158
+ if (false) {
6159
+ /**
6160
+ * @type {?}
6161
+ * @private
6162
+ */
6163
+ ResizeAwareComponent.prototype._boundsModel;
6164
+ /**
6165
+ * @type {?}
6166
+ * @protected
6167
+ */
6168
+ ResizeAwareComponent.prototype.elementRef;
6169
+ /**
6170
+ * @type {?}
6171
+ * @protected
6172
+ */
6173
+ ResizeAwareComponent.prototype.ngZone;
6174
+ }
6121
6175
 
6122
6176
  /**
6123
6177
  * @fileoverview added by tsickle
6124
6178
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
6125
6179
  */
6180
+
6126
6181
  /**
6127
- * @record
6182
+ * @fileoverview added by tsickle
6183
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
6184
+ */
6185
+
6186
+ /**
6187
+ * @fileoverview added by tsickle
6188
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
6128
6189
  */
6129
- function JsonArray() { }
6130
6190
  /**
6131
6191
  * @record
6132
6192
  */
6133
- function JsonMap() { }
6193
+ function Alert() { }
6194
+ if (false) {
6195
+ /**
6196
+ * @return {?}
6197
+ */
6198
+ Alert.prototype.title = function () { };
6199
+ /**
6200
+ * @return {?}
6201
+ */
6202
+ Alert.prototype.content = function () { };
6203
+ /**
6204
+ * @return {?}
6205
+ */
6206
+ Alert.prototype.ok = function () { };
6207
+ }
6134
6208
 
6135
6209
  /**
6136
6210
  * @fileoverview added by tsickle
@@ -6138,131 +6212,150 @@
6138
6212
  */
6139
6213
  /**
6140
6214
  * @record
6141
- * @template T
6142
6215
  */
6143
- function RouteIdOptions() { }
6216
+ function Confirm() { }
6144
6217
  if (false) {
6145
6218
  /** @type {?|undefined} */
6146
- RouteIdOptions.prototype.as;
6147
- /** @type {?|undefined} */
6148
- RouteIdOptions.prototype.optional;
6149
- /** @type {?|undefined} */
6150
- RouteIdOptions.prototype.remember;
6151
- /** @type {?|undefined} */
6152
- RouteIdOptions.prototype.defaultValue;
6219
+ Confirm.prototype.destructive;
6220
+ /**
6221
+ * @return {?}
6222
+ */
6223
+ Confirm.prototype.cancel = function () { };
6153
6224
  }
6225
+
6226
+ /**
6227
+ * @fileoverview added by tsickle
6228
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
6229
+ */
6154
6230
  /**
6155
6231
  * @record
6156
- * @template T
6232
+ * @template R, E
6233
+ */
6234
+ function Result() { }
6235
+ (function (Result) {
6236
+ /**
6237
+ * @record
6238
+ * @template R, E
6239
+ */
6240
+ function Callback() { }
6241
+ Result.Callback = Callback;
6242
+ if (false) {
6243
+ /** @type {?} */
6244
+ Callback.prototype.then;
6245
+ /** @type {?} */
6246
+ Callback.prototype.catch;
6247
+ }
6248
+ })(Result || (Result = {}));
6249
+
6250
+ /**
6251
+ * @fileoverview added by tsickle
6252
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
6157
6253
  */
6158
- function RouteParameterOptions() { }
6159
- if (false) {
6160
- /** @type {?|undefined} */
6161
- RouteParameterOptions.prototype.as;
6162
- /** @type {?|undefined} */
6163
- RouteParameterOptions.prototype.optional;
6164
- /** @type {?|undefined} */
6165
- RouteParameterOptions.prototype.remember;
6166
- /** @type {?|undefined} */
6167
- RouteParameterOptions.prototype.defaultValue;
6168
- /** @type {?|undefined} */
6169
- RouteParameterOptions.prototype.storeInUrl;
6170
- }
6171
6254
  /**
6172
6255
  * @record
6173
- * @template T
6256
+ * @template D, R, E
6174
6257
  */
6175
- function RouteListParameterOptions() { }
6258
+ function ActivityOutletContext() { }
6176
6259
  if (false) {
6177
- /** @type {?|undefined} */
6178
- RouteListParameterOptions.prototype.as;
6179
- /** @type {?|undefined} */
6180
- RouteListParameterOptions.prototype.optional;
6181
- /** @type {?|undefined} */
6182
- RouteListParameterOptions.prototype.remember;
6183
- /** @type {?|undefined} */
6184
- RouteListParameterOptions.prototype.defaultValue;
6185
- /** @type {?|undefined} */
6186
- RouteListParameterOptions.prototype.storeInUrl;
6260
+ /** @type {?} */
6261
+ ActivityOutletContext.prototype.activityClass;
6262
+ /** @type {?} */
6263
+ ActivityOutletContext.prototype.activityData;
6264
+ /**
6265
+ * @param {?} component
6266
+ * @return {?}
6267
+ */
6268
+ ActivityOutletContext.prototype.componentReady = function (component) { };
6187
6269
  }
6270
+
6188
6271
  /**
6189
- * @template T
6190
- * @param {?} type
6191
- * @param {?=} options
6192
- * @return {?}
6272
+ * @fileoverview added by tsickle
6273
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
6193
6274
  */
6194
- function RouteId(type, options) {
6195
- return (/**
6196
- * @param {?} prototype
6197
- * @param {?} propertyKey
6275
+ var InteractionGuard = /** @class */ (function () {
6276
+ function InteractionGuard(router, injector, interactionContext) {
6277
+ this.router = router;
6278
+ this.injector = injector;
6279
+ this.interactionContext = interactionContext;
6280
+ }
6281
+ /**
6282
+ * @param {?} route
6283
+ * @param {?} state
6284
+ * @return {?}
6285
+ */
6286
+ InteractionGuard.prototype.canActivate = /**
6287
+ * @param {?} route
6288
+ * @param {?} state
6289
+ * @return {?}
6290
+ */
6291
+ function (route, state) {
6292
+ return true;
6293
+ };
6294
+ /**
6295
+ * @param {?} component
6296
+ * @param {?} currentRoute
6297
+ * @param {?} currentState
6298
+ * @param {?=} nextState
6198
6299
  * @return {?}
6199
6300
  */
6200
- function (prototype, propertyKey) {
6201
- /** @type {?} */
6202
- var param = new exports.ParameterDefinition.RouteId(propertyKey.toString(), options, type);
6203
- typescriptUtilities.Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, param);
6204
- pectin.UseDelegate()(prototype, propertyKey);
6205
- });
6206
- }
6207
- /**
6208
- * @template T
6209
- * @param {?=} options
6210
- * @return {?}
6211
- */
6212
- function VisitParameter(options) {
6213
- /** @type {?} */
6214
- var opts = typescriptUtilities.Opts.get(options);
6215
- return (/**
6216
- * @param {?} prototype
6217
- * @param {?} propertyKey
6218
- * @return {?}
6301
+ InteractionGuard.prototype.canDeactivate = /**
6302
+ * @param {?} component
6303
+ * @param {?} currentRoute
6304
+ * @param {?} currentState
6305
+ * @param {?=} nextState
6306
+ * @return {?}
6307
+ */
6308
+ function (component, currentRoute, currentState, nextState) {
6309
+ return !this.interactionContext.isActive();
6310
+ };
6311
+ InteractionGuard.decorators = [
6312
+ { type: core.Injectable, args: [{
6313
+ providedIn: 'root'
6314
+ },] }
6315
+ ];
6316
+ /** @nocollapse */
6317
+ InteractionGuard.ctorParameters = function () { return [
6318
+ { type: router.Router },
6319
+ { type: core.Injector },
6320
+ { type: InteractionContext }
6321
+ ]; };
6322
+ /** @nocollapse */ InteractionGuard.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function InteractionGuard_Factory() { return new InteractionGuard(core.ɵɵinject(router.Router), core.ɵɵinject(core.INJECTOR), core.ɵɵinject(InteractionContext)); }, token: InteractionGuard, providedIn: "root" });
6323
+ __decorate([
6324
+ pectin.Trace(),
6325
+ __metadata("design:type", Function),
6326
+ __metadata("design:paramtypes", [router.ActivatedRouteSnapshot, router.RouterStateSnapshot]),
6327
+ __metadata("design:returntype", Object)
6328
+ ], InteractionGuard.prototype, "canActivate", null);
6329
+ __decorate([
6330
+ pectin.Trace(),
6331
+ __metadata("design:type", Function),
6332
+ __metadata("design:paramtypes", [NoopComponent, router.ActivatedRouteSnapshot, router.RouterStateSnapshot, router.RouterStateSnapshot]),
6333
+ __metadata("design:returntype", Object)
6334
+ ], InteractionGuard.prototype, "canDeactivate", null);
6335
+ return InteractionGuard;
6336
+ }());
6337
+ if (false) {
6338
+ /**
6339
+ * @type {?}
6340
+ * @private
6341
+ */
6342
+ InteractionGuard.prototype.router;
6343
+ /**
6344
+ * @type {?}
6345
+ * @private
6219
6346
  */
6220
- function (prototype, propertyKey) {
6221
- /** @type {?} */
6222
- var param = new exports.ParameterDefinition.ValueParameter(propertyKey.toString(), options, opts.getOptional("storeInUrl", null));
6223
- typescriptUtilities.Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, param);
6224
- pectin.UseDelegate()(prototype, propertyKey);
6225
- });
6226
- }
6227
- /**
6228
- * @template E
6229
- * @param {?=} options
6230
- * @return {?}
6231
- */
6232
- function VisitParameterList(options) {
6233
- /** @type {?} */
6234
- var opts = typescriptUtilities.Opts.get(options);
6235
- return (/**
6236
- * @param {?} prototype
6237
- * @param {?} propertyKey
6238
- * @return {?}
6347
+ InteractionGuard.prototype.injector;
6348
+ /**
6349
+ * @type {?}
6350
+ * @private
6239
6351
  */
6240
- function (prototype, propertyKey) {
6241
- /** @type {?} */
6242
- var param = new exports.ParameterDefinition.ArrayParameter(propertyKey.toString(), options, opts.getOptional("storeInUrl", null));
6243
- typescriptUtilities.Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, param);
6244
- pectin.UseDelegate()(prototype, propertyKey);
6245
- });
6352
+ InteractionGuard.prototype.interactionContext;
6246
6353
  }
6247
6354
 
6248
6355
  /**
6249
6356
  * @fileoverview added by tsickle
6250
6357
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
6251
6358
  */
6252
- /**
6253
- * @record
6254
- * @template S
6255
- */
6256
- function ParameterSanitiser() { }
6257
- if (false) {
6258
- /**
6259
- * @param {?} parameterValue
6260
- * @param {?=} visit
6261
- * @param {?=} injector
6262
- * @return {?}
6263
- */
6264
- ParameterSanitiser.prototype.sanitise = function (parameterValue, visit, injector) { };
6265
- }
6266
6359
 
6267
6360
  /**
6268
6361
  * @fileoverview added by tsickle
@@ -6270,18 +6363,21 @@
6270
6363
  */
6271
6364
  /**
6272
6365
  * @record
6273
- * @template T
6274
6366
  */
6275
- function ParameterSnapshot() { }
6367
+ function NavItem() { }
6276
6368
  if (false) {
6277
- /** @type {?} */
6278
- ParameterSnapshot.prototype.definition;
6279
- /** @type {?} */
6280
- ParameterSnapshot.prototype.value;
6281
6369
  /**
6282
6370
  * @return {?}
6283
6371
  */
6284
- ParameterSnapshot.prototype.isMissing = function () { };
6372
+ NavItem.prototype.title = function () { };
6373
+ /**
6374
+ * @return {?}
6375
+ */
6376
+ NavItem.prototype.icon = function () { };
6377
+ /**
6378
+ * @return {?}
6379
+ */
6380
+ NavItem.prototype.tooltip = function () { };
6285
6381
  }
6286
6382
 
6287
6383
  /**
@@ -6385,8 +6481,14 @@
6385
6481
  * @fileoverview added by tsickle
6386
6482
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
6387
6483
  */
6388
- exports.EnterPlaceGuard = /** @class */ (function () {
6389
- function EnterPlaceGuard(router, urlSerializer, placeRouter, placeHistory, injector) {
6484
+ /**
6485
+ * @abstract
6486
+ */
6487
+ /**
6488
+ * @abstract
6489
+ */
6490
+ exports.AbstractEnterPlaceGuard = /** @class */ (function () {
6491
+ function AbstractEnterPlaceGuard(router, urlSerializer, placeRouter, placeHistory, injector) {
6390
6492
  this.router = router;
6391
6493
  this.urlSerializer = urlSerializer;
6392
6494
  this.placeRouter = placeRouter;
@@ -6400,7 +6502,7 @@
6400
6502
  * @param {?} state
6401
6503
  * @return {?}
6402
6504
  */
6403
- EnterPlaceGuard.prototype.canActivate =
6505
+ AbstractEnterPlaceGuard.prototype.canActivate =
6404
6506
  // @Trace()
6405
6507
  /**
6406
6508
  * @param {?} activatedRoute
@@ -6409,85 +6511,177 @@
6409
6511
  */
6410
6512
  function (activatedRoute, state) {
6411
6513
  return __awaiter(this, void 0, void 0, function () {
6412
- var placeDefinition, params, parsedParams, initialVisit, sanitiser, sanitisedVisit, commands;
6514
+ var _this = this;
6413
6515
  return __generator(this, function (_a) {
6414
- switch (_a.label) {
6516
+ return [2 /*return*/, this.interceptInitialRouteOtherwise(activatedRoute, state, (/**
6517
+ * @return {?}
6518
+ */
6519
+ function () {
6520
+ return _this.authorisePlaceThen(activatedRoute, state, (/**
6521
+ * @param {?} placeDefinition
6522
+ * @return {?}
6523
+ */
6524
+ function (placeDefinition) { return __awaiter(_this, void 0, void 0, function () {
6525
+ var params, parsedParams, initialVisit, sanitiser, sanitisedVisit, commands;
6526
+ return __generator(this, function (_a) {
6527
+ switch (_a.label) {
6528
+ case 0:
6529
+ // Parse our route params.
6530
+ params = new AbstractEnterPlaceGuard.ConsolidatedParameterMap(activatedRoute.paramMap, activatedRoute.url);
6531
+ parsedParams = placeDefinition.parseRouteParams(params);
6532
+ initialVisit = this.placeRouter.navigationSession.getVisitFor(placeDefinition) || new Visit(placeDefinition, parsedParams);
6533
+ sanitiser = new VisitSanitiser(activatedRoute, this.router, this.placeHistory, this.injector);
6534
+ return [4 /*yield*/, sanitiser.sanitise(initialVisit.mergeRouteParameters(parsedParams))];
6535
+ case 1:
6536
+ sanitisedVisit = _a.sent();
6537
+ // Save the visit with any updated parameters. We need to save it so we remember any non route parameters
6538
+ this.placeRouter.navigationSession.storeVisit(sanitisedVisit);
6539
+ if (initialVisit.hasRoutingChangedFrom(sanitisedVisit)) {
6540
+ // Regenerate the url
6541
+ commands = this.placeRouter.parseUrl(state).createRedirectCommandsFor(sanitisedVisit);
6542
+ console.log('##### Place Guard Redirect', commands);
6543
+ return [2 /*return*/, this.router.createUrlTree(commands, {
6544
+ replaceUrl: true,
6545
+ skipLocationChange: false
6546
+ })];
6547
+ }
6548
+ else {
6549
+ return [2 /*return*/, true];
6550
+ }
6551
+ return [2 /*return*/];
6552
+ }
6553
+ });
6554
+ }); }));
6555
+ }))];
6556
+ });
6557
+ });
6558
+ };
6559
+ /**
6560
+ * @protected
6561
+ * @param {?} activatedRoute
6562
+ * @param {?} state
6563
+ * @param {?} canActivate
6564
+ * @return {?}
6565
+ */
6566
+ AbstractEnterPlaceGuard.prototype.authorisePlaceThen = /**
6567
+ * @protected
6568
+ * @param {?} activatedRoute
6569
+ * @param {?} state
6570
+ * @param {?} canActivate
6571
+ * @return {?}
6572
+ */
6573
+ function (activatedRoute, state, canActivate) {
6574
+ return __awaiter(this, void 0, void 0, function () {
6575
+ var placeDefinition, authorised, _a;
6576
+ return __generator(this, function (_b) {
6577
+ switch (_b.label) {
6415
6578
  case 0:
6416
- if (!exports.PlaceComponent.isPlaceComponentConstructor(activatedRoute.component)) return [3 /*break*/, 2];
6417
- placeDefinition = exports.PlaceComponent.getDefinition(activatedRoute.component);
6418
- // Parse our route params.
6419
- params = new EnterPlaceGuard.ConsolidatedParameterMap(activatedRoute.paramMap, activatedRoute.url);
6420
- parsedParams = placeDefinition.parseRouteParams(params);
6421
- initialVisit = this.placeRouter.navigationSession.getVisitFor(placeDefinition) || new Visit(placeDefinition, parsedParams);
6422
- sanitiser = new VisitSanitiser(activatedRoute, this.router, this.placeHistory, this.injector);
6423
- return [4 /*yield*/, sanitiser.sanitise(initialVisit.mergeRouteParameters(parsedParams))];
6579
+ if (!exports.ɵba.isPlaceComponentConstructor(activatedRoute.component)) return [3 /*break*/, 4];
6580
+ placeDefinition = exports.ɵba.getDefinition(activatedRoute.component);
6581
+ if (!placeDefinition.authenticate) return [3 /*break*/, 2];
6582
+ return [4 /*yield*/, this.isAuthorised(activatedRoute, state)];
6424
6583
  case 1:
6425
- sanitisedVisit = _a.sent();
6426
- // Save the visit with any updated parameters. We need to save it so we remember any non route parameters
6427
- this.placeRouter.navigationSession.storeVisit(sanitisedVisit);
6428
- if (initialVisit.hasRoutingChangedFrom(sanitisedVisit)) {
6429
- // Regenerate the url
6430
- commands = this.placeRouter.parseUrl(state).createRedirectCommandsFor(sanitisedVisit);
6431
- console.log('##### Place Guard Redirect', commands);
6432
- return [2 /*return*/, this.router.createUrlTree(commands, {
6433
- replaceUrl: true,
6434
- skipLocationChange: false
6435
- })];
6436
- }
6437
- else {
6438
- return [2 /*return*/, true];
6439
- }
6584
+ _a = _b.sent();
6440
6585
  return [3 /*break*/, 3];
6441
- case 2: return [2 /*return*/, pectin.lang.illegalState("expected component to be an instance of PlaceComponent, got " + activatedRoute.component)];
6442
- case 3: return [2 /*return*/];
6586
+ case 2:
6587
+ _a = true;
6588
+ _b.label = 3;
6589
+ case 3:
6590
+ authorised = _a;
6591
+ return [2 /*return*/, authorised === true ? canActivate(placeDefinition) : authorised];
6592
+ case 4: return [2 /*return*/, pectin.lang.illegalState("expected component to be an instance of PlaceComponent, got " + activatedRoute.component)];
6443
6593
  }
6444
6594
  });
6445
6595
  });
6446
6596
  };
6447
- EnterPlaceGuard.decorators = [
6448
- { type: core.Injectable, args: [{
6449
- providedIn: 'root'
6450
- },] }
6451
- ];
6452
- /** @nocollapse */
6453
- EnterPlaceGuard.ctorParameters = function () { return [
6454
- { type: router.Router },
6455
- { type: router.UrlSerializer },
6456
- { type: exports.ɵt },
6457
- { type: PlaceHistory },
6458
- { type: core.Injector }
6459
- ]; };
6460
- /** @nocollapse */ EnterPlaceGuard.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function EnterPlaceGuard_Factory() { return new EnterPlaceGuard(core.ɵɵinject(router.Router), core.ɵɵinject(router.UrlSerializer), core.ɵɵinject(exports.ɵt), core.ɵɵinject(PlaceHistory), core.ɵɵinject(core.INJECTOR)); }, token: EnterPlaceGuard, providedIn: "root" });
6461
- return EnterPlaceGuard;
6597
+ /**
6598
+ * @protected
6599
+ * @param {?} activatedRoute
6600
+ * @param {?} state
6601
+ * @param {?} canActivate
6602
+ * @return {?}
6603
+ */
6604
+ AbstractEnterPlaceGuard.prototype.interceptInitialRouteOtherwise = /**
6605
+ * @protected
6606
+ * @param {?} activatedRoute
6607
+ * @param {?} state
6608
+ * @param {?} canActivate
6609
+ * @return {?}
6610
+ */
6611
+ function (activatedRoute, state, canActivate) {
6612
+ return __awaiter(this, void 0, void 0, function () {
6613
+ return __generator(this, function (_a) {
6614
+ // TODO: this all only sort of works. Opening dialogs and clicking back multiple times breaks things.
6615
+ // TODO: next stage is to investigate tracking dialog state in a different placeoutlet and keeping those
6616
+ // TODO: urls out of the history.
6617
+ if (this.placeRouter.isInitialNavigation()) {
6618
+ // This is the very first entry into our app so we redirect to a dummy place so we can get bump our
6619
+ // history by one. This ensures that we can capture back button presses on the initial page without
6620
+ // leaving our app.
6621
+ return [2 /*return*/, this.placeRouter.performInitialNavigationIntercept(activatedRoute, state)];
6622
+ }
6623
+ else {
6624
+ return [2 /*return*/, canActivate()];
6625
+ }
6626
+ return [2 /*return*/];
6627
+ });
6628
+ });
6629
+ };
6630
+ /**
6631
+ * @param {?} activatedRoute
6632
+ * @param {?} state
6633
+ * @return {?}
6634
+ */
6635
+ AbstractEnterPlaceGuard.prototype.isAuthorised = /**
6636
+ * @param {?} activatedRoute
6637
+ * @param {?} state
6638
+ * @return {?}
6639
+ */
6640
+ function (activatedRoute, state) {
6641
+ return __awaiter(this, void 0, void 0, function () {
6642
+ var authorised;
6643
+ return __generator(this, function (_a) {
6644
+ authorised = this.getAuthGuard(this.injector).canActivate(activatedRoute, state);
6645
+ return [2 /*return*/, (authorised instanceof rxjs.Observable) ? authorised.toPromise() : authorised];
6646
+ });
6647
+ });
6648
+ };
6649
+ return AbstractEnterPlaceGuard;
6462
6650
  }());
6463
6651
  if (false) {
6464
6652
  /**
6465
6653
  * @type {?}
6466
6654
  * @private
6467
6655
  */
6468
- exports.EnterPlaceGuard.prototype.router;
6656
+ exports.AbstractEnterPlaceGuard.prototype.router;
6469
6657
  /**
6470
6658
  * @type {?}
6471
6659
  * @private
6472
6660
  */
6473
- exports.EnterPlaceGuard.prototype.urlSerializer;
6661
+ exports.AbstractEnterPlaceGuard.prototype.urlSerializer;
6474
6662
  /**
6475
6663
  * @type {?}
6476
6664
  * @private
6477
6665
  */
6478
- exports.EnterPlaceGuard.prototype.placeRouter;
6666
+ exports.AbstractEnterPlaceGuard.prototype.placeRouter;
6479
6667
  /**
6480
6668
  * @type {?}
6481
6669
  * @private
6482
6670
  */
6483
- exports.EnterPlaceGuard.prototype.placeHistory;
6671
+ exports.AbstractEnterPlaceGuard.prototype.placeHistory;
6484
6672
  /**
6485
6673
  * @type {?}
6486
6674
  * @private
6487
6675
  */
6488
- exports.EnterPlaceGuard.prototype.injector;
6676
+ exports.AbstractEnterPlaceGuard.prototype.injector;
6677
+ /**
6678
+ * @abstract
6679
+ * @param {?} injector
6680
+ * @return {?}
6681
+ */
6682
+ exports.AbstractEnterPlaceGuard.prototype.getAuthGuard = function (injector) { };
6489
6683
  }
6490
- (function (EnterPlaceGuard) {
6684
+ (function (AbstractEnterPlaceGuard) {
6491
6685
  /**
6492
6686
  * This a work around for the fact that an activated route with multiple segments doesn't
6493
6687
  * include the segment params in the paramMap as well as each segment returns an empty
@@ -6576,7 +6770,7 @@
6576
6770
  ], ConsolidatedParameterMap.prototype, "keys", null);
6577
6771
  return ConsolidatedParameterMap;
6578
6772
  }());
6579
- EnterPlaceGuard.ConsolidatedParameterMap = ConsolidatedParameterMap;
6773
+ AbstractEnterPlaceGuard.ConsolidatedParameterMap = ConsolidatedParameterMap;
6580
6774
  if (false) {
6581
6775
  /**
6582
6776
  * @type {?}
@@ -6642,7 +6836,7 @@
6642
6836
  */
6643
6837
  ParamMapAdapter.prototype.params;
6644
6838
  }
6645
- })(exports.EnterPlaceGuard || (exports.EnterPlaceGuard = {}));
6839
+ })(exports.AbstractEnterPlaceGuard || (exports.AbstractEnterPlaceGuard = {}));
6646
6840
 
6647
6841
  /**
6648
6842
  * @fileoverview added by tsickle
@@ -6693,12 +6887,99 @@
6693
6887
  LeavePlaceGuard.prototype.placeRouter;
6694
6888
  }
6695
6889
 
6890
+ /**
6891
+ * @fileoverview added by tsickle
6892
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
6893
+ */
6894
+ var NoopAuthGuard = /** @class */ (function () {
6895
+ function NoopAuthGuard() {
6896
+ }
6897
+ /**
6898
+ * @param {?} activatedRoute
6899
+ * @param {?} state
6900
+ * @return {?}
6901
+ */
6902
+ NoopAuthGuard.prototype.canActivate = /**
6903
+ * @param {?} activatedRoute
6904
+ * @param {?} state
6905
+ * @return {?}
6906
+ */
6907
+ function (activatedRoute, state) {
6908
+ return __awaiter(this, void 0, void 0, function () {
6909
+ return __generator(this, function (_a) {
6910
+ return [2 /*return*/, true];
6911
+ });
6912
+ });
6913
+ };
6914
+ NoopAuthGuard.decorators = [
6915
+ { type: core.Injectable, args: [{
6916
+ providedIn: 'root'
6917
+ },] }
6918
+ ];
6919
+ /** @nocollapse */
6920
+ NoopAuthGuard.ctorParameters = function () { return []; };
6921
+ /** @nocollapse */ NoopAuthGuard.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function NoopAuthGuard_Factory() { return new NoopAuthGuard(); }, token: NoopAuthGuard, providedIn: "root" });
6922
+ return NoopAuthGuard;
6923
+ }());
6924
+
6925
+ /**
6926
+ * @fileoverview added by tsickle
6927
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
6928
+ */
6929
+ /**
6930
+ * @record
6931
+ */
6932
+ function JsonArray() { }
6933
+ /**
6934
+ * @record
6935
+ */
6936
+ function JsonMap() { }
6937
+
6938
+ /**
6939
+ * @fileoverview added by tsickle
6940
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
6941
+ */
6942
+ /**
6943
+ * @record
6944
+ * @template S
6945
+ */
6946
+ function ParameterSanitiser() { }
6947
+ if (false) {
6948
+ /**
6949
+ * @param {?} parameterValue
6950
+ * @param {?=} visit
6951
+ * @param {?=} injector
6952
+ * @return {?}
6953
+ */
6954
+ ParameterSanitiser.prototype.sanitise = function (parameterValue, visit, injector) { };
6955
+ }
6956
+
6957
+ /**
6958
+ * @fileoverview added by tsickle
6959
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
6960
+ */
6961
+ /**
6962
+ * @record
6963
+ * @template T
6964
+ */
6965
+ function ParameterSnapshot() { }
6966
+ if (false) {
6967
+ /** @type {?} */
6968
+ ParameterSnapshot.prototype.definition;
6969
+ /** @type {?} */
6970
+ ParameterSnapshot.prototype.value;
6971
+ /**
6972
+ * @return {?}
6973
+ */
6974
+ ParameterSnapshot.prototype.isMissing = function () { };
6975
+ }
6976
+
6696
6977
  exports.ACTIVITY_DATA = ACTIVITY_DATA;
6697
6978
  exports.AUP_PLACE_CONFIG = AUP_PLACE_CONFIG;
6698
6979
  exports.AbstractActivity = AbstractActivity;
6699
6980
  exports.AbstractInputComponent = AbstractInputComponent;
6700
6981
  exports.AbstractPlaceNavigationComponent = AbstractPlaceNavigationComponent;
6701
- exports.Activity = exports.ɵbg;
6982
+ exports.Activity = exports.ɵbk;
6702
6983
  exports.ActivityContainerComponent = ActivityContainerComponent;
6703
6984
  exports.ActivityOutletComponent = ActivityOutletComponent;
6704
6985
  exports.AlertDialogComponent = AlertDialogComponent;
@@ -6706,7 +6987,7 @@
6706
6987
  exports.BusyOverlayComponent = BusyOverlayComponent;
6707
6988
  exports.CommandDirective = CommandDirective;
6708
6989
  exports.ComponentsModule = ComponentsModule;
6709
- exports.ConfirmThenDialogComponent = exports.ɵbi;
6990
+ exports.ConfirmThenDialogComponent = exports.ɵbm;
6710
6991
  exports.ConfirmationDialogComponent = ConfirmationDialogComponent;
6711
6992
  exports.DEFINITION_META_DATA_KEY = DEFINITION_META_DATA_KEY;
6712
6993
  exports.DIALOG_INTERACTION_SERVICE_DEFAULTS = DIALOG_INTERACTION_SERVICE_DEFAULTS;
@@ -6716,6 +6997,7 @@
6716
6997
  exports.DisposableComponent = DisposableComponent;
6717
6998
  exports.EmptyStateComponent = EmptyStateComponent;
6718
6999
  exports.FocusBindingDirective = FocusBindingDirective;
7000
+ exports.Formatter = exports.ɵbd;
6719
7001
  exports.InplaceInteractionContextComponent = InplaceInteractionContextComponent;
6720
7002
  exports.InteractionContext = InteractionContext;
6721
7003
  exports.InteractionGuard = InteractionGuard;
@@ -6724,11 +7006,13 @@
6724
7006
  exports.LEFT_RIGHT_PLACE_ANIMATION = LEFT_RIGHT_PLACE_ANIMATION;
6725
7007
  exports.LeavePlaceGuard = LeavePlaceGuard;
6726
7008
  exports.ListPlaceNavComponent = ListPlaceNavComponent;
6727
- exports.NavigationSession = exports.ɵu;
7009
+ exports.NoopAuthGuard = NoopAuthGuard;
6728
7010
  exports.NoopComponent = NoopComponent;
7011
+ exports.NoopGatewayPlace = NoopGatewayPlace;
6729
7012
  exports.NumberInputComponent = NumberInputComponent;
6730
7013
  exports.PasswordInputComponent = PasswordInputComponent;
6731
7014
  exports.Place = Place;
7015
+ exports.PlaceComponent = exports.ɵba;
6732
7016
  exports.PlaceHistory = PlaceHistory;
6733
7017
  exports.PlaceModule = PlaceModule;
6734
7018
  exports.PlaceOutletComponent = PlaceOutletComponent;
@@ -6748,17 +7032,19 @@
6748
7032
  exports.slideDownAndUpAnimation = slideDownAndUpAnimation;
6749
7033
  exports.ɵa = DirectivesModule;
6750
7034
  exports.ɵb = CommandDirective;
6751
- exports.ɵba = InteractionModule;
6752
- exports.ɵbb = ActivityContainerComponent;
6753
- exports.ɵbc = ActivityOutletComponent;
6754
- exports.ɵbd = ConfirmationDialogComponent;
6755
- exports.ɵbe = AbstractActivity;
6756
- exports.ɵbf = ACTIVITY_DATA;
6757
- exports.ɵbj = AlertDialogComponent;
6758
- exports.ɵbl = InteractionOutletComponent;
6759
- exports.ɵbm = InplaceInteractionContextComponent;
6760
- exports.ɵbn = DIALOG_INTERACTION_SERVICE_DEFAULTS;
6761
- exports.ɵbo = DialogInteractionService;
7035
+ exports.ɵbb = Place;
7036
+ exports.ɵbc = VisitParameter;
7037
+ exports.ɵbe = InteractionModule;
7038
+ exports.ɵbf = ActivityContainerComponent;
7039
+ exports.ɵbg = ActivityOutletComponent;
7040
+ exports.ɵbh = ConfirmationDialogComponent;
7041
+ exports.ɵbi = AbstractActivity;
7042
+ exports.ɵbj = ACTIVITY_DATA;
7043
+ exports.ɵbn = AlertDialogComponent;
7044
+ exports.ɵbp = InteractionOutletComponent;
7045
+ exports.ɵbq = InplaceInteractionContextComponent;
7046
+ exports.ɵbr = DIALOG_INTERACTION_SERVICE_DEFAULTS;
7047
+ exports.ɵbs = DialogInteractionService;
6762
7048
  exports.ɵc = FocusBindingDirective;
6763
7049
  exports.ɵd = DisposableComponent;
6764
7050
  exports.ɵe = ComponentsModule;
@@ -6775,11 +7061,12 @@
6775
7061
  exports.ɵp = leftRightPlaceAnimation;
6776
7062
  exports.ɵq = LEFT_RIGHT_PLACE_ANIMATION;
6777
7063
  exports.ɵr = AUP_PLACE_CONFIG;
6778
- exports.ɵv = InteractionContext;
6779
- exports.ɵw = PlaceHistory;
6780
- exports.ɵx = TabbedPlaceNavigationComponent;
6781
- exports.ɵy = AbstractPlaceNavigationComponent;
6782
- exports.ɵz = ListPlaceNavComponent;
7064
+ exports.ɵu = InteractionContext;
7065
+ exports.ɵv = PlaceHistory;
7066
+ exports.ɵw = TabbedPlaceNavigationComponent;
7067
+ exports.ɵx = AbstractPlaceNavigationComponent;
7068
+ exports.ɵy = ListPlaceNavComponent;
7069
+ exports.ɵz = NoopGatewayPlace;
6783
7070
 
6784
7071
  Object.defineProperty(exports, '__esModule', { value: true });
6785
7072