@coolon/angular-ui-powerups 0.0.51 → 0.0.53

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 (38) hide show
  1. package/bundles/coolon-angular-ui-powerups.umd.js +393 -750
  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.metadata.json +1 -1
  6. package/esm2015/coolon-angular-ui-powerups.js +2 -2
  7. package/esm2015/index.js +2 -2
  8. package/esm2015/lib/place/components/place-outlet/place-outlet.component.js +2 -2
  9. package/esm2015/lib/place/guards/place-route.guard.js +2 -2
  10. package/esm2015/lib/place/index.js +2 -2
  11. package/esm2015/lib/place/route/parameter-definition.class.js +24 -35
  12. package/esm2015/lib/place/route/parameter-sanitiser.js +3 -4
  13. package/esm2015/lib/place/route/parameter-snapshot.js +65 -209
  14. package/esm2015/lib/place/route/route-parameter-value.js +223 -0
  15. package/esm2015/public_api.js +2 -2
  16. package/esm5/coolon-angular-ui-powerups.js +2 -2
  17. package/esm5/index.js +2 -2
  18. package/esm5/lib/place/components/place-outlet/place-outlet.component.js +2 -2
  19. package/esm5/lib/place/guards/place-route.guard.js +2 -2
  20. package/esm5/lib/place/index.js +2 -2
  21. package/esm5/lib/place/route/parameter-definition.class.js +25 -48
  22. package/esm5/lib/place/route/parameter-sanitiser.js +3 -4
  23. package/esm5/lib/place/route/parameter-snapshot.js +69 -274
  24. package/esm5/lib/place/route/route-parameter-value.js +309 -0
  25. package/esm5/public_api.js +2 -2
  26. package/fesm2015/coolon-angular-ui-powerups.js +308 -539
  27. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  28. package/fesm5/coolon-angular-ui-powerups.js +396 -752
  29. package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
  30. package/lib/place/index.d.ts +1 -1
  31. package/lib/place/route/parameter-definition.class.d.ts +2 -2
  32. package/lib/place/route/parameter-sanitiser.d.ts +2 -2
  33. package/lib/place/route/parameter-snapshot.d.ts +5 -27
  34. package/lib/place/route/route-parameter-value.d.ts +42 -0
  35. package/package.json +1 -1
  36. package/esm2015/lib/place/route/route-parameter-sanitiser.js +0 -296
  37. package/esm5/lib/place/route/route-parameter-sanitiser.js +0 -435
  38. package/lib/place/route/route-parameter-sanitiser.d.ts +0 -44
@@ -2516,6 +2516,307 @@
2516
2516
  PlaceRouter.prototype.router;
2517
2517
  }
2518
2518
 
