@@ -31,57 +31,43 @@ else {
31
31
window . name = 'NG_DEFER_BOOTSTRAP!' ;
32
32
}
33
33
34
- function loadHintModules ( ) {
35
- var selectedModules ;
36
- var elts ;
37
- var includeModules = function ( modulesToInclude ) {
38
- var selected = modulesToInclude . map ( function ( name ) {
39
- return 'ngHint' + name [ 0 ] . toUpperCase ( ) + name . substring ( 1 ) ;
40
- } ) ;
41
- return selected ;
42
- } ;
43
- var excludeModules = function ( modulesToExclude ) {
44
- var selected = allModules . filter ( function ( name ) {
45
- var notFound = true ;
46
- modulesToExclude . forEach ( function ( element ) {
47
- if ( ( 'ngHint' + element [ 0 ] . toUpperCase ( ) + element . substring ( 1 ) ) == name ) {
48
- notFound = false ;
49
- }
50
- } ) ;
51
- if ( notFound ) {
52
- return name ;
53
- }
54
- } ) ;
55
- return selected ;
56
- } ;
57
- elts = document . querySelectorAll ( '[ng-hint-include]' ) ;
58
- if ( elts . length > 0 ) {
59
- selectedModules = includeModules ( elts [ 0 ] . attributes [ 'ng-hint-include' ] . value . split ( ' ' ) ) ;
60
- }
61
- else {
62
- elts = document . querySelectorAll ( '[ng-hint-exclude]' ) ;
63
- if ( elts . length > 0 ) {
64
- selectedModules = excludeModules ( elts [ 0 ] . attributes [ 'ng-hint-exclude' ] . value . split ( ' ' ) ) ;
65
- }
66
- else {
67
- elts = document . querySelectorAll ( '[ng-hint]' ) ;
68
- if ( elts . length > 0 ) {
69
- selectedModules = allModules ;
70
- }
71
- }
34
+ // determine which modules to load and resume bootstrap
35
+ document . addEventListener ( 'DOMContentLoaded' , function maybeBootstrap ( ) {
36
+
37
+ // we don't know if angular is loaded
38
+ if ( ! angular . resumeBootstrap ) {
39
+ return setTimeout ( maybeBootstrap , 1 ) ;
72
40
}
73
- return selectedModules ;
74
- } ;
75
41
76
- // determine which modules to load and resume bootstrap
77
- angular . element ( document ) . ready ( function ( ) {
78
- if ( ! isTest ) {
79
- var modules = loadHintModules ( ) ;
80
- if ( modules != undefined ) {
81
- angular . resumeBootstrap ( modules ) ;
82
- }
83
- else {
84
- angular . resumeBootstrap ( ) ;
85
- }
42
+ var modules = [ ] , elt ;
43
+
44
+ if ( elt = document . querySelector ( '[ng-hint-include]' ) ) {
45
+ modules = hintModulesFromElement ( elt ) . map ( hintModuleName ) ;
46
+ } else if ( elt = document . querySelector ( '[ng-hint-exclude]' ) ) {
47
+ modules = excludeModules ( hintModulesFromElement ( elt ) ) ;
48
+ } else if ( document . querySelector ( '[ng-hint]' ) ) {
49
+ modules = allModules ;
86
50
}
51
+
52
+ angular . resumeBootstrap ( modules ) ;
87
53
} ) ;
54
+
55
+
56
+ function excludeModules ( modulesToExclude ) {
57
+ modulesToExclude = modulesToExclude . map ( hintModuleName ) ;
58
+ return allModules . filter ( function ( module ) {
59
+ return modulesToExclude . indexOf ( module ) > - 1 ;
60
+ } ) ;
61
+ }
62
+
63
+ function hintModulesFromElement ( elt ) {
64
+ return elt . attributes [ 'ng-hint-include' ] . value . split ( ' ' ) ;
65
+ }
66
+
67
+ function hintModuleName ( name ) {
68
+ return 'ngHint' + title ( name ) ;
69
+ }
70
+
71
+ function title ( str ) {
72
+ return str [ 0 ] . toUpperCase ( ) + str . substr ( 1 ) ;
73
+ }
0 commit comments