@coolon/angular-ui-powerups 0.0.62 → 0.0.65

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 (46) hide show
  1. package/bundles/coolon-angular-ui-powerups.umd.js +738 -582
  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 +10 -10
  6. package/coolon-angular-ui-powerups.metadata.json +1 -1
  7. package/esm2015/coolon-angular-ui-powerups.js +10 -10
  8. package/esm2015/index.js +2 -2
  9. package/esm2015/lib/interaction/abstract-activity.js +5 -68
  10. package/esm2015/lib/interaction/activity.js +71 -11
  11. package/esm2015/lib/interaction/components/activity-container/activity-container.component.js +213 -120
  12. package/esm2015/lib/interaction/components/activity-outlet/activity-outlet-context.js +6 -7
  13. package/esm2015/lib/interaction/components/activity-outlet/activity-outlet.component.js +19 -43
  14. package/esm2015/lib/interaction/index.js +2 -2
  15. package/esm2015/lib/interaction/interaction-context.js +15 -10
  16. package/esm2015/lib/interaction/services/dialog-interaction.service.js +99 -86
  17. package/esm2015/lib/place/guards/leave-place.guard.js +95 -115
  18. package/esm2015/lib/place/place-router.js +87 -6
  19. package/esm2015/public_api.js +2 -2
  20. package/esm5/coolon-angular-ui-powerups.js +10 -10
  21. package/esm5/index.js +2 -2
  22. package/esm5/lib/interaction/abstract-activity.js +10 -96
  23. package/esm5/lib/interaction/activity.js +110 -11
  24. package/esm5/lib/interaction/components/activity-container/activity-container.component.js +285 -143
  25. package/esm5/lib/interaction/components/activity-outlet/activity-outlet-context.js +6 -7
  26. package/esm5/lib/interaction/components/activity-outlet/activity-outlet.component.js +19 -67
  27. package/esm5/lib/interaction/index.js +2 -2
  28. package/esm5/lib/interaction/interaction-context.js +24 -21
  29. package/esm5/lib/interaction/services/dialog-interaction.service.js +120 -85
  30. package/esm5/lib/place/guards/leave-place.guard.js +53 -123
  31. package/esm5/lib/place/place-router.js +96 -6
  32. package/esm5/public_api.js +2 -2
  33. package/fesm2015/coolon-angular-ui-powerups.js +591 -449
  34. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  35. package/fesm5/coolon-angular-ui-powerups.js +711 -556
  36. package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
  37. package/lib/interaction/abstract-activity.d.ts +4 -13
  38. package/lib/interaction/activity.d.ts +13 -6
  39. package/lib/interaction/components/activity-container/activity-container.component.d.ts +37 -25
  40. package/lib/interaction/components/activity-outlet/activity-outlet-context.d.ts +2 -5
  41. package/lib/interaction/components/activity-outlet/activity-outlet.component.d.ts +1 -10
  42. package/lib/interaction/interaction-context.d.ts +7 -7
  43. package/lib/interaction/services/dialog-interaction.service.d.ts +5 -6
  44. package/lib/place/guards/leave-place.guard.d.ts +6 -7
  45. package/lib/place/place-router.d.ts +14 -1
  46. package/package.json +1 -1
@@ -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('@coolon/typescript-utilities'), require('@angular/material/dialog'), require('@angular/router'), 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('lodash'), 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', '@coolon/typescript-utilities', '@angular/material/dialog', '@angular/router', '@angular/material/icon', '@angular/material/list', '@angular/material/tooltip', '@typescript-plus/fast-memoize-decorator/dist/src', '@typescript-plus/fast-memoize-decorator', 'reflect-metadata', 'lodash', '@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.typescriptUtilities, global.ng.material.dialog, global.ng.router, global.ng.material.icon, global.ng.material.list, global.ng.material.tooltip, global.src, global.fastMemoizeDecorator, null, global.___default, global.ng.animations, global.ResizeObserver));
5
- }(this, function (exports, common, core, forms, material, tabs, animations, pectin, portal, typescriptUtilities, dialog, router, icon, list, tooltip, src, fastMemoizeDecorator, reflectMetadata, ___default, 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('lodash'), require('@coolon/typescript-utilities'), require('@angular/material/dialog'), require('uuid'), require('@angular/material/icon'), require('@angular/material/list'), require('@angular/material/tooltip'), require('@angular/router'), 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', 'lodash', '@coolon/typescript-utilities', '@angular/material/dialog', 'uuid', '@angular/material/icon', '@angular/material/list', '@angular/material/tooltip', '@angular/router', '@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.___default, global.typescriptUtilities, global.ng.material.dialog, global.uuid, global.ng.material.icon, global.ng.material.list, global.ng.material.tooltip, global.ng.router, global.src, global.fastMemoizeDecorator, null, global.ng.animations, global.ResizeObserver));
5
+ }(this, function (exports, common, core, forms, material, tabs, animations, pectin, portal, ___default, typescriptUtilities, dialog, uuid, icon, list, tooltip, router, src, fastMemoizeDecorator, reflectMetadata, animations$1, ResizeObserver) { '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;
@@ -991,35 +991,37 @@
991
991
  function InteractionContext() {
992
992
  return _super.call(this) || this;
993
993
  }
994
- /**
995
- * Returns true if an activity is currently running.
996
- */
997
- /**
998
- * Returns true if an activity is currently running.
999
- * @return {?}
1000
- */
1001
- InteractionContext.prototype.isActive = /**
1002
- * Returns true if an activity is currently running.
1003
- * @return {?}
1004
- */
1005
- function () {
1006
- return this.activityList.length > 0;
1007
- };
994
+ Object.defineProperty(InteractionContext.prototype, "currentActivity", {
995
+ /**
996
+ * Returns the activity that is currently active.
997
+ * This model is only updated in the next tick after the view has been updated.
998
+ */
999
+ get: /**
1000
+ * Returns the activity that is currently active.
1001
+ * This model is only updated in the next tick after the view has been updated.
1002
+ * @return {?}
1003
+ */
1004
+ function () {
1005
+ return ___default.last(this.activityList.value);
1006
+ },
1007
+ enumerable: true,
1008
+ configurable: true
1009
+ });
1008
1010
  return InteractionContext;
1009
1011
  }(pectin.GarbageCollector));
