@coolon/angular-ui-powerups 0.0.67 → 0.0.69

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 (121) hide show
  1. package/bundles/coolon-angular-ui-powerups.umd.js +2723 -2285
  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 +24 -22
  6. package/coolon-angular-ui-powerups.metadata.json +1 -1
  7. package/esm2015/coolon-angular-ui-powerups.js +24 -22
  8. package/esm2015/index.js +2 -2
  9. package/esm2015/lib/angular-ui-powerups.module.js +6 -3
  10. package/esm2015/lib/components/index.js +2 -1
  11. package/esm2015/lib/components/noop/noop.component.js +19 -0
  12. package/esm2015/lib/interaction/components/alert-dialog/alert-dialog.component.js +2 -2
  13. package/esm2015/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.js +2 -2
  14. package/esm2015/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js +2 -2
  15. package/esm2015/lib/interaction/components/interaction-outlet/interaction-outlet.component.js +19 -0
  16. package/esm2015/lib/interaction/guards/interaction-guard.service.js +85 -0
  17. package/esm2015/lib/interaction/index.js +3 -2
  18. package/esm2015/lib/interaction/interaction.module.js +8 -3
  19. package/esm2015/lib/interaction/services/dialog-interaction.service.js +30 -5
  20. package/esm2015/lib/place/components/abstract-place-navigation.component.js +5 -5
  21. package/esm2015/lib/place/components/list-place-nav/list-place-nav.component.js +2 -2
  22. package/esm2015/lib/place/components/place-outlet/place-outlet.component.js +60 -66
  23. package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +2 -2
  24. package/esm2015/lib/place/index.js +9 -8
  25. package/esm2015/lib/place/navigation-session.js +147 -0
  26. package/esm2015/lib/place/place-component.js +18 -14
  27. package/esm2015/lib/place/place-definition.js +207 -5
  28. package/esm2015/lib/place/place-history.js +3 -2
  29. package/esm2015/lib/place/place-router.js +184 -89
  30. package/esm2015/lib/place/route/formatter.js +63 -0
  31. package/esm2015/lib/place/route/guards/leave-place.guard.js +193 -0
  32. package/esm2015/lib/place/route/guards/place-route.guard.js +243 -0
  33. package/esm2015/lib/place/route/parameter-decorators.js +35 -18
  34. package/esm2015/lib/place/route/parameter-definition.class.js +123 -67
  35. package/esm2015/lib/place/route/parameter-sanitiser.js +4 -3
  36. package/esm2015/lib/place/route/parameter-snapshot.js +11 -388
  37. package/esm2015/lib/place/route/visit-sanitiser.js +88 -0
  38. package/esm2015/lib/place/visit.js +107 -8
  39. package/esm2015/public_api.js +4 -4
  40. package/esm5/coolon-angular-ui-powerups.js +24 -22
  41. package/esm5/index.js +2 -2
  42. package/esm5/lib/angular-ui-powerups.module.js +6 -3
  43. package/esm5/lib/components/index.js +2 -1
  44. package/esm5/lib/components/noop/noop.component.js +21 -0
  45. package/esm5/lib/interaction/components/alert-dialog/alert-dialog.component.js +2 -2
  46. package/esm5/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.js +2 -2
  47. package/esm5/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js +2 -2
  48. package/esm5/lib/interaction/components/interaction-outlet/interaction-outlet.component.js +21 -0
  49. package/esm5/lib/interaction/guards/interaction-guard.service.js +94 -0
  50. package/esm5/lib/interaction/index.js +3 -2
  51. package/esm5/lib/interaction/interaction.module.js +8 -3
  52. package/esm5/lib/interaction/services/dialog-interaction.service.js +28 -5
  53. package/esm5/lib/place/components/abstract-place-navigation.component.js +5 -5
  54. package/esm5/lib/place/components/list-place-nav/list-place-nav.component.js +2 -2
  55. package/esm5/lib/place/components/place-outlet/place-outlet.component.js +70 -82
  56. package/esm5/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +2 -2
  57. package/esm5/lib/place/index.js +9 -8
  58. package/esm5/lib/place/navigation-session.js +193 -0
  59. package/esm5/lib/place/place-component.js +19 -15
  60. package/esm5/lib/place/place-definition.js +263 -5
  61. package/esm5/lib/place/place-history.js +7 -3
  62. package/esm5/lib/place/place-router.js +241 -108
  63. package/esm5/lib/place/route/formatter.js +96 -0
  64. package/esm5/lib/place/route/guards/leave-place.guard.js +152 -0
  65. package/esm5/lib/place/route/guards/place-route.guard.js +273 -0
  66. package/esm5/lib/place/route/parameter-decorators.js +35 -18
  67. package/esm5/lib/place/route/parameter-definition.class.js +179 -76
  68. package/esm5/lib/place/route/parameter-sanitiser.js +4 -3
  69. package/esm5/lib/place/route/parameter-snapshot.js +11 -480
  70. package/esm5/lib/place/route/visit-sanitiser.js +99 -0
  71. package/esm5/lib/place/visit.js +160 -8
  72. package/esm5/public_api.js +4 -4
  73. package/fesm2015/coolon-angular-ui-powerups.js +1452 -1108
  74. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  75. package/fesm5/coolon-angular-ui-powerups.js +2715 -2281
  76. package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
  77. package/lib/components/index.d.ts +1 -0
  78. package/lib/components/noop/noop.component.d.ts +3 -0
  79. package/lib/interaction/components/interaction-outlet/interaction-outlet.component.d.ts +3 -0
  80. package/lib/interaction/guards/interaction-guard.service.d.ts +13 -0
  81. package/lib/interaction/index.d.ts +2 -1
  82. package/lib/interaction/services/dialog-interaction.service.d.ts +5 -1
  83. package/lib/place/components/place-outlet/place-outlet.component.d.ts +12 -12
  84. package/lib/place/index.d.ts +5 -4
  85. package/lib/place/navigation-session.d.ts +26 -0
  86. package/lib/place/place-component.d.ts +3 -3
  87. package/lib/place/place-definition.d.ts +30 -3
  88. package/lib/place/place-history.d.ts +3 -3
  89. package/lib/place/place-router.d.ts +25 -19
  90. package/lib/place/route/{parameter-type.d.ts → formatter.d.ts} +5 -5
  91. package/lib/place/{guards → route/guards}/leave-place.guard.d.ts +3 -3
  92. package/lib/place/route/guards/place-route.guard.d.ts +27 -0
  93. package/lib/place/route/parameter-decorators.d.ts +14 -6
  94. package/lib/place/route/parameter-definition.class.d.ts +21 -17
  95. package/lib/place/route/parameter-sanitiser.d.ts +3 -2
  96. package/lib/place/route/parameter-snapshot.d.ts +4 -26
  97. package/lib/place/route/visit-sanitiser.d.ts +12 -0
  98. package/lib/place/visit.d.ts +24 -3
  99. package/package.json +1 -1
  100. package/schematics/place-routes/place-class-scanner.d.ts +2 -2
  101. package/schematics/place-routes/place-class-scanner.js +7 -7
  102. package/schematics/place-routes/place-class-scanner.js.map +1 -1
  103. package/schematics/place-routes/place-def.d.ts +3 -2
  104. package/schematics/place-routes/place-def.js +21 -12
  105. package/schematics/place-routes/place-def.js.map +1 -1
  106. package/schematics/place-routes/templates/place-destinations.ts.template +5 -3
  107. package/schematics/place-routes/templates/place-routes.ts.template +10 -1
  108. package/schematics/place-routes/templates/place-visits.ts.template +21 -0
  109. package/esm2015/lib/interaction/guards/close-interaction.guard.js +0 -62
  110. package/esm2015/lib/place/guards/leave-place.guard.js +0 -194
  111. package/esm2015/lib/place/guards/place-route.guard.js +0 -74
  112. package/esm2015/lib/place/route/parameter-type.js +0 -61
  113. package/esm2015/lib/place/route/route-parameter-value.js +0 -230
  114. package/esm5/lib/interaction/guards/close-interaction.guard.js +0 -66
  115. package/esm5/lib/place/guards/leave-place.guard.js +0 -159
  116. package/esm5/lib/place/guards/place-route.guard.js +0 -78
  117. package/esm5/lib/place/route/parameter-type.js +0 -94
  118. package/esm5/lib/place/route/route-parameter-value.js +0 -316
  119. package/lib/interaction/guards/close-interaction.guard.d.ts +0 -12
  120. package/lib/place/guards/place-route.guard.d.ts +0 -10
  121. package/lib/place/route/route-parameter-value.d.ts +0 -42
