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