1010
1012
  if (false) {
1011
- /**
1012
- * Returns the activity that is currently active.
1013
- * This model is only updated in the next tick after the view has been updated.
1014
- * @type {?}
1015
- */
1016
- InteractionContext.prototype.currentActivity;
1017
1013
  /**
1018
1014
  * Returns the current list of activities that are in progress.
1019
1015
  * This model is only updated in the next tick after the view has been updated.
1020
1016
  * @type {?}
1021
1017
  */
1022
1018
  InteractionContext.prototype.activityList;
1019
+ /**
1020
+ * Returns true if an activity is currently running.
1021
+ * @abstract
1022
+ * @return {?}
1023
+ */
1024
+ InteractionContext.prototype.isActive = function () { };
1023
1025
  /**
1024
1026
  * @abstract
1025
1027
  * @template D, R, E
@@ -1059,29 +1061,121 @@
1059
1061
  /** @type {?} */
1060
1062
  var ACTIVITY_DATA = new core.InjectionToken('InteractionActivityData');
1061
1063
  /**
1062
- * @record
1064
+ * @abstract
1063
1065
  * @template D, R, E
1064
1066
  */
1065
- function Activity() { }
1066
- if (false) {
1067
- /** @type {?} */
1068
- Activity.prototype.busy;
1067
+ /**
1068
+ * @abstract
1069
+ * @template D, R, E
1070
+ */
1071
+ exports.ɵba = /** @class */ (function () {
1072
+ function Activity() {
1073
+ this._busyModel = new pectin.DelegatingValueModel().withDefault(false);
1074
+ }
1069
1075
  /**
1070
1076
  * @param {?} activityContext
1071
1077
  * @return {?}
1072
1078
  */
1073
- Activity.prototype.initialise = function (activityContext) { };
1079
+ Activity.prototype.initialise = /**
1080
+ * @param {?} activityContext
1081
+ * @return {?}
1082
+ */
1083
+ function (activityContext) {
1084
+ typescriptUtilities.assert.isNil(this._activityContext);
1085
+ this._activityContext = activityContext;
1086
+ };
1074
1087
  /**
1075
- * @param {?} result
1088
+ * @param {?=} result
1089
+ * @return {?}
1090
+ */
1091
+ Activity.prototype.done = /**
1092
+ * @param {?=} result
1076
1093
  * @return {?}
1077
1094
  */
1078
- Activity.prototype.done = function (result) { };
1095
+ function (result) {
1096
+ return this._activityContext.onDone(result);
1097
+ };
1079
1098
  /**
1080
- * @param {?} e
1099
+ * @param {?=} error
1081
1100
  * @return {?}
1082
1101
  */
1083
- Activity.prototype.cancel = function (e) { };
1102
+ Activity.prototype.cancel = /**
1103
+ * @param {?=} error
1104
+ * @return {?}
1105
+ */
1106
+ function (error) {
1107
+ this._activityContext.onCancel(error);
1108
+ };
1109
+ // @Trace()
1110
+ // @Trace()
1111
+ /**
1112
+ * @return {?}
1113
+ */
1114
+ Activity.prototype.onActivityReady =
1115
+ // @Trace()
1116
+ /**
1117
+ * @return {?}
1118
+ */
1119
+ function () {
1120
+ };
1121
+ Object.defineProperty(Activity.prototype, "busy", {
1122
+ get: /**
1123
+ * @return {?}
1124
+ */
1125
+ function () {
1126
+ return this._busyModel.readonly;
1127
+ },
1128
+ enumerable: true,
1129
+ configurable: true
1130
+ });
1131
+ /**
1132
+ * @param {?} busyModel
1133
+ * @return {?}
1134
+ */
1135
+ Activity.prototype.busyWhile = /**
1136
+ * @param {?} busyModel
1137
+ * @return {?}
1138
+ */
1139
+ function (busyModel) {
1140
+ this._busyModel.setDelegate(busyModel);
1141
+ };
1142
+ /**
1143
+ * @return {?}
1144
+ */
1145
+ Activity.prototype.isBusy = /**
1146
+ * @return {?}
1147
+ */
1148
+ function () {
1149
+ return this._busyModel.value;
1150
+ };
1151
+ return Activity;
1152
+ }());
1153
+ if (false) {
1154
+ /**
1155
+ * @type {?}
1156
+ * @private
1157
+ */
1158
+ exports.ɵba.prototype._busyModel;
1159
+ /**
1160
+ * @type {?}
1161
+ * @private
1162
+ */
1163
+ exports.ɵba.prototype._activityContext;
1084
1164
  }
1165
+ (function (Activity) {
1166
+ /**
1167
+ * @record
1168
+ * @template R, E
1169
+ */
1170
+ function Callbacks() { }
1171
+ Activity.Callbacks = Callbacks;
1172
+ if (false) {
1173
+ /** @type {?} */
1174
+ Callbacks.prototype.onDone;
1175
+ /** @type {?} */
1176
+ Callbacks.prototype.onCancel;
1177
+ }
1178
+ })(exports.ɵba || (exports.ɵba = {}));
1085
1179
 
1086
1180
  /**
1087
1181
  * @fileoverview added by tsickle
@@ -1102,11 +1196,19 @@
1102
1196
  this.injector = injector;
1103
1197
  }
1104
1198
  Object.defineProperty(ActivityOutletComponent.prototype, "activityContext", {
1199
+ get: /**
1200
+ * @return {?}
1201
+ */
1202
+ function () {
1203
+ return this._activityContext;
1204
+ },
1105
1205
  set: /**
1106
1206
  * @param {?} activityContext
1107
1207
  * @return {?}
1108
1208
  */
1109
1209
  function (activityContext) {
1210
+ pectin.assert.isNil(this._activityContext);
1211
+ this._activityContext = activityContext;
1110
1212
  this.loadActivity(activityContext);
1111
1213
  },
1112
1214
  enumerable: true,
@@ -1135,7 +1237,7 @@
1135
1237
  providers: [
1136
1238
  {
1137
1239
  provide: InteractionContext,
1138
- useValue: this
1240
+ useValue: this.interactionContext
1139
1241
  },
1140
1242
  { provide: ACTIVITY_DATA, useValue: activityContext.activityData }
1141
1243
  ],
@@ -1146,6 +1248,9 @@
1146
1248
  this.viewContainerRef.clear();
1147
1249
  this.activityComponentRef = this.viewContainerRef.createComponent(componentFactory, 0, injector);
1148
1250
  this.activityComponentRef.instance.initialise(activityContext);
1251
+ if (this.activityContext.componentReady) {
1252
+ this.activityContext.componentReady(this.component);
1253
+ }
1149
1254
  };
1150
1255
  Object.defineProperty(ActivityOutletComponent.prototype, "component", {
1151
1256
  get: /**
@@ -1157,71 +1262,6 @@
1157
1262
  enumerable: true,
1158
1263
  configurable: true
1159
1264
  });
1160
- /**
1161
- * @param {?} alert
1162
- * @return {?}
1163
- */
1164
- ActivityOutletComponent.prototype.alert = /**
1165
- * @param {?} alert
1166
- * @return {?}
1167
- */
1168
- function (alert) {
1169
- return this.interactionContext.alert(alert);
1170
- };
1171
- /**
1172
- * @param {?} confirm
1173
- * @return {?}
1174
- */
1175
- ActivityOutletComponent.prototype.confirm = /**
1176
- * @param {?} confirm
1177
- * @return {?}
1178
- */
1179
- function (confirm) {
1180
- return this.interactionContext.confirm(confirm);
1181
- };
1182
- /**
1183
- * @template D1, R1, E1
1184
- * @param {?} confirm
1185
- * @param {?} activityType
1186
- * @param {?=} data
1187
- * @return {?}
1188
- */
1189
- ActivityOutletComponent.prototype.confirmThen = /**
1190
- * @template D1, R1, E1
1191
- * @param {?} confirm
1192
- * @param {?} activityType
1193
- * @param {?=} data
1194
- * @return {?}
1195
- */
1196
- function (confirm, activityType, data) {
1197
- return this.interactionContext.confirmThen(confirm, activityType, data);
1198
- };
1199
- /**
1200
- * @template D1, R1, E1
1201
- * @param {?} activityType
1202
- * @param {?=} data
1203
- * @return {?}
1204
- */
1205
- ActivityOutletComponent.prototype.startActivity = /**
1206
- * @template D1, R1, E1
1207
- * @param {?} activityType
1208
- * @param {?=} data
1209
- * @return {?}
1210
- */
1211
- function (activityType, data) {
1212
- return this.interactionContext.startActivity(activityType, data);
1213
- };
1214
- /**
1215
- * @return {?}
1216
- */
1217
- ActivityOutletComponent.prototype.notifyReady = /**
1218
- * @return {?}
1219
- */
1220
- function () {
1221
- if (this.activityComponentRef.instance['onActivityReady']) {
1222
- this.activityComponentRef.instance['onActivityReady']();
1223
- }
1224
- };
1225
1265
  ActivityOutletComponent.decorators = [
1226
1266
  { type: core.Component, args: [{
1227
1267
  selector: 'angular-ui-powerups-activity-outlet',
@@ -1244,6 +1284,11 @@
1244
1284
  if (false) {
1245
1285
  /** @type {?} */
1246
1286
  ActivityOutletComponent.prototype.interactionContext;
1287
+ /**
1288
+ * @type {?}
1289
+ * @private
1290
+ */
1291
+ ActivityOutletComponent.prototype._activityContext;
1247
1292
  /**
1248
1293
  * @type {?}
1249
1294
  * @private
@@ -1272,108 +1317,22 @@
1272
1317
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1273
1318
  */
1274
1319
  /**
1320
+ * Deprecated. You can now extend the Activity class directly.
1321
+ * @abstract
1275
1322
  * @template D, R, E
1276
1323
  */
1277
1324
  var /**
1325
+ * Deprecated. You can now extend the Activity class directly.
1326
+ * @abstract
1278
1327
  * @template D, R, E
1279
1328
  */
1280
1329
  AbstractActivity = /** @class */ (function (_super) {
1281
1330
  __extends(AbstractActivity, _super);
1282
1331
  function AbstractActivity() {
1283
- var _this = _super !== null && _super.apply(this, arguments) || this;
1284
- _this._busyModel = new pectin.DelegatingValueModel().withDefault(false);
1285
- return _this;
1332
+ return _super !== null && _super.apply(this, arguments) || this;
1286
1333
  }
1287
- /**
1288
- * @param {?} activityContext
1289
- * @return {?}
1290
- */
1291
- AbstractActivity.prototype.initialise = /**
1292
- * @param {?} activityContext
1293
- * @return {?}
1294
- */
1295
- function (activityContext) {
1296
- typescriptUtilities.assert.isNil(this.activityContext);
1297
- this.activityContext = activityContext;
1298
- };
1299
- /**
1300
- * @param {?=} result
1301
- * @return {?}
1302
- */
1303
- AbstractActivity.prototype.done = /**
1304
- * @param {?=} result
1305
- * @return {?}
1306
- */
1307
- function (result) {
1308
- return this.activityContext.onDone(result);
1309
- };
1310
- /**
1311
- * @param {?=} error
1312
- * @return {?}
1313
- */
1314
- AbstractActivity.prototype.cancel = /**
1315
- * @param {?=} error
1316
- * @return {?}
1317
- */
1318
- function (error) {
1319
- this.activityContext.onCancel(error);
1320
- };
1321
- // @Trace()
1322
- // @Trace()
1323
- /**
1324
- * @return {?}
1325
- */
1326
- AbstractActivity.prototype.onActivityReady =
1327
- // @Trace()
1328
- /**
1329
- * @return {?}
1330
- */
1331
- function () {
1332
- };
1333
- Object.defineProperty(AbstractActivity.prototype, "busy", {
1334
- get: /**
1335
- * @return {?}
1336
- */
1337
- function () {
1338
- return this._busyModel.readonly;
1339
- },
1340
- enumerable: true,
1341
- configurable: true
1342
- });
1343
- /**
1344
- * @param {?} busyModel
1345
- * @return {?}
1346
- */
1347
- AbstractActivity.prototype.busyWhile = /**
1348
- * @param {?} busyModel
1349
- * @return {?}
1350
- */
1351
- function (busyModel) {
1352
- this._busyModel.setDelegate(busyModel);
1353
- };
1354
- /**
1355
- * @return {?}
1356
- */
1357
- AbstractActivity.prototype.isBusy = /**
1358
- * @return {?}
1359
- */
1360
- function () {
1361
- return this._busyModel.value;
1362
- };
1363
1334
  return AbstractActivity;
1364
- }(DisposableComponent));
1365
- if (false) {
1366
- /**
1367
- * @type {?}
1368
- * @private
1369
- */
1370
- AbstractActivity.prototype._busyModel;
1371
- /**
1372
- * @type {?}
1373
- * @private
1374
- */
1375
- AbstractActivity.prototype.activityContext;
1376
- }
1335
+ }(exports.ɵba));
1377
1336
 
1378
1337
  /**
1379
1338
  * @fileoverview added by tsickle
@@ -1419,7 +1378,7 @@
1419
1378
  /**
1420
1379
  * @template D, R, E
1421
1380
  */
1422
- exports.ɵba = /** @class */ (function (_super) {
1381
+ exports.ɵbc = /** @class */ (function (_super) {
1423
1382
  __extends(ConfirmThenDialogComponent, _super);
1424
1383
  function ConfirmThenDialogComponent(config, interactionContext) {
1425
1384
  var _this = _super.call(this) || this;
@@ -1491,9 +1450,9 @@
1491
1450
  }(AbstractActivity));
1492
1451
  if (false) {
1493
1452
  /** @type {?} */
1494
- exports.ɵba.prototype.config;
1453
+ exports.ɵbc.prototype.config;
1495
1454
  /** @type {?} */
1496
- exports.ɵba.prototype.interactionContext;
1455
+ exports.ɵbc.prototype.interactionContext;
1497
1456
  }
1498
1457
  (function (ConfirmThenDialogComponent) {
1499
1458
  /**
@@ -1510,7 +1469,7 @@
1510
1469
  /** @type {?} */
1511
1470
  Data.prototype.data;
1512
1471
  }
1513
- })(exports.ɵba || (exports.ɵba = {}));
1472
+ })(exports.ɵbc || (exports.ɵbc = {}));
1514
1473
 
1515
1474
  /**
1516
1475
  * @fileoverview added by tsickle
@@ -1563,16 +1522,174 @@
1563
1522
  * @fileoverview added by tsickle
1564
1523
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1565
1524
  */
1566
- exports.ɵu = /** @class */ (function (_super) {
1525
+ /**
1526
+ * Note: this class is mutable and is stored in a list model. This is normally a big no no but
1527
+ * we're manually deriving other models from the list after view state changes. I.e. we not
1528
+ * using pectin chains on any of the mutable fields.
1529
+ * @template D, R, E
1530
+ */
1531
+ var /**
1532
+ * Note: this class is mutable and is stored in a list model. This is normally a big no no but
1533
+ * we're manually deriving other models from the list after view state changes. I.e. we not
1534
+ * using pectin chains on any of the mutable fields.
1535
+ * @template D, R, E
1536
+ */
1537
+ TabContext = /** @class */ (function () {
1538
+ function TabContext(activityData, activityClass, interactionContext, activityCallbacks) {
1539
+ this.activityData = activityData;
1540
+ this.activityClass = activityClass;
1541
+ this.interactionContext = interactionContext;
1542
+ this.activityCallbacks = activityCallbacks;
1543
+ this._complete = false;
1544
+ }
1545
+ /**
1546
+ * @return {?}
1547
+ */
1548
+ TabContext.prototype.isComponentRealised = /**
1549
+ * @return {?}
1550
+ */
1551
+ function () {
1552
+ return !!this._component;
1553
+ };
1554
+ /**
1555
+ * @return {?}
1556
+ */
1557
+ TabContext.prototype.isComplete = /**
1558
+ * @return {?}
1559
+ */
1560
+ function () {
1561
+ return this._complete;
1562
+ };
1563
+ /**
1564
+ * @param {?} component
1565
+ * @return {?}
1566
+ */
1567
+ TabContext.prototype.componentReady = /**
1568
+ * @param {?} component
1569
+ * @return {?}
1570
+ */
1571
+ function (component) {
1572
+ pectin.assert.isNil(this._component);
1573
+ this._component = component;
1574
+ };
1575
+ Object.defineProperty(TabContext.prototype, "component", {
1576
+ get: /**
1577
+ * @return {?}
1578
+ */
1579
+ function () {
1580
+ return this._component;
1581
+ },
1582
+ enumerable: true,
1583
+ configurable: true
1584
+ });
1585
+ // @Trace()
1586
+ // @Trace()
1587
+ /**
1588
+ * @param {?} result
1589
+ * @return {?}
1590
+ */
1591
+ TabContext.prototype.onDone =
1592
+ // @Trace()
1593
+ /**
1594
+ * @param {?} result
1595
+ * @return {?}
1596
+ */
1597
+ function (result) {
1598
+ this._complete = true;
1599
+ this.activityCallbacks.onDone(result);
1600
+ };
1601
+ // @Trace()
1602
+ // @Trace()
1603
+ /**
1604
+ * @param {?} error
1605
+ * @return {?}
1606
+ */
1607
+ TabContext.prototype.onCancel =
1608
+ // @Trace()
1609
+ /**
1610
+ * @param {?} error
1611
+ * @return {?}
1612
+ */
1613
+ function (error) {
1614
+ this._complete = true;
1615
+ this.activityCallbacks.onCancel(error);
1616
+ };
1617
+ return TabContext;
1618
+ }());
1619
+ if (false) {
1620
+ /**
1621
+ * @type {?}
1622
+ * @private
1623
+ */
1624
+ TabContext.prototype._complete;
1625
+ /**
1626
+ * @type {?}
1627
+ * @private
1628
+ */
1629
+ TabContext.prototype._component;
1630
+ /** @type {?} */
1631
+ TabContext.prototype.activityData;
1632
+ /** @type {?} */
1633
+ TabContext.prototype.activityClass;
1634
+ /** @type {?} */
1635
+ TabContext.prototype.interactionContext;
1636
+ /** @type {?} */
1637
+ TabContext.prototype.activityCallbacks;
1638
+ }
1639
+ /**
1640
+ * @template D, R, E
1641
+ */
1642
+ var ActivityContainerComponent = /** @class */ (function (_super) {
1567
1643
  __extends(ActivityContainerComponent, _super);
1568
1644
  function ActivityContainerComponent() {
1569
1645
  var _this = _super.call(this) || this;
1570
- _this.activityOutletTabs = new pectin.MutableListModel();
1571
- _this.obsoleteTabs = [];
1646
+ _this.activityFinishedEvents = new pectin.MutableStream();
1647
+ _this.activityTabs = new pectin.MutableListModel();
1572
1648
  _this.finished = false;
1573
1649
  _this._activityList = new pectin.MutableListModel();
1650
+ 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;
1651
+ chain(_this.activityFinishedEvents).throttle(50).subscribe((/**
1652
+ * @return {?}
1653
+ */
1654
+ function () { return _this.onActivityFinished(); }));
1574
1655
  return _this;
1575
1656
  }
1657
+ Object.defineProperty(ActivityContainerComponent.prototype, "initialActivityOutletContext", {
1658
+ get: /**
1659
+ * @return {?}
1660
+ */
1661
+ function () {
1662
+ return this.activityTabs.length > 0 ? this.activityTabs.value[0] : null;
1663
+ },
1664
+ set: /**
1665
+ * @param {?} initialContext
1666
+ * @return {?}
1667
+ */
1668
+ function (initialContext) {
1669
+ var _this = this;
1670
+ pectin.assert.isNil(this.initialActivityOutletContext);
1671
+ this.activityTabs.push(new TabContext(initialContext.activityData, initialContext.activityClass, this, {
1672
+ onDone: (/**
1673
+ * @param {?} result
1674
+ * @return {?}
1675
+ */
1676
+ function (result) {
1677
+ _this.finished = true;
1678
+ return initialContext.onDone(result);
1679
+ }),
1680
+ onCancel: (/**
1681
+ * @param {?} error
1682
+ * @return {?}
1683
+ */
1684
+ function (error) {
1685
+ _this.finished = true;
1686
+ return initialContext.onCancel(error);
1687
+ })
1688
+ }));
1689
+ },
1690
+ enumerable: true,
1691
+ configurable: true
1692
+ });
1576
1693
  /**
1577
1694
  * @return {?}
1578
1695
  */
@@ -1608,94 +1725,28 @@
1608
1725
  */
1609
1726
  function () {
1610
1727
  var _this = this;
1611
- var observe = pectin.Dsl.disposeWith(this).observe;
1612
- this._activityList.value = this.outlets.toArray().map((/**
1613
- * @param {?} c
1728
+ var _a = pectin.Dsl.disposeWith(this), chain = _a.chain, observe = _a.observe;
1729
+ observe.valuesFrom(this.outlets.changes).subscribe((/**
1614
1730
  * @return {?}
1615
1731
  */
1616
- function (c) { return c.component; }));
1617
- observe.valuesFrom(this.outlets.changes).subscribe((/**
1618
- * @param {?} change
1732
+ function () { return setTimeout((/**
1619
1733
  * @return {?}
1620
1734
  */
1621
- function (change) {
1622
- _this.safelyUpdateActivityList(change.map((/**
1623
- * @param {?} c
1624
- * @return {?}
1625
- */
1626
- function (c) { return c.component; })));
1627
- }));
1735
+ function () { return _this.updateActivityList(); })); }));
1628
1736
  observe.valuesFrom(this.tabs.animationDone).subscribe((/**
1629
1737
  * @return {?}
1630
1738
  */
1631
1739
  function () { return _this.onAnimationFinished(); }));
1740
+ this.updateActivityList();
1632
1741
  };
1633
1742
  /**
1634
- * Update in the next tick to avoid changing state in the current change detection cycle.
1635
- * @param activities
1636
- */
1637
- /**
1638
- * Update in the next tick to avoid changing state in the current change detection cycle.
1639
- * @private
1640
- * @param {?} activities
1641
- * @return {?}
1642
- */
1643
- ActivityContainerComponent.prototype.safelyUpdateActivityList = /**
1644
- * Update in the next tick to avoid changing state in the current change detection cycle.
1645
- * @private
1646
- * @param {?} activities
1647
- * @return {?}
1648
- */
1649
- function (activities) {
1650
- var _this = this;
1651
- setTimeout((/**
1652
- * @return {?}
1653
- */
1654
- function () { return _this._activityList.value = activities; }));
1655
- };
1656
- /**
1657
- * @template D, R, E
1658
- * @param {?} initialContext
1659
- * @return {?}
1660
- */
1661
- ActivityContainerComponent.prototype.initialise = /**
1662
- * @template D, R, E
1663
- * @param {?} initialContext
1664
- * @return {?}
1665
- */
1666
- function (initialContext) {
1667
- /** @type {?} */
1668
- var self = this;
1669
- this.initialActivityOutletContext = {
1670
- activityClass: initialContext.activityClass,
1671
- activityData: initialContext.activityData,
1672
- onDone: (/**
1673
- * @param {?} result
1674
- * @return {?}
1675
- */
1676
- function (result) {
1677
- self.finished = true;
1678
- return initialContext.onDone(result);
1679
- }),
1680
- onCancel: (/**
1681
- * @param {?} error
1682
- * @return {?}
1683
- */
1684
- function (error) {
1685
- self.finished = true;
1686
- return initialContext.onCancel(error);
1687
- }),
1688
- interactionContext: this
1689
- };
1690
- };
1691
- /**
1692
- * @template D, R, E
1743
+ * @template D1, R1, E1
1693
1744
  * @param {?} activityType
1694
1745
  * @param {?=} data
1695
1746
  * @return {?}
1696
1747
  */
1697
1748
  ActivityContainerComponent.prototype.startActivity = /**
1698
- * @template D, R, E
1749
+ * @template D1, R1, E1
1699
1750
  * @param {?} activityType
1700
1751
  * @param {?=} data
1701
1752
  * @return {?}
@@ -1711,41 +1762,26 @@
1711
1762
  */
1712
1763
  function (resolve, reject) {
1713
1764
  /** @type {?} */
1714
- var context = {
1715
- interactionContext: self,
1716
- activityClass: activityType,
1717
- activityData: data,
1765
+ var context = new TabContext(data, activityType, self, {
1718
1766
  onDone: (/**
1719
1767
  * @param {?} result
1720
1768
  * @return {?}
1721
1769
  */
1722
1770
  function (result) {
1723
- self.obsoleteTabs.push(context);
1724
- // animating on the next tick gives chained done's a chance to
1725
- // finished before we start an animations
1726
1771
  resolve(result);
1727
- setTimeout((/**
1728
- * @return {?}
1729
- */
1730
- function () { return self.animateTabs(); }));
1772
+ self.activityFinishedEvents.publish({});
1731
1773
  }),
1732
1774
  onCancel: (/**
1733
1775
  * @param {?} error
1734
1776
  * @return {?}
1735
1777
  */
1736
1778
  function (error) {
1737
- self.obsoleteTabs.push(context);
1738
- // finished before we start an animations
1739
1779
  reject(error);
1740
- // animating on the next tick gives chained done's a chance to complete before we animate
1741
- setTimeout((/**
1742
- * @return {?}
1743
- */
1744
- function () { return self.animateTabs(); }));
1780
+ self.activityFinishedEvents.publish({});
1745
1781
  })
1746
- };
1747
- self.activityOutletTabs.push(context);
1748
- self.tabs.selectedIndex = _this.activityOutletTabs.length;
1782
+ });
1783
+ self.activityTabs.push(context);
1784
+ self.tabs.selectedIndex = _this.activityTabs.length;
1749
1785
  }));
1750
1786
  };
1751
1787
  /**
@@ -1771,63 +1807,151 @@
1771
1807
  return this.startActivity(ConfirmationDialogComponent, confirm);
1772
1808
  };
1773
1809
  /**
1774
- * @template D, R, E
1775
- * @param {?} confirm
1776
- * @param {?} activityType
1777
- * @param {?=} data
1810
+ * @template D1, R1, E1
1811
+ * @param {?} confirm
1812
+ * @param {?} activityType
1813
+ * @param {?=} data
1814
+ * @return {?}
1815
+ */
1816
+ ActivityContainerComponent.prototype.confirmThen = /**
1817
+ * @template D1, R1, E1
1818
+ * @param {?} confirm
1819
+ * @param {?} activityType
1820
+ * @param {?=} data
1821
+ * @return {?}
1822
+ */
1823
+ function (confirm, activityType, data) {
1824
+ return this.startActivity(exports.ɵbc, {
1825
+ confirm: confirm,
1826
+ activityType: activityType,
1827
+ data: data
1828
+ });
1829
+ };
1830
+ // @Trace()
1831
+ // @Trace()
1832
+ /**
1833
+ * @private
1834
+ * @return {?}
1835
+ */
1836
+ ActivityContainerComponent.prototype.onActivityFinished =
1837
+ // @Trace()
1838
+ /**
1839
+ * @private
1840
+ * @return {?}
1841
+ */
1842
+ function () {
1843
+ // don't do anything if job already queued up.
1844
+ if (!this.finished) {
1845
+ if (this.synchroniseSelectedTabIndex()) {
1846
+ this.cleanupStaleActivities();
1847
+ }
1848
+ this.updateActivityList();
1849
+ }
1850
+ };
1851
+ // @Trace()
1852
+ // @Trace()
1853
+ /**
1854
+ * @private
1855
+ * @return {?}
1856
+ */
1857
+ ActivityContainerComponent.prototype.cleanupStaleActivities =
1858
+ // @Trace()
1859
+ /**
1860
+ * @private
1861
+ * @return {?}
1862
+ */
1863
+ function () {
1864
+ var _this = this;
1865
+ // clean up old tabs
1866
+ if (this.tabs.selectedIndex < this.activityTabs.length - 1) {
1867
+ this.activityTabs.runInTransaction((/**
1868
+ * @param {?} draft
1869
+ * @return {?}
1870
+ */
1871
+ function (draft) {
1872
+ draft.value = draft.value.slice(0, 1 + _this.tabs.selectedIndex);
1873
+ }));
1874
+ }
1875
+ };
1876
+ /**
1877
+ * Synchronises the selected tab index. Returns true if there was no change to the selected index.
1878
+ */
1879
+ // @Trace()
1880
+ /**
1881
+ * Synchronises the selected tab index. Returns true if there was no change to the selected index.
1882
+ * @private
1883
+ * @return {?}
1884
+ */
1885
+ // @Trace()
1886
+ ActivityContainerComponent.prototype.synchroniseSelectedTabIndex = /**
1887
+ * Synchronises the selected tab index. Returns true if there was no change to the selected index.
1888
+ * @private
1889
+ * @return {?}
1890
+ */
1891
+ // @Trace()
1892
+ function () {
1893
+ /** @type {?} */
1894
+ var previousIndex = this.tabs.selectedIndex;
1895
+ /** @type {?} */
1896
+ var newIndex = this.activityTabs.query().findIndex((/**
1897
+ * @param {?} t
1898
+ * @return {?}
1899
+ */
1900
+ function (t) { return t.isComplete(); })) - 1;
1901
+ this.tabs.selectedIndex = newIndex;
1902
+ return previousIndex === newIndex;
1903
+ };
1904
+ // @Trace()
1905
+ // @Trace()
1906
+ /**
1907
+ * @private
1778
1908
  * @return {?}
1779
1909
  */
1780
- ActivityContainerComponent.prototype.confirmThen = /**
1781
- * @template D, R, E
1782
- * @param {?} confirm
1783
- * @param {?} activityType
1784
- * @param {?=} data
1910
+ ActivityContainerComponent.prototype.onAnimationFinished =
1911
+ // @Trace()
1912
+ /**
1913
+ * @private
1785
1914
  * @return {?}
1786
1915
  */
1787
- function (confirm, activityType, data) {
1788
- return this.startActivity(exports.ɵba, {
1789
- confirm: confirm,
1790
- activityType: activityType,
1791
- data: data
1792
- });
1916
+ function () {
1917
+ this.getSelectedOutlet().component.onActivityReady();
1918
+ this.cleanupStaleActivities();
1919
+ this.updateActivityList();
1793
1920
  };
1794
1921
  /**
1795
1922
  * @private
1796
1923
  * @return {?}
1797
1924
  */
1798
- ActivityContainerComponent.prototype.onAnimationFinished = /**
1925
+ ActivityContainerComponent.prototype.updateActivityList = /**
1799
1926
  * @private
1800
1927
  * @return {?}
1801
1928
  */
1802
1929
  function () {
1803
- var _this = this;
1804
- this.activityOutletTabs.value = this.activityOutletTabs.value.filter((/**
1805
- * @param {?} tab
1930
+ this._activityList.value = this.activityTabs.value.filter((/**
1931
+ * @param {?} t
1806
1932
  * @return {?}
1807
1933
  */
1808
- function (tab) {
1809
- return !_this.obsoleteTabs.includes(tab);
1810
- }));
1811
- this.obsoleteTabs = [];
1812
- this.outlets.toArray()[this.tabs.selectedIndex].notifyReady();
1934
+ function (t) { return !t.isComplete() && t.isComponentRealised(); })).map((/**
1935
+ * @param {?} t
1936
+ * @return {?}
1937
+ */
1938
+ function (t) { return t.component; }));
1813
1939
  };
1814
1940
  /**
1815
1941
  * @private
1816
1942
  * @return {?}
1817
1943
  */
1818
- ActivityContainerComponent.prototype.animateTabs = /**
1944
+ ActivityContainerComponent.prototype.getSelectedOutlet = /**
1819
1945
  * @private
1820
1946
  * @return {?}
1821
1947
  */
1822
1948
  function () {
1823
- if (!this.finished) {
1824
- this.tabs.selectedIndex = this.activityOutletTabs.length - this.obsoleteTabs.length;
1825
- }
1949
+ return this.outlets.toArray()[this.tabs.selectedIndex];
1826
1950
  };
1827
1951
  ActivityContainerComponent.decorators = [
1828
1952
  { type: core.Component, args: [{
1829
1953
  selector: 'angular-ui-powerups-activity-container',
1830
- template: "<mat-tab-group #tabs no-tab-header [dynamicHeight]=\"true\">\n <mat-tab>\n <angular-ui-powerups-activity-outlet [interactionContext]=\"this\"\n [activityContext]=\"initialActivityOutletContext\"></angular-ui-powerups-activity-outlet>\n </mat-tab>\n <mat-tab *ngFor=\"let tab of activityOutletTabs.value\">\n <angular-ui-powerups-activity-outlet [interactionContext]=\"this\"\n [activityContext]=\"tab\"></angular-ui-powerups-activity-outlet>\n </mat-tab>\n</mat-tab-group>\n",
1954
+ template: "<mat-tab-group #tabs no-tab-header [dynamicHeight]=\"true\">\n <mat-tab *ngFor=\"let tab of activityTabs.value\">\n <angular-ui-powerups-activity-outlet [interactionContext]=\"this\"\n [activityContext]=\"tab\"></angular-ui-powerups-activity-outlet>\n </mat-tab>\n</mat-tab-group>\n",
1831
1955
  styles: [":host{display:block}"]
1832
1956
  }] }
1833
1957
  ];
@@ -1840,54 +1964,32 @@
1840
1964
  outlets: [{ type: core.ViewChildren, args: [ActivityOutletComponent,] }]
1841
1965
  };
