@coolon/angular-ui-powerups 0.0.31 → 0.0.33

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 (60) hide show
  1. package/bundles/coolon-angular-ui-powerups.umd.js +1056 -901
  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.metadata.json +1 -1
  6. package/esm2015/coolon-angular-ui-powerups.js +2 -2
  7. package/esm2015/index.js +2 -2
  8. package/esm2015/lib/place/components/place-outlet/place-outlet.component.js +34 -5
  9. package/esm2015/lib/place/components/place-outlet/route-animations.js +29 -17
  10. package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +3 -3
  11. package/esm2015/lib/place/guards/leave-place.guard.js +18 -2
  12. package/esm2015/lib/place/i-place-component.js +17 -0
  13. package/esm2015/lib/place/i-place-service.js +16 -0
  14. package/esm2015/lib/place/index.js +7 -3
  15. package/esm2015/lib/place/place-component.js +165 -7
  16. package/esm2015/lib/place/place.decorator.js +7 -87
  17. package/esm2015/lib/place/place.service.js +47 -8
  18. package/esm2015/lib/place/route/resolved-parameter.js +16 -0
  19. package/esm2015/lib/place/route/resolved-route-parameter-snapshot.js +106 -0
  20. package/esm2015/lib/place/route/route-parameter-bindings.js +14 -158
  21. package/esm2015/lib/place/route/visit-snapshot.js +7 -0
  22. package/esm2015/public_api.js +2 -2
  23. package/esm5/coolon-angular-ui-powerups.js +2 -2
  24. package/esm5/index.js +2 -2
  25. package/esm5/lib/place/components/place-outlet/place-outlet.component.js +41 -5
  26. package/esm5/lib/place/components/place-outlet/route-animations.js +29 -17
  27. package/esm5/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +3 -3
  28. package/esm5/lib/place/guards/leave-place.guard.js +18 -2
  29. package/esm5/lib/place/i-place-component.js +17 -0
  30. package/esm5/lib/place/i-place-service.js +16 -0
  31. package/esm5/lib/place/index.js +7 -3
  32. package/esm5/lib/place/place-component.js +195 -7
  33. package/esm5/lib/place/place.decorator.js +7 -97
  34. package/esm5/lib/place/place.service.js +52 -10
  35. package/esm5/lib/place/route/resolved-parameter.js +16 -0
  36. package/esm5/lib/place/route/resolved-route-parameter-snapshot.js +129 -0
  37. package/esm5/lib/place/route/route-parameter-bindings.js +13 -185
  38. package/esm5/lib/place/route/visit-snapshot.js +11 -0
  39. package/esm5/public_api.js +2 -2
  40. package/fesm2015/coolon-angular-ui-powerups.js +835 -701
  41. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  42. package/fesm5/coolon-angular-ui-powerups.js +1054 -901
  43. package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
  44. package/lib/place/components/place-outlet/place-outlet.component.d.ts +4 -0
  45. package/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.d.ts +1 -2
  46. package/lib/place/i-place-component.d.ts +5 -0
  47. package/lib/place/i-place-service.d.ts +10 -0
  48. package/lib/place/index.d.ts +5 -1
  49. package/lib/place/place-component.d.ts +40 -2
  50. package/lib/place/place.decorator.d.ts +1 -25
  51. package/lib/place/place.service.d.ts +13 -2
  52. package/lib/place/route/resolved-parameter.d.ts +5 -0
  53. package/lib/place/route/resolved-route-parameter-snapshot.d.ts +12 -0
  54. package/lib/place/route/route-parameter-bindings.d.ts +3 -4
  55. package/lib/place/route/visit-snapshot.d.ts +2 -0
  56. package/package.json +1 -1
  57. package/styles/styles.scss +10 -0
  58. package/esm2015/lib/place/abstract-place-component.js +0 -50
  59. package/esm5/lib/place/abstract-place-component.js +0 -57
  60. package/lib/place/abstract-place-component.d.ts +0 -11
@@ -4,6 +4,8 @@
4
4
  */
5
5
  import { Injectable, Injector } from '@angular/core';
6
6
  import { Router } from '@angular/router';
7
+ import { lang } from '@coolon/pectin';
8
+ import { PlaceComponent } from '../place-component';
7
9
  import * as i0 from "@angular/core";
8
10
  import * as i1 from "@angular/router";
