rails-angularjs2 2.0.0.pre.alpha.28 → 2.0.0.pre.alpha.30

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.
@@ -4,17 +4,19 @@ System.register("angular2/src/router/instruction", ["angular2/src/facade/collect
4
4
  var __moduleName = "angular2/src/router/instruction";
5
5
  var StringMapWrapper,
6
6
  isPresent,
7
+ isBlank,
7
8
  normalizeBlank,
8
9
  RouteParams,
9
10
  Instruction;
10
11
  function shouldReuseComponent(instr1, instr2) {
11
- return instr1.component == instr2.component && StringMapWrapper.equals(instr1.params, instr2.params);
12
+ return instr1.component == instr2.component && StringMapWrapper.equals(instr1.params(), instr2.params());
12
13
  }
13
14
  return {
14
15
  setters: [function($__m) {
15
16
  StringMapWrapper = $__m.StringMapWrapper;
16
17
  }, function($__m) {
17
18
  isPresent = $__m.isPresent;
19
+ isBlank = $__m.isBlank;
18
20
  normalizeBlank = $__m.normalizeBlank;
19
21
  }],
20
22
  execute: function() {
@@ -28,17 +30,15 @@ System.register("angular2/src/router/instruction", ["angular2/src/facade/collect
28
30
  }());
29
31
  $__export("RouteParams", RouteParams);
30
32
  Instruction = (function() {
31
- function Instruction() {
32
- var $__1 = arguments[0] !== (void 0) ? arguments[0] : {},
33
- params = $__1.params,
34
- component = $__1.component,
35
- child = $__1.child,
36
- matchedUrl = $__1.matchedUrl,
37
- parentSpecificity = $__1.parentSpecificity;
33
+ function Instruction(component, capturedUrl, _recognizer) {
34
+ var child = arguments[3] !== (void 0) ? arguments[3] : null;
35
+ this.component = component;
36
+ this.capturedUrl = capturedUrl;
37
+ this._recognizer = _recognizer;
38
+ this.child = child;
38
39
  this.reuse = false;
39
- this.capturedUrl = matchedUrl;
40
- this.accumulatedUrl = matchedUrl;
41
- this.specificity = parentSpecificity;
40
+ this.accumulatedUrl = capturedUrl;
41
+ this.specificity = _recognizer.specificity;
42
42
  if (isPresent(child)) {
43
43
  this.child = child;
44
44
  this.specificity += child.specificity;
@@ -46,13 +46,15 @@ System.register("angular2/src/router/instruction", ["angular2/src/facade/collect
46
46
  if (isPresent(childUrl)) {
47
47
  this.accumulatedUrl += childUrl;
48
48
  }
49
- } else {
50
- this.child = null;
51
49
  }
52
- this.component = component;
53
- this.params = params;
54
50
  }
55
51
  return ($traceurRuntime.createClass)(Instruction, {
52
+ params: function() {
53
+ if (isBlank(this._params)) {
54
+ this._params = this._recognizer.parseParams(this.capturedUrl);
55
+ }
56
+ return this._params;
57
+ },
56
58
  hasChild: function() {
57
59
  return isPresent(this.child);
58
60
  },
@@ -134,6 +136,62 @@ System.register("angular2/src/router/url", ["angular2/src/facade/lang"], functio
134
136
  };
135
137
  });
136
138
 
139
+ System.register("angular2/src/router/async_route_handler", ["angular2/src/facade/lang"], function($__export) {
140
+ "use strict";
141
+ var __moduleName = "angular2/src/router/async_route_handler";
142
+ var isPresent,
143
+ AsyncRouteHandler;
144
+ return {
145
+ setters: [function($__m) {
146
+ isPresent = $__m.isPresent;
147
+ }],
148
+ execute: function() {
149
+ AsyncRouteHandler = (function() {
150
+ function AsyncRouteHandler(_loader) {
151
+ this._loader = _loader;
152
+ this._resolvedComponent = null;
153
+ }
154
+ return ($traceurRuntime.createClass)(AsyncRouteHandler, {resolveComponentType: function() {
155
+ var $__0 = this;
156
+ if (isPresent(this._resolvedComponent)) {
157
+ return this._resolvedComponent;
158
+ }
159
+ return this._resolvedComponent = this._loader().then((function(componentType) {
160
+ $__0.componentType = componentType;
161
+ return componentType;
162
+ }));
163
+ }}, {});
164
+ }());
165
+ $__export("AsyncRouteHandler", AsyncRouteHandler);
166
+ }
167
+ };
168
+ });
169
+
170
+ System.register("angular2/src/router/sync_route_handler", ["angular2/src/facade/async"], function($__export) {
171
+ "use strict";
172
+ var __moduleName = "angular2/src/router/sync_route_handler";
173
+ var PromiseWrapper,
174
+ SyncRouteHandler;
175
+ return {
176
+ setters: [function($__m) {
177
+ PromiseWrapper = $__m.PromiseWrapper;
178
+ }],
179
+ execute: function() {
180
+ SyncRouteHandler = (function() {
181
+ function SyncRouteHandler(componentType) {
182
+ this.componentType = componentType;
183
+ this._resolvedComponent = null;
184
+ this._resolvedComponent = PromiseWrapper.resolve(componentType);
185
+ }
186
+ return ($traceurRuntime.createClass)(SyncRouteHandler, {resolveComponentType: function() {
187
+ return this._resolvedComponent;
188
+ }}, {});
189
+ }());
190
+ $__export("SyncRouteHandler", SyncRouteHandler);
191
+ }
192
+ };
193
+ });
194
+
137
195
  System.register("angular2/src/router/route_config_impl", ["angular2/src/facade/lang"], function($__export) {
138
196
  "use strict";
139
197
  var __moduleName = "angular2/src/router/route_config_impl";
@@ -324,38 +382,63 @@ System.register("angular2/src/router/html5_location_strategy", ["angular2/src/do
324
382
  };
325
383
  });
326
384
 
327
- System.register("angular2/src/router/pipeline", ["angular2/src/facade/async"], function($__export) {
385
+ System.register("angular2/src/router/pipeline", ["angular2/src/facade/async", "angular2/di"], function($__export) {
328
386
  "use strict";
329
387
  var __moduleName = "angular2/src/router/pipeline";
330
- var PromiseWrapper,
388
+ var __decorate,
389
+ __metadata,
390
+ PromiseWrapper,
391
+ Injectable,
331
392
  Pipeline;
332
393
  return {
333
394
  setters: [function($__m) {
334
395
  PromiseWrapper = $__m.PromiseWrapper;
396
+ }, function($__m) {
397
+ Injectable = $__m.Injectable;
335
398
  }],
336
399
  execute: function() {
337
- Pipeline = (function() {
338
- function Pipeline() {
339
- this.steps = [(function(instruction) {
340
- return instruction.router.activateOutlets(instruction);
341
- })];
400
+ __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
401
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
402
+ return Reflect.decorate(decorators, target, key, desc);
403
+ switch (arguments.length) {
404
+ case 2:
405
+ return decorators.reduceRight(function(o, d) {
406
+ return (d && d(o)) || o;
407
+ }, target);
408
+ case 3:
409
+ return decorators.reduceRight(function(o, d) {
410
+ return (d && d(target, key)), void 0;
411
+ }, void 0);
412
+ case 4:
413
+ return decorators.reduceRight(function(o, d) {
414
+ return (d && d(target, key, o)) || o;
415
+ }, desc);
342
416
  }
343
- return ($traceurRuntime.createClass)(Pipeline, {process: function(instruction) {
344
- var steps = this.steps,
345
- currentStep = 0;
346
- function processOne() {
347
- var result = arguments[0] !== (void 0) ? arguments[0] : true;
348
- if (currentStep >= steps.length) {
349
- return PromiseWrapper.resolve(result);
350
- }
351
- var step = steps[currentStep];
352
- currentStep += 1;
353
- return PromiseWrapper.resolve(step(instruction)).then(processOne);
417
+ };
418
+ __metadata = (this && this.__metadata) || function(k, v) {
419
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
420
+ return Reflect.metadata(k, v);
421
+ };
422
+ Pipeline = (($traceurRuntime.createClass)(function() {
423
+ this.steps = [(function(instruction) {
424
+ return instruction.router.activateOutlets(instruction);
425
+ })];
426
+ }, {process: function(instruction) {
427
+ var steps = this.steps,
428
+ currentStep = 0;
429
+ function processOne() {
430
+ var result = arguments[0] !== (void 0) ? arguments[0] : true;
431
+ if (currentStep >= steps.length) {
432
+ return PromiseWrapper.resolve(result);
354
433
  }
355
- return processOne();
356
- }}, {});
357
- }());
434
+ var step = steps[currentStep];
435
+ currentStep += 1;
436
+ return PromiseWrapper.resolve(step(instruction)).then(processOne);
437
+ }
438
+ return processOne();
439
+ }}, {}));
358
440
  $__export("Pipeline", Pipeline);
441
+ $__export("Pipeline", Pipeline = __decorate([Injectable(), __metadata('design:paramtypes', [])], Pipeline));
359
442
  }
360
443
  };
361
444
  });
@@ -519,8 +602,8 @@ System.register("angular2/src/router/path_recognizer", ["angular2/src/facade/lan
519
602
  RegExpWrapper,
520
603
  StringWrapper,
521
604
  isPresent,
605
+ isBlank,
522
606
  BaseException,
523
- normalizeBlank,
524
607
  StringMapWrapper,
525
608
  ListWrapper,
526
609
  IMPLEMENTS,
@@ -533,6 +616,13 @@ System.register("angular2/src/router/path_recognizer", ["angular2/src/facade/lan
533
616
  paramMatcher,
534
617
  wildcardMatcher,
535
618
  PathRecognizer;
619
+ function normalizeString(obj) {
620
+ if (isBlank(obj)) {
621
+ return null;
622
+ } else {
623
+ return obj.toString();
624
+ }
625
+ }
536
626
  function parsePathString(route) {
537
627
  if (StringWrapper.startsWith(route, "/")) {
538
628
  route = StringWrapper.substring(route, 1);
@@ -562,10 +652,10 @@ System.register("angular2/src/router/path_recognizer", ["angular2/src/facade/lan
562
652
  specificity += 100 * (100 - i);
563
653
  }
564
654
  }
565
- return {
566
- segments: results,
567
- specificity: specificity
568
- };
655
+ var result = StringMapWrapper.create();
656
+ StringMapWrapper.set(result, 'segments', results);
657
+ StringMapWrapper.set(result, 'specificity', specificity);
658
+ return result;
569
659
  }
570
660
  function splitBySlash(url) {
571
661
  return url.split('/');
@@ -575,8 +665,8 @@ System.register("angular2/src/router/path_recognizer", ["angular2/src/facade/lan
575
665
  RegExpWrapper = $__m.RegExpWrapper;
576
666
  StringWrapper = $__m.StringWrapper;
577
667
  isPresent = $__m.isPresent;
668
+ isBlank = $__m.isBlank;
578
669
  BaseException = $__m.BaseException;
579
- normalizeBlank = $__m.normalizeBlank;
580
670
  IMPLEMENTS = $__m.IMPLEMENTS;
581
671
  }, function($__m) {
582
672
  StringMapWrapper = $__m.StringMapWrapper;
@@ -620,7 +710,6 @@ System.register("angular2/src/router/path_recognizer", ["angular2/src/facade/lan
620
710
  return '';
621
711
  }}, {}, $__super);
622
712
  }(Segment));
623
- $__export("ContinuationSegment", ContinuationSegment);
624
713
  StaticSegment = (function($__super) {
625
714
  function StaticSegment(string) {
626
715
  $traceurRuntime.superConstructor(StaticSegment).call(this);
@@ -639,7 +728,7 @@ System.register("angular2/src/router/path_recognizer", ["angular2/src/facade/lan
639
728
  if (!StringMapWrapper.contains(params, this.name)) {
640
729
  throw new BaseException(("Route generator for '" + this.name + "' was not included in parameters passed."));
641
730
  }
642
- return normalizeBlank(StringMapWrapper.get(params, this.name));
731
+ return normalizeString(StringMapWrapper.get(params, this.name));
643
732
  }}, {}));
644
733
  DynamicSegment = __decorate([IMPLEMENTS(Segment), __metadata('design:paramtypes', [String])], DynamicSegment);
645
734
  StarSegment = (function() {
@@ -648,7 +737,7 @@ System.register("angular2/src/router/path_recognizer", ["angular2/src/facade/lan
648
737
  this.regex = "(.+)";
649
738
  }
650
739
  return ($traceurRuntime.createClass)(StarSegment, {generate: function(params) {
651
- return normalizeBlank(StringMapWrapper.get(params, this.name));
740
+ return normalizeString(StringMapWrapper.get(params, this.name));
652
741
  }}, {});
653
742
  }());
654
743
  paramMatcher = RegExpWrapper.create("^:([^\/]+)$");
@@ -659,7 +748,6 @@ System.register("angular2/src/router/path_recognizer", ["angular2/src/facade/lan
659
748
  this.path = path;
660
749
  this.handler = handler;
661
750
  this.terminal = true;
662
- this.segments = [];
663
751
  var parsed = parsePathString(path);
664
752
  var specificity = parsed['specificity'];
665
753
  var segments = parsed['segments'];
@@ -697,8 +785,11 @@ System.register("angular2/src/router/path_recognizer", ["angular2/src/facade/lan
697
785
  },
698
786
  generate: function(params) {
699
787
  return ListWrapper.join(ListWrapper.map(this.segments, (function(segment) {
700
- return '/' + segment.generate(params);
701
- })), '');
788
+ return segment.generate(params);
789
+ })), '/');
790
+ },
791
+ resolveComponentType: function() {
792
+ return this.handler.resolveComponentType();
702
793
  }
703
794
  }, {});
704
795
  }());
@@ -713,36 +804,58 @@ System.register("angular2/src/router/router", ["angular2/src/facade/async", "ang
713
804
  var PromiseWrapper,
714
805
  EventEmitter,
715
806
  ObservableWrapper,
716
- List,
807
+ ListWrapper,
717
808
  isBlank,
809
+ isString,
810
+ StringWrapper,
718
811
  isPresent,
812
+ isArray,
813
+ BaseException,
814
+ _resolveToTrue,
815
+ _resolveToFalse,
719
816
  Router,
720
817
  RootRouter,
721
- ChildRouter;
818
+ ChildRouter,
819
+ SLASH;
820
+ function splitAndFlattenLinkParams(linkParams) {
821
+ return ListWrapper.reduce(linkParams, (function(accumulation, item) {
822
+ if (isString(item)) {
823
+ return ListWrapper.concat(accumulation, StringWrapper.split(item, SLASH));
824
+ }
825
+ accumulation.push(item);
826
+ return accumulation;
827
+ }), []);
828
+ }
722
829
  return {
723
830
  setters: [function($__m) {
724
831
  PromiseWrapper = $__m.PromiseWrapper;
725
832
  EventEmitter = $__m.EventEmitter;
726
833
  ObservableWrapper = $__m.ObservableWrapper;
727
834
  }, function($__m) {
728
- List = $__m.List;
835
+ ListWrapper = $__m.ListWrapper;
729
836
  }, function($__m) {
730
837
  isBlank = $__m.isBlank;
838
+ isString = $__m.isString;
839
+ StringWrapper = $__m.StringWrapper;
731
840
  isPresent = $__m.isPresent;
841
+ isArray = $__m.isArray;
842
+ BaseException = $__m.BaseException;
732
843
  }],
733
844
  execute: function() {
845
+ _resolveToTrue = PromiseWrapper.resolve(true);
846
+ _resolveToFalse = PromiseWrapper.resolve(false);
734
847
  Router = (function() {
735
- function Router(_registry, _pipeline, parent, hostComponent) {
736
- this._registry = _registry;
848
+ function Router(registry, _pipeline, parent, hostComponent) {
849
+ this.registry = registry;
737
850
  this._pipeline = _pipeline;
738
851
  this.parent = parent;
739
852
  this.hostComponent = hostComponent;
740
853
  this.navigating = false;
741
854
  this.previousUrl = null;
855
+ this._currentInstruction = null;
856
+ this._currentNavigation = _resolveToTrue;
742
857
  this._outlet = null;
743
858
  this._subject = new EventEmitter();
744
- this._currentInstruction = null;
745
- this._currentNavigation = PromiseWrapper.resolve(true);
746
859
  }
747
860
  return ($traceurRuntime.createClass)(Router, {
748
861
  childRouter: function(hostComponent) {
@@ -753,16 +866,16 @@ System.register("angular2/src/router/router", ["angular2/src/facade/async", "ang
753
866
  if (isPresent(this._currentInstruction)) {
754
867
  return outlet.activate(this._currentInstruction);
755
868
  }
756
- return PromiseWrapper.resolve(true);
869
+ return _resolveToTrue;
757
870
  },
758
871
  config: function(config) {
759
872
  var $__0 = this;
760
- if (config instanceof List) {
873
+ if (isArray(config)) {
761
874
  config.forEach((function(configObject) {
762
- $__0._registry.config($__0.hostComponent, configObject);
875
+ $__0.registry.config($__0.hostComponent, configObject);
763
876
  }));
764
877
  } else {
765
- this._registry.config(this.hostComponent, config);
878
+ this.registry.config(this.hostComponent, config);
766
879
  }
767
880
  return this.renavigate();
768
881
  },
@@ -774,7 +887,7 @@ System.register("angular2/src/router/router", ["angular2/src/facade/async", "ang
774
887
  this.lastNavigationAttempt = url;
775
888
  return this._currentNavigation = this.recognize(url).then((function(matchedInstruction) {
776
889
  if (isBlank(matchedInstruction)) {
777
- return PromiseWrapper.resolve(false);
890
+ return _resolveToFalse;
778
891
  }
779
892
  if (isPresent($__0._currentInstruction)) {
780
893
  matchedInstruction.reuseComponentsFrom($__0._currentInstruction);
@@ -804,16 +917,16 @@ System.register("angular2/src/router/router", ["angular2/src/facade/async", "ang
804
917
  if (isPresent(this._outlet)) {
805
918
  return this._outlet.activate(instruction);
806
919
  }
807
- return PromiseWrapper.resolve(true);
920
+ return _resolveToTrue;
808
921
  },
809
922
  deactivate: function() {
810
923
  if (isPresent(this._outlet)) {
811
924
  return this._outlet.deactivate();
812
925
  }
813
- return PromiseWrapper.resolve(true);
926
+ return _resolveToTrue;
814
927
  },
815
928
  recognize: function(url) {
816
- return this._registry.recognize(url, this.hostComponent);
929
+ return this.registry.recognize(url, this.hostComponent);
817
930
  },
818
931
  renavigate: function() {
819
932
  var destination = isBlank(this.previousUrl) ? this.lastNavigationAttempt : this.previousUrl;
@@ -822,8 +935,39 @@ System.register("angular2/src/router/router", ["angular2/src/facade/async", "ang
822
935
  }
823
936
  return this.navigate(destination);
824
937
  },
825
- generate: function(name, params) {
826
- return this._registry.generate(name, params, this.hostComponent);
938
+ generate: function(linkParams) {
939
+ var normalizedLinkParams = splitAndFlattenLinkParams(linkParams);
940
+ var first = ListWrapper.first(normalizedLinkParams);
941
+ var rest = ListWrapper.slice(normalizedLinkParams, 1);
942
+ var router = this;
943
+ if (first == '') {
944
+ while (isPresent(router.parent)) {
945
+ router = router.parent;
946
+ }
947
+ } else if (first == '..') {
948
+ router = router.parent;
949
+ while (ListWrapper.first(rest) == '..') {
950
+ rest = ListWrapper.slice(rest, 1);
951
+ router = router.parent;
952
+ if (isBlank(router)) {
953
+ throw new BaseException(("Link \"" + ListWrapper.toJSON(linkParams) + "\" has too many \"../\" segments."));
954
+ }
955
+ }
956
+ } else if (first != '.') {
957
+ throw new BaseException(("Link \"" + ListWrapper.toJSON(linkParams) + "\" must start with \"/\", \"./\", or \"../\""));
958
+ }
959
+ if (rest[rest.length - 1] == '') {
960
+ ListWrapper.removeLast(rest);
961
+ }
962
+ if (rest.length < 1) {
963
+ var msg = ("Link \"" + ListWrapper.toJSON(linkParams) + "\" must include a route name.");
964
+ throw new BaseException(msg);
965
+ }
966
+ var url = '';
967
+ if (isPresent(router.parent) && isPresent(router.parent._currentInstruction)) {
968
+ url = router.parent._currentInstruction.capturedUrl;
969
+ }
970
+ return url + '/' + this.registry.generate(rest, router.hostComponent);
827
971
  }
828
972
  }, {});
829
973
  }());
@@ -836,7 +980,7 @@ System.register("angular2/src/router/router", ["angular2/src/facade/async", "ang
836
980
  this._location.subscribe(($__0 = this, function(change) {
837
981
  return $__0.navigate(change['url']);
838
982
  }));
839
- this._registry.configFromComponent(hostComponent);
983
+ this.registry.configFromComponent(hostComponent);
840
984
  this.navigate(location.path());
841
985
  }
842
986
  return ($traceurRuntime.createClass)(RootRouter, {commit: function(instruction) {
@@ -849,46 +993,34 @@ System.register("angular2/src/router/router", ["angular2/src/facade/async", "ang
849
993
  $__export("RootRouter", RootRouter);
850
994
  ChildRouter = (function($__super) {
851
995
  function ChildRouter(parent, hostComponent) {
852
- $traceurRuntime.superConstructor(ChildRouter).call(this, parent._registry, parent._pipeline, parent, hostComponent);
996
+ $traceurRuntime.superConstructor(ChildRouter).call(this, parent.registry, parent._pipeline, parent, hostComponent);
853
997
  this.parent = parent;
854
998
  }
855
- return ($traceurRuntime.createClass)(ChildRouter, {}, {}, $__super);
999
+ return ($traceurRuntime.createClass)(ChildRouter, {navigate: function(url) {
1000
+ return this.parent.navigate(url);
1001
+ }}, {}, $__super);
856
1002
  }(Router));
1003
+ SLASH = new RegExp('/');
857
1004
  }
858
1005
  };
859
1006
  });
860
1007
 
861
- System.register("angular2/src/router/router_link", ["angular2/src/core/annotations/annotations", "angular2/src/core/annotations/decorators", "angular2/core", "angular2/src/facade/collection", "angular2/src/facade/lang", "angular2/src/router/router", "angular2/src/router/location", "angular2/src/render/api"], function($__export) {
1008
+ System.register("angular2/src/router/router_link", ["angular2/src/core/annotations/decorators", "angular2/src/router/router", "angular2/src/router/location"], function($__export) {
862
1009
  "use strict";
863
1010
  var __moduleName = "angular2/src/router/router_link";
864
1011
  var __decorate,
865
1012
  __metadata,
866
- onAllChangesDone,
867
1013
  Directive,
868
- ElementRef,
869
- StringMapWrapper,
870
- isPresent,
871
1014
  Router,
872
1015
  Location,
873
- Renderer,
874
1016
  RouterLink;
875
1017
  return {
876
1018
  setters: [function($__m) {
877
- onAllChangesDone = $__m.onAllChangesDone;
878
- }, function($__m) {
879
1019
  Directive = $__m.Directive;
880
- }, function($__m) {
881
- ElementRef = $__m.ElementRef;
882
- }, function($__m) {
883
- StringMapWrapper = $__m.StringMapWrapper;
884
- }, function($__m) {
885
- isPresent = $__m.isPresent;
886
1020
  }, function($__m) {
887
1021
  Router = $__m.Router;
888
1022
  }, function($__m) {
889
1023
  Location = $__m.Location;
890
- }, function($__m) {
891
- Renderer = $__m.Renderer;
892
1024
  }],
893
1025
  execute: function() {
894
1026
  __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
@@ -913,72 +1045,91 @@ System.register("angular2/src/router/router_link", ["angular2/src/core/annotatio
913
1045
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
914
1046
  return Reflect.metadata(k, v);
915
1047
  };
916
- RouterLink = (($traceurRuntime.createClass)(function(_elementRef, _router, _location, _renderer) {
917
- this._elementRef = _elementRef;
1048
+ RouterLink = (($traceurRuntime.createClass)(function(_router, _location) {
918
1049
  this._router = _router;
919
1050
  this._location = _location;
920
- this._renderer = _renderer;
921
- this._params = StringMapWrapper.create();
922
1051
  }, {
923
- set route(changes) {
924
- this._route = changes;
925
- },
926
- set params(changes) {
927
- this._params = changes;
1052
+ set routeParams(changes) {
1053
+ this._routeParams = changes;
1054
+ this._navigationHref = this._router.generate(this._routeParams);
1055
+ this.visibleHref = this._location.normalizeAbsolutely(this._navigationHref);
928
1056
  },
929
1057
  onClick: function() {
930
1058
  this._router.navigate(this._navigationHref);
931
1059
  return false;
932
- },
933
- onAllChangesDone: function() {
934
- if (isPresent(this._route) && isPresent(this._params)) {
935
- this._navigationHref = this._router.generate(this._route, this._params);
936
- this._visibleHref = this._location.normalizeAbsolutely(this._navigationHref);
937
- this._renderer.setElementAttribute(this._elementRef, 'href', this._visibleHref);
938
- }
939
1060
  }
940
1061
  }, {}));
941
1062
  $__export("RouterLink", RouterLink);
942
1063
  $__export("RouterLink", RouterLink = __decorate([Directive({
943
1064
  selector: '[router-link]',
944
- properties: ['route: routerLink', 'params: routerParams'],
945
- lifecycle: [onAllChangesDone],
946
- host: {'(^click)': 'onClick()'}
947
- }), __metadata('design:paramtypes', [ElementRef, Router, Location, Renderer])], RouterLink));
1065
+ properties: ['routeParams: routerLink'],
1066
+ host: {
1067
+ '(^click)': 'onClick()',
1068
+ '[attr.href]': 'visibleHref'
1069
+ }
1070
+ }), __metadata('design:paramtypes', [Router, Location])], RouterLink));
948
1071
  }
949
1072
  };
950
1073
  });
951
1074
 
952
- System.register("angular2/src/router/route_recognizer", ["angular2/src/facade/lang", "angular2/src/facade/collection", "angular2/src/router/path_recognizer"], function($__export) {
1075
+ System.register("angular2/src/router/route_recognizer", ["angular2/src/facade/lang", "angular2/src/facade/collection", "angular2/src/router/path_recognizer", "angular2/src/router/async_route_handler", "angular2/src/router/sync_route_handler"], function($__export) {
953
1076
  "use strict";
954
1077
  var __moduleName = "angular2/src/router/route_recognizer";
955
1078
  var RegExpWrapper,
956
- StringWrapper,
1079
+ isBlank,
957
1080
  isPresent,
1081
+ isType,
1082
+ isStringMap,
958
1083
  BaseException,
959
1084
  Map,
960
1085
  MapWrapper,
961
1086
  PathRecognizer,
1087
+ AsyncRouteHandler,
1088
+ SyncRouteHandler,
962
1089
  RouteRecognizer,
963
1090
  RouteMatch;
1091
+ function configObjToHandler(config) {
1092
+ if (isType(config)) {
1093
+ return new SyncRouteHandler(config);
1094
+ } else if (isStringMap(config)) {
1095
+ if (isBlank(config['type'])) {
1096
+ throw new BaseException("Component declaration when provided as a map should include a 'type' property");
1097
+ }
1098
+ var componentType = config['type'];
1099
+ if (componentType == 'constructor') {
1100
+ return new SyncRouteHandler(config['constructor']);
1101
+ } else if (componentType == 'loader') {
1102
+ return new AsyncRouteHandler(config['loader']);
1103
+ } else {
1104
+ throw new BaseException("oops");
1105
+ }
1106
+ }
1107
+ throw new BaseException(("Unexpected component \"" + config + "\"."));
1108
+ }
964
1109
  return {
965
1110
  setters: [function($__m) {
966
1111
  RegExpWrapper = $__m.RegExpWrapper;
967
- StringWrapper = $__m.StringWrapper;
1112
+ isBlank = $__m.isBlank;
968
1113
  isPresent = $__m.isPresent;
1114
+ isType = $__m.isType;
1115
+ isStringMap = $__m.isStringMap;
969
1116
  BaseException = $__m.BaseException;
970
1117
  }, function($__m) {
971
1118
  Map = $__m.Map;
972
1119
  MapWrapper = $__m.MapWrapper;
973
1120
  }, function($__m) {
974
1121
  PathRecognizer = $__m.PathRecognizer;
1122
+ }, function($__m) {
1123
+ AsyncRouteHandler = $__m.AsyncRouteHandler;
1124
+ }, function($__m) {
1125
+ SyncRouteHandler = $__m.SyncRouteHandler;
975
1126
  }],
976
1127
  execute: function() {
977
1128
  RouteRecognizer = (function() {
978
1129
  function RouteRecognizer() {
979
1130
  this.names = new Map();
980
- this.matchers = new Map();
981
1131
  this.redirects = new Map();
1132
+ this.matchers = new Map();
982
1133
  }
983
1134
  return ($traceurRuntime.createClass)(RouteRecognizer, {
984
1135
  addRedirect: function(path, target) {
@@ -987,8 +1138,9 @@ System.register("angular2/src/router/route_recognizer", ["angular2/src/facade/la
987
1138
  }
988
1139
  this.redirects.set(path, target);
989
1140
  },
990
- addConfig: function(path, handler) {
1141
+ addConfig: function(path, handlerObj) {
991
1142
  var alias = arguments[2] !== (void 0) ? arguments[2] : null;
1143
+ var handler = configObjToHandler(handlerObj['component']);
992
1144
  var recognizer = new PathRecognizer(path, handler);
993
1145
  MapWrapper.forEach(this.matchers, (function(matcher, _) {
994
1146
  if (recognizer.regex.toString() == matcher.regex.toString()) {
@@ -1011,8 +1163,8 @@ System.register("angular2/src/router/route_recognizer", ["angular2/src/facade/la
1011
1163
  if (path == url) {
1012
1164
  url = target;
1013
1165
  }
1014
- } else if (StringWrapper.startsWith(url, path)) {
1015
- url = target + StringWrapper.substring(url, path.length);
1166
+ } else if (url.startsWith(path)) {
1167
+ url = target + url.substring(path.length);
1016
1168
  }
1017
1169
  }));
1018
1170
  MapWrapper.forEach(this.matchers, (function(pathRecognizer, regex) {
@@ -1022,15 +1174,9 @@ System.register("angular2/src/router/route_recognizer", ["angular2/src/facade/la
1022
1174
  var unmatchedUrl = '';
1023
1175
  if (url != '/') {
1024
1176
  matchedUrl = match[0];
1025
- unmatchedUrl = StringWrapper.substring(url, match[0].length);
1177
+ unmatchedUrl = url.substring(match[0].length);
1026
1178
  }
1027
- solutions.push(new RouteMatch({
1028
- specificity: pathRecognizer.specificity,
1029
- handler: pathRecognizer.handler,
1030
- params: pathRecognizer.parseParams(url),
1031
- matchedUrl: matchedUrl,
1032
- unmatchedUrl: unmatchedUrl
1033
- }));
1179
+ solutions.push(new RouteMatch(pathRecognizer, matchedUrl, unmatchedUrl));
1034
1180
  }
1035
1181
  }));
1036
1182
  return solutions;
@@ -1040,36 +1186,39 @@ System.register("angular2/src/router/route_recognizer", ["angular2/src/facade/la
1040
1186
  },
1041
1187
  generate: function(name, params) {
1042
1188
  var pathRecognizer = this.names.get(name);
1043
- return isPresent(pathRecognizer) ? pathRecognizer.generate(params) : null;
1189
+ if (isBlank(pathRecognizer)) {
1190
+ return null;
1191
+ }
1192
+ var url = pathRecognizer.generate(params);
1193
+ return {
1194
+ url: url,
1195
+ 'nextComponent': pathRecognizer.handler.componentType
1196
+ };
1044
1197
  }
1045
1198
  }, {});
1046
1199
  }());
1047
1200
  $__export("RouteRecognizer", RouteRecognizer);
1048
1201
  RouteMatch = (function() {
1049
- function RouteMatch() {
1050
- var $__1 = arguments[0] !== (void 0) ? arguments[0] : {},
1051
- specificity = $__1.specificity,
1052
- handler = $__1.handler,
1053
- params = $__1.params,
1054
- matchedUrl = $__1.matchedUrl,
1055
- unmatchedUrl = $__1.unmatchedUrl;
1056
- this.specificity = specificity;
1057
- this.handler = handler;
1058
- this.params = params;
1202
+ function RouteMatch(recognizer, matchedUrl, unmatchedUrl) {
1203
+ this.recognizer = recognizer;
1059
1204
  this.matchedUrl = matchedUrl;
1060
1205
  this.unmatchedUrl = unmatchedUrl;
1061
1206
  }
1062
- return ($traceurRuntime.createClass)(RouteMatch, {}, {});
1207
+ return ($traceurRuntime.createClass)(RouteMatch, {params: function() {
1208
+ return this.recognizer.parseParams(this.matchedUrl);
1209
+ }}, {});
1063
1210
  }());
1064
1211
  $__export("RouteMatch", RouteMatch);
1065
1212
  }
1066
1213
  };
1067
1214
  });
1068
1215
 
1069
- System.register("angular2/src/router/route_registry", ["angular2/src/router/route_recognizer", "angular2/src/router/instruction", "angular2/src/facade/collection", "angular2/src/facade/async", "angular2/src/facade/lang", "angular2/src/router/route_config_impl", "angular2/src/reflection/reflection"], function($__export) {
1216
+ System.register("angular2/src/router/route_registry", ["angular2/src/router/route_recognizer", "angular2/src/router/instruction", "angular2/src/facade/collection", "angular2/src/facade/async", "angular2/src/facade/lang", "angular2/src/router/route_config_impl", "angular2/src/reflection/reflection", "angular2/di"], function($__export) {
1070
1217
  "use strict";
1071
1218
  var __moduleName = "angular2/src/router/route_registry";
1072
- var RouteRecognizer,
1219
+ var __decorate,
1220
+ __metadata,
1221
+ RouteRecognizer,
1073
1222
  Instruction,
1074
1223
  ListWrapper,
1075
1224
  Map,
@@ -1078,10 +1227,12 @@ System.register("angular2/src/router/route_registry", ["angular2/src/router/rout
1078
1227
  isPresent,
1079
1228
  isBlank,
1080
1229
  isType,
1230
+ isString,
1081
1231
  isStringMap,
1082
1232
  BaseException,
1083
1233
  RouteConfig,
1084
1234
  reflector,
1235
+ Injectable,
1085
1236
  RouteRegistry,
1086
1237
  ALLOWED_TARGETS,
1087
1238
  VALID_COMPONENT_TYPES;
@@ -1118,18 +1269,6 @@ System.register("angular2/src/router/route_registry", ["angular2/src/router/rout
1118
1269
  throw new BaseException("Component declaration should be either a Map or a Type");
1119
1270
  }
1120
1271
  }
1121
- function componentHandlerToComponentType(handler) {
1122
- var componentDeclaration = handler['component'],
1123
- type = componentDeclaration['type'];
1124
- if (type == 'constructor') {
1125
- return PromiseWrapper.resolve(componentDeclaration['constructor']);
1126
- } else if (type == 'loader') {
1127
- var resolverFunction = componentDeclaration['loader'];
1128
- return resolverFunction();
1129
- } else {
1130
- throw new BaseException(("Cannot extract the component type from a '" + type + "' component"));
1131
- }
1132
- }
1133
1272
  function mostSpecific(instructions) {
1134
1273
  var mostSpecificSolution = instructions[0];
1135
1274
  for (var solutionIndex = 1; solutionIndex < instructions.length; solutionIndex++) {
@@ -1169,114 +1308,153 @@ System.register("angular2/src/router/route_registry", ["angular2/src/router/rout
1169
1308
  isPresent = $__m.isPresent;
1170
1309
  isBlank = $__m.isBlank;
1171
1310
  isType = $__m.isType;
1311
+ isString = $__m.isString;
1172
1312
  isStringMap = $__m.isStringMap;
1173
1313
  BaseException = $__m.BaseException;
1174
1314
  }, function($__m) {
1175
1315
  RouteConfig = $__m.RouteConfig;
1176
1316
  }, function($__m) {
1177
1317
  reflector = $__m.reflector;
1318
+ }, function($__m) {
1319
+ Injectable = $__m.Injectable;
1178
1320
  }],
1179
1321
  execute: function() {
1180
- RouteRegistry = (function() {
1181
- function RouteRegistry() {
1182
- this._rules = new Map();
1322
+ __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
1323
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
1324
+ return Reflect.decorate(decorators, target, key, desc);
1325
+ switch (arguments.length) {
1326
+ case 2:
1327
+ return decorators.reduceRight(function(o, d) {
1328
+ return (d && d(o)) || o;
1329
+ }, target);
1330
+ case 3:
1331
+ return decorators.reduceRight(function(o, d) {
1332
+ return (d && d(target, key)), void 0;
1333
+ }, void 0);
1334
+ case 4:
1335
+ return decorators.reduceRight(function(o, d) {
1336
+ return (d && d(target, key, o)) || o;
1337
+ }, desc);
1183
1338
  }
1184
- return ($traceurRuntime.createClass)(RouteRegistry, {
1185
- config: function(parentComponent, config) {
1186
- assertValidConfig(config);
1187
- var recognizer = this._rules.get(parentComponent);
1188
- if (isBlank(recognizer)) {
1189
- recognizer = new RouteRecognizer();
1190
- this._rules.set(parentComponent, recognizer);
1191
- }
1192
- if (StringMapWrapper.contains(config, 'redirectTo')) {
1193
- recognizer.addRedirect(config['path'], config['redirectTo']);
1194
- return ;
1339
+ };
1340
+ __metadata = (this && this.__metadata) || function(k, v) {
1341
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
1342
+ return Reflect.metadata(k, v);
1343
+ };
1344
+ RouteRegistry = (($traceurRuntime.createClass)(function() {
1345
+ this._rules = new Map();
1346
+ }, {
1347
+ config: function(parentComponent, config) {
1348
+ assertValidConfig(config);
1349
+ var recognizer = this._rules.get(parentComponent);
1350
+ if (isBlank(recognizer)) {
1351
+ recognizer = new RouteRecognizer();
1352
+ this._rules.set(parentComponent, recognizer);
1353
+ }
1354
+ if (StringMapWrapper.contains(config, 'redirectTo')) {
1355
+ recognizer.addRedirect(config['path'], config['redirectTo']);
1356
+ return ;
1357
+ }
1358
+ config = StringMapWrapper.merge(config, {'component': normalizeComponentDeclaration(config['component'])});
1359
+ var component = config['component'];
1360
+ var terminal = recognizer.addConfig(config['path'], config, config['as']);
1361
+ if (component['type'] == 'constructor') {
1362
+ if (terminal) {
1363
+ assertTerminalComponent(component['constructor'], config['path']);
1364
+ } else {
1365
+ this.configFromComponent(component['constructor']);
1195
1366
  }
1196
- config = StringMapWrapper.merge(config, {'component': normalizeComponentDeclaration(config['component'])});
1197
- var component = config['component'];
1198
- var terminal = recognizer.addConfig(config['path'], config, config['as']);
1199
- if (component['type'] == 'constructor') {
1200
- if (terminal) {
1201
- assertTerminalComponent(component['constructor'], config['path']);
1202
- } else {
1203
- this.configFromComponent(component['constructor']);
1367
+ }
1368
+ },
1369
+ configFromComponent: function(component) {
1370
+ var $__0 = this;
1371
+ if (!isType(component)) {
1372
+ return ;
1373
+ }
1374
+ if (this._rules.has(component)) {
1375
+ return ;
1376
+ }
1377
+ var annotations = reflector.annotations(component);
1378
+ if (isPresent(annotations)) {
1379
+ for (var i = 0; i < annotations.length; i++) {
1380
+ var annotation = annotations[i];
1381
+ if (annotation instanceof RouteConfig) {
1382
+ ListWrapper.forEach(annotation.configs, (function(config) {
1383
+ return $__0.config(component, config);
1384
+ }));
1204
1385
  }
1205
1386
  }
1206
- },
1207
- configFromComponent: function(component) {
1208
- var $__0 = this;
1209
- if (!isType(component)) {
1210
- return ;
1387
+ }
1388
+ },
1389
+ recognize: function(url, parentComponent) {
1390
+ var $__0 = this;
1391
+ var componentRecognizer = this._rules.get(parentComponent);
1392
+ if (isBlank(componentRecognizer)) {
1393
+ return PromiseWrapper.resolve(null);
1394
+ }
1395
+ var possibleMatches = componentRecognizer.recognize(url);
1396
+ var matchPromises = ListWrapper.map(possibleMatches, (function(candidate) {
1397
+ return $__0._completeRouteMatch(candidate);
1398
+ }));
1399
+ return PromiseWrapper.all(matchPromises).then((function(solutions) {
1400
+ var fullSolutions = ListWrapper.filter(solutions, (function(solution) {
1401
+ return isPresent(solution);
1402
+ }));
1403
+ if (fullSolutions.length > 0) {
1404
+ return mostSpecific(fullSolutions);
1211
1405
  }
1212
- if (this._rules.has(component)) {
1213
- return ;
1406
+ return null;
1407
+ }));
1408
+ },
1409
+ _completeRouteMatch: function(partialMatch) {
1410
+ var $__0 = this;
1411
+ var recognizer = partialMatch.recognizer;
1412
+ var handler = recognizer.handler;
1413
+ return handler.resolveComponentType().then((function(componentType) {
1414
+ $__0.configFromComponent(componentType);
1415
+ if (partialMatch.unmatchedUrl.length == 0) {
1416
+ return new Instruction(componentType, partialMatch.matchedUrl, recognizer);
1214
1417
  }
1215
- var annotations = reflector.annotations(component);
1216
- if (isPresent(annotations)) {
1217
- for (var i = 0; i < annotations.length; i++) {
1218
- var annotation = annotations[i];
1219
- if (annotation instanceof RouteConfig) {
1220
- ListWrapper.forEach(annotation.configs, (function(config) {
1221
- return $__0.config(component, config);
1222
- }));
1223
- }
1418
+ return $__0.recognize(partialMatch.unmatchedUrl, componentType).then((function(childInstruction) {
1419
+ if (isBlank(childInstruction)) {
1420
+ return null;
1421
+ } else {
1422
+ return new Instruction(componentType, partialMatch.matchedUrl, recognizer, childInstruction);
1224
1423
  }
1424
+ }));
1425
+ }));
1426
+ },
1427
+ generate: function(linkParams, parentComponent) {
1428
+ var url = '';
1429
+ var componentCursor = parentComponent;
1430
+ for (var i = 0; i < linkParams.length; i += 1) {
1431
+ var segment = linkParams[i];
1432
+ if (!isString(segment)) {
1433
+ throw new BaseException(("Unexpected segment \"" + segment + "\" in link DSL. Expected a string."));
1434
+ } else if (segment == '' || segment == '.' || segment == '..') {
1435
+ throw new BaseException(("\"" + segment + "/\" is only allowed at the beginning of a link DSL."));
1225
1436
  }
1226
- },
1227
- recognize: function(url, parentComponent) {
1228
- var $__0 = this;
1229
- var componentRecognizer = this._rules.get(parentComponent);
1437
+ var params = null;
1438
+ if (i + 1 < linkParams.length) {
1439
+ var nextSegment = linkParams[i + 1];
1440
+ if (isStringMap(nextSegment)) {
1441
+ params = nextSegment;
1442
+ i += 1;
1443
+ }
1444
+ }
1445
+ var componentRecognizer = this._rules.get(componentCursor);
1230
1446
  if (isBlank(componentRecognizer)) {
1231
- return PromiseWrapper.resolve(null);
1447
+ throw new BaseException(("Could not find route config for \"" + segment + "\"."));
1232
1448
  }
1233
- var possibleMatches = componentRecognizer.recognize(url);
1234
- var matchPromises = ListWrapper.map(possibleMatches, (function(candidate) {
1235
- return $__0._completeRouteMatch(candidate);
1236
- }));
1237
- return PromiseWrapper.all(matchPromises).then((function(solutions) {
1238
- var fullSolutions = ListWrapper.filter(solutions, (function(solution) {
1239
- return isPresent(solution);
1240
- }));
1241
- if (fullSolutions.length > 0) {
1242
- return mostSpecific(fullSolutions);
1243
- }
1244
- return null;
1245
- }));
1246
- },
1247
- _completeRouteMatch: function(candidate) {
1248
- var $__0 = this;
1249
- return componentHandlerToComponentType(candidate.handler).then((function(componentType) {
1250
- $__0.configFromComponent(componentType);
1251
- if (candidate.unmatchedUrl.length == 0) {
1252
- return new Instruction({
1253
- component: componentType,
1254
- params: candidate.params,
1255
- matchedUrl: candidate.matchedUrl,
1256
- parentSpecificity: candidate.specificity
1257
- });
1258
- }
1259
- return $__0.recognize(candidate.unmatchedUrl, componentType).then((function(childInstruction) {
1260
- if (isBlank(childInstruction)) {
1261
- return null;
1262
- }
1263
- return new Instruction({
1264
- component: componentType,
1265
- child: childInstruction,
1266
- params: candidate.params,
1267
- matchedUrl: candidate.matchedUrl,
1268
- parentSpecificity: candidate.specificity
1269
- });
1270
- }));
1271
- }));
1272
- },
1273
- generate: function(name, params, hostComponent) {
1274
- var componentRecognizer = this._rules.get(hostComponent);
1275
- return isPresent(componentRecognizer) ? componentRecognizer.generate(name, params) : null;
1449
+ var response = componentRecognizer.generate(segment, params);
1450
+ url += response['url'];
1451
+ componentCursor = response['nextComponent'];
1276
1452
  }
1277
- }, {});
1278
- }());
1453
+ return url;
1454
+ }
1455
+ }, {}));
1279
1456
  $__export("RouteRegistry", RouteRegistry);
1457
+ $__export("RouteRegistry", RouteRegistry = __decorate([Injectable(), __metadata('design:paramtypes', [])], RouteRegistry));
1280
1458
  ALLOWED_TARGETS = ['component', 'redirectTo'];
1281
1459
  VALID_COMPONENT_TYPES = ['constructor', 'loader'];
1282
1460
  }
@@ -1347,11 +1525,10 @@ System.register("angular2/src/router/router_outlet", ["angular2/src/facade/async
1347
1525
  decorator(target, key, paramIndex);
1348
1526
  };
1349
1527
  };
1350
- RouterOutlet = (($traceurRuntime.createClass)(function(elementRef, _loader, _parentRouter, _injector, nameAttr) {
1528
+ RouterOutlet = (($traceurRuntime.createClass)(function(_elementRef, _loader, _parentRouter, nameAttr) {
1529
+ this._elementRef = _elementRef;
1351
1530
  this._loader = _loader;
1352
1531
  this._parentRouter = _parentRouter;
1353
- this._injector = _injector;
1354
- this._elementRef = elementRef;
1355
1532
  this._childRouter = null;
1356
1533
  this._componentRef = null;
1357
1534
  this._currentInstruction = null;
@@ -1364,9 +1541,10 @@ System.register("angular2/src/router/router_outlet", ["angular2/src/facade/async
1364
1541
  }
1365
1542
  this._currentInstruction = instruction;
1366
1543
  this._childRouter = this._parentRouter.childRouter(instruction.component);
1367
- var outletInjector = this._injector.resolveAndCreateChild([bind(RouteParams).toValue(new RouteParams(instruction.params)), bind(routerMod.Router).toValue(this._childRouter)]);
1544
+ var params = new RouteParams(instruction.params());
1545
+ var bindings = Injector.resolve([bind(RouteParams).toValue(params), bind(routerMod.Router).toValue(this._childRouter)]);
1368
1546
  return this.deactivate().then((function(_) {
1369
- return $__0._loader.loadNextToLocation(instruction.component, $__0._elementRef, outletInjector);
1547
+ return $__0._loader.loadNextToLocation(instruction.component, $__0._elementRef, bindings);
1370
1548
  })).then((function(componentRef) {
1371
1549
  $__0._componentRef = componentRef;
1372
1550
  return $__0._childRouter.commit(instruction.child);
@@ -1386,7 +1564,7 @@ System.register("angular2/src/router/router_outlet", ["angular2/src/facade/async
1386
1564
  }
1387
1565
  }, {}));
1388
1566
  $__export("RouterOutlet", RouterOutlet);
1389
- $__export("RouterOutlet", RouterOutlet = __decorate([Directive({selector: 'router-outlet'}), __param(4, Attribute('name')), __metadata('design:paramtypes', [ElementRef, DynamicComponentLoader, routerMod.Router, Injector, String])], RouterOutlet));
1567
+ $__export("RouterOutlet", RouterOutlet = __decorate([Directive({selector: 'router-outlet'}), __param(3, Attribute('name')), __metadata('design:paramtypes', [ElementRef, DynamicComponentLoader, routerMod.Router, String])], RouterOutlet));
1390
1568
  }
1391
1569
  };
1392
1570
  });