1842
1966
  return ActivityContainerComponent;
1843
- }(DisposableComponent));
1967
+ }(InteractionContext));
1844
1968
  if (false) {
1845
- /** @type {?} */
1846
- exports.ɵu.prototype.parentInteractionContext;
1847
- /** @type {?} */
1848
- exports.ɵu.prototype.initialActivityOutletContext;
1849
- /** @type {?} */
1850
- exports.ɵu.prototype.currentActivity;
1851
- /** @type {?} */
1852
- exports.ɵu.prototype.tabs;
1853
- /** @type {?} */
1854
- exports.ɵu.prototype.outlets;
1855
- /** @type {?} */
1856
- exports.ɵu.prototype.activityOutletTabs;
1857
1969
  /**
1858
1970
  * @type {?}
1859
1971
  * @private
1860
1972
  */
1861
- exports.ɵu.prototype.obsoleteTabs;
1973
+ ActivityContainerComponent.prototype.activityFinishedEvents;
1974
+ /** @type {?} */
1975
+ ActivityContainerComponent.prototype.parentInteractionContext;
1976
+ /** @type {?} */
1977
+ ActivityContainerComponent.prototype.tabs;
1978
+ /** @type {?} */
1979
+ ActivityContainerComponent.prototype.outlets;
1980
+ /** @type {?} */
1981
+ ActivityContainerComponent.prototype.activityTabs;
1862
1982
  /**
1863
1983
  * @type {?}
1864
1984
  * @private
1865
1985
  */
1866
- exports.ɵu.prototype.finished;
1986
+ ActivityContainerComponent.prototype.finished;
1867
1987
  /**
1868
1988
  * @type {?}
1869
1989
  * @private
1870
1990
  */
1871
- exports.ɵu.prototype._activityList;
1991
+ ActivityContainerComponent.prototype._activityList;
1872
1992
  }
