@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
@@ -13,7 +13,7 @@ import { Klass } from '@coolon/typescript-utilities';
13
13
  function ResolvedParameter() { }
14
14
  if (false) {
15
15
  /** @type {?} */
16
- ResolvedParameter.prototype.parameter;
16
+ ResolvedParameter.prototype.parameterDef;
17
17
  /** @type {?} */
18
18
  ResolvedParameter.prototype.resolvedValue;
19
19
  }
@@ -35,7 +35,7 @@ class ResolvedParameters {
35
35
  * @param {?} p
36
36
  * @return {?}
37
37
  */
38
- p => p.parameter === parameter));
38
+ p => p.parameterDef === parameter));
39
39
  return resolved ? resolved.resolvedValue : null;
40
40
  }
41
41
  /**
@@ -49,8 +49,8 @@ class ResolvedParameters {
49
49
  * @param {?} p
50
50
  * @return {?}
51
51
  */
52
- p => p.parameter !== parameter)).concat({
53
- parameter,
52
+ p => p.parameterDef !== parameter)).concat({
53
+ parameterDef: parameter,
54
54
  resolvedValue: value
55
55
  }));
56
56
  }
@@ -61,7 +61,7 @@ class ResolvedParameters {
61
61
  getFormattedRouteId() {
62
62
  /** @type {?} */
63
63
  const routeIdParam = this.getRouteIdParam();
64
- return routeIdParam ? routeIdParam.parameter.type.format(routeIdParam.resolvedValue) : null;
64
+ return routeIdParam ? routeIdParam.parameterDef.type.format(routeIdParam.resolvedValue) : null;
65
65
  }
66
66
  /**
67
67
  * @private
@@ -72,7 +72,7 @@ class ResolvedParameters {
72
72
  * @param {?} p
73
73
  * @return {?}
74
74
  */
75
- p => p.parameter.isRouteId));
75
+ p => p.parameterDef.isRouteId));
76
76
  }
77
77
  /**
78
78
  * @protected
@@ -86,12 +86,12 @@ class ResolvedParameters {
86
86
  * @param {?} p
87
87
  * @return {?}
88
88
  */
89
- p => !p.parameter.isRouteId)).forEach((/**
89
+ p => !p.parameterDef.isRouteId)).forEach((/**
90
90
  * @param {?} p
91
91
  * @return {?}
92
92
  */
93
93
  p => {
94
- params[p.parameter.name] = p.parameter.type.format(p.resolvedValue);
94
+ params[p.parameterDef.name] = p.parameterDef.type.format(p.resolvedValue);
95
95
  }));
96
96
  return params;
97
97
  }
@@ -115,7 +115,7 @@ class ResolvedParameters {
115
115
  /** @type {?} */
116
116
  const path = routeId ? [relativePath, routeId, this.getFormattedParameters()] : [relativePath, this.getFormattedParameters()];
117
117
  router.navigate(path, {
118
- relativeTo: activatedRoute,
118
+ relativeTo: activatedRoute
119
119
  });
120
120
  }
121
121
  }
@@ -175,11 +175,23 @@ export class RouteParameterBindings extends GarbageCollector {
175
175
  /** @type {?} */
176
176
  const result = [];
177
177
  routeParameterDefs.forEach((/**
178
- * @param {?} parameter
178
+ * @param {?} parameterDef
179
179
  * @return {?}
180
180
  */
181
- parameter => {
182
- result.push({ parameter, resolvedValue: parameter.type.parse(params.get(parameter.name)) });
181
+ parameterDef => {
182
+ /** @type {?} */
183
+ let resolvedValue;
184
+ if (parameterDef.isArray) {
185
+ resolvedValue = params.getAll(parameterDef.name).map((/**
186
+ * @param {?} v
187
+ * @return {?}
188
+ */
189
+ v => parameterDef.type.parse(v)));
190
+ }
191
+ else {
192
+ resolvedValue = parameterDef.type.parse(params.get(parameterDef.name));
193
+ }
194
+ result.push({ parameterDef: parameterDef, resolvedValue: resolvedValue });
183
195
  }));
184
196
  return new ResolvedParameters(result);
185
197
  }));
