1- import { RouteSegment , UrlSegment , Tree , TreeNode , rootNode , UrlTree , RouteTree , equalUrlSegments } from './segments' ;
1+ import {
2+ RouteSegment ,
3+ UrlSegment ,
4+ Tree ,
5+ TreeNode ,
6+ rootNode ,
7+ UrlTree ,
8+ RouteTree ,
9+ equalUrlSegments
10+ } from './segments' ;
211import { RoutesMetadata , RouteMetadata } from './metadata/metadata' ;
312import { Type , isBlank , isPresent , stringify } from './facade/lang' ;
413import { ListWrapper , StringMapWrapper } from './facade/collection' ;
@@ -8,14 +17,16 @@ import {ComponentResolver} from '@angular/core';
817import { DEFAULT_OUTLET_NAME } from './constants' ;
918import { reflector } from '@angular/core' ;
1019
11- export function recognize ( componentResolver : ComponentResolver , rootComponent : Type ,
12- url : UrlTree , existingTree : RouteTree ) : Promise < RouteTree > {
20+ export function recognize ( componentResolver : ComponentResolver , rootComponent : Type , url : UrlTree ,
21+ existingTree : RouteTree ) : Promise < RouteTree > {
1322 let matched = new _MatchResult ( rootComponent , [ url . root ] , { } , rootNode ( url ) . children , [ ] ) ;
14- return _constructSegment ( componentResolver , matched , rootNode ( existingTree ) ) . then ( roots => new RouteTree ( roots [ 0 ] ) ) ;
23+ return _constructSegment ( componentResolver , matched , rootNode ( existingTree ) )
24+ . then ( roots => new RouteTree ( roots [ 0 ] ) ) ;
1525}
1626
1727function _recognize ( componentResolver : ComponentResolver , parentComponent : Type ,
18- url : TreeNode < UrlSegment > , existingSegments : TreeNode < RouteSegment > [ ] ) : Promise < TreeNode < RouteSegment > [ ] > {
28+ url : TreeNode < UrlSegment > ,
29+ existingSegments : TreeNode < RouteSegment > [ ] ) : Promise < TreeNode < RouteSegment > [ ] > {
1930 let metadata = _readMetadata ( parentComponent ) ; // should read from the factory instead
2031 if ( isBlank ( metadata ) ) {
2132 throw new BaseException (
@@ -30,29 +41,34 @@ function _recognize(componentResolver: ComponentResolver, parentComponent: Type,
3041 }
3142
3243 let segmentsWithRightOutlet = existingSegments . filter ( r => r . value . outlet == match . outlet ) ;
33- let segmentWithRightOutlet = segmentsWithRightOutlet . length > 0 ? segmentsWithRightOutlet [ 0 ] : null ;
44+ let segmentWithRightOutlet =
45+ segmentsWithRightOutlet . length > 0 ? segmentsWithRightOutlet [ 0 ] : null ;
3446
3547 let main = _constructSegment ( componentResolver , match , segmentWithRightOutlet ) ;
36- let aux =
37- _recognizeMany ( componentResolver , parentComponent , match . aux , existingSegments ) . then ( _checkOutletNameUniqueness ) ;
48+ let aux = _recognizeMany ( componentResolver , parentComponent , match . aux , existingSegments )
49+ . then ( _checkOutletNameUniqueness ) ;
3850 return PromiseWrapper . all ( [ main , aux ] ) . then ( ListWrapper . flatten ) ;
3951}
4052
41- function _recognizeMany ( componentResolver : ComponentResolver , parentComponent : Type ,
42- urls : TreeNode < UrlSegment > [ ] , existingSegments : TreeNode < RouteSegment > [ ] ) : Promise < TreeNode < RouteSegment > [ ] > {
43- let recognized = urls . map ( u => _recognize ( componentResolver , parentComponent , u , existingSegments ) ) ;
53+ function _recognizeMany (
54+ componentResolver : ComponentResolver , parentComponent : Type , urls : TreeNode < UrlSegment > [ ] ,
55+ existingSegments : TreeNode < RouteSegment > [ ] ) : Promise < TreeNode < RouteSegment > [ ] > {
56+ let recognized =
57+ urls . map ( u => _recognize ( componentResolver , parentComponent , u , existingSegments ) ) ;
4458 return PromiseWrapper . all ( recognized ) . then ( ListWrapper . flatten ) ;
4559}
4660
47- function _constructSegment ( componentResolver : ComponentResolver ,
48- matched : _MatchResult , existingSegment : TreeNode < RouteSegment > ) : Promise < TreeNode < RouteSegment > [ ] > {
61+ function _constructSegment (
62+ componentResolver : ComponentResolver , matched : _MatchResult ,
63+ existingSegment : TreeNode < RouteSegment > ) : Promise < TreeNode < RouteSegment > [ ] > {
4964 return componentResolver . resolveComponent ( matched . component )
5065 . then ( factory => {
5166 let segment = _createOrReuseSegment ( matched , factory , existingSegment ) ;
5267 let existingChildren = isPresent ( existingSegment ) ? existingSegment . children : [ ] ;
5368
5469 if ( matched . leftOverUrl . length > 0 ) {
55- return _recognizeMany ( componentResolver , factory . componentType , matched . leftOverUrl , existingChildren )
70+ return _recognizeMany ( componentResolver , factory . componentType , matched . leftOverUrl ,
71+ existingChildren )
5672 . then ( children => [ new TreeNode < RouteSegment > ( segment , children ) ] ) ;
5773 } else {
5874 return _recognizeLeftOvers ( componentResolver , factory . componentType , existingChildren )
@@ -61,21 +77,23 @@ function _constructSegment(componentResolver: ComponentResolver,
6177 } ) ;
6278}
6379
64- function _createOrReuseSegment ( matched : _MatchResult , factory : ComponentFactory < any > , segmentNode : TreeNode < RouteSegment > ) : RouteSegment {
80+ function _createOrReuseSegment ( matched : _MatchResult , factory : ComponentFactory < any > ,
81+ segmentNode : TreeNode < RouteSegment > ) : RouteSegment {
6582 let segment = isPresent ( segmentNode ) ? segmentNode . value : null ;
6683
67- if ( isPresent ( segment ) && equalUrlSegments ( segment . urlSegments , matched . consumedUrlSegments )
68- && StringMapWrapper . equals ( segment . parameters , matched . parameters ) &&
69- segment . outlet == matched . outlet && factory . componentType == segment . type ) {
84+ if ( isPresent ( segment ) && equalUrlSegments ( segment . urlSegments , matched . consumedUrlSegments ) &&
85+ StringMapWrapper . equals ( segment . parameters , matched . parameters ) &&
86+ segment . outlet == matched . outlet && factory . componentType == segment . type ) {
7087 return segment ;
7188 } else {
7289 return new RouteSegment ( matched . consumedUrlSegments , matched . parameters , matched . outlet ,
73- factory . componentType , factory ) ;
90+ factory . componentType , factory ) ;
7491 }
7592}
7693
77- function _recognizeLeftOvers ( componentResolver : ComponentResolver ,
78- parentComponent : Type , existingSegments : TreeNode < RouteSegment > [ ] ) : Promise < TreeNode < RouteSegment > [ ] > {
94+ function _recognizeLeftOvers (
95+ componentResolver : ComponentResolver , parentComponent : Type ,
96+ existingSegments : TreeNode < RouteSegment > [ ] ) : Promise < TreeNode < RouteSegment > [ ] > {
7997 return componentResolver . resolveComponent ( parentComponent )
8098 . then ( factory => {
8199 let metadata = _readMetadata ( factory . componentType ) ;
@@ -87,14 +105,20 @@ function _recognizeLeftOvers(componentResolver: ComponentResolver,
87105 if ( r . length === 0 ) {
88106 return PromiseWrapper . resolve ( [ ] ) ;
89107 } else {
90- let segmentsWithMatchingOutlet = existingSegments . filter ( r => r . value . outlet == DEFAULT_OUTLET_NAME ) ;
91- let segmentWithMatchingOutlet = segmentsWithMatchingOutlet . length > 0 ? segmentsWithMatchingOutlet [ 0 ] : null ;
92- let existingChildren = isPresent ( segmentWithMatchingOutlet ) ? segmentWithMatchingOutlet . children : [ ] ;
93-
94- return _recognizeLeftOvers ( componentResolver , r [ 0 ] . component , existingChildren ) . then ( children => {
108+ let segmentsWithMatchingOutlet =
109+ existingSegments . filter ( r => r . value . outlet == DEFAULT_OUTLET_NAME ) ;
110+ let segmentWithMatchingOutlet =
111+ segmentsWithMatchingOutlet . length > 0 ? segmentsWithMatchingOutlet [ 0 ] : null ;
112+ let existingChildren =
113+ isPresent ( segmentWithMatchingOutlet ) ? segmentWithMatchingOutlet . children : [ ] ;
114+
115+ return _recognizeLeftOvers ( componentResolver , r [ 0 ] . component , existingChildren )
116+ . then ( children => {
95117 return componentResolver . resolveComponent ( r [ 0 ] . component )
96118 . then ( factory => {
97- let segment = _createOrReuseSegment ( new _MatchResult ( r [ 0 ] . component , [ ] , { } , [ ] , [ ] ) , factory , segmentWithMatchingOutlet ) ;
119+ let segment =
120+ _createOrReuseSegment ( new _MatchResult ( r [ 0 ] . component , [ ] , { } , [ ] , [ ] ) ,
121+ factory , segmentWithMatchingOutlet ) ;
98122 return [ new TreeNode < RouteSegment > ( segment , children ) ] ;
99123 } ) ;
100124 } ) ;
@@ -177,15 +201,14 @@ function _checkOutletNameUniqueness(nodes: TreeNode<RouteSegment>[]): TreeNode<R
177201}
178202
179203class _MatchResult {
180- constructor ( public component : Type | string , public consumedUrlSegments : UrlSegment [ ] ,
204+ constructor ( public component : Type | string , public consumedUrlSegments : UrlSegment [ ] ,
181205 public parameters : { [ key : string ] : string } ,
182206 public leftOverUrl : TreeNode < UrlSegment > [ ] , public aux : TreeNode < UrlSegment > [ ] ) { }
183207
184- get outlet ( ) :string {
185- return this . consumedUrlSegments . length === 0 ||
186- isBlank ( this . consumedUrlSegments [ 0 ] . outlet ) ?
187- DEFAULT_OUTLET_NAME :
188- this . consumedUrlSegments [ 0 ] . outlet ;
208+ get outlet ( ) : string {
209+ return this . consumedUrlSegments . length === 0 || isBlank ( this . consumedUrlSegments [ 0 ] . outlet ) ?
210+ DEFAULT_OUTLET_NAME :
211+ this . consumedUrlSegments [ 0 ] . outlet ;
189212 }
190213}
191214
0 commit comments