1
+ /*can-jquery@3.1.0-pre.1#can-jquery*/
2
+ define ( function ( require , exports , module ) {
3
+ var $ = require ( 'jquery' ) ;
4
+ var ns = require ( 'can-util/namespace' ) ;
5
+ var buildFragment = require ( 'can-util/dom/fragment' ) ;
6
+ var domEvents = require ( 'can-util/dom/events' ) ;
7
+ var domDispatch = require ( 'can-util/dom/dispatch' ) ;
8
+ var each = require ( 'can-util/js/each' ) ;
9
+ var getChildNodes = require ( 'can-util/dom/child-nodes' ) ;
10
+ var isArrayLike = require ( 'can-util/js/is-array-like' ) ;
11
+ var makeArray = require ( 'can-util/js/make-array' ) ;
12
+ var mutate = require ( 'can-util/dom/mutate' ) ;
13
+ var setImmediate = require ( 'can-util/js/set-immediate' ) ;
14
+ var canViewModel = require ( 'can-view-model' ) ;
15
+ var MO = require ( 'can-util/dom/mutation-observer' ) ;
16
+ var CIDMap = require ( 'can-util/js/cid-map' ) ;
17
+ var assign = require ( 'can-util/js/assign' ) ;
18
+ module . exports = ns . $ = $ ;
19
+ var specialEvents = { } ;
20
+ var nativeDispatchEvents = { focus : true } ;
21
+ var inSpecial = false ;
22
+ var slice = Array . prototype . slice ;
23
+ var removedEventHandlerMap = new CIDMap ( ) ;
24
+ if ( $ ) {
25
+ var domDispatch = domEvents . dispatch ;
26
+ domEvents . dispatch = function ( event , args ) {
27
+ var eventObj ;
28
+ if ( ! specialEvents [ event ] && ! nativeDispatchEvents [ event ] ) {
29
+ if ( typeof event !== 'string' && ! event . hasOwnProperty ( 'type' ) ) {
30
+ eventObj = assign ( { } , event ) ;
31
+ }
32
+ $ ( this ) . trigger ( eventObj || event , args ) ;
33
+ } else {
34
+ domDispatch . apply ( this , arguments ) ;
35
+ }
36
+ } ;
37
+ var addEventListener = domEvents . addEventListener ;
38
+ domEvents . addEventListener = function ( event , callback ) {
39
+ var handler ;
40
+ if ( this . nodeType === Node . DOCUMENT_FRAGMENT_NODE ) {
41
+ return ;
42
+ }
43
+ if ( ! inSpecial ) {
44
+ if ( event === 'removed' ) {
45
+ var element = this ;
46
+ handler = function ( ev ) {
47
+ ev . eventArguments = slice . call ( arguments , 1 ) ;
48
+ domEvents . removeEventListener . call ( element , event , handler ) ;
49
+ var self = this , args = arguments ;
50
+ if ( MO ( ) ) {
51
+ return callback . apply ( self , args ) ;
52
+ } else {
53
+ return setImmediate ( function ( ) {
54
+ return callback . apply ( self , args ) ;
55
+ } ) ;
56
+ }
57
+ } ;
58
+ removedEventHandlerMap . set ( callback , handler ) ;
59
+ }
60
+ $ ( this ) . on ( event , handler || callback ) ;
61
+ return ;
62
+ }
63
+ return addEventListener . call ( this , event , handler || callback ) ;
64
+ } ;
65
+ var removeEventListener = domEvents . removeEventListener ;
66
+ domEvents . removeEventListener = function ( event , callback ) {
67
+ if ( this . nodeType === Node . DOCUMENT_FRAGMENT_NODE ) {
68
+ return ;
69
+ }
70
+ if ( ! inSpecial ) {
71
+ var handler ;
72
+ if ( event === 'removed' ) {
73
+ handler = removedEventHandlerMap . get ( callback ) ;
74
+ removedEventHandlerMap . delete ( callback ) ;
75
+ }
76
+ $ ( this ) . off ( event , handler || callback ) ;
77
+ return ;
78
+ }
79
+ return removeEventListener . apply ( this , arguments ) ;
80
+ } ;
81
+ var delegateEventType = function delegateEventType ( type ) {
82
+ var typeMap = {
83
+ focus : 'focusin' ,
84
+ blur : 'focusout'
85
+ } ;
86
+ return typeMap [ type ] || type ;
87
+ } ;
88
+ domEvents . addDelegateListener = function ( type , selector , callback ) {
89
+ $ ( this ) . on ( delegateEventType ( type ) , selector , callback ) ;
90
+ } ;
91
+ domEvents . removeDelegateListener = function ( type , selector , callback ) {
92
+ $ ( this ) . off ( delegateEventType ( type ) , selector , callback ) ;
93
+ } ;
94
+ var withSpecial = function withSpecial ( callback ) {
95
+ return function ( ) {
96
+ inSpecial = true ;
97
+ callback . apply ( this , arguments ) ;
98
+ inSpecial = false ;
99
+ } ;
100
+ } ;
101
+ var setupSpecialEvent = function setupSpecialEvent ( eventName ) {
102
+ specialEvents [ eventName ] = true ;
103
+ var handler = function ( ) {
104
+ $ ( this ) . trigger ( eventName ) ;
105
+ } ;
106
+ $ . event . special [ eventName ] = {
107
+ noBubble : true ,
108
+ setup : withSpecial ( function ( ) {
109
+ domEvents . addEventListener . call ( this , eventName , handler ) ;
110
+ } ) ,
111
+ teardown : withSpecial ( function ( ) {
112
+ domEvents . removeEventListener . call ( this , eventName , handler ) ;
113
+ } )
114
+ } ;
115
+ } ;
116
+ [
117
+ 'inserted' ,
118
+ 'removed' ,
119
+ 'attributes' ,
120
+ 'beforeremove'
121
+ ] . forEach ( setupSpecialEvent ) ;
122
+ var oldDomManip = $ . fn . domManip , cbIndex ;
123
+ $ . fn . domManip = function ( ) {
124
+ for ( var i = 1 ; i < arguments . length ; i ++ ) {
125
+ if ( typeof arguments [ i ] === 'function' ) {
126
+ cbIndex = i ;
127
+ break ;
128
+ }
129
+ }
130
+ return oldDomManip . apply ( this , arguments ) ;
131
+ } ;
132
+ $ ( document . createElement ( 'div' ) ) . append ( document . createElement ( 'div' ) ) ;
133
+ if ( cbIndex === undefined ) {
134
+ $ . fn . domManip = oldDomManip ;
135
+ each ( [
136
+ 'after' ,
137
+ 'prepend' ,
138
+ 'before' ,
139
+ 'append' ,
140
+ 'replaceWith'
141
+ ] , function ( name ) {
142
+ var original = $ . fn [ name ] ;
143
+ $ . fn [ name ] = function ( ) {
144
+ var elems = [ ] , args = makeArray ( arguments ) ;
145
+ if ( args [ 0 ] != null ) {
146
+ if ( typeof args [ 0 ] === 'string' ) {
147
+ args [ 0 ] = buildFragment ( args [ 0 ] ) ;
148
+ }
149
+ if ( args [ 0 ] . nodeType === 11 ) {
150
+ elems = getChildNodes ( args [ 0 ] ) ;
151
+ } else if ( isArrayLike ( args [ 0 ] ) ) {
152
+ elems = makeArray ( args [ 0 ] ) ;
153
+ } else {
154
+ elems = [ args [ 0 ] ] ;
155
+ }
156
+ }
157
+ var ret = original . apply ( this , args ) ;
158
+ mutate . inserted ( elems ) ;
159
+ return ret ;
160
+ } ;
161
+ } ) ;
162
+ } else {
163
+ $ . fn . domManip = cbIndex === 2 ? function ( args , table , callback ) {
164
+ return oldDomManip . call ( this , args , table , function ( elem ) {
165
+ var elems ;
166
+ if ( elem . nodeType === 11 ) {
167
+ elems = makeArray ( getChildNodes ( elem ) ) ;
168
+ }
169
+ var ret = callback . apply ( this , arguments ) ;
170
+ mutate . inserted ( elems ? elems : [ elem ] ) ;
171
+ return ret ;
172
+ } ) ;
173
+ } : function ( args , callback ) {
174
+ return oldDomManip . call ( this , args , function ( elem ) {
175
+ var elems ;
176
+ if ( elem . nodeType === 11 ) {
177
+ elems = makeArray ( getChildNodes ( elem ) ) ;
178
+ }
179
+ var ret = callback . apply ( this , arguments ) ;
180
+ mutate . inserted ( elems ? elems : [ elem ] ) ;
181
+ return ret ;
182
+ } ) ;
183
+ } ;
184
+ }
185
+ var oldClean = $ . cleanData ;
186
+ $ . cleanData = function ( elems ) {
187
+ $ . each ( elems , function ( i , elem ) {
188
+ if ( elem ) {
189
+ domDispatch . call ( elem , 'removed' , [ ] , false ) ;
190
+ }
191
+ } ) ;
192
+ oldClean ( elems ) ;
193
+ } ;
194
+ $ . fn . viewModel = function ( ) {
195
+ return canViewModel ( this [ 0 ] ) ;
196
+ } ;
197
+ }
198
+ } ) ;
0 commit comments