@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,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 const DEFINITION_META_DATA_KEY = 'PLACE_DEFINITION_OPTIONS';
@@ -17,57 +16,24 @@ export const DEFINITION_META_DATA_KEY = 'PLACE_DEFINITION_OPTIONS';
17
16
  /** @type {?} */
18
17
  export const ROUTE_PARAMETER_LIST_KEY = Symbol('place:route:parameters');
19
18
  export class PlaceComponent extends DisposableComponent {
19
+ constructor() {
20
+ super();
21
+ }
20
22
  /**
21
- * @param {?} activatedRoute
22
- * @param {?} placeService
23
+ * @param {?} resolvedParameters
24
+ * @return {?}
23
25
  */
24
- constructor(activatedRoute, placeService) {
25
- super();
26
- this.activatedRoute = activatedRoute;
27
- this._incomingRouteChange = new MutableValueModel(false);
28
- this.resolvedParameters = new MutableValueModel();
29
- const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
26
+ initialiseBindings(resolvedParameters) {
27
+ assert.isNil(this.resolvedParameters);
28
+ this.resolvedParameters = resolvedParameters;
30
29
  this.placeDefinition.getRouteParameters().forEach((/**
31
- * @param {?} p
30
+ * @param {?} parameterDef
32
31
  * @return {?}
33
32
  */
34
- p => this.installBinding(p)));
35
- observe.valuesFrom(activatedRoute.paramMap)
36
- .last()
37
- .map((/**
38
- * @param {?} params
39
- * @return {?}
40
- */
41
- params => ParameterSnapshot.create(this.placeDefinition, params)))
42
- .subscribe((/**
43
- * @param {?} resolvedParameters
44
- * @return {?}
45
- */
46
- resolvedParameters => {
47
- this._incomingRouteChange.value = true;
48
- this.resolvedParameters.value = resolvedParameters;
49
- this._incomingRouteChange.value = false;
50
- }));
51
- when.valueOf(this.resolvedParameters).changes((/**
52
- * @param {?} params
53
- * @param {?} previous
54
- * @return {?}
55
- */
56
- (params, previous) => {
57
- placeService.notifyRouteParametersChanged({
58
- activatedRoute: this.activatedRoute,
59
- next: params,
60
- previous: previous,
61
- updateRoute: !this.incomingRouteChange.value // we update the route if it's a component triggered change.
62
- });
33
+ parameterDef => {
34
+ this.installBinding(parameterDef);
63
35
  }));
64
36
  }
65
- /**
66
- * @return {?}
67
- */
68
- get incomingRouteChange() {
69
- return this._incomingRouteChange.readonly;
70
- }
71
37
  /**
72
38
  * @private
73
39
  * @template T, S
@@ -84,7 +50,7 @@ export class PlaceComponent extends DisposableComponent {
84
50
  * @return {?}
85
51
  */
86
52
  toRight(parameters) {
87
- return parameters.getResolvedParameterValue(parameterDef);
53
+ return parameters.getValueOf(parameterDef);
88
54
  },
89
55
  /**
90
56
  * @param {?} value
@@ -102,13 +68,22 @@ export class PlaceComponent extends DisposableComponent {
102
68
  get placeDefinition() {
103
69
  return PlaceComponent.getDefinition((/** @type {?} */ ((/** @type {?} */ (this.constructor)))));
104
70
  }
71
+ /**
72
+ * @return {?}
73
+ */
74
+ get childPlaces() {
75
+ return this.placeDefinition.children.map((/**
76
+ * @param {?} d
77
+ * @return {?}
78
+ */
79
+ d => d.component));
80
+ }
105
81
  /**
106
82
  * @return {?}
107
83
  */
108
84
  canDeactivate() {
109
85
  return true;
110
86
  }
111
- // @Trace()
112
87
  /**
113
88
  * @return {?}
114
89
  */
@@ -117,138 +92,33 @@ export class PlaceComponent extends DisposableComponent {
117
92
  }
118
93
  tslib_1.__decorate([
119
94
  Memoize(),
120
- tslib_1.__metadata("design:type", PlaceComponent.Definition),
95
+ tslib_1.__metadata("design:type", PlaceDefinition),
121
96
  tslib_1.__metadata("design:paramtypes", [])
122
97
  ], PlaceComponent.prototype, "placeDefinition", null);
123
98
  if (false) {
124
- /** @type {?} */
125
- PlaceComponent.prototype._incomingRouteChange;
126
99
  /**
127
100
  * @type {?}
128
101
  * @private
129
102
  */
130
103
  PlaceComponent.prototype.resolvedParameters;
131
- /** @type {?} */
132
- PlaceComponent.prototype.activatedRoute;
133
104
  }
