jquery-rails 4.3.3 → 4.3.5
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of jquery-rails might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/README.md +7 -1
- data/VERSIONS.md +2 -0
- data/lib/jquery/assert_select.rb +1 -1
- data/lib/jquery/rails/version.rb +2 -2
- data/test/assert_select_jquery_test.rb +5 -0
- data/vendor/assets/javascripts/jquery3.js +415 -181
- data/vendor/assets/javascripts/jquery3.min.js +2 -2
- data/vendor/assets/javascripts/jquery3.min.map +1 -1
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f9d31cb4fc9b3f730d69521de0b5b6cc90b0f1ac36fb3337055a5f2337d5c540
|
4
|
+
data.tar.gz: 8f2ee03cba1960799862363e3bf7a2ab318aba07e246b494cf43aa0206ac9d8e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8d7b8ccaab858087cdb2044bbc497d2cd17316362531a1856da8f4784be328840cb4a2a4bf4b03361ed561196c39eec2d68d41e8a05fc87fabf227974a9f9291
|
7
|
+
data.tar.gz: 525216ae5c50a6d3616d978ab6763ffd90df5bef8a473aeb47594f67aace08fd6b2cd60194ec87b1d18b06b946a8f06c9434dd312e3e6511054475ada5502d85
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -24,6 +24,12 @@ versions of jQuery.
|
|
24
24
|
|
25
25
|
## Installation
|
26
26
|
|
27
|
+
Add
|
28
|
+
```
|
29
|
+
gem 'jquery-rails'
|
30
|
+
```
|
31
|
+
to your Gemfile.
|
32
|
+
|
27
33
|
The jquery and jquery-ujs files will be added to the asset pipeline and available for you to use. If they're not already in `app/assets/javascripts/application.js` by default, add these lines:
|
28
34
|
|
29
35
|
```js
|
@@ -72,4 +78,4 @@ jquery-rails is released under the [MIT License](MIT-LICENSE).
|
|
72
78
|
|
73
79
|
## Acknowledgements
|
74
80
|
|
75
|
-
Many thanks are due to all of [the jquery-rails contributors](https://github.com/rails/jquery-rails/graphs/contributors). Special thanks to [JangoSteve](http://github.com/JangoSteve) for tirelessly answering questions and accepting patches, and the [Rails Core Team](https://github.com/
|
81
|
+
Many thanks are due to all of [the jquery-rails contributors](https://github.com/rails/jquery-rails/graphs/contributors). Special thanks to [JangoSteve](http://github.com/JangoSteve) for tirelessly answering questions and accepting patches, and the [Rails Core Team](https://github.com/orgs/rails/people) for making jquery-rails an official part of Rails 3.1.
|
data/VERSIONS.md
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
|
3
3
|
| Gem | jQuery | jQuery UJS | jQuery UI |
|
4
4
|
|--------|--------|------------| ----------|
|
5
|
+
| 4.3.5 | 1.12.4 & 2.2.4 & 3.4.1 | 1.2.2 | - |
|
6
|
+
| 4.3.4 | 1.12.4 & 2.2.4 & 3.4.0 | 1.2.2 | - |
|
5
7
|
| 4.3.3 | 1.12.4 & 2.2.4 & 3.3.1 | 1.2.2 | - |
|
6
8
|
| 4.3.2 | 1.12.4 & 2.2.4 & 3.3.0 | 1.2.2 | - |
|
7
9
|
| 4.3.1 | 1.12.4 & 2.2.4 & 3.2.1 | 1.2.2 | - |
|
data/lib/jquery/assert_select.rb
CHANGED
@@ -49,7 +49,7 @@ module Rails::Dom::Testing::Assertions::SelectorAssertions
|
|
49
49
|
|
50
50
|
PATTERN_HTML = "['\"]((\\\\\"|\\\\'|[^\"'])*)['\"]"
|
51
51
|
PATTERN_UNICODE_ESCAPED_CHAR = /\\u([0-9a-zA-Z]{4})/
|
52
|
-
SKELETAL_PATTERN = "(?:jQuery|\\$)\\(%s\\)\\.%s\\(%s\\);"
|
52
|
+
SKELETAL_PATTERN = "(?:jQuery|\\$)\\(%s\\)\\.%s\\(%s\\)[;]?"
|
53
53
|
|
54
54
|
def assert_select_jquery(*args, &block)
|
55
55
|
jquery_method = args.first.is_a?(Symbol) ? args.shift : nil
|
data/lib/jquery/rails/version.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'ostruct'
|
1
2
|
require_relative 'test_helper'
|
2
3
|
require_relative '../lib/jquery/assert_select'
|
3
4
|
|
@@ -19,6 +20,9 @@ class AssertSelectJQueryTest < ActiveSupport::TestCase
|
|
19
20
|
$("#cart tr:not(.total_line) > *").remove();
|
20
21
|
$("[href|=\"val\"][href$=\"val\"][href^=\"val\"]").remove();
|
21
22
|
$("tr + td, li").remove();
|
23
|
+
|
24
|
+
// without semicolon
|
25
|
+
$("#browser_cart").hide("blind", 1000)
|
22
26
|
JS
|
23
27
|
|
24
28
|
setup do
|
@@ -28,6 +32,7 @@ class AssertSelectJQueryTest < ActiveSupport::TestCase
|
|
28
32
|
def test_target_as_receiver
|
29
33
|
assert_nothing_raised do
|
30
34
|
assert_select_jquery :show, :blind, '#card'
|
35
|
+
assert_select_jquery :hide, :blind, '#browser_cart'
|
31
36
|
assert_select_jquery :html, '#id' do
|
32
37
|
assert_select 'p', 'something'
|
33
38
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* jQuery JavaScript Library v3.
|
2
|
+
* jQuery JavaScript Library v3.4.1
|
3
3
|
* https://jquery.com/
|
4
4
|
*
|
5
5
|
* Includes Sizzle.js
|
@@ -9,7 +9,7 @@
|
|
9
9
|
* Released under the MIT license
|
10
10
|
* https://jquery.org/license
|
11
11
|
*
|
12
|
-
* Date:
|
12
|
+
* Date: 2019-05-01T21:04Z
|
13
13
|
*/
|
14
14
|
( function( global, factory ) {
|
15
15
|
|
@@ -91,20 +91,33 @@ var isWindow = function isWindow( obj ) {
|
|
91
91
|
var preservedScriptAttributes = {
|
92
92
|
type: true,
|
93
93
|
src: true,
|
94
|
+
nonce: true,
|
94
95
|
noModule: true
|
95
96
|
};
|
96
97
|
|
97
|
-
function DOMEval( code,
|
98
|
+
function DOMEval( code, node, doc ) {
|
98
99
|
doc = doc || document;
|
99
100
|
|
100
|
-
var i,
|
101
|
+
var i, val,
|
101
102
|
script = doc.createElement( "script" );
|
102
103
|
|
103
104
|
script.text = code;
|
104
105
|
if ( node ) {
|
105
106
|
for ( i in preservedScriptAttributes ) {
|
106
|
-
|
107
|
-
|
107
|
+
|
108
|
+
// Support: Firefox 64+, Edge 18+
|
109
|
+
// Some browsers don't support the "nonce" property on scripts.
|
110
|
+
// On the other hand, just using `getAttribute` is not enough as
|
111
|
+
// the `nonce` attribute is reset to an empty string whenever it
|
112
|
+
// becomes browsing-context connected.
|
113
|
+
// See https://github.com/whatwg/html/issues/2369
|
114
|
+
// See https://html.spec.whatwg.org/#nonce-attributes
|
115
|
+
// The `node.getAttribute` check was added for the sake of
|
116
|
+
// `jQuery.globalEval` so that it can fake a nonce-containing node
|
117
|
+
// via an object.
|
118
|
+
val = node[ i ] || node.getAttribute && node.getAttribute( i );
|
119
|
+
if ( val ) {
|
120
|
+
script.setAttribute( i, val );
|
108
121
|
}
|
109
122
|
}
|
110
123
|
}
|
@@ -129,7 +142,7 @@ function toType( obj ) {
|
|
129
142
|
|
130
143
|
|
131
144
|
var
|
132
|
-
version = "3.
|
145
|
+
version = "3.4.1",
|
133
146
|
|
134
147
|
// Define a local copy of jQuery
|
135
148
|
jQuery = function( selector, context ) {
|
@@ -258,25 +271,28 @@ jQuery.extend = jQuery.fn.extend = function() {
|
|
258
271
|
|
259
272
|
// Extend the base object
|
260
273
|
for ( name in options ) {
|
261
|
-
src = target[ name ];
|
262
274
|
copy = options[ name ];
|
263
275
|
|
276
|
+
// Prevent Object.prototype pollution
|
264
277
|
// Prevent never-ending loop
|
265
|
-
if ( target === copy ) {
|
278
|
+
if ( name === "__proto__" || target === copy ) {
|
266
279
|
continue;
|
267
280
|
}
|
268
281
|
|
269
282
|
// Recurse if we're merging plain objects or arrays
|
270
283
|
if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
|
271
284
|
( copyIsArray = Array.isArray( copy ) ) ) ) {
|
285
|
+
src = target[ name ];
|
272
286
|
|
273
|
-
|
274
|
-
|
275
|
-
clone =
|
276
|
-
|
287
|
+
// Ensure proper type for the source value
|
288
|
+
if ( copyIsArray && !Array.isArray( src ) ) {
|
289
|
+
clone = [];
|
290
|
+
} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {
|
291
|
+
clone = {};
|
277
292
|
} else {
|
278
|
-
clone = src
|
293
|
+
clone = src;
|
279
294
|
}
|
295
|
+
copyIsArray = false;
|
280
296
|
|
281
297
|
// Never move original objects, clone them
|
282
298
|
target[ name ] = jQuery.extend( deep, clone, copy );
|
@@ -329,9 +345,6 @@ jQuery.extend( {
|
|
329
345
|
},
|
330
346
|
|
331
347
|
isEmptyObject: function( obj ) {
|
332
|
-
|
333
|
-
/* eslint-disable no-unused-vars */
|
334
|
-
// See https://github.com/eslint/eslint/issues/6125
|
335
348
|
var name;
|
336
349
|
|
337
350
|
for ( name in obj ) {
|
@@ -341,8 +354,8 @@ jQuery.extend( {
|
|
341
354
|
},
|
342
355
|
|
343
356
|
// Evaluates a script in a global context
|
344
|
-
globalEval: function( code ) {
|
345
|
-
DOMEval( code );
|
357
|
+
globalEval: function( code, options ) {
|
358
|
+
DOMEval( code, { nonce: options && options.nonce } );
|
346
359
|
},
|
347
360
|
|
348
361
|
each: function( obj, callback ) {
|
@@ -498,14 +511,14 @@ function isArrayLike( obj ) {
|
|
498
511
|
}
|
499
512
|
var Sizzle =
|
500
513
|
/*!
|
501
|
-
* Sizzle CSS Selector Engine v2.3.
|
514
|
+
* Sizzle CSS Selector Engine v2.3.4
|
502
515
|
* https://sizzlejs.com/
|
503
516
|
*
|
504
|
-
* Copyright
|
517
|
+
* Copyright JS Foundation and other contributors
|
505
518
|
* Released under the MIT license
|
506
|
-
*
|
519
|
+
* https://js.foundation/
|
507
520
|
*
|
508
|
-
* Date:
|
521
|
+
* Date: 2019-04-08
|
509
522
|
*/
|
510
523
|
(function( window ) {
|
511
524
|
|
@@ -539,6 +552,7 @@ var i,
|
|
539
552
|
classCache = createCache(),
|
540
553
|
tokenCache = createCache(),
|
541
554
|
compilerCache = createCache(),
|
555
|
+
nonnativeSelectorCache = createCache(),
|
542
556
|
sortOrder = function( a, b ) {
|
543
557
|
if ( a === b ) {
|
544
558
|
hasDuplicate = true;
|
@@ -600,8 +614,7 @@ var i,
|
|
600
614
|
|
601
615
|
rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
|
602
616
|
rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
|
603
|
-
|
604
|
-
rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
|
617
|
+
rdescend = new RegExp( whitespace + "|>" ),
|
605
618
|
|
606
619
|
rpseudo = new RegExp( pseudos ),
|
607
620
|
ridentifier = new RegExp( "^" + identifier + "$" ),
|
@@ -622,6 +635,7 @@ var i,
|
|
622
635
|
whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
|
623
636
|
},
|
624
637
|
|
638
|
+
rhtml = /HTML$/i,
|
625
639
|
rinputs = /^(?:input|select|textarea|button)$/i,
|
626
640
|
rheader = /^h\d$/i,
|
627
641
|
|
@@ -676,9 +690,9 @@ var i,
|
|
676
690
|
setDocument();
|
677
691
|
},
|
678
692
|
|
679
|
-
|
693
|
+
inDisabledFieldset = addCombinator(
|
680
694
|
function( elem ) {
|
681
|
-
return elem.disabled === true && (
|
695
|
+
return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset";
|
682
696
|
},
|
683
697
|
{ dir: "parentNode", next: "legend" }
|
684
698
|
);
|
@@ -791,18 +805,22 @@ function Sizzle( selector, context, results, seed ) {
|
|
791
805
|
|
792
806
|
// Take advantage of querySelectorAll
|
793
807
|
if ( support.qsa &&
|
794
|
-
!
|
795
|
-
(!rbuggyQSA || !rbuggyQSA.test( selector ))
|
796
|
-
|
797
|
-
if ( nodeType !== 1 ) {
|
798
|
-
newContext = context;
|
799
|
-
newSelector = selector;
|
808
|
+
!nonnativeSelectorCache[ selector + " " ] &&
|
809
|
+
(!rbuggyQSA || !rbuggyQSA.test( selector )) &&
|
800
810
|
|
801
|
-
//
|
802
|
-
// Thanks to Andrew Dupont for this workaround technique
|
803
|
-
// Support: IE <=8
|
811
|
+
// Support: IE 8 only
|
804
812
|
// Exclude object elements
|
805
|
-
|
813
|
+
(nodeType !== 1 || context.nodeName.toLowerCase() !== "object") ) {
|
814
|
+
|
815
|
+
newSelector = selector;
|
816
|
+
newContext = context;
|
817
|
+
|
818
|
+
// qSA considers elements outside a scoping root when evaluating child or
|
819
|
+
// descendant combinators, which is not what we want.
|
820
|
+
// In such cases, we work around the behavior by prefixing every selector in the
|
821
|
+
// list with an ID selector referencing the scope context.
|
822
|
+
// Thanks to Andrew Dupont for this technique.
|
823
|
+
if ( nodeType === 1 && rdescend.test( selector ) ) {
|
806
824
|
|
807
825
|
// Capture the context ID, setting it first if necessary
|
808
826
|
if ( (nid = context.getAttribute( "id" )) ) {
|
@@ -824,17 +842,16 @@ function Sizzle( selector, context, results, seed ) {
|
|
824
842
|
context;
|
825
843
|
}
|
826
844
|
|
827
|
-
|
828
|
-
|
829
|
-
|
830
|
-
|
831
|
-
|
832
|
-
|
833
|
-
|
834
|
-
|
835
|
-
|
836
|
-
|
837
|
-
}
|
845
|
+
try {
|
846
|
+
push.apply( results,
|
847
|
+
newContext.querySelectorAll( newSelector )
|
848
|
+
);
|
849
|
+
return results;
|
850
|
+
} catch ( qsaError ) {
|
851
|
+
nonnativeSelectorCache( selector, true );
|
852
|
+
} finally {
|
853
|
+
if ( nid === expando ) {
|
854
|
+
context.removeAttribute( "id" );
|
838
855
|
}
|
839
856
|
}
|
840
857
|
}
|
@@ -998,7 +1015,7 @@ function createDisabledPseudo( disabled ) {
|
|
998
1015
|
// Where there is no isDisabled, check manually
|
999
1016
|
/* jshint -W018 */
|
1000
1017
|
elem.isDisabled !== !disabled &&
|
1001
|
-
|
1018
|
+
inDisabledFieldset( elem ) === disabled;
|
1002
1019
|
}
|
1003
1020
|
|
1004
1021
|
return elem.disabled === disabled;
|
@@ -1055,10 +1072,13 @@ support = Sizzle.support = {};
|
|
1055
1072
|
* @returns {Boolean} True iff elem is a non-HTML XML node
|
1056
1073
|
*/
|
1057
1074
|
isXML = Sizzle.isXML = function( elem ) {
|
1058
|
-
|
1059
|
-
|
1060
|
-
|
1061
|
-
|
1075
|
+
var namespace = elem.namespaceURI,
|
1076
|
+
docElem = (elem.ownerDocument || elem).documentElement;
|
1077
|
+
|
1078
|
+
// Support: IE <=8
|
1079
|
+
// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes
|
1080
|
+
// https://bugs.jquery.com/ticket/4833
|
1081
|
+
return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" );
|
1062
1082
|
};
|
1063
1083
|
|
1064
1084
|
/**
|
@@ -1480,11 +1500,8 @@ Sizzle.matchesSelector = function( elem, expr ) {
|
|
1480
1500
|
setDocument( elem );
|
1481
1501
|
}
|
1482
1502
|
|
1483
|
-
// Make sure that attribute selectors are quoted
|
1484
|
-
expr = expr.replace( rattributeQuotes, "='$1']" );
|
1485
|
-
|
1486
1503
|
if ( support.matchesSelector && documentIsHTML &&
|
1487
|
-
!
|
1504
|
+
!nonnativeSelectorCache[ expr + " " ] &&
|
1488
1505
|
( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
|
1489
1506
|
( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
|
1490
1507
|
|
@@ -1498,7 +1515,9 @@ Sizzle.matchesSelector = function( elem, expr ) {
|
|
1498
1515
|
elem.document && elem.document.nodeType !== 11 ) {
|
1499
1516
|
return ret;
|
1500
1517
|
}
|
1501
|
-
} catch (e) {
|
1518
|
+
} catch (e) {
|
1519
|
+
nonnativeSelectorCache( expr, true );
|
1520
|
+
}
|
1502
1521
|
}
|
1503
1522
|
|
1504
1523
|
return Sizzle( expr, document, null, [ elem ] ).length > 0;
|
@@ -1957,7 +1976,7 @@ Expr = Sizzle.selectors = {
|
|
1957
1976
|
"contains": markFunction(function( text ) {
|
1958
1977
|
text = text.replace( runescape, funescape );
|
1959
1978
|
return function( elem ) {
|
1960
|
-
return ( elem.textContent ||
|
1979
|
+
return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;
|
1961
1980
|
};
|
1962
1981
|
}),
|
1963
1982
|
|
@@ -2096,7 +2115,11 @@ Expr = Sizzle.selectors = {
|
|
2096
2115
|
}),
|
2097
2116
|
|
2098
2117
|
"lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
|
2099
|
-
var i = argument < 0 ?
|
2118
|
+
var i = argument < 0 ?
|
2119
|
+
argument + length :
|
2120
|
+
argument > length ?
|
2121
|
+
length :
|
2122
|
+
argument;
|
2100
2123
|
for ( ; --i >= 0; ) {
|
2101
2124
|
matchIndexes.push( i );
|
2102
2125
|
}
|
@@ -3146,18 +3169,18 @@ jQuery.each( {
|
|
3146
3169
|
return siblings( elem.firstChild );
|
3147
3170
|
},
|
3148
3171
|
contents: function( elem ) {
|
3149
|
-
|
3150
|
-
|
3151
|
-
|
3172
|
+
if ( typeof elem.contentDocument !== "undefined" ) {
|
3173
|
+
return elem.contentDocument;
|
3174
|
+
}
|
3152
3175
|
|
3153
|
-
|
3154
|
-
|
3155
|
-
|
3156
|
-
|
3157
|
-
|
3158
|
-
|
3176
|
+
// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only
|
3177
|
+
// Treat the template element as a regular one in browsers that
|
3178
|
+
// don't support it.
|
3179
|
+
if ( nodeName( elem, "template" ) ) {
|
3180
|
+
elem = elem.content || elem;
|
3181
|
+
}
|
3159
3182
|
|
3160
|
-
|
3183
|
+
return jQuery.merge( [], elem.childNodes );
|
3161
3184
|
}
|
3162
3185
|
}, function( name, fn ) {
|
3163
3186
|
jQuery.fn[ name ] = function( until, selector ) {
|
@@ -4466,6 +4489,26 @@ var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
|
|
4466
4489
|
|
4467
4490
|
var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
|
4468
4491
|
|
4492
|
+
var documentElement = document.documentElement;
|
4493
|
+
|
4494
|
+
|
4495
|
+
|
4496
|
+
var isAttached = function( elem ) {
|
4497
|
+
return jQuery.contains( elem.ownerDocument, elem );
|
4498
|
+
},
|
4499
|
+
composed = { composed: true };
|
4500
|
+
|
4501
|
+
// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only
|
4502
|
+
// Check attachment across shadow DOM boundaries when possible (gh-3504)
|
4503
|
+
// Support: iOS 10.0-10.2 only
|
4504
|
+
// Early iOS 10 versions support `attachShadow` but not `getRootNode`,
|
4505
|
+
// leading to errors. We need to check for `getRootNode`.
|
4506
|
+
if ( documentElement.getRootNode ) {
|
4507
|
+
isAttached = function( elem ) {
|
4508
|
+
return jQuery.contains( elem.ownerDocument, elem ) ||
|
4509
|
+
elem.getRootNode( composed ) === elem.ownerDocument;
|
4510
|
+
};
|
4511
|
+
}
|
4469
4512
|
var isHiddenWithinTree = function( elem, el ) {
|
4470
4513
|
|
4471
4514
|
// isHiddenWithinTree might be called from jQuery#filter function;
|
@@ -4480,7 +4523,7 @@ var isHiddenWithinTree = function( elem, el ) {
|
|
4480
4523
|
// Support: Firefox <=43 - 45
|
4481
4524
|
// Disconnected elements can have computed display: none, so first confirm that elem is
|
4482
4525
|
// in the document.
|
4483
|
-
|
4526
|
+
isAttached( elem ) &&
|
4484
4527
|
|
4485
4528
|
jQuery.css( elem, "display" ) === "none";
|
4486
4529
|
};
|
@@ -4522,7 +4565,8 @@ function adjustCSS( elem, prop, valueParts, tween ) {
|
|
4522
4565
|
unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
|
4523
4566
|
|
4524
4567
|
// Starting value computation is required for potential unit mismatches
|
4525
|
-
initialInUnit =
|
4568
|
+
initialInUnit = elem.nodeType &&
|
4569
|
+
( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
|
4526
4570
|
rcssNum.exec( jQuery.css( elem, prop ) );
|
4527
4571
|
|
4528
4572
|
if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
|
@@ -4669,7 +4713,7 @@ jQuery.fn.extend( {
|
|
4669
4713
|
} );
|
4670
4714
|
var rcheckableType = ( /^(?:checkbox|radio)$/i );
|
4671
4715
|
|
4672
|
-
var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]
|
4716
|
+
var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i );
|
4673
4717
|
|
4674
4718
|
var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i );
|
4675
4719
|
|
@@ -4741,7 +4785,7 @@ function setGlobalEval( elems, refElements ) {
|
|
4741
4785
|
var rhtml = /<|&#?\w+;/;
|
4742
4786
|
|
4743
4787
|
function buildFragment( elems, context, scripts, selection, ignored ) {
|
4744
|
-
var elem, tmp, tag, wrap,
|
4788
|
+
var elem, tmp, tag, wrap, attached, j,
|
4745
4789
|
fragment = context.createDocumentFragment(),
|
4746
4790
|
nodes = [],
|
4747
4791
|
i = 0,
|
@@ -4805,13 +4849,13 @@ function buildFragment( elems, context, scripts, selection, ignored ) {
|
|
4805
4849
|
continue;
|
4806
4850
|
}
|
4807
4851
|
|
4808
|
-
|
4852
|
+
attached = isAttached( elem );
|
4809
4853
|
|
4810
4854
|
// Append to fragment
|
4811
4855
|
tmp = getAll( fragment.appendChild( elem ), "script" );
|
4812
4856
|
|
4813
4857
|
// Preserve script evaluation history
|
4814
|
-
if (
|
4858
|
+
if ( attached ) {
|
4815
4859
|
setGlobalEval( tmp );
|
4816
4860
|
}
|
4817
4861
|
|
@@ -4854,8 +4898,6 @@ function buildFragment( elems, context, scripts, selection, ignored ) {
|
|
4854
4898
|
div.innerHTML = "<textarea>x</textarea>";
|
4855
4899
|
support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
|
4856
4900
|
} )();
|
4857
|
-
var documentElement = document.documentElement;
|
4858
|
-
|
4859
4901
|
|
4860
4902
|
|
4861
4903
|
var
|
@@ -4871,8 +4913,19 @@ function returnFalse() {
|
|
4871
4913
|
return false;
|
4872
4914
|
}
|
4873
4915
|
|
4916
|
+
// Support: IE <=9 - 11+
|
4917
|
+
// focus() and blur() are asynchronous, except when they are no-op.
|
4918
|
+
// So expect focus to be synchronous when the element is already active,
|
4919
|
+
// and blur to be synchronous when the element is not already active.
|
4920
|
+
// (focus and blur are always synchronous in other supported browsers,
|
4921
|
+
// this just defines when we can count on it).
|
4922
|
+
function expectSync( elem, type ) {
|
4923
|
+
return ( elem === safeActiveElement() ) === ( type === "focus" );
|
4924
|
+
}
|
4925
|
+
|
4874
4926
|
// Support: IE <=9 only
|
4875
|
-
//
|
4927
|
+
// Accessing document.activeElement can throw unexpectedly
|
4928
|
+
// https://bugs.jquery.com/ticket/13393
|
4876
4929
|
function safeActiveElement() {
|
4877
4930
|
try {
|
4878
4931
|
return document.activeElement;
|
@@ -5172,9 +5225,10 @@ jQuery.event = {
|
|
5172
5225
|
while ( ( handleObj = matched.handlers[ j++ ] ) &&
|
5173
5226
|
!event.isImmediatePropagationStopped() ) {
|
5174
5227
|
|
5175
|
-
//
|
5176
|
-
//
|
5177
|
-
if ( !event.rnamespace ||
|
5228
|
+
// If the event is namespaced, then each handler is only invoked if it is
|
5229
|
+
// specially universal or its namespaces are a superset of the event's.
|
5230
|
+
if ( !event.rnamespace || handleObj.namespace === false ||
|
5231
|
+
event.rnamespace.test( handleObj.namespace ) ) {
|
5178
5232
|
|
5179
5233
|
event.handleObj = handleObj;
|
5180
5234
|
event.data = handleObj.data;
|
@@ -5298,39 +5352,51 @@ jQuery.event = {
|
|
5298
5352
|
// Prevent triggered image.load events from bubbling to window.load
|
5299
5353
|
noBubble: true
|
5300
5354
|
},
|
5301
|
-
|
5355
|
+
click: {
|
5302
5356
|
|
5303
|
-
//
|
5304
|
-
|
5305
|
-
|
5306
|
-
|
5307
|
-
|
5308
|
-
|
5309
|
-
|
5310
|
-
|
5311
|
-
|
5312
|
-
|
5313
|
-
|
5314
|
-
|
5315
|
-
|
5316
|
-
return false;
|
5357
|
+
// Utilize native event to ensure correct state for checkable inputs
|
5358
|
+
setup: function( data ) {
|
5359
|
+
|
5360
|
+
// For mutual compressibility with _default, replace `this` access with a local var.
|
5361
|
+
// `|| data` is dead code meant only to preserve the variable through minification.
|
5362
|
+
var el = this || data;
|
5363
|
+
|
5364
|
+
// Claim the first handler
|
5365
|
+
if ( rcheckableType.test( el.type ) &&
|
5366
|
+
el.click && nodeName( el, "input" ) ) {
|
5367
|
+
|
5368
|
+
// dataPriv.set( el, "click", ... )
|
5369
|
+
leverageNative( el, "click", returnTrue );
|
5317
5370
|
}
|
5371
|
+
|
5372
|
+
// Return false to allow normal processing in the caller
|
5373
|
+
return false;
|
5318
5374
|
},
|
5319
|
-
|
5320
|
-
},
|
5321
|
-
click: {
|
5375
|
+
trigger: function( data ) {
|
5322
5376
|
|
5323
|
-
|
5324
|
-
|
5325
|
-
|
5326
|
-
|
5327
|
-
|
5377
|
+
// For mutual compressibility with _default, replace `this` access with a local var.
|
5378
|
+
// `|| data` is dead code meant only to preserve the variable through minification.
|
5379
|
+
var el = this || data;
|
5380
|
+
|
5381
|
+
// Force setup before triggering a click
|
5382
|
+
if ( rcheckableType.test( el.type ) &&
|
5383
|
+
el.click && nodeName( el, "input" ) ) {
|
5384
|
+
|
5385
|
+
leverageNative( el, "click" );
|
5328
5386
|
}
|
5387
|
+
|
5388
|
+
// Return non-false to allow normal event-path propagation
|
5389
|
+
return true;
|
5329
5390
|
},
|
5330
5391
|
|
5331
|
-
// For cross-browser consistency,
|
5392
|
+
// For cross-browser consistency, suppress native .click() on links
|
5393
|
+
// Also prevent it if we're currently inside a leveraged native-event stack
|
5332
5394
|
_default: function( event ) {
|
5333
|
-
|
5395
|
+
var target = event.target;
|
5396
|
+
return rcheckableType.test( target.type ) &&
|
5397
|
+
target.click && nodeName( target, "input" ) &&
|
5398
|
+
dataPriv.get( target, "click" ) ||
|
5399
|
+
nodeName( target, "a" );
|
5334
5400
|
}
|
5335
5401
|
},
|
5336
5402
|
|
@@ -5347,6 +5413,93 @@ jQuery.event = {
|
|
5347
5413
|
}
|
5348
5414
|
};
|
5349
5415
|
|
5416
|
+
// Ensure the presence of an event listener that handles manually-triggered
|
5417
|
+
// synthetic events by interrupting progress until reinvoked in response to
|
5418
|
+
// *native* events that it fires directly, ensuring that state changes have
|
5419
|
+
// already occurred before other listeners are invoked.
|
5420
|
+
function leverageNative( el, type, expectSync ) {
|
5421
|
+
|
5422
|
+
// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add
|
5423
|
+
if ( !expectSync ) {
|
5424
|
+
if ( dataPriv.get( el, type ) === undefined ) {
|
5425
|
+
jQuery.event.add( el, type, returnTrue );
|
5426
|
+
}
|
5427
|
+
return;
|
5428
|
+
}
|
5429
|
+
|
5430
|
+
// Register the controller as a special universal handler for all event namespaces
|
5431
|
+
dataPriv.set( el, type, false );
|
5432
|
+
jQuery.event.add( el, type, {
|
5433
|
+
namespace: false,
|
5434
|
+
handler: function( event ) {
|
5435
|
+
var notAsync, result,
|
5436
|
+
saved = dataPriv.get( this, type );
|
5437
|
+
|
5438
|
+
if ( ( event.isTrigger & 1 ) && this[ type ] ) {
|
5439
|
+
|
5440
|
+
// Interrupt processing of the outer synthetic .trigger()ed event
|
5441
|
+
// Saved data should be false in such cases, but might be a leftover capture object
|
5442
|
+
// from an async native handler (gh-4350)
|
5443
|
+
if ( !saved.length ) {
|
5444
|
+
|
5445
|
+
// Store arguments for use when handling the inner native event
|
5446
|
+
// There will always be at least one argument (an event object), so this array
|
5447
|
+
// will not be confused with a leftover capture object.
|
5448
|
+
saved = slice.call( arguments );
|
5449
|
+
dataPriv.set( this, type, saved );
|
5450
|
+
|
5451
|
+
// Trigger the native event and capture its result
|
5452
|
+
// Support: IE <=9 - 11+
|
5453
|
+
// focus() and blur() are asynchronous
|
5454
|
+
notAsync = expectSync( this, type );
|
5455
|
+
this[ type ]();
|
5456
|
+
result = dataPriv.get( this, type );
|
5457
|
+
if ( saved !== result || notAsync ) {
|
5458
|
+
dataPriv.set( this, type, false );
|
5459
|
+
} else {
|
5460
|
+
result = {};
|
5461
|
+
}
|
5462
|
+
if ( saved !== result ) {
|
5463
|
+
|
5464
|
+
// Cancel the outer synthetic event
|
5465
|
+
event.stopImmediatePropagation();
|
5466
|
+
event.preventDefault();
|
5467
|
+
return result.value;
|
5468
|
+
}
|
5469
|
+
|
5470
|
+
// If this is an inner synthetic event for an event with a bubbling surrogate
|
5471
|
+
// (focus or blur), assume that the surrogate already propagated from triggering the
|
5472
|
+
// native event and prevent that from happening again here.
|
5473
|
+
// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the
|
5474
|
+
// bubbling surrogate propagates *after* the non-bubbling base), but that seems
|
5475
|
+
// less bad than duplication.
|
5476
|
+
} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {
|
5477
|
+
event.stopPropagation();
|
5478
|
+
}
|
5479
|
+
|
5480
|
+
// If this is a native event triggered above, everything is now in order
|
5481
|
+
// Fire an inner synthetic event with the original arguments
|
5482
|
+
} else if ( saved.length ) {
|
5483
|
+
|
5484
|
+
// ...and capture the result
|
5485
|
+
dataPriv.set( this, type, {
|
5486
|
+
value: jQuery.event.trigger(
|
5487
|
+
|
5488
|
+
// Support: IE <=9 - 11+
|
5489
|
+
// Extend with the prototype to reset the above stopImmediatePropagation()
|
5490
|
+
jQuery.extend( saved[ 0 ], jQuery.Event.prototype ),
|
5491
|
+
saved.slice( 1 ),
|
5492
|
+
this
|
5493
|
+
)
|
5494
|
+
} );
|
5495
|
+
|
5496
|
+
// Abort handling of the native event
|
5497
|
+
event.stopImmediatePropagation();
|
5498
|
+
}
|
5499
|
+
}
|
5500
|
+
} );
|
5501
|
+
}
|
5502
|
+
|
5350
5503
|
jQuery.removeEvent = function( elem, type, handle ) {
|
5351
5504
|
|
5352
5505
|
// This "if" is needed for plain objects
|
@@ -5459,6 +5612,7 @@ jQuery.each( {
|
|
5459
5612
|
shiftKey: true,
|
5460
5613
|
view: true,
|
5461
5614
|
"char": true,
|
5615
|
+
code: true,
|
5462
5616
|
charCode: true,
|
5463
5617
|
key: true,
|
5464
5618
|
keyCode: true,
|
@@ -5505,6 +5659,33 @@ jQuery.each( {
|
|
5505
5659
|
}
|
5506
5660
|
}, jQuery.event.addProp );
|
5507
5661
|
|
5662
|
+
jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) {
|
5663
|
+
jQuery.event.special[ type ] = {
|
5664
|
+
|
5665
|
+
// Utilize native event if possible so blur/focus sequence is correct
|
5666
|
+
setup: function() {
|
5667
|
+
|
5668
|
+
// Claim the first handler
|
5669
|
+
// dataPriv.set( this, "focus", ... )
|
5670
|
+
// dataPriv.set( this, "blur", ... )
|
5671
|
+
leverageNative( this, type, expectSync );
|
5672
|
+
|
5673
|
+
// Return false to allow normal processing in the caller
|
5674
|
+
return false;
|
5675
|
+
},
|
5676
|
+
trigger: function() {
|
5677
|
+
|
5678
|
+
// Force setup before trigger
|
5679
|
+
leverageNative( this, type );
|
5680
|
+
|
5681
|
+
// Return non-false to allow normal event-path propagation
|
5682
|
+
return true;
|
5683
|
+
},
|
5684
|
+
|
5685
|
+
delegateType: delegateType
|
5686
|
+
};
|
5687
|
+
} );
|
5688
|
+
|
5508
5689
|
// Create mouseenter/leave events using mouseover/out and event-time checks
|
5509
5690
|
// so that event delegation works in jQuery.
|
5510
5691
|
// Do the same for pointerenter/pointerleave and pointerover/pointerout
|
@@ -5755,11 +5936,13 @@ function domManip( collection, args, callback, ignored ) {
|
|
5755
5936
|
if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) {
|
5756
5937
|
|
5757
5938
|
// Optional AJAX dependency, but won't run scripts if not present
|
5758
|
-
if ( jQuery._evalUrl ) {
|
5759
|
-
jQuery._evalUrl( node.src
|
5939
|
+
if ( jQuery._evalUrl && !node.noModule ) {
|
5940
|
+
jQuery._evalUrl( node.src, {
|
5941
|
+
nonce: node.nonce || node.getAttribute( "nonce" )
|
5942
|
+
} );
|
5760
5943
|
}
|
5761
5944
|
} else {
|
5762
|
-
DOMEval( node.textContent.replace( rcleanScript, "" ),
|
5945
|
+
DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc );
|
5763
5946
|
}
|
5764
5947
|
}
|
5765
5948
|
}
|
@@ -5781,7 +5964,7 @@ function remove( elem, selector, keepData ) {
|
|
5781
5964
|
}
|
5782
5965
|
|
5783
5966
|
if ( node.parentNode ) {
|
5784
|
-
if ( keepData &&
|
5967
|
+
if ( keepData && isAttached( node ) ) {
|
5785
5968
|
setGlobalEval( getAll( node, "script" ) );
|
5786
5969
|
}
|
5787
5970
|
node.parentNode.removeChild( node );
|
@@ -5799,7 +5982,7 @@ jQuery.extend( {
|
|
5799
5982
|
clone: function( elem, dataAndEvents, deepDataAndEvents ) {
|
5800
5983
|
var i, l, srcElements, destElements,
|
5801
5984
|
clone = elem.cloneNode( true ),
|
5802
|
-
inPage =
|
5985
|
+
inPage = isAttached( elem );
|
5803
5986
|
|
5804
5987
|
// Fix IE cloning issues
|
5805
5988
|
if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
|
@@ -6095,8 +6278,10 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
|
|
6095
6278
|
|
6096
6279
|
// Support: IE 9 only
|
6097
6280
|
// Detect overflow:scroll screwiness (gh-3699)
|
6281
|
+
// Support: Chrome <=64
|
6282
|
+
// Don't get tricked when zoom affects offsetWidth (gh-4029)
|
6098
6283
|
div.style.position = "absolute";
|
6099
|
-
scrollboxSizeVal = div.offsetWidth
|
6284
|
+
scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;
|
6100
6285
|
|
6101
6286
|
documentElement.removeChild( container );
|
6102
6287
|
|
@@ -6167,7 +6352,7 @@ function curCSS( elem, name, computed ) {
|
|
6167
6352
|
if ( computed ) {
|
6168
6353
|
ret = computed.getPropertyValue( name ) || computed[ name ];
|
6169
6354
|
|
6170
|
-
if ( ret === "" && !
|
6355
|
+
if ( ret === "" && !isAttached( elem ) ) {
|
6171
6356
|
ret = jQuery.style( elem, name );
|
6172
6357
|
}
|
6173
6358
|
|
@@ -6223,30 +6408,13 @@ function addGetHookIf( conditionFn, hookFn ) {
|
|
6223
6408
|
}
|
6224
6409
|
|
6225
6410
|
|
6226
|
-
var
|
6411
|
+
var cssPrefixes = [ "Webkit", "Moz", "ms" ],
|
6412
|
+
emptyStyle = document.createElement( "div" ).style,
|
6413
|
+
vendorProps = {};
|
6227
6414
|
|
6228
|
-
|
6229
|
-
// except "table", "table-cell", or "table-caption"
|
6230
|
-
// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
|
6231
|
-
rdisplayswap = /^(none|table(?!-c[ea]).+)/,
|
6232
|
-
rcustomProp = /^--/,
|
6233
|
-
cssShow = { position: "absolute", visibility: "hidden", display: "block" },
|
6234
|
-
cssNormalTransform = {
|
6235
|
-
letterSpacing: "0",
|
6236
|
-
fontWeight: "400"
|
6237
|
-
},
|
6238
|
-
|
6239
|
-
cssPrefixes = [ "Webkit", "Moz", "ms" ],
|
6240
|
-
emptyStyle = document.createElement( "div" ).style;
|
6241
|
-
|
6242
|
-
// Return a css property mapped to a potentially vendor prefixed property
|
6415
|
+
// Return a vendor-prefixed property or undefined
|
6243
6416
|
function vendorPropName( name ) {
|
6244
6417
|
|
6245
|
-
// Shortcut for names that are not vendor prefixed
|
6246
|
-
if ( name in emptyStyle ) {
|
6247
|
-
return name;
|
6248
|
-
}
|
6249
|
-
|
6250
6418
|
// Check for vendor prefixed names
|
6251
6419
|
var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),
|
6252
6420
|
i = cssPrefixes.length;
|
@@ -6259,16 +6427,33 @@ function vendorPropName( name ) {
|
|
6259
6427
|
}
|
6260
6428
|
}
|
6261
6429
|
|
6262
|
-
// Return a
|
6263
|
-
// a vendor prefixed property.
|
6430
|
+
// Return a potentially-mapped jQuery.cssProps or vendor prefixed property
|
6264
6431
|
function finalPropName( name ) {
|
6265
|
-
var
|
6266
|
-
|
6267
|
-
|
6432
|
+
var final = jQuery.cssProps[ name ] || vendorProps[ name ];
|
6433
|
+
|
6434
|
+
if ( final ) {
|
6435
|
+
return final;
|
6268
6436
|
}
|
6269
|
-
|
6437
|
+
if ( name in emptyStyle ) {
|
6438
|
+
return name;
|
6439
|
+
}
|
6440
|
+
return vendorProps[ name ] = vendorPropName( name ) || name;
|
6270
6441
|
}
|
6271
6442
|
|
6443
|
+
|
6444
|
+
var
|
6445
|
+
|
6446
|
+
// Swappable if display is none or starts with table
|
6447
|
+
// except "table", "table-cell", or "table-caption"
|
6448
|
+
// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
|
6449
|
+
rdisplayswap = /^(none|table(?!-c[ea]).+)/,
|
6450
|
+
rcustomProp = /^--/,
|
6451
|
+
cssShow = { position: "absolute", visibility: "hidden", display: "block" },
|
6452
|
+
cssNormalTransform = {
|
6453
|
+
letterSpacing: "0",
|
6454
|
+
fontWeight: "400"
|
6455
|
+
};
|
6456
|
+
|
6272
6457
|
function setPositiveNumber( elem, value, subtract ) {
|
6273
6458
|
|
6274
6459
|
// Any relative (+/-) values have already been
|
@@ -6340,7 +6525,10 @@ function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computed
|
|
6340
6525
|
delta -
|
6341
6526
|
extra -
|
6342
6527
|
0.5
|
6343
|
-
|
6528
|
+
|
6529
|
+
// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter
|
6530
|
+
// Use an explicit zero to avoid NaN (gh-3964)
|
6531
|
+
) ) || 0;
|
6344
6532
|
}
|
6345
6533
|
|
6346
6534
|
return delta;
|
@@ -6350,9 +6538,16 @@ function getWidthOrHeight( elem, dimension, extra ) {
|
|
6350
6538
|
|
6351
6539
|
// Start with computed style
|
6352
6540
|
var styles = getStyles( elem ),
|
6541
|
+
|
6542
|
+
// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).
|
6543
|
+
// Fake content-box until we know it's needed to know the true value.
|
6544
|
+
boxSizingNeeded = !support.boxSizingReliable() || extra,
|
6545
|
+
isBorderBox = boxSizingNeeded &&
|
6546
|
+
jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
|
6547
|
+
valueIsBorderBox = isBorderBox,
|
6548
|
+
|
6353
6549
|
val = curCSS( elem, dimension, styles ),
|
6354
|
-
|
6355
|
-
valueIsBorderBox = isBorderBox;
|
6550
|
+
offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );
|
6356
6551
|
|
6357
6552
|
// Support: Firefox <=54
|
6358
6553
|
// Return a confounding non-pixel value or feign ignorance, as appropriate.
|
@@ -6363,22 +6558,29 @@ function getWidthOrHeight( elem, dimension, extra ) {
|
|
6363
6558
|
val = "auto";
|
6364
6559
|
}
|
6365
6560
|
|
6366
|
-
// Check for style in case a browser which returns unreliable values
|
6367
|
-
// for getComputedStyle silently falls back to the reliable elem.style
|
6368
|
-
valueIsBorderBox = valueIsBorderBox &&
|
6369
|
-
( support.boxSizingReliable() || val === elem.style[ dimension ] );
|
6370
6561
|
|
6371
6562
|
// Fall back to offsetWidth/offsetHeight when value is "auto"
|
6372
6563
|
// This happens for inline elements with no explicit setting (gh-3571)
|
6373
6564
|
// Support: Android <=4.1 - 4.3 only
|
6374
6565
|
// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)
|
6375
|
-
|
6376
|
-
|
6566
|
+
// Support: IE 9-11 only
|
6567
|
+
// Also use offsetWidth/offsetHeight for when box sizing is unreliable
|
6568
|
+
// We use getClientRects() to check for hidden/disconnected.
|
6569
|
+
// In those cases, the computed value can be trusted to be border-box
|
6570
|
+
if ( ( !support.boxSizingReliable() && isBorderBox ||
|
6571
|
+
val === "auto" ||
|
6572
|
+
!parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) &&
|
6573
|
+
elem.getClientRects().length ) {
|
6377
6574
|
|
6378
|
-
|
6575
|
+
isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
|
6379
6576
|
|
6380
|
-
// offsetWidth/offsetHeight
|
6381
|
-
|
6577
|
+
// Where available, offsetWidth/offsetHeight approximate border box dimensions.
|
6578
|
+
// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the
|
6579
|
+
// retrieved value as a content box dimension.
|
6580
|
+
valueIsBorderBox = offsetProp in elem;
|
6581
|
+
if ( valueIsBorderBox ) {
|
6582
|
+
val = elem[ offsetProp ];
|
6583
|
+
}
|
6382
6584
|
}
|
6383
6585
|
|
6384
6586
|
// Normalize "" and auto
|
@@ -6424,6 +6626,13 @@ jQuery.extend( {
|
|
6424
6626
|
"flexGrow": true,
|
6425
6627
|
"flexShrink": true,
|
6426
6628
|
"fontWeight": true,
|
6629
|
+
"gridArea": true,
|
6630
|
+
"gridColumn": true,
|
6631
|
+
"gridColumnEnd": true,
|
6632
|
+
"gridColumnStart": true,
|
6633
|
+
"gridRow": true,
|
6634
|
+
"gridRowEnd": true,
|
6635
|
+
"gridRowStart": true,
|
6427
6636
|
"lineHeight": true,
|
6428
6637
|
"opacity": true,
|
6429
6638
|
"order": true,
|
@@ -6479,7 +6688,9 @@ jQuery.extend( {
|
|
6479
6688
|
}
|
6480
6689
|
|
6481
6690
|
// If a number was passed in, add the unit (except for certain CSS properties)
|
6482
|
-
|
6691
|
+
// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append
|
6692
|
+
// "px" to a few hardcoded values.
|
6693
|
+
if ( type === "number" && !isCustomProp ) {
|
6483
6694
|
value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
|
6484
6695
|
}
|
6485
6696
|
|
@@ -6579,18 +6790,29 @@ jQuery.each( [ "height", "width" ], function( i, dimension ) {
|
|
6579
6790
|
set: function( elem, value, extra ) {
|
6580
6791
|
var matches,
|
6581
6792
|
styles = getStyles( elem ),
|
6582
|
-
|
6583
|
-
|
6584
|
-
|
6585
|
-
|
6586
|
-
|
6587
|
-
|
6588
|
-
|
6589
|
-
|
6793
|
+
|
6794
|
+
// Only read styles.position if the test has a chance to fail
|
6795
|
+
// to avoid forcing a reflow.
|
6796
|
+
scrollboxSizeBuggy = !support.scrollboxSize() &&
|
6797
|
+
styles.position === "absolute",
|
6798
|
+
|
6799
|
+
// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)
|
6800
|
+
boxSizingNeeded = scrollboxSizeBuggy || extra,
|
6801
|
+
isBorderBox = boxSizingNeeded &&
|
6802
|
+
jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
|
6803
|
+
subtract = extra ?
|
6804
|
+
boxModelAdjustment(
|
6805
|
+
elem,
|
6806
|
+
dimension,
|
6807
|
+
extra,
|
6808
|
+
isBorderBox,
|
6809
|
+
styles
|
6810
|
+
) :
|
6811
|
+
0;
|
6590
6812
|
|
6591
6813
|
// Account for unreliable border-box dimensions by comparing offset* to computed and
|
6592
6814
|
// faking a content-box to get border and padding (gh-3699)
|
6593
|
-
if ( isBorderBox &&
|
6815
|
+
if ( isBorderBox && scrollboxSizeBuggy ) {
|
6594
6816
|
subtract -= Math.ceil(
|
6595
6817
|
elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -
|
6596
6818
|
parseFloat( styles[ dimension ] ) -
|
@@ -6758,9 +6980,9 @@ Tween.propHooks = {
|
|
6758
6980
|
// Use .style if available and use plain properties where available.
|
6759
6981
|
if ( jQuery.fx.step[ tween.prop ] ) {
|
6760
6982
|
jQuery.fx.step[ tween.prop ]( tween );
|
6761
|
-
} else if ( tween.elem.nodeType === 1 &&
|
6762
|
-
|
6763
|
-
|
6983
|
+
} else if ( tween.elem.nodeType === 1 && (
|
6984
|
+
jQuery.cssHooks[ tween.prop ] ||
|
6985
|
+
tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {
|
6764
6986
|
jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
|
6765
6987
|
} else {
|
6766
6988
|
tween.elem[ tween.prop ] = tween.now;
|
@@ -8467,6 +8689,10 @@ jQuery.param = function( a, traditional ) {
|
|
8467
8689
|
encodeURIComponent( value == null ? "" : value );
|
8468
8690
|
};
|
8469
8691
|
|
8692
|
+
if ( a == null ) {
|
8693
|
+
return "";
|
8694
|
+
}
|
8695
|
+
|
8470
8696
|
// If an array was passed in, assume that it is an array of form elements.
|
8471
8697
|
if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
|
8472
8698
|
|
@@ -8969,12 +9195,14 @@ jQuery.extend( {
|
|
8969
9195
|
if ( !responseHeaders ) {
|
8970
9196
|
responseHeaders = {};
|
8971
9197
|
while ( ( match = rheaders.exec( responseHeadersString ) ) ) {
|
8972
|
-
responseHeaders[ match[ 1 ].toLowerCase()
|
9198
|
+
responseHeaders[ match[ 1 ].toLowerCase() + " " ] =
|
9199
|
+
( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] )
|
9200
|
+
.concat( match[ 2 ] );
|
8973
9201
|
}
|
8974
9202
|
}
|
8975
|
-
match = responseHeaders[ key.toLowerCase() ];
|
9203
|
+
match = responseHeaders[ key.toLowerCase() + " " ];
|
8976
9204
|
}
|
8977
|
-
return match == null ? null : match;
|
9205
|
+
return match == null ? null : match.join( ", " );
|
8978
9206
|
},
|
8979
9207
|
|
8980
9208
|
// Raw string
|
@@ -9363,7 +9591,7 @@ jQuery.each( [ "get", "post" ], function( i, method ) {
|
|
9363
9591
|
} );
|
9364
9592
|
|
9365
9593
|
|
9366
|
-
jQuery._evalUrl = function( url ) {
|
9594
|
+
jQuery._evalUrl = function( url, options ) {
|
9367
9595
|
return jQuery.ajax( {
|
9368
9596
|
url: url,
|
9369
9597
|
|
@@ -9373,7 +9601,16 @@ jQuery._evalUrl = function( url ) {
|
|
9373
9601
|
cache: true,
|
9374
9602
|
async: false,
|
9375
9603
|
global: false,
|
9376
|
-
|
9604
|
+
|
9605
|
+
// Only evaluate the response if it is successful (gh-4126)
|
9606
|
+
// dataFilter is not invoked for failure responses, so using it instead
|
9607
|
+
// of the default converter is kludgy but it works.
|
9608
|
+
converters: {
|
9609
|
+
"text script": function() {}
|
9610
|
+
},
|
9611
|
+
dataFilter: function( response ) {
|
9612
|
+
jQuery.globalEval( response, options );
|
9613
|
+
}
|
9377
9614
|
} );
|
9378
9615
|
};
|
9379
9616
|
|
@@ -9656,24 +9893,21 @@ jQuery.ajaxPrefilter( "script", function( s ) {
|
|
9656
9893
|
// Bind script tag hack transport
|
9657
9894
|
jQuery.ajaxTransport( "script", function( s ) {
|
9658
9895
|
|
9659
|
-
// This transport only deals with cross domain requests
|
9660
|
-
if ( s.crossDomain ) {
|
9896
|
+
// This transport only deals with cross domain or forced-by-attrs requests
|
9897
|
+
if ( s.crossDomain || s.scriptAttrs ) {
|
9661
9898
|
var script, callback;
|
9662
9899
|
return {
|
9663
9900
|
send: function( _, complete ) {
|
9664
|
-
script = jQuery( "<script>" )
|
9665
|
-
|
9666
|
-
src: s.url
|
9667
|
-
|
9668
|
-
"load error",
|
9669
|
-
callback = function( evt ) {
|
9901
|
+
script = jQuery( "<script>" )
|
9902
|
+
.attr( s.scriptAttrs || {} )
|
9903
|
+
.prop( { charset: s.scriptCharset, src: s.url } )
|
9904
|
+
.on( "load error", callback = function( evt ) {
|
9670
9905
|
script.remove();
|
9671
9906
|
callback = null;
|
9672
9907
|
if ( evt ) {
|
9673
9908
|
complete( evt.type === "error" ? 404 : 200, evt.type );
|
9674
9909
|
}
|
9675
|
-
}
|
9676
|
-
);
|
9910
|
+
} );
|
9677
9911
|
|
9678
9912
|
// Use native DOM manipulation to avoid our domManip AJAX trickery
|
9679
9913
|
document.head.appendChild( script[ 0 ] );
|