hof 20.4.0-beta-session-timeout → 20.4.0-beta-new-crown
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
}
|