134
105
  (function (PlaceComponent) {
135
- class Definition {
136
- /**
137
- * @param {?} component
138
- * @param {?} options
139
- */
140
- constructor(component, options) {
141
- this.component = component;
142
- assert.notNil(options);
143
- this.path = options.path;
144
- this.order = options.order;
145
- this.data = options.data;
146
- this.authenticate = _.isNil(options.authenticate) || options.authenticate;
147
- this.children = (options.children || []).map((/**
148
- * @param {?} c
149
- * @return {?}
150
- */
151
- c => PlaceComponent.getDefinition(c).component));
152
- }
153
- /**
154
- * @return {?}
155
- */
156
- getRouteParameters() {
157
- return Klass.get(this.component).getMetadataList(ROUTE_PARAMETER_LIST_KEY);
158
- }
159
- /**
160
- * @param {?} constructable
161
- * @return {?}
162
- */
163
- isDescriptorForType(constructable) {
164
- return lang.constructorChain(constructable).includes(PlaceComponent);
165
- }
166
- /**
167
- * @param {?} placeComponent
168
- * @return {?}
169
- */
170
- isDescriptorFor(placeComponent) {
171
- return placeComponent.constructor === this.component;
172
- }
173
- /**
174
- * @template T
175
- * @param {?} key
176
- * @param {?=} defaultValue
177
- * @return {?}
178
- */
179
- getData(key, defaultValue) {
180
- return this.data ?
181
- _.isNil(this.data[key]) ? defaultValue : this.data[key] :
182
- defaultValue;
183
- }
184
- /**
185
- * @template T
186
- * @param {?} keys
187
- * @param {?=} defaultValue
188
- * @return {?}
189
- */
190
- searchData(keys, defaultValue) {
191
- if (this.data) {
192
- /** @type {?} */
193
- const found = keys.find((/**
194
- * @param {?} key
195
- * @return {?}
196
- */
197
- key => !_.isNil(this.data[key])));
198
- return found ? this.data[found] : defaultValue;
199
- }
200
- else {
201
- return defaultValue;
202
- }
203
- }
204
- }
205
- tslib_1.__decorate([
206
- Memoize(),
207
- tslib_1.__metadata("design:type", Function),
208
- tslib_1.__metadata("design:paramtypes", []),
209
- tslib_1.__metadata("design:returntype", Array)
210
- ], Definition.prototype, "getRouteParameters", null);
211
- PlaceComponent.Definition = Definition;
212
- if (false) {
213
- /** @type {?} */
214
- Definition.prototype.path;
215
- /** @type {?} */
216
- Definition.prototype.authenticate;
217
- /** @type {?} */
218
- Definition.prototype.order;
219
- /** @type {?} */
220
- Definition.prototype.data;
221
- /** @type {?} */
222
- Definition.prototype.children;
223
- /** @type {?} */
224
- Definition.prototype.component;
225
- }
226
106
  /**
227
- * @record
107
+ * @param {?} target
108
+ * @return {?}
228
109
  */
229
- function Options() { }
230
- PlaceComponent.Options = Options;
231
- if (false) {
232
- /** @type {?} */
233
- Options.prototype.path;
234
- /** @type {?} */
235
- Options.prototype.order;
236
- /** @type {?|undefined} */
237
- Options.prototype.data;
238
- /** @type {?|undefined} */
239
- Options.prototype.authenticate;
240
- /** @type {?|undefined} */
241
- Options.prototype.children;
110
+ function isPlaceComponentConstructor(target) {
111
+ return lang.constructorChain((/** @type {?} */ (target))).includes(PlaceComponent);
242
112
  }
113
+ PlaceComponent.isPlaceComponentConstructor = isPlaceComponentConstructor;
243
114
  /**
244
- * @record
115
+ * @param {?} klass
116
+ * @return {?}
245
117
  */
246
- function ChildOptions() { }
247
- PlaceComponent.ChildOptions = ChildOptions;
248
- if (false) {
249
- /** @type {?} */
250
- ChildOptions.prototype.parent;
118
+ function getRouteParameters(klass) {
119
+ return Klass.get(klass).getMetadataList(ROUTE_PARAMETER_LIST_KEY);
251
120
  }
121
+ PlaceComponent.getRouteParameters = getRouteParameters;
252
122
  /**
253
123
  * @param {?} klass
254
124
  * @return {?}
@@ -259,12 +129,12 @@ if (false) {
259
129
  PlaceComponent.getDefinition = getDefinition;
260
130
  /**
261
131
  * @param {?} klass
262
- * @param {?} options
132
+ * @param {?} definition
263
133
  * @return {?}
264
134
  */
265
- function injectDefinition(klass, options) {
266
- Reflect.defineMetadata(DEFINITION_META_DATA_KEY, new Definition(klass, options), klass);
135
+ function injectDefinition(klass, definition) {
136
+ Reflect.defineMetadata(DEFINITION_META_DATA_KEY, definition, klass);
267
137
  }
268
138
  PlaceComponent.injectDefinition = injectDefinition;
269
139
  })(PlaceComponent || (PlaceComponent = {}));
270
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UtY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3BsYWNlLWNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLE9BQU8sRUFDTCxNQUFNLEVBQ04sT0FBTyxFQUVQLEdBQUcsRUFFSCxJQUFJLEVBQ0osaUJBQWlCLEVBR2xCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNsRSxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBSXpFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7QUFHL0QsTUFBTSxPQUFPLHdCQUF3QixHQUFHLDBCQUEwQjs7O0FBRWxFLE1BQU0sT0FBTyx3QkFBd0IsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUM7QUFFeEUsTUFBTSxPQUFPLGNBQWUsU0FBUSxtQkFBbUI7Ozs7O0lBS3JELFlBQXFCLGNBQThCLEVBQUUsWUFBaUM7UUFDcEYsS0FBSyxFQUFFLENBQUM7UUFEVyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFIbkMseUJBQW9CLEdBQUcsSUFBSSxpQkFBaUIsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUM1RCx1QkFBa0IsR0FBRyxJQUFJLGlCQUFpQixFQUFxQixDQUFDO2NBSXpFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFFeEYsSUFB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QUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBQztnQkFDeEQsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQzthQUNoRDtpQkFBTTtnQkFDTCxPQUFPLFlBQVksQ0FBQzthQUNyQjtRQUNILENBQUM7S0FDRjtJQTFCQztRQURDLE9BQU8sRUFBRTs7Ozt3REFHVDtJQW5CVSx5QkFBVSxhQTJDdEIsQ0FBQTs7O1FBMUNDLDBCQUFzQjs7UUFDdEIsa0NBQStCOztRQUMvQiwyQkFBdUI7O1FBQ3ZCLDBCQUFzQzs7UUFDdEMsOEJBQW1EOztRQUV2QywrQkFBaUQ7Ozs7O0lBdUMvRCxzQkFNQzs7OztRQUxDLHVCQUFhOztRQUNiLHdCQUFjOztRQUNkLHVCQUE4Qjs7UUFDOUIsK0JBQXVCOztRQUN2QiwyQkFBMEM7Ozs7O0lBRzVDLDJCQUVDOzs7O1FBREMsOEJBQXFDOzs7Ozs7SUFHdkMsU0FBZ0IsYUFBYSxDQUFDLEtBQW9DO1FBQ2hFLE9BQU8sT0FBTyxDQUFDLFdBQVcsQ0FBQyx3QkFBd0IsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRmUsNEJBQWEsZ0JBRTVCLENBQUE7Ozs7OztJQUVELFNBQWdCLGdCQUFnQixDQUFDLEtBQW9DLEVBQUUsT0FBZ0I7UUFDckYsT0FBTyxDQUFDLGNBQWMsQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUZlLCtCQUFnQixtQkFFL0IsQ0FBQTtBQUdILENBQUMsRUFyRWdCLGNBQWMsS0FBZCxjQUFjLFFBcUU5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIGFzc2VydCxcbiAgQmluZGluZyxcbiAgQ29uc3RydWN0YWJsZSxcbiAgRHNsLFxuICBJTXV0YWJsZUhhc1ZhbHVlLFxuICBsYW5nLFxuICBNdXRhYmxlVmFsdWVNb2RlbCxcbiAgVHJhY2UsXG4gIFZhbHVlTW9kZWxcbn0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IHsgS2xhc3MgfSBmcm9tICdAY29vbG9uL3R5cGVzY3JpcHQtdXRpbGl0aWVzJztcbmltcG9ydCB7IE1lbW9pemUgfSBmcm9tICdAdHlwZXNjcmlwdC1wbHVzL2Zhc3QtbWVtb2l6ZS1kZWNvcmF0b3InO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0ICdyZWZsZWN0LW1ldGFkYXRhJztcbmltcG9ydCB7IERpc3Bvc2FibGVDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2Rpc3Bvc2FibGUtY29tcG9uZW50JztcbmltcG9ydCB7IFBsYWNlQ29tcG9uZW50TGlrZSB9IGZyb20gJy4vcGxhY2UtY29tcG9uZW50LWxpa2UnO1xuaW1wb3J0IHsgUGxhY2VVcGRhdGVzU2VydmljZSB9IGZyb20gJy4vcGxhY2UtdXBkYXRlcy1zZXJ2aWNlJztcbmltcG9ydCB7IFBhcmFtZXRlckRlZmluaXRpb24gfSBmcm9tICcuL3JvdXRlL3BhcmFtZXRlci1kZWZpbml0aW9uLmNsYXNzJztcbmltcG9ydCB7IFBhcmFtZXRlclNuYXBzaG90IH0gZnJvbSAnLi9yb3V0ZS9wYXJhbWV0ZXItc25hcHNob3QnO1xuXG4vLyBSQUtFOiBtYWtpbmcgdGhpcyBTeW1ib2woLi4uKSBicm9rZSB0aGluZ3MuXG5leHBvcnQgY29uc3QgREVGSU5JVElPTl9NRVRBX0RBVEFfS0VZID0gJ1BMQUNFX0RFRklOSVRJT05fT1BUSU9OUyc7XG4vLyB0aGlzIG9uZSBzZWVtcyBvay5cbmV4cG9ydCBjb25zdCBST1VURV9QQVJBTUVURVJfTElTVF9LRVkgPSBTeW1ib2woJ3BsYWNlOnJvdXRlOnBhcmFtZXRlcnMnKTtcblxuZXhwb3J0IGNsYXNzIFBsYWNlQ29tcG9uZW50IGV4dGVuZHMgRGlzcG9zYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIFBsYWNlQ29tcG9uZW50TGlrZSB7XG5cbiAgcHVibGljIHJlYWRvbmx5IF9pbmNvbWluZ1JvdXRlQ2hhbmdlID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSByZXNvbHZlZFBhcmFtZXRlcnMgPSBuZXcgTXV0YWJsZVZhbHVlTW9kZWw8UGFyYW1ldGVyU25hcHNob3Q+KCk7XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwbGFjZVNlcnZpY2U6IFBsYWNlVXBkYXRlc1NlcnZpY2UpIHtcbiAgICBzdXBlcigpO1xuICAgIGNvbnN0IHsgY2hhaW4sIHZhbHVlT2YsIGJlZm9yZSwgd2hlbiwgYWZ0ZXIsIG9ic2VydmUsIHN3aXRjaE9uIH0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG5cbiAgICB0aGlzLnBsYWNlRGVmaW5pdGlvbi5nZXRSb3V0ZVBhcmFtZXRlcnMoKS5mb3JFYWNoKHAgPT4gdGhpcy5pbnN0YWxsQmluZGluZyhwKSk7XG5cbiAgICBvYnNlcnZlLnZhbHVlc0Zyb20oYWN0aXZhdGVkUm91dGUucGFyYW1NYXApXG4gICAgICAubGFzdCgpXG4gICAgICAubWFwKHBhcmFtcyA9PiBQYXJhbWV0ZXJTbmFwc2hvdC5jcmVhdGUodGhpcy5wbGFjZURlZmluaXRpb24sIHBhcmFtcykpXG4gICAgICAuc3Vic2NyaWJlKHJlc29sdmVkUGFyYW1ldGVycyA9PiB7XG4gICAgICAgIHRoaXMuX2luY29taW5nUm91dGVDaGFuZ2UudmFsdWUgPSB0cnVlO1xuICAgICAgICB0aGlzLnJlc29sdmVkUGFyYW1ldGVycy52YWx1ZSA9IHJlc29sdmVkUGFyYW1ldGVycztcbiAgICAgICAgdGhpcy5faW5jb21pbmdSb3V0ZUNoYW5nZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgfSk7XG5cbiAgICB3aGVuLnZhbHVlT2YodGhpcy5yZXNvbHZlZFBhcmFtZXRlcnMpLmNoYW5nZXMoKHBhcmFtcywgcHJldmlvdXMpID0+IHtcbiAgICAgIHBsYWNlU2VydmljZS5ub3RpZnlSb3V0ZVBhcmFtZXRlcnNDaGFuZ2VkKHtcbiAgICAgICAgYWN0aXZhdGVkUm91dGU6IHRoaXMuYWN0aXZhdGVkUm91dGUsXG4gICAgICAgIG5leHQ6IHBhcmFtcyxcbiAgICAgICAgcHJldmlvdXM6IHByZXZpb3VzLFxuICAgICAgICB1cGRhdGVSb3V0ZTogIXRoaXMuaW5jb21pbmdSb3V0ZUNoYW5nZS52YWx1ZSAvLyB3ZSB1cGRhdGUgdGhlIHJvdXRlIGlmIGl0J3MgYSBjb21wb25lbnQgdHJpZ2dlcmVkIGNoYW5nZS5cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IGluY29taW5nUm91dGVDaGFuZ2UoKTogVmFsdWVNb2RlbDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2luY29taW5nUm91dGVDaGFuZ2UucmVhZG9ubHk7XG4gIH1cblxuICBwcml2YXRlIGluc3RhbGxCaW5kaW5nPFQsIFM+KHBhcmFtZXRlckRlZjogUGFyYW1ldGVyRGVmaW5pdGlvbjxULCBTPikge1xuICAgIGNvbnN0IG1vZGVsID0gdGhpc1twYXJhbWV0ZXJEZWYucHJvcGVydHlOYW1lXSBhcyBJTXV0YWJsZUhhc1ZhbHVlPFM+O1xuICAgIC8vIHRoaXMudHhvLm9ic2VydmUocGFyYW1ldGVyRGVmLnByb3BlcnR5TmFtZSwgbW9kZWwpO1xuICAgIHRoaXMucmVnaXN0ZXJEaXNwb3NhYmxlKG5ldyBCaW5kaW5nKHRoaXMucmVzb2x2ZWRQYXJhbWV0ZXJzLCBtb2RlbCwge1xuICAgICAgdG9SaWdodChwYXJhbWV0ZXJzOiBQYXJhbWV0ZXJTbmFwc2hvdCk6IFMge1xuICAgICAgICByZXR1cm4gcGFyYW1ldGVycy5nZXRSZXNvbHZlZFBhcmFtZXRlclZhbHVlKHBhcmFtZXRlckRlZik7XG4gICAgICB9LFxuICAgICAgdG9MZWZ0KHZhbHVlOiBTLCBjdXJyZW50UGFyYW1ldGVycz86IFBhcmFtZXRlclNuYXBzaG90KTogUGFyYW1ldGVyU25hcHNob3Qge1xuICAgICAgICByZXR1cm4gY3VycmVudFBhcmFtZXRlcnMucmVwbGFjZShwYXJhbWV0ZXJEZWYsIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuXG4gIEBNZW1vaXplKClcbiAgZ2V0IHBsYWNlRGVmaW5pdGlvbigpOiBQbGFjZUNvbXBvbmVudC5EZWZpbml0aW9uIHtcbiAgICByZXR1cm4gUGxhY2VDb21wb25lbnQuZ2V0RGVmaW5pdGlvbih0aGlzLmNvbnN0cnVjdG9yIGFzIGFueSBhcyBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50Pik7XG4gIH1cblxuICBjYW5EZWFjdGl2YXRlKCk6IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIG9uUGxhY2VSZWFkeSgpIHtcbiAgfVxuXG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgUGxhY2VDb21wb25lbnQge1xuXG4gIGV4cG9ydCBjbGFzcyBEZWZpbml0aW9uIHtcbiAgICByZWFkb25seSBwYXRoOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgYXV0aGVudGljYXRlOiBib29sZWFuO1xuICAgIHJlYWRvbmx5IG9yZGVyOiBudW1iZXI7XG4gICAgcmVhZG9ubHkgZGF0YTogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcbiAgICByZWFkb25seSBjaGlsZHJlbjogQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD5bXTtcblxuICAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGNvbXBvbmVudDogQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4sIG9wdGlvbnM6IFBsYWNlQ29tcG9uZW50Lk9wdGlvbnMpIHtcbiAgICAgIGFzc2VydC5ub3ROaWwob3B0aW9ucyk7XG4gICAgICB0aGlzLnBhdGggPSBvcHRpb25zLnBhdGg7XG4gICAgICB0aGlzLm9yZGVyID0gb3B0aW9ucy5vcmRlcjtcbiAgICAgIHRoaXMuZGF0YSA9IG9wdGlvbnMuZGF0YTtcbiAgICAgIHRoaXMuYXV0aGVudGljYXRlID0gXy5pc05pbChvcHRpb25zLmF1dGhlbnRpY2F0ZSkgfHwgb3B0aW9ucy5hdXRoZW50aWNhdGU7XG4gICAgICB0aGlzLmNoaWxkcmVuID0gKG9wdGlvbnMuY2hpbGRyZW4gfHxbXSkubWFwKGMgPT4gUGxhY2VDb21wb25lbnQuZ2V0RGVmaW5pdGlvbihjKS5jb21wb25lbnQpO1xuICAgIH1cblxuICAgIEBNZW1vaXplKClcbiAgICBnZXRSb3V0ZVBhcmFtZXRlcnMoKTogUGFyYW1ldGVyRGVmaW5pdGlvbjxhbnk+W10ge1xuICAgICAgcmV0dXJuIEtsYXNzLmdldCh0aGlzLmNvbXBvbmVudCkuZ2V0TWV0YWRhdGFMaXN0KFJPVVRFX1BBUkFNRVRFUl9MSVNUX0tFWSk7XG4gICAgfVxuXG4gICAgaXNEZXNjcmlwdG9yRm9yVHlwZShjb25zdHJ1Y3RhYmxlOiBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50Pikge1xuICAgICAgcmV0dXJuIGxhbmcuY29uc3RydWN0b3JDaGFpbihjb25zdHJ1Y3RhYmxlKS5pbmNsdWRlcyhQbGFjZUNvbXBvbmVudCk7XG4gICAgfVxuXG4gICAgaXNEZXNjcmlwdG9yRm9yKHBsYWNlQ29tcG9uZW50OiBQbGFjZUNvbXBvbmVudCkge1xuICAgICAgcmV0dXJuIHBsYWNlQ29tcG9uZW50LmNvbnN0cnVjdG9yID09PSB0aGlzLmNvbXBvbmVudDtcbiAgICB9XG5cbiAgICBnZXREYXRhPFQ+KGtleTogc3RyaW5nLCBkZWZhdWx0VmFsdWU/OiBUKTogVCB7XG4gICAgICByZXR1cm4gdGhpcy5kYXRhID9cbiAgICAgICAgXy5pc05pbCh0aGlzLmRhdGFba2V5XSkgPyBkZWZhdWx0VmFsdWUgOiB0aGlzLmRhdGFba2V5XSA6XG4gICAgICAgIGRlZmF1bHRWYWx1ZTtcbiAgICB9XG5cbiAgICBzZWFyY2hEYXRhPFQ+KGtleXM6IHN0cmluZ1tdLCBkZWZhdWx0VmFsdWU/OiBUKTogVCB7XG4gICAgICBpZiAodGhpcy5kYXRhKSB7XG4gICAgICAgIGNvbnN0IGZvdW5kID0ga2V5cy5maW5kKGtleSA9PiAhXy5pc05pbCh0aGlzLmRhdGFba2V5XSkpO1xuICAgICAgICByZXR1cm4gZm91bmQgPyB0aGlzLmRhdGFbZm91bmRdIDogZGVmYXVsdFZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgT3B0aW9ucyB7XG4gICAgcGF0aDogc3RyaW5nLFxuICAgIG9yZGVyOiBudW1iZXI7XG4gICAgZGF0YT86IHsgW2tleTogc3RyaW5nXTogYW55IH0sIC8vIGRlZmF1bHRzIHRvIHRydWVcbiAgICBhdXRoZW50aWNhdGU/OiBib29sZWFuLCAvLyBkZWZhdWx0cyB0byB0cnVlXG4gICAgY2hpbGRyZW4/OiBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50PltdXG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIENoaWxkT3B0aW9ucyBleHRlbmRzIE9wdGlvbnMge1xuICAgIHBhcmVudDogQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD5cbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXREZWZpbml0aW9uKGtsYXNzOiBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50Pik6IERlZmluaXRpb24ge1xuICAgIHJldHVybiBSZWZsZWN0LmdldE1ldGFkYXRhKERFRklOSVRJT05fTUVUQV9EQVRBX0tFWSwga2xhc3MpO1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGluamVjdERlZmluaXRpb24oa2xhc3M6IENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+LCBvcHRpb25zOiBPcHRpb25zKSB7XG4gICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShERUZJTklUSU9OX01FVEFfREFUQV9LRVksIG5ldyBEZWZpbml0aW9uKGtsYXNzLCBvcHRpb25zKSwga2xhc3MpO1xuICB9XG5cblxufVxuIl19
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UtY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3BsYWNlLWNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFtQyxJQUFJLEVBQWMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDckQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2xFLE9BQU8sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7QUFLckQsTUFBTSxPQUFPLHdCQUF3QixHQUFHLDBCQUEwQjs7O0FBRWxFLE1BQU0sT0FBTyx3QkFBd0IsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUM7QUFFeEUsTUFBTSxPQUFPLGNBQWUsU0FBUSxtQkFBbUI7SUFJckQ7UUFDRSxLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUM7Ozs7O0lBRU0sa0JBQWtCLENBQUMsa0JBQWlEO1FBQ3pFLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDO1FBQzdDLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxPQUFPOzs7O1FBQUMsWUFBWSxDQUFDLEVBQUU7WUFDL0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNwQyxDQUFDLEVBQUMsQ0FBQztJQUNMLENBQUM7Ozs7Ozs7SUFFTyxjQUFjLENBQU8sWUFBdUM7O2NBQzVELEtBQUssR0FBRyxtQkFBQSxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxFQUF1QjtRQUNwRSxzREFBc0Q7UUFDdEQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLEVBQUU7Ozs7O1lBQ2xFLE9BQU8sQ0FBQyxVQUE2QjtnQkFDbkMsT0FBTyxVQUFVLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzdDLENBQUM7Ozs7OztZQUNELE1BQU0sQ0FBQyxLQUFRLEVBQUUsaUJBQXFDO2dCQUNwRCxPQUFPLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDeEQsQ0FBQztTQUNGLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQzs7OztJQUdELElBQUksZUFBZTtRQUNqQixPQUFPLGNBQWMsQ0FBQyxhQUFhLENBQUMsbUJBQUEsbUJBQUEsSUFBSSxDQUFDLFdBQVcsRUFBTyxFQUFpQyxDQUFDLENBQUM7SUFDaEcsQ0FBQzs7OztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsR0FBRzs7OztRQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBQyxDQUFDO0lBQzdELENBQUM7Ozs7SUFFRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzs7O0lBRUQsWUFBWTtJQUNaLENBQUM7Q0FFRjtBQWZDO0lBREMsT0FBTyxFQUFFO3NDQUNhLGVBQWU7O3FEQUVyQzs7Ozs7O0lBOUJELDRDQUEwRDs7QUE2QzVELFdBQWlCLGNBQWM7Ozs7O0lBRTdCLFNBQWdCLDJCQUEyQixDQUFDLE1BQVc7UUFDckQsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsbUJBQUEsTUFBTSxFQUFzQixDQUFDLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFGZSwwQ0FBMkIsOEJBRTFDLENBQUE7Ozs7O0lBRUQsU0FBZ0Isa0JBQWtCLENBQUMsS0FBb0M7UUFDckUsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLGVBQWUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFGZSxpQ0FBa0IscUJBRWpDLENBQUE7Ozs7O0lBRUQsU0FBZ0IsYUFBYSxDQUFDLEtBQW9DO1FBQ2hFLE9BQU8sT0FBTyxDQUFDLFdBQVcsQ0FBQyx3QkFBd0IsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRmUsNEJBQWEsZ0JBRTVCLENBQUE7Ozs7OztJQUVELFNBQWdCLGdCQUFnQixDQUFDLEtBQW9DLEVBQUUsVUFBMkI7UUFDaEcsT0FBTyxDQUFDLGNBQWMsQ0FBQyx3QkFBd0IsRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUZlLCtCQUFnQixtQkFFL0IsQ0FBQTtBQUVILENBQUMsRUFsQmdCLGNBQWMsS0FBZCxjQUFjLFFBa0I5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFzc2VydCwgQmluZGluZywgQ29uc3RydWN0YWJsZSwgSU11dGFibGVIYXNWYWx1ZSwgbGFuZywgVmFsdWVNb2RlbCB9IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCB7IEtsYXNzIH0gZnJvbSAnQGNvb2xvbi90eXBlc2NyaXB0LXV0aWxpdGllcyc7XG5pbXBvcnQgeyBNZW1vaXplIH0gZnJvbSAnQHR5cGVzY3JpcHQtcGx1cy9mYXN0LW1lbW9pemUtZGVjb3JhdG9yJztcbmltcG9ydCAncmVmbGVjdC1tZXRhZGF0YSc7XG5pbXBvcnQgeyBEaXNwb3NhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9kaXNwb3NhYmxlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBQbGFjZURlZmluaXRpb24gfSBmcm9tICcuL3BsYWNlLWRlZmluaXRpb24nO1xuaW1wb3J0IHsgUGFyYW1ldGVyRGVmaW5pdGlvbiB9IGZyb20gJy4vcm91dGUvcGFyYW1ldGVyLWRlZmluaXRpb24uY2xhc3MnO1xuaW1wb3J0IHsgUGFyYW1ldGVyU25hcHNob3QgfSBmcm9tICcuL3JvdXRlL3BhcmFtZXRlci1zbmFwc2hvdCc7XG5cbi8vIFJBS0U6IG1ha2luZyB0aGlzIFN5bWJvbCguLi4pIGJyb2tlIHRoaW5ncy5cbmV4cG9ydCBjb25zdCBERUZJTklUSU9OX01FVEFfREFUQV9LRVkgPSAnUExBQ0VfREVGSU5JVElPTl9PUFRJT05TJztcbi8vIHRoaXMgb25lIHNlZW1zIG9rLlxuZXhwb3J0IGNvbnN0IFJPVVRFX1BBUkFNRVRFUl9MSVNUX0tFWSA9IFN5bWJvbCgncGxhY2U6cm91dGU6cGFyYW1ldGVycycpO1xuXG5leHBvcnQgY2xhc3MgUGxhY2VDb21wb25lbnQgZXh0ZW5kcyBEaXNwb3NhYmxlQ29tcG9uZW50IHtcblxuICBwcml2YXRlIHJlc29sdmVkUGFyYW1ldGVyczogVmFsdWVNb2RlbDxQYXJhbWV0ZXJTbmFwc2hvdD47XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0aWFsaXNlQmluZGluZ3MocmVzb2x2ZWRQYXJhbWV0ZXJzOiBWYWx1ZU1vZGVsPFBhcmFtZXRlclNuYXBzaG90Pikge1xuICAgIGFzc2VydC5pc05pbCh0aGlzLnJlc29sdmVkUGFyYW1ldGVycyk7XG4gICAgdGhpcy5yZXNvbHZlZFBhcmFtZXRlcnMgPSByZXNvbHZlZFBhcmFtZXRlcnM7XG4gICAgdGhpcy5wbGFjZURlZmluaXRpb24uZ2V0Um91dGVQYXJhbWV0ZXJzKCkuZm9yRWFjaChwYXJhbWV0ZXJEZWYgPT4ge1xuICAgICAgdGhpcy5pbnN0YWxsQmluZGluZyhwYXJhbWV0ZXJEZWYpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnN0YWxsQmluZGluZzxULCBTPihwYXJhbWV0ZXJEZWY6IFBhcmFtZXRlckRlZmluaXRpb248VCwgUz4pIHtcbiAgICBjb25zdCBtb2RlbCA9IHRoaXNbcGFyYW1ldGVyRGVmLnByb3BlcnR5TmFtZV0gYXMgSU11dGFibGVIYXNWYWx1ZTxTPjtcbiAgICAvLyB0aGlzLnR4by5vYnNlcnZlKHBhcmFtZXRlckRlZi5wcm9wZXJ0eU5hbWUsIG1vZGVsKTtcbiAgICB0aGlzLnJlZ2lzdGVyRGlzcG9zYWJsZShuZXcgQmluZGluZyh0aGlzLnJlc29sdmVkUGFyYW1ldGVycywgbW9kZWwsIHtcbiAgICAgIHRvUmlnaHQocGFyYW1ldGVyczogUGFyYW1ldGVyU25hcHNob3QpOiBTIHtcbiAgICAgICAgcmV0dXJuIHBhcmFtZXRlcnMuZ2V0VmFsdWVPZihwYXJhbWV0ZXJEZWYpO1xuICAgICAgfSxcbiAgICAgIHRvTGVmdCh2YWx1ZTogUywgY3VycmVudFBhcmFtZXRlcnM/OiBQYXJhbWV0ZXJTbmFwc2hvdCk6IFBhcmFtZXRlclNuYXBzaG90IHtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRQYXJhbWV0ZXJzLnJlcGxhY2UocGFyYW1ldGVyRGVmLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSkpO1xuICB9XG5cbiAgQE1lbW9pemUoKVxuICBnZXQgcGxhY2VEZWZpbml0aW9uKCk6IFBsYWNlRGVmaW5pdGlvbiB7XG4gICAgcmV0dXJuIFBsYWNlQ29tcG9uZW50LmdldERlZmluaXRpb24odGhpcy5jb25zdHJ1Y3RvciBhcyBhbnkgYXMgQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4pO1xuICB9XG5cbiAgZ2V0IGNoaWxkUGxhY2VzKCk6IENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+W10ge1xuICAgIHJldHVybiB0aGlzLnBsYWNlRGVmaW5pdGlvbi5jaGlsZHJlbi5tYXAoZCA9PiBkLmNvbXBvbmVudCk7XG4gIH1cblxuICBjYW5EZWFjdGl2YXRlKCk6IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIG9uUGxhY2VSZWFkeSgpIHtcbiAgfVxuXG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgUGxhY2VDb21wb25lbnQge1xuXG4gIGV4cG9ydCBmdW5jdGlvbiBpc1BsYWNlQ29tcG9uZW50Q29uc3RydWN0b3IodGFyZ2V0OiBhbnkpOiB0YXJnZXQgaXMgQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4ge1xuICAgIHJldHVybiBsYW5nLmNvbnN0cnVjdG9yQ2hhaW4odGFyZ2V0IGFzIENvbnN0cnVjdGFibGU8YW55PikuaW5jbHVkZXMoUGxhY2VDb21wb25lbnQpO1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGdldFJvdXRlUGFyYW1ldGVycyhrbGFzczogQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4pOiBQYXJhbWV0ZXJEZWZpbml0aW9uPGFueT5bXSB7XG4gICAgcmV0dXJuIEtsYXNzLmdldChrbGFzcykuZ2V0TWV0YWRhdGFMaXN0KFJPVVRFX1BBUkFNRVRFUl9MSVNUX0tFWSk7XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gZ2V0RGVmaW5pdGlvbihrbGFzczogQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4pOiBQbGFjZURlZmluaXRpb24ge1xuICAgIHJldHVybiBSZWZsZWN0LmdldE1ldGFkYXRhKERFRklOSVRJT05fTUVUQV9EQVRBX0tFWSwga2xhc3MpO1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGluamVjdERlZmluaXRpb24oa2xhc3M6IENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+LCBkZWZpbml0aW9uOiBQbGFjZURlZmluaXRpb24pIHtcbiAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKERFRklOSVRJT05fTUVUQV9EQVRBX0tFWSwgZGVmaW5pdGlvbiwga2xhc3MpO1xuICB9XG5cbn1cbiJdfQ==
@@ -0,0 +1,79 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ import _ from 'lodash';
6
+ export class PlaceDefinition {
7
+ /**
8
+ * @param {?} component
9
+ * @param {?} path
10
+ * @param {?} authenticate
11
+ * @param {?} order
12
+ * @param {?} data
13
+ * @param {?} routeParameters
14
+ * @param {?} children
15
+ */
16
+ constructor(component, path, authenticate, order, data, routeParameters, children) {
17
+ this.component = component;
18
+ this.path = path;
19
+ this.authenticate = authenticate;
20
+ this.order = order;
21
+ this.data = data;
22
+ this.routeParameters = routeParameters;
23
+ this.children = children;
24
+ }
25
+ /**
26
+ * @return {?}
27
+ */
28
+ getRouteParameters() {
29
+ return this.routeParameters;
30
+ }
31
+ /**
32
+ * @template T
33
+ * @param {?} key
34
+ * @param {?=} defaultValue
35
+ * @return {?}
36
+ */
37
+ getData(key, defaultValue) {
38
+ return this.data ?
39
+ _.isNil(this.data[key]) ? defaultValue : this.data[key] :
40
+ defaultValue;
41
+ }
42
+ /**
43
+ * @template T
44
+ * @param {?} keys
45
+ * @param {?=} defaultValue
46
+ * @return {?}
47
+ */
48
+ searchData(keys, defaultValue) {
49
+ if (this.data) {
50
+ /** @type {?} */
51
+ const found = keys.find((/**
52
+ * @param {?} key
53
+ * @return {?}
54
+ */
55
+ key => !_.isNil(this.data[key])));
56
+ return found ? this.data[found] : defaultValue;
57
+ }
58
+ else {
59
+ return defaultValue;
60
+ }
61
+ }
62
+ }
63
+ if (false) {
64
+ /** @type {?} */
65
+ PlaceDefinition.prototype.component;
66
+ /** @type {?} */
67
+ PlaceDefinition.prototype.path;
68
+ /** @type {?} */
69
+ PlaceDefinition.prototype.authenticate;
70
+ /** @type {?} */
71
+ PlaceDefinition.prototype.order;
72
+ /** @type {?} */
73
+ PlaceDefinition.prototype.data;
74
+ /** @type {?} */
75
+ PlaceDefinition.prototype.routeParameters;
76
+ /** @type {?} */
77
+ PlaceDefinition.prototype.children;
78
+ }
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UtZGVmaW5pdGlvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbImxpYi9wbGFjZS9wbGFjZS1kZWZpbml0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFJdkIsTUFBTSxPQUFPLGVBQWU7Ozs7Ozs7Ozs7SUFFMUIsWUFBcUIsU0FBdUMsRUFDdkMsSUFBWSxFQUNaLFlBQXFCLEVBQ3JCLEtBQWEsRUFDYixJQUE0QixFQUM1QixlQUEyQyxFQUMzQyxRQUEyQjtRQU4zQixjQUFTLEdBQVQsU0FBUyxDQUE4QjtRQUN2QyxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1osaUJBQVksR0FBWixZQUFZLENBQVM7UUFDckIsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUNiLFNBQUksR0FBSixJQUFJLENBQXdCO1FBQzVCLG9CQUFlLEdBQWYsZUFBZSxDQUE0QjtRQUMzQyxhQUFRLEdBQVIsUUFBUSxDQUFtQjtJQUNoRCxDQUFDOzs7O0lBRUQsa0JBQWtCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDOzs7Ozs7O0lBRUQsT0FBTyxDQUFJLEdBQVcsRUFBRSxZQUFnQjtRQUN0QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoQixDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDekQsWUFBWSxDQUFDO0lBQ2pCLENBQUM7Ozs7Ozs7SUFFRCxVQUFVLENBQUksSUFBYyxFQUFFLFlBQWdCO1FBQzVDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTs7a0JBQ1AsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJOzs7O1lBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFDO1lBQ3hELE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7U0FDaEQ7YUFBTTtZQUNMLE9BQU8sWUFBWSxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQztDQUNGOzs7SUEzQmEsb0NBQWdEOztJQUNoRCwrQkFBcUI7O0lBQ3JCLHVDQUE4Qjs7SUFDOUIsZ0NBQXNCOztJQUN0QiwrQkFBcUM7O0lBQ3JDLDBDQUFvRDs7SUFDcEQsbUNBQW9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0YWJsZSB9IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBQbGFjZUNvbXBvbmVudCB9IGZyb20gJy4vcGxhY2UtY29tcG9uZW50JztcbmltcG9ydCB7IFBhcmFtZXRlckRlZmluaXRpb24gfSBmcm9tICcuL3JvdXRlL3BhcmFtZXRlci1kZWZpbml0aW9uLmNsYXNzJztcblxuZXhwb3J0IGNsYXNzIFBsYWNlRGVmaW5pdGlvbiB7XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgY29tcG9uZW50OkNvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+LFxuICAgICAgICAgICAgICByZWFkb25seSBwYXRoOiBzdHJpbmcsXG4gICAgICAgICAgICAgIHJlYWRvbmx5IGF1dGhlbnRpY2F0ZTogYm9vbGVhbixcbiAgICAgICAgICAgICAgcmVhZG9ubHkgb3JkZXI6IG51bWJlcixcbiAgICAgICAgICAgICAgcmVhZG9ubHkgZGF0YTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcbiAgICAgICAgICAgICAgcmVhZG9ubHkgcm91dGVQYXJhbWV0ZXJzOiBQYXJhbWV0ZXJEZWZpbml0aW9uPGFueT5bXSxcbiAgICAgICAgICAgICAgcmVhZG9ubHkgY2hpbGRyZW46IFBsYWNlRGVmaW5pdGlvbltdKSB7XG4gIH1cblxuICBnZXRSb3V0ZVBhcmFtZXRlcnMoKTogUGFyYW1ldGVyRGVmaW5pdGlvbjxhbnk+W10ge1xuICAgIHJldHVybiB0aGlzLnJvdXRlUGFyYW1ldGVycztcbiAgfVxuXG4gIGdldERhdGE8VD4oa2V5OiBzdHJpbmcsIGRlZmF1bHRWYWx1ZT86IFQpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhID9cbiAgICAgIF8uaXNOaWwodGhpcy5kYXRhW2tleV0pID8gZGVmYXVsdFZhbHVlIDogdGhpcy5kYXRhW2tleV0gOlxuICAgICAgZGVmYXVsdFZhbHVlO1xuICB9XG5cbiAgc2VhcmNoRGF0YTxUPihrZXlzOiBzdHJpbmdbXSwgZGVmYXVsdFZhbHVlPzogVCk6IFQge1xuICAgIGlmICh0aGlzLmRhdGEpIHtcbiAgICAgIGNvbnN0IGZvdW5kID0ga2V5cy5maW5kKGtleSA9PiAhXy5pc05pbCh0aGlzLmRhdGFba2V5XSkpO1xuICAgICAgcmV0dXJuIGZvdW5kID8gdGhpcy5kYXRhW2ZvdW5kXSA6IGRlZmF1bHRWYWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,77 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ import { Injectable } from '@angular/core';
6
+ import { Router } from '@angular/router';
7
+ import _ from 'lodash';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/router";
10
+ export class PlaceHistory {
11
+ /**
12
+ * @param {?} router
13
+ */
14
+ constructor(router) {
15
+ this.router = router;
16
+ this._history = new Map();
17
+ }
18
+ /**
19
+ * @param {?} state
20
+ * @return {?}
21
+ */
22
+ add(state) {
23
+ /** @type {?} */
24
+ const history = this.getHistory(state.placeDefinition);
25
+ /** @type {?} */
26
+ const previousState = _.last(history);
27
+ if (!previousState || state.hasChanged(previousState)) {
28
+ history.unshift(state); // LIFO
29
+ this.setHistory(state.placeDefinition, history.slice(-3)); // limit our history to 3 visits
30
+ }
31
+ }
32
+ /**
33
+ * @param {?} placeDef
34
+ * @return {?}
35
+ */
36
+ getHistory(placeDef) {
37
+ /** @type {?} */
38
+ let history = this._history.get(placeDef);
39
+ if (!history) {
40
+ history = [];
41
+ this.setHistory(placeDef, history);
42
+ }
43
+ return history;
44
+ }
45
+ /**
46
+ * @private
47
+ * @param {?} placeDef
48
+ * @param {?} history
49
+ * @return {?}
50
+ */
51
+ setHistory(placeDef, history) {
52
+ this._history.set(placeDef, history);
53
+ }
54
+ }
55
+ PlaceHistory.decorators = [
56
+ { type: Injectable, args: [{
57
+ providedIn: 'root'
58
+ },] }
59
+ ];
60
+ /** @nocollapse */
61
+ PlaceHistory.ctorParameters = () => [
62
+ { type: Router }
63
+ ];
64
+ /** @nocollapse */ PlaceHistory.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function PlaceHistory_Factory() { return new PlaceHistory(i0.ɵɵinject(i1.Router)); }, token: PlaceHistory, providedIn: "root" });
65
+ if (false) {
66
+ /**
67
+ * @type {?}
68
+ * @private
69
+ */
70
+ PlaceHistory.prototype._history;
71
+ /**
72
+ * @type {?}
73
+ * @private
74
+ */
75
+ PlaceHistory.prototype.router;
76
+ }
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UtaGlzdG9yeS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbImxpYi9wbGFjZS9wbGFjZS1oaXN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7OztBQU92QixNQUFNLE9BQU8sWUFBWTs7OztJQUl2QixZQUE2QixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUZuQyxhQUFRLEdBQUcsSUFBSSxHQUFHLEVBQXdDLENBQUM7SUFHbkUsQ0FBQzs7Ozs7SUFFRCxHQUFHLENBQUMsS0FBd0I7O2NBQ3BCLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUM7O2NBQ2hELGFBQWEsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUNyQyxJQUFJLENBQUMsYUFBYSxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDckQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU87WUFDL0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0NBQWdDO1NBQzVGO0lBQ0gsQ0FBQzs7Ozs7SUFFRCxVQUFVLENBQUMsUUFBeUI7O1lBQzlCLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFDekMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUNwQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7Ozs7Ozs7SUFFTyxVQUFVLENBQUMsUUFBeUIsRUFBRSxPQUE0QjtRQUN4RSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkMsQ0FBQzs7O1lBOUJGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7OztZQVBRLE1BQU07Ozs7Ozs7O0lBVWIsZ0NBQW1FOzs7OztJQUV2RCw4QkFBK0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFBsYWNlRGVmaW5pdGlvbiB9IGZyb20gJy4vcGxhY2UtZGVmaW5pdGlvbic7XG5pbXBvcnQgeyBQYXJhbWV0ZXJTbmFwc2hvdCB9IGZyb20gJy4vcm91dGUvcGFyYW1ldGVyLXNuYXBzaG90JztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUGxhY2VIaXN0b3J5IHtcblxuICBwcml2YXRlIF9oaXN0b3J5ID0gbmV3IE1hcDxQbGFjZURlZmluaXRpb24sIFBhcmFtZXRlclNuYXBzaG90W10+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcikge1xuICB9XG5cbiAgYWRkKHN0YXRlOiBQYXJhbWV0ZXJTbmFwc2hvdCkge1xuICAgIGNvbnN0IGhpc3RvcnkgPSB0aGlzLmdldEhpc3Rvcnkoc3RhdGUucGxhY2VEZWZpbml0aW9uKTtcbiAgICBjb25zdCBwcmV2aW91c1N0YXRlID0gXy5sYXN0KGhpc3RvcnkpO1xuICAgIGlmICghcHJldmlvdXNTdGF0ZSB8fCBzdGF0ZS5oYXNDaGFuZ2VkKHByZXZpb3VzU3RhdGUpKSB7XG4gICAgICBoaXN0b3J5LnVuc2hpZnQoc3RhdGUpOyAvLyBMSUZPXG4gICAgICB0aGlzLnNldEhpc3Rvcnkoc3RhdGUucGxhY2VEZWZpbml0aW9uLCBoaXN0b3J5LnNsaWNlKC0zKSk7IC8vIGxpbWl0IG91ciBoaXN0b3J5IHRvIDMgdmlzaXRzXG4gICAgfVxuICB9XG5cbiAgZ2V0SGlzdG9yeShwbGFjZURlZjogUGxhY2VEZWZpbml0aW9uKTogUGFyYW1ldGVyU25hcHNob3RbXSB7XG4gICAgbGV0IGhpc3RvcnkgPSB0aGlzLl9oaXN0b3J5LmdldChwbGFjZURlZik7XG4gICAgaWYgKCFoaXN0b3J5KSB7XG4gICAgICBoaXN0b3J5ID0gW107XG4gICAgICB0aGlzLnNldEhpc3RvcnkocGxhY2VEZWYsIGhpc3RvcnkpO1xuICAgIH1cbiAgICByZXR1cm4gaGlzdG9yeTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0SGlzdG9yeShwbGFjZURlZjogUGxhY2VEZWZpbml0aW9uLCBoaXN0b3J5OiBQYXJhbWV0ZXJTbmFwc2hvdFtdKSB7XG4gICAgdGhpcy5faGlzdG9yeS5zZXQocGxhY2VEZWYsIGhpc3RvcnkpO1xuICB9XG5cbi8vIHByZXZpb3VzVmlzaXQoKTogVmlzaXQge1xuICAvLyAgIHJldHVybiBfLmxhc3QodGhpcy5faGlzdG9yeSk7XG4gIC8vIH1cbiAgLy9cbiAgLy8gd2l0aFByZXZpb3VzVmlzaXQ8Uj4oY2FsbGJhY2s6KHByZXZpb3VzVmlzaXQ6VmlzaXQpPT5SLCBkZWZhdWx0VmFsdWU6UiA9IG51bGwpOlJ7XG4gIC8vICAgY29uc3QgdmlzaXQgPSB0aGlzLnByZXZpb3VzVmlzaXQoKTtcbiAgLy8gICByZXR1cm4gdmlzaXQgPyBjYWxsYmFjayh2aXNpdCkgOiBkZWZhdWx0VmFsdWU7XG4gIC8vIH1cbiAgLy9cbiAgLy8gcHJldmlvdXNWaXNpdFRvKHBsYWNlOiBQbGFjZSk6IFZpc2l0IHtcbiAgLy8gICByZXR1cm4gbmV3IFZpc2l0SGlzdG9yeS5RdWVyeSh0aGlzLl9oaXN0b3J5KS50byhwbGFjZSkubGFzdCgpO1xuICAvLyB9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgVmlzaXRIaXN0b3J5IHtcblxuICAvLyBleHBvcnQgY2xhc3MgUXVlcnkge1xuICAvLyAgIHByaXZhdGUgX2hpc3Rvcnk6IFZpc2l0LlN0YXRlW107XG4gIC8vICAgcHJpdmF0ZSBfcGxhY2VzOiBQbGFjZVtdO1xuICAvLyAgIHByaXZhdGUgX3ByZWRpY2F0ZTogKHZpc2l0OiBhbnkpID0+IGJvb2xlYW47XG4gIC8vICAgcHJpdmF0ZSBfbGltaXQ6IG51bWJlcjtcbiAgLy9cbiAgLy8gICBjb25zdHJ1Y3RvcihoaXN0b3J5LCBsaW1pdCA9IGhpc3RvcnkubGVuZ3RoKSB7XG4gIC8vICAgICB0aGlzLl9oaXN0b3J5ID0gaGlzdG9yeTtcbiAgLy8gICAgIHRoaXMuX3BsYWNlcyA9IFtdO1xuICAvLyAgICAgdGhpcy5fcHJlZGljYXRlID0gKHZpc2l0ID0+IHRydWUpO1xuICAvLyAgICAgdGhpcy5fbGltaXQgPSBsaW1pdDtcbiAgLy8gICB9XG4gIC8vXG4gIC8vICAgdG8oLi4ucGxhY2VzOlBsYWNlW10pOnRoaXMge1xuICAvLyAgICAgdGhpcy5fcGxhY2VzID0gcGxhY2VzO1xuICAvLyAgICAgcmV0dXJuIHRoaXM7XG4gIC8vICAgfVxuICAvL1xuICAvLyAgIHdpdGgocGFyYW1ldGVyczogeyBbcGFyYW1ldGVyOiBzdHJpbmddOiBhbnkgfSk6IHRoaXMge1xuICAvLyAgICAgdGhpcy5tYXRjaGluZyhzdGF0ZSA9PiB7XG4gIC8vICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhwYXJhbWV0ZXJzKS5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gIC8vICAgICAgICAgY29uc3QgbWF0Y2hWYWx1ZSA9IHBhcmFtZXRlcnNba2V5XTtcbiAgLy8gICAgICAgICBjb25zdCB2aXNpdFZhbHVlID0gc3RhdGUuZ2V0KGtleSk7XG4gIC8vICAgICAgICAgY29uc3QgbWF0Y2hlZCA9IG1hdGNoVmFsdWUgPT09ICcqJyA/ICFfLmlzTmlsKHZpc2l0VmFsdWUpIDogdmlzaXRWYWx1ZSA9PSBtYXRjaFZhbHVlO1xuICAvLyAgICAgICAgIC8vIExvZ2dlci5nZXQodGhpcykuaW5mbyhgbWF0Y2hlZD0ke21hdGNoZWR9YCwgcGFyYW1ldGVycywgdmlzaXRWYWx1ZSk7XG4gIC8vICAgICAgICAgcmV0dXJuIGFjYyAmJiBtYXRjaGVkO1xuICAvLyAgICAgICB9LCB0cnVlKTtcbiAgLy8gICAgIH0pO1xuICAvLyAgICAgcmV0dXJuIHRoaXM7XG4gIC8vICAgfVxuICAvL1xuICAvLyAgIGxhc3QoKTogVmlzaXQuU3RhdGUge1xuICAvLyAgICAgcmV0dXJuIF8uZmluZExhc3QodGhpcy5faGlzdG9yeSwgdmlzaXQgPT4gdGhpcy5fbWF0Y2hlcyh2aXNpdCkpXG4gIC8vICAgfVxuICAvL1xuICAvLyAgIC8vIEB0cmFjZVxuICAvLyAgIGFsbFRoYXRNYXRjaCgpOiBWaXNpdC5TdGF0ZVtdIHtcbiAgLy8gICAgIHJldHVybiBfLmZpbHRlcih0aGlzLl9oaXN0b3J5LCB2aXNpdCA9PiB0aGlzLl9tYXRjaGVzKHZpc2l0KSkuc2xpY2UoLXRoaXMuX2xpbWl0KTtcbiAgLy8gICB9XG4gIC8vXG4gIC8vICAgLy8gQHRyYWNlXG4gIC8vICAgbW9zdFJlY2VudFZhbHVlT2Y8VD1hbnk+KHBhcmFtOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZTogVCA9IG51bGwpOiBUIHtcbiAgLy8gICAgIGNvbnN0IGxhc3RTdGF0ZVdpdGhQYXJhbSA9IF8uZmluZExhc3QodGhpcy5hbGxUaGF0TWF0Y2goKSwgc3RhdGUgPT4gIV8uaXNOaWwoc3RhdGUuZ2V0KHBhcmFtKSkpO1xuICAvLyAgICAgcmV0dXJuIF8uaXNOaWwobGFzdFN0YXRlV2l0aFBhcmFtKSA/IGRlZmF1bHRWYWx1ZSA6IGxhc3RTdGF0ZVdpdGhQYXJhbS5nZXQocGFyYW0pO1xuICAvLyAgIH1cbiAgLy9cbiAgLy8gICBsaW1pdChsaW1pdDogbnVtYmVyKTogdGhpcyB7XG4gIC8vICAgICB0aGlzLl9saW1pdCA9IGxpbWl0O1xuICAvLyAgICAgcmV0dXJuIHRoaXM7XG4gIC8vICAgfVxuICAvL1xuICAvLyAgIG1hdGNoaW5nKHByZWRpY2F0ZTogKHZpc2l0OiBWaXNpdC5TdGF0ZSkgPT4gYm9vbGVhbik6IHRoaXMge1xuICAvLyAgICAgdGhpcy5fcHJlZGljYXRlID0gcHJlZGljYXRlO1xuICAvLyAgICAgcmV0dXJuIHRoaXM7XG4gIC8vICAgfVxuICAvL1xuICAvLyAgIF9tYXRjaGVzKHZpc2l0OiBWaXNpdC5TdGF0ZSkge1xuICAvLyAgICAgcmV0dXJuIHRoaXMuX2lzUGxhY2VNYXRjaCh2aXNpdCkgJiYgdGhpcy5fcHJlZGljYXRlKHZpc2l0KTtcbiAgLy8gICB9XG4gIC8vXG4gIC8vICAgX2lzUGxhY2VNYXRjaCh2aXNpdDogVmlzaXQuU3RhdGUpIHtcbiAgLy8gICAgIHJldHVybiB0aGlzLl9wbGFjZXMubGVuZ3RoIDwgMSB8fCB0aGlzLl9wbGFjZXMuaW5jbHVkZXModmlzaXQucGxhY2UpXG4gIC8vICAgfVxuICAvL1xuICAvLyB9XG5cbn1cbiJdfQ==
@@ -0,0 +1,98 @@
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 { Injectable } from '@angular/core';
7
+ import { ActivatedRouteSnapshot, Router, UrlTree } from '@angular/router';
8
+ import { Trace } from '@coolon/pectin';
9
+ import _ from 'lodash';
10
+ import { ParameterSnapshot } from './route/parameter-snapshot';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "@angular/router";
13
+ export class PlaceRouter {
14
+ /**
15
+ * @param {?} router
16
+ */
17
+ constructor(router) {
18
+ this.router = router;
19
+ }
20
+ /**
21
+ * @param {?} activatedRoute
22
+ * @param {?} previous
23
+ * @param {?} next
24
+ * @return {?}
25
+ */
26
+ pushParameterChangesToRoute(activatedRoute, previous, next) {
27
+ /** @type {?} */
28
+ const relativePath = !!previous.hasRouteId() ? '..' : '.';
29
+ this.router.navigate([relativePath].concat(this.createRouteParameters(next), this.getChildPath(activatedRoute.snapshot)), {
30
+ relativeTo: activatedRoute
31
+ });
32
+ }
33
+ /**
34
+ * @param {?} activatedRoute
35
+ * @param {?} sanitised
36
+ * @return {?}
37
+ */
38
+ getRedirectUrlTree(activatedRoute, sanitised) {
39
+ /** @type {?} */
40
+ const urlSegments = activatedRoute.url;
41
+ /** @type {?} */
42
+ const weHaveARouteId = sanitised.hasRouteId() && sanitised.getFormattedRouteId();
43
+ /** @type {?} */
44
+ const commands = (weHaveARouteId) ?
45
+ [urlSegments[0].path, sanitised.getFormattedRouteId(), sanitised.getFormattedParameters()] :
46
+ [urlSegments[0].path, sanitised.getFormattedParameters()];
47
+ console.log("redirect path", commands);
48
+ return this.router.createUrlTree(commands);
49
+ }
50
+ /**
51
+ * @protected
52
+ * @param {?} activatedRoute
53
+ * @return {?}
54
+ */
55
+ getChildPath(activatedRoute) {
56
+ return _.flatten(activatedRoute.children.map((/**
57
+ * @param {?} child
58
+ * @return {?}
59
+ */
60
+ child => child.url)));
61
+ }
62
+ /**
63
+ * @protected
64
+ * @param {?} parameters
65
+ * @return {?}
66
+ */
67
+ createRouteParameters(parameters) {
68
+ /** @type {?} */
69
+ const routeId = parameters.getFormattedRouteId();
70
+ return routeId ?
71
+ [routeId, parameters.getFormattedParameters()] :
72
+ [parameters.getFormattedParameters()];
73
+ }
74
+ }
75
+ PlaceRouter.decorators = [
76
+ { type: Injectable, args: [{
77
+ providedIn: 'root'
78
+ },] }
79
+ ];
80
+ /** @nocollapse */
81
+ PlaceRouter.ctorParameters = () => [
82
+ { type: Router }
83
+ ];
84
+ /** @nocollapse */ PlaceRouter.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function PlaceRouter_Factory() { return new PlaceRouter(i0.ɵɵinject(i1.Router)); }, token: PlaceRouter, providedIn: "root" });
85
+ tslib_1.__decorate([
86
+ Trace(),
87
+ tslib_1.__metadata("design:type", Function),
88
+ tslib_1.__metadata("design:paramtypes", [ActivatedRouteSnapshot, ParameterSnapshot]),
89
+ tslib_1.__metadata("design:returntype", UrlTree)
90
+ ], PlaceRouter.prototype, "getRedirectUrlTree", null);
91
+ if (false) {
92
+ /**
93
+ * @type {?}
94
+ * @private
95
+ */
96
+ PlaceRouter.prototype.router;
97
+ }
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Utcm91dGVyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3BsYWNlLXJvdXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFrQixzQkFBc0IsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUYsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZDLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7O0FBSy9ELE1BQU0sT0FBTyxXQUFXOzs7O0lBQ3RCLFlBQTZCLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQzNDLENBQUM7Ozs7Ozs7SUFFRCwyQkFBMkIsQ0FBQyxjQUE4QixFQUFFLFFBQTJCLEVBQUUsSUFBdUI7O2NBQ3hHLFlBQVksR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUc7UUFDekQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUU7WUFDeEgsVUFBVSxFQUFFLGNBQWM7U0FDM0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7Ozs7O0lBR0Qsa0JBQWtCLENBQUMsY0FBc0MsRUFBRSxTQUE0Qjs7Y0FDL0UsV0FBVyxHQUFHLGNBQWMsQ0FBQyxHQUFHOztjQUNoQyxjQUFjLEdBQUcsU0FBUyxDQUFDLFVBQVUsRUFBRSxJQUFJLFNBQVMsQ0FBQyxtQkFBbUIsRUFBRTs7Y0FDMUUsUUFBUSxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztZQUNqQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLG1CQUFtQixFQUFFLEVBQUUsU0FBUyxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzVGLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUMzRCxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN2QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzdDLENBQUM7Ozs7OztJQUVTLFlBQVksQ0FBQyxjQUFzQztRQUMzRCxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxHQUFHOzs7O1FBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQztJQUNwRSxDQUFDOzs7Ozs7SUFFUyxxQkFBcUIsQ0FBQyxVQUE2Qjs7Y0FDckQsT0FBTyxHQUFHLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRTtRQUNoRCxPQUFPLE9BQU8sQ0FBQyxDQUFDO1lBQ2QsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2hELENBQUMsVUFBVSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQztJQUMxQyxDQUFDOzs7WUFsQ0YsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7O1lBUGdELE1BQU07OztBQW9CckQ7SUFEQyxLQUFLLEVBQUU7OzZDQUMyQixzQkFBc0IsRUFBYSxpQkFBaUI7NENBQUcsT0FBTztxREFRaEc7Ozs7OztJQW5CVyw2QkFBK0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgUm91dGVyLCBVcmxUcmVlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFRyYWNlIH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFBhcmFtZXRlclNuYXBzaG90IH0gZnJvbSAnLi9yb3V0ZS9wYXJhbWV0ZXItc25hcHNob3QnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBQbGFjZVJvdXRlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIpIHtcbiAgfVxuXG4gIHB1c2hQYXJhbWV0ZXJDaGFuZ2VzVG9Sb3V0ZShhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByZXZpb3VzOiBQYXJhbWV0ZXJTbmFwc2hvdCwgbmV4dDogUGFyYW1ldGVyU25hcHNob3QpIHtcbiAgICBjb25zdCByZWxhdGl2ZVBhdGggPSAhIXByZXZpb3VzLmhhc1JvdXRlSWQoKSA/ICcuLicgOiAnLic7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3JlbGF0aXZlUGF0aF0uY29uY2F0KHRoaXMuY3JlYXRlUm91dGVQYXJhbWV0ZXJzKG5leHQpLCB0aGlzLmdldENoaWxkUGF0aChhY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdCkpLCB7XG4gICAgICByZWxhdGl2ZVRvOiBhY3RpdmF0ZWRSb3V0ZVxuICAgIH0pO1xuICB9XG5cbiAgQFRyYWNlKClcbiAgZ2V0UmVkaXJlY3RVcmxUcmVlKGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzYW5pdGlzZWQ6IFBhcmFtZXRlclNuYXBzaG90KTogVXJsVHJlZSB7XG4gICAgY29uc3QgdXJsU2VnbWVudHMgPSBhY3RpdmF0ZWRSb3V0ZS51cmw7XG4gICAgY29uc3Qgd2VIYXZlQVJvdXRlSWQgPSBzYW5pdGlzZWQuaGFzUm91dGVJZCgpICYmIHNhbml0aXNlZC5nZXRGb3JtYXR0ZWRSb3V0ZUlkKCk7XG4gICAgY29uc3QgY29tbWFuZHMgPSAod2VIYXZlQVJvdXRlSWQpID9cbiAgICAgIFt1cmxTZWdtZW50c1swXS5wYXRoLCBzYW5pdGlzZWQuZ2V0Rm9ybWF0dGVkUm91dGVJZCgpLCBzYW5pdGlzZWQuZ2V0Rm9ybWF0dGVkUGFyYW1ldGVycygpXSA6XG4gICAgICBbdXJsU2VnbWVudHNbMF0ucGF0aCwgc2FuaXRpc2VkLmdldEZvcm1hdHRlZFBhcmFtZXRlcnMoKV07XG4gICAgY29uc29sZS5sb2coXCJyZWRpcmVjdCBwYXRoXCIsIGNvbW1hbmRzKTtcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShjb21tYW5kcyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0Q2hpbGRQYXRoKGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogYW55W10ge1xuICAgIHJldHVybiBfLmZsYXR0ZW4oYWN0aXZhdGVkUm91dGUuY2hpbGRyZW4ubWFwKGNoaWxkID0+IGNoaWxkLnVybCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZVJvdXRlUGFyYW1ldGVycyhwYXJhbWV0ZXJzOiBQYXJhbWV0ZXJTbmFwc2hvdCk6IGFueVtdIHtcbiAgICBjb25zdCByb3V0ZUlkID0gcGFyYW1ldGVycy5nZXRGb3JtYXR0ZWRSb3V0ZUlkKCk7XG4gICAgcmV0dXJuIHJvdXRlSWQgP1xuICAgICAgW3JvdXRlSWQsIHBhcmFtZXRlcnMuZ2V0Rm9ybWF0dGVkUGFyYW1ldGVycygpXSA6XG4gICAgICBbcGFyYW1ldGVycy5nZXRGb3JtYXR0ZWRQYXJhbWV0ZXJzKCldO1xuICB9XG5cbn1cbiJdfQ==
@@ -3,7 +3,9 @@
3
3
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
4
  */