9
11
  export class LeavePlaceGuard {
@@ -23,7 +25,21 @@ export class LeavePlaceGuard {
23
25
  * @return {?}
24
26
  */
25
27
  canDeactivate(component, currentRoute, currentState, nextState) {
26
- return component.canDeactivate();
28
+ /** @type {?} */
29
+ const placeComponent = nextState ?
30
+ (/** @type {?} */ (nextState.root.firstChild.component)) :
31
+ null;
32
+ /** @type {?} */
33
+ const nextPlaceDefinition = lang.constructorChain(placeComponent).includes(PlaceComponent) ?
34
+ PlaceComponent.getDefinition((/** @type {?} */ ((/** @type {?} */ (placeComponent))))) :
35
+ null;
36
+ if (nextPlaceDefinition.isDescriptorFor(component)) {
37
+ // console.log("Same place different route. Do we need a place component hook for this??");
38
+ return true;
39
+ }
40
+ else {
41
+ return component.canDeactivate(nextPlaceDefinition, nextState);
42
+ }
27
43
  }
28
44
  }
29
45
  LeavePlaceGuard.decorators = [
@@ -49,4 +65,4 @@ if (false) {
49
65
  */
50
66
  LeavePlaceGuard.prototype.injector;
51
67
  }
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVhdmUtcGxhY2UuZ3VhcmQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvcGxhY2UvZ3VhcmRzL2xlYXZlLXBsYWNlLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQXlDLE1BQU0sRUFBZ0MsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBTzlHLE1BQU0sT0FBTyxlQUFlOzs7OztJQUUxQixZQUFvQixNQUFjLEVBQVUsUUFBa0I7UUFBMUMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVU7SUFDOUQsQ0FBQzs7Ozs7Ozs7SUFFRCxhQUFhLENBQUMsU0FBeUIsRUFBRSxZQUFvQyxFQUFFLFlBQWlDLEVBQUUsU0FBK0I7UUFDL0ksT0FBTyxTQUFTLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDbkMsQ0FBQzs7O1lBVkYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7O1lBTitDLE1BQU07WUFEakMsUUFBUTs7Ozs7Ozs7SUFVZixpQ0FBc0I7Ozs7O0lBQUUsbUNBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIENhbkRlYWN0aXZhdGUsIFJvdXRlciwgUm91dGVyU3RhdGVTbmFwc2hvdCwgVXJsVHJlZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQbGFjZUNvbXBvbmVudCB9IGZyb20gJy4uL3BsYWNlLWNvbXBvbmVudCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIExlYXZlUGxhY2VHdWFyZCBpbXBsZW1lbnRzIENhbkRlYWN0aXZhdGU8UGxhY2VDb21wb25lbnQ+IHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge1xuICB9XG5cbiAgY2FuRGVhY3RpdmF0ZShjb21wb25lbnQ6IFBsYWNlQ29tcG9uZW50LCBjdXJyZW50Um91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIGN1cnJlbnRTdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCwgbmV4dFN0YXRlPzogUm91dGVyU3RhdGVTbmFwc2hvdCk6IE9ic2VydmFibGU8Ym9vbGVhbiB8IFVybFRyZWU+IHwgUHJvbWlzZTxib29sZWFuIHwgVXJsVHJlZT4gfCBib29sZWFuIHwgVXJsVHJlZSB7XG4gICAgcmV0dXJuIGNvbXBvbmVudC5jYW5EZWFjdGl2YXRlKCk7XG4gIH1cblxufVxuIl19
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVhdmUtcGxhY2UuZ3VhcmQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvcGxhY2UvZ3VhcmRzL2xlYXZlLXBsYWNlLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQXlDLE1BQU0sRUFBZ0MsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RyxPQUFPLEVBQWlCLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7O0FBS3BELE1BQU0sT0FBTyxlQUFlOzs7OztJQUUxQixZQUFvQixNQUFjLEVBQVUsUUFBa0I7UUFBMUMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVU7SUFDOUQsQ0FBQzs7Ozs7Ozs7SUFFRCxhQUFhLENBQUMsU0FBeUIsRUFBRSxZQUFvQyxFQUFFLFlBQWlDLEVBQUUsU0FBK0I7O2NBRXpJLGNBQWMsR0FBdUIsU0FBUyxDQUFDLENBQUM7WUFDcEQsbUJBQUEsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFzQixDQUFDLENBQUM7WUFDM0QsSUFBSTs7Y0FFQSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7WUFDMUYsY0FBYyxDQUFDLGFBQWEsQ0FBQyxtQkFBQSxtQkFBQSxjQUFjLEVBQVcsRUFBaUMsQ0FBQyxDQUFDLENBQUM7WUFDMUYsSUFBSTtRQUVOLElBQUksbUJBQW1CLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ2xELDRGQUE0RjtZQUM1RixPQUFPLElBQUksQ0FBQztTQUNiO2FBQU07WUFDTCxPQUFPLFNBQVMsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDaEU7SUFFSCxDQUFDOzs7WUF6QkYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7O1lBUCtDLE1BQU07WUFEakMsUUFBUTs7Ozs7Ozs7SUFXZixpQ0FBc0I7Ozs7O0lBQUUsbUNBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIENhbkRlYWN0aXZhdGUsIFJvdXRlciwgUm91dGVyU3RhdGVTbmFwc2hvdCwgVXJsVHJlZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBDb25zdHJ1Y3RhYmxlLCBsYW5nIH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUGxhY2VDb21wb25lbnQgfSBmcm9tICcuLi9wbGFjZS1jb21wb25lbnQnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBMZWF2ZVBsYWNlR3VhcmQgaW1wbGVtZW50cyBDYW5EZWFjdGl2YXRlPFBsYWNlQ29tcG9uZW50PiB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgfVxuXG4gIGNhbkRlYWN0aXZhdGUoY29tcG9uZW50OiBQbGFjZUNvbXBvbmVudCwgY3VycmVudFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBjdXJyZW50U3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QsIG5leHRTdGF0ZT86IFJvdXRlclN0YXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCBVcmxUcmVlPiB8IFByb21pc2U8Ym9vbGVhbiB8IFVybFRyZWU+IHwgYm9vbGVhbiB8IFVybFRyZWUge1xuXG4gICAgY29uc3QgcGxhY2VDb21wb25lbnQ6IENvbnN0cnVjdGFibGU8YW55PiA9IG5leHRTdGF0ZSA/XG4gICAgICBuZXh0U3RhdGUucm9vdC5maXJzdENoaWxkLmNvbXBvbmVudCBhcyBDb25zdHJ1Y3RhYmxlPGFueT4gOlxuICAgICAgbnVsbDtcblxuICAgIGNvbnN0IG5leHRQbGFjZURlZmluaXRpb24gPSBsYW5nLmNvbnN0cnVjdG9yQ2hhaW4ocGxhY2VDb21wb25lbnQpLmluY2x1ZGVzKFBsYWNlQ29tcG9uZW50KSA/XG4gICAgICBQbGFjZUNvbXBvbmVudC5nZXREZWZpbml0aW9uKHBsYWNlQ29tcG9uZW50IGFzIHVua25vd24gYXMgQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4pIDpcbiAgICAgIG51bGw7XG5cbiAgICBpZiAobmV4dFBsYWNlRGVmaW5pdGlvbi5pc0Rlc2NyaXB0b3JGb3IoY29tcG9uZW50KSkge1xuICAgICAgLy8gY29uc29sZS5sb2coXCJTYW1lIHBsYWNlIGRpZmZlcmVudCByb3V0ZS4gIERvIHdlIG5lZWQgYSBwbGFjZSBjb21wb25lbnQgaG9vayBmb3IgdGhpcz8/XCIpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjb21wb25lbnQuY2FuRGVhY3RpdmF0ZShuZXh0UGxhY2VEZWZpbml0aW9uLCBuZXh0U3RhdGUpO1xuICAgIH1cblxuICB9XG5cbn1cbiJdfQ==
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ /**
6
+ * @record
7
+ */
8
+ export function IPlaceComponent() { }
9
+ if (false) {
10
+ /** @type {?} */
11
+ IPlaceComponent.prototype.activatedRoute;
12
+ /**
13
+ * @return {?}
14
+ */
15
+ IPlaceComponent.prototype.onPlaceReady = function () { };
16
+ }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaS1wbGFjZS1jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvcGxhY2UvaS1wbGFjZS1jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUVBLHFDQUdDOzs7SUFGQyx5Q0FBd0M7Ozs7SUFDeEMseURBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBsYWNlQ29tcG9uZW50IHtcbiAgcmVhZG9ubHkgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlO1xuICBvblBsYWNlUmVhZHkoKTtcbn1cbiJdfQ==
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ /**
6
+ * @record
7
+ */
8
+ export function IPlaceService() { }
9
+ if (false) {
10
+ /**
11
+ * @param {?} params
12
+ * @return {?}
13
+ */
14
+ IPlaceService.prototype.notifyRouteParametersChanged = function (params) { };
15
+ }
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaS1wbGFjZS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL2ktcGxhY2Utc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBR0EsbUNBT0M7Ozs7OztJQU5DLDZFQUtHIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVBsYWNlQ29tcG9uZW50IH0gZnJvbSAnLi9pLXBsYWNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZXNvbHZlZFJvdXRlUGFyYW1ldGVyU25hcHNob3QgfSBmcm9tICcuL3JvdXRlL3Jlc29sdmVkLXJvdXRlLXBhcmFtZXRlci1zbmFwc2hvdCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBsYWNlU2VydmljZSB7XG4gIG5vdGlmeVJvdXRlUGFyYW1ldGVyc0NoYW5nZWQocGFyYW1zOiB7XG4gICAgcGxhY2VDb21wb25lbnQ6IElQbGFjZUNvbXBvbmVudCxcbiAgICBuZXh0OiBSZXNvbHZlZFJvdXRlUGFyYW1ldGVyU25hcHNob3QsXG4gICAgcHJldmlvdXM6IFJlc29sdmVkUm91dGVQYXJhbWV0ZXJTbmFwc2hvdCxcbiAgICB1cGRhdGVSb3V0ZTogYm9vbGVhblxuICB9KTtcbn1cbiJdfQ==
@@ -5,8 +5,9 @@
5
5
  /**
6
6
  * @file Automatically generated by barrelsby.
7
7
  */
8
- export { AbstractPlaceComponent } from "./abstract-place-component";
9
- export {} from "./place-component";
8
+ export {} from "./i-place-component";
9
+ export {} from "./i-place-service";
10
+ export { DEFINITION_META_DATA_KEY, PlaceComponent } from "./place-component";
10
11
  export { Place } from "./place.decorator";
11
12
  export { PlaceModule } from "./place.module";
12
13
  export { PlaceService } from "./place.service";
@@ -22,6 +23,9 @@ export { RouteId, QueryParameter, RouteParameter, QueryParameterList, RouteParam
22
23
  export {} from "./route/parameter-definition.class";
23
24
  export {} from "./route/parameter-sanitiser";
24
25
  export { ParameterType } from "./route/parameter-type";
26
+ export {} from "./route/resolved-parameter";
27
+ export { ResolvedRouteParameterSnapshot } from "./route/resolved-route-parameter-snapshot";
25
28
  export { RouteParameterBindings } from "./route/route-parameter-bindings";
26
29
  export { Sanitiser, RouteParameterSanitiser } from "./route/route-parameter-sanitiser";
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvcGxhY2UvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUlBLHVDQUFjLDRCQUE0QixDQUFDO0FBQzNDLGVBQWMsbUJBQW1CLENBQUM7QUFDbEMsc0JBQWMsbUJBQW1CLENBQUM7QUFDbEMsNEJBQWMsZ0JBQWdCLENBQUM7QUFDL0IsNkJBQWMsaUJBQWlCLENBQUM7QUFDaEMscUNBQWMsa0RBQWtELENBQUM7QUFDakUsb0NBQWMsZ0RBQWdELENBQUM7QUFDL0QscUNBQWMsa0RBQWtELENBQUM7QUFDakUsMkNBQWMsNENBQTRDLENBQUM7QUFDM0QsK0NBQWMsd0VBQXdFLENBQUM7QUFDdkYsZ0NBQWMsNEJBQTRCLENBQUM7QUFDM0MsZ0NBQWMsNEJBQTRCLENBQUM7QUFDM0MsZUFBYyxvQkFBb0IsQ0FBQztBQUNuQyxnR0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxlQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGVBQWMsNkJBQTZCLENBQUM7QUFDNUMsOEJBQWMsd0JBQXdCLENBQUM7QUFDdkMsdUNBQWMsa0NBQWtDLENBQUM7QUFDakQsbURBQWMsbUNBQW1DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGJhcnJlbHNieS5cbiAqL1xuXG5leHBvcnQgKiBmcm9tIFwiLi9hYnN0cmFjdC1wbGFjZS1jb21wb25lbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BsYWNlLWNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGxhY2UuZGVjb3JhdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wbGFjZS5tb2R1bGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BsYWNlLnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvYnVzeS1vdmVybGF5L2J1c3ktb3ZlcmxheS5jb21wb25lbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvZW1wdHktc3RhdGUvZW1wdHktc3RhdGUuY29tcG9uZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL3BsYWNlLW91dGxldC9wbGFjZS1vdXRsZXQuY29tcG9uZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL3BsYWNlLW91dGxldC9yb3V0ZS1hbmltYXRpb25zXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL3RhYmJlZC1wbGFjZS1uYXZpZ2F0aW9uL3RhYmJlZC1wbGFjZS1uYXZpZ2F0aW9uLmNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZ3VhcmRzL2xlYXZlLXBsYWNlLmd1YXJkXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ndWFyZHMvcGxhY2Utcm91dGUuZ3VhcmRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JvdXRlL2pzb24tdHlwZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JvdXRlL3BhcmFtZXRlci1kZWNvcmF0b3JzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yb3V0ZS9wYXJhbWV0ZXItZGVmaW5pdGlvbi5jbGFzc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcm91dGUvcGFyYW1ldGVyLXNhbml0aXNlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcm91dGUvcGFyYW1ldGVyLXR5cGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JvdXRlL3JvdXRlLXBhcmFtZXRlci1iaW5kaW5nc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcm91dGUvcm91dGUtcGFyYW1ldGVyLXNhbml0aXNlclwiO1xuIl19
30
+ export { VisitSnapshot } from "./route/visit-snapshot";
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvcGxhY2UvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUlBLGVBQWMscUJBQXFCLENBQUM7QUFDcEMsZUFBYyxtQkFBbUIsQ0FBQztBQUNsQyx5REFBYyxtQkFBbUIsQ0FBQztBQUNsQyxzQkFBYyxtQkFBbUIsQ0FBQztBQUNsQyw0QkFBYyxnQkFBZ0IsQ0FBQztBQUMvQiw2QkFBYyxpQkFBaUIsQ0FBQztBQUNoQyxxQ0FBYyxrREFBa0QsQ0FBQztBQUNqRSxvQ0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxxQ0FBYyxrREFBa0QsQ0FBQztBQUNqRSwyQ0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCwrQ0FBYyx3RUFBd0UsQ0FBQztBQUN2RixnQ0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxnQ0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxlQUFjLG9CQUFvQixDQUFDO0FBQ25DLGdHQUFjLDhCQUE4QixDQUFDO0FBQzdDLGVBQWMsb0NBQW9DLENBQUM7QUFDbkQsZUFBYyw2QkFBNkIsQ0FBQztBQUM1Qyw4QkFBYyx3QkFBd0IsQ0FBQztBQUN2QyxlQUFjLDRCQUE0QixDQUFDO0FBQzNDLCtDQUFjLDJDQUEyQyxDQUFDO0FBQzFELHVDQUFjLGtDQUFrQyxDQUFDO0FBQ2pELG1EQUFjLG1DQUFtQyxDQUFDO0FBQ2xELDhCQUFjLHdCQUF3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZSBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBiYXJyZWxzYnkuXG4gKi9cblxuZXhwb3J0ICogZnJvbSBcIi4vaS1wbGFjZS1jb21wb25lbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2ktcGxhY2Utc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGxhY2UtY29tcG9uZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wbGFjZS5kZWNvcmF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BsYWNlLm1vZHVsZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGxhY2Uuc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9idXN5LW92ZXJsYXkvYnVzeS1vdmVybGF5LmNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5jb21wb25lbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvcGxhY2Utb3V0bGV0L3BsYWNlLW91dGxldC5jb21wb25lbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvcGxhY2Utb3V0bGV0L3JvdXRlLWFuaW1hdGlvbnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvdGFiYmVkLXBsYWNlLW5hdmlnYXRpb24vdGFiYmVkLXBsYWNlLW5hdmlnYXRpb24uY29tcG9uZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ndWFyZHMvbGVhdmUtcGxhY2UuZ3VhcmRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2d1YXJkcy9wbGFjZS1yb3V0ZS5ndWFyZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcm91dGUvanNvbi10eXBlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcm91dGUvcGFyYW1ldGVyLWRlY29yYXRvcnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JvdXRlL3BhcmFtZXRlci1kZWZpbml0aW9uLmNsYXNzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yb3V0ZS9wYXJhbWV0ZXItc2FuaXRpc2VyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yb3V0ZS9wYXJhbWV0ZXItdHlwZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcm91dGUvcmVzb2x2ZWQtcGFyYW1ldGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yb3V0ZS9yZXNvbHZlZC1yb3V0ZS1wYXJhbWV0ZXItc25hcHNob3RcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JvdXRlL3JvdXRlLXBhcmFtZXRlci1iaW5kaW5nc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcm91dGUvcm91dGUtcGFyYW1ldGVyLXNhbml0aXNlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcm91dGUvdmlzaXQtc25hcHNob3RcIjtcbiJdfQ==
@@ -2,14 +2,172 @@
2
2
  * @fileoverview added by tsickle
3
3
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
4
  */
5
- /**
6
- * @record
7
- */
8
- export function PlaceComponent() { }
9
- if (false) {
5
+ import * as tslib_1 from "tslib";
6
+ import { assert, lang, Trace } from '@coolon/pectin';
7
+ import { Memoize } from '@typescript-plus/fast-memoize-decorator';
8
+ import * as _ from 'lodash';
9
+ import 'reflect-metadata';
10
+ import { DisposableComponent } from '../components/disposable-component';
11
+ import { RouteParameterBindings } from './route/route-parameter-bindings';
12
+ // RAKE: making this Symbol(...) broke things.
13
+ /** @type {?} */
14
+ export const DEFINITION_META_DATA_KEY = 'PLACE_DEFINITION_OPTIONS';
15
+ export class PlaceComponent extends DisposableComponent {
16
+ /**
17
+ * @param {?} activatedRoute
18
+ * @param {?} placeService
19
+ */
20
+ constructor(activatedRoute, placeService) {
21
+ super();
22
+ this.activatedRoute = activatedRoute;
23
+ this.routeBindingMediator = this.registerDisposable(new RouteParameterBindings(this, placeService));
24
+ }
25
+ /**
26
+ * @return {?}
27
+ */
28
+ get placeConfig() {
29
+ return PlaceComponent.getDefinition((/** @type {?} */ ((/** @type {?} */ (this.constructor)))));
30
+ }
31
+ /**
32
+ * @param {?=} nextPlace
33
+ * @param {?=} nextState
34
+ * @return {?}
35
+ */
36
+ canDeactivate(nextPlace, nextState) {
37
+ return true;
38
+ }
10
39
  /**
11
40
  * @return {?}
12
41
  */
13
- PlaceComponent.prototype.canDeactivate = function () { };
42
+ onPlaceReady() {
43
+ }
14
44
  }
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UtY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3BsYWNlLWNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsb0NBRUM7Ozs7O0lBREMseURBQTRDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBQbGFjZUNvbXBvbmVudCB7XG4gIGNhbkRlYWN0aXZhdGUoKTogYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj47XG59XG4iXX0=
45
+ tslib_1.__decorate([
46
+ Memoize(),
47
+ tslib_1.__metadata("design:type", PlaceComponent.Definition),
48
+ tslib_1.__metadata("design:paramtypes", [])
49
+ ], PlaceComponent.prototype, "placeConfig", null);
50
+ tslib_1.__decorate([
51
+ Trace(),
52
+ tslib_1.__metadata("design:type", Function),
53
+ tslib_1.__metadata("design:paramtypes", []),
54
+ tslib_1.__metadata("design:returntype", void 0)
55
+ ], PlaceComponent.prototype, "onPlaceReady", null);
56
+ if (false) {
57
+ /**
58
+ * @type {?}
59
+ * @private
60
+ */
61
+ PlaceComponent.prototype.routeBindingMediator;
62
+ /** @type {?} */
63
+ PlaceComponent.prototype.activatedRoute;
64
+ }
65
+ (function (PlaceComponent) {
66
+ class Definition {
67
+ /**
68
+ * @param {?} component
69
+ * @param {?} options
70
+ */
71
+ constructor(component, options) {
72
+ this.component = component;
73
+ assert.notNil(options);
74
+ this.path = options.path;
75
+ this.order = options.order;
76
+ this.data = options.data;
77
+ this.authenticate = _.isNil(options.authenticate) || options.authenticate;
78
+ }
79
+ /**
80
+ * @param {?} construcable
81
+ * @return {?}
82
+ */
83
+ isDescriptorForType(construcable) {
84
+ return lang.constructorChain(construcable).includes(PlaceComponent);
85
+ }
86
+ /**
87
+ * @param {?} placeComponent
88
+ * @return {?}
89
+ */
90
+ isDescriptorFor(placeComponent) {
91
+ return placeComponent.constructor === this.component;
92
+ }
93
+ /**
94
+ * @template T
95
+ * @param {?} key
96
+ * @param {?=} defaultValue
97
+ * @return {?}
98
+ */
99
+ getData(key, defaultValue) {
100
+ return this.data ?
101
+ _.isNil(this.data[key]) ? defaultValue : this.data[key] :
102
+ defaultValue;
103
+ }
104
+ /**
105
+ * @template T
106
+ * @param {?} keys
107
+ * @param {?=} defaultValue
108
+ * @return {?}
109
+ */
110
+ searchData(keys, defaultValue) {
111
+ if (this.data) {
112
+ /** @type {?} */
113
+ const found = keys.find((/**
114
+ * @param {?} key
115
+ * @return {?}
116
+ */
117
+ key => !_.isNil(this.data[key])));
118
+ return found ? this.data[found] : defaultValue;
119
+ }
120
+ else {
121
+ return defaultValue;
122
+ }
123
+ }
124
+ }
125
+ PlaceComponent.Definition = Definition;
126
+ if (false) {
127
+ /** @type {?} */
128
+ Definition.prototype.path;
129
+ /** @type {?} */
130
+ Definition.prototype.authenticate;
131
+ /** @type {?} */
132
+ Definition.prototype.order;
133
+ /** @type {?} */
134
+ Definition.prototype.data;
135
+ /** @type {?} */
136
+ Definition.prototype.component;
137
+ }
138
+ /**
139
+ * @record
140
+ */
141
+ function Options() { }
142
+ PlaceComponent.Options = Options;
143
+ if (false) {
144
+ /** @type {?} */
145
+ Options.prototype.path;
146
+ /** @type {?} */
147
+ Options.prototype.order;
148
+ /** @type {?|undefined} */
149
+ Options.prototype.data;
150
+ /** @type {?|undefined} */
151
+ Options.prototype.authenticate;
152
+ }
153
+ /**
154
+ * @param {?} klass
155
+ * @return {?}
156
+ */
157
+ function getDefinition(klass) {
158
+ /** @type {?} */
159
+ const placeOptions = Reflect.getMetadata(DEFINITION_META_DATA_KEY, klass);
160
+ return new Definition(klass, placeOptions);
161
+ }
162
+ PlaceComponent.getDefinition = getDefinition;
163
+ /**
164
+ * @param {?} klass
165
+ * @param {?} options
166
+ * @return {?}
167
+ */
168
+ function injectDefinition(klass, options) {
169
+ Reflect.defineMetadata(DEFINITION_META_DATA_KEY, options, klass);
170
+ }
171
+ PlaceComponent.injectDefinition = injectDefinition;
172
+ })(PlaceComponent || (PlaceComponent = {}));
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UtY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3BsYWNlLWNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQWlCLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDbEUsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUd6RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7O0FBRzFFLE1BQU0sT0FBTyx3QkFBd0IsR0FBRywwQkFBMEI7QUFFbEUsTUFBTSxPQUFPLGNBQWUsU0FBUSxtQkFBbUI7Ozs7O0lBSXJELFlBQXFCLGNBQThCLEVBQUUsWUFBMkI7UUFDOUUsS0FBSyxFQUFFLENBQUM7UUFEVyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFFakQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLHNCQUFzQixDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQ3RHLENBQUM7Ozs7SUFHRCxJQUFJLFdBQVc7UUFDYixPQUFPLGNBQWMsQ0FBQyxhQUFhLENBQUMsbUJBQUEsbUJBQUEsSUFBSSxDQUFDLFdBQVcsRUFBTyxFQUFpQyxDQUFDLENBQUM7SUFDaEcsQ0FBQzs7Ozs7O0lBRUQsYUFBYSxDQUFDLFNBQXFDLEVBQUUsU0FBK0I7UUFDbEYsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzs7O0lBR0QsWUFBWTtJQUNaLENBQUM7Q0FFRjtBQVpDO0lBREMsT0FBTyxFQUFFO3ND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dGUsIFJvdXRlclN0YXRlU25hcHNob3QgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgYXNzZXJ0LCBDb25zdHJ1Y3RhYmxlLCBsYW5nLCBUcmFjZSB9IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCB7IE1lbW9pemUgfSBmcm9tICdAdHlwZXNjcmlwdC1wbHVzL2Zhc3QtbWVtb2l6ZS1kZWNvcmF0b3InO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0ICdyZWZsZWN0LW1ldGFkYXRhJztcbmltcG9ydCB7IERpc3Bvc2FibGVDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2Rpc3Bvc2FibGUtY29tcG9uZW50JztcbmltcG9ydCB7IElQbGFjZUNvbXBvbmVudCB9IGZyb20gJy4vaS1wbGFjZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgSVBsYWNlU2VydmljZSB9IGZyb20gJy4vaS1wbGFjZS1zZXJ2aWNlJztcbmltcG9ydCB7IFJvdXRlUGFyYW1ldGVyQmluZGluZ3MgfSBmcm9tICcuL3JvdXRlL3JvdXRlLXBhcmFtZXRlci1iaW5kaW5ncyc7XG5cbi8vIFJBS0U6IG1ha2luZyB0aGlzIFN5bWJvbCguLi4pIGJyb2tlIHRoaW5ncy5cbmV4cG9ydCBjb25zdCBERUZJTklUSU9OX01FVEFfREFUQV9LRVkgPSAnUExBQ0VfREVGSU5JVElPTl9PUFRJT05TJztcblxuZXhwb3J0IGNsYXNzIFBsYWNlQ29tcG9uZW50IGV4dGVuZHMgRGlzcG9zYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIElQbGFjZUNvbXBvbmVudCB7XG5cbiAgcHJpdmF0ZSByb3V0ZUJpbmRpbmdNZWRpYXRvcjogUm91dGVQYXJhbWV0ZXJCaW5kaW5ncztcblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsIHBsYWNlU2VydmljZTogSVBsYWNlU2VydmljZSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5yb3V0ZUJpbmRpbmdNZWRpYXRvciA9IHRoaXMucmVnaXN0ZXJEaXNwb3NhYmxlKG5ldyBSb3V0ZVBhcmFtZXRlckJpbmRpbmdzKHRoaXMsIHBsYWNlU2VydmljZSkpO1xuICB9XG5cbiAgQE1lbW9pemUoKVxuICBnZXQgcGxhY2VDb25maWcoKTogUGxhY2VDb21wb25lbnQuRGVmaW5pdGlvbiB7XG4gICAgcmV0dXJuIFBsYWNlQ29tcG9uZW50LmdldERlZmluaXRpb24odGhpcy5jb25zdHJ1Y3RvciBhcyBhbnkgYXMgQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4pO1xuICB9XG5cbiAgY2FuRGVhY3RpdmF0ZShuZXh0UGxhY2U/OiBQbGFjZUNvbXBvbmVudC5EZWZpbml0aW9uLCBuZXh0U3RhdGU/OiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgQFRyYWNlKClcbiAgb25QbGFjZVJlYWR5KCkge1xuICB9XG5cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBQbGFjZUNvbXBvbmVudCB7XG5cbiAgZXhwb3J0IGNsYXNzIERlZmluaXRpb24ge1xuICAgIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcbiAgICByZWFkb25seSBhdXRoZW50aWNhdGU6IGJvb2xlYW47XG4gICAgcmVhZG9ubHkgb3JkZXI6IG51bWJlcjtcbiAgICByZWFkb25seSBkYXRhOiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgY29tcG9uZW50OiBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50Piwgb3B0aW9uczogUGxhY2VDb21wb25lbnQuT3B0aW9ucykge1xuICAgICAgYXNzZXJ0Lm5vdE5pbChvcHRpb25zKTtcbiAgICAgIHRoaXMucGF0aCA9IG9wdGlvbnMucGF0aDtcbiAgICAgIHRoaXMub3JkZXIgPSBvcHRpb25zLm9yZGVyO1xuICAgICAgdGhpcy5kYXRhID0gb3B0aW9ucy5kYXRhO1xuICAgICAgdGhpcy5hdXRoZW50aWNhdGUgPSBfLmlzTmlsKG9wdGlvbnMuYXV0aGVudGljYXRlKSB8fCBvcHRpb25zLmF1dGhlbnRpY2F0ZTtcbiAgICB9XG5cbiAgICBpc0Rlc2NyaXB0b3JGb3JUeXBlKGNvbnN0cnVjYWJsZTogQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4pIHtcbiAgICAgIHJldHVybiBsYW5nLmNvbnN0cnVjdG9yQ2hhaW4oY29uc3RydWNhYmxlKS5pbmNsdWRlcyhQbGFjZUNvbXBvbmVudCk7XG4gICAgfVxuXG4gICAgaXNEZXNjcmlwdG9yRm9yKHBsYWNlQ29tcG9uZW50OiBQbGFjZUNvbXBvbmVudCkge1xuICAgICAgcmV0dXJuIHBsYWNlQ29tcG9uZW50LmNvbnN0cnVjdG9yID09PSB0aGlzLmNvbXBvbmVudDtcbiAgICB9XG5cbiAgICBnZXREYXRhPFQ+KGtleTogc3RyaW5nLCBkZWZhdWx0VmFsdWU/OiBUKTogVCB7XG4gICAgICByZXR1cm4gdGhpcy5kYXRhID9cbiAgICAgICAgXy5pc05pbCh0aGlzLmRhdGFba2V5XSkgPyBkZWZhdWx0VmFsdWUgOiB0aGlzLmRhdGFba2V5XSA6XG4gICAgICAgIGRlZmF1bHRWYWx1ZTtcbiAgICB9XG5cbiAgICBzZWFyY2hEYXRhPFQ+KGtleXM6IHN0cmluZ1tdLCBkZWZhdWx0VmFsdWU/OiBUKTogVCB7XG4gICAgICBpZiAodGhpcy5kYXRhKSB7XG4gICAgICAgIGNvbnN0IGZvdW5kID0ga2V5cy5maW5kKGtleSA9PiAhXy5pc05pbCh0aGlzLmRhdGFba2V5XSkpO1xuICAgICAgICByZXR1cm4gZm91bmQgPyB0aGlzLmRhdGFbZm91bmRdIDogZGVmYXVsdFZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgT3B0aW9ucyB7XG4gICAgcGF0aDogc3RyaW5nLFxuICAgIG9yZGVyOiBudW1iZXI7XG4gICAgZGF0YT86IHsgW2tleTogc3RyaW5nXTogYW55IH0sIC8vIGRlZmF1bHRzIHRvIHRydWVcbiAgICBhdXRoZW50aWNhdGU/OiBib29sZWFuIC8vIGRlZmF1bHRzIHRvIHRydWVcbiAgICAvLyBjaGlsZE9mPzogQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD5cbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXREZWZpbml0aW9uKGtsYXNzOiBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50Pik6IERlZmluaXRpb24ge1xuICAgIGNvbnN0IHBsYWNlT3B0aW9ucyA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoREVGSU5JVElPTl9NRVRBX0RBVEFfS0VZLCBrbGFzcyk7XG4gICAgcmV0dXJuIG5ldyBEZWZpbml0aW9uKGtsYXNzLCBwbGFjZU9wdGlvbnMpO1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGluamVjdERlZmluaXRpb24oa2xhc3M6IENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+LCBvcHRpb25zOiBPcHRpb25zKSB7XG4gICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShERUZJTklUSU9OX01FVEFfREFUQV9LRVksIG9wdGlvbnMsIGtsYXNzKTtcbiAgfVxuXG5cbn1cbiJdfQ==
@@ -2,9 +2,8 @@
2
2
  * @fileoverview added by tsickle
3
3
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
4
  */
5
- import { assert } from '@coolon/pectin';
6
- import * as _ from 'lodash';
7
- import 'reflect-metadata';
5
+ import { lang } from '@coolon/pectin';
6
+ import { PlaceComponent } from './place-component';
8
7
  /**
9
8
  * @param {?} options
10
9
  * @return {?}
@@ -15,89 +14,10 @@ export function Place(options) {
15
14
  * @return {?}
16
15
  */
17
16
  (target) => {
18
- Reflect.defineMetadata('place.options', options, target);
17
+ if (!lang.constructorChain((/** @type {?} */ (target))).includes(PlaceComponent)) {
18
+ lang.illegalState(`${target} must extend PlaceComponent to use the @Place decorator`);
19
+ }
20
+ PlaceComponent.injectDefinition((/** @type {?} */ (target)), options);
19
21
  });
20
22
  }
21
- (function (Place) {
22
- /**
23
- * @record
24
- */
25
- function Options() { }
26
- Place.Options = Options;
27
- if (false) {
28
- /** @type {?} */
29
- Options.prototype.path;
30
- /** @type {?} */
31
- Options.prototype.order;
32
- /** @type {?|undefined} */
33
- Options.prototype.data;
34
- /** @type {?|undefined} */
35
- Options.prototype.authenticate;
36
- }
37
- class Descriptor {
38
- /**
39
- * @param {?} placeClass
40
- * @param {?} options
41
- */
42
- constructor(placeClass, options) {
43
- assert.notNil(options);
44
- this.path = options.path;
45
- this.order = options.order;
46
- this.data = options.data;
47
- this.authenticate = _.isNil(options.authenticate) || options.authenticate;
48
- }
49
- /**
50
- * @template T
51
- * @param {?} key
52
- * @param {?=} defaultValue
53
- * @return {?}
54
- */
55
- getData(key, defaultValue) {
56
- return this.data ?
57
- _.isNil(this.data[key]) ? defaultValue : this.data[key] :
58
- defaultValue;
59
- }
60
- /**
61
- * @template T
62
- * @param {?} keys
63
- * @param {?=} defaultValue
64
- * @return {?}
65
- */
66
- searchData(keys, defaultValue) {
67
- if (this.data) {
68
- /** @type {?} */
69
- const found = keys.find((/**
70
- * @param {?} key
71
- * @return {?}
72
- */
73
- key => !_.isNil(this.data[key])));
74
- return found ? this.data[found] : defaultValue;
75
- }
76
- else {
77
- return defaultValue;
78
- }
79
- }
80
- }
81
- Place.Descriptor = Descriptor;
82
- if (false) {
83
- /** @type {?} */
84
- Descriptor.prototype.path;
85
- /** @type {?} */
86
- Descriptor.prototype.authenticate;
87
- /** @type {?} */
88
- Descriptor.prototype.order;
89
- /** @type {?} */
90
- Descriptor.prototype.data;
91
- }
92
- /**
93
- * @param {?} klass
94
- * @return {?}
95
- */
96
- function getDescriptor(klass) {
97
- /** @type {?} */
98
- const placeOptions = Reflect.getMetadata('place.options', klass);
99
- return new Descriptor(klass, placeOptions);
100
- }
101
- Place.getDescriptor = getDescriptor;
102
- })(Place || (Place = {}));
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UuZGVjb3JhdG9yLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3BsYWNlLmRlY29yYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBaUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLGtCQUFrQixDQUFDOzs7OztBQUcxQixNQUFNLFVBQVUsS0FBSyxDQUFDLE9BQXNCO0lBQzFDOzs7O0lBQU8sQ0FBQyxNQUFnQixFQUFFLEVBQUU7UUFDMUIsT0FBTyxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzNELENBQUMsRUFBQztBQUNKLENBQUM7QUFFRCxXQUFpQixLQUFLOzs7O0lBQ3BCLHNCQU1DOzs7O1FBTEMsdUJBQWE7O1FBQ2Isd0JBQWM7O1FBQ2QsdUJBQTJCOztRQUMzQiwrQkFBc0I7O0lBSXhCLE1BQWEsVUFBVTs7Ozs7UUFNckIsWUFBWSxVQUF5QyxFQUFFLE9BQWdCO1lBQ3JFLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUMzQixJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDekIsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDO1FBQzVFLENBQUM7Ozs7Ozs7UUFFRCxPQUFPLENBQUksR0FBVSxFQUFFLFlBQWU7WUFDcEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2hCLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDekQsWUFBWSxDQUFDO1FBQ2pCLENBQUM7Ozs7Ozs7UUFDRCxVQUFVLENBQUksSUFBYSxFQUFFLFlBQWU7WUFDMUMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFOztzQkFDUCxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUk7Ozs7Z0JBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFDO2dCQUN4RCxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO2FBQ2hEO2lCQUFNO2dCQUNMLE9BQU8sWUFBWSxDQUFDO2FBQ3JCO1FBQ0gsQ0FBQztLQUNGO0lBM0JZLGdCQUFVLGFBMkJ0QixDQUFBOzs7UUExQkMsMEJBQXNCOztRQUN0QixrQ0FBK0I7O1FBQy9CLDJCQUF1Qjs7UUFDdkIsMEJBQW1DOzs7Ozs7SUF5QnJDLFNBQWdCLGFBQWEsQ0FBQyxLQUFvQzs7Y0FDMUQsWUFBWSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQztRQUNoRSxPQUFPLElBQUksVUFBVSxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBSGUsbUJBQWEsZ0JBRzVCLENBQUE7QUFDSCxDQUFDLEVBMUNnQixLQUFLLEtBQUwsS0FBSyxRQTBDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhc3NlcnQsIENvbnN0cnVjdGFibGUgfSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgJ3JlZmxlY3QtbWV0YWRhdGEnO1xuaW1wb3J0IHsgUGxhY2VDb21wb25lbnQgfSBmcm9tICcuL3BsYWNlLWNvbXBvbmVudCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBQbGFjZShvcHRpb25zOiBQbGFjZS5PcHRpb25zKSB7XG4gIHJldHVybiAodGFyZ2V0OiBGdW5jdGlvbikgPT4ge1xuICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ3BsYWNlLm9wdGlvbnMnLCBvcHRpb25zLCB0YXJnZXQpO1xuICB9O1xufVxuXG5leHBvcnQgbmFtZXNwYWNlIFBsYWNlIHtcbiAgZXhwb3J0IGludGVyZmFjZSBPcHRpb25zIHtcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgb3JkZXI6IG51bWJlcjtcbiAgICBkYXRhPzoge1trZXk6c3RyaW5nXTogYW55fSwgLy8gZGVmYXVsdHMgdG8gdHJ1ZVxuICAgIGF1dGhlbnRpY2F0ZT86IGJvb2xlYW4gLy8gZGVmYXVsdHMgdG8gdHJ1ZVxuICAgIC8vIGNoaWxkT2Y/OiBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50PlxuICB9XG5cbiAgZXhwb3J0IGNsYXNzIERlc2NyaXB0b3Ige1xuICAgIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcbiAgICByZWFkb25seSBhdXRoZW50aWNhdGU6IGJvb2xlYW47XG4gICAgcmVhZG9ubHkgb3JkZXI6IG51bWJlcjtcbiAgICByZWFkb25seSBkYXRhOiB7W2tleTpzdHJpbmddOiBhbnl9O1xuXG4gICAgY29uc3RydWN0b3IocGxhY2VDbGFzczogQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4sIG9wdGlvbnM6IE9wdGlvbnMpIHtcbiAgICAgIGFzc2VydC5ub3ROaWwob3B0aW9ucyk7XG4gICAgICB0aGlzLnBhdGggPSBvcHRpb25zLnBhdGg7XG4gICAgICB0aGlzLm9yZGVyID0gb3B0aW9ucy5vcmRlcjtcbiAgICAgIHRoaXMuZGF0YSA9IG9wdGlvbnMuZGF0YTtcbiAgICAgIHRoaXMuYXV0aGVudGljYXRlID0gXy5pc05pbChvcHRpb25zLmF1dGhlbnRpY2F0ZSkgfHwgb3B0aW9ucy5hdXRoZW50aWNhdGU7XG4gICAgfVxuXG4gICAgZ2V0RGF0YTxUPihrZXk6c3RyaW5nLCBkZWZhdWx0VmFsdWU/OlQpOlQge1xuICAgICAgcmV0dXJuIHRoaXMuZGF0YSA/XG4gICAgICAgIF8uaXNOaWwodGhpcy5kYXRhW2tleV0pID8gZGVmYXVsdFZhbHVlIDogdGhpcy5kYXRhW2tleV0gOlxuICAgICAgICBkZWZhdWx0VmFsdWU7XG4gICAgfVxuICAgIHNlYXJjaERhdGE8VD4oa2V5czpzdHJpbmdbXSwgZGVmYXVsdFZhbHVlPzpUKTpUIHtcbiAgICAgIGlmICh0aGlzLmRhdGEpIHtcbiAgICAgICAgY29uc3QgZm91bmQgPSBrZXlzLmZpbmQoa2V5ID0+ICFfLmlzTmlsKHRoaXMuZGF0YVtrZXldKSk7XG4gICAgICAgIHJldHVybiBmb3VuZCA/IHRoaXMuZGF0YVtmb3VuZF0gOiBkZWZhdWx0VmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXREZXNjcmlwdG9yKGtsYXNzOiBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50Pik6IERlc2NyaXB0b3Ige1xuICAgIGNvbnN0IHBsYWNlT3B0aW9ucyA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoJ3BsYWNlLm9wdGlvbnMnLCBrbGFzcyk7XG4gICAgcmV0dXJuIG5ldyBEZXNjcmlwdG9yKGtsYXNzLCBwbGFjZU9wdGlvbnMpO1xuICB9XG59XG4iXX0=
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UuZGVjb3JhdG9yLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3BsYWNlLmRlY29yYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFpQixJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7O0FBRW5ELE1BQU0sVUFBVSxLQUFLLENBQUMsT0FBK0I7SUFDbkQ7Ozs7SUFBTyxDQUFDLE1BQWdCLEVBQUUsRUFBRTtRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLG1CQUFBLE1BQU0sRUFBc0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRTtZQUMvRSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsTUFBTSx5REFBeUQsQ0FBQyxDQUFBO1NBQ3hGO1FBQ0QsY0FBYyxDQUFDLGdCQUFnQixDQUFDLG1CQUFBLE1BQU0sRUFBc0IsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN6RSxDQUFDLEVBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0YWJsZSwgbGFuZyB9IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCB7IFBsYWNlQ29tcG9uZW50IH0gZnJvbSAnLi9wbGFjZS1jb21wb25lbnQnO1xuXG5leHBvcnQgZnVuY3Rpb24gUGxhY2Uob3B0aW9uczogUGxhY2VDb21wb25lbnQuT3B0aW9ucykge1xuICByZXR1cm4gKHRhcmdldDogRnVuY3Rpb24pID0+IHtcbiAgICBpZiAoIWxhbmcuY29uc3RydWN0b3JDaGFpbih0YXJnZXQgYXMgQ29uc3RydWN0YWJsZTxhbnk+KS5pbmNsdWRlcyhQbGFjZUNvbXBvbmVudCkpIHtcbiAgICAgICAgbGFuZy5pbGxlZ2FsU3RhdGUoYCR7dGFyZ2V0fSBtdXN0IGV4dGVuZCBQbGFjZUNvbXBvbmVudCB0byB1c2UgdGhlIEBQbGFjZSBkZWNvcmF0b3JgKVxuICAgIH1cbiAgICBQbGFjZUNvbXBvbmVudC5pbmplY3REZWZpbml0aW9uKHRhcmdldCBhcyBDb25zdHJ1Y3RhYmxlPGFueT4sIG9wdGlvbnMpO1xuICB9O1xufVxuXG4iXX0=
@@ -4,10 +4,18 @@
4
4
  */
5
5
  import * as tslib_1 from "tslib";
6
6
  import { Injectable } from '@angular/core';
7
- import { MutableListModel, Trace } from '@coolon/pectin';
7
+ import { Router } from '@angular/router';
8
+ import { GarbageCollector, MutableListModel, Trace } from '@coolon/pectin';
9
+ import { PlaceComponent } from './place-component';
8
10
  import * as i0 from "@angular/core";
9
- export class PlaceService {
10
- constructor() {
11
+ import * as i1 from "@angular/router";
12
+ export class PlaceService extends GarbageCollector {
13
+ /**
14
+ * @param {?} router
15
+ */
16
+ constructor(router) {
17
+ super();
18
+ this.router = router;
11
19
  this._activePlaces = new MutableListModel();
12
20
  }
13
21
  /**
@@ -30,6 +38,24 @@ export class PlaceService {
30
38
  onDeactivate(place) {
31
39
  this._activePlaces.remove(place);
32
40
  }
41
+ /**
42
+ * @param {?} params
43
+ * @return {?}
44
+ */
45
+ notifyRouteParametersChanged(params) {
46
+ // We update the router state...
47
+ if (params.updateRoute) {
48
+ /** @type {?} */
49
+ const routeId = params.next.getFormattedRouteId();
50
+ /** @type {?} */
51
+ const relativePath = !!params.previous.hasRouteId() ? '..' : '.';
52
+ /** @type {?} */
53
+ const path = routeId ? [relativePath, routeId, params.next.getFormattedParameters()] : [relativePath, params.next.getFormattedParameters()];
54
+ this.router.navigate(path, {
55
+ relativeTo: params.placeComponent.activatedRoute
56
+ });
57
+ }
58
+ }
33
59
  }
34
60
  PlaceService.decorators = [
35
61
  { type: Injectable, args: [{
@@ -37,25 +63,38 @@ PlaceService.decorators = [
37
63
  },] }
38
64
  ];
39
65
  /** @nocollapse */
40
- PlaceService.ctorParameters = () => [];
41
- /** @nocollapse */ PlaceService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function PlaceService_Factory() { return new PlaceService(); }, token: PlaceService, providedIn: "root" });
66
+ PlaceService.ctorParameters = () => [
67
+ { type: Router }
68
+ ];
69
+ /** @nocollapse */ PlaceService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function PlaceService_Factory() { return new PlaceService(i0.ɵɵinject(i1.Router)); }, token: PlaceService, providedIn: "root" });
42
70
  tslib_1.__decorate([
43
71
  Trace(),
44
72
  tslib_1.__metadata("design:type", Function),
45
- tslib_1.__metadata("design:paramtypes", [Object]),
73
+ tslib_1.__metadata("design:paramtypes", [PlaceComponent]),
46
74
  tslib_1.__metadata("design:returntype", void 0)
47
75
  ], PlaceService.prototype, "onActivate", null);
48
76
  tslib_1.__decorate([
49
77
  Trace(),
50
78
  tslib_1.__metadata("design:type", Function),
51
- tslib_1.__metadata("design:paramtypes", [Object]),
79
+ tslib_1.__metadata("design:paramtypes", [PlaceComponent]),
52
80
  tslib_1.__metadata("design:returntype", void 0)
53
81
  ], PlaceService.prototype, "onDeactivate", null);
82
+ tslib_1.__decorate([
83
+ Trace(),
84
+ tslib_1.__metadata("design:type", Function),
85
+ tslib_1.__metadata("design:paramtypes", [Object]),
86
+ tslib_1.__metadata("design:returntype", void 0)
87
+ ], PlaceService.prototype, "notifyRouteParametersChanged", null);
54
88
  if (false) {
55
89
  /**
56
90
  * @type {?}
57
91
  * @private
58
92
  */
59
93
  PlaceService.prototype._activePlaces;
94
+ /**
95
+ * @type {?}
96
+ * @protected
97
+ */
98
+ PlaceService.prototype.router;
60
99
  }
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbImxpYi9wbGFjZS9wbGFjZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBTXpELE1BQU0sT0FBTyxZQUFZO0lBSXZCO1FBRlEsa0JBQWEsR0FBRyxJQUFJLGdCQUFnQixFQUFrQixDQUFDO0lBRy9ELENBQUM7Ozs7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDO0lBQ3JDLENBQUM7Ozs7O0lBR0QsVUFBVSxDQUFDLEtBQXFCO1FBQzlCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7Ozs7O0lBR0QsWUFBWSxDQUFDLEtBQXFCO1FBQ2hDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7OztZQXRCRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7Ozs7O0FBYUM7SUFEQyxLQUFLLEVBQUU7Ozs7OENBR1A7QUFHRDtJQURDLEtBQUssRUFBRTs7OztnREFHUDs7Ozs7O0lBakJELHFDQUErRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE11dGFibGVMaXN0TW9kZWwsIFRyYWNlIH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IHsgUGxhY2VDb21wb25lbnQgfSBmcm9tICcuL3BsYWNlLWNvbXBvbmVudCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFBsYWNlU2VydmljZSB7XG5cbiAgcHJpdmF0ZSBfYWN0aXZlUGxhY2VzID0gbmV3IE11dGFibGVMaXN0TW9kZWw8UGxhY2VDb21wb25lbnQ+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gIH1cblxuICBnZXQgYWN0aXZlUGxhY2VzKCkge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmVQbGFjZXMucmVhZG9ubHk7XG4gIH1cblxuICBAVHJhY2UoKVxuICBvbkFjdGl2YXRlKHBsYWNlOiBQbGFjZUNvbXBvbmVudCkge1xuICAgIHRoaXMuX2FjdGl2ZVBsYWNlcy5wdXNoKHBsYWNlKTtcbiAgfVxuXG4gIEBUcmFjZSgpXG4gIG9uRGVhY3RpdmF0ZShwbGFjZTogUGxhY2VDb21wb25lbnQpIHtcbiAgICB0aGlzLl9hY3RpdmVQbGFjZXMucmVtb3ZlKHBsYWNlKTtcbiAgfVxuXG59XG4iXX0=
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbImxpYi9wbGFjZS9wbGFjZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWtCLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7OztBQU1uRCxNQUFNLE9BQU8sWUFBYSxTQUFRLGdCQUFnQjs7OztJQUloRCxZQUFzQixNQUFjO1FBQ2xDLEtBQUssRUFBRSxDQUFDO1FBRFksV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUY1QixrQkFBYSxHQUFHLElBQUksZ0JBQWdCLEVBQWtCLENBQUM7SUFJL0QsQ0FBQzs7OztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7SUFDckMsQ0FBQzs7Ozs7SUFHRCxVQUFVLENBQUMsS0FBcUI7UUFDOUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQzs7Ozs7SUFHRCxZQUFZLENBQUMsS0FBcUI7UUFDaEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQzs7Ozs7SUFHRCw0QkFBNEIsQ0FBQyxNQUs1QjtRQUNDLGdDQUFnQztRQUNoQyxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUU7O2tCQUNoQixPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRTs7a0JBQzNDLFlBQVksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHOztrQkFDMUQsSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDM0ksSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFO2dCQUN6QixVQUFVLEVBQUUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxjQUFjO2FBQ2pELENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQzs7O1lBekNGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7OztZQVJ3QixNQUFNOzs7QUFzQjdCO0lBREMsS0FBSyxFQUFFOzs2Q0FDVSxjQUFjOzs4Q0FFL0I7QUFHRDtJQURDLEtBQUssRUFBRTs7NkNBQ1ksY0FBYzs7Z0RBRWpDO0FBR0Q7SUFEQyxLQUFLLEVBQUU7Ozs7Z0VBZ0JQOzs7Ozs7SUFwQ0QscUNBQStEOzs7OztJQUVuRCw4QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEdhcmJhZ2VDb2xsZWN0b3IsIE11dGFibGVMaXN0TW9kZWwsIFRyYWNlIH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IHsgSVBsYWNlU2VydmljZSB9IGZyb20gJy4vaS1wbGFjZS1zZXJ2aWNlJztcbmltcG9ydCB7IFBsYWNlQ29tcG9uZW50IH0gZnJvbSAnLi9wbGFjZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVzb2x2ZWRSb3V0ZVBhcmFtZXRlclNuYXBzaG90IH0gZnJvbSAnLi9yb3V0ZS9yZXNvbHZlZC1yb3V0ZS1wYXJhbWV0ZXItc25hcHNob3QnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBQbGFjZVNlcnZpY2UgZXh0ZW5kcyBHYXJiYWdlQ29sbGVjdG9yIGltcGxlbWVudHMgSVBsYWNlU2VydmljZSB7XG5cbiAgcHJpdmF0ZSBfYWN0aXZlUGxhY2VzID0gbmV3IE11dGFibGVMaXN0TW9kZWw8UGxhY2VDb21wb25lbnQ+KCk7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHJvdXRlcjogUm91dGVyKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGdldCBhY3RpdmVQbGFjZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZVBsYWNlcy5yZWFkb25seTtcbiAgfVxuXG4gIEBUcmFjZSgpXG4gIG9uQWN0aXZhdGUocGxhY2U6IFBsYWNlQ29tcG9uZW50KSB7XG4gICAgdGhpcy5fYWN0aXZlUGxhY2VzLnB1c2gocGxhY2UpO1xuICB9XG5cbiAgQFRyYWNlKClcbiAgb25EZWFjdGl2YXRlKHBsYWNlOiBQbGFjZUNvbXBvbmVudCkge1xuICAgIHRoaXMuX2FjdGl2ZVBsYWNlcy5yZW1vdmUocGxhY2UpO1xuICB9XG5cbiAgQFRyYWNlKClcbiAgbm90aWZ5Um91dGVQYXJhbWV0ZXJzQ2hhbmdlZChwYXJhbXM6IHtcbiAgICBwbGFjZUNvbXBvbmVudDogUGxhY2VDb21wb25lbnQsXG4gICAgbmV4dDogUmVzb2x2ZWRSb3V0ZVBhcmFtZXRlclNuYXBzaG90LFxuICAgIHByZXZpb3VzOiBSZXNvbHZlZFJvdXRlUGFyYW1ldGVyU25hcHNob3QsXG4gICAgdXBkYXRlUm91dGU6IGJvb2xlYW5cbiAgfSkge1xuICAgIC8vIFdlIHVwZGF0ZSB0aGUgcm91dGVyIHN0YXRlLi4uXG4gICAgaWYgKHBhcmFtcy51cGRhdGVSb3V0ZSkge1xuICAgICAgY29uc3Qgcm91dGVJZCA9IHBhcmFtcy5uZXh0LmdldEZvcm1hdHRlZFJvdXRlSWQoKTtcbiAgICAgIGNvbnN0IHJlbGF0aXZlUGF0aCA9ICEhcGFyYW1zLnByZXZpb3VzLmhhc1JvdXRlSWQoKSA/ICcuLicgOiAnLic7XG4gICAgICBjb25zdCBwYXRoID0gcm91dGVJZCA/IFtyZWxhdGl2ZVBhdGgsIHJvdXRlSWQsIHBhcmFtcy5uZXh0LmdldEZvcm1hdHRlZFBhcmFtZXRlcnMoKV0gOiBbcmVsYXRpdmVQYXRoLCBwYXJhbXMubmV4dC5nZXRGb3JtYXR0ZWRQYXJhbWV0ZXJzKCldO1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUocGF0aCwge1xuICAgICAgICByZWxhdGl2ZVRvOiBwYXJhbXMucGxhY2VDb21wb25lbnQuYWN0aXZhdGVkUm91dGVcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ /**
6
+ * @record
7
+ * @template T
8
+ */
9
+ export function ResolvedParameter() { }
10
+ if (false) {
11
+ /** @type {?} */
12
+ ResolvedParameter.prototype.parameterDef;
13
+ /** @type {?} */
14
+ ResolvedParameter.prototype.resolvedValue;
15
+ }
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZWQtcGFyYW1ldGVyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3JvdXRlL3Jlc29sdmVkLXBhcmFtZXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUVBLHVDQUdDOzs7SUFGQyx5Q0FBcUM7O0lBQ3JDLDBDQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhcmFtZXRlckRlZmluaXRpb24gfSBmcm9tICcuL3BhcmFtZXRlci1kZWZpbml0aW9uLmNsYXNzJztcblxuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlZFBhcmFtZXRlcjxUPiB7XG4gIHBhcmFtZXRlckRlZjogUGFyYW1ldGVyRGVmaW5pdGlvbjxUPjtcbiAgcmVzb2x2ZWRWYWx1ZTogVDtcbn1cbiJdfQ==
@@ -0,0 +1,106 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ import * as tslib_1 from "tslib";
6
+ import { Trace } from '@coolon/pectin';
7
+ export class ResolvedRouteParameterSnapshot {
8
+ /**
9
+ * @param {?} parameters
10
+ */
11
+ constructor(parameters) {
12
+ this.parameters = parameters;
13
+ }
14
+ /**
15
+ * @template T
16
+ * @param {?} parameter
17
+ * @return {?}
18
+ */
19
+ get(parameter) {
20
+ /** @type {?} */
21
+ const resolved = this.parameters.find((/**
22
+ * @param {?} p
23
+ * @return {?}
24
+ */
25
+ p => p.parameterDef === parameter));
26
+ return resolved ? resolved.resolvedValue : null;
27
+ }
28
+ /**
29
+ * @template T
30
+ * @param {?} parameter
31
+ * @param {?} value
32
+ * @return {?}
33
+ */
34
+ replace(parameter, value) {
35
+ return new ResolvedRouteParameterSnapshot(this.parameters.filter((/**
36
+ * @param {?} p
37
+ * @return {?}
38
+ */
39
+ p => p.parameterDef !== parameter)).concat({
40
+ parameterDef: parameter,
41
+ resolvedValue: value
42
+ }));
43
+ }
44
+ /**
45
+ * @return {?}
46
+ */
47
+ getFormattedRouteId() {
48
+ /** @type {?} */
49
+ const routeIdParam = this.getRouteIdParam();
50
+ return routeIdParam ? routeIdParam.parameterDef.type.format(routeIdParam.resolvedValue) : null;
51
+ }
52
+ /**
53
+ * @private
54
+ * @return {?}
55
+ */
56
+ getRouteIdParam() {
57
+ return this.parameters.find((/**
58
+ * @param {?} p
59
+ * @return {?}
60
+ */
61
+ p => p.parameterDef.isRouteId));
62
+ }
63
+ /**
64
+ * @return {?}
65
+ */
66
+ getFormattedParameters() {
67
+ /** @type {?} */
68
+ const params = {};
69
+ /** @type {?} */
70
+ const routeIdParam = this.parameters.filter((/**
71
+ * @param {?} p
72
+ * @return {?}
73
+ */
74
+ p => !p.parameterDef.isRouteId)).forEach((/**
75
+ * @param {?} p
76
+ * @return {?}
77
+ */
78
+ p => {
79
+ params[p.parameterDef.name] = p.parameterDef.type.format(p.resolvedValue);
80
+ }));
81
+ return params;
82
+ }
83
+ /**
84
+ * @return {?}
85
+ */
86
+ hasRouteId() {
87
+ return !!this.getRouteIdParam();
88
+ }
89
+ }
90
+ tslib_1.__decorate([
91
+ Trace(),
92
+ tslib_1.__metadata("design:type", Function),
93
+ tslib_1.__metadata("design:paramtypes", []),
94
+ tslib_1.__metadata("design:returntype", void 0)
95
+ ], ResolvedRouteParameterSnapshot.prototype, "getFormattedRouteId", null);
96
+ tslib_1.__decorate([
97
+ Trace(),
98
+ tslib_1.__metadata("design:type", Function),
99
+ tslib_1.__metadata("design:paramtypes", []),
100
+ tslib_1.__metadata("design:returntype", void 0)
101
+ ], ResolvedRouteParameterSnapshot.prototype, "getFormattedParameters", null);
102
+ if (false) {
103
+ /** @type {?} */
104
+ ResolvedRouteParameterSnapshot.prototype.parameters;
105
+ }
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZWQtcm91dGUtcGFyYW1ldGVyLXNuYXBzaG90LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3JvdXRlL3Jlc29sdmVkLXJvdXRlLXBhcmFtZXRlci1zbmFwc2hvdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUl2QyxNQUFNLE9BQU8sOEJBQThCOzs7O0lBQ3pDLFlBQXFCLFVBQW9DO1FBQXBDLGVBQVUsR0FBVixVQUFVLENBQTBCO0lBQ3pELENBQUM7Ozs7OztJQUVELEdBQUcsQ0FBSSxTQUFpQzs7Y0FDaEMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSTs7OztRQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksS0FBSyxTQUFTLEVBQUM7UUFDeEUsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNsRCxDQUFDOzs7Ozs7O0lBRUQsT0FBTyxDQUFJLFNBQWlDLEVBQUUsS0FBUTtRQUNwRCxPQUFPLElBQUksOEJBQThCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNOzs7O1FBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxLQUFLLFNBQVMsRUFBQyxDQUFDLE1BQU0sQ0FBQztZQUN6RyxZQUFZLEVBQUUsU0FBUztZQUN2QixhQUFhLEVBQUUsS0FBSztTQUNyQixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7Ozs7SUFHQSxtQkFBbUI7O2NBQ1osWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUU7UUFDM0MsT0FBTyxZQUFZLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNqRyxDQUFDOzs7OztJQUVPLGVBQWU7UUFDckIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUk7Ozs7UUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFDLENBQUM7SUFDN0QsQ0FBQzs7OztJQUdELHNCQUFzQjs7Y0FDZCxNQUFNLEdBQUcsRUFBRTs7Y0FDWCxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNOzs7O1FBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFDLENBQUMsT0FBTzs7OztRQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3RGLE1BQU0sQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDNUUsQ0FBQyxFQUFDO1FBQ0YsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs7OztJQUVELFVBQVU7UUFDUixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDbEMsQ0FBQztDQUNGO0FBckJFO0lBREEsS0FBSyxFQUFFOzs7O3lFQUlQO0FBT0Q7SUFEQyxLQUFLLEVBQUU7Ozs7NEVBT1A7OztJQWhDVyxvREFBNkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFRyYWNlIH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IHsgUGFyYW1ldGVyRGVmaW5pdGlvbiB9IGZyb20gJy4vcGFyYW1ldGVyLWRlZmluaXRpb24uY2xhc3MnO1xuaW1wb3J0IHsgUmVzb2x2ZWRQYXJhbWV0ZXIgfSBmcm9tICcuL3Jlc29sdmVkLXBhcmFtZXRlcic7XG5cbmV4cG9ydCBjbGFzcyBSZXNvbHZlZFJvdXRlUGFyYW1ldGVyU25hcHNob3Qge1xuICBjb25zdHJ1Y3RvcihyZWFkb25seSBwYXJhbWV0ZXJzOiBSZXNvbHZlZFBhcmFtZXRlcjxhbnk+W10pIHtcbiAgfVxuXG4gIGdldDxUPihwYXJhbWV0ZXI6IFBhcmFtZXRlckRlZmluaXRpb248VD4pOiBUIHtcbiAgICBjb25zdCByZXNvbHZlZCA9IHRoaXMucGFyYW1ldGVycy5maW5kKHAgPT4gcC5wYXJhbWV0ZXJEZWYgPT09IHBhcmFtZXRlcik7XG4gICAgcmV0dXJuIHJlc29sdmVkID8gcmVzb2x2ZWQucmVzb2x2ZWRWYWx1ZSA6IG51bGw7XG4gIH1cblxuICByZXBsYWNlPFQ+KHBhcmFtZXRlcjogUGFyYW1ldGVyRGVmaW5pdGlvbjxUPiwgdmFsdWU6IFQpOiBSZXNvbHZlZFJvdXRlUGFyYW1ldGVyU25hcHNob3Qge1xuICAgIHJldHVybiBuZXcgUmVzb2x2ZWRSb3V0ZVBhcmFtZXRlclNuYXBzaG90KHRoaXMucGFyYW1ldGVycy5maWx0ZXIocCA9PiBwLnBhcmFtZXRlckRlZiAhPT0gcGFyYW1ldGVyKS5jb25jYXQoe1xuICAgICAgcGFyYW1ldGVyRGVmOiBwYXJhbWV0ZXIsXG4gICAgICByZXNvbHZlZFZhbHVlOiB2YWx1ZVxuICAgIH0pKTtcbiAgfVxuXG4gIEBUcmFjZSgpXG4gICBnZXRGb3JtYXR0ZWRSb3V0ZUlkKCkge1xuICAgIGNvbnN0IHJvdXRlSWRQYXJhbSA9IHRoaXMuZ2V0Um91dGVJZFBhcmFtKCk7XG4gICAgcmV0dXJuIHJvdXRlSWRQYXJhbSA/IHJvdXRlSWRQYXJhbS5wYXJhbWV0ZXJEZWYudHlwZS5mb3JtYXQocm91dGVJZFBhcmFtLnJlc29sdmVkVmFsdWUpIDogbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Um91dGVJZFBhcmFtKCkge1xuICAgIHJldHVybiB0aGlzLnBhcmFtZXRlcnMuZmluZChwID0+IHAucGFyYW1ldGVyRGVmLmlzUm91dGVJZCk7XG4gIH1cblxuICBAVHJhY2UoKVxuICBnZXRGb3JtYXR0ZWRQYXJhbWV0ZXJzKCkge1xuICAgIGNvbnN0IHBhcmFtcyA9IHt9O1xuICAgIGNvbnN0IHJvdXRlSWRQYXJhbSA9IHRoaXMucGFyYW1ldGVycy5maWx0ZXIocCA9PiAhcC5wYXJhbWV0ZXJEZWYuaXNSb3V0ZUlkKS5mb3JFYWNoKHAgPT4ge1xuICAgICAgcGFyYW1zW3AucGFyYW1ldGVyRGVmLm5hbWVdID0gcC5wYXJhbWV0ZXJEZWYudHlwZS5mb3JtYXQocC5yZXNvbHZlZFZhbHVlKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcGFyYW1zO1xuICB9XG5cbiAgaGFzUm91dGVJZCgpIHtcbiAgICByZXR1cm4gISF0aGlzLmdldFJvdXRlSWRQYXJhbSgpO1xuICB9XG59XG4iXX0=