jquery-rails 4.3.5 → 4.5.1
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 +4 -4
- data/.travis.yml +4 -2
- data/CHANGELOG.md +16 -1
- data/VERSIONS.md +3 -0
- data/lib/jquery/assert_select.rb +2 -0
- data/lib/jquery/rails/version.rb +3 -3
- data/test/assert_select_jquery_test.rb +6 -0
- data/vendor/assets/javascripts/jquery3.js +958 -647
- data/vendor/assets/javascripts/jquery3.min.js +2 -2
- data/vendor/assets/javascripts/jquery3.min.map +1 -1
- data/vendor/assets/javascripts/jquery_ujs.js +18 -8
- metadata +6 -6
@@ -1,15 +1,15 @@
|
|
1
1
|
/*!
|
2
|
-
* jQuery JavaScript Library v3.
|
2
|
+
* jQuery JavaScript Library v3.6.1
|
3
3
|
* https://jquery.com/
|
4
4
|
*
|
5
5
|
* Includes Sizzle.js
|
6
6
|
* https://sizzlejs.com/
|
7
7
|
*
|
8
|
-
* Copyright
|
8
|
+
* Copyright OpenJS Foundation and other contributors
|
9
9
|
* Released under the MIT license
|
10
10
|
* https://jquery.org/license
|
11
11
|
*
|
12
|
-
* Date:
|
12
|
+
* Date: 2022-08-26T17:52Z
|
13
13
|
*/
|
14
14
|
( function( global, factory ) {
|
15
15
|
|
@@ -23,7 +23,7 @@
|
|
23
23
|
// (such as Node.js), expose a factory as module.exports.
|
24
24
|
// This accentuates the need for the creation of a real `window`.
|
25
25
|
// e.g. var jQuery = require("jquery")(window);
|
26
|
-
// See ticket
|
26
|
+
// See ticket trac-14549 for more info.
|
27
27
|
module.exports = global.document ?
|
28
28
|
factory( global, true ) :
|
29
29
|
function( w ) {
|
@@ -47,13 +47,16 @@
|
|
47
47
|
|
48
48
|
var arr = [];
|
49
49
|
|
50
|
-
var document = window.document;
|
51
|
-
|
52
50
|
var getProto = Object.getPrototypeOf;
|
53
51
|
|
54
52
|
var slice = arr.slice;
|
55
53
|
|
56
|
-
var
|
54
|
+
var flat = arr.flat ? function( array ) {
|
55
|
+
return arr.flat.call( array );
|
56
|
+
} : function( array ) {
|
57
|
+
return arr.concat.apply( [], array );
|
58
|
+
};
|
59
|
+
|
57
60
|
|
58
61
|
var push = arr.push;
|
59
62
|
|
@@ -73,12 +76,16 @@ var support = {};
|
|
73
76
|
|
74
77
|
var isFunction = function isFunction( obj ) {
|
75
78
|
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
79
|
+
// Support: Chrome <=57, Firefox <=52
|
80
|
+
// In some browsers, typeof returns "function" for HTML <object> elements
|
81
|
+
// (i.e., `typeof document.createElement( "object" ) === "function"`).
|
82
|
+
// We don't want to classify *any* DOM node as a function.
|
83
|
+
// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5
|
84
|
+
// Plus for old WebKit, typeof returns "function" for HTML collections
|
85
|
+
// (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756)
|
86
|
+
return typeof obj === "function" && typeof obj.nodeType !== "number" &&
|
87
|
+
typeof obj.item !== "function";
|
88
|
+
};
|
82
89
|
|
83
90
|
|
84
91
|
var isWindow = function isWindow( obj ) {
|
@@ -86,6 +93,8 @@ var isWindow = function isWindow( obj ) {
|
|
86
93
|
};
|
87
94
|
|
88
95
|
|
96
|
+
var document = window.document;
|
97
|
+
|
89
98
|
|
90
99
|
|
91
100
|
var preservedScriptAttributes = {
|
@@ -142,7 +151,7 @@ function toType( obj ) {
|
|
142
151
|
|
143
152
|
|
144
153
|
var
|
145
|
-
version = "3.
|
154
|
+
version = "3.6.1",
|
146
155
|
|
147
156
|
// Define a local copy of jQuery
|
148
157
|
jQuery = function( selector, context ) {
|
@@ -150,11 +159,7 @@ var
|
|
150
159
|
// The jQuery object is actually just the init constructor 'enhanced'
|
151
160
|
// Need init if jQuery is called (just allow error to be thrown if not included)
|
152
161
|
return new jQuery.fn.init( selector, context );
|
153
|
-
}
|
154
|
-
|
155
|
-
// Support: Android <=4.0 only
|
156
|
-
// Make sure we trim BOM and NBSP
|
157
|
-
rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
|
162
|
+
};
|
158
163
|
|
159
164
|
jQuery.fn = jQuery.prototype = {
|
160
165
|
|
@@ -220,6 +225,18 @@ jQuery.fn = jQuery.prototype = {
|
|
220
225
|
return this.eq( -1 );
|
221
226
|
},
|
222
227
|
|
228
|
+
even: function() {
|
229
|
+
return this.pushStack( jQuery.grep( this, function( _elem, i ) {
|
230
|
+
return ( i + 1 ) % 2;
|
231
|
+
} ) );
|
232
|
+
},
|
233
|
+
|
234
|
+
odd: function() {
|
235
|
+
return this.pushStack( jQuery.grep( this, function( _elem, i ) {
|
236
|
+
return i % 2;
|
237
|
+
} ) );
|
238
|
+
},
|
239
|
+
|
223
240
|
eq: function( i ) {
|
224
241
|
var len = this.length,
|
225
242
|
j = +i + ( i < 0 ? len : 0 );
|
@@ -353,9 +370,10 @@ jQuery.extend( {
|
|
353
370
|
return true;
|
354
371
|
},
|
355
372
|
|
356
|
-
// Evaluates a script in a global
|
357
|
-
|
358
|
-
|
373
|
+
// Evaluates a script in a provided context; falls back to the global one
|
374
|
+
// if not specified.
|
375
|
+
globalEval: function( code, options, doc ) {
|
376
|
+
DOMEval( code, { nonce: options && options.nonce }, doc );
|
359
377
|
},
|
360
378
|
|
361
379
|
each: function( obj, callback ) {
|
@@ -379,13 +397,6 @@ jQuery.extend( {
|
|
379
397
|
return obj;
|
380
398
|
},
|
381
399
|
|
382
|
-
// Support: Android <=4.0 only
|
383
|
-
trim: function( text ) {
|
384
|
-
return text == null ?
|
385
|
-
"" :
|
386
|
-
( text + "" ).replace( rtrim, "" );
|
387
|
-
},
|
388
|
-
|
389
400
|
// results is for internal usage only
|
390
401
|
makeArray: function( arr, results ) {
|
391
402
|
var ret = results || [];
|
@@ -394,7 +405,7 @@ jQuery.extend( {
|
|
394
405
|
if ( isArrayLike( Object( arr ) ) ) {
|
395
406
|
jQuery.merge( ret,
|
396
407
|
typeof arr === "string" ?
|
397
|
-
|
408
|
+
[ arr ] : arr
|
398
409
|
);
|
399
410
|
} else {
|
400
411
|
push.call( ret, arr );
|
@@ -472,7 +483,7 @@ jQuery.extend( {
|
|
472
483
|
}
|
473
484
|
|
474
485
|
// Flatten any nested arrays
|
475
|
-
return
|
486
|
+
return flat( ret );
|
476
487
|
},
|
477
488
|
|
478
489
|
// A global GUID counter for objects
|
@@ -489,9 +500,9 @@ if ( typeof Symbol === "function" ) {
|
|
489
500
|
|
490
501
|
// Populate the class2type map
|
491
502
|
jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
|
492
|
-
function(
|
493
|
-
|
494
|
-
} );
|
503
|
+
function( _i, name ) {
|
504
|
+
class2type[ "[object " + name + "]" ] = name.toLowerCase();
|
505
|
+
} );
|
495
506
|
|
496
507
|
function isArrayLike( obj ) {
|
497
508
|
|
@@ -511,17 +522,16 @@ function isArrayLike( obj ) {
|
|
511
522
|
}
|
512
523
|
var Sizzle =
|
513
524
|
/*!
|
514
|
-
* Sizzle CSS Selector Engine v2.3.
|
525
|
+
* Sizzle CSS Selector Engine v2.3.6
|
515
526
|
* https://sizzlejs.com/
|
516
527
|
*
|
517
528
|
* Copyright JS Foundation and other contributors
|
518
529
|
* Released under the MIT license
|
519
530
|
* https://js.foundation/
|
520
531
|
*
|
521
|
-
* Date:
|
532
|
+
* Date: 2021-02-16
|
522
533
|
*/
|
523
|
-
(function( window ) {
|
524
|
-
|
534
|
+
( function( window ) {
|
525
535
|
var i,
|
526
536
|
support,
|
527
537
|
Expr,
|
@@ -561,59 +571,70 @@ var i,
|
|
561
571
|
},
|
562
572
|
|
563
573
|
// Instance methods
|
564
|
-
hasOwn = ({}).hasOwnProperty,
|
574
|
+
hasOwn = ( {} ).hasOwnProperty,
|
565
575
|
arr = [],
|
566
576
|
pop = arr.pop,
|
567
|
-
|
577
|
+
pushNative = arr.push,
|
568
578
|
push = arr.push,
|
569
579
|
slice = arr.slice,
|
580
|
+
|
570
581
|
// Use a stripped-down indexOf as it's faster than native
|
571
582
|
// https://jsperf.com/thor-indexof-vs-for/5
|
572
583
|
indexOf = function( list, elem ) {
|
573
584
|
var i = 0,
|
574
585
|
len = list.length;
|
575
586
|
for ( ; i < len; i++ ) {
|
576
|
-
if ( list[i] === elem ) {
|
587
|
+
if ( list[ i ] === elem ) {
|
577
588
|
return i;
|
578
589
|
}
|
579
590
|
}
|
580
591
|
return -1;
|
581
592
|
},
|
582
593
|
|
583
|
-
booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|
|
594
|
+
booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" +
|
595
|
+
"ismap|loop|multiple|open|readonly|required|scoped",
|
584
596
|
|
585
597
|
// Regular expressions
|
586
598
|
|
587
599
|
// http://www.w3.org/TR/css3-selectors/#whitespace
|
588
600
|
whitespace = "[\\x20\\t\\r\\n\\f]",
|
589
601
|
|
590
|
-
//
|
591
|
-
identifier = "(
|
602
|
+
// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram
|
603
|
+
identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace +
|
604
|
+
"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",
|
592
605
|
|
593
606
|
// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
|
594
607
|
attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
|
608
|
+
|
595
609
|
// Operator (capture 2)
|
596
610
|
"*([*^$|!~]?=)" + whitespace +
|
597
|
-
|
598
|
-
"
|
599
|
-
|
611
|
+
|
612
|
+
// "Attribute values must be CSS identifiers [capture 5]
|
613
|
+
// or strings [capture 3 or capture 4]"
|
614
|
+
"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" +
|
615
|
+
whitespace + "*\\]",
|
600
616
|
|
601
617
|
pseudos = ":(" + identifier + ")(?:\\((" +
|
618
|
+
|
602
619
|
// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
|
603
620
|
// 1. quoted (capture 3; capture 4 or capture 5)
|
604
621
|
"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
|
622
|
+
|
605
623
|
// 2. simple (capture 6)
|
606
624
|
"((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
|
625
|
+
|
607
626
|
// 3. anything else (capture 2)
|
608
627
|
".*" +
|
609
628
|
")\\)|)",
|
610
629
|
|
611
630
|
// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
|
612
631
|
rwhitespace = new RegExp( whitespace + "+", "g" ),
|
613
|
-
rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" +
|
632
|
+
rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" +
|
633
|
+
whitespace + "+$", "g" ),
|
614
634
|
|
615
635
|
rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
|
616
|
-
rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace +
|
636
|
+
rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace +
|
637
|
+
"*" ),
|
617
638
|
rdescend = new RegExp( whitespace + "|>" ),
|
618
639
|
|
619
640
|
rpseudo = new RegExp( pseudos ),
|
@@ -625,14 +646,16 @@ var i,
|
|
625
646
|
"TAG": new RegExp( "^(" + identifier + "|[*])" ),
|
626
647
|
"ATTR": new RegExp( "^" + attributes ),
|
627
648
|
"PSEUDO": new RegExp( "^" + pseudos ),
|
628
|
-
"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" +
|
629
|
-
"*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" +
|
630
|
-
"*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
|
649
|
+
"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" +
|
650
|
+
whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" +
|
651
|
+
whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
|
631
652
|
"bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
|
653
|
+
|
632
654
|
// For use in libraries implementing .is()
|
633
655
|
// We use this for POS matching in `select`
|
634
|
-
"needsContext": new RegExp( "^" + whitespace +
|
635
|
-
|
656
|
+
"needsContext": new RegExp( "^" + whitespace +
|
657
|
+
"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace +
|
658
|
+
"*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
|
636
659
|
},
|
637
660
|
|
638
661
|
rhtml = /HTML$/i,
|
@@ -648,18 +671,21 @@ var i,
|
|
648
671
|
|
649
672
|
// CSS escapes
|
650
673
|
// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
|
651
|
-
runescape = new RegExp( "\\\\
|
652
|
-
funescape = function(
|
653
|
-
var high = "0x" +
|
654
|
-
|
655
|
-
|
656
|
-
|
657
|
-
|
658
|
-
|
674
|
+
runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ),
|
675
|
+
funescape = function( escape, nonHex ) {
|
676
|
+
var high = "0x" + escape.slice( 1 ) - 0x10000;
|
677
|
+
|
678
|
+
return nonHex ?
|
679
|
+
|
680
|
+
// Strip the backslash prefix from a non-hex escape sequence
|
681
|
+
nonHex :
|
682
|
+
|
683
|
+
// Replace a hexadecimal escape sequence with the encoded Unicode code point
|
684
|
+
// Support: IE <=11+
|
685
|
+
// For values outside the Basic Multilingual Plane (BMP), manually construct a
|
686
|
+
// surrogate pair
|
659
687
|
high < 0 ?
|
660
|
-
// BMP codepoint
|
661
688
|
String.fromCharCode( high + 0x10000 ) :
|
662
|
-
// Supplemental Plane codepoint (surrogate pair)
|
663
689
|
String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
|
664
690
|
},
|
665
691
|
|
@@ -675,7 +701,8 @@ var i,
|
|
675
701
|
}
|
676
702
|
|
677
703
|
// Control characters and (dependent upon position) numbers get escaped as code points
|
678
|
-
return ch.slice( 0, -1 ) + "\\" +
|
704
|
+
return ch.slice( 0, -1 ) + "\\" +
|
705
|
+
ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
|
679
706
|
}
|
680
707
|
|
681
708
|
// Other potentially-special ASCII characters get backslash-escaped
|
@@ -700,18 +727,20 @@ var i,
|
|
700
727
|
// Optimize for push.apply( _, NodeList )
|
701
728
|
try {
|
702
729
|
push.apply(
|
703
|
-
(arr = slice.call( preferredDoc.childNodes )),
|
730
|
+
( arr = slice.call( preferredDoc.childNodes ) ),
|
704
731
|
preferredDoc.childNodes
|
705
732
|
);
|
733
|
+
|
706
734
|
// Support: Android<4.0
|
707
735
|
// Detect silently failing push.apply
|
736
|
+
// eslint-disable-next-line no-unused-expressions
|
708
737
|
arr[ preferredDoc.childNodes.length ].nodeType;
|
709
738
|
} catch ( e ) {
|
710
739
|
push = { apply: arr.length ?
|
711
740
|
|
712
741
|
// Leverage slice if possible
|
713
742
|
function( target, els ) {
|
714
|
-
|
743
|
+
pushNative.apply( target, slice.call( els ) );
|
715
744
|
} :
|
716
745
|
|
717
746
|
// Support: IE<9
|
@@ -719,8 +748,9 @@ try {
|
|
719
748
|
function( target, els ) {
|
720
749
|
var j = target.length,
|
721
750
|
i = 0;
|
751
|
+
|
722
752
|
// Can't trust NodeList.length
|
723
|
-
while ( (target[j++] = els[i++]) ) {}
|
753
|
+
while ( ( target[ j++ ] = els[ i++ ] ) ) {}
|
724
754
|
target.length = j - 1;
|
725
755
|
}
|
726
756
|
};
|
@@ -744,24 +774,21 @@ function Sizzle( selector, context, results, seed ) {
|
|
744
774
|
|
745
775
|
// Try to shortcut find operations (as opposed to filters) in HTML documents
|
746
776
|
if ( !seed ) {
|
747
|
-
|
748
|
-
if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
|
749
|
-
setDocument( context );
|
750
|
-
}
|
777
|
+
setDocument( context );
|
751
778
|
context = context || document;
|
752
779
|
|
753
780
|
if ( documentIsHTML ) {
|
754
781
|
|
755
782
|
// If the selector is sufficiently simple, try using a "get*By*" DOM method
|
756
783
|
// (excepting DocumentFragment context, where the methods don't exist)
|
757
|
-
if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
|
784
|
+
if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {
|
758
785
|
|
759
786
|
// ID selector
|
760
|
-
if ( (m = match[1]) ) {
|
787
|
+
if ( ( m = match[ 1 ] ) ) {
|
761
788
|
|
762
789
|
// Document context
|
763
790
|
if ( nodeType === 9 ) {
|
764
|
-
if ( (elem = context.getElementById( m )) ) {
|
791
|
+
if ( ( elem = context.getElementById( m ) ) ) {
|
765
792
|
|
766
793
|
// Support: IE, Opera, Webkit
|
767
794
|
// TODO: identify versions
|
@@ -780,7 +807,7 @@ function Sizzle( selector, context, results, seed ) {
|
|
780
807
|
// Support: IE, Opera, Webkit
|
781
808
|
// TODO: identify versions
|
782
809
|
// getElementById can match elements by name instead of ID
|
783
|
-
if ( newContext && (elem = newContext.getElementById( m )) &&
|
810
|
+
if ( newContext && ( elem = newContext.getElementById( m ) ) &&
|
784
811
|
contains( context, elem ) &&
|
785
812
|
elem.id === m ) {
|
786
813
|
|
@@ -790,12 +817,12 @@ function Sizzle( selector, context, results, seed ) {
|
|
790
817
|
}
|
791
818
|
|
792
819
|
// Type selector
|
793
|
-
} else if ( match[2] ) {
|
820
|
+
} else if ( match[ 2 ] ) {
|
794
821
|
push.apply( results, context.getElementsByTagName( selector ) );
|
795
822
|
return results;
|
796
823
|
|
797
824
|
// Class selector
|
798
|
-
} else if ( (m = match[3]) && support.getElementsByClassName &&
|
825
|
+
} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&
|
799
826
|
context.getElementsByClassName ) {
|
800
827
|
|
801
828
|
push.apply( results, context.getElementsByClassName( m ) );
|
@@ -806,11 +833,11 @@ function Sizzle( selector, context, results, seed ) {
|
|
806
833
|
// Take advantage of querySelectorAll
|
807
834
|
if ( support.qsa &&
|
808
835
|
!nonnativeSelectorCache[ selector + " " ] &&
|
809
|
-
(!rbuggyQSA || !rbuggyQSA.test( selector )) &&
|
836
|
+
( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&
|
810
837
|
|
811
838
|
// Support: IE 8 only
|
812
839
|
// Exclude object elements
|
813
|
-
(nodeType !== 1 || context.nodeName.toLowerCase() !== "object") ) {
|
840
|
+
( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) {
|
814
841
|
|
815
842
|
newSelector = selector;
|
816
843
|
newContext = context;
|
@@ -819,27 +846,36 @@ function Sizzle( selector, context, results, seed ) {
|
|
819
846
|
// descendant combinators, which is not what we want.
|
820
847
|
// In such cases, we work around the behavior by prefixing every selector in the
|
821
848
|
// list with an ID selector referencing the scope context.
|
849
|
+
// The technique has to be used as well when a leading combinator is used
|
850
|
+
// as such selectors are not recognized by querySelectorAll.
|
822
851
|
// Thanks to Andrew Dupont for this technique.
|
823
|
-
if ( nodeType === 1 &&
|
852
|
+
if ( nodeType === 1 &&
|
853
|
+
( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {
|
824
854
|
|
825
|
-
//
|
826
|
-
|
827
|
-
|
828
|
-
|
829
|
-
|
855
|
+
// Expand context for sibling selectors
|
856
|
+
newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
|
857
|
+
context;
|
858
|
+
|
859
|
+
// We can use :scope instead of the ID hack if the browser
|
860
|
+
// supports it & if we're not changing the context.
|
861
|
+
if ( newContext !== context || !support.scope ) {
|
862
|
+
|
863
|
+
// Capture the context ID, setting it first if necessary
|
864
|
+
if ( ( nid = context.getAttribute( "id" ) ) ) {
|
865
|
+
nid = nid.replace( rcssescape, fcssescape );
|
866
|
+
} else {
|
867
|
+
context.setAttribute( "id", ( nid = expando ) );
|
868
|
+
}
|
830
869
|
}
|
831
870
|
|
832
871
|
// Prefix every selector in the list
|
833
872
|
groups = tokenize( selector );
|
834
873
|
i = groups.length;
|
835
874
|
while ( i-- ) {
|
836
|
-
groups[i] = "#" + nid
|
875
|
+
groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " +
|
876
|
+
toSelector( groups[ i ] );
|
837
877
|
}
|
838
878
|
newSelector = groups.join( "," );
|
839
|
-
|
840
|
-
// Expand context for sibling selectors
|
841
|
-
newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
|
842
|
-
context;
|
843
879
|
}
|
844
880
|
|
845
881
|
try {
|
@@ -872,12 +908,14 @@ function createCache() {
|
|
872
908
|
var keys = [];
|
873
909
|
|
874
910
|
function cache( key, value ) {
|
911
|
+
|
875
912
|
// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
|
876
913
|
if ( keys.push( key + " " ) > Expr.cacheLength ) {
|
914
|
+
|
877
915
|
// Only keep the most recent entries
|
878
916
|
delete cache[ keys.shift() ];
|
879
917
|
}
|
880
|
-
return (cache[ key + " " ] = value);
|
918
|
+
return ( cache[ key + " " ] = value );
|
881
919
|
}
|
882
920
|
return cache;
|
883
921
|
}
|
@@ -896,17 +934,19 @@ function markFunction( fn ) {
|
|
896
934
|
* @param {Function} fn Passed the created element and returns a boolean result
|
897
935
|
*/
|
898
936
|
function assert( fn ) {
|
899
|
-
var el = document.createElement("fieldset");
|
937
|
+
var el = document.createElement( "fieldset" );
|
900
938
|
|
901
939
|
try {
|
902
940
|
return !!fn( el );
|
903
|
-
} catch (e) {
|
941
|
+
} catch ( e ) {
|
904
942
|
return false;
|
905
943
|
} finally {
|
944
|
+
|
906
945
|
// Remove from its parent by default
|
907
946
|
if ( el.parentNode ) {
|
908
947
|
el.parentNode.removeChild( el );
|
909
948
|
}
|
949
|
+
|
910
950
|
// release memory in IE
|
911
951
|
el = null;
|
912
952
|
}
|
@@ -918,11 +958,11 @@ function assert( fn ) {
|
|
918
958
|
* @param {Function} handler The method that will be applied
|
919
959
|
*/
|
920
960
|
function addHandle( attrs, handler ) {
|
921
|
-
var arr = attrs.split("|"),
|
961
|
+
var arr = attrs.split( "|" ),
|
922
962
|
i = arr.length;
|
923
963
|
|
924
964
|
while ( i-- ) {
|
925
|
-
Expr.attrHandle[ arr[i] ] = handler;
|
965
|
+
Expr.attrHandle[ arr[ i ] ] = handler;
|
926
966
|
}
|
927
967
|
}
|
928
968
|
|
@@ -944,7 +984,7 @@ function siblingCheck( a, b ) {
|
|
944
984
|
|
945
985
|
// Check if b follows a
|
946
986
|
if ( cur ) {
|
947
|
-
while ( (cur = cur.nextSibling) ) {
|
987
|
+
while ( ( cur = cur.nextSibling ) ) {
|
948
988
|
if ( cur === b ) {
|
949
989
|
return -1;
|
950
990
|
}
|
@@ -972,7 +1012,7 @@ function createInputPseudo( type ) {
|
|
972
1012
|
function createButtonPseudo( type ) {
|
973
1013
|
return function( elem ) {
|
974
1014
|
var name = elem.nodeName.toLowerCase();
|
975
|
-
return (name === "input" || name === "button") && elem.type === type;
|
1015
|
+
return ( name === "input" || name === "button" ) && elem.type === type;
|
976
1016
|
};
|
977
1017
|
}
|
978
1018
|
|
@@ -1015,7 +1055,7 @@ function createDisabledPseudo( disabled ) {
|
|
1015
1055
|
// Where there is no isDisabled, check manually
|
1016
1056
|
/* jshint -W018 */
|
1017
1057
|
elem.isDisabled !== !disabled &&
|
1018
|
-
|
1058
|
+
inDisabledFieldset( elem ) === disabled;
|
1019
1059
|
}
|
1020
1060
|
|
1021
1061
|
return elem.disabled === disabled;
|
@@ -1037,21 +1077,21 @@ function createDisabledPseudo( disabled ) {
|
|
1037
1077
|
* @param {Function} fn
|
1038
1078
|
*/
|
1039
1079
|
function createPositionalPseudo( fn ) {
|
1040
|
-
return markFunction(function( argument ) {
|
1080
|
+
return markFunction( function( argument ) {
|
1041
1081
|
argument = +argument;
|
1042
|
-
return markFunction(function( seed, matches ) {
|
1082
|
+
return markFunction( function( seed, matches ) {
|
1043
1083
|
var j,
|
1044
1084
|
matchIndexes = fn( [], seed.length, argument ),
|
1045
1085
|
i = matchIndexes.length;
|
1046
1086
|
|
1047
1087
|
// Match elements found at the specified indexes
|
1048
1088
|
while ( i-- ) {
|
1049
|
-
if ( seed[ (j = matchIndexes[i]) ] ) {
|
1050
|
-
seed[j] = !(matches[j] = seed[j]);
|
1089
|
+
if ( seed[ ( j = matchIndexes[ i ] ) ] ) {
|
1090
|
+
seed[ j ] = !( matches[ j ] = seed[ j ] );
|
1051
1091
|
}
|
1052
1092
|
}
|
1053
|
-
});
|
1054
|
-
});
|
1093
|
+
} );
|
1094
|
+
} );
|
1055
1095
|
}
|
1056
1096
|
|
1057
1097
|
/**
|
@@ -1072,8 +1112,8 @@ support = Sizzle.support = {};
|
|
1072
1112
|
* @returns {Boolean} True iff elem is a non-HTML XML node
|
1073
1113
|
*/
|
1074
1114
|
isXML = Sizzle.isXML = function( elem ) {
|
1075
|
-
var namespace = elem.namespaceURI,
|
1076
|
-
docElem = (elem.ownerDocument || elem).documentElement;
|
1115
|
+
var namespace = elem && elem.namespaceURI,
|
1116
|
+
docElem = elem && ( elem.ownerDocument || elem ).documentElement;
|
1077
1117
|
|
1078
1118
|
// Support: IE <=8
|
1079
1119
|
// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes
|
@@ -1091,7 +1131,11 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
1091
1131
|
doc = node ? node.ownerDocument || node : preferredDoc;
|
1092
1132
|
|
1093
1133
|
// Return early if doc is invalid or already selected
|
1094
|
-
|
1134
|
+
// Support: IE 11+, Edge 17 - 18+
|
1135
|
+
// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
|
1136
|
+
// two documents; shallow comparisons work.
|
1137
|
+
// eslint-disable-next-line eqeqeq
|
1138
|
+
if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {
|
1095
1139
|
return document;
|
1096
1140
|
}
|
1097
1141
|
|
@@ -1100,10 +1144,14 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
1100
1144
|
docElem = document.documentElement;
|
1101
1145
|
documentIsHTML = !isXML( document );
|
1102
1146
|
|
1103
|
-
// Support: IE 9-11
|
1147
|
+
// Support: IE 9 - 11+, Edge 12 - 18+
|
1104
1148
|
// Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
|
1105
|
-
|
1106
|
-
|
1149
|
+
// Support: IE 11+, Edge 17 - 18+
|
1150
|
+
// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
|
1151
|
+
// two documents; shallow comparisons work.
|
1152
|
+
// eslint-disable-next-line eqeqeq
|
1153
|
+
if ( preferredDoc != document &&
|
1154
|
+
( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {
|
1107
1155
|
|
1108
1156
|
// Support: IE 11, Edge
|
1109
1157
|
if ( subWindow.addEventListener ) {
|
@@ -1115,25 +1163,36 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
1115
1163
|
}
|
1116
1164
|
}
|
1117
1165
|
|
1166
|
+
// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,
|
1167
|
+
// Safari 4 - 5 only, Opera <=11.6 - 12.x only
|
1168
|
+
// IE/Edge & older browsers don't support the :scope pseudo-class.
|
1169
|
+
// Support: Safari 6.0 only
|
1170
|
+
// Safari 6.0 supports :scope but it's an alias of :root there.
|
1171
|
+
support.scope = assert( function( el ) {
|
1172
|
+
docElem.appendChild( el ).appendChild( document.createElement( "div" ) );
|
1173
|
+
return typeof el.querySelectorAll !== "undefined" &&
|
1174
|
+
!el.querySelectorAll( ":scope fieldset div" ).length;
|
1175
|
+
} );
|
1176
|
+
|
1118
1177
|
/* Attributes
|
1119
1178
|
---------------------------------------------------------------------- */
|
1120
1179
|
|
1121
1180
|
// Support: IE<8
|
1122
1181
|
// Verify that getAttribute really returns attributes and not properties
|
1123
1182
|
// (excepting IE8 booleans)
|
1124
|
-
support.attributes = assert(function( el ) {
|
1183
|
+
support.attributes = assert( function( el ) {
|
1125
1184
|
el.className = "i";
|
1126
|
-
return !el.getAttribute("className");
|
1127
|
-
});
|
1185
|
+
return !el.getAttribute( "className" );
|
1186
|
+
} );
|
1128
1187
|
|
1129
1188
|
/* getElement(s)By*
|
1130
1189
|
---------------------------------------------------------------------- */
|
1131
1190
|
|
1132
1191
|
// Check if getElementsByTagName("*") returns only elements
|
1133
|
-
support.getElementsByTagName = assert(function( el ) {
|
1134
|
-
el.appendChild( document.createComment("") );
|
1135
|
-
return !el.getElementsByTagName("*").length;
|
1136
|
-
});
|
1192
|
+
support.getElementsByTagName = assert( function( el ) {
|
1193
|
+
el.appendChild( document.createComment( "" ) );
|
1194
|
+
return !el.getElementsByTagName( "*" ).length;
|
1195
|
+
} );
|
1137
1196
|
|
1138
1197
|
// Support: IE<9
|
1139
1198
|
support.getElementsByClassName = rnative.test( document.getElementsByClassName );
|
@@ -1142,38 +1201,38 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
1142
1201
|
// Check if getElementById returns elements by name
|
1143
1202
|
// The broken getElementById methods don't pick up programmatically-set names,
|
1144
1203
|
// so use a roundabout getElementsByName test
|
1145
|
-
support.getById = assert(function( el ) {
|
1204
|
+
support.getById = assert( function( el ) {
|
1146
1205
|
docElem.appendChild( el ).id = expando;
|
1147
1206
|
return !document.getElementsByName || !document.getElementsByName( expando ).length;
|
1148
|
-
});
|
1207
|
+
} );
|
1149
1208
|
|
1150
1209
|
// ID filter and find
|
1151
1210
|
if ( support.getById ) {
|
1152
|
-
Expr.filter["ID"] = function( id ) {
|
1211
|
+
Expr.filter[ "ID" ] = function( id ) {
|
1153
1212
|
var attrId = id.replace( runescape, funescape );
|
1154
1213
|
return function( elem ) {
|
1155
|
-
return elem.getAttribute("id") === attrId;
|
1214
|
+
return elem.getAttribute( "id" ) === attrId;
|
1156
1215
|
};
|
1157
1216
|
};
|
1158
|
-
Expr.find["ID"] = function( id, context ) {
|
1217
|
+
Expr.find[ "ID" ] = function( id, context ) {
|
1159
1218
|
if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
|
1160
1219
|
var elem = context.getElementById( id );
|
1161
1220
|
return elem ? [ elem ] : [];
|
1162
1221
|
}
|
1163
1222
|
};
|
1164
1223
|
} else {
|
1165
|
-
Expr.filter["ID"] = function( id ) {
|
1224
|
+
Expr.filter[ "ID" ] = function( id ) {
|
1166
1225
|
var attrId = id.replace( runescape, funescape );
|
1167
1226
|
return function( elem ) {
|
1168
1227
|
var node = typeof elem.getAttributeNode !== "undefined" &&
|
1169
|
-
elem.getAttributeNode("id");
|
1228
|
+
elem.getAttributeNode( "id" );
|
1170
1229
|
return node && node.value === attrId;
|
1171
1230
|
};
|
1172
1231
|
};
|
1173
1232
|
|
1174
1233
|
// Support: IE 6 - 7 only
|
1175
1234
|
// getElementById is not reliable as a find shortcut
|
1176
|
-
Expr.find["ID"] = function( id, context ) {
|
1235
|
+
Expr.find[ "ID" ] = function( id, context ) {
|
1177
1236
|
if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
|
1178
1237
|
var node, i, elems,
|
1179
1238
|
elem = context.getElementById( id );
|
@@ -1181,7 +1240,7 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
1181
1240
|
if ( elem ) {
|
1182
1241
|
|
1183
1242
|
// Verify the id attribute
|
1184
|
-
node = elem.getAttributeNode("id");
|
1243
|
+
node = elem.getAttributeNode( "id" );
|
1185
1244
|
if ( node && node.value === id ) {
|
1186
1245
|
return [ elem ];
|
1187
1246
|
}
|
@@ -1189,8 +1248,8 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
1189
1248
|
// Fall back on getElementsByName
|
1190
1249
|
elems = context.getElementsByName( id );
|
1191
1250
|
i = 0;
|
1192
|
-
while ( (elem = elems[i++]) ) {
|
1193
|
-
node = elem.getAttributeNode("id");
|
1251
|
+
while ( ( elem = elems[ i++ ] ) ) {
|
1252
|
+
node = elem.getAttributeNode( "id" );
|
1194
1253
|
if ( node && node.value === id ) {
|
1195
1254
|
return [ elem ];
|
1196
1255
|
}
|
@@ -1203,7 +1262,7 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
1203
1262
|
}
|
1204
1263
|
|
1205
1264
|
// Tag
|
1206
|
-
Expr.find["TAG"] = support.getElementsByTagName ?
|
1265
|
+
Expr.find[ "TAG" ] = support.getElementsByTagName ?
|
1207
1266
|
function( tag, context ) {
|
1208
1267
|
if ( typeof context.getElementsByTagName !== "undefined" ) {
|
1209
1268
|
return context.getElementsByTagName( tag );
|
@@ -1218,12 +1277,13 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
1218
1277
|
var elem,
|
1219
1278
|
tmp = [],
|
1220
1279
|
i = 0,
|
1280
|
+
|
1221
1281
|
// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
|
1222
1282
|
results = context.getElementsByTagName( tag );
|
1223
1283
|
|
1224
1284
|
// Filter out possible comments
|
1225
1285
|
if ( tag === "*" ) {
|
1226
|
-
while ( (elem = results[i++]) ) {
|
1286
|
+
while ( ( elem = results[ i++ ] ) ) {
|
1227
1287
|
if ( elem.nodeType === 1 ) {
|
1228
1288
|
tmp.push( elem );
|
1229
1289
|
}
|
@@ -1235,7 +1295,7 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
1235
1295
|
};
|
1236
1296
|
|
1237
1297
|
// Class
|
1238
|
-
Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
|
1298
|
+
Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) {
|
1239
1299
|
if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
|
1240
1300
|
return context.getElementsByClassName( className );
|
1241
1301
|
}
|
@@ -1256,10 +1316,14 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
1256
1316
|
// See https://bugs.jquery.com/ticket/13378
|
1257
1317
|
rbuggyQSA = [];
|
1258
1318
|
|
1259
|
-
if ( (support.qsa = rnative.test( document.querySelectorAll )) ) {
|
1319
|
+
if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {
|
1320
|
+
|
1260
1321
|
// Build QSA regex
|
1261
1322
|
// Regex strategy adopted from Diego Perini
|
1262
|
-
assert(function( el ) {
|
1323
|
+
assert( function( el ) {
|
1324
|
+
|
1325
|
+
var input;
|
1326
|
+
|
1263
1327
|
// Select is set to empty string on purpose
|
1264
1328
|
// This is to test IE's treatment of not explicitly
|
1265
1329
|
// setting a boolean content attribute,
|
@@ -1273,78 +1337,98 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
1273
1337
|
// Nothing should be selected when empty strings follow ^= or $= or *=
|
1274
1338
|
// The test attribute must be unknown in Opera but "safe" for WinRT
|
1275
1339
|
// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
|
1276
|
-
if ( el.querySelectorAll("[msallowcapture^='']").length ) {
|
1340
|
+
if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) {
|
1277
1341
|
rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
|
1278
1342
|
}
|
1279
1343
|
|
1280
1344
|
// Support: IE8
|
1281
1345
|
// Boolean attributes and "value" are not treated correctly
|
1282
|
-
if ( !el.querySelectorAll("[selected]").length ) {
|
1346
|
+
if ( !el.querySelectorAll( "[selected]" ).length ) {
|
1283
1347
|
rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
|
1284
1348
|
}
|
1285
1349
|
|
1286
1350
|
// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
|
1287
1351
|
if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
|
1288
|
-
rbuggyQSA.push("~=");
|
1352
|
+
rbuggyQSA.push( "~=" );
|
1353
|
+
}
|
1354
|
+
|
1355
|
+
// Support: IE 11+, Edge 15 - 18+
|
1356
|
+
// IE 11/Edge don't find elements on a `[name='']` query in some cases.
|
1357
|
+
// Adding a temporary attribute to the document before the selection works
|
1358
|
+
// around the issue.
|
1359
|
+
// Interestingly, IE 10 & older don't seem to have the issue.
|
1360
|
+
input = document.createElement( "input" );
|
1361
|
+
input.setAttribute( "name", "" );
|
1362
|
+
el.appendChild( input );
|
1363
|
+
if ( !el.querySelectorAll( "[name='']" ).length ) {
|
1364
|
+
rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" +
|
1365
|
+
whitespace + "*(?:''|\"\")" );
|
1289
1366
|
}
|
1290
1367
|
|
1291
1368
|
// Webkit/Opera - :checked should return selected option elements
|
1292
1369
|
// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
|
1293
1370
|
// IE8 throws error here and will not see later tests
|
1294
|
-
if ( !el.querySelectorAll(":checked").length ) {
|
1295
|
-
rbuggyQSA.push(":checked");
|
1371
|
+
if ( !el.querySelectorAll( ":checked" ).length ) {
|
1372
|
+
rbuggyQSA.push( ":checked" );
|
1296
1373
|
}
|
1297
1374
|
|
1298
1375
|
// Support: Safari 8+, iOS 8+
|
1299
1376
|
// https://bugs.webkit.org/show_bug.cgi?id=136851
|
1300
1377
|
// In-page `selector#id sibling-combinator selector` fails
|
1301
1378
|
if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
|
1302
|
-
rbuggyQSA.push(".#.+[+~]");
|
1379
|
+
rbuggyQSA.push( ".#.+[+~]" );
|
1303
1380
|
}
|
1304
|
-
});
|
1305
1381
|
|
1306
|
-
|
1382
|
+
// Support: Firefox <=3.6 - 5 only
|
1383
|
+
// Old Firefox doesn't throw on a badly-escaped identifier.
|
1384
|
+
el.querySelectorAll( "\\\f" );
|
1385
|
+
rbuggyQSA.push( "[\\r\\n\\f]" );
|
1386
|
+
} );
|
1387
|
+
|
1388
|
+
assert( function( el ) {
|
1307
1389
|
el.innerHTML = "<a href='' disabled='disabled'></a>" +
|
1308
1390
|
"<select disabled='disabled'><option/></select>";
|
1309
1391
|
|
1310
1392
|
// Support: Windows 8 Native Apps
|
1311
1393
|
// The type and name attributes are restricted during .innerHTML assignment
|
1312
|
-
var input = document.createElement("input");
|
1394
|
+
var input = document.createElement( "input" );
|
1313
1395
|
input.setAttribute( "type", "hidden" );
|
1314
1396
|
el.appendChild( input ).setAttribute( "name", "D" );
|
1315
1397
|
|
1316
1398
|
// Support: IE8
|
1317
1399
|
// Enforce case-sensitivity of name attribute
|
1318
|
-
if ( el.querySelectorAll("[name=d]").length ) {
|
1400
|
+
if ( el.querySelectorAll( "[name=d]" ).length ) {
|
1319
1401
|
rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
|
1320
1402
|
}
|
1321
1403
|
|
1322
1404
|
// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
|
1323
1405
|
// IE8 throws error here and will not see later tests
|
1324
|
-
if ( el.querySelectorAll(":enabled").length !== 2 ) {
|
1406
|
+
if ( el.querySelectorAll( ":enabled" ).length !== 2 ) {
|
1325
1407
|
rbuggyQSA.push( ":enabled", ":disabled" );
|
1326
1408
|
}
|
1327
1409
|
|
1328
1410
|
// Support: IE9-11+
|
1329
1411
|
// IE's :disabled selector does not pick up the children of disabled fieldsets
|
1330
1412
|
docElem.appendChild( el ).disabled = true;
|
1331
|
-
if ( el.querySelectorAll(":disabled").length !== 2 ) {
|
1413
|
+
if ( el.querySelectorAll( ":disabled" ).length !== 2 ) {
|
1332
1414
|
rbuggyQSA.push( ":enabled", ":disabled" );
|
1333
1415
|
}
|
1334
1416
|
|
1417
|
+
// Support: Opera 10 - 11 only
|
1335
1418
|
// Opera 10-11 does not throw on post-comma invalid pseudos
|
1336
|
-
el.querySelectorAll("*,:x");
|
1337
|
-
rbuggyQSA.push(",.*:");
|
1338
|
-
});
|
1419
|
+
el.querySelectorAll( "*,:x" );
|
1420
|
+
rbuggyQSA.push( ",.*:" );
|
1421
|
+
} );
|
1339
1422
|
}
|
1340
1423
|
|
1341
|
-
if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
|
1424
|
+
if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||
|
1342
1425
|
docElem.webkitMatchesSelector ||
|
1343
1426
|
docElem.mozMatchesSelector ||
|
1344
1427
|
docElem.oMatchesSelector ||
|
1345
|
-
docElem.msMatchesSelector) )) ) {
|
1428
|
+
docElem.msMatchesSelector ) ) ) ) {
|
1429
|
+
|
1430
|
+
assert( function( el ) {
|
1346
1431
|
|
1347
|
-
assert(function( el ) {
|
1348
1432
|
// Check to see if it's possible to do matchesSelector
|
1349
1433
|
// on a disconnected node (IE 9)
|
1350
1434
|
support.disconnectedMatch = matches.call( el, "*" );
|
@@ -1353,11 +1437,11 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
1353
1437
|
// Gecko does not error, returns false instead
|
1354
1438
|
matches.call( el, "[s!='']:x" );
|
1355
1439
|
rbuggyMatches.push( "!=", pseudos );
|
1356
|
-
});
|
1440
|
+
} );
|
1357
1441
|
}
|
1358
1442
|
|
1359
|
-
rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
|
1360
|
-
rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
|
1443
|
+
rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) );
|
1444
|
+
rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) );
|
1361
1445
|
|
1362
1446
|
/* Contains
|
1363
1447
|
---------------------------------------------------------------------- */
|
@@ -1374,11 +1458,11 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
1374
1458
|
adown.contains ?
|
1375
1459
|
adown.contains( bup ) :
|
1376
1460
|
a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
|
1377
|
-
));
|
1461
|
+
) );
|
1378
1462
|
} :
|
1379
1463
|
function( a, b ) {
|
1380
1464
|
if ( b ) {
|
1381
|
-
while ( (b = b.parentNode) ) {
|
1465
|
+
while ( ( b = b.parentNode ) ) {
|
1382
1466
|
if ( b === a ) {
|
1383
1467
|
return true;
|
1384
1468
|
}
|
@@ -1407,7 +1491,11 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
1407
1491
|
}
|
1408
1492
|
|
1409
1493
|
// Calculate position if both inputs belong to the same document
|
1410
|
-
|
1494
|
+
// Support: IE 11+, Edge 17 - 18+
|
1495
|
+
// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
|
1496
|
+
// two documents; shallow comparisons work.
|
1497
|
+
// eslint-disable-next-line eqeqeq
|
1498
|
+
compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?
|
1411
1499
|
a.compareDocumentPosition( b ) :
|
1412
1500
|
|
1413
1501
|
// Otherwise we know they are disconnected
|
@@ -1415,13 +1503,24 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
1415
1503
|
|
1416
1504
|
// Disconnected nodes
|
1417
1505
|
if ( compare & 1 ||
|
1418
|
-
(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
|
1506
|
+
( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {
|
1419
1507
|
|
1420
1508
|
// Choose the first element that is related to our preferred document
|
1421
|
-
|
1509
|
+
// Support: IE 11+, Edge 17 - 18+
|
1510
|
+
// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
|
1511
|
+
// two documents; shallow comparisons work.
|
1512
|
+
// eslint-disable-next-line eqeqeq
|
1513
|
+
if ( a == document || a.ownerDocument == preferredDoc &&
|
1514
|
+
contains( preferredDoc, a ) ) {
|
1422
1515
|
return -1;
|
1423
1516
|
}
|
1424
|
-
|
1517
|
+
|
1518
|
+
// Support: IE 11+, Edge 17 - 18+
|
1519
|
+
// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
|
1520
|
+
// two documents; shallow comparisons work.
|
1521
|
+
// eslint-disable-next-line eqeqeq
|
1522
|
+
if ( b == document || b.ownerDocument == preferredDoc &&
|
1523
|
+
contains( preferredDoc, b ) ) {
|
1425
1524
|
return 1;
|
1426
1525
|
}
|
1427
1526
|
|
@@ -1434,6 +1533,7 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
1434
1533
|
return compare & 4 ? -1 : 1;
|
1435
1534
|
} :
|
1436
1535
|
function( a, b ) {
|
1536
|
+
|
1437
1537
|
// Exit early if the nodes are identical
|
1438
1538
|
if ( a === b ) {
|
1439
1539
|
hasDuplicate = true;
|
@@ -1449,8 +1549,14 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
1449
1549
|
|
1450
1550
|
// Parentless nodes are either documents or disconnected
|
1451
1551
|
if ( !aup || !bup ) {
|
1452
|
-
|
1453
|
-
|
1552
|
+
|
1553
|
+
// Support: IE 11+, Edge 17 - 18+
|
1554
|
+
// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
|
1555
|
+
// two documents; shallow comparisons work.
|
1556
|
+
/* eslint-disable eqeqeq */
|
1557
|
+
return a == document ? -1 :
|
1558
|
+
b == document ? 1 :
|
1559
|
+
/* eslint-enable eqeqeq */
|
1454
1560
|
aup ? -1 :
|
1455
1561
|
bup ? 1 :
|
1456
1562
|
sortInput ?
|
@@ -1464,26 +1570,32 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
1464
1570
|
|
1465
1571
|
// Otherwise we need full lists of their ancestors for comparison
|
1466
1572
|
cur = a;
|
1467
|
-
while ( (cur = cur.parentNode) ) {
|
1573
|
+
while ( ( cur = cur.parentNode ) ) {
|
1468
1574
|
ap.unshift( cur );
|
1469
1575
|
}
|
1470
1576
|
cur = b;
|
1471
|
-
while ( (cur = cur.parentNode) ) {
|
1577
|
+
while ( ( cur = cur.parentNode ) ) {
|
1472
1578
|
bp.unshift( cur );
|
1473
1579
|
}
|
1474
1580
|
|
1475
1581
|
// Walk down the tree looking for a discrepancy
|
1476
|
-
while ( ap[i] === bp[i] ) {
|
1582
|
+
while ( ap[ i ] === bp[ i ] ) {
|
1477
1583
|
i++;
|
1478
1584
|
}
|
1479
1585
|
|
1480
1586
|
return i ?
|
1587
|
+
|
1481
1588
|
// Do a sibling check if the nodes have a common ancestor
|
1482
|
-
siblingCheck( ap[i], bp[i] ) :
|
1589
|
+
siblingCheck( ap[ i ], bp[ i ] ) :
|
1483
1590
|
|
1484
1591
|
// Otherwise nodes in our document sort first
|
1485
|
-
|
1486
|
-
|
1592
|
+
// Support: IE 11+, Edge 17 - 18+
|
1593
|
+
// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
|
1594
|
+
// two documents; shallow comparisons work.
|
1595
|
+
/* eslint-disable eqeqeq */
|
1596
|
+
ap[ i ] == preferredDoc ? -1 :
|
1597
|
+
bp[ i ] == preferredDoc ? 1 :
|
1598
|
+
/* eslint-enable eqeqeq */
|
1487
1599
|
0;
|
1488
1600
|
};
|
1489
1601
|
|
@@ -1495,10 +1607,7 @@ Sizzle.matches = function( expr, elements ) {
|
|
1495
1607
|
};
|
1496
1608
|
|
1497
1609
|
Sizzle.matchesSelector = function( elem, expr ) {
|
1498
|
-
|
1499
|
-
if ( ( elem.ownerDocument || elem ) !== document ) {
|
1500
|
-
setDocument( elem );
|
1501
|
-
}
|
1610
|
+
setDocument( elem );
|
1502
1611
|
|
1503
1612
|
if ( support.matchesSelector && documentIsHTML &&
|
1504
1613
|
!nonnativeSelectorCache[ expr + " " ] &&
|
@@ -1510,12 +1619,13 @@ Sizzle.matchesSelector = function( elem, expr ) {
|
|
1510
1619
|
|
1511
1620
|
// IE 9's matchesSelector returns false on disconnected nodes
|
1512
1621
|
if ( ret || support.disconnectedMatch ||
|
1513
|
-
|
1514
|
-
|
1515
|
-
|
1622
|
+
|
1623
|
+
// As well, disconnected nodes are said to be in a document
|
1624
|
+
// fragment in IE 9
|
1625
|
+
elem.document && elem.document.nodeType !== 11 ) {
|
1516
1626
|
return ret;
|
1517
1627
|
}
|
1518
|
-
} catch (e) {
|
1628
|
+
} catch ( e ) {
|
1519
1629
|
nonnativeSelectorCache( expr, true );
|
1520
1630
|
}
|
1521
1631
|
}
|
@@ -1524,20 +1634,31 @@ Sizzle.matchesSelector = function( elem, expr ) {
|
|
1524
1634
|
};
|
1525
1635
|
|
1526
1636
|
Sizzle.contains = function( context, elem ) {
|
1637
|
+
|
1527
1638
|
// Set document vars if needed
|
1528
|
-
|
1639
|
+
// Support: IE 11+, Edge 17 - 18+
|
1640
|
+
// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
|
1641
|
+
// two documents; shallow comparisons work.
|
1642
|
+
// eslint-disable-next-line eqeqeq
|
1643
|
+
if ( ( context.ownerDocument || context ) != document ) {
|
1529
1644
|
setDocument( context );
|
1530
1645
|
}
|
1531
1646
|
return contains( context, elem );
|
1532
1647
|
};
|
1533
1648
|
|
1534
1649
|
Sizzle.attr = function( elem, name ) {
|
1650
|
+
|
1535
1651
|
// Set document vars if needed
|
1536
|
-
|
1652
|
+
// Support: IE 11+, Edge 17 - 18+
|
1653
|
+
// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
|
1654
|
+
// two documents; shallow comparisons work.
|
1655
|
+
// eslint-disable-next-line eqeqeq
|
1656
|
+
if ( ( elem.ownerDocument || elem ) != document ) {
|
1537
1657
|
setDocument( elem );
|
1538
1658
|
}
|
1539
1659
|
|
1540
1660
|
var fn = Expr.attrHandle[ name.toLowerCase() ],
|
1661
|
+
|
1541
1662
|
// Don't get fooled by Object.prototype properties (jQuery #13807)
|
1542
1663
|
val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
|
1543
1664
|
fn( elem, name, !documentIsHTML ) :
|
@@ -1547,13 +1668,13 @@ Sizzle.attr = function( elem, name ) {
|
|
1547
1668
|
val :
|
1548
1669
|
support.attributes || !documentIsHTML ?
|
1549
1670
|
elem.getAttribute( name ) :
|
1550
|
-
(val = elem.getAttributeNode(name)) && val.specified ?
|
1671
|
+
( val = elem.getAttributeNode( name ) ) && val.specified ?
|
1551
1672
|
val.value :
|
1552
1673
|
null;
|
1553
1674
|
};
|
1554
1675
|
|
1555
1676
|
Sizzle.escape = function( sel ) {
|
1556
|
-
return (sel + "").replace( rcssescape, fcssescape );
|
1677
|
+
return ( sel + "" ).replace( rcssescape, fcssescape );
|
1557
1678
|
};
|
1558
1679
|
|
1559
1680
|
Sizzle.error = function( msg ) {
|
@@ -1576,7 +1697,7 @@ Sizzle.uniqueSort = function( results ) {
|
|
1576
1697
|
results.sort( sortOrder );
|
1577
1698
|
|
1578
1699
|
if ( hasDuplicate ) {
|
1579
|
-
while ( (elem = results[i++]) ) {
|
1700
|
+
while ( ( elem = results[ i++ ] ) ) {
|
1580
1701
|
if ( elem === results[ i ] ) {
|
1581
1702
|
j = duplicates.push( i );
|
1582
1703
|
}
|
@@ -1604,17 +1725,21 @@ getText = Sizzle.getText = function( elem ) {
|
|
1604
1725
|
nodeType = elem.nodeType;
|
1605
1726
|
|
1606
1727
|
if ( !nodeType ) {
|
1728
|
+
|
1607
1729
|
// If no nodeType, this is expected to be an array
|
1608
|
-
while ( (node = elem[i++]) ) {
|
1730
|
+
while ( ( node = elem[ i++ ] ) ) {
|
1731
|
+
|
1609
1732
|
// Do not traverse comment nodes
|
1610
1733
|
ret += getText( node );
|
1611
1734
|
}
|
1612
1735
|
} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
|
1736
|
+
|
1613
1737
|
// Use textContent for elements
|
1614
1738
|
// innerText usage removed for consistency of new lines (jQuery #11153)
|
1615
1739
|
if ( typeof elem.textContent === "string" ) {
|
1616
1740
|
return elem.textContent;
|
1617
1741
|
} else {
|
1742
|
+
|
1618
1743
|
// Traverse its children
|
1619
1744
|
for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
|
1620
1745
|
ret += getText( elem );
|
@@ -1623,6 +1748,7 @@ getText = Sizzle.getText = function( elem ) {
|
|
1623
1748
|
} else if ( nodeType === 3 || nodeType === 4 ) {
|
1624
1749
|
return elem.nodeValue;
|
1625
1750
|
}
|
1751
|
+
|
1626
1752
|
// Do not include comment or processing instruction nodes
|
1627
1753
|
|
1628
1754
|
return ret;
|
@@ -1650,19 +1776,21 @@ Expr = Sizzle.selectors = {
|
|
1650
1776
|
|
1651
1777
|
preFilter: {
|
1652
1778
|
"ATTR": function( match ) {
|
1653
|
-
match[1] = match[1].replace( runescape, funescape );
|
1779
|
+
match[ 1 ] = match[ 1 ].replace( runescape, funescape );
|
1654
1780
|
|
1655
1781
|
// Move the given value to match[3] whether quoted or unquoted
|
1656
|
-
match[3] = ( match[3] || match[4
|
1782
|
+
match[ 3 ] = ( match[ 3 ] || match[ 4 ] ||
|
1783
|
+
match[ 5 ] || "" ).replace( runescape, funescape );
|
1657
1784
|
|
1658
|
-
if ( match[2] === "~=" ) {
|
1659
|
-
match[3] = " " + match[3] + " ";
|
1785
|
+
if ( match[ 2 ] === "~=" ) {
|
1786
|
+
match[ 3 ] = " " + match[ 3 ] + " ";
|
1660
1787
|
}
|
1661
1788
|
|
1662
1789
|
return match.slice( 0, 4 );
|
1663
1790
|
},
|
1664
1791
|
|
1665
1792
|
"CHILD": function( match ) {
|
1793
|
+
|
1666
1794
|
/* matches from matchExpr["CHILD"]
|
1667
1795
|
1 type (only|nth|...)
|
1668
1796
|
2 what (child|of-type)
|
@@ -1673,22 +1801,25 @@ Expr = Sizzle.selectors = {
|
|
1673
1801
|
7 sign of y-component
|
1674
1802
|
8 y of y-component
|
1675
1803
|
*/
|
1676
|
-
match[1] = match[1].toLowerCase();
|
1804
|
+
match[ 1 ] = match[ 1 ].toLowerCase();
|
1805
|
+
|
1806
|
+
if ( match[ 1 ].slice( 0, 3 ) === "nth" ) {
|
1677
1807
|
|
1678
|
-
if ( match[1].slice( 0, 3 ) === "nth" ) {
|
1679
1808
|
// nth-* requires argument
|
1680
|
-
if ( !match[3] ) {
|
1681
|
-
Sizzle.error( match[0] );
|
1809
|
+
if ( !match[ 3 ] ) {
|
1810
|
+
Sizzle.error( match[ 0 ] );
|
1682
1811
|
}
|
1683
1812
|
|
1684
1813
|
// numeric x and y parameters for Expr.filter.CHILD
|
1685
1814
|
// remember that false/true cast respectively to 0/1
|
1686
|
-
match[4] = +( match[4] ?
|
1687
|
-
|
1815
|
+
match[ 4 ] = +( match[ 4 ] ?
|
1816
|
+
match[ 5 ] + ( match[ 6 ] || 1 ) :
|
1817
|
+
2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) );
|
1818
|
+
match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" );
|
1688
1819
|
|
1689
|
-
|
1690
|
-
} else if ( match[3] ) {
|
1691
|
-
Sizzle.error( match[0] );
|
1820
|
+
// other types prohibit arguments
|
1821
|
+
} else if ( match[ 3 ] ) {
|
1822
|
+
Sizzle.error( match[ 0 ] );
|
1692
1823
|
}
|
1693
1824
|
|
1694
1825
|
return match;
|
@@ -1696,26 +1827,28 @@ Expr = Sizzle.selectors = {
|
|
1696
1827
|
|
1697
1828
|
"PSEUDO": function( match ) {
|
1698
1829
|
var excess,
|
1699
|
-
unquoted = !match[6] && match[2];
|
1830
|
+
unquoted = !match[ 6 ] && match[ 2 ];
|
1700
1831
|
|
1701
|
-
if ( matchExpr["CHILD"].test( match[0] ) ) {
|
1832
|
+
if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) {
|
1702
1833
|
return null;
|
1703
1834
|
}
|
1704
1835
|
|
1705
1836
|
// Accept quoted arguments as-is
|
1706
|
-
if ( match[3] ) {
|
1707
|
-
match[2] = match[4] || match[5] || "";
|
1837
|
+
if ( match[ 3 ] ) {
|
1838
|
+
match[ 2 ] = match[ 4 ] || match[ 5 ] || "";
|
1708
1839
|
|
1709
1840
|
// Strip excess characters from unquoted arguments
|
1710
1841
|
} else if ( unquoted && rpseudo.test( unquoted ) &&
|
1842
|
+
|
1711
1843
|
// Get excess from tokenize (recursively)
|
1712
|
-
(excess = tokenize( unquoted, true )) &&
|
1844
|
+
( excess = tokenize( unquoted, true ) ) &&
|
1845
|
+
|
1713
1846
|
// advance to the next closing parenthesis
|
1714
|
-
(excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
|
1847
|
+
( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) {
|
1715
1848
|
|
1716
1849
|
// excess is a negative index
|
1717
|
-
match[0] = match[0].slice( 0, excess );
|
1718
|
-
match[2] = unquoted.slice( 0, excess );
|
1850
|
+
match[ 0 ] = match[ 0 ].slice( 0, excess );
|
1851
|
+
match[ 2 ] = unquoted.slice( 0, excess );
|
1719
1852
|
}
|
1720
1853
|
|
1721
1854
|
// Return only captures needed by the pseudo filter method (type and argument)
|
@@ -1728,7 +1861,9 @@ Expr = Sizzle.selectors = {
|
|
1728
1861
|
"TAG": function( nodeNameSelector ) {
|
1729
1862
|
var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
|
1730
1863
|
return nodeNameSelector === "*" ?
|
1731
|
-
function() {
|
1864
|
+
function() {
|
1865
|
+
return true;
|
1866
|
+
} :
|
1732
1867
|
function( elem ) {
|
1733
1868
|
return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
|
1734
1869
|
};
|
@@ -1738,10 +1873,16 @@ Expr = Sizzle.selectors = {
|
|
1738
1873
|
var pattern = classCache[ className + " " ];
|
1739
1874
|
|
1740
1875
|
return pattern ||
|
1741
|
-
(pattern = new RegExp( "(^|" + whitespace +
|
1742
|
-
|
1743
|
-
|
1744
|
-
|
1876
|
+
( pattern = new RegExp( "(^|" + whitespace +
|
1877
|
+
")" + className + "(" + whitespace + "|$)" ) ) && classCache(
|
1878
|
+
className, function( elem ) {
|
1879
|
+
return pattern.test(
|
1880
|
+
typeof elem.className === "string" && elem.className ||
|
1881
|
+
typeof elem.getAttribute !== "undefined" &&
|
1882
|
+
elem.getAttribute( "class" ) ||
|
1883
|
+
""
|
1884
|
+
);
|
1885
|
+
} );
|
1745
1886
|
},
|
1746
1887
|
|
1747
1888
|
"ATTR": function( name, operator, check ) {
|
@@ -1757,6 +1898,8 @@ Expr = Sizzle.selectors = {
|
|
1757
1898
|
|
1758
1899
|
result += "";
|
1759
1900
|
|
1901
|
+
/* eslint-disable max-len */
|
1902
|
+
|
1760
1903
|
return operator === "=" ? result === check :
|
1761
1904
|
operator === "!=" ? result !== check :
|
1762
1905
|
operator === "^=" ? check && result.indexOf( check ) === 0 :
|
@@ -1765,10 +1908,12 @@ Expr = Sizzle.selectors = {
|
|
1765
1908
|
operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
|
1766
1909
|
operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
|
1767
1910
|
false;
|
1911
|
+
/* eslint-enable max-len */
|
1912
|
+
|
1768
1913
|
};
|
1769
1914
|
},
|
1770
1915
|
|
1771
|
-
"CHILD": function( type, what,
|
1916
|
+
"CHILD": function( type, what, _argument, first, last ) {
|
1772
1917
|
var simple = type.slice( 0, 3 ) !== "nth",
|
1773
1918
|
forward = type.slice( -4 ) !== "last",
|
1774
1919
|
ofType = what === "of-type";
|
@@ -1780,7 +1925,7 @@ Expr = Sizzle.selectors = {
|
|
1780
1925
|
return !!elem.parentNode;
|
1781
1926
|
} :
|
1782
1927
|
|
1783
|
-
function( elem,
|
1928
|
+
function( elem, _context, xml ) {
|
1784
1929
|
var cache, uniqueCache, outerCache, node, nodeIndex, start,
|
1785
1930
|
dir = simple !== forward ? "nextSibling" : "previousSibling",
|
1786
1931
|
parent = elem.parentNode,
|
@@ -1794,7 +1939,7 @@ Expr = Sizzle.selectors = {
|
|
1794
1939
|
if ( simple ) {
|
1795
1940
|
while ( dir ) {
|
1796
1941
|
node = elem;
|
1797
|
-
while ( (node = node[ dir ]) ) {
|
1942
|
+
while ( ( node = node[ dir ] ) ) {
|
1798
1943
|
if ( ofType ?
|
1799
1944
|
node.nodeName.toLowerCase() === name :
|
1800
1945
|
node.nodeType === 1 ) {
|
@@ -1802,6 +1947,7 @@ Expr = Sizzle.selectors = {
|
|
1802
1947
|
return false;
|
1803
1948
|
}
|
1804
1949
|
}
|
1950
|
+
|
1805
1951
|
// Reverse direction for :only-* (if we haven't yet done so)
|
1806
1952
|
start = dir = type === "only" && !start && "nextSibling";
|
1807
1953
|
}
|
@@ -1817,22 +1963,22 @@ Expr = Sizzle.selectors = {
|
|
1817
1963
|
|
1818
1964
|
// ...in a gzip-friendly way
|
1819
1965
|
node = parent;
|
1820
|
-
outerCache = node[ expando ] || (node[ expando ] = {});
|
1966
|
+
outerCache = node[ expando ] || ( node[ expando ] = {} );
|
1821
1967
|
|
1822
1968
|
// Support: IE <9 only
|
1823
1969
|
// Defend against cloned attroperties (jQuery gh-1709)
|
1824
1970
|
uniqueCache = outerCache[ node.uniqueID ] ||
|
1825
|
-
(outerCache[ node.uniqueID ] = {});
|
1971
|
+
( outerCache[ node.uniqueID ] = {} );
|
1826
1972
|
|
1827
1973
|
cache = uniqueCache[ type ] || [];
|
1828
1974
|
nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
|
1829
1975
|
diff = nodeIndex && cache[ 2 ];
|
1830
1976
|
node = nodeIndex && parent.childNodes[ nodeIndex ];
|
1831
1977
|
|
1832
|
-
while ( (node = ++nodeIndex && node && node[ dir ] ||
|
1978
|
+
while ( ( node = ++nodeIndex && node && node[ dir ] ||
|
1833
1979
|
|
1834
1980
|
// Fallback to seeking `elem` from the start
|
1835
|
-
(diff = nodeIndex = 0) || start.pop()) ) {
|
1981
|
+
( diff = nodeIndex = 0 ) || start.pop() ) ) {
|
1836
1982
|
|
1837
1983
|
// When found, cache indexes on `parent` and break
|
1838
1984
|
if ( node.nodeType === 1 && ++diff && node === elem ) {
|
@@ -1842,16 +1988,18 @@ Expr = Sizzle.selectors = {
|
|
1842
1988
|
}
|
1843
1989
|
|
1844
1990
|
} else {
|
1991
|
+
|
1845
1992
|
// Use previously-cached element index if available
|
1846
1993
|
if ( useCache ) {
|
1994
|
+
|
1847
1995
|
// ...in a gzip-friendly way
|
1848
1996
|
node = elem;
|
1849
|
-
outerCache = node[ expando ] || (node[ expando ] = {});
|
1997
|
+
outerCache = node[ expando ] || ( node[ expando ] = {} );
|
1850
1998
|
|
1851
1999
|
// Support: IE <9 only
|
1852
2000
|
// Defend against cloned attroperties (jQuery gh-1709)
|
1853
2001
|
uniqueCache = outerCache[ node.uniqueID ] ||
|
1854
|
-
(outerCache[ node.uniqueID ] = {});
|
2002
|
+
( outerCache[ node.uniqueID ] = {} );
|
1855
2003
|
|
1856
2004
|
cache = uniqueCache[ type ] || [];
|
1857
2005
|
nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
|
@@ -1861,9 +2009,10 @@ Expr = Sizzle.selectors = {
|
|
1861
2009
|
// xml :nth-child(...)
|
1862
2010
|
// or :nth-last-child(...) or :nth(-last)?-of-type(...)
|
1863
2011
|
if ( diff === false ) {
|
2012
|
+
|
1864
2013
|
// Use the same loop as above to seek `elem` from the start
|
1865
|
-
while ( (node = ++nodeIndex && node && node[ dir ] ||
|
1866
|
-
(diff = nodeIndex = 0) || start.pop()) ) {
|
2014
|
+
while ( ( node = ++nodeIndex && node && node[ dir ] ||
|
2015
|
+
( diff = nodeIndex = 0 ) || start.pop() ) ) {
|
1867
2016
|
|
1868
2017
|
if ( ( ofType ?
|
1869
2018
|
node.nodeName.toLowerCase() === name :
|
@@ -1872,12 +2021,13 @@ Expr = Sizzle.selectors = {
|
|
1872
2021
|
|
1873
2022
|
// Cache the index of each encountered element
|
1874
2023
|
if ( useCache ) {
|
1875
|
-
outerCache = node[ expando ] ||
|
2024
|
+
outerCache = node[ expando ] ||
|
2025
|
+
( node[ expando ] = {} );
|
1876
2026
|
|
1877
2027
|
// Support: IE <9 only
|
1878
2028
|
// Defend against cloned attroperties (jQuery gh-1709)
|
1879
2029
|
uniqueCache = outerCache[ node.uniqueID ] ||
|
1880
|
-
(outerCache[ node.uniqueID ] = {});
|
2030
|
+
( outerCache[ node.uniqueID ] = {} );
|
1881
2031
|
|
1882
2032
|
uniqueCache[ type ] = [ dirruns, diff ];
|
1883
2033
|
}
|
@@ -1898,6 +2048,7 @@ Expr = Sizzle.selectors = {
|
|
1898
2048
|
},
|
1899
2049
|
|
1900
2050
|
"PSEUDO": function( pseudo, argument ) {
|
2051
|
+
|
1901
2052
|
// pseudo-class names are case-insensitive
|
1902
2053
|
// http://www.w3.org/TR/selectors/#pseudo-classes
|
1903
2054
|
// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
|
@@ -1917,15 +2068,15 @@ Expr = Sizzle.selectors = {
|
|
1917
2068
|
if ( fn.length > 1 ) {
|
1918
2069
|
args = [ pseudo, pseudo, "", argument ];
|
1919
2070
|
return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
|
1920
|
-
markFunction(function( seed, matches ) {
|
2071
|
+
markFunction( function( seed, matches ) {
|
1921
2072
|
var idx,
|
1922
2073
|
matched = fn( seed, argument ),
|
1923
2074
|
i = matched.length;
|
1924
2075
|
while ( i-- ) {
|
1925
|
-
idx = indexOf( seed, matched[i] );
|
1926
|
-
seed[ idx ] = !( matches[ idx ] = matched[i] );
|
2076
|
+
idx = indexOf( seed, matched[ i ] );
|
2077
|
+
seed[ idx ] = !( matches[ idx ] = matched[ i ] );
|
1927
2078
|
}
|
1928
|
-
}) :
|
2079
|
+
} ) :
|
1929
2080
|
function( elem ) {
|
1930
2081
|
return fn( elem, 0, args );
|
1931
2082
|
};
|
@@ -1936,8 +2087,10 @@ Expr = Sizzle.selectors = {
|
|
1936
2087
|
},
|
1937
2088
|
|
1938
2089
|
pseudos: {
|
2090
|
+
|
1939
2091
|
// Potentially complex pseudos
|
1940
|
-
"not": markFunction(function( selector ) {
|
2092
|
+
"not": markFunction( function( selector ) {
|
2093
|
+
|
1941
2094
|
// Trim the selector passed to compile
|
1942
2095
|
// to avoid treating leading and trailing
|
1943
2096
|
// spaces as combinators
|
@@ -1946,39 +2099,40 @@ Expr = Sizzle.selectors = {
|
|
1946
2099
|
matcher = compile( selector.replace( rtrim, "$1" ) );
|
1947
2100
|
|
1948
2101
|
return matcher[ expando ] ?
|
1949
|
-
markFunction(function( seed, matches,
|
2102
|
+
markFunction( function( seed, matches, _context, xml ) {
|
1950
2103
|
var elem,
|
1951
2104
|
unmatched = matcher( seed, null, xml, [] ),
|
1952
2105
|
i = seed.length;
|
1953
2106
|
|
1954
2107
|
// Match elements unmatched by `matcher`
|
1955
2108
|
while ( i-- ) {
|
1956
|
-
if ( (elem = unmatched[i]) ) {
|
1957
|
-
seed[i] = !(matches[i] = elem);
|
2109
|
+
if ( ( elem = unmatched[ i ] ) ) {
|
2110
|
+
seed[ i ] = !( matches[ i ] = elem );
|
1958
2111
|
}
|
1959
2112
|
}
|
1960
|
-
}) :
|
1961
|
-
function( elem,
|
1962
|
-
input[0] = elem;
|
2113
|
+
} ) :
|
2114
|
+
function( elem, _context, xml ) {
|
2115
|
+
input[ 0 ] = elem;
|
1963
2116
|
matcher( input, null, xml, results );
|
2117
|
+
|
1964
2118
|
// Don't keep the element (issue #299)
|
1965
|
-
input[0] = null;
|
2119
|
+
input[ 0 ] = null;
|
1966
2120
|
return !results.pop();
|
1967
2121
|
};
|
1968
|
-
}),
|
2122
|
+
} ),
|
1969
2123
|
|
1970
|
-
"has": markFunction(function( selector ) {
|
2124
|
+
"has": markFunction( function( selector ) {
|
1971
2125
|
return function( elem ) {
|
1972
2126
|
return Sizzle( selector, elem ).length > 0;
|
1973
2127
|
};
|
1974
|
-
}),
|
2128
|
+
} ),
|
1975
2129
|
|
1976
|
-
"contains": markFunction(function( text ) {
|
2130
|
+
"contains": markFunction( function( text ) {
|
1977
2131
|
text = text.replace( runescape, funescape );
|
1978
2132
|
return function( elem ) {
|
1979
2133
|
return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;
|
1980
2134
|
};
|
1981
|
-
}),
|
2135
|
+
} ),
|
1982
2136
|
|
1983
2137
|
// "Whether an element is represented by a :lang() selector
|
1984
2138
|
// is based solely on the element's language value
|
@@ -1988,25 +2142,26 @@ Expr = Sizzle.selectors = {
|
|
1988
2142
|
// The identifier C does not have to be a valid language name."
|
1989
2143
|
// http://www.w3.org/TR/selectors/#lang-pseudo
|
1990
2144
|
"lang": markFunction( function( lang ) {
|
2145
|
+
|
1991
2146
|
// lang value must be a valid identifier
|
1992
|
-
if ( !ridentifier.test(lang || "") ) {
|
2147
|
+
if ( !ridentifier.test( lang || "" ) ) {
|
1993
2148
|
Sizzle.error( "unsupported lang: " + lang );
|
1994
2149
|
}
|
1995
2150
|
lang = lang.replace( runescape, funescape ).toLowerCase();
|
1996
2151
|
return function( elem ) {
|
1997
2152
|
var elemLang;
|
1998
2153
|
do {
|
1999
|
-
if ( (elemLang = documentIsHTML ?
|
2154
|
+
if ( ( elemLang = documentIsHTML ?
|
2000
2155
|
elem.lang :
|
2001
|
-
elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
|
2156
|
+
elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) {
|
2002
2157
|
|
2003
2158
|
elemLang = elemLang.toLowerCase();
|
2004
2159
|
return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
|
2005
2160
|
}
|
2006
|
-
} while ( (elem = elem.parentNode) && elem.nodeType === 1 );
|
2161
|
+
} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );
|
2007
2162
|
return false;
|
2008
2163
|
};
|
2009
|
-
}),
|
2164
|
+
} ),
|
2010
2165
|
|
2011
2166
|
// Miscellaneous
|
2012
2167
|
"target": function( elem ) {
|
@@ -2019,7 +2174,9 @@ Expr = Sizzle.selectors = {
|
|
2019
2174
|
},
|
2020
2175
|
|
2021
2176
|
"focus": function( elem ) {
|
2022
|
-
return elem === document.activeElement &&
|
2177
|
+
return elem === document.activeElement &&
|
2178
|
+
( !document.hasFocus || document.hasFocus() ) &&
|
2179
|
+
!!( elem.type || elem.href || ~elem.tabIndex );
|
2023
2180
|
},
|
2024
2181
|
|
2025
2182
|
// Boolean properties
|
@@ -2027,16 +2184,20 @@ Expr = Sizzle.selectors = {
|
|
2027
2184
|
"disabled": createDisabledPseudo( true ),
|
2028
2185
|
|
2029
2186
|
"checked": function( elem ) {
|
2187
|
+
|
2030
2188
|
// In CSS3, :checked should return both checked and selected elements
|
2031
2189
|
// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
|
2032
2190
|
var nodeName = elem.nodeName.toLowerCase();
|
2033
|
-
return (nodeName === "input" && !!elem.checked) ||
|
2191
|
+
return ( nodeName === "input" && !!elem.checked ) ||
|
2192
|
+
( nodeName === "option" && !!elem.selected );
|
2034
2193
|
},
|
2035
2194
|
|
2036
2195
|
"selected": function( elem ) {
|
2196
|
+
|
2037
2197
|
// Accessing this property makes selected-by-default
|
2038
2198
|
// options in Safari work properly
|
2039
2199
|
if ( elem.parentNode ) {
|
2200
|
+
// eslint-disable-next-line no-unused-expressions
|
2040
2201
|
elem.parentNode.selectedIndex;
|
2041
2202
|
}
|
2042
2203
|
|
@@ -2045,6 +2206,7 @@ Expr = Sizzle.selectors = {
|
|
2045
2206
|
|
2046
2207
|
// Contents
|
2047
2208
|
"empty": function( elem ) {
|
2209
|
+
|
2048
2210
|
// http://www.w3.org/TR/selectors/#empty-pseudo
|
2049
2211
|
// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
|
2050
2212
|
// but not by others (comment: 8; processing instruction: 7; etc.)
|
@@ -2058,7 +2220,7 @@ Expr = Sizzle.selectors = {
|
|
2058
2220
|
},
|
2059
2221
|
|
2060
2222
|
"parent": function( elem ) {
|
2061
|
-
return !Expr.pseudos["empty"]( elem );
|
2223
|
+
return !Expr.pseudos[ "empty" ]( elem );
|
2062
2224
|
},
|
2063
2225
|
|
2064
2226
|
// Element/input types
|
@@ -2082,39 +2244,40 @@ Expr = Sizzle.selectors = {
|
|
2082
2244
|
|
2083
2245
|
// Support: IE<8
|
2084
2246
|
// New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
|
2085
|
-
( (attr = elem.getAttribute("type")) == null ||
|
2247
|
+
( ( attr = elem.getAttribute( "type" ) ) == null ||
|
2248
|
+
attr.toLowerCase() === "text" );
|
2086
2249
|
},
|
2087
2250
|
|
2088
2251
|
// Position-in-collection
|
2089
|
-
"first": createPositionalPseudo(function() {
|
2252
|
+
"first": createPositionalPseudo( function() {
|
2090
2253
|
return [ 0 ];
|
2091
|
-
}),
|
2254
|
+
} ),
|
2092
2255
|
|
2093
|
-
"last": createPositionalPseudo(function(
|
2256
|
+
"last": createPositionalPseudo( function( _matchIndexes, length ) {
|
2094
2257
|
return [ length - 1 ];
|
2095
|
-
}),
|
2258
|
+
} ),
|
2096
2259
|
|
2097
|
-
"eq": createPositionalPseudo(function(
|
2260
|
+
"eq": createPositionalPseudo( function( _matchIndexes, length, argument ) {
|
2098
2261
|
return [ argument < 0 ? argument + length : argument ];
|
2099
|
-
}),
|
2262
|
+
} ),
|
2100
2263
|
|
2101
|
-
"even": createPositionalPseudo(function( matchIndexes, length ) {
|
2264
|
+
"even": createPositionalPseudo( function( matchIndexes, length ) {
|
2102
2265
|
var i = 0;
|
2103
2266
|
for ( ; i < length; i += 2 ) {
|
2104
2267
|
matchIndexes.push( i );
|
2105
2268
|
}
|
2106
2269
|
return matchIndexes;
|
2107
|
-
}),
|
2270
|
+
} ),
|
2108
2271
|
|
2109
|
-
"odd": createPositionalPseudo(function( matchIndexes, length ) {
|
2272
|
+
"odd": createPositionalPseudo( function( matchIndexes, length ) {
|
2110
2273
|
var i = 1;
|
2111
2274
|
for ( ; i < length; i += 2 ) {
|
2112
2275
|
matchIndexes.push( i );
|
2113
2276
|
}
|
2114
2277
|
return matchIndexes;
|
2115
|
-
}),
|
2278
|
+
} ),
|
2116
2279
|
|
2117
|
-
"lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
|
2280
|
+
"lt": createPositionalPseudo( function( matchIndexes, length, argument ) {
|
2118
2281
|
var i = argument < 0 ?
|
2119
2282
|
argument + length :
|
2120
2283
|
argument > length ?
|
@@ -2124,19 +2287,19 @@ Expr = Sizzle.selectors = {
|
|
2124
2287
|
matchIndexes.push( i );
|
2125
2288
|
}
|
2126
2289
|
return matchIndexes;
|
2127
|
-
}),
|
2290
|
+
} ),
|
2128
2291
|
|
2129
|
-
"gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
|
2292
|
+
"gt": createPositionalPseudo( function( matchIndexes, length, argument ) {
|
2130
2293
|
var i = argument < 0 ? argument + length : argument;
|
2131
2294
|
for ( ; ++i < length; ) {
|
2132
2295
|
matchIndexes.push( i );
|
2133
2296
|
}
|
2134
2297
|
return matchIndexes;
|
2135
|
-
})
|
2298
|
+
} )
|
2136
2299
|
}
|
2137
2300
|
};
|
2138
2301
|
|
2139
|
-
Expr.pseudos["nth"] = Expr.pseudos["eq"];
|
2302
|
+
Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ];
|
2140
2303
|
|
2141
2304
|
// Add button/input type pseudos
|
2142
2305
|
for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
|
@@ -2167,37 +2330,39 @@ tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
|
|
2167
2330
|
while ( soFar ) {
|
2168
2331
|
|
2169
2332
|
// Comma and first run
|
2170
|
-
if ( !matched || (match = rcomma.exec( soFar )) ) {
|
2333
|
+
if ( !matched || ( match = rcomma.exec( soFar ) ) ) {
|
2171
2334
|
if ( match ) {
|
2335
|
+
|
2172
2336
|
// Don't consume trailing commas as valid
|
2173
|
-
soFar = soFar.slice( match[0].length ) || soFar;
|
2337
|
+
soFar = soFar.slice( match[ 0 ].length ) || soFar;
|
2174
2338
|
}
|
2175
|
-
groups.push( (tokens = []) );
|
2339
|
+
groups.push( ( tokens = [] ) );
|
2176
2340
|
}
|
2177
2341
|
|
2178
2342
|
matched = false;
|
2179
2343
|
|
2180
2344
|
// Combinators
|
2181
|
-
if ( (match = rcombinators.exec( soFar )) ) {
|
2345
|
+
if ( ( match = rcombinators.exec( soFar ) ) ) {
|
2182
2346
|
matched = match.shift();
|
2183
|
-
tokens.push({
|
2347
|
+
tokens.push( {
|
2184
2348
|
value: matched,
|
2349
|
+
|
2185
2350
|
// Cast descendant combinators to space
|
2186
|
-
type: match[0].replace( rtrim, " " )
|
2187
|
-
});
|
2351
|
+
type: match[ 0 ].replace( rtrim, " " )
|
2352
|
+
} );
|
2188
2353
|
soFar = soFar.slice( matched.length );
|
2189
2354
|
}
|
2190
2355
|
|
2191
2356
|
// Filters
|
2192
2357
|
for ( type in Expr.filter ) {
|
2193
|
-
if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
|
2194
|
-
(match = preFilters[ type ]( match ))) ) {
|
2358
|
+
if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||
|
2359
|
+
( match = preFilters[ type ]( match ) ) ) ) {
|
2195
2360
|
matched = match.shift();
|
2196
|
-
tokens.push({
|
2361
|
+
tokens.push( {
|
2197
2362
|
value: matched,
|
2198
2363
|
type: type,
|
2199
2364
|
matches: match
|
2200
|
-
});
|
2365
|
+
} );
|
2201
2366
|
soFar = soFar.slice( matched.length );
|
2202
2367
|
}
|
2203
2368
|
}
|
@@ -2214,6 +2379,7 @@ tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
|
|
2214
2379
|
soFar.length :
|
2215
2380
|
soFar ?
|
2216
2381
|
Sizzle.error( selector ) :
|
2382
|
+
|
2217
2383
|
// Cache the tokens
|
2218
2384
|
tokenCache( selector, groups ).slice( 0 );
|
2219
2385
|
};
|
@@ -2223,7 +2389,7 @@ function toSelector( tokens ) {
|
|
2223
2389
|
len = tokens.length,
|
2224
2390
|
selector = "";
|
2225
2391
|
for ( ; i < len; i++ ) {
|
2226
|
-
selector += tokens[i].value;
|
2392
|
+
selector += tokens[ i ].value;
|
2227
2393
|
}
|
2228
2394
|
return selector;
|
2229
2395
|
}
|
@@ -2236,9 +2402,10 @@ function addCombinator( matcher, combinator, base ) {
|
|
2236
2402
|
doneName = done++;
|
2237
2403
|
|
2238
2404
|
return combinator.first ?
|
2405
|
+
|
2239
2406
|
// Check against closest ancestor/preceding element
|
2240
2407
|
function( elem, context, xml ) {
|
2241
|
-
while ( (elem = elem[ dir ]) ) {
|
2408
|
+
while ( ( elem = elem[ dir ] ) ) {
|
2242
2409
|
if ( elem.nodeType === 1 || checkNonElements ) {
|
2243
2410
|
return matcher( elem, context, xml );
|
2244
2411
|
}
|
@@ -2253,7 +2420,7 @@ function addCombinator( matcher, combinator, base ) {
|
|
2253
2420
|
|
2254
2421
|
// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
|
2255
2422
|
if ( xml ) {
|
2256
|
-
while ( (elem = elem[ dir ]) ) {
|
2423
|
+
while ( ( elem = elem[ dir ] ) ) {
|
2257
2424
|
if ( elem.nodeType === 1 || checkNonElements ) {
|
2258
2425
|
if ( matcher( elem, context, xml ) ) {
|
2259
2426
|
return true;
|
@@ -2261,27 +2428,29 @@ function addCombinator( matcher, combinator, base ) {
|
|
2261
2428
|
}
|
2262
2429
|
}
|
2263
2430
|
} else {
|
2264
|
-
while ( (elem = elem[ dir ]) ) {
|
2431
|
+
while ( ( elem = elem[ dir ] ) ) {
|
2265
2432
|
if ( elem.nodeType === 1 || checkNonElements ) {
|
2266
|
-
outerCache = elem[ expando ] || (elem[ expando ] = {});
|
2433
|
+
outerCache = elem[ expando ] || ( elem[ expando ] = {} );
|
2267
2434
|
|
2268
2435
|
// Support: IE <9 only
|
2269
2436
|
// Defend against cloned attroperties (jQuery gh-1709)
|
2270
|
-
uniqueCache = outerCache[ elem.uniqueID ] ||
|
2437
|
+
uniqueCache = outerCache[ elem.uniqueID ] ||
|
2438
|
+
( outerCache[ elem.uniqueID ] = {} );
|
2271
2439
|
|
2272
2440
|
if ( skip && skip === elem.nodeName.toLowerCase() ) {
|
2273
2441
|
elem = elem[ dir ] || elem;
|
2274
|
-
} else if ( (oldCache = uniqueCache[ key ]) &&
|
2442
|
+
} else if ( ( oldCache = uniqueCache[ key ] ) &&
|
2275
2443
|
oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
|
2276
2444
|
|
2277
2445
|
// Assign to newCache so results back-propagate to previous elements
|
2278
|
-
return (newCache[ 2 ] = oldCache[ 2 ]);
|
2446
|
+
return ( newCache[ 2 ] = oldCache[ 2 ] );
|
2279
2447
|
} else {
|
2448
|
+
|
2280
2449
|
// Reuse newcache so results back-propagate to previous elements
|
2281
2450
|
uniqueCache[ key ] = newCache;
|
2282
2451
|
|
2283
2452
|
// A match means we're done; a fail means we have to keep checking
|
2284
|
-
if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
|
2453
|
+
if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {
|
2285
2454
|
return true;
|
2286
2455
|
}
|
2287
2456
|
}
|
@@ -2297,20 +2466,20 @@ function elementMatcher( matchers ) {
|
|
2297
2466
|
function( elem, context, xml ) {
|
2298
2467
|
var i = matchers.length;
|
2299
2468
|
while ( i-- ) {
|
2300
|
-
if ( !matchers[i]( elem, context, xml ) ) {
|
2469
|
+
if ( !matchers[ i ]( elem, context, xml ) ) {
|
2301
2470
|
return false;
|
2302
2471
|
}
|
2303
2472
|
}
|
2304
2473
|
return true;
|
2305
2474
|
} :
|
2306
|
-
matchers[0];
|
2475
|
+
matchers[ 0 ];
|
2307
2476
|
}
|
2308
2477
|
|
2309
2478
|
function multipleContexts( selector, contexts, results ) {
|
2310
2479
|
var i = 0,
|
2311
2480
|
len = contexts.length;
|
2312
2481
|
for ( ; i < len; i++ ) {
|
2313
|
-
Sizzle( selector, contexts[i], results );
|
2482
|
+
Sizzle( selector, contexts[ i ], results );
|
2314
2483
|
}
|
2315
2484
|
return results;
|
2316
2485
|
}
|
@@ -2323,7 +2492,7 @@ function condense( unmatched, map, filter, context, xml ) {
|
|
2323
2492
|
mapped = map != null;
|
2324
2493
|
|
2325
2494
|
for ( ; i < len; i++ ) {
|
2326
|
-
if ( (elem = unmatched[i]) ) {
|
2495
|
+
if ( ( elem = unmatched[ i ] ) ) {
|
2327
2496
|
if ( !filter || filter( elem, context, xml ) ) {
|
2328
2497
|
newUnmatched.push( elem );
|
2329
2498
|
if ( mapped ) {
|
@@ -2343,14 +2512,18 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS
|
|
2343
2512
|
if ( postFinder && !postFinder[ expando ] ) {
|
2344
2513
|
postFinder = setMatcher( postFinder, postSelector );
|
2345
2514
|
}
|
2346
|
-
return markFunction(function( seed, results, context, xml ) {
|
2515
|
+
return markFunction( function( seed, results, context, xml ) {
|
2347
2516
|
var temp, i, elem,
|
2348
2517
|
preMap = [],
|
2349
2518
|
postMap = [],
|
2350
2519
|
preexisting = results.length,
|
2351
2520
|
|
2352
2521
|
// Get initial elements from seed or context
|
2353
|
-
elems = seed || multipleContexts(
|
2522
|
+
elems = seed || multipleContexts(
|
2523
|
+
selector || "*",
|
2524
|
+
context.nodeType ? [ context ] : context,
|
2525
|
+
[]
|
2526
|
+
),
|
2354
2527
|
|
2355
2528
|
// Prefilter to get matcher input, preserving a map for seed-results synchronization
|
2356
2529
|
matcherIn = preFilter && ( seed || !selector ) ?
|
@@ -2358,6 +2531,7 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS
|
|
2358
2531
|
elems,
|
2359
2532
|
|
2360
2533
|
matcherOut = matcher ?
|
2534
|
+
|
2361
2535
|
// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
|
2362
2536
|
postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
|
2363
2537
|
|
@@ -2381,8 +2555,8 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS
|
|
2381
2555
|
// Un-match failing elements by moving them back to matcherIn
|
2382
2556
|
i = temp.length;
|
2383
2557
|
while ( i-- ) {
|
2384
|
-
if ( (elem = temp[i]) ) {
|
2385
|
-
matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
|
2558
|
+
if ( ( elem = temp[ i ] ) ) {
|
2559
|
+
matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );
|
2386
2560
|
}
|
2387
2561
|
}
|
2388
2562
|
}
|
@@ -2390,25 +2564,27 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS
|
|
2390
2564
|
if ( seed ) {
|
2391
2565
|
if ( postFinder || preFilter ) {
|
2392
2566
|
if ( postFinder ) {
|
2567
|
+
|
2393
2568
|
// Get the final matcherOut by condensing this intermediate into postFinder contexts
|
2394
2569
|
temp = [];
|
2395
2570
|
i = matcherOut.length;
|
2396
2571
|
while ( i-- ) {
|
2397
|
-
if ( (elem = matcherOut[i]) ) {
|
2572
|
+
if ( ( elem = matcherOut[ i ] ) ) {
|
2573
|
+
|
2398
2574
|
// Restore matcherIn since elem is not yet a final match
|
2399
|
-
temp.push( (matcherIn[i] = elem) );
|
2575
|
+
temp.push( ( matcherIn[ i ] = elem ) );
|
2400
2576
|
}
|
2401
2577
|
}
|
2402
|
-
postFinder( null, (matcherOut = []), temp, xml );
|
2578
|
+
postFinder( null, ( matcherOut = [] ), temp, xml );
|
2403
2579
|
}
|
2404
2580
|
|
2405
2581
|
// Move matched elements from seed to results to keep them synchronized
|
2406
2582
|
i = matcherOut.length;
|
2407
2583
|
while ( i-- ) {
|
2408
|
-
if ( (elem = matcherOut[i]) &&
|
2409
|
-
(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
|
2584
|
+
if ( ( elem = matcherOut[ i ] ) &&
|
2585
|
+
( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {
|
2410
2586
|
|
2411
|
-
seed[temp] = !(results[temp] = elem);
|
2587
|
+
seed[ temp ] = !( results[ temp ] = elem );
|
2412
2588
|
}
|
2413
2589
|
}
|
2414
2590
|
}
|
@@ -2426,14 +2602,14 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS
|
|
2426
2602
|
push.apply( results, matcherOut );
|
2427
2603
|
}
|
2428
2604
|
}
|
2429
|
-
});
|
2605
|
+
} );
|
2430
2606
|
}
|
2431
2607
|
|
2432
2608
|
function matcherFromTokens( tokens ) {
|
2433
2609
|
var checkContext, matcher, j,
|
2434
2610
|
len = tokens.length,
|
2435
|
-
leadingRelative = Expr.relative[ tokens[0].type ],
|
2436
|
-
implicitRelative = leadingRelative || Expr.relative[" "],
|
2611
|
+
leadingRelative = Expr.relative[ tokens[ 0 ].type ],
|
2612
|
+
implicitRelative = leadingRelative || Expr.relative[ " " ],
|
2437
2613
|
i = leadingRelative ? 1 : 0,
|
2438
2614
|
|
2439
2615
|
// The foundational matcher ensures that elements are reachable from top-level context(s)
|
@@ -2445,38 +2621,43 @@ function matcherFromTokens( tokens ) {
|
|
2445
2621
|
}, implicitRelative, true ),
|
2446
2622
|
matchers = [ function( elem, context, xml ) {
|
2447
2623
|
var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
|
2448
|
-
(checkContext = context).nodeType ?
|
2624
|
+
( checkContext = context ).nodeType ?
|
2449
2625
|
matchContext( elem, context, xml ) :
|
2450
2626
|
matchAnyContext( elem, context, xml ) );
|
2627
|
+
|
2451
2628
|
// Avoid hanging onto element (issue #299)
|
2452
2629
|
checkContext = null;
|
2453
2630
|
return ret;
|
2454
2631
|
} ];
|
2455
2632
|
|
2456
2633
|
for ( ; i < len; i++ ) {
|
2457
|
-
if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
|
2458
|
-
matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
|
2634
|
+
if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {
|
2635
|
+
matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];
|
2459
2636
|
} else {
|
2460
|
-
matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
|
2637
|
+
matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );
|
2461
2638
|
|
2462
2639
|
// Return special upon seeing a positional matcher
|
2463
2640
|
if ( matcher[ expando ] ) {
|
2641
|
+
|
2464
2642
|
// Find the next relative operator (if any) for proper handling
|
2465
2643
|
j = ++i;
|
2466
2644
|
for ( ; j < len; j++ ) {
|
2467
|
-
if ( Expr.relative[ tokens[j].type ] ) {
|
2645
|
+
if ( Expr.relative[ tokens[ j ].type ] ) {
|
2468
2646
|
break;
|
2469
2647
|
}
|
2470
2648
|
}
|
2471
2649
|
return setMatcher(
|
2472
2650
|
i > 1 && elementMatcher( matchers ),
|
2473
2651
|
i > 1 && toSelector(
|
2474
|
-
|
2475
|
-
|
2652
|
+
|
2653
|
+
// If the preceding token was a descendant combinator, insert an implicit any-element `*`
|
2654
|
+
tokens
|
2655
|
+
.slice( 0, i - 1 )
|
2656
|
+
.concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } )
|
2476
2657
|
).replace( rtrim, "$1" ),
|
2477
2658
|
matcher,
|
2478
2659
|
i < j && matcherFromTokens( tokens.slice( i, j ) ),
|
2479
|
-
j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
|
2660
|
+
j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),
|
2480
2661
|
j < len && toSelector( tokens )
|
2481
2662
|
);
|
2482
2663
|
}
|
@@ -2497,28 +2678,40 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
|
|
2497
2678
|
unmatched = seed && [],
|
2498
2679
|
setMatched = [],
|
2499
2680
|
contextBackup = outermostContext,
|
2681
|
+
|
2500
2682
|
// We must always have either seed elements or outermost context
|
2501
|
-
elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
|
2683
|
+
elems = seed || byElement && Expr.find[ "TAG" ]( "*", outermost ),
|
2684
|
+
|
2502
2685
|
// Use integer dirruns iff this is the outermost matcher
|
2503
|
-
dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
|
2686
|
+
dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),
|
2504
2687
|
len = elems.length;
|
2505
2688
|
|
2506
2689
|
if ( outermost ) {
|
2507
|
-
|
2690
|
+
|
2691
|
+
// Support: IE 11+, Edge 17 - 18+
|
2692
|
+
// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
|
2693
|
+
// two documents; shallow comparisons work.
|
2694
|
+
// eslint-disable-next-line eqeqeq
|
2695
|
+
outermostContext = context == document || context || outermost;
|
2508
2696
|
}
|
2509
2697
|
|
2510
2698
|
// Add elements passing elementMatchers directly to results
|
2511
2699
|
// Support: IE<9, Safari
|
2512
2700
|
// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
|
2513
|
-
for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
|
2701
|
+
for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {
|
2514
2702
|
if ( byElement && elem ) {
|
2515
2703
|
j = 0;
|
2516
|
-
|
2704
|
+
|
2705
|
+
// Support: IE 11+, Edge 17 - 18+
|
2706
|
+
// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
|
2707
|
+
// two documents; shallow comparisons work.
|
2708
|
+
// eslint-disable-next-line eqeqeq
|
2709
|
+
if ( !context && elem.ownerDocument != document ) {
|
2517
2710
|
setDocument( elem );
|
2518
2711
|
xml = !documentIsHTML;
|
2519
2712
|
}
|
2520
|
-
while ( (matcher = elementMatchers[j++]) ) {
|
2521
|
-
if ( matcher( elem, context || document, xml) ) {
|
2713
|
+
while ( ( matcher = elementMatchers[ j++ ] ) ) {
|
2714
|
+
if ( matcher( elem, context || document, xml ) ) {
|
2522
2715
|
results.push( elem );
|
2523
2716
|
break;
|
2524
2717
|
}
|
@@ -2530,8 +2723,9 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
|
|
2530
2723
|
|
2531
2724
|
// Track unmatched elements for set filters
|
2532
2725
|
if ( bySet ) {
|
2726
|
+
|
2533
2727
|
// They will have gone through all possible matchers
|
2534
|
-
if ( (elem = !matcher && elem) ) {
|
2728
|
+
if ( ( elem = !matcher && elem ) ) {
|
2535
2729
|
matchedCount--;
|
2536
2730
|
}
|
2537
2731
|
|
@@ -2555,16 +2749,17 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
|
|
2555
2749
|
// numerically zero.
|
2556
2750
|
if ( bySet && i !== matchedCount ) {
|
2557
2751
|
j = 0;
|
2558
|
-
while ( (matcher = setMatchers[j++]) ) {
|
2752
|
+
while ( ( matcher = setMatchers[ j++ ] ) ) {
|
2559
2753
|
matcher( unmatched, setMatched, context, xml );
|
2560
2754
|
}
|
2561
2755
|
|
2562
2756
|
if ( seed ) {
|
2757
|
+
|
2563
2758
|
// Reintegrate element matches to eliminate the need for sorting
|
2564
2759
|
if ( matchedCount > 0 ) {
|
2565
2760
|
while ( i-- ) {
|
2566
|
-
if ( !(unmatched[i] || setMatched[i]) ) {
|
2567
|
-
setMatched[i] = pop.call( results );
|
2761
|
+
if ( !( unmatched[ i ] || setMatched[ i ] ) ) {
|
2762
|
+
setMatched[ i ] = pop.call( results );
|
2568
2763
|
}
|
2569
2764
|
}
|
2570
2765
|
}
|
@@ -2605,13 +2800,14 @@ compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
|
|
2605
2800
|
cached = compilerCache[ selector + " " ];
|
2606
2801
|
|
2607
2802
|
if ( !cached ) {
|
2803
|
+
|
2608
2804
|
// Generate a function of recursive functions that can be used to check each element
|
2609
2805
|
if ( !match ) {
|
2610
2806
|
match = tokenize( selector );
|
2611
2807
|
}
|
2612
2808
|
i = match.length;
|
2613
2809
|
while ( i-- ) {
|
2614
|
-
cached = matcherFromTokens( match[i] );
|
2810
|
+
cached = matcherFromTokens( match[ i ] );
|
2615
2811
|
if ( cached[ expando ] ) {
|
2616
2812
|
setMatchers.push( cached );
|
2617
2813
|
} else {
|
@@ -2620,7 +2816,10 @@ compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
|
|
2620
2816
|
}
|
2621
2817
|
|
2622
2818
|
// Cache the compiled function
|
2623
|
-
cached = compilerCache(
|
2819
|
+
cached = compilerCache(
|
2820
|
+
selector,
|
2821
|
+
matcherFromGroupMatchers( elementMatchers, setMatchers )
|
2822
|
+
);
|
2624
2823
|
|
2625
2824
|
// Save selector and tokenization
|
2626
2825
|
cached.selector = selector;
|
@@ -2640,7 +2839,7 @@ compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
|
|
2640
2839
|
select = Sizzle.select = function( selector, context, results, seed ) {
|
2641
2840
|
var i, tokens, token, type, find,
|
2642
2841
|
compiled = typeof selector === "function" && selector,
|
2643
|
-
match = !seed && tokenize( (selector = compiled.selector || selector) );
|
2842
|
+
match = !seed && tokenize( ( selector = compiled.selector || selector ) );
|
2644
2843
|
|
2645
2844
|
results = results || [];
|
2646
2845
|
|
@@ -2649,11 +2848,12 @@ select = Sizzle.select = function( selector, context, results, seed ) {
|
|
2649
2848
|
if ( match.length === 1 ) {
|
2650
2849
|
|
2651
2850
|
// Reduce context if the leading compound selector is an ID
|
2652
|
-
tokens = match[0] = match[0].slice( 0 );
|
2653
|
-
if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
|
2654
|
-
|
2851
|
+
tokens = match[ 0 ] = match[ 0 ].slice( 0 );
|
2852
|
+
if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" &&
|
2853
|
+
context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {
|
2655
2854
|
|
2656
|
-
context = ( Expr.find["ID"]( token.matches[0
|
2855
|
+
context = ( Expr.find[ "ID" ]( token.matches[ 0 ]
|
2856
|
+
.replace( runescape, funescape ), context ) || [] )[ 0 ];
|
2657
2857
|
if ( !context ) {
|
2658
2858
|
return results;
|
2659
2859
|
|
@@ -2666,20 +2866,22 @@ select = Sizzle.select = function( selector, context, results, seed ) {
|
|
2666
2866
|
}
|
2667
2867
|
|
2668
2868
|
// Fetch a seed set for right-to-left matching
|
2669
|
-
i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
|
2869
|
+
i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length;
|
2670
2870
|
while ( i-- ) {
|
2671
|
-
token = tokens[i];
|
2871
|
+
token = tokens[ i ];
|
2672
2872
|
|
2673
2873
|
// Abort if we hit a combinator
|
2674
|
-
if ( Expr.relative[ (type = token.type) ] ) {
|
2874
|
+
if ( Expr.relative[ ( type = token.type ) ] ) {
|
2675
2875
|
break;
|
2676
2876
|
}
|
2677
|
-
if ( (find = Expr.find[ type ]) ) {
|
2877
|
+
if ( ( find = Expr.find[ type ] ) ) {
|
2878
|
+
|
2678
2879
|
// Search, expanding context for leading sibling combinators
|
2679
|
-
if ( (seed = find(
|
2680
|
-
token.matches[0].replace( runescape, funescape ),
|
2681
|
-
rsibling.test( tokens[0].type ) && testContext( context.parentNode ) ||
|
2682
|
-
|
2880
|
+
if ( ( seed = find(
|
2881
|
+
token.matches[ 0 ].replace( runescape, funescape ),
|
2882
|
+
rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||
|
2883
|
+
context
|
2884
|
+
) ) ) {
|
2683
2885
|
|
2684
2886
|
// If seed is empty or no tokens remain, we can return early
|
2685
2887
|
tokens.splice( i, 1 );
|
@@ -2710,7 +2912,7 @@ select = Sizzle.select = function( selector, context, results, seed ) {
|
|
2710
2912
|
// One-time assignments
|
2711
2913
|
|
2712
2914
|
// Sort stability
|
2713
|
-
support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
|
2915
|
+
support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando;
|
2714
2916
|
|
2715
2917
|
// Support: Chrome 14-35+
|
2716
2918
|
// Always assume duplicates if they aren't passed to the comparison function
|
@@ -2721,58 +2923,59 @@ setDocument();
|
|
2721
2923
|
|
2722
2924
|
// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
|
2723
2925
|
// Detached nodes confoundingly follow *each other*
|
2724
|
-
support.sortDetached = assert(function( el ) {
|
2926
|
+
support.sortDetached = assert( function( el ) {
|
2927
|
+
|
2725
2928
|
// Should return 1, but returns 4 (following)
|
2726
|
-
return el.compareDocumentPosition( document.createElement("fieldset") ) & 1;
|
2727
|
-
});
|
2929
|
+
return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1;
|
2930
|
+
} );
|
2728
2931
|
|
2729
2932
|
// Support: IE<8
|
2730
2933
|
// Prevent attribute/property "interpolation"
|
2731
2934
|
// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
|
2732
|
-
if ( !assert(function( el ) {
|
2935
|
+
if ( !assert( function( el ) {
|
2733
2936
|
el.innerHTML = "<a href='#'></a>";
|
2734
|
-
return el.firstChild.getAttribute("href") === "#"
|
2735
|
-
}) ) {
|
2937
|
+
return el.firstChild.getAttribute( "href" ) === "#";
|
2938
|
+
} ) ) {
|
2736
2939
|
addHandle( "type|href|height|width", function( elem, name, isXML ) {
|
2737
2940
|
if ( !isXML ) {
|
2738
2941
|
return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
|
2739
2942
|
}
|
2740
|
-
});
|
2943
|
+
} );
|
2741
2944
|
}
|
2742
2945
|
|
2743
2946
|
// Support: IE<9
|
2744
2947
|
// Use defaultValue in place of getAttribute("value")
|
2745
|
-
if ( !support.attributes || !assert(function( el ) {
|
2948
|
+
if ( !support.attributes || !assert( function( el ) {
|
2746
2949
|
el.innerHTML = "<input/>";
|
2747
2950
|
el.firstChild.setAttribute( "value", "" );
|
2748
2951
|
return el.firstChild.getAttribute( "value" ) === "";
|
2749
|
-
}) ) {
|
2750
|
-
addHandle( "value", function( elem,
|
2952
|
+
} ) ) {
|
2953
|
+
addHandle( "value", function( elem, _name, isXML ) {
|
2751
2954
|
if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
|
2752
2955
|
return elem.defaultValue;
|
2753
2956
|
}
|
2754
|
-
});
|
2957
|
+
} );
|
2755
2958
|
}
|
2756
2959
|
|
2757
2960
|
// Support: IE<9
|
2758
2961
|
// Use getAttributeNode to fetch booleans when getAttribute lies
|
2759
|
-
if ( !assert(function( el ) {
|
2760
|
-
return el.getAttribute("disabled") == null;
|
2761
|
-
}) ) {
|
2962
|
+
if ( !assert( function( el ) {
|
2963
|
+
return el.getAttribute( "disabled" ) == null;
|
2964
|
+
} ) ) {
|
2762
2965
|
addHandle( booleans, function( elem, name, isXML ) {
|
2763
2966
|
var val;
|
2764
2967
|
if ( !isXML ) {
|
2765
2968
|
return elem[ name ] === true ? name.toLowerCase() :
|
2766
|
-
|
2969
|
+
( val = elem.getAttributeNode( name ) ) && val.specified ?
|
2767
2970
|
val.value :
|
2768
|
-
|
2971
|
+
null;
|
2769
2972
|
}
|
2770
|
-
});
|
2973
|
+
} );
|
2771
2974
|
}
|
2772
2975
|
|
2773
2976
|
return Sizzle;
|
2774
2977
|
|
2775
|
-
})( window );
|
2978
|
+
} )( window );
|
2776
2979
|
|
2777
2980
|
|
2778
2981
|
|
@@ -2825,9 +3028,9 @@ var rneedsContext = jQuery.expr.match.needsContext;
|
|
2825
3028
|
|
2826
3029
|
function nodeName( elem, name ) {
|
2827
3030
|
|
2828
|
-
|
3031
|
+
return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
|
2829
3032
|
|
2830
|
-
}
|
3033
|
+
}
|
2831
3034
|
var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
|
2832
3035
|
|
2833
3036
|
|
@@ -2926,8 +3129,8 @@ jQuery.fn.extend( {
|
|
2926
3129
|
var rootjQuery,
|
2927
3130
|
|
2928
3131
|
// A simple way to check for HTML strings
|
2929
|
-
// Prioritize #id over <tag> to avoid XSS via location.hash (
|
2930
|
-
// Strict HTML recognition (
|
3132
|
+
// Prioritize #id over <tag> to avoid XSS via location.hash (trac-9521)
|
3133
|
+
// Strict HTML recognition (trac-11290: must start with <)
|
2931
3134
|
// Shortcut simple #id case for speed
|
2932
3135
|
rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
|
2933
3136
|
|
@@ -3141,7 +3344,7 @@ jQuery.each( {
|
|
3141
3344
|
parents: function( elem ) {
|
3142
3345
|
return dir( elem, "parentNode" );
|
3143
3346
|
},
|
3144
|
-
parentsUntil: function( elem,
|
3347
|
+
parentsUntil: function( elem, _i, until ) {
|
3145
3348
|
return dir( elem, "parentNode", until );
|
3146
3349
|
},
|
3147
3350
|
next: function( elem ) {
|
@@ -3156,10 +3359,10 @@ jQuery.each( {
|
|
3156
3359
|
prevAll: function( elem ) {
|
3157
3360
|
return dir( elem, "previousSibling" );
|
3158
3361
|
},
|
3159
|
-
nextUntil: function( elem,
|
3362
|
+
nextUntil: function( elem, _i, until ) {
|
3160
3363
|
return dir( elem, "nextSibling", until );
|
3161
3364
|
},
|
3162
|
-
prevUntil: function( elem,
|
3365
|
+
prevUntil: function( elem, _i, until ) {
|
3163
3366
|
return dir( elem, "previousSibling", until );
|
3164
3367
|
},
|
3165
3368
|
siblings: function( elem ) {
|
@@ -3169,7 +3372,13 @@ jQuery.each( {
|
|
3169
3372
|
return siblings( elem.firstChild );
|
3170
3373
|
},
|
3171
3374
|
contents: function( elem ) {
|
3172
|
-
if (
|
3375
|
+
if ( elem.contentDocument != null &&
|
3376
|
+
|
3377
|
+
// Support: IE 11+
|
3378
|
+
// <object> elements with no `data` attribute has an object
|
3379
|
+
// `contentDocument` with a `null` prototype.
|
3380
|
+
getProto( elem.contentDocument ) ) {
|
3381
|
+
|
3173
3382
|
return elem.contentDocument;
|
3174
3383
|
}
|
3175
3384
|
|
@@ -3512,7 +3721,7 @@ jQuery.extend( {
|
|
3512
3721
|
var fns = arguments;
|
3513
3722
|
|
3514
3723
|
return jQuery.Deferred( function( newDefer ) {
|
3515
|
-
jQuery.each( tuples, function(
|
3724
|
+
jQuery.each( tuples, function( _i, tuple ) {
|
3516
3725
|
|
3517
3726
|
// Map tuples (progress, done, fail) to arguments (done, fail, progress)
|
3518
3727
|
var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
|
@@ -3792,8 +4001,8 @@ jQuery.extend( {
|
|
3792
4001
|
resolveContexts = Array( i ),
|
3793
4002
|
resolveValues = slice.call( arguments ),
|
3794
4003
|
|
3795
|
-
// the
|
3796
|
-
|
4004
|
+
// the primary Deferred
|
4005
|
+
primary = jQuery.Deferred(),
|
3797
4006
|
|
3798
4007
|
// subordinate callback factory
|
3799
4008
|
updateFunc = function( i ) {
|
@@ -3801,30 +4010,30 @@ jQuery.extend( {
|
|
3801
4010
|
resolveContexts[ i ] = this;
|
3802
4011
|
resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
|
3803
4012
|
if ( !( --remaining ) ) {
|
3804
|
-
|
4013
|
+
primary.resolveWith( resolveContexts, resolveValues );
|
3805
4014
|
}
|
3806
4015
|
};
|
3807
4016
|
};
|
3808
4017
|
|
3809
4018
|
// Single- and empty arguments are adopted like Promise.resolve
|
3810
4019
|
if ( remaining <= 1 ) {
|
3811
|
-
adoptValue( singleValue,
|
4020
|
+
adoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,
|
3812
4021
|
!remaining );
|
3813
4022
|
|
3814
4023
|
// Use .then() to unwrap secondary thenables (cf. gh-3000)
|
3815
|
-
if (
|
4024
|
+
if ( primary.state() === "pending" ||
|
3816
4025
|
isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
|
3817
4026
|
|
3818
|
-
return
|
4027
|
+
return primary.then();
|
3819
4028
|
}
|
3820
4029
|
}
|
3821
4030
|
|
3822
4031
|
// Multiple arguments are aggregated like Promise.all array elements
|
3823
4032
|
while ( i-- ) {
|
3824
|
-
adoptValue( resolveValues[ i ], updateFunc( i ),
|
4033
|
+
adoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );
|
3825
4034
|
}
|
3826
4035
|
|
3827
|
-
return
|
4036
|
+
return primary.promise();
|
3828
4037
|
}
|
3829
4038
|
} );
|
3830
4039
|
|
@@ -3878,7 +4087,7 @@ jQuery.extend( {
|
|
3878
4087
|
isReady: false,
|
3879
4088
|
|
3880
4089
|
// A counter to track how many items to wait for before
|
3881
|
-
// the ready event fires. See
|
4090
|
+
// the ready event fires. See trac-6781
|
3882
4091
|
readyWait: 1,
|
3883
4092
|
|
3884
4093
|
// Handle when the DOM is ready
|
@@ -3965,7 +4174,7 @@ var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
|
|
3965
4174
|
// ...except when executing function values
|
3966
4175
|
} else {
|
3967
4176
|
bulk = fn;
|
3968
|
-
fn = function( elem,
|
4177
|
+
fn = function( elem, _key, value ) {
|
3969
4178
|
return bulk.call( jQuery( elem ), value );
|
3970
4179
|
};
|
3971
4180
|
}
|
@@ -3975,8 +4184,8 @@ var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
|
|
3975
4184
|
for ( ; i < len; i++ ) {
|
3976
4185
|
fn(
|
3977
4186
|
elems[ i ], key, raw ?
|
3978
|
-
|
3979
|
-
|
4187
|
+
value :
|
4188
|
+
value.call( elems[ i ], i, fn( elems[ i ], key ) )
|
3980
4189
|
);
|
3981
4190
|
}
|
3982
4191
|
}
|
@@ -4000,13 +4209,13 @@ var rmsPrefix = /^-ms-/,
|
|
4000
4209
|
rdashAlpha = /-([a-z])/g;
|
4001
4210
|
|
4002
4211
|
// Used by camelCase as callback to replace()
|
4003
|
-
function fcamelCase(
|
4212
|
+
function fcamelCase( _all, letter ) {
|
4004
4213
|
return letter.toUpperCase();
|
4005
4214
|
}
|
4006
4215
|
|
4007
4216
|
// Convert dashed to camelCase; used by the css and data modules
|
4008
4217
|
// Support: IE <=9 - 11, Edge 12 - 15
|
4009
|
-
// Microsoft forgot to hump their vendor prefix (
|
4218
|
+
// Microsoft forgot to hump their vendor prefix (trac-9572)
|
4010
4219
|
function camelCase( string ) {
|
4011
4220
|
return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
|
4012
4221
|
}
|
@@ -4042,7 +4251,7 @@ Data.prototype = {
|
|
4042
4251
|
value = {};
|
4043
4252
|
|
4044
4253
|
// We can accept data for non-element nodes in modern browsers,
|
4045
|
-
// but we should not, see
|
4254
|
+
// but we should not, see trac-8335.
|
4046
4255
|
// Always return an empty object.
|
4047
4256
|
if ( acceptData( owner ) ) {
|
4048
4257
|
|
@@ -4281,7 +4490,7 @@ jQuery.fn.extend( {
|
|
4281
4490
|
while ( i-- ) {
|
4282
4491
|
|
4283
4492
|
// Support: IE 11 only
|
4284
|
-
// The attrs elements can be null (
|
4493
|
+
// The attrs elements can be null (trac-14894)
|
4285
4494
|
if ( attrs[ i ] ) {
|
4286
4495
|
name = attrs[ i ].name;
|
4287
4496
|
if ( name.indexOf( "data-" ) === 0 ) {
|
@@ -4528,27 +4737,6 @@ var isHiddenWithinTree = function( elem, el ) {
|
|
4528
4737
|
jQuery.css( elem, "display" ) === "none";
|
4529
4738
|
};
|
4530
4739
|
|
4531
|
-
var swap = function( elem, options, callback, args ) {
|
4532
|
-
var ret, name,
|
4533
|
-
old = {};
|
4534
|
-
|
4535
|
-
// Remember the old values, and insert the new ones
|
4536
|
-
for ( name in options ) {
|
4537
|
-
old[ name ] = elem.style[ name ];
|
4538
|
-
elem.style[ name ] = options[ name ];
|
4539
|
-
}
|
4540
|
-
|
4541
|
-
ret = callback.apply( elem, args || [] );
|
4542
|
-
|
4543
|
-
// Revert the old values
|
4544
|
-
for ( name in options ) {
|
4545
|
-
elem.style[ name ] = old[ name ];
|
4546
|
-
}
|
4547
|
-
|
4548
|
-
return ret;
|
4549
|
-
};
|
4550
|
-
|
4551
|
-
|
4552
4740
|
|
4553
4741
|
|
4554
4742
|
function adjustCSS( elem, prop, valueParts, tween ) {
|
@@ -4719,11 +4907,40 @@ var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i );
|
|
4719
4907
|
|
4720
4908
|
|
4721
4909
|
|
4722
|
-
|
4723
|
-
var
|
4910
|
+
( function() {
|
4911
|
+
var fragment = document.createDocumentFragment(),
|
4912
|
+
div = fragment.appendChild( document.createElement( "div" ) ),
|
4913
|
+
input = document.createElement( "input" );
|
4914
|
+
|
4915
|
+
// Support: Android 4.0 - 4.3 only
|
4916
|
+
// Check state lost if the name is set (trac-11217)
|
4917
|
+
// Support: Windows Web Apps (WWA)
|
4918
|
+
// `name` and `type` must use .setAttribute for WWA (trac-14901)
|
4919
|
+
input.setAttribute( "type", "radio" );
|
4920
|
+
input.setAttribute( "checked", "checked" );
|
4921
|
+
input.setAttribute( "name", "t" );
|
4922
|
+
|
4923
|
+
div.appendChild( input );
|
4924
|
+
|
4925
|
+
// Support: Android <=4.1 only
|
4926
|
+
// Older WebKit doesn't clone checked state correctly in fragments
|
4927
|
+
support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
|
4928
|
+
|
4929
|
+
// Support: IE <=11 only
|
4930
|
+
// Make sure textarea (and checkbox) defaultValue is properly cloned
|
4931
|
+
div.innerHTML = "<textarea>x</textarea>";
|
4932
|
+
support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
|
4724
4933
|
|
4725
4934
|
// Support: IE <=9 only
|
4726
|
-
|
4935
|
+
// IE <=9 replaces <option> tags with their contents when inserted outside of
|
4936
|
+
// the select element.
|
4937
|
+
div.innerHTML = "<option></option>";
|
4938
|
+
support.option = !!div.lastChild;
|
4939
|
+
} )();
|
4940
|
+
|
4941
|
+
|
4942
|
+
// We have to close these tags to support XHTML (trac-13200)
|
4943
|
+
var wrapMap = {
|
4727
4944
|
|
4728
4945
|
// XHTML parsers do not magically insert elements in the
|
4729
4946
|
// same way that tag soup parsers do. So we cannot shorten
|
@@ -4736,17 +4953,19 @@ var wrapMap = {
|
|
4736
4953
|
_default: [ 0, "", "" ]
|
4737
4954
|
};
|
4738
4955
|
|
4739
|
-
// Support: IE <=9 only
|
4740
|
-
wrapMap.optgroup = wrapMap.option;
|
4741
|
-
|
4742
4956
|
wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
|
4743
4957
|
wrapMap.th = wrapMap.td;
|
4744
4958
|
|
4959
|
+
// Support: IE <=9 only
|
4960
|
+
if ( !support.option ) {
|
4961
|
+
wrapMap.optgroup = wrapMap.option = [ 1, "<select multiple='multiple'>", "</select>" ];
|
4962
|
+
}
|
4963
|
+
|
4745
4964
|
|
4746
4965
|
function getAll( context, tag ) {
|
4747
4966
|
|
4748
4967
|
// Support: IE <=9 - 11 only
|
4749
|
-
// Use typeof to avoid zero-argument method invocation on host objects (
|
4968
|
+
// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)
|
4750
4969
|
var ret;
|
4751
4970
|
|
4752
4971
|
if ( typeof context.getElementsByTagName !== "undefined" ) {
|
@@ -4829,7 +5048,7 @@ function buildFragment( elems, context, scripts, selection, ignored ) {
|
|
4829
5048
|
// Remember the top-level container
|
4830
5049
|
tmp = fragment.firstChild;
|
4831
5050
|
|
4832
|
-
// Ensure the created nodes are orphaned (
|
5051
|
+
// Ensure the created nodes are orphaned (trac-12392)
|
4833
5052
|
tmp.textContent = "";
|
4834
5053
|
}
|
4835
5054
|
}
|
@@ -4874,36 +5093,7 @@ function buildFragment( elems, context, scripts, selection, ignored ) {
|
|
4874
5093
|
}
|
4875
5094
|
|
4876
5095
|
|
4877
|
-
|
4878
|
-
var fragment = document.createDocumentFragment(),
|
4879
|
-
div = fragment.appendChild( document.createElement( "div" ) ),
|
4880
|
-
input = document.createElement( "input" );
|
4881
|
-
|
4882
|
-
// Support: Android 4.0 - 4.3 only
|
4883
|
-
// Check state lost if the name is set (#11217)
|
4884
|
-
// Support: Windows Web Apps (WWA)
|
4885
|
-
// `name` and `type` must use .setAttribute for WWA (#14901)
|
4886
|
-
input.setAttribute( "type", "radio" );
|
4887
|
-
input.setAttribute( "checked", "checked" );
|
4888
|
-
input.setAttribute( "name", "t" );
|
4889
|
-
|
4890
|
-
div.appendChild( input );
|
4891
|
-
|
4892
|
-
// Support: Android <=4.1 only
|
4893
|
-
// Older WebKit doesn't clone checked state correctly in fragments
|
4894
|
-
support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
|
4895
|
-
|
4896
|
-
// Support: IE <=11 only
|
4897
|
-
// Make sure textarea (and checkbox) defaultValue is properly cloned
|
4898
|
-
div.innerHTML = "<textarea>x</textarea>";
|
4899
|
-
support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
|
4900
|
-
} )();
|
4901
|
-
|
4902
|
-
|
4903
|
-
var
|
4904
|
-
rkeyEvent = /^key/,
|
4905
|
-
rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
|
4906
|
-
rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
|
5096
|
+
var rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
|
4907
5097
|
|
4908
5098
|
function returnTrue() {
|
4909
5099
|
return true;
|
@@ -5008,8 +5198,8 @@ jQuery.event = {
|
|
5008
5198
|
special, handlers, type, namespaces, origType,
|
5009
5199
|
elemData = dataPriv.get( elem );
|
5010
5200
|
|
5011
|
-
//
|
5012
|
-
if ( !
|
5201
|
+
// Only attach events to objects that accept data
|
5202
|
+
if ( !acceptData( elem ) ) {
|
5013
5203
|
return;
|
5014
5204
|
}
|
5015
5205
|
|
@@ -5033,7 +5223,7 @@ jQuery.event = {
|
|
5033
5223
|
|
5034
5224
|
// Init the element's event structure and main handler, if this is the first
|
5035
5225
|
if ( !( events = elemData.events ) ) {
|
5036
|
-
events = elemData.events =
|
5226
|
+
events = elemData.events = Object.create( null );
|
5037
5227
|
}
|
5038
5228
|
if ( !( eventHandle = elemData.handle ) ) {
|
5039
5229
|
eventHandle = elemData.handle = function( e ) {
|
@@ -5191,12 +5381,15 @@ jQuery.event = {
|
|
5191
5381
|
|
5192
5382
|
dispatch: function( nativeEvent ) {
|
5193
5383
|
|
5194
|
-
// Make a writable jQuery.Event from the native event object
|
5195
|
-
var event = jQuery.event.fix( nativeEvent );
|
5196
|
-
|
5197
5384
|
var i, j, ret, matched, handleObj, handlerQueue,
|
5198
5385
|
args = new Array( arguments.length ),
|
5199
|
-
|
5386
|
+
|
5387
|
+
// Make a writable jQuery.Event from the native event object
|
5388
|
+
event = jQuery.event.fix( nativeEvent ),
|
5389
|
+
|
5390
|
+
handlers = (
|
5391
|
+
dataPriv.get( this, "events" ) || Object.create( null )
|
5392
|
+
)[ event.type ] || [],
|
5200
5393
|
special = jQuery.event.special[ event.type ] || {};
|
5201
5394
|
|
5202
5395
|
// Use the fix-ed jQuery.Event rather than the (read-only) native event
|
@@ -5276,15 +5469,15 @@ jQuery.event = {
|
|
5276
5469
|
|
5277
5470
|
for ( ; cur !== this; cur = cur.parentNode || this ) {
|
5278
5471
|
|
5279
|
-
// Don't check non-elements (
|
5280
|
-
// Don't process clicks on disabled elements (
|
5472
|
+
// Don't check non-elements (trac-13208)
|
5473
|
+
// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)
|
5281
5474
|
if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
|
5282
5475
|
matchedHandlers = [];
|
5283
5476
|
matchedSelectors = {};
|
5284
5477
|
for ( i = 0; i < delegateCount; i++ ) {
|
5285
5478
|
handleObj = handlers[ i ];
|
5286
5479
|
|
5287
|
-
// Don't conflict with Object.prototype properties (
|
5480
|
+
// Don't conflict with Object.prototype properties (trac-13203)
|
5288
5481
|
sel = handleObj.selector + " ";
|
5289
5482
|
|
5290
5483
|
if ( matchedSelectors[ sel ] === undefined ) {
|
@@ -5320,12 +5513,12 @@ jQuery.event = {
|
|
5320
5513
|
get: isFunction( hook ) ?
|
5321
5514
|
function() {
|
5322
5515
|
if ( this.originalEvent ) {
|
5323
|
-
|
5516
|
+
return hook( this.originalEvent );
|
5324
5517
|
}
|
5325
5518
|
} :
|
5326
5519
|
function() {
|
5327
5520
|
if ( this.originalEvent ) {
|
5328
|
-
|
5521
|
+
return this.originalEvent[ name ];
|
5329
5522
|
}
|
5330
5523
|
},
|
5331
5524
|
|
@@ -5464,7 +5657,13 @@ function leverageNative( el, type, expectSync ) {
|
|
5464
5657
|
// Cancel the outer synthetic event
|
5465
5658
|
event.stopImmediatePropagation();
|
5466
5659
|
event.preventDefault();
|
5467
|
-
|
5660
|
+
|
5661
|
+
// Support: Chrome 86+
|
5662
|
+
// In Chrome, if an element having a focusout handler is blurred by
|
5663
|
+
// clicking outside of it, it invokes the handler synchronously. If
|
5664
|
+
// that handler calls `.remove()` on the element, the data is cleared,
|
5665
|
+
// leaving `result` undefined. We need to guard against this.
|
5666
|
+
return result && result.value;
|
5468
5667
|
}
|
5469
5668
|
|
5470
5669
|
// If this is an inner synthetic event for an event with a bubbling surrogate
|
@@ -5532,7 +5731,7 @@ jQuery.Event = function( src, props ) {
|
|
5532
5731
|
|
5533
5732
|
// Create target properties
|
5534
5733
|
// Support: Safari <=6 - 7 only
|
5535
|
-
// Target should not be a text node (
|
5734
|
+
// Target should not be a text node (trac-504, trac-13143)
|
5536
5735
|
this.target = ( src.target && src.target.nodeType === 3 ) ?
|
5537
5736
|
src.target.parentNode :
|
5538
5737
|
src.target;
|
@@ -5629,34 +5828,7 @@ jQuery.each( {
|
|
5629
5828
|
targetTouches: true,
|
5630
5829
|
toElement: true,
|
5631
5830
|
touches: true,
|
5632
|
-
|
5633
|
-
which: function( event ) {
|
5634
|
-
var button = event.button;
|
5635
|
-
|
5636
|
-
// Add which for key events
|
5637
|
-
if ( event.which == null && rkeyEvent.test( event.type ) ) {
|
5638
|
-
return event.charCode != null ? event.charCode : event.keyCode;
|
5639
|
-
}
|
5640
|
-
|
5641
|
-
// Add which for click: 1 === left; 2 === middle; 3 === right
|
5642
|
-
if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {
|
5643
|
-
if ( button & 1 ) {
|
5644
|
-
return 1;
|
5645
|
-
}
|
5646
|
-
|
5647
|
-
if ( button & 2 ) {
|
5648
|
-
return 3;
|
5649
|
-
}
|
5650
|
-
|
5651
|
-
if ( button & 4 ) {
|
5652
|
-
return 2;
|
5653
|
-
}
|
5654
|
-
|
5655
|
-
return 0;
|
5656
|
-
}
|
5657
|
-
|
5658
|
-
return event.which;
|
5659
|
-
}
|
5831
|
+
which: true
|
5660
5832
|
}, jQuery.event.addProp );
|
5661
5833
|
|
5662
5834
|
jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) {
|
@@ -5682,6 +5854,12 @@ jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateTyp
|
|
5682
5854
|
return true;
|
5683
5855
|
},
|
5684
5856
|
|
5857
|
+
// Suppress native focus or blur if we're currently inside
|
5858
|
+
// a leveraged native-event stack
|
5859
|
+
_default: function( event ) {
|
5860
|
+
return dataPriv.get( event.target, type );
|
5861
|
+
},
|
5862
|
+
|
5685
5863
|
delegateType: delegateType
|
5686
5864
|
};
|
5687
5865
|
} );
|
@@ -5771,13 +5949,6 @@ jQuery.fn.extend( {
|
|
5771
5949
|
|
5772
5950
|
var
|
5773
5951
|
|
5774
|
-
/* eslint-disable max-len */
|
5775
|
-
|
5776
|
-
// See https://github.com/eslint/eslint/issues/3229
|
5777
|
-
rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
|
5778
|
-
|
5779
|
-
/* eslint-enable */
|
5780
|
-
|
5781
5952
|
// Support: IE <=10 - 11, Edge 12 - 13 only
|
5782
5953
|
// In IE/Edge using regex groups here causes severe slowdowns.
|
5783
5954
|
// See https://connect.microsoft.com/IE/feedback/details/1736512/
|
@@ -5785,7 +5956,8 @@ var
|
|
5785
5956
|
|
5786
5957
|
// checked="checked" or checked
|
5787
5958
|
rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
|
5788
|
-
|
5959
|
+
|
5960
|
+
rcleanScript = /^\s*<!\[CDATA\[|\]\]>\s*$/g;
|
5789
5961
|
|
5790
5962
|
// Prefer a tbody over its parent table for containing new rows
|
5791
5963
|
function manipulationTarget( elem, content ) {
|
@@ -5814,7 +5986,7 @@ function restoreScript( elem ) {
|
|
5814
5986
|
}
|
5815
5987
|
|
5816
5988
|
function cloneCopyEvent( src, dest ) {
|
5817
|
-
var i, l, type, pdataOld,
|
5989
|
+
var i, l, type, pdataOld, udataOld, udataCur, events;
|
5818
5990
|
|
5819
5991
|
if ( dest.nodeType !== 1 ) {
|
5820
5992
|
return;
|
@@ -5822,13 +5994,11 @@ function cloneCopyEvent( src, dest ) {
|
|
5822
5994
|
|
5823
5995
|
// 1. Copy private data: events, handlers, etc.
|
5824
5996
|
if ( dataPriv.hasData( src ) ) {
|
5825
|
-
pdataOld = dataPriv.
|
5826
|
-
pdataCur = dataPriv.set( dest, pdataOld );
|
5997
|
+
pdataOld = dataPriv.get( src );
|
5827
5998
|
events = pdataOld.events;
|
5828
5999
|
|
5829
6000
|
if ( events ) {
|
5830
|
-
|
5831
|
-
pdataCur.events = {};
|
6001
|
+
dataPriv.remove( dest, "handle events" );
|
5832
6002
|
|
5833
6003
|
for ( type in events ) {
|
5834
6004
|
for ( i = 0, l = events[ type ].length; i < l; i++ ) {
|
@@ -5864,7 +6034,7 @@ function fixInput( src, dest ) {
|
|
5864
6034
|
function domManip( collection, args, callback, ignored ) {
|
5865
6035
|
|
5866
6036
|
// Flatten any nested arrays
|
5867
|
-
args =
|
6037
|
+
args = flat( args );
|
5868
6038
|
|
5869
6039
|
var fragment, first, scripts, hasScripts, node, doc,
|
5870
6040
|
i = 0,
|
@@ -5901,7 +6071,7 @@ function domManip( collection, args, callback, ignored ) {
|
|
5901
6071
|
|
5902
6072
|
// Use the original fragment for the last item
|
5903
6073
|
// instead of the first because it can end up
|
5904
|
-
// being emptied incorrectly in certain situations (
|
6074
|
+
// being emptied incorrectly in certain situations (trac-8070).
|
5905
6075
|
for ( ; i < l; i++ ) {
|
5906
6076
|
node = fragment;
|
5907
6077
|
|
@@ -5939,9 +6109,15 @@ function domManip( collection, args, callback, ignored ) {
|
|
5939
6109
|
if ( jQuery._evalUrl && !node.noModule ) {
|
5940
6110
|
jQuery._evalUrl( node.src, {
|
5941
6111
|
nonce: node.nonce || node.getAttribute( "nonce" )
|
5942
|
-
} );
|
6112
|
+
}, doc );
|
5943
6113
|
}
|
5944
6114
|
} else {
|
6115
|
+
|
6116
|
+
// Unwrap a CDATA section containing script contents. This shouldn't be
|
6117
|
+
// needed as in XML documents they're already not visible when
|
6118
|
+
// inspecting element contents and in HTML documents they have no
|
6119
|
+
// meaning but we're preserving that logic for backwards compatibility.
|
6120
|
+
// This will be removed completely in 4.0. See gh-4904.
|
5945
6121
|
DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc );
|
5946
6122
|
}
|
5947
6123
|
}
|
@@ -5976,7 +6152,7 @@ function remove( elem, selector, keepData ) {
|
|
5976
6152
|
|
5977
6153
|
jQuery.extend( {
|
5978
6154
|
htmlPrefilter: function( html ) {
|
5979
|
-
return html
|
6155
|
+
return html;
|
5980
6156
|
},
|
5981
6157
|
|
5982
6158
|
clone: function( elem, dataAndEvents, deepDataAndEvents ) {
|
@@ -6224,9 +6400,12 @@ jQuery.each( {
|
|
6224
6400
|
} );
|
6225
6401
|
var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
|
6226
6402
|
|
6403
|
+
var rcustomProp = /^--/;
|
6404
|
+
|
6405
|
+
|
6227
6406
|
var getStyles = function( elem ) {
|
6228
6407
|
|
6229
|
-
// Support: IE <=11 only, Firefox <=30 (
|
6408
|
+
// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)
|
6230
6409
|
// IE throws on elements created in popups
|
6231
6410
|
// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
|
6232
6411
|
var view = elem.ownerDocument.defaultView;
|
@@ -6238,8 +6417,38 @@ var getStyles = function( elem ) {
|
|
6238
6417
|
return view.getComputedStyle( elem );
|
6239
6418
|
};
|
6240
6419
|
|
6420
|
+
var swap = function( elem, options, callback ) {
|
6421
|
+
var ret, name,
|
6422
|
+
old = {};
|
6423
|
+
|
6424
|
+
// Remember the old values, and insert the new ones
|
6425
|
+
for ( name in options ) {
|
6426
|
+
old[ name ] = elem.style[ name ];
|
6427
|
+
elem.style[ name ] = options[ name ];
|
6428
|
+
}
|
6429
|
+
|
6430
|
+
ret = callback.call( elem );
|
6431
|
+
|
6432
|
+
// Revert the old values
|
6433
|
+
for ( name in options ) {
|
6434
|
+
elem.style[ name ] = old[ name ];
|
6435
|
+
}
|
6436
|
+
|
6437
|
+
return ret;
|
6438
|
+
};
|
6439
|
+
|
6440
|
+
|
6241
6441
|
var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
|
6242
6442
|
|
6443
|
+
var whitespace = "[\\x20\\t\\r\\n\\f]";
|
6444
|
+
|
6445
|
+
|
6446
|
+
var rtrimCSS = new RegExp(
|
6447
|
+
"^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$",
|
6448
|
+
"g"
|
6449
|
+
);
|
6450
|
+
|
6451
|
+
|
6243
6452
|
|
6244
6453
|
|
6245
6454
|
( function() {
|
@@ -6295,7 +6504,7 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
|
|
6295
6504
|
}
|
6296
6505
|
|
6297
6506
|
var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,
|
6298
|
-
reliableMarginLeftVal,
|
6507
|
+
reliableTrDimensionsVal, reliableMarginLeftVal,
|
6299
6508
|
container = document.createElement( "div" ),
|
6300
6509
|
div = document.createElement( "div" );
|
6301
6510
|
|
@@ -6305,7 +6514,7 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
|
|
6305
6514
|
}
|
6306
6515
|
|
6307
6516
|
// Support: IE <=9 - 11 only
|
6308
|
-
// Style of cloned element affects source element cloned (
|
6517
|
+
// Style of cloned element affects source element cloned (trac-8908)
|
6309
6518
|
div.style.backgroundClip = "content-box";
|
6310
6519
|
div.cloneNode( true ).style.backgroundClip = "";
|
6311
6520
|
support.clearCloneStyle = div.style.backgroundClip === "content-box";
|
@@ -6330,6 +6539,54 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
|
|
6330
6539
|
scrollboxSize: function() {
|
6331
6540
|
computeStyleTests();
|
6332
6541
|
return scrollboxSizeVal;
|
6542
|
+
},
|
6543
|
+
|
6544
|
+
// Support: IE 9 - 11+, Edge 15 - 18+
|
6545
|
+
// IE/Edge misreport `getComputedStyle` of table rows with width/height
|
6546
|
+
// set in CSS while `offset*` properties report correct values.
|
6547
|
+
// Behavior in IE 9 is more subtle than in newer versions & it passes
|
6548
|
+
// some versions of this test; make sure not to make it pass there!
|
6549
|
+
//
|
6550
|
+
// Support: Firefox 70+
|
6551
|
+
// Only Firefox includes border widths
|
6552
|
+
// in computed dimensions. (gh-4529)
|
6553
|
+
reliableTrDimensions: function() {
|
6554
|
+
var table, tr, trChild, trStyle;
|
6555
|
+
if ( reliableTrDimensionsVal == null ) {
|
6556
|
+
table = document.createElement( "table" );
|
6557
|
+
tr = document.createElement( "tr" );
|
6558
|
+
trChild = document.createElement( "div" );
|
6559
|
+
|
6560
|
+
table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate";
|
6561
|
+
tr.style.cssText = "border:1px solid";
|
6562
|
+
|
6563
|
+
// Support: Chrome 86+
|
6564
|
+
// Height set through cssText does not get applied.
|
6565
|
+
// Computed height then comes back as 0.
|
6566
|
+
tr.style.height = "1px";
|
6567
|
+
trChild.style.height = "9px";
|
6568
|
+
|
6569
|
+
// Support: Android 8 Chrome 86+
|
6570
|
+
// In our bodyBackground.html iframe,
|
6571
|
+
// display for all div elements is set to "inline",
|
6572
|
+
// which causes a problem only in Android 8 Chrome 86.
|
6573
|
+
// Ensuring the div is display: block
|
6574
|
+
// gets around this issue.
|
6575
|
+
trChild.style.display = "block";
|
6576
|
+
|
6577
|
+
documentElement
|
6578
|
+
.appendChild( table )
|
6579
|
+
.appendChild( tr )
|
6580
|
+
.appendChild( trChild );
|
6581
|
+
|
6582
|
+
trStyle = window.getComputedStyle( tr );
|
6583
|
+
reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +
|
6584
|
+
parseInt( trStyle.borderTopWidth, 10 ) +
|
6585
|
+
parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;
|
6586
|
+
|
6587
|
+
documentElement.removeChild( table );
|
6588
|
+
}
|
6589
|
+
return reliableTrDimensionsVal;
|
6333
6590
|
}
|
6334
6591
|
} );
|
6335
6592
|
} )();
|
@@ -6337,6 +6594,7 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
|
|
6337
6594
|
|
6338
6595
|
function curCSS( elem, name, computed ) {
|
6339
6596
|
var width, minWidth, maxWidth, ret,
|
6597
|
+
isCustomProp = rcustomProp.test( name ),
|
6340
6598
|
|
6341
6599
|
// Support: Firefox 51+
|
6342
6600
|
// Retrieving style before computed somehow
|
@@ -6347,11 +6605,22 @@ function curCSS( elem, name, computed ) {
|
|
6347
6605
|
computed = computed || getStyles( elem );
|
6348
6606
|
|
6349
6607
|
// getPropertyValue is needed for:
|
6350
|
-
// .css('filter') (IE 9 only,
|
6351
|
-
// .css('--customProperty) (
|
6608
|
+
// .css('filter') (IE 9 only, trac-12537)
|
6609
|
+
// .css('--customProperty) (gh-3144)
|
6352
6610
|
if ( computed ) {
|
6353
6611
|
ret = computed.getPropertyValue( name ) || computed[ name ];
|
6354
6612
|
|
6613
|
+
// trim whitespace for custom property (issue gh-4926)
|
6614
|
+
if ( isCustomProp ) {
|
6615
|
+
|
6616
|
+
// rtrim treats U+000D CARRIAGE RETURN and U+000C FORM FEED
|
6617
|
+
// as whitespace while CSS does not, but this is not a problem
|
6618
|
+
// because CSS preprocessing replaces them with U+000A LINE FEED
|
6619
|
+
// (which *is* CSS whitespace)
|
6620
|
+
// https://www.w3.org/TR/css-syntax-3/#input-preprocessing
|
6621
|
+
ret = ret.replace( rtrimCSS, "$1" );
|
6622
|
+
}
|
6623
|
+
|
6355
6624
|
if ( ret === "" && !isAttached( elem ) ) {
|
6356
6625
|
ret = jQuery.style( elem, name );
|
6357
6626
|
}
|
@@ -6447,14 +6716,13 @@ var
|
|
6447
6716
|
// except "table", "table-cell", or "table-caption"
|
6448
6717
|
// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
|
6449
6718
|
rdisplayswap = /^(none|table(?!-c[ea]).+)/,
|
6450
|
-
rcustomProp = /^--/,
|
6451
6719
|
cssShow = { position: "absolute", visibility: "hidden", display: "block" },
|
6452
6720
|
cssNormalTransform = {
|
6453
6721
|
letterSpacing: "0",
|
6454
6722
|
fontWeight: "400"
|
6455
6723
|
};
|
6456
6724
|
|
6457
|
-
function setPositiveNumber(
|
6725
|
+
function setPositiveNumber( _elem, value, subtract ) {
|
6458
6726
|
|
6459
6727
|
// Any relative (+/-) values have already been
|
6460
6728
|
// normalized at this point
|
@@ -6559,17 +6827,26 @@ function getWidthOrHeight( elem, dimension, extra ) {
|
|
6559
6827
|
}
|
6560
6828
|
|
6561
6829
|
|
6562
|
-
//
|
6563
|
-
//
|
6564
|
-
//
|
6565
|
-
// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)
|
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
|
6830
|
+
// Support: IE 9 - 11 only
|
6831
|
+
// Use offsetWidth/offsetHeight for when box sizing is unreliable.
|
6832
|
+
// In those cases, the computed value can be trusted to be border-box.
|
6570
6833
|
if ( ( !support.boxSizingReliable() && isBorderBox ||
|
6834
|
+
|
6835
|
+
// Support: IE 10 - 11+, Edge 15 - 18+
|
6836
|
+
// IE/Edge misreport `getComputedStyle` of table rows with width/height
|
6837
|
+
// set in CSS while `offset*` properties report correct values.
|
6838
|
+
// Interestingly, in some cases IE 9 doesn't suffer from this issue.
|
6839
|
+
!support.reliableTrDimensions() && nodeName( elem, "tr" ) ||
|
6840
|
+
|
6841
|
+
// Fall back to offsetWidth/offsetHeight when value is "auto"
|
6842
|
+
// This happens for inline elements with no explicit setting (gh-3571)
|
6571
6843
|
val === "auto" ||
|
6844
|
+
|
6845
|
+
// Support: Android <=4.1 - 4.3 only
|
6846
|
+
// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)
|
6572
6847
|
!parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) &&
|
6848
|
+
|
6849
|
+
// Make sure the element is visible & connected
|
6573
6850
|
elem.getClientRects().length ) {
|
6574
6851
|
|
6575
6852
|
isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
|
@@ -6674,15 +6951,15 @@ jQuery.extend( {
|
|
6674
6951
|
if ( value !== undefined ) {
|
6675
6952
|
type = typeof value;
|
6676
6953
|
|
6677
|
-
// Convert "+=" or "-=" to relative numbers (
|
6954
|
+
// Convert "+=" or "-=" to relative numbers (trac-7345)
|
6678
6955
|
if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
|
6679
6956
|
value = adjustCSS( elem, name, ret );
|
6680
6957
|
|
6681
|
-
// Fixes bug
|
6958
|
+
// Fixes bug trac-9237
|
6682
6959
|
type = "number";
|
6683
6960
|
}
|
6684
6961
|
|
6685
|
-
// Make sure that null and NaN values aren't set (
|
6962
|
+
// Make sure that null and NaN values aren't set (trac-7116)
|
6686
6963
|
if ( value == null || value !== value ) {
|
6687
6964
|
return;
|
6688
6965
|
}
|
@@ -6764,7 +7041,7 @@ jQuery.extend( {
|
|
6764
7041
|
}
|
6765
7042
|
} );
|
6766
7043
|
|
6767
|
-
jQuery.each( [ "height", "width" ], function(
|
7044
|
+
jQuery.each( [ "height", "width" ], function( _i, dimension ) {
|
6768
7045
|
jQuery.cssHooks[ dimension ] = {
|
6769
7046
|
get: function( elem, computed, extra ) {
|
6770
7047
|
if ( computed ) {
|
@@ -6780,10 +7057,10 @@ jQuery.each( [ "height", "width" ], function( i, dimension ) {
|
|
6780
7057
|
// Running getBoundingClientRect on a disconnected node
|
6781
7058
|
// in IE throws an error.
|
6782
7059
|
( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
|
6783
|
-
|
6784
|
-
|
6785
|
-
|
6786
|
-
|
7060
|
+
swap( elem, cssShow, function() {
|
7061
|
+
return getWidthOrHeight( elem, dimension, extra );
|
7062
|
+
} ) :
|
7063
|
+
getWidthOrHeight( elem, dimension, extra );
|
6787
7064
|
}
|
6788
7065
|
},
|
6789
7066
|
|
@@ -6842,7 +7119,7 @@ jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
|
|
6842
7119
|
swap( elem, { marginLeft: 0 }, function() {
|
6843
7120
|
return elem.getBoundingClientRect().left;
|
6844
7121
|
} )
|
6845
|
-
|
7122
|
+
) + "px";
|
6846
7123
|
}
|
6847
7124
|
}
|
6848
7125
|
);
|
@@ -6981,7 +7258,7 @@ Tween.propHooks = {
|
|
6981
7258
|
if ( jQuery.fx.step[ tween.prop ] ) {
|
6982
7259
|
jQuery.fx.step[ tween.prop ]( tween );
|
6983
7260
|
} else if ( tween.elem.nodeType === 1 && (
|
6984
|
-
|
7261
|
+
jQuery.cssHooks[ tween.prop ] ||
|
6985
7262
|
tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {
|
6986
7263
|
jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
|
6987
7264
|
} else {
|
@@ -7226,7 +7503,7 @@ function defaultPrefilter( elem, props, opts ) {
|
|
7226
7503
|
|
7227
7504
|
anim.done( function() {
|
7228
7505
|
|
7229
|
-
|
7506
|
+
/* eslint-enable no-loop-func */
|
7230
7507
|
|
7231
7508
|
// The final step of a "hide" animation is actually hiding the element
|
7232
7509
|
if ( !hidden ) {
|
@@ -7306,7 +7583,7 @@ function Animation( elem, properties, options ) {
|
|
7306
7583
|
remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
|
7307
7584
|
|
7308
7585
|
// Support: Android 2.3 only
|
7309
|
-
// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (
|
7586
|
+
// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)
|
7310
7587
|
temp = remaining / animation.duration || 0,
|
7311
7588
|
percent = 1 - temp,
|
7312
7589
|
index = 0,
|
@@ -7346,7 +7623,7 @@ function Animation( elem, properties, options ) {
|
|
7346
7623
|
tweens: [],
|
7347
7624
|
createTween: function( prop, end ) {
|
7348
7625
|
var tween = jQuery.Tween( elem, animation.opts, prop, end,
|
7349
|
-
|
7626
|
+
animation.opts.specialEasing[ prop ] || animation.opts.easing );
|
7350
7627
|
animation.tweens.push( tween );
|
7351
7628
|
return tween;
|
7352
7629
|
},
|
@@ -7519,7 +7796,8 @@ jQuery.fn.extend( {
|
|
7519
7796
|
anim.stop( true );
|
7520
7797
|
}
|
7521
7798
|
};
|
7522
|
-
|
7799
|
+
|
7800
|
+
doAnimation.finish = doAnimation;
|
7523
7801
|
|
7524
7802
|
return empty || optall.queue === false ?
|
7525
7803
|
this.each( doAnimation ) :
|
@@ -7537,7 +7815,7 @@ jQuery.fn.extend( {
|
|
7537
7815
|
clearQueue = type;
|
7538
7816
|
type = undefined;
|
7539
7817
|
}
|
7540
|
-
if ( clearQueue
|
7818
|
+
if ( clearQueue ) {
|
7541
7819
|
this.queue( type || "fx", [] );
|
7542
7820
|
}
|
7543
7821
|
|
@@ -7620,7 +7898,7 @@ jQuery.fn.extend( {
|
|
7620
7898
|
}
|
7621
7899
|
} );
|
7622
7900
|
|
7623
|
-
jQuery.each( [ "toggle", "show", "hide" ], function(
|
7901
|
+
jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) {
|
7624
7902
|
var cssFn = jQuery.fn[ name ];
|
7625
7903
|
jQuery.fn[ name ] = function( speed, easing, callback ) {
|
7626
7904
|
return speed == null || typeof speed === "boolean" ?
|
@@ -7695,7 +7973,6 @@ jQuery.fx.speeds = {
|
|
7695
7973
|
|
7696
7974
|
|
7697
7975
|
// Based off of the plugin by Clint Helfers, with permission.
|
7698
|
-
// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
|
7699
7976
|
jQuery.fn.delay = function( time, type ) {
|
7700
7977
|
time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
|
7701
7978
|
type = type || "fx";
|
@@ -7841,7 +8118,7 @@ boolHook = {
|
|
7841
8118
|
}
|
7842
8119
|
};
|
7843
8120
|
|
7844
|
-
jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function(
|
8121
|
+
jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) {
|
7845
8122
|
var getter = attrHandle[ name ] || jQuery.find.attr;
|
7846
8123
|
|
7847
8124
|
attrHandle[ name ] = function( elem, name, isXML ) {
|
@@ -7920,8 +8197,7 @@ jQuery.extend( {
|
|
7920
8197
|
// Support: IE <=9 - 11 only
|
7921
8198
|
// elem.tabIndex doesn't always return the
|
7922
8199
|
// correct value when it hasn't been explicitly set
|
7923
|
-
//
|
7924
|
-
// Use proper attribute retrieval(#12072)
|
8200
|
+
// Use proper attribute retrieval (trac-12072)
|
7925
8201
|
var tabindex = jQuery.find.attr( elem, "tabindex" );
|
7926
8202
|
|
7927
8203
|
if ( tabindex ) {
|
@@ -8025,8 +8301,7 @@ function classesToArray( value ) {
|
|
8025
8301
|
|
8026
8302
|
jQuery.fn.extend( {
|
8027
8303
|
addClass: function( value ) {
|
8028
|
-
var
|
8029
|
-
i = 0;
|
8304
|
+
var classNames, cur, curValue, className, i, finalValue;
|
8030
8305
|
|
8031
8306
|
if ( isFunction( value ) ) {
|
8032
8307
|
return this.each( function( j ) {
|
@@ -8034,36 +8309,35 @@ jQuery.fn.extend( {
|
|
8034
8309
|
} );
|
8035
8310
|
}
|
8036
8311
|
|
8037
|
-
|
8312
|
+
classNames = classesToArray( value );
|
8038
8313
|
|
8039
|
-
if (
|
8040
|
-
|
8041
|
-
curValue = getClass(
|
8042
|
-
cur =
|
8314
|
+
if ( classNames.length ) {
|
8315
|
+
return this.each( function() {
|
8316
|
+
curValue = getClass( this );
|
8317
|
+
cur = this.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
|
8043
8318
|
|
8044
8319
|
if ( cur ) {
|
8045
|
-
|
8046
|
-
|
8047
|
-
if ( cur.indexOf( " " +
|
8048
|
-
cur +=
|
8320
|
+
for ( i = 0; i < classNames.length; i++ ) {
|
8321
|
+
className = classNames[ i ];
|
8322
|
+
if ( cur.indexOf( " " + className + " " ) < 0 ) {
|
8323
|
+
cur += className + " ";
|
8049
8324
|
}
|
8050
8325
|
}
|
8051
8326
|
|
8052
8327
|
// Only assign if different to avoid unneeded rendering.
|
8053
8328
|
finalValue = stripAndCollapse( cur );
|
8054
8329
|
if ( curValue !== finalValue ) {
|
8055
|
-
|
8330
|
+
this.setAttribute( "class", finalValue );
|
8056
8331
|
}
|
8057
8332
|
}
|
8058
|
-
}
|
8333
|
+
} );
|
8059
8334
|
}
|
8060
8335
|
|
8061
8336
|
return this;
|
8062
8337
|
},
|
8063
8338
|
|
8064
8339
|
removeClass: function( value ) {
|
8065
|
-
var
|
8066
|
-
i = 0;
|
8340
|
+
var classNames, cur, curValue, className, i, finalValue;
|
8067
8341
|
|
8068
8342
|
if ( isFunction( value ) ) {
|
8069
8343
|
return this.each( function( j ) {
|
@@ -8075,45 +8349,42 @@ jQuery.fn.extend( {
|
|
8075
8349
|
return this.attr( "class", "" );
|
8076
8350
|
}
|
8077
8351
|
|
8078
|
-
|
8352
|
+
classNames = classesToArray( value );
|
8079
8353
|
|
8080
|
-
if (
|
8081
|
-
|
8082
|
-
curValue = getClass(
|
8354
|
+
if ( classNames.length ) {
|
8355
|
+
return this.each( function() {
|
8356
|
+
curValue = getClass( this );
|
8083
8357
|
|
8084
8358
|
// This expression is here for better compressibility (see addClass)
|
8085
|
-
cur =
|
8359
|
+
cur = this.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
|
8086
8360
|
|
8087
8361
|
if ( cur ) {
|
8088
|
-
|
8089
|
-
|
8362
|
+
for ( i = 0; i < classNames.length; i++ ) {
|
8363
|
+
className = classNames[ i ];
|
8090
8364
|
|
8091
8365
|
// Remove *all* instances
|
8092
|
-
while ( cur.indexOf( " " +
|
8093
|
-
cur = cur.replace( " " +
|
8366
|
+
while ( cur.indexOf( " " + className + " " ) > -1 ) {
|
8367
|
+
cur = cur.replace( " " + className + " ", " " );
|
8094
8368
|
}
|
8095
8369
|
}
|
8096
8370
|
|
8097
8371
|
// Only assign if different to avoid unneeded rendering.
|
8098
8372
|
finalValue = stripAndCollapse( cur );
|
8099
8373
|
if ( curValue !== finalValue ) {
|
8100
|
-
|
8374
|
+
this.setAttribute( "class", finalValue );
|
8101
8375
|
}
|
8102
8376
|
}
|
8103
|
-
}
|
8377
|
+
} );
|
8104
8378
|
}
|
8105
8379
|
|
8106
8380
|
return this;
|
8107
8381
|
},
|
8108
8382
|
|
8109
8383
|
toggleClass: function( value, stateVal ) {
|
8110
|
-
var
|
8384
|
+
var classNames, className, i, self,
|
8385
|
+
type = typeof value,
|
8111
8386
|
isValidValue = type === "string" || Array.isArray( value );
|
8112
8387
|
|
8113
|
-
if ( typeof stateVal === "boolean" && isValidValue ) {
|
8114
|
-
return stateVal ? this.addClass( value ) : this.removeClass( value );
|
8115
|
-
}
|
8116
|
-
|
8117
8388
|
if ( isFunction( value ) ) {
|
8118
8389
|
return this.each( function( i ) {
|
8119
8390
|
jQuery( this ).toggleClass(
|
@@ -8123,17 +8394,20 @@ jQuery.fn.extend( {
|
|
8123
8394
|
} );
|
8124
8395
|
}
|
8125
8396
|
|
8126
|
-
|
8127
|
-
|
8397
|
+
if ( typeof stateVal === "boolean" && isValidValue ) {
|
8398
|
+
return stateVal ? this.addClass( value ) : this.removeClass( value );
|
8399
|
+
}
|
8400
|
+
|
8401
|
+
classNames = classesToArray( value );
|
8128
8402
|
|
8403
|
+
return this.each( function() {
|
8129
8404
|
if ( isValidValue ) {
|
8130
8405
|
|
8131
8406
|
// Toggle individual class names
|
8132
|
-
i = 0;
|
8133
8407
|
self = jQuery( this );
|
8134
|
-
classNames = classesToArray( value );
|
8135
8408
|
|
8136
|
-
|
8409
|
+
for ( i = 0; i < classNames.length; i++ ) {
|
8410
|
+
className = classNames[ i ];
|
8137
8411
|
|
8138
8412
|
// Check each className given, space separated list
|
8139
8413
|
if ( self.hasClass( className ) ) {
|
@@ -8159,8 +8433,8 @@ jQuery.fn.extend( {
|
|
8159
8433
|
if ( this.setAttribute ) {
|
8160
8434
|
this.setAttribute( "class",
|
8161
8435
|
className || value === false ?
|
8162
|
-
|
8163
|
-
|
8436
|
+
"" :
|
8437
|
+
dataPriv.get( this, "__className__" ) || ""
|
8164
8438
|
);
|
8165
8439
|
}
|
8166
8440
|
}
|
@@ -8175,7 +8449,7 @@ jQuery.fn.extend( {
|
|
8175
8449
|
while ( ( elem = this[ i++ ] ) ) {
|
8176
8450
|
if ( elem.nodeType === 1 &&
|
8177
8451
|
( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
|
8178
|
-
|
8452
|
+
return true;
|
8179
8453
|
}
|
8180
8454
|
}
|
8181
8455
|
|
@@ -8267,7 +8541,7 @@ jQuery.extend( {
|
|
8267
8541
|
val :
|
8268
8542
|
|
8269
8543
|
// Support: IE <=10 - 11 only
|
8270
|
-
// option.text throws exceptions (
|
8544
|
+
// option.text throws exceptions (trac-14686, trac-14858)
|
8271
8545
|
// Strip and collapse whitespace
|
8272
8546
|
// https://html.spec.whatwg.org/#strip-and-collapse-whitespace
|
8273
8547
|
stripAndCollapse( jQuery.text( elem ) );
|
@@ -8294,7 +8568,7 @@ jQuery.extend( {
|
|
8294
8568
|
option = options[ i ];
|
8295
8569
|
|
8296
8570
|
// Support: IE <=9 only
|
8297
|
-
// IE8-9 doesn't update selected after form reset (
|
8571
|
+
// IE8-9 doesn't update selected after form reset (trac-2551)
|
8298
8572
|
if ( ( option.selected || i === index ) &&
|
8299
8573
|
|
8300
8574
|
// Don't return options that are disabled or in a disabled optgroup
|
@@ -8437,8 +8711,8 @@ jQuery.extend( jQuery.event, {
|
|
8437
8711
|
return;
|
8438
8712
|
}
|
8439
8713
|
|
8440
|
-
// Determine event propagation path in advance, per W3C events spec (
|
8441
|
-
// Bubble up to document, then to window; watch for a global ownerDocument var (
|
8714
|
+
// Determine event propagation path in advance, per W3C events spec (trac-9951)
|
8715
|
+
// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)
|
8442
8716
|
if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {
|
8443
8717
|
|
8444
8718
|
bubbleType = special.delegateType || type;
|
@@ -8465,7 +8739,7 @@ jQuery.extend( jQuery.event, {
|
|
8465
8739
|
special.bindType || type;
|
8466
8740
|
|
8467
8741
|
// jQuery handler
|
8468
|
-
handle = ( dataPriv.get( cur, "events" ) ||
|
8742
|
+
handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] &&
|
8469
8743
|
dataPriv.get( cur, "handle" );
|
8470
8744
|
if ( handle ) {
|
8471
8745
|
handle.apply( cur, data );
|
@@ -8490,7 +8764,7 @@ jQuery.extend( jQuery.event, {
|
|
8490
8764
|
acceptData( elem ) ) {
|
8491
8765
|
|
8492
8766
|
// Call a native DOM method on the target with the same name as the event.
|
8493
|
-
// Don't do default actions on window, that's where global variables be (
|
8767
|
+
// Don't do default actions on window, that's where global variables be (trac-6170)
|
8494
8768
|
if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {
|
8495
8769
|
|
8496
8770
|
// Don't re-trigger an onFOO event when we call its FOO() method
|
@@ -8576,7 +8850,10 @@ if ( !support.focusin ) {
|
|
8576
8850
|
|
8577
8851
|
jQuery.event.special[ fix ] = {
|
8578
8852
|
setup: function() {
|
8579
|
-
|
8853
|
+
|
8854
|
+
// Handle: regular nodes (via `this.ownerDocument`), window
|
8855
|
+
// (via `this.document`) & document (via `this`).
|
8856
|
+
var doc = this.ownerDocument || this.document || this,
|
8580
8857
|
attaches = dataPriv.access( doc, fix );
|
8581
8858
|
|
8582
8859
|
if ( !attaches ) {
|
@@ -8585,7 +8862,7 @@ if ( !support.focusin ) {
|
|
8585
8862
|
dataPriv.access( doc, fix, ( attaches || 0 ) + 1 );
|
8586
8863
|
},
|
8587
8864
|
teardown: function() {
|
8588
|
-
var doc = this.ownerDocument || this,
|
8865
|
+
var doc = this.ownerDocument || this.document || this,
|
8589
8866
|
attaches = dataPriv.access( doc, fix ) - 1;
|
8590
8867
|
|
8591
8868
|
if ( !attaches ) {
|
@@ -8601,7 +8878,7 @@ if ( !support.focusin ) {
|
|
8601
8878
|
}
|
8602
8879
|
var location = window.location;
|
8603
8880
|
|
8604
|
-
var nonce = Date.now();
|
8881
|
+
var nonce = { guid: Date.now() };
|
8605
8882
|
|
8606
8883
|
var rquery = ( /\?/ );
|
8607
8884
|
|
@@ -8609,7 +8886,7 @@ var rquery = ( /\?/ );
|
|
8609
8886
|
|
8610
8887
|
// Cross-browser xml parsing
|
8611
8888
|
jQuery.parseXML = function( data ) {
|
8612
|
-
var xml;
|
8889
|
+
var xml, parserErrorElem;
|
8613
8890
|
if ( !data || typeof data !== "string" ) {
|
8614
8891
|
return null;
|
8615
8892
|
}
|
@@ -8618,12 +8895,17 @@ jQuery.parseXML = function( data ) {
|
|
8618
8895
|
// IE throws on parseFromString with invalid input.
|
8619
8896
|
try {
|
8620
8897
|
xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
|
8621
|
-
} catch ( e ) {
|
8622
|
-
xml = undefined;
|
8623
|
-
}
|
8898
|
+
} catch ( e ) {}
|
8624
8899
|
|
8625
|
-
|
8626
|
-
|
8900
|
+
parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ];
|
8901
|
+
if ( !xml || parserErrorElem ) {
|
8902
|
+
jQuery.error( "Invalid XML: " + (
|
8903
|
+
parserErrorElem ?
|
8904
|
+
jQuery.map( parserErrorElem.childNodes, function( el ) {
|
8905
|
+
return el.textContent;
|
8906
|
+
} ).join( "\n" ) :
|
8907
|
+
data
|
8908
|
+
) );
|
8627
8909
|
}
|
8628
8910
|
return xml;
|
8629
8911
|
};
|
@@ -8724,16 +9006,14 @@ jQuery.fn.extend( {
|
|
8724
9006
|
// Can add propHook for "elements" to filter or add form elements
|
8725
9007
|
var elements = jQuery.prop( this, "elements" );
|
8726
9008
|
return elements ? jQuery.makeArray( elements ) : this;
|
8727
|
-
} )
|
8728
|
-
.filter( function() {
|
9009
|
+
} ).filter( function() {
|
8729
9010
|
var type = this.type;
|
8730
9011
|
|
8731
9012
|
// Use .is( ":disabled" ) so that fieldset[disabled] works
|
8732
9013
|
return this.name && !jQuery( this ).is( ":disabled" ) &&
|
8733
9014
|
rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
|
8734
9015
|
( this.checked || !rcheckableType.test( type ) );
|
8735
|
-
} )
|
8736
|
-
.map( function( i, elem ) {
|
9016
|
+
} ).map( function( _i, elem ) {
|
8737
9017
|
var val = jQuery( this ).val();
|
8738
9018
|
|
8739
9019
|
if ( val == null ) {
|
@@ -8758,7 +9038,7 @@ var
|
|
8758
9038
|
rantiCache = /([?&])_=[^&]*/,
|
8759
9039
|
rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
|
8760
9040
|
|
8761
|
-
//
|
9041
|
+
// trac-7653, trac-8125, trac-8152: local protocol detection
|
8762
9042
|
rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
|
8763
9043
|
rnoContent = /^(?:GET|HEAD)$/,
|
8764
9044
|
rprotocol = /^\/\//,
|
@@ -8781,12 +9061,13 @@ var
|
|
8781
9061
|
*/
|
8782
9062
|
transports = {},
|
8783
9063
|
|
8784
|
-
// Avoid comment-prolog char sequence (
|
9064
|
+
// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression
|
8785
9065
|
allTypes = "*/".concat( "*" ),
|
8786
9066
|
|
8787
9067
|
// Anchor tag for parsing the document origin
|
8788
9068
|
originAnchor = document.createElement( "a" );
|
8789
|
-
|
9069
|
+
|
9070
|
+
originAnchor.href = location.href;
|
8790
9071
|
|
8791
9072
|
// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
|
8792
9073
|
function addToPrefiltersOrTransports( structure ) {
|
@@ -8851,7 +9132,7 @@ function inspectPrefiltersOrTransports( structure, options, originalOptions, jqX
|
|
8851
9132
|
|
8852
9133
|
// A special extend for ajax options
|
8853
9134
|
// that takes "flat" options (not to be deep extended)
|
8854
|
-
// Fixes
|
9135
|
+
// Fixes trac-9887
|
8855
9136
|
function ajaxExtend( target, src ) {
|
8856
9137
|
var key, deep,
|
8857
9138
|
flatOptions = jQuery.ajaxSettings.flatOptions || {};
|
@@ -9167,8 +9448,8 @@ jQuery.extend( {
|
|
9167
9448
|
// Context for global events is callbackContext if it is a DOM node or jQuery collection
|
9168
9449
|
globalEventContext = s.context &&
|
9169
9450
|
( callbackContext.nodeType || callbackContext.jquery ) ?
|
9170
|
-
|
9171
|
-
|
9451
|
+
jQuery( callbackContext ) :
|
9452
|
+
jQuery.event,
|
9172
9453
|
|
9173
9454
|
// Deferreds
|
9174
9455
|
deferred = jQuery.Deferred(),
|
@@ -9262,12 +9543,12 @@ jQuery.extend( {
|
|
9262
9543
|
deferred.promise( jqXHR );
|
9263
9544
|
|
9264
9545
|
// Add protocol if not provided (prefilters might expect it)
|
9265
|
-
// Handle falsy url in the settings object (
|
9546
|
+
// Handle falsy url in the settings object (trac-10093: consistency with old signature)
|
9266
9547
|
// We also use the url parameter if available
|
9267
9548
|
s.url = ( ( url || s.url || location.href ) + "" )
|
9268
9549
|
.replace( rprotocol, location.protocol + "//" );
|
9269
9550
|
|
9270
|
-
// Alias method option to type as per ticket
|
9551
|
+
// Alias method option to type as per ticket trac-12004
|
9271
9552
|
s.type = options.method || options.type || s.method || s.type;
|
9272
9553
|
|
9273
9554
|
// Extract dataTypes list
|
@@ -9310,7 +9591,7 @@ jQuery.extend( {
|
|
9310
9591
|
}
|
9311
9592
|
|
9312
9593
|
// We can fire global events as of now if asked to
|
9313
|
-
// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (
|
9594
|
+
// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)
|
9314
9595
|
fireGlobals = jQuery.event && s.global;
|
9315
9596
|
|
9316
9597
|
// Watch for a new set of requests
|
@@ -9339,14 +9620,15 @@ jQuery.extend( {
|
|
9339
9620
|
if ( s.data && ( s.processData || typeof s.data === "string" ) ) {
|
9340
9621
|
cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data;
|
9341
9622
|
|
9342
|
-
//
|
9623
|
+
// trac-9682: remove data so that it's not used in an eventual retry
|
9343
9624
|
delete s.data;
|
9344
9625
|
}
|
9345
9626
|
|
9346
9627
|
// Add or update anti-cache param if needed
|
9347
9628
|
if ( s.cache === false ) {
|
9348
9629
|
cacheURL = cacheURL.replace( rantiCache, "$1" );
|
9349
|
-
uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) +
|
9630
|
+
uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) +
|
9631
|
+
uncached;
|
9350
9632
|
}
|
9351
9633
|
|
9352
9634
|
// Put hash and anti-cache on the URL that will be requested (gh-1732)
|
@@ -9479,6 +9761,13 @@ jQuery.extend( {
|
|
9479
9761
|
response = ajaxHandleResponses( s, jqXHR, responses );
|
9480
9762
|
}
|
9481
9763
|
|
9764
|
+
// Use a noop converter for missing script but not if jsonp
|
9765
|
+
if ( !isSuccess &&
|
9766
|
+
jQuery.inArray( "script", s.dataTypes ) > -1 &&
|
9767
|
+
jQuery.inArray( "json", s.dataTypes ) < 0 ) {
|
9768
|
+
s.converters[ "text script" ] = function() {};
|
9769
|
+
}
|
9770
|
+
|
9482
9771
|
// Convert no matter what (that way responseXXX fields are always set)
|
9483
9772
|
response = ajaxConvert( s, response, jqXHR, isSuccess );
|
9484
9773
|
|
@@ -9569,7 +9858,7 @@ jQuery.extend( {
|
|
9569
9858
|
}
|
9570
9859
|
} );
|
9571
9860
|
|
9572
|
-
jQuery.each( [ "get", "post" ], function(
|
9861
|
+
jQuery.each( [ "get", "post" ], function( _i, method ) {
|
9573
9862
|
jQuery[ method ] = function( url, data, callback, type ) {
|
9574
9863
|
|
9575
9864
|
// Shift arguments if data argument was omitted
|
@@ -9590,12 +9879,21 @@ jQuery.each( [ "get", "post" ], function( i, method ) {
|
|
9590
9879
|
};
|
9591
9880
|
} );
|
9592
9881
|
|
9882
|
+
jQuery.ajaxPrefilter( function( s ) {
|
9883
|
+
var i;
|
9884
|
+
for ( i in s.headers ) {
|
9885
|
+
if ( i.toLowerCase() === "content-type" ) {
|
9886
|
+
s.contentType = s.headers[ i ] || "";
|
9887
|
+
}
|
9888
|
+
}
|
9889
|
+
} );
|
9890
|
+
|
9593
9891
|
|
9594
|
-
jQuery._evalUrl = function( url, options ) {
|
9892
|
+
jQuery._evalUrl = function( url, options, doc ) {
|
9595
9893
|
return jQuery.ajax( {
|
9596
9894
|
url: url,
|
9597
9895
|
|
9598
|
-
// Make this explicit, since user can override this through ajaxSetup (
|
9896
|
+
// Make this explicit, since user can override this through ajaxSetup (trac-11264)
|
9599
9897
|
type: "GET",
|
9600
9898
|
dataType: "script",
|
9601
9899
|
cache: true,
|
@@ -9609,7 +9907,7 @@ jQuery._evalUrl = function( url, options ) {
|
|
9609
9907
|
"text script": function() {}
|
9610
9908
|
},
|
9611
9909
|
dataFilter: function( response ) {
|
9612
|
-
jQuery.globalEval( response, options );
|
9910
|
+
jQuery.globalEval( response, options, doc );
|
9613
9911
|
}
|
9614
9912
|
} );
|
9615
9913
|
};
|
@@ -9704,7 +10002,7 @@ var xhrSuccessStatus = {
|
|
9704
10002
|
0: 200,
|
9705
10003
|
|
9706
10004
|
// Support: IE <=9 only
|
9707
|
-
//
|
10005
|
+
// trac-1450: sometimes IE returns 1223 when it should be 204
|
9708
10006
|
1223: 204
|
9709
10007
|
},
|
9710
10008
|
xhrSupported = jQuery.ajaxSettings.xhr();
|
@@ -9776,7 +10074,7 @@ jQuery.ajaxTransport( function( options ) {
|
|
9776
10074
|
} else {
|
9777
10075
|
complete(
|
9778
10076
|
|
9779
|
-
// File: protocol always yields status 0; see
|
10077
|
+
// File: protocol always yields status 0; see trac-8605, trac-14207
|
9780
10078
|
xhr.status,
|
9781
10079
|
xhr.statusText
|
9782
10080
|
);
|
@@ -9837,7 +10135,7 @@ jQuery.ajaxTransport( function( options ) {
|
|
9837
10135
|
xhr.send( options.hasContent && options.data || null );
|
9838
10136
|
} catch ( e ) {
|
9839
10137
|
|
9840
|
-
//
|
10138
|
+
// trac-14683: Only rethrow if this hasn't been notified as an error yet
|
9841
10139
|
if ( callback ) {
|
9842
10140
|
throw e;
|
9843
10141
|
}
|
@@ -9931,7 +10229,7 @@ var oldCallbacks = [],
|
|
9931
10229
|
jQuery.ajaxSetup( {
|
9932
10230
|
jsonp: "callback",
|
9933
10231
|
jsonpCallback: function() {
|
9934
|
-
var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
|
10232
|
+
var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce.guid++ ) );
|
9935
10233
|
this[ callback ] = true;
|
9936
10234
|
return callback;
|
9937
10235
|
}
|
@@ -10148,23 +10446,6 @@ jQuery.fn.load = function( url, params, callback ) {
|
|
10148
10446
|
|
10149
10447
|
|
10150
10448
|
|
10151
|
-
// Attach a bunch of functions for handling common AJAX events
|
10152
|
-
jQuery.each( [
|
10153
|
-
"ajaxStart",
|
10154
|
-
"ajaxStop",
|
10155
|
-
"ajaxComplete",
|
10156
|
-
"ajaxError",
|
10157
|
-
"ajaxSuccess",
|
10158
|
-
"ajaxSend"
|
10159
|
-
], function( i, type ) {
|
10160
|
-
jQuery.fn[ type ] = function( fn ) {
|
10161
|
-
return this.on( type, fn );
|
10162
|
-
};
|
10163
|
-
} );
|
10164
|
-
|
10165
|
-
|
10166
|
-
|
10167
|
-
|
10168
10449
|
jQuery.expr.pseudos.animated = function( elem ) {
|
10169
10450
|
return jQuery.grep( jQuery.timers, function( fn ) {
|
10170
10451
|
return elem === fn.elem;
|
@@ -10371,7 +10652,7 @@ jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function(
|
|
10371
10652
|
// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347
|
10372
10653
|
// getComputedStyle returns percent when specified for top/left/bottom/right;
|
10373
10654
|
// rather than make the css module depend on the offset module, just check for it here
|
10374
|
-
jQuery.each( [ "top", "left" ], function(
|
10655
|
+
jQuery.each( [ "top", "left" ], function( _i, prop ) {
|
10375
10656
|
jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
|
10376
10657
|
function( elem, computed ) {
|
10377
10658
|
if ( computed ) {
|
@@ -10389,8 +10670,11 @@ jQuery.each( [ "top", "left" ], function( i, prop ) {
|
|
10389
10670
|
|
10390
10671
|
// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
|
10391
10672
|
jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
|
10392
|
-
jQuery.each( {
|
10393
|
-
|
10673
|
+
jQuery.each( {
|
10674
|
+
padding: "inner" + name,
|
10675
|
+
content: type,
|
10676
|
+
"": "outer" + name
|
10677
|
+
}, function( defaultExtra, funcName ) {
|
10394
10678
|
|
10395
10679
|
// Margin is only for outerHeight, outerWidth
|
10396
10680
|
jQuery.fn[ funcName ] = function( margin, value ) {
|
@@ -10434,25 +10718,19 @@ jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
|
|
10434
10718
|
} );
|
10435
10719
|
|
10436
10720
|
|
10437
|
-
jQuery.each(
|
10438
|
-
"
|
10439
|
-
"
|
10440
|
-
|
10441
|
-
|
10442
|
-
|
10443
|
-
|
10444
|
-
|
10445
|
-
|
10446
|
-
|
10721
|
+
jQuery.each( [
|
10722
|
+
"ajaxStart",
|
10723
|
+
"ajaxStop",
|
10724
|
+
"ajaxComplete",
|
10725
|
+
"ajaxError",
|
10726
|
+
"ajaxSuccess",
|
10727
|
+
"ajaxSend"
|
10728
|
+
], function( _i, type ) {
|
10729
|
+
jQuery.fn[ type ] = function( fn ) {
|
10730
|
+
return this.on( type, fn );
|
10447
10731
|
};
|
10448
10732
|
} );
|
10449
10733
|
|
10450
|
-
jQuery.fn.extend( {
|
10451
|
-
hover: function( fnOver, fnOut ) {
|
10452
|
-
return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
|
10453
|
-
}
|
10454
|
-
} );
|
10455
|
-
|
10456
10734
|
|
10457
10735
|
|
10458
10736
|
|
@@ -10474,9 +10752,37 @@ jQuery.fn.extend( {
|
|
10474
10752
|
return arguments.length === 1 ?
|
10475
10753
|
this.off( selector, "**" ) :
|
10476
10754
|
this.off( types, selector || "**", fn );
|
10755
|
+
},
|
10756
|
+
|
10757
|
+
hover: function( fnOver, fnOut ) {
|
10758
|
+
return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
|
10477
10759
|
}
|
10478
10760
|
} );
|
10479
10761
|
|
10762
|
+
jQuery.each(
|
10763
|
+
( "blur focus focusin focusout resize scroll click dblclick " +
|
10764
|
+
"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
|
10765
|
+
"change select submit keydown keypress keyup contextmenu" ).split( " " ),
|
10766
|
+
function( _i, name ) {
|
10767
|
+
|
10768
|
+
// Handle event binding
|
10769
|
+
jQuery.fn[ name ] = function( data, fn ) {
|
10770
|
+
return arguments.length > 0 ?
|
10771
|
+
this.on( name, null, data, fn ) :
|
10772
|
+
this.trigger( name );
|
10773
|
+
};
|
10774
|
+
}
|
10775
|
+
);
|
10776
|
+
|
10777
|
+
|
10778
|
+
|
10779
|
+
|
10780
|
+
// Support: Android <=4.0 only
|
10781
|
+
// Make sure we trim BOM and NBSP
|
10782
|
+
// Require that the "whitespace run" starts from a non-whitespace
|
10783
|
+
// to avoid O(N^2) behavior when the engine would try matching "\s+$" at each space position.
|
10784
|
+
var rtrim = /^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;
|
10785
|
+
|
10480
10786
|
// Bind a function to a context, optionally partially applying any
|
10481
10787
|
// arguments.
|
10482
10788
|
// jQuery.proxy is deprecated to promote standards (specifically Function#bind)
|
@@ -10539,6 +10845,11 @@ jQuery.isNumeric = function( obj ) {
|
|
10539
10845
|
!isNaN( obj - parseFloat( obj ) );
|
10540
10846
|
};
|
10541
10847
|
|
10848
|
+
jQuery.trim = function( text ) {
|
10849
|
+
return text == null ?
|
10850
|
+
"" :
|
10851
|
+
( text + "" ).replace( rtrim, "$1" );
|
10852
|
+
};
|
10542
10853
|
|
10543
10854
|
|
10544
10855
|
|
@@ -10585,9 +10896,9 @@ jQuery.noConflict = function( deep ) {
|
|
10585
10896
|
};
|
10586
10897
|
|
10587
10898
|
// Expose jQuery and $ identifiers, even in AMD
|
10588
|
-
// (
|
10589
|
-
// and CommonJS for browser emulators (
|
10590
|
-
if (
|
10899
|
+
// (trac-7102#comment:10, https://github.com/jquery/jquery/pull/557)
|
10900
|
+
// and CommonJS for browser emulators (trac-13566)
|
10901
|
+
if ( typeof noGlobal === "undefined" ) {
|
10591
10902
|
window.jQuery = window.$ = jQuery;
|
10592
10903
|
}
|
10593
10904
|
|