@coolon/angular-ui-powerups 0.0.92 → 0.0.94

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