@coolon/angular-ui-powerups 0.0.90 → 0.0.91

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 (42) hide show
  1. package/bundles/coolon-angular-ui-powerups.umd.js +468 -396
  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 +19 -18
  6. package/coolon-angular-ui-powerups.metadata.json +1 -1
  7. package/esm2015/coolon-angular-ui-powerups.js +18 -17
  8. package/esm2015/lib/directives/command.directive.js +28 -5
  9. package/esm2015/lib/interaction/components/activity-container/activity-container.component.js +2 -7
  10. package/esm2015/lib/interaction/components/inplace-interaction-context/inplace-interaction-context.component.js +3 -8
  11. package/esm2015/lib/interaction/interaction-context.js +70 -14
  12. package/esm2015/lib/interaction/services/dialog-interaction.service.js +11 -19
  13. package/esm2015/lib/place/navigation-session.js +182 -39
  14. package/esm2015/lib/place/place-component.js +4 -19
  15. package/esm2015/lib/place/place-router.js +65 -31
  16. package/esm2015/lib/place/route/guards/enter-place-guard.service.js +2 -2
  17. package/esm2015/lib/place/route/guards/leave-place.guard.js +7 -177
  18. package/esm5/coolon-angular-ui-powerups.js +18 -17
  19. package/esm5/lib/directives/command.directive.js +32 -5
  20. package/esm5/lib/interaction/components/activity-container/activity-container.component.js +2 -11
  21. package/esm5/lib/interaction/components/inplace-interaction-context/inplace-interaction-context.component.js +3 -12
  22. package/esm5/lib/interaction/interaction-context.js +89 -27
  23. package/esm5/lib/interaction/services/dialog-interaction.service.js +11 -22
  24. package/esm5/lib/place/navigation-session.js +225 -54
  25. package/esm5/lib/place/place-component.js +4 -35
  26. package/esm5/lib/place/place-router.js +75 -37
  27. package/esm5/lib/place/route/guards/enter-place-guard.service.js +2 -2
  28. package/esm5/lib/place/route/guards/leave-place.guard.js +7 -176
  29. package/fesm2015/coolon-angular-ui-powerups.js +353 -299
  30. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  31. package/fesm5/coolon-angular-ui-powerups.js +430 -359
  32. package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
  33. package/lib/directives/command.directive.d.ts +2 -0
  34. package/lib/interaction/components/activity-container/activity-container.component.d.ts +1 -2
  35. package/lib/interaction/components/inplace-interaction-context/inplace-interaction-context.component.d.ts +3 -4
  36. package/lib/interaction/interaction-context.d.ts +6 -3
  37. package/lib/interaction/services/dialog-interaction.service.d.ts +3 -5
  38. package/lib/place/navigation-session.d.ts +26 -9
  39. package/lib/place/place-component.d.ts +4 -9
  40. package/lib/place/place-router.d.ts +6 -3
  41. package/lib/place/route/guards/leave-place.guard.d.ts +2 -10
  42. package/package.json +1 -1
@@ -2,6 +2,9 @@
2
2
  * @fileoverview added by tsickle
3
3
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
4
  */
5
+ import * as tslib_1 from "tslib";
6
+ import { Injectable } from '@angular/core';
7
+ import { InteractionContext } from '../interaction/interaction-context';
5
8
  /**
6
9
  * @abstract
7
10
  */