1873
- (function (ActivityContainerComponent) {
1874
- /**
1875
- * @record
1876
- * @template D, R, E
1877
- */
1878
- function ActivityContext() { }
1879
- ActivityContainerComponent.ActivityContext = ActivityContext;
1880
- if (false) {
1881
- /** @type {?} */
1882
- ActivityContext.prototype.activityClass;
1883
- /** @type {?} */
1884
- ActivityContext.prototype.activityData;
1885
- /** @type {?} */
1886
- ActivityContext.prototype.onDone;
1887
- /** @type {?} */
1888
- ActivityContext.prototype.onCancel;
1889
- }
1890
- })(exports.ɵu || (exports.ɵu = {}));
1891
1993
 
1892
1994
  /**
1893
1995
  * @fileoverview added by tsickle
@@ -1895,43 +1997,79 @@
1895
1997
  */
1896
1998
  /** @type {?} */
1897
1999
  var DIALOG_INTERACTION_SERVICE_DEFAULTS = new core.InjectionToken('DIALOG_INTERACTION_SERVICE_DEFAULTS');
2000
+ var Guard = /** @class */ (function (_super) {
2001
+ __extends(Guard, _super);
2002
+ function Guard() {
2003
+ return _super.call(this, { initialValue: false }) || this;
2004
+ }
2005
+ Object.defineProperty(Guard.prototype, "value", {
2006
+ get: /**
2007
+ * @return {?}
2008
+ */
2009
+ function () {
2010
+ return this.store.read();
2011
+ },
2012
+ enumerable: true,
2013
+ configurable: true
2014
+ });
2015
+ /**
2016
+ * @template R
2017
+ * @param {?} fun
2018
+ * @return {?}
2019
+ */
2020
+ Guard.prototype.whileTrue = /**
2021
+ * @template R
2022
+ * @param {?} fun
2023
+ * @return {?}
2024
+ */
2025
+ function (fun) {
2026
+ this.startTransaction().commit(true);
2027
+ try {
2028
+ return fun();
2029
+ }
2030
+ finally {
2031
+ this.startTransaction().commit(false);
2032
+ }
2033
+ };
2034
+ /**
2035
+ * @template R
2036
+ * @param {?} fun
2037
+ * @param {?=} defaultValue
2038
+ * @return {?}
2039
+ */
2040
+ Guard.prototype.runIfFalse = /**
2041
+ * @template R
2042
+ * @param {?} fun
2043
+ * @param {?=} defaultValue
2044
+ * @return {?}
2045
+ */
2046
+ function (fun, defaultValue) {
2047
+ if (defaultValue === void 0) { defaultValue = null; }
2048
+ return !this.value ? fun() : defaultValue;
2049
+ };
2050
+ return Guard;
2051
+ }(pectin.ValueModel));
1898
2052
  var DialogInteractionService = /** @class */ (function (_super) {
1899
2053
  __extends(DialogInteractionService, _super);
1900
- function DialogInteractionService(dialogService, router, dialogServiceDefaults, matDialogDefaultConfig) {
2054
+ function DialogInteractionService(dialogService, dialogServiceDefaults, matDialogDefaultConfig) {
1901
2055
  var _this = _super.call(this) || this;
1902
2056
  _this.dialogService = dialogService;
1903
- _this.router = router;
1904
2057
  _this.dialogServiceDefaults = dialogServiceDefaults;
1905
2058
  _this.matDialogDefaultConfig = matDialogDefaultConfig;
1906
2059
  _this._activityList = new pectin.DelegatingListModel();
1907
- _this._active = false;
2060
+ _this.startingGuard = new Guard();
1908
2061
  typescriptUtilities.assert.notNil(dialogService);
1909
- var _a = pectin.Dsl.disposeWith(_this), chain = _a.chain, observe = _a.observe;
1910
- _this.currentActivity = chain(_this.activityList).last();
1911
2062
  return _this;
1912
- // observe.valuesFrom(this.router.events)
1913
- // .tap((event:RouterEvent) => {
1914
- // const nav = router.getCurrentNavigation();
1915
- // console.log({
1916
- // previousUrl: nav.previousNavigation && nav.previousNavigation.finalUrl,
1917
- // initialUrl: nav.initialUrl,
1918
- // finalUrl: nav.finalUrl,
1919
- // });
1920
- //
1921
- // })
1922
- // .filter(event => event instanceof NavigationStart)
1923
- // .subscribe((event: NavigationStart) => {
1924
- // console.log(event.navigationTrigger);
1925
- // if (event.navigationTrigger === 'popstate' && this.isActive()) {
1926
- // const prev = router.getCurrentNavigation().previousNavigation.finalUrl;
1927
- // // this.router.navigateByUrl(prev.toString(), {
1928
- // // replaceUrl: true,
1929
- // // skipLocationChange: false
1930
- // // });
1931
- // // this.cancelActivity();
1932
- // }
1933
- // });
1934
2063
  }
2064
+ /**
2065
+ * @return {?}
2066
+ */
2067
+ DialogInteractionService.prototype.isActive = /**
2068
+ * @return {?}
2069
+ */
2070
+ function () {
2071
+ return !!this.currentActivityId;
2072
+ };
1935
2073
  /**
1936
2074
  * @return {?}
1937
2075
  */
@@ -1939,7 +2077,7 @@
1939
2077
  * @return {?}
1940
2078
  */
1941
2079
  function () {
1942
- this.currentActivity.value.cancel(null);
2080
+ this.currentActivity.cancel(null);
1943
2081
  };
1944
2082
  Object.defineProperty(DialogInteractionService.prototype, "activityList", {
1945
2083
  get: /**
@@ -1992,56 +2130,59 @@
1992
2130
  */
1993
2131
  function (a) { return a.constructor.name; })).join(', '));
1994
2132
  }
1995
- this._active = true;
1996
- /** @type {?} */
1997
- var self = this;
1998
- /** @type {?} */
1999
- var config = __assign({ autoFocus: false, hasBackdrop: true, closeOnNavigation: false }, this.matDialogDefaultConfig, this.dialogServiceDefaults, {
2000
- data: data,
2001
- disableClose: disableClose,
2002
- panelClass: 'dialog-interaction-service'
2003
- });
2004
- /** @type {?} */
2005
- var matDialogRef = (/** @type {?} */ (this.dialogService.open(exports.ɵu, config)));
2006
- return new Promise((/**
2007
- * @param {?} resolve
2008
- * @param {?} reject
2133
+ return this.startingGuard.whileTrue((/**
2009
2134
  * @return {?}
2010
2135
  */
2011
- function (resolve, reject) {
2136
+ function () {
2137
+ _this.currentActivityId = uuid.v1();
2012
2138
  /** @type {?} */
2013
- var activityContainer = matDialogRef.componentInstance;
2014
- activityContainer.parentInteractionContext = _this;
2015
- self.safelyUpdateActivityListDelegate(activityContainer.activityList);
2016
- activityContainer.initialise({
2017
- activityClass: activityType,
2018
- activityData: data,
2019
- onDone: /**
2020
- * @param {?} result
2021
- * @return {?}
2022
- */
2023
- function (result) {
2024
- // TODO: should I be calling resolve after close?
2025
- resolve(result);
2026
- matDialogRef.close(result);
2027
- },
2028
- onCancel: /**
2029
- * @param {?} error
2030
- * @return {?}
2031
- */
2032
- function (error) {
2033
- // TODO: should I be calling reject after close?
2034
- reject(error);
2035
- matDialogRef.close(error);
2036
- }
2139
+ var self = _this;
2140
+ /** @type {?} */
2141
+ var config = __assign({ autoFocus: false, hasBackdrop: true, closeOnNavigation: false }, _this.matDialogDefaultConfig, _this.dialogServiceDefaults, {
2142
+ data: data,
2143
+ disableClose: disableClose,
2144
+ panelClass: 'dialog-interaction-service'
2037
2145
  });
2038
- matDialogRef.updateSize();
2039
- })).finally((/**
2040
- * @return {?}
2041
- */
2042
- function () {
2043
- self.safelyUpdateActivityListDelegate(null);
2044
- self._active = false;
2146
+ /** @type {?} */
2147
+ var matDialogRef = (/** @type {?} */ (_this.dialogService.open(ActivityContainerComponent, config)));
2148
+ return new Promise((/**
2149
+ * @param {?} resolve
2150
+ * @param {?} reject
2151
+ * @return {?}
2152
+ */
2153
+ function (resolve, reject) {
2154
+ /** @type {?} */
2155
+ var activityContainer = matDialogRef.componentInstance;
2156
+ activityContainer.parentInteractionContext = _this;
2157
+ self.safelyUpdateActivityListDelegate(activityContainer.activityList);
2158
+ activityContainer.initialActivityOutletContext = {
2159
+ activityClass: activityType,
2160
+ activityData: data,
2161
+ onDone: /**
2162
+ * @param {?} result
2163
+ * @return {?}
2164
+ */
2165
+ function (result) {
2166
+ resolve(result);
2167
+ matDialogRef.close(result);
2168
+ },
2169
+ onCancel: /**
2170
+ * @param {?} error
2171
+ * @return {?}
2172
+ */
2173
+ function (error) {
2174
+ reject(error);
2175
+ matDialogRef.close(error);
2176
+ }
2177
+ };
2178
+ matDialogRef.updateSize();
2179
+ })).finally((/**
2180
+ * @return {?}
2181
+ */
2182
+ function () {
2183
+ _this.currentActivityId = null;
2184
+ self.safelyUpdateActivityListDelegate(null);
2185
+ }));
2045
2186
  }));
2046
2187
  };
2047
2188
  /**
@@ -2102,7 +2243,7 @@
2102
2243
  * @return {?}
2103
2244
  */
2104
2245
  function (confirm, activityType, data) {
2105
- return this._startActivity(exports.ɵba, {
2246
+ return this._startActivity(exports.ɵbc, {
2106
2247
  confirm: confirm,
2107
2248
  activityType: activityType,
2108
2249
  data: data
@@ -2116,16 +2257,13 @@
2116
2257
  /** @nocollapse */
2117
2258
  DialogInteractionService.ctorParameters = function () { return [
2118
2259
  { type: material.MatDialog },
2119
- { type: router.Router },
2120
2260
  { type: dialog.MatDialogConfig, decorators: [{ type: core.Optional }, { type: core.Inject, args: [DIALOG_INTERACTION_SERVICE_DEFAULTS,] }] },
2121
2261
  { type: dialog.MatDialogConfig, decorators: [{ type: core.Optional }, { type: core.Inject, args: [dialog.MAT_DIALOG_DEFAULT_OPTIONS,] }] }
2122
2262
  ]; };
2123
- /** @nocollapse */ DialogInteractionService.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function DialogInteractionService_Factory() { return new DialogInteractionService(core.ɵɵinject(dialog.MatDialog), core.ɵɵinject(router.Router), core.ɵɵinject(DIALOG_INTERACTION_SERVICE_DEFAULTS, 8), core.ɵɵinject(dialog.MAT_DIALOG_DEFAULT_OPTIONS, 8)); }, token: DialogInteractionService, providedIn: "root" });
2263
+ /** @nocollapse */ DialogInteractionService.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function DialogInteractionService_Factory() { return new DialogInteractionService(core.ɵɵinject(dialog.MatDialog), core.ɵɵinject(DIALOG_INTERACTION_SERVICE_DEFAULTS, 8), core.ɵɵinject(dialog.MAT_DIALOG_DEFAULT_OPTIONS, 8)); }, token: DialogInteractionService, providedIn: "root" });
2124
2264
  return DialogInteractionService;
2125
2265
  }(InteractionContext));
2126
2266
  if (false) {
2127
- /** @type {?} */
2128
- DialogInteractionService.prototype.currentActivity;
2129
2267
  /**
2130
2268
  * @type {?}
2131
2269
  * @private
@@ -2135,17 +2273,17 @@
2135
2273
  * @type {?}
2136
2274
  * @private
2137
2275
  */
2138
- DialogInteractionService.prototype._active;
2276
+ DialogInteractionService.prototype.startingGuard;
2139
2277
  /**
2140
2278
  * @type {?}
2141
2279
  * @private
2142
2280
  */
2143
- DialogInteractionService.prototype.dialogService;
2281
+ DialogInteractionService.prototype.currentActivityId;
2144
2282
  /**
2145
2283
  * @type {?}
2146
2284
  * @private
2147
2285
  */
2148
- DialogInteractionService.prototype.router;
2286
+ DialogInteractionService.prototype.dialogService;
2149
2287
  /** @type {?} */
2150
2288
  DialogInteractionService.prototype.dialogServiceDefaults;
2151
2289
  /** @type {?} */
@@ -2169,20 +2307,20 @@
2169
2307
  portal.PortalModule
2170
2308
  ],
2171
2309
  declarations: [
2172
- exports.ɵu,
2310
+ ActivityContainerComponent,
2173
2311
  ConfirmationDialogComponent,
2174
- exports.ɵba,
2312
+ exports.ɵbc,
2175
2313
  AlertDialogComponent,
2176
2314
  ActivityOutletComponent
2177
2315
  ],
2178
2316
  exports: [
2179
- exports.ɵu,
2317
+ ActivityContainerComponent,
2180
2318
  ActivityOutletComponent,
2181
2319
  ],
2182
2320
  entryComponents: [
2183
- exports.ɵu,
2321
+ ActivityContainerComponent,
2184
2322
  ConfirmationDialogComponent,
2185
- exports.ɵba,
2323
+ exports.ɵbc,
2186
2324
  AlertDialogComponent
2187
2325
  ],
2188
2326
  providers: [
@@ -2735,10 +2873,92 @@
2735
2873
  * @fileoverview added by tsickle
2736
2874
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2737
2875
  */
2876
+ var NavigationSession = /** @class */ (function () {
2877
+ function NavigationSession(isPopState, initialUrl) {
2878
+ this.isPopState = isPopState;
2879
+ this.initialUrl = initialUrl;
2880
+ this._alreadyAccepted = [];
2881
+ console.log('NavigationSession', { isPopState: isPopState, initialUrl: initialUrl });
2882
+ }
2883
+ /**
2884
+ * @param {?} placeComponent
2885
+ * @return {?}
2886
+ */
2887
+ NavigationSession.prototype.alreadyAccepted = /**
2888
+ * @param {?} placeComponent
2889
+ * @return {?}
2890
+ */
2891
+ function (placeComponent) {
2892
+ return this._alreadyAccepted.includes(placeComponent);
2893
+ };
2894
+ /**
2895
+ * @param {?} component
2896
+ * @return {?}
2897
+ */
2898
+ NavigationSession.prototype.rememberAcceptanceOf = /**
2899
+ * @param {?} component
2900
+ * @return {?}
2901
+ */
2902
+ function (component) {
2903
+ this._alreadyAccepted.push(component);
2904
+ };
2905
+ return NavigationSession;
2906
+ }());
2907
+ if (false) {
2908
+ /**
2909
+ * @type {?}
2910
+ * @private
2911
+ */
2912
+ NavigationSession.prototype._alreadyAccepted;
2913
+ /** @type {?} */
2914
+ NavigationSession.prototype.isPopState;
2915
+ /** @type {?} */
2916
+ NavigationSession.prototype.initialUrl;
2917
+ }
2738
2918
  var PlaceRouter = /** @class */ (function () {
2739
- function PlaceRouter(router) {
2740
- this.router = router;
2919
+ function PlaceRouter(router$1, angularLocation) {
2920
+ var _this = this;
2921
+ this.router = router$1;
2922
+ this._navigationSession = new pectin.MutableValueModel();
2923
+ angularLocation.onUrlChange((/**
2924
+ * @param {?} url
2925
+ * @return {?}
2926
+ */
2927
+ function (url) {
2928
+ console.log("### " + url);
2929
+ }));
2930
+ this.router.events.subscribe((/**
2931
+ * @param {?} event
2932
+ * @return {?}
2933
+ */
2934
+ function (event) {
2935
+ // console.log(`${event.constructor.name}`, location.pathname, angularLocation.getState());
2936
+ // NavigationStart -> .... -> NavigationCancel === redirect (so don't ask again)
2937
+ // NavigationStart -> .... -> NavigationEnd === navigated (so ask next time)
2938
+ // NavigationStart -> .... -> NavigationError === canceled (guard cancelled so ask next time)
2939
+ if (event instanceof router.NavigationStart && !_this.navigationSession) {
2940
+ _this._navigationSession.value = new NavigationSession(event.navigationTrigger === 'popstate', _this.router.routerState.snapshot.url);
2941
+ }
2942
+ if (event instanceof router.NavigationEnd) {
2943
+ console.log('navigation ended');
2944
+ _this._navigationSession.value = null;
2945
+ }
2946
+ if (event instanceof router.NavigationError) {
2947
+ console.log('navigation errored');
2948
+ _this._navigationSession.value = null;
2949
+ }
2950
+ }));
2741
2951
  }
2952
+ Object.defineProperty(PlaceRouter.prototype, "navigationSession", {
2953
+ get: /**
2954
+ * @return {?}
2955
+ */
2956
+ function () {
2957
+ return this._navigationSession.value;
2958
+ },
2959
+ enumerable: true,
2960
+ configurable: true
2961
+ });
2742
2962
  /**
2743
2963
  * @param {?} activatedRoute
2744
2964
  * @param {?} previous
@@ -2781,7 +3001,6 @@
2781
3001
  var commands = (weHaveARouteId) ?
2782
3002
  [urlSegments[0].path, sanitised.getFormattedRouteId(), sanitised.getFormattedParameters()] :
2783
3003
  [urlSegments[0].path, sanitised.getFormattedParameters()];
2784
- console.log("redirect path", commands);
2785
3004
  return this.router.createUrlTree(commands);
2786
3005
  };
2787
3006
  /**
@@ -2825,12 +3044,18 @@
2825
3044
  ];
2826
3045
  /** @nocollapse */
2827
3046
  PlaceRouter.ctorParameters = function () { return [
2828
- { type: router.Router }
3047
+ { type: router.Router },
3048
+ { type: common.Location }
2829
3049
  ]; };
2830
- /** @nocollapse */ PlaceRouter.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function PlaceRouter_Factory() { return new PlaceRouter(core.ɵɵinject(router.Router)); }, token: PlaceRouter, providedIn: "root" });
3050
+ /** @nocollapse */ PlaceRouter.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function PlaceRouter_Factory() { return new PlaceRouter(core.ɵɵinject(router.Router), core.ɵɵinject(common.Location)); }, token: PlaceRouter, providedIn: "root" });
2831
3051
  return PlaceRouter;
2832
3052
  }());
