yano-jquery-rails 2.1.3 → 2.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 61abfde9c6d4e5b519af96767f7b751b36302dde
4
- data.tar.gz: 1be8bf8451ecef021339524e424e2bce3f3d9796
3
+ metadata.gz: 1af2116df84fd3e577898b548ad00cbda95d5d16
4
+ data.tar.gz: cd88ed0849b49cb5d7ec6e8924bb3b9b31bfd688
5
5
  SHA512:
6
- metadata.gz: a6de7af457f3b96120a4d01c66d9ac443573d273d21b01b03705e0b0a556491de8927656147e2d618075fc840d15e1fd35e9f1d913796b492a6e471e63f8bb5e
7
- data.tar.gz: 54a87f644746a162734f57e860f35eb36726739941d06f7e1d15e44056b0670bdf961ab3d9ed9c14b50d145a9a13d24e74c9fbc1ac82c86a982c3fa649704b26
6
+ metadata.gz: d7cca08aa3f207749b8f2b8578628b5d400eefc5b22aa2eb29f87f07594ee819a51392a3324345696934e4fa172de15e09f7f1c7354bac646e65f360578617fe
7
+ data.tar.gz: e011b6619161b82d82a5cb3c2d72138f3711d2b290f118b89eb499b179ca2f126bcfd9cf4a86ab55730237f94a46e62f134306b079af2163a9304a398d6f216b
@@ -1,11 +1,11 @@
1
1
  module Yano
2
2
  module Jquery
3
3
  module Rails
4
- VERSION = "2.1.3"
4
+ VERSION = "2.1.4"
5
5
  JQUERY_VERSION = "1.12.4"
6
6
  JQUERY_2_VERSION = "2.2.4"
7
- JQUERY_3_VERSION = "3.1.0"
8
- JQUERY_UI_VERSION = "1.12.0"
7
+ JQUERY_3_VERSION = "3.1.1"
8
+ JQUERY_UI_VERSION = "1.12.1"
9
9
  JQUERY_UJS_VERSION = "1.2.2"
10
10
  end
11
11
  end
@@ -1,6 +1,5 @@
1
- /*eslint-disable no-unused-vars*/
2
1
  /*!
3
- * jQuery JavaScript Library v3.1.0
2
+ * jQuery JavaScript Library v3.1.1
4
3
  * https://jquery.com/
5
4
  *
6
5
  * Includes Sizzle.js
@@ -10,7 +9,7 @@
10
9
  * Released under the MIT license
11
10
  * https://jquery.org/license
12
11
  *
13
- * Date: 2016-07-07T21:44Z
12
+ * Date: 2016-09-22T22:30Z
14
13
  */
