@coolon/angular-ui-powerups 0.0.43 → 0.0.46

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 (131) hide show
  1. package/bundles/coolon-angular-ui-powerups.umd.js +1499 -1188
  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 +16 -15
  6. package/coolon-angular-ui-powerups.metadata.json +1 -1
  7. package/esm2015/coolon-angular-ui-powerups.js +16 -15
  8. package/esm2015/index.js +2 -2
  9. package/esm2015/lib/components/disposable-component.js +1 -1
  10. package/esm2015/lib/components/forms/number-input/number-input.component.js +1 -1
  11. package/esm2015/lib/components/forms/password-input/password-input.component.js +1 -1
  12. package/esm2015/lib/components/forms/string-input/string-input.component.js +1 -1
  13. package/esm2015/lib/components/resize-aware.component.js +1 -1
  14. package/esm2015/lib/components/types/bounds.class.js +1 -1
  15. package/esm2015/lib/components/types/dimension.class.js +1 -1
  16. package/esm2015/lib/components/types/point.class.js +1 -1
  17. package/esm2015/lib/directives/command.directive.js +1 -1
  18. package/esm2015/lib/directives/focus-binding.directive.js +2 -2
  19. package/esm2015/lib/interaction/alert.js +1 -1
  20. package/esm2015/lib/interaction/components/activity-container/activity-container.component.js +2 -2
  21. package/esm2015/lib/interaction/components/activity-outlet/activity-outlet.component.js +6 -1
  22. package/esm2015/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js +2 -2
  23. package/esm2015/lib/interaction/confirm.js +1 -1
  24. package/esm2015/lib/interaction/interaction.module.js +2 -2
  25. package/esm2015/lib/interaction/result.js +1 -1
  26. package/esm2015/lib/interaction/services/dialog-interaction.service.js +2 -2
  27. package/esm2015/lib/place/components/abstract-place-navigation.component.js +3 -2
  28. package/esm2015/lib/place/components/place-outlet/place-outlet.component.js +135 -84
  29. package/esm2015/lib/place/components/place-outlet/route-animations.js +2 -2
  30. package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +1 -1
  31. package/esm2015/lib/place/guards/leave-place.guard.js +12 -10
  32. package/esm2015/lib/place/guards/place-route.guard.js +40 -33
  33. package/esm2015/lib/place/index.js +5 -6
  34. package/esm2015/lib/place/nav-item.js +1 -1
  35. package/esm2015/lib/place/place-component.js +39 -169
  36. package/esm2015/lib/place/place-definition.js +79 -0
  37. package/esm2015/lib/place/place-history.js +77 -0
  38. package/esm2015/lib/place/place-router.js +98 -0
  39. package/esm2015/lib/place/place.decorator.js +30 -3
  40. package/esm2015/lib/place/place.module.js +2 -5
  41. package/esm2015/lib/place/route/json-types.js +1 -1
  42. package/esm2015/lib/place/route/parameter-decorators.js +7 -60
  43. package/esm2015/lib/place/route/parameter-definition.class.js +187 -9
  44. package/esm2015/lib/place/route/parameter-sanitiser.js +4 -17
  45. package/esm2015/lib/place/route/parameter-snapshot.js +228 -72
  46. package/esm2015/lib/place/route/parameter-type.js +2 -2
  47. package/esm2015/lib/place/route/route-parameter-sanitiser.js +7 -21
  48. package/esm2015/lib/place/visit.js +3 -3
  49. package/esm2015/public_api.js +2 -2
  50. package/esm5/coolon-angular-ui-powerups.js +16 -15
  51. package/esm5/index.js +2 -2
  52. package/esm5/lib/components/disposable-component.js +1 -1
  53. package/esm5/lib/components/forms/number-input/number-input.component.js +1 -1
  54. package/esm5/lib/components/forms/password-input/password-input.component.js +1 -1
  55. package/esm5/lib/components/forms/string-input/string-input.component.js +1 -1
  56. package/esm5/lib/components/resize-aware.component.js +1 -1
  57. package/esm5/lib/components/types/bounds.class.js +1 -1
  58. package/esm5/lib/components/types/dimension.class.js +1 -1
  59. package/esm5/lib/components/types/point.class.js +1 -1
  60. package/esm5/lib/directives/command.directive.js +1 -1
  61. package/esm5/lib/directives/focus-binding.directive.js +2 -2
  62. package/esm5/lib/interaction/alert.js +1 -1
  63. package/esm5/lib/interaction/components/activity-container/activity-container.component.js +2 -2
  64. package/esm5/lib/interaction/components/activity-outlet/activity-outlet.component.js +6 -1
  65. package/esm5/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js +2 -2
  66. package/esm5/lib/interaction/confirm.js +1 -1
  67. package/esm5/lib/interaction/interaction.module.js +2 -2
  68. package/esm5/lib/interaction/result.js +1 -1
  69. package/esm5/lib/interaction/services/dialog-interaction.service.js +2 -2
  70. package/esm5/lib/place/components/abstract-place-navigation.component.js +3 -2
  71. package/esm5/lib/place/components/place-outlet/place-outlet.component.js +153 -113
  72. package/esm5/lib/place/components/place-outlet/route-animations.js +2 -2
  73. package/esm5/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +1 -1
  74. package/esm5/lib/place/guards/leave-place.guard.js +12 -10
  75. package/esm5/lib/place/guards/place-route.guard.js +40 -32
  76. package/esm5/lib/place/index.js +5 -6
  77. package/esm5/lib/place/nav-item.js +1 -1
  78. package/esm5/lib/place/place-component.js +53 -199
  79. package/esm5/lib/place/place-definition.js +88 -0
  80. package/esm5/lib/place/place-history.js +90 -0
  81. package/esm5/lib/place/place-router.js +118 -0
  82. package/esm5/lib/place/place.decorator.js +30 -3
  83. package/esm5/lib/place/place.module.js +2 -5
  84. package/esm5/lib/place/route/json-types.js +1 -1
  85. package/esm5/lib/place/route/parameter-decorators.js +7 -60
  86. package/esm5/lib/place/route/parameter-definition.class.js +227 -9
  87. package/esm5/lib/place/route/parameter-sanitiser.js +4 -17
  88. package/esm5/lib/place/route/parameter-snapshot.js +295 -80
  89. package/esm5/lib/place/route/parameter-type.js +2 -2
  90. package/esm5/lib/place/route/route-parameter-sanitiser.js +7 -20
  91. package/esm5/lib/place/visit.js +3 -3
  92. package/esm5/public_api.js +2 -2
  93. package/fesm2015/coolon-angular-ui-powerups.js +1144 -904
  94. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  95. package/fesm5/coolon-angular-ui-powerups.js +1462 -1154
  96. package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
  97. package/index.d.ts +1 -1
  98. package/lib/interaction/components/activity-outlet/activity-outlet.component.d.ts +7 -0
  99. package/lib/place/components/abstract-place-navigation.component.d.ts +3 -2
  100. package/lib/place/components/place-outlet/place-outlet.component.d.ts +30 -19
  101. package/lib/place/guards/place-route.guard.d.ts +7 -6
  102. package/lib/place/index.d.ts +3 -4
  103. package/lib/place/place-component.d.ts +13 -41
  104. package/lib/place/place-definition.d.ts +20 -0
  105. package/lib/place/place-history.d.ts +13 -0
  106. package/lib/place/place-router.d.ts +10 -0
  107. package/lib/place/place.decorator.d.ts +13 -1
  108. package/lib/place/route/parameter-decorators.d.ts +0 -4
  109. package/lib/place/route/parameter-definition.class.d.ts +39 -6
  110. package/lib/place/route/parameter-sanitiser.d.ts +3 -8
  111. package/lib/place/route/parameter-snapshot.d.ts +15 -12
  112. package/lib/place/route/route-parameter-sanitiser.d.ts +1 -3
  113. package/lib/place/visit.d.ts +4 -4
  114. package/package.json +1 -1
  115. package/schematics/place-routes/index.js.map +1 -1
  116. package/schematics/place-routes/place-def.js +1 -1
  117. package/schematics/place-routes/place-def.js.map +1 -1
  118. package/schematics/place-routes/templates/place-destinations.ts.template +21 -0
  119. package/schematics/place-routes/templates/{places.ts.template → place-routes.ts.template} +1 -13
  120. package/esm2015/lib/place/place-component-like.js +0 -17
  121. package/esm2015/lib/place/place-updates-service.js +0 -16
  122. package/esm2015/lib/place/place.service.js +0 -102
  123. package/esm2015/lib/place/route/default-parameter-sanitiser.js +0 -78
  124. package/esm5/lib/place/place-component-like.js +0 -17
  125. package/esm5/lib/place/place-updates-service.js +0 -16
  126. package/esm5/lib/place/place.service.js +0 -136
  127. package/esm5/lib/place/route/default-parameter-sanitiser.js +0 -85
  128. package/lib/place/place-component-like.d.ts +0 -5
  129. package/lib/place/place-updates-service.d.ts +0 -10
  130. package/lib/place/place.service.d.ts +0 -22
  131. package/lib/place/route/default-parameter-sanitiser.d.ts +0 -13
@@ -3,7 +3,7 @@
3
3
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
4
  */
5
5
  import { Injectable, Injector } from '@angular/core';