2833
3053
  if (false) {
3054
+ /**
3055
+ * @type {?}
3056
+ * @private
3057
+ */
3058
+ PlaceRouter.prototype._navigationSession;
2834
3059
  /**
2835
3060
  * @type {?}
2836
3061
  * @private
@@ -4614,16 +4839,15 @@
4614
4839
  */
4615
4840
  function ActivityOutletContext() { }
4616
4841
  if (false) {
4617
- /** @type {?} */
4618
- ActivityOutletContext.prototype.interactionContext;
4619
4842
  /** @type {?} */
4620
4843
  ActivityOutletContext.prototype.activityClass;
4621
4844
  /** @type {?} */
4622
4845
  ActivityOutletContext.prototype.activityData;
4623
- /** @type {?} */
4624
- ActivityOutletContext.prototype.onDone;
4625
- /** @type {?} */
4626
- ActivityOutletContext.prototype.onCancel;
4846
+ /**
4847
+ * @param {?} component
4848
+ * @return {?}
4849
+ */
4850
+ ActivityOutletContext.prototype.componentReady = function (component) { };
4627
4851
  }
4628
4852
 
4629
4853
  /**
@@ -4786,33 +5010,12 @@
4786
5010
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4787
5011
  */
4788
5012
  var LeavePlaceGuard = /** @class */ (function () {
4789
- function LeavePlaceGuard(router$1, injector, interactionContext, location) {
4790
- this.router = router$1;
5013
+ function LeavePlaceGuard(router, injector, placeRouter, interactionContext, angularLocation) {
5014
+ this.router = router;
4791
5015
  this.injector = injector;
5016
+ this.placeRouter = placeRouter;
4792
5017
  this.interactionContext = interactionContext;
4793
- this.location = location;
4794
- // TODO: should probably replace this with a RouteTracker thingy.
4795
- this._alreadyAccepted = [];
4796
- console.log('***** Created new guard ******');
4797
- /** @type {?} */
4798
- var self = this;
4799
- this.router.events.subscribe((/**
4800
- * @param {?} event
4801
- * @return {?}
4802
- */
4803
- function (event) {
4804
- // NavigationStart -> .... -> NavigationCancel === redirect (so don't ask again)
4805
- // NavigationStart -> .... -> NavigationEnd === navigated (so ask next time)
4806
- // NavigationStart -> .... -> NavigationError === canceled (guard cancelled so ask next time)
4807
- if (event instanceof router.NavigationEnd) {
4808
- console.log("navigation ended");
4809
- self._alreadyAccepted = [];
4810
- }
4811
- if (event instanceof router.NavigationError) {
4812
- console.log("navigation errored");
4813
- self._alreadyAccepted = [];
4814
- }
4815
- }));
5018
+ this.angularLocation = angularLocation;
4816
5019
  }
4817
5020
  /**
4818
5021
  * @param {?} component
@@ -4829,89 +5032,45 @@
4829
5032
  * @return {?}
4830
5033
  */
4831
5034
  function (component, currentRoute, currentState, nextState) {
4832
- var _this = this;
4833
- /** @type {?} */
4834
- var placeDefinitionPath = "/" + component.placeDefinition.path;
4835
- console.log('canDeactivate', {
4836
- staticPath: placeDefinitionPath,
4837
- currentStateUrl: currentState.url,
4838
- nextStateUrl: nextState.url,
4839
- alreadyDeclined: this._alreadyAccepted
5035
+ return __awaiter(this, void 0, void 0, function () {
5036
+ var placeDefinitionPath, self_1, canLeave;
5037
+ return __generator(this, function (_a) {
5038
+ switch (_a.label) {
5039
+ case 0:
5040
+ placeDefinitionPath = "/" + component.placeDefinition.path;
5041
+ if (!this.placeRouter.navigationSession.alreadyAccepted(component)) return [3 /*break*/, 1];
5042
+ return [2 /*return*/, true];
5043
+ case 1:
5044
+ if (!!nextState.url.startsWith(placeDefinitionPath)) return [3 /*break*/, 3];
5045
+ self_1 = this;
5046
+ return [4 /*yield*/, component.canDeactivate()];
5047
+ case 2:
5048
+ canLeave = _a.sent();
5049
+ // component is happy to leave but we need to check if it's left an interaction
5050
+ // open. If so we close and stay where we are.
5051
+ if (canLeave && this.interactionContext.isActive()) {
5052
+ canLeave = false;
5053
+ console.log("cancelling", { activity: this.interactionContext.currentActivity });
5054
+ this.interactionContext.currentActivity.cancel(null);
5055
+ }
5056
+ // If we're still leaving then remember it since angular will call this method multiple
5057
+ // times if any route parameters are changed along the way.
5058
+ if (canLeave) {
5059
+ self_1.placeRouter.navigationSession.rememberAcceptanceOf(component);
5060
+ }
5061
+ else {
5062
+ // Angular doesn't preserve the url when a guard cancels the back button.
5063
+ // See https://github.com/angular/angular/issues/13586#issuecomment-432795720
5064
+ if (this.placeRouter.navigationSession.isPopState) {
5065
+ console.log('cancelled during popstate');
5066
+ this.angularLocation.go(this.placeRouter.navigationSession.initialUrl);
5067
+ }
5068
+ }
5069
+ return [2 /*return*/, canLeave];
5070
+ case 3: return [2 /*return*/, true];
5071
+ }
5072
+ });
4840
5073
  });
4841
- // Example of the above when navigating to a different child route.
4842
- // canDeactivate {staticPath: "/hero-details",
4843
- // currentStateUrl: "/route-parameters/-1;dv=A;dl=a,b,c;rdv=A;rdl=a,b,c/hero-details",
4844
- // nextStateUrl: "/route-parameters/-1;dv=A;dl=a,b,c;rdv=A;rdl=a,b,c/hero-stats"
4845
- // }
4846
- // Example clicking on router tab of the parent component (de-activates the parent due to route param changes)
4847
- // canDeactivate {
4848
- // staticPath: "/hero-stats",
4849
- // currentStateUrl: "/route-parameters/-1;dv=A;dl=a,b,c;rdv=A;rdl=a,b,c/hero-stats",
4850
- // nextStateUrl: "/route-parameters/"
4851
- // }
4852
- // canDeactivate {
4853
- // staticPath: "/route-parameters",
4854
- // currentStateUrl: "/route-parameters/-1;dv=A;dl=a,b,c;rdv=A;rdl=a,b,c/hero-stats",
4855
- // nextStateUrl: "/route-parameters/"
4856
- // }
4857
- // logger.class.js:54 ParameterSnapshot.sanitise -> {idModel: -1, pv: undefined, pl: Array(0), dv: undefined, dl: Array(0), …}
4858
- // parameter-snapshot.ts:20 {name: "idModel", mine: -1, theirs: null}
4859
- // place-router.ts:28 redirect path (3) ["route-parameters", "-1", {…}]
4860
- // canDeactivate {
4861
- // staticPath: "/hero-stats",
4862
- // currentStateUrl: "/route-parameters/-1;dv=A;dl=a,b,c;rdv=A;rdl=a,b,c/hero-stats",
4863
- // nextStateUrl: "/route-parameters/-1"
4864
- // }
4865
- // canDeactivate {
4866
- // staticPath: "/route-parameters",
4867
- // currentStateUrl: "/route-parameters/-1;dv=A;dl=a,b,c;rdv=A;rdl=a,b,c/hero-stats",
4868
- // nextStateUrl: "/route-parameters/-1"
4869
- // }
4870
- // logger.class.js:54 ParameterSnapshot.sanitise -> {idModel: -1, pv: undefined, pl: Array(0), dv: "A", dl: Array(3), …}
4871
- // parameter-snapshot.ts:20 {name: "dv", mine: "A", theirs: undefined}
4872
- // place-router.ts:28 redirect path (3) ["route-parameters", "-1", {…}]
4873
- // canDeactivate {
4874
- // staticPath: "/hero-stats",
4875
- // currentStateUrl: "/route-parameters/-1;dv=A;dl=a,b,c;rdv=A;rdl=a,b,c/hero-stats",
4876
- // nextStateUrl: "/route-parameters/-1;dv=A;dl=a,b,c;rdv=A;rdl=a,b,c"
4877
- // }
4878
- // HACK: this will break with child routes...
4879
- if (this.alreadyAccepted(component)) {
4880
- return true;
4881
- }
4882
- else {
4883
- if (!nextState.url.startsWith(placeDefinitionPath)) {
4884
- /** @type {?} */
4885
- var self_1 = this;
4886
- return Promise.resolve(component.canDeactivate()).then((/**
4887
- * @param {?} canLeave
4888
- * @return {?}
4889
- */
4890
- function (canLeave) {
4891
- if (!canLeave) {
4892
- // Angular doesn't preserve the url when a guard cancels the back button.
4893
- // See https://github.com/angular/angular/issues/13586#issuecomment-432795720
4894
- _this.location.go(currentState.url);
4895
- }
4896
- else {
4897
- self_1._alreadyAccepted.push(component);
4898
- }
4899
- return canLeave;
4900
- }));
4901
- }
4902
- return true;
4903
- }
4904
- };
4905
- /**
4906
- * @param {?} placeComponent
4907
- * @return {?}
4908
- */
4909
- LeavePlaceGuard.prototype.alreadyAccepted = /**
4910
- * @param {?} placeComponent
4911
- * @return {?}
4912
- */
4913
- function (placeComponent) {
4914
- return this._alreadyAccepted.includes(placeComponent);
4915
5074
  };
4916
5075
  LeavePlaceGuard.decorators = [
4917
5076
  { type: core.Injectable, args: [{
@@ -4922,16 +5081,11 @@
4922
5081
  LeavePlaceGuard.ctorParameters = function () { return [
4923
5082
  { type: router.Router },
4924
5083
  { type: core.Injector },
5084
+ { type: PlaceRouter },
4925
5085
  { type: InteractionContext },
4926
5086
  { type: common.Location }
4927
5087
  ]; };
4928
- /** @nocollapse */ LeavePlaceGuard.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function LeavePlaceGuard_Factory() { return new LeavePlaceGuard(core.ɵɵinject(router.Router), core.ɵɵinject(core.INJECTOR), core.ɵɵinject(InteractionContext), core.ɵɵinject(common.Location)); }, token: LeavePlaceGuard, providedIn: "root" });
4929
- __decorate([
4930
- pectin.Trace(),
4931
- __metadata("design:type", Function),
4932
- __metadata("design:paramtypes", [exports.PlaceComponent]),
4933
- __metadata("design:returntype", Boolean)
4934
- ], LeavePlaceGuard.prototype, "alreadyAccepted", null);
5088
+ /** @nocollapse */ LeavePlaceGuard.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function LeavePlaceGuard_Factory() { return new LeavePlaceGuard(core.ɵɵinject(router.Router), core.ɵɵinject(core.INJECTOR), core.ɵɵinject(PlaceRouter), core.ɵɵinject(InteractionContext), core.ɵɵinject(common.Location)); }, token: LeavePlaceGuard, providedIn: "root" });
4935
5089
  return LeavePlaceGuard;
4936
5090
  }());
4937
5091
  if (false) {
@@ -4939,21 +5093,21 @@
4939
5093
  * @type {?}
4940
5094
  * @private
4941
5095
  */
4942
- LeavePlaceGuard.prototype._alreadyAccepted;
5096
+ LeavePlaceGuard.prototype.router;
4943
5097
  /**
4944
5098
  * @type {?}
4945
5099
  * @private
4946
5100
  */
4947
- LeavePlaceGuard.prototype.router;
5101
+ LeavePlaceGuard.prototype.injector;
4948
5102
  /**
4949
5103
  * @type {?}
4950
5104
  * @private
4951
5105
  */
4952
- LeavePlaceGuard.prototype.injector;
5106
+ LeavePlaceGuard.prototype.placeRouter;
4953
5107
  /** @type {?} */
4954
5108
  LeavePlaceGuard.prototype.interactionContext;
4955
5109
  /** @type {?} */
4956
- LeavePlaceGuard.prototype.location;
5110
+ LeavePlaceGuard.prototype.angularLocation;
4957
5111
  }
4958
5112
 
4959
5113
  /**
@@ -5246,14 +5400,15 @@
5246
5400
  exports.AbstractActivity = AbstractActivity;
5247
5401
  exports.AbstractInputComponent = AbstractInputComponent;
5248
5402
  exports.AbstractPlaceNavigationComponent = AbstractPlaceNavigationComponent;
5249
- exports.ActivityContainerComponent = exports.ɵu;
5403
+ exports.Activity = exports.ɵba;
5404
+ exports.ActivityContainerComponent = ActivityContainerComponent;
5250
5405
  exports.ActivityOutletComponent = ActivityOutletComponent;
5251
5406
  exports.AlertDialogComponent = AlertDialogComponent;
5252
5407
  exports.AngularUiPowerupsModule = AngularUiPowerupsModule;
5253
5408
  exports.BusyOverlayComponent = BusyOverlayComponent;
5254
5409
  exports.CloseInteractionGuard = CloseInteractionGuard;
5255
5410
  exports.CommandDirective = CommandDirective;
5256
- exports.ConfirmThenDialogComponent = exports.ɵba;
5411
+ exports.ConfirmThenDialogComponent = exports.ɵbc;
5257
5412
  exports.ConfirmationDialogComponent = ConfirmationDialogComponent;
5258
5413
  exports.DEFINITION_META_DATA_KEY = DEFINITION_META_DATA_KEY;
5259
5414
  exports.DIALOG_INTERACTION_SERVICE_DEFAULTS = DIALOG_INTERACTION_SERVICE_DEFAULTS;
@@ -5289,10 +5444,9 @@
5289
5444
  exports.slideDownAndUpAnimation = slideDownAndUpAnimation;
5290
5445
  exports.ɵa = CommandDirective;
5291
5446
  exports.ɵb = FocusBindingDirective;
5292
- exports.ɵbb = InteractionContext;
5293
- exports.ɵbc = AlertDialogComponent;
5294
- exports.ɵbe = DIALOG_INTERACTION_SERVICE_DEFAULTS;
5295
- exports.ɵbf = DialogInteractionService;
5447
+ exports.ɵbd = AlertDialogComponent;
5448
+ exports.ɵbf = DIALOG_INTERACTION_SERVICE_DEFAULTS;
5449
+ exports.ɵbg = DialogInteractionService;
5296
5450
  exports.ɵc = DisposableComponent;
5297
5451
  exports.ɵd = NumberInputComponent;
5298
5452
  exports.ɵe = AbstractInputComponent;
@@ -5311,10 +5465,12 @@
5311
5465
  exports.ɵr = AbstractPlaceNavigationComponent;
5312
5466
  exports.ɵs = ListPlaceNavComponent;
5313
5467
  exports.ɵt = InteractionModule;
5314
- exports.ɵv = ActivityOutletComponent;
5315
- exports.ɵw = ConfirmationDialogComponent;
5316
- exports.ɵx = AbstractActivity;
5317
- exports.ɵy = ACTIVITY_DATA;
5468
+ exports.ɵu = ActivityContainerComponent;
5469
+ exports.ɵv = InteractionContext;
5470
+ exports.ɵw = ActivityOutletComponent;
5471
+ exports.ɵx = ConfirmationDialogComponent;
5472
+ exports.ɵy = AbstractActivity;
5473
+ exports.ɵz = ACTIVITY_DATA;
5318
5474
 
5319
5475
  Object.defineProperty(exports, '__esModule', { value: true });
5320
5476