15
14
  ( function( global, factory ) {
16
15
 
@@ -83,13 +82,13 @@ var support = {};
83
82
  doc.head.appendChild( script ).parentNode.removeChild( script );
84
83
  }
85
84
  /* global Symbol */
86
- // Defining this global in .eslintrc would create a danger of using the global
85
+ // Defining this global in .eslintrc.json would create a danger of using the global
87
86
  // unguarded in another place, it seems safer to define global only for this module
88
87
 
89
88
 
90
89
 
91
90
  var
92
- version = "3.1.0",
91
+ version = "3.1.1",
93
92
 
94
93
  // Define a local copy of jQuery
95
94
  jQuery = function( selector, context ) {
@@ -129,13 +128,14 @@ jQuery.fn = jQuery.prototype = {
129
128
  // Get the Nth element in the matched element set OR
130
129
  // Get the whole matched element set as a clean array
131
130
  get: function( num ) {
132
- return num != null ?
133
131
 
134
- // Return just the one element from the set
135
- ( num < 0 ? this[ num + this.length ] : this[ num ] ) :
132
+ // Return all the elements in a clean array
133
+ if ( num == null ) {
134
+ return slice.call( this );
135
+ }
136
136
 
137
- // Return all the elements in a clean array
138
- slice.call( this );
137
+ // Return just the one element from the set
138
+ return num < 0 ? this[ num + this.length ] : this[ num ];
139
139
  },
140
140
 
141
141
  // Take an array of elements and push it onto the stack
@@ -543,14 +543,14 @@ function isArrayLike( obj ) {
543
543
  }
544
544
  var Sizzle =
545
545
  /*!
546
- * Sizzle CSS Selector Engine v2.3.0
546
+ * Sizzle CSS Selector Engine v2.3.3
547
547
  * https://sizzlejs.com/
548
548
  *
549
549
  * Copyright jQuery Foundation and other contributors
550
550
  * Released under the MIT license
551
551
  * http://jquery.org/license
552
552
  *
553
- * Date: 2016-01-04
553
+ * Date: 2016-08-08
554
554
  */
555
555
  (function( window ) {
556
556
 
@@ -696,7 +696,7 @@ var i,
696
696
 
697
697
  // CSS string/identifier serialization
698
698
  // https://drafts.csswg.org/cssom/#common-serializing-idioms
699
- rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,
699
+ rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
700
700
  fcssescape = function( ch, asCodePoint ) {
701
701
  if ( asCodePoint ) {
702
702
 
@@ -723,7 +723,7 @@ var i,
723
723
 
724
724
  disabledAncestor = addCombinator(
725
725
  function( elem ) {
726
- return elem.disabled === true;
726
+ return elem.disabled === true && ("form" in elem || "label" in elem);
727
727
  },
728
728
  { dir: "parentNode", next: "legend" }
729
729
  );
@@ -1009,26 +1009,54 @@ function createButtonPseudo( type ) {
1009
1009
  * @param {Boolean} disabled true for :disabled; false for :enabled
1010
1010
  */
1011
1011
  function createDisabledPseudo( disabled ) {
1012
- // Known :disabled false positives:
1013
- // IE: *[disabled]:not(button, input, select, textarea, optgroup, option, menuitem, fieldset)
1014
- // not IE: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
1012
+
1013
+ // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
1015
1014
  return function( elem ) {
1016
1015
 
1017
- // Check form elements and option elements for explicit disabling
1018
- return "label" in elem && elem.disabled === disabled ||
1019
- "form" in elem && elem.disabled === disabled ||
1016
+ // Only certain elements can match :enabled or :disabled
1017
+ // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
1018
+ // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
1019
+ if ( "form" in elem ) {
1020
+
1021
+ // Check for inherited disabledness on relevant non-disabled elements:
1022
+ // * listed form-associated elements in a disabled fieldset
1023
+ // https://html.spec.whatwg.org/multipage/forms.html#category-listed
1024
+ // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
1025
+ // * option elements in a disabled optgroup
1026
+ // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
1027
+ // All such elements have a "form" property.
1028
+ if ( elem.parentNode && elem.disabled === false ) {
1029
+
1030
+ // Option elements defer to a parent optgroup if present
1031
+ if ( "label" in elem ) {
1032
+ if ( "label" in elem.parentNode ) {
1033
+ return elem.parentNode.disabled === disabled;
1034
+ } else {
1035
+ return elem.disabled === disabled;
1036
+ }
1037
+ }
1038
+
1039
+ // Support: IE 6 - 11
1040
+ // Use the isDisabled shortcut property to check for disabled fieldset ancestors
1041
+ return elem.isDisabled === disabled ||
1020
1042
 
1021
- // Check non-disabled form elements for fieldset[disabled] ancestors
1022
- "form" in elem && elem.disabled === false && (
1023
- // Support: IE6-11+
1024
- // Ancestry is covered for us
1025
- elem.isDisabled === disabled ||
1043
+ // Where there is no isDisabled, check manually
1044
+ /* jshint -W018 */
1045
+ elem.isDisabled !== !disabled &&
1046
+ disabledAncestor( elem ) === disabled;
1047
+ }
1026
1048
 
1027
- // Otherwise, assume any non-<option> under fieldset[disabled] is disabled
1028
- /* jshint -W018 */
1029
- elem.isDisabled !== !disabled &&
1030
- ("label" in elem || !disabledAncestor( elem )) !== disabled
1031
- );
1049
+ return elem.disabled === disabled;
1050
+
1051
+ // Try to winnow out elements that can't be disabled before trusting the disabled property.
1052
+ // Some victims get caught in our net (label, legend, menu, track), but it shouldn't
1053
+ // even exist on them, let alone have a boolean value.
1054
+ } else if ( "label" in elem ) {
1055
+ return elem.disabled === disabled;
1056
+ }
1057
+
1058
+ // Remaining elements are neither :enabled nor :disabled
1059
+ return false;
1032
1060
  };
1033
1061
  }
1034
1062
 
@@ -1144,25 +1172,21 @@ setDocument = Sizzle.setDocument = function( node ) {
1144
1172
  return !document.getElementsByName || !document.getElementsByName( expando ).length;
1145
1173
  });
1146
1174
 
1147
- // ID find and filter
1175
+ // ID filter and find
1148
1176
  if ( support.getById ) {
1149
- Expr.find["ID"] = function( id, context ) {
1150
- if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
1151
- var m = context.getElementById( id );
1152
- return m ? [ m ] : [];
1153
- }
1154
- };
1155
1177
  Expr.filter["ID"] = function( id ) {
1156
1178
  var attrId = id.replace( runescape, funescape );
1157
1179
  return function( elem ) {
1158
1180
  return elem.getAttribute("id") === attrId;
1159
1181
  };
1160
1182
  };
1183
+ Expr.find["ID"] = function( id, context ) {
1184
+ if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
1185
+ var elem = context.getElementById( id );
1186
+ return elem ? [ elem ] : [];
1187
+ }
1188
+ };
1161
1189
  } else {
1162
- // Support: IE6/7
1163
- // getElementById is not reliable as a find shortcut
1164
- delete Expr.find["ID"];
1165
-
1166
1190
  Expr.filter["ID"] = function( id ) {
1167
1191
  var attrId = id.replace( runescape, funescape );
1168
1192
  return function( elem ) {
@@ -1171,6 +1195,36 @@ setDocument = Sizzle.setDocument = function( node ) {
1171
1195
  return node && node.value === attrId;
1172
1196
  };
1173
1197
  };
1198
+
1199
+ // Support: IE 6 - 7 only
1200
+ // getElementById is not reliable as a find shortcut
1201
+ Expr.find["ID"] = function( id, context ) {
1202
+ if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
1203
+ var node, i, elems,
1204
+ elem = context.getElementById( id );
1205
+
1206
+ if ( elem ) {
1207
+
1208
+ // Verify the id attribute
1209
+ node = elem.getAttributeNode("id");
1210
+ if ( node && node.value === id ) {
1211
+ return [ elem ];
1212
+ }
1213
+
1214
+ // Fall back on getElementsByName
1215
+ elems = context.getElementsByName( id );
1216
+ i = 0;
1217
+ while ( (elem = elems[i++]) ) {
1218
+ node = elem.getAttributeNode("id");
1219
+ if ( node && node.value === id ) {
1220
+ return [ elem ];
1221
+ }
1222
+ }
1223
+ }
1224
+
1225
+ return [];
1226
+ }
1227
+ };
1174
1228
  }
1175
1229
 
1176
1230
  // Tag
@@ -2211,6 +2265,7 @@ function addCombinator( matcher, combinator, base ) {
2211
2265
  return matcher( elem, context, xml );
2212
2266
  }
2213
2267
  }
2268
+ return false;
2214
2269
  } :
2215
2270
 
2216
2271
  // Check against all ancestor/preceding elements
@@ -2255,6 +2310,7 @@ function addCombinator( matcher, combinator, base ) {
2255
2310
  }
2256
2311
  }
2257
2312
  }
2313
+ return false;
2258
2314
  };