@@ -9,11 +12,15 @@ export class NavigationSession {
9
12
  /**
10
13
  * @protected
11
14
  * @param {?} firstNavigation
15
+ * @param {?} appModalInteractionContext
12
16
  */
13
- constructor(firstNavigation) {
17
+ constructor(firstNavigation, appModalInteractionContext) {
14
18
  this.firstNavigation = firstNavigation;
19
+ this.appModalInteractionContext = appModalInteractionContext;
15
20
  this._alreadyAccepted = [];
16
21
  this._visits = new Map();
22
+ this.componentDeactivationHandlers = new Map();
23
+ this.dialogOpenOnStart = this.appModalInteractionContext.isActive();
17
24
  }
18
25
  /**
19
26
  * @param {?} visit
@@ -29,34 +36,30 @@ export class NavigationSession {
29
36
  getVisitFor(placeDef) {
30
37
  return this._visits.get(placeDef);
31
38
  }
32
- /**
33
- * @param {?} params
34
- * @return {?}
35
- */
36
- mergePrivatePlaceParameters(params) {
37
- return null;
38
- }
39
- // @Trace()
40
- /**
41
- * @param {?} placeComponent
42
- * @return {?}
43
- */
44
- alreadyAccepted(placeComponent) {
45
- return this._alreadyAccepted.includes(placeComponent);
46
- }
47
- // @Trace()
48
39
  /**
49
40
  * @param {?} component
41
+ * @param {?} nextState
50
42
  * @return {?}
51
43
  */
52
- rememberAcceptanceOf(component) {
53
- this._alreadyAccepted.push(component);
44
+ canDeactivate(component, nextState) {
45
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
46
+ // lookup the handler and create it if we've not seen it yet
47
+ /** @type {?} */
48
+ let handler = this.componentDeactivationHandlers.get(component);
49
+ if (!handler) {
50
+ /** @type {?} */
51
+ const isPrimaryHandler = this.componentDeactivationHandlers.size === 0;
52
+ handler = new NavigationSession.ComponentDeactivationHandler(component, this.appModalInteractionContext, isPrimaryHandler);
53
+ this.componentDeactivationHandlers.set(component, handler);
54
+ }
55
+ return handler.canDeactivate(nextState);
56
+ });
54
57
  }
55
58
  /**
56
59
  * @param {?} url
57
60
  * @return {?}
58
61
  */
59
- setPopstateReturn(url) {
62
+ setPopstateReturnUrl(url) {
60
63
  this._popStateReturnUrl = url;
61
64
  }
62
65
  /**
@@ -97,15 +100,28 @@ if (false) {
97
100
  /** @type {?} */
98
101
  NavigationSession.prototype.isExternal;
99
102
  /** @type {?} */
103
+ NavigationSession.prototype.dialogOpenOnStart;
104
+ /**
105
+ * @type {?}
106
+ * @private
107
+ */
108
+ NavigationSession.prototype.componentDeactivationHandlers;
109
+ /** @type {?} */
100
110
  NavigationSession.prototype.firstNavigation;
111
+ /**
112
+ * @type {?}
113
+ * @private
114
+ */
115
+ NavigationSession.prototype.appModalInteractionContext;
101
116
  }
102
117
  (function (NavigationSession) {
103
118
  class External extends NavigationSession {
104
119
  /**
105
120
  * @param {?} isFirstTime
121
+ * @param {?} appModelInteractionContext
106
122
  */
107
- constructor(isFirstTime) {
108
- super(isFirstTime);
123
+ constructor(isFirstTime, appModelInteractionContext) {
124
+ super(isFirstTime, appModelInteractionContext);
109
125
  this.isExternal = true;
110
126
  }
111
127
  }
@@ -116,9 +132,10 @@ if (false) {
116
132
  class Internal extends NavigationSession {
117
133
  /**
118
134
  * @param {?} visit
135
+ * @param {?} appModelInteractionContext
119
136
  */
120
- constructor(visit) {
121
- super(false);
137
+ constructor(visit, appModelInteractionContext) {
138
+ super(false, appModelInteractionContext);
122
139
  this.isExternal = false;
123
140
  this.storeVisit(visit);
124
141
  }
@@ -127,21 +144,147 @@ if (false) {
127
144
  /** @type {?} */
128
145
  Internal.prototype.isExternal;
129
146
  }
130
- /**
131
- * @param {?} visit
132
- * @return {?}
133
- */
134
- function createInternal(visit) {
135
- return new Internal(visit);
147
+ class Factory {
148
+ /**
149
+ * @param {?} appModelInteractionContext
150
+ */
151
+ constructor(appModelInteractionContext) {
152
+ this.appModelInteractionContext = appModelInteractionContext;
153
+ }
154
+ /**
155
+ * @param {?} visit
156
+ * @return {?}
157
+ */
158
+ createInternal(visit) {
159
+ return new Internal(visit, this.appModelInteractionContext);
160
+ }
161
+ /**
162
+ * @param {?} firstTimeRoute
163
+ * @return {?}
164
+ */
165
+ createExternal(firstTimeRoute) {
166
+ return new External(firstTimeRoute, this.appModelInteractionContext);
167
+ }
136
168
  }
137
- NavigationSession.createInternal = createInternal;
138
- /**
139
- * @param {?} firstTimeRoute
140
- * @return {?}
141
- */
142
- function createExternal(firstTimeRoute) {
143
- return new External(firstTimeRoute);
169
+ Factory.decorators = [
170
+ { type: Injectable, args: [{
171
+ providedIn: 'root'
172
+ },] },
173
+ ];
174
+ /** @nocollapse */
175
+ Factory.ctorParameters = () => [
176
+ { type: InteractionContext }
177
+ ];
178
+ NavigationSession.Factory = Factory;
179
+ if (false) {
180
+ /** @type {?} */
181
+ Factory.prototype.appModelInteractionContext;
182
+ }
183
+ class ComponentDeactivationHandler {
184
+ /**
185
+ * @param {?} component
186
+ * @param {?} appModelInteractionContext
187
+ * @param {?} primary
188
+ */
189
+ constructor(component, appModelInteractionContext, primary) {
190
+ this.component = component;
191
+ this.appModelInteractionContext = appModelInteractionContext;
192
+ this.primary = primary;
193
+ this.alreadyAccepted = false;
194
+ // super();
195
+ }
196
+ /**
197
+ * @param {?} nextState
198
+ * @return {?}
199
+ */
200
+ canDeactivate(nextState) {
201
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
202
+ console.log(`${this.constructor.name}.canDeactivate`, { component: this.component });
203
+ if (this.alreadyAccepted) {
204
+ // We'll get called multiple times if there's any parameter sanitisation so
205
+ // we always return true if we accepted on a previous cycle of the current
206
+ // navigation session.
207
+ return true;
208
+ }
209
+ else {
210
+ if (this.primary && this.appModelInteractionContext.isActive()) {
211
+ // We check the global interaction first
212
+ yield this.cancelCurrentActivityOf(this.appModelInteractionContext);
213
+ return false;
214
+ }
215
+ this.alreadyAccepted = yield this.canDeactivateComponent(nextState);
216
+ return this.alreadyAccepted;
217
+ }
218
+ });
219
+ }
220
+ /**
221
+ * @protected
222
+ * @param {?} nextState
223
+ * @return {?}
224
+ */
225
+ canDeactivateComponent(nextState) {
226
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
227
+ // check if the component has an active interaction. This will handle
228
+ // an inplace interaction contexts
229
+ /** @type {?} */
230
+ const hasCustomInteractionContext = this.component.interactionContext &&
231
+ !this.isAppModalInteractionContext(this.component.interactionContext) &&
232
+ this.component.interactionContext.isActive();
233
+ if (hasCustomInteractionContext) {
234
+ this.cancelCurrentActivityOf(this.component.interactionContext);
235
+ return false;
236
+ }
237
+ if (this.isLeavingCurrentPlace(nextState) && this.component.canDeactivate) {
238
+ // No interaction in progress, so ask the component .
239
+ // This may start an interaction, hence checking the interaction context before now. I.e. if the place pops up the dialog, and
240
+ // the user clicks back again, we'll re-enter here and go bang when the component tries to open another dialog.
241
+ return this.component.canDeactivate();
242
+ }
243
+ return true;
244
+ });
245
+ }
246
+ /**
247
+ * @param {?} interactionContext
248
+ * @return {?}
249
+ */
250
+ isAppModalInteractionContext(interactionContext) {
251
+ return this.appModelInteractionContext === interactionContext;
252
+ }
253
+ /**
254
+ * @protected
255
+ * @param {?} interactionContext
256
+ * @return {?}
257
+ */
258
+ cancelCurrentActivityOf(interactionContext) {
259
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
260
+ /** @type {?} */
261
+ const activity = yield interactionContext.getCurrentActivity();
262
+ console.log('cancelling', { activity });
263
+ activity.cancel(null);
264
+ });
265
+ }
266
+ /**
267
+ * @protected
268
+ * @param {?} nextState
269
+ * @return {?}
270
+ */
271
+ isLeavingCurrentPlace(nextState) {
272
+ return !nextState.includesPathOf(this.component.placeDefinition);
273
+ }
274
+ }
275
+ NavigationSession.ComponentDeactivationHandler = ComponentDeactivationHandler;
276
+ if (false) {
277
+ /**
278
+ * @type {?}
279
+ * @private
280
+ */
281
+ ComponentDeactivationHandler.prototype.alreadyAccepted;
282
+ /** @type {?} */
283
+ ComponentDeactivationHandler.prototype.component;
284
+ /** @type {?} */
285
+ ComponentDeactivationHandler.prototype.appModelInteractionContext;
286
+ /** @type {?} */
287
+ ComponentDeactivationHandler.prototype.primary;
144
288
  }
145
- NavigationSession.createExternal = createExternal;
146
289
  })(NavigationSession || (NavigationSession = {}));
147
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1zZXNzaW9uLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL25hdmlnYXRpb24tc2Vzc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBS0EsTUFBTSxPQUFnQixpQkFBaUI7Ozs7O0lBU3JDLFlBQStCLGVBQXdCO1FBQXhCLG9CQUFlLEdBQWYsZUFBZSxDQUFTO1FBUC9DLHFCQUFnQixHQUFxQixFQUFFLENBQUM7UUFFeEMsWUFBTyxHQUFHLElBQUksR0FBRyxFQUEwQixDQUFDO0lBTXBELENBQUM7Ozs7O0lBRUQsVUFBVSxDQUFDLEtBQVk7UUFDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqRCxDQUFDOzs7OztJQUVELFdBQVcsQ0FBQyxRQUF5QjtRQUNuQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7Ozs7O0lBRUQsMkJBQTJCLENBQUMsTUFBNEI7UUFDdEQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzs7Ozs7SUFHRCxlQUFlLENBQUMsY0FBOEI7UUFDNUMsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7Ozs7OztJQUdELG9CQUFvQixDQUFDLFNBQXlCO1FBQzVDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDeEMsQ0FBQzs7Ozs7SUFFRCxpQkFBaUIsQ0FBQyxHQUFXO1FBQzNCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxHQUFHLENBQUM7SUFDaEMsQ0FBQzs7OztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNuQyxDQUFDOzs7O0lBRUQsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDakMsQ0FBQzs7OztJQUVELFNBQVM7UUFDUCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7Q0FDRjs7Ozs7O0lBL0NDLDZDQUFnRDs7Ozs7SUFFaEQsb0NBQW9EOzs7OztJQUNwRCwrQ0FBbUM7O0lBRW5DLHVDQUFzQzs7SUFFaEIsNENBQWlDOztBQTBDekQsV0FBaUIsaUJBQWlCO0lBRWhDLE1BQU0sUUFBUyxTQUFRLGlCQUFpQjs7OztRQUd0QyxZQUFZLFdBQW9CO1lBQzlCLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUhaLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFJM0IsQ0FBQztLQUNGOzs7UUFMQyw4QkFBMkI7O0lBTzdCLE1BQU0sUUFBUyxTQUFRLGlCQUFpQjs7OztRQUd0QyxZQUFZLEtBQVk7WUFDdEIsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBSE4sZUFBVSxHQUFHLEtBQUssQ0FBQztZQUkxQixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLENBQUM7S0FDRjs7O1FBTkMsOEJBQTRCOzs7Ozs7SUFROUIsU0FBZ0IsY0FBYyxDQUFDLEtBQVk7UUFDekMsT0FBTyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRmUsZ0NBQWMsaUJBRTdCLENBQUE7Ozs7O0lBRUQsU0FBZ0IsY0FBYyxDQUFDLGNBQXVCO1FBQ3BELE9BQU8sSUFBSSxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUZlLGdDQUFjLGlCQUU3QixDQUFBO0FBR0gsQ0FBQyxFQTVCZ0IsaUJBQWlCLEtBQWpCLGlCQUFpQixRQTRCakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFjZSB9IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCB7IFBsYWNlQ29tcG9uZW50IH0gZnJvbSAnLi9wbGFjZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgUGxhY2VEZWZpbml0aW9uIH0gZnJvbSAnLi9wbGFjZS1kZWZpbml0aW9uJztcbmltcG9ydCB7IFZpc2l0IH0gZnJvbSAnLi92aXNpdCc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOYXZpZ2F0aW9uU2Vzc2lvbiB7XG5cbiAgcHJpdmF0ZSBfYWxyZWFkeUFjY2VwdGVkOiBQbGFjZUNvbXBvbmVudFtdID0gW107XG5cbiAgcHJpdmF0ZSBfdmlzaXRzID0gbmV3IE1hcDxQbGFjZURlZmluaXRpb24sIFZpc2l0PigpO1xuICBwcml2YXRlIF9wb3BTdGF0ZVJldHVyblVybDogc3RyaW5nO1xuXG4gIGFic3RyYWN0IHJlYWRvbmx5IGlzRXh0ZXJuYWw6IGJvb2xlYW47XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGZpcnN0TmF2aWdhdGlvbjogYm9vbGVhbikge1xuICB9XG5cbiAgc3RvcmVWaXNpdCh2aXNpdDogVmlzaXQpIHtcbiAgICB0aGlzLl92aXNpdHMuc2V0KHZpc2l0LnBsYWNlRGVmaW5pdGlvbiwgdmlzaXQpO1xuICB9XG5cbiAgZ2V0VmlzaXRGb3IocGxhY2VEZWY6IFBsYWNlRGVmaW5pdGlvbikge1xuICAgIHJldHVybiB0aGlzLl92aXNpdHMuZ2V0KHBsYWNlRGVmKTtcbiAgfVxuXG4gIG1lcmdlUHJpdmF0ZVBsYWNlUGFyYW1ldGVycyhwYXJhbXM6IHsgW3A6IHN0cmluZ106IGFueSB9KTogTmF2aWdhdGlvblNlc3Npb24ge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgYWxyZWFkeUFjY2VwdGVkKHBsYWNlQ29tcG9uZW50OiBQbGFjZUNvbXBvbmVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9hbHJlYWR5QWNjZXB0ZWQuaW5jbHVkZXMocGxhY2VDb21wb25lbnQpO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgcmVtZW1iZXJBY2NlcHRhbmNlT2YoY29tcG9uZW50OiBQbGFjZUNvbXBvbmVudCkge1xuICAgIHRoaXMuX2FscmVhZHlBY2NlcHRlZC5wdXNoKGNvbXBvbmVudCk7XG4gIH1cblxuICBzZXRQb3BzdGF0ZVJldHVybih1cmw6IHN0cmluZykge1xuICAgIHRoaXMuX3BvcFN0YXRlUmV0dXJuVXJsID0gdXJsO1xuICB9XG5cbiAgZ2V0IGlzUG9wU3RhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5fcG9wU3RhdGVSZXR1cm5Vcmw7XG4gIH1cblxuICBnZXQgcG9wU3RhdGVSZXR1cm5VcmwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BvcFN0YXRlUmV0dXJuVXJsO1xuICB9XG5cbiAgZ2V0VmlzaXRzKCk6IFZpc2l0W10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuX3Zpc2l0cy52YWx1ZXMoKSk7XG4gIH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBOYXZpZ2F0aW9uU2Vzc2lvbiB7XG5cbiAgY2xhc3MgRXh0ZXJuYWwgZXh0ZW5kcyBOYXZpZ2F0aW9uU2Vzc2lvbiB7XG4gICAgcmVhZG9ubHkgaXNFeHRlcm5hbCA9IHRydWU7XG5cbiAgICBjb25zdHJ1Y3Rvcihpc0ZpcnN0VGltZTogYm9vbGVhbikge1xuICAgICAgc3VwZXIoaXNGaXJzdFRpbWUpO1xuICAgIH1cbiAgfVxuXG4gIGNsYXNzIEludGVybmFsIGV4dGVuZHMgTmF2aWdhdGlvblNlc3Npb24ge1xuICAgIHJlYWRvbmx5IGlzRXh0ZXJuYWwgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKHZpc2l0OiBWaXNpdCkge1xuICAgICAgc3VwZXIoZmFsc2UpO1xuICAgICAgdGhpcy5zdG9yZVZpc2l0KHZpc2l0KTtcbiAgICB9XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gY3JlYXRlSW50ZXJuYWwodmlzaXQ6IFZpc2l0KTogTmF2aWdhdGlvblNlc3Npb24ge1xuICAgIHJldHVybiBuZXcgSW50ZXJuYWwodmlzaXQpO1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUV4dGVybmFsKGZpcnN0VGltZVJvdXRlOiBib29sZWFuKTogTmF2aWdhdGlvblNlc3Npb24ge1xuICAgIHJldHVybiBuZXcgRXh0ZXJuYWwoZmlyc3RUaW1lUm91dGUpO1xuICB9XG5cblxufVxuXG4iXX0=
290
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1zZXNzaW9uLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL25hdmlnYXRpb24tc2Vzc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7QUFNeEUsTUFBTSxPQUFnQixpQkFBaUI7Ozs7OztJQVdyQyxZQUErQixlQUF3QixFQUFtQiwwQkFBOEM7UUFBekYsb0JBQWUsR0FBZixlQUFlLENBQVM7UUFBbUIsK0JBQTBCLEdBQTFCLDBCQUEwQixDQUFvQjtRQVRoSCxxQkFBZ0IsR0FBcUIsRUFBRSxDQUFDO1FBRXhDLFlBQU8sR0FBRyxJQUFJLEdBQUcsRUFBMEIsQ0FBQztRQUs1QyxrQ0FBNkIsR0FBRyxJQUFJLEdBQUcsRUFBa0UsQ0FBQztRQUdoSCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3RFLENBQUM7Ozs7O0lBRUQsVUFBVSxDQUFDLEtBQVk7UUFDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqRCxDQUFDOzs7OztJQUVELFdBQVcsQ0FBQyxRQUF5QjtRQUNuQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7Ozs7OztJQUVLLGFBQWEsQ0FBQyxTQUF5QixFQUFFLFNBQWdDOzs7O2dCQUV6RSxPQUFPLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUM7WUFDL0QsSUFBSSxDQUFDLE9BQU8sRUFBRTs7c0JBQ04sZ0JBQWdCLEdBQUcsSUFB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WUFDZCxDQUFDO1NBQUE7Ozs7O1FBRUQsNEJBQTRCLENBQUMsa0JBQXNDO1lBQ2pFLE9BQU8sSUFBSSxDQUFDLDBCQUEwQixLQUFLLGtCQUFrQixDQUFDO1FBQ2hFLENBQUM7Ozs7OztRQUVlLHVCQUF1QixDQUFDLGtCQUFzQzs7O3NCQUN0RSxRQUFRLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxrQkFBa0IsRUFBRTtnQkFDOUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUN4QyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hCLENBQUM7U0FBQTs7Ozs7O1FBR1MscUJBQXFCLENBQUMsU0FBZ0M7WUFDOUQsT0FBTyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNuRSxDQUFDO0tBQ0Y7SUFqRVksOENBQTRCLCtCQWlFeEMsQ0FBQTs7Ozs7O1FBL0RDLHVEQUFnQzs7UUFFcEIsaURBQWtDOztRQUFFLGtFQUF1RDs7UUFBRSwrQ0FBd0I7O0FBK0RySSxDQUFDLEVBdkdnQixpQkFBaUIsS0FBakIsaUJBQWlCLFFBdUdqQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERpc3Bvc2FibGUgfSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgeyBJbnRlcmFjdGlvbkNvbnRleHQgfSBmcm9tICcuLi9pbnRlcmFjdGlvbi9pbnRlcmFjdGlvbi1jb250ZXh0JztcbmltcG9ydCB7IFBsYWNlQ29tcG9uZW50IH0gZnJvbSAnLi9wbGFjZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgUGxhY2VEZWZpbml0aW9uIH0gZnJvbSAnLi9wbGFjZS1kZWZpbml0aW9uJztcbmltcG9ydCB7IFBsYWNlUm91dGVyIH0gZnJvbSAnLi9wbGFjZS1yb3V0ZXInO1xuaW1wb3J0IHsgVmlzaXQgfSBmcm9tICcuL3Zpc2l0JztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE5hdmlnYXRpb25TZXNzaW9uIHtcblxuICBwcml2YXRlIF9hbHJlYWR5QWNjZXB0ZWQ6IFBsYWNlQ29tcG9uZW50W10gPSBbXTtcblxuICBwcml2YXRlIF92aXNpdHMgPSBuZXcgTWFwPFBsYWNlRGVmaW5pdGlvbiwgVmlzaXQ+KCk7XG4gIHByaXZhdGUgX3BvcFN0YXRlUmV0dXJuVXJsOiBzdHJpbmc7XG5cbiAgYWJzdHJhY3QgcmVhZG9ubHkgaXNFeHRlcm5hbDogYm9vbGVhbjtcbiAgcmVhZG9ubHkgZGlhbG9nT3Blbk9uU3RhcnQ6IGJvb2xlYW47XG4gIHByaXZhdGUgY29tcG9uZW50RGVhY3RpdmF0aW9uSGFuZGxlcnMgPSBuZXcgTWFwPFBsYWNlQ29tcG9uZW50LCBOYXZpZ2F0aW9uU2Vzc2lvbi5Db21wb25lbnREZWFjdGl2YXRpb25IYW5kbGVyPigpO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihyZWFkb25seSBmaXJzdE5hdmlnYXRpb246IGJvb2xlYW4sIHByaXZhdGUgcmVhZG9ubHkgYXBwTW9kYWxJbnRlcmFjdGlvbkNvbnRleHQ6IEludGVyYWN0aW9uQ29udGV4dCkge1xuICAgIHRoaXMuZGlhbG9nT3Blbk9uU3RhcnQgPSB0aGlzLmFwcE1vZGFsSW50ZXJhY3Rpb25Db250ZXh0LmlzQWN0aXZlKCk7XG4gIH1cblxuICBzdG9yZVZpc2l0KHZpc2l0OiBWaXNpdCkge1xuICAgIHRoaXMuX3Zpc2l0cy5zZXQodmlzaXQucGxhY2VEZWZpbml0aW9uLCB2aXNpdCk7XG4gIH1cblxuICBnZXRWaXNpdEZvcihwbGFjZURlZjogUGxhY2VEZWZpbml0aW9uKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Zpc2l0cy5nZXQocGxhY2VEZWYpO1xuICB9XG5cbiAgYXN5bmMgY2FuRGVhY3RpdmF0ZShjb21wb25lbnQ6IFBsYWNlQ29tcG9uZW50LCBuZXh0U3RhdGU6IFBsYWNlUm91dGVyLlVybEhlbHBlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIC8vIGxvb2t1cCB0aGUgaGFuZGxlciBhbmQgY3JlYXRlIGl0IGlmIHdlJ3ZlIG5vdCBzZWVuIGl0IHlldFxuICAgIGxldCBoYW5kbGVyID0gdGhpcy5jb21wb25lbnREZWFjdGl2YXRpb25IYW5kbGVycy5nZXQoY29tcG9uZW50KTtcbiAgICBpZiAoIWhhbmRsZXIpIHtcbiAgICAgIGNvbnN0IGlzUHJpbWFyeUhhbmRsZXIgPSB0aGlzLmNvbXBvbmVudERlYWN0aXZhdGlvbkhhbmRsZXJzLnNpemUgPT09IDA7IC8vIG9ubHkgcHJpbWFyeSBoYW5kbGVyIGNhbmNlbGUgdGhlIGFwcCBtb2RlbCBpbnRlcmF0aW9uc1xuICAgICAgaGFuZGxlciA9IG5ldyBOYXZpZ2F0aW9uU2Vzc2lvbi5Db21wb25lbnREZWFjdGl2YXRpb25IYW5kbGVyKGNvbXBvbmVudCwgdGhpcy5hcHBNb2RhbEludGVyYWN0aW9uQ29udGV4dCwgaXNQcmltYXJ5SGFuZGxlcik7XG4gICAgICB0aGlzLmNvbXBvbmVudERlYWN0aXZhdGlvbkhhbmRsZXJzLnNldChjb21wb25lbnQsIGhhbmRsZXIpO1xuICAgIH1cbiAgICByZXR1cm4gaGFuZGxlci5jYW5EZWFjdGl2YXRlKG5leHRTdGF0ZSk7XG4gIH1cblxuICBzZXRQb3BzdGF0ZVJldHVyblVybCh1cmw6IHN0cmluZykge1xuICAgIHRoaXMuX3BvcFN0YXRlUmV0dXJuVXJsID0gdXJsO1xuICB9XG5cbiAgZ2V0IGlzUG9wU3RhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5fcG9wU3RhdGVSZXR1cm5Vcmw7XG4gIH1cblxuICBnZXQgcG9wU3RhdGVSZXR1cm5VcmwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BvcFN0YXRlUmV0dXJuVXJsO1xuICB9XG5cbiAgZ2V0VmlzaXRzKCk6IFZpc2l0W10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuX3Zpc2l0cy52YWx1ZXMoKSk7XG4gIH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBOYXZpZ2F0aW9uU2Vzc2lvbiB7XG5cbiAgY2xhc3MgRXh0ZXJuYWwgZXh0ZW5kcyBOYXZpZ2F0aW9uU2Vzc2lvbiB7XG4gICAgcmVhZG9ubHkgaXNFeHRlcm5hbCA9IHRydWU7XG5cbiAgICBjb25zdHJ1Y3Rvcihpc0ZpcnN0VGltZTogYm9vbGVhbiwgYXBwTW9kZWxJbnRlcmFjdGlvbkNvbnRleHQ6IEludGVyYWN0aW9uQ29udGV4dCkge1xuICAgICAgc3VwZXIoaXNGaXJzdFRpbWUsIGFwcE1vZGVsSW50ZXJhY3Rpb25Db250ZXh0KTtcbiAgICB9XG4gIH1cblxuICBjbGFzcyBJbnRlcm5hbCBleHRlbmRzIE5hdmlnYXRpb25TZXNzaW9uIHtcbiAgICByZWFkb25seSBpc0V4dGVybmFsID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3Rvcih2aXNpdDogVmlzaXQsIGFwcE1vZGVsSW50ZXJhY3Rpb25Db250ZXh0OiBJbnRlcmFjdGlvbkNvbnRleHQpIHtcbiAgICAgIHN1cGVyKGZhbHNlLCBhcHBNb2RlbEludGVyYWN0aW9uQ29udGV4dCk7XG4gICAgICB0aGlzLnN0b3JlVmlzaXQodmlzaXQpO1xuICAgIH1cbiAgfVxuXG5cbiAgQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xuICB9KVxuICBleHBvcnQgY2xhc3MgRmFjdG9yeSB7XG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgYXBwTW9kZWxJbnRlcmFjdGlvbkNvbnRleHQ6IEludGVyYWN0aW9uQ29udGV4dCkge1xuICAgIH1cblxuICAgIGNyZWF0ZUludGVybmFsKHZpc2l0OiBWaXNpdCk6IE5hdmlnYXRpb25TZXNzaW9uIHtcbiAgICAgIHJldHVybiBuZXcgSW50ZXJuYWwodmlzaXQsIHRoaXMuYXBwTW9kZWxJbnRlcmFjdGlvbkNvbnRleHQpO1xuICAgIH1cblxuICAgIGNyZWF0ZUV4dGVybmFsKGZpcnN0VGltZVJvdXRlOiBib29sZWFuKTogTmF2aWdhdGlvblNlc3Npb24ge1xuICAgICAgcmV0dXJuIG5ldyBFeHRlcm5hbChmaXJzdFRpbWVSb3V0ZSwgdGhpcy5hcHBNb2RlbEludGVyYWN0aW9uQ29udGV4dCk7XG4gICAgfVxuICB9XG5cbiAgZXhwb3J0IGNsYXNzIENvbXBvbmVudERlYWN0aXZhdGlvbkhhbmRsZXIge1xuXG4gICAgcHJpdmF0ZSBhbHJlYWR5QWNjZXB0ZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGNvbXBvbmVudDogUGxhY2VDb21wb25lbnQsIHJlYWRvbmx5IGFwcE1vZGVsSW50ZXJhY3Rpb25Db250ZXh0OiBJbnRlcmFjdGlvbkNvbnRleHQsIHJlYWRvbmx5IHByaW1hcnk6Ym9vbGVhbikge1xuICAgICAgLy8gc3VwZXIoKTtcbiAgICB9XG5cbiAgICBhc3luYyBjYW5EZWFjdGl2YXRlKG5leHRTdGF0ZTogUGxhY2VSb3V0ZXIuVXJsSGVscGVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICBjb25zb2xlLmxvZyhgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9LmNhbkRlYWN0aXZhdGVgLCB7Y29tcG9uZW50OnRoaXMuY29tcG9uZW50fSk7XG4gICAgICBpZiAodGhpcy5hbHJlYWR5QWNjZXB0ZWQpIHtcbiAgICAgICAgLy8gV2UnbGwgZ2V0IGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBpZiB0aGVyZSdzIGFueSBwYXJhbWV0ZXIgc2FuaXRpc2F0aW9uIHNvXG4gICAgICAgIC8vIHdlIGFsd2F5cyByZXR1cm4gdHJ1ZSBpZiB3ZSBhY2NlcHRlZCBvbiBhIHByZXZpb3VzIGN5Y2xlIG9mIHRoZSBjdXJyZW50XG4gICAgICAgIC8vIG5hdmlnYXRpb24gc2Vzc2lvbi5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2Uge1xuXG4gICAgICAgIGlmICh0aGlzLnByaW1hcnkgJiYgdGhpcy5hcHBNb2RlbEludGVyYWN0aW9uQ29udGV4dC5pc0FjdGl2ZSgpKSB7XG4gICAgICAgICAgLy8gV2UgY2hlY2sgdGhlIGdsb2JhbCBpbnRlcmFjdGlvbiBmaXJzdFxuICAgICAgICAgIGF3YWl0IHRoaXMuY2FuY2VsQ3VycmVudEFjdGl2aXR5T2YodGhpcy5hcHBNb2RlbEludGVyYWN0aW9uQ29udGV4dCk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hbHJlYWR5QWNjZXB0ZWQgPSBhd2FpdCB0aGlzLmNhbkRlYWN0aXZhdGVDb21wb25lbnQobmV4dFN0YXRlKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hbHJlYWR5QWNjZXB0ZWQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFzeW5jIGNhbkRlYWN0aXZhdGVDb21wb25lbnQobmV4dFN0YXRlOiBQbGFjZVJvdXRlci5VcmxIZWxwZXIpIHtcblxuICAgICAgLy8gY2hlY2sgaWYgdGhlIGNvbXBvbmVudCBoYXMgYW4gYWN0aXZlIGludGVyYWN0aW9uLiAgVGhpcyB3aWxsIGhhbmRsZVxuICAgICAgLy8gYW4gaW5wbGFjZSBpbnRlcmFjdGlvbiBjb250ZXh0c1xuICAgICAgY29uc3QgaGFzQ3VzdG9tSW50ZXJhY3Rpb25Db250ZXh0ID0gdGhpcy5jb21wb25lbnQuaW50ZXJhY3Rpb25Db250ZXh0ICYmXG4gICAgICAgICF0aGlzLmlzQXBwTW9kYWxJbnRlcmFjdGlvbkNvbnRleHQodGhpcy5jb21wb25lbnQuaW50ZXJhY3Rpb25Db250ZXh0KSAmJlxuICAgICAgICB0aGlzLmNvbXBvbmVudC5pbnRlcmFjdGlvbkNvbnRleHQuaXNBY3RpdmUoKTtcblxuICAgICAgaWYgKGhhc0N1c3RvbUludGVyYWN0aW9uQ29udGV4dCkge1xuICAgICAgIHRoaXMuY2FuY2VsQ3VycmVudEFjdGl2aXR5T2YodGhpcy5jb21wb25lbnQuaW50ZXJhY3Rpb25Db250ZXh0KTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5pc0xlYXZpbmdDdXJyZW50UGxhY2UobmV4dFN0YXRlKSAmJiB0aGlzLmNvbXBvbmVudC5jYW5EZWFjdGl2YXRlKSB7XG4gICAgICAgIC8vIE5vIGludGVyYWN0aW9uIGluIHByb2dyZXNzLCBzbyBhc2sgdGhlIGNvbXBvbmVudCAuXG4gICAgICAgIC8vIFRoaXMgbWF5IHN0YXJ0IGFuIGludGVyYWN0aW9uLCBoZW5jZSBjaGVja2luZyB0aGUgaW50ZXJhY3Rpb24gY29udGV4dCBiZWZvcmUgbm93LiBJLmUuIGlmIHRoZSBwbGFjZSBwb3BzIHVwIHRoZSBkaWFsb2csIGFuZFxuICAgICAgICAvLyB0aGUgdXNlciBjbGlja3MgYmFjayBhZ2Fpbiwgd2UnbGwgcmUtZW50ZXIgaGVyZSBhbmQgZ28gYmFuZyB3aGVuIHRoZSBjb21wb25lbnQgdHJpZXMgdG8gb3BlbiBhbm90aGVyIGRpYWxvZy5cbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcG9uZW50LmNhbkRlYWN0aXZhdGUoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlzQXBwTW9kYWxJbnRlcmFjdGlvbkNvbnRleHQoaW50ZXJhY3Rpb25Db250ZXh0OiBJbnRlcmFjdGlvbkNvbnRleHQpIHtcbiAgICAgIHJldHVybiB0aGlzLmFwcE1vZGVsSW50ZXJhY3Rpb25Db250ZXh0ID09PSBpbnRlcmFjdGlvbkNvbnRleHQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFzeW5jIGNhbmNlbEN1cnJlbnRBY3Rpdml0eU9mKGludGVyYWN0aW9uQ29udGV4dDogSW50ZXJhY3Rpb25Db250ZXh0KSB7XG4gICAgICBjb25zdCBhY3Rpdml0eSA9IGF3YWl0IGludGVyYWN0aW9uQ29udGV4dC5nZXRDdXJyZW50QWN0aXZpdHkoKTtcbiAgICAgIGNvbnNvbGUubG9nKCdjYW5jZWxsaW5nJywgeyBhY3Rpdml0eSB9KTtcbiAgICAgIGFjdGl2aXR5LmNhbmNlbChudWxsKTtcbiAgICB9XG5cblxuICAgIHByb3RlY3RlZCBpc0xlYXZpbmdDdXJyZW50UGxhY2UobmV4dFN0YXRlOiBQbGFjZVJvdXRlci5VcmxIZWxwZXIpIHtcbiAgICAgIHJldHVybiAhbmV4dFN0YXRlLmluY2x1ZGVzUGF0aE9mKHRoaXMuY29tcG9uZW50LnBsYWNlRGVmaW5pdGlvbik7XG4gICAgfVxuICB9XG5cbn1cblxuIl19
@@ -3,10 +3,11 @@
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, GarbageCollector, lang } 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
9
  import 'reflect-metadata';
