@coolon/angular-ui-powerups 0.0.8 → 0.0.10

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 (53) hide show
  1. package/bundles/coolon-angular-ui-powerups.umd.js +592 -167
  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 +12 -11
  6. package/coolon-angular-ui-powerups.metadata.json +1 -1
  7. package/esm2015/coolon-angular-ui-powerups.js +12 -11
  8. package/esm2015/index.js +2 -2
  9. package/esm2015/lib/animations/slideDownAndUpAnimation.js +2 -1
  10. package/esm2015/lib/components/forms/abstract-input.component.js +22 -12
  11. package/esm2015/lib/directives/command.directive.js +48 -4
  12. package/esm2015/lib/directives/focus-binding.directive.js +30 -14
  13. package/esm2015/lib/interaction/services/dialog-interaction.service.js +3 -1
  14. package/esm2015/lib/place/components/busy-overlay/busy-overlay.component.js +4 -4
  15. package/esm2015/lib/place/components/nav/nav.component.js +31 -0
  16. package/esm2015/lib/place/guards/place-route.guard.js +3 -3
  17. package/esm2015/lib/place/index.js +4 -3
  18. package/esm2015/lib/place/place.module.js +16 -5
  19. package/esm2015/lib/place/route/parameter-decorators.js +98 -2
  20. package/esm2015/lib/place/route/parameter-definition.class.js +4 -2
  21. package/esm2015/lib/place/route/route-parameter-bindings.js +25 -13
  22. package/esm2015/lib/place/route/route-parameter-sanitiser.js +206 -74
  23. package/esm2015/public_api.js +2 -2
  24. package/esm5/coolon-angular-ui-powerups.js +12 -11
  25. package/esm5/index.js +2 -2
  26. package/esm5/lib/animations/slideDownAndUpAnimation.js +2 -1
  27. package/esm5/lib/components/forms/abstract-input.component.js +26 -12
  28. package/esm5/lib/directives/command.directive.js +52 -4
  29. package/esm5/lib/directives/focus-binding.directive.js +34 -14
  30. package/esm5/lib/interaction/services/dialog-interaction.service.js +3 -1
  31. package/esm5/lib/place/components/busy-overlay/busy-overlay.component.js +4 -4
  32. package/esm5/lib/place/components/nav/nav.component.js +36 -0
  33. package/esm5/lib/place/guards/place-route.guard.js +3 -3
  34. package/esm5/lib/place/index.js +4 -3
  35. package/esm5/lib/place/place.module.js +16 -5
  36. package/esm5/lib/place/route/parameter-decorators.js +98 -2
  37. package/esm5/lib/place/route/parameter-definition.class.js +4 -2
  38. package/esm5/lib/place/route/route-parameter-bindings.js +25 -13
  39. package/esm5/lib/place/route/route-parameter-sanitiser.js +284 -92
  40. package/esm5/public_api.js +2 -2
  41. package/fesm2015/coolon-angular-ui-powerups.js +473 -121
  42. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  43. package/fesm5/coolon-angular-ui-powerups.js +562 -139
  44. package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
  45. package/lib/components/forms/abstract-input.component.d.ts +9 -8
  46. package/lib/directives/command.directive.d.ts +6 -3
  47. package/lib/directives/focus-binding.directive.d.ts +1 -0
  48. package/lib/place/components/nav/nav.component.d.ts +7 -0
  49. package/lib/place/index.d.ts +1 -0
  50. package/lib/place/route/parameter-decorators.d.ts +17 -0
  51. package/lib/place/route/parameter-definition.class.d.ts +4 -3
  52. package/lib/place/route/route-parameter-sanitiser.d.ts +33 -6
  53. package/package.json +2 -2