2259
2315
  }
2260
2316
 
@@ -2617,8 +2673,7 @@ select = Sizzle.select = function( selector, context, results, seed ) {
2617
2673
  // Reduce context if the leading compound selector is an ID
2618
2674
  tokens = match[0] = match[0].slice( 0 );
2619
2675
  if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
2620
- support.getById && context.nodeType === 9 && documentIsHTML &&
2621
- Expr.relative[ tokens[1].type ] ) {
2676
+ context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {
2622
2677
 
2623
2678
  context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
2624
2679
  if ( !context ) {
@@ -2800,24 +2855,29 @@ function winnow( elements, qualifier, not ) {
2800
2855
  return jQuery.grep( elements, function( elem, i ) {
2801
2856
  return !!qualifier.call( elem, i, elem ) !== not;
2802
2857
  } );
2803
-
2804
2858
  }
2805
2859
 
2860
+ // Single element
2806
2861
  if ( qualifier.nodeType ) {
2807
2862
  return jQuery.grep( elements, function( elem ) {
2808
2863
  return ( elem === qualifier ) !== not;
2809
2864
  } );
2810
-
2811
2865
  }
2812
2866
 
2813
- if ( typeof qualifier === "string" ) {
2814
- if ( risSimple.test( qualifier ) ) {
2815
- return jQuery.filter( qualifier, elements, not );
2816
- }
2867
+ // Arraylike of elements (jQuery, arguments, Array)
2868
+ if ( typeof qualifier !== "string" ) {
2869
+ return jQuery.grep( elements, function( elem ) {
2870
+ return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
2871
+ } );
2872
+ }
2817
2873
 
2818
- qualifier = jQuery.filter( qualifier, elements );
2874
+ // Simple selector that can be filtered directly, removing non-Elements
2875
+ if ( risSimple.test( qualifier ) ) {
2876
+ return jQuery.filter( qualifier, elements, not );
2819
2877
  }
2820
2878
 
2879
+ // Complex selector, compare the two sets, removing non-Elements
2880
+ qualifier = jQuery.filter( qualifier, elements );
2821
2881
  return jQuery.grep( elements, function( elem ) {
2822
2882
  return ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1;
2823
2883
  } );
@@ -2830,11 +2890,13 @@ jQuery.filter = function( expr, elems, not ) {
2830
2890
  expr = ":not(" + expr + ")";
2831
2891
  }
2832
2892
 
2833
- return elems.length === 1 && elem.nodeType === 1 ?
2834
- jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
2835
- jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
2836
- return elem.nodeType === 1;
2837
- } ) );
2893
+ if ( elems.length === 1 && elem.nodeType === 1 ) {
2894
+ return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];
2895
+ }
2896
+
2897
+ return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
2898
+ return elem.nodeType === 1;
2899
+ } ) );
2838
2900
  };
2839
2901
 