2519
+ /**
2520
+ * @fileoverview added by tsickle
2521
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2522
+ */
2523
+ /**
2524
+ * @abstract
2525
+ * @template S, T, R
2526
+ */
2527
+ /**
2528
+ * @abstract
2529
+ * @template S, T, R
2530
+ */
2531
+ exports.RouteParameterValue = /** @class */ (function () {
2532
+ function RouteParameterValue(definition, rawValue) {
2533
+ this.definition = definition;
2534
+ this.rawValue = rawValue;
2535
+ }
2536
+ /**
2537
+ * @return {?}
2538
+ */
2539
+ RouteParameterValue.prototype.isRouteId = /**
2540
+ * @return {?}
2541
+ */
2542
+ function () {
2543
+ return this.definition.isRouteId;
2544
+ };
2545
+ /**
2546
+ * @param {?} otherValue
2547
+ * @return {?}
2548
+ */
2549
+ RouteParameterValue.prototype.hasChanged = /**
2550
+ * @param {?} otherValue
2551
+ * @return {?}
2552
+ */
2553
+ function (otherValue) {
2554
+ return this.isEmpty() ?
2555
+ !this.isEmptyValue(otherValue) :
2556
+ this.isEmptyValue(otherValue) || !this.isSameValue(otherValue);
2557
+ };
2558
+ /**
2559
+ * Return's true if the current value is empty.
2560
+ */
2561
+ /**
2562
+ * Return's true if the current value is empty.
2563
+ * @return {?}
2564
+ */
2565
+ RouteParameterValue.prototype.isEmpty = /**
2566
+ * Return's true if the current value is empty.
2567
+ * @return {?}
2568
+ */
2569
+ function () {
2570
+ return this.isEmptyValue(this.value);
2571
+ };
2572
+ /**
2573
+ * Returns true if the rawValue is undefined. This
2574
+ */
2575
+ /**
2576
+ * Returns true if the rawValue is undefined. This
2577
+ * @return {?}
2578
+ */
2579
+ RouteParameterValue.prototype.isMissing = /**
2580
+ * Returns true if the rawValue is undefined. This
2581
+ * @return {?}
2582
+ */
2583
+ function () {
2584
+ return ___default__default.isUndefined(this.rawValue);
2585
+ };
2586
+ /**
2587
+ * @param {?} visit
2588
+ * @param {?} injector
2589
+ * @return {?}
2590
+ */
2591
+ RouteParameterValue.prototype.sanitise = /**
2592
+ * @param {?} visit
2593
+ * @param {?} injector
2594
+ * @return {?}
2595
+ */
2596
+ function (visit, injector) {
2597
+ return __awaiter(this, void 0, void 0, function () {
2598
+ var sanitiser;
2599
+ return __generator(this, function (_a) {
2600
+ sanitiser = this.definition.getSanitiser(injector);
2601
+ if (sanitiser) {
2602
+ return [2 /*return*/, sanitiser.sanitise(this, visit)];
2603
+ }
2604
+ else {
2605
+ return [2 /*return*/, this.value];
2606
+ }
2607
+ return [2 /*return*/];
2608
+ });
2609
+ });
2610
+ };
2611
+ return RouteParameterValue;
2612
+ }());
2613
+ if (false) {
2614
+ /** @type {?} */
2615
+ exports.RouteParameterValue.prototype.value;
2616
+ /** @type {?} */
2617
+ exports.RouteParameterValue.prototype.definition;
2618
+ /**
2619
+ * @type {?}
2620
+ * @protected
2621
+ */
2622
+ exports.RouteParameterValue.prototype.rawValue;
2623
+ /**
2624
+ * @abstract
2625
+ * @param {?} otherValue
2626
+ * @return {?}
2627
+ */
2628
+ exports.RouteParameterValue.prototype.isSameValue = function (otherValue) { };
2629
+ /**
2630
+ * @abstract
2631
+ * @return {?}
2632
+ */
2633
+ exports.RouteParameterValue.prototype.formattedValue = function () { };
2634
+ /**
2635
+ * @abstract
2636
+ * @param {?} value
2637
+ * @return {?}
2638
+ */
2639
+ exports.RouteParameterValue.prototype.replace = function (value) { };
2640
+ /**
2641
+ * @abstract
2642
+ * @param {?} value
2643
+ * @return {?}
2644
+ */
2645
+ exports.RouteParameterValue.prototype.isEmptyValue = function (value) { };
2646
+ }
2647
+ (function (RouteParameterValue) {
2648
+ /**
2649
+ * @template T
2650
+ * @param {?} def
2651
+ * @param {?} paramMap
2652
+ * @return {?}
2653
+ */
2654
+ function create(def, paramMap) {
2655
+ // NOTE: Using undefined is important as it triggers the isMissing flag which is used by defaultValue and remember flags
2656
+ return def.isArray ?
2657
+ new RouteParameterValue.Array(def, paramMap.has(def.name) ? paramMap.getAll(def.name) : undefined) :
2658
+ new RouteParameterValue.Scalar(def, paramMap.has(def.name) ? paramMap.get(def.name) : undefined);
2659
+ }
2660
+ RouteParameterValue.create = create;
2661
+ /**
2662
+ * @template T
2663
+ */
2664
+ var Scalar = /** @class */ (function (_super) {
2665
+ __extends(Scalar, _super);
2666
+ function Scalar() {
2667
+ return _super !== null && _super.apply(this, arguments) || this;
2668
+ }
2669
+ Object.defineProperty(Scalar.prototype, "value", {
2670
+ get: /**
2671
+ * @return {?}
2672
+ */
2673
+ function () {
2674
+ return this.definition.type.parse(this.rawValue);
2675
+ },
2676
+ enumerable: true,
2677
+ configurable: true
2678
+ });
2679
+ /**
2680
+ * @param {?} otherValue
2681
+ * @return {?}
2682
+ */
2683
+ Scalar.prototype.isSameValue = /**
2684
+ * @param {?} otherValue
2685
+ * @return {?}
2686
+ */
2687
+ function (otherValue) {
2688
+ return this.value === otherValue;
2689
+ };
2690
+ /**
2691
+ * @param {?} value
2692
+ * @return {?}
2693
+ */
2694
+ Scalar.prototype.replace = /**
2695
+ * @param {?} value
2696
+ * @return {?}
2697
+ */
2698
+ function (value) {
2699
+ return new RouteParameterValue.Scalar(this.definition, this.isEmptyValue(value) ? undefined : this.definition.type.format(value));
2700
+ };
2701
+ /**
2702
+ * @return {?}
2703
+ */
2704
+ Scalar.prototype.formattedValue = /**
2705
+ * @return {?}
2706
+ */
2707
+ function () {
2708
+ return this.isEmpty() ? undefined : this.definition.type.format(this.value);
2709
+ };
2710
+ /**
2711
+ * @param {?} value
2712
+ * @return {?}
2713
+ */
2714
+ Scalar.prototype.isEmptyValue = /**
2715
+ * @param {?} value
2716
+ * @return {?}
2717
+ */
2718
+ function (value) {
2719
+ return ___default__default.isNil(value);
2720
+ };
2721
+ __decorate([
2722
+ src.Memoize(),
2723
+ __metadata("design:type", Object),
2724
+ __metadata("design:paramtypes", [])
2725
+ ], Scalar.prototype, "value", null);
2726
+ return Scalar;
2727
+ }(RouteParameterValue));
2728
+ RouteParameterValue.Scalar = Scalar;
2729
+ /**
2730
+ * @template T
2731
+ */
2732
+ var Array = /** @class */ (function (_super) {
2733
+ __extends(Array, _super);
2734
+ function Array() {
2735
+ return _super !== null && _super.apply(this, arguments) || this;
2736
+ }
2737
+ Object.defineProperty(Array.prototype, "value", {
2738
+ get: /**
2739
+ * @return {?}
2740
+ */
2741
+ function () {
2742
+ var _this = this;
2743
+ return (this.rawValue || [])
2744
+ .filter((/**
2745
+ * @param {?} s
2746
+ * @return {?}
2747
+ */
2748
+ function (s) { return !___default__default.isEmpty(s); }))
2749
+ .map((/**
2750
+ * @param {?} raw
2751
+ * @return {?}
2752
+ */
2753
+ function (raw) { return _this.definition.type.parse(raw); }));
2754
+ },
2755
+ enumerable: true,
2756
+ configurable: true
2757
+ });
2758
+ /**
2759
+ * @param {?} otherValue
2760
+ * @return {?}
2761
+ */
2762
+ Array.prototype.isSameValue = /**
2763
+ * @param {?} otherValue
2764
+ * @return {?}
2765
+ */
2766
+ function (otherValue) {
2767
+ return ___default__default.isEqual(this.value, otherValue);
2768
+ };
2769
+ /**
2770
+ * @param {?} value
2771
+ * @return {?}
2772
+ */
2773
+ Array.prototype.replace = /**
2774
+ * @param {?} value
2775
+ * @return {?}
2776
+ */
2777
+ function (value) {
2778
+ var _this = this;
2779
+ return new RouteParameterValue.Array(this.definition, this.isEmptyValue(value) ? undefined : value.map((/**
2780
+ * @param {?} v
2781
+ * @return {?}
2782
+ */
2783
+ function (v) { return _this.definition.type.format(v); })));
2784
+ };
2785
+ /**
2786
+ * @return {?}
2787
+ */
2788
+ Array.prototype.formattedValue = /**
2789
+ * @return {?}
2790
+ */
2791
+ function () {
2792
+ var _this = this;
2793
+ return this.isEmpty() ? [] : this.value.map((/**
2794
+ * @param {?} v
2795
+ * @return {?}
2796
+ */
2797
+ function (v) { return _this.definition.type.format(v); }));
2798
+ };
2799
+ /**
2800
+ * @param {?} value
2801
+ * @return {?}
2802
+ */
2803
+ Array.prototype.isEmptyValue = /**
2804
+ * @param {?} value
2805
+ * @return {?}
2806
+ */
2807
+ function (value) {
2808
+ return ___default__default.isNil(value) || value.length < 1;
2809
+ };
2810
+ __decorate([
2811
+ src.Memoize(),
2812
+ __metadata("design:type", Array),
2813
+ __metadata("design:paramtypes", [])
2814
+ ], Array.prototype, "value", null);
2815
+ return Array;
2816
+ }(RouteParameterValue));
2817
+ RouteParameterValue.Array = Array;
2818
+ })(exports.RouteParameterValue || (exports.RouteParameterValue = {}));
2819
+
2519
2820
  /**
2520
2821
  * @fileoverview added by tsickle
2521
2822
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
@@ -2667,72 +2968,47 @@
2667
2968
  /**
2668
2969
  * @template T, S
2669
2970
  */
