3
3
*
4
4
* @link https://github.com/nonplus/angular-ui-router-default
5
5
*
6
- * @license angular-ui-router-default v0.0.4
6
+ * @license angular-ui-router-default v0.0.5
7
7
* (c) Copyright Stepan Riha <[email protected] >
8
8
* License MIT
9
9
*/
10
10
11
11
( function ( angular ) {
12
12
13
- /* global angular */
14
13
"use strict" ;
14
+ var moduleName = 'ui.router.default' ;
15
+ if ( typeof module !== "undefined" && typeof exports !== "undefined" && module . exports === exports ) {
16
+ module . exports = moduleName ;
17
+ }
15
18
var max_redirects = 10 ;
16
- angular . module ( 'ui.router.default' , [ 'ui.router' ] )
17
- . config ( [ '$provide' , function ( $provide ) {
18
- $provide . decorator ( '$state' , [ '$delegate' , '$injector' , '$q' , function ( $delegate , $injector , $q ) {
19
- var transitionTo = $delegate . transitionTo ;
20
- var pendingPromise ;
21
- $delegate . transitionTo = function ( to , toParams , options ) {
22
- var numRedirects = 0 ;
23
- var $state = this ;
24
- var nextState = to . name || to ;
25
- var nextParams = toParams ;
26
- var nextOptions = options ;
19
+ angular . module ( moduleName , [ 'ui.router' ] )
20
+ . config ( [ '$provide' , function ( $provide ) {
21
+ $provide . decorator ( '$state' , [ '$delegate' , '$injector' , '$q' , function ( $delegate , $injector , $q ) {
22
+ var transitionTo = $delegate . transitionTo ;
23
+ var pendingPromise ;
24
+ $delegate . transitionTo = function ( to , toParams , options ) {
25
+ var numRedirects = 0 ;
26
+ var $state = this ;
27
+ var nextState = to . name || to ;
28
+ var nextParams = toParams ;
29
+ var nextOptions = options ;
30
+ return fetchTarget ( ) ;
31
+ function fetchTarget ( ) {
32
+ var target = $state . get ( nextState , $state . $current ) ;
33
+ nextState = ( target || { } ) . name ;
34
+ var absRedirectPromise = getAbstractRedirect ( target ) ;
35
+ pendingPromise = absRedirectPromise ;
36
+ return $q . when ( absRedirectPromise )
37
+ . then ( abstractTargetResolved ) ;
38
+ function abstractTargetResolved ( abstractTarget ) {
39
+ if ( absRedirectPromise !== pendingPromise ) {
40
+ return $q . reject ( new Error ( 'transition superseded' ) ) ;
41
+ }
42
+ // we didn't get anything from the abstract target
43
+ if ( ! abstractTarget ) {
44
+ return transitionTo . call ( $delegate , nextState , nextParams , nextOptions ) ;
45
+ }
46
+ checkForMaxRedirect ( ) ;
47
+ nextState = abstractTarget ;
48
+ return fetchTarget ( ) ;
49
+ }
50
+ function checkForMaxRedirect ( ) {
51
+ if ( numRedirects === max_redirects ) {
52
+ throw new Error ( 'Too many abstract state default redirects' ) ;
53
+ }
54
+ numRedirects += 1 ;
55
+ }
56
+ }
57
+ function getAbstractRedirect ( state ) {
58
+ if ( ! state || ! state . abstract || ( state . abstract === true && ! state . default ) ) {
59
+ return null ;
60
+ }
61
+ return invokeAbstract ( state ) . then ( abstractInvoked ) ;
62
+ function abstractInvoked ( newState ) {
63
+ if ( newState [ 0 ] === '.' ) {
64
+ return nextState + newState ;
65
+ }
66
+ else {
67
+ return newState ;
68
+ }
69
+ }
70
+ }
71
+ function invokeAbstract ( state ) {
72
+ var defaultState ;
73
+ if ( state . default ) {
74
+ defaultState = state . default ;
75
+ }
76
+ else {
77
+ defaultState = state . abstract ;
78
+ }
79
+ if ( defaultState instanceof Function || defaultState instanceof Array ) {
80
+ return $q . when ( $injector . invoke ( defaultState ) ) ;
81
+ }
82
+ else {
83
+ return $q . when ( defaultState ) ;
84
+ }
85
+ }
86
+ } ;
87
+ return $delegate ;
88
+ } ] ) ;
89
+ } ] ) ;
27
90
28
- return fetchTarget ( ) ;
29
-
30
- function fetchTarget ( ) {
31
- var target = $state . get ( nextState , $state . $current ) ;
32
- nextState = ( target || { } ) . name ;
33
-
34
- var absRedirectPromise = getAbstractRedirect ( target ) ;
35
- pendingPromise = absRedirectPromise ;
36
- return $q . when ( absRedirectPromise , abstractTargetResolved ) ;
37
-
38
- function abstractTargetResolved ( abstractTarget ) {
39
- if ( absRedirectPromise !== pendingPromise ) {
40
- return $q . reject ( new Error ( 'transition superseded' ) ) ;
41
- }
42
- // we didn't get anything from the abstract target
43
- if ( ! abstractTarget ) {
44
- return transitionTo . call ( $delegate , nextState , nextParams , nextOptions ) ;
45
- }
46
- checkForMaxRedirect ( ) ;
47
- nextState = abstractTarget ;
48
- return fetchTarget ( ) ;
49
- }
50
-
51
- function checkForMaxRedirect ( ) {
52
- if ( numRedirects === max_redirects ) {
53
- throw new Error ( 'Too many abstract state default redirects' ) ;
54
- }
55
- numRedirects += 1 ;
56
- }
57
- }
58
- function getAbstractRedirect ( state ) {
59
- if ( ! state || ! state . abstract || state . abstract === true ) {
60
- return null ;
61
- }
62
- return invokeAbstract ( state . abstract ) . then ( abstractInvoked ) ;
63
- function abstractInvoked ( newState ) {
64
- if ( newState [ 0 ] === '.' ) {
65
- return nextState + newState ;
66
- } else {
67
- return newState ;
68
- }
69
- }
70
-
71
- }
72
- function invokeAbstract ( abstract ) {
73
- if ( ! angular . isString ( abstract ) ) {
74
- return $q . when ( $injector . invoke ( abstract ) ) ;
75
- } else {
76
- return $q . when ( abstract ) ;
77
- }
78
- }
79
-
80
- } ;
81
- return $delegate ;
82
- } ] ) ;
83
- } ] ) ;
84
91
85
92
} ) ( window . angular ) ;
0 commit comments