@@ -279,4 +291,4 @@ if (false) {
279
291
  (function (RouteParameterBindings) {
280
292
  RouteParameterBindings.ROUTE_PARAMETER_LIST_KEY = Symbol('place:route:parameters');
281
293
  })(RouteParameterBindings || (RouteParameterBindings = {}));
282
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtcGFyYW1ldGVyLWJpbmRpbmdzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3JvdXRlL3JvdXRlLXBhcmFtZXRlci1iaW5kaW5ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUNMLE9BQU8sRUFDUCxHQUFHLEVBQ0gsZ0JBQWdCLEVBRWhCLGlCQUFpQixFQUNqQixLQUFLLEVBQ0wsbUJBQW1CLEVBQ3BCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7OztBQUlyRCxnQ0FHQzs7O0lBRkMsc0NBQWtDOztJQUNsQywwQ0FBaUI7O0FBR25CLE1BQU0sa0JBQWtCOzs7O0lBQ3RCLFlBQXFCLFVBQW9DO1FBQXBDLGVBQVUsR0FBVixVQUFVLENBQTBCO0lBQ3pELENBQUM7Ozs7OztJQUVELEdBQUcsQ0FBSSxTQUFpQzs7Y0FDaEMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSTs7OztRQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxTQUFTLEVBQUM7UUFDckUsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNsRCxDQUFDOzs7Ozs7O0lBRUQsT0FBTyxDQUFJLFNBQWlDLEVBQUUsS0FBUTtRQUNwRCxPQUFPLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNOzs7O1FBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLFNBQVMsRUFBQyxDQUFDLE1BQU0sQ0FBQztZQUMxRixTQUFTO1lBQ1QsYUFBYSxFQUFF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LGdEQUErQzs7QUF1RC9ILFdBQWlCLHNCQUFzQjtJQUN4QiwrQ0FBd0IsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUM7QUFDMUUsQ0FBQyxFQUZnQixzQkFBc0IsS0FBdEIsc0JBQXNCLFFBRXRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBCaW5kaW5nLFxuICBEc2wsXG4gIEdhcmJhZ2VDb2xsZWN0b3IsXG4gIE11dGFibGVIYXNWYWx1ZSxcbiAgTXV0YWJsZVZhbHVlTW9kZWwsXG4gIFRyYWNlLFxuICBUcmFuc2FjdGlvbk9ic2VydmVyXG59IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCB7IEtsYXNzIH0gZnJvbSAnQGNvb2xvbi90eXBlc2NyaXB0LXV0aWxpdGllcyc7XG5pbXBvcnQgeyBBYnN0cmFjdFBsYWNlQ29tcG9uZW50IH0gZnJvbSAnLi4vYWJzdHJhY3QtcGxhY2UtY29tcG9uZW50JztcbmltcG9ydCB7IFBhcmFtZXRlckRlZmluaXRpb24gfSBmcm9tICcuL3BhcmFtZXRlci1kZWZpbml0aW9uLmNsYXNzJztcblxuaW50ZXJmYWNlIFJlc29sdmVkUGFyYW1ldGVyPFQ+IHtcbiAgcGFyYW1ldGVyOiBQYXJhbWV0ZXJEZWZpbml0aW9uPFQ+O1xuICByZXNvbHZlZFZhbHVlOiBUO1xufVxuXG5jbGFzcyBSZXNvbHZlZFBhcmFtZXRlcnMge1xuICBjb25zdHJ1Y3RvcihyZWFkb25seSBwYXJhbWV0ZXJzOiBSZXNvbHZlZFBhcmFtZXRlcjxhbnk+W10pIHtcbiAgfVxuXG4gIGdldDxUPihwYXJhbWV0ZXI6IFBhcmFtZXRlckRlZmluaXRpb248VD4pOiBUIHtcbiAgICBjb25zdCByZXNvbHZlZCA9IHRoaXMucGFyYW1ldGVycy5maW5kKHAgPT4gcC5wYXJhbWV0ZXIgPT09IHBhcmFtZXRlcik7XG4gICAgcmV0dXJuIHJlc29sdmVkID8gcmVzb2x2ZWQucmVzb2x2ZWRWYWx1ZSA6IG51bGw7XG4gIH1cblxuICByZXBsYWNlPFQ+KHBhcmFtZXRlcjogUGFyYW1ldGVyRGVmaW5pdGlvbjxUPiwgdmFsdWU6IFQpOiBSZXNvbHZlZFBhcmFtZXRlcnMge1xuICAgIHJldHVybiBuZXcgUmVzb2x2ZWRQYXJhbWV0ZXJzKHRoaXMucGFyYW1ldGVycy5maWx0ZXIocCA9PiBwLnBhcmFtZXRlciAhPT0gcGFyYW1ldGVyKS5jb25jYXQoe1xuICAgICAgcGFyYW1ldGVyLFxuICAgICAgcmVzb2x2ZWRWYWx1ZTogdmFsdWVcbiAgICB9KSk7XG4gIH1cblxuICBAVHJhY2UoKVxuICBwcm90ZWN0ZWQgZ2V0Rm9ybWF0dGVkUm91dGVJZCgpIHtcbiAgICBjb25zdCByb3V0ZUlkUGFyYW0gPSB0aGlzLmdldFJvdXRlSWRQYXJhbSgpO1xuICAgIHJldHVybiByb3V0ZUlkUGFyYW0gPyByb3V0ZUlkUGFyYW0ucGFyYW1ldGVyLnR5cGUuZm9ybWF0KHJvdXRlSWRQYXJhbS5yZXNvbHZlZFZhbHVlKSA6IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGdldFJvdXRlSWRQYXJhbSgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJhbWV0ZXJzLmZpbmQocCA9PiBwLnBhcmFtZXRlci5pc1JvdXRlSWQpO1xuICB9XG5cbiAgQFRyYWNlKClcbiAgcHJvdGVjdGVkIGdldEZvcm1hdHRlZFBhcmFtZXRlcnMoKSB7XG4gICAgY29uc3QgcGFyYW1zID0ge307XG4gICAgY29uc3Qgcm91dGVJZFBhcmFtID0gdGhpcy5wYXJhbWV0ZXJzLmZpbHRlcihwID0+ICFwLnBhcmFtZXRlci5pc1JvdXRlSWQpLmZvckVhY2gocCA9PiB7XG4gICAgICBwYXJhbXNbcC5wYXJhbWV0ZXIubmFtZV0gPSBwLnBhcmFtZXRlci50eXBlLmZvcm1hdChwLnJlc29sdmVkVmFsdWUpO1xuICAgIH0pO1xuICAgIHJldHVybiBwYXJhbXM7XG4gIH1cblxuICBoYXNSb3V0ZUlkKCkge1xuICAgIHJldHVybiAhIXRoaXMuZ2V0Um91dGVJZFBhcmFtKCk7XG4gIH1cblxuICBAVHJhY2UoKVxuICByZWRpcmVjdChwcmV2aW91czogUmVzb2x2ZWRQYXJhbWV0ZXJzLCByb3V0ZXI6IFJvdXRlciwgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlKSB7XG4gICAgY29uc3Qgcm91dGVJZCA9IHRoaXMuZ2V0Rm9ybWF0dGVkUm91dGVJZCgpO1xuICAgIGNvbnN0IHJlbGF0aXZlUGF0aCA9ICEhcHJldmlvdXMuaGFzUm91dGVJZCgpID8gJy4uJyA6ICcuJztcbiAgICBjb25zdCBwYXRoID0gcm91dGVJZCA/IFtyZWxhdGl2ZVBhdGgsIHJvdXRlSWQsIHRoaXMuZ2V0Rm9ybWF0dGVkUGFyYW1ldGVycygpXSA6IFtyZWxhdGl2ZVBhdGgsIHRoaXMuZ2V0Rm9ybWF0dGVkUGFyYW1ldGVycygpXTtcbiAgICByb3V0ZXIubmF2aWdhdGUocGF0aCwge1xuICAgICAgcmVsYXRpdmVUbzogYWN0aXZhdGVkUm91dGUsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJvdXRlUGFyYW1ldGVyQmluZGluZ3MgZXh0ZW5kcyBHYXJiYWdlQ29sbGVjdG9yIHtcblxuICBwdWJsaWMgcmVhZG9ubHkgX2luY29taW5nUm91dGVDaGFuZ2UgPSBuZXcgTXV0YWJsZVZhbHVlTW9kZWw8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHByaXZhdGUgdHhvOiBUcmFuc2FjdGlvbk9ic2VydmVyO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVzb2x2ZWRQYXJhbWV0ZXJzID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPFJlc29sdmVkUGFyYW1ldGVycz4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGNvbXBvbmVudDogYW55LCBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLCBwcml2YXRlIHJlYWRvbmx5IGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSkge1xuICAgIHN1cGVyKCk7XG4gICAgY29uc3QgeyBjaGFpbiwgdmFsdWVPZiwgYmVmb3JlLCB3aGVuLCBhZnRlciwgb2JzZXJ2ZSB9ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMpO1xuICAgIHRoaXMudHhvID0gbmV3IFRyYW5zYWN0aW9uT2JzZXJ2ZXIoKTsvLy5vbkV2ZW50KGUgPT4gY29uc29sZS5sb2coZS50b1N0cmluZygpKSk7XG5cbiAgICBjb25zdCByb3V0ZVBhcmFtZXRlckRlZnMgPSBLbGFzcy5nZXQoY29tcG9uZW50KS5nZXRNZXRhZGF0YUxpc3QoUm91dGVQYXJhbWV0ZXJCaW5kaW5ncy5ST1VURV9QQVJBTUVURVJfTElTVF9LRVkpO1xuICAgIHJvdXRlUGFyYW1ldGVyRGVmcy5mb3JFYWNoKHBhcmFtZXRlciA9PiB0aGlzLmluc3RhbGxCaW5kaW5nKHBhcmFtZXRlcikpO1xuXG4gICAgY29uc3QgaW5jb21pbmdSZXNvbHZlZFJvdXRlUGFyYW1ldGVycyA9IG9ic2VydmUudmFsdWVzRnJvbShhY3RpdmF0ZWRSb3V0ZS5wYXJhbU1hcClcbiAgICAgIC5sYXN0KClcbiAgICAgIC5tYXAocGFyYW1zID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBSZXNvbHZlZFBhcmFtZXRlcjxhbnk+W10gPSBbXTtcbiAgICAgICAgcm91dGVQYXJhbWV0ZXJEZWZzLmZvckVhY2gocGFyYW1ldGVyID0+IHtcbiAgICAgICAgICByZXN1bHQucHVzaCh7IHBhcmFtZXRlciwgcmVzb2x2ZWRWYWx1ZTogcGFyYW1ldGVyLnR5cGUucGFyc2UocGFyYW1zLmdldChwYXJhbWV0ZXIubmFtZSkpIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG5ldyBSZXNvbHZlZFBhcmFtZXRlcnMocmVzdWx0KTtcbiAgICAgIH0pO1xuXG4gICAgaW5jb21pbmdSZXNvbHZlZFJvdXRlUGFyYW1ldGVycy5zdWJzY3JpYmUocmVzb2x2ZWRQYXJhbWV0ZXJzID0+IHtcbiAgICAgIHRoaXMuX2luY29taW5nUm91dGVDaGFuZ2UudmFsdWUgPSB0cnVlO1xuICAgICAgdGhpcy5yZXNvbHZlZFBhcmFtZXRlcnMudmFsdWUgPSByZXNvbHZlZFBhcmFtZXRlcnM7XG4gICAgICB0aGlzLl9pbmNvbWluZ1JvdXRlQ2hhbmdlLnZhbHVlID0gZmFsc2U7XG4gICAgfSk7XG5cbiAgICB3aGVuLnZhbHVlT2YodGhpcy5yZXNvbHZlZFBhcmFtZXRlcnMpLmNoYW5nZXMoKHBhcmFtcywgcHJldmlvdXMpID0+IHtcbiAgICAgIHBhcmFtcy5yZWRpcmVjdChwcmV2aW91cywgcm91dGVyLCBhY3RpdmF0ZWRSb3V0ZSk7XG4gICAgfSwgeyB1bmxlc3M6IHRoaXMuaW5jb21pbmdSb3V0ZUNoYW5nZSB9KTtcblxuICAgIHRoaXMudHhvLm9ic2VydmUoJ2luY29taW5nUmVzb2x2ZWRSb3V0ZVBhcmFtZXRlcnMnLCBpbmNvbWluZ1Jlc29sdmVkUm91dGVQYXJhbWV0ZXJzKTtcbiAgICB0aGlzLnR4by5vYnNlcnZlKCd0aGlzLnJvdXRlSXNDaGFuZ2luZycsIHRoaXMuaW5jb21pbmdSb3V0ZUNoYW5nZSk7XG4gIH1cblxuICBnZXQgaW5jb21pbmdSb3V0ZUNoYW5nZSgpIHtcbiAgICByZXR1cm4gdGhpcy5faW5jb21pbmdSb3V0ZUNoYW5nZS5yZWFkb25seTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbnN0YWxsQmluZGluZzxUPihwYXJhbWV0ZXI6IFBhcmFtZXRlckRlZmluaXRpb248VD4pIHtcbiAgICBjb25zdCBtb2RlbCA9IHRoaXMuZ2V0TW9kZWxGb3IocGFyYW1ldGVyKTtcbiAgICB0aGlzLnR4by5vYnNlcnZlKHBhcmFtZXRlci5wcm9wZXJ0eU5hbWUsIG1vZGVsKTtcbiAgICB0aGlzLnJlZ2lzdGVyRGlzcG9zYWJsZShuZXcgQmluZGluZyh0aGlzLnJlc29sdmVkUGFyYW1ldGVycywgbW9kZWwsIHtcbiAgICAgIHRvUmlnaHQocGFyYW1ldGVyczogUmVzb2x2ZWRQYXJhbWV0ZXJzKTogVCB7XG4gICAgICAgIHJldHVybiBwYXJhbWV0ZXJzLmdldChwYXJhbWV0ZXIpO1xuICAgICAgfSxcbiAgICAgIHRvTGVmdCh2YWx1ZTogVCwgY3VycmVudFBhcmFtZXRlcnM/OiBSZXNvbHZlZFBhcmFtZXRlcnMpOiBSZXNvbHZlZFBhcmFtZXRlcnMge1xuICAgICAgICByZXR1cm4gY3VycmVudFBhcmFtZXRlcnMucmVwbGFjZShwYXJhbWV0ZXIsIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuXG4gIHByaXZhdGUgZ2V0TW9kZWxGb3I8VD4ocGFyYW1ldGVyOiBQYXJhbWV0ZXJEZWZpbml0aW9uPFQ+KTogTXV0YWJsZUhhc1ZhbHVlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnRbcGFyYW1ldGVyLnByb3BlcnR5TmFtZV07XG4gIH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBSb3V0ZVBhcmFtZXRlckJpbmRpbmdzIHtcbiAgZXhwb3J0IGNvbnN0IFJPVVRFX1BBUkFNRVRFUl9MSVNUX0tFWSA9IFN5bWJvbCgncGxhY2U6cm91dGU6cGFyYW1ldGVycycpO1xufVxuIl19
294
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtcGFyYW1ldGVyLWJpbmRpbmdzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3JvdXRlL3JvdXRlLXBhcmFtZXRlci1iaW5kaW5ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUNMLE9BQU8sRUFDUCxHQUFHLEVBQ0gsZ0JBQWdCLEVBRWhCLGlCQUFpQixFQUNqQixLQUFLLEVBQ0wsbUJBQW1CLEVBQ3BCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7OztBQUdyRCxnQ0FHQzs7O0lBRkMseUNBQXFDOztJQUNyQywwQ0FBaUI7O0FBR25CLE1BQU0sa0JBQWtCOzs7O0lBQ3RCLFlBQXFCLFVBQW9DO1FBQXBDLGVBQVUsR0FBVixVQUFVLENBQTBCO0lBQ3pELENBQUM7Ozs7OztJQUVELEdBQUcsQ0FBSSxTQUFpQzs7Y0FDaEMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSTs7OztRQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksS0FBSyxTQUFTLEVBQUM7UUFDeEUsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNsRCxDQUFDOzs7Ozs7O0lBRUQsT0FBTyxDQUFJLFNBQWlDLEVBQUUsS0FBUTtRQUNwRCxPQUFPLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNOzs7O1FBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxLQUFLLFNBQVMsRUFBQyxDQUFDLE1BQU0sQ0FBQztZQUM3RixZQUFZLEVBQUUsU0FBUztZQUN2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QUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3JELENBQUM7U0FDRixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7Ozs7Ozs7SUFHTyxXQUFXLENBQUksU0FBaUM7UUFDdEQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNoRCxDQUFDO0NBQ0Y7OztJQWxFQyxzREFBNkU7Ozs7O0lBRTdFLHFDQUFpQzs7Ozs7SUFFakMsb0RBQWtGOzs7OztJQUV0RSwyQ0FBK0I7Ozs7O0lBQUUsd0NBQStCOzs7OztJQUFFLGdEQUErQzs7QUE4RC9ILFdBQWlCLHNCQUFzQjtJQUN4QiwrQ0FBd0IsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUM7QUFDMUUsQ0FBQyxFQUZnQixzQkFBc0IsS0FBdEIsc0JBQXNCLFFBRXRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBCaW5kaW5nLFxuICBEc2wsXG4gIEdhcmJhZ2VDb2xsZWN0b3IsXG4gIE11dGFibGVIYXNWYWx1ZSxcbiAgTXV0YWJsZVZhbHVlTW9kZWwsXG4gIFRyYWNlLFxuICBUcmFuc2FjdGlvbk9ic2VydmVyXG59IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCB7IEtsYXNzIH0gZnJvbSAnQGNvb2xvbi90eXBlc2NyaXB0LXV0aWxpdGllcyc7XG5pbXBvcnQgeyBQYXJhbWV0ZXJEZWZpbml0aW9uIH0gZnJvbSAnLi9wYXJhbWV0ZXItZGVmaW5pdGlvbi5jbGFzcyc7XG5cbmludGVyZmFjZSBSZXNvbHZlZFBhcmFtZXRlcjxUPiB7XG4gIHBhcmFtZXRlckRlZjogUGFyYW1ldGVyRGVmaW5pdGlvbjxUPjtcbiAgcmVzb2x2ZWRWYWx1ZTogVDtcbn1cblxuY2xhc3MgUmVzb2x2ZWRQYXJhbWV0ZXJzIHtcbiAgY29uc3RydWN0b3IocmVhZG9ubHkgcGFyYW1ldGVyczogUmVzb2x2ZWRQYXJhbWV0ZXI8YW55PltdKSB7XG4gIH1cblxuICBnZXQ8VD4ocGFyYW1ldGVyOiBQYXJhbWV0ZXJEZWZpbml0aW9uPFQ+KTogVCB7XG4gICAgY29uc3QgcmVzb2x2ZWQgPSB0aGlzLnBhcmFtZXRlcnMuZmluZChwID0+IHAucGFyYW1ldGVyRGVmID09PSBwYXJhbWV0ZXIpO1xuICAgIHJldHVybiByZXNvbHZlZCA/IHJlc29sdmVkLnJlc29sdmVkVmFsdWUgOiBudWxsO1xuICB9XG5cbiAgcmVwbGFjZTxUPihwYXJhbWV0ZXI6IFBhcmFtZXRlckRlZmluaXRpb248VD4sIHZhbHVlOiBUKTogUmVzb2x2ZWRQYXJhbWV0ZXJzIHtcbiAgICByZXR1cm4gbmV3IFJlc29sdmVkUGFyYW1ldGVycyh0aGlzLnBhcmFtZXRlcnMuZmlsdGVyKHAgPT4gcC5wYXJhbWV0ZXJEZWYgIT09IHBhcmFtZXRlcikuY29uY2F0KHtcbiAgICAgIHBhcmFtZXRlckRlZjogcGFyYW1ldGVyLFxuICAgICAgcmVzb2x2ZWRWYWx1ZTogdmFsdWVcbiAgICB9KSk7XG4gIH1cblxuICBAVHJhY2UoKVxuICBwcm90ZWN0ZWQgZ2V0Rm9ybWF0dGVkUm91dGVJZCgpIHtcbiAgICBjb25zdCByb3V0ZUlkUGFyYW0gPSB0aGlzLmdldFJvdXRlSWRQYXJhbSgpO1xuICAgIHJldHVybiByb3V0ZUlkUGFyYW0gPyByb3V0ZUlkUGFyYW0ucGFyYW1ldGVyRGVmLnR5cGUuZm9ybWF0KHJvdXRlSWRQYXJhbS5yZXNvbHZlZFZhbHVlKSA6IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGdldFJvdXRlSWRQYXJhbSgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJhbWV0ZXJzLmZpbmQocCA9PiBwLnBhcmFtZXRlckRlZi5pc1JvdXRlSWQpO1xuICB9XG5cbiAgQFRyYWNlKClcbiAgcHJvdGVjdGVkIGdldEZvcm1hdHRlZFBhcmFtZXRlcnMoKSB7XG4gICAgY29uc3QgcGFyYW1zID0ge307XG4gICAgY29uc3Qgcm91dGVJZFBhcmFtID0gdGhpcy5wYXJhbWV0ZXJzLmZpbHRlcihwID0+ICFwLnBhcmFtZXRlckRlZi5pc1JvdXRlSWQpLmZvckVhY2gocCA9PiB7XG4gICAgICBwYXJhbXNbcC5wYXJhbWV0ZXJEZWYubmFtZV0gPSBwLnBhcmFtZXRlckRlZi50eXBlLmZvcm1hdChwLnJlc29sdmVkVmFsdWUpO1xuICAgIH0pO1xuICAgIHJldHVybiBwYXJhbXM7XG4gIH1cblxuICBoYXNSb3V0ZUlkKCkge1xuICAgIHJldHVybiAhIXRoaXMuZ2V0Um91dGVJZFBhcmFtKCk7XG4gIH1cblxuICBAVHJhY2UoKVxuICByZWRpcmVjdChwcmV2aW91czogUmVzb2x2ZWRQYXJhbWV0ZXJzLCByb3V0ZXI6IFJvdXRlciwgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlKSB7XG4gICAgY29uc3Qgcm91dGVJZCA9IHRoaXMuZ2V0Rm9ybWF0dGVkUm91dGVJZCgpO1xuICAgIGNvbnN0IHJlbGF0aXZlUGF0aCA9ICEhcHJldmlvdXMuaGFzUm91dGVJZCgpID8gJy4uJyA6ICcuJztcbiAgICBjb25zdCBwYXRoID0gcm91dGVJZCA/IFtyZWxhdGl2ZVBhdGgsIHJvdXRlSWQsIHRoaXMuZ2V0Rm9ybWF0dGVkUGFyYW1ldGVycygpXSA6IFtyZWxhdGl2ZVBhdGgsIHRoaXMuZ2V0Rm9ybWF0dGVkUGFyYW1ldGVycygpXTtcbiAgICByb3V0ZXIubmF2aWdhdGUocGF0aCwge1xuICAgICAgcmVsYXRpdmVUbzogYWN0aXZhdGVkUm91dGVcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUm91dGVQYXJhbWV0ZXJCaW5kaW5ncyBleHRlbmRzIEdhcmJhZ2VDb2xsZWN0b3Ige1xuXG4gIHB1YmxpYyByZWFkb25seSBfaW5jb21pbmdSb3V0ZUNoYW5nZSA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHJpdmF0ZSB0eG86IFRyYW5zYWN0aW9uT2JzZXJ2ZXI7XG5cbiAgcHJpdmF0ZSByZWFkb25seSByZXNvbHZlZFBhcmFtZXRlcnMgPSBuZXcgTXV0YWJsZVZhbHVlTW9kZWw8UmVzb2x2ZWRQYXJhbWV0ZXJzPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY29tcG9uZW50OiBhbnksIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlKSB7XG4gICAgc3VwZXIoKTtcbiAgICBjb25zdCB7IGNoYWluLCB2YWx1ZU9mLCBiZWZvcmUsIHdoZW4sIGFmdGVyLCBvYnNlcnZlIH0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG4gICAgdGhpcy50eG8gPSBuZXcgVHJhbnNhY3Rpb25PYnNlcnZlcigpOy8vLm9uRXZlbnQoZSA9PiBjb25zb2xlLmxvZyhlLnRvU3RyaW5nKCkpKTtcblxuICAgIGNvbnN0IHJvdXRlUGFyYW1ldGVyRGVmczogUGFyYW1ldGVyRGVmaW5pdGlvbjxhbnk+W10gPSBLbGFzcy5nZXQoY29tcG9uZW50KS5nZXRNZXRhZGF0YUxpc3QoUm91dGVQYXJhbWV0ZXJCaW5kaW5ncy5ST1VURV9QQVJBTUVURVJfTElTVF9LRVkpO1xuICAgIHJvdXRlUGFyYW1ldGVyRGVmcy5mb3JFYWNoKHBhcmFtZXRlciA9PiB0aGlzLmluc3RhbGxCaW5kaW5nKHBhcmFtZXRlcikpO1xuXG4gICAgY29uc3QgaW5jb21pbmdSZXNvbHZlZFJvdXRlUGFyYW1ldGVycyA9IG9ic2VydmUudmFsdWVzRnJvbShhY3RpdmF0ZWRSb3V0ZS5wYXJhbU1hcClcbiAgICAgIC5sYXN0KClcbiAgICAgIC5tYXAocGFyYW1zID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBSZXNvbHZlZFBhcmFtZXRlcjxhbnk+W10gPSBbXTtcbiAgICAgICAgcm91dGVQYXJhbWV0ZXJEZWZzLmZvckVhY2gocGFyYW1ldGVyRGVmID0+IHtcbiAgICAgICAgICBsZXQgcmVzb2x2ZWRWYWx1ZTtcbiAgICAgICAgICBpZiAocGFyYW1ldGVyRGVmLmlzQXJyYXkpIHtcbiAgICAgICAgICAgIHJlc29sdmVkVmFsdWUgPSBwYXJhbXMuZ2V0QWxsKHBhcmFtZXRlckRlZi5uYW1lKS5tYXAodiA9PiBwYXJhbWV0ZXJEZWYudHlwZS5wYXJzZSh2KSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc29sdmVkVmFsdWUgPSBwYXJhbWV0ZXJEZWYudHlwZS5wYXJzZShwYXJhbXMuZ2V0KHBhcmFtZXRlckRlZi5uYW1lKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdC5wdXNoKHsgcGFyYW1ldGVyRGVmOiBwYXJhbWV0ZXJEZWYsIHJlc29sdmVkVmFsdWU6IHJlc29sdmVkVmFsdWUgfSk7XG5cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBuZXcgUmVzb2x2ZWRQYXJhbWV0ZXJzKHJlc3VsdCk7XG4gICAgICB9KTtcblxuICAgIGluY29taW5nUmVzb2x2ZWRSb3V0ZVBhcmFtZXRlcnMuc3Vic2NyaWJlKHJlc29sdmVkUGFyYW1ldGVycyA9PiB7XG4gICAgICB0aGlzLl9pbmNvbWluZ1JvdXRlQ2hhbmdlLnZhbHVlID0gdHJ1ZTtcbiAgICAgIHRoaXMucmVzb2x2ZWRQYXJhbWV0ZXJzLnZhbHVlID0gcmVzb2x2ZWRQYXJhbWV0ZXJzO1xuICAgICAgdGhpcy5faW5jb21pbmdSb3V0ZUNoYW5nZS52YWx1ZSA9IGZhbHNlO1xuICAgIH0pO1xuXG4gICAgd2hlbi52YWx1ZU9mKHRoaXMucmVzb2x2ZWRQYXJhbWV0ZXJzKS5jaGFuZ2VzKChwYXJhbXMsIHByZXZpb3VzKSA9PiB7XG4gICAgICBwYXJhbXMucmVkaXJlY3QocHJldmlvdXMsIHJvdXRlciwgYWN0aXZhdGVkUm91dGUpO1xuICAgIH0sIHsgdW5sZXNzOiB0aGlzLmluY29taW5nUm91dGVDaGFuZ2UgfSk7XG5cbiAgICB0aGlzLnR4by5vYnNlcnZlKCdpbmNvbWluZ1Jlc29sdmVkUm91dGVQYXJhbWV0ZXJzJywgaW5jb21pbmdSZXNvbHZlZFJvdXRlUGFyYW1ldGVycyk7XG4gICAgdGhpcy50eG8ub2JzZXJ2ZSgndGhpcy5yb3V0ZUlzQ2hhbmdpbmcnLCB0aGlzLmluY29taW5nUm91dGVDaGFuZ2UpO1xuICB9XG5cbiAgZ2V0IGluY29taW5nUm91dGVDaGFuZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2luY29taW5nUm91dGVDaGFuZ2UucmVhZG9ubHk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaW5zdGFsbEJpbmRpbmc8VD4ocGFyYW1ldGVyOiBQYXJhbWV0ZXJEZWZpbml0aW9uPFQ+KSB7XG4gICAgY29uc3QgbW9kZWwgPSB0aGlzLmdldE1vZGVsRm9yKHBhcmFtZXRlcik7XG4gICAgdGhpcy50eG8ub2JzZXJ2ZShwYXJhbWV0ZXIucHJvcGVydHlOYW1lLCBtb2RlbCk7XG4gICAgdGhpcy5yZWdpc3RlckRpc3Bvc2FibGUobmV3IEJpbmRpbmcodGhpcy5yZXNvbHZlZFBhcmFtZXRlcnMsIG1vZGVsLCB7XG4gICAgICB0b1JpZ2h0KHBhcmFtZXRlcnM6IFJlc29sdmVkUGFyYW1ldGVycyk6IFQge1xuICAgICAgICByZXR1cm4gcGFyYW1ldGVycy5nZXQocGFyYW1ldGVyKTtcbiAgICAgIH0sXG4gICAgICB0b0xlZnQodmFsdWU6IFQsIGN1cnJlbnRQYXJhbWV0ZXJzPzogUmVzb2x2ZWRQYXJhbWV0ZXJzKTogUmVzb2x2ZWRQYXJhbWV0ZXJzIHtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRQYXJhbWV0ZXJzLnJlcGxhY2UocGFyYW1ldGVyLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSkpO1xuICB9XG5cblxuICBwcml2YXRlIGdldE1vZGVsRm9yPFQ+KHBhcmFtZXRlcjogUGFyYW1ldGVyRGVmaW5pdGlvbjxUPik6IE11dGFibGVIYXNWYWx1ZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50W3BhcmFtZXRlci5wcm9wZXJ0eU5hbWVdO1xuICB9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgUm91dGVQYXJhbWV0ZXJCaW5kaW5ncyB7XG4gIGV4cG9ydCBjb25zdCBST1VURV9QQVJBTUVURVJfTElTVF9LRVkgPSBTeW1ib2woJ3BsYWNlOnJvdXRlOnBhcmFtZXRlcnMnKTtcbn1cbiJdfQ==
@@ -3,72 +3,150 @@
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
+ export class Sanitiser {
14
+ /**
15
+ * @param {?} parameterDef
16
+ * @param {?} snapshot
17
+ * @param {?} sanitiser
18
+ */
19
+ constructor(parameterDef, snapshot, sanitiser) {
20
+ this.parameterDef = parameterDef;
21
+ this.snapshot = snapshot;
22
+ this.sanitiser = sanitiser;
23
+ }
24
+ /**
25
+ * @return {?}
26
+ */
27
+ isRouteId() {
28
+ return this.parameterDef.isRouteId;
29
+ }
30
+ /**
31
+ * @return {?}
32
+ */
33
+ get valueChanged() {
34
+ return !_.isNil(this.initialValue) && this.hasChanged(this.initialValue, this.sanitisedValue);
35
+ }
36
+ /**
37
+ * @return {?}
38
+ */
39
+ get sanitisedValue() {
40
+ return this._sanitisedValue;
41
+ }
42
+ /**
43
+ * @return {?}
44
+ */
45
+ sanitize() {
46
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
47
+ if (this.sanitiser) {
48
+ this.initialValue = this.readFrom(this.snapshot);
49
+ this._sanitisedValue = yield this.sanitiser.sanitise(this.initialValue);
50
+ if (this.initialValue !== this._sanitisedValue) {
51
+ return false;
52
+ }
53
+ }
54
+ return true;
55
+ });
56
+ }
57
+ }
58
+ if (false) {
59
+ /**
60
+ * @type {?}
61
+ * @private
62
+ */
63
+ Sanitiser.prototype.initialValue;
64
+ /**
65
+ * @type {?}
66
+ * @private
67
+ */
68
+ Sanitiser.prototype._sanitisedValue;
69
+ /** @type {?} */
70
+ Sanitiser.prototype.parameterDef;
71
+ /** @type {?} */
72
+ Sanitiser.prototype.snapshot;
73
+ /** @type {?} */
74
+ Sanitiser.prototype.sanitiser;
75
+ /**
76
+ * @abstract
77
+ * @protected
78
+ * @param {?} snapshot
79
+ * @return {?}
80
+ */
81
+ Sanitiser.prototype.readFrom = function (snapshot) { };
82
+ /**
83
+ * @abstract
84
+ * @protected
85
+ * @param {?} initialValue
86
+ * @param {?} sanitisedValue
87
+ * @return {?}
88
+ */
89
+ Sanitiser.prototype.hasChanged = function (initialValue, sanitisedValue) { };
90
+ /**
91
+ * @abstract
92
+ * @param {?} dest
93
+ * @return {?}
94
+ */
95
+ Sanitiser.prototype.injectRouteParam = function (dest) { };
96
+ }
8
97
  export class RouteParameterSanitiser {
9
98
  /**
10
99
  * @param {?} parameterDefs
100
+ * @param {?} snapshot
11
101
  * @param {?} injector
12
102
  */
13
- constructor(parameterDefs, injector) {
103
+ constructor(parameterDefs, snapshot, injector) {
14
104
  this.parameterDefs = parameterDefs;
105
+ this.snapshot = snapshot;
15
106
  this.injector = injector;
16
- this.sanitisedParameters = [];
17
- this.routeParameter = parameterDefs.find((/**
107
+ this.parameterSanitisers = [];
108
+ /** @type {?} */
109
+ const sanitisers = parameterDefs.map((/**
110
+ * @param {?} def
111
+ * @return {?}
112
+ */
113
+ def => {
114
+ return def.isArray ?
115
+ new Sanitiser.Array(def, snapshot, this.getSanitiser(def)) :
116
+ new Sanitiser.Value(def, snapshot, this.getSanitiser(def));
117
+ }));
118
+ this.routeIdSanitiser = sanitisers.find((/**
18
119
  * @param {?} p
19
120
  * @return {?}
20
121
  */
21
- p => p.isRouteId));
22
- this.queryParameters = parameterDefs.filter((/**
122
+ p => p.isRouteId()));
123
+ this.parameterSanitisers = sanitisers.filter((/**
23
124
  * @param {?} p
24
125
  * @return {?}
25
126
  */
26
- p => !p.isRouteId));
127
+ p => !p.isRouteId()));
27
128
  }
28
129
  /**
29
- * @param {?} snapshot
30
130
  * @return {?}
31
131
  */
32
- sanitise(snapshot) {
132
+ sanitise() {
33
133
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
34
- if (this.routeParameter) {
35
- /** @type {?} */
36
- const routeOk = yield this.sanitiseParameter(this.routeParameter, snapshot.paramMap.get(this.routeParameter.name));
37
- if (!routeOk) {
134
+ if (this.routeIdSanitiser) {
135
+ yield this.routeIdSanitiser.sanitize();
136
+ if (this.routeIdSanitiser.valueChanged) {
38
137
  // if the route id isn't ok we redirect immediately as the query params may need to be sanitised in the
39
138
  // context of the route id.
40
139
  return false;
41
140
  }
42
141
  }
43
- for (const param of this.queryParameters) {
44
- yield this.sanitiseParameter(param, snapshot.queryParamMap.get(param.name));
45
- }
46
- return this.sanitisedParameters.length === 0;
47
- });
48
- }
49
- /**
50
- * @template T
51
- * @param {?} def
52
- * @param {?} formattedInitialValue
53
- * @return {?}
54
- */
55
- sanitiseParameter(def, formattedInitialValue) {
56
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
57
- if (def) {
58
- /** @type {?} */
59
- const sanitiser = this.getSanitiser(def);
60
- if (sanitiser) {
61
- /** @type {?} */
62
- const initialValue = def.type.parse(formattedInitialValue);
63
- /** @type {?} */
64
- const sanitisedValue = yield sanitiser.sanitise(initialValue);
65
- if (initialValue !== sanitisedValue) {
66
- this.sanitisedParameters.push({ def, value: def.type.format(sanitisedValue) });
67
- return false;
68
- }
69
- }
142
+ for (const sanitiser of this.parameterSanitisers) {
143
+ yield sanitiser.sanitize();
70
144
  }
71
- return true;
145
+ return !this.parameterSanitisers.find((/**
146
+ * @param {?} s
147
+ * @return {?}
148
+ */
149
+ s => s.valueChanged));
72
150
  });
73
151
  }
74
152
  /**
@@ -76,35 +154,24 @@ export class RouteParameterSanitiser {
76
154
  * @return {?}
77
155
  */
78
156
  redirect(router) {
79
- assert.isTruthy(this.sanitisedParameters.length !== 0);
80
- /** @type {?} */
81
- const sanitisedRouteId = this.sanitisedParameters.find((/**
82
- * @param {?} s
83
- * @return {?}
84
- */
85
- s => s.def === this.routeParameter));
86
- if (sanitisedRouteId) {
87
- return router.navigate(['..', sanitisedRouteId.value]);
157
+ assert.isTruthy(this.parameterSanitisers.length !== 0);
158
+ if (this.routeIdSanitiser.valueChanged) {
159
+ return router.navigate(['..', this.routeIdSanitiser.sanitisedValue]);
88
160
  }
89
161
  else {
90
162
  /** @type {?} */
91
- const queryParams = this.sanitisedParameters.filter((/**
163
+ const routeParams = {};
164
+ this.parameterSanitisers.forEach((/**
92
165
  * @param {?} s
93
166
  * @return {?}
94
167
  */
95
- s => s.def !== this.routeParameter))
96
- .reduce((/**
97
- * @param {?} params
98
- * @param {?} item
99
- * @return {?}
100
- */
101
- (params, item) => (Object.assign({}, params, { [item.def.name]: item.value }))), {});
102
- return router.navigate(['.', queryParams]);
168
+ s => s.injectRouteParam(routeParams)));
169
+ return router.navigate(['.', routeParams]);
103
170
  }
104
171
  }
105
172
  /**
106
173
  * @private
107
- * @template T
174
+ * @template T, S
108
175
  * @param {?} def
109
176
  * @return {?}
110
177
  */
@@ -112,12 +179,6 @@ export class RouteParameterSanitiser {
112
179
  return def.sanitiser ? this.injector.get(def.sanitiser, new def.sanitiser()) : null;
113
180
  }
114
181
  }
115
- tslib_1.__decorate([
116
- Trace(),
117
- tslib_1.__metadata("design:type", Function),
118
- tslib_1.__metadata("design:paramtypes", [Object, String]),
119
- tslib_1.__metadata("design:returntype", Promise)
120
- ], RouteParameterSanitiser.prototype, "sanitiseParameter", null);
121
182
  tslib_1.__decorate([
122
183
  Memoize(),
123
184
  tslib_1.__metadata("design:type", Function),
@@ -129,20 +190,91 @@ if (false) {
129
190
  * @type {?}
130
191
  * @private
131
192
  */
132
- RouteParameterSanitiser.prototype.routeParameter;
133
- /**
134
- * @type {?}
135
- * @private
136
- */
137
- RouteParameterSanitiser.prototype.queryParameters;
193
+ RouteParameterSanitiser.prototype.routeIdSanitiser;
138
194
  /**
139
195
  * @type {?}
140
196
  * @private
141
197
  */
142
- RouteParameterSanitiser.prototype.sanitisedParameters;
198
+ RouteParameterSanitiser.prototype.parameterSanitisers;
143
199
  /** @type {?} */
144
200
  RouteParameterSanitiser.prototype.parameterDefs;
145
201
  /** @type {?} */
202
+ RouteParameterSanitiser.prototype.snapshot;
203
+ /** @type {?} */
146
204
  RouteParameterSanitiser.prototype.injector;
147
205
  }
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtcGFyYW1ldGVyLXNhbml0aXNlci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbImxpYi9wbGFjZS9yb3V0ZS9yb3V0ZS1wYXJhbWV0ZXItc2FuaXRpc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFJM0UsTUFBTSxPQUFPLHVCQUF1Qjs7Ozs7SUFPbEMsWUFBcUIsYUFBeUMsRUFBVyxRQUFrQjtRQUF0RSxrQkFBYSxHQUFiLGFBQWEsQ0FBNEI7UUFBVyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBRjFFLHdCQUFtQixHQUF1RCxFQUFFLENBQUM7UUFHNUYsSUFBSSxDQUFDLGNBQWMsR0FBRyxhQUFhLENBQUMsSUFBSTs7OztRQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxlQUFlLEdBQUcsYUFBYSxDQUFDLE1BQU07Ozs7UUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBQyxDQUFDO0lBQ2pFLENBQUM7Ozs7O0lBRUssUUFBUSxDQUFDLFFBQWdDOztZQUM3QyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7O3NCQUNqQixPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNsSCxJQUFJLENBQUMsT0FBTyxFQUFFO29CQUNaLHVHQUF1RztvQkFDdkcsMkJBQTJCO29CQUMzQixPQUFPLEtBQUssQ0FBQztpQkFDZDthQUNGO1lBQ0QsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO2dCQUN4QyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDN0U7WUFDRCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO1FBQy9DLENBQUM7S0FBQTs7Ozs7OztJQUdLLGlCQUFpQixDQUFJLEdBQTJCLEVBQUUscUJBQTZCOztZQUNuRixJQUFJLEdBQUcsRUFBRTs7c0JBQ0QsU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDO2dCQUN4QyxJQUFJLFNBQVMsRUFBRTs7MEJBQ1AsWUFBWSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDOzswQkFDcEQsY0FBYyxHQUFHLE1BQU0sU0FBUyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUM7b0JBQzdELElBQUksWUFBWSxLQUFLLGNBQWMsRUFBRTt3QkFDbkMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUMvRSxPQUFPLEtBQUssQ0FBQztxQkFDZDtpQkFDRjthQUNGO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0tBQUE7Ozs7O0lBRUQsUUFBUSxDQUFDLE1BQWM7UUFDckIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDOztjQUNqRCxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSTs7OztRQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsY0FBYyxFQUFDO1FBQzFGLElBQUksZ0JBQWdCLEVBQUU7WUFDcEIsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDeEQ7YUFBTTs7a0JBQ0MsV0FBVyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNOzs7O1lBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxjQUFjLEVBQUM7aUJBQ3BGLE1BQU07Ozs7O1lBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxtQkFBTSxNQUFNLElBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLElBQUcsR0FBRSxFQUFFLENBQUM7WUFDN0UsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7U0FDNUM7SUFDSCxDQUFDOzs7Ozs7O0lBR08sWUFBWSxDQUFJLEdBQTJCO1FBQ2pELE9BQU8sR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQXdCLEdBQUcsQ0FBQyxTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzdHLENBQUM7Q0FDRjtBQS9CQztJQURDLEtBQUssRUFBRTs7OztnRUFjUDtBQWVEO0lBREMsT0FBTyxFQUFFOzs7OzJEQUdUOzs7Ozs7SUF4REQsaURBQTBEOzs7OztJQUMxRCxrREFBNkQ7Ozs7O0lBRTdELHNEQUE4Rjs7SUFFbEYsZ0RBQWtEOztJQUFFLDJDQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgYXNzZXJ0LCBUcmFjZSB9IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCB7IE1lbW9pemUgfSBmcm9tICdAdHlwZXNjcmlwdC1wbHVzL2Zhc3QtbWVtb2l6ZS1kZWNvcmF0b3IvZGlzdC9zcmMnO1xuaW1wb3J0IHsgUGFyYW1ldGVyRGVmaW5pdGlvbiB9IGZyb20gJy4vcGFyYW1ldGVyLWRlZmluaXRpb24uY2xhc3MnO1xuaW1wb3J0IHsgUGFyYW1ldGVyU2FuaXRpc2VyIH0gZnJvbSAnLi9wYXJhbWV0ZXItc2FuaXRpc2VyJztcblxuZXhwb3J0IGNsYXNzIFJvdXRlUGFyYW1ldGVyU2FuaXRpc2VyIHtcblxuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlUGFyYW1ldGVyOiBQYXJhbWV0ZXJEZWZpbml0aW9uPGFueT47XG4gIHByaXZhdGUgcmVhZG9ubHkgcXVlcnlQYXJhbWV0ZXJzOiBQYXJhbWV0ZXJEZWZpbml0aW9uPGFueT5bXTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHNhbml0aXNlZFBhcmFtZXRlcnM6IHsgZGVmOiBQYXJhbWV0ZXJEZWZpbml0aW9uPGFueT4sIHZhbHVlOiBzdHJpbmcgfVtdID0gW107XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgcGFyYW1ldGVyRGVmczogUGFyYW1ldGVyRGVmaW5pdGlvbjxhbnk+W10sIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgIHRoaXMucm91dGVQYXJhbWV0ZXIgPSBwYXJhbWV0ZXJEZWZzLmZpbmQocCA9PiBwLmlzUm91dGVJZCk7XG4gICAgdGhpcy5xdWVyeVBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJEZWZzLmZpbHRlcihwID0+ICFwLmlzUm91dGVJZCk7XG4gIH1cblxuICBhc3luYyBzYW5pdGlzZShzbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICh0aGlzLnJvdXRlUGFyYW1ldGVyKSB7XG4gICAgICBjb25zdCByb3V0ZU9rID0gYXdhaXQgdGhpcy5zYW5pdGlzZVBhcmFtZXRlcih0aGlzLnJvdXRlUGFyYW1ldGVyLCBzbmFwc2hvdC5wYXJhbU1hcC5nZXQodGhpcy5yb3V0ZVBhcmFtZXRlci5uYW1lKSk7XG4gICAgICBpZiAoIXJvdXRlT2spIHtcbiAgICAgICAgLy8gaWYgdGhlIHJvdXRlIGlkIGlzbid0IG9rIHdlIHJlZGlyZWN0IGltbWVkaWF0ZWx5IGFzIHRoZSBxdWVyeSBwYXJhbXMgbWF5IG5lZWQgdG8gYmUgc2FuaXRpc2VkIGluIHRoZVxuICAgICAgICAvLyBjb250ZXh0IG9mIHRoZSByb3V0ZSBpZC5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGNvbnN0IHBhcmFtIG9mIHRoaXMucXVlcnlQYXJhbWV0ZXJzKSB7XG4gICAgICBhd2FpdCB0aGlzLnNhbml0aXNlUGFyYW1ldGVyKHBhcmFtLCBzbmFwc2hvdC5xdWVyeVBhcmFtTWFwLmdldChwYXJhbS5uYW1lKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnNhbml0aXNlZFBhcmFtZXRlcnMubGVuZ3RoID09PSAwO1xuICB9XG5cbiAgQFRyYWNlKClcbiAgYXN5bmMgc2FuaXRpc2VQYXJhbWV0ZXI8VD4oZGVmOiBQYXJhbWV0ZXJEZWZpbml0aW9uPFQ+LCBmb3JtYXR0ZWRJbml0aWFsVmFsdWU6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmIChkZWYpIHtcbiAgICAgIGNvbnN0IHNhbml0aXNlciA9IHRoaXMuZ2V0U2FuaXRpc2VyKGRlZik7XG4gICAgICBpZiAoc2FuaXRpc2VyKSB7XG4gICAgICAgIGNvbnN0IGluaXRpYWxWYWx1ZSA9IGRlZi50eXBlLnBhcnNlKGZvcm1hdHRlZEluaXRpYWxWYWx1ZSk7XG4gICAgICAgIGNvbnN0IHNhbml0aXNlZFZhbHVlID0gYXdhaXQgc2FuaXRpc2VyLnNhbml0aXNlKGluaXRpYWxWYWx1ZSk7XG4gICAgICAgIGlmIChpbml0aWFsVmFsdWUgIT09IHNhbml0aXNlZFZhbHVlKSB7XG4gICAgICAgICAgdGhpcy5zYW5pdGlzZWRQYXJhbWV0ZXJzLnB1c2goeyBkZWYsIHZhbHVlOiBkZWYudHlwZS5mb3JtYXQoc2FuaXRpc2VkVmFsdWUpIH0pO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJlZGlyZWN0KHJvdXRlcjogUm91dGVyKSB7XG4gICAgYXNzZXJ0LmlzVHJ1dGh5KHRoaXMuc2FuaXRpc2VkUGFyYW1ldGVycy5sZW5ndGggIT09IDApO1xuICAgIGNvbnN0IHNhbml0aXNlZFJvdXRlSWQgPSB0aGlzLnNhbml0aXNlZFBhcmFtZXRlcnMuZmluZChzID0+IHMuZGVmID09PSB0aGlzLnJvdXRlUGFyYW1ldGVyKTtcbiAgICBpZiAoc2FuaXRpc2VkUm91dGVJZCkge1xuICAgICAgcmV0dXJuIHJvdXRlci5uYXZpZ2F0ZShbJy4uJywgc2FuaXRpc2VkUm91dGVJZC52YWx1ZV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHRoaXMuc2FuaXRpc2VkUGFyYW1ldGVycy5maWx0ZXIocyA9PiBzLmRlZiAhPT0gdGhpcy5yb3V0ZVBhcmFtZXRlcilcbiAgICAgICAgLnJlZHVjZSgocGFyYW1zLCBpdGVtKSA9PiAoeyAuLi5wYXJhbXMsIFtpdGVtLmRlZi5uYW1lXTogaXRlbS52YWx1ZSB9KSwge30pO1xuICAgICAgcmV0dXJuIHJvdXRlci5uYXZpZ2F0ZShbJy4nLCBxdWVyeVBhcmFtc10pO1xuICAgIH1cbiAgfVxuXG4gIEBNZW1vaXplKClcbiAgcHJpdmF0ZSBnZXRTYW5pdGlzZXI8VD4oZGVmOiBQYXJhbWV0ZXJEZWZpbml0aW9uPFQ+KTogUGFyYW1ldGVyU2FuaXRpc2VyPFQ+IHtcbiAgICByZXR1cm4gZGVmLnNhbml0aXNlciA/IHRoaXMuaW5qZWN0b3IuZ2V0PFBhcmFtZXRlclNhbml0aXNlcjxUPj4oZGVmLnNhbml0aXNlciwgbmV3IGRlZi5zYW5pdGlzZXIoKSkgOiBudWxsO1xuICB9XG59XG4iXX0=
206
+ (function (Sanitiser) {
207
+ /**
208
+ * @template T
209
+ */
210
+ class Value extends Sanitiser {
211
+ /**
212
+ * @param {?} snapshot
213
+ * @return {?}
214
+ */
215
+ readFrom(snapshot) {
216
+ /** @type {?} */
217
+ const rawValue = this.parameterDef.isRouteId ?
218
+ snapshot.paramMap.get(this.parameterDef.name) :
219
+ snapshot.queryParamMap.get(this.parameterDef.name);
220
+ return this.parameterDef.type.parse(rawValue);
221
+ }
222
+ /**
223
+ * @protected
224
+ * @param {?} initialValue
225
+ * @param {?} sanitisedValue
226
+ * @return {?}
227
+ */
228
+ hasChanged(initialValue, sanitisedValue) {
229
+ return initialValue !== sanitisedValue;
230
+ }
231
+ /**
232
+ * @param {?} dest
233
+ * @return {?}
234
+ */
235
+ injectRouteParam(dest) {
236
+ dest[this.parameterDef.name] = this.parameterDef.type.format(this.sanitisedValue);
237
+ }
238
+ }
239
+ Sanitiser.Value = Value;
240
+ /**
241
+ * @template T
242
+ */
243
+ class Array extends Sanitiser {
244
+ /**
245
+ * @param {?} snapshot
246
+ * @return {?}
247
+ */
248
+ readFrom(snapshot) {
249
+ /** @type {?} */
250
+ const rawValues = snapshot.queryParamMap.getAll(this.parameterDef.name);
251
+ return rawValues.map((/**
252
+ * @param {?} value
253
+ * @return {?}
254
+ */
255
+ value => this.parameterDef.type.parse(value)));
256
+ }
257
+ /**
258
+ * @protected
259
+ * @param {?} initialValue
260
+ * @param {?} sanitisedValue
261
+ * @return {?}
262
+ */
263
+ hasChanged(initialValue, sanitisedValue) {
264
+ return initialValue !== sanitisedValue;
265
+ }
266
+ /**
267
+ * @param {?} dest
268
+ * @return {?}
269
+ */
270
+ injectRouteParam(dest) {
271
+ dest[this.parameterDef.name] = this.sanitisedValue.map((/**
272
+ * @param {?} v
273
+ * @return {?}
274
+ */
275
+ v => this.parameterDef.type.format(v)));
276
+ }
277
+ }
278
+ Sanitiser.Array = Array;
279
+ })(Sanitiser || (Sanitiser = {}));
280
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtcGFyYW1ldGVyLXNhbml0aXNlci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbImxpYi9wbGFjZS9yb3V0ZS9yb3V0ZS1wYXJhbWV0ZXItc2FuaXRpc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUczRSxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQzs7Ozs7QUFFNUIsTUFBTSxPQUFnQixTQUFTOzs7Ozs7SUFLN0IsWUFBcUIsWUFBb0MsRUFBVyxRQUErQixFQUFXLFNBQWdDO1FBQXpILGlCQUFZLEdBQVosWUFBWSxDQUF3QjtRQUFXLGFBQVEsR0FBUixRQUFRLENBQXVCO1FBQVcsY0FBUyxHQUFULFNBQVMsQ0FBdUI7SUFDOUksQ0FBQzs7OztJQUVELFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDO0lBQ3JDLENBQUM7Ozs7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNoRyxDQUFDOzs7O0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDOzs7O0lBT0ssUUFBUTs7WUFDWixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxJQUFJ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QyxDQUFDO1FBQ3BGLENBQUM7S0FFRjtJQWxCWSxlQUFLLFFBa0JqQixDQUFBOzs7O0lBRUQsTUFBYSxLQUFTLFNBQVEsU0FBaUI7Ozs7O1FBRTdDLFFBQVEsQ0FBQyxRQUFnQzs7a0JBQ2pDLFNBQVMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztZQUN2RSxPQUFPLFNBQVMsQ0FBQyxHQUFHOzs7O1lBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUMsQ0FBQztRQUNyRSxDQUFDOzs7Ozs7O1FBRVMsVUFBVSxDQUFDLFlBQWlCLEVBQUUsY0FBbUI7WUFDekQsT0FBTyxZQUFZLEtBQUssY0FBYyxDQUFDO1FBQ3pDLENBQUM7Ozs7O1FBR0QsZ0JBQWdCLENBQUMsSUFBUTtZQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUc7Ozs7WUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDO1FBQ2hHLENBQUM7S0FHRjtJQWpCWSxlQUFLLFFBaUJqQixDQUFBO0FBRUgsQ0FBQyxFQXpDZ0IsU0FBUyxLQUFULFNBQVMsUUF5Q3pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBhc3NlcnQgfSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgeyBNZW1vaXplIH0gZnJvbSAnQHR5cGVzY3JpcHQtcGx1cy9mYXN0LW1lbW9pemUtZGVjb3JhdG9yL2Rpc3Qvc3JjJztcbmltcG9ydCB7IFBhcmFtZXRlckRlZmluaXRpb24gfSBmcm9tICcuL3BhcmFtZXRlci1kZWZpbml0aW9uLmNsYXNzJztcbmltcG9ydCB7IFBhcmFtZXRlclNhbml0aXNlciB9IGZyb20gJy4vcGFyYW1ldGVyLXNhbml0aXNlcic7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYW5pdGlzZXI8VCwgUz4ge1xuXG4gIHByaXZhdGUgaW5pdGlhbFZhbHVlOiBTO1xuICBwcml2YXRlIF9zYW5pdGlzZWRWYWx1ZTogUztcblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBwYXJhbWV0ZXJEZWY6IFBhcmFtZXRlckRlZmluaXRpb248VD4sIHJlYWRvbmx5IHNuYXBzaG90OkFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHJlYWRvbmx5IHNhbml0aXNlcjogUGFyYW1ldGVyU2FuaXRpc2VyPFM+KSB7XG4gIH1cblxuICBpc1JvdXRlSWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucGFyYW1ldGVyRGVmLmlzUm91dGVJZDtcbiAgfVxuXG4gIGdldCB2YWx1ZUNoYW5nZWQoKTpib29sZWFuIHtcbiAgICByZXR1cm4gIV8uaXNOaWwodGhpcy5pbml0aWFsVmFsdWUpICYmIHRoaXMuaGFzQ2hhbmdlZCh0aGlzLmluaXRpYWxWYWx1ZSwgdGhpcy5zYW5pdGlzZWRWYWx1ZSk7XG4gIH1cblxuICBnZXQgc2FuaXRpc2VkVmFsdWUoKTpTIHtcbiAgICByZXR1cm4gdGhpcy5fc2FuaXRpc2VkVmFsdWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVhZEZyb20oc25hcHNob3Q6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBTO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgaGFzQ2hhbmdlZChpbml0aWFsVmFsdWU6Uywgc2FuaXRpc2VkVmFsdWU6Uyk6IGJvb2xlYW47XG5cbiAgYWJzdHJhY3QgaW5qZWN0Um91dGVQYXJhbShkZXN0OiB7fSk7XG5cbiAgYXN5bmMgc2FuaXRpemUoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKHRoaXMuc2FuaXRpc2VyKSB7XG4gICAgICB0aGlzLmluaXRpYWxWYWx1ZSA9IHRoaXMucmVhZEZyb20odGhpcy5zbmFwc2hvdCk7XG4gICAgICB0aGlzLl9zYW5pdGlzZWRWYWx1ZSA9IGF3YWl0IHRoaXMuc2FuaXRpc2VyLnNhbml0aXNlKHRoaXMuaW5pdGlhbFZhbHVlKTtcbiAgICAgIGlmICh0aGlzLmluaXRpYWxWYWx1ZSAhPT0gdGhpcy5fc2FuaXRpc2VkVmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG5cbmV4cG9ydCBjbGFzcyBSb3V0ZVBhcmFtZXRlclNhbml0aXNlciB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZUlkU2FuaXRpc2VyOiBTYW5pdGlzZXI8YW55LCBhbnk+O1xuICBwcml2YXRlIHJlYWRvbmx5IHBhcmFtZXRlclNhbml0aXNlcnM6IFNhbml0aXNlcjxhbnksIGFueT5bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IHBhcmFtZXRlckRlZnM6IFBhcmFtZXRlckRlZmluaXRpb248YW55PltdLCByZWFkb25seSBzbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgY29uc3Qgc2FuaXRpc2VycyA9IHBhcmFtZXRlckRlZnMubWFwKGRlZiA9PiB7XG4gICAgICByZXR1cm4gZGVmLmlzQXJyYXkgP1xuICAgICAgICBuZXcgU2FuaXRpc2VyLkFycmF5KGRlZiwgc25hcHNob3QsIHRoaXMuZ2V0U2FuaXRpc2VyKGRlZikpIDpcbiAgICAgICAgbmV3IFNhbml0aXNlci5WYWx1ZShkZWYsIHNuYXBzaG90LCB0aGlzLmdldFNhbml0aXNlcihkZWYpKTtcbiAgICB9KTtcbiAgICB0aGlzLnJvdXRlSWRTYW5pdGlzZXIgPSBzYW5pdGlzZXJzLmZpbmQocCA9PiBwLmlzUm91dGVJZCgpKTtcbiAgICB0aGlzLnBhcmFtZXRlclNhbml0aXNlcnMgPSBzYW5pdGlzZXJzLmZpbHRlcihwID0+ICFwLmlzUm91dGVJZCgpKTtcbiAgfVxuXG4gIGFzeW5jIHNhbml0aXNlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICh0aGlzLnJvdXRlSWRTYW5pdGlzZXIpIHtcbiAgICAgIGF3YWl0IHRoaXMucm91dGVJZFNhbml0aXNlci5zYW5pdGl6ZSgpO1xuICAgICAgaWYgKHRoaXMucm91dGVJZFNhbml0aXNlci52YWx1ZUNoYW5nZWQpIHtcbiAgICAgICAgLy8gaWYgdGhlIHJvdXRlIGlkIGlzbid0IG9rIHdlIHJlZGlyZWN0IGltbWVkaWF0ZWx5IGFzIHRoZSBxdWVyeSBwYXJhbXMgbWF5IG5lZWQgdG8gYmUgc2FuaXRpc2VkIGluIHRoZVxuICAgICAgICAvLyBjb250ZXh0IG9mIHRoZSByb3V0ZSBpZC5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGNvbnN0IHNhbml0aXNlciBvZiB0aGlzLnBhcmFtZXRlclNhbml0aXNlcnMpIHtcbiAgICAgICAgYXdhaXQgc2FuaXRpc2VyLnNhbml0aXplKCk7XG4gICAgfVxuICAgIHJldHVybiAhdGhpcy5wYXJhbWV0ZXJTYW5pdGlzZXJzLmZpbmQocyA9PiBzLnZhbHVlQ2hhbmdlZCk7XG4gIH1cblxuICByZWRpcmVjdChyb3V0ZXI6IFJvdXRlcikge1xuICAgIGFzc2VydC5pc1RydXRoeSh0aGlzLnBhcmFtZXRlclNhbml0aXNlcnMubGVuZ3RoICE9PSAwKTtcbiAgICBpZiAodGhpcy5yb3V0ZUlkU2FuaXRpc2VyLnZhbHVlQ2hhbmdlZCkge1xuICAgICAgcmV0dXJuIHJvdXRlci5uYXZpZ2F0ZShbJy4uJywgdGhpcy5yb3V0ZUlkU2FuaXRpc2VyLnNhbml0aXNlZFZhbHVlXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHJvdXRlUGFyYW1zID0ge307XG4gICAgICB0aGlzLnBhcmFtZXRlclNhbml0aXNlcnMuZm9yRWFjaChzID0+IHMuaW5qZWN0Um91dGVQYXJhbShyb3V0ZVBhcmFtcykpO1xuICAgICAgcmV0dXJuIHJvdXRlci5uYXZpZ2F0ZShbJy4nLCByb3V0ZVBhcmFtc10pO1xuICAgIH1cbiAgfVxuXG4gIEBNZW1vaXplKClcbiAgcHJpdmF0ZSBnZXRTYW5pdGlzZXI8VCwgUz4oZGVmOiBQYXJhbWV0ZXJEZWZpbml0aW9uPFQsIFM+KTogUGFyYW1ldGVyU2FuaXRpc2VyPFM+IHtcbiAgICByZXR1cm4gZGVmLnNhbml0aXNlciA/IHRoaXMuaW5qZWN0b3IuZ2V0PFBhcmFtZXRlclNhbml0aXNlcjxTPj4oZGVmLnNhbml0aXNlciwgbmV3IGRlZi5zYW5pdGlzZXIoKSkgOiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgU2FuaXRpc2VyIHtcblxuICBleHBvcnQgY2xhc3MgVmFsdWU8VD4gZXh0ZW5kcyBTYW5pdGlzZXI8VCwgVD4ge1xuXG4gICAgcmVhZEZyb20oc25hcHNob3Q6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBUIHtcbiAgICAgIGNvbnN0IHJhd1ZhbHVlID0gdGhpcy5wYXJhbWV0ZXJEZWYuaXNSb3V0ZUlkID9cbiAgICAgICAgc25hcHNob3QucGFyYW1NYXAuZ2V0KHRoaXMucGFyYW1ldGVyRGVmLm5hbWUpIDpcbiAgICAgICAgc25hcHNob3QucXVlcnlQYXJhbU1hcC5nZXQodGhpcy5wYXJhbWV0ZXJEZWYubmFtZSk7XG5cbiAgICAgIHJldHVybiB0aGlzLnBhcmFtZXRlckRlZi50eXBlLnBhcnNlKHJhd1ZhbHVlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaGFzQ2hhbmdlZChpbml0aWFsVmFsdWU6IFQsIHNhbml0aXNlZFZhbHVlOiBUKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gaW5pdGlhbFZhbHVlICE9PSBzYW5pdGlzZWRWYWx1ZTtcbiAgICB9XG5cbiAgICBpbmplY3RSb3V0ZVBhcmFtKGRlc3Q6IHt9KSB7XG4gICAgICBkZXN0W3RoaXMucGFyYW1ldGVyRGVmLm5hbWVdID0gdGhpcy5wYXJhbWV0ZXJEZWYudHlwZS5mb3JtYXQodGhpcy5zYW5pdGlzZWRWYWx1ZSk7XG4gICAgfVxuXG4gIH1cblxuICBleHBvcnQgY2xhc3MgQXJyYXk8VD4gZXh0ZW5kcyBTYW5pdGlzZXI8VCwgVFtdPiB7XG5cbiAgICByZWFkRnJvbShzbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IFRbXSB7XG4gICAgICBjb25zdCByYXdWYWx1ZXMgPSBzbmFwc2hvdC5xdWVyeVBhcmFtTWFwLmdldEFsbCh0aGlzLnBhcmFtZXRlckRlZi5uYW1lKTtcbiAgICAgIHJldHVybiByYXdWYWx1ZXMubWFwKHZhbHVlID0+IHRoaXMucGFyYW1ldGVyRGVmLnR5cGUucGFyc2UodmFsdWUpKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaGFzQ2hhbmdlZChpbml0aWFsVmFsdWU6IFRbXSwgc2FuaXRpc2VkVmFsdWU6IFRbXSk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIGluaXRpYWxWYWx1ZSAhPT0gc2FuaXRpc2VkVmFsdWU7XG4gICAgfVxuXG5cbiAgICBpbmplY3RSb3V0ZVBhcmFtKGRlc3Q6IHt9KSB7XG4gICAgICBkZXN0W3RoaXMucGFyYW1ldGVyRGVmLm5hbWVdID0gdGhpcy5zYW5pdGlzZWRWYWx1ZS5tYXAodiA9PiB0aGlzLnBhcmFtZXRlckRlZi50eXBlLmZvcm1hdCh2KSk7XG4gICAgfVxuXG5cbiAgfVxuXG59XG4iXX0=
@@ -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==
@@ -5,7 +5,7 @@
5
5
  /**
6
6
  * Generated bundle index. Do not edit.
7
7
  */
8
- export { AngularUiPowerupsModule, slideDownAndUpAnimation, DisposableComponent, ResizeAwareComponent, AbstractInputComponent, NumberInputComponent, PasswordInputComponent, SelectInputComponent, StringInputComponent, Bounds, Dimension, Point, CommandDirective, FocusBindingDirective, AbstractActivity, ACTIVITY_DATA, INTERACTION_CONTEXT, InteractionContext, InteractionModule, ActivityContainerComponent, ActivityOutletComponent, AlertDialogComponent, ConfirmationDialogComponent, DialogInteractionService, AbstractPlaceComponent, Place, PlaceModule, PlaceService, BusyOverlayComponent, EmptyStateComponent, PlaceOutletComponent, LeavePlaceGuard, PlaceRouteGuard, RouteId, QueryParameter, ParameterType, RouteParameterBindings, RouteParameterSanitiser } from './index';
8
+ export { AngularUiPowerupsModule, slideDownAndUpAnimation, DisposableComponent, ResizeAwareComponent, AbstractInputComponent, NumberInputComponent, PasswordInputComponent, SelectInputComponent, StringInputComponent, Bounds, Dimension, Point, CommandDirective, FocusBindingDirective, AbstractActivity, ACTIVITY_DATA, INTERACTION_CONTEXT, InteractionContext, InteractionModule, ActivityContainerComponent, ActivityOutletComponent, AlertDialogComponent, ConfirmationDialogComponent, DialogInteractionService, AbstractPlaceComponent, Place, PlaceModule, PlaceService, BusyOverlayComponent, EmptyStateComponent, NavComponent, PlaceOutletComponent, LeavePlaceGuard, PlaceRouteGuard, RouteId, QueryParameter, RouteParameter, QueryParameterList, RouteParameterList, ParameterType, RouteParameterBindings, Sanitiser, RouteParameterSanitiser } from './index';
9
9
  export { DisposableComponent as ɵc } from './lib/components/disposable-component';
10
10
  export { AbstractInputComponent as ɵe } from './lib/components/forms/abstract-input.component';
11
11
  export { NumberInputComponent as ɵd } from './lib/components/forms/number-input/number-input.component';
@@ -14,18 +14,19 @@ export { SelectInputComponent as ɵh } from './lib/components/forms/select-input
14
14
  export { StringInputComponent as ɵf } from './lib/components/forms/string-input/string-input.component';
15
15
  export { CommandDirective as ɵa } from './lib/directives/command.directive';
16
16
  export { FocusBindingDirective as ɵb } from './lib/directives/focus-binding.directive';
17
- export { AbstractActivity as ɵq } from './lib/interaction/abstract-activity';
18
- export { ACTIVITY_DATA as ɵr } from './lib/interaction/activity';
19
- export { ActivityContainerComponent as ɵo } from './lib/interaction/components/activity-container/activity-container.component';
20
- export { ActivityOutletComponent as ɵv } from './lib/interaction/components/activity-outlet/activity-outlet.component';
21
- export { AlertDialogComponent as ɵt } from './lib/interaction/components/alert-dialog/alert-dialog.component';
22
- export { ConfirmationDialogComponent as ɵp } from './lib/interaction/components/confirmation-dialog/confirmation-dialog.component';
23
- export { InteractionContext as ɵx } from './lib/interaction/interaction-context';
24
- export { InteractionModule as ɵn } from './lib/interaction/interaction.module';
25
- export { DialogInteractionService as ɵw } from './lib/interaction/services/dialog-interaction.service';
17
+ export { AbstractActivity as ɵr } from './lib/interaction/abstract-activity';
18
+ export { ACTIVITY_DATA as ɵs } from './lib/interaction/activity';
19
+ export { ActivityContainerComponent as ɵp } from './lib/interaction/components/activity-container/activity-container.component';
20
+ export { ActivityOutletComponent as ɵw } from './lib/interaction/components/activity-outlet/activity-outlet.component';
21
+ export { AlertDialogComponent as ɵu } from './lib/interaction/components/alert-dialog/alert-dialog.component';
22
+ export { ConfirmationDialogComponent as ɵq } from './lib/interaction/components/confirmation-dialog/confirmation-dialog.component';
23
+ export { InteractionContext as ɵy } from './lib/interaction/interaction-context';
24
+ export { InteractionModule as ɵo } from './lib/interaction/interaction.module';
25
+ export { DialogInteractionService as ɵx } from './lib/interaction/services/dialog-interaction.service';
26
26
  export { BusyOverlayComponent as ɵk } from './lib/place/components/busy-overlay/busy-overlay.component';
27
27
  export { EmptyStateComponent as ɵj } from './lib/place/components/empty-state/empty-state.component';
28
+ export { NavComponent as ɵn } from './lib/place/components/nav/nav.component';
28
29
  export { PlaceOutletComponent as ɵl } from './lib/place/components/place-outlet/place-outlet.component';
29
30
  export { PlaceModule as ɵi } from './lib/place/place.module';
30
31
  export { PlaceService as ɵm } from './lib/place/place.service';
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29vbG9uLWFuZ3VsYXItdWktcG93ZXJ1cHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJjb29sb24tYW5ndWxhci11aS1wb3dlcnVwcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEsc3ZCQUFjLFNBQVMsQ0FBQztBQUV4QixPQUFPLEVBQUMsbUJBQW1CLElBQUksRUFBRSxFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDaEYsT0FBTyxFQUFDLHNCQUFzQixJQUFJLEVBQUUsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBQzdGLE9BQU8sRUFBQyxvQkFBb0IsSUFBSSxFQUFFLEVBQUMsTUFBTSw0REFBNEQsQ0FBQztBQUN0RyxPQUFPLEVBQUMsc0JBQXNCLElBQUksRUFBRSxFQUFDLE1BQU0sZ0VBQWdFLENBQUM7QUFDNUcsT0FBTyxFQUFDLG9CQUFvQixJQUFJLEVBQUUsRUFBQyxNQUFNLDREQUE0RCxDQUFDO0FBQ3RHLE9BQU8sRUFBQyxvQkFBb0IsSUFBSSxFQUFFLEVBQUMsTUFBTSw0REFBNEQsQ0FBQztBQUN0RyxPQUFPLEVBQUMsZ0JBQWdCLElBQUksRUFBRSxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDMUUsT0FBTyxFQUFDLHFCQUFxQixJQUFJLEVBQUUsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBQ3JGLE9BQU8sRUFBQyxnQkFBZ0IsSUFBSSxFQUFFLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUMzRSxPQUFPLEVBQUMsYUFBYSxJQUFJLEVBQUUsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRS9ELE9BQU8sRUFBQywwQkFBMEIsSUFBSSxFQUFFLEVBQUMsTUFBTSw4RUFBOEUsQ0FBQztBQUM5SCxPQUFPLEVBQUMsdUJBQXVCLElBQUksRUFBRSxFQUFDLE1BQU0sd0VBQXdFLENBQUM7QUFDckgsT0FBTyxFQUFDLG9CQUFvQixJQUFJLEVBQUUsRUFBQyxNQUFNLGtFQUFrRSxDQUFDO0FBQzVHLE9BQU8sRUFBQywyQkFBMkIsSUFBSSxFQUFFLEVBQUMsTUFBTSxnRkFBZ0YsQ0FBQztBQUVqSSxPQUFPLEVBQUMsa0JBQWtCLElBQUksRUFBRSxFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDL0UsT0FBTyxFQUFDLGlCQUFpQixJQUFJLEVBQUUsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQzdFLE9BQU8sRUFBQyx3QkFBd0IsSUFBSSxFQUFFLEVBQUMsTUFBTSx1REFBdUQsQ0FBQztBQUNyRyxPQUFPLEVBQUMsb0JBQW9CLElBQUksRUFBRSxFQUFDLE1BQU0sNERBQTRELENBQUM7QUFDdEcsT0FBTyxFQUFDLG1CQUFtQixJQUFJLEVBQUUsRUFBQyxNQUFNLDBEQUEwRCxDQUFDO0FBQ25HLE9BQU8sRUFBQyxvQkFBb0IsSUFBSSxFQUFFLEVBQUMsTUFBTSw0REFBNEQsQ0FBQztBQUN0RyxPQUFPLEVBQUMsV0FBVyxJQUFJLEVBQUUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBQyxZQUFZLElBQUksRUFBRSxFQUFDLE1BQU0sMkJBQTJCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuXG5leHBvcnQge0Rpc3Bvc2FibGVDb21wb25lbnQgYXMgybVjfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL2Rpc3Bvc2FibGUtY29tcG9uZW50JztcbmV4cG9ydCB7QWJzdHJhY3RJbnB1dENvbXBvbmVudCBhcyDJtWV9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvZm9ybXMvYWJzdHJhY3QtaW5wdXQuY29tcG9uZW50JztcbmV4cG9ydCB7TnVtYmVySW5wdXRDb21wb25lbnQgYXMgybVkfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL2Zvcm1zL251bWJlci1pbnB1dC9udW1iZXItaW5wdXQuY29tcG9uZW50JztcbmV4cG9ydCB7UGFzc3dvcmRJbnB1dENvbXBvbmVudCBhcyDJtWd9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvZm9ybXMvcGFzc3dvcmQtaW5wdXQvcGFzc3dvcmQtaW5wdXQuY29tcG9uZW50JztcbmV4cG9ydCB7U2VsZWN0SW5wdXRDb21wb25lbnQgYXMgybVofSBmcm9tICcuL2xpYi9jb21wb25lbnRzL2Zvcm1zL3NlbGVjdC1pbnB1dC9zZWxlY3QtaW5wdXQuY29tcG9uZW50JztcbmV4cG9ydCB7U3RyaW5nSW5wdXRDb21wb25lbnQgYXMgybVmfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL2Zvcm1zL3N0cmluZy1pbnB1dC9zdHJpbmctaW5wdXQuY29tcG9uZW50JztcbmV4cG9ydCB7Q29tbWFuZERpcmVjdGl2ZSBhcyDJtWF9IGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvY29tbWFuZC5kaXJlY3RpdmUnO1xuZXhwb3J0IHtGb2N1c0JpbmRpbmdEaXJlY3RpdmUgYXMgybVifSBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL2ZvY3VzLWJpbmRpbmcuZGlyZWN0aXZlJztcbmV4cG9ydCB7QWJzdHJhY3RBY3Rpdml0eSBhcyDJtXF9IGZyb20gJy4vbGliL2ludGVyYWN0aW9uL2Fic3RyYWN0LWFjdGl2aXR5JztcbmV4cG9ydCB7QUNUSVZJVFlfREFUQSBhcyDJtXJ9IGZyb20gJy4vbGliL2ludGVyYWN0aW9uL2FjdGl2aXR5JztcbmV4cG9ydCB7QWxlcnQgYXMgybV1fSBmcm9tICcuL2xpYi9pbnRlcmFjdGlvbi9hbGVydCc7XG5leHBvcnQge0FjdGl2aXR5Q29udGFpbmVyQ29tcG9uZW50IGFzIMm1b30gZnJvbSAnLi9saWIvaW50ZXJhY3Rpb24vY29tcG9uZW50cy9hY3Rpdml0eS1jb250YWluZXIvYWN0aXZpdHktY29udGFpbmVyLmNvbXBvbmVudCc7XG5leHBvcnQge0FjdGl2aXR5T3V0bGV0Q29tcG9uZW50IGFzIMm1dn0gZnJvbSAnLi9saWIvaW50ZXJhY3Rpb24vY29tcG9uZW50cy9hY3Rpdml0eS1vdXRsZXQvYWN0aXZpdHktb3V0bGV0LmNvbXBvbmVudCc7XG5leHBvcnQge0FsZXJ0RGlhbG9nQ29tcG9uZW50IGFzIMm1dH0gZnJvbSAnLi9saWIvaW50ZXJhY3Rpb24vY29tcG9uZW50cy9hbGVydC1kaWFsb2cvYWxlcnQtZGlhbG9nLmNvbXBvbmVudCc7XG5leHBvcnQge0NvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCBhcyDJtXB9IGZyb20gJy4vbGliL2ludGVyYWN0aW9uL2NvbXBvbmVudHMvY29uZmlybWF0aW9uLWRpYWxvZy9jb25maXJtYXRpb24tZGlhbG9nLmNvbXBvbmVudCc7XG5leHBvcnQge0NvbmZpcm0gYXMgybVzfSBmcm9tICcuL2xpYi9pbnRlcmFjdGlvbi9jb25maXJtJztcbmV4cG9ydCB7SW50ZXJhY3Rpb25Db250ZXh0IGFzIMm1eH0gZnJvbSAnLi9saWIvaW50ZXJhY3Rpb24vaW50ZXJhY3Rpb24tY29udGV4dCc7XG5leHBvcnQge0ludGVyYWN0aW9uTW9kdWxlIGFzIMm1bn0gZnJvbSAnLi9saWIvaW50ZXJhY3Rpb24vaW50ZXJhY3Rpb24ubW9kdWxlJztcbmV4cG9ydCB7RGlhbG9nSW50ZXJhY3Rpb25TZXJ2aWNlIGFzIMm1d30gZnJvbSAnLi9saWIvaW50ZXJhY3Rpb24vc2VydmljZXMvZGlhbG9nLWludGVyYWN0aW9uLnNlcnZpY2UnO1xuZXhwb3J0IHtCdXN5T3ZlcmxheUNvbXBvbmVudCBhcyDJtWt9IGZyb20gJy4vbGliL3BsYWNlL2NvbXBvbmVudHMvYnVzeS1vdmVybGF5L2J1c3ktb3ZlcmxheS5jb21wb25lbnQnO1xuZXhwb3J0IHtFbXB0eVN0YXRlQ29tcG9uZW50IGFzIMm1an0gZnJvbSAnLi9saWIvcGxhY2UvY29tcG9uZW50cy9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5jb21wb25lbnQnO1xuZXhwb3J0IHtQbGFjZU91dGxldENvbXBvbmVudCBhcyDJtWx9IGZyb20gJy4vbGliL3BsYWNlL2NvbXBvbmVudHMvcGxhY2Utb3V0bGV0L3BsYWNlLW91dGxldC5jb21wb25lbnQnO1xuZXhwb3J0IHtQbGFjZU1vZHVsZSBhcyDJtWl9IGZyb20gJy4vbGliL3BsYWNlL3BsYWNlLm1vZHVsZSc7XG5leHBvcnQge1BsYWNlU2VydmljZSBhcyDJtW19IGZyb20gJy4vbGliL3BsYWNlL3BsYWNlLnNlcnZpY2UnOyJdfQ==
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29vbG9uLWFuZ3VsYXItdWktcG93ZXJ1cHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJjb29sb24tYW5ndWxhci11aS1wb3dlcnVwcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEsdTBCQUFjLFNBQVMsQ0FBQztBQUV4QixPQUFPLEVBQUMsbUJBQW1CLElBQUksRUFBRSxFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDaEYsT0FBTyxFQUFDLHNCQUFzQixJQUFJLEVBQUUsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBQzdGLE9BQU8sRUFBQyxvQkFBb0IsSUFBSSxFQUFFLEVBQUMsTUFBTSw0REFBNEQsQ0FBQztBQUN0RyxPQUFPLEVBQUMsc0JBQXNCLElBQUksRUFBRSxFQUFDLE1BQU0sZ0VBQWdFLENBQUM7QUFDNUcsT0FBTyxFQUFDLG9CQUFvQixJQUFJLEVBQUUsRUFBQyxNQUFNLDREQUE0RCxDQUFDO0FBQ3RHLE9BQU8sRUFBQyxvQkFBb0IsSUFBSSxFQUFFLEVBQUMsTUFBTSw0REFBNEQsQ0FBQztBQUN0RyxPQUFPLEVBQUMsZ0JBQWdCLElBQUksRUFBRSxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDMUUsT0FBTyxFQUFDLHFCQUFxQixJQUFJLEVBQUUsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBQ3JGLE9BQU8sRUFBQyxnQkFBZ0IsSUFBSSxFQUFFLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUMzRSxPQUFPLEVBQUMsYUFBYSxJQUFJLEVBQUUsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRS9ELE9BQU8sRUFBQywwQkFBMEIsSUFBSSxFQUFFLEVBQUMsTUFBTSw4RUFBOEUsQ0FBQztBQUM5SCxPQUFPLEVBQUMsdUJBQXVCLElBQUksRUFBRSxFQUFDLE1BQU0sd0VBQXdFLENBQUM7QUFDckgsT0FBTyxFQUFDLG9CQUFvQixJQUFJLEVBQUUsRUFBQyxNQUFNLGtFQUFrRSxDQUFDO0FBQzVHLE9BQU8sRUFBQywyQkFBMkIsSUFBSSxFQUFFLEVBQUMsTUFBTSxnRkFBZ0YsQ0FBQztBQUVqSSxPQUFPLEVBQUMsa0JBQWtCLElBQUksRUFBRSxFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDL0UsT0FBTyxFQUFDLGlCQUFpQixJQUFJLEVBQUUsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQzdFLE9BQU8sRUFBQyx3QkFBd0IsSUFBSSxFQUFFLEVBQUMsTUFBTSx1REFBdUQsQ0FBQztBQUNyRyxPQUFPLEVBQUMsb0JBQW9CLElBQUksRUFBRSxFQUFDLE1BQU0sNERBQTRELENBQUM7QUFDdEcsT0FBTyxFQUFDLG1CQUFtQixJQUFJLEVBQUUsRUFBQyxNQUFNLDBEQUEwRCxDQUFDO0FBQ25HLE9BQU8sRUFBQyxZQUFZLElBQUksRUFBRSxFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFDNUUsT0FBTyxFQUFDLG9CQUFvQixJQUFJLEVBQUUsRUFBQyxNQUFNLDREQUE0RCxDQUFDO0FBQ3RHLE9BQU8sRUFBQyxXQUFXLElBQUksRUFBRSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFDLFlBQVksSUFBSSxFQUFFLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG5cbmV4cG9ydCB7RGlzcG9zYWJsZUNvbXBvbmVudCBhcyDJtWN9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvZGlzcG9zYWJsZS1jb21wb25lbnQnO1xuZXhwb3J0IHtBYnN0cmFjdElucHV0Q29tcG9uZW50IGFzIMm1ZX0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9mb3Jtcy9hYnN0cmFjdC1pbnB1dC5jb21wb25lbnQnO1xuZXhwb3J0IHtOdW1iZXJJbnB1dENvbXBvbmVudCBhcyDJtWR9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvZm9ybXMvbnVtYmVyLWlucHV0L251bWJlci1pbnB1dC5jb21wb25lbnQnO1xuZXhwb3J0IHtQYXNzd29yZElucHV0Q29tcG9uZW50IGFzIMm1Z30gZnJvbSAnLi9saWIvY29tcG9uZW50cy9mb3Jtcy9wYXNzd29yZC1pbnB1dC9wYXNzd29yZC1pbnB1dC5jb21wb25lbnQnO1xuZXhwb3J0IHtTZWxlY3RJbnB1dENvbXBvbmVudCBhcyDJtWh9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvZm9ybXMvc2VsZWN0LWlucHV0L3NlbGVjdC1pbnB1dC5jb21wb25lbnQnO1xuZXhwb3J0IHtTdHJpbmdJbnB1dENvbXBvbmVudCBhcyDJtWZ9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvZm9ybXMvc3RyaW5nLWlucHV0L3N0cmluZy1pbnB1dC5jb21wb25lbnQnO1xuZXhwb3J0IHtDb21tYW5kRGlyZWN0aXZlIGFzIMm1YX0gZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9jb21tYW5kLmRpcmVjdGl2ZSc7XG5leHBvcnQge0ZvY3VzQmluZGluZ0RpcmVjdGl2ZSBhcyDJtWJ9IGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvZm9jdXMtYmluZGluZy5kaXJlY3RpdmUnO1xuZXhwb3J0IHtBYnN0cmFjdEFjdGl2aXR5IGFzIMm1cn0gZnJvbSAnLi9saWIvaW50ZXJhY3Rpb24vYWJzdHJhY3QtYWN0aXZpdHknO1xuZXhwb3J0IHtBQ1RJVklUWV9EQVRBIGFzIMm1c30gZnJvbSAnLi9saWIvaW50ZXJhY3Rpb24vYWN0aXZpdHknO1xuZXhwb3J0IHtBbGVydCBhcyDJtXZ9IGZyb20gJy4vbGliL2ludGVyYWN0aW9uL2FsZXJ0JztcbmV4cG9ydCB7QWN0aXZpdHlDb250YWluZXJDb21wb25lbnQgYXMgybVwfSBmcm9tICcuL2xpYi9pbnRlcmFjdGlvbi9jb21wb25lbnRzL2FjdGl2aXR5LWNvbnRhaW5lci9hY3Rpdml0eS1jb250YWluZXIuY29tcG9uZW50JztcbmV4cG9ydCB7QWN0aXZpdHlPdXRsZXRDb21wb25lbnQgYXMgybV3fSBmcm9tICcuL2xpYi9pbnRlcmFjdGlvbi9jb21wb25lbnRzL2FjdGl2aXR5LW91dGxldC9hY3Rpdml0eS1vdXRsZXQuY29tcG9uZW50JztcbmV4cG9ydCB7QWxlcnREaWFsb2dDb21wb25lbnQgYXMgybV1fSBmcm9tICcuL2xpYi9pbnRlcmFjdGlvbi9jb21wb25lbnRzL2FsZXJ0LWRpYWxvZy9hbGVydC1kaWFsb2cuY29tcG9uZW50JztcbmV4cG9ydCB7Q29uZmlybWF0aW9uRGlhbG9nQ29tcG9uZW50IGFzIMm1cX0gZnJvbSAnLi9saWIvaW50ZXJhY3Rpb24vY29tcG9uZW50cy9jb25maXJtYXRpb24tZGlhbG9nL2NvbmZpcm1hdGlvbi1kaWFsb2cuY29tcG9uZW50JztcbmV4cG9ydCB7Q29uZmlybSBhcyDJtXR9IGZyb20gJy4vbGliL2ludGVyYWN0aW9uL2NvbmZpcm0nO1xuZXhwb3J0IHtJbnRlcmFjdGlvbkNvbnRleHQgYXMgybV5fSBmcm9tICcuL2xpYi9pbnRlcmFjdGlvbi9pbnRlcmFjdGlvbi1jb250ZXh0JztcbmV4cG9ydCB7SW50ZXJhY3Rpb25Nb2R1bGUgYXMgybVvfSBmcm9tICcuL2xpYi9pbnRlcmFjdGlvbi9pbnRlcmFjdGlvbi5tb2R1bGUnO1xuZXhwb3J0IHtEaWFsb2dJbnRlcmFjdGlvblNlcnZpY2UgYXMgybV4fSBmcm9tICcuL2xpYi9pbnRlcmFjdGlvbi9zZXJ2aWNlcy9kaWFsb2ctaW50ZXJhY3Rpb24uc2VydmljZSc7XG5leHBvcnQge0J1c3lPdmVybGF5Q29tcG9uZW50IGFzIMm1a30gZnJvbSAnLi9saWIvcGxhY2UvY29tcG9uZW50cy9idXN5LW92ZXJsYXkvYnVzeS1vdmVybGF5LmNvbXBvbmVudCc7XG5leHBvcnQge0VtcHR5U3RhdGVDb21wb25lbnQgYXMgybVqfSBmcm9tICcuL2xpYi9wbGFjZS9jb21wb25lbnRzL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmNvbXBvbmVudCc7XG5leHBvcnQge05hdkNvbXBvbmVudCBhcyDJtW59IGZyb20gJy4vbGliL3BsYWNlL2NvbXBvbmVudHMvbmF2L25hdi5jb21wb25lbnQnO1xuZXhwb3J0IHtQbGFjZU91dGxldENvbXBvbmVudCBhcyDJtWx9IGZyb20gJy4vbGliL3BsYWNlL2NvbXBvbmVudHMvcGxhY2Utb3V0bGV0L3BsYWNlLW91dGxldC5jb21wb25lbnQnO1xuZXhwb3J0IHtQbGFjZU1vZHVsZSBhcyDJtWl9IGZyb20gJy4vbGliL3BsYWNlL3BsYWNlLm1vZHVsZSc7XG5leHBvcnQge1BsYWNlU2VydmljZSBhcyDJtW19IGZyb20gJy4vbGliL3BsYWNlL3BsYWNlLnNlcnZpY2UnOyJdfQ==
package/esm5/index.js CHANGED
@@ -2,5 +2,5 @@
2
2
  * @fileoverview added by tsickle
3
3
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
4
  */
5
- export { AngularUiPowerupsModule, slideDownAndUpAnimation, DisposableComponent, ResizeAwareComponent, AbstractInputComponent, NumberInputComponent, PasswordInputComponent, SelectInputComponent, StringInputComponent, Bounds, Dimension, Point, CommandDirective, FocusBindingDirective, AbstractActivity, ACTIVITY_DATA, INTERACTION_CONTEXT, InteractionContext, InteractionModule, ActivityContainerComponent, ActivityOutletComponent, AlertDialogComponent, ConfirmationDialogComponent, DialogInteractionService, AbstractPlaceComponent, Place, PlaceModule, PlaceService, BusyOverlayComponent, EmptyStateComponent, PlaceOutletComponent, LeavePlaceGuard, PlaceRouteGuard, RouteId, QueryParameter, ParameterType, RouteParameterBindings, RouteParameterSanitiser } from "./public_api";
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsc3ZCQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL3B1YmxpY19hcGlcIjtcbiJdfQ==
5
+ export { AngularUiPowerupsModule, slideDownAndUpAnimation, DisposableComponent, ResizeAwareComponent, AbstractInputComponent, NumberInputComponent, PasswordInputComponent, SelectInputComponent, StringInputComponent, Bounds, Dimension, Point, CommandDirective, FocusBindingDirective, AbstractActivity, ACTIVITY_DATA, INTERACTION_CONTEXT, InteractionContext, InteractionModule, ActivityContainerComponent, ActivityOutletComponent, AlertDialogComponent, ConfirmationDialogComponent, DialogInteractionService, AbstractPlaceComponent, Place, PlaceModule, PlaceService, BusyOverlayComponent, EmptyStateComponent, NavComponent, PlaceOutletComponent, LeavePlaceGuard, PlaceRouteGuard, RouteId, QueryParameter, RouteParameter, QueryParameterList, RouteParameterList, ParameterType, RouteParameterBindings, Sanitiser, RouteParameterSanitiser } from "./public_api";
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsdTBCQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL3B1YmxpY19hcGlcIjtcbiJdfQ==