2840
2902
  jQuery.fn.extend( {
@@ -3162,14 +3224,14 @@ jQuery.each( {
3162
3224
  return this.pushStack( matched );
3163
3225
  };
3164
3226
  } );
3165
- var rnotwhite = ( /\S+/g );
3227
+ var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g );
3166
3228
 
3167
3229
 
3168
3230
 
3169
3231
  // Convert String-formatted options into Object-formatted ones
3170
3232
  function createOptions( options ) {
3171
3233
  var object = {};
3172
- jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {
3234
+ jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {
3173
3235
  object[ flag ] = true;
3174
3236
  } );
3175
3237
  return object;
@@ -3934,13 +3996,16 @@ var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
3934
3996
  }
3935
3997
  }
3936
3998
 
3937
- return chainable ?
3938
- elems :
3999
+ if ( chainable ) {
4000
+ return elems;
4001
+ }
4002
+
4003
+ // Gets
4004
+ if ( bulk ) {
4005
+ return fn.call( elems );
4006
+ }
3939
4007
 
3940
- // Gets
3941
- bulk ?
3942
- fn.call( elems ) :
3943
- len ? fn( elems[ 0 ], key ) : emptyGet;
4008
+ return len ? fn( elems[ 0 ], key ) : emptyGet;
3944
4009
  };
