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