6
- import { PRIMARY_OUTLET, Router } from '@angular/router';
6
+ import { Router } from '@angular/router';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "@angular/router";
9
9
  var LeavePlaceGuard = /** @class */ (function () {
@@ -29,14 +29,16 @@ var LeavePlaceGuard = /** @class */ (function () {
29
29
  // HACK: this will break with child routes...
30
30
  /** @type {?} */
31
31
  var path = "/" + component.placeDefinition.path;
32
- console.log({
33
- placePath: path,
34
- currentRoute: currentRoute.toString(),
35
- currentStateUrl: currentState.url,
36
- nextStateUrl: nextState.url,
37
- currentStateUrlTree: this.router.parseUrl(currentState.url).root.children[PRIMARY_OUTLET].segments,
38
- nextStateUrlTree: this.router.parseUrl(nextState.url).root.children[PRIMARY_OUTLET].segments
39
- });
32
+ // let thisTree = this.router.parseUrl(currentState.url);
33
+ // let nextTree = this.router.parseUrl(nextState.url);
34
+ // console.log({
35
+ // placePath: path,
36
+ // currentRoute: currentRoute.toString(),
37
+ // currentStateUrl: currentState.url,
38
+ // nextStateUrl: nextState.url,
39
+ // currentStateUrlTree: thisTree.root.children[PRIMARY_OUTLET].segments,
40
+ // nextStateUrlTree: nextTree.root.children[PRIMARY_OUTLET].segments
41
+ // });
40
42
  // nextState is the full path...
41
43
  if (!nextState.url.startsWith(path)) {
42
44
  return component.canDeactivate();
@@ -71,4 +73,4 @@ if (false) {
71
73
  */
72
74
  LeavePlaceGuard.prototype.injector;
73
75
  }
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVhdmUtcGxhY2UuZ3VhcmQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvcGxhY2UvZ3VhcmRzL2xlYXZlLXBsYWNlLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBR0wsY0FBYyxFQUNkLE1BQU0sRUFHUCxNQUFNLGlCQUFpQixDQUFDOzs7QUFLekI7SUFLRSx5QkFBb0IsTUFBYyxFQUFVLFFBQWtCO1FBQTFDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFVO0lBQzlELENBQUM7Ozs7Ozs7O0lBRUQsdUNBQWE7Ozs7Ozs7SUFBYixVQUFjLFNBQXlCLEVBQUUsWUFBb0MsRUFBRSxZQUFpQyxFQUFFLFNBQStCOzs7WUFFekksSUFBSSxHQUFHLE1BQUksU0FBUyxDQUFDLGVBQWUsQ0FBQyxJQUFNO1FBQ2pELE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFDVixTQUFTLEVBQUUsSUFBSTtZQUNmLFlBQVksRUFBRSxZQUFZLENBQUMsUUFBUSxFQUFFO1lBQ3JDLGVBQWUsRUFBRSxZQUFZLENBQUMsR0FBRztZQUNqQyxZQUFZLEVBQUUsU0FBUyxDQUFDLEdBQUc7WUFDM0IsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUMsUUFBUTtZQUNsRyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRO1NBQzdGLENBQUMsQ0FBQztRQUNILGdDQUFnQztRQUNoQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDbkMsT0FBTyxTQUFTLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDbEM7YUFBTTtZQUNMLE9BQU8sSUFBSSxDQUFDO1NBQ2I7SUFDSCxDQUFDOztnQkF6QkYsVUFBVSxTQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7OztnQkFWQyxNQUFNO2dCQUxhLFFBQVE7OzswQkFBN0I7Q0F3Q0MsQUEzQkQsSUEyQkM7U0F4QlksZUFBZTs7Ozs7O0lBRWQsaUNBQXNCOzs7OztJQUFFLG1DQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICBDYW5EZWFjdGl2YXRlLFxuICBQUklNQVJZX09VVExFVCxcbiAgUm91dGVyLFxuICBSb3V0ZXJTdGF0ZVNuYXBzaG90LFxuICBVcmxUcmVlXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBDb25zdHJ1Y3RhYmxlLCBsYW5nIH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUGxhY2VDb21wb25lbnQgfSBmcm9tICcuLi9wbGFjZS1jb21wb25lbnQnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBMZWF2ZVBsYWNlR3VhcmQgaW1wbGVtZW50cyBDYW5EZWFjdGl2YXRlPFBsYWNlQ29tcG9uZW50PiB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgfVxuXG4gIGNhbkRlYWN0aXZhdGUoY29tcG9uZW50OiBQbGFjZUNvbXBvbmVudCwgY3VycmVudFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBjdXJyZW50U3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QsIG5leHRTdGF0ZT86IFJvdXRlclN0YXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCBVcmxUcmVlPiB8IFByb21pc2U8Ym9vbGVhbiB8IFVybFRyZWU+IHwgYm9vbGVhbiB8IFVybFRyZWUge1xuICAgIC8vIEhBQ0s6IHRoaXMgd2lsbCBicmVhayB3aXRoIGNoaWxkIHJvdXRlcy4uLlxuICAgIGNvbnN0IHBhdGggPSBgLyR7Y29tcG9uZW50LnBsYWNlRGVmaW5pdGlvbi5wYXRofWA7XG4gICAgY29uc29sZS5sb2coe1xuICAgICAgcGxhY2VQYXRoOiBwYXRoLFxuICAgICAgY3VycmVudFJvdXRlOiBjdXJyZW50Um91dGUudG9TdHJpbmcoKSxcbiAgICAgIGN1cnJlbnRTdGF0ZVVybDogY3VycmVudFN0YXRlLnVybCxcbiAgICAgIG5leHRTdGF0ZVVybDogbmV4dFN0YXRlLnVybCxcbiAgICAgIGN1cnJlbnRTdGF0ZVVybFRyZWU6IHRoaXMucm91dGVyLnBhcnNlVXJsKGN1cnJlbnRTdGF0ZS51cmwpLnJvb3QuY2hpbGRyZW5bUFJJTUFSWV9PVVRMRVRdLnNlZ21lbnRzLFxuICAgICAgbmV4dFN0YXRlVXJsVHJlZTogdGhpcy5yb3V0ZXIucGFyc2VVcmwobmV4dFN0YXRlLnVybCkucm9vdC5jaGlsZHJlbltQUklNQVJZX09VVExFVF0uc2VnbWVudHNcbiAgICB9KTtcbiAgICAvLyBuZXh0U3RhdGUgaXMgdGhlIGZ1bGwgcGF0aC4uLlxuICAgIGlmICghbmV4dFN0YXRlLnVybC5zdGFydHNXaXRoKHBhdGgpKSB7XG4gICAgICByZXR1cm4gY29tcG9uZW50LmNhbkRlYWN0aXZhdGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVhdmUtcGxhY2UuZ3VhcmQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvcGxhY2UvZ3VhcmRzL2xlYXZlLXBsYWNlLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQXlDLE1BQU0sRUFBZ0MsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBSTlHO0lBS0UseUJBQW9CLE1BQWMsRUFBVSxRQUFrQjtRQUExQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUM5RCxDQUFDOzs7Ozs7OztJQUVELHVDQUFhOzs7Ozs7O0lBQWIsVUFBYyxTQUF5QixFQUFFLFlBQW9DLEVBQUUsWUFBaUMsRUFBRSxTQUErQjs7O1lBRXpJLElBQUksR0FBRyxNQUFJLFNBQVMsQ0FBQyxlQUFlLENBQUMsSUFBTTtRQUNqRCx5REFBeUQ7UUFDekQsc0RBQXNEO1FBQ3RELGdCQUFnQjtRQUNoQixxQkFBcUI7UUFDckIsMkNBQTJDO1FBQzNDLHVDQUF1QztRQUN2QyxpQ0FBaUM7UUFDakMsMEVBQTBFO1FBQzFFLHNFQUFzRTtRQUN0RSxNQUFNO1FBRU4sZ0NBQWdDO1FBQ2hDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNuQyxPQUFPLFNBQVMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUNsQzthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUM7U0FDYjtJQUNILENBQUM7O2dCQTVCRixVQUFVLFNBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzs7O2dCQU4rQyxNQUFNO2dCQURqQyxRQUFROzs7MEJBQTdCO0NBbUNDLEFBOUJELElBOEJDO1NBM0JZLGVBQWU7Ozs7OztJQUVkLGlDQUFzQjs7Ozs7SUFBRSxtQ0FBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgQ2FuRGVhY3RpdmF0ZSwgUm91dGVyLCBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBVcmxUcmVlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFBsYWNlQ29tcG9uZW50IH0gZnJvbSAnLi4vcGxhY2UtY29tcG9uZW50JztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTGVhdmVQbGFjZUd1YXJkIGltcGxlbWVudHMgQ2FuRGVhY3RpdmF0ZTxQbGFjZUNvbXBvbmVudD4ge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gIH1cblxuICBjYW5EZWFjdGl2YXRlKGNvbXBvbmVudDogUGxhY2VDb21wb25lbnQsIGN1cnJlbnRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgY3VycmVudFN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBuZXh0U3RhdGU/OiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogT2JzZXJ2YWJsZTxib29sZWFuIHwgVXJsVHJlZT4gfCBQcm9taXNlPGJvb2xlYW4gfCBVcmxUcmVlPiB8IGJvb2xlYW4gfCBVcmxUcmVlIHtcbiAgICAvLyBIQUNLOiB0aGlzIHdpbGwgYnJlYWsgd2l0aCBjaGlsZCByb3V0ZXMuLi5cbiAgICBjb25zdCBwYXRoID0gYC8ke2NvbXBvbmVudC5wbGFjZURlZmluaXRpb24ucGF0aH1gO1xuICAgIC8vIGxldCB0aGlzVHJlZSA9IHRoaXMucm91dGVyLnBhcnNlVXJsKGN1cnJlbnRTdGF0ZS51cmwpO1xuICAgIC8vIGxldCBuZXh0VHJlZSA9IHRoaXMucm91dGVyLnBhcnNlVXJsKG5leHRTdGF0ZS51cmwpO1xuICAgIC8vIGNvbnNvbGUubG9nKHtcbiAgICAvLyAgIHBsYWNlUGF0aDogcGF0aCxcbiAgICAvLyAgIGN1cnJlbnRSb3V0ZTogY3VycmVudFJvdXRlLnRvU3RyaW5nKCksXG4gICAgLy8gICBjdXJyZW50U3RhdGVVcmw6IGN1cnJlbnRTdGF0ZS51cmwsXG4gICAgLy8gICBuZXh0U3RhdGVVcmw6IG5leHRTdGF0ZS51cmwsXG4gICAgLy8gICBjdXJyZW50U3RhdGVVcmxUcmVlOiB0aGlzVHJlZS5yb290LmNoaWxkcmVuW1BSSU1BUllfT1VUTEVUXS5zZWdtZW50cyxcbiAgICAvLyAgIG5leHRTdGF0ZVVybFRyZWU6IG5leHRUcmVlLnJvb3QuY2hpbGRyZW5bUFJJTUFSWV9PVVRMRVRdLnNlZ21lbnRzXG4gICAgLy8gfSk7XG5cbiAgICAvLyBuZXh0U3RhdGUgaXMgdGhlIGZ1bGwgcGF0aC4uLlxuICAgIGlmICghbmV4dFN0YXRlLnVybC5zdGFydHNXaXRoKHBhdGgpKSB7XG4gICAgICByZXR1cm4gY29tcG9uZW50LmNhbkRlYWN0aXZhdGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
@@ -2,43 +2,51 @@
2
2
  * @fileoverview added by tsickle
3
3
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
4
  */
5
- import { Injectable } from '@angular/core';
6
- import { Router } from '@angular/router';
7
- import { PlaceService } from '../place.service';
5
+ import { Injectable, Injector } from '@angular/core';
6
+ import { lang } from '@coolon/pectin';
7
+ import { PlaceComponent } from '../place-component';
8
+ import { PlaceRouter } from '../place-router';
9
+ import { ParameterSnapshot } from '../route/parameter-snapshot';
8
10
  import * as i0 from "@angular/core";
9
- import * as i1 from "../place.service";
10
- import * as i2 from "@angular/router";
11
+ import * as i1 from "../place-router";
11
12
  var PlaceRouteGuard = /** @class */ (function () {
12
- function PlaceRouteGuard(placeService, router) {
13
- this.placeService = placeService;
14
- this.router = router;
13
+ function PlaceRouteGuard(placeRouter, injector) {
14
+ this.placeRouter = placeRouter;
15
+ this.injector = injector;
15
16
  }
16
17
  /**
17
- * @param {?} route
18
+ * @param {?} activatedRoute
18
19
  * @param {?} state
19
20
  * @return {?}
20
21
  */
21
22
  PlaceRouteGuard.prototype.canActivate = /**
22
- * @param {?} route
23
+ * @param {?} activatedRoute
23
24
  * @param {?} state
24
25
  * @return {?}
25
26
  */
26
- function (route, state) {
27
- // Implement this when adding child routes.
28
- // TODO: there are really two types of snapshot, ones with id's and ones without.
29
- // Id snapshot are repesented by 2 url segments
30
- // ID => [{'/basePath', params}, {'id', params}]
31
- // NO ID => [{'/basePath', params}]
32
- // console.log({urlSegments: route.url});
33
- // const snapshot = ParameterSnapshot.create(PlaceComponent.getDefinition(route.component as Constructable<PlaceComponent>), route.paramMap);
34
- // return this.placeService.sanitise(snapshot).then(sanitised => {
35
- // if (sanitised.hasChanged(snapshot)) {
36
- // return this.router.createUrlTree(snapshot.updateUrl(route.url))
37
- // } else {
38
- // return true;
39
- // }
40
- // });
41
- return true;
27
+ function (activatedRoute, state) {
28
+ var _this = this;
29
+ if (PlaceComponent.isPlaceComponentConstructor(activatedRoute.component)) {
30
+ /** @type {?} */
31
+ var placeDefinition = PlaceComponent.getDefinition(activatedRoute.component);
32
+ /** @type {?} */
33
+ var snapshot_1 = ParameterSnapshot.create(placeDefinition, activatedRoute.paramMap, activatedRoute.url);
34
+ return snapshot_1.sanitise(this.injector).then((/**
35
+ * @param {?} sanitised
36
+ * @return {?}
37
+ */
38
+ function (sanitised) {
39
+ if (sanitised.hasChanged(snapshot_1, true)) {
40
+ return _this.placeRouter.getRedirectUrlTree(activatedRoute, sanitised);
41
+ }
42
+ else {
43
+ return true;
44
+ }
45
+ }));
46
+ }
47
+ else {
48
+ return lang.illegalState("expected component to be an instance of PlaceComponent, got " + activatedRoute.component);
49
+ }
42
50
  };
43
51
  PlaceRouteGuard.decorators = [
44
52
  { type: Injectable, args: [{
@@ -47,10 +55,10 @@ var PlaceRouteGuard = /** @class */ (function () {
47
55
  ];
48
56
  /** @nocollapse */
49
57
  PlaceRouteGuard.ctorParameters = function () { return [
50
- { type: PlaceService },
51
- { type: Router }
58
+ { type: PlaceRouter },
59
+ { type: Injector }
52
60
  ]; };
53
- /** @nocollapse */ PlaceRouteGuard.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function PlaceRouteGuard_Factory() { return new PlaceRouteGuard(i0.ɵɵinject(i1.PlaceService), i0.ɵɵinject(i2.Router)); }, token: PlaceRouteGuard, providedIn: "root" });
61
+ /** @nocollapse */ PlaceRouteGuard.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function PlaceRouteGuard_Factory() { return new PlaceRouteGuard(i0.ɵɵinject(i1.PlaceRouter), i0.ɵɵinject(i0.INJECTOR)); }, token: PlaceRouteGuard, providedIn: "root" });
54
62
  return PlaceRouteGuard;
55
63
  }());
56
64
  export { PlaceRouteGuard };
@@ -59,11 +67,11 @@ if (false) {
59
67
  * @type {?}
60
68
  * @private
61
69
  */
62
- PlaceRouteGuard.prototype.placeService;
70
+ PlaceRouteGuard.prototype.placeRouter;
63
71
  /**
64
72
  * @type {?}
65
73
  * @private
66
74
  */
67
- PlaceRouteGuard.prototype.router;
75
+ PlaceRouteGuard.prototype.injector;
68
76
  }
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Utcm91dGUuZ3VhcmQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvcGxhY2UvZ3VhcmRzL3BsYWNlLXJvdXRlLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBdUMsTUFBTSxFQUFnQyxNQUFNLGlCQUFpQixDQUFDO0FBRTVHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7OztBQUVoRDtJQUtFLHlCQUE2QixZQUEwQixFQUFtQixNQUFjO1FBQTNELGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQW1CLFdBQU0sR0FBTixNQUFNLENBQVE7SUFDeEYsQ0FBQzs7Ozs7O0lBRUQscUNBQVc7Ozs7O0lBQVgsVUFBWSxLQUE2QixFQUFFLEtBQTBCO1FBQ25FLDJDQUEyQztRQUMzQyxpRkFBaUY7UUFDakYsK0NBQStDO1FBQy9DLGdEQUFnRDtRQUNoRCxtQ0FBbUM7UUFDbkMseUNBQXlDO1FBQ3pDLDZJQUE2STtRQUU3SSxrRUFBa0U7UUFDbEUsMENBQTBDO1FBQzFDLHNFQUFzRTtRQUN0RSxhQUFhO1FBQ2IsbUJBQW1CO1FBQ25CLE1BQU07UUFDTixNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOztnQkF6QkYsVUFBVSxTQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7OztnQkFKUSxZQUFZO2dCQUZ5QixNQUFNOzs7MEJBRHBEO0NBZ0NDLEFBM0JELElBMkJDO1NBeEJZLGVBQWU7Ozs7OztJQUVkLHVDQUEyQzs7Ozs7SUFBRSxpQ0FBK0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBDYW5BY3RpdmF0ZSwgUm91dGVyLCBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBVcmxUcmVlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFBsYWNlU2VydmljZSB9IGZyb20gJy4uL3BsYWNlLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBQbGFjZVJvdXRlR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwbGFjZVNlcnZpY2U6IFBsYWNlU2VydmljZSwgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcikge1xuICB9XG5cbiAgY2FuQWN0aXZhdGUocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogT2JzZXJ2YWJsZTxib29sZWFuIHwgVXJsVHJlZT4gfCBQcm9taXNlPGJvb2xlYW4gfCBVcmxUcmVlPiB8IGJvb2xlYW4gfCBVcmxUcmVlIHtcbiAgICAvLyBJbXBsZW1lbnQgdGhpcyB3aGVuIGFkZGluZyBjaGlsZCByb3V0ZXMuXG4gICAgLy8gVE9ETzogdGhlcmUgYXJlIHJlYWxseSB0d28gdHlwZXMgb2Ygc25hcHNob3QsIG9uZXMgd2l0aCBpZCdzIGFuZCBvbmVzIHdpdGhvdXQuXG4gICAgLy8gSWQgc25hcHNob3QgYXJlIHJlcGVzZW50ZWQgYnkgMiB1cmwgc2VnbWVudHNcbiAgICAvLyBJRCA9PiBbeycvYmFzZVBhdGgnLCBwYXJhbXN9LCB7J2lkJywgcGFyYW1zfV1cbiAgICAvLyBOTyBJRCA9PiBbeycvYmFzZVBhdGgnLCBwYXJhbXN9XVxuICAgIC8vIGNvbnNvbGUubG9nKHt1cmxTZWdtZW50czogcm91dGUudXJsfSk7XG4gICAgLy8gY29uc3Qgc25hcHNob3QgPSBQYXJhbWV0ZXJTbmFwc2hvdC5jcmVhdGUoUGxhY2VDb21wb25lbnQuZ2V0RGVmaW5pdGlvbihyb3V0ZS5jb21wb25lbnQgYXMgQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4pLCByb3V0ZS5wYXJhbU1hcCk7XG5cbiAgICAvLyByZXR1cm4gdGhpcy5wbGFjZVNlcnZpY2Uuc2FuaXRpc2Uoc25hcHNob3QpLnRoZW4oc2FuaXRpc2VkID0+IHtcbiAgICAvLyAgIGlmIChzYW5pdGlzZWQuaGFzQ2hhbmdlZChzbmFwc2hvdCkpIHtcbiAgICAvLyAgICAgcmV0dXJuIHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUoc25hcHNob3QudXBkYXRlVXJsKHJvdXRlLnVybCkpXG4gICAgLy8gICB9IGVsc2Uge1xuICAgIC8vICAgICByZXR1cm4gdHJ1ZTtcbiAgICAvLyAgIH1cbiAgICAvLyB9KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG59XG4iXX0=
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Utcm91dGUuZ3VhcmQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvcGxhY2UvZ3VhcmRzL3BsYWNlLXJvdXRlLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7O0FBRWhFO0lBS0UseUJBQTZCLFdBQXdCLEVBQW1CLFFBQWtCO1FBQTdELGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQW1CLGFBQVEsR0FBUixRQUFRLENBQVU7SUFDMUYsQ0FBQzs7Ozs7O0lBRUQscUNBQVc7Ozs7O0lBQVgsVUFBWSxjQUFzQyxFQUFFLEtBQTBCO1FBQTlFLGlCQWNDO1FBYkMsSUFBSSxjQUFjLENBQUMsMkJBQTJCLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxFQUFFOztnQkFDbEUsZUFBZSxHQUFHLGNBQWMsQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQzs7Z0JBQ3hFLFVBQVEsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLGNBQWMsQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLEdBQUcsQ0FBQztZQUN2RyxPQUFPLFVBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUk7Ozs7WUFBQyxVQUFBLFNBQVM7Z0JBQ3BELElBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQyxVQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUU7b0JBQ3hDLE9BQU8sS0FBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLEVBQUUsU0FBUyxDQUFDLENBQUM7aUJBQ3ZFO3FCQUFNO29CQUNMLE9BQU8sSUFBSSxDQUFDO2lCQUNiO1lBQ0gsQ0FBQyxFQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGlFQUErRCxjQUFjLENBQUMsU0FBVyxDQUFDLENBQUM7U0FDckg7SUFDSCxDQUFDOztnQkF0QkYsVUFBVSxTQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7OztnQkFMUSxXQUFXO2dCQUxDLFFBQVE7OzswQkFBN0I7Q0FnQ0MsQUF4QkQsSUF3QkM7U0FyQlksZUFBZTs7Ozs7O0lBRWQsc0NBQXlDOzs7OztJQUFFLG1DQUFtQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBDYW5BY3RpdmF0ZSwgUm91dGVyU3RhdGVTbmFwc2hvdCwgVXJsVHJlZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBsYW5nIH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUGxhY2VDb21wb25lbnQgfSBmcm9tICcuLi9wbGFjZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgUGxhY2VSb3V0ZXIgfSBmcm9tICcuLi9wbGFjZS1yb3V0ZXInO1xuaW1wb3J0IHsgUGFyYW1ldGVyU25hcHNob3QgfSBmcm9tICcuLi9yb3V0ZS9wYXJhbWV0ZXItc25hcHNob3QnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBQbGFjZVJvdXRlR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwbGFjZVJvdXRlcjogUGxhY2VSb3V0ZXIsIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gIH1cblxuICBjYW5BY3RpdmF0ZShhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCBVcmxUcmVlPiB8IFByb21pc2U8Ym9vbGVhbiB8IFVybFRyZWU+IHwgYm9vbGVhbiB8IFVybFRyZWUge1xuICAgIGlmIChQbGFjZUNvbXBvbmVudC5pc1BsYWNlQ29tcG9uZW50Q29uc3RydWN0b3IoYWN0aXZhdGVkUm91dGUuY29tcG9uZW50KSkge1xuICAgICAgY29uc3QgcGxhY2VEZWZpbml0aW9uID0gUGxhY2VDb21wb25lbnQuZ2V0RGVmaW5pdGlvbihhY3RpdmF0ZWRSb3V0ZS5jb21wb25lbnQpO1xuICAgICAgY29uc3Qgc25hcHNob3QgPSBQYXJhbWV0ZXJTbmFwc2hvdC5jcmVhdGUocGxhY2VEZWZpbml0aW9uLCBhY3RpdmF0ZWRSb3V0ZS5wYXJhbU1hcCwgYWN0aXZhdGVkUm91dGUudXJsKTtcbiAgICAgIHJldHVybiBzbmFwc2hvdC5zYW5pdGlzZSh0aGlzLmluamVjdG9yKS50aGVuKHNhbml0aXNlZCA9PiB7XG4gICAgICAgIGlmIChzYW5pdGlzZWQuaGFzQ2hhbmdlZChzbmFwc2hvdCwgdHJ1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5wbGFjZVJvdXRlci5nZXRSZWRpcmVjdFVybFRyZWUoYWN0aXZhdGVkUm91dGUsIHNhbml0aXNlZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbGFuZy5pbGxlZ2FsU3RhdGUoYGV4cGVjdGVkIGNvbXBvbmVudCB0byBiZSBhbiBpbnN0YW5jZSBvZiBQbGFjZUNvbXBvbmVudCwgZ290ICR7YWN0aXZhdGVkUm91dGUuY29tcG9uZW50fWApO1xuICAgIH1cbiAgfVxuXG59XG4iXX0=
@@ -6,12 +6,12 @@
6
6
  * @file Automatically generated by barrelsby.
7
7
  */
8
8
  export {} from "./nav-item";
9
- export {} from "./place-component-like";
10
9
  export { DEFINITION_META_DATA_KEY, ROUTE_PARAMETER_LIST_KEY, PlaceComponent } from "./place-component";
11
- export {} from "./place-updates-service";
10
+ export { PlaceDefinition } from "./place-definition";
11
+ export { PlaceHistory } from "./place-history";
12
+ export { PlaceRouter } from "./place-router";
12
13
  export { Place } from "./place.decorator";
13
14
  export { PlaceModule } from "./place.module";
14
- export { PlaceService } from "./place.service";
15
15
  export {} from "./visit";
16
16
  export { AbstractPlaceNavigationComponent } from "./components/abstract-place-navigation.component";
17
17
  export { BusyOverlayComponent } from "./components/busy-overlay/busy-overlay.component";
@@ -22,12 +22,11 @@ export { leftRightPlaceAnimation, LEFT_RIGHT_PLACE_ANIMATION } from "./component
22
22
  export { TabbedPlaceNavigationComponent } from "./components/tabbed-place-navigation/tabbed-place-navigation.component";
23
23
  export { LeavePlaceGuard } from "./guards/leave-place.guard";
24
24
  export { PlaceRouteGuard } from "./guards/place-route.guard";
25
- export { DefaultParameterSanitiser } from "./route/default-parameter-sanitiser";
26
25
  export {} from "./route/json-types";
27
26
  export { RouteId, RouteParameter, RouteParameterList } from "./route/parameter-decorators";
28
- export {} from "./route/parameter-definition.class";
27
+ export { ParameterDefinition } from "./route/parameter-definition.class";
29
28
  export {} from "./route/parameter-sanitiser";
30
29
  export { ParameterSnapshot } from "./route/parameter-snapshot";
31
30
  export { ParameterType } from "./route/parameter-type";
32
31
  export { Sanitiser, RouteParameterSanitiser } from "./route/route-parameter-sanitiser";
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvcGxhY2UvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUlBLGVBQWMsWUFBWSxDQUFDO0FBQzNCLGVBQWMsd0JBQXdCLENBQUM7QUFDdkMsbUZBQWMsbUJBQW1CLENBQUM7QUFDbEMsZUFBYyx5QkFBeUIsQ0FBQztBQUN4QyxzQkFBYyxtQkFBbUIsQ0FBQztBQUNsQyw0QkFBYyxnQkFBZ0IsQ0FBQztBQUMvQiw2QkFBYyxpQkFBaUIsQ0FBQztBQUNoQyxlQUFjLFNBQVMsQ0FBQztBQUN4QixpREFBYyxrREFBa0QsQ0FBQztBQUNqRSxxQ0FBYyxrREFBa0QsQ0FBQztBQUNqRSxvQ0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxzQ0FBYyxzREFBc0QsQ0FBQztBQUNyRSxxQ0FBYyxrREFBa0QsQ0FBQztBQUNqRSxvRUFBYyw0Q0FBNEMsQ0FBQztBQUMzRCwrQ0FBYyx3RUFBd0UsQ0FBQztBQUN2RixnQ0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxnQ0FBYyw0QkFBNEIsQ0FBQztBQUMzQywwQ0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxlQUFjLG9CQUFvQixDQUFDO0FBQ25DLDREQUFjLDhCQUE4QixDQUFDO0FBQzdDLGVBQWMsb0NBQW9DLENBQUM7QUFDbkQsZUFBYyw2QkFBNkIsQ0FBQztBQUM1QyxrQ0FBYyw0QkFBNEIsQ0FBQztBQUMzQyw4QkFBYyx3QkFBd0IsQ0FBQztBQUN2QyxtREFBYyxtQ0FBbUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGUgQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgYmFycmVsc2J5LlxuICovXG5cbmV4cG9ydCAqIGZyb20gXCIuL25hdi1pdGVtXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wbGFjZS1jb21wb25lbnQtbGlrZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGxhY2UtY29tcG9uZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wbGFjZS11cGRhdGVzLXNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BsYWNlLmRlY29yYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGxhY2UubW9kdWxlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wbGFjZS5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi92aXNpdFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9hYnN0cmFjdC1wbGFjZS1uYXZpZ2F0aW9uLmNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9idXN5LW92ZXJsYXkvYnVzeS1vdmVybGF5LmNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5jb21wb25lbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvbGlzdC1wbGFjZS1uYXYvbGlzdC1wbGFjZS1uYXYuY29tcG9uZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL3BsYWNlLW91dGxldC9wbGFjZS1vdXRsZXQuY29tcG9uZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL3BsYWNlLW91dGxldC9yb3V0ZS1hbmltYXRpb25zXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL3RhYmJlZC1wbGFjZS1uYXZpZ2F0aW9uL3RhYmJlZC1wbGFjZS1uYXZpZ2F0aW9uLmNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZ3VhcmRzL2xlYXZlLXBsYWNlLmd1YXJkXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ndWFyZHMvcGxhY2Utcm91dGUuZ3VhcmRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JvdXRlL2RlZmF1bHQtcGFyYW1ldGVyLXNhbml0aXNlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcm91dGUvanNvbi10eXBlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcm91dGUvcGFyYW1ldGVyLWRlY29yYXRvcnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JvdXRlL3BhcmFtZXRlci1kZWZpbml0aW9uLmNsYXNzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yb3V0ZS9wYXJhbWV0ZXItc2FuaXRpc2VyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yb3V0ZS9wYXJhbWV0ZXItc25hcHNob3RcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JvdXRlL3BhcmFtZXRlci10eXBlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yb3V0ZS9yb3V0ZS1wYXJhbWV0ZXItc2FuaXRpc2VyXCI7XG4iXX0=
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvcGxhY2UvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUlBLGVBQWMsWUFBWSxDQUFDO0FBQzNCLG1GQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGdDQUFjLG9CQUFvQixDQUFDO0FBQ25DLDZCQUFjLGlCQUFpQixDQUFDO0FBQ2hDLDRCQUFjLGdCQUFnQixDQUFDO0FBQy9CLHNCQUFjLG1CQUFtQixDQUFDO0FBQ2xDLDRCQUFjLGdCQUFnQixDQUFDO0FBQy9CLGVBQWMsU0FBUyxDQUFDO0FBQ3hCLGlEQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLHFDQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLG9DQUFjLGdEQUFnRCxDQUFDO0FBQy9ELHNDQUFjLHNEQUFzRCxDQUFDO0FBQ3JFLHFDQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLG9FQUFjLDRDQUE0QyxDQUFDO0FBQzNELCtDQUFjLHdFQUF3RSxDQUFDO0FBQ3ZGLGdDQUFjLDRCQUE0QixDQUFDO0FBQzNDLGdDQUFjLDRCQUE0QixDQUFDO0FBQzNDLGVBQWMsb0JBQW9CLENBQUM7QUFDbkMsNERBQWMsOEJBQThCLENBQUM7QUFDN0Msb0NBQWMsb0NBQW9DLENBQUM7QUFDbkQsZUFBYyw2QkFBNkIsQ0FBQztBQUM1QyxrQ0FBYyw0QkFBNEIsQ0FBQztBQUMzQyw4QkFBYyx3QkFBd0IsQ0FBQztBQUN2QyxtREFBYyxtQ0FBbUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGUgQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgYmFycmVsc2J5LlxuICovXG5cbmV4cG9ydCAqIGZyb20gXCIuL25hdi1pdGVtXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wbGFjZS1jb21wb25lbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BsYWNlLWRlZmluaXRpb25cIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BsYWNlLWhpc3RvcnlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BsYWNlLXJvdXRlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGxhY2UuZGVjb3JhdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wbGFjZS5tb2R1bGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Zpc2l0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL2Fic3RyYWN0LXBsYWNlLW5hdmlnYXRpb24uY29tcG9uZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL2J1c3ktb3ZlcmxheS9idXN5LW92ZXJsYXkuY29tcG9uZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9saXN0LXBsYWNlLW5hdi9saXN0LXBsYWNlLW5hdi5jb21wb25lbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvcGxhY2Utb3V0bGV0L3BsYWNlLW91dGxldC5jb21wb25lbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvcGxhY2Utb3V0bGV0L3JvdXRlLWFuaW1hdGlvbnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvdGFiYmVkLXBsYWNlLW5hdmlnYXRpb24vdGFiYmVkLXBsYWNlLW5hdmlnYXRpb24uY29tcG9uZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ndWFyZHMvbGVhdmUtcGxhY2UuZ3VhcmRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2d1YXJkcy9wbGFjZS1yb3V0ZS5ndWFyZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcm91dGUvanNvbi10eXBlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcm91dGUvcGFyYW1ldGVyLWRlY29yYXRvcnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JvdXRlL3BhcmFtZXRlci1kZWZpbml0aW9uLmNsYXNzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yb3V0ZS9wYXJhbWV0ZXItc2FuaXRpc2VyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yb3V0ZS9wYXJhbWV0ZXItc25hcHNob3RcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JvdXRlL3BhcmFtZXRlci10eXBlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yb3V0ZS9yb3V0ZS1wYXJhbWV0ZXItc2FuaXRpc2VyXCI7XG4iXX0=
@@ -20,4 +20,4 @@ if (false) {
20
20
  */
21
21
  NavItem.prototype.tooltip = function () { };
22
22
  }
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LWl0ZW0uanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvcGxhY2UvbmF2LWl0ZW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLDZCQUlDOzs7OztJQUhDLDBDQUFlOzs7O0lBQ2YseUNBQWU7Ozs7SUFDZiw0Q0FBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIE5hdkl0ZW0ge1xuICB0aXRsZSgpOnN0cmluZztcbiAgaWNvbj8oKTpzdHJpbmc7XG4gIHRvb2x0aXA/KCk6c3RyaW5nO1xufVxuIl19
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LWl0ZW0uanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvcGxhY2UvbmF2LWl0ZW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLDZCQU1DOzs7OztJQUxDLDBDQUFnQjs7OztJQUVoQix5Q0FBZ0I7Ozs7SUFFaEIsNENBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBOYXZJdGVtIHtcbiAgdGl0bGUoKTogc3RyaW5nO1xuXG4gIGljb24/KCk6IHN0cmluZztcblxuICB0b29sdGlwPygpOiBzdHJpbmc7XG59XG4iXX0=
@@ -3,13 +3,12 @@
3
3
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
4
  */
5
5
  import * as tslib_1 from "tslib";
6
- import { assert, Binding, Dsl, lang, MutableValueModel } from '@coolon/pectin';
6
+ import { assert, Binding, lang } from '@coolon/pectin';
7
7
  import { Klass } from '@coolon/typescript-utilities';
8
8
  import { Memoize } from '@typescript-plus/fast-memoize-decorator';
9
- import * as _ from 'lodash';
10
9
  import 'reflect-metadata';
11
10
  import { DisposableComponent } from '../components/disposable-component';
12
- import { ParameterSnapshot } from './route/parameter-snapshot';
11
+ import { PlaceDefinition } from './place-definition';
13
12
  // RAKE: making this Symbol(...) broke things.
14
13
  /** @type {?} */
15
14
  export var DEFINITION_META_DATA_KEY = 'PLACE_DEFINITION_OPTIONS';
@@ -18,58 +17,29 @@ export var DEFINITION_META_DATA_KEY = 'PLACE_DEFINITION_OPTIONS';
18
17
  export var ROUTE_PARAMETER_LIST_KEY = Symbol('place:route:parameters');
19
18
  var PlaceComponent = /** @class */ (function (_super) {
20
19
  tslib_1.__extends(PlaceComponent, _super);
21
- function PlaceComponent(activatedRoute, placeService) {
22
- var _this = _super.call(this) || this;
23
- _this.activatedRoute = activatedRoute;
24
- _this._incomingRouteChange = new MutableValueModel(false);
25
- _this.resolvedParameters = new MutableValueModel();
26
- var _a = Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
27
- _this.placeDefinition.getRouteParameters().forEach((/**
28
- * @param {?} p
29
- * @return {?}
30
- */
31
- function (p) { return _this.installBinding(p); }));
32
- observe.valuesFrom(activatedRoute.paramMap)
33
- .last()
34
- .map((/**
35
- * @param {?} params
36
- * @return {?}
37
- */
38
- function (params) { return ParameterSnapshot.create(_this.placeDefinition, params); }))
39
- .subscribe((/**
40
- * @param {?} resolvedParameters
41
- * @return {?}
42
- */
43
- function (resolvedParameters) {
44
- _this._incomingRouteChange.value = true;
45
- _this.resolvedParameters.value = resolvedParameters;
46
- _this._incomingRouteChange.value = false;
47
- }));
48
- when.valueOf(_this.resolvedParameters).changes((/**
49
- * @param {?} params
50
- * @param {?} previous
51
- * @return {?}
52
- */
53
- function (params, previous) {
54
- placeService.notifyRouteParametersChanged({
55
- activatedRoute: _this.activatedRoute,
56
- next: params,
57
- previous: previous,
58
- updateRoute: !_this.incomingRouteChange.value // we update the route if it's a component triggered change.
59
- });
60
- }));
61
- return _this;
20
+ function PlaceComponent() {
21
+ return _super.call(this) || this;
62
22
  }
63
- Object.defineProperty(PlaceComponent.prototype, "incomingRouteChange", {
64
- get: /**
23
+ /**
24
+ * @param {?} resolvedParameters
25
+ * @return {?}
26
+ */
27
+ PlaceComponent.prototype.initialiseBindings = /**
28
+ * @param {?} resolvedParameters
29
+ * @return {?}
30
+ */
31
+ function (resolvedParameters) {
32
+ var _this = this;
33
+ assert.isNil(this.resolvedParameters);
34
+ this.resolvedParameters = resolvedParameters;
35
+ this.placeDefinition.getRouteParameters().forEach((/**
36
+ * @param {?} parameterDef
65
37
  * @return {?}
66
38
  */
67
- function () {
68
- return this._incomingRouteChange.readonly;
69
- },
70
- enumerable: true,
71
- configurable: true
72
- });
39
+ function (parameterDef) {
40
+ _this.installBinding(parameterDef);
41
+ }));
42
+ };
73
43
  /**
74
44
  * @private
75
45
  * @template T, S
@@ -92,7 +62,7 @@ var PlaceComponent = /** @class */ (function (_super) {
92
62
  * @return {?}
93
63
  */
94
64
  function (parameters) {
95
- return parameters.getResolvedParameterValue(parameterDef);
65
+ return parameters.getValueOf(parameterDef);
96
66
  },
97
67
  toLeft: /**
98
68
  * @param {?} value
@@ -114,6 +84,20 @@ var PlaceComponent = /** @class */ (function (_super) {
114
84
  enumerable: true,
115
85
  configurable: true
116
86
  });
87
+ Object.defineProperty(PlaceComponent.prototype, "childPlaces", {
88
+ get: /**
89
+ * @return {?}
90
+ */
91
+ function () {
92
+ return this.placeDefinition.children.map((/**
93
+ * @param {?} d
94
+ * @return {?}
95
+ */
96
+ function (d) { return d.component; }));
97
+ },
98
+ enumerable: true,
99
+ configurable: true
100
+ });
117
101
  /**
118
102
  * @return {?}
119
103
  */
@@ -123,176 +107,46 @@ var PlaceComponent = /** @class */ (function (_super) {
123
107
  function () {
124
108
  return true;
125
109
  };
126
- // @Trace()
127
- // @Trace()
128
110
  /**
129
111
  * @return {?}
130
112
  */
131
- PlaceComponent.prototype.onPlaceReady =
132
- // @Trace()
133
- /**
113
+ PlaceComponent.prototype.onPlaceReady = /**
134
114
  * @return {?}
135
115
  */
136
116
  function () {
137
117
  };
138
118
  tslib_1.__decorate([
139
119
  Memoize(),
140
- tslib_1.__metadata("design:type", PlaceComponent.Definition),
120
+ tslib_1.__metadata("design:type", PlaceDefinition),
141
121
  tslib_1.__metadata("design:paramtypes", [])
142
122
  ], PlaceComponent.prototype, "placeDefinition", null);
143
123
  return PlaceComponent;
144
124
  }(DisposableComponent));
145
125
  export { PlaceComponent };
146
126
  if (false) {
147
- /** @type {?} */
148
- PlaceComponent.prototype._incomingRouteChange;
149
127
  /**
150
128
  * @type {?}
151
129
  * @private
152
130
  */
153
131
  PlaceComponent.prototype.resolvedParameters;
154
- /** @type {?} */
155
- PlaceComponent.prototype.activatedRoute;
156
132
  }
157
133
  (function (PlaceComponent) {
158
- var Definition = /** @class */ (function () {
159
- function Definition(component, options) {
160
- this.component = component;
161
- assert.notNil(options);
162
- this.path = options.path;
163
- this.order = options.order;
164
- this.data = options.data;
165
- this.authenticate = _.isNil(options.authenticate) || options.authenticate;
166
- this.children = (options.children || []).map((/**
167
- * @param {?} c
168
- * @return {?}
169
- */
170
- function (c) { return PlaceComponent.getDefinition(c).component; }));
171
- }
172
- /**
173
- * @return {?}
174
- */
175
- Definition.prototype.getRouteParameters = /**
176
- * @return {?}
177
- */
178
- function () {
179
- return Klass.get(this.component).getMetadataList(ROUTE_PARAMETER_LIST_KEY);
180
- };
181
- /**
182
- * @param {?} constructable
183
- * @return {?}
184
- */
185
- Definition.prototype.isDescriptorForType = /**
186
- * @param {?} constructable
187
- * @return {?}
188
- */
189
- function (constructable) {
190
- return lang.constructorChain(constructable).includes(PlaceComponent);
191
- };
192
- /**
193
- * @param {?} placeComponent
194
- * @return {?}
195
- */
196
- Definition.prototype.isDescriptorFor = /**
197
- * @param {?} placeComponent
198
- * @return {?}
199
- */
200
- function (placeComponent) {
201
- return placeComponent.constructor === this.component;
202
- };
203
- /**
204
- * @template T
205
- * @param {?} key
206
- * @param {?=} defaultValue
207
- * @return {?}
208
- */
209
- Definition.prototype.getData = /**
210
- * @template T
211
- * @param {?} key
212
- * @param {?=} defaultValue
213
- * @return {?}
214
- */
215
- function (key, defaultValue) {
216
- return this.data ?
217
- _.isNil(this.data[key]) ? defaultValue : this.data[key] :
218
- defaultValue;
219
- };
220
- /**
221
- * @template T
222
- * @param {?} keys
223
- * @param {?=} defaultValue
224
- * @return {?}
225
- */
226
- Definition.prototype.searchData = /**
227
- * @template T
228
- * @param {?} keys
229
- * @param {?=} defaultValue
230
- * @return {?}
231
- */
232
- function (keys, defaultValue) {
233
- var _this = this;
234
- if (this.data) {
235
- /** @type {?} */
236
- var found = keys.find((/**
237
- * @param {?} key
238
- * @return {?}
239
- */
240
- function (key) { return !_.isNil(_this.data[key]); }));
241
- return found ? this.data[found] : defaultValue;
242
- }
243
- else {
244
- return defaultValue;
245
- }
246
- };
247
- tslib_1.__decorate([
248
- Memoize(),
249
- tslib_1.__metadata("design:type", Function),
250
- tslib_1.__metadata("design:paramtypes", []),
251
- tslib_1.__metadata("design:returntype", Array)
252
- ], Definition.prototype, "getRouteParameters", null);
253
- return Definition;
254
- }());
255
- PlaceComponent.Definition = Definition;
256
- if (false) {
257
- /** @type {?} */
258
- Definition.prototype.path;
259
- /** @type {?} */
260
- Definition.prototype.authenticate;
261
- /** @type {?} */
262
- Definition.prototype.order;
263
- /** @type {?} */
264
- Definition.prototype.data;
265
- /** @type {?} */
266
- Definition.prototype.children;
267
- /** @type {?} */
268
- Definition.prototype.component;
269
- }
270
134
  /**
271
- * @record
135
+ * @param {?} target
136
+ * @return {?}
272
137
  */
273
- function Options() { }
274
- PlaceComponent.Options = Options;
275
- if (false) {
276
- /** @type {?} */
277
- Options.prototype.path;
278
- /** @type {?} */
279
- Options.prototype.order;
280
- /** @type {?|undefined} */
281
- Options.prototype.data;
282
- /** @type {?|undefined} */
283
- Options.prototype.authenticate;
284
- /** @type {?|undefined} */
285
- Options.prototype.children;
138
+ function isPlaceComponentConstructor(target) {
139
+ return lang.constructorChain((/** @type {?} */ (target))).includes(PlaceComponent);
286
140
  }
141
+ PlaceComponent.isPlaceComponentConstructor = isPlaceComponentConstructor;
287
142
  /**
288
- * @record
143
+ * @param {?} klass
144
+ * @return {?}
289
145
  */
290
- function ChildOptions() { }
291
- PlaceComponent.ChildOptions = ChildOptions;
292
- if (false) {
293
- /** @type {?} */
294
- ChildOptions.prototype.parent;
146
+ function getRouteParameters(klass) {
147
+ return Klass.get(klass).getMetadataList(ROUTE_PARAMETER_LIST_KEY);
295
148
  }
149
+ PlaceComponent.getRouteParameters = getRouteParameters;
296
150
  /**
297
151
  * @param {?} klass
298
152
  * @return {?}
@@ -303,12 +157,12 @@ if (false) {
303
157
  PlaceComponent.getDefinition = getDefinition;
304
158
  /**
305
159
  * @param {?} klass
306
- * @param {?} options
160
+ * @param {?} definition
307
161
  * @return {?}
308
162
  */
309
- function injectDefinition(klass, options) {
310
- Reflect.defineMetadata(DEFINITION_META_DATA_KEY, new Definition(klass, options), klass);
163
+ function injectDefinition(klass, definition) {
164
+ Reflect.defineMetadata(DEFINITION_META_DATA_KEY, definition, klass);
311
165
  }
312
166
  PlaceComponent.injectDefinition = injectDefinition;
313
167
  })(PlaceComponent || (PlaceComponent = {}));
314
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UtY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3BsYWNlLWNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLE9BQU8sRUFDTCxNQUFNLEVBQ04sT0FBTyxFQUVQLEdBQUcsRUFFSCxJQUFJLEVBQ0osaUJBQWlCLEVBR2xCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNsRSxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBSXpFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7QUFHL0QsTUFBTSxLQUFPLHdCQUF3QixHQUFHLDBCQUEwQjs7O0FBRWxFLE1BQU0sS0FBTyx3QkFBd0IsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUM7QUFFeEU7SUFBb0MsMENBQW1CO0lBS3JELHdCQUFxQixjQUE4QixFQUFFLFlBQWlDO1FBQXRGLFlBQ0UsaUJBQU8sU0FzQlI7UUF2Qm9CLG9CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUhuQywwQkFBb0IsR0FBRyxJQUFJLGlCQUFpQixDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQzVELHdCQUFrQixHQUFHLElBQUksaUJBQWlCLEVBQXFCLENBQUM7UUFJekUsSUFBQSwyQkFBa0YsRUFBaEYsZ0JBQUssRUFBRSxvQkFBTyxFQUFFLGtCQUFNLEVBQUUsY0FBSSxFQUFFLGdCQUFLLEVBQUUsb0JBQU8sRUFBRSxzQkFBa0M7UUFFeEYsS0FBSSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFD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LEVBQUUsT0FBTyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUZlLCtCQUFnQixtQkFFL0IsQ0FBQTtBQUdILENBQUMsRUFyRWdCLGNBQWMsS0FBZCxjQUFjLFFBcUU5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIGFzc2VydCxcbiAgQmluZGluZyxcbiAgQ29uc3RydWN0YWJsZSxcbiAgRHNsLFxuICBJTXV0YWJsZUhhc1ZhbHVlLFxuICBsYW5nLFxuICBNdXRhYmxlVmFsdWVNb2RlbCxcbiAgVHJhY2UsXG4gIFZhbHVlTW9kZWxcbn0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IHsgS2xhc3MgfSBmcm9tICdAY29vbG9uL3R5cGVzY3JpcHQtdXRpbGl0aWVzJztcbmltcG9ydCB7IE1lbW9pemUgfSBmcm9tICdAdHlwZXNjcmlwdC1wbHVzL2Zhc3QtbWVtb2l6ZS1kZWNvcmF0b3InO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0ICdyZWZsZWN0LW1ldGFkYXRhJztcbmltcG9ydCB7IERpc3Bvc2FibGVDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2Rpc3Bvc2FibGUtY29tcG9uZW50JztcbmltcG9ydCB7IFBsYWNlQ29tcG9uZW50TGlrZSB9IGZyb20gJy4vcGxhY2UtY29tcG9uZW50LWxpa2UnO1xuaW1wb3J0IHsgUGxhY2VVcGRhdGVzU2VydmljZSB9IGZyb20gJy4vcGxhY2UtdXBkYXRlcy1zZXJ2aWNlJztcbmltcG9ydCB7IFBhcmFtZXRlckRlZmluaXRpb24gfSBmcm9tICcuL3JvdXRlL3BhcmFtZXRlci1kZWZpbml0aW9uLmNsYXNzJztcbmltcG9ydCB7IFBhcmFtZXRlclNuYXBzaG90IH0gZnJvbSAnLi9yb3V0ZS9wYXJhbWV0ZXItc25hcHNob3QnO1xuXG4vLyBSQUtFOiBtYWtpbmcgdGhpcyBTeW1ib2woLi4uKSBicm9rZSB0aGluZ3MuXG5leHBvcnQgY29uc3QgREVGSU5JVElPTl9NRVRBX0RBVEFfS0VZID0gJ1BMQUNFX0RFRklOSVRJT05fT1BUSU9OUyc7XG4vLyB0aGlzIG9uZSBzZWVtcyBvay5cbmV4cG9ydCBjb25zdCBST1VURV9QQVJBTUVURVJfTElTVF9LRVkgPSBTeW1ib2woJ3BsYWNlOnJvdXRlOnBhcmFtZXRlcnMnKTtcblxuZXhwb3J0IGNsYXNzIFBsYWNlQ29tcG9uZW50IGV4dGVuZHMgRGlzcG9zYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIFBsYWNlQ29tcG9uZW50TGlrZSB7XG5cbiAgcHVibGljIHJlYWRvbmx5IF9pbmNvbWluZ1JvdXRlQ2hhbmdlID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSByZXNvbHZlZFBhcmFtZXRlcnMgPSBuZXcgTXV0YWJsZVZhbHVlTW9kZWw8UGFyYW1ldGVyU25hcHNob3Q+KCk7XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwbGFjZVNlcnZpY2U6IFBsYWNlVXBkYXRlc1NlcnZpY2UpIHtcbiAgICBzdXBlcigpO1xuICAgIGNvbnN0IHsgY2hhaW4sIHZhbHVlT2YsIGJlZm9yZSwgd2hlbiwgYWZ0ZXIsIG9ic2VydmUsIHN3aXRjaE9uIH0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG5cbiAgICB0aGlzLnBsYWNlRGVmaW5pdGlvbi5nZXRSb3V0ZVBhcmFtZXRlcnMoKS5mb3JFYWNoKHAgPT4gdGhpcy5pbnN0YWxsQmluZGluZyhwKSk7XG5cbiAgICBvYnNlcnZlLnZhbHVlc0Zyb20oYWN0aXZhdGVkUm91dGUucGFyYW1NYXApXG4gICAgICAubGFzdCgpXG4gICAgICAubWFwKHBhcmFtcyA9PiBQYXJhbWV0ZXJTbmFwc2hvdC5jcmVhdGUodGhpcy5wbGFjZURlZmluaXRpb24sIHBhcmFtcykpXG4gICAgICAuc3Vic2NyaWJlKHJlc29sdmVkUGFyYW1ldGVycyA9PiB7XG4gICAgICAgIHRoaXMuX2luY29taW5nUm91dGVDaGFuZ2UudmFsdWUgPSB0cnVlO1xuICAgICAgICB0aGlzLnJlc29sdmVkUGFyYW1ldGVycy52YWx1ZSA9IHJlc29sdmVkUGFyYW1ldGVycztcbiAgICAgICAgdGhpcy5faW5jb21pbmdSb3V0ZUNoYW5nZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgfSk7XG5cbiAgICB3aGVuLnZhbHVlT2YodGhpcy5yZXNvbHZlZFBhcmFtZXRlcnMpLmNoYW5nZXMoKHBhcmFtcywgcHJldmlvdXMpID0+IHtcbiAgICAgIHBsYWNlU2VydmljZS5ub3RpZnlSb3V0ZVBhcmFtZXRlcnNDaGFuZ2VkKHtcbiAgICAgICAgYWN0aXZhdGVkUm91dGU6IHRoaXMuYWN0aXZhdGVkUm91dGUsXG4gICAgICAgIG5leHQ6IHBhcmFtcyxcbiAgICAgICAgcHJldmlvdXM6IHByZXZpb3VzLFxuICAgICAgICB1cGRhdGVSb3V0ZTogIXRoaXMuaW5jb21pbmdSb3V0ZUNoYW5nZS52YWx1ZSAvLyB3ZSB1cGRhdGUgdGhlIHJvdXRlIGlmIGl0J3MgYSBjb21wb25lbnQgdHJpZ2dlcmVkIGNoYW5nZS5cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IGluY29taW5nUm91dGVDaGFuZ2UoKTogVmFsdWVNb2RlbDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2luY29taW5nUm91dGVDaGFuZ2UucmVhZG9ubHk7XG4gIH1cblxuICBwcml2YXRlIGluc3RhbGxCaW5kaW5nPFQsIFM+KHBhcmFtZXRlckRlZjogUGFyYW1ldGVyRGVmaW5pdGlvbjxULCBTPikge1xuICAgIGNvbnN0IG1vZGVsID0gdGhpc1twYXJhbWV0ZXJEZWYucHJvcGVydHlOYW1lXSBhcyBJTXV0YWJsZUhhc1ZhbHVlPFM+O1xuICAgIC8vIHRoaXMudHhvLm9ic2VydmUocGFyYW1ldGVyRGVmLnByb3BlcnR5TmFtZSwgbW9kZWwpO1xuICAgIHRoaXMucmVnaXN0ZXJEaXNwb3NhYmxlKG5ldyBCaW5kaW5nKHRoaXMucmVzb2x2ZWRQYXJhbWV0ZXJzLCBtb2RlbCwge1xuICAgICAgdG9SaWdodChwYXJhbWV0ZXJzOiBQYXJhbWV0ZXJTbmFwc2hvdCk6IFMge1xuICAgICAgICByZXR1cm4gcGFyYW1ldGVycy5nZXRSZXNvbHZlZFBhcmFtZXRlclZhbHVlKHBhcmFtZXRlckRlZik7XG4gICAgICB9LFxuICAgICAgdG9MZWZ0KHZhbHVlOiBTLCBjdXJyZW50UGFyYW1ldGVycz86IFBhcmFtZXRlclNuYXBzaG90KTogUGFyYW1ldGVyU25hcHNob3Qge1xuICAgICAgICByZXR1cm4gY3VycmVudFBhcmFtZXRlcnMucmVwbGFjZShwYXJhbWV0ZXJEZWYsIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuXG4gIEBNZW1vaXplKClcbiAgZ2V0IHBsYWNlRGVmaW5pdGlvbigpOiBQbGFjZUNvbXBvbmVudC5EZWZpbml0aW9uIHtcbiAgICByZXR1cm4gUGxhY2VDb21wb25lbnQuZ2V0RGVmaW5pdGlvbih0aGlzLmNvbnN0cnVjdG9yIGFzIGFueSBhcyBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50Pik7XG4gIH1cblxuICBjYW5EZWFjdGl2YXRlKCk6IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIG9uUGxhY2VSZWFkeSgpIHtcbiAgfVxuXG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgUGxhY2VDb21wb25lbnQge1xuXG4gIGV4cG9ydCBjbGFzcyBEZWZpbml0aW9uIHtcbiAgICByZWFkb25seSBwYXRoOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgYXV0aGVudGljYXRlOiBib29sZWFuO1xuICAgIHJlYWRvbmx5IG9yZGVyOiBudW1iZXI7XG4gICAgcmVhZG9ubHkgZGF0YTogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcbiAgICByZWFkb25seSBjaGlsZHJlbjogQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD5bXTtcblxuICAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGNvbXBvbmVudDogQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4sIG9wdGlvbnM6IFBsYWNlQ29tcG9uZW50Lk9wdGlvbnMpIHtcbiAgICAgIGFzc2VydC5ub3ROaWwob3B0aW9ucyk7XG4gICAgICB0aGlzLnBhdGggPSBvcHRpb25zLnBhdGg7XG4gICAgICB0aGlzLm9yZGVyID0gb3B0aW9ucy5vcmRlcjtcbiAgICAgIHRoaXMuZGF0YSA9IG9wdGlvbnMuZGF0YTtcbiAgICAgIHRoaXMuYXV0aGVudGljYXRlID0gXy5pc05pbChvcHRpb25zLmF1dGhlbnRpY2F0ZSkgfHwgb3B0aW9ucy5hdXRoZW50aWNhdGU7XG4gICAgICB0aGlzLmNoaWxkcmVuID0gKG9wdGlvbnMuY2hpbGRyZW4gfHxbXSkubWFwKGMgPT4gUGxhY2VDb21wb25lbnQuZ2V0RGVmaW5pdGlvbihjKS5jb21wb25lbnQpO1xuICAgIH1cblxuICAgIEBNZW1vaXplKClcbiAgICBnZXRSb3V0ZVBhcmFtZXRlcnMoKTogUGFyYW1ldGVyRGVmaW5pdGlvbjxhbnk+W10ge1xuICAgICAgcmV0dXJuIEtsYXNzLmdldCh0aGlzLmNvbXBvbmVudCkuZ2V0TWV0YWRhdGFMaXN0KFJPVVRFX1BBUkFNRVRFUl9MSVNUX0tFWSk7XG4gICAgfVxuXG4gICAgaXNEZXNjcmlwdG9yRm9yVHlwZShjb25zdHJ1Y3RhYmxlOiBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50Pikge1xuICAgICAgcmV0dXJuIGxhbmcuY29uc3RydWN0b3JDaGFpbihjb25zdHJ1Y3RhYmxlKS5pbmNsdWRlcyhQbGFjZUNvbXBvbmVudCk7XG4gICAgfVxuXG4gICAgaXNEZXNjcmlwdG9yRm9yKHBsYWNlQ29tcG9uZW50OiBQbGFjZUNvbXBvbmVudCkge1xuICAgICAgcmV0dXJuIHBsYWNlQ29tcG9uZW50LmNvbnN0cnVjdG9yID09PSB0aGlzLmNvbXBvbmVudDtcbiAgICB9XG5cbiAgICBnZXREYXRhPFQ+KGtleTogc3RyaW5nLCBkZWZhdWx0VmFsdWU/OiBUKTogVCB7XG4gICAgICByZXR1cm4gdGhpcy5kYXRhID9cbiAgICAgICAgXy5pc05pbCh0aGlzLmRhdGFba2V5XSkgPyBkZWZhdWx0VmFsdWUgOiB0aGlzLmRhdGFba2V5XSA6XG4gICAgICAgIGRlZmF1bHRWYWx1ZTtcbiAgICB9XG5cbiAgICBzZWFyY2hEYXRhPFQ+KGtleXM6IHN0cmluZ1tdLCBkZWZhdWx0VmFsdWU/OiBUKTogVCB7XG4gICAgICBpZiAodGhpcy5kYXRhKSB7XG4gICAgICAgIGNvbnN0IGZvdW5kID0ga2V5cy5maW5kKGtleSA9PiAhXy5pc05pbCh0aGlzLmRhdGFba2V5XSkpO1xuICAgICAgICByZXR1cm4gZm91bmQgPyB0aGlzLmRhdGFbZm91bmRdIDogZGVmYXVsdFZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgT3B0aW9ucyB7XG4gICAgcGF0aDogc3RyaW5nLFxuICAgIG9yZGVyOiBudW1iZXI7XG4gICAgZGF0YT86IHsgW2tleTogc3RyaW5nXTogYW55IH0sIC8vIGRlZmF1bHRzIHRvIHRydWVcbiAgICBhdXRoZW50aWNhdGU/OiBib29sZWFuLCAvLyBkZWZhdWx0cyB0byB0cnVlXG4gICAgY2hpbGRyZW4/OiBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50PltdXG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIENoaWxkT3B0aW9ucyBleHRlbmRzIE9wdGlvbnMge1xuICAgIHBhcmVudDogQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD5cbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXREZWZpbml0aW9uKGtsYXNzOiBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50Pik6IERlZmluaXRpb24ge1xuICAgIHJldHVybiBSZWZsZWN0LmdldE1ldGFkYXRhKERFRklOSVRJT05fTUVUQV9EQVRBX0tFWSwga2xhc3MpO1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGluamVjdERlZmluaXRpb24oa2xhc3M6IENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+LCBvcHRpb25zOiBPcHRpb25zKSB7XG4gICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShERUZJTklUSU9OX01FVEFfREFUQV9LRVksIG5ldyBEZWZpbml0aW9uKGtsYXNzLCBvcHRpb25zKSwga2xhc3MpO1xuICB9XG5cblxufVxuIl19
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UtY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3BsYWNlLWNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFtQyxJQUFJLEVBQWMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDckQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2xFLE9BQU8sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7QUFLckQsTUFBTSxLQUFPLHdCQUF3QixHQUFHLDBCQUEwQjs7O0FBRWxFLE1BQU0sS0FBTyx3QkFBd0IsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUM7QUFFeEU7SUFBb0MsMENBQW1CO0lBSXJEO2VBQ0UsaUJBQU87SUFDVCxDQUFDOzs7OztJQUVNLDJDQUFrQjs7OztJQUF6QixVQUEwQixrQkFBaUQ7UUFBM0UsaUJBTUM7UUFMQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztRQUM3QyxJQUFJLENBQUMsZUFBZSxDQUFDLGtCQUFrQixFQUFFLENBQUMsT0FBTzs7OztRQUFDLFVBQUEsWUFBWTtZQUM1RCxLQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3BDLENBQUMsRUFBQyxDQUFDO0lBQ0wsQ0FBQzs7Ozs7OztJQUVPLHVDQUFjOzs7Ozs7SUFBdEIsVUFBNkIsWUFBdUM7O1lBQzVELEtBQUssR0FBRyxtQkFBQSxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxFQUF1QjtRQUNwRSxzREFBc0Q7UUFDdEQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLEVBQUU7WUFDbEUsT0FBTzs7OztZQUFQLFVBQVEsVUFBNkI7Z0JBQ25DLE9BQU8sVUFBVSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUM3QyxDQUFDO1lBQ0QsTUFBTTs7Ozs7WUFBTixVQUFPLEtBQVEsRUFBRSxpQkFBcUM7Z0JBQ3BELE9BQU8saUJBQWlCLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN4RCxDQUFDO1NBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBR0Qsc0JBQUksMkNBQWU7Ozs7UUFBbkI7WUFDRSxPQUFPLGNBQWMsQ0FBQyxhQUFhLENBQUMsbUJBQUEsbUJBQUEsSUFBSSxDQUFDLFdBQVcsRUFBTyxFQUFpQyxDQUFDLENBQUM7UUFDaEcsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSx1Q0FBVzs7OztRQUFmO1lBQ0UsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxHQUFHOzs7O1lBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMsU0FBUyxFQUFYLENBQVcsRUFBQyxDQUFDO1FBQzdELENBQUM7OztPQUFBOzs7O0lBRUQsc0NBQWE7OztJQUFiO1FBQ0UsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzs7O0lBRUQscUNBQVk7OztJQUFaO0lBQ0EsQ0FBQztJQWJEO1FBREMsT0FBTyxFQUFFOzBDQUNhLGVBQWU7O3lEQUVyQztJQWFILHFCQUFDO0NBQUEsQUE3Q0QsQ0FBb0MsbUJBQW1CLEdBNkN0RDtTQTdDWSxjQUFjOzs7Ozs7SUFFekIsNENBQTBEOztBQTZDNUQsV0FBaUIsY0FBYzs7Ozs7SUFFN0IsU0FBZ0IsMkJBQTJCLENBQUMsTUFBVztRQUNyRCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBQSxNQUFNLEVBQXNCLENBQUMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUZlLDBDQUEyQiw4QkFFMUMsQ0FBQTs7Ozs7SUFFRCxTQUFnQixrQkFBa0IsQ0FBQyxLQUFvQztRQUNyRSxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsZUFBZSxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUZlLGlDQUFrQixxQkFFakMsQ0FBQTs7Ozs7SUFFRCxTQUFnQixhQUFhLENBQUMsS0FBb0M7UUFDaEUsT0FBTyxPQUFPLENBQUMsV0FBVyxDQUFDLHdCQUF3QixFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFGZSw0QkFBYSxnQkFFNUIsQ0FBQTs7Ozs7O0lBRUQsU0FBZ0IsZ0JBQWdCLENBQUMsS0FBb0MsRUFBRSxVQUEyQjtRQUNoRyxPQUFPLENBQUMsY0FBYyxDQUFDLHdCQUF3QixFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRmUsK0JBQWdCLG1CQUUvQixDQUFBO0FBRUgsQ0FBQyxFQWxCZ0IsY0FBYyxLQUFkLGNBQWMsUUFrQjlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXNzZXJ0LCBCaW5kaW5nLCBDb25zdHJ1Y3RhYmxlLCBJTXV0YWJsZUhhc1ZhbHVlLCBsYW5nLCBWYWx1ZU1vZGVsIH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IHsgS2xhc3MgfSBmcm9tICdAY29vbG9uL3R5cGVzY3JpcHQtdXRpbGl0aWVzJztcbmltcG9ydCB7IE1lbW9pemUgfSBmcm9tICdAdHlwZXNjcmlwdC1wbHVzL2Zhc3QtbWVtb2l6ZS1kZWNvcmF0b3InO1xuaW1wb3J0ICdyZWZsZWN0LW1ldGFkYXRhJztcbmltcG9ydCB7IERpc3Bvc2FibGVDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2Rpc3Bvc2FibGUtY29tcG9uZW50JztcbmltcG9ydCB7IFBsYWNlRGVmaW5pdGlvbiB9IGZyb20gJy4vcGxhY2UtZGVmaW5pdGlvbic7XG5pbXBvcnQgeyBQYXJhbWV0ZXJEZWZpbml0aW9uIH0gZnJvbSAnLi9yb3V0ZS9wYXJhbWV0ZXItZGVmaW5pdGlvbi5jbGFzcyc7XG5pbXBvcnQgeyBQYXJhbWV0ZXJTbmFwc2hvdCB9IGZyb20gJy4vcm91dGUvcGFyYW1ldGVyLXNuYXBzaG90JztcblxuLy8gUkFLRTogbWFraW5nIHRoaXMgU3ltYm9sKC4uLikgYnJva2UgdGhpbmdzLlxuZXhwb3J0IGNvbnN0IERFRklOSVRJT05fTUVUQV9EQVRBX0tFWSA9ICdQTEFDRV9ERUZJTklUSU9OX09QVElPTlMnO1xuLy8gdGhpcyBvbmUgc2VlbXMgb2suXG5leHBvcnQgY29uc3QgUk9VVEVfUEFSQU1FVEVSX0xJU1RfS0VZID0gU3ltYm9sKCdwbGFjZTpyb3V0ZTpwYXJhbWV0ZXJzJyk7XG5cbmV4cG9ydCBjbGFzcyBQbGFjZUNvbXBvbmVudCBleHRlbmRzIERpc3Bvc2FibGVDb21wb25lbnQge1xuXG4gIHByaXZhdGUgcmVzb2x2ZWRQYXJhbWV0ZXJzOiBWYWx1ZU1vZGVsPFBhcmFtZXRlclNuYXBzaG90PjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIGluaXRpYWxpc2VCaW5kaW5ncyhyZXNvbHZlZFBhcmFtZXRlcnM6IFZhbHVlTW9kZWw8UGFyYW1ldGVyU25hcHNob3Q+KSB7XG4gICAgYXNzZXJ0LmlzTmlsKHRoaXMucmVzb2x2ZWRQYXJhbWV0ZXJzKTtcbiAgICB0aGlzLnJlc29sdmVkUGFyYW1ldGVycyA9IHJlc29sdmVkUGFyYW1ldGVycztcbiAgICB0aGlzLnBsYWNlRGVmaW5pdGlvbi5nZXRSb3V0ZVBhcmFtZXRlcnMoKS5mb3JFYWNoKHBhcmFtZXRlckRlZiA9PiB7XG4gICAgICB0aGlzLmluc3RhbGxCaW5kaW5nKHBhcmFtZXRlckRlZik7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGluc3RhbGxCaW5kaW5nPFQsIFM+KHBhcmFtZXRlckRlZjogUGFyYW1ldGVyRGVmaW5pdGlvbjxULCBTPikge1xuICAgIGNvbnN0IG1vZGVsID0gdGhpc1twYXJhbWV0ZXJEZWYucHJvcGVydHlOYW1lXSBhcyBJTXV0YWJsZUhhc1ZhbHVlPFM+O1xuICAgIC8vIHRoaXMudHhvLm9ic2VydmUocGFyYW1ldGVyRGVmLnByb3BlcnR5TmFtZSwgbW9kZWwpO1xuICAgIHRoaXMucmVnaXN0ZXJEaXNwb3NhYmxlKG5ldyBCaW5kaW5nKHRoaXMucmVzb2x2ZWRQYXJhbWV0ZXJzLCBtb2RlbCwge1xuICAgICAgdG9SaWdodChwYXJhbWV0ZXJzOiBQYXJhbWV0ZXJTbmFwc2hvdCk6IFMge1xuICAgICAgICByZXR1cm4gcGFyYW1ldGVycy5nZXRWYWx1ZU9mKHBhcmFtZXRlckRlZik7XG4gICAgICB9LFxuICAgICAgdG9MZWZ0KHZhbHVlOiBTLCBjdXJyZW50UGFyYW1ldGVycz86IFBhcmFtZXRlclNuYXBzaG90KTogUGFyYW1ldGVyU25hcHNob3Qge1xuICAgICAgICByZXR1cm4gY3VycmVudFBhcmFtZXRlcnMucmVwbGFjZShwYXJhbWV0ZXJEZWYsIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuICBATWVtb2l6ZSgpXG4gIGdldCBwbGFjZURlZmluaXRpb24oKTogUGxhY2VEZWZpbml0aW9uIHtcbiAgICByZXR1cm4gUGxhY2VDb21wb25lbnQuZ2V0RGVmaW5pdGlvbih0aGlzLmNvbnN0cnVjdG9yIGFzIGFueSBhcyBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50Pik7XG4gIH1cblxuICBnZXQgY2hpbGRQbGFjZXMoKTogQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD5bXSB7XG4gICAgcmV0dXJuIHRoaXMucGxhY2VEZWZpbml0aW9uLmNoaWxkcmVuLm1hcChkID0+IGQuY29tcG9uZW50KTtcbiAgfVxuXG4gIGNhbkRlYWN0aXZhdGUoKTogYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgb25QbGFjZVJlYWR5KCkge1xuICB9XG5cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBQbGFjZUNvbXBvbmVudCB7XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzUGxhY2VDb21wb25lbnRDb25zdHJ1Y3Rvcih0YXJnZXQ6IGFueSk6IHRhcmdldCBpcyBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50PiB7XG4gICAgcmV0dXJuIGxhbmcuY29uc3RydWN0b3JDaGFpbih0YXJnZXQgYXMgQ29uc3RydWN0YWJsZTxhbnk+KS5pbmNsdWRlcyhQbGFjZUNvbXBvbmVudCk7XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gZ2V0Um91dGVQYXJhbWV0ZXJzKGtsYXNzOiBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50Pik6IFBhcmFtZXRlckRlZmluaXRpb248YW55PltdIHtcbiAgICByZXR1cm4gS2xhc3MuZ2V0KGtsYXNzKS5nZXRNZXRhZGF0YUxpc3QoUk9VVEVfUEFSQU1FVEVSX0xJU1RfS0VZKTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXREZWZpbml0aW9uKGtsYXNzOiBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50Pik6IFBsYWNlRGVmaW5pdGlvbiB7XG4gICAgcmV0dXJuIFJlZmxlY3QuZ2V0TWV0YWRhdGEoREVGSU5JVElPTl9NRVRBX0RBVEFfS0VZLCBrbGFzcyk7XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gaW5qZWN0RGVmaW5pdGlvbihrbGFzczogQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4sIGRlZmluaXRpb246IFBsYWNlRGVmaW5pdGlvbikge1xuICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoREVGSU5JVElPTl9NRVRBX0RBVEFfS0VZLCBkZWZpbml0aW9uLCBrbGFzcyk7XG4gIH1cblxufVxuIl19