2670
- var /**
2671
- * @template T, S
2672
- */
2673
- DefaultParameterSanitiser = /** @class */ (function () {
2971
+ var DefaultParameterSanitiser = /** @class */ (function () {
2674
2972
  function DefaultParameterSanitiser(remember, defaultValue, placeHistory) {
2675
2973
  this.remember = remember;
2676
2974
  this.defaultValue = defaultValue;
2677
2975
  this.placeHistory = placeHistory;
2678
2976
  }
2679
2977
  /**
2680
- * @param {?} parameterDef
2681
- * @param {?} value
2978
+ * @param {?} parameter
2682
2979
  * @param {?=} visit
2683
2980
  * @return {?}
2684
2981
  */
2685
2982
  DefaultParameterSanitiser.prototype.sanitise = /**
2686
- * @param {?} parameterDef
2687
- * @param {?} value
2983
+ * @param {?} parameter
2688
2984
  * @param {?=} visit
2689
2985
  * @return {?}
2690
2986
  */
2691
- function (parameterDef, value, visit) {
2692
- var _this = this;
2693
- if (this.isBlank(parameterDef, value)) {
2694
- if (this.remember) {
2695
- /** @type {?} */
2696
- var visits = this.placeHistory.getHistory(visit.placeDefinition);
2697
- value = visits.map((/**
2698
- * @param {?} v
2699
- * @return {?}
2700
- */
2701
- function (v) { return v.getValueOf(parameterDef); }))
2702
- .filter((/**
2703
- * @param {?} v
2704
- * @return {?}
2705
- */
2706
- function (v) { return !___default__default.isNil(v); }))
2707
- .find((/**
2708
- * @param {?} v
2709
- * @return {?}
2710
- */
2711
- function (v) { return !_this.isBlank(parameterDef, v); }));
2987
+ function (parameter, visit) {
2988
+ /** @type {?} */
2989
+ var value = parameter.value;
2990
+ if (parameter.isMissing()) {
2991
+ /** @type {?} */
2992
+ var previousVisit = ___default__default.first(this.placeHistory.getHistory(visit.placeDefinition));
2993
+ if (this.remember && previousVisit) {
2994
+ value = previousVisit.getValueOf(parameter.definition);
2712
2995
  }
2713
- return this.isBlank(parameterDef, value) ? this.defaultValue : value;
2996
+ /** @type {?} */
2997
+ var s = parameter.isEmptyValue(value) ? this.defaultValue : value;
2998
+ console.log("missing -> " + parameter.definition.name + ", returning " + s);
2999
+ return s;
2714
3000
  }
2715
3001
  else {
3002
+ console.log("not missing -> " + parameter.definition.name);
2716
3003
  return value;
2717
3004
  }
2718
3005
  };
2719
- /**
2720
- * @private
2721
- * @param {?} def
2722
- * @param {?} value
2723
- * @return {?}
2724
- */
2725
- DefaultParameterSanitiser.prototype.isBlank = /**
2726
- * @private
2727
- * @param {?} def
2728
- * @param {?} value
2729
- * @return {?}
2730
- */
2731
- function (def, value) {
2732
- /** @type {?} */
2733
- var isNil = ___default__default.isNil(value);
2734
- return isNil ? true : def.isArray ? value['length'] < 1 : false;
2735
- };
3006
+ __decorate([
3007
+ pectin.Trace(),
3008
+ __metadata("design:type", Function),
3009
+ __metadata("design:paramtypes", [exports.RouteParameterValue, Object]),
3010
+ __metadata("design:returntype", Object)
3011
+ ], DefaultParameterSanitiser.prototype, "sanitise", null);
2736
3012
  return DefaultParameterSanitiser;
2737
3013
  }());
2738
3014
  ParameterDefinition.DefaultParameterSanitiser = DefaultParameterSanitiser;
@@ -2751,9 +3027,9 @@
2751
3027
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2752
3028
  */
2753
3029
  exports.ParameterSnapshot = /** @class */ (function () {
2754
- function ParameterSnapshot(placeDefinition, resolved) {
3030
+ function ParameterSnapshot(placeDefinition, parameters) {
2755
3031
  this.placeDefinition = placeDefinition;
2756
- this.resolved = resolved;
3032
+ this.parameters = parameters;
2757
3033
  }
2758
3034
  /**
2759
3035
  * @param {?} other
@@ -2768,18 +3044,18 @@
2768
3044
  function (other, debug) {
2769
3045
  if (debug === void 0) { debug = false; }
2770
3046
  /** @type {?} */
2771
- var changed = this.resolved.find((/**
3047
+ var changed = this.parameters.find((/**
2772
3048
  * @param {?} r
2773
3049
  * @return {?}
2774
3050
  */
2775
3051
  function (r) {
2776
- return !r.isSame(other.getValueOf(r.parameterDef));
3052
+ return r.hasChanged(other.getValueOf(r.definition));
2777
3053
  }));
2778
3054
  if (changed && debug) {
2779
3055
  console.log({
2780
- name: changed.parameterDef.name,
3056
+ name: changed.definition.name,
2781
3057
  mine: changed.value,
2782
- theirs: other.getValueOf(changed.parameterDef)
3058
+ theirs: other.getValueOf(changed.definition)
2783
3059
  });
2784
3060
  }
2785
3061
  return !!changed;
@@ -2795,11 +3071,11 @@
2795
3071
  * @return {?}
2796
3072
  */
2797
3073
  function (parameterDef) {
2798
- return this.resolved.find((/**
3074
+ return this.parameters.find((/**
2799
3075
  * @param {?} r
2800
3076
  * @return {?}
2801
3077
  */
2802
- function (r) { return r.parameterDef === parameterDef; }));
3078
+ function (r) { return r.definition === parameterDef; }));
2803
3079
  };
2804
3080
  /**
2805
3081
  * @template T, S
@@ -2835,11 +3111,11 @@
2835
3111
  */
2836
3112
  function (name) {
2837
3113
  /** @type {?} */
2838
- var resolvedParameter = this.resolved.find((/**
3114
+ var resolvedParameter = this.parameters.find((/**
2839
3115
  * @param {?} r
2840
3116
  * @return {?}
2841
3117
  */
2842
- function (r) { return r.parameterDef.name === name; }));
3118
+ function (r) { return r.definition.name === name; }));
2843
3119
  return resolvedParameter ? resolvedParameter.value : null;
2844
3120
  };
2845
3121
  /**
@@ -2853,11 +3129,11 @@
2853
3129
  function () {
2854
3130
  // RouteId's are never arrays: see parameter-decorators.ts createDefinition methods. It would be nice to
2855
3131
  // capture this in the type system though
2856
- return (/** @type {?} */ (this.resolved.find((/**
3132
+ return (/** @type {?} */ (this.parameters.find((/**
2857
3133
  * @param {?} p
2858
3134
  * @return {?}
2859
3135
  */
2860
- function (p) { return p.parameterDef.isRouteId; }))));
3136
+ function (p) { return p.definition.isRouteId; }))));
2861
3137
  };
2862
3138
  /**
2863
3139
  * @private
@@ -2868,11 +3144,11 @@
2868
3144
  * @return {?}
2869
3145
  */
2870
3146
  function () {
2871
- return this.resolved.filter((/**
3147
+ return this.parameters.filter((/**
2872
3148
  * @param {?} r
2873
3149
  * @return {?}
2874
3150
  */
2875
- function (r) { return !r.parameterDef.isRouteId; }));
3151
+ function (r) { return !r.definition.isRouteId; }));
2876
3152
  };