10
+ import { DisposableComponent } from '../components/disposable-component';
10
11
  import { PlaceDefinition } from './place-definition';
11
12
  // RAKE: making this Symbol(...) broke things.
12
13
  /** @type {?} */
@@ -14,7 +15,7 @@ export const DEFINITION_META_DATA_KEY = 'PLACE_DEFINITION_OPTIONS';
14
15
  // this one seems ok.
15
16
  /** @type {?} */
16
17
  export const ROUTE_PARAMETER_LIST_KEY = Symbol('place:route:parameters');
17
- export class PlaceComponent extends GarbageCollector {
18
+ export class PlaceComponent extends DisposableComponent {
18
19
  constructor() {
19
20
  super();
20
21
  }
@@ -81,27 +82,11 @@ export class PlaceComponent extends GarbageCollector {
81
82
  */
82
83
  d => d.component));
83
84
  }
84
- /**
85
- * @return {?}
86
- */
87
- canDeactivate() {
88
- return true;
89
- }
90
85
  /**
91
86
  * @return {?}
92
87
  */
93
88
  onPlaceReady() {
94
89
  }
95
- /**
96
- * Called by the place outlet after all animations have finished. We need this instead of ngOnDestroy
97
- * to avoid the fact that the angular router calls it before the animations have run causing the component
98
- * to loose any pectin bindings.
99
- * @return {?}
100
- */
101
- // @Trace()
102
- onPlaceDestroyed() {
103
- this.dispose();
104
- }
105
90
  }
