Skip to content

Commit c9facb4

Browse files
committed
3.0.4
1 parent dfe0bac commit c9facb4

File tree

3 files changed

+653
-0
lines changed

3 files changed

+653
-0
lines changed

dist/amd/can-jquery.js

Lines changed: 180 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,180 @@
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+
});

dist/cjs/can-jquery.js

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

0 commit comments

Comments
 (0)