2877
3153
  /**
2878
3154
  * @return {?}
@@ -2897,43 +3173,37 @@
2897
3173
  /**
2898
3174
  * @return {?}
2899
3175
  */
2900
- ParameterSnapshot.prototype.getFormattedParameters = /**
3176
+ ParameterSnapshot.prototype.getNonEmptyParameters = /**
2901
3177
  * @return {?}
2902
3178
  */
2903
3179
  function () {
2904
- /** @type {?} */
2905
- var params = {};
2906
- /** @type {?} */
2907
- var routeIdParam = this.resolved.filter((/**
3180
+ return this.parameters.filter((/**
2908
3181
  * @param {?} p
2909
3182
  * @return {?}
2910
3183
  */
2911
- function (p) { return !p.parameterDef.isRouteId; })).forEach((/**
2912
- * @param {?} p
2913
- * @return {?}
2914
- */
2915
- function (p) {
2916
- params[p.parameterDef.name] = p.formattedValue();
2917
- }));
2918
- return params;
3184
+ function (p) { return !p.isEmpty(); }));
2919
3185
  };
2920
3186
  /**
2921
3187
  * @return {?}
2922
3188
  */
2923
- ParameterSnapshot.prototype.getAllFormattedParameters = /**
3189
+ ParameterSnapshot.prototype.getFormattedParameters = /**
2924
3190
  * @return {?}
2925
3191
  */
2926
3192
  function () {
2927
3193
  /** @type {?} */
2928
3194
  var params = {};
2929
3195
  /** @type {?} */
2930
- var routeIdParam = this.resolved.forEach((/**
3196
+ var routeIdParam = this.getNonEmptyParameters()
3197
+ .filter((/**
2931
3198
  * @param {?} p
2932
3199
  * @return {?}
2933
3200
  */
2934
- function (p) {
2935
- params[p.parameterDef.name] = p.formattedValue();
2936
- }));
3201
+ function (p) { return !p.definition.isRouteId; }))
3202
+ .forEach((/**
3203
+ * @param {?} p
3204
+ * @return {?}
3205
+ */
3206
+ function (p) { return params[p.definition.name] = p.formattedValue(); }));
2937
3207
  return params;
2938
3208
  };
2939
3209
  /**
@@ -2946,12 +3216,12 @@
2946
3216
  /** @type {?} */
2947
3217
  var params = {};
2948
3218
  /** @type {?} */
2949
- var routeIdParam = this.resolved.forEach((/**
3219
+ var routeIdParam = this.parameters.forEach((/**
2950
3220
  * @param {?} p
2951
3221
  * @return {?}
2952
3222
  */
2953
3223
  function (p) {
2954
- params[p.parameterDef.name] = p.value;
3224
+ params[p.definition.name] = p.value;
2955
3225
  }));
2956
3226
  return params;
2957
3227
  };
@@ -2968,12 +3238,12 @@
2968
3238
  * @return {?}
2969
3239
  */
2970
3240
  function (parameter, value) {
2971
- return new ParameterSnapshot(this.placeDefinition, this.resolved.map((/**
3241
+ return new ParameterSnapshot(this.placeDefinition, this.parameters.map((/**
2972
3242
  * @param {?} p
2973
3243
  * @return {?}
2974
3244
  */
2975
3245
  function (p) {
2976
- return p.parameterDef === parameter ? p.replace(value) : p;
3246
+ return p.definition === parameter ? p.replace(value) : p;
2977
3247
  })));
2978
3248
  };
2979
3249
  /**
@@ -2995,10 +3265,10 @@
2995
3265
  return [4 /*yield*/, routeId.sanitise(this, injector)];
2996
3266
  case 1:
2997
3267
  sanitisedValue = _a.sent();
2998
- if (!routeId.isSame(sanitisedValue)) {
3268
+ if (routeId.hasChanged(sanitisedValue)) {
2999
3269
  // if the route id has changed we redirect immediately as other
3000
3270
  // parameter sanitisers might use it.
3001
- return [2 /*return*/, this.replace(routeId.parameterDef, sanitisedValue)];
3271
+ return [2 /*return*/, this.replace(routeId.definition, sanitisedValue)];
3002
3272
  }
3003
3273
  _a.label = 2;
3004
3274
  case 2:
@@ -3012,8 +3282,8 @@
3012
3282
  return [4 /*yield*/, routeParameter.sanitise(this, injector)];
3013
3283
  case 4:
3014
3284
  sanitisedValue = _a.sent();
3015
- if (!routeParameter.isSame(sanitisedValue)) {
3016
- result = result.replace(routeParameter.parameterDef, sanitisedValue);
3285
+ if (routeParameter.hasChanged(sanitisedValue)) {
3286
+ result = result.replace(routeParameter.definition, sanitisedValue);
3017
3287
  }
3018
3288
  _a.label = 5;
3019
3289
  case 5:
@@ -3029,7 +3299,7 @@
3029
3299
  src.Memoize(),
3030
3300
  __metadata("design:type", Function),
3031
3301
  __metadata("design:paramtypes", [exports.ParameterDefinition]),
3032
- __metadata("design:returntype", ParameterSnapshot.ResolvedParameter)
3302
+ __metadata("design:returntype", exports.RouteParameterValue)
3033
3303
  ], ParameterSnapshot.prototype, "getParameter", null);
3034
3304
  __decorate([
3035
3305
  src.Memoize(),
@@ -3047,7 +3317,7 @@
3047
3317
  src.Memoize(),
3048
3318
  __metadata("design:type", Function),
3049
3319
  __metadata("design:paramtypes", []),
3050
- __metadata("design:returntype", ParameterSnapshot.ResolvedValueParameter)
3320
+ __metadata("design:returntype", exports.RouteParameterValue.Scalar)
3051
3321
  ], ParameterSnapshot.prototype, "getRouteIdParameter", null);
3052
3322
  __decorate([
3053
3323
  src.Memoize(),
@@ -3055,6 +3325,12 @@
3055
3325
  __metadata("design:paramtypes", []),
3056
3326
  __metadata("design:returntype", Array)
3057
3327
  ], ParameterSnapshot.prototype, "getRouteParameters", null);
3328
+ __decorate([
3329
+ pectin.Trace(),
3330
+ __metadata("design:type", Function),
3331
+ __metadata("design:paramtypes", []),
3332
+ __metadata("design:returntype", void 0)
3333
+ ], ParameterSnapshot.prototype, "getFormattedParameters", null);
3058
3334
  return ParameterSnapshot;
3059
3335
  }());
3060
3336
  if (false) {
@@ -3064,7 +3340,7 @@
3064
3340
  * @type {?}
3065
3341
  * @private
3066
3342
  */
3067
- exports.ParameterSnapshot.prototype.resolved;
3343
+ exports.ParameterSnapshot.prototype.parameters;
3068
3344
  }