3945
4010
  var acceptData = function( owner ) {
3946
4011
 
@@ -4077,7 +4142,7 @@ Data.prototype = {
4077
4142
  // Otherwise, create an array by matching non-whitespace
4078
4143
  key = key in cache ?
4079
4144
  [ key ] :
4080
- ( key.match( rnotwhite ) || [] );
4145
+ ( key.match( rnothtmlwhite ) || [] );
4081
4146
  }
4082
4147
 
4083
4148
  i = key.length;
@@ -4125,6 +4190,31 @@ var dataUser = new Data();
4125
4190
  var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
4126
4191
  rmultiDash = /[A-Z]/g;
4127
4192
 
4193
+ function getData( data ) {
4194
+ if ( data === "true" ) {
4195
+ return true;
4196
+ }
4197
+
4198
+ if ( data === "false" ) {
4199
+ return false;
4200
+ }
4201
+
4202
+ if ( data === "null" ) {
4203
+ return null;
4204
+ }
4205
+
4206
+ // Only convert to a number if it doesn't change the string
4207
+ if ( data === +data + "" ) {
4208
+ return +data;
4209
+ }
4210
+
4211
+ if ( rbrace.test( data ) ) {
4212
+ return JSON.parse( data );
4213
+ }
4214
+
4215
+ return data;
4216
+ }
4217
+
4128
4218
  function dataAttr( elem, key, data ) {
4129
4219
  var name;
4130
4220
 
@@ -4136,14 +4226,7 @@ function dataAttr( elem, key, data ) {
4136
4226
 
4137
4227
  if ( typeof data === "string" ) {
4138
4228
  try {
4139
- data = data === "true" ? true :
4140
- data === "false" ? false :
4141
- data === "null" ? null :
4142
-
4143
- // Only convert to a number if it doesn't change the string
4144
- +data + "" === data ? +data :
4145
- rbrace.test( data ) ? JSON.parse( data ) :
4146
- data;
4229
+ data = getData( data );
4147
4230
  } catch ( e ) {}
4148
4231
 
4149
4232
  // Make sure we set the data so it isn't changed later
@@ -4520,7 +4603,7 @@ function getDefaultDisplay( elem ) {
4520
4603
  return display;
4521
4604
  }
4522
4605
 
4523
- temp = doc.body.appendChild( doc.createElement( nodeName ) ),
4606
+ temp = doc.body.appendChild( doc.createElement( nodeName ) );
4524
4607
  display = jQuery.css( temp, "display" );
4525
4608
 
4526
4609
  temp.parentNode.removeChild( temp );
@@ -4638,15 +4721,23 @@ function getAll( context, tag ) {
4638
4721
 
4639
4722
  // Support: IE <=9 - 11 only
4640
4723
  // Use typeof to avoid zero-argument method invocation on host objects (#15151)
4641
- var ret = typeof context.getElementsByTagName !== "undefined" ?
4642
- context.getElementsByTagName( tag || "*" ) :
4643
- typeof context.querySelectorAll !== "undefined" ?
4644
- context.querySelectorAll( tag || "*" ) :
4645
- [];
4646
-
4647
- return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
4648
- jQuery.merge( [ context ], ret ) :
4649
- ret;
4724
+ var ret;
4725
+
4726
+ if ( typeof context.getElementsByTagName !== "undefined" ) {
4727
+ ret = context.getElementsByTagName( tag || "*" );
4728
+
4729
+ } else if ( typeof context.querySelectorAll !== "undefined" ) {
4730
+ ret = context.querySelectorAll( tag || "*" );
4731
+
4732
+ } else {
4733
+ ret = [];
4734
+ }
4735
+
4736
+ if ( tag === undefined || tag && jQuery.nodeName( context, tag ) ) {
4737
+ return jQuery.merge( [ context ], ret );
4738
+ }
4739
+
4740
+ return ret;
4650
4741
  }
4651
4742
 
4652
4743
 
@@ -4920,7 +5011,7 @@ jQuery.event = {
4920
5011
  }
4921
5012
 
4922
5013
  // Handle multiple events separated by a space
4923
- types = ( types || "" ).match( rnotwhite ) || [ "" ];
5014
+ types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
4924
5015
  t = types.length;
4925
5016
  while ( t-- ) {
4926
5017
  tmp = rtypenamespace.exec( types[ t ] ) || [];
@@ -5002,7 +5093,7 @@ jQuery.event = {
5002
5093
  }
5003
5094
 
5004
5095
  // Once for each type.namespace in types; type may be omitted
5005
- types = ( types || "" ).match( rnotwhite ) || [ "" ];
5096
+ types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
5006
5097
  t = types.length;
5007
5098
  while ( t-- ) {
5008
5099
  tmp = rtypenamespace.exec( types[ t ] ) || [];
@@ -5128,51 +5219,58 @@ jQuery.event = {
5128
5219
  },
5129
5220
 
5130
5221
  handlers: function( event, handlers ) {
5131
- var i, matches, sel, handleObj,
5222
+ var i, handleObj, sel, matchedHandlers, matchedSelectors,
5132
5223
  handlerQueue = [],
5133
5224
  delegateCount = handlers.delegateCount,
5134
5225
  cur = event.target;
5135
5226
 
5136
- // Support: IE <=9
5137
5227
  // Find delegate handlers
5138
- // Black-hole SVG <use> instance trees (#13180)
5139
- //
5140
- // Support: Firefox <=42
5141
- // Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343)
5142
- if ( delegateCount && cur.nodeType &&
5143
- ( event.type !== "click" || isNaN( event.button ) || event.button < 1 ) ) {
5228
+ if ( delegateCount &&
5229
+
5230
+ // Support: IE <=9
5231
+ // Black-hole SVG <use> instance trees (trac-13180)
5232
+ cur.nodeType &&
5233
+
5234
+ // Support: Firefox <=42
5235
+ // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
5236
+ // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
5237
+ // Support: IE 11 only
5238
+ // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
5239
+ !( event.type === "click" && event.button >= 1 ) ) {
5144
5240
 
5145
5241
  for ( ; cur !== this; cur = cur.parentNode || this ) {
5146
5242
 
5147
5243
  // Don't check non-elements (#13208)
5148
5244
  // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
5149
- if ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== "click" ) ) {
5150
- matches = [];
5245
+ if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
5246
+ matchedHandlers = [];
5247
+ matchedSelectors = {};
5151
5248
  for ( i = 0; i < delegateCount; i++ ) {
5152
5249
  handleObj = handlers[ i ];
5153
5250
 
5154
5251
  // Don't conflict with Object.prototype properties (#13203)
5155
5252
  sel = handleObj.selector + " ";
5156
5253
 
5157
- if ( matches[ sel ] === undefined ) {
5158
- matches[ sel ] = handleObj.needsContext ?
5254
+ if ( matchedSelectors[ sel ] === undefined ) {
5255
+ matchedSelectors[ sel ] = handleObj.needsContext ?
5159
5256
  jQuery( sel, this ).index( cur ) > -1 :
5160
5257
  jQuery.find( sel, this, null, [ cur ] ).length;
5161
5258
  }
5162
- if ( matches[ sel ] ) {
5163
- matches.push( handleObj );
5259
+ if ( matchedSelectors[ sel ] ) {
5260
+ matchedHandlers.push( handleObj );
5164
5261
  }
5165
5262
  }
5166
- if ( matches.length ) {
5167
- handlerQueue.push( { elem: cur, handlers: matches } );
5263
+ if ( matchedHandlers.length ) {
5264
+ handlerQueue.push( { elem: cur, handlers: matchedHandlers } );
5168
5265
  }
5169
5266
  }
5170
5267
  }
5171
5268
  }
5172
5269
 
5173
5270
  // Add the remaining (directly-bound) handlers
5271
+ cur = this;
5174
5272
  if ( delegateCount < handlers.length ) {
5175
- handlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } );
5273
+ handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );
5176
5274
  }
5177
5275
 
5178
5276
  return handlerQueue;
@@ -5406,7 +5504,19 @@ jQuery.each( {
5406
5504
 
5407
5505
  // Add which for click: 1 === left; 2 === middle; 3 === right
5408
5506
  if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {
5409
- return ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
5507
+ if ( button & 1 ) {
5508
+ return 1;
5509
+ }
5510
+
5511
+ if ( button & 2 ) {
5512
+ return 3;
5513
+ }
5514
+
5515
+ if ( button & 4 ) {
5516
+ return 2;
5517
+ }
5518
+
5519
+ return 0;
5410
5520
  }
5411
5521
 
5412
5522
  return event.which;
@@ -6162,15 +6272,17 @@ function setPositiveNumber( elem, value, subtract ) {
6162
6272
  }
6163
6273
 
6164
6274
  function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
6165
- var i = extra === ( isBorderBox ? "border" : "content" ) ?
6166
-
6167
- // If we already have the right measurement, avoid augmentation
6168
- 4 :
6275
+ var i,
6276
+ val = 0;
6169
6277
 
6170
- // Otherwise initialize for horizontal or vertical properties
6171
- name === "width" ? 1 : 0,
6278
+ // If we already have the right measurement, avoid augmentation
6279
+ if ( extra === ( isBorderBox ? "border" : "content" ) ) {
6280
+ i = 4;
6172
6281
 
6173
- val = 0;
6282
+ // Otherwise initialize for horizontal or vertical properties
6283
+ } else {
6284
+ i = name === "width" ? 1 : 0;
6285
+ }
6174
6286
 
6175
6287
  for ( ; i < 4; i += 2 ) {
6176
6288
 
@@ -7024,7 +7136,7 @@ jQuery.Animation = jQuery.extend( Animation, {
7024
7136
  callback = props;
7025
7137
  props = [ "*" ];
7026
7138
  } else {
7027
- props = props.match( rnotwhite );
7139
+ props = props.match( rnothtmlwhite );
7028
7140
  }
7029
7141
 
7030
7142
  var prop,
@@ -7062,9 +7174,14 @@ jQuery.speed = function( speed, easing, fn ) {
7062
7174
  opt.duration = 0;
7063
7175
 
7064
7176
  } else {
7065
- opt.duration = typeof opt.duration === "number" ?
7066
- opt.duration : opt.duration in jQuery.fx.speeds ?
7067
- jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
7177
+ if ( typeof opt.duration !== "number" ) {
7178
+ if ( opt.duration in jQuery.fx.speeds ) {
7179
+ opt.duration = jQuery.fx.speeds[ opt.duration ];
7180
+
7181
+ } else {
7182
+ opt.duration = jQuery.fx.speeds._default;
7183
+ }
7184
+ }
7068
7185
  }
7069
7186
 
7070
7187
  // Normalize opt.queue - true/undefined/null -> "fx"
@@ -7414,7 +7531,10 @@ jQuery.extend( {
7414
7531
  removeAttr: function( elem, value ) {
7415
7532
  var name,
7416
7533
  i = 0,
7417
- attrNames = value && value.match( rnotwhite );
7534
+
7535
+ // Attribute names can contain non-HTML whitespace characters
7536
+ // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
7537
+ attrNames = value && value.match( rnothtmlwhite );
7418
7538
 
7419
7539
  if ( attrNames && elem.nodeType === 1 ) {
7420
7540
  while ( ( name = attrNames[ i++ ] ) ) {
@@ -7521,12 +7641,19 @@ jQuery.extend( {
7521
7641
  // Use proper attribute retrieval(#12072)
7522
7642
  var tabindex = jQuery.find.attr( elem, "tabindex" );
7523
7643
 
7524
- return tabindex ?
7525
- parseInt( tabindex, 10 ) :
7644
+ if ( tabindex ) {
7645
+ return parseInt( tabindex, 10 );
7646
+ }
7647
+
7648
+ if (
7526
7649
  rfocusable.test( elem.nodeName ) ||
7527
- rclickable.test( elem.nodeName ) && elem.href ?
7528
- 0 :
7529
- -1;
7650
+ rclickable.test( elem.nodeName ) &&
7651
+ elem.href
7652
+ ) {
7653
+ return 0;
7654
+ }
7655
+
7656
+ return -1;
7530
7657
  }
7531
7658
  }
7532
7659
  },
@@ -7543,9 +7670,14 @@ jQuery.extend( {
7543
7670
  // on the option
7544
7671
  // The getter ensures a default option is selected
7545
7672
  // when in an optgroup
7673
+ // eslint rule "no-unused-expressions" is disabled for this code
7674
+ // since it considers such accessions noop
7546
7675
  if ( !support.optSelected ) {
7547
7676
  jQuery.propHooks.selected = {
7548
7677
  get: function( elem ) {
7678
+
7679
+ /* eslint no-unused-expressions: "off" */
7680
+
7549
7681
  var parent = elem.parentNode;
7550
7682
  if ( parent && parent.parentNode ) {
7551
7683
  parent.parentNode.selectedIndex;
@@ -7553,6 +7685,9 @@ if ( !support.optSelected ) {
7553
7685
  return null;
7554
7686
  },
7555
7687
  set: function( elem ) {
7688
+
7689
+ /* eslint no-unused-expressions: "off" */
7690
+
7556
7691
  var parent = elem.parentNode;
7557
7692
  if ( parent ) {
7558
7693
  parent.selectedIndex;
@@ -7583,7 +7718,13 @@ jQuery.each( [
7583
7718
 
7584
7719
 
7585
7720
 
7586
- var rclass = /[\t\r\n\f]/g;
7721
+ // Strip and collapse whitespace according to HTML spec
7722
+ // https://html.spec.whatwg.org/multipage/infrastructure.html#strip-and-collapse-whitespace
7723
+ function stripAndCollapse( value ) {
7724
+ var tokens = value.match( rnothtmlwhite ) || [];
7725
+ return tokens.join( " " );
7726
+ }
7727
+
7587
7728
 
7588
7729
  function getClass( elem ) {
7589
7730
  return elem.getAttribute && elem.getAttribute( "class" ) || "";
@@ -7601,12 +7742,11 @@ jQuery.fn.extend( {
7601
7742
  }
7602
7743
 
7603
7744
  if ( typeof value === "string" && value ) {
7604
- classes = value.match( rnotwhite ) || [];
7745
+ classes = value.match( rnothtmlwhite ) || [];
7605
7746
 
7606
7747
  while ( ( elem = this[ i++ ] ) ) {
7607
7748
  curValue = getClass( elem );
7608
- cur = elem.nodeType === 1 &&
7609
- ( " " + curValue + " " ).replace( rclass, " " );
7749
+ cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
7610
7750
 
7611
7751
  if ( cur ) {
7612
7752
  j = 0;
@@ -7617,7 +7757,7 @@ jQuery.fn.extend( {
7617
7757
  }
7618
7758
 
7619
7759
  // Only assign if different to avoid unneeded rendering.
7620
- finalValue = jQuery.trim( cur );
7760
+ finalValue = stripAndCollapse( cur );
7621
7761
  if ( curValue !== finalValue ) {
7622
7762
  elem.setAttribute( "class", finalValue );
7623
7763
  }
@@ -7643,14 +7783,13 @@ jQuery.fn.extend( {
7643
7783
  }
7644
7784
 
7645
7785
  if ( typeof value === "string" && value ) {
7646
- classes = value.match( rnotwhite ) || [];
7786
+ classes = value.match( rnothtmlwhite ) || [];
7647
7787
 
7648
7788
  while ( ( elem = this[ i++ ] ) ) {
7649
7789
  curValue = getClass( elem );
7650
7790
 
7651
7791
  // This expression is here for better compressibility (see addClass)
7652
- cur = elem.nodeType === 1 &&
7653
- ( " " + curValue + " " ).replace( rclass, " " );
7792
+ cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
7654
7793
 
7655
7794
  if ( cur ) {
7656
7795
  j = 0;
@@ -7663,7 +7802,7 @@ jQuery.fn.extend( {
7663
7802
  }
7664
7803
 
7665
7804
  // Only assign if different to avoid unneeded rendering.
7666
- finalValue = jQuery.trim( cur );
7805
+ finalValue = stripAndCollapse( cur );
7667
7806
  if ( curValue !== finalValue ) {
7668
7807
  elem.setAttribute( "class", finalValue );
7669
7808
  }
@@ -7698,7 +7837,7 @@ jQuery.fn.extend( {
7698
7837
  // Toggle individual class names
7699
7838
  i = 0;
7700
7839
  self = jQuery( this );
7701
- classNames = value.match( rnotwhite ) || [];
7840
+ classNames = value.match( rnothtmlwhite ) || [];
7702
7841
 
7703
7842
  while ( ( className = classNames[ i++ ] ) ) {
7704
7843
 
@@ -7741,10 +7880,8 @@ jQuery.fn.extend( {
7741
7880
  className = " " + selector + " ";
7742
7881
  while ( ( elem = this[ i++ ] ) ) {
7743
7882
  if ( elem.nodeType === 1 &&
7744
- ( " " + getClass( elem ) + " " ).replace( rclass, " " )
7745
- .indexOf( className ) > -1
7746
- ) {
7747
- return true;
7883
+ ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
7884
+ return true;
7748
7885
  }
7749
7886
  }
7750
7887
 
@@ -7755,8 +7892,7 @@ jQuery.fn.extend( {
7755
7892
 
7756
7893
 
7757
7894
 
7758
- var rreturn = /\r/g,
7759
- rspaces = /[\x20\t\r\n\f]+/g;
7895
+ var rreturn = /\r/g;
7760
7896
 
7761
7897
  jQuery.fn.extend( {
7762
7898
  val: function( value ) {
@@ -7777,13 +7913,13 @@ jQuery.fn.extend( {
7777
7913
 
7778
7914
  ret = elem.value;
7779
7915
 
7780
- return typeof ret === "string" ?
7781
-
7782
- // Handle most common string cases
7783
- ret.replace( rreturn, "" ) :
7916
+ // Handle most common string cases
7917
+ if ( typeof ret === "string" ) {
7918
+ return ret.replace( rreturn, "" );
7919
+ }
7784
7920
 
7785
- // Handle cases where value is null/undef or number
7786
- ret == null ? "" : ret;
7921
+ // Handle cases where value is null/undef or number
7922
+ return ret == null ? "" : ret;
7787
7923
  }
7788
7924
 
7789
7925
  return;
@@ -7840,20 +7976,24 @@ jQuery.extend( {
7840
7976
  // option.text throws exceptions (#14686, #14858)
7841
7977
  // Strip and collapse whitespace
7842
7978
  // https://html.spec.whatwg.org/#strip-and-collapse-whitespace
7843
- jQuery.trim( jQuery.text( elem ) ).replace( rspaces, " " );
7979
+ stripAndCollapse( jQuery.text( elem ) );
7844
7980
  }
7845
7981
  },
7846
7982
  select: {
7847
7983
  get: function( elem ) {
7848
- var value, option,
7984
+ var value, option, i,
7849
7985
  options = elem.options,
7850
7986
  index = elem.selectedIndex,
7851
7987
  one = elem.type === "select-one",
7852
7988
  values = one ? null : [],
7853
- max = one ? index + 1 : options.length,
7854
- i = index < 0 ?
7855
- max :
7856
- one ? index : 0;
7989
+ max = one ? index + 1 : options.length;
7990
+
7991
+ if ( index < 0 ) {
7992
+ i = max;
7993
+
7994
+ } else {
7995
+ i = one ? index : 0;
7996
+ }
7857
7997
 
7858
7998
  // Loop through all the selected options
7859
7999
  for ( ; i < max; i++ ) {
@@ -8307,13 +8447,17 @@ jQuery.fn.extend( {
8307
8447
  .map( function( i, elem ) {
8308
8448
  var val = jQuery( this ).val();
8309
8449
 
8310
- return val == null ?
8311
- null :
8312
- jQuery.isArray( val ) ?
8313
- jQuery.map( val, function( val ) {
8314
- return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
8315
- } ) :
8316
- { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
8450
+ if ( val == null ) {
8451
+ return null;
8452
+ }
8453
+
8454
+ if ( jQuery.isArray( val ) ) {
8455
+ return jQuery.map( val, function( val ) {
8456
+ return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
8457
+ } );
8458
+ }
8459
+
8460
+ return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
8317
8461
  } ).get();
8318
8462
  }
8319
8463
  } );
@@ -8322,7 +8466,7 @@ jQuery.fn.extend( {
8322
8466
  var
8323
8467
  r20 = /%20/g,
8324
8468
  rhash = /#.*$/,
8325
- rts = /([?&])_=[^&]*/,
8469
+ rantiCache = /([?&])_=[^&]*/,
8326
8470
  rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
8327
8471
 
8328
8472
  // #7653, #8125, #8152: local protocol detection
@@ -8368,7 +8512,7 @@ function addToPrefiltersOrTransports( structure ) {
8368
8512
 
8369
8513
  var dataType,
8370
8514
  i = 0,
8371
- dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || [];
8515
+ dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];
8372
8516
 
8373
8517
  if ( jQuery.isFunction( func ) ) {
8374
8518
 
@@ -8836,7 +8980,7 @@ jQuery.extend( {
8836
8980
  s.type = options.method || options.type || s.method || s.type;
8837
8981
 
8838
8982
  // Extract dataTypes list
8839
- s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ];
8983
+ s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ];
8840
8984
 
8841
8985
  // A cross-domain request is in order when the origin doesn't match the current origin.
8842
8986
  if ( s.crossDomain == null ) {
@@ -8908,9 +9052,9 @@ jQuery.extend( {
8908
9052
  delete s.data;
8909
9053
  }
8910
9054
 
8911
- // Add anti-cache in uncached url if needed
9055
+ // Add or update anti-cache param if needed
8912
9056
  if ( s.cache === false ) {
8913
- cacheURL = cacheURL.replace( rts, "" );
9057
+ cacheURL = cacheURL.replace( rantiCache, "$1" );
8914
9058
  uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached;
8915
9059
  }
8916
9060
 
@@ -9649,7 +9793,7 @@ jQuery.fn.load = function( url, params, callback ) {
9649
9793
  off = url.indexOf( " " );
9650
9794
 
9651
9795
  if ( off > -1 ) {
9652
- selector = jQuery.trim( url.slice( off ) );
9796
+ selector = stripAndCollapse( url.slice( off ) );
9653
9797
  url = url.slice( 0, off );
9654
9798
  }
9655
9799
 
@@ -10041,7 +10185,6 @@ if ( typeof define === "function" && define.amd ) {
10041
10185
 
10042
10186
 
10043
10187
 
10044
-
10045
10188
  var
10046
10189
 
10047
10190
  // Map over jQuery in case of overwrite
@@ -10070,5 +10213,8 @@ if ( !noGlobal ) {
10070
10213
  }
10071
10214
 
10072
10215
 
10216
+
10217
+
10218
+
10073
10219
  return jQuery;
10074
10220
  } );