aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTimmy Willison <timmywillisn@gmail.com>2013-09-09 11:26:21 -0400
committerTimmy Willison <timmywillisn@gmail.com>2013-09-09 12:04:03 -0400
commit2063d6c1896b0c46c39fa0fdecef817f2e6f57c3 (patch)
tree1b642c7a1f956ddfb665487c13b8b04d5a4157ee
parentfb599f6315512f64e50d02661990cf34bb40c7db (diff)
downloadjquery-2063d6c1896b0c46c39fa0fdecef817f2e6f57c3.tar.gz
jquery-2063d6c1896b0c46c39fa0fdecef817f2e6f57c3.zip
Break jQuery.access out into its own module to separate it from core; Adjust CommonJS+AMD build support to include non-var dependencies. Convert modules with more than a few dependencies to use CJS+AMD syntax.
Conflicts: src/core.js src/css.js src/data.js src/effects.js src/event.js src/manipulation.js src/traversing.js
-rw-r--r--build/tasks/build.js5
-rw-r--r--src/attributes/attr.js5
-rw-r--r--src/attributes/prop.js5
-rw-r--r--src/core.js53
-rw-r--r--src/core/access.js58
-rw-r--r--src/css.js41
-rw-r--r--src/data.js1
-rw-r--r--src/dimensions.js5
-rw-r--r--src/effects.js33
-rw-r--r--src/event.js26
-rw-r--r--src/manipulation.js41
-rw-r--r--src/offset.js5
-rw-r--r--src/traversing.js1
-rw-r--r--src/wrap.js1
14 files changed, 157 insertions, 123 deletions
diff --git a/build/tasks/build.js b/build/tasks/build.js
index 93c47c0ff..1714957fa 100644
--- a/build/tasks/build.js
+++ b/build/tasks/build.js
@@ -18,6 +18,9 @@ module.exports = function( grunt ) {
out: "dist/jquery.js",
// We have multiple minify steps
optimize: "none",
+ // Include dependencies loaded with require
+ findNestedDependencies: true,
+ // Avoid breaking semicolons inserted by r.js
skipSemiColonInsertion: true,
wrap: {
startFile: "src/intro.js",
@@ -65,7 +68,7 @@ module.exports = function( grunt ) {
// Remove CommonJS-style require calls
// Keep an ending semicolon
contents = contents
- .replace( /\w+ = require\(\s*(")[\w\.\/]+\1\s*\)([,;])/g,
+ .replace( /(?:\s+\w+ = )?\s*require\(\s*(")[\w\.\/]+\1\s*\)([,;])/g,
function( all, quote, commaSemicolon ) {
return commaSemicolon === ";" ? ";" : "";
});
diff --git a/src/attributes/attr.js b/src/attributes/attr.js
index 916f64093..47639c97e 100644
--- a/src/attributes/attr.js
+++ b/src/attributes/attr.js
@@ -2,10 +2,11 @@ define([
"../core",
"../var/rnotwhite",
"../var/strundefined",
+ "../core/access",
"./support",
"./val",
"../selector"
-], function( jQuery, rnotwhite, strundefined, support ) {
+], function( jQuery, rnotwhite, strundefined, access, support ) {
var nodeHook, boolHook,
attrHandle = jQuery.expr.attrHandle,
@@ -15,7 +16,7 @@ var nodeHook, boolHook,
jQuery.fn.extend({
attr: function( name, value ) {
- return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );
+ return access( this, jQuery.attr, name, value, arguments.length > 1 );
},
removeAttr: function( name ) {
diff --git a/src/attributes/prop.js b/src/attributes/prop.js
index 0acd62a2c..817a1b621 100644
--- a/src/attributes/prop.js
+++ b/src/attributes/prop.js
@@ -1,14 +1,15 @@
define([
"../core",
+ "../core/access",
"./support"
-], function( jQuery, support ) {
+], function( jQuery, access, support ) {
var rfocusable = /^(?:input|select|textarea|button|object)$/i,
rclickable = /^(?:a|area)$/i;
jQuery.fn.extend({
prop: function( name, value ) {
- return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );
+ return access( this, jQuery.prop, name, value, arguments.length > 1 );
},
removeProp: function( name ) {
diff --git a/src/core.js b/src/core.js
index b1cca1942..01b3d9a92 100644
--- a/src/core.js
+++ b/src/core.js
@@ -606,59 +606,6 @@ jQuery.extend({
return proxy;
},
- // Multifunctional method to get and set values of a collection
- // The value/s can optionally be executed if it's a function
- access: function( elems, fn, key, value, chainable, emptyGet, raw ) {
- var i = 0,
- length = elems.length,
- bulk = key == null;
-
- // Sets many values
- if ( jQuery.type( key ) === "object" ) {
- chainable = true;
- for ( i in key ) {
- jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
- }
-
- // Sets one value
- } else if ( value !== undefined ) {
- chainable = true;
-
- if ( !jQuery.isFunction( value ) ) {
- raw = true;
- }
-
- if ( bulk ) {
- // Bulk operations run against the entire set
- if ( raw ) {
- fn.call( elems, value );
- fn = null;
-
- // ...except when executing function values
- } else {
- bulk = fn;
- fn = function( elem, key, value ) {
- return bulk.call( jQuery( elem ), value );
- };
- }
- }
-
- if ( fn ) {
- for ( ; i < length; i++ ) {
- fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
- }
- }
- }
-
- return chainable ?
- elems :
-
- // Gets
- bulk ?
- fn.call( elems ) :
- length ? fn( elems[0], key ) : emptyGet;
- },
-
now: function() {
return ( new Date() ).getTime();
},
diff --git a/src/core/access.js b/src/core/access.js
new file mode 100644
index 000000000..7ad2fd336
--- /dev/null
+++ b/src/core/access.js
@@ -0,0 +1,58 @@
+define([
+ "../core"
+], function( jQuery ) {
+ // Multifunctional method to get and set values of a collection
+ // The value/s can optionally be executed if it's a function
+ var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
+ var i = 0,
+ length = elems.length,
+ bulk = key == null;
+
+ // Sets many values
+ if ( jQuery.type( key ) === "object" ) {
+ chainable = true;
+ for ( i in key ) {
+ jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
+ }
+
+ // Sets one value
+ } else if ( value !== undefined ) {
+ chainable = true;
+
+ if ( !jQuery.isFunction( value ) ) {
+ raw = true;
+ }
+
+ if ( bulk ) {
+ // Bulk operations run against the entire set
+ if ( raw ) {
+ fn.call( elems, value );
+ fn = null;
+
+ // ...except when executing function values
+ } else {
+ bulk = fn;
+ fn = function( elem, key, value ) {
+ return bulk.call( jQuery( elem ), value );
+ };
+ }
+ }
+
+ if ( fn ) {
+ for ( ; i < length; i++ ) {
+ fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
+ }
+ }
+ }
+
+ return chainable ?
+ elems :
+
+ // Gets
+ bulk ?
+ fn.call( elems ) :
+ length ? fn( elems[0], key ) : emptyGet;
+ };
+
+ return access;
+});
diff --git a/src/css.js b/src/css.js
index 7409b3fd1..b62f67112 100644
--- a/src/css.js
+++ b/src/css.js
@@ -1,20 +1,21 @@
-define([
- "./core",
- "./var/pnum",
- "./css/var/cssExpand",
- "./css/var/isHidden",
- "./css/defaultDisplay",
- "./css/support",
- "./css/swap",
- "./selector", // contains
- // Optional
- "./offset"
-], function( jQuery, pnum, cssExpand, isHidden, defaultDisplay, support ) {
-
-var getStyles, curCSS,
+// Require more than a few needed variables
+// Keep in mind that a dependency array cannot be used with CommonJS+AMD syntax
+define(function( require ) {
+
+var
+ jQuery = require( "./core" ),
+ pnum = require( "./var/pnum" ),
+ access = require( "./core/access" ),
+ cssExpand = require( "./css/var/cssExpand" ),
+ isHidden = require( "./css/var/isHidden" ),
+ support = require( "./css/support" ),
+ defaultDisplay = require( "./css/defaultDisplay" ),
+
+ getStyles, curCSS,
ralpha = /alpha\([^)]*\)/i,
ropacity = /opacity\s*=\s*([^)]*)/,
rposition = /^(top|right|bottom|left)$/,
+
// swappable if display is none or starts with table except "table", "table-cell", or "table-caption"
// see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
rdisplayswap = /^(none|table(?!-c[ea]).+)/,
@@ -31,6 +32,14 @@ var getStyles, curCSS,
cssPrefixes = [ "Webkit", "O", "Moz", "ms" ];
+// Dependencies not needed as vars
+require( "./css/swap" );
+require( "./core/ready" );
+require( "./selector" ); // contains
+// Optional
+require( "./offset" );
+
+
// NOTE: we've included the "window" in window.getComputedStyle
// because jsdom on node.js will break without it.
if ( window.getComputedStyle ) {
@@ -598,8 +607,8 @@ jQuery.each({
jQuery.fn.extend({
css: function( name, value ) {
- return jQuery.access( this, function( elem, name, value ) {
- var len, styles,
+ return access( this, function( elem, name, value ) {
+ var styles, len,
map = {},
i = 0;
diff --git a/src/data.js b/src/data.js
index a2c725a5a..88cdafa82 100644
--- a/src/data.js
+++ b/src/data.js
@@ -8,7 +8,6 @@ define([
var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/,
rmultiDash = /([A-Z])/g;
-
function dataAttr( elem, key, data ) {
// If nothing was found internally, try to fetch any
// data from the HTML5 data-* attribute
diff --git a/src/dimensions.js b/src/dimensions.js
index c7a7d1824..9dc9414a8 100644
--- a/src/dimensions.js
+++ b/src/dimensions.js
@@ -1,7 +1,8 @@
define([
"./core",
+ "./core/access",
"./css"
-], function( jQuery ) {
+], function( jQuery, access ) {
// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) {
@@ -10,7 +11,7 @@ jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
- return jQuery.access( this, function( elem, type, value ) {
+ return access( this, function( elem, type, value ) {
var doc;
if ( jQuery.isWindow( elem ) ) {
diff --git a/src/effects.js b/src/effects.js
index 3817ba5d1..4428fc937 100644
--- a/src/effects.js
+++ b/src/effects.js
@@ -1,18 +1,14 @@
-define([
- "./core",
- "./var/pnum",
- "./css/var/cssExpand",
- "./css/var/isHidden",
- "./css/defaultDisplay",
- "./effects/support",
- "./effects/Tween",
- "./queue",
- "./css",
- "./deferred",
- "./traversing"
-], function( jQuery, pnum, cssExpand, isHidden, defaultDisplay, support) {
-
-var fxNow, timerId,
+define(function( require ) {
+
+var
+ jQuery = require( "./core" ),
+ pnum = require( "./var/pnum" ),
+ cssExpand = require( "./css/var/cssExpand" ),
+ isHidden = require( "./css/var/isHidden" ),
+ defaultDisplay = require( "./css/defaultDisplay" ),
+ support = require( "./css/support" ),
+
+ fxNow, timerId,
rfxtypes = /^(?:toggle|show|hide)$/,
rfxnum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ),
rrun = /queueHooks$/,
@@ -68,6 +64,13 @@ var fxNow, timerId,
}]
};
+// Dependencies not needed as vars
+require( "./effects/Tween" );
+require( "./queue" );
+require( "./css" );
+require( "./deferred" );
+require( "./traversing" );
+
// Animations created synchronously will run synchronously
function createFxNow() {
setTimeout(function() {
diff --git a/src/event.js b/src/event.js
index ddd5c6f36..7523c1db7 100644
--- a/src/event.js
+++ b/src/event.js
@@ -1,20 +1,22 @@
-define([
- "./core",
- "./var/strundefined",
- "./var/rnotwhite",
- "./var/hasOwn",
- "./var/slice",
- "./event/support",
- "./data/accepts",
- "./selector"
-], function( jQuery, strundefined, rnotwhite, hasOwn, slice, support ) {
-
-var rformElems = /^(?:input|select|textarea)$/i,
+define(function( require ) {
+
+var
+ jQuery = require( "./core" ),
+ strundefined = require( "./var/strundefined" ),
+ rnotwhite = require( "./var/rnotwhite" ),
+ hasOwn = require( "./var/hasOwn" ),
+ slice = require( "./var/slice" ),
+ support = require( "./event/support" ),
+ rformElems = /^(?:input|select|textarea)$/i,
rkeyEvent = /^key/,
rmouseEvent = /^(?:mouse|contextmenu)|click/,
rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;
+// Dependencies not needed as vars
+require( "./data/accepts" );
+require( "./selector" );
+
function returnTrue() {
return true;
}
diff --git a/src/manipulation.js b/src/manipulation.js
index 55d9c5bbd..aefe4bc72 100644
--- a/src/manipulation.js
+++ b/src/manipulation.js
@@ -1,16 +1,12 @@
-define([
- "./core",
- "./var/concat",
- "./var/push",
- "./var/deletedIds",
- "./var/strundefined",
- "./manipulation/var/rcheckableType",
- "./manipulation/support",
- "./data/accepts",
- "./selector",
- "./traversing",
- "./event"
-], function( jQuery, concat, push, deletedIds, strundefined, rcheckableType, support ){
+// Require more than a few needed variables
+// Keep in mind that a dependency array cannot be used with CommonJS+AMD syntax
+define(function( require ){
+
+// Dependencies not needed as variables
+require( "./data/accepts" );
+require( "./traversing" );
+require( "./selector" );
+require( "./event" );
function createSafeFragment( document ) {
var list = nodeNames.split( "|" ),
@@ -26,11 +22,22 @@ function createSafeFragment( document ) {
return safeFrag;
}
-var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" +
+var
+ jQuery = require( "./core" ),
+ strundefined = require( "./var/strundefined" ),
+ concat = require( "./var/concat" ),
+ push = require( "./var/push" ),
+ deletedIds = require( "./var/deletedIds" ),
+ access = require( "./core/access" ),
+ rcheckableType = require( "./manipulation/var/rcheckableType" ),
+ support = require( "./manipulation/support" ),
+
+ nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" +
"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g,
rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"),
rleadingWhitespace = /^\s+/,
+
rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
rtagName = /<([\w:]+)/,
rtbody = /<tbody/i,
@@ -66,7 +73,7 @@ wrapMap.th = wrapMap.td;
jQuery.fn.extend({
text: function( value ) {
- return jQuery.access( this, function( value ) {
+ return access( this, function( value ) {
return value === undefined ?
jQuery.text( this ) :
this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );
@@ -164,8 +171,8 @@ jQuery.fn.extend({
},
html: function( value ) {
- return jQuery.access( this, function( value ) {
- var elem = this[0] || {},
+ return access( this, function( value ) {
+ var elem = this[ 0 ] || {},
i = 0,
l = this.length;
diff --git a/src/offset.js b/src/offset.js
index 18a5dc038..d69a451ca 100644
--- a/src/offset.js
+++ b/src/offset.js
@@ -1,9 +1,10 @@
define([
"./core",
"./var/strundefined",
+ "./core/access",
"./css",
"./selector" // contains
-], function( jQuery, strundefined ) {
+], function( jQuery, strundefined, access ) {
var docElem = window.document.documentElement;
@@ -160,7 +161,7 @@ jQuery.each( {scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function( me
var top = /Y/.test( prop );
jQuery.fn[ method ] = function( val ) {
- return jQuery.access( this, function( elem, method, val ) {
+ return access( this, function( elem, method, val ) {
var win = getWindow( elem );
if ( val === undefined ) {
diff --git a/src/traversing.js b/src/traversing.js
index 5f4d390e3..15581fe3b 100644
--- a/src/traversing.js
+++ b/src/traversing.js
@@ -2,6 +2,7 @@ define([
"./core",
"./selector"
], function( jQuery ) {
+
var isSimple = /^.[^:#\[\.,]*$/,
rparentsprev = /^(?:parents|prev(?:Until|All))/,
rneedsContext = jQuery.expr.match.needsContext,
diff --git a/src/wrap.js b/src/wrap.js
index 19e3175e2..1ec2771ce 100644
--- a/src/wrap.js
+++ b/src/wrap.js
@@ -2,6 +2,7 @@ define([
"./core",
"./traversing" // parent, contents
], function( jQuery ) {
+
jQuery.fn.extend({
wrapAll: function( html ) {
if ( jQuery.isFunction( html ) ) {