This repository was archived by the owner on Mar 13, 2018. It is now read-only.
File tree 3 files changed +39
-11
lines changed
3 files changed +39
-11
lines changed Original file line number Diff line number Diff line change 8
8
" src/track.js" ,
9
9
" src/flick.js" ,
10
10
" src/pinch.js" ,
11
- " src/tap.js"
11
+ " src/tap.js" ,
12
+ " src/registerScopes.js"
12
13
]
Original file line number Diff line number Diff line change 206
206
}
207
207
} ;
208
208
dispatcher . boundHandler = dispatcher . eventHandler . bind ( dispatcher ) ;
209
+ // recognizers call into the dispatcher and load later
210
+ // solve the chicken and egg problem by having registerScopes module run last
211
+ dispatcher . registerQueue = [ ] ;
212
+ dispatcher . immediateRegister = false ;
209
213
scope . dispatcher = dispatcher ;
210
- var registerQueue = [ ] ;
211
- var immediateRegister = false ;
212
214
/**
213
215
* Enable gesture events for a given scope, typically
214
216
* [ShadowRoots](https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#shadow-root-object).
219
221
* support on.
220
222
*/
221
223
scope . register = function ( inScope ) {
222
- if ( immediateRegister ) {
224
+ if ( dispatcher . immediateRegister ) {
223
225
var pe = window . PointerEventsPolyfill ;
224
226
if ( pe ) {
225
227
pe . register ( inScope ) ;
226
228
}
227
229
scope . dispatcher . registerTarget ( inScope ) ;
228
230
} else {
229
- registerQueue . push ( inScope ) ;
231
+ dispatcher . registerQueue . push ( inScope ) ;
230
232
}
231
233
} ;
232
- // wait to register scopes until recognizers load
233
- document . addEventListener ( 'DOMContentLoaded' , function ( ) {
234
- immediateRegister = true ;
235
- registerQueue . push ( document ) ;
236
- registerQueue . forEach ( scope . register ) ;
237
- } ) ;
234
+ scope . register ( document ) ;
238
235
} ) ( window . PointerGestures ) ;
Original file line number Diff line number Diff line change
1
+ /*
2
+ * Copyright 2013 The Polymer Authors. All rights reserved.
3
+ * Use of this source code is governed by a BSD-style
4
+ * license that can be found in the LICENSE file.
5
+ */
6
+
7
+ /**
8
+ * Because recognizers are loaded after dispatcher, we have to wait to register
9
+ * scopes until after all the recognizers.
10
+ */
11
+ ( function ( scope ) {
12
+ var dispatcher = scope . dispatcher ;
13
+ function registerScopes ( ) {
14
+ dispatcher . immediateRegister = true ;
15
+ var rq = dispatcher . registerQueue ;
16
+ rq . forEach ( scope . register ) ;
17
+ rq . length = 0 ;
18
+ }
19
+ if ( document . readyState === 'complete' ) {
20
+ registerScopes ( ) ;
21
+ } else {
22
+ // register scopes after a steadystate is reached
23
+ // less MutationObserver churn
24
+ document . addEventListener ( 'readystatechange' , function ( ) {
25
+ if ( document . readyState === 'complete' ) {
26
+ registerScopes ( ) ;
27
+ }
28
+ } ) ;
29
+ }
30
+ } ) ( window . PointerGestures ) ;
You can’t perform that action at this time.
0 commit comments