3069
3345
  (function (ParameterSnapshot) {
3070
3346
  /**
@@ -3077,31 +3353,11 @@
3077
3353
  /** @type {?} */
3078
3354
  var paramMap = new ConsolidatedParameterMap(params, urlSegments);
3079
3355
  /** @type {?} */
3080
- var resolvedParameters = placeDef.getRouteParameters()
3081
- .map((/**
3356
+ var resolvedParameters = placeDef.getRouteParameters().map((/**
3082
3357
  * @param {?} def
3083
3358
  * @return {?}
3084
3359
  */
3085
- function (def) {
3086
- if (def.isArray) {
3087
- /** @type {?} */
3088
- var value = paramMap.has(def.name) ? paramMap.getAll(def.name).filter((/**
3089
- * @param {?} s
3090
- * @return {?}
3091
- */
3092
- function (s) { return !___default__default.isEmpty(s); })).map((/**
3093
- * @param {?} raw
3094
- * @return {?}
3095
- */
3096
- function (raw) { return def.type.parse(raw); })) : null;
3097
- return new ResolvedArrayParameter(def, value);
3098
- }
3099
- else {
3100
- /** @type {?} */
3101
- var value = paramMap.has(def.name) ? def.type.parse(paramMap.get(def.name)) : null;
3102
- return new ResolvedValueParameter(def, value);
3103
- }
3104
- }));
3360
+ function (def) { return exports.RouteParameterValue.create(def, paramMap); }));
3105
3361
  return new ParameterSnapshot(placeDef, resolvedParameters);
3106
3362
  }
3107
3363
  ParameterSnapshot.create = create;
@@ -3110,12 +3366,7 @@
3110
3366
  * include the segment params in the paramMap as well as each segment returns an empty
3111
3367
  * param map even when `parameter`s has content.
3112
3368
  */
3113
- var /**
3114
- * This a work around for the fact that an activated route with multiple segments doesn't
3115
- * include the segment params in the paramMap as well as each segment returns an empty
3116
- * param map even when `parameter`s has content.
3117
- */
3118
- ConsolidatedParameterMap = /** @class */ (function () {
3369
+ var ConsolidatedParameterMap = /** @class */ (function () {
3119
3370
  function ConsolidatedParameterMap(paramMap, urlSegments) {
3120
3371
  this.paramMaps = [paramMap].concat((urlSegments || []).map((/**
3121
3372
  * @param {?} s
@@ -3172,6 +3423,26 @@
3172
3423
  */
3173
3424
  function (m) { return m.has(name); }));
3174
3425
  };
3426
+ Object.defineProperty(ConsolidatedParameterMap.prototype, "keys", {
3427
+ get: /**
3428
+ * @return {?}
3429
+ */
3430
+ function () {
3431
+ return this.paramMaps.reduce((/**
3432
+ * @param {?} result
3433
+ * @param {?} params
3434
+ * @return {?}
3435
+ */
3436
+ function (result, params) { return result.concat(params.keys); }), []);
3437
+ },
3438
+ enumerable: true,
3439
+ configurable: true
3440
+ });
3441
+ __decorate([
3442
+ src.Memoize(),
3443
+ __metadata("design:type", Array),
3444
+ __metadata("design:paramtypes", [])
3445
+ ], ConsolidatedParameterMap.prototype, "keys", null);
3175
3446
  return ConsolidatedParameterMap;
3176
3447
  }());
3177
3448
  if (false) {
@@ -3239,207 +3510,6 @@
3239
3510
  */
3240
3511
  ParamMapAdapter.prototype.params;
3241
3512
  }
3242
- /**
3243
- * @abstract
3244
- * @template T, S
3245
- */
3246
- var /**
3247
- * @abstract
3248
- * @template T, S
3249
- */
3250
- ResolvedParameter = /** @class */ (function () {
3251
- function ResolvedParameter(parameterDef, value) {
3252
- this.parameterDef = parameterDef;
3253
- this.value = value;
3254
- }
3255
- /**
3256
- * @return {?}
3257
- */
3258
- ResolvedParameter.prototype.isRouteId = /**
3259
- * @return {?}
3260
- */
3261
- function () {
3262
- return this.parameterDef.isRouteId;
3263
- };
3264
- /**
3265
- * @param {?} visit
3266
- * @param {?} injector
3267
- * @return {?}
3268
- */
3269
- ResolvedParameter.prototype.sanitise = /**
3270
- * @param {?} visit
3271
- * @param {?} injector
3272
- * @return {?}
3273
- */
3274
- function (visit, injector) {
3275
- return __awaiter(this, void 0, void 0, function () {
3276
- var sanitiser;
3277
- return __generator(this, function (_a) {
3278
- sanitiser = this.parameterDef.getSanitiser(injector);
3279
- if (sanitiser) {
3280
- return [2 /*return*/, sanitiser.sanitise(this.parameterDef, this.value, visit)];
3281
- }
3282
- else {
3283
- return [2 /*return*/, this.value];
3284
- }
3285
- return [2 /*return*/];
3286
- });
3287
- });
3288
- };
3289
- return ResolvedParameter;
3290
- }());
3291
- ParameterSnapshot.ResolvedParameter = ResolvedParameter;
3292
- if (false) {
3293
- /** @type {?} */
3294
- ResolvedParameter.prototype.parameterDef;
3295
- /** @type {?} */
3296
- ResolvedParameter.prototype.value;
3297
- /**
3298
- * @abstract
3299
- * @param {?} dest
3300
- * @return {?}
3301
- */
3302
- ResolvedParameter.prototype.injectRouteParam = function (dest) { };
3303
- /**
3304
- * @abstract
3305
- * @param {?} otherValue
3306
- * @return {?}
3307
- */
3308
- ResolvedParameter.prototype.isSame = function (otherValue) { };
3309
- /**
3310
- * @abstract
3311
- * @return {?}
3312
- */
3313
- ResolvedParameter.prototype.formattedValue = function () { };
3314
- /**
3315
- * @abstract
3316
- * @param {?} value
3317
- * @return {?}
3318
- */
3319
- ResolvedParameter.prototype.replace = function (value) { };
3320
- }
3321
- /**
3322
- * @template T
3323
- */
3324
- var /**
3325
- * @template T
3326
- */
3327
- ResolvedValueParameter = /** @class */ (function (_super) {
3328
- __extends(ResolvedValueParameter, _super);
3329
- function ResolvedValueParameter() {
3330
- return _super !== null && _super.apply(this, arguments) || this;
3331
- }
3332
- /**
3333
- * @param {?} otherValue
3334
- * @return {?}
3335
- */
3336
- ResolvedValueParameter.prototype.isSame = /**
3337
- * @param {?} otherValue
3338
- * @return {?}
3339
- */
3340
- function (otherValue) {
3341
- return this.value === otherValue;
3342
- };
3343
- /**
3344
- * @param {?} dest
3345
- * @return {?}
3346
- */
3347
- ResolvedValueParameter.prototype.injectRouteParam = /**
3348
- * @param {?} dest
3349
- * @return {?}
3350
- */
3351
- function (dest) {
3352
- dest[this.parameterDef.name] = this.parameterDef.type.format(this.value);
3353
- };
3354
- /**
3355
- * @param {?} value
3356
- * @return {?}
3357
- */
3358
- ResolvedValueParameter.prototype.replace = /**
3359
- * @param {?} value
3360
- * @return {?}
3361
- */
3362
- function (value) {
3363
- return new ResolvedValueParameter(this.parameterDef, value);
3364
- };
3365
- /**
3366
- * @return {?}
3367
- */
3368
- ResolvedValueParameter.prototype.formattedValue = /**
3369
- * @return {?}
3370
- */
3371
- function () {
3372
- return !___default__default.isNil(this.value) ? this.parameterDef.type.format(this.value) : null;
3373
- };
3374
- return ResolvedValueParameter;
3375
- }(ResolvedParameter));
3376
- ParameterSnapshot.ResolvedValueParameter = ResolvedValueParameter;
3377
- /**
3378
- * @template T
3379
- */
3380
- var /**
3381
- * @template T
3382
- */
3383
- ResolvedArrayParameter = /** @class */ (function (_super) {
3384
- __extends(ResolvedArrayParameter, _super);
3385
- function ResolvedArrayParameter() {
3386
- return _super !== null && _super.apply(this, arguments) || this;
3387
- }
3388
- /**
3389
- * @param {?} otherValue
3390
- * @return {?}
3391
- */
3392
- ResolvedArrayParameter.prototype.isSame = /**
3393
- * @param {?} otherValue
3394
- * @return {?}
3395
- */
3396
- function (otherValue) {
3397
- return ___default__default.isEqual(this.value, otherValue);
3398
- };
3399
- /**
3400
- * @param {?} dest
3401
- * @return {?}
3402
- */
3403
- ResolvedArrayParameter.prototype.injectRouteParam = /**
3404
- * @param {?} dest
3405
- * @return {?}
3406
- */
3407
- function (dest) {
3408
- var _this = this;
3409
- dest[this.parameterDef.name] = this.value.map((/**
3410
- * @param {?} v
3411
- * @return {?}
3412
- */
3413
- function (v) { return _this.parameterDef.type.format(v); }));
3414
- };
3415
- /**
3416
- * @param {?} value
3417
- * @return {?}
3418
- */
3419
- ResolvedArrayParameter.prototype.replace = /**
3420
- * @param {?} value
3421
- * @return {?}
3422
- */
3423
- function (value) {
3424
- return new ResolvedArrayParameter(this.parameterDef, value);
3425
- };
3426
- /**
3427
- * @return {?}
3428
- */
3429
- ResolvedArrayParameter.prototype.formattedValue = /**
3430
- * @return {?}
3431
- */
3432
- function () {
3433
- var _this = this;
3434
- return this.value ? this.value.map((/**
3435
- * @param {?} v
3436
- * @return {?}
3437
- */
3438
- function (v) { return _this.parameterDef.type.format(v); })) : [];
3439
- };
3440
- return ResolvedArrayParameter;
3441
- }(ResolvedParameter));
3442
- ParameterSnapshot.ResolvedArrayParameter = ResolvedArrayParameter;
3443
3513
  })(exports.ParameterSnapshot || (exports.ParameterSnapshot = {}));
3444
3514
 
3445
3515
  /**
@@ -3565,8 +3635,8 @@
3565
3635
  * @return {?}
3566
3636
  */
3567
3637
  function (next, previous) {
3568
- _this.pushChangesToRoute(next, previous);
3569
3638
  _this.placeHistory.add(next); // the above route change doesn't seem to propagate back in, so I'm add the state to the history manually for now.
3639
+ _this.pushChangesToRoute(next, previous);
3570
3640
  }), {
3571
3641
  unless: _this.incomingRouteChange
3572
3642
  });