5
5
  import { lang } from '@coolon/pectin';
6
+ import * as _ from 'lodash';
6
7
  import { PlaceComponent } from './place-component';
8
+ import { PlaceDefinition } from './place-definition';
7
9
  /**
8
10
  * @param {?} options
9
11
  * @return {?}
@@ -14,10 +16,35 @@ export function Place(options) {
14
16
  * @return {?}
15
17
  */
16
18
  (target) => {
17
- if (!lang.constructorChain((/** @type {?} */ (target))).includes(PlaceComponent)) {
19
+ if (PlaceComponent.isPlaceComponentConstructor(target)) {
20
+ PlaceComponent.injectDefinition(target, new PlaceDefinition(target, options.path, _.isNil(options.authenticate) ? false : options.authenticate, options.order, options.data, PlaceComponent.getRouteParameters(target), (options.children || []).map((/**
21
+ * @param {?} c
22
+ * @return {?}
23
+ */
24
+ c => PlaceComponent.getDefinition(c)))));
25
+ }
26
+ else {
18
27
  lang.illegalState(`${target} must extend PlaceComponent to use the @Place decorator`);
19
28
  }
20
- PlaceComponent.injectDefinition((/** @type {?} */ (target)), options);
21
29
  });
22
30
  }
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UuZGVjb3JhdG9yLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3BsYWNlLmRlY29yYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFpQixJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7O0FBRW5ELE1BQU0sVUFBVSxLQUFLLENBQUMsT0FBK0I7SUFDbkQ7Ozs7SUFBTyxDQUFDLE1BQWdCLEVBQUUsRUFBRTtRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLG1CQUFBLE1BQU0sRUFBc0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRTtZQUMvRSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsTUFBTSx5REFBeUQsQ0FBQyxDQUFBO1NBQ3hGO1FBQ0QsY0FBYyxDQUFDLGdCQUFnQixDQUFDLG1CQUFBLE1BQU0sRUFBc0IsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN6RSxDQUFDLEVBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0YWJsZSwgbGFuZyB9IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCB7IFBsYWNlQ29tcG9uZW50IH0gZnJvbSAnLi9wbGFjZS1jb21wb25lbnQnO1xuXG5leHBvcnQgZnVuY3Rpb24gUGxhY2Uob3B0aW9uczogUGxhY2VDb21wb25lbnQuT3B0aW9ucykge1xuICByZXR1cm4gKHRhcmdldDogRnVuY3Rpb24pID0+IHtcbiAgICBpZiAoIWxhbmcuY29uc3RydWN0b3JDaGFpbih0YXJnZXQgYXMgQ29uc3RydWN0YWJsZTxhbnk+KS5pbmNsdWRlcyhQbGFjZUNvbXBvbmVudCkpIHtcbiAgICAgICAgbGFuZy5pbGxlZ2FsU3RhdGUoYCR7dGFyZ2V0fSBtdXN0IGV4dGVuZCBQbGFjZUNvbXBvbmVudCB0byB1c2UgdGhlIEBQbGFjZSBkZWNvcmF0b3JgKVxuICAgIH1cbiAgICBQbGFjZUNvbXBvbmVudC5pbmplY3REZWZpbml0aW9uKHRhcmdldCBhcyBDb25zdHJ1Y3RhYmxlPGFueT4sIG9wdGlvbnMpO1xuICB9O1xufVxuIl19
31
+ (function (Place) {
32
+ /**
33
+ * @record
34
+ */
35
+ function Options() { }
36
+ Place.Options = Options;
37
+ if (false) {
38
+ /** @type {?} */
39
+ Options.prototype.path;
40
+ /** @type {?} */
41
+ Options.prototype.order;
42
+ /** @type {?|undefined} */
43
+ Options.prototype.data;
44
+ /** @type {?|undefined} */
45
+ Options.prototype.authenticate;
46
+ /** @type {?|undefined} */
47
+ Options.prototype.children;
48
+ }
49
+ })(Place || (Place = {}));
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UuZGVjb3JhdG9yLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3BsYWNlLmRlY29yYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFpQixJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7OztBQUVyRCxNQUFNLFVBQVUsS0FBSyxDQUFDLE9BQXNCO0lBQzFDOzs7O0lBQU8sQ0FBQyxNQUFnQixFQUFFLEVBQUU7UUFDMUIsSUFBSSxjQUFjLENBQUMsMkJBQTJCLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDdEQsY0FBYyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxJQUFJLGVBQWUsQ0FDekQsTUFBTSxFQUNOLE9BQU8sQ0FBQyxJQUFJLEVBQ1osQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksRUFDNUQsT0FBTyxDQUFDLEtBQUssRUFDYixPQUFPLENBQUMsSUFBSSxFQUNaLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsRUFDekMsQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUc7Ozs7WUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FDbkUsQ0FBQyxDQUFDO1NBRUo7YUFBTTtZQUNMLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxNQUFNLHlEQUF5RCxDQUFDLENBQUM7U0FDdkY7SUFDSCxDQUFDLEVBQUM7QUFDSixDQUFDO0FBRUQsV0FBaUIsS0FBSzs7OztJQUVwQixzQkFNQzs7OztRQUxDLHVCQUFhOztRQUNiLHdCQUFjOztRQUNkLHVCQUE4Qjs7UUFDOUIsK0JBQXVCOztRQUN2QiwyQkFBMEM7O0FBRzlDLENBQUMsRUFWZ0IsS0FBSyxLQUFMLEtBQUssUUFVckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3RhYmxlLCBsYW5nIH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgUGxhY2VDb21wb25lbnQgfSBmcm9tICcuL3BsYWNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBQbGFjZURlZmluaXRpb24gfSBmcm9tICcuL3BsYWNlLWRlZmluaXRpb24nO1xuXG5leHBvcnQgZnVuY3Rpb24gUGxhY2Uob3B0aW9uczogUGxhY2UuT3B0aW9ucykge1xuICByZXR1cm4gKHRhcmdldDogRnVuY3Rpb24pID0+IHtcbiAgICBpZiAoUGxhY2VDb21wb25lbnQuaXNQbGFjZUNvbXBvbmVudENvbnN0cnVjdG9yKHRhcmdldCkpIHtcbiAgICAgIFBsYWNlQ29tcG9uZW50LmluamVjdERlZmluaXRpb24odGFyZ2V0LCBuZXcgUGxhY2VEZWZpbml0aW9uKFxuICAgICAgICB0YXJnZXQsXG4gICAgICAgIG9wdGlvbnMucGF0aCxcbiAgICAgICAgXy5pc05pbChvcHRpb25zLmF1dGhlbnRpY2F0ZSkgPyBmYWxzZSA6IG9wdGlvbnMuYXV0aGVudGljYXRlLFxuICAgICAgICBvcHRpb25zLm9yZGVyLFxuICAgICAgICBvcHRpb25zLmRhdGEsXG4gICAgICAgIFBsYWNlQ29tcG9uZW50LmdldFJvdXRlUGFyYW1ldGVycyh0YXJnZXQpLFxuICAgICAgICAob3B0aW9ucy5jaGlsZHJlbiB8fCBbXSkubWFwKGMgPT4gUGxhY2VDb21wb25lbnQuZ2V0RGVmaW5pdGlvbihjKSlcbiAgICAgICkpO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIGxhbmcuaWxsZWdhbFN0YXRlKGAke3RhcmdldH0gbXVzdCBleHRlbmQgUGxhY2VDb21wb25lbnQgdG8gdXNlIHRoZSBAUGxhY2UgZGVjb3JhdG9yYCk7XG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgbmFtZXNwYWNlIFBsYWNlIHtcblxuICBleHBvcnQgaW50ZXJmYWNlIE9wdGlvbnMge1xuICAgIHBhdGg6IHN0cmluZyxcbiAgICBvcmRlcjogbnVtYmVyO1xuICAgIGRhdGE/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9LCAvLyBkZWZhdWx0cyB0byB0cnVlXG4gICAgYXV0aGVudGljYXRlPzogYm9vbGVhbiwgLy8gZGVmYXVsdHMgdG8gdHJ1ZVxuICAgIGNoaWxkcmVuPzogQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD5bXVxuICB9XG5cbn1cbiJdfQ==