hof 20.4.0-beta-session-timeout → 20.4.0-beta-new-crown
Sign up to get free protection for your applications and to get access to all the features.
- package/.nyc_output/594bd7df-0d9b-4e59-9b57-90c46c8350ec.json +1 -0
- package/.nyc_output/processinfo/594bd7df-0d9b-4e59-9b57-90c46c8350ec.json +1 -0
- package/.nyc_output/processinfo/index.json +1 -1
- package/.vscode/settings.json +6 -0
- package/frontend/govuk-template/build/govuk_template.html +3 -4
- package/frontend/govuk-template/govuk_template_generated.html +4 -5
- package/frontend/template-partials/translations/src/en/buttons.json +0 -1
- package/frontend/template-partials/views/layout.html +0 -1
- package/frontend/themes/gov-uk/client-js/index.js +0 -1
- package/frontend/themes/gov-uk/styles/govuk.scss +0 -1
- package/package.json +2 -2
- package/sandbox/.env +1 -0
- package/sandbox/public/css/app.css +10 -0
- package/sandbox/public/js/bundle.js +1130 -965
- package/.nyc_output/9651d42a-59d8-48e6-949c-655d9fa6db21.json +0 -1
- package/.nyc_output/processinfo/9651d42a-59d8-48e6-949c-655d9fa6db21.json +0 -1
- package/frontend/template-partials/views/partials/session-timeout-warning.html +0 -26
- package/frontend/themes/gov-uk/client-js/dialog/index.js +0 -358
- package/frontend/themes/gov-uk/client-js/dialog/utils.js +0 -114
- package/frontend/themes/gov-uk/styles/session_timeout.scss +0 -138
@@ -21222,14 +21222,17 @@ $('.typeahead').each(function applyTypeahead() {
|
|
21222
21222
|
|
21223
21223
|
},{"../../../frontend/themes/gov-uk/client-js":3,"jquery":17,"typeahead-aria":20}],17:[function(require,module,exports){
|
21224
21224
|
/*!
|
21225
|
-
* jQuery JavaScript Library v3.
|
21225
|
+
* jQuery JavaScript Library v3.6.0
|
21226
21226
|
* https://jquery.com/
|
21227
21227
|
*
|
21228
|
+
* Includes Sizzle.js
|
21229
|
+
* https://sizzlejs.com/
|
21230
|
+
*
|
21228
21231
|
* Copyright OpenJS Foundation and other contributors
|
21229
21232
|
* Released under the MIT license
|
21230
21233
|
* https://jquery.org/license
|
21231
21234
|
*
|
21232
|
-
* Date:
|
21235
|
+
* Date: 2021-03-02T17:08Z
|
21233
21236
|
*/
|
21234
21237
|
( function( global, factory ) {
|
21235
21238
|
|
@@ -21243,7 +21246,7 @@ $('.typeahead').each(function applyTypeahead() {
|
|
21243
21246
|
// (such as Node.js), expose a factory as module.exports.
|
21244
21247
|
// This accentuates the need for the creation of a real `window`.
|
21245
21248
|
// e.g. var jQuery = require("jquery")(window);
|
21246
|
-
// See ticket
|
21249
|
+
// See ticket #14549 for more info.
|
21247
21250
|
module.exports = global.document ?
|
21248
21251
|
factory( global, true ) :
|
21249
21252
|
function( w ) {
|
@@ -21370,9 +21373,8 @@ function toType( obj ) {
|
|
21370
21373
|
|
21371
21374
|
|
21372
21375
|
|
21373
|
-
var
|
21374
|
-
|
21375
|
-
rhtmlSuffix = /HTML$/i,
|
21376
|
+
var
|
21377
|
+
version = "3.6.0",
|
21376
21378
|
|
21377
21379
|
// Define a local copy of jQuery
|
21378
21380
|
jQuery = function( selector, context ) {
|
@@ -21618,38 +21620,6 @@ jQuery.extend( {
|
|
21618
21620
|
return obj;
|
21619
21621
|
},
|
21620
21622
|
|
21621
|
-
|
21622
|
-
// Retrieve the text value of an array of DOM nodes
|
21623
|
-
text: function( elem ) {
|
21624
|
-
var node,
|
21625
|
-
ret = "",
|
21626
|
-
i = 0,
|
21627
|
-
nodeType = elem.nodeType;
|
21628
|
-
|
21629
|
-
if ( !nodeType ) {
|
21630
|
-
|
21631
|
-
// If no nodeType, this is expected to be an array
|
21632
|
-
while ( ( node = elem[ i++ ] ) ) {
|
21633
|
-
|
21634
|
-
// Do not traverse comment nodes
|
21635
|
-
ret += jQuery.text( node );
|
21636
|
-
}
|
21637
|
-
}
|
21638
|
-
if ( nodeType === 1 || nodeType === 11 ) {
|
21639
|
-
return elem.textContent;
|
21640
|
-
}
|
21641
|
-
if ( nodeType === 9 ) {
|
21642
|
-
return elem.documentElement.textContent;
|
21643
|
-
}
|
21644
|
-
if ( nodeType === 3 || nodeType === 4 ) {
|
21645
|
-
return elem.nodeValue;
|
21646
|
-
}
|
21647
|
-
|
21648
|
-
// Do not include comment or processing instruction nodes
|
21649
|
-
|
21650
|
-
return ret;
|
21651
|
-
},
|
21652
|
-
|
21653
21623
|
// results is for internal usage only
|
21654
21624
|
makeArray: function( arr, results ) {
|
21655
21625
|
var ret = results || [];
|
@@ -21672,15 +21642,6 @@ jQuery.extend( {
|
|
21672
21642
|
return arr == null ? -1 : indexOf.call( arr, elem, i );
|
21673
21643
|
},
|
21674
21644
|
|
21675
|
-
isXMLDoc: function( elem ) {
|
21676
|
-
var namespace = elem && elem.namespaceURI,
|
21677
|
-
docElem = elem && ( elem.ownerDocument || elem ).documentElement;
|
21678
|
-
|
21679
|
-
// Assume HTML when documentElement doesn't yet exist, such as inside
|
21680
|
-
// document fragments.
|
21681
|
-
return !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || "HTML" );
|
21682
|
-
},
|
21683
|
-
|
21684
21645
|
// Support: Android <=4.0 only, PhantomJS 1 only
|
21685
21646
|
// push.apply(_, arraylike) throws on ancient WebKit
|
21686
21647
|
merge: function( first, second ) {
|
@@ -21782,98 +21743,43 @@ function isArrayLike( obj ) {
|
|
21782
21743
|
return type === "array" || length === 0 ||
|
21783
21744
|
typeof length === "number" && length > 0 && ( length - 1 ) in obj;
|
21784
21745
|
}
|
21785
|
-
|
21786
|
-
|
21787
|
-
|
21788
|
-
|
21789
|
-
|
21790
|
-
|
21791
|
-
|
21792
|
-
|
21793
|
-
|
21794
|
-
|
21795
|
-
|
21796
|
-
|
21797
|
-
|
21798
|
-
var splice = arr.splice;
|
21799
|
-
|
21800
|
-
|
21801
|
-
var whitespace = "[\\x20\\t\\r\\n\\f]";
|
21802
|
-
|
21803
|
-
|
21804
|
-
var rtrimCSS = new RegExp(
|
21805
|
-
"^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$",
|
21806
|
-
"g"
|
21807
|
-
);
|
21808
|
-
|
21809
|
-
|
21810
|
-
|
21811
|
-
|
21812
|
-
// Note: an element does not contain itself
|
21813
|
-
jQuery.contains = function( a, b ) {
|
21814
|
-
var bup = b && b.parentNode;
|
21815
|
-
|
21816
|
-
return a === bup || !!( bup && bup.nodeType === 1 && (
|
21817
|
-
|
21818
|
-
// Support: IE 9 - 11+
|
21819
|
-
// IE doesn't have `contains` on SVG.
|
21820
|
-
a.contains ?
|
21821
|
-
a.contains( bup ) :
|
21822
|
-
a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
|
21823
|
-
) );
|
21824
|
-
};
|
21825
|
-
|
21826
|
-
|
21827
|
-
|
21828
|
-
|
21829
|
-
// CSS string/identifier serialization
|
21830
|
-
// https://drafts.csswg.org/cssom/#common-serializing-idioms
|
21831
|
-
var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;
|
21832
|
-
|
21833
|
-
function fcssescape( ch, asCodePoint ) {
|
21834
|
-
if ( asCodePoint ) {
|
21835
|
-
|
21836
|
-
// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
|
21837
|
-
if ( ch === "\0" ) {
|
21838
|
-
return "\uFFFD";
|
21839
|
-
}
|
21840
|
-
|
21841
|
-
// Control characters and (dependent upon position) numbers get escaped as code points
|
21842
|
-
return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
|
21843
|
-
}
|
21844
|
-
|
21845
|
-
// Other potentially-special ASCII characters get backslash-escaped
|
21846
|
-
return "\\" + ch;
|
21847
|
-
}
|
21848
|
-
|
21849
|
-
jQuery.escapeSelector = function( sel ) {
|
21850
|
-
return ( sel + "" ).replace( rcssescape, fcssescape );
|
21851
|
-
};
|
21852
|
-
|
21853
|
-
|
21854
|
-
|
21855
|
-
|
21856
|
-
var preferredDoc = document,
|
21857
|
-
pushNative = push;
|
21858
|
-
|
21859
|
-
( function() {
|
21860
|
-
|
21746
|
+
var Sizzle =
|
21747
|
+
/*!
|
21748
|
+
* Sizzle CSS Selector Engine v2.3.6
|
21749
|
+
* https://sizzlejs.com/
|
21750
|
+
*
|
21751
|
+
* Copyright JS Foundation and other contributors
|
21752
|
+
* Released under the MIT license
|
21753
|
+
* https://js.foundation/
|
21754
|
+
*
|
21755
|
+
* Date: 2021-02-16
|
21756
|
+
*/
|
21757
|
+
( function( window ) {
|
21861
21758
|
var i,
|
21759
|
+
support,
|
21862
21760
|
Expr,
|
21761
|
+
getText,
|
21762
|
+
isXML,
|
21763
|
+
tokenize,
|
21764
|
+
compile,
|
21765
|
+
select,
|
21863
21766
|
outermostContext,
|
21864
21767
|
sortInput,
|
21865
21768
|
hasDuplicate,
|
21866
|
-
push = pushNative,
|
21867
21769
|
|
21868
21770
|
// Local document vars
|
21771
|
+
setDocument,
|
21869
21772
|
document,
|
21870
|
-
|
21773
|
+
docElem,
|
21871
21774
|
documentIsHTML,
|
21872
21775
|
rbuggyQSA,
|
21776
|
+
rbuggyMatches,
|
21873
21777
|
matches,
|
21778
|
+
contains,
|
21874
21779
|
|
21875
21780
|
// Instance-specific data
|
21876
|
-
expando =
|
21781
|
+
expando = "sizzle" + 1 * new Date(),
|
21782
|
+
preferredDoc = window.document,
|
21877
21783
|
dirruns = 0,
|
21878
21784
|
done = 0,
|
21879
21785
|
classCache = createCache(),
|
@@ -21887,22 +21793,47 @@ var i,
|
|
21887
21793
|
return 0;
|
21888
21794
|
},
|
21889
21795
|
|
21890
|
-
|
21891
|
-
|
21796
|
+
// Instance methods
|
21797
|
+
hasOwn = ( {} ).hasOwnProperty,
|
21798
|
+
arr = [],
|
21799
|
+
pop = arr.pop,
|
21800
|
+
pushNative = arr.push,
|
21801
|
+
push = arr.push,
|
21802
|
+
slice = arr.slice,
|
21803
|
+
|
21804
|
+
// Use a stripped-down indexOf as it's faster than native
|
21805
|
+
// https://jsperf.com/thor-indexof-vs-for/5
|
21806
|
+
indexOf = function( list, elem ) {
|
21807
|
+
var i = 0,
|
21808
|
+
len = list.length;
|
21809
|
+
for ( ; i < len; i++ ) {
|
21810
|
+
if ( list[ i ] === elem ) {
|
21811
|
+
return i;
|
21812
|
+
}
|
21813
|
+
}
|
21814
|
+
return -1;
|
21815
|
+
},
|
21816
|
+
|
21817
|
+
booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" +
|
21818
|
+
"ismap|loop|multiple|open|readonly|required|scoped",
|
21892
21819
|
|
21893
21820
|
// Regular expressions
|
21894
21821
|
|
21822
|
+
// http://www.w3.org/TR/css3-selectors/#whitespace
|
21823
|
+
whitespace = "[\\x20\\t\\r\\n\\f]",
|
21824
|
+
|
21895
21825
|
// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram
|
21896
21826
|
identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace +
|
21897
21827
|
"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",
|
21898
21828
|
|
21899
|
-
// Attribute selectors:
|
21829
|
+
// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
|
21900
21830
|
attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
|
21901
21831
|
|
21902
21832
|
// Operator (capture 2)
|
21903
21833
|
"*([*^$|!~]?=)" + whitespace +
|
21904
21834
|
|
21905
|
-
// "Attribute values must be CSS identifiers [capture 5]
|
21835
|
+
// "Attribute values must be CSS identifiers [capture 5]
|
21836
|
+
// or strings [capture 3 or capture 4]"
|
21906
21837
|
"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" +
|
21907
21838
|
whitespace + "*\\]",
|
21908
21839
|
|
@@ -21921,88 +21852,101 @@ var i,
|
|
21921
21852
|
|
21922
21853
|
// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
|
21923
21854
|
rwhitespace = new RegExp( whitespace + "+", "g" ),
|
21855
|
+
rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" +
|
21856
|
+
whitespace + "+$", "g" ),
|
21924
21857
|
|
21925
21858
|
rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
|
21926
|
-
|
21927
|
-
|
21859
|
+
rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace +
|
21860
|
+
"*" ),
|
21928
21861
|
rdescend = new RegExp( whitespace + "|>" ),
|
21929
21862
|
|
21930
21863
|
rpseudo = new RegExp( pseudos ),
|
21931
21864
|
ridentifier = new RegExp( "^" + identifier + "$" ),
|
21932
21865
|
|
21933
21866
|
matchExpr = {
|
21934
|
-
ID: new RegExp( "^#(" + identifier + ")" ),
|
21935
|
-
CLASS: new RegExp( "^\\.(" + identifier + ")" ),
|
21936
|
-
TAG: new RegExp( "^(" + identifier + "|[*])" ),
|
21937
|
-
ATTR: new RegExp( "^" + attributes ),
|
21938
|
-
PSEUDO: new RegExp( "^" + pseudos ),
|
21939
|
-
CHILD: new RegExp(
|
21940
|
-
"
|
21941
|
-
|
21942
|
-
|
21943
|
-
bool: new RegExp( "^(?:" + booleans + ")$", "i" ),
|
21867
|
+
"ID": new RegExp( "^#(" + identifier + ")" ),
|
21868
|
+
"CLASS": new RegExp( "^\\.(" + identifier + ")" ),
|
21869
|
+
"TAG": new RegExp( "^(" + identifier + "|[*])" ),
|
21870
|
+
"ATTR": new RegExp( "^" + attributes ),
|
21871
|
+
"PSEUDO": new RegExp( "^" + pseudos ),
|
21872
|
+
"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" +
|
21873
|
+
whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" +
|
21874
|
+
whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
|
21875
|
+
"bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
|
21944
21876
|
|
21945
21877
|
// For use in libraries implementing .is()
|
21946
21878
|
// We use this for POS matching in `select`
|
21947
|
-
needsContext: new RegExp( "^" + whitespace +
|
21879
|
+
"needsContext": new RegExp( "^" + whitespace +
|
21948
21880
|
"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace +
|
21949
21881
|
"*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
|
21950
21882
|
},
|
21951
21883
|
|
21884
|
+
rhtml = /HTML$/i,
|
21952
21885
|
rinputs = /^(?:input|select|textarea|button)$/i,
|
21953
21886
|
rheader = /^h\d$/i,
|
21954
21887
|
|
21888
|
+
rnative = /^[^{]+\{\s*\[native \w/,
|
21889
|
+
|
21955
21890
|
// Easily-parseable/retrievable ID or TAG or CLASS selectors
|
21956
21891
|
rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
|
21957
21892
|
|
21958
21893
|
rsibling = /[+~]/,
|
21959
21894
|
|
21960
21895
|
// CSS escapes
|
21961
|
-
//
|
21962
|
-
runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace +
|
21963
|
-
"?|\\\\([^\\r\\n\\f])", "g" ),
|
21896
|
+
// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
|
21897
|
+
runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ),
|
21964
21898
|
funescape = function( escape, nonHex ) {
|
21965
21899
|
var high = "0x" + escape.slice( 1 ) - 0x10000;
|
21966
21900
|
|
21967
|
-
|
21901
|
+
return nonHex ?
|
21968
21902
|
|
21969
21903
|
// Strip the backslash prefix from a non-hex escape sequence
|
21970
|
-
|
21904
|
+
nonHex :
|
21905
|
+
|
21906
|
+
// Replace a hexadecimal escape sequence with the encoded Unicode code point
|
21907
|
+
// Support: IE <=11+
|
21908
|
+
// For values outside the Basic Multilingual Plane (BMP), manually construct a
|
21909
|
+
// surrogate pair
|
21910
|
+
high < 0 ?
|
21911
|
+
String.fromCharCode( high + 0x10000 ) :
|
21912
|
+
String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
|
21913
|
+
},
|
21914
|
+
|
21915
|
+
// CSS string/identifier serialization
|
21916
|
+
// https://drafts.csswg.org/cssom/#common-serializing-idioms
|
21917
|
+
rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
|
21918
|
+
fcssescape = function( ch, asCodePoint ) {
|
21919
|
+
if ( asCodePoint ) {
|
21920
|
+
|
21921
|
+
// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
|
21922
|
+
if ( ch === "\0" ) {
|
21923
|
+
return "\uFFFD";
|
21924
|
+
}
|
21925
|
+
|
21926
|
+
// Control characters and (dependent upon position) numbers get escaped as code points
|
21927
|
+
return ch.slice( 0, -1 ) + "\\" +
|
21928
|
+
ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
|
21971
21929
|
}
|
21972
21930
|
|
21973
|
-
//
|
21974
|
-
|
21975
|
-
// For values outside the Basic Multilingual Plane (BMP), manually construct a
|
21976
|
-
// surrogate pair
|
21977
|
-
return high < 0 ?
|
21978
|
-
String.fromCharCode( high + 0x10000 ) :
|
21979
|
-
String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
|
21931
|
+
// Other potentially-special ASCII characters get backslash-escaped
|
21932
|
+
return "\\" + ch;
|
21980
21933
|
},
|
21981
21934
|
|
21982
|
-
// Used for iframes
|
21983
|
-
//
|
21935
|
+
// Used for iframes
|
21936
|
+
// See setDocument()
|
21984
21937
|
// Removing the function wrapper causes a "Permission Denied"
|
21985
|
-
// error in IE
|
21938
|
+
// error in IE
|
21986
21939
|
unloadHandler = function() {
|
21987
21940
|
setDocument();
|
21988
21941
|
},
|
21989
21942
|
|
21990
21943
|
inDisabledFieldset = addCombinator(
|
21991
21944
|
function( elem ) {
|
21992
|
-
return elem.disabled === true && nodeName(
|
21945
|
+
return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset";
|
21993
21946
|
},
|
21994
21947
|
{ dir: "parentNode", next: "legend" }
|
21995
21948
|
);
|
21996
21949
|
|
21997
|
-
// Support: IE <=9 only
|
21998
|
-
// Accessing document.activeElement can throw unexpectedly
|
21999
|
-
// https://bugs.jquery.com/ticket/13393
|
22000
|
-
function safeActiveElement() {
|
22001
|
-
try {
|
22002
|
-
return document.activeElement;
|
22003
|
-
} catch ( err ) { }
|
22004
|
-
}
|
22005
|
-
|
22006
21950
|
// Optimize for push.apply( _, NodeList )
|
22007
21951
|
try {
|
22008
21952
|
push.apply(
|
@@ -22010,22 +21954,32 @@ try {
|
|
22010
21954
|
preferredDoc.childNodes
|
22011
21955
|
);
|
22012
21956
|
|
22013
|
-
// Support: Android
|
21957
|
+
// Support: Android<4.0
|
22014
21958
|
// Detect silently failing push.apply
|
22015
21959
|
// eslint-disable-next-line no-unused-expressions
|
22016
21960
|
arr[ preferredDoc.childNodes.length ].nodeType;
|
22017
21961
|
} catch ( e ) {
|
22018
|
-
push = {
|
22019
|
-
|
21962
|
+
push = { apply: arr.length ?
|
21963
|
+
|
21964
|
+
// Leverage slice if possible
|
21965
|
+
function( target, els ) {
|
22020
21966
|
pushNative.apply( target, slice.call( els ) );
|
22021
|
-
}
|
22022
|
-
|
22023
|
-
|
21967
|
+
} :
|
21968
|
+
|
21969
|
+
// Support: IE<9
|
21970
|
+
// Otherwise append directly
|
21971
|
+
function( target, els ) {
|
21972
|
+
var j = target.length,
|
21973
|
+
i = 0;
|
21974
|
+
|
21975
|
+
// Can't trust NodeList.length
|
21976
|
+
while ( ( target[ j++ ] = els[ i++ ] ) ) {}
|
21977
|
+
target.length = j - 1;
|
22024
21978
|
}
|
22025
21979
|
};
|
22026
21980
|
}
|
22027
21981
|
|
22028
|
-
function
|
21982
|
+
function Sizzle( selector, context, results, seed ) {
|
22029
21983
|
var m, i, elem, nid, match, groups, newSelector,
|
22030
21984
|
newContext = context && context.ownerDocument,
|
22031
21985
|
|
@@ -22059,10 +22013,11 @@ function find( selector, context, results, seed ) {
|
|
22059
22013
|
if ( nodeType === 9 ) {
|
22060
22014
|
if ( ( elem = context.getElementById( m ) ) ) {
|
22061
22015
|
|
22062
|
-
// Support: IE
|
22016
|
+
// Support: IE, Opera, Webkit
|
22017
|
+
// TODO: identify versions
|
22063
22018
|
// getElementById can match elements by name instead of ID
|
22064
22019
|
if ( elem.id === m ) {
|
22065
|
-
push
|
22020
|
+
results.push( elem );
|
22066
22021
|
return results;
|
22067
22022
|
}
|
22068
22023
|
} else {
|
@@ -22072,13 +22027,14 @@ function find( selector, context, results, seed ) {
|
|
22072
22027
|
// Element context
|
22073
22028
|
} else {
|
22074
22029
|
|
22075
|
-
// Support: IE
|
22030
|
+
// Support: IE, Opera, Webkit
|
22031
|
+
// TODO: identify versions
|
22076
22032
|
// getElementById can match elements by name instead of ID
|
22077
22033
|
if ( newContext && ( elem = newContext.getElementById( m ) ) &&
|
22078
|
-
|
22034
|
+
contains( context, elem ) &&
|
22079
22035
|
elem.id === m ) {
|
22080
22036
|
|
22081
|
-
push
|
22037
|
+
results.push( elem );
|
22082
22038
|
return results;
|
22083
22039
|
}
|
22084
22040
|
}
|
@@ -22089,15 +22045,22 @@ function find( selector, context, results, seed ) {
|
|
22089
22045
|
return results;
|
22090
22046
|
|
22091
22047
|
// Class selector
|
22092
|
-
} else if ( ( m = match[ 3 ] ) &&
|
22048
|
+
} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&
|
22049
|
+
context.getElementsByClassName ) {
|
22050
|
+
|
22093
22051
|
push.apply( results, context.getElementsByClassName( m ) );
|
22094
22052
|
return results;
|
22095
22053
|
}
|
22096
22054
|
}
|
22097
22055
|
|
22098
22056
|
// Take advantage of querySelectorAll
|
22099
|
-
if (
|
22100
|
-
|
22057
|
+
if ( support.qsa &&
|
22058
|
+
!nonnativeSelectorCache[ selector + " " ] &&
|
22059
|
+
( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&
|
22060
|
+
|
22061
|
+
// Support: IE 8 only
|
22062
|
+
// Exclude object elements
|
22063
|
+
( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) {
|
22101
22064
|
|
22102
22065
|
newSelector = selector;
|
22103
22066
|
newContext = context;
|
@@ -22110,7 +22073,7 @@ function find( selector, context, results, seed ) {
|
|
22110
22073
|
// as such selectors are not recognized by querySelectorAll.
|
22111
22074
|
// Thanks to Andrew Dupont for this technique.
|
22112
22075
|
if ( nodeType === 1 &&
|
22113
|
-
( rdescend.test( selector ) ||
|
22076
|
+
( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {
|
22114
22077
|
|
22115
22078
|
// Expand context for sibling selectors
|
22116
22079
|
newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
|
@@ -22118,15 +22081,11 @@ function find( selector, context, results, seed ) {
|
|
22118
22081
|
|
22119
22082
|
// We can use :scope instead of the ID hack if the browser
|
22120
22083
|
// supports it & if we're not changing the context.
|
22121
|
-
|
22122
|
-
// IE/Edge sometimes throw a "Permission denied" error when
|
22123
|
-
// strict-comparing two documents; shallow comparisons work.
|
22124
|
-
// eslint-disable-next-line eqeqeq
|
22125
|
-
if ( newContext != context || !support.scope ) {
|
22084
|
+
if ( newContext !== context || !support.scope ) {
|
22126
22085
|
|
22127
22086
|
// Capture the context ID, setting it first if necessary
|
22128
22087
|
if ( ( nid = context.getAttribute( "id" ) ) ) {
|
22129
|
-
nid =
|
22088
|
+
nid = nid.replace( rcssescape, fcssescape );
|
22130
22089
|
} else {
|
22131
22090
|
context.setAttribute( "id", ( nid = expando ) );
|
22132
22091
|
}
|
@@ -22159,7 +22118,7 @@ function find( selector, context, results, seed ) {
|
|
22159
22118
|
}
|
22160
22119
|
|
22161
22120
|
// All others
|
22162
|
-
return select( selector.replace(
|
22121
|
+
return select( selector.replace( rtrim, "$1" ), context, results, seed );
|
22163
22122
|
}
|
22164
22123
|
|
22165
22124
|
/**
|
@@ -22173,8 +22132,7 @@ function createCache() {
|
|
22173
22132
|
|
22174
22133
|
function cache( key, value ) {
|
22175
22134
|
|
22176
|
-
// Use (key + " ") to avoid collision with native prototype properties
|
22177
|
-
// (see https://github.com/jquery/sizzle/issues/157)
|
22135
|
+
// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
|
22178
22136
|
if ( keys.push( key + " " ) > Expr.cacheLength ) {
|
22179
22137
|
|
22180
22138
|
// Only keep the most recent entries
|
@@ -22186,7 +22144,7 @@ function createCache() {
|
|
22186
22144
|
}
|
22187
22145
|
|
22188
22146
|
/**
|
22189
|
-
* Mark a function for special use by
|
22147
|
+
* Mark a function for special use by Sizzle
|
22190
22148
|
* @param {Function} fn The function to mark
|
22191
22149
|
*/
|
22192
22150
|
function markFunction( fn ) {
|
@@ -22217,13 +22175,56 @@ function assert( fn ) {
|
|
22217
22175
|
}
|
22218
22176
|
}
|
22219
22177
|
|
22178
|
+
/**
|
22179
|
+
* Adds the same handler for all of the specified attrs
|
22180
|
+
* @param {String} attrs Pipe-separated list of attributes
|
22181
|
+
* @param {Function} handler The method that will be applied
|
22182
|
+
*/
|
22183
|
+
function addHandle( attrs, handler ) {
|
22184
|
+
var arr = attrs.split( "|" ),
|
22185
|
+
i = arr.length;
|
22186
|
+
|
22187
|
+
while ( i-- ) {
|
22188
|
+
Expr.attrHandle[ arr[ i ] ] = handler;
|
22189
|
+
}
|
22190
|
+
}
|
22191
|
+
|
22192
|
+
/**
|
22193
|
+
* Checks document order of two siblings
|
22194
|
+
* @param {Element} a
|
22195
|
+
* @param {Element} b
|
22196
|
+
* @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
|
22197
|
+
*/
|
22198
|
+
function siblingCheck( a, b ) {
|
22199
|
+
var cur = b && a,
|
22200
|
+
diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
|
22201
|
+
a.sourceIndex - b.sourceIndex;
|
22202
|
+
|
22203
|
+
// Use IE sourceIndex if available on both nodes
|
22204
|
+
if ( diff ) {
|
22205
|
+
return diff;
|
22206
|
+
}
|
22207
|
+
|
22208
|
+
// Check if b follows a
|
22209
|
+
if ( cur ) {
|
22210
|
+
while ( ( cur = cur.nextSibling ) ) {
|
22211
|
+
if ( cur === b ) {
|
22212
|
+
return -1;
|
22213
|
+
}
|
22214
|
+
}
|
22215
|
+
}
|
22216
|
+
|
22217
|
+
return a ? 1 : -1;
|
22218
|
+
}
|
22219
|
+
|
22220
22220
|
/**
|
22221
22221
|
* Returns a function to use in pseudos for input types
|
22222
22222
|
* @param {String} type
|
22223
22223
|
*/
|
22224
22224
|
function createInputPseudo( type ) {
|
22225
22225
|
return function( elem ) {
|
22226
|
-
|
22226
|
+
var name = elem.nodeName.toLowerCase();
|
22227
|
+
return name === "input" && elem.type === type;
|
22227
22228
|
};
|
22228
22229
|
}
|
22229
22230
|
|
@@ -22233,8 +22234,8 @@ function createInputPseudo( type ) {
|
|
22233
22234
|
*/
|
22234
22235
|
function createButtonPseudo( type ) {
|
22235
22236
|
return function( elem ) {
|
22236
|
-
|
22237
|
-
|
22237
|
+
var name = elem.nodeName.toLowerCase();
|
22238
|
+
return ( name === "input" || name === "button" ) && elem.type === type;
|
22238
22239
|
};
|
22239
22240
|
}
|
22240
22241
|
|
@@ -22270,13 +22271,14 @@ function createDisabledPseudo( disabled ) {
|
|
22270
22271
|
}
|
22271
22272
|
}
|
22272
22273
|
|
22273
|
-
// Support: IE 6 - 11
|
22274
|
+
// Support: IE 6 - 11
|
22274
22275
|
// Use the isDisabled shortcut property to check for disabled fieldset ancestors
|
22275
22276
|
return elem.isDisabled === disabled ||
|
22276
22277
|
|
22277
22278
|
// Where there is no isDisabled, check manually
|
22279
|
+
/* jshint -W018 */
|
22278
22280
|
elem.isDisabled !== !disabled &&
|
22279
|
-
|
22281
|
+
inDisabledFieldset( elem ) === disabled;
|
22280
22282
|
}
|
22281
22283
|
|
22282
22284
|
return elem.disabled === disabled;
|
@@ -22316,7 +22318,7 @@ function createPositionalPseudo( fn ) {
|
|
22316
22318
|
}
|
22317
22319
|
|
22318
22320
|
/**
|
22319
|
-
* Checks a node for validity as a
|
22321
|
+
* Checks a node for validity as a Sizzle context
|
22320
22322
|
* @param {Element|Object=} context
|
22321
22323
|
* @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
|
22322
22324
|
*/
|
@@ -22324,13 +22326,31 @@ function testContext( context ) {
|
|
22324
22326
|
return context && typeof context.getElementsByTagName !== "undefined" && context;
|
22325
22327
|
}
|
22326
22328
|
|
22329
|
+
// Expose support vars for convenience
|
22330
|
+
support = Sizzle.support = {};
|
22331
|
+
|
22332
|
+
/**
|
22333
|
+
* Detects XML nodes
|
22334
|
+
* @param {Element|Object} elem An element or a document
|
22335
|
+
* @returns {Boolean} True iff elem is a non-HTML XML node
|
22336
|
+
*/
|
22337
|
+
isXML = Sizzle.isXML = function( elem ) {
|
22338
|
+
var namespace = elem && elem.namespaceURI,
|
22339
|
+
docElem = elem && ( elem.ownerDocument || elem ).documentElement;
|
22340
|
+
|
22341
|
+
// Support: IE <=8
|
22342
|
+
// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes
|
22343
|
+
// https://bugs.jquery.com/ticket/4833
|
22344
|
+
return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" );
|
22345
|
+
};
|
22346
|
+
|
22327
22347
|
/**
|
22328
22348
|
* Sets document-related variables once based on the current document
|
22329
|
-
* @param {Element|Object} [
|
22349
|
+
* @param {Element|Object} [doc] An element or document object to use to set the document
|
22330
22350
|
* @returns {Object} Returns the current document
|
22331
22351
|
*/
|
22332
|
-
|
22333
|
-
var subWindow,
|
22352
|
+
setDocument = Sizzle.setDocument = function( node ) {
|
22353
|
+
var hasCompare, subWindow,
|
22334
22354
|
doc = node ? node.ownerDocument || node : preferredDoc;
|
22335
22355
|
|
22336
22356
|
// Return early if doc is invalid or already selected
|
@@ -22344,90 +22364,87 @@ function setDocument( node ) {
|
|
22344
22364
|
|
22345
22365
|
// Update global variables
|
22346
22366
|
document = doc;
|
22347
|
-
|
22348
|
-
documentIsHTML = !
|
22349
|
-
|
22350
|
-
// Support: iOS 7 only, IE 9 - 11+
|
22351
|
-
// Older browsers didn't support unprefixed `matches`.
|
22352
|
-
matches = documentElement.matches ||
|
22353
|
-
documentElement.webkitMatchesSelector ||
|
22354
|
-
documentElement.msMatchesSelector;
|
22367
|
+
docElem = document.documentElement;
|
22368
|
+
documentIsHTML = !isXML( document );
|
22355
22369
|
|
22356
22370
|
// Support: IE 9 - 11+, Edge 12 - 18+
|
22357
|
-
// Accessing iframe documents after unload throws "permission denied" errors
|
22358
|
-
//
|
22359
|
-
//
|
22360
|
-
//
|
22361
|
-
|
22362
|
-
|
22363
|
-
// Support: IE 11+, Edge 17 - 18+
|
22364
|
-
// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
|
22365
|
-
// two documents; shallow comparisons work.
|
22366
|
-
// eslint-disable-next-line eqeqeq
|
22367
|
-
preferredDoc != document &&
|
22371
|
+
// Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
|
22372
|
+
// Support: IE 11+, Edge 17 - 18+
|
22373
|
+
// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
|
22374
|
+
// two documents; shallow comparisons work.
|
22375
|
+
// eslint-disable-next-line eqeqeq
|
22376
|
+
if ( preferredDoc != document &&
|
22368
22377
|
( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {
|
22369
22378
|
|
22370
|
-
// Support: IE
|
22371
|
-
subWindow.addEventListener
|
22379
|
+
// Support: IE 11, Edge
|
22380
|
+
if ( subWindow.addEventListener ) {
|
22381
|
+
subWindow.addEventListener( "unload", unloadHandler, false );
|
22382
|
+
|
22383
|
+
// Support: IE 9 - 10 only
|
22384
|
+
} else if ( subWindow.attachEvent ) {
|
22385
|
+
subWindow.attachEvent( "onunload", unloadHandler );
|
22386
|
+
}
|
22372
22387
|
}
|
22373
22388
|
|
22374
|
-
// Support: IE
|
22375
|
-
//
|
22376
|
-
//
|
22377
|
-
//
|
22378
|
-
|
22379
|
-
|
22380
|
-
|
22381
|
-
|
22389
|
+
// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,
|
22390
|
+
// Safari 4 - 5 only, Opera <=11.6 - 12.x only
|
22391
|
+
// IE/Edge & older browsers don't support the :scope pseudo-class.
|
22392
|
+
// Support: Safari 6.0 only
|
22393
|
+
// Safari 6.0 supports :scope but it's an alias of :root there.
|
22394
|
+
support.scope = assert( function( el ) {
|
22395
|
+
docElem.appendChild( el ).appendChild( document.createElement( "div" ) );
|
22396
|
+
return typeof el.querySelectorAll !== "undefined" &&
|
22397
|
+
!el.querySelectorAll( ":scope fieldset div" ).length;
|
22382
22398
|
} );
|
22383
22399
|
|
22384
|
-
|
22385
|
-
|
22386
|
-
|
22387
|
-
|
22388
|
-
|
22400
|
+
/* Attributes
|
22401
|
+
---------------------------------------------------------------------- */
|
22402
|
+
|
22403
|
+
// Support: IE<8
|
22404
|
+
// Verify that getAttribute really returns attributes and not properties
|
22405
|
+
// (excepting IE8 booleans)
|
22406
|
+
support.attributes = assert( function( el ) {
|
22407
|
+
el.className = "i";
|
22408
|
+
return !el.getAttribute( "className" );
|
22389
22409
|
} );
|
22390
22410
|
|
22391
|
-
|
22392
|
-
|
22393
|
-
|
22394
|
-
|
22411
|
+
/* getElement(s)By*
|
22412
|
+
---------------------------------------------------------------------- */
|
22413
|
+
|
22414
|
+
// Check if getElementsByTagName("*") returns only elements
|
22415
|
+
support.getElementsByTagName = assert( function( el ) {
|
22416
|
+
el.appendChild( document.createComment( "" ) );
|
22417
|
+
return !el.getElementsByTagName( "*" ).length;
|
22395
22418
|
} );
|
22396
22419
|
|
22397
|
-
// Support:
|
22398
|
-
|
22399
|
-
|
22400
|
-
//
|
22401
|
-
//
|
22402
|
-
//
|
22403
|
-
//
|
22404
|
-
|
22405
|
-
|
22406
|
-
|
22407
|
-
try {
|
22408
|
-
document.querySelector( ":has(*,:jqfake)" );
|
22409
|
-
return false;
|
22410
|
-
} catch ( e ) {
|
22411
|
-
return true;
|
22412
|
-
}
|
22420
|
+
// Support: IE<9
|
22421
|
+
support.getElementsByClassName = rnative.test( document.getElementsByClassName );
|
22422
|
+
|
22423
|
+
// Support: IE<10
|
22424
|
+
// Check if getElementById returns elements by name
|
22425
|
+
// The broken getElementById methods don't pick up programmatically-set names,
|
22426
|
+
// so use a roundabout getElementsByName test
|
22427
|
+
support.getById = assert( function( el ) {
|
22428
|
+
docElem.appendChild( el ).id = expando;
|
22429
|
+
return !document.getElementsByName || !document.getElementsByName( expando ).length;
|
22413
22430
|
} );
|
22414
22431
|
|
22415
22432
|
// ID filter and find
|
22416
22433
|
if ( support.getById ) {
|
22417
|
-
Expr.filter
|
22434
|
+
Expr.filter[ "ID" ] = function( id ) {
|
22418
22435
|
var attrId = id.replace( runescape, funescape );
|
22419
22436
|
return function( elem ) {
|
22420
22437
|
return elem.getAttribute( "id" ) === attrId;
|
22421
22438
|
};
|
22422
22439
|
};
|
22423
|
-
Expr.find
|
22440
|
+
Expr.find[ "ID" ] = function( id, context ) {
|
22424
22441
|
if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
|
22425
22442
|
var elem = context.getElementById( id );
|
22426
22443
|
return elem ? [ elem ] : [];
|
22427
22444
|
}
|
22428
22445
|
};
|
22429
22446
|
} else {
|
22430
|
-
Expr.filter
|
22447
|
+
Expr.filter[ "ID" ] = function( id ) {
|
22431
22448
|
var attrId = id.replace( runescape, funescape );
|
22432
22449
|
return function( elem ) {
|
22433
22450
|
var node = typeof elem.getAttributeNode !== "undefined" &&
|
@@ -22438,7 +22455,7 @@ function setDocument( node ) {
|
|
22438
22455
|
|
22439
22456
|
// Support: IE 6 - 7 only
|
22440
22457
|
// getElementById is not reliable as a find shortcut
|
22441
|
-
Expr.find
|
22458
|
+
Expr.find[ "ID" ] = function( id, context ) {
|
22442
22459
|
if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
|
22443
22460
|
var node, i, elems,
|
22444
22461
|
elem = context.getElementById( id );
|
@@ -22468,18 +22485,40 @@ function setDocument( node ) {
|
|
22468
22485
|
}
|
22469
22486
|
|
22470
22487
|
// Tag
|
22471
|
-
Expr.find
|
22472
|
-
|
22473
|
-
|
22488
|
+
Expr.find[ "TAG" ] = support.getElementsByTagName ?
|
22489
|
+
function( tag, context ) {
|
22490
|
+
if ( typeof context.getElementsByTagName !== "undefined" ) {
|
22491
|
+
return context.getElementsByTagName( tag );
|
22492
|
+
|
22493
|
+
// DocumentFragment nodes don't have gEBTN
|
22494
|
+
} else if ( support.qsa ) {
|
22495
|
+
return context.querySelectorAll( tag );
|
22496
|
+
}
|
22497
|
+
} :
|
22474
22498
|
|
22475
|
-
|
22476
|
-
|
22477
|
-
|
22478
|
-
|
22479
|
-
|
22499
|
+
function( tag, context ) {
|
22500
|
+
var elem,
|
22501
|
+
tmp = [],
|
22502
|
+
i = 0,
|
22503
|
+
|
22504
|
+
// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
|
22505
|
+
results = context.getElementsByTagName( tag );
|
22506
|
+
|
22507
|
+
// Filter out possible comments
|
22508
|
+
if ( tag === "*" ) {
|
22509
|
+
while ( ( elem = results[ i++ ] ) ) {
|
22510
|
+
if ( elem.nodeType === 1 ) {
|
22511
|
+
tmp.push( elem );
|
22512
|
+
}
|
22513
|
+
}
|
22514
|
+
|
22515
|
+
return tmp;
|
22516
|
+
}
|
22517
|
+
return results;
|
22518
|
+
};
|
22480
22519
|
|
22481
22520
|
// Class
|
22482
|
-
Expr.find
|
22521
|
+
Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) {
|
22483
22522
|
if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
|
22484
22523
|
return context.getElementsByClassName( className );
|
22485
22524
|
}
|
@@ -22490,94 +22529,177 @@ function setDocument( node ) {
|
|
22490
22529
|
|
22491
22530
|
// QSA and matchesSelector support
|
22492
22531
|
|
22532
|
+
// matchesSelector(:active) reports false when true (IE9/Opera 11.5)
|
22533
|
+
rbuggyMatches = [];
|
22534
|
+
|
22535
|
+
// qSa(:focus) reports false when true (Chrome 21)
|
22536
|
+
// We allow this because of a bug in IE8/9 that throws an error
|
22537
|
+
// whenever `document.activeElement` is accessed on an iframe
|
22538
|
+
// So, we allow :focus to pass through QSA all the time to avoid the IE error
|
22539
|
+
// See https://bugs.jquery.com/ticket/13378
|
22493
22540
|
rbuggyQSA = [];
|
22494
22541
|
|
22495
|
-
|
22496
|
-
|
22497
|
-
|
22542
|
+
if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {
|
22543
|
+
|
22544
|
+
// Build QSA regex
|
22545
|
+
// Regex strategy adopted from Diego Perini
|
22546
|
+
assert( function( el ) {
|
22547
|
+
|
22548
|
+
var input;
|
22549
|
+
|
22550
|
+
// Select is set to empty string on purpose
|
22551
|
+
// This is to test IE's treatment of not explicitly
|
22552
|
+
// setting a boolean content attribute,
|
22553
|
+
// since its presence should be enough
|
22554
|
+
// https://bugs.jquery.com/ticket/12359
|
22555
|
+
docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" +
|
22556
|
+
"<select id='" + expando + "-\r\\' msallowcapture=''>" +
|
22557
|
+
"<option selected=''></option></select>";
|
22558
|
+
|
22559
|
+
// Support: IE8, Opera 11-12.16
|
22560
|
+
// Nothing should be selected when empty strings follow ^= or $= or *=
|
22561
|
+
// The test attribute must be unknown in Opera but "safe" for WinRT
|
22562
|
+
// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
|
22563
|
+
if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) {
|
22564
|
+
rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
|
22565
|
+
}
|
22566
|
+
|
22567
|
+
// Support: IE8
|
22568
|
+
// Boolean attributes and "value" are not treated correctly
|
22569
|
+
if ( !el.querySelectorAll( "[selected]" ).length ) {
|
22570
|
+
rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
|
22571
|
+
}
|
22572
|
+
|
22573
|
+
// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
|
22574
|
+
if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
|
22575
|
+
rbuggyQSA.push( "~=" );
|
22576
|
+
}
|
22498
22577
|
|
22499
|
-
|
22578
|
+
// Support: IE 11+, Edge 15 - 18+
|
22579
|
+
// IE 11/Edge don't find elements on a `[name='']` query in some cases.
|
22580
|
+
// Adding a temporary attribute to the document before the selection works
|
22581
|
+
// around the issue.
|
22582
|
+
// Interestingly, IE 10 & older don't seem to have the issue.
|
22583
|
+
input = document.createElement( "input" );
|
22584
|
+
input.setAttribute( "name", "" );
|
22585
|
+
el.appendChild( input );
|
22586
|
+
if ( !el.querySelectorAll( "[name='']" ).length ) {
|
22587
|
+
rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" +
|
22588
|
+
whitespace + "*(?:''|\"\")" );
|
22589
|
+
}
|
22500
22590
|
|
22501
|
-
|
22502
|
-
|
22503
|
-
|
22504
|
-
"
|
22591
|
+
// Webkit/Opera - :checked should return selected option elements
|
22592
|
+
// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
|
22593
|
+
// IE8 throws error here and will not see later tests
|
22594
|
+
if ( !el.querySelectorAll( ":checked" ).length ) {
|
22595
|
+
rbuggyQSA.push( ":checked" );
|
22596
|
+
}
|
22505
22597
|
|
22506
|
-
|
22507
|
-
|
22508
|
-
|
22509
|
-
|
22510
|
-
|
22598
|
+
// Support: Safari 8+, iOS 8+
|
22599
|
+
// https://bugs.webkit.org/show_bug.cgi?id=136851
|
22600
|
+
// In-page `selector#id sibling-combinator selector` fails
|
22601
|
+
if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
|
22602
|
+
rbuggyQSA.push( ".#.+[+~]" );
|
22603
|
+
}
|
22511
22604
|
|
22512
|
-
|
22513
|
-
|
22514
|
-
|
22515
|
-
|
22605
|
+
// Support: Firefox <=3.6 - 5 only
|
22606
|
+
// Old Firefox doesn't throw on a badly-escaped identifier.
|
22607
|
+
el.querySelectorAll( "\\\f" );
|
22608
|
+
rbuggyQSA.push( "[\\r\\n\\f]" );
|
22609
|
+
} );
|
22516
22610
|
|
22517
|
-
|
22518
|
-
|
22519
|
-
|
22520
|
-
if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
|
22521
|
-
rbuggyQSA.push( ".#.+[+~]" );
|
22522
|
-
}
|
22611
|
+
assert( function( el ) {
|
22612
|
+
el.innerHTML = "<a href='' disabled='disabled'></a>" +
|
22613
|
+
"<select disabled='disabled'><option/></select>";
|
22523
22614
|
|
22524
|
-
|
22525
|
-
|
22526
|
-
|
22527
|
-
|
22528
|
-
|
22529
|
-
rbuggyQSA.push( ":checked" );
|
22530
|
-
}
|
22615
|
+
// Support: Windows 8 Native Apps
|
22616
|
+
// The type and name attributes are restricted during .innerHTML assignment
|
22617
|
+
var input = document.createElement( "input" );
|
22618
|
+
input.setAttribute( "type", "hidden" );
|
22619
|
+
el.appendChild( input ).setAttribute( "name", "D" );
|
22531
22620
|
|
22532
|
-
|
22533
|
-
|
22534
|
-
|
22535
|
-
|
22536
|
-
|
22537
|
-
|
22538
|
-
// Support: IE 9 - 11+
|
22539
|
-
// IE's :disabled selector does not pick up the children of disabled fieldsets
|
22540
|
-
// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+
|
22541
|
-
// In some of the document kinds, these selectors wouldn't work natively.
|
22542
|
-
// This is probably OK but for backwards compatibility we want to maintain
|
22543
|
-
// handling them through jQuery traversal in jQuery 3.x.
|
22544
|
-
documentElement.appendChild( el ).disabled = true;
|
22545
|
-
if ( el.querySelectorAll( ":disabled" ).length !== 2 ) {
|
22546
|
-
rbuggyQSA.push( ":enabled", ":disabled" );
|
22547
|
-
}
|
22548
|
-
|
22549
|
-
// Support: IE 11+, Edge 15 - 18+
|
22550
|
-
// IE 11/Edge don't find elements on a `[name='']` query in some cases.
|
22551
|
-
// Adding a temporary attribute to the document before the selection works
|
22552
|
-
// around the issue.
|
22553
|
-
// Interestingly, IE 10 & older don't seem to have the issue.
|
22554
|
-
input = document.createElement( "input" );
|
22555
|
-
input.setAttribute( "name", "" );
|
22556
|
-
el.appendChild( input );
|
22557
|
-
if ( !el.querySelectorAll( "[name='']" ).length ) {
|
22558
|
-
rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" +
|
22559
|
-
whitespace + "*(?:''|\"\")" );
|
22560
|
-
}
|
22561
|
-
} );
|
22621
|
+
// Support: IE8
|
22622
|
+
// Enforce case-sensitivity of name attribute
|
22623
|
+
if ( el.querySelectorAll( "[name=d]" ).length ) {
|
22624
|
+
rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
|
22625
|
+
}
|
22562
22626
|
|
22563
|
-
|
22627
|
+
// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
|
22628
|
+
// IE8 throws error here and will not see later tests
|
22629
|
+
if ( el.querySelectorAll( ":enabled" ).length !== 2 ) {
|
22630
|
+
rbuggyQSA.push( ":enabled", ":disabled" );
|
22631
|
+
}
|
22564
22632
|
|
22565
|
-
|
22566
|
-
|
22567
|
-
|
22568
|
-
|
22569
|
-
|
22570
|
-
|
22571
|
-
|
22633
|
+
// Support: IE9-11+
|
22634
|
+
// IE's :disabled selector does not pick up the children of disabled fieldsets
|
22635
|
+
docElem.appendChild( el ).disabled = true;
|
22636
|
+
if ( el.querySelectorAll( ":disabled" ).length !== 2 ) {
|
22637
|
+
rbuggyQSA.push( ":enabled", ":disabled" );
|
22638
|
+
}
|
22639
|
+
|
22640
|
+
// Support: Opera 10 - 11 only
|
22641
|
+
// Opera 10-11 does not throw on post-comma invalid pseudos
|
22642
|
+
el.querySelectorAll( "*,:x" );
|
22643
|
+
rbuggyQSA.push( ",.*:" );
|
22644
|
+
} );
|
22645
|
+
}
|
22646
|
+
|
22647
|
+
if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||
|
22648
|
+
docElem.webkitMatchesSelector ||
|
22649
|
+
docElem.mozMatchesSelector ||
|
22650
|
+
docElem.oMatchesSelector ||
|
22651
|
+
docElem.msMatchesSelector ) ) ) ) {
|
22652
|
+
|
22653
|
+
assert( function( el ) {
|
22654
|
+
|
22655
|
+
// Check to see if it's possible to do matchesSelector
|
22656
|
+
// on a disconnected node (IE 9)
|
22657
|
+
support.disconnectedMatch = matches.call( el, "*" );
|
22658
|
+
|
22659
|
+
// This should fail with an exception
|
22660
|
+
// Gecko does not error, returns false instead
|
22661
|
+
matches.call( el, "[s!='']:x" );
|
22662
|
+
rbuggyMatches.push( "!=", pseudos );
|
22663
|
+
} );
|
22572
22664
|
}
|
22573
22665
|
|
22574
22666
|
rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) );
|
22667
|
+
rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) );
|
22668
|
+
|
22669
|
+
/* Contains
|
22670
|
+
---------------------------------------------------------------------- */
|
22671
|
+
hasCompare = rnative.test( docElem.compareDocumentPosition );
|
22672
|
+
|
22673
|
+
// Element contains another
|
22674
|
+
// Purposefully self-exclusive
|
22675
|
+
// As in, an element does not contain itself
|
22676
|
+
contains = hasCompare || rnative.test( docElem.contains ) ?
|
22677
|
+
function( a, b ) {
|
22678
|
+
var adown = a.nodeType === 9 ? a.documentElement : a,
|
22679
|
+
bup = b && b.parentNode;
|
22680
|
+
return a === bup || !!( bup && bup.nodeType === 1 && (
|
22681
|
+
adown.contains ?
|
22682
|
+
adown.contains( bup ) :
|
22683
|
+
a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
|
22684
|
+
) );
|
22685
|
+
} :
|
22686
|
+
function( a, b ) {
|
22687
|
+
if ( b ) {
|
22688
|
+
while ( ( b = b.parentNode ) ) {
|
22689
|
+
if ( b === a ) {
|
22690
|
+
return true;
|
22691
|
+
}
|
22692
|
+
}
|
22693
|
+
}
|
22694
|
+
return false;
|
22695
|
+
};
|
22575
22696
|
|
22576
22697
|
/* Sorting
|
22577
22698
|
---------------------------------------------------------------------- */
|
22578
22699
|
|
22579
22700
|
// Document order sorting
|
22580
|
-
sortOrder =
|
22701
|
+
sortOrder = hasCompare ?
|
22702
|
+
function( a, b ) {
|
22581
22703
|
|
22582
22704
|
// Flag for duplicate removal
|
22583
22705
|
if ( a === b ) {
|
@@ -22611,8 +22733,8 @@ function setDocument( node ) {
|
|
22611
22733
|
// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
|
22612
22734
|
// two documents; shallow comparisons work.
|
22613
22735
|
// eslint-disable-next-line eqeqeq
|
22614
|
-
if ( a
|
22615
|
-
|
22736
|
+
if ( a == document || a.ownerDocument == preferredDoc &&
|
22737
|
+
contains( preferredDoc, a ) ) {
|
22616
22738
|
return -1;
|
22617
22739
|
}
|
22618
22740
|
|
@@ -22620,33 +22742,100 @@ function setDocument( node ) {
|
|
22620
22742
|
// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
|
22621
22743
|
// two documents; shallow comparisons work.
|
22622
22744
|
// eslint-disable-next-line eqeqeq
|
22623
|
-
if ( b
|
22624
|
-
|
22745
|
+
if ( b == document || b.ownerDocument == preferredDoc &&
|
22746
|
+
contains( preferredDoc, b ) ) {
|
22625
22747
|
return 1;
|
22626
22748
|
}
|
22627
22749
|
|
22628
22750
|
// Maintain original order
|
22629
22751
|
return sortInput ?
|
22630
|
-
( indexOf
|
22752
|
+
( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
|
22631
22753
|
0;
|
22632
22754
|
}
|
22633
22755
|
|
22634
22756
|
return compare & 4 ? -1 : 1;
|
22757
|
+
} :
|
22758
|
+
function( a, b ) {
|
22759
|
+
|
22760
|
+
// Exit early if the nodes are identical
|
22761
|
+
if ( a === b ) {
|
22762
|
+
hasDuplicate = true;
|
22763
|
+
return 0;
|
22764
|
+
}
|
22765
|
+
|
22766
|
+
var cur,
|
22767
|
+
i = 0,
|
22768
|
+
aup = a.parentNode,
|
22769
|
+
bup = b.parentNode,
|
22770
|
+
ap = [ a ],
|
22771
|
+
bp = [ b ];
|
22772
|
+
|
22773
|
+
// Parentless nodes are either documents or disconnected
|
22774
|
+
if ( !aup || !bup ) {
|
22775
|
+
|
22776
|
+
// Support: IE 11+, Edge 17 - 18+
|
22777
|
+
// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
|
22778
|
+
// two documents; shallow comparisons work.
|
22779
|
+
/* eslint-disable eqeqeq */
|
22780
|
+
return a == document ? -1 :
|
22781
|
+
b == document ? 1 :
|
22782
|
+
/* eslint-enable eqeqeq */
|
22783
|
+
aup ? -1 :
|
22784
|
+
bup ? 1 :
|
22785
|
+
sortInput ?
|
22786
|
+
( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
|
22787
|
+
0;
|
22788
|
+
|
22789
|
+
// If the nodes are siblings, we can do a quick check
|
22790
|
+
} else if ( aup === bup ) {
|
22791
|
+
return siblingCheck( a, b );
|
22792
|
+
}
|
22793
|
+
|
22794
|
+
// Otherwise we need full lists of their ancestors for comparison
|
22795
|
+
cur = a;
|
22796
|
+
while ( ( cur = cur.parentNode ) ) {
|
22797
|
+
ap.unshift( cur );
|
22798
|
+
}
|
22799
|
+
cur = b;
|
22800
|
+
while ( ( cur = cur.parentNode ) ) {
|
22801
|
+
bp.unshift( cur );
|
22802
|
+
}
|
22803
|
+
|
22804
|
+
// Walk down the tree looking for a discrepancy
|
22805
|
+
while ( ap[ i ] === bp[ i ] ) {
|
22806
|
+
i++;
|
22807
|
+
}
|
22808
|
+
|
22809
|
+
return i ?
|
22810
|
+
|
22811
|
+
// Do a sibling check if the nodes have a common ancestor
|
22812
|
+
siblingCheck( ap[ i ], bp[ i ] ) :
|
22813
|
+
|
22814
|
+
// Otherwise nodes in our document sort first
|
22815
|
+
// Support: IE 11+, Edge 17 - 18+
|
22816
|
+
// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
|
22817
|
+
// two documents; shallow comparisons work.
|
22818
|
+
/* eslint-disable eqeqeq */
|
22819
|
+
ap[ i ] == preferredDoc ? -1 :
|
22820
|
+
bp[ i ] == preferredDoc ? 1 :
|
22821
|
+
/* eslint-enable eqeqeq */
|
22822
|
+
0;
|
22635
22823
|
};
|
22636
22824
|
|
22637
22825
|
return document;
|
22638
|
-
}
|
22826
|
+
};
|
22639
22827
|
|
22640
|
-
|
22641
|
-
return
|
22828
|
+
Sizzle.matches = function( expr, elements ) {
|
22829
|
+
return Sizzle( expr, null, null, elements );
|
22642
22830
|
};
|
22643
22831
|
|
22644
|
-
|
22832
|
+
Sizzle.matchesSelector = function( elem, expr ) {
|
22645
22833
|
setDocument( elem );
|
22646
22834
|
|
22647
|
-
if ( documentIsHTML &&
|
22835
|
+
if ( support.matchesSelector && documentIsHTML &&
|
22648
22836
|
!nonnativeSelectorCache[ expr + " " ] &&
|
22649
|
-
( !
|
22837
|
+
( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
|
22838
|
+
( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
|
22650
22839
|
|
22651
22840
|
try {
|
22652
22841
|
var ret = matches.call( elem, expr );
|
@@ -22654,9 +22843,9 @@ find.matchesSelector = function( elem, expr ) {
|
|
22654
22843
|
// IE 9's matchesSelector returns false on disconnected nodes
|
22655
22844
|
if ( ret || support.disconnectedMatch ||
|
22656
22845
|
|
22657
|
-
|
22658
|
-
|
22659
|
-
|
22846
|
+
// As well, disconnected nodes are said to be in a document
|
22847
|
+
// fragment in IE 9
|
22848
|
+
elem.document && elem.document.nodeType !== 11 ) {
|
22660
22849
|
return ret;
|
22661
22850
|
}
|
22662
22851
|
} catch ( e ) {
|
@@ -22664,10 +22853,10 @@ find.matchesSelector = function( elem, expr ) {
|
|
22664
22853
|
}
|
22665
22854
|
}
|
22666
22855
|
|
22667
|
-
return
|
22856
|
+
return Sizzle( expr, document, null, [ elem ] ).length > 0;
|
22668
22857
|
};
|
22669
22858
|
|
22670
|
-
|
22859
|
+
Sizzle.contains = function( context, elem ) {
|
22671
22860
|
|
22672
22861
|
// Set document vars if needed
|
22673
22862
|
// Support: IE 11+, Edge 17 - 18+
|
@@ -22677,11 +22866,10 @@ find.contains = function( context, elem ) {
|
|
22677
22866
|
if ( ( context.ownerDocument || context ) != document ) {
|
22678
22867
|
setDocument( context );
|
22679
22868
|
}
|
22680
|
-
return
|
22869
|
+
return contains( context, elem );
|
22681
22870
|
};
|
22682
22871
|
|
22683
|
-
|
22684
|
-
find.attr = function( elem, name ) {
|
22872
|
+
Sizzle.attr = function( elem, name ) {
|
22685
22873
|
|
22686
22874
|
// Set document vars if needed
|
22687
22875
|
// Support: IE 11+, Edge 17 - 18+
|
@@ -22694,19 +22882,25 @@ find.attr = function( elem, name ) {
|
|
22694
22882
|
|
22695
22883
|
var fn = Expr.attrHandle[ name.toLowerCase() ],
|
22696
22884
|
|
22697
|
-
// Don't get fooled by Object.prototype properties (
|
22885
|
+
// Don't get fooled by Object.prototype properties (jQuery #13807)
|
22698
22886
|
val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
|
22699
22887
|
fn( elem, name, !documentIsHTML ) :
|
22700
22888
|
undefined;
|
22701
22889
|
|
22702
|
-
|
22703
|
-
|
22704
|
-
|
22890
|
+
return val !== undefined ?
|
22891
|
+
val :
|
22892
|
+
support.attributes || !documentIsHTML ?
|
22893
|
+
elem.getAttribute( name ) :
|
22894
|
+
( val = elem.getAttributeNode( name ) ) && val.specified ?
|
22895
|
+
val.value :
|
22896
|
+
null;
|
22897
|
+
};
|
22705
22898
|
|
22706
|
-
|
22899
|
+
Sizzle.escape = function( sel ) {
|
22900
|
+
return ( sel + "" ).replace( rcssescape, fcssescape );
|
22707
22901
|
};
|
22708
22902
|
|
22709
|
-
|
22903
|
+
Sizzle.error = function( msg ) {
|
22710
22904
|
throw new Error( "Syntax error, unrecognized expression: " + msg );
|
22711
22905
|
};
|
22712
22906
|
|
@@ -22714,20 +22908,16 @@ find.error = function( msg ) {
|
|
22714
22908
|
* Document sorting and removing duplicates
|
22715
22909
|
* @param {ArrayLike} results
|
22716
22910
|
*/
|
22717
|
-
|
22911
|
+
Sizzle.uniqueSort = function( results ) {
|
22718
22912
|
var elem,
|
22719
22913
|
duplicates = [],
|
22720
22914
|
j = 0,
|
22721
22915
|
i = 0;
|
22722
22916
|
|
22723
22917
|
// Unless we *know* we can detect duplicates, assume their presence
|
22724
|
-
|
22725
|
-
|
22726
|
-
|
22727
|
-
// depend on duplicate detection in all browsers without a stable sort.
|
22728
|
-
hasDuplicate = !support.sortStable;
|
22729
|
-
sortInput = !support.sortStable && slice.call( results, 0 );
|
22730
|
-
sort.call( results, sortOrder );
|
22918
|
+
hasDuplicate = !support.detectDuplicates;
|
22919
|
+
sortInput = !support.sortStable && results.slice( 0 );
|
22920
|
+
results.sort( sortOrder );
|
22731
22921
|
|
22732
22922
|
if ( hasDuplicate ) {
|
22733
22923
|
while ( ( elem = results[ i++ ] ) ) {
|
@@ -22736,7 +22926,7 @@ jQuery.uniqueSort = function( results ) {
|
|
22736
22926
|
}
|
22737
22927
|
}
|
22738
22928
|
while ( j-- ) {
|
22739
|
-
splice
|
22929
|
+
results.splice( duplicates[ j ], 1 );
|
22740
22930
|
}
|
22741
22931
|
}
|
22742
22932
|
|
@@ -22747,11 +22937,47 @@ jQuery.uniqueSort = function( results ) {
|
|
22747
22937
|
return results;
|
22748
22938
|
};
|
22749
22939
|
|
22750
|
-
|
22751
|
-
|
22940
|
+
/**
|
22941
|
+
* Utility function for retrieving the text value of an array of DOM nodes
|
22942
|
+
* @param {Array|Element} elem
|
22943
|
+
*/
|
22944
|
+
getText = Sizzle.getText = function( elem ) {
|
22945
|
+
var node,
|
22946
|
+
ret = "",
|
22947
|
+
i = 0,
|
22948
|
+
nodeType = elem.nodeType;
|
22949
|
+
|
22950
|
+
if ( !nodeType ) {
|
22951
|
+
|
22952
|
+
// If no nodeType, this is expected to be an array
|
22953
|
+
while ( ( node = elem[ i++ ] ) ) {
|
22954
|
+
|
22955
|
+
// Do not traverse comment nodes
|
22956
|
+
ret += getText( node );
|
22957
|
+
}
|
22958
|
+
} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
|
22959
|
+
|
22960
|
+
// Use textContent for elements
|
22961
|
+
// innerText usage removed for consistency of new lines (jQuery #11153)
|
22962
|
+
if ( typeof elem.textContent === "string" ) {
|
22963
|
+
return elem.textContent;
|
22964
|
+
} else {
|
22965
|
+
|
22966
|
+
// Traverse its children
|
22967
|
+
for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
|
22968
|
+
ret += getText( elem );
|
22969
|
+
}
|
22970
|
+
}
|
22971
|
+
} else if ( nodeType === 3 || nodeType === 4 ) {
|
22972
|
+
return elem.nodeValue;
|
22973
|
+
}
|
22974
|
+
|
22975
|
+
// Do not include comment or processing instruction nodes
|
22976
|
+
|
22977
|
+
return ret;
|
22752
22978
|
};
|
22753
22979
|
|
22754
|
-
Expr =
|
22980
|
+
Expr = Sizzle.selectors = {
|
22755
22981
|
|
22756
22982
|
// Can be adjusted by the user
|
22757
22983
|
cacheLength: 50,
|
@@ -22772,12 +22998,12 @@ Expr = jQuery.expr = {
|
|
22772
22998
|
},
|
22773
22999
|
|
22774
23000
|
preFilter: {
|
22775
|
-
ATTR: function( match ) {
|
23001
|
+
"ATTR": function( match ) {
|
22776
23002
|
match[ 1 ] = match[ 1 ].replace( runescape, funescape );
|
22777
23003
|
|
22778
23004
|
// Move the given value to match[3] whether quoted or unquoted
|
22779
|
-
match[ 3 ] = ( match[ 3 ] || match[ 4 ] ||
|
22780
|
-
.replace( runescape, funescape );
|
23005
|
+
match[ 3 ] = ( match[ 3 ] || match[ 4 ] ||
|
23006
|
+
match[ 5 ] || "" ).replace( runescape, funescape );
|
22781
23007
|
|
22782
23008
|
if ( match[ 2 ] === "~=" ) {
|
22783
23009
|
match[ 3 ] = " " + match[ 3 ] + " ";
|
@@ -22786,7 +23012,7 @@ Expr = jQuery.expr = {
|
|
22786
23012
|
return match.slice( 0, 4 );
|
22787
23013
|
},
|
22788
23014
|
|
22789
|
-
CHILD: function( match ) {
|
23015
|
+
"CHILD": function( match ) {
|
22790
23016
|
|
22791
23017
|
/* matches from matchExpr["CHILD"]
|
22792
23018
|
1 type (only|nth|...)
|
@@ -22804,30 +23030,29 @@ Expr = jQuery.expr = {
|
|
22804
23030
|
|
22805
23031
|
// nth-* requires argument
|
22806
23032
|
if ( !match[ 3 ] ) {
|
22807
|
-
|
23033
|
+
Sizzle.error( match[ 0 ] );
|
22808
23034
|
}
|
22809
23035
|
|
22810
23036
|
// numeric x and y parameters for Expr.filter.CHILD
|
22811
23037
|
// remember that false/true cast respectively to 0/1
|
22812
23038
|
match[ 4 ] = +( match[ 4 ] ?
|
22813
23039
|
match[ 5 ] + ( match[ 6 ] || 1 ) :
|
22814
|
-
2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" )
|
22815
|
-
);
|
23040
|
+
2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) );
|
22816
23041
|
match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" );
|
22817
23042
|
|
22818
|
-
|
23043
|
+
// other types prohibit arguments
|
22819
23044
|
} else if ( match[ 3 ] ) {
|
22820
|
-
|
23045
|
+
Sizzle.error( match[ 0 ] );
|
22821
23046
|
}
|
22822
23047
|
|
22823
23048
|
return match;
|
22824
23049
|
},
|
22825
23050
|
|
22826
|
-
PSEUDO: function( match ) {
|
23051
|
+
"PSEUDO": function( match ) {
|
22827
23052
|
var excess,
|
22828
23053
|
unquoted = !match[ 6 ] && match[ 2 ];
|
22829
23054
|
|
22830
|
-
if ( matchExpr
|
23055
|
+
if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) {
|
22831
23056
|
return null;
|
22832
23057
|
}
|
22833
23058
|
|
@@ -22856,36 +23081,36 @@ Expr = jQuery.expr = {
|
|
22856
23081
|
|
22857
23082
|
filter: {
|
22858
23083
|
|
22859
|
-
TAG: function( nodeNameSelector ) {
|
22860
|
-
var
|
23084
|
+
"TAG": function( nodeNameSelector ) {
|
23085
|
+
var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
|
22861
23086
|
return nodeNameSelector === "*" ?
|
22862
23087
|
function() {
|
22863
23088
|
return true;
|
22864
23089
|
} :
|
22865
23090
|
function( elem ) {
|
22866
|
-
return nodeName
|
23091
|
+
return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
|
22867
23092
|
};
|
22868
23093
|
},
|
22869
23094
|
|
22870
|
-
CLASS: function( className ) {
|
23095
|
+
"CLASS": function( className ) {
|
22871
23096
|
var pattern = classCache[ className + " " ];
|
22872
23097
|
|
22873
23098
|
return pattern ||
|
22874
|
-
( pattern = new RegExp( "(^|" + whitespace +
|
22875
|
-
"(" + whitespace + "|$)" ) ) &&
|
22876
|
-
|
22877
|
-
|
22878
|
-
|
22879
|
-
|
22880
|
-
|
22881
|
-
|
22882
|
-
|
23099
|
+
( pattern = new RegExp( "(^|" + whitespace +
|
23100
|
+
")" + className + "(" + whitespace + "|$)" ) ) && classCache(
|
23101
|
+
className, function( elem ) {
|
23102
|
+
return pattern.test(
|
23103
|
+
typeof elem.className === "string" && elem.className ||
|
23104
|
+
typeof elem.getAttribute !== "undefined" &&
|
23105
|
+
elem.getAttribute( "class" ) ||
|
23106
|
+
""
|
23107
|
+
);
|
22883
23108
|
} );
|
22884
23109
|
},
|
22885
23110
|
|
22886
|
-
ATTR: function( name, operator, check ) {
|
23111
|
+
"ATTR": function( name, operator, check ) {
|
22887
23112
|
return function( elem ) {
|
22888
|
-
var result =
|
23113
|
+
var result = Sizzle.attr( elem, name );
|
22889
23114
|
|
22890
23115
|
if ( result == null ) {
|
22891
23116
|
return operator === "!=";
|
@@ -22896,34 +23121,22 @@ Expr = jQuery.expr = {
|
|
22896
23121
|
|
22897
23122
|
result += "";
|
22898
23123
|
|
22899
|
-
|
22900
|
-
|
22901
|
-
|
22902
|
-
|
22903
|
-
|
22904
|
-
|
22905
|
-
|
22906
|
-
|
22907
|
-
|
22908
|
-
|
22909
|
-
|
22910
|
-
}
|
22911
|
-
if ( operator === "$=" ) {
|
22912
|
-
return check && result.slice( -check.length ) === check;
|
22913
|
-
}
|
22914
|
-
if ( operator === "~=" ) {
|
22915
|
-
return ( " " + result.replace( rwhitespace, " " ) + " " )
|
22916
|
-
.indexOf( check ) > -1;
|
22917
|
-
}
|
22918
|
-
if ( operator === "|=" ) {
|
22919
|
-
return result === check || result.slice( 0, check.length + 1 ) === check + "-";
|
22920
|
-
}
|
23124
|
+
/* eslint-disable max-len */
|
23125
|
+
|
23126
|
+
return operator === "=" ? result === check :
|
23127
|
+
operator === "!=" ? result !== check :
|
23128
|
+
operator === "^=" ? check && result.indexOf( check ) === 0 :
|
23129
|
+
operator === "*=" ? check && result.indexOf( check ) > -1 :
|
23130
|
+
operator === "$=" ? check && result.slice( -check.length ) === check :
|
23131
|
+
operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
|
23132
|
+
operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
|
23133
|
+
false;
|
23134
|
+
/* eslint-enable max-len */
|
22921
23135
|
|
22922
|
-
return false;
|
22923
23136
|
};
|
22924
23137
|
},
|
22925
23138
|
|
22926
|
-
CHILD: function( type, what, _argument, first, last ) {
|
23139
|
+
"CHILD": function( type, what, _argument, first, last ) {
|
22927
23140
|
var simple = type.slice( 0, 3 ) !== "nth",
|
22928
23141
|
forward = type.slice( -4 ) !== "last",
|
22929
23142
|
ofType = what === "of-type";
|
@@ -22936,7 +23149,7 @@ Expr = jQuery.expr = {
|
|
22936
23149
|
} :
|
22937
23150
|
|
22938
23151
|
function( elem, _context, xml ) {
|
22939
|
-
var cache, outerCache, node, nodeIndex, start,
|
23152
|
+
var cache, uniqueCache, outerCache, node, nodeIndex, start,
|
22940
23153
|
dir = simple !== forward ? "nextSibling" : "previousSibling",
|
22941
23154
|
parent = elem.parentNode,
|
22942
23155
|
name = ofType && elem.nodeName.toLowerCase(),
|
@@ -22951,7 +23164,7 @@ Expr = jQuery.expr = {
|
|
22951
23164
|
node = elem;
|
22952
23165
|
while ( ( node = node[ dir ] ) ) {
|
22953
23166
|
if ( ofType ?
|
22954
|
-
nodeName(
|
23167
|
+
node.nodeName.toLowerCase() === name :
|
22955
23168
|
node.nodeType === 1 ) {
|
22956
23169
|
|
22957
23170
|
return false;
|
@@ -22970,8 +23183,17 @@ Expr = jQuery.expr = {
|
|
22970
23183
|
if ( forward && useCache ) {
|
22971
23184
|
|
22972
23185
|
// Seek `elem` from a previously-cached index
|
22973
|
-
|
22974
|
-
|
23186
|
+
|
23187
|
+
// ...in a gzip-friendly way
|
23188
|
+
node = parent;
|
23189
|
+
outerCache = node[ expando ] || ( node[ expando ] = {} );
|
23190
|
+
|
23191
|
+
// Support: IE <9 only
|
23192
|
+
// Defend against cloned attroperties (jQuery gh-1709)
|
23193
|
+
uniqueCache = outerCache[ node.uniqueID ] ||
|
23194
|
+
( outerCache[ node.uniqueID ] = {} );
|
23195
|
+
|
23196
|
+
cache = uniqueCache[ type ] || [];
|
22975
23197
|
nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
|
22976
23198
|
diff = nodeIndex && cache[ 2 ];
|
22977
23199
|
node = nodeIndex && parent.childNodes[ nodeIndex ];
|
@@ -22983,7 +23205,7 @@ Expr = jQuery.expr = {
|
|
22983
23205
|
|
22984
23206
|
// When found, cache indexes on `parent` and break
|
22985
23207
|
if ( node.nodeType === 1 && ++diff && node === elem ) {
|
22986
|
-
|
23208
|
+
uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
|
22987
23209
|
break;
|
22988
23210
|
}
|
22989
23211
|
}
|
@@ -22992,8 +23214,17 @@ Expr = jQuery.expr = {
|
|
22992
23214
|
|
22993
23215
|
// Use previously-cached element index if available
|
22994
23216
|
if ( useCache ) {
|
22995
|
-
|
22996
|
-
|
23217
|
+
|
23218
|
+
// ...in a gzip-friendly way
|
23219
|
+
node = elem;
|
23220
|
+
outerCache = node[ expando ] || ( node[ expando ] = {} );
|
23221
|
+
|
23222
|
+
// Support: IE <9 only
|
23223
|
+
// Defend against cloned attroperties (jQuery gh-1709)
|
23224
|
+
uniqueCache = outerCache[ node.uniqueID ] ||
|
23225
|
+
( outerCache[ node.uniqueID ] = {} );
|
23226
|
+
|
23227
|
+
cache = uniqueCache[ type ] || [];
|
22997
23228
|
nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
|
22998
23229
|
diff = nodeIndex;
|
22999
23230
|
}
|
@@ -23007,7 +23238,7 @@ Expr = jQuery.expr = {
|
|
23007
23238
|
( diff = nodeIndex = 0 ) || start.pop() ) ) {
|
23008
23239
|
|
23009
23240
|
if ( ( ofType ?
|
23010
|
-
nodeName(
|
23241
|
+
node.nodeName.toLowerCase() === name :
|
23011
23242
|
node.nodeType === 1 ) &&
|
23012
23243
|
++diff ) {
|
23013
23244
|
|
@@ -23015,7 +23246,13 @@ Expr = jQuery.expr = {
|
|
23015
23246
|
if ( useCache ) {
|
23016
23247
|
outerCache = node[ expando ] ||
|
23017
23248
|
( node[ expando ] = {} );
|
23018
|
-
|
23249
|
+
|
23250
|
+
// Support: IE <9 only
|
23251
|
+
// Defend against cloned attroperties (jQuery gh-1709)
|
23252
|
+
uniqueCache = outerCache[ node.uniqueID ] ||
|
23253
|
+
( outerCache[ node.uniqueID ] = {} );
|
23254
|
+
|
23255
|
+
uniqueCache[ type ] = [ dirruns, diff ];
|
23019
23256
|
}
|
23020
23257
|
|
23021
23258
|
if ( node === elem ) {
|
@@ -23033,19 +23270,19 @@ Expr = jQuery.expr = {
|
|
23033
23270
|
};
|
23034
23271
|
},
|
23035
23272
|
|
23036
|
-
PSEUDO: function( pseudo, argument ) {
|
23273
|
+
"PSEUDO": function( pseudo, argument ) {
|
23037
23274
|
|
23038
23275
|
// pseudo-class names are case-insensitive
|
23039
|
-
//
|
23276
|
+
// http://www.w3.org/TR/selectors/#pseudo-classes
|
23040
23277
|
// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
|
23041
23278
|
// Remember that setFilters inherits from pseudos
|
23042
23279
|
var args,
|
23043
23280
|
fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
|
23044
|
-
|
23281
|
+
Sizzle.error( "unsupported pseudo: " + pseudo );
|
23045
23282
|
|
23046
23283
|
// The user may use createPseudo to indicate that
|
23047
23284
|
// arguments are needed to create the filter function
|
23048
|
-
// just as
|
23285
|
+
// just as Sizzle does
|
23049
23286
|
if ( fn[ expando ] ) {
|
23050
23287
|
return fn( argument );
|
23051
23288
|
}
|
@@ -23059,7 +23296,7 @@ Expr = jQuery.expr = {
|
|
23059
23296
|
matched = fn( seed, argument ),
|
23060
23297
|
i = matched.length;
|
23061
23298
|
while ( i-- ) {
|
23062
|
-
idx = indexOf
|
23299
|
+
idx = indexOf( seed, matched[ i ] );
|
23063
23300
|
seed[ idx ] = !( matches[ idx ] = matched[ i ] );
|
23064
23301
|
}
|
23065
23302
|
} ) :
|
@@ -23075,14 +23312,14 @@ Expr = jQuery.expr = {
|
|
23075
23312
|
pseudos: {
|
23076
23313
|
|
23077
23314
|
// Potentially complex pseudos
|
23078
|
-
not: markFunction( function( selector ) {
|
23315
|
+
"not": markFunction( function( selector ) {
|
23079
23316
|
|
23080
23317
|
// Trim the selector passed to compile
|
23081
23318
|
// to avoid treating leading and trailing
|
23082
23319
|
// spaces as combinators
|
23083
23320
|
var input = [],
|
23084
23321
|
results = [],
|
23085
|
-
matcher = compile( selector.replace(
|
23322
|
+
matcher = compile( selector.replace( rtrim, "$1" ) );
|
23086
23323
|
|
23087
23324
|
return matcher[ expando ] ?
|
23088
23325
|
markFunction( function( seed, matches, _context, xml ) {
|
@@ -23101,23 +23338,22 @@ Expr = jQuery.expr = {
|
|
23101
23338
|
input[ 0 ] = elem;
|
23102
23339
|
matcher( input, null, xml, results );
|
23103
23340
|
|
23104
|
-
// Don't keep the element
|
23105
|
-
// (see https://github.com/jquery/sizzle/issues/299)
|
23341
|
+
// Don't keep the element (issue #299)
|
23106
23342
|
input[ 0 ] = null;
|
23107
23343
|
return !results.pop();
|
23108
23344
|
};
|
23109
23345
|
} ),
|
23110
23346
|
|
23111
|
-
has: markFunction( function( selector ) {
|
23347
|
+
"has": markFunction( function( selector ) {
|
23112
23348
|
return function( elem ) {
|
23113
|
-
return
|
23349
|
+
return Sizzle( selector, elem ).length > 0;
|
23114
23350
|
};
|
23115
23351
|
} ),
|
23116
23352
|
|
23117
|
-
contains: markFunction( function( text ) {
|
23353
|
+
"contains": markFunction( function( text ) {
|
23118
23354
|
text = text.replace( runescape, funescape );
|
23119
23355
|
return function( elem ) {
|
23120
|
-
return ( elem.textContent ||
|
23356
|
+
return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;
|
23121
23357
|
};
|
23122
23358
|
} ),
|
23123
23359
|
|
@@ -23127,12 +23363,12 @@ Expr = jQuery.expr = {
|
|
23127
23363
|
// or beginning with the identifier C immediately followed by "-".
|
23128
23364
|
// The matching of C against the element's language value is performed case-insensitively.
|
23129
23365
|
// The identifier C does not have to be a valid language name."
|
23130
|
-
//
|
23131
|
-
lang: markFunction( function( lang ) {
|
23366
|
+
// http://www.w3.org/TR/selectors/#lang-pseudo
|
23367
|
+
"lang": markFunction( function( lang ) {
|
23132
23368
|
|
23133
23369
|
// lang value must be a valid identifier
|
23134
23370
|
if ( !ridentifier.test( lang || "" ) ) {
|
23135
|
-
|
23371
|
+
Sizzle.error( "unsupported lang: " + lang );
|
23136
23372
|
}
|
23137
23373
|
lang = lang.replace( runescape, funescape ).toLowerCase();
|
23138
23374
|
return function( elem ) {
|
@@ -23151,39 +23387,38 @@ Expr = jQuery.expr = {
|
|
23151
23387
|
} ),
|
23152
23388
|
|
23153
23389
|
// Miscellaneous
|
23154
|
-
target: function( elem ) {
|
23390
|
+
"target": function( elem ) {
|
23155
23391
|
var hash = window.location && window.location.hash;
|
23156
23392
|
return hash && hash.slice( 1 ) === elem.id;
|
23157
23393
|
},
|
23158
23394
|
|
23159
|
-
root: function( elem ) {
|
23160
|
-
return elem ===
|
23395
|
+
"root": function( elem ) {
|
23396
|
+
return elem === docElem;
|
23161
23397
|
},
|
23162
23398
|
|
23163
|
-
focus: function( elem ) {
|
23164
|
-
return elem ===
|
23165
|
-
document.hasFocus() &&
|
23399
|
+
"focus": function( elem ) {
|
23400
|
+
return elem === document.activeElement &&
|
23401
|
+
( !document.hasFocus || document.hasFocus() ) &&
|
23166
23402
|
!!( elem.type || elem.href || ~elem.tabIndex );
|
23167
23403
|
},
|
23168
23404
|
|
23169
23405
|
// Boolean properties
|
23170
|
-
enabled: createDisabledPseudo( false ),
|
23171
|
-
disabled: createDisabledPseudo( true ),
|
23406
|
+
"enabled": createDisabledPseudo( false ),
|
23407
|
+
"disabled": createDisabledPseudo( true ),
|
23172
23408
|
|
23173
|
-
checked: function( elem ) {
|
23409
|
+
"checked": function( elem ) {
|
23174
23410
|
|
23175
23411
|
// In CSS3, :checked should return both checked and selected elements
|
23176
|
-
//
|
23177
|
-
|
23178
|
-
|
23412
|
+
// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
|
23413
|
+
var nodeName = elem.nodeName.toLowerCase();
|
23414
|
+
return ( nodeName === "input" && !!elem.checked ) ||
|
23415
|
+
( nodeName === "option" && !!elem.selected );
|
23179
23416
|
},
|
23180
23417
|
|
23181
|
-
selected: function( elem ) {
|
23418
|
+
"selected": function( elem ) {
|
23182
23419
|
|
23183
|
-
//
|
23184
|
-
//
|
23185
|
-
// forces the browser to treat the default option as
|
23186
|
-
// selected when in an optgroup.
|
23420
|
+
// Accessing this property makes selected-by-default
|
23421
|
+
// options in Safari work properly
|
23187
23422
|
if ( elem.parentNode ) {
|
23188
23423
|
// eslint-disable-next-line no-unused-expressions
|
23189
23424
|
elem.parentNode.selectedIndex;
|
@@ -23193,9 +23428,9 @@ Expr = jQuery.expr = {
|
|
23193
23428
|
},
|
23194
23429
|
|
23195
23430
|
// Contents
|
23196
|
-
empty: function( elem ) {
|
23431
|
+
"empty": function( elem ) {
|
23197
23432
|
|
23198
|
-
//
|
23433
|
+
// http://www.w3.org/TR/selectors/#empty-pseudo
|
23199
23434
|
// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
|
23200
23435
|
// but not by others (comment: 8; processing instruction: 7; etc.)
|
23201
23436
|
// nodeType < 6 works because attributes (2) do not appear as children
|
@@ -23207,49 +23442,49 @@ Expr = jQuery.expr = {
|
|
23207
23442
|
return true;
|
23208
23443
|
},
|
23209
23444
|
|
23210
|
-
parent: function( elem ) {
|
23211
|
-
return !Expr.pseudos
|
23445
|
+
"parent": function( elem ) {
|
23446
|
+
return !Expr.pseudos[ "empty" ]( elem );
|
23212
23447
|
},
|
23213
23448
|
|
23214
23449
|
// Element/input types
|
23215
|
-
header: function( elem ) {
|
23450
|
+
"header": function( elem ) {
|
23216
23451
|
return rheader.test( elem.nodeName );
|
23217
23452
|
},
|
23218
23453
|
|
23219
|
-
input: function( elem ) {
|
23454
|
+
"input": function( elem ) {
|
23220
23455
|
return rinputs.test( elem.nodeName );
|
23221
23456
|
},
|
23222
23457
|
|
23223
|
-
button: function( elem ) {
|
23224
|
-
|
23225
|
-
|
23458
|
+
"button": function( elem ) {
|
23459
|
+
var name = elem.nodeName.toLowerCase();
|
23460
|
+
return name === "input" && elem.type === "button" || name === "button";
|
23226
23461
|
},
|
23227
23462
|
|
23228
|
-
text: function( elem ) {
|
23463
|
+
"text": function( elem ) {
|
23229
23464
|
var attr;
|
23230
|
-
return nodeName(
|
23465
|
+
return elem.nodeName.toLowerCase() === "input" &&
|
23466
|
+
elem.type === "text" &&
|
23231
23467
|
|
23232
|
-
// Support: IE
|
23233
|
-
// New HTML5 attribute values (e.g., "search") appear
|
23234
|
-
// with elem.type === "text"
|
23468
|
+
// Support: IE<8
|
23469
|
+
// New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
|
23235
23470
|
( ( attr = elem.getAttribute( "type" ) ) == null ||
|
23236
23471
|
attr.toLowerCase() === "text" );
|
23237
23472
|
},
|
23238
23473
|
|
23239
23474
|
// Position-in-collection
|
23240
|
-
first: createPositionalPseudo( function() {
|
23475
|
+
"first": createPositionalPseudo( function() {
|
23241
23476
|
return [ 0 ];
|
23242
23477
|
} ),
|
23243
23478
|
|
23244
|
-
last: createPositionalPseudo( function( _matchIndexes, length ) {
|
23479
|
+
"last": createPositionalPseudo( function( _matchIndexes, length ) {
|
23245
23480
|
return [ length - 1 ];
|
23246
23481
|
} ),
|
23247
23482
|
|
23248
|
-
eq: createPositionalPseudo( function( _matchIndexes, length, argument ) {
|
23483
|
+
"eq": createPositionalPseudo( function( _matchIndexes, length, argument ) {
|
23249
23484
|
return [ argument < 0 ? argument + length : argument ];
|
23250
23485
|
} ),
|
23251
23486
|
|
23252
|
-
even: createPositionalPseudo( function( matchIndexes, length ) {
|
23487
|
+
"even": createPositionalPseudo( function( matchIndexes, length ) {
|
23253
23488
|
var i = 0;
|
23254
23489
|
for ( ; i < length; i += 2 ) {
|
23255
23490
|
matchIndexes.push( i );
|
@@ -23257,7 +23492,7 @@ Expr = jQuery.expr = {
|
|
23257
23492
|
return matchIndexes;
|
23258
23493
|
} ),
|
23259
23494
|
|
23260
|
-
odd: createPositionalPseudo( function( matchIndexes, length ) {
|
23495
|
+
"odd": createPositionalPseudo( function( matchIndexes, length ) {
|
23261
23496
|
var i = 1;
|
23262
23497
|
for ( ; i < length; i += 2 ) {
|
23263
23498
|
matchIndexes.push( i );
|
@@ -23265,24 +23500,19 @@ Expr = jQuery.expr = {
|
|
23265
23500
|
return matchIndexes;
|
23266
23501
|
} ),
|
23267
23502
|
|
23268
|
-
lt: createPositionalPseudo( function( matchIndexes, length, argument ) {
|
23269
|
-
var i
|
23270
|
-
|
23271
|
-
|
23272
|
-
|
23273
|
-
|
23274
|
-
i = length;
|
23275
|
-
} else {
|
23276
|
-
i = argument;
|
23277
|
-
}
|
23278
|
-
|
23503
|
+
"lt": createPositionalPseudo( function( matchIndexes, length, argument ) {
|
23504
|
+
var i = argument < 0 ?
|
23505
|
+
argument + length :
|
23506
|
+
argument > length ?
|
23507
|
+
length :
|
23508
|
+
argument;
|
23279
23509
|
for ( ; --i >= 0; ) {
|
23280
23510
|
matchIndexes.push( i );
|
23281
23511
|
}
|
23282
23512
|
return matchIndexes;
|
23283
23513
|
} ),
|
23284
23514
|
|
23285
|
-
gt: createPositionalPseudo( function( matchIndexes, length, argument ) {
|
23515
|
+
"gt": createPositionalPseudo( function( matchIndexes, length, argument ) {
|
23286
23516
|
var i = argument < 0 ? argument + length : argument;
|
23287
23517
|
for ( ; ++i < length; ) {
|
23288
23518
|
matchIndexes.push( i );
|
@@ -23292,7 +23522,7 @@ Expr = jQuery.expr = {
|
|
23292
23522
|
}
|
23293
23523
|
};
|
23294
23524
|
|
23295
|
-
Expr.pseudos
|
23525
|
+
Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ];
|
23296
23526
|
|
23297
23527
|
// Add button/input type pseudos
|
23298
23528
|
for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
|
@@ -23307,7 +23537,7 @@ function setFilters() {}
|
|
23307
23537
|
setFilters.prototype = Expr.filters = Expr.pseudos;
|
23308
23538
|
Expr.setFilters = new setFilters();
|
23309
23539
|
|
23310
|
-
|
23540
|
+
tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
|
23311
23541
|
var matched, match, tokens, type,
|
23312
23542
|
soFar, groups, preFilters,
|
23313
23543
|
cached = tokenCache[ selector + " " ];
|
@@ -23335,13 +23565,13 @@ function tokenize( selector, parseOnly ) {
|
|
23335
23565
|
matched = false;
|
23336
23566
|
|
23337
23567
|
// Combinators
|
23338
|
-
if ( ( match =
|
23568
|
+
if ( ( match = rcombinators.exec( soFar ) ) ) {
|
23339
23569
|
matched = match.shift();
|
23340
23570
|
tokens.push( {
|
23341
23571
|
value: matched,
|
23342
23572
|
|
23343
23573
|
// Cast descendant combinators to space
|
23344
|
-
type: match[ 0 ].replace(
|
23574
|
+
type: match[ 0 ].replace( rtrim, " " )
|
23345
23575
|
} );
|
23346
23576
|
soFar = soFar.slice( matched.length );
|
23347
23577
|
}
|
@@ -23368,16 +23598,14 @@ function tokenize( selector, parseOnly ) {
|
|
23368
23598
|
// Return the length of the invalid excess
|
23369
23599
|
// if we're just parsing
|
23370
23600
|
// Otherwise, throw an error or return tokens
|
23371
|
-
|
23372
|
-
|
23373
|
-
|
23374
|
-
|
23375
|
-
return soFar ?
|
23376
|
-
find.error( selector ) :
|
23601
|
+
return parseOnly ?
|
23602
|
+
soFar.length :
|
23603
|
+
soFar ?
|
23604
|
+
Sizzle.error( selector ) :
|
23377
23605
|
|
23378
|
-
|
23379
|
-
|
23380
|
-
}
|
23606
|
+
// Cache the tokens
|
23607
|
+
tokenCache( selector, groups ).slice( 0 );
|
23608
|
+
};
|
23381
23609
|
|
23382
23610
|
function toSelector( tokens ) {
|
23383
23611
|
var i = 0,
|
@@ -23410,7 +23638,7 @@ function addCombinator( matcher, combinator, base ) {
|
|
23410
23638
|
|
23411
23639
|
// Check against all ancestor/preceding elements
|
23412
23640
|
function( elem, context, xml ) {
|
23413
|
-
var oldCache, outerCache,
|
23641
|
+
var oldCache, uniqueCache, outerCache,
|
23414
23642
|
newCache = [ dirruns, doneName ];
|
23415
23643
|
|
23416
23644
|
// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
|
@@ -23427,9 +23655,14 @@ function addCombinator( matcher, combinator, base ) {
|
|
23427
23655
|
if ( elem.nodeType === 1 || checkNonElements ) {
|
23428
23656
|
outerCache = elem[ expando ] || ( elem[ expando ] = {} );
|
23429
23657
|
|
23430
|
-
|
23658
|
+
// Support: IE <9 only
|
23659
|
+
// Defend against cloned attroperties (jQuery gh-1709)
|
23660
|
+
uniqueCache = outerCache[ elem.uniqueID ] ||
|
23661
|
+
( outerCache[ elem.uniqueID ] = {} );
|
23662
|
+
|
23663
|
+
if ( skip && skip === elem.nodeName.toLowerCase() ) {
|
23431
23664
|
elem = elem[ dir ] || elem;
|
23432
|
-
} else if ( ( oldCache =
|
23665
|
+
} else if ( ( oldCache = uniqueCache[ key ] ) &&
|
23433
23666
|
oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
|
23434
23667
|
|
23435
23668
|
// Assign to newCache so results back-propagate to previous elements
|
@@ -23437,7 +23670,7 @@ function addCombinator( matcher, combinator, base ) {
|
|
23437
23670
|
} else {
|
23438
23671
|
|
23439
23672
|
// Reuse newcache so results back-propagate to previous elements
|
23440
|
-
|
23673
|
+
uniqueCache[ key ] = newCache;
|
23441
23674
|
|
23442
23675
|
// A match means we're done; a fail means we have to keep checking
|
23443
23676
|
if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {
|
@@ -23469,7 +23702,7 @@ function multipleContexts( selector, contexts, results ) {
|
|
23469
23702
|
var i = 0,
|
23470
23703
|
len = contexts.length;
|
23471
23704
|
for ( ; i < len; i++ ) {
|
23472
|
-
|
23705
|
+
Sizzle( selector, contexts[ i ], results );
|
23473
23706
|
}
|
23474
23707
|
return results;
|
23475
23708
|
}
|
@@ -23503,37 +23736,38 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS
|
|
23503
23736
|
postFinder = setMatcher( postFinder, postSelector );
|
23504
23737
|
}
|
23505
23738
|
return markFunction( function( seed, results, context, xml ) {
|
23506
|
-
var temp, i, elem,
|
23739
|
+
var temp, i, elem,
|
23507
23740
|
preMap = [],
|
23508
23741
|
postMap = [],
|
23509
23742
|
preexisting = results.length,
|
23510
23743
|
|
23511
23744
|
// Get initial elements from seed or context
|
23512
|
-
elems = seed ||
|
23513
|
-
|
23514
|
-
|
23745
|
+
elems = seed || multipleContexts(
|
23746
|
+
selector || "*",
|
23747
|
+
context.nodeType ? [ context ] : context,
|
23748
|
+
[]
|
23749
|
+
),
|
23515
23750
|
|
23516
23751
|
// Prefilter to get matcher input, preserving a map for seed-results synchronization
|
23517
23752
|
matcherIn = preFilter && ( seed || !selector ) ?
|
23518
23753
|
condense( elems, preMap, preFilter, context, xml ) :
|
23519
|
-
elems
|
23754
|
+
elems,
|
23520
23755
|
|
23521
|
-
|
23756
|
+
matcherOut = matcher ?
|
23522
23757
|
|
23523
|
-
|
23524
|
-
|
23525
|
-
matcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
|
23758
|
+
// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
|
23759
|
+
postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
|
23526
23760
|
|
23527
|
-
|
23528
|
-
|
23761
|
+
// ...intermediate processing is necessary
|
23762
|
+
[] :
|
23529
23763
|
|
23530
|
-
|
23531
|
-
|
23764
|
+
// ...otherwise use results directly
|
23765
|
+
results :
|
23766
|
+
matcherIn;
|
23532
23767
|
|
23533
|
-
|
23768
|
+
// Find primary matches
|
23769
|
+
if ( matcher ) {
|
23534
23770
|
matcher( matcherIn, matcherOut, context, xml );
|
23535
|
-
} else {
|
23536
|
-
matcherOut = matcherIn;
|
23537
23771
|
}
|
23538
23772
|
|
23539
23773
|
// Apply postFilter
|
@@ -23571,7 +23805,7 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS
|
|
23571
23805
|
i = matcherOut.length;
|
23572
23806
|
while ( i-- ) {
|
23573
23807
|
if ( ( elem = matcherOut[ i ] ) &&
|
23574
|
-
( temp = postFinder ? indexOf
|
23808
|
+
( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {
|
23575
23809
|
|
23576
23810
|
seed[ temp ] = !( results[ temp ] = elem );
|
23577
23811
|
}
|
@@ -23606,21 +23840,15 @@ function matcherFromTokens( tokens ) {
|
|
23606
23840
|
return elem === checkContext;
|
23607
23841
|
}, implicitRelative, true ),
|
23608
23842
|
matchAnyContext = addCombinator( function( elem ) {
|
23609
|
-
return indexOf
|
23843
|
+
return indexOf( checkContext, elem ) > -1;
|
23610
23844
|
}, implicitRelative, true ),
|
23611
23845
|
matchers = [ function( elem, context, xml ) {
|
23612
|
-
|
23613
|
-
// Support: IE 11+, Edge 17 - 18+
|
23614
|
-
// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
|
23615
|
-
// two documents; shallow comparisons work.
|
23616
|
-
// eslint-disable-next-line eqeqeq
|
23617
|
-
var ret = ( !leadingRelative && ( xml || context != outermostContext ) ) || (
|
23846
|
+
var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
|
23618
23847
|
( checkContext = context ).nodeType ?
|
23619
23848
|
matchContext( elem, context, xml ) :
|
23620
23849
|
matchAnyContext( elem, context, xml ) );
|
23621
23850
|
|
23622
|
-
// Avoid hanging onto element
|
23623
|
-
// (see https://github.com/jquery/sizzle/issues/299)
|
23851
|
+
// Avoid hanging onto element (issue #299)
|
23624
23852
|
checkContext = null;
|
23625
23853
|
return ret;
|
23626
23854
|
} ];
|
@@ -23645,10 +23873,11 @@ function matcherFromTokens( tokens ) {
|
|
23645
23873
|
i > 1 && elementMatcher( matchers ),
|
23646
23874
|
i > 1 && toSelector(
|
23647
23875
|
|
23648
|
-
|
23649
|
-
|
23650
|
-
|
23651
|
-
|
23876
|
+
// If the preceding token was a descendant combinator, insert an implicit any-element `*`
|
23877
|
+
tokens
|
23878
|
+
.slice( 0, i - 1 )
|
23879
|
+
.concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } )
|
23880
|
+
).replace( rtrim, "$1" ),
|
23652
23881
|
matcher,
|
23653
23882
|
i < j && matcherFromTokens( tokens.slice( i, j ) ),
|
23654
23883
|
j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),
|
@@ -23674,7 +23903,7 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
|
|
23674
23903
|
contextBackup = outermostContext,
|
23675
23904
|
|
23676
23905
|
// We must always have either seed elements or outermost context
|
23677
|
-
elems = seed || byElement && Expr.find
|
23906
|
+
elems = seed || byElement && Expr.find[ "TAG" ]( "*", outermost ),
|
23678
23907
|
|
23679
23908
|
// Use integer dirruns iff this is the outermost matcher
|
23680
23909
|
dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),
|
@@ -23690,9 +23919,8 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
|
|
23690
23919
|
}
|
23691
23920
|
|
23692
23921
|
// Add elements passing elementMatchers directly to results
|
23693
|
-
// Support:
|
23694
|
-
// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching
|
23695
|
-
// elements by id. (see trac-14142)
|
23922
|
+
// Support: IE<9, Safari
|
23923
|
+
// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
|
23696
23924
|
for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {
|
23697
23925
|
if ( byElement && elem ) {
|
23698
23926
|
j = 0;
|
@@ -23707,7 +23935,7 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
|
|
23707
23935
|
}
|
23708
23936
|
while ( ( matcher = elementMatchers[ j++ ] ) ) {
|
23709
23937
|
if ( matcher( elem, context || document, xml ) ) {
|
23710
|
-
push
|
23938
|
+
results.push( elem );
|
23711
23939
|
break;
|
23712
23940
|
}
|
23713
23941
|
}
|
@@ -23770,7 +23998,7 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
|
|
23770
23998
|
if ( outermost && !seed && setMatched.length > 0 &&
|
23771
23999
|
( matchedCount + setMatchers.length ) > 1 ) {
|
23772
24000
|
|
23773
|
-
|
24001
|
+
Sizzle.uniqueSort( results );
|
23774
24002
|
}
|
23775
24003
|
}
|
23776
24004
|
|
@@ -23788,7 +24016,7 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
|
|
23788
24016
|
superMatcher;
|
23789
24017
|
}
|
23790
24018
|
|
23791
|
-
|
24019
|
+
compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
|
23792
24020
|
var i,
|
23793
24021
|
setMatchers = [],
|
23794
24022
|
elementMatchers = [],
|
@@ -23811,25 +24039,27 @@ function compile( selector, match /* Internal Use Only */ ) {
|
|
23811
24039
|
}
|
23812
24040
|
|
23813
24041
|
// Cache the compiled function
|
23814
|
-
cached = compilerCache(
|
23815
|
-
|
24042
|
+
cached = compilerCache(
|
24043
|
+
selector,
|
24044
|
+
matcherFromGroupMatchers( elementMatchers, setMatchers )
|
24045
|
+
);
|
23816
24046
|
|
23817
24047
|
// Save selector and tokenization
|
23818
24048
|
cached.selector = selector;
|
23819
24049
|
}
|
23820
24050
|
return cached;
|
23821
|
-
}
|
24051
|
+
};
|
23822
24052
|
|
23823
24053
|
/**
|
23824
|
-
* A low-level selection function that works with
|
24054
|
+
* A low-level selection function that works with Sizzle's compiled
|
23825
24055
|
* selector functions
|
23826
24056
|
* @param {String|Function} selector A selector or a pre-compiled
|
23827
|
-
* selector function built with
|
24057
|
+
* selector function built with Sizzle.compile
|
23828
24058
|
* @param {Element} context
|
23829
24059
|
* @param {Array} [results]
|
23830
24060
|
* @param {Array} [seed] A set of elements to match against
|
23831
24061
|
*/
|
23832
|
-
|
24062
|
+
select = Sizzle.select = function( selector, context, results, seed ) {
|
23833
24063
|
var i, tokens, token, type, find,
|
23834
24064
|
compiled = typeof selector === "function" && selector,
|
23835
24065
|
match = !seed && tokenize( ( selector = compiled.selector || selector ) );
|
@@ -23843,12 +24073,10 @@ function select( selector, context, results, seed ) {
|
|
23843
24073
|
// Reduce context if the leading compound selector is an ID
|
23844
24074
|
tokens = match[ 0 ] = match[ 0 ].slice( 0 );
|
23845
24075
|
if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" &&
|
23846
|
-
|
24076
|
+
context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {
|
23847
24077
|
|
23848
|
-
context = ( Expr.find
|
23849
|
-
|
23850
|
-
context
|
23851
|
-
) || [] )[ 0 ];
|
24078
|
+
context = ( Expr.find[ "ID" ]( token.matches[ 0 ]
|
24079
|
+
.replace( runescape, funescape ), context ) || [] )[ 0 ];
|
23852
24080
|
if ( !context ) {
|
23853
24081
|
return results;
|
23854
24082
|
|
@@ -23861,7 +24089,7 @@ function select( selector, context, results, seed ) {
|
|
23861
24089
|
}
|
23862
24090
|
|
23863
24091
|
// Fetch a seed set for right-to-left matching
|
23864
|
-
i = matchExpr
|
24092
|
+
i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length;
|
23865
24093
|
while ( i-- ) {
|
23866
24094
|
token = tokens[ i ];
|
23867
24095
|
|
@@ -23874,8 +24102,8 @@ function select( selector, context, results, seed ) {
|
|
23874
24102
|
// Search, expanding context for leading sibling combinators
|
23875
24103
|
if ( ( seed = find(
|
23876
24104
|
token.matches[ 0 ].replace( runescape, funescape ),
|
23877
|
-
rsibling.test( tokens[ 0 ].type ) &&
|
23878
|
-
|
24105
|
+
rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||
|
24106
|
+
context
|
23879
24107
|
) ) ) {
|
23880
24108
|
|
23881
24109
|
// If seed is empty or no tokens remain, we can return early
|
@@ -23902,18 +24130,21 @@ function select( selector, context, results, seed ) {
|
|
23902
24130
|
!context || rsibling.test( selector ) && testContext( context.parentNode ) || context
|
23903
24131
|
);
|
23904
24132
|
return results;
|
23905
|
-
}
|
24133
|
+
};
|
23906
24134
|
|
23907
24135
|
// One-time assignments
|
23908
24136
|
|
23909
|
-
// Support: Android <=4.0 - 4.1+
|
23910
24137
|
// Sort stability
|
23911
24138
|
support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando;
|
23912
24139
|
|
24140
|
+
// Support: Chrome 14-35+
|
24141
|
+
// Always assume duplicates if they aren't passed to the comparison function
|
24142
|
+
support.detectDuplicates = !!hasDuplicate;
|
24143
|
+
|
23913
24144
|
// Initialize against the default document
|
23914
24145
|
setDocument();
|
23915
24146
|
|
23916
|
-
// Support:
|
24147
|
+
// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
|
23917
24148
|
// Detached nodes confoundingly follow *each other*
|
23918
24149
|
support.sortDetached = assert( function( el ) {
|
23919
24150
|
|
@@ -23921,29 +24152,68 @@ support.sortDetached = assert( function( el ) {
|
|
23921
24152
|
return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1;
|
23922
24153
|
} );
|
23923
24154
|
|
23924
|
-
|
24155
|
+
// Support: IE<8
|
24156
|
+
// Prevent attribute/property "interpolation"
|
24157
|
+
// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
|
24158
|
+
if ( !assert( function( el ) {
|
24159
|
+
el.innerHTML = "<a href='#'></a>";
|
24160
|
+
return el.firstChild.getAttribute( "href" ) === "#";
|
24161
|
+
} ) ) {
|
24162
|
+
addHandle( "type|href|height|width", function( elem, name, isXML ) {
|
24163
|
+
if ( !isXML ) {
|
24164
|
+
return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
|
24165
|
+
}
|
24166
|
+
} );
|
24167
|
+
}
|
23925
24168
|
|
23926
|
-
//
|
23927
|
-
|
23928
|
-
|
24169
|
+
// Support: IE<9
|
24170
|
+
// Use defaultValue in place of getAttribute("value")
|
24171
|
+
if ( !support.attributes || !assert( function( el ) {
|
24172
|
+
el.innerHTML = "<input/>";
|
24173
|
+
el.firstChild.setAttribute( "value", "" );
|
24174
|
+
return el.firstChild.getAttribute( "value" ) === "";
|
24175
|
+
} ) ) {
|
24176
|
+
addHandle( "value", function( elem, _name, isXML ) {
|
24177
|
+
if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
|
24178
|
+
return elem.defaultValue;
|
24179
|
+
}
|
24180
|
+
} );
|
24181
|
+
}
|
23929
24182
|
|
23930
|
-
//
|
23931
|
-
//
|
23932
|
-
|
23933
|
-
|
23934
|
-
|
23935
|
-
|
24183
|
+
// Support: IE<9
|
24184
|
+
// Use getAttributeNode to fetch booleans when getAttribute lies
|
24185
|
+
if ( !assert( function( el ) {
|
24186
|
+
return el.getAttribute( "disabled" ) == null;
|
24187
|
+
} ) ) {
|
24188
|
+
addHandle( booleans, function( elem, name, isXML ) {
|
24189
|
+
var val;
|
24190
|
+
if ( !isXML ) {
|
24191
|
+
return elem[ name ] === true ? name.toLowerCase() :
|
24192
|
+
( val = elem.getAttributeNode( name ) ) && val.specified ?
|
24193
|
+
val.value :
|
24194
|
+
null;
|
24195
|
+
}
|
24196
|
+
} );
|
24197
|
+
}
|
23936
24198
|
|
23937
|
-
|
23938
|
-
|
23939
|
-
|
23940
|
-
|
23941
|
-
|
23942
|
-
|
24199
|
+
return Sizzle;
|
24200
|
+
|
24201
|
+
} )( window );
|
24202
|
+
|
24203
|
+
|
24204
|
+
|
24205
|
+
jQuery.find = Sizzle;
|
24206
|
+
jQuery.expr = Sizzle.selectors;
|
24207
|
+
|
24208
|
+
// Deprecated
|
24209
|
+
jQuery.expr[ ":" ] = jQuery.expr.pseudos;
|
24210
|
+
jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
|
24211
|
+
jQuery.text = Sizzle.getText;
|
24212
|
+
jQuery.isXMLDoc = Sizzle.isXML;
|
24213
|
+
jQuery.contains = Sizzle.contains;
|
24214
|
+
jQuery.escapeSelector = Sizzle.escape;
|
23943
24215
|
|
23944
|
-
/* eslint-enable */
|
23945
24216
|
|
23946
|
-
} )();
|
23947
24217
|
|
23948
24218
|
|
23949
24219
|
var dir = function( elem, dir, until ) {
|
@@ -23977,6 +24247,13 @@ var siblings = function( n, elem ) {
|
|
23977
24247
|
|
23978
24248
|
var rneedsContext = jQuery.expr.match.needsContext;
|
23979
24249
|
|
24250
|
+
|
24251
|
+
|
24252
|
+
function nodeName( elem, name ) {
|
24253
|
+
|
24254
|
+
return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
|
24255
|
+
|
24256
|
+
}
|
23980
24257
|
var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
|
23981
24258
|
|
23982
24259
|
|
@@ -24075,8 +24352,8 @@ jQuery.fn.extend( {
|
|
24075
24352
|
var rootjQuery,
|
24076
24353
|
|
24077
24354
|
// A simple way to check for HTML strings
|
24078
|
-
// Prioritize #id over <tag> to avoid XSS via location.hash (
|
24079
|
-
// Strict HTML recognition (
|
24355
|
+
// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
|
24356
|
+
// Strict HTML recognition (#11290: must start with <)
|
24080
24357
|
// Shortcut simple #id case for speed
|
24081
24358
|
rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
|
24082
24359
|
|
@@ -24227,7 +24504,7 @@ jQuery.fn.extend( {
|
|
24227
24504
|
if ( cur.nodeType < 11 && ( targets ?
|
24228
24505
|
targets.index( cur ) > -1 :
|
24229
24506
|
|
24230
|
-
// Don't pass non-elements to
|
24507
|
+
// Don't pass non-elements to Sizzle
|
24231
24508
|
cur.nodeType === 1 &&
|
24232
24509
|
jQuery.find.matchesSelector( cur, selectors ) ) ) {
|
24233
24510
|
|
@@ -24782,7 +25059,7 @@ jQuery.extend( {
|
|
24782
25059
|
|
24783
25060
|
if ( jQuery.Deferred.exceptionHook ) {
|
24784
25061
|
jQuery.Deferred.exceptionHook( e,
|
24785
|
-
process.
|
25062
|
+
process.stackTrace );
|
24786
25063
|
}
|
24787
25064
|
|
24788
25065
|
// Support: Promises/A+ section 2.3.3.3.4.1
|
@@ -24810,17 +25087,10 @@ jQuery.extend( {
|
|
24810
25087
|
process();
|
24811
25088
|
} else {
|
24812
25089
|
|
24813
|
-
// Call an optional hook to record the
|
25090
|
+
// Call an optional hook to record the stack, in case of exception
|
24814
25091
|
// since it's otherwise lost when execution goes async
|
24815
|
-
if ( jQuery.Deferred.
|
24816
|
-
process.
|
24817
|
-
|
24818
|
-
// The deprecated alias of the above. While the name suggests
|
24819
|
-
// returning the stack, not an error instance, jQuery just passes
|
24820
|
-
// it directly to `console.warn` so both will work; an instance
|
24821
|
-
// just better cooperates with source maps.
|
24822
|
-
} else if ( jQuery.Deferred.getStackHook ) {
|
24823
|
-
process.error = jQuery.Deferred.getStackHook();
|
25092
|
+
if ( jQuery.Deferred.getStackHook ) {
|
25093
|
+
process.stackTrace = jQuery.Deferred.getStackHook();
|
24824
25094
|
}
|
24825
25095
|
window.setTimeout( process );
|
24826
25096
|
}
|
@@ -24995,16 +25265,12 @@ jQuery.extend( {
|
|
24995
25265
|
// warn about them ASAP rather than swallowing them by default.
|
24996
25266
|
var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
|
24997
25267
|
|
24998
|
-
|
24999
|
-
// captured before the async barrier to get the original error cause
|
25000
|
-
// which may otherwise be hidden.
|
25001
|
-
jQuery.Deferred.exceptionHook = function( error, asyncError ) {
|
25268
|
+
jQuery.Deferred.exceptionHook = function( error, stack ) {
|
25002
25269
|
|
25003
25270
|
// Support: IE 8 - 9 only
|
25004
25271
|
// Console exists when dev tools are open, which can happen at any time
|
25005
25272
|
if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
|
25006
|
-
window.console.warn( "jQuery.Deferred exception: " + error.message,
|
25007
|
-
error.stack, asyncError );
|
25273
|
+
window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );
|
25008
25274
|
}
|
25009
25275
|
};
|
25010
25276
|
|
@@ -25044,7 +25310,7 @@ jQuery.extend( {
|
|
25044
25310
|
isReady: false,
|
25045
25311
|
|
25046
25312
|
// A counter to track how many items to wait for before
|
25047
|
-
// the ready event fires. See
|
25313
|
+
// the ready event fires. See #6781
|
25048
25314
|
readyWait: 1,
|
25049
25315
|
|
25050
25316
|
// Handle when the DOM is ready
|
@@ -25172,7 +25438,7 @@ function fcamelCase( _all, letter ) {
|
|
25172
25438
|
|
25173
25439
|
// Convert dashed to camelCase; used by the css and data modules
|
25174
25440
|
// Support: IE <=9 - 11, Edge 12 - 15
|
25175
|
-
// Microsoft forgot to hump their vendor prefix (
|
25441
|
+
// Microsoft forgot to hump their vendor prefix (#9572)
|
25176
25442
|
function camelCase( string ) {
|
25177
25443
|
return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
|
25178
25444
|
}
|
@@ -25208,7 +25474,7 @@ Data.prototype = {
|
|
25208
25474
|
value = {};
|
25209
25475
|
|
25210
25476
|
// We can accept data for non-element nodes in modern browsers,
|
25211
|
-
// but we should not, see
|
25477
|
+
// but we should not, see #8335.
|
25212
25478
|
// Always return an empty object.
|
25213
25479
|
if ( acceptData( owner ) ) {
|
25214
25480
|
|
@@ -25447,7 +25713,7 @@ jQuery.fn.extend( {
|
|
25447
25713
|
while ( i-- ) {
|
25448
25714
|
|
25449
25715
|
// Support: IE 11 only
|
25450
|
-
// The attrs elements can be null (
|
25716
|
+
// The attrs elements can be null (#14894)
|
25451
25717
|
if ( attrs[ i ] ) {
|
25452
25718
|
name = attrs[ i ].name;
|
25453
25719
|
if ( name.indexOf( "data-" ) === 0 ) {
|
@@ -25870,9 +26136,9 @@ var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i );
|
|
25870
26136
|
input = document.createElement( "input" );
|
25871
26137
|
|
25872
26138
|
// Support: Android 4.0 - 4.3 only
|
25873
|
-
// Check state lost if the name is set (
|
26139
|
+
// Check state lost if the name is set (#11217)
|
25874
26140
|
// Support: Windows Web Apps (WWA)
|
25875
|
-
// `name` and `type` must use .setAttribute for WWA (
|
26141
|
+
// `name` and `type` must use .setAttribute for WWA (#14901)
|
25876
26142
|
input.setAttribute( "type", "radio" );
|
25877
26143
|
input.setAttribute( "checked", "checked" );
|
25878
26144
|
input.setAttribute( "name", "t" );
|
@@ -25896,7 +26162,7 @@ var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i );
|
|
25896
26162
|
} )();
|
25897
26163
|
|
25898
26164
|
|
25899
|
-
// We have to close these tags to support XHTML (
|
26165
|
+
// We have to close these tags to support XHTML (#13200)
|
25900
26166
|
var wrapMap = {
|
25901
26167
|
|
25902
26168
|
// XHTML parsers do not magically insert elements in the
|
@@ -25922,7 +26188,7 @@ if ( !support.option ) {
|
|
25922
26188
|
function getAll( context, tag ) {
|
25923
26189
|
|
25924
26190
|
// Support: IE <=9 - 11 only
|
25925
|
-
// Use typeof to avoid zero-argument method invocation on host objects (
|
26191
|
+
// Use typeof to avoid zero-argument method invocation on host objects (#15151)
|
25926
26192
|
var ret;
|
25927
26193
|
|
25928
26194
|
if ( typeof context.getElementsByTagName !== "undefined" ) {
|
@@ -26005,7 +26271,7 @@ function buildFragment( elems, context, scripts, selection, ignored ) {
|
|
26005
26271
|
// Remember the top-level container
|
26006
26272
|
tmp = fragment.firstChild;
|
26007
26273
|
|
26008
|
-
// Ensure the created nodes are orphaned (
|
26274
|
+
// Ensure the created nodes are orphaned (#12392)
|
26009
26275
|
tmp.textContent = "";
|
26010
26276
|
}
|
26011
26277
|
}
|
@@ -26060,6 +26326,25 @@ function returnFalse() {
|
|
26060
26326
|
return false;
|
26061
26327
|
}
|
26062
26328
|
|
26329
|
+
// Support: IE <=9 - 11+
|
26330
|
+
// focus() and blur() are asynchronous, except when they are no-op.
|
26331
|
+
// So expect focus to be synchronous when the element is already active,
|
26332
|
+
// and blur to be synchronous when the element is not already active.
|
26333
|
+
// (focus and blur are always synchronous in other supported browsers,
|
26334
|
+
// this just defines when we can count on it).
|
26335
|
+
function expectSync( elem, type ) {
|
26336
|
+
return ( elem === safeActiveElement() ) === ( type === "focus" );
|
26337
|
+
}
|
26338
|
+
|
26339
|
+
// Support: IE <=9 only
|
26340
|
+
// Accessing document.activeElement can throw unexpectedly
|
26341
|
+
// https://bugs.jquery.com/ticket/13393
|
26342
|
+
function safeActiveElement() {
|
26343
|
+
try {
|
26344
|
+
return document.activeElement;
|
26345
|
+
} catch ( err ) { }
|
26346
|
+
}
|
26347
|
+
|
26063
26348
|
function on( elem, types, selector, data, fn, one ) {
|
26064
26349
|
var origFn, type;
|
26065
26350
|
|
@@ -26407,15 +26692,15 @@ jQuery.event = {
|
|
26407
26692
|
|
26408
26693
|
for ( ; cur !== this; cur = cur.parentNode || this ) {
|
26409
26694
|
|
26410
|
-
// Don't check non-elements (
|
26411
|
-
// Don't process clicks on disabled elements (
|
26695
|
+
// Don't check non-elements (#13208)
|
26696
|
+
// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
|
26412
26697
|
if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
|
26413
26698
|
matchedHandlers = [];
|
26414
26699
|
matchedSelectors = {};
|
26415
26700
|
for ( i = 0; i < delegateCount; i++ ) {
|
26416
26701
|
handleObj = handlers[ i ];
|
26417
26702
|
|
26418
|
-
// Don't conflict with Object.prototype properties (
|
26703
|
+
// Don't conflict with Object.prototype properties (#13203)
|
26419
26704
|
sel = handleObj.selector + " ";
|
26420
26705
|
|
26421
26706
|
if ( matchedSelectors[ sel ] === undefined ) {
|
@@ -26497,7 +26782,7 @@ jQuery.event = {
|
|
26497
26782
|
el.click && nodeName( el, "input" ) ) {
|
26498
26783
|
|
26499
26784
|
// dataPriv.set( el, "click", ... )
|
26500
|
-
leverageNative( el, "click",
|
26785
|
+
leverageNative( el, "click", returnTrue );
|
26501
26786
|
}
|
26502
26787
|
|
26503
26788
|
// Return false to allow normal processing in the caller
|
@@ -26548,10 +26833,10 @@ jQuery.event = {
|
|
26548
26833
|
// synthetic events by interrupting progress until reinvoked in response to
|
26549
26834
|
// *native* events that it fires directly, ensuring that state changes have
|
26550
26835
|
// already occurred before other listeners are invoked.
|
26551
|
-
function leverageNative( el, type,
|
26836
|
+
function leverageNative( el, type, expectSync ) {
|
26552
26837
|
|
26553
|
-
// Missing
|
26554
|
-
if ( !
|
26838
|
+
// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add
|
26839
|
+
if ( !expectSync ) {
|
26555
26840
|
if ( dataPriv.get( el, type ) === undefined ) {
|
26556
26841
|
jQuery.event.add( el, type, returnTrue );
|
26557
26842
|
}
|
@@ -26563,13 +26848,15 @@ function leverageNative( el, type, isSetup ) {
|
|
26563
26848
|
jQuery.event.add( el, type, {
|
26564
26849
|
namespace: false,
|
26565
26850
|
handler: function( event ) {
|
26566
|
-
var result,
|
26851
|
+
var notAsync, result,
|
26567
26852
|
saved = dataPriv.get( this, type );
|
26568
26853
|
|
26569
26854
|
if ( ( event.isTrigger & 1 ) && this[ type ] ) {
|
26570
26855
|
|
26571
26856
|
// Interrupt processing of the outer synthetic .trigger()ed event
|
26572
|
-
|
26857
|
+
// Saved data should be false in such cases, but might be a leftover capture object
|
26858
|
+
// from an async native handler (gh-4350)
|
26859
|
+
if ( !saved.length ) {
|
26573
26860
|
|
26574
26861
|
// Store arguments for use when handling the inner native event
|
26575
26862
|
// There will always be at least one argument (an event object), so this array
|
@@ -26578,22 +26865,33 @@ function leverageNative( el, type, isSetup ) {
|
|
26578
26865
|
dataPriv.set( this, type, saved );
|
26579
26866
|
|
26580
26867
|
// Trigger the native event and capture its result
|
26868
|
+
// Support: IE <=9 - 11+
|
26869
|
+
// focus() and blur() are asynchronous
|
26870
|
+
notAsync = expectSync( this, type );
|
26581
26871
|
this[ type ]();
|
26582
26872
|
result = dataPriv.get( this, type );
|
26583
|
-
|
26584
|
-
|
26873
|
+
if ( saved !== result || notAsync ) {
|
26874
|
+
dataPriv.set( this, type, false );
|
26875
|
+
} else {
|
26876
|
+
result = {};
|
26877
|
+
}
|
26585
26878
|
if ( saved !== result ) {
|
26586
26879
|
|
26587
26880
|
// Cancel the outer synthetic event
|
26588
26881
|
event.stopImmediatePropagation();
|
26589
26882
|
event.preventDefault();
|
26590
26883
|
|
26591
|
-
|
26884
|
+
// Support: Chrome 86+
|
26885
|
+
// In Chrome, if an element having a focusout handler is blurred by
|
26886
|
+
// clicking outside of it, it invokes the handler synchronously. If
|
26887
|
+
// that handler calls `.remove()` on the element, the data is cleared,
|
26888
|
+
// leaving `result` undefined. We need to guard against this.
|
26889
|
+
return result && result.value;
|
26592
26890
|
}
|
26593
26891
|
|
26594
26892
|
// If this is an inner synthetic event for an event with a bubbling surrogate
|
26595
|
-
// (focus or blur), assume that the surrogate already propagated from triggering
|
26596
|
-
//
|
26893
|
+
// (focus or blur), assume that the surrogate already propagated from triggering the
|
26894
|
+
// native event and prevent that from happening again here.
|
26597
26895
|
// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the
|
26598
26896
|
// bubbling surrogate propagates *after* the non-bubbling base), but that seems
|
26599
26897
|
// less bad than duplication.
|
@@ -26603,25 +26901,22 @@ function leverageNative( el, type, isSetup ) {
|
|
26603
26901
|
|
26604
26902
|
// If this is a native event triggered above, everything is now in order
|
26605
26903
|
// Fire an inner synthetic event with the original arguments
|
26606
|
-
} else if ( saved ) {
|
26904
|
+
} else if ( saved.length ) {
|
26607
26905
|
|
26608
26906
|
// ...and capture the result
|
26609
|
-
dataPriv.set( this, type,
|
26610
|
-
|
26611
|
-
|
26612
|
-
|
26613
|
-
|
26614
|
-
|
26615
|
-
|
26616
|
-
|
26617
|
-
|
26618
|
-
|
26619
|
-
|
26620
|
-
//
|
26621
|
-
|
26622
|
-
// and radios. We accept this limitation.
|
26623
|
-
event.stopPropagation();
|
26624
|
-
event.isImmediatePropagationStopped = returnTrue;
|
26907
|
+
dataPriv.set( this, type, {
|
26908
|
+
value: jQuery.event.trigger(
|
26909
|
+
|
26910
|
+
// Support: IE <=9 - 11+
|
26911
|
+
// Extend with the prototype to reset the above stopImmediatePropagation()
|
26912
|
+
jQuery.extend( saved[ 0 ], jQuery.Event.prototype ),
|
26913
|
+
saved.slice( 1 ),
|
26914
|
+
this
|
26915
|
+
)
|
26916
|
+
} );
|
26917
|
+
|
26918
|
+
// Abort handling of the native event
|
26919
|
+
event.stopImmediatePropagation();
|
26625
26920
|
}
|
26626
26921
|
}
|
26627
26922
|
} );
|
@@ -26659,7 +26954,7 @@ jQuery.Event = function( src, props ) {
|
|
26659
26954
|
|
26660
26955
|
// Create target properties
|
26661
26956
|
// Support: Safari <=6 - 7 only
|
26662
|
-
// Target should not be a text node (
|
26957
|
+
// Target should not be a text node (#504, #13143)
|
26663
26958
|
this.target = ( src.target && src.target.nodeType === 3 ) ?
|
26664
26959
|
src.target.parentNode :
|
26665
26960
|
src.target;
|
@@ -26760,73 +27055,18 @@ jQuery.each( {
|
|
26760
27055
|
}, jQuery.event.addProp );
|
26761
27056
|
|
26762
27057
|
jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) {
|
26763
|
-
|
26764
|
-
function focusMappedHandler( nativeEvent ) {
|
26765
|
-
if ( document.documentMode ) {
|
26766
|
-
|
26767
|
-
// Support: IE 11+
|
26768
|
-
// Attach a single focusin/focusout handler on the document while someone wants
|
26769
|
-
// focus/blur. This is because the former are synchronous in IE while the latter
|
26770
|
-
// are async. In other browsers, all those handlers are invoked synchronously.
|
26771
|
-
|
26772
|
-
// `handle` from private data would already wrap the event, but we need
|
26773
|
-
// to change the `type` here.
|
26774
|
-
var handle = dataPriv.get( this, "handle" ),
|
26775
|
-
event = jQuery.event.fix( nativeEvent );
|
26776
|
-
event.type = nativeEvent.type === "focusin" ? "focus" : "blur";
|
26777
|
-
event.isSimulated = true;
|
26778
|
-
|
26779
|
-
// First, handle focusin/focusout
|
26780
|
-
handle( nativeEvent );
|
26781
|
-
|
26782
|
-
// ...then, handle focus/blur
|
26783
|
-
//
|
26784
|
-
// focus/blur don't bubble while focusin/focusout do; simulate the former by only
|
26785
|
-
// invoking the handler at the lower level.
|
26786
|
-
if ( event.target === event.currentTarget ) {
|
26787
|
-
|
26788
|
-
// The setup part calls `leverageNative`, which, in turn, calls
|
26789
|
-
// `jQuery.event.add`, so event handle will already have been set
|
26790
|
-
// by this point.
|
26791
|
-
handle( event );
|
26792
|
-
}
|
26793
|
-
} else {
|
26794
|
-
|
26795
|
-
// For non-IE browsers, attach a single capturing handler on the document
|
26796
|
-
// while someone wants focusin/focusout.
|
26797
|
-
jQuery.event.simulate( delegateType, nativeEvent.target,
|
26798
|
-
jQuery.event.fix( nativeEvent ) );
|
26799
|
-
}
|
26800
|
-
}
|
26801
|
-
|
26802
27058
|
jQuery.event.special[ type ] = {
|
26803
27059
|
|
26804
27060
|
// Utilize native event if possible so blur/focus sequence is correct
|
26805
27061
|
setup: function() {
|
26806
27062
|
|
26807
|
-
var attaches;
|
26808
|
-
|
26809
27063
|
// Claim the first handler
|
26810
27064
|
// dataPriv.set( this, "focus", ... )
|
26811
27065
|
// dataPriv.set( this, "blur", ... )
|
26812
|
-
leverageNative( this, type,
|
26813
|
-
|
26814
|
-
if ( document.documentMode ) {
|
26815
|
-
|
26816
|
-
// Support: IE 9 - 11+
|
26817
|
-
// We use the same native handler for focusin & focus (and focusout & blur)
|
26818
|
-
// so we need to coordinate setup & teardown parts between those events.
|
26819
|
-
// Use `delegateType` as the key as `type` is already used by `leverageNative`.
|
26820
|
-
attaches = dataPriv.get( this, delegateType );
|
26821
|
-
if ( !attaches ) {
|
26822
|
-
this.addEventListener( delegateType, focusMappedHandler );
|
26823
|
-
}
|
26824
|
-
dataPriv.set( this, delegateType, ( attaches || 0 ) + 1 );
|
26825
|
-
} else {
|
27066
|
+
leverageNative( this, type, expectSync );
|
26826
27067
|
|
26827
|
-
|
26828
|
-
|
26829
|
-
}
|
27068
|
+
// Return false to allow normal processing in the caller
|
27069
|
+
return false;
|
26830
27070
|
},
|
26831
27071
|
trigger: function() {
|
26832
27072
|
|
@@ -26837,84 +27077,14 @@ jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateTyp
|
|
26837
27077
|
return true;
|
26838
27078
|
},
|
26839
27079
|
|
26840
|
-
|
26841
|
-
|
26842
|
-
|
26843
|
-
|
26844
|
-
attaches = dataPriv.get( this, delegateType ) - 1;
|
26845
|
-
if ( !attaches ) {
|
26846
|
-
this.removeEventListener( delegateType, focusMappedHandler );
|
26847
|
-
dataPriv.remove( this, delegateType );
|
26848
|
-
} else {
|
26849
|
-
dataPriv.set( this, delegateType, attaches );
|
26850
|
-
}
|
26851
|
-
} else {
|
26852
|
-
|
26853
|
-
// Return false to indicate standard teardown should be applied
|
26854
|
-
return false;
|
26855
|
-
}
|
26856
|
-
},
|
26857
|
-
|
26858
|
-
// Suppress native focus or blur if we're currently inside
|
26859
|
-
// a leveraged native-event stack
|
26860
|
-
_default: function( event ) {
|
26861
|
-
return dataPriv.get( event.target, type );
|
27080
|
+
// Suppress native focus or blur as it's already being fired
|
27081
|
+
// in leverageNative.
|
27082
|
+
_default: function() {
|
27083
|
+
return true;
|
26862
27084
|
},
|
26863
27085
|
|
26864
27086
|
delegateType: delegateType
|
26865
27087
|
};
|
26866
|
-
|
26867
|
-
// Support: Firefox <=44
|
26868
|
-
// Firefox doesn't have focus(in | out) events
|
26869
|
-
// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
|
26870
|
-
//
|
26871
|
-
// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
|
26872
|
-
// focus(in | out) events fire after focus & blur events,
|
26873
|
-
// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
|
26874
|
-
// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
|
26875
|
-
//
|
26876
|
-
// Support: IE 9 - 11+
|
26877
|
-
// To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,
|
26878
|
-
// attach a single handler for both events in IE.
|
26879
|
-
jQuery.event.special[ delegateType ] = {
|
26880
|
-
setup: function() {
|
26881
|
-
|
26882
|
-
// Handle: regular nodes (via `this.ownerDocument`), window
|
26883
|
-
// (via `this.document`) & document (via `this`).
|
26884
|
-
var doc = this.ownerDocument || this.document || this,
|
26885
|
-
dataHolder = document.documentMode ? this : doc,
|
26886
|
-
attaches = dataPriv.get( dataHolder, delegateType );
|
26887
|
-
|
26888
|
-
// Support: IE 9 - 11+
|
26889
|
-
// We use the same native handler for focusin & focus (and focusout & blur)
|
26890
|
-
// so we need to coordinate setup & teardown parts between those events.
|
26891
|
-
// Use `delegateType` as the key as `type` is already used by `leverageNative`.
|
26892
|
-
if ( !attaches ) {
|
26893
|
-
if ( document.documentMode ) {
|
26894
|
-
this.addEventListener( delegateType, focusMappedHandler );
|
26895
|
-
} else {
|
26896
|
-
doc.addEventListener( type, focusMappedHandler, true );
|
26897
|
-
}
|
26898
|
-
}
|
26899
|
-
dataPriv.set( dataHolder, delegateType, ( attaches || 0 ) + 1 );
|
26900
|
-
},
|
26901
|
-
teardown: function() {
|
26902
|
-
var doc = this.ownerDocument || this.document || this,
|
26903
|
-
dataHolder = document.documentMode ? this : doc,
|
26904
|
-
attaches = dataPriv.get( dataHolder, delegateType ) - 1;
|
26905
|
-
|
26906
|
-
if ( !attaches ) {
|
26907
|
-
if ( document.documentMode ) {
|
26908
|
-
this.removeEventListener( delegateType, focusMappedHandler );
|
26909
|
-
} else {
|
26910
|
-
doc.removeEventListener( type, focusMappedHandler, true );
|
26911
|
-
}
|
26912
|
-
dataPriv.remove( dataHolder, delegateType );
|
26913
|
-
} else {
|
26914
|
-
dataPriv.set( dataHolder, delegateType, attaches );
|
26915
|
-
}
|
26916
|
-
}
|
26917
|
-
};
|
26918
27088
|
} );
|
26919
27089
|
|
26920
27090
|
// Create mouseenter/leave events using mouseover/out and event-time checks
|
@@ -27009,8 +27179,7 @@ var
|
|
27009
27179
|
|
27010
27180
|
// checked="checked" or checked
|
27011
27181
|
rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
|
27012
|
-
|
27013
|
-
rcleanScript = /^\s*<!\[CDATA\[|\]\]>\s*$/g;
|
27182
|
+
rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
|
27014
27183
|
|
27015
27184
|
// Prefer a tbody over its parent table for containing new rows
|
27016
27185
|
function manipulationTarget( elem, content ) {
|
@@ -27124,7 +27293,7 @@ function domManip( collection, args, callback, ignored ) {
|
|
27124
27293
|
|
27125
27294
|
// Use the original fragment for the last item
|
27126
27295
|
// instead of the first because it can end up
|
27127
|
-
// being emptied incorrectly in certain situations (
|
27296
|
+
// being emptied incorrectly in certain situations (#8070).
|
27128
27297
|
for ( ; i < l; i++ ) {
|
27129
27298
|
node = fragment;
|
27130
27299
|
|
@@ -27146,7 +27315,7 @@ function domManip( collection, args, callback, ignored ) {
|
|
27146
27315
|
if ( hasScripts ) {
|
27147
27316
|
doc = scripts[ scripts.length - 1 ].ownerDocument;
|
27148
27317
|
|
27149
|
-
//
|
27318
|
+
// Reenable scripts
|
27150
27319
|
jQuery.map( scripts, restoreScript );
|
27151
27320
|
|
27152
27321
|
// Evaluate executable scripts on first document insertion
|
@@ -27165,12 +27334,6 @@ function domManip( collection, args, callback, ignored ) {
|
|
27165
27334
|
}, doc );
|
27166
27335
|
}
|
27167
27336
|
} else {
|
27168
|
-
|
27169
|
-
// Unwrap a CDATA section containing script contents. This shouldn't be
|
27170
|
-
// needed as in XML documents they're already not visible when
|
27171
|
-
// inspecting element contents and in HTML documents they have no
|
27172
|
-
// meaning but we're preserving that logic for backwards compatibility.
|
27173
|
-
// This will be removed completely in 4.0. See gh-4904.
|
27174
27337
|
DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc );
|
27175
27338
|
}
|
27176
27339
|
}
|
@@ -27217,8 +27380,7 @@ jQuery.extend( {
|
|
27217
27380
|
if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
|
27218
27381
|
!jQuery.isXMLDoc( elem ) ) {
|
27219
27382
|
|
27220
|
-
// We eschew
|
27221
|
-
// https://jsperf.com/getall-vs-sizzle/2
|
27383
|
+
// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2
|
27222
27384
|
destElements = getAll( clone );
|
27223
27385
|
srcElements = getAll( elem );
|
27224
27386
|
|
@@ -27454,12 +27616,9 @@ jQuery.each( {
|
|
27454
27616
|
} );
|
27455
27617
|
var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
|
27456
27618
|
|
27457
|
-
var rcustomProp = /^--/;
|
27458
|
-
|
27459
|
-
|
27460
27619
|
var getStyles = function( elem ) {
|
27461
27620
|
|
27462
|
-
// Support: IE <=11 only, Firefox <=30 (
|
27621
|
+
// Support: IE <=11 only, Firefox <=30 (#15098, #14150)
|
27463
27622
|
// IE throws on elements created in popups
|
27464
27623
|
// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
|
27465
27624
|
var view = elem.ownerDocument.defaultView;
|
@@ -27559,7 +27718,7 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
|
|
27559
27718
|
}
|
27560
27719
|
|
27561
27720
|
// Support: IE <=9 - 11 only
|
27562
|
-
// Style of cloned element affects source element cloned (
|
27721
|
+
// Style of cloned element affects source element cloned (#8908)
|
27563
27722
|
div.style.backgroundClip = "content-box";
|
27564
27723
|
div.cloneNode( true ).style.backgroundClip = "";
|
27565
27724
|
support.clearCloneStyle = div.style.backgroundClip === "content-box";
|
@@ -27603,7 +27762,7 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
|
|
27603
27762
|
trChild = document.createElement( "div" );
|
27604
27763
|
|
27605
27764
|
table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate";
|
27606
|
-
tr.style.cssText = "
|
27765
|
+
tr.style.cssText = "border:1px solid";
|
27607
27766
|
|
27608
27767
|
// Support: Chrome 86+
|
27609
27768
|
// Height set through cssText does not get applied.
|
@@ -27615,7 +27774,7 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
|
|
27615
27774
|
// In our bodyBackground.html iframe,
|
27616
27775
|
// display for all div elements is set to "inline",
|
27617
27776
|
// which causes a problem only in Android 8 Chrome 86.
|
27618
|
-
// Ensuring the div is
|
27777
|
+
// Ensuring the div is display: block
|
27619
27778
|
// gets around this issue.
|
27620
27779
|
trChild.style.display = "block";
|
27621
27780
|
|
@@ -27639,7 +27798,6 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
|
|
27639
27798
|
|
27640
27799
|
function curCSS( elem, name, computed ) {
|
27641
27800
|
var width, minWidth, maxWidth, ret,
|
27642
|
-
isCustomProp = rcustomProp.test( name ),
|
27643
27801
|
|
27644
27802
|
// Support: Firefox 51+
|
27645
27803
|
// Retrieving style before computed somehow
|
@@ -27650,42 +27808,11 @@ function curCSS( elem, name, computed ) {
|
|
27650
27808
|
computed = computed || getStyles( elem );
|
27651
27809
|
|
27652
27810
|
// getPropertyValue is needed for:
|
27653
|
-
// .css('filter') (IE 9 only,
|
27654
|
-
// .css('--customProperty) (
|
27811
|
+
// .css('filter') (IE 9 only, #12537)
|
27812
|
+
// .css('--customProperty) (#3144)
|
27655
27813
|
if ( computed ) {
|
27656
|
-
|
27657
|
-
// Support: IE <=9 - 11+
|
27658
|
-
// IE only supports `"float"` in `getPropertyValue`; in computed styles
|
27659
|
-
// it's only available as `"cssFloat"`. We no longer modify properties
|
27660
|
-
// sent to `.css()` apart from camelCasing, so we need to check both.
|
27661
|
-
// Normally, this would create difference in behavior: if
|
27662
|
-
// `getPropertyValue` returns an empty string, the value returned
|
27663
|
-
// by `.css()` would be `undefined`. This is usually the case for
|
27664
|
-
// disconnected elements. However, in IE even disconnected elements
|
27665
|
-
// with no styles return `"none"` for `getPropertyValue( "float" )`
|
27666
27814
|
ret = computed.getPropertyValue( name ) || computed[ name ];
|
27667
27815
|
|
27668
|
-
if ( isCustomProp && ret ) {
|
27669
|
-
|
27670
|
-
// Support: Firefox 105+, Chrome <=105+
|
27671
|
-
// Spec requires trimming whitespace for custom properties (gh-4926).
|
27672
|
-
// Firefox only trims leading whitespace. Chrome just collapses
|
27673
|
-
// both leading & trailing whitespace to a single space.
|
27674
|
-
//
|
27675
|
-
// Fall back to `undefined` if empty string returned.
|
27676
|
-
// This collapses a missing definition with property defined
|
27677
|
-
// and set to an empty string but there's no standard API
|
27678
|
-
// allowing us to differentiate them without a performance penalty
|
27679
|
-
// and returning `undefined` aligns with older jQuery.
|
27680
|
-
//
|
27681
|
-
// rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED
|
27682
|
-
// as whitespace while CSS does not, but this is not a problem
|
27683
|
-
// because CSS preprocessing replaces them with U+000A LINE FEED
|
27684
|
-
// (which *is* CSS whitespace)
|
27685
|
-
// https://www.w3.org/TR/css-syntax-3/#input-preprocessing
|
27686
|
-
ret = ret.replace( rtrimCSS, "$1" ) || undefined;
|
27687
|
-
}
|
27688
|
-
|
27689
27816
|
if ( ret === "" && !isAttached( elem ) ) {
|
27690
27817
|
ret = jQuery.style( elem, name );
|
27691
27818
|
}
|
@@ -27781,6 +27908,7 @@ var
|
|
27781
27908
|
// except "table", "table-cell", or "table-caption"
|
27782
27909
|
// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
|
27783
27910
|
rdisplayswap = /^(none|table(?!-c[ea]).+)/,
|
27911
|
+
rcustomProp = /^--/,
|
27784
27912
|
cssShow = { position: "absolute", visibility: "hidden", display: "block" },
|
27785
27913
|
cssNormalTransform = {
|
27786
27914
|
letterSpacing: "0",
|
@@ -27802,8 +27930,7 @@ function setPositiveNumber( _elem, value, subtract ) {
|
|
27802
27930
|
function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {
|
27803
27931
|
var i = dimension === "width" ? 1 : 0,
|
27804
27932
|
extra = 0,
|
27805
|
-
delta = 0
|
27806
|
-
marginDelta = 0;
|
27933
|
+
delta = 0;
|
27807
27934
|
|
27808
27935
|
// Adjustment may not be necessary
|
27809
27936
|
if ( box === ( isBorderBox ? "border" : "content" ) ) {
|
@@ -27813,10 +27940,8 @@ function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computed
|
|
27813
27940
|
for ( ; i < 4; i += 2 ) {
|
27814
27941
|
|
27815
27942
|
// Both box models exclude margin
|
27816
|
-
// Count margin delta separately to only add it after scroll gutter adjustment.
|
27817
|
-
// This is needed to make negative margins work with `outerHeight( true )` (gh-3982).
|
27818
27943
|
if ( box === "margin" ) {
|
27819
|
-
|
27944
|
+
delta += jQuery.css( elem, box + cssExpand[ i ], true, styles );
|
27820
27945
|
}
|
27821
27946
|
|
27822
27947
|
// If we get here with a content-box, we're seeking "padding" or "border" or "margin"
|
@@ -27867,7 +27992,7 @@ function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computed
|
|
27867
27992
|
) ) || 0;
|
27868
27993
|
}
|
27869
27994
|
|
27870
|
-
return delta
|
27995
|
+
return delta;
|
27871
27996
|
}
|
27872
27997
|
|
27873
27998
|
function getWidthOrHeight( elem, dimension, extra ) {
|
@@ -27965,35 +28090,26 @@ jQuery.extend( {
|
|
27965
28090
|
|
27966
28091
|
// Don't automatically add "px" to these possibly-unitless properties
|
27967
28092
|
cssNumber: {
|
27968
|
-
animationIterationCount: true,
|
27969
|
-
|
27970
|
-
|
27971
|
-
|
27972
|
-
|
27973
|
-
|
27974
|
-
|
27975
|
-
|
27976
|
-
|
27977
|
-
|
27978
|
-
|
27979
|
-
|
27980
|
-
|
27981
|
-
|
27982
|
-
|
27983
|
-
|
27984
|
-
|
27985
|
-
|
27986
|
-
|
27987
|
-
|
27988
|
-
zIndex: true,
|
27989
|
-
zoom: true,
|
27990
|
-
|
27991
|
-
// SVG-related
|
27992
|
-
fillOpacity: true,
|
27993
|
-
floodOpacity: true,
|
27994
|
-
stopOpacity: true,
|
27995
|
-
strokeMiterlimit: true,
|
27996
|
-
strokeOpacity: true
|
28093
|
+
"animationIterationCount": true,
|
28094
|
+
"columnCount": true,
|
28095
|
+
"fillOpacity": true,
|
28096
|
+
"flexGrow": true,
|
28097
|
+
"flexShrink": true,
|
28098
|
+
"fontWeight": true,
|
28099
|
+
"gridArea": true,
|
28100
|
+
"gridColumn": true,
|
28101
|
+
"gridColumnEnd": true,
|
28102
|
+
"gridColumnStart": true,
|
28103
|
+
"gridRow": true,
|
28104
|
+
"gridRowEnd": true,
|
28105
|
+
"gridRowStart": true,
|
28106
|
+
"lineHeight": true,
|
28107
|
+
"opacity": true,
|
28108
|
+
"order": true,
|
28109
|
+
"orphans": true,
|
28110
|
+
"widows": true,
|
28111
|
+
"zIndex": true,
|
28112
|
+
"zoom": true
|
27997
28113
|
},
|
27998
28114
|
|
27999
28115
|
// Add in properties whose names you wish to fix before
|
@@ -28028,15 +28144,15 @@ jQuery.extend( {
|
|
28028
28144
|
if ( value !== undefined ) {
|
28029
28145
|
type = typeof value;
|
28030
28146
|
|
28031
|
-
// Convert "+=" or "-=" to relative numbers (
|
28147
|
+
// Convert "+=" or "-=" to relative numbers (#7345)
|
28032
28148
|
if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
|
28033
28149
|
value = adjustCSS( elem, name, ret );
|
28034
28150
|
|
28035
|
-
// Fixes bug
|
28151
|
+
// Fixes bug #9237
|
28036
28152
|
type = "number";
|
28037
28153
|
}
|
28038
28154
|
|
28039
|
-
// Make sure that null and NaN values aren't set (
|
28155
|
+
// Make sure that null and NaN values aren't set (#7116)
|
28040
28156
|
if ( value == null || value !== value ) {
|
28041
28157
|
return;
|
28042
28158
|
}
|
@@ -28660,7 +28776,7 @@ function Animation( elem, properties, options ) {
|
|
28660
28776
|
remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
|
28661
28777
|
|
28662
28778
|
// Support: Android 2.3 only
|
28663
|
-
// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (
|
28779
|
+
// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
|
28664
28780
|
temp = remaining / animation.duration || 0,
|
28665
28781
|
percent = 1 - temp,
|
28666
28782
|
index = 0,
|
@@ -29050,6 +29166,7 @@ jQuery.fx.speeds = {
|
|
29050
29166
|
|
29051
29167
|
|
29052
29168
|
// Based off of the plugin by Clint Helfers, with permission.
|
29169
|
+
// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
|
29053
29170
|
jQuery.fn.delay = function( time, type ) {
|
29054
29171
|
time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
|
29055
29172
|
type = type || "fx";
|
@@ -29274,7 +29391,8 @@ jQuery.extend( {
|
|
29274
29391
|
// Support: IE <=9 - 11 only
|
29275
29392
|
// elem.tabIndex doesn't always return the
|
29276
29393
|
// correct value when it hasn't been explicitly set
|
29277
|
-
//
|
29394
|
+
// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
|
29395
|
+
// Use proper attribute retrieval(#12072)
|
29278
29396
|
var tabindex = jQuery.find.attr( elem, "tabindex" );
|
29279
29397
|
|
29280
29398
|
if ( tabindex ) {
|
@@ -29378,7 +29496,8 @@ function classesToArray( value ) {
|
|
29378
29496
|
|
29379
29497
|
jQuery.fn.extend( {
|
29380
29498
|
addClass: function( value ) {
|
29381
|
-
var
|
29499
|
+
var classes, elem, cur, curValue, clazz, j, finalValue,
|
29500
|
+
i = 0;
|
29382
29501
|
|
29383
29502
|
if ( isFunction( value ) ) {
|
29384
29503
|
return this.each( function( j ) {
|
@@ -29386,35 +29505,36 @@ jQuery.fn.extend( {
|
|
29386
29505
|
} );
|
29387
29506
|
}
|
29388
29507
|
|
29389
|
-
|
29508
|
+
classes = classesToArray( value );
|
29390
29509
|
|
29391
|
-
if (
|
29392
|
-
|
29393
|
-
curValue = getClass(
|
29394
|
-
cur =
|
29510
|
+
if ( classes.length ) {
|
29511
|
+
while ( ( elem = this[ i++ ] ) ) {
|
29512
|
+
curValue = getClass( elem );
|
29513
|
+
cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
|
29395
29514
|
|
29396
29515
|
if ( cur ) {
|
29397
|
-
|
29398
|
-
|
29399
|
-
if ( cur.indexOf( " " +
|
29400
|
-
cur +=
|
29516
|
+
j = 0;
|
29517
|
+
while ( ( clazz = classes[ j++ ] ) ) {
|
29518
|
+
if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
|
29519
|
+
cur += clazz + " ";
|
29401
29520
|
}
|
29402
29521
|
}
|
29403
29522
|
|
29404
29523
|
// Only assign if different to avoid unneeded rendering.
|
29405
29524
|
finalValue = stripAndCollapse( cur );
|
29406
29525
|
if ( curValue !== finalValue ) {
|
29407
|
-
|
29526
|
+
elem.setAttribute( "class", finalValue );
|
29408
29527
|
}
|
29409
29528
|
}
|
29410
|
-
}
|
29529
|
+
}
|
29411
29530
|
}
|
29412
29531
|
|
29413
29532
|
return this;
|
29414
29533
|
},
|
29415
29534
|
|
29416
29535
|
removeClass: function( value ) {
|
29417
|
-
var
|
29536
|
+
var classes, elem, cur, curValue, clazz, j, finalValue,
|
29537
|
+
i = 0;
|
29418
29538
|
|
29419
29539
|
if ( isFunction( value ) ) {
|
29420
29540
|
return this.each( function( j ) {
|
@@ -29426,42 +29546,45 @@ jQuery.fn.extend( {
|
|
29426
29546
|
return this.attr( "class", "" );
|
29427
29547
|
}
|
29428
29548
|
|
29429
|
-
|
29549
|
+
classes = classesToArray( value );
|
29430
29550
|
|
29431
|
-
if (
|
29432
|
-
|
29433
|
-
curValue = getClass(
|
29551
|
+
if ( classes.length ) {
|
29552
|
+
while ( ( elem = this[ i++ ] ) ) {
|
29553
|
+
curValue = getClass( elem );
|
29434
29554
|
|
29435
29555
|
// This expression is here for better compressibility (see addClass)
|
29436
|
-
cur =
|
29556
|
+
cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
|
29437
29557
|
|
29438
29558
|
if ( cur ) {
|
29439
|
-
|
29440
|
-
|
29559
|
+
j = 0;
|
29560
|
+
while ( ( clazz = classes[ j++ ] ) ) {
|
29441
29561
|
|
29442
29562
|
// Remove *all* instances
|
29443
|
-
while ( cur.indexOf( " " +
|
29444
|
-
cur = cur.replace( " " +
|
29563
|
+
while ( cur.indexOf( " " + clazz + " " ) > -1 ) {
|
29564
|
+
cur = cur.replace( " " + clazz + " ", " " );
|
29445
29565
|
}
|
29446
29566
|
}
|
29447
29567
|
|
29448
29568
|
// Only assign if different to avoid unneeded rendering.
|
29449
29569
|
finalValue = stripAndCollapse( cur );
|
29450
29570
|
if ( curValue !== finalValue ) {
|
29451
|
-
|
29571
|
+
elem.setAttribute( "class", finalValue );
|
29452
29572
|
}
|
29453
29573
|
}
|
29454
|
-
}
|
29574
|
+
}
|
29455
29575
|
}
|
29456
29576
|
|
29457
29577
|
return this;
|
29458
29578
|
},
|
29459
29579
|
|
29460
29580
|
toggleClass: function( value, stateVal ) {
|
29461
|
-
var
|
29462
|
-
type = typeof value,
|
29581
|
+
var type = typeof value,
|
29463
29582
|
isValidValue = type === "string" || Array.isArray( value );
|
29464
29583
|
|
29584
|
+
if ( typeof stateVal === "boolean" && isValidValue ) {
|
29585
|
+
return stateVal ? this.addClass( value ) : this.removeClass( value );
|
29586
|
+
}
|
29587
|
+
|
29465
29588
|
if ( isFunction( value ) ) {
|
29466
29589
|
return this.each( function( i ) {
|
29467
29590
|
jQuery( this ).toggleClass(
|
@@ -29471,20 +29594,17 @@ jQuery.fn.extend( {
|
|
29471
29594
|
} );
|
29472
29595
|
}
|
29473
29596
|
|
29474
|
-
if ( typeof stateVal === "boolean" && isValidValue ) {
|
29475
|
-
return stateVal ? this.addClass( value ) : this.removeClass( value );
|
29476
|
-
}
|
29477
|
-
|
29478
|
-
classNames = classesToArray( value );
|
29479
|
-
|
29480
29597
|
return this.each( function() {
|
29598
|
+
var className, i, self, classNames;
|
29599
|
+
|
29481
29600
|
if ( isValidValue ) {
|
29482
29601
|
|
29483
29602
|
// Toggle individual class names
|
29603
|
+
i = 0;
|
29484
29604
|
self = jQuery( this );
|
29605
|
+
classNames = classesToArray( value );
|
29485
29606
|
|
29486
|
-
|
29487
|
-
className = classNames[ i ];
|
29607
|
+
while ( ( className = classNames[ i++ ] ) ) {
|
29488
29608
|
|
29489
29609
|
// Check each className given, space separated list
|
29490
29610
|
if ( self.hasClass( className ) ) {
|
@@ -29618,7 +29738,7 @@ jQuery.extend( {
|
|
29618
29738
|
val :
|
29619
29739
|
|
29620
29740
|
// Support: IE <=10 - 11 only
|
29621
|
-
// option.text throws exceptions (
|
29741
|
+
// option.text throws exceptions (#14686, #14858)
|
29622
29742
|
// Strip and collapse whitespace
|
29623
29743
|
// https://html.spec.whatwg.org/#strip-and-collapse-whitespace
|
29624
29744
|
stripAndCollapse( jQuery.text( elem ) );
|
@@ -29645,7 +29765,7 @@ jQuery.extend( {
|
|
29645
29765
|
option = options[ i ];
|
29646
29766
|
|
29647
29767
|
// Support: IE <=9 only
|
29648
|
-
// IE8-9 doesn't update selected after form reset (
|
29768
|
+
// IE8-9 doesn't update selected after form reset (#2551)
|
29649
29769
|
if ( ( option.selected || i === index ) &&
|
29650
29770
|
|
29651
29771
|
// Don't return options that are disabled or in a disabled optgroup
|
@@ -29719,39 +29839,9 @@ jQuery.each( [ "radio", "checkbox" ], function() {
|
|
29719
29839
|
|
29720
29840
|
|
29721
29841
|
// Return jQuery for attributes-only inclusion
|
29722
|
-
var location = window.location;
|
29723
|
-
|
29724
|
-
var nonce = { guid: Date.now() };
|
29725
|
-
|
29726
|
-
var rquery = ( /\?/ );
|
29727
|
-
|
29728
29842
|
|
29729
29843
|
|
29730
|
-
|
29731
|
-
jQuery.parseXML = function( data ) {
|
29732
|
-
var xml, parserErrorElem;
|
29733
|
-
if ( !data || typeof data !== "string" ) {
|
29734
|
-
return null;
|
29735
|
-
}
|
29736
|
-
|
29737
|
-
// Support: IE 9 - 11 only
|
29738
|
-
// IE throws on parseFromString with invalid input.
|
29739
|
-
try {
|
29740
|
-
xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
|
29741
|
-
} catch ( e ) {}
|
29742
|
-
|
29743
|
-
parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ];
|
29744
|
-
if ( !xml || parserErrorElem ) {
|
29745
|
-
jQuery.error( "Invalid XML: " + (
|
29746
|
-
parserErrorElem ?
|
29747
|
-
jQuery.map( parserErrorElem.childNodes, function( el ) {
|
29748
|
-
return el.textContent;
|
29749
|
-
} ).join( "\n" ) :
|
29750
|
-
data
|
29751
|
-
) );
|
29752
|
-
}
|
29753
|
-
return xml;
|
29754
|
-
};
|
29844
|
+
support.focusin = "onfocusin" in window;
|
29755
29845
|
|
29756
29846
|
|
29757
29847
|
var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
|
@@ -29818,8 +29908,8 @@ jQuery.extend( jQuery.event, {
|
|
29818
29908
|
return;
|
29819
29909
|
}
|
29820
29910
|
|
29821
|
-
// Determine event propagation path in advance, per W3C events spec (
|
29822
|
-
// Bubble up to document, then to window; watch for a global ownerDocument var (
|
29911
|
+
// Determine event propagation path in advance, per W3C events spec (#9951)
|
29912
|
+
// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
|
29823
29913
|
if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {
|
29824
29914
|
|
29825
29915
|
bubbleType = special.delegateType || type;
|
@@ -29871,7 +29961,7 @@ jQuery.extend( jQuery.event, {
|
|
29871
29961
|
acceptData( elem ) ) {
|
29872
29962
|
|
29873
29963
|
// Call a native DOM method on the target with the same name as the event.
|
29874
|
-
// Don't do default actions on window, that's where global variables be (
|
29964
|
+
// Don't do default actions on window, that's where global variables be (#6170)
|
29875
29965
|
if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {
|
29876
29966
|
|
29877
29967
|
// Don't re-trigger an onFOO event when we call its FOO() method
|
@@ -29939,6 +30029,85 @@ jQuery.fn.extend( {
|
|
29939
30029
|
} );
|
29940
30030
|
|
29941
30031
|
|
30032
|
+
// Support: Firefox <=44
|
30033
|
+
// Firefox doesn't have focus(in | out) events
|
30034
|
+
// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
|
30035
|
+
//
|
30036
|
+
// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
|
30037
|
+
// focus(in | out) events fire after focus & blur events,
|
30038
|
+
// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
|
30039
|
+
// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
|
30040
|
+
if ( !support.focusin ) {
|
30041
|
+
jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {
|
30042
|
+
|
30043
|
+
// Attach a single capturing handler on the document while someone wants focusin/focusout
|
30044
|
+
var handler = function( event ) {
|
30045
|
+
jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );
|
30046
|
+
};
|
30047
|
+
|
30048
|
+
jQuery.event.special[ fix ] = {
|
30049
|
+
setup: function() {
|
30050
|
+
|
30051
|
+
// Handle: regular nodes (via `this.ownerDocument`), window
|
30052
|
+
// (via `this.document`) & document (via `this`).
|
30053
|
+
var doc = this.ownerDocument || this.document || this,
|
30054
|
+
attaches = dataPriv.access( doc, fix );
|
30055
|
+
|
30056
|
+
if ( !attaches ) {
|
30057
|
+
doc.addEventListener( orig, handler, true );
|
30058
|
+
}
|
30059
|
+
dataPriv.access( doc, fix, ( attaches || 0 ) + 1 );
|
30060
|
+
},
|
30061
|
+
teardown: function() {
|
30062
|
+
var doc = this.ownerDocument || this.document || this,
|
30063
|
+
attaches = dataPriv.access( doc, fix ) - 1;
|
30064
|
+
|
30065
|
+
if ( !attaches ) {
|
30066
|
+
doc.removeEventListener( orig, handler, true );
|
30067
|
+
dataPriv.remove( doc, fix );
|
30068
|
+
|
30069
|
+
} else {
|
30070
|
+
dataPriv.access( doc, fix, attaches );
|
30071
|
+
}
|
30072
|
+
}
|
30073
|
+
};
|
30074
|
+
} );
|
30075
|
+
}
|
30076
|
+
var location = window.location;
|
30077
|
+
|
30078
|
+
var nonce = { guid: Date.now() };
|
30079
|
+
|
30080
|
+
var rquery = ( /\?/ );
|
30081
|
+
|
30082
|
+
|
30083
|
+
|
30084
|
+
// Cross-browser xml parsing
|
30085
|
+
jQuery.parseXML = function( data ) {
|
30086
|
+
var xml, parserErrorElem;
|
30087
|
+
if ( !data || typeof data !== "string" ) {
|
30088
|
+
return null;
|
30089
|
+
}
|
30090
|
+
|
30091
|
+
// Support: IE 9 - 11 only
|
30092
|
+
// IE throws on parseFromString with invalid input.
|
30093
|
+
try {
|
30094
|
+
xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
|
30095
|
+
} catch ( e ) {}
|
30096
|
+
|
30097
|
+
parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ];
|
30098
|
+
if ( !xml || parserErrorElem ) {
|
30099
|
+
jQuery.error( "Invalid XML: " + (
|
30100
|
+
parserErrorElem ?
|
30101
|
+
jQuery.map( parserErrorElem.childNodes, function( el ) {
|
30102
|
+
return el.textContent;
|
30103
|
+
} ).join( "\n" ) :
|
30104
|
+
data
|
30105
|
+
) );
|
30106
|
+
}
|
30107
|
+
return xml;
|
30108
|
+
};
|
30109
|
+
|
30110
|
+
|
29942
30111
|
var
|
29943
30112
|
rbracket = /\[\]$/,
|
29944
30113
|
rCRLF = /\r?\n/g,
|
@@ -30066,7 +30235,7 @@ var
|
|
30066
30235
|
rantiCache = /([?&])_=[^&]*/,
|
30067
30236
|
rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
|
30068
30237
|
|
30069
|
-
//
|
30238
|
+
// #7653, #8125, #8152: local protocol detection
|
30070
30239
|
rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
|
30071
30240
|
rnoContent = /^(?:GET|HEAD)$/,
|
30072
30241
|
rprotocol = /^\/\//,
|
@@ -30089,7 +30258,7 @@ var
|
|
30089
30258
|
*/
|
30090
30259
|
transports = {},
|
30091
30260
|
|
30092
|
-
// Avoid comment-prolog char sequence (
|
30261
|
+
// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
|
30093
30262
|
allTypes = "*/".concat( "*" ),
|
30094
30263
|
|
30095
30264
|
// Anchor tag for parsing the document origin
|
@@ -30160,7 +30329,7 @@ function inspectPrefiltersOrTransports( structure, options, originalOptions, jqX
|
|
30160
30329
|
|
30161
30330
|
// A special extend for ajax options
|
30162
30331
|
// that takes "flat" options (not to be deep extended)
|
30163
|
-
// Fixes
|
30332
|
+
// Fixes #9887
|
30164
30333
|
function ajaxExtend( target, src ) {
|
30165
30334
|
var key, deep,
|
30166
30335
|
flatOptions = jQuery.ajaxSettings.flatOptions || {};
|
@@ -30571,12 +30740,12 @@ jQuery.extend( {
|
|
30571
30740
|
deferred.promise( jqXHR );
|
30572
30741
|
|
30573
30742
|
// Add protocol if not provided (prefilters might expect it)
|
30574
|
-
// Handle falsy url in the settings object (
|
30743
|
+
// Handle falsy url in the settings object (#10093: consistency with old signature)
|
30575
30744
|
// We also use the url parameter if available
|
30576
30745
|
s.url = ( ( url || s.url || location.href ) + "" )
|
30577
30746
|
.replace( rprotocol, location.protocol + "//" );
|
30578
30747
|
|
30579
|
-
// Alias method option to type as per ticket
|
30748
|
+
// Alias method option to type as per ticket #12004
|
30580
30749
|
s.type = options.method || options.type || s.method || s.type;
|
30581
30750
|
|
30582
30751
|
// Extract dataTypes list
|
@@ -30619,7 +30788,7 @@ jQuery.extend( {
|
|
30619
30788
|
}
|
30620
30789
|
|
30621
30790
|
// We can fire global events as of now if asked to
|
30622
|
-
// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (
|
30791
|
+
// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
|
30623
30792
|
fireGlobals = jQuery.event && s.global;
|
30624
30793
|
|
30625
30794
|
// Watch for a new set of requests
|
@@ -30648,7 +30817,7 @@ jQuery.extend( {
|
|
30648
30817
|
if ( s.data && ( s.processData || typeof s.data === "string" ) ) {
|
30649
30818
|
cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data;
|
30650
30819
|
|
30651
|
-
//
|
30820
|
+
// #9682: remove data so that it's not used in an eventual retry
|
30652
30821
|
delete s.data;
|
30653
30822
|
}
|
30654
30823
|
|
@@ -30921,7 +31090,7 @@ jQuery._evalUrl = function( url, options, doc ) {
|
|
30921
31090
|
return jQuery.ajax( {
|
30922
31091
|
url: url,
|
30923
31092
|
|
30924
|
-
// Make this explicit, since user can override this through ajaxSetup (
|
31093
|
+
// Make this explicit, since user can override this through ajaxSetup (#11264)
|
30925
31094
|
type: "GET",
|
30926
31095
|
dataType: "script",
|
30927
31096
|
cache: true,
|
@@ -31030,7 +31199,7 @@ var xhrSuccessStatus = {
|
|
31030
31199
|
0: 200,
|
31031
31200
|
|
31032
31201
|
// Support: IE <=9 only
|
31033
|
-
//
|
31202
|
+
// #1450: sometimes IE returns 1223 when it should be 204
|
31034
31203
|
1223: 204
|
31035
31204
|
},
|
31036
31205
|
xhrSupported = jQuery.ajaxSettings.xhr();
|
@@ -31102,7 +31271,7 @@ jQuery.ajaxTransport( function( options ) {
|
|
31102
31271
|
} else {
|
31103
31272
|
complete(
|
31104
31273
|
|
31105
|
-
// File: protocol always yields status 0; see
|
31274
|
+
// File: protocol always yields status 0; see #8605, #14207
|
31106
31275
|
xhr.status,
|
31107
31276
|
xhr.statusText
|
31108
31277
|
);
|
@@ -31163,7 +31332,7 @@ jQuery.ajaxTransport( function( options ) {
|
|
31163
31332
|
xhr.send( options.hasContent && options.data || null );
|
31164
31333
|
} catch ( e ) {
|
31165
31334
|
|
31166
|
-
//
|
31335
|
+
// #14683: Only rethrow if this hasn't been notified as an error yet
|
31167
31336
|
if ( callback ) {
|
31168
31337
|
throw e;
|
31169
31338
|
}
|
@@ -31783,9 +31952,7 @@ jQuery.fn.extend( {
|
|
31783
31952
|
},
|
31784
31953
|
|
31785
31954
|
hover: function( fnOver, fnOut ) {
|
31786
|
-
return this
|
31787
|
-
.on( "mouseenter", fnOver )
|
31788
|
-
.on( "mouseleave", fnOut || fnOver );
|
31955
|
+
return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
|
31789
31956
|
}
|
31790
31957
|
} );
|
31791
31958
|
|
@@ -31809,9 +31976,7 @@ jQuery.each(
|
|
31809
31976
|
|
31810
31977
|
// Support: Android <=4.0 only
|
31811
31978
|
// Make sure we trim BOM and NBSP
|
31812
|
-
|
31813
|
-
// to avoid O(N^2) behavior when the engine would try matching "\s+$" at each space position.
|
31814
|
-
var rtrim = /^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;
|
31979
|
+
var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
|
31815
31980
|
|
31816
31981
|
// Bind a function to a context, optionally partially applying any
|
31817
31982
|
// arguments.
|
@@ -31878,7 +32043,7 @@ jQuery.isNumeric = function( obj ) {
|
|
31878
32043
|
jQuery.trim = function( text ) {
|
31879
32044
|
return text == null ?
|
31880
32045
|
"" :
|
31881
|
-
( text + "" ).replace( rtrim, "
|
32046
|
+
( text + "" ).replace( rtrim, "" );
|
31882
32047
|
};
|
31883
32048
|
|
31884
32049
|
|
@@ -31926,8 +32091,8 @@ jQuery.noConflict = function( deep ) {
|
|
31926
32091
|
};
|
31927
32092
|
|
31928
32093
|
// Expose jQuery and $ identifiers, even in AMD
|
31929
|
-
// (
|
31930
|
-
// and CommonJS for browser emulators (
|
32094
|
+
// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
|
32095
|
+
// and CommonJS for browser emulators (#13566)
|
31931
32096
|
if ( typeof noGlobal === "undefined" ) {
|
31932
32097
|
window.jQuery = window.$ = jQuery;
|
31933
32098
|
}
|