@@ -4438,7 +4508,7 @@
4438
4508
  * @return {?}
4439
4509
  */
4440
4510
  function (sanitised) {
4441
- pectin.Logger.get(_this).info("ParameterSnapshot.sanitise result", sanitised.getAllParameters());
4511
+ pectin.Logger.get(_this).info("ParameterSnapshot.sanitise ->", sanitised.getAllParameters());
4442
4512
  if (sanitised.hasChanged(snapshot_1, true)) {
4443
4513
  return _this.placeRouter.getRedirectUrlTree(activatedRoute, sanitised);
4444
4514
  }
@@ -4593,12 +4663,11 @@
4593
4663
  function ParameterSanitiser() { }
4594
4664
  if (false) {
4595
4665
  /**
4596
- * @param {?} parameterDef
4597
- * @param {?} value
4666
+ * @param {?} paramter
4598
4667
  * @param {?=} visit
4599
4668
  * @return {?}
4600
4669
  */
4601
- ParameterSanitiser.prototype.sanitise = function (parameterDef, value, visit) { };
4670
+ ParameterSanitiser.prototype.sanitise = function (paramter, visit) { };
4602
4671
  }
4603
4672
 
4604
4673
  /**
@@ -4694,431 +4763,6 @@
4694
4763
  ParameterType.BOOLEAN = new BooleanType();
4695
4764
  })(exports.ParameterType || (exports.ParameterType = {}));
4696
4765
 
4697
- /**
4698
- * @fileoverview added by tsickle
4699
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4700
- */
4701
- /**
4702
- * @template T, S
4703
- */
4704
- /**
4705
- * @template T, S
4706
- */
4707
- exports.Sanitiser = /** @class */ (function () {
4708
- function Sanitiser(parameterDef, snapshot, sanitiser) {
4709
- this.parameterDef = parameterDef;
4710
- this.snapshot = snapshot;
4711
- this.sanitiser = sanitiser;
4712
- }
4713
- /**
4714
- * @return {?}
4715
- */
4716
- Sanitiser.prototype.isRouteId = /**
4717
- * @return {?}
4718
- */
4719
- function () {
4720
- return this.parameterDef.isRouteId;
4721
- };
4722
- Object.defineProperty(Sanitiser.prototype, "valueChanged", {
4723
- get: /**
4724
- * @return {?}
4725
- */
4726
- function () {
4727
- return !___default__default.isNil(this.initialValue) && this.hasChanged(this.initialValue, this.sanitisedValue);
4728
- },
4729
- enumerable: true,
4730
- configurable: true
4731
- });
4732
- Object.defineProperty(Sanitiser.prototype, "sanitisedValue", {
4733
- get: /**
4734
- * @return {?}
4735
- */
4736
- function () {
4737
- return this._sanitisedValue;
4738
- },
4739
- enumerable: true,
4740
- configurable: true
4741
- });
4742
- /**
4743
- * @protected
4744
- * @param {?} snapshot
4745
- * @return {?}
4746
- */
4747
- Sanitiser.prototype.readFrom = /**
4748
- * @protected
4749
- * @param {?} snapshot
4750
- * @return {?}
4751
- */
4752
- function (snapshot) {
4753
- return pectin.lang.abstractMethod(this.constructor);
4754
- };
4755
- /**
4756
- * @protected
4757
- * @param {?} initialValue
4758
- * @param {?} sanitisedValue
4759
- * @return {?}
4760
- */
4761
- Sanitiser.prototype.hasChanged = /**
4762
- * @protected
4763
- * @param {?} initialValue
4764
- * @param {?} sanitisedValue
4765
- * @return {?}
4766
- */
4767
- function (initialValue, sanitisedValue) {
4768
- return pectin.lang.abstractMethod(this.constructor);
4769
- };
4770
- /**
4771
- * @param {?} dest
4772
- * @return {?}
4773
- */
4774
- Sanitiser.prototype.injectRouteParam = /**
4775
- * @param {?} dest
4776
- * @return {?}
4777
- */
4778
- function (dest) {
4779
- pectin.lang.abstractMethod(this.constructor);
4780
- };
4781
- /**
4782
- * @return {?}
4783
- */
4784
- Sanitiser.prototype.sanitize = /**
4785
- * @return {?}
4786
- */
4787
- function () {
4788
- return __awaiter(this, void 0, void 0, function () {
4789
- var _a;
4790
- return __generator(this, function (_b) {
4791
- switch (_b.label) {
4792
- case 0:
4793
- if (!this.sanitiser) return [3 /*break*/, 2];
4794
- this.initialValue = this.readFrom(this.snapshot);
4795
- _a = this;
4796
- return [4 /*yield*/, this.sanitiser.sanitise(null, this.initialValue)];
4797
- case 1:
4798
- _a._sanitisedValue = _b.sent();
4799
- if (this.initialValue !== this._sanitisedValue) {
4800
- return [2 /*return*/, false];
4801
- }
4802
- _b.label = 2;
4803
- case 2: return [2 /*return*/, true];
4804
- }
4805
- });
4806
- });
4807
- };
4808
- return Sanitiser;
4809
- }());
4810
- if (false) {
4811
- /**
4812
- * @type {?}
4813
- * @private
4814
- */
4815
- exports.Sanitiser.prototype.initialValue;
4816
- /**
4817
- * @type {?}
4818
- * @private
4819
- */
4820
- exports.Sanitiser.prototype._sanitisedValue;
4821
- /** @type {?} */
4822
- exports.Sanitiser.prototype.parameterDef;
4823
- /** @type {?} */
4824
- exports.Sanitiser.prototype.snapshot;
4825
- /** @type {?} */
4826
- exports.Sanitiser.prototype.sanitiser;
4827
- }
4828
- var RouteParameterSanitiser = /** @class */ (function () {
4829
- function RouteParameterSanitiser(parameterDefs, snapshot, injector) {
4830
- var _this = this;
4831
- this.parameterDefs = parameterDefs;
4832
- this.snapshot = snapshot;
4833
- this.injector = injector;
4834
- this.parameterSanitisers = [];
4835
- /** @type {?} */
4836
- var sanitisers = parameterDefs.map((/**
4837
- * @param {?} def
4838
- * @return {?}
4839
- */
4840
- function (def) {
4841
- return def.isArray ?
4842
- new exports.Sanitiser.Array(def, snapshot, _this.getSanitiser(def)) :
4843
- new exports.Sanitiser.Value(def, snapshot, _this.getSanitiser(def));
4844
- }));
4845
- this.routeIdSanitiser = sanitisers.find((/**
4846
- * @param {?} p
4847
- * @return {?}
4848
- */
4849
- function (p) { return p.isRouteId(); }));
4850
- this.parameterSanitisers = sanitisers.filter((/**
4851
- * @param {?} p
4852
- * @return {?}
4853
- */
4854
- function (p) { return !p.isRouteId(); }));
4855
- }
4856
- /**
4857
- * @return {?}
4858
- */
4859
- RouteParameterSanitiser.prototype.sanitise = /**
4860
- * @return {?}
4861
- */
4862
- function () {
4863
- return __awaiter(this, void 0, void 0, function () {
4864
- var e_1, _a, _b, _c, sanitiser, e_1_1;
4865
- return __generator(this, function (_d) {
4866
- switch (_d.label) {
4867
- case 0:
4868
- if (!this.routeIdSanitiser) return [3 /*break*/, 2];
4869
- return [4 /*yield*/, this.routeIdSanitiser.sanitize()];
4870
- case 1:
4871
- _d.sent();
4872
- if (this.routeIdSanitiser.valueChanged) {
4873
- // if the route id isn't ok we redirect immediately as the query params may need to be sanitised in the
4874
- // context of the route id.
4875
- return [2 /*return*/, false];
4876
- }
4877
- _d.label = 2;
4878
- case 2:
4879
- _d.trys.push([2, 7, 8, 9]);
4880
- _b = __values(this.parameterSanitisers), _c = _b.next();
4881
- _d.label = 3;
4882
- case 3:
4883
- if (!!_c.done) return [3 /*break*/, 6];
4884
- sanitiser = _c.value;
4885
- return [4 /*yield*/, sanitiser.sanitize()];
4886
- case 4:
4887
- _d.sent();
4888
- _d.label = 5;
4889
- case 5:
4890
- _c = _b.next();
4891
- return [3 /*break*/, 3];
4892
- case 6: return [3 /*break*/, 9];
4893
- case 7:
4894
- e_1_1 = _d.sent();
4895
- e_1 = { error: e_1_1 };
4896
- return [3 /*break*/, 9];
4897
- case 8:
4898
- try {
4899
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
4900
- }
4901
- finally { if (e_1) throw e_1.error; }
4902
- return [7 /*endfinally*/];
4903
- case 9: return [2 /*return*/, !this.parameterSanitisers.find((/**
4904
- * @param {?} s
4905
- * @return {?}
4906
- */
4907
- function (s) { return s.valueChanged; }))];
4908
- }
4909
- });
4910
- });
4911
- };
4912
- /**
4913
- * @private
4914
- * @template T, S
4915
- * @param {?} def
4916
- * @return {?}
4917
- */
4918
- RouteParameterSanitiser.prototype.getSanitiser = /**
4919
- * @private
4920
- * @template T, S
4921
- * @param {?} def
4922
- * @return {?}
4923
- */
4924
- function (def) {
4925
- return def.getSanitiser(this.injector);
4926
- };
4927
- /**
4928
- * @return {?}
4929
- */
4930
- RouteParameterSanitiser.prototype.routeIdHasChanged = /**
4931
- * @return {?}
4932
- */
4933
- function () {
4934
- pectin.assert.isTruthy(this.parameterSanitisers.length !== 0);
4935
- return this.routeIdSanitiser && this.routeIdSanitiser.valueChanged;
4936
- };
4937
- // @Trace()
4938
- // @Trace()
4939
- /**
4940
- * @return {?}
4941
- */
4942
- RouteParameterSanitiser.prototype.getRedirectParams =
4943
- // @Trace()
4944
- /**
4945
- * @return {?}
4946
- */
4947
- function () {
4948
- if (this.routeIdHasChanged()) {
4949
- return [this.routeIdSanitiser.sanitisedValue];
4950
- }
4951
- else {
4952
- /** @type {?} */
4953
- var routeParams_1 = {};
4954
- this.parameterSanitisers.forEach((/**
4955
- * @param {?} s
4956
- * @return {?}
4957
- */
4958
- function (s) { return s.injectRouteParam(routeParams_1); }));
4959
- return [routeParams_1];
4960
- }
4961
- };
4962
- /**
4963
- * @private
4964
- * @template S
4965
- * @param {?} value
4966
- * @return {?}
4967
- */
4968
- RouteParameterSanitiser.prototype.isSanitiserContructor = /**
4969
- * @private
4970
- * @template S
4971
- * @param {?} value
4972
- * @return {?}
4973
- */
4974
- function (value) {
4975
- return ___default__default.isFunction(value) && pectin.lang.constructorChain((/** @type {?} */ ((/** @type {?} */ (value))))).includes(exports.Sanitiser);
4976
- };
4977
- __decorate([
4978
- src.Memoize(),
4979
- __metadata("design:type", Function),
4980
- __metadata("design:paramtypes", [exports.ParameterDefinition]),
4981
- __metadata("design:returntype", Object)
4982
- ], RouteParameterSanitiser.prototype, "getSanitiser", null);
4983
- return RouteParameterSanitiser;
4984
- }());
4985
- if (false) {
4986
- /**
4987
- * @type {?}
4988
- * @private
4989
- */
4990
- RouteParameterSanitiser.prototype.routeIdSanitiser;
4991
- /**
4992
- * @type {?}
4993
- * @private
4994
- */
4995
- RouteParameterSanitiser.prototype.parameterSanitisers;
4996
- /** @type {?} */
4997
- RouteParameterSanitiser.prototype.parameterDefs;
4998
- /** @type {?} */
4999
- RouteParameterSanitiser.prototype.snapshot;
5000
- /** @type {?} */
5001
- RouteParameterSanitiser.prototype.injector;
5002
- }
5003
- (function (Sanitiser) {
5004
- /**
5005
- * @template T
5006
- */
5007
- var /**
5008
- * @template T
5009
- */
5010
- Value = /** @class */ (function (_super) {
5011
- __extends(Value, _super);
5012
- function Value() {
5013
- return _super !== null && _super.apply(this, arguments) || this;
5014
- }
5015
- /**
5016
- * @param {?} snapshot
5017
- * @return {?}
5018
- */
5019
- Value.prototype.readFrom = /**
5020
- * @param {?} snapshot
5021
- * @return {?}
5022
- */
5023
- function (snapshot) {
5024
- /** @type {?} */
5025
- var rawValue = snapshot.paramMap.get(this.parameterDef.name);
5026
- return this.parameterDef.type.parse(rawValue);
5027
- };
5028
- /**
5029
- * @protected
5030
- * @param {?} initialValue
5031
- * @param {?} sanitisedValue
5032
- * @return {?}
5033
- */
5034
- Value.prototype.hasChanged = /**
5035
- * @protected
5036
- * @param {?} initialValue
5037
- * @param {?} sanitisedValue
5038
- * @return {?}
5039
- */
5040
- function (initialValue, sanitisedValue) {
5041
- return initialValue !== sanitisedValue;
5042
- };
5043
- /**
5044
- * @param {?} dest
5045
- * @return {?}
5046
- */
5047
- Value.prototype.injectRouteParam = /**
5048
- * @param {?} dest
5049
- * @return {?}
5050
- */
5051
- function (dest) {
5052
- dest[this.parameterDef.name] = this.parameterDef.type.format(this.sanitisedValue);
5053
- };
5054
- return Value;
5055
- }(Sanitiser));
5056
- Sanitiser.Value = Value;
5057
- /**
5058
- * @template T
5059
- */
5060
- var /**
5061
- * @template T
5062
- */
5063
- Array = /** @class */ (function (_super) {
5064
- __extends(Array, _super);
5065
- function Array() {
5066
- return _super !== null && _super.apply(this, arguments) || this;
5067
- }
5068
- /**
5069
- * @param {?} snapshot
5070
- * @return {?}
5071
- */
5072
- Array.prototype.readFrom = /**
5073
- * @param {?} snapshot
5074
- * @return {?}
5075
- */
5076
- function (snapshot) {
5077
- var _this = this;
5078
- /** @type {?} */
5079
- var rawValues = snapshot.paramMap.getAll(this.parameterDef.name);
5080
- return rawValues.map((/**
5081
- * @param {?} value
5082
- * @return {?}
5083
- */
5084
- function (value) { return _this.parameterDef.type.parse(value); }));
5085
- };
5086
- /**
5087
- * @protected
5088
- * @param {?} initialValue
5089
- * @param {?} sanitisedValue
5090
- * @return {?}
5091
- */
5092
- Array.prototype.hasChanged = /**
5093
- * @protected
5094
- * @param {?} initialValue
5095
- * @param {?} sanitisedValue
5096
- * @return {?}
5097
- */
5098
- function (initialValue, sanitisedValue) {
5099
- return initialValue !== sanitisedValue;
5100
- };
5101
- /**
5102
- * @param {?} dest
5103
- * @return {?}
5104
- */
5105
- Array.prototype.injectRouteParam = /**
5106
- * @param {?} dest
5107
- * @return {?}
5108
- */
5109
- function (dest) {
5110
- var _this = this;
5111
- dest[this.parameterDef.name] = this.sanitisedValue.map((/**
5112
- * @param {?} v
5113
- * @return {?}
5114
- */
5115
- function (v) { return _this.parameterDef.type.format(v); }));
5116
- };
5117
- return Array;
5118
- }(Sanitiser));
5119
- Sanitiser.Array = Array;
5120
- })(exports.Sanitiser || (exports.Sanitiser = {}));
5121
-
5122
4766
  exports.ACTIVITY_DATA = ACTIVITY_DATA;
5123
4767
  exports.AbstractActivity = AbstractActivity;
5124
4768
  exports.AbstractInputComponent = AbstractInputComponent;
@@ -5157,7 +4801,6 @@
5157
4801
  exports.RouteId = RouteId;
5158
4802
  exports.RouteParameter = RouteParameter;
5159
4803
  exports.RouteParameterList = RouteParameterList;
5160
- exports.RouteParameterSanitiser = RouteParameterSanitiser;
5161
4804
  exports.SelectInputComponent = SelectInputComponent;
5162
4805
  exports.StringInputComponent = StringInputComponent;
5163
4806
  exports.TabbedPlaceNavigationComponent = TabbedPlaceNavigationComponent;