pghero 3.2.0 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/app/assets/javascripts/pghero/application.js +13 -12
- data/app/assets/javascripts/pghero/highlight.min.js +373 -0
- data/app/assets/javascripts/pghero/jquery.js +318 -197
- data/app/assets/javascripts/pghero/nouislider.js +676 -1066
- data/app/assets/stylesheets/pghero/application.css +6 -0
- data/app/assets/stylesheets/pghero/nouislider.css +4 -10
- data/app/controllers/pg_hero/home_controller.rb +30 -9
- data/app/helpers/pg_hero/home_helper.rb +2 -2
- data/app/views/layouts/pg_hero/application.html.erb +1 -1
- data/app/views/pg_hero/home/_query_stats_slider.html.erb +6 -6
- data/app/views/pg_hero/home/connections.html.erb +6 -6
- data/app/views/pg_hero/home/index.html.erb +3 -1
- data/app/views/pg_hero/home/relation_space.html.erb +1 -1
- data/app/views/pg_hero/home/show_query.html.erb +16 -12
- data/app/views/pg_hero/home/space.html.erb +44 -40
- data/app/views/pg_hero/home/system.html.erb +6 -6
- data/lib/generators/pghero/query_stats_generator.rb +1 -0
- data/lib/generators/pghero/space_stats_generator.rb +1 -0
- data/lib/pghero/engine.rb +1 -1
- data/lib/pghero/methods/basic.rb +5 -8
- data/lib/pghero/methods/connections.rb +4 -4
- data/lib/pghero/methods/constraints.rb +1 -1
- data/lib/pghero/methods/indexes.rb +8 -8
- data/lib/pghero/methods/kill.rb +1 -1
- data/lib/pghero/methods/maintenance.rb +3 -3
- data/lib/pghero/methods/queries.rb +2 -2
- data/lib/pghero/methods/query_stats.rb +16 -17
- data/lib/pghero/methods/replication.rb +2 -2
- data/lib/pghero/methods/sequences.rb +2 -2
- data/lib/pghero/methods/space.rb +15 -10
- data/lib/pghero/methods/suggested_indexes.rb +2 -2
- data/lib/pghero/methods/tables.rb +4 -5
- data/lib/pghero/version.rb +1 -1
- data/lib/pghero.rb +2 -0
- metadata +3 -3
- data/app/assets/javascripts/pghero/highlight.pack.js +0 -2
@@ -1,15 +1,15 @@
|
|
1
1
|
/*!
|
2
|
-
* jQuery JavaScript Library v3.
|
2
|
+
* jQuery JavaScript Library v3.6.3
|
3
3
|
* https://jquery.com/
|
4
4
|
*
|
5
5
|
* Includes Sizzle.js
|
6
6
|
* https://sizzlejs.com/
|
7
7
|
*
|
8
|
-
* Copyright
|
8
|
+
* Copyright OpenJS Foundation and other contributors
|
9
9
|
* Released under the MIT license
|
10
10
|
* https://jquery.org/license
|
11
11
|
*
|
12
|
-
* Date:
|
12
|
+
* Date: 2022-12-20T21:28Z
|
13
13
|
*/
|
14
14
|
( function( global, factory ) {
|
15
15
|
|
@@ -23,7 +23,7 @@
|
|
23
23
|
// (such as Node.js), expose a factory as module.exports.
|
24
24
|
// This accentuates the need for the creation of a real `window`.
|
25
25
|
// e.g. var jQuery = require("jquery")(window);
|
26
|
-
// See ticket
|
26
|
+
// See ticket trac-14549 for more info.
|
27
27
|
module.exports = global.document ?
|
28
28
|
factory( global, true ) :
|
29
29
|
function( w ) {
|
@@ -76,12 +76,16 @@ var support = {};
|
|
76
76
|
|
77
77
|
var isFunction = function isFunction( obj ) {
|
78
78
|
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
79
|
+
// Support: Chrome <=57, Firefox <=52
|
80
|
+
// In some browsers, typeof returns "function" for HTML <object> elements
|
81
|
+
// (i.e., `typeof document.createElement( "object" ) === "function"`).
|
82
|
+
// We don't want to classify *any* DOM node as a function.
|
83
|
+
// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5
|
84
|
+
// Plus for old WebKit, typeof returns "function" for HTML collections
|
85
|
+
// (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756)
|
86
|
+
return typeof obj === "function" && typeof obj.nodeType !== "number" &&
|
87
|
+
typeof obj.item !== "function";
|
88
|
+
};
|
85
89
|
|
86
90
|
|
87
91
|
var isWindow = function isWindow( obj ) {
|
@@ -147,7 +151,7 @@ function toType( obj ) {
|
|
147
151
|
|
148
152
|
|
149
153
|
var
|
150
|
-
version = "3.
|
154
|
+
version = "3.6.3",
|
151
155
|
|
152
156
|
// Define a local copy of jQuery
|
153
157
|
jQuery = function( selector, context ) {
|
@@ -401,7 +405,7 @@ jQuery.extend( {
|
|
401
405
|
if ( isArrayLike( Object( arr ) ) ) {
|
402
406
|
jQuery.merge( ret,
|
403
407
|
typeof arr === "string" ?
|
404
|
-
|
408
|
+
[ arr ] : arr
|
405
409
|
);
|
406
410
|
} else {
|
407
411
|
push.call( ret, arr );
|
@@ -496,9 +500,9 @@ if ( typeof Symbol === "function" ) {
|
|
496
500
|
|
497
501
|
// Populate the class2type map
|
498
502
|
jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
|
499
|
-
function( _i, name ) {
|
500
|
-
|
501
|
-
} );
|
503
|
+
function( _i, name ) {
|
504
|
+
class2type[ "[object " + name + "]" ] = name.toLowerCase();
|
505
|
+
} );
|
502
506
|
|
503
507
|
function isArrayLike( obj ) {
|
504
508
|
|
@@ -518,14 +522,14 @@ function isArrayLike( obj ) {
|
|
518
522
|
}
|
519
523
|
var Sizzle =
|
520
524
|
/*!
|
521
|
-
* Sizzle CSS Selector Engine v2.3.
|
525
|
+
* Sizzle CSS Selector Engine v2.3.9
|
522
526
|
* https://sizzlejs.com/
|
523
527
|
*
|
524
528
|
* Copyright JS Foundation and other contributors
|
525
529
|
* Released under the MIT license
|
526
530
|
* https://js.foundation/
|
527
531
|
*
|
528
|
-
* Date:
|
532
|
+
* Date: 2022-12-19
|
529
533
|
*/
|
530
534
|
( function( window ) {
|
531
535
|
var i,
|
@@ -875,6 +879,27 @@ function Sizzle( selector, context, results, seed ) {
|
|
875
879
|
}
|
876
880
|
|
877
881
|
try {
|
882
|
+
|
883
|
+
// `qSA` may not throw for unrecognized parts using forgiving parsing:
|
884
|
+
// https://drafts.csswg.org/selectors/#forgiving-selector
|
885
|
+
// like the `:has()` pseudo-class:
|
886
|
+
// https://drafts.csswg.org/selectors/#relational
|
887
|
+
// `CSS.supports` is still expected to return `false` then:
|
888
|
+
// https://drafts.csswg.org/css-conditional-4/#typedef-supports-selector-fn
|
889
|
+
// https://drafts.csswg.org/css-conditional-4/#dfn-support-selector
|
890
|
+
if ( support.cssSupportsSelector &&
|
891
|
+
|
892
|
+
// eslint-disable-next-line no-undef
|
893
|
+
!CSS.supports( "selector(:is(" + newSelector + "))" ) ) {
|
894
|
+
|
895
|
+
// Support: IE 11+
|
896
|
+
// Throw to get to the same code path as an error directly in qSA.
|
897
|
+
// Note: once we only support browser supporting
|
898
|
+
// `CSS.supports('selector(...)')`, we can most likely drop
|
899
|
+
// the `try-catch`. IE doesn't implement the API.
|
900
|
+
throw new Error();
|
901
|
+
}
|
902
|
+
|
878
903
|
push.apply( results,
|
879
904
|
newContext.querySelectorAll( newSelector )
|
880
905
|
);
|
@@ -1108,8 +1133,8 @@ support = Sizzle.support = {};
|
|
1108
1133
|
* @returns {Boolean} True iff elem is a non-HTML XML node
|
1109
1134
|
*/
|
1110
1135
|
isXML = Sizzle.isXML = function( elem ) {
|
1111
|
-
var namespace = elem.namespaceURI,
|
1112
|
-
docElem = ( elem.ownerDocument || elem ).documentElement;
|
1136
|
+
var namespace = elem && elem.namespaceURI,
|
1137
|
+
docElem = elem && ( elem.ownerDocument || elem ).documentElement;
|
1113
1138
|
|
1114
1139
|
// Support: IE <=8
|
1115
1140
|
// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes
|
@@ -1170,6 +1195,31 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
1170
1195
|
!el.querySelectorAll( ":scope fieldset div" ).length;
|
1171
1196
|
} );
|
1172
1197
|
|
1198
|
+
// Support: Chrome 105+, Firefox 104+, Safari 15.4+
|
1199
|
+
// Make sure forgiving mode is not used in `CSS.supports( "selector(...)" )`.
|
1200
|
+
//
|
1201
|
+
// `:is()` uses a forgiving selector list as an argument and is widely
|
1202
|
+
// implemented, so it's a good one to test against.
|
1203
|
+
support.cssSupportsSelector = assert( function() {
|
1204
|
+
/* eslint-disable no-undef */
|
1205
|
+
|
1206
|
+
return CSS.supports( "selector(*)" ) &&
|
1207
|
+
|
1208
|
+
// Support: Firefox 78-81 only
|
1209
|
+
// In old Firefox, `:is()` didn't use forgiving parsing. In that case,
|
1210
|
+
// fail this test as there's no selector to test against that.
|
1211
|
+
// `CSS.supports` uses unforgiving parsing
|
1212
|
+
document.querySelectorAll( ":is(:jqfake)" ) &&
|
1213
|
+
|
1214
|
+
// `*` is needed as Safari & newer Chrome implemented something in between
|
1215
|
+
// for `:has()` - it throws in `qSA` if it only contains an unsupported
|
1216
|
+
// argument but multiple ones, one of which is supported, are fine.
|
1217
|
+
// We want to play safe in case `:is()` gets the same treatment.
|
1218
|
+
!CSS.supports( "selector(:is(*,:jqfake))" );
|
1219
|
+
|
1220
|
+
/* eslint-enable */
|
1221
|
+
} );
|
1222
|
+
|
1173
1223
|
/* Attributes
|
1174
1224
|
---------------------------------------------------------------------- */
|
1175
1225
|
|
@@ -1436,6 +1486,17 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
1436
1486
|
} );
|
1437
1487
|
}
|
1438
1488
|
|
1489
|
+
if ( !support.cssSupportsSelector ) {
|
1490
|
+
|
1491
|
+
// Support: Chrome 105+, Safari 15.4+
|
1492
|
+
// `:has()` uses a forgiving selector list as an argument so our regular
|
1493
|
+
// `try-catch` mechanism fails to catch `:has()` with arguments not supported
|
1494
|
+
// natively like `:has(:contains("Foo"))`. Where supported & spec-compliant,
|
1495
|
+
// we now use `CSS.supports("selector(:is(SELECTOR_TO_BE_TESTED))")`, but
|
1496
|
+
// outside that we mark `:has` as buggy.
|
1497
|
+
rbuggyQSA.push( ":has" );
|
1498
|
+
}
|
1499
|
+
|
1439
1500
|
rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) );
|
1440
1501
|
rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) );
|
1441
1502
|
|
@@ -1448,7 +1509,14 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
1448
1509
|
// As in, an element does not contain itself
|
1449
1510
|
contains = hasCompare || rnative.test( docElem.contains ) ?
|
1450
1511
|
function( a, b ) {
|
1451
|
-
|
1512
|
+
|
1513
|
+
// Support: IE <9 only
|
1514
|
+
// IE doesn't have `contains` on `document` so we need to check for
|
1515
|
+
// `documentElement` presence.
|
1516
|
+
// We need to fall back to `a` when `documentElement` is missing
|
1517
|
+
// as `ownerDocument` of elements within `<template/>` may have
|
1518
|
+
// a null one - a default behavior of all modern browsers.
|
1519
|
+
var adown = a.nodeType === 9 && a.documentElement || a,
|
1452
1520
|
bup = b && b.parentNode;
|
1453
1521
|
return a === bup || !!( bup && bup.nodeType === 1 && (
|
1454
1522
|
adown.contains ?
|
@@ -2238,7 +2306,7 @@ Expr = Sizzle.selectors = {
|
|
2238
2306
|
return elem.nodeName.toLowerCase() === "input" &&
|
2239
2307
|
elem.type === "text" &&
|
2240
2308
|
|
2241
|
-
// Support: IE<
|
2309
|
+
// Support: IE <10 only
|
2242
2310
|
// New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
|
2243
2311
|
( ( attr = elem.getAttribute( "type" ) ) == null ||
|
2244
2312
|
attr.toLowerCase() === "text" );
|
@@ -3024,9 +3092,9 @@ var rneedsContext = jQuery.expr.match.needsContext;
|
|
3024
3092
|
|
3025
3093
|
function nodeName( elem, name ) {
|
3026
3094
|
|
3027
|
-
|
3095
|
+
return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
|
3028
3096
|
|
3029
|
-
}
|
3097
|
+
}
|
3030
3098
|
var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
|
3031
3099
|
|
3032
3100
|
|
@@ -3125,8 +3193,8 @@ jQuery.fn.extend( {
|
|
3125
3193
|
var rootjQuery,
|
3126
3194
|
|
3127
3195
|
// A simple way to check for HTML strings
|
3128
|
-
// Prioritize #id over <tag> to avoid XSS via location.hash (
|
3129
|
-
// Strict HTML recognition (
|
3196
|
+
// Prioritize #id over <tag> to avoid XSS via location.hash (trac-9521)
|
3197
|
+
// Strict HTML recognition (trac-11290: must start with <)
|
3130
3198
|
// Shortcut simple #id case for speed
|
3131
3199
|
rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
|
3132
3200
|
|
@@ -3997,8 +4065,8 @@ jQuery.extend( {
|
|
3997
4065
|
resolveContexts = Array( i ),
|
3998
4066
|
resolveValues = slice.call( arguments ),
|
3999
4067
|
|
4000
|
-
// the
|
4001
|
-
|
4068
|
+
// the primary Deferred
|
4069
|
+
primary = jQuery.Deferred(),
|
4002
4070
|
|
4003
4071
|
// subordinate callback factory
|
4004
4072
|
updateFunc = function( i ) {
|
@@ -4006,30 +4074,30 @@ jQuery.extend( {
|
|
4006
4074
|
resolveContexts[ i ] = this;
|
4007
4075
|
resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
|
4008
4076
|
if ( !( --remaining ) ) {
|
4009
|
-
|
4077
|
+
primary.resolveWith( resolveContexts, resolveValues );
|
4010
4078
|
}
|
4011
4079
|
};
|
4012
4080
|
};
|
4013
4081
|
|
4014
4082
|
// Single- and empty arguments are adopted like Promise.resolve
|
4015
4083
|
if ( remaining <= 1 ) {
|
4016
|
-
adoptValue( singleValue,
|
4084
|
+
adoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,
|
4017
4085
|
!remaining );
|
4018
4086
|
|
4019
4087
|
// Use .then() to unwrap secondary thenables (cf. gh-3000)
|
4020
|
-
if (
|
4088
|
+
if ( primary.state() === "pending" ||
|
4021
4089
|
isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
|
4022
4090
|
|
4023
|
-
return
|
4091
|
+
return primary.then();
|
4024
4092
|
}
|
4025
4093
|
}
|
4026
4094
|
|
4027
4095
|
// Multiple arguments are aggregated like Promise.all array elements
|
4028
4096
|
while ( i-- ) {
|
4029
|
-
adoptValue( resolveValues[ i ], updateFunc( i ),
|
4097
|
+
adoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );
|
4030
4098
|
}
|
4031
4099
|
|
4032
|
-
return
|
4100
|
+
return primary.promise();
|
4033
4101
|
}
|
4034
4102
|
} );
|
4035
4103
|
|
@@ -4083,7 +4151,7 @@ jQuery.extend( {
|
|
4083
4151
|
isReady: false,
|
4084
4152
|
|
4085
4153
|
// A counter to track how many items to wait for before
|
4086
|
-
// the ready event fires. See
|
4154
|
+
// the ready event fires. See trac-6781
|
4087
4155
|
readyWait: 1,
|
4088
4156
|
|
4089
4157
|
// Handle when the DOM is ready
|
@@ -4180,8 +4248,8 @@ var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
|
|
4180
4248
|
for ( ; i < len; i++ ) {
|
4181
4249
|
fn(
|
4182
4250
|
elems[ i ], key, raw ?
|
4183
|
-
|
4184
|
-
|
4251
|
+
value :
|
4252
|
+
value.call( elems[ i ], i, fn( elems[ i ], key ) )
|
4185
4253
|
);
|
4186
4254
|
}
|
4187
4255
|
}
|
@@ -4211,7 +4279,7 @@ function fcamelCase( _all, letter ) {
|
|
4211
4279
|
|
4212
4280
|
// Convert dashed to camelCase; used by the css and data modules
|
4213
4281
|
// Support: IE <=9 - 11, Edge 12 - 15
|
4214
|
-
// Microsoft forgot to hump their vendor prefix (
|
4282
|
+
// Microsoft forgot to hump their vendor prefix (trac-9572)
|
4215
4283
|
function camelCase( string ) {
|
4216
4284
|
return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
|
4217
4285
|
}
|
@@ -4247,7 +4315,7 @@ Data.prototype = {
|
|
4247
4315
|
value = {};
|
4248
4316
|
|
4249
4317
|
// We can accept data for non-element nodes in modern browsers,
|
4250
|
-
// but we should not, see
|
4318
|
+
// but we should not, see trac-8335.
|
4251
4319
|
// Always return an empty object.
|
4252
4320
|
if ( acceptData( owner ) ) {
|
4253
4321
|
|
@@ -4486,7 +4554,7 @@ jQuery.fn.extend( {
|
|
4486
4554
|
while ( i-- ) {
|
4487
4555
|
|
4488
4556
|
// Support: IE 11 only
|
4489
|
-
// The attrs elements can be null (
|
4557
|
+
// The attrs elements can be null (trac-14894)
|
4490
4558
|
if ( attrs[ i ] ) {
|
4491
4559
|
name = attrs[ i ].name;
|
4492
4560
|
if ( name.indexOf( "data-" ) === 0 ) {
|
@@ -4909,9 +4977,9 @@ var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i );
|
|
4909
4977
|
input = document.createElement( "input" );
|
4910
4978
|
|
4911
4979
|
// Support: Android 4.0 - 4.3 only
|
4912
|
-
// Check state lost if the name is set (
|
4980
|
+
// Check state lost if the name is set (trac-11217)
|
4913
4981
|
// Support: Windows Web Apps (WWA)
|
4914
|
-
// `name` and `type` must use .setAttribute for WWA (
|
4982
|
+
// `name` and `type` must use .setAttribute for WWA (trac-14901)
|
4915
4983
|
input.setAttribute( "type", "radio" );
|
4916
4984
|
input.setAttribute( "checked", "checked" );
|
4917
4985
|
input.setAttribute( "name", "t" );
|
@@ -4935,7 +5003,7 @@ var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i );
|
|
4935
5003
|
} )();
|
4936
5004
|
|
4937
5005
|
|
4938
|
-
// We have to close these tags to support XHTML (
|
5006
|
+
// We have to close these tags to support XHTML (trac-13200)
|
4939
5007
|
var wrapMap = {
|
4940
5008
|
|
4941
5009
|
// XHTML parsers do not magically insert elements in the
|
@@ -4961,7 +5029,7 @@ if ( !support.option ) {
|
|
4961
5029
|
function getAll( context, tag ) {
|
4962
5030
|
|
4963
5031
|
// Support: IE <=9 - 11 only
|
4964
|
-
// Use typeof to avoid zero-argument method invocation on host objects (
|
5032
|
+
// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)
|
4965
5033
|
var ret;
|
4966
5034
|
|
4967
5035
|
if ( typeof context.getElementsByTagName !== "undefined" ) {
|
@@ -5044,7 +5112,7 @@ function buildFragment( elems, context, scripts, selection, ignored ) {
|
|
5044
5112
|
// Remember the top-level container
|
5045
5113
|
tmp = fragment.firstChild;
|
5046
5114
|
|
5047
|
-
// Ensure the created nodes are orphaned (
|
5115
|
+
// Ensure the created nodes are orphaned (trac-12392)
|
5048
5116
|
tmp.textContent = "";
|
5049
5117
|
}
|
5050
5118
|
}
|
@@ -5089,10 +5157,7 @@ function buildFragment( elems, context, scripts, selection, ignored ) {
|
|
5089
5157
|
}
|
5090
5158
|
|
5091
5159
|
|
5092
|
-
var
|
5093
|
-
rkeyEvent = /^key/,
|
5094
|
-
rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
|
5095
|
-
rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
|
5160
|
+
var rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
|
5096
5161
|
|
5097
5162
|
function returnTrue() {
|
5098
5163
|
return true;
|
@@ -5387,8 +5452,8 @@ jQuery.event = {
|
|
5387
5452
|
event = jQuery.event.fix( nativeEvent ),
|
5388
5453
|
|
5389
5454
|
handlers = (
|
5390
|
-
|
5391
|
-
|
5455
|
+
dataPriv.get( this, "events" ) || Object.create( null )
|
5456
|
+
)[ event.type ] || [],
|
5392
5457
|
special = jQuery.event.special[ event.type ] || {};
|
5393
5458
|
|
5394
5459
|
// Use the fix-ed jQuery.Event rather than the (read-only) native event
|
@@ -5468,15 +5533,15 @@ jQuery.event = {
|
|
5468
5533
|
|
5469
5534
|
for ( ; cur !== this; cur = cur.parentNode || this ) {
|
5470
5535
|
|
5471
|
-
// Don't check non-elements (
|
5472
|
-
// Don't process clicks on disabled elements (
|
5536
|
+
// Don't check non-elements (trac-13208)
|
5537
|
+
// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)
|
5473
5538
|
if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
|
5474
5539
|
matchedHandlers = [];
|
5475
5540
|
matchedSelectors = {};
|
5476
5541
|
for ( i = 0; i < delegateCount; i++ ) {
|
5477
5542
|
handleObj = handlers[ i ];
|
5478
5543
|
|
5479
|
-
// Don't conflict with Object.prototype properties (
|
5544
|
+
// Don't conflict with Object.prototype properties (trac-13203)
|
5480
5545
|
sel = handleObj.selector + " ";
|
5481
5546
|
|
5482
5547
|
if ( matchedSelectors[ sel ] === undefined ) {
|
@@ -5512,12 +5577,12 @@ jQuery.event = {
|
|
5512
5577
|
get: isFunction( hook ) ?
|
5513
5578
|
function() {
|
5514
5579
|
if ( this.originalEvent ) {
|
5515
|
-
|
5580
|
+
return hook( this.originalEvent );
|
5516
5581
|
}
|
5517
5582
|
} :
|
5518
5583
|
function() {
|
5519
5584
|
if ( this.originalEvent ) {
|
5520
|
-
|
5585
|
+
return this.originalEvent[ name ];
|
5521
5586
|
}
|
5522
5587
|
},
|
5523
5588
|
|
@@ -5656,7 +5721,13 @@ function leverageNative( el, type, expectSync ) {
|
|
5656
5721
|
// Cancel the outer synthetic event
|
5657
5722
|
event.stopImmediatePropagation();
|
5658
5723
|
event.preventDefault();
|
5659
|
-
|
5724
|
+
|
5725
|
+
// Support: Chrome 86+
|
5726
|
+
// In Chrome, if an element having a focusout handler is blurred by
|
5727
|
+
// clicking outside of it, it invokes the handler synchronously. If
|
5728
|
+
// that handler calls `.remove()` on the element, the data is cleared,
|
5729
|
+
// leaving `result` undefined. We need to guard against this.
|
5730
|
+
return result && result.value;
|
5660
5731
|
}
|
5661
5732
|
|
5662
5733
|
// If this is an inner synthetic event for an event with a bubbling surrogate
|
@@ -5724,7 +5795,7 @@ jQuery.Event = function( src, props ) {
|
|
5724
5795
|
|
5725
5796
|
// Create target properties
|
5726
5797
|
// Support: Safari <=6 - 7 only
|
5727
|
-
// Target should not be a text node (
|
5798
|
+
// Target should not be a text node (trac-504, trac-13143)
|
5728
5799
|
this.target = ( src.target && src.target.nodeType === 3 ) ?
|
5729
5800
|
src.target.parentNode :
|
5730
5801
|
src.target;
|
@@ -5821,34 +5892,7 @@ jQuery.each( {
|
|
5821
5892
|
targetTouches: true,
|
5822
5893
|
toElement: true,
|
5823
5894
|
touches: true,
|
5824
|
-
|
5825
|
-
which: function( event ) {
|
5826
|
-
var button = event.button;
|
5827
|
-
|
5828
|
-
// Add which for key events
|
5829
|
-
if ( event.which == null && rkeyEvent.test( event.type ) ) {
|
5830
|
-
return event.charCode != null ? event.charCode : event.keyCode;
|
5831
|
-
}
|
5832
|
-
|
5833
|
-
// Add which for click: 1 === left; 2 === middle; 3 === right
|
5834
|
-
if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {
|
5835
|
-
if ( button & 1 ) {
|
5836
|
-
return 1;
|
5837
|
-
}
|
5838
|
-
|
5839
|
-
if ( button & 2 ) {
|
5840
|
-
return 3;
|
5841
|
-
}
|
5842
|
-
|
5843
|
-
if ( button & 4 ) {
|
5844
|
-
return 2;
|
5845
|
-
}
|
5846
|
-
|
5847
|
-
return 0;
|
5848
|
-
}
|
5849
|
-
|
5850
|
-
return event.which;
|
5851
|
-
}
|
5895
|
+
which: true
|
5852
5896
|
}, jQuery.event.addProp );
|
5853
5897
|
|
5854
5898
|
jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) {
|
@@ -5874,6 +5918,12 @@ jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateTyp
|
|
5874
5918
|
return true;
|
5875
5919
|
},
|
5876
5920
|
|
5921
|
+
// Suppress native focus or blur if we're currently inside
|
5922
|
+
// a leveraged native-event stack
|
5923
|
+
_default: function( event ) {
|
5924
|
+
return dataPriv.get( event.target, type );
|
5925
|
+
},
|
5926
|
+
|
5877
5927
|
delegateType: delegateType
|
5878
5928
|
};
|
5879
5929
|
} );
|
@@ -5970,7 +6020,8 @@ var
|
|
5970
6020
|
|
5971
6021
|
// checked="checked" or checked
|
5972
6022
|
rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
|
5973
|
-
|
6023
|
+
|
6024
|
+
rcleanScript = /^\s*<!\[CDATA\[|\]\]>\s*$/g;
|
5974
6025
|
|
5975
6026
|
// Prefer a tbody over its parent table for containing new rows
|
5976
6027
|
function manipulationTarget( elem, content ) {
|
@@ -6084,7 +6135,7 @@ function domManip( collection, args, callback, ignored ) {
|
|
6084
6135
|
|
6085
6136
|
// Use the original fragment for the last item
|
6086
6137
|
// instead of the first because it can end up
|
6087
|
-
// being emptied incorrectly in certain situations (
|
6138
|
+
// being emptied incorrectly in certain situations (trac-8070).
|
6088
6139
|
for ( ; i < l; i++ ) {
|
6089
6140
|
node = fragment;
|
6090
6141
|
|
@@ -6125,6 +6176,12 @@ function domManip( collection, args, callback, ignored ) {
|
|
6125
6176
|
}, doc );
|
6126
6177
|
}
|
6127
6178
|
} else {
|
6179
|
+
|
6180
|
+
// Unwrap a CDATA section containing script contents. This shouldn't be
|
6181
|
+
// needed as in XML documents they're already not visible when
|
6182
|
+
// inspecting element contents and in HTML documents they have no
|
6183
|
+
// meaning but we're preserving that logic for backwards compatibility.
|
6184
|
+
// This will be removed completely in 4.0. See gh-4904.
|
6128
6185
|
DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc );
|
6129
6186
|
}
|
6130
6187
|
}
|
@@ -6407,9 +6464,12 @@ jQuery.each( {
|
|
6407
6464
|
} );
|
6408
6465
|
var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
|
6409
6466
|
|
6467
|
+
var rcustomProp = /^--/;
|
6468
|
+
|
6469
|
+
|
6410
6470
|
var getStyles = function( elem ) {
|
6411
6471
|
|
6412
|
-
// Support: IE <=11 only, Firefox <=30 (
|
6472
|
+
// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)
|
6413
6473
|
// IE throws on elements created in popups
|
6414
6474
|
// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
|
6415
6475
|
var view = elem.ownerDocument.defaultView;
|
@@ -6444,6 +6504,15 @@ var swap = function( elem, options, callback ) {
|
|
6444
6504
|
|
6445
6505
|
var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
|
6446
6506
|
|
6507
|
+
var whitespace = "[\\x20\\t\\r\\n\\f]";
|
6508
|
+
|
6509
|
+
|
6510
|
+
var rtrimCSS = new RegExp(
|
6511
|
+
"^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$",
|
6512
|
+
"g"
|
6513
|
+
);
|
6514
|
+
|
6515
|
+
|
6447
6516
|
|
6448
6517
|
|
6449
6518
|
( function() {
|
@@ -6509,7 +6578,7 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
|
|
6509
6578
|
}
|
6510
6579
|
|
6511
6580
|
// Support: IE <=9 - 11 only
|
6512
|
-
// Style of cloned element affects source element cloned (
|
6581
|
+
// Style of cloned element affects source element cloned (trac-8908)
|
6513
6582
|
div.style.backgroundClip = "content-box";
|
6514
6583
|
div.cloneNode( true ).style.backgroundClip = "";
|
6515
6584
|
support.clearCloneStyle = div.style.backgroundClip === "content-box";
|
@@ -6541,6 +6610,10 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
|
|
6541
6610
|
// set in CSS while `offset*` properties report correct values.
|
6542
6611
|
// Behavior in IE 9 is more subtle than in newer versions & it passes
|
6543
6612
|
// some versions of this test; make sure not to make it pass there!
|
6613
|
+
//
|
6614
|
+
// Support: Firefox 70+
|
6615
|
+
// Only Firefox includes border widths
|
6616
|
+
// in computed dimensions. (gh-4529)
|
6544
6617
|
reliableTrDimensions: function() {
|
6545
6618
|
var table, tr, trChild, trStyle;
|
6546
6619
|
if ( reliableTrDimensionsVal == null ) {
|
@@ -6548,17 +6621,32 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
|
|
6548
6621
|
tr = document.createElement( "tr" );
|
6549
6622
|
trChild = document.createElement( "div" );
|
6550
6623
|
|
6551
|
-
table.style.cssText = "position:absolute;left:-11111px";
|
6624
|
+
table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate";
|
6625
|
+
tr.style.cssText = "border:1px solid";
|
6626
|
+
|
6627
|
+
// Support: Chrome 86+
|
6628
|
+
// Height set through cssText does not get applied.
|
6629
|
+
// Computed height then comes back as 0.
|
6552
6630
|
tr.style.height = "1px";
|
6553
6631
|
trChild.style.height = "9px";
|
6554
6632
|
|
6633
|
+
// Support: Android 8 Chrome 86+
|
6634
|
+
// In our bodyBackground.html iframe,
|
6635
|
+
// display for all div elements is set to "inline",
|
6636
|
+
// which causes a problem only in Android 8 Chrome 86.
|
6637
|
+
// Ensuring the div is display: block
|
6638
|
+
// gets around this issue.
|
6639
|
+
trChild.style.display = "block";
|
6640
|
+
|
6555
6641
|
documentElement
|
6556
6642
|
.appendChild( table )
|
6557
6643
|
.appendChild( tr )
|
6558
6644
|
.appendChild( trChild );
|
6559
6645
|
|
6560
6646
|
trStyle = window.getComputedStyle( tr );
|
6561
|
-
reliableTrDimensionsVal = parseInt( trStyle.height )
|
6647
|
+
reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +
|
6648
|
+
parseInt( trStyle.borderTopWidth, 10 ) +
|
6649
|
+
parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;
|
6562
6650
|
|
6563
6651
|
documentElement.removeChild( table );
|
6564
6652
|
}
|
@@ -6570,6 +6658,7 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
|
|
6570
6658
|
|
6571
6659
|
function curCSS( elem, name, computed ) {
|
6572
6660
|
var width, minWidth, maxWidth, ret,
|
6661
|
+
isCustomProp = rcustomProp.test( name ),
|
6573
6662
|
|
6574
6663
|
// Support: Firefox 51+
|
6575
6664
|
// Retrieving style before computed somehow
|
@@ -6580,11 +6669,42 @@ function curCSS( elem, name, computed ) {
|
|
6580
6669
|
computed = computed || getStyles( elem );
|
6581
6670
|
|
6582
6671
|
// getPropertyValue is needed for:
|
6583
|
-
// .css('filter') (IE 9 only,
|
6584
|
-
// .css('--customProperty) (
|
6672
|
+
// .css('filter') (IE 9 only, trac-12537)
|
6673
|
+
// .css('--customProperty) (gh-3144)
|
6585
6674
|
if ( computed ) {
|
6675
|
+
|
6676
|
+
// Support: IE <=9 - 11+
|
6677
|
+
// IE only supports `"float"` in `getPropertyValue`; in computed styles
|
6678
|
+
// it's only available as `"cssFloat"`. We no longer modify properties
|
6679
|
+
// sent to `.css()` apart from camelCasing, so we need to check both.
|
6680
|
+
// Normally, this would create difference in behavior: if
|
6681
|
+
// `getPropertyValue` returns an empty string, the value returned
|
6682
|
+
// by `.css()` would be `undefined`. This is usually the case for
|
6683
|
+
// disconnected elements. However, in IE even disconnected elements
|
6684
|
+
// with no styles return `"none"` for `getPropertyValue( "float" )`
|
6586
6685
|
ret = computed.getPropertyValue( name ) || computed[ name ];
|
6587
6686
|
|
6687
|
+
if ( isCustomProp && ret ) {
|
6688
|
+
|
6689
|
+
// Support: Firefox 105+, Chrome <=105+
|
6690
|
+
// Spec requires trimming whitespace for custom properties (gh-4926).
|
6691
|
+
// Firefox only trims leading whitespace. Chrome just collapses
|
6692
|
+
// both leading & trailing whitespace to a single space.
|
6693
|
+
//
|
6694
|
+
// Fall back to `undefined` if empty string returned.
|
6695
|
+
// This collapses a missing definition with property defined
|
6696
|
+
// and set to an empty string but there's no standard API
|
6697
|
+
// allowing us to differentiate them without a performance penalty
|
6698
|
+
// and returning `undefined` aligns with older jQuery.
|
6699
|
+
//
|
6700
|
+
// rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED
|
6701
|
+
// as whitespace while CSS does not, but this is not a problem
|
6702
|
+
// because CSS preprocessing replaces them with U+000A LINE FEED
|
6703
|
+
// (which *is* CSS whitespace)
|
6704
|
+
// https://www.w3.org/TR/css-syntax-3/#input-preprocessing
|
6705
|
+
ret = ret.replace( rtrimCSS, "$1" ) || undefined;
|
6706
|
+
}
|
6707
|
+
|
6588
6708
|
if ( ret === "" && !isAttached( elem ) ) {
|
6589
6709
|
ret = jQuery.style( elem, name );
|
6590
6710
|
}
|
@@ -6680,7 +6800,6 @@ var
|
|
6680
6800
|
// except "table", "table-cell", or "table-caption"
|
6681
6801
|
// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
|
6682
6802
|
rdisplayswap = /^(none|table(?!-c[ea]).+)/,
|
6683
|
-
rcustomProp = /^--/,
|
6684
6803
|
cssShow = { position: "absolute", visibility: "hidden", display: "block" },
|
6685
6804
|
cssNormalTransform = {
|
6686
6805
|
letterSpacing: "0",
|
@@ -6916,15 +7035,15 @@ jQuery.extend( {
|
|
6916
7035
|
if ( value !== undefined ) {
|
6917
7036
|
type = typeof value;
|
6918
7037
|
|
6919
|
-
// Convert "+=" or "-=" to relative numbers (
|
7038
|
+
// Convert "+=" or "-=" to relative numbers (trac-7345)
|
6920
7039
|
if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
|
6921
7040
|
value = adjustCSS( elem, name, ret );
|
6922
7041
|
|
6923
|
-
// Fixes bug
|
7042
|
+
// Fixes bug trac-9237
|
6924
7043
|
type = "number";
|
6925
7044
|
}
|
6926
7045
|
|
6927
|
-
// Make sure that null and NaN values aren't set (
|
7046
|
+
// Make sure that null and NaN values aren't set (trac-7116)
|
6928
7047
|
if ( value == null || value !== value ) {
|
6929
7048
|
return;
|
6930
7049
|
}
|
@@ -7022,10 +7141,10 @@ jQuery.each( [ "height", "width" ], function( _i, dimension ) {
|
|
7022
7141
|
// Running getBoundingClientRect on a disconnected node
|
7023
7142
|
// in IE throws an error.
|
7024
7143
|
( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
|
7025
|
-
|
7026
|
-
|
7027
|
-
|
7028
|
-
|
7144
|
+
swap( elem, cssShow, function() {
|
7145
|
+
return getWidthOrHeight( elem, dimension, extra );
|
7146
|
+
} ) :
|
7147
|
+
getWidthOrHeight( elem, dimension, extra );
|
7029
7148
|
}
|
7030
7149
|
},
|
7031
7150
|
|
@@ -7084,7 +7203,7 @@ jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
|
|
7084
7203
|
swap( elem, { marginLeft: 0 }, function() {
|
7085
7204
|
return elem.getBoundingClientRect().left;
|
7086
7205
|
} )
|
7087
|
-
|
7206
|
+
) + "px";
|
7088
7207
|
}
|
7089
7208
|
}
|
7090
7209
|
);
|
@@ -7223,7 +7342,7 @@ Tween.propHooks = {
|
|
7223
7342
|
if ( jQuery.fx.step[ tween.prop ] ) {
|
7224
7343
|
jQuery.fx.step[ tween.prop ]( tween );
|
7225
7344
|
} else if ( tween.elem.nodeType === 1 && (
|
7226
|
-
|
7345
|
+
jQuery.cssHooks[ tween.prop ] ||
|
7227
7346
|
tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {
|
7228
7347
|
jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
|
7229
7348
|
} else {
|
@@ -7468,7 +7587,7 @@ function defaultPrefilter( elem, props, opts ) {
|
|
7468
7587
|
|
7469
7588
|
anim.done( function() {
|
7470
7589
|
|
7471
|
-
|
7590
|
+
/* eslint-enable no-loop-func */
|
7472
7591
|
|
7473
7592
|
// The final step of a "hide" animation is actually hiding the element
|
7474
7593
|
if ( !hidden ) {
|
@@ -7548,7 +7667,7 @@ function Animation( elem, properties, options ) {
|
|
7548
7667
|
remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
|
7549
7668
|
|
7550
7669
|
// Support: Android 2.3 only
|
7551
|
-
// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (
|
7670
|
+
// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)
|
7552
7671
|
temp = remaining / animation.duration || 0,
|
7553
7672
|
percent = 1 - temp,
|
7554
7673
|
index = 0,
|
@@ -7588,7 +7707,7 @@ function Animation( elem, properties, options ) {
|
|
7588
7707
|
tweens: [],
|
7589
7708
|
createTween: function( prop, end ) {
|
7590
7709
|
var tween = jQuery.Tween( elem, animation.opts, prop, end,
|
7591
|
-
|
7710
|
+
animation.opts.specialEasing[ prop ] || animation.opts.easing );
|
7592
7711
|
animation.tweens.push( tween );
|
7593
7712
|
return tween;
|
7594
7713
|
},
|
@@ -7761,7 +7880,8 @@ jQuery.fn.extend( {
|
|
7761
7880
|
anim.stop( true );
|
7762
7881
|
}
|
7763
7882
|
};
|
7764
|
-
|
7883
|
+
|
7884
|
+
doAnimation.finish = doAnimation;
|
7765
7885
|
|
7766
7886
|
return empty || optall.queue === false ?
|
7767
7887
|
this.each( doAnimation ) :
|
@@ -7937,7 +8057,6 @@ jQuery.fx.speeds = {
|
|
7937
8057
|
|
7938
8058
|
|
7939
8059
|
// Based off of the plugin by Clint Helfers, with permission.
|
7940
|
-
// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
|
7941
8060
|
jQuery.fn.delay = function( time, type ) {
|
7942
8061
|
time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
|
7943
8062
|
type = type || "fx";
|
@@ -8162,8 +8281,7 @@ jQuery.extend( {
|
|
8162
8281
|
// Support: IE <=9 - 11 only
|
8163
8282
|
// elem.tabIndex doesn't always return the
|
8164
8283
|
// correct value when it hasn't been explicitly set
|
8165
|
-
//
|
8166
|
-
// Use proper attribute retrieval(#12072)
|
8284
|
+
// Use proper attribute retrieval (trac-12072)
|
8167
8285
|
var tabindex = jQuery.find.attr( elem, "tabindex" );
|
8168
8286
|
|
8169
8287
|
if ( tabindex ) {
|
@@ -8267,8 +8385,7 @@ function classesToArray( value ) {
|
|
8267
8385
|
|
8268
8386
|
jQuery.fn.extend( {
|
8269
8387
|
addClass: function( value ) {
|
8270
|
-
var
|
8271
|
-
i = 0;
|
8388
|
+
var classNames, cur, curValue, className, i, finalValue;
|
8272
8389
|
|
8273
8390
|
if ( isFunction( value ) ) {
|
8274
8391
|
return this.each( function( j ) {
|
@@ -8276,36 +8393,35 @@ jQuery.fn.extend( {
|
|
8276
8393
|
} );
|
8277
8394
|
}
|
8278
8395
|
|
8279
|
-
|
8396
|
+
classNames = classesToArray( value );
|
8280
8397
|
|
8281
|
-
if (
|
8282
|
-
|
8283
|
-
curValue = getClass(
|
8284
|
-
cur =
|
8398
|
+
if ( classNames.length ) {
|
8399
|
+
return this.each( function() {
|
8400
|
+
curValue = getClass( this );
|
8401
|
+
cur = this.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
|
8285
8402
|
|
8286
8403
|
if ( cur ) {
|
8287
|
-
|
8288
|
-
|
8289
|
-
if ( cur.indexOf( " " +
|
8290
|
-
cur +=
|
8404
|
+
for ( i = 0; i < classNames.length; i++ ) {
|
8405
|
+
className = classNames[ i ];
|
8406
|
+
if ( cur.indexOf( " " + className + " " ) < 0 ) {
|
8407
|
+
cur += className + " ";
|
8291
8408
|
}
|
8292
8409
|
}
|
8293
8410
|
|
8294
8411
|
// Only assign if different to avoid unneeded rendering.
|
8295
8412
|
finalValue = stripAndCollapse( cur );
|
8296
8413
|
if ( curValue !== finalValue ) {
|
8297
|
-
|
8414
|
+
this.setAttribute( "class", finalValue );
|
8298
8415
|
}
|
8299
8416
|
}
|
8300
|
-
}
|
8417
|
+
} );
|
8301
8418
|
}
|
8302
8419
|
|
8303
8420
|
return this;
|
8304
8421
|
},
|
8305
8422
|
|
8306
8423
|
removeClass: function( value ) {
|
8307
|
-
var
|
8308
|
-
i = 0;
|
8424
|
+
var classNames, cur, curValue, className, i, finalValue;
|
8309
8425
|
|
8310
8426
|
if ( isFunction( value ) ) {
|
8311
8427
|
return this.each( function( j ) {
|
@@ -8317,45 +8433,42 @@ jQuery.fn.extend( {
|
|
8317
8433
|
return this.attr( "class", "" );
|
8318
8434
|
}
|
8319
8435
|
|
8320
|
-
|
8436
|
+
classNames = classesToArray( value );
|
8321
8437
|
|
8322
|
-
if (
|
8323
|
-
|
8324
|
-
curValue = getClass(
|
8438
|
+
if ( classNames.length ) {
|
8439
|
+
return this.each( function() {
|
8440
|
+
curValue = getClass( this );
|
8325
8441
|
|
8326
8442
|
// This expression is here for better compressibility (see addClass)
|
8327
|
-
cur =
|
8443
|
+
cur = this.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
|
8328
8444
|
|
8329
8445
|
if ( cur ) {
|
8330
|
-
|
8331
|
-
|
8446
|
+
for ( i = 0; i < classNames.length; i++ ) {
|
8447
|
+
className = classNames[ i ];
|
8332
8448
|
|
8333
8449
|
// Remove *all* instances
|
8334
|
-
while ( cur.indexOf( " " +
|
8335
|
-
cur = cur.replace( " " +
|
8450
|
+
while ( cur.indexOf( " " + className + " " ) > -1 ) {
|
8451
|
+
cur = cur.replace( " " + className + " ", " " );
|
8336
8452
|
}
|
8337
8453
|
}
|
8338
8454
|
|
8339
8455
|
// Only assign if different to avoid unneeded rendering.
|
8340
8456
|
finalValue = stripAndCollapse( cur );
|
8341
8457
|
if ( curValue !== finalValue ) {
|
8342
|
-
|
8458
|
+
this.setAttribute( "class", finalValue );
|
8343
8459
|
}
|
8344
8460
|
}
|
8345
|
-
}
|
8461
|
+
} );
|
8346
8462
|
}
|
8347
8463
|
|
8348
8464
|
return this;
|
8349
8465
|
},
|
8350
8466
|
|
8351
8467
|
toggleClass: function( value, stateVal ) {
|
8352
|
-
var
|
8468
|
+
var classNames, className, i, self,
|
8469
|
+
type = typeof value,
|
8353
8470
|
isValidValue = type === "string" || Array.isArray( value );
|
8354
8471
|
|
8355
|
-
if ( typeof stateVal === "boolean" && isValidValue ) {
|
8356
|
-
return stateVal ? this.addClass( value ) : this.removeClass( value );
|
8357
|
-
}
|
8358
|
-
|
8359
8472
|
if ( isFunction( value ) ) {
|
8360
8473
|
return this.each( function( i ) {
|
8361
8474
|
jQuery( this ).toggleClass(
|
@@ -8365,17 +8478,20 @@ jQuery.fn.extend( {
|
|
8365
8478
|
} );
|
8366
8479
|
}
|
8367
8480
|
|
8368
|
-
|
8369
|
-
|
8481
|
+
if ( typeof stateVal === "boolean" && isValidValue ) {
|
8482
|
+
return stateVal ? this.addClass( value ) : this.removeClass( value );
|
8483
|
+
}
|
8484
|
+
|
8485
|
+
classNames = classesToArray( value );
|
8370
8486
|
|
8487
|
+
return this.each( function() {
|
8371
8488
|
if ( isValidValue ) {
|
8372
8489
|
|
8373
8490
|
// Toggle individual class names
|
8374
|
-
i = 0;
|
8375
8491
|
self = jQuery( this );
|
8376
|
-
classNames = classesToArray( value );
|
8377
8492
|
|
8378
|
-
|
8493
|
+
for ( i = 0; i < classNames.length; i++ ) {
|
8494
|
+
className = classNames[ i ];
|
8379
8495
|
|
8380
8496
|
// Check each className given, space separated list
|
8381
8497
|
if ( self.hasClass( className ) ) {
|
@@ -8401,8 +8517,8 @@ jQuery.fn.extend( {
|
|
8401
8517
|
if ( this.setAttribute ) {
|
8402
8518
|
this.setAttribute( "class",
|
8403
8519
|
className || value === false ?
|
8404
|
-
|
8405
|
-
|
8520
|
+
"" :
|
8521
|
+
dataPriv.get( this, "__className__" ) || ""
|
8406
8522
|
);
|
8407
8523
|
}
|
8408
8524
|
}
|
@@ -8417,7 +8533,7 @@ jQuery.fn.extend( {
|
|
8417
8533
|
while ( ( elem = this[ i++ ] ) ) {
|
8418
8534
|
if ( elem.nodeType === 1 &&
|
8419
8535
|
( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
|
8420
|
-
|
8536
|
+
return true;
|
8421
8537
|
}
|
8422
8538
|
}
|
8423
8539
|
|
@@ -8509,7 +8625,7 @@ jQuery.extend( {
|
|
8509
8625
|
val :
|
8510
8626
|
|
8511
8627
|
// Support: IE <=10 - 11 only
|
8512
|
-
// option.text throws exceptions (
|
8628
|
+
// option.text throws exceptions (trac-14686, trac-14858)
|
8513
8629
|
// Strip and collapse whitespace
|
8514
8630
|
// https://html.spec.whatwg.org/#strip-and-collapse-whitespace
|
8515
8631
|
stripAndCollapse( jQuery.text( elem ) );
|
@@ -8536,7 +8652,7 @@ jQuery.extend( {
|
|
8536
8652
|
option = options[ i ];
|
8537
8653
|
|
8538
8654
|
// Support: IE <=9 only
|
8539
|
-
// IE8-9 doesn't update selected after form reset (
|
8655
|
+
// IE8-9 doesn't update selected after form reset (trac-2551)
|
8540
8656
|
if ( ( option.selected || i === index ) &&
|
8541
8657
|
|
8542
8658
|
// Don't return options that are disabled or in a disabled optgroup
|
@@ -8679,8 +8795,8 @@ jQuery.extend( jQuery.event, {
|
|
8679
8795
|
return;
|
8680
8796
|
}
|
8681
8797
|
|
8682
|
-
// Determine event propagation path in advance, per W3C events spec (
|
8683
|
-
// Bubble up to document, then to window; watch for a global ownerDocument var (
|
8798
|
+
// Determine event propagation path in advance, per W3C events spec (trac-9951)
|
8799
|
+
// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)
|
8684
8800
|
if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {
|
8685
8801
|
|
8686
8802
|
bubbleType = special.delegateType || type;
|
@@ -8707,9 +8823,7 @@ jQuery.extend( jQuery.event, {
|
|
8707
8823
|
special.bindType || type;
|
8708
8824
|
|
8709
8825
|
// jQuery handler
|
8710
|
-
handle = (
|
8711
|
-
dataPriv.get( cur, "events" ) || Object.create( null )
|
8712
|
-
)[ event.type ] &&
|
8826
|
+
handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] &&
|
8713
8827
|
dataPriv.get( cur, "handle" );
|
8714
8828
|
if ( handle ) {
|
8715
8829
|
handle.apply( cur, data );
|
@@ -8734,7 +8848,7 @@ jQuery.extend( jQuery.event, {
|
|
8734
8848
|
acceptData( elem ) ) {
|
8735
8849
|
|
8736
8850
|
// Call a native DOM method on the target with the same name as the event.
|
8737
|
-
// Don't do default actions on window, that's where global variables be (
|
8851
|
+
// Don't do default actions on window, that's where global variables be (trac-6170)
|
8738
8852
|
if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {
|
8739
8853
|
|
8740
8854
|
// Don't re-trigger an onFOO event when we call its FOO() method
|
@@ -8856,7 +8970,7 @@ var rquery = ( /\?/ );
|
|
8856
8970
|
|
8857
8971
|
// Cross-browser xml parsing
|
8858
8972
|
jQuery.parseXML = function( data ) {
|
8859
|
-
var xml;
|
8973
|
+
var xml, parserErrorElem;
|
8860
8974
|
if ( !data || typeof data !== "string" ) {
|
8861
8975
|
return null;
|
8862
8976
|
}
|
@@ -8865,12 +8979,17 @@ jQuery.parseXML = function( data ) {
|
|
8865
8979
|
// IE throws on parseFromString with invalid input.
|
8866
8980
|
try {
|
8867
8981
|
xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
|
8868
|
-
} catch ( e ) {
|
8869
|
-
xml = undefined;
|
8870
|
-
}
|
8982
|
+
} catch ( e ) {}
|
8871
8983
|
|
8872
|
-
|
8873
|
-
|
8984
|
+
parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ];
|
8985
|
+
if ( !xml || parserErrorElem ) {
|
8986
|
+
jQuery.error( "Invalid XML: " + (
|
8987
|
+
parserErrorElem ?
|
8988
|
+
jQuery.map( parserErrorElem.childNodes, function( el ) {
|
8989
|
+
return el.textContent;
|
8990
|
+
} ).join( "\n" ) :
|
8991
|
+
data
|
8992
|
+
) );
|
8874
8993
|
}
|
8875
8994
|
return xml;
|
8876
8995
|
};
|
@@ -8971,16 +9090,14 @@ jQuery.fn.extend( {
|
|
8971
9090
|
// Can add propHook for "elements" to filter or add form elements
|
8972
9091
|
var elements = jQuery.prop( this, "elements" );
|
8973
9092
|
return elements ? jQuery.makeArray( elements ) : this;
|
8974
|
-
} )
|
8975
|
-
.filter( function() {
|
9093
|
+
} ).filter( function() {
|
8976
9094
|
var type = this.type;
|
8977
9095
|
|
8978
9096
|
// Use .is( ":disabled" ) so that fieldset[disabled] works
|
8979
9097
|
return this.name && !jQuery( this ).is( ":disabled" ) &&
|
8980
9098
|
rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
|
8981
9099
|
( this.checked || !rcheckableType.test( type ) );
|
8982
|
-
} )
|
8983
|
-
.map( function( _i, elem ) {
|
9100
|
+
} ).map( function( _i, elem ) {
|
8984
9101
|
var val = jQuery( this ).val();
|
8985
9102
|
|
8986
9103
|
if ( val == null ) {
|
@@ -9005,7 +9122,7 @@ var
|
|
9005
9122
|
rantiCache = /([?&])_=[^&]*/,
|
9006
9123
|
rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
|
9007
9124
|
|
9008
|
-
//
|
9125
|
+
// trac-7653, trac-8125, trac-8152: local protocol detection
|
9009
9126
|
rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
|
9010
9127
|
rnoContent = /^(?:GET|HEAD)$/,
|
9011
9128
|
rprotocol = /^\/\//,
|
@@ -9028,12 +9145,13 @@ var
|
|
9028
9145
|
*/
|
9029
9146
|
transports = {},
|
9030
9147
|
|
9031
|
-
// Avoid comment-prolog char sequence (
|
9148
|
+
// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression
|
9032
9149
|
allTypes = "*/".concat( "*" ),
|
9033
9150
|
|
9034
9151
|
// Anchor tag for parsing the document origin
|
9035
9152
|
originAnchor = document.createElement( "a" );
|
9036
|
-
|
9153
|
+
|
9154
|
+
originAnchor.href = location.href;
|
9037
9155
|
|
9038
9156
|
// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
|
9039
9157
|
function addToPrefiltersOrTransports( structure ) {
|
@@ -9098,7 +9216,7 @@ function inspectPrefiltersOrTransports( structure, options, originalOptions, jqX
|
|
9098
9216
|
|
9099
9217
|
// A special extend for ajax options
|
9100
9218
|
// that takes "flat" options (not to be deep extended)
|
9101
|
-
// Fixes
|
9219
|
+
// Fixes trac-9887
|
9102
9220
|
function ajaxExtend( target, src ) {
|
9103
9221
|
var key, deep,
|
9104
9222
|
flatOptions = jQuery.ajaxSettings.flatOptions || {};
|
@@ -9414,8 +9532,8 @@ jQuery.extend( {
|
|
9414
9532
|
// Context for global events is callbackContext if it is a DOM node or jQuery collection
|
9415
9533
|
globalEventContext = s.context &&
|
9416
9534
|
( callbackContext.nodeType || callbackContext.jquery ) ?
|
9417
|
-
|
9418
|
-
|
9535
|
+
jQuery( callbackContext ) :
|
9536
|
+
jQuery.event,
|
9419
9537
|
|
9420
9538
|
// Deferreds
|
9421
9539
|
deferred = jQuery.Deferred(),
|
@@ -9509,12 +9627,12 @@ jQuery.extend( {
|
|
9509
9627
|
deferred.promise( jqXHR );
|
9510
9628
|
|
9511
9629
|
// Add protocol if not provided (prefilters might expect it)
|
9512
|
-
// Handle falsy url in the settings object (
|
9630
|
+
// Handle falsy url in the settings object (trac-10093: consistency with old signature)
|
9513
9631
|
// We also use the url parameter if available
|
9514
9632
|
s.url = ( ( url || s.url || location.href ) + "" )
|
9515
9633
|
.replace( rprotocol, location.protocol + "//" );
|
9516
9634
|
|
9517
|
-
// Alias method option to type as per ticket
|
9635
|
+
// Alias method option to type as per ticket trac-12004
|
9518
9636
|
s.type = options.method || options.type || s.method || s.type;
|
9519
9637
|
|
9520
9638
|
// Extract dataTypes list
|
@@ -9557,7 +9675,7 @@ jQuery.extend( {
|
|
9557
9675
|
}
|
9558
9676
|
|
9559
9677
|
// We can fire global events as of now if asked to
|
9560
|
-
// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (
|
9678
|
+
// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)
|
9561
9679
|
fireGlobals = jQuery.event && s.global;
|
9562
9680
|
|
9563
9681
|
// Watch for a new set of requests
|
@@ -9586,7 +9704,7 @@ jQuery.extend( {
|
|
9586
9704
|
if ( s.data && ( s.processData || typeof s.data === "string" ) ) {
|
9587
9705
|
cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data;
|
9588
9706
|
|
9589
|
-
//
|
9707
|
+
// trac-9682: remove data so that it's not used in an eventual retry
|
9590
9708
|
delete s.data;
|
9591
9709
|
}
|
9592
9710
|
|
@@ -9727,8 +9845,10 @@ jQuery.extend( {
|
|
9727
9845
|
response = ajaxHandleResponses( s, jqXHR, responses );
|
9728
9846
|
}
|
9729
9847
|
|
9730
|
-
// Use a noop converter for missing script
|
9731
|
-
if ( !isSuccess &&
|
9848
|
+
// Use a noop converter for missing script but not if jsonp
|
9849
|
+
if ( !isSuccess &&
|
9850
|
+
jQuery.inArray( "script", s.dataTypes ) > -1 &&
|
9851
|
+
jQuery.inArray( "json", s.dataTypes ) < 0 ) {
|
9732
9852
|
s.converters[ "text script" ] = function() {};
|
9733
9853
|
}
|
9734
9854
|
|
@@ -9857,7 +9977,7 @@ jQuery._evalUrl = function( url, options, doc ) {
|
|
9857
9977
|
return jQuery.ajax( {
|
9858
9978
|
url: url,
|
9859
9979
|
|
9860
|
-
// Make this explicit, since user can override this through ajaxSetup (
|
9980
|
+
// Make this explicit, since user can override this through ajaxSetup (trac-11264)
|
9861
9981
|
type: "GET",
|
9862
9982
|
dataType: "script",
|
9863
9983
|
cache: true,
|
@@ -9966,7 +10086,7 @@ var xhrSuccessStatus = {
|
|
9966
10086
|
0: 200,
|
9967
10087
|
|
9968
10088
|
// Support: IE <=9 only
|
9969
|
-
//
|
10089
|
+
// trac-1450: sometimes IE returns 1223 when it should be 204
|
9970
10090
|
1223: 204
|
9971
10091
|
},
|
9972
10092
|
xhrSupported = jQuery.ajaxSettings.xhr();
|
@@ -10038,7 +10158,7 @@ jQuery.ajaxTransport( function( options ) {
|
|
10038
10158
|
} else {
|
10039
10159
|
complete(
|
10040
10160
|
|
10041
|
-
// File: protocol always yields status 0; see
|
10161
|
+
// File: protocol always yields status 0; see trac-8605, trac-14207
|
10042
10162
|
xhr.status,
|
10043
10163
|
xhr.statusText
|
10044
10164
|
);
|
@@ -10099,7 +10219,7 @@ jQuery.ajaxTransport( function( options ) {
|
|
10099
10219
|
xhr.send( options.hasContent && options.data || null );
|
10100
10220
|
} catch ( e ) {
|
10101
10221
|
|
10102
|
-
//
|
10222
|
+
// trac-14683: Only rethrow if this hasn't been notified as an error yet
|
10103
10223
|
if ( callback ) {
|
10104
10224
|
throw e;
|
10105
10225
|
}
|
@@ -10466,12 +10586,6 @@ jQuery.offset = {
|
|
10466
10586
|
options.using.call( elem, props );
|
10467
10587
|
|
10468
10588
|
} else {
|
10469
|
-
if ( typeof props.top === "number" ) {
|
10470
|
-
props.top += "px";
|
10471
|
-
}
|
10472
|
-
if ( typeof props.left === "number" ) {
|
10473
|
-
props.left += "px";
|
10474
|
-
}
|
10475
10589
|
curElem.css( props );
|
10476
10590
|
}
|
10477
10591
|
}
|
@@ -10640,8 +10754,11 @@ jQuery.each( [ "top", "left" ], function( _i, prop ) {
|
|
10640
10754
|
|
10641
10755
|
// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
|
10642
10756
|
jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
|
10643
|
-
jQuery.each( {
|
10644
|
-
|
10757
|
+
jQuery.each( {
|
10758
|
+
padding: "inner" + name,
|
10759
|
+
content: type,
|
10760
|
+
"": "outer" + name
|
10761
|
+
}, function( defaultExtra, funcName ) {
|
10645
10762
|
|
10646
10763
|
// Margin is only for outerHeight, outerWidth
|
10647
10764
|
jQuery.fn[ funcName ] = function( margin, value ) {
|
@@ -10726,7 +10843,8 @@ jQuery.fn.extend( {
|
|
10726
10843
|
}
|
10727
10844
|
} );
|
10728
10845
|
|
10729
|
-
jQuery.each(
|
10846
|
+
jQuery.each(
|
10847
|
+
( "blur focus focusin focusout resize scroll click dblclick " +
|
10730
10848
|
"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
|
10731
10849
|
"change select submit keydown keypress keyup contextmenu" ).split( " " ),
|
10732
10850
|
function( _i, name ) {
|
@@ -10737,14 +10855,17 @@ jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
|
|
10737
10855
|
this.on( name, null, data, fn ) :
|
10738
10856
|
this.trigger( name );
|
10739
10857
|
};
|
10740
|
-
}
|
10858
|
+
}
|
10859
|
+
);
|
10741
10860
|
|
10742
10861
|
|
10743
10862
|
|
10744
10863
|
|
10745
10864
|
// Support: Android <=4.0 only
|
10746
10865
|
// Make sure we trim BOM and NBSP
|
10747
|
-
|
10866
|
+
// Require that the "whitespace run" starts from a non-whitespace
|
10867
|
+
// to avoid O(N^2) behavior when the engine would try matching "\s+$" at each space position.
|
10868
|
+
var rtrim = /^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;
|
10748
10869
|
|
10749
10870
|
// Bind a function to a context, optionally partially applying any
|
10750
10871
|
// arguments.
|
@@ -10811,7 +10932,7 @@ jQuery.isNumeric = function( obj ) {
|
|
10811
10932
|
jQuery.trim = function( text ) {
|
10812
10933
|
return text == null ?
|
10813
10934
|
"" :
|
10814
|
-
( text + "" ).replace( rtrim, "" );
|
10935
|
+
( text + "" ).replace( rtrim, "$1" );
|
10815
10936
|
};
|
10816
10937
|
|
10817
10938
|
|
@@ -10859,8 +10980,8 @@ jQuery.noConflict = function( deep ) {
|
|
10859
10980
|
};
|
10860
10981
|
|
10861
10982
|
// Expose jQuery and $ identifiers, even in AMD
|
10862
|
-
// (
|
10863
|
-
// and CommonJS for browser emulators (
|
10983
|
+
// (trac-7102#comment:10, https://github.com/jquery/jquery/pull/557)
|
10984
|
+
// and CommonJS for browser emulators (trac-13566)
|
10864
10985
|
if ( typeof noGlobal === "undefined" ) {
|
10865
10986
|
window.jQuery = window.$ = jQuery;
|
10866
10987
|
}
|