@@ -3,43 +3,170 @@
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, Trace } from '@coolon/pectin';
6
+ import { assert } from '@coolon/pectin';
7
7
  import { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';
8
+ import * as _ from 'lodash';
9
+ /**
10
+ * @abstract
11
+ * @template T, S
12
+ */
13
+ var /**
14
+ * @abstract
15
+ * @template T, S
16
+ */
17
+ Sanitiser = /** @class */ (function () {
18
+ function Sanitiser(parameterDef, snapshot, sanitiser) {
19
+ this.parameterDef = parameterDef;
20
+ this.snapshot = snapshot;
21
+ this.sanitiser = sanitiser;
22
+ }
23
+ /**
24
+ * @return {?}
25
+ */
26
+ Sanitiser.prototype.isRouteId = /**
27
+ * @return {?}
28
+ */
29
+ function () {
30
+ return this.parameterDef.isRouteId;
31
+ };
32
+ Object.defineProperty(Sanitiser.prototype, "valueChanged", {
33
+ get: /**
34
+ * @return {?}
35
+ */
36
+ function () {
37
+ return !_.isNil(this.initialValue) && this.hasChanged(this.initialValue, this.sanitisedValue);
38
+ },
39
+ enumerable: true,
40
+ configurable: true
41
+ });
42
+ Object.defineProperty(Sanitiser.prototype, "sanitisedValue", {
43
+ get: /**
44
+ * @return {?}
45
+ */
46
+ function () {
47
+ return this._sanitisedValue;
48
+ },
49
+ enumerable: true,
50
+ configurable: true
51
+ });
52
+ /**
53
+ * @return {?}
54
+ */
55
+ Sanitiser.prototype.sanitize = /**
56
+ * @return {?}
57
+ */
58
+ function () {
59
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
60
+ var _a;
61
+ return tslib_1.__generator(this, function (_b) {
62
+ switch (_b.label) {
63
+ case 0:
64
+ if (!this.sanitiser) return [3 /*break*/, 2];
65
+ this.initialValue = this.readFrom(this.snapshot);
66
+ _a = this;
67
+ return [4 /*yield*/, this.sanitiser.sanitise(this.initialValue)];
68
+ case 1:
69
+ _a._sanitisedValue = _b.sent();
70
+ if (this.initialValue !== this._sanitisedValue) {
71
+ return [2 /*return*/, false];
72
+ }
73
+ _b.label = 2;
74
+ case 2: return [2 /*return*/, true];
75
+ }
76
+ });
77
+ });
78
+ };
79
+ return Sanitiser;
80
+ }());
81
+ /**
82
+ * @abstract
83
+ * @template T, S
84
+ */
85
+ export { Sanitiser };
86
+ if (false) {
87
+ /**
88
+ * @type {?}
89
+ * @private
90
+ */
91
+ Sanitiser.prototype.initialValue;
92
+ /**
93
+ * @type {?}
94
+ * @private
95
+ */
96
+ Sanitiser.prototype._sanitisedValue;
97
+ /** @type {?} */
98
+ Sanitiser.prototype.parameterDef;
99
+ /** @type {?} */
100
+ Sanitiser.prototype.snapshot;
101
+ /** @type {?} */
102
+ Sanitiser.prototype.sanitiser;
103
+ /**
104
+ * @abstract
105
+ * @protected
106
+ * @param {?} snapshot
107
+ * @return {?}
108
+ */
109
+ Sanitiser.prototype.readFrom = function (snapshot) { };
110
+ /**
111
+ * @abstract
112
+ * @protected
113
+ * @param {?} initialValue
114
+ * @param {?} sanitisedValue
115
+ * @return {?}
116
+ */
117
+ Sanitiser.prototype.hasChanged = function (initialValue, sanitisedValue) { };
118
+ /**
119
+ * @abstract
120
+ * @param {?} dest
121
+ * @return {?}
122
+ */
123
+ Sanitiser.prototype.injectRouteParam = function (dest) { };
124
+ }
8
125
  var RouteParameterSanitiser = /** @class */ (function () {
9
- function RouteParameterSanitiser(parameterDefs, injector) {
126
+ function RouteParameterSanitiser(parameterDefs, snapshot, injector) {
127
+ var _this = this;
10
128
  this.parameterDefs = parameterDefs;
129
+ this.snapshot = snapshot;
11
130
  this.injector = injector;
12
- this.sanitisedParameters = [];
13
- this.routeParameter = parameterDefs.find((/**
131
+ this.parameterSanitisers = [];
132
+ /** @type {?} */
133
+ var sanitisers = parameterDefs.map((/**
134
+ * @param {?} def
135
+ * @return {?}
136
+ */
137
+ function (def) {
138
+ return def.isArray ?
139
+ new Sanitiser.Array(def, snapshot, _this.getSanitiser(def)) :
140
+ new Sanitiser.Value(def, snapshot, _this.getSanitiser(def));
141
+ }));
142
+ this.routeIdSanitiser = sanitisers.find((/**
14
143
  * @param {?} p
15
144
  * @return {?}
16
145
  */
17
- function (p) { return p.isRouteId; }));
18
- this.queryParameters = parameterDefs.filter((/**
146
+ function (p) { return p.isRouteId(); }));
147
+ this.parameterSanitisers = sanitisers.filter((/**
19
148
  * @param {?} p
20
149
  * @return {?}
21
150
  */
22
- function (p) { return !p.isRouteId; }));
151
+ function (p) { return !p.isRouteId(); }));
23
152
  }
24
153
  /**
25
- * @param {?} snapshot
26
154
  * @return {?}
27
155
  */
28
156
  RouteParameterSanitiser.prototype.sanitise = /**
29
- * @param {?} snapshot
30
157
  * @return {?}
31
158
  */
32
- function (snapshot) {
159
+ function () {
33
160
  return tslib_1.__awaiter(this, void 0, void 0, function () {
34
- var e_1, _a, routeOk, _b, _c, param, e_1_1;
161
+ var e_1, _a, _b, _c, sanitiser, e_1_1;
35
162
  return tslib_1.__generator(this, function (_d) {
36
163
  switch (_d.label) {
37
164
  case 0:
38
- if (!this.routeParameter) return [3 /*break*/, 2];
39
- return [4 /*yield*/, this.sanitiseParameter(this.routeParameter, snapshot.paramMap.get(this.routeParameter.name))];
165
+ if (!this.routeIdSanitiser) return [3 /*break*/, 2];
166
+ return [4 /*yield*/, this.routeIdSanitiser.sanitize()];
40
167
  case 1:
41
- routeOk = _d.sent();
42
- if (!routeOk) {
168
+ _d.sent();
169
+ if (this.routeIdSanitiser.valueChanged) {
43
170
  // if the route id isn't ok we redirect immediately as the query params may need to be sanitised in the
44
171
  // context of the route id.
45
172
  return [2 /*return*/, false];
@@ -47,12 +174,12 @@ var RouteParameterSanitiser = /** @class */ (function () {
47
174
  _d.label = 2;
48
175
  case 2:
49
176
  _d.trys.push([2, 7, 8, 9]);
50
- _b = tslib_1.__values(this.queryParameters), _c = _b.next();
177
+ _b = tslib_1.__values(this.parameterSanitisers), _c = _b.next();
51
178
  _d.label = 3;
52
179
  case 3:
53
180
  if (!!_c.done) return [3 /*break*/, 6];
54
- param = _c.value;
55
- return [4 /*yield*/, this.sanitiseParameter(param, snapshot.queryParamMap.get(param.name))];
181
+ sanitiser = _c.value;
182
+ return [4 /*yield*/, sanitiser.sanitize()];
56
183
  case 4:
57
184
  _d.sent();
58
185
  _d.label = 5;
@@ -70,42 +197,11 @@ var RouteParameterSanitiser = /** @class */ (function () {
70
197
  }
71
198
  finally { if (e_1) throw e_1.error; }
72
199
  return [7 /*endfinally*/];
73
- case 9: return [2 /*return*/, this.sanitisedParameters.length === 0];
74
- }
75
- });
76
- });
77
- };
78
- /**
79
- * @template T
80
- * @param {?} def
81
- * @param {?} formattedInitialValue
82
- * @return {?}
83
- */
84
- RouteParameterSanitiser.prototype.sanitiseParameter = /**
85
- * @template T
86
- * @param {?} def
87
- * @param {?} formattedInitialValue
88
- * @return {?}
89
- */
90
- function (def, formattedInitialValue) {
91
- return tslib_1.__awaiter(this, void 0, void 0, function () {
92
- var sanitiser, initialValue, sanitisedValue;
93
- return tslib_1.__generator(this, function (_a) {
94
- switch (_a.label) {
95
- case 0:
96
- if (!def) return [3 /*break*/, 2];
97
- sanitiser = this.getSanitiser(def);
98
- if (!sanitiser) return [3 /*break*/, 2];
99
- initialValue = def.type.parse(formattedInitialValue);
100
- return [4 /*yield*/, sanitiser.sanitise(initialValue)];
101
- case 1:
102
- sanitisedValue = _a.sent();
103
- if (initialValue !== sanitisedValue) {
104
- this.sanitisedParameters.push({ def: def, value: def.type.format(sanitisedValue) });
105
- return [2 /*return*/, false];
106
- }
107
- _a.label = 2;
108
- case 2: return [2 /*return*/, true];
200
+ case 9: return [2 /*return*/, !this.parameterSanitisers.find((/**
201
+ * @param {?} s
202
+ * @return {?}
203
+ */
204
+ function (s) { return s.valueChanged; }))];
109
205
  }
110
206
  });
111
207
  });
@@ -119,57 +215,36 @@ var RouteParameterSanitiser = /** @class */ (function () {
119
215
  * @return {?}
120
216
  */
121
217
  function (router) {
122
- var _this = this;
123
- assert.isTruthy(this.sanitisedParameters.length !== 0);
124
- /** @type {?} */
125
- var sanitisedRouteId = this.sanitisedParameters.find((/**
126
- * @param {?} s
127
- * @return {?}
128
- */
129
- function (s) { return s.def === _this.routeParameter; }));
130
- if (sanitisedRouteId) {
131
- return router.navigate(['..', sanitisedRouteId.value]);
218
+ assert.isTruthy(this.parameterSanitisers.length !== 0);
219
+ if (this.routeIdSanitiser.valueChanged) {
220
+ return router.navigate(['..', this.routeIdSanitiser.sanitisedValue]);
132
221
  }
133
222
  else {
134
223
  /** @type {?} */
135
- var queryParams = this.sanitisedParameters.filter((/**
224
+ var routeParams_1 = {};
225
+ this.parameterSanitisers.forEach((/**
136
226
  * @param {?} s
137
227
  * @return {?}
138
228
  */
139
- function (s) { return s.def !== _this.routeParameter; }))
140
- .reduce((/**
141
- * @param {?} params
142
- * @param {?} item
143
- * @return {?}
144
- */
145
- function (params, item) {
146
- var _a;
147
- return (tslib_1.__assign({}, params, (_a = {}, _a[item.def.name] = item.value, _a)));
148
- }), {});
149
- return router.navigate(['.', queryParams]);
229
+ function (s) { return s.injectRouteParam(routeParams_1); }));
230
+ return router.navigate(['.', routeParams_1]);
150
231
  }
151
232
  };
152
233
  /**
153
234
  * @private
154
- * @template T
235
+ * @template T, S
155
236
  * @param {?} def
156
237
  * @return {?}
157
238
  */
158
239
  RouteParameterSanitiser.prototype.getSanitiser = /**
159
240
  * @private
160
- * @template T
241
+ * @template T, S
161
242
  * @param {?} def
162
243
  * @return {?}
163
244
  */
164
245
  function (def) {
165
246
  return def.sanitiser ? this.injector.get(def.sanitiser, new def.sanitiser()) : null;
166
247
  };
167
- tslib_1.__decorate([
168
- Trace(),
169
- tslib_1.__metadata("design:type", Function),
170
- tslib_1.__metadata("design:paramtypes", [Object, String]),
171
- tslib_1.__metadata("design:returntype", Promise)
172
- ], RouteParameterSanitiser.prototype, "sanitiseParameter", null);
173
248
  tslib_1.__decorate([
174
249
  Memoize(),
175
250
  tslib_1.__metadata("design:type", Function),
@@ -184,20 +259,137 @@ if (false) {
184
259
  * @type {?}
185
260
  * @private
186
261
  */
187
- RouteParameterSanitiser.prototype.routeParameter;
262
+ RouteParameterSanitiser.prototype.routeIdSanitiser;
188
263
  /**
189
264
  * @type {?}
190
265
  * @private
191
266
  */
192
- RouteParameterSanitiser.prototype.queryParameters;
193
- /**
194
- * @type {?}
195
- * @private
196
- */
197
- RouteParameterSanitiser.prototype.sanitisedParameters;
267
+ RouteParameterSanitiser.prototype.parameterSanitisers;
198
268
  /** @type {?} */
199
269
  RouteParameterSanitiser.prototype.parameterDefs;
200
270
  /** @type {?} */
271
+ RouteParameterSanitiser.prototype.snapshot;
272
+ /** @type {?} */
201
273
  RouteParameterSanitiser.prototype.injector;
202
274
  }
203
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtcGFyYW1ldGVyLXNhbml0aXNlci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbImxpYi9wbGFjZS9yb3V0ZS9yb3V0ZS1wYXJhbWV0ZXItc2FuaXRpc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFJM0U7SUFPRSxpQ0FBcUIsYUFBeUMsRUFBVyxRQUFrQjtRQUF0RSxrQkFBYSxHQUFiLGFBQWEsQ0FBNEI7UUFBVyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBRjFFLHdCQUFtQixHQUF1RCxFQUFFLENBQUM7UUFHNUYsSUFBSSxDQUFDLGNBQWMsR0FBRyxhQUFhLENBQUMsSUFBSTs7OztRQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxDQUFDLFNBQVMsRUFBWCxDQUFXLEVBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsZUFBZSxHQUFHLGFBQWEsQ0FBQyxNQUFNOzs7O1FBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQVosQ0FBWSxFQUFDLENBQUM7SUFDakUsQ0FBQzs7Ozs7SUFFSywwQ0FBUTs7OztJQUFkLFVBQWUsUUFBZ0M7Ozs7Ozs2QkFDekMsSUFBSSxDQUFDLGNBQWMsRUFBbkIsd0JBQW1CO3dCQUNMLHFCQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQTs7d0JBQTVHLE9BQU8sR0FBRyxTQUFrRzt3QkFDbEgsSUFBSSxDQUFDLE9BQU8sRUFBRTs0QkFDWix1R0FBdUc7NEJBQ3ZHLDJCQUEyQjs0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QUEwRDs7Ozs7SUFDMUQsa0RBQTZEOzs7OztJQUU3RCxzREFBOEY7O0lBRWxGLGdEQUFrRDs7SUFBRSwyQ0FBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGFzc2VydCwgVHJhY2UgfSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgeyBNZW1vaXplIH0gZnJvbSAnQHR5cGVzY3JpcHQtcGx1cy9mYXN0LW1lbW9pemUtZGVjb3JhdG9yL2Rpc3Qvc3JjJztcbmltcG9ydCB7IFBhcmFtZXRlckRlZmluaXRpb24gfSBmcm9tICcuL3BhcmFtZXRlci1kZWZpbml0aW9uLmNsYXNzJztcbmltcG9ydCB7IFBhcmFtZXRlclNhbml0aXNlciB9IGZyb20gJy4vcGFyYW1ldGVyLXNhbml0aXNlcic7XG5cbmV4cG9ydCBjbGFzcyBSb3V0ZVBhcmFtZXRlclNhbml0aXNlciB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZVBhcmFtZXRlcjogUGFyYW1ldGVyRGVmaW5pdGlvbjxhbnk+O1xuICBwcml2YXRlIHJlYWRvbmx5IHF1ZXJ5UGFyYW1ldGVyczogUGFyYW1ldGVyRGVmaW5pdGlvbjxhbnk+W107XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzYW5pdGlzZWRQYXJhbWV0ZXJzOiB7IGRlZjogUGFyYW1ldGVyRGVmaW5pdGlvbjxhbnk+LCB2YWx1ZTogc3RyaW5nIH1bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IHBhcmFtZXRlckRlZnM6IFBhcmFtZXRlckRlZmluaXRpb248YW55PltdLCByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICB0aGlzLnJvdXRlUGFyYW1ldGVyID0gcGFyYW1ldGVyRGVmcy5maW5kKHAgPT4gcC5pc1JvdXRlSWQpO1xuICAgIHRoaXMucXVlcnlQYXJhbWV0ZXJzID0gcGFyYW1ldGVyRGVmcy5maWx0ZXIocCA9PiAhcC5pc1JvdXRlSWQpO1xuICB9XG5cbiAgYXN5bmMgc2FuaXRpc2Uoc25hcHNob3Q6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAodGhpcy5yb3V0ZVBhcmFtZXRlcikge1xuICAgICAgY29uc3Qgcm91dGVPayA9IGF3YWl0IHRoaXMuc2FuaXRpc2VQYXJhbWV0ZXIodGhpcy5yb3V0ZVBhcmFtZXRlciwgc25hcHNob3QucGFyYW1NYXAuZ2V0KHRoaXMucm91dGVQYXJhbWV0ZXIubmFtZSkpO1xuICAgICAgaWYgKCFyb3V0ZU9rKSB7XG4gICAgICAgIC8vIGlmIHRoZSByb3V0ZSBpZCBpc24ndCBvayB3ZSByZWRpcmVjdCBpbW1lZGlhdGVseSBhcyB0aGUgcXVlcnkgcGFyYW1zIG1heSBuZWVkIHRvIGJlIHNhbml0aXNlZCBpbiB0aGVcbiAgICAgICAgLy8gY29udGV4dCBvZiB0aGUgcm91dGUgaWQuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChjb25zdCBwYXJhbSBvZiB0aGlzLnF1ZXJ5UGFyYW1ldGVycykge1xuICAgICAgYXdhaXQgdGhpcy5zYW5pdGlzZVBhcmFtZXRlcihwYXJhbSwgc25hcHNob3QucXVlcnlQYXJhbU1hcC5nZXQocGFyYW0ubmFtZSkpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zYW5pdGlzZWRQYXJhbWV0ZXJzLmxlbmd0aCA9PT0gMDtcbiAgfVxuXG4gIEBUcmFjZSgpXG4gIGFzeW5jIHNhbml0aXNlUGFyYW1ldGVyPFQ+KGRlZjogUGFyYW1ldGVyRGVmaW5pdGlvbjxUPiwgZm9ybWF0dGVkSW5pdGlhbFZhbHVlOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAoZGVmKSB7XG4gICAgICBjb25zdCBzYW5pdGlzZXIgPSB0aGlzLmdldFNhbml0aXNlcihkZWYpO1xuICAgICAgaWYgKHNhbml0aXNlcikge1xuICAgICAgICBjb25zdCBpbml0aWFsVmFsdWUgPSBkZWYudHlwZS5wYXJzZShmb3JtYXR0ZWRJbml0aWFsVmFsdWUpO1xuICAgICAgICBjb25zdCBzYW5pdGlzZWRWYWx1ZSA9IGF3YWl0IHNhbml0aXNlci5zYW5pdGlzZShpbml0aWFsVmFsdWUpO1xuICAgICAgICBpZiAoaW5pdGlhbFZhbHVlICE9PSBzYW5pdGlzZWRWYWx1ZSkge1xuICAgICAgICAgIHRoaXMuc2FuaXRpc2VkUGFyYW1ldGVycy5wdXNoKHsgZGVmLCB2YWx1ZTogZGVmLnR5cGUuZm9ybWF0KHNhbml0aXNlZFZhbHVlKSB9KTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZWRpcmVjdChyb3V0ZXI6IFJvdXRlcikge1xuICAgIGFzc2VydC5pc1RydXRoeSh0aGlzLnNhbml0aXNlZFBhcmFtZXRlcnMubGVuZ3RoICE9PSAwKTtcbiAgICBjb25zdCBzYW5pdGlzZWRSb3V0ZUlkID0gdGhpcy5zYW5pdGlzZWRQYXJhbWV0ZXJzLmZpbmQocyA9PiBzLmRlZiA9PT0gdGhpcy5yb3V0ZVBhcmFtZXRlcik7XG4gICAgaWYgKHNhbml0aXNlZFJvdXRlSWQpIHtcbiAgICAgIHJldHVybiByb3V0ZXIubmF2aWdhdGUoWycuLicsIHNhbml0aXNlZFJvdXRlSWQudmFsdWVdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcXVlcnlQYXJhbXMgPSB0aGlzLnNhbml0aXNlZFBhcmFtZXRlcnMuZmlsdGVyKHMgPT4gcy5kZWYgIT09IHRoaXMucm91dGVQYXJhbWV0ZXIpXG4gICAgICAgIC5yZWR1Y2UoKHBhcmFtcywgaXRlbSkgPT4gKHsgLi4ucGFyYW1zLCBbaXRlbS5kZWYubmFtZV06IGl0ZW0udmFsdWUgfSksIHt9KTtcbiAgICAgIHJldHVybiByb3V0ZXIubmF2aWdhdGUoWycuJywgcXVlcnlQYXJhbXNdKTtcbiAgICB9XG4gIH1cblxuICBATWVtb2l6ZSgpXG4gIHByaXZhdGUgZ2V0U2FuaXRpc2VyPFQ+KGRlZjogUGFyYW1ldGVyRGVmaW5pdGlvbjxUPik6IFBhcmFtZXRlclNhbml0aXNlcjxUPiB7XG4gICAgcmV0dXJuIGRlZi5zYW5pdGlzZXIgPyB0aGlzLmluamVjdG9yLmdldDxQYXJhbWV0ZXJTYW5pdGlzZXI8VD4+KGRlZi5zYW5pdGlzZXIsIG5ldyBkZWYuc2FuaXRpc2VyKCkpIDogbnVsbDtcbiAgfVxufVxuIl19
275
+ (function (Sanitiser) {
276
+ /**
277
+ * @template T
278
+ */
279
+ var /**
280
+ * @template T
281
+ */
282
+ Value = /** @class */ (function (_super) {
283
+ tslib_1.__extends(Value, _super);
284
+ function Value() {
285
+ return _super !== null && _super.apply(this, arguments) || this;
286
+ }
287
+ /**
288
+ * @param {?} snapshot
289
+ * @return {?}
290
+ */
291
+ Value.prototype.readFrom = /**
292
+ * @param {?} snapshot
293
+ * @return {?}
294
+ */
295
+ function (snapshot) {
296
+ /** @type {?} */
297
+ var rawValue = this.parameterDef.isRouteId ?
298
+ snapshot.paramMap.get(this.parameterDef.name) :
299
+ snapshot.queryParamMap.get(this.parameterDef.name);
300
+ return this.parameterDef.type.parse(rawValue);
301
+ };
302
+ /**
303
+ * @protected
304
+ * @param {?} initialValue
305
+ * @param {?} sanitisedValue
306
+ * @return {?}
307
+ */
308
+ Value.prototype.hasChanged = /**
309
+ * @protected
310
+ * @param {?} initialValue
311
+ * @param {?} sanitisedValue
312
+ * @return {?}
313
+ */
314
+ function (initialValue, sanitisedValue) {
315
+ return initialValue !== sanitisedValue;
316
+ };
317
+ /**
318
+ * @param {?} dest
319
+ * @return {?}
320
+ */
321
+ Value.prototype.injectRouteParam = /**
322
+ * @param {?} dest
323
+ * @return {?}
324
+ */
325
+ function (dest) {
326
+ dest[this.parameterDef.name] = this.parameterDef.type.format(this.sanitisedValue);
327
+ };
328
+ return Value;
329
+ }(Sanitiser));
330
+ Sanitiser.Value = Value;
331
+ /**
332
+ * @template T
333
+ */
334
+ var /**
335
+ * @template T
336
+ */
337
+ Array = /** @class */ (function (_super) {
338
+ tslib_1.__extends(Array, _super);
339
+ function Array() {
340
+ return _super !== null && _super.apply(this, arguments) || this;
341
+ }
342
+ /**
343
+ * @param {?} snapshot
344
+ * @return {?}
345
+ */
346
+ Array.prototype.readFrom = /**
347
+ * @param {?} snapshot
348
+ * @return {?}
349
+ */
350
+ function (snapshot) {
351
+ var _this = this;
352
+ /** @type {?} */
353
+ var rawValues = snapshot.queryParamMap.getAll(this.parameterDef.name);
354
+ return rawValues.map((/**
355
+ * @param {?} value
356
+ * @return {?}
357
+ */
358
+ function (value) { return _this.parameterDef.type.parse(value); }));
359
+ };
360
+ /**
361
+ * @protected
362
+ * @param {?} initialValue
363
+ * @param {?} sanitisedValue
364
+ * @return {?}
365
+ */
366
+ Array.prototype.hasChanged = /**
367
+ * @protected
368
+ * @param {?} initialValue
369
+ * @param {?} sanitisedValue
370
+ * @return {?}
371
+ */
372
+ function (initialValue, sanitisedValue) {
373
+ return initialValue !== sanitisedValue;
374
+ };
375
+ /**
376
+ * @param {?} dest
377
+ * @return {?}
378
+ */
379
+ Array.prototype.injectRouteParam = /**
380
+ * @param {?} dest
381
+ * @return {?}
382
+ */
383
+ function (dest) {
384
+ var _this = this;
385
+ dest[this.parameterDef.name] = this.sanitisedValue.map((/**
386
+ * @param {?} v
387
+ * @return {?}
388
+ */
389
+ function (v) { return _this.parameterDef.type.format(v); }));
390
+ };
391
+ return Array;
392
+ }(Sanitiser));
393
+ Sanitiser.Array = Array;
394
+ })(Sanitiser || (Sanitiser = {}));
395
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtcGFyYW1ldGVyLXNhbml0aXNlci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbImxpYi9wbGFjZS9yb3V0ZS9yb3V0ZS1wYXJhbWV0ZXItc2FuaXRpc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUczRSxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQzs7Ozs7QUFFNUI7Ozs7O0lBS0UsbUJBQXFCLFlBQW9DLEVBQVcsUUFBK0IsRUFBVyxTQUFnQztRQUF6SCxpQkFBWSxHQUFaLFlBQVksQ0FBd0I7UUFBVyxhQUFRLEdBQVIsUUFBUSxDQUF1QjtRQUFXLGNBQVMsR0FBVCxTQUFTLENBQXVCO0lBQzlJLENBQUM7Ozs7SUFFRCw2QkFBUzs7O0lBQVQ7UUFDRSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxzQkFBSSxtQ0FBWTs7OztRQUFoQjtZQUNFLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2hHLENBQUM7OztPQUFBO0lBRUQsc0JBQUkscUNBQWM7Ozs7UUFBbEI7WUFDRSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDOUIsQ0FBQzs7O09BQUE7Ozs7SUFPSyw0QkFBUTs7O0lBQWQ7Ozs7Ozs2QkFDTSxJQUFJLENBQUMsU0FBUyxFQUFkLHdCQUFjO3dCQUNoQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO3dC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O1lBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxLQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQWhDLENBQWdDLEVBQUMsQ0FBQztRQUNoRyxDQUFDO1FBR0gsWUFBQztJQUFELENBQUMsQUFqQkQsQ0FBOEIsU0FBUyxHQWlCdEM7SUFqQlksZUFBSyxRQWlCakIsQ0FBQTtBQUVILENBQUMsRUF6Q2dCLFNBQVMsS0FBVCxTQUFTLFFBeUN6QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IHsgTWVtb2l6ZSB9IGZyb20gJ0B0eXBlc2NyaXB0LXBsdXMvZmFzdC1tZW1vaXplLWRlY29yYXRvci9kaXN0L3NyYyc7XG5pbXBvcnQgeyBQYXJhbWV0ZXJEZWZpbml0aW9uIH0gZnJvbSAnLi9wYXJhbWV0ZXItZGVmaW5pdGlvbi5jbGFzcyc7XG5pbXBvcnQgeyBQYXJhbWV0ZXJTYW5pdGlzZXIgfSBmcm9tICcuL3BhcmFtZXRlci1zYW5pdGlzZXInO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2FuaXRpc2VyPFQsIFM+IHtcblxuICBwcml2YXRlIGluaXRpYWxWYWx1ZTogUztcbiAgcHJpdmF0ZSBfc2FuaXRpc2VkVmFsdWU6IFM7XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgcGFyYW1ldGVyRGVmOiBQYXJhbWV0ZXJEZWZpbml0aW9uPFQ+LCByZWFkb25seSBzbmFwc2hvdDpBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCByZWFkb25seSBzYW5pdGlzZXI6IFBhcmFtZXRlclNhbml0aXNlcjxTPikge1xuICB9XG5cbiAgaXNSb3V0ZUlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnBhcmFtZXRlckRlZi5pc1JvdXRlSWQ7XG4gIH1cblxuICBnZXQgdmFsdWVDaGFuZ2VkKCk6Ym9vbGVhbiB7XG4gICAgcmV0dXJuICFfLmlzTmlsKHRoaXMuaW5pdGlhbFZhbHVlKSAmJiB0aGlzLmhhc0NoYW5nZWQodGhpcy5pbml0aWFsVmFsdWUsIHRoaXMuc2FuaXRpc2VkVmFsdWUpO1xuICB9XG5cbiAgZ2V0IHNhbml0aXNlZFZhbHVlKCk6UyB7XG4gICAgcmV0dXJuIHRoaXMuX3Nhbml0aXNlZFZhbHVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHJlYWRGcm9tKHNuYXBzaG90OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogUztcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGhhc0NoYW5nZWQoaW5pdGlhbFZhbHVlOlMsIHNhbml0aXNlZFZhbHVlOlMpOiBib29sZWFuO1xuXG4gIGFic3RyYWN0IGluamVjdFJvdXRlUGFyYW0oZGVzdDoge30pO1xuXG4gIGFzeW5jIHNhbml0aXplKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICh0aGlzLnNhbml0aXNlcikge1xuICAgICAgdGhpcy5pbml0aWFsVmFsdWUgPSB0aGlzLnJlYWRGcm9tKHRoaXMuc25hcHNob3QpO1xuICAgICAgdGhpcy5fc2FuaXRpc2VkVmFsdWUgPSBhd2FpdCB0aGlzLnNhbml0aXNlci5zYW5pdGlzZSh0aGlzLmluaXRpYWxWYWx1ZSk7XG4gICAgICBpZiAodGhpcy5pbml0aWFsVmFsdWUgIT09IHRoaXMuX3Nhbml0aXNlZFZhbHVlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuXG5leHBvcnQgY2xhc3MgUm91dGVQYXJhbWV0ZXJTYW5pdGlzZXIge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVJZFNhbml0aXNlcjogU2FuaXRpc2VyPGFueSwgYW55PjtcbiAgcHJpdmF0ZSByZWFkb25seSBwYXJhbWV0ZXJTYW5pdGlzZXJzOiBTYW5pdGlzZXI8YW55LCBhbnk+W10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBwYXJhbWV0ZXJEZWZzOiBQYXJhbWV0ZXJEZWZpbml0aW9uPGFueT5bXSwgcmVhZG9ubHkgc25hcHNob3Q6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgIGNvbnN0IHNhbml0aXNlcnMgPSBwYXJhbWV0ZXJEZWZzLm1hcChkZWYgPT4ge1xuICAgICAgcmV0dXJuIGRlZi5pc0FycmF5ID9cbiAgICAgICAgbmV3IFNhbml0aXNlci5BcnJheShkZWYsIHNuYXBzaG90LCB0aGlzLmdldFNhbml0aXNlcihkZWYpKSA6XG4gICAgICAgIG5ldyBTYW5pdGlzZXIuVmFsdWUoZGVmLCBzbmFwc2hvdCwgdGhpcy5nZXRTYW5pdGlzZXIoZGVmKSk7XG4gICAgfSk7XG4gICAgdGhpcy5yb3V0ZUlkU2FuaXRpc2VyID0gc2FuaXRpc2Vycy5maW5kKHAgPT4gcC5pc1JvdXRlSWQoKSk7XG4gICAgdGhpcy5wYXJhbWV0ZXJTYW5pdGlzZXJzID0gc2FuaXRpc2Vycy5maWx0ZXIocCA9PiAhcC5pc1JvdXRlSWQoKSk7XG4gIH1cblxuICBhc3luYyBzYW5pdGlzZSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAodGhpcy5yb3V0ZUlkU2FuaXRpc2VyKSB7XG4gICAgICBhd2FpdCB0aGlzLnJvdXRlSWRTYW5pdGlzZXIuc2FuaXRpemUoKTtcbiAgICAgIGlmICh0aGlzLnJvdXRlSWRTYW5pdGlzZXIudmFsdWVDaGFuZ2VkKSB7XG4gICAgICAgIC8vIGlmIHRoZSByb3V0ZSBpZCBpc24ndCBvayB3ZSByZWRpcmVjdCBpbW1lZGlhdGVseSBhcyB0aGUgcXVlcnkgcGFyYW1zIG1heSBuZWVkIHRvIGJlIHNhbml0aXNlZCBpbiB0aGVcbiAgICAgICAgLy8gY29udGV4dCBvZiB0aGUgcm91dGUgaWQuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChjb25zdCBzYW5pdGlzZXIgb2YgdGhpcy5wYXJhbWV0ZXJTYW5pdGlzZXJzKSB7XG4gICAgICAgIGF3YWl0IHNhbml0aXNlci5zYW5pdGl6ZSgpO1xuICAgIH1cbiAgICByZXR1cm4gIXRoaXMucGFyYW1ldGVyU2FuaXRpc2Vycy5maW5kKHMgPT4gcy52YWx1ZUNoYW5nZWQpO1xuICB9XG5cbiAgcmVkaXJlY3Qocm91dGVyOiBSb3V0ZXIpIHtcbiAgICBhc3NlcnQuaXNUcnV0aHkodGhpcy5wYXJhbWV0ZXJTYW5pdGlzZXJzLmxlbmd0aCAhPT0gMCk7XG4gICAgaWYgKHRoaXMucm91dGVJZFNhbml0aXNlci52YWx1ZUNoYW5nZWQpIHtcbiAgICAgIHJldHVybiByb3V0ZXIubmF2aWdhdGUoWycuLicsIHRoaXMucm91dGVJZFNhbml0aXNlci5zYW5pdGlzZWRWYWx1ZV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCByb3V0ZVBhcmFtcyA9IHt9O1xuICAgICAgdGhpcy5wYXJhbWV0ZXJTYW5pdGlzZXJzLmZvckVhY2gocyA9PiBzLmluamVjdFJvdXRlUGFyYW0ocm91dGVQYXJhbXMpKTtcbiAgICAgIHJldHVybiByb3V0ZXIubmF2aWdhdGUoWycuJywgcm91dGVQYXJhbXNdKTtcbiAgICB9XG4gIH1cblxuICBATWVtb2l6ZSgpXG4gIHByaXZhdGUgZ2V0U2FuaXRpc2VyPFQsIFM+KGRlZjogUGFyYW1ldGVyRGVmaW5pdGlvbjxULCBTPik6IFBhcmFtZXRlclNhbml0aXNlcjxTPiB7XG4gICAgcmV0dXJuIGRlZi5zYW5pdGlzZXIgPyB0aGlzLmluamVjdG9yLmdldDxQYXJhbWV0ZXJTYW5pdGlzZXI8Uz4+KGRlZi5zYW5pdGlzZXIsIG5ldyBkZWYuc2FuaXRpc2VyKCkpIDogbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgbmFtZXNwYWNlIFNhbml0aXNlciB7XG5cbiAgZXhwb3J0IGNsYXNzIFZhbHVlPFQ+IGV4dGVuZHMgU2FuaXRpc2VyPFQsIFQ+IHtcblxuICAgIHJlYWRGcm9tKHNuYXBzaG90OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogVCB7XG4gICAgICBjb25zdCByYXdWYWx1ZSA9IHRoaXMucGFyYW1ldGVyRGVmLmlzUm91dGVJZCA/XG4gICAgICAgIHNuYXBzaG90LnBhcmFtTWFwLmdldCh0aGlzLnBhcmFtZXRlckRlZi5uYW1lKSA6XG4gICAgICAgIHNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KHRoaXMucGFyYW1ldGVyRGVmLm5hbWUpO1xuXG4gICAgICByZXR1cm4gdGhpcy5wYXJhbWV0ZXJEZWYudHlwZS5wYXJzZShyYXdWYWx1ZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGhhc0NoYW5nZWQoaW5pdGlhbFZhbHVlOiBULCBzYW5pdGlzZWRWYWx1ZTogVCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIGluaXRpYWxWYWx1ZSAhPT0gc2FuaXRpc2VkVmFsdWU7XG4gICAgfVxuXG4gICAgaW5qZWN0Um91dGVQYXJhbShkZXN0OiB7fSkge1xuICAgICAgZGVzdFt0aGlzLnBhcmFtZXRlckRlZi5uYW1lXSA9IHRoaXMucGFyYW1ldGVyRGVmLnR5cGUuZm9ybWF0KHRoaXMuc2FuaXRpc2VkVmFsdWUpO1xuICAgIH1cblxuICB9XG5cbiAgZXhwb3J0IGNsYXNzIEFycmF5PFQ+IGV4dGVuZHMgU2FuaXRpc2VyPFQsIFRbXT4ge1xuXG4gICAgcmVhZEZyb20oc25hcHNob3Q6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBUW10ge1xuICAgICAgY29uc3QgcmF3VmFsdWVzID0gc25hcHNob3QucXVlcnlQYXJhbU1hcC5nZXRBbGwodGhpcy5wYXJhbWV0ZXJEZWYubmFtZSk7XG4gICAgICByZXR1cm4gcmF3VmFsdWVzLm1hcCh2YWx1ZSA9PiB0aGlzLnBhcmFtZXRlckRlZi50eXBlLnBhcnNlKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGhhc0NoYW5nZWQoaW5pdGlhbFZhbHVlOiBUW10sIHNhbml0aXNlZFZhbHVlOiBUW10pOiBib29sZWFuIHtcbiAgICAgIHJldHVybiBpbml0aWFsVmFsdWUgIT09IHNhbml0aXNlZFZhbHVlO1xuICAgIH1cblxuXG4gICAgaW5qZWN0Um91dGVQYXJhbShkZXN0OiB7fSkge1xuICAgICAgZGVzdFt0aGlzLnBhcmFtZXRlckRlZi5uYW1lXSA9IHRoaXMuc2FuaXRpc2VkVmFsdWUubWFwKHYgPT4gdGhpcy5wYXJhbWV0ZXJEZWYudHlwZS5mb3JtYXQodikpO1xuICAgIH1cblxuXG4gIH1cblxufVxuIl19
@@ -7,5 +7,5 @@ export { slideDownAndUpAnimation } from './lib/animations';
7
7
  export { DisposableComponent, ResizeAwareComponent, AbstractInputComponent, NumberInputComponent, PasswordInputComponent, SelectInputComponent, StringInputComponent, Bounds, Dimension, Point } from './lib/components';
8
8
  export { CommandDirective, FocusBindingDirective } from './lib/directives';
9
9
  export { AbstractActivity, ACTIVITY_DATA, INTERACTION_CONTEXT, InteractionContext, InteractionModule, ActivityContainerComponent, ActivityOutletComponent, AlertDialogComponent, ConfirmationDialogComponent, DialogInteractionService } from './lib/interaction';
10
- export { AbstractPlaceComponent, Place, PlaceModule, PlaceService, BusyOverlayComponent, EmptyStateComponent, PlaceOutletComponent, LeavePlaceGuard, PlaceRouteGuard, RouteId, QueryParameter, ParameterType, RouteParameterBindings, RouteParameterSanitiser } from './lib/place';
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbInB1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLHdDQUFjLGtDQUFrQyxDQUFDO0FBQ2pELHdDQUFjLGtCQUFrQixDQUFDO0FBQ2pDLHNNQUFjLGtCQUFrQixDQUFDO0FBQ2pDLHdEQUFjLGtCQUFrQixDQUFDO0FBQ2pDLDhPQUFjLG1CQUFtQixDQUFDO0FBQ2xDLHFRQUFjLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2FuZ3VsYXItdWktcG93ZXJ1cHMubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FuaW1hdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ludGVyYWN0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BsYWNlJztcbiJdfQ==
10
+ export { AbstractPlaceComponent, Place, PlaceModule, PlaceService, BusyOverlayComponent, EmptyStateComponent, NavComponent, PlaceOutletComponent, LeavePlaceGuard, PlaceRouteGuard, RouteId, QueryParameter, RouteParameter, QueryParameterList, RouteParameterList, ParameterType, RouteParameterBindings, Sanitiser, RouteParameterSanitiser } from './lib/place';
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbInB1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLHdDQUFjLGtDQUFrQyxDQUFDO0FBQ2pELHdDQUFjLGtCQUFrQixDQUFDO0FBQ2pDLHNNQUFjLGtCQUFrQixDQUFDO0FBQ2pDLHdEQUFjLGtCQUFrQixDQUFDO0FBQ2pDLDhPQUFjLG1CQUFtQixDQUFDO0FBQ2xDLHNWQUFjLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2FuZ3VsYXItdWktcG93ZXJ1cHMubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FuaW1hdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ludGVyYWN0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BsYWNlJztcbiJdfQ==