106
91
  tslib_1.__decorate([
107
92
  Memoize(),
@@ -152,4 +137,4 @@ if (false) {
152
137
  }
153
138
  PlaceComponent.injectDefinition = injectDefinition;
154
139
  })(PlaceComponent || (PlaceComponent = {}));
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UtY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3BsYWNlLWNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFDTCxNQUFNLEVBQ04sT0FBTyxFQUVQLGdCQUFnQixFQUVoQixJQUFJLEVBR0wsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDckQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2xFLE9BQU8sa0JBQWtCLENBQUM7QUFHMUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7QUFLckQsTUFBTSxPQUFPLHdCQUF3QixHQUFHLDBCQUEwQjs7O0FBRWxFLE1BQU0sT0FBTyx3QkFBd0IsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUM7QUFFeEUsTUFBTSxPQUFPLGNBQWUsU0FBUSxnQkFBZ0I7SUFLbEQ7UUFDRSxLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUM7Ozs7O0lBRU0sa0JBQWtCLENBQUMsS0FBd0I7UUFDaEQsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLE9BQU87Ozs7UUFBQyxZQUFZLENBQUMsRUFBRTtZQUNsRSxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3BDLENBQUMsRUFBQyxDQUFDO0lBQ0wsQ0FBQzs7Ozs7OztJQUVPLGNBQWMsQ0FBTyxZQUF1Qzs7Y0FDNUQsS0FBSyxHQUFHLG1CQUFBLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLEVBQXVCO1FBQ3BFLHNEQUFzRDtRQUN0RCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7Ozs7O1lBQ3JELE9BQU8sQ0FBQyxLQUFZOztzQkFDWixLQUFLLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO2dCQUNuRCw0RUFBNEU7Z0JBQzVFLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQzs7Ozs7O1lBQ0QsTUFBTSxDQUFDLEtBQVEsRUFBRSxZQUFvQjtnQkFDbkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsRUFBQyxJQUFJLEVBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFDLENBQUMsQ0FBQztnQkFDNUUsT0FBTyxZQUFZLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNuRCxDQUFDO1NBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDOzs7O0lBR0QsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sY0FBYyxDQUFDLGFBQWEsQ0FBQyxtQkFBQSxtQkFBQSxJQUFJLENBQUMsV0FBVyxFQUFPLEVBQWlDLENBQUMsQ0FBQztJQUNoRyxDQUFDOzs7O0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxHQUFHOzs7O1FBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFDLENBQUM7SUFDN0QsQ0FBQzs7OztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Ozs7SUFFRCxZQUFZO0lBQ1osQ0FBQzs7Ozs7Ozs7SUFRRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztDQUNGO0FBeEJDO0lBREMsT0FBTyxFQUFFO3NDQUNhLGVBQWU7O3FEQUVyQzs7Ozs7O0lBbENELCtCQUFpQzs7SUFDakMsNENBQXdDOztBQXlEMUMsV0FBaUIsY0FBYzs7Ozs7SUFFN0IsU0FBZ0IsMkJBQTJCLENBQUMsTUFBVztRQUNyRCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBQSxNQUFNLEVBQXNCLENBQUMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUZlLDBDQUEyQiw4QkFFMUMsQ0FBQTs7Ozs7SUFFRCxTQUFnQixrQkFBa0IsQ0FBQyxLQUFvQztRQUNyRSxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsZUFBZSxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUZlLGlDQUFrQixxQkFFakMsQ0FBQTs7Ozs7SUFFRCxTQUFnQixhQUFhLENBQUMsS0FBb0M7UUFDaEUsT0FBTyxPQUFPLENBQUMsV0FBVyxDQUFDLHdCQUF3QixFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFGZSw0QkFBYSxnQkFFNUIsQ0FBQTs7Ozs7O0lBRUQsU0FBZ0IsZ0JBQWdCLENBQUMsS0FBb0MsRUFBRSxVQUEyQjtRQUNoRyxPQUFPLENBQUMsY0FBYyxDQUFDLHdCQUF3QixFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRmUsK0JBQWdCLG1CQUUvQixDQUFBO0FBRUgsQ0FBQyxFQWxCZ0IsY0FBYyxLQUFkLGNBQWMsUUFrQjlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYXNzZXJ0LFxuICBCaW5kaW5nLFxuICBDb25zdHJ1Y3RhYmxlLFxuICBHYXJiYWdlQ29sbGVjdG9yLFxuICBJTXV0YWJsZUhhc1ZhbHVlLFxuICBsYW5nLFxuICBUcmFjZSxcbiAgVmFsdWVNb2RlbFxufSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgeyBLbGFzcyB9IGZyb20gJ0Bjb29sb24vdHlwZXNjcmlwdC11dGlsaXRpZXMnO1xuaW1wb3J0IHsgTWVtb2l6ZSB9IGZyb20gJ0B0eXBlc2NyaXB0LXBsdXMvZmFzdC1tZW1vaXplLWRlY29yYXRvcic7XG5pbXBvcnQgJ3JlZmxlY3QtbWV0YWRhdGEnO1xuaW1wb3J0IHsgRGlzcG9zYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvZGlzcG9zYWJsZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgSW50ZXJhY3Rpb25Db250ZXh0IH0gZnJvbSAnLi4vaW50ZXJhY3Rpb24vaW50ZXJhY3Rpb24tY29udGV4dCc7XG5pbXBvcnQgeyBQbGFjZURlZmluaXRpb24gfSBmcm9tICcuL3BsYWNlLWRlZmluaXRpb24nO1xuaW1wb3J0IHsgUGFyYW1ldGVyRGVmaW5pdGlvbiB9IGZyb20gJy4vcm91dGUvcGFyYW1ldGVyLWRlZmluaXRpb24uY2xhc3MnO1xuaW1wb3J0IHsgVmlzaXQgfSBmcm9tICcuL3Zpc2l0JztcblxuLy8gUkFLRTogbWFraW5nIHRoaXMgU3ltYm9sKC4uLikgYnJva2UgdGhpbmdzLlxuZXhwb3J0IGNvbnN0IERFRklOSVRJT05fTUVUQV9EQVRBX0tFWSA9ICdQTEFDRV9ERUZJTklUSU9OX09QVElPTlMnO1xuLy8gdGhpcyBvbmUgc2VlbXMgb2suXG5leHBvcnQgY29uc3QgUk9VVEVfUEFSQU1FVEVSX0xJU1RfS0VZID0gU3ltYm9sKCdwbGFjZTpyb3V0ZTpwYXJhbWV0ZXJzJyk7XG5cbmV4cG9ydCBjbGFzcyBQbGFjZUNvbXBvbmVudCBleHRlbmRzIEdhcmJhZ2VDb2xsZWN0b3Ige1xuXG4gIHByaXZhdGUgdmlzaXQ6IFZhbHVlTW9kZWw8VmlzaXQ+O1xuICBpbnRlcmFjdGlvbkNvbnRleHQ/OiBJbnRlcmFjdGlvbkNvbnRleHQ7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0aWFsaXNlQmluZGluZ3ModmlzaXQ6IFZhbHVlTW9kZWw8VmlzaXQ+KSB7XG4gICAgYXNzZXJ0LmlzTmlsKHRoaXMudmlzaXQpO1xuICAgIHRoaXMudmlzaXQgPSB2aXNpdDtcbiAgICB0aGlzLnBsYWNlRGVmaW5pdGlvbi5nZXRWaXNpdFBhcmFtZXRlckRlZnMoKS5mb3JFYWNoKHBhcmFtZXRlckRlZiA9PiB7XG4gICAgICB0aGlzLmluc3RhbGxCaW5kaW5nKHBhcmFtZXRlckRlZik7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGluc3RhbGxCaW5kaW5nPFQsIFM+KHBhcmFtZXRlckRlZjogUGFyYW1ldGVyRGVmaW5pdGlvbjxULCBTPikge1xuICAgIGNvbnN0IG1vZGVsID0gdGhpc1twYXJhbWV0ZXJEZWYucHJvcGVydHlOYW1lXSBhcyBJTXV0YWJsZUhhc1ZhbHVlPFM+O1xuICAgIC8vIHRoaXMudHhvLm9ic2VydmUocGFyYW1ldGVyRGVmLnByb3BlcnR5TmFtZSwgbW9kZWwpO1xuICAgIHRoaXMucmVnaXN0ZXJEaXNwb3NhYmxlKG5ldyBCaW5kaW5nKHRoaXMudmlzaXQsIG1vZGVsLCB7XG4gICAgICB0b1JpZ2h0KHZpc2l0OiBWaXNpdCk6IFMge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHZpc2l0LmdldFBhcmFtZXRlcihwYXJhbWV0ZXJEZWYubmFtZSk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdwdXNoIHRvIGNvbXBvbmVudCcsIHtuYW1lOnBhcmFtZXRlckRlZi5uYW1lLCB2YWx1ZSwgdmlzaXR9KTtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHRvTGVmdCh2YWx1ZTogUywgY3VycmVudFZpc2l0PzogVmlzaXQpOiBWaXNpdCB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdwdXNoIHRvIHJvdXRlJywge25hbWU6cGFyYW1ldGVyRGVmLm5hbWUsIHZhbHVlLCBjdXJyZW50VmlzaXR9KTtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRWaXNpdC5yZXBsYWNlKHBhcmFtZXRlckRlZiwgdmFsdWUpO1xuICAgICAgfVxuICAgIH0pKTtcbiAgfVxuXG4gIEBNZW1vaXplKClcbiAgZ2V0IHBsYWNlRGVmaW5pdGlvbigpOiBQbGFjZURlZmluaXRpb24ge1xuICAgIHJldHVybiBQbGFjZUNvbXBvbmVudC5nZXREZWZpbml0aW9uKHRoaXMuY29uc3RydWN0b3IgYXMgYW55IGFzIENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+KTtcbiAgfVxuXG4gIGdldCBjaGlsZFBsYWNlcygpOiBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50PltdIHtcbiAgICByZXR1cm4gdGhpcy5wbGFjZURlZmluaXRpb24uY2hpbGRyZW4ubWFwKGQgPT4gZC5jb21wb25lbnQpO1xuICB9XG5cbiAgY2FuRGVhY3RpdmF0ZSgpOiBib29sZWFuIHwgUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBvblBsYWNlUmVhZHkoKSB7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIGJ5IHRoZSBwbGFjZSBvdXRsZXQgYWZ0ZXIgYWxsIGFuaW1hdGlvbnMgaGF2ZSBmaW5pc2hlZC4gIFdlIG5lZWQgdGhpcyBpbnN0ZWFkIG9mIG5nT25EZXN0cm95XG4gICAqIHRvIGF2b2lkIHRoZSBmYWN0IHRoYXQgdGhlIGFuZ3VsYXIgcm91dGVyIGNhbGxzIGl0IGJlZm9yZSB0aGUgYW5pbWF0aW9ucyBoYXZlIHJ1biBjYXVzaW5nIHRoZSBjb21wb25lbnRcbiAgICogdG8gbG9vc2UgYW55IHBlY3RpbiBiaW5kaW5ncy5cbiAgICovXG4gIC8vIEBUcmFjZSgpXG4gIG9uUGxhY2VEZXN0cm95ZWQoKSB7XG4gICAgdGhpcy5kaXNwb3NlKCk7XG4gIH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBQbGFjZUNvbXBvbmVudCB7XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzUGxhY2VDb21wb25lbnRDb25zdHJ1Y3Rvcih0YXJnZXQ6IGFueSk6IHRhcmdldCBpcyBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50PiB7XG4gICAgcmV0dXJuIGxhbmcuY29uc3RydWN0b3JDaGFpbih0YXJnZXQgYXMgQ29uc3RydWN0YWJsZTxhbnk+KS5pbmNsdWRlcyhQbGFjZUNvbXBvbmVudCk7XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gZ2V0Um91dGVQYXJhbWV0ZXJzKGtsYXNzOiBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50Pik6IFBhcmFtZXRlckRlZmluaXRpb248YW55PltdIHtcbiAgICByZXR1cm4gS2xhc3MuZ2V0KGtsYXNzKS5nZXRNZXRhZGF0YUxpc3QoUk9VVEVfUEFSQU1FVEVSX0xJU1RfS0VZKTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXREZWZpbml0aW9uKGtsYXNzOiBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50Pik6IFBsYWNlRGVmaW5pdGlvbiB7XG4gICAgcmV0dXJuIFJlZmxlY3QuZ2V0TWV0YWRhdGEoREVGSU5JVElPTl9NRVRBX0RBVEFfS0VZLCBrbGFzcyk7XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gaW5qZWN0RGVmaW5pdGlvbihrbGFzczogQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4sIGRlZmluaXRpb246IFBsYWNlRGVmaW5pdGlvbikge1xuICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoREVGSU5JVElPTl9NRVRBX0RBVEFfS0VZLCBkZWZpbml0aW9uLCBrbGFzcyk7XG4gIH1cblxufVxuIl19
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UtY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3BsYWNlLWNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFDTCxNQUFNLEVBQ04sT0FBTyxFQUlQLElBQUksRUFHTCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDbEUsT0FBTyxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUV6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7OztBQUtyRCxNQUFNLE9BQU8sd0JBQXdCLEdBQUcsMEJBQTBCOzs7QUFFbEUsTUFBTSxPQUFPLHdCQUF3QixHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQztBQUV4RSxNQUFNLE9BQU8sY0FBZSxTQUFRLG1CQUFtQjtJQVNyRDtRQUNFLEtBQUssRUFBRSxDQUFDO0lBQ1YsQ0FBQzs7Ozs7SUFFTSxrQkFBa0IsQ0FBQyxLQUF3QjtRQUNoRCxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsZUFBZSxDQUFDLHFCQUFxQixFQUFFLENBQUMsT0FBTzs7OztRQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ2xFLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDcEMsQ0FBQyxFQUFDLENBQUM7SUFDTCxDQUFDOzs7Ozs7O0lBRU8sY0FBYyxDQUFPLFlBQXVDOztjQUM1RCxLQUFLLEdBQUcsbUJBQUEsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsRUFBdUI7UUFDcEUsc0RBQXNEO1FBQ3RELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRTs7Ozs7WUFDckQsT0FBTyxDQUFDLEtBQVk7O3NCQUNaLEtBQUssR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7Z0JBQ25ELDRFQUE0RTtnQkFDNUUsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDOzs7Ozs7WUFDRCxNQUFNLENBQUMsS0FBUSxFQUFFLFlBQW9CO2dCQUNuQyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxFQUFFLElBQUksRUFBRSxZQUFZLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO2dCQUMvRSxPQUFPLFlBQVksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ25ELENBQUM7U0FDRixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7Ozs7SUFHRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxjQUFjLENBQUMsYUFBYSxDQUFDLG1CQUFBLG1CQUFBLElBQUksQ0FBQyxXQUFXLEVBQU8sRUFBaUMsQ0FBQyxDQUFDO0lBQ2hHLENBQUM7Ozs7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLEdBQUc7Ozs7UUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUMsQ0FBQztJQUM3RCxDQUFDOzs7O0lBRUQsWUFBWTtJQUNaLENBQUM7Q0FFRjtBQVhDO0lBREMsT0FBTyxFQUFFO3NDQUNhLGVBQWU7O3FEQUVyQzs7Ozs7O0lBdENELCtCQUFpQzs7SUFHakMsNENBQXdDOztBQThDMUMsV0FBaUIsY0FBYzs7Ozs7SUFFN0IsU0FBZ0IsMkJBQTJCLENBQUMsTUFBVztRQUNyRCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBQSxNQUFNLEVBQXNCLENBQUMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUZlLDBDQUEyQiw4QkFFMUMsQ0FBQTs7Ozs7SUFFRCxTQUFnQixrQkFBa0IsQ0FBQyxLQUFvQztRQUNyRSxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsZUFBZSxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUZlLGlDQUFrQixxQkFFakMsQ0FBQTs7Ozs7SUFFRCxTQUFnQixhQUFhLENBQUMsS0FBb0M7UUFDaEUsT0FBTyxPQUFPLENBQUMsV0FBVyxDQUFDLHdCQUF3QixFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFGZSw0QkFBYSxnQkFFNUIsQ0FBQTs7Ozs7O0lBRUQsU0FBZ0IsZ0JBQWdCLENBQUMsS0FBb0MsRUFBRSxVQUEyQjtRQUNoRyxPQUFPLENBQUMsY0FBYyxDQUFDLHdCQUF3QixFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRmUsK0JBQWdCLG1CQUUvQixDQUFBO0FBRUgsQ0FBQyxFQWxCZ0IsY0FBYyxLQUFkLGNBQWMsUUFrQjlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYXNzZXJ0LFxuICBCaW5kaW5nLFxuICBDb25zdHJ1Y3RhYmxlLFxuICBHdWFyZCxcbiAgSU11dGFibGVIYXNWYWx1ZSxcbiAgbGFuZyxcbiAgTXV0YWJsZVZhbHVlTW9kZWwsXG4gIFZhbHVlTW9kZWxcbn0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IHsgS2xhc3MgfSBmcm9tICdAY29vbG9uL3R5cGVzY3JpcHQtdXRpbGl0aWVzJztcbmltcG9ydCB7IE1lbW9pemUgfSBmcm9tICdAdHlwZXNjcmlwdC1wbHVzL2Zhc3QtbWVtb2l6ZS1kZWNvcmF0b3InO1xuaW1wb3J0ICdyZWZsZWN0LW1ldGFkYXRhJztcbmltcG9ydCB7IERpc3Bvc2FibGVDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2Rpc3Bvc2FibGUtY29tcG9uZW50JztcbmltcG9ydCB7IEludGVyYWN0aW9uQ29udGV4dCB9IGZyb20gJy4uL2ludGVyYWN0aW9uL2ludGVyYWN0aW9uLWNvbnRleHQnO1xuaW1wb3J0IHsgUGxhY2VEZWZpbml0aW9uIH0gZnJvbSAnLi9wbGFjZS1kZWZpbml0aW9uJztcbmltcG9ydCB7IFBhcmFtZXRlckRlZmluaXRpb24gfSBmcm9tICcuL3JvdXRlL3BhcmFtZXRlci1kZWZpbml0aW9uLmNsYXNzJztcbmltcG9ydCB7IFZpc2l0IH0gZnJvbSAnLi92aXNpdCc7XG5cbi8vIFJBS0U6IG1ha2luZyB0aGlzIFN5bWJvbCguLi4pIGJyb2tlIHRoaW5ncy5cbmV4cG9ydCBjb25zdCBERUZJTklUSU9OX01FVEFfREFUQV9LRVkgPSAnUExBQ0VfREVGSU5JVElPTl9PUFRJT05TJztcbi8vIHRoaXMgb25lIHNlZW1zIG9rLlxuZXhwb3J0IGNvbnN0IFJPVVRFX1BBUkFNRVRFUl9MSVNUX0tFWSA9IFN5bWJvbCgncGxhY2U6cm91dGU6cGFyYW1ldGVycycpO1xuXG5leHBvcnQgY2xhc3MgUGxhY2VDb21wb25lbnQgZXh0ZW5kcyBEaXNwb3NhYmxlQ29tcG9uZW50IHtcblxuICBwcml2YXRlIHZpc2l0OiBWYWx1ZU1vZGVsPFZpc2l0PjtcbiAgLy8gcHJpdmF0ZSBfaW5EZWFjdGl2YXRpb25HdWFyZCA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxib29sZWFuPihmYWxzZSk7XG5cbiAgaW50ZXJhY3Rpb25Db250ZXh0PzogSW50ZXJhY3Rpb25Db250ZXh0O1xuXG4gIGNhbkRlYWN0aXZhdGU/KCk6IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdWJsaWMgaW5pdGlhbGlzZUJpbmRpbmdzKHZpc2l0OiBWYWx1ZU1vZGVsPFZpc2l0Pikge1xuICAgIGFzc2VydC5pc05pbCh0aGlzLnZpc2l0KTtcbiAgICB0aGlzLnZpc2l0ID0gdmlzaXQ7XG4gICAgdGhpcy5wbGFjZURlZmluaXRpb24uZ2V0VmlzaXRQYXJhbWV0ZXJEZWZzKCkuZm9yRWFjaChwYXJhbWV0ZXJEZWYgPT4ge1xuICAgICAgdGhpcy5pbnN0YWxsQmluZGluZyhwYXJhbWV0ZXJEZWYpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnN0YWxsQmluZGluZzxULCBTPihwYXJhbWV0ZXJEZWY6IFBhcmFtZXRlckRlZmluaXRpb248VCwgUz4pIHtcbiAgICBjb25zdCBtb2RlbCA9IHRoaXNbcGFyYW1ldGVyRGVmLnByb3BlcnR5TmFtZV0gYXMgSU11dGFibGVIYXNWYWx1ZTxTPjtcbiAgICAvLyB0aGlzLnR4by5vYnNlcnZlKHBhcmFtZXRlckRlZi5wcm9wZXJ0eU5hbWUsIG1vZGVsKTtcbiAgICB0aGlzLnJlZ2lzdGVyRGlzcG9zYWJsZShuZXcgQmluZGluZyh0aGlzLnZpc2l0LCBtb2RlbCwge1xuICAgICAgdG9SaWdodCh2aXNpdDogVmlzaXQpOiBTIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB2aXNpdC5nZXRQYXJhbWV0ZXIocGFyYW1ldGVyRGVmLm5hbWUpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZygncHVzaCB0byBjb21wb25lbnQnLCB7bmFtZTpwYXJhbWV0ZXJEZWYubmFtZSwgdmFsdWUsIHZpc2l0fSk7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH0sXG4gICAgICB0b0xlZnQodmFsdWU6IFMsIGN1cnJlbnRWaXNpdD86IFZpc2l0KTogVmlzaXQge1xuICAgICAgICBjb25zb2xlLmxvZygncHVzaCB0byByb3V0ZScsIHsgbmFtZTogcGFyYW1ldGVyRGVmLm5hbWUsIHZhbHVlLCBjdXJyZW50VmlzaXQgfSk7XG4gICAgICAgIHJldHVybiBjdXJyZW50VmlzaXQucmVwbGFjZShwYXJhbWV0ZXJEZWYsIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuICBATWVtb2l6ZSgpXG4gIGdldCBwbGFjZURlZmluaXRpb24oKTogUGxhY2VEZWZpbml0aW9uIHtcbiAgICByZXR1cm4gUGxhY2VDb21wb25lbnQuZ2V0RGVmaW5pdGlvbih0aGlzLmNvbnN0cnVjdG9yIGFzIGFueSBhcyBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50Pik7XG4gIH1cblxuICBnZXQgY2hpbGRQbGFjZXMoKTogQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD5bXSB7XG4gICAgcmV0dXJuIHRoaXMucGxhY2VEZWZpbml0aW9uLmNoaWxkcmVuLm1hcChkID0+IGQuY29tcG9uZW50KTtcbiAgfVxuXG4gIG9uUGxhY2VSZWFkeSgpIHtcbiAgfVxuXG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgUGxhY2VDb21wb25lbnQge1xuXG4gIGV4cG9ydCBmdW5jdGlvbiBpc1BsYWNlQ29tcG9uZW50Q29uc3RydWN0b3IodGFyZ2V0OiBhbnkpOiB0YXJnZXQgaXMgQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4ge1xuICAgIHJldHVybiBsYW5nLmNvbnN0cnVjdG9yQ2hhaW4odGFyZ2V0IGFzIENvbnN0cnVjdGFibGU8YW55PikuaW5jbHVkZXMoUGxhY2VDb21wb25lbnQpO1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGdldFJvdXRlUGFyYW1ldGVycyhrbGFzczogQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4pOiBQYXJhbWV0ZXJEZWZpbml0aW9uPGFueT5bXSB7XG4gICAgcmV0dXJuIEtsYXNzLmdldChrbGFzcykuZ2V0TWV0YWRhdGFMaXN0KFJPVVRFX1BBUkFNRVRFUl9MSVNUX0tFWSk7XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gZ2V0RGVmaW5pdGlvbihrbGFzczogQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD4pOiBQbGFjZURlZmluaXRpb24ge1xuICAgIHJldHVybiBSZWZsZWN0LmdldE1ldGFkYXRhKERFRklOSVRJT05fTUVUQV9EQVRBX0tFWSwga2xhc3MpO1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGluamVjdERlZmluaXRpb24oa2xhc3M6IENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+LCBkZWZpbml0aW9uOiBQbGFjZURlZmluaXRpb24pIHtcbiAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKERFRklOSVRJT05fTUVUQV9EQVRBX0tFWSwgZGVmaW5pdGlvbiwga2xhc3MpO1xuICB9XG5cbn1cbiJdfQ==