@@ -2,488 +2,19 @@
2
2
  * @fileoverview added by tsickle
3
3
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
4
  */
5
- import * as tslib_1 from "tslib";
6
- import { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';
7
- import { ParameterDefinition } from './parameter-definition.class';
8
- import { RouteParameterValue } from './route-parameter-value';
9
- var ParameterSnapshot = /** @class */ (function () {
10
- function ParameterSnapshot(placeDefinition, parameters) {
11
- this.placeDefinition = placeDefinition;
12
- this.parameters = parameters;
13
- }
14
- /**
15
- * @param {?} other
16
- * @param {?=} debug
17
- * @return {?}
18
- */
19
- ParameterSnapshot.prototype.hasChanged = /**
20
- * @param {?} other
21
- * @param {?=} debug
22
- * @return {?}
23
- */
24
- function (other, debug) {
25
- if (debug === void 0) { debug = false; }
26
- /** @type {?} */
27
- var changed = this.parameters.find((/**
28
- * @param {?} r
29
- * @return {?}
30
- */
31
- function (r) {
32
- return r.hasChanged(other.getValueOf(r.definition));
33
- }));
34
- if (changed && debug) {
35
- console.log({
36
- name: changed.definition.name,
37
- mine: changed.value,
38
- theirs: other.getValueOf(changed.definition)
39
- });
40
- }
41
- return !!changed;
42
- };
43
- /**
44
- * @template T, S
45
- * @param {?} parameterDef
46
- * @return {?}
47
- */
48
- ParameterSnapshot.prototype.getParameter = /**
49
- * @template T, S
50
- * @param {?} parameterDef
51
- * @return {?}
52
- */
53
- function (parameterDef) {
54
- return this.parameters.find((/**
55
- * @param {?} r
56
- * @return {?}
57
- */
58
- function (r) { return r.definition === parameterDef; }));
59
- };
60
- /**
61
- * @template T, S
62
- * @param {?} parameterDef
63
- * @return {?}
64
- */
65
- ParameterSnapshot.prototype.getValueOf = /**
66
- * @template T, S
67
- * @param {?} parameterDef
68
- * @return {?}
69
- */
70
- function (parameterDef) {
71
- /** @type {?} */
72
- var resolvedParameter = this.getParameter(parameterDef);
73
- return resolvedParameter ? resolvedParameter.value : null;
74
- };
75
- /**
76
- * @return {?}
77
- */
78
- ParameterSnapshot.prototype.getRouteIdValue = /**
79
- * @return {?}
80
- */
81
- function () {
82
- return this.getRouteIdParameter() ? this.getRouteIdParameter().value : null;
83
- };
84
- /**
85
- * @param {?} name
86
- * @return {?}
87
- */
88
- ParameterSnapshot.prototype.getParameterValue = /**
89
- * @param {?} name
90
- * @return {?}
91
- */
92
- function (name) {
93
- /** @type {?} */
94
- var resolvedParameter = this.parameters.find((/**
95
- * @param {?} r
96
- * @return {?}
97
- */
98
- function (r) { return r.definition.name === name; }));
99
- return resolvedParameter ? resolvedParameter.value : null;
100
- };
101
- /**
102
- * @private
103
- * @return {?}
104
- */
105
- ParameterSnapshot.prototype.getRouteIdParameter = /**
106
- * @private
107
- * @return {?}
108
- */
109
- function () {
110
- // RouteId's are never arrays: see parameter-decorators.ts createDefinition methods. It would be nice to
111
- // capture this in the type system though
112
- return (/** @type {?} */ (this.parameters.find((/**
113
- * @param {?} p
114
- * @return {?}
115
- */
116
- function (p) { return p.definition.isRouteId; }))));
117
- };
118
- /**
119
- * @private
120
- * @return {?}
121
- */
122
- ParameterSnapshot.prototype.getRouteParameters = /**
123
- * @private
124
- * @return {?}
125
- */
126
- function () {
127
- return this.parameters.filter((/**
128
- * @param {?} r
129
- * @return {?}
130
- */
131
- function (r) { return !r.definition.isRouteId; }));
132
- };
133
- /**
134
- * @return {?}
135
- */
136
- ParameterSnapshot.prototype.hasRouteId = /**
137
- * @return {?}
138
- */
139
- function () {
140
- return !!this.getRouteIdParameter();
141
- };
142
- /**
143
- * @return {?}
144
- */
145
- ParameterSnapshot.prototype.getFormattedRouteId = /**
146
- * @return {?}
147
- */
148
- function () {
149
- /** @type {?} */
150
- var routeIdParam = this.getRouteIdParameter();
151
- return routeIdParam ? routeIdParam.formattedValue() : null;
152
- };
153
- /**
154
- * @return {?}
155
- */
156
- ParameterSnapshot.prototype.getNonEmptyParameters = /**
157
- * @return {?}
158
- */
159
- function () {
160
- return this.parameters.filter((/**
161
- * @param {?} p
162
- * @return {?}
163
- */
164
- function (p) { return !p.isEmpty(); }));
165
- };
166
- /**
167
- * @return {?}
168
- */
169
- ParameterSnapshot.prototype.getFormattedParameters = /**
170
- * @return {?}
171
- */
172
- function () {
173
- /** @type {?} */
174
- var params = {};
175
- /** @type {?} */
176
- var routeIdParam = this.getNonEmptyParameters()
177
- .filter((/**
178
- * @param {?} p
179
- * @return {?}
180
- */
181
- function (p) { return !p.definition.isRouteId; }))
182
- .forEach((/**
183
- * @param {?} p
184
- * @return {?}
185
- */
186
- function (p) { return params[p.definition.name] = p.formattedValue(); }));
187
- return params;
188
- };
189
- /**
190
- * @return {?}
191
- */
192
- ParameterSnapshot.prototype.getAllParameters = /**
193
- * @return {?}
194
- */
195
- function () {
196
- /** @type {?} */
197
- var params = {};
198
- /** @type {?} */
199
- var routeIdParam = this.parameters.forEach((/**
200
- * @param {?} p
201
- * @return {?}
202
- */
203
- function (p) {
204
- params[p.definition.name] = p.value;
205
- }));
206
- return params;
207
- };
208
- /**
209
- * @template T, S
210
- * @param {?} parameter
211
- * @param {?} value
212
- * @return {?}
213
- */
214
- ParameterSnapshot.prototype.replace = /**
215
- * @template T, S
216
- * @param {?} parameter
217
- * @param {?} value
218
- * @return {?}
219
- */
220
- function (parameter, value) {
221
- return new ParameterSnapshot(this.placeDefinition, this.parameters.map((/**
222
- * @param {?} p
223
- * @return {?}
224
- */
225
- function (p) {
226
- return p.definition === parameter ? p.replace(value) : p;
227
- })));
228
- };
229
- /**
230
- * @param {?} injector
231
- * @return {?}
232
- */
233
- ParameterSnapshot.prototype.sanitise = /**
234
- * @param {?} injector
235
- * @return {?}
236
- */
237
- function (injector) {
238
- return tslib_1.__awaiter(this, void 0, void 0, function () {
239
- var routeId, sanitisedValue, result, routeParameters, i, routeParameter, sanitisedValue;
240
- return tslib_1.__generator(this, function (_a) {
241
- switch (_a.label) {
242
- case 0:
243
- if (!this.hasRouteId()) return [3 /*break*/, 2];
244
- routeId = this.getRouteIdParameter();
245
- return [4 /*yield*/, routeId.sanitise(this, injector)];
246
- case 1:
247
- sanitisedValue = _a.sent();
248
- if (routeId.hasChanged(sanitisedValue)) {
249
- // if the route id has changed we redirect immediately as other
250
- // parameter sanitisers might use it.
251
- return [2 /*return*/, this.replace(routeId.definition, sanitisedValue)];
252
- }
253
- _a.label = 2;
254
- case 2:
255
- result = this;
256
- routeParameters = this.getRouteParameters();
257
- i = 0;
258
- _a.label = 3;
259
- case 3:
260
- if (!(i < routeParameters.length)) return [3 /*break*/, 6];
261
- routeParameter = routeParameters[i];
262
- return [4 /*yield*/, routeParameter.sanitise(this, injector)];
263
- case 4:
264
- sanitisedValue = _a.sent();
265
- if (routeParameter.hasChanged(sanitisedValue)) {
266
- result = result.replace(routeParameter.definition, sanitisedValue);
267
- }
268
- _a.label = 5;
269
- case 5:
270
- i++;
271
- return [3 /*break*/, 3];
272
- case 6: return [2 /*return*/, result];
273
- }
274
- });
275
- });
276
- };
277
- var _a;
278
- tslib_1.__decorate([
279
- Memoize(),
280
- tslib_1.__metadata("design:type", Function),
281
- tslib_1.__metadata("design:paramtypes", [ParameterDefinition]),
282
- tslib_1.__metadata("design:returntype", RouteParameterValue)
283
- ], ParameterSnapshot.prototype, "getParameter", null);
284
- tslib_1.__decorate([
285
- Memoize(),
286
- tslib_1.__metadata("design:type", Function),
287
- tslib_1.__metadata("design:paramtypes", [ParameterDefinition]),
288
- tslib_1.__metadata("design:returntype", typeof (_a = typeof S !== "undefined" && S) === "function" ? _a : Object)
289
- ], ParameterSnapshot.prototype, "getValueOf", null);
290
- tslib_1.__decorate([
291
- Memoize(),
292
- tslib_1.__metadata("design:type", Function),
293
- tslib_1.__metadata("design:paramtypes", [String]),
294
- tslib_1.__metadata("design:returntype", Object)
295
- ], ParameterSnapshot.prototype, "getParameterValue", null);
296
- tslib_1.__decorate([
297
- Memoize(),
298
- tslib_1.__metadata("design:type", Function),
299
- tslib_1.__metadata("design:paramtypes", []),
300
- tslib_1.__metadata("design:returntype", RouteParameterValue.Scalar)
301
- ], ParameterSnapshot.prototype, "getRouteIdParameter", null);
302
- tslib_1.__decorate([
303
- Memoize(),
304
- tslib_1.__metadata("design:type", Function),
305
- tslib_1.__metadata("design:paramtypes", []),
306
- tslib_1.__metadata("design:returntype", Array)
307
- ], ParameterSnapshot.prototype, "getRouteParameters", null);
308
- return ParameterSnapshot;
309
- }());
310
- export { ParameterSnapshot };
5
+ /**
6
+ * @record
7
+ * @template T
8
+ */
9
+ export function ParameterSnapshot() { }
311
10
  if (false) {
312
11
  /** @type {?} */
313
- ParameterSnapshot.prototype.placeDefinition;
314
- /**
315
- * @type {?}
316
- * @private
317
- */
318
- ParameterSnapshot.prototype.parameters;
319
- }
320
- (function (ParameterSnapshot) {
12
+ ParameterSnapshot.prototype.definition;
13
+ /** @type {?} */
14
+ ParameterSnapshot.prototype.value;
321
15
  /**
322
- * @param {?} placeDef
323
- * @param {?} params
324
- * @param {?} urlSegments
325
16
  * @return {?}
326
17
  */
327
- function create(placeDef, params, urlSegments) {
328
- /** @type {?} */
329
- var paramMap = new ConsolidatedParameterMap(params, urlSegments);
330
- /** @type {?} */
331
- var resolvedParameters = placeDef.getRouteParameters().map((/**
332
- * @param {?} def
333
- * @return {?}
334
- */
335
- function (def) { return RouteParameterValue.create(def, paramMap); }));
336
- return new ParameterSnapshot(placeDef, resolvedParameters);
337
- }
338
- ParameterSnapshot.create = create;
339
- /**
340
- * This a work around for the fact that an activated route with multiple segments doesn't
341
- * include the segment params in the paramMap as well as each segment returns an empty
342
- * param map even when `parameter`s has content.
343
- */
344
- var ConsolidatedParameterMap = /** @class */ (function () {
345
- function ConsolidatedParameterMap(paramMap, urlSegments) {
346
- this.paramMaps = [paramMap].concat((urlSegments || []).map((/**
347
- * @param {?} s
348
- * @return {?}
349
- */
350
- function (s) { return new ParamMapAdapter(s.parameters); }))).filter((/**
351
- * @param {?} m
352
- * @return {?}
353
- */
354
- function (m) { return !!m; })); // the activated route param map can be null
355
- }
356
- /**
357
- * @param {?} name
358
- * @return {?}
359
- */
360
- ConsolidatedParameterMap.prototype.get = /**
361
- * @param {?} name
362
- * @return {?}
363
- */
364
- function (name) {
365
- return this.paramMaps.find((/**
366
- * @param {?} m
367
- * @return {?}
368
- */
369
- function (m) { return m.has(name); })).get(name);
370
- };
371
- /**
372
- * @param {?} name
373
- * @return {?}
374
- */
375
- ConsolidatedParameterMap.prototype.getAll = /**
376
- * @param {?} name
377
- * @return {?}
378
- */
379
- function (name) {
380
- return this.paramMaps.find((/**
381
- * @param {?} m
382
- * @return {?}
383
- */
384
- function (m) { return m.has(name); })).getAll(name);
385
- };
386
- /**
387
- * @param {?} name
388
- * @return {?}
389
- */
390
- ConsolidatedParameterMap.prototype.has = /**
391
- * @param {?} name
392
- * @return {?}
393
- */
394
- function (name) {
395
- return !!this.paramMaps.find((/**
396
- * @param {?} m
397
- * @return {?}
398
- */
399
- function (m) { return m.has(name); }));
400
- };
401
- Object.defineProperty(ConsolidatedParameterMap.prototype, "keys", {
402
- get: /**
403
- * @return {?}
404
- */
405
- function () {
406
- return this.paramMaps.reduce((/**
407
- * @param {?} result
408
- * @param {?} params
409
- * @return {?}
410
- */
411
- function (result, params) { return result.concat(params.keys); }), []);
412
- },
413
- enumerable: true,
414
- configurable: true
415
- });
416
- tslib_1.__decorate([
417
- Memoize(),
418
- tslib_1.__metadata("design:type", Array),
419
- tslib_1.__metadata("design:paramtypes", [])
420
- ], ConsolidatedParameterMap.prototype, "keys", null);
421
- return ConsolidatedParameterMap;
422
- }());
423
- if (false) {
424
- /**
425
- * @type {?}
426
- * @private
427
- */
428
- ConsolidatedParameterMap.prototype.paramMaps;
429
- }
430
- var ParamMapAdapter = /** @class */ (function () {
431
- function ParamMapAdapter(params) {
432
- this.params = params;
433
- }
434
- /**
435
- * @param {?} name
436
- * @return {?}
437
- */
438
- ParamMapAdapter.prototype.get = /**
439
- * @param {?} name
440
- * @return {?}
441
- */
442
- function (name) {
443
- return this.params[name];
444
- };
445
- /**
446
- * @param {?} name
447
- * @return {?}
448
- */
449
- ParamMapAdapter.prototype.getAll = /**
450
- * @param {?} name
451
- * @return {?}
452
- */
453
- function (name) {
454
- /** @type {?} */
455
- var value = this.get(name);
456
- return Array.isArray(value) ? value : [value];
457
- };
458
- /**
459
- * @param {?} name
460
- * @return {?}
461
- */
462
- ParamMapAdapter.prototype.has = /**
463
- * @param {?} name
464
- * @return {?}
465
- */
466
- function (name) {
467
- return this.keys.includes(name);
468
- };
469
- Object.defineProperty(ParamMapAdapter.prototype, "keys", {
470
- get: /**
471
- * @return {?}
472
- */
473
- function () {
474
- return Object.keys(this.params);
475
- },
476
- enumerable: true,
477
- configurable: true
478
- });
479
- return ParamMapAdapter;
480
- }());
481
- if (false) {
482
- /**
483
- * @type {?}
484
- * @private
485
- */
486
- ParamMapAdapter.prototype.params;
487
- }
488
- })(ParameterSnapshot || (ParameterSnapshot = {}));
489
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyLXNuYXBzaG90LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3JvdXRlL3BhcmFtZXRlci1zbmFwc2hvdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUdBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUczRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RDtJQUVFLDJCQUFxQixlQUFnQyxFQUFtQixVQUFnRDtRQUFuRyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFBbUIsZUFBVSxHQUFWLFVBQVUsQ0FBc0M7SUFDeEgsQ0FBQzs7Ozs7O0lBRUQsc0NBQVU7Ozs7O0lBQVYsVUFBVyxLQUF3QixFQUFFLEtBQWE7UUFBYixzQkFBQSxFQUFBLGFBQWE7O1lBQzFDLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUk7Ozs7UUFBQyxVQUFDLENBQUM7WUFDckMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDdEQsQ0FBQyxFQUFDO1FBQ0YsSUFBSSxPQUFPLElBQUksS0FBSyxFQUFFO1lBQ3BCLE9BQU8sQ0FBQyxHQUFHLENBQUM7Z0JBQ1YsSUFBSSxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSTtnQkFDN0IsSUFBSSxFQUFFLE9BQU8sQ0FBQyxLQUFLO2dCQUNuQixNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO2FBQzdDLENBQUMsQ0FBQztTQUNKO1FBQ0QsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ25CLENBQUM7Ozs7OztJQUdELHdDQUFZOzs7OztJ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RWpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBhcmFtTWFwLCBVcmxTZWdtZW50IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFRyYWNlIH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IHsgTWVtb2l6ZSB9IGZyb20gJ0B0eXBlc2NyaXB0LXBsdXMvZmFzdC1tZW1vaXplLWRlY29yYXRvci9kaXN0L3NyYyc7XG5pbXBvcnQgeyBQbGFjZURlZmluaXRpb24gfSBmcm9tICcuLi9wbGFjZS1kZWZpbml0aW9uJztcbmltcG9ydCB7IFZpc2l0IH0gZnJvbSAnLi4vdmlzaXQnO1xuaW1wb3J0IHsgUGFyYW1ldGVyRGVmaW5pdGlvbiB9IGZyb20gJy4vcGFyYW1ldGVyLWRlZmluaXRpb24uY2xhc3MnO1xuaW1wb3J0IHsgUm91dGVQYXJhbWV0ZXJWYWx1ZSB9IGZyb20gJy4vcm91dGUtcGFyYW1ldGVyLXZhbHVlJztcblxuZXhwb3J0IGNsYXNzIFBhcmFtZXRlclNuYXBzaG90IGltcGxlbWVudHMgVmlzaXQge1xuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IHBsYWNlRGVmaW5pdGlvbjogUGxhY2VEZWZpbml0aW9uLCBwcml2YXRlIHJlYWRvbmx5IHBhcmFtZXRlcnM6IFJvdXRlUGFyYW1ldGVyVmFsdWU8YW55LCBhbnksIGFueT5bXSkge1xuICB9XG5cbiAgaGFzQ2hhbmdlZChvdGhlcjogUGFyYW1ldGVyU25hcHNob3QsIGRlYnVnID0gZmFsc2UpOiBib29sZWFuIHtcbiAgICBjb25zdCBjaGFuZ2VkID0gdGhpcy5wYXJhbWV0ZXJzLmZpbmQoKHIpID0+IHtcbiAgICAgIHJldHVybiByLmhhc0NoYW5nZWQob3RoZXIuZ2V0VmFsdWVPZihyLmRlZmluaXRpb24pKTtcbiAgICB9KTtcbiAgICBpZiAoY2hhbmdlZCAmJiBkZWJ1Zykge1xuICAgICAgY29uc29sZS5sb2coe1xuICAgICAgICBuYW1lOiBjaGFuZ2VkLmRlZmluaXRpb24ubmFtZSxcbiAgICAgICAgbWluZTogY2hhbmdlZC52YWx1ZSxcbiAgICAgICAgdGhlaXJzOiBvdGhlci5nZXRWYWx1ZU9mKGNoYW5nZWQuZGVmaW5pdGlvbilcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gISFjaGFuZ2VkO1xuICB9XG5cbiAgQE1lbW9pemUoKVxuICBnZXRQYXJhbWV0ZXI8VCwgUz4ocGFyYW1ldGVyRGVmOiBQYXJhbWV0ZXJEZWZpbml0aW9uPFQsIFM+KTogUm91dGVQYXJhbWV0ZXJWYWx1ZTxTLCBULCBhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5wYXJhbWV0ZXJzLmZpbmQociA9PiByLmRlZmluaXRpb24gPT09IHBhcmFtZXRlckRlZik7XG4gIH1cblxuICBATWVtb2l6ZSgpXG4gIGdldFZhbHVlT2Y8VCwgUz4ocGFyYW1ldGVyRGVmOiBQYXJhbWV0ZXJEZWZpbml0aW9uPFQsIFM+KTogUyB7XG4gICAgY29uc3QgcmVzb2x2ZWRQYXJhbWV0ZXIgPSB0aGlzLmdldFBhcmFtZXRlcihwYXJhbWV0ZXJEZWYpO1xuICAgIHJldHVybiByZXNvbHZlZFBhcmFtZXRlciA/IHJlc29sdmVkUGFyYW1ldGVyLnZhbHVlIDogbnVsbDtcbiAgfVxuXG4gIGdldFJvdXRlSWRWYWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmdldFJvdXRlSWRQYXJhbWV0ZXIoKSA/IHRoaXMuZ2V0Um91dGVJZFBhcmFtZXRlcigpLnZhbHVlIDogbnVsbDtcbiAgfVxuXG4gIEBNZW1vaXplKClcbiAgZ2V0UGFyYW1ldGVyVmFsdWUobmFtZTogc3RyaW5nKTogYW55IHtcbiAgICBjb25zdCByZXNvbHZlZFBhcmFtZXRlciA9IHRoaXMucGFyYW1ldGVycy5maW5kKHIgPT4gci5kZWZpbml0aW9uLm5hbWUgPT09IG5hbWUpO1xuICAgIHJldHVybiByZXNvbHZlZFBhcmFtZXRlciA/IHJlc29sdmVkUGFyYW1ldGVyLnZhbHVlIDogbnVsbDtcbiAgfVxuXG4gIEBNZW1vaXplKClcbiAgcHJpdmF0ZSBnZXRSb3V0ZUlkUGFyYW1ldGVyKCk6IFJvdXRlUGFyYW1ldGVyVmFsdWUuU2NhbGFyPGFueT4ge1xuICAgIC8vIFJvdXRlSWQncyBhcmUgbmV2ZXIgYXJyYXlzOiBzZWUgcGFyYW1ldGVyLWRlY29yYXRvcnMudHMgY3JlYXRlRGVmaW5pdGlvbiBtZXRob2RzLiBJdCB3b3VsZCBiZSBuaWNlIHRvXG4gICAgLy8gY2FwdHVyZSB0aGlzIGluIHRoZSB0eXBlIHN5c3RlbSB0aG91Z2hcbiAgICByZXR1cm4gdGhpcy5wYXJhbWV0ZXJzLmZpbmQocCA9PiBwLmRlZmluaXRpb24uaXNSb3V0ZUlkKSBhcyBSb3V0ZVBhcmFtZXRlclZhbHVlLlNjYWxhcjxhbnk+O1xuICB9XG5cbiAgQE1lbW9pemUoKVxuICBwcml2YXRlIGdldFJvdXRlUGFyYW1ldGVycygpOiBSb3V0ZVBhcmFtZXRlclZhbHVlPGFueSwgYW55LCBhbnk+W10ge1xuICAgIHJldHVybiB0aGlzLnBhcmFtZXRlcnMuZmlsdGVyKHIgPT4gIXIuZGVmaW5pdGlvbi5pc1JvdXRlSWQpO1xuICB9XG5cbiAgaGFzUm91dGVJZCgpIHtcbiAgICByZXR1cm4gISF0aGlzLmdldFJvdXRlSWRQYXJhbWV0ZXIoKTtcbiAgfVxuXG4gIGdldEZvcm1hdHRlZFJvdXRlSWQoKTogc3RyaW5nIHtcbiAgICBjb25zdCByb3V0ZUlkUGFyYW0gPSB0aGlzLmdldFJvdXRlSWRQYXJhbWV0ZXIoKTtcbiAgICByZXR1cm4gcm91dGVJZFBhcmFtID8gcm91dGVJZFBhcmFtLmZvcm1hdHRlZFZhbHVlKCkgOiBudWxsO1xuICB9XG5cbiAgZ2V0Tm9uRW1wdHlQYXJhbWV0ZXJzKCkge1xuICAgIHJldHVybiB0aGlzLnBhcmFtZXRlcnMuZmlsdGVyKHAgPT4gIXAuaXNFbXB0eSgpKTtcbiAgfVxuXG4gIGdldEZvcm1hdHRlZFBhcmFtZXRlcnMoKSB7XG4gICAgY29uc3QgcGFyYW1zID0ge307XG4gICAgY29uc3Qgcm91dGVJZFBhcmFtID0gdGhpcy5nZXROb25FbXB0eVBhcmFtZXRlcnMoKVxuICAgICAgLmZpbHRlcihwID0+ICFwLmRlZmluaXRpb24uaXNSb3V0ZUlkKVxuICAgICAgLmZvckVhY2gocCA9PiBwYXJhbXNbcC5kZWZpbml0aW9uLm5hbWVdID0gcC5mb3JtYXR0ZWRWYWx1ZSgpKTtcbiAgICByZXR1cm4gcGFyYW1zO1xuICB9XG5cbiAgZ2V0QWxsUGFyYW1ldGVycygpIHtcbiAgICBjb25zdCBwYXJhbXMgPSB7fTtcbiAgICBjb25zdCByb3V0ZUlkUGFyYW0gPSB0aGlzLnBhcmFtZXRlcnMuZm9yRWFjaChwID0+IHtcbiAgICAgIHBhcmFtc1twLmRlZmluaXRpb24ubmFtZV0gPSBwLnZhbHVlO1xuICAgIH0pO1xuICAgIHJldHVybiBwYXJhbXM7XG4gIH1cblxuICByZXBsYWNlPFQsIFM+KHBhcmFtZXRlcjogUGFyYW1ldGVyRGVmaW5pdGlvbjxULCBTPiwgdmFsdWU6IFMpOiBQYXJhbWV0ZXJTbmFwc2hvdCB7XG4gICAgcmV0dXJuIG5ldyBQYXJhbWV0ZXJTbmFwc2hvdCh0aGlzLnBsYWNlRGVmaW5pdGlvbiwgdGhpcy5wYXJhbWV0ZXJzLm1hcChwID0+IHtcbiAgICAgIHJldHVybiBwLmRlZmluaXRpb24gPT09IHBhcmFtZXRlciA/IHAucmVwbGFjZSh2YWx1ZSkgOiBwO1xuICAgIH0pKTtcbiAgfVxuXG4gIGFzeW5jIHNhbml0aXNlKGluamVjdG9yOiBJbmplY3Rvcik6IFByb21pc2U8UGFyYW1ldGVyU25hcHNob3Q+IHtcbiAgICBpZiAodGhpcy5oYXNSb3V0ZUlkKCkpIHtcbiAgICAgIGNvbnN0IHJvdXRlSWQgPSB0aGlzLmdldFJvdXRlSWRQYXJhbWV0ZXIoKTtcbiAgICAgIGNvbnN0IHNhbml0aXNlZFZhbHVlID0gYXdhaXQgcm91dGVJZC5zYW5pdGlzZSh0aGlzLCBpbmplY3Rvcik7XG4gICAgICBpZiAocm91dGVJZC5oYXNDaGFuZ2VkKHNhbml0aXNlZFZhbHVlKSkge1xuICAgICAgICAvLyBpZiB0aGUgcm91dGUgaWQgaGFzIGNoYW5nZWQgd2UgcmVkaXJlY3QgaW1tZWRpYXRlbHkgYXMgb3RoZXJcbiAgICAgICAgLy8gcGFyYW1ldGVyIHNhbml0aXNlcnMgbWlnaHQgdXNlIGl0LlxuICAgICAgICByZXR1cm4gdGhpcy5yZXBsYWNlKHJvdXRlSWQuZGVmaW5pdGlvbiwgc2FuaXRpc2VkVmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBsZXQgcmVzdWx0OiBQYXJhbWV0ZXJTbmFwc2hvdCA9IHRoaXM7XG4gICAgY29uc3Qgcm91dGVQYXJhbWV0ZXJzID0gdGhpcy5nZXRSb3V0ZVBhcmFtZXRlcnMoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvdXRlUGFyYW1ldGVycy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3Qgcm91dGVQYXJhbWV0ZXIgPSByb3V0ZVBhcmFtZXRlcnNbaV07XG4gICAgICBjb25zdCBzYW5pdGlzZWRWYWx1ZSA9IGF3YWl0IHJvdXRlUGFyYW1ldGVyLnNhbml0aXNlKHRoaXMsIGluamVjdG9yKTtcbiAgICAgIGlmIChyb3V0ZVBhcmFtZXRlci5oYXNDaGFuZ2VkKHNhbml0aXNlZFZhbHVlKSkge1xuICAgICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZShyb3V0ZVBhcmFtZXRlci5kZWZpbml0aW9uLCBzYW5pdGlzZWRWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxufVxuXG5leHBvcnQgbmFtZXNwYWNlIFBhcmFtZXRlclNuYXBzaG90IHtcblxuICBleHBvcnQgZnVuY3Rpb24gY3JlYXRlKHBsYWNlRGVmOiBQbGFjZURlZmluaXRpb24sIHBhcmFtczogUGFyYW1NYXAsIHVybFNlZ21lbnRzOiBVcmxTZWdtZW50W10pOiBQYXJhbWV0ZXJTbmFwc2hvdCB7XG4gICAgY29uc3QgcGFyYW1NYXAgPSBuZXcgQ29uc29saWRhdGVkUGFyYW1ldGVyTWFwKHBhcmFtcywgdXJsU2VnbWVudHMpO1xuICAgIGNvbnN0IHJlc29sdmVkUGFyYW1ldGVycyA9IHBsYWNlRGVmLmdldFJvdXRlUGFyYW1ldGVycygpLm1hcChkZWYgPT4gUm91dGVQYXJhbWV0ZXJWYWx1ZS5jcmVhdGUoZGVmLCBwYXJhbU1hcCkpO1xuICAgIHJldHVybiBuZXcgUGFyYW1ldGVyU25hcHNob3QocGxhY2VEZWYsIHJlc29sdmVkUGFyYW1ldGVycyk7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBhIHdvcmsgYXJvdW5kIGZvciB0aGUgZmFjdCB0aGF0IGFuIGFjdGl2YXRlZCByb3V0ZSB3aXRoIG11bHRpcGxlIHNlZ21lbnRzIGRvZXNuJ3RcbiAgICogaW5jbHVkZSB0aGUgc2VnbWVudCBwYXJhbXMgaW4gdGhlIHBhcmFtTWFwIGFzIHdlbGwgYXMgZWFjaCBzZWdtZW50IHJldHVybnMgYW4gZW1wdHlcbiAgICogcGFyYW0gbWFwIGV2ZW4gd2hlbiBgcGFyYW1ldGVyYHMgaGFzIGNvbnRlbnQuXG4gICAqL1xuICBjbGFzcyBDb25zb2xpZGF0ZWRQYXJhbWV0ZXJNYXAgaW1wbGVtZW50cyBQYXJhbU1hcCB7XG5cbiAgICBwcml2YXRlIHBhcmFtTWFwczogUGFyYW1NYXBbXTtcblxuICAgIGNvbnN0cnVjdG9yKHBhcmFtTWFwOiBQYXJhbU1hcCwgdXJsU2VnbWVudHM6IFVybFNlZ21lbnRbXSkge1xuICAgICAgdGhpcy5wYXJhbU1hcHMgPSBbcGFyYW1NYXBdLmNvbmNhdChcbiAgICAgICAgKHVybFNlZ21lbnRzIHx8IFtdKS5tYXAocyA9PiBuZXcgUGFyYW1NYXBBZGFwdGVyKHMucGFyYW1ldGVycykpXG4gICAgICApLmZpbHRlcihtID0+ICEhbSk7IC8vIHRoZSBhY3RpdmF0ZWQgcm91dGUgcGFyYW0gbWFwIGNhbiBiZSBudWxsXG4gICAgfVxuXG4gICAgZ2V0KG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgICAgcmV0dXJuIHRoaXMucGFyYW1NYXBzLmZpbmQobSA9PiBtLmhhcyhuYW1lKSkuZ2V0KG5hbWUpO1xuICAgIH1cblxuICAgIGdldEFsbChuYW1lOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJhbU1hcHMuZmluZChtID0+IG0uaGFzKG5hbWUpKS5nZXRBbGwobmFtZSk7XG4gICAgfVxuXG4gICAgaGFzKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuICEhdGhpcy5wYXJhbU1hcHMuZmluZChtID0+IG0uaGFzKG5hbWUpKTtcbiAgICB9XG5cbiAgICBATWVtb2l6ZSgpXG4gICAgZ2V0IGtleXMoKTogc3RyaW5nW10ge1xuICAgICAgcmV0dXJuIHRoaXMucGFyYW1NYXBzLnJlZHVjZSgocmVzdWx0LCBwYXJhbXMpID0+IHJlc3VsdC5jb25jYXQocGFyYW1zLmtleXMpLCBbXSk7XG4gICAgfVxuICB9XG5cbiAgY2xhc3MgUGFyYW1NYXBBZGFwdGVyIGltcGxlbWVudHMgUGFyYW1NYXAge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcGFyYW1zOiB7IFtwOiBzdHJpbmddOiBzdHJpbmcgfSkge1xuICAgIH1cblxuICAgIGdldChuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgIHJldHVybiB0aGlzLnBhcmFtc1tuYW1lXTtcbiAgICB9XG5cbiAgICBnZXRBbGwobmFtZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldChuYW1lKTtcbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcbiAgICB9XG5cbiAgICBoYXMobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gdGhpcy5rZXlzLmluY2x1ZGVzKG5hbWUpO1xuICAgIH1cblxuICAgIGdldCBrZXlzKCk6IHN0cmluZ1tdIHtcbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLnBhcmFtcyk7XG4gICAgfVxuXG4gIH1cblxuXG59XG4iXX0=
18
+ ParameterSnapshot.prototype.isMissing = function () { };
19
+ }
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyLXNuYXBzaG90LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3JvdXRlL3BhcmFtZXRlci1zbmFwc2hvdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUVBLHVDQUlDOzs7SUFIQyx1Q0FBdUM7O0lBQ3ZDLGtDQUFrQjs7OztJQUNsQix3REFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXJhbWV0ZXJEZWZpbml0aW9uIH0gZnJvbSAnLi9wYXJhbWV0ZXItZGVmaW5pdGlvbi5jbGFzcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyYW1ldGVyU25hcHNob3Q8VD4ge1xuICBkZWZpbml0aW9uOiBQYXJhbWV0ZXJEZWZpbml0aW9uPFQsIGFueT5cbiAgcmVhZG9ubHkgdmFsdWU6IFQ7XG4gIGlzTWlzc2luZygpOiBib29sZWFuO1xufVxuIl19
@@ -0,0 +1,99 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ import * as tslib_1 from "tslib";
6
+ var VisitSanitiser = /** @class */ (function () {
7
+ function VisitSanitiser(activatedRoute, router, placeHistory, injector) {
8
+ this.activatedRoute = activatedRoute;
9
+ this.router = router;
10
+ this.placeHistory = placeHistory;
11
+ this.injector = injector;
12
+ }
13
+ // @Trace()
14
+ // @Trace()
15
+ /**
16
+ * @param {?} visit
17
+ * @return {?}
18
+ */
19
+ VisitSanitiser.prototype.sanitise =
20
+ // @Trace()
21
+ /**
22
+ * @param {?} visit
23
+ * @return {?}
24
+ */
25
+ function (visit) {
26
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
27
+ var placeDef, routeIdDef, routeId, sanitisedValue, parameterDefs, sanitisedVisit, i, def, value, sanitisedValue;
28
+ return tslib_1.__generator(this, function (_a) {
29
+ switch (_a.label) {
30
+ case 0:
31
+ placeDef = visit.placeDefinition;
32
+ if (!placeDef.hasRouteId()) return [3 /*break*/, 2];
33
+ routeIdDef = placeDef.getRouteIdParameterDef();
34
+ routeId = visit.getRouteId();
35
+ return [4 /*yield*/, routeIdDef.sanitise(routeId, visit, this.placeHistory, this.injector)];
36
+ case 1:
37
+ sanitisedValue = _a.sent();
38
+ console.log({ routeId: routeId, sanitisedValue: sanitisedValue });
39
+ // ###------- EARLY EXIT --------###
40
+ if (routeIdDef.hasChanged(routeId, sanitisedValue)) {
41
+ // if the route id has changed we redirect immediately as other
42
+ // parameter sanitisers might use it.
43
+ return [2 /*return*/, visit.replace(routeIdDef, sanitisedValue)];
44
+ }
45
+ _a.label = 2;
46
+ case 2:
47
+ // if we didn't replace the routeId we continue the url present parameters.
48
+ parameterDefs = placeDef.getVisitParameterDefs({
49
+ includeRouteParameters: true,
50
+ includeNonRouteParameters: true
51
+ });
52
+ sanitisedVisit = visit;
53
+ i = 0;
54
+ _a.label = 3;
55
+ case 3:
56
+ if (!(i < parameterDefs.length)) return [3 /*break*/, 6];
57
+ def = parameterDefs[i];
58
+ value = visit.getParameter(def.name);
59
+ return [4 /*yield*/, def.sanitise(value, sanitisedVisit, this.placeHistory, this.injector)];
60
+ case 4:
61
+ sanitisedValue = _a.sent();
62
+ if (def.hasChanged(value, sanitisedValue)) {
63
+ sanitisedVisit = sanitisedVisit.replace(def, sanitisedValue);
64
+ }
65
+ _a.label = 5;
66
+ case 5:
67
+ i++;
68
+ return [3 /*break*/, 3];
69
+ case 6: return [2 /*return*/, sanitisedVisit.hasChangedFrom(visit) ? sanitisedVisit : visit];
70
+ }
71
+ });
72
+ });
73
+ };
74
+ return VisitSanitiser;
75
+ }());
76
+ export { VisitSanitiser };
77
+ if (false) {
78
+ /**
79
+ * @type {?}
80
+ * @private
81
+ */
82
+ VisitSanitiser.prototype.activatedRoute;
83
+ /**
84
+ * @type {?}
85
+ * @private
86
+ */
87
+ VisitSanitiser.prototype.router;
88
+ /**
89
+ * @type {?}
90
+ * @private
91
+ */
92
+ VisitSanitiser.prototype.placeHistory;
93
+ /**
94
+ * @type {?}
95
+ * @private
96
+ */
97
+ VisitSanitiser.prototype.injector;
98
+ }
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzaXQtc2FuaXRpc2VyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3JvdXRlL3Zpc2l0LXNhbml0aXNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQU1BO0lBQ0Usd0JBQW9CLGNBQXNDLEVBQVUsTUFBYyxFQUFVLFlBQTBCLEVBQVUsUUFBa0I7UUFBOUgsbUJBQWMsR0FBZCxjQUFjLENBQXdCO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUVsSixDQUFDO0lBRUQsV0FBVzs7Ozs7O0lBQ0wsaUNBQVE7Ozs7OztJQUFkLFVBQWUsS0FBWTs7Ozs7O3dCQUNuQixRQUFRLEdBQUcsS0FBSyxDQUFDLGVBQWU7NkJBQ2xDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsRUFBckIsd0JBQXFCO3dCQUNqQixVQUFVLEdBQUcsUUFBUSxDQUFDLHNCQUFzQixFQUFFO3dCQUM5QyxPQUFPLEdBQUcsS0FBSyxDQUFDLFVBQVUsRUFBRTt3QkFDWCxxQkFBTSxVQUFVLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUE7O3dCQUE1RixjQUFjLEdBQUcsU0FBMkU7d0JBQ2xHLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBQyxPQUFPLFNBQUEsRUFBRSxjQUFjLGdCQUFBLEVBQUMsQ0FBQyxDQUFDO3dCQUN2QyxvQ0FBb0M7d0JBQ3BDLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLEVBQUU7NEJBQ2xELCtEQUErRDs0QkFDL0QscUNBQXFDOzRCQUNyQyxzQkFBTyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxjQUFjLENBQUMsRUFBQzt5QkFDbEQ7Ozs7d0JBSUcsYUFBYSxHQUFHLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQzs0QkFDbkQsc0JBQXNCLEVBQUUsSUFBSTs0QkFDNUIseUJBQXlCLEVBQUUsSUFBSTt5QkFDaEMsQ0FBQzt3QkFDRSxjQUFjLEdBQVUsS0FBSzt3QkFDeEIsQ0FBQyxHQUFHLENBQUM7Ozs2QkFBRSxDQUFBLENBQUMsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFBO3dCQUNoQyxHQUFHLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQzt3QkFDdEIsS0FBSyxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQzt3QkFDbkIscUJBQU0sR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsY0FBYyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFBOzt3QkFBNUYsY0FBYyxHQUFHLFNBQTJFO3dCQUNsRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxFQUFFOzRCQUN6QyxjQUFjLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsY0FBYyxDQUFDLENBQUM7eUJBQzlEOzs7d0JBTnVDLENBQUMsRUFBRSxDQUFBOzs0QkFTN0Msc0JBQU8sY0FBYyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUM7Ozs7S0FDdEU7SUFFSCxxQkFBQztBQUFELENBQUMsQUF2Q0QsSUF1Q0M7Ozs7Ozs7SUF0Q2Esd0NBQThDOzs7OztJQUFFLGdDQUFzQjs7Ozs7SUFBRSxzQ0FBa0M7Ozs7O0lBQUUsa0NBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBUcmFjZSB9IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCB7IFBsYWNlSGlzdG9yeSB9IGZyb20gJy4uL3BsYWNlLWhpc3RvcnknO1xuaW1wb3J0IHsgVmlzaXQgfSBmcm9tICcuLi92aXNpdCc7XG5cbmV4cG9ydCBjbGFzcyBWaXNpdFNhbml0aXNlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgcGxhY2VIaXN0b3J5OiBQbGFjZUhpc3RvcnksIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7XG5cbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIGFzeW5jIHNhbml0aXNlKHZpc2l0OiBWaXNpdCk6IFByb21pc2U8VmlzaXQ+IHtcbiAgICBjb25zdCBwbGFjZURlZiA9IHZpc2l0LnBsYWNlRGVmaW5pdGlvbjtcbiAgICBpZiAocGxhY2VEZWYuaGFzUm91dGVJZCgpKSB7XG4gICAgICBjb25zdCByb3V0ZUlkRGVmID0gcGxhY2VEZWYuZ2V0Um91dGVJZFBhcmFtZXRlckRlZigpO1xuICAgICAgY29uc3Qgcm91dGVJZCA9IHZpc2l0LmdldFJvdXRlSWQoKTtcbiAgICAgIGNvbnN0IHNhbml0aXNlZFZhbHVlID0gYXdhaXQgcm91dGVJZERlZi5zYW5pdGlzZShyb3V0ZUlkLCB2aXNpdCwgdGhpcy5wbGFjZUhpc3RvcnksIHRoaXMuaW5qZWN0b3IpO1xuICAgICAgY29uc29sZS5sb2coe3JvdXRlSWQsIHNhbml0aXNlZFZhbHVlfSk7XG4gICAgICAvLyAjIyMtLS0tLS0tIEVBUkxZIEVYSVQgLS0tLS0tLS0jIyNcbiAgICAgIGlmIChyb3V0ZUlkRGVmLmhhc0NoYW5nZWQocm91dGVJZCwgc2FuaXRpc2VkVmFsdWUpKSB7XG4gICAgICAgIC8vIGlmIHRoZSByb3V0ZSBpZCBoYXMgY2hhbmdlZCB3ZSByZWRpcmVjdCBpbW1lZGlhdGVseSBhcyBvdGhlclxuICAgICAgICAvLyBwYXJhbWV0ZXIgc2FuaXRpc2VycyBtaWdodCB1c2UgaXQuXG4gICAgICAgIHJldHVybiB2aXNpdC5yZXBsYWNlKHJvdXRlSWREZWYsIHNhbml0aXNlZFZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBpZiB3ZSBkaWRuJ3QgcmVwbGFjZSB0aGUgcm91dGVJZCB3ZSBjb250aW51ZSB0aGUgdXJsIHByZXNlbnQgcGFyYW1ldGVycy5cbiAgICBjb25zdCBwYXJhbWV0ZXJEZWZzID0gcGxhY2VEZWYuZ2V0VmlzaXRQYXJhbWV0ZXJEZWZzKHtcbiAgICAgIGluY2x1ZGVSb3V0ZVBhcmFtZXRlcnM6IHRydWUsXG4gICAgICBpbmNsdWRlTm9uUm91dGVQYXJhbWV0ZXJzOiB0cnVlXG4gICAgfSk7XG4gICAgbGV0IHNhbml0aXNlZFZpc2l0OiBWaXNpdCA9IHZpc2l0O1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFyYW1ldGVyRGVmcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgZGVmID0gcGFyYW1ldGVyRGVmc1tpXTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdmlzaXQuZ2V0UGFyYW1ldGVyKGRlZi5uYW1lKTtcbiAgICAgIGNvbnN0IHNhbml0aXNlZFZhbHVlID0gYXdhaXQgZGVmLnNhbml0aXNlKHZhbHVlLCBzYW5pdGlzZWRWaXNpdCwgdGhpcy5wbGFjZUhpc3RvcnksIHRoaXMuaW5qZWN0b3IpO1xuICAgICAgaWYgKGRlZi5oYXNDaGFuZ2VkKHZhbHVlLCBzYW5pdGlzZWRWYWx1ZSkpIHtcbiAgICAgICAgc2FuaXRpc2VkVmlzaXQgPSBzYW5pdGlzZWRWaXNpdC5yZXBsYWNlKGRlZiwgc2FuaXRpc2VkVmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzYW5pdGlzZWRWaXNpdC5oYXNDaGFuZ2VkRnJvbSh2aXNpdCkgPyBzYW5pdGlzZWRWaXNpdCA6IHZpc2l0O1xuICB9XG5cbn1cbiJdfQ==