48
48
import $ from 'jquery' ;
49
49
import { extractOptions } from '@g2crowd/extract-options' ;
50
50
import camelize from './camelize' ;
51
+ import queue from './queue' ;
51
52
import initiationStrategies from './initiationStrategies' ;
52
53
import selectorBuilder from './selectorBuilder' ;
53
54
@@ -59,6 +60,8 @@ class AlreadyRegisteredError extends Error {
59
60
}
60
61
}
61
62
63
+ const widgetQueue = queue ( ) ;
64
+
62
65
const strategies = initiationStrategies ( {
63
66
nextTick ( pluginFn , $$ , options , ready ) {
64
67
return window . setTimeout ( ( ) => pluginFn . call ( $$ , options , ready ) , 0 ) ;
@@ -112,7 +115,10 @@ const widget = function({ attr, data }, loadEvents, fragmentLoadEvents) {
112
115
extractOptions ( data , pluginName )
113
116
) ;
114
117
115
- strategies . get ( pluginFn . init ) ( pluginFn , $$ , options , ready ) ;
118
+ widgetQueue . add ( ( ) => {
119
+ strategies . get ( pluginFn . init ) ( pluginFn , $$ , options , ready ) ;
120
+ } ) ;
121
+ widgetQueue . flush ( ) ;
116
122
117
123
$$ . data ( `vvidget:${ name } ` , true ) ;
118
124
}
@@ -125,8 +131,6 @@ const widget = function({ attr, data }, loadEvents, fragmentLoadEvents) {
125
131
const names = `${ $$ . data ( data ) || '' } ${ $$ . attr ( attr ) || '' } ` ;
126
132
127
133
names . split ( ' ' ) . forEach ( name => loadWidget ( $$ , name , $$ . data ( ) ) ) ;
128
-
129
- $$ . trigger ( 'vvidget:ready' ) ;
130
134
} ) ;
131
135
} ;
132
136
0 commit comments