Commit 80244d91df for wordpress.org
commit 80244d91dfc2557238eb99bdfcfef2929f3199f7
Author: peterwilsoncc <peterwilsoncc@git.wordpress.org>
Date: Mon Sep 28 23:23:52 2026 +0000
External Libraries: Update jQuery Migrate to 3.6.0.
Updates jQuery Migrate from 3.4.1 to 3.6.0. This also removes the library from the committed `src/js/_enqueues/vendor/jquery/` directory in favour of updating via NPM.
This is the first step in the upgrade path for jQuery 4.0.
Developed in https://github.com/WordPress/wordpress-develop/pull/13787.
Props clorith, jorbin, mukesh27, westonruter.
Fixes #66203.
See #60478.
Built from https://develop.svn.wordpress.org/trunk@63983
git-svn-id: http://core.svn.wordpress.org/trunk@63146 1a063a9b-81f0-0310-95a4-ce76da25c4cd
diff --git a/wp-includes/js/jquery/jquery-migrate.js b/wp-includes/js/jquery/jquery-migrate.js
index 5ef505ed92..1e8642cbbf 100644
--- a/wp-includes/js/jquery/jquery-migrate.js
+++ b/wp-includes/js/jquery/jquery-migrate.js
@@ -1,6 +1,8 @@
/*!
- * jQuery Migrate - v3.4.1 - 2023-02-23T15:31Z
+ * jQuery Migrate - v3.6.0 - 2025-12-11T02:48Z
* Copyright OpenJS Foundation and other contributors
+ * Released under the MIT license
+ * https://jquery.com/license/
*/
( function( factory ) {
"use strict";
@@ -24,7 +26,7 @@
} )( function( jQuery, window ) {
"use strict";
-jQuery.migrateVersion = "3.4.1";
+jQuery.migrateVersion = "3.6.0";
// Returns 0 if v1 == v2, -1 if v1 < v2, 1 if v1 > v2
function compareVersions( v1, v2 ) {
@@ -53,7 +55,7 @@ function jQueryVersionSince( version ) {
var disabledPatches = Object.create( null );
// Don't apply patches for specified codes. Helpful for code bases
-// where some Migrate warnings have been addressed and it's desirable
+// where some Migrate warnings have been addressed, and it's desirable
// to avoid needless patches or false positives.
jQuery.migrateDisablePatches = function() {
var i;
@@ -84,38 +86,38 @@ jQuery.migrateIsPatchEnabled = function( patchCode ) {
( function() {
- // Support: IE9 only
- // IE9 only creates console object when dev tools are first opened
- // IE9 console is a host object, callable but doesn't have .apply()
- if ( !window.console || !window.console.log ) {
- return;
- }
+// Support: IE9 only
+// IE9 only creates console object when dev tools are first opened
+// IE9 console is a host object, callable but doesn't have .apply()
+if ( !window.console || !window.console.log ) {
+ return;
+}
- // Need jQuery 3.x-4.x and no older Migrate loaded
- if ( !jQuery || !jQueryVersionSince( "3.0.0" ) ||
- jQueryVersionSince( "5.0.0" ) ) {
- window.console.log( "JQMIGRATE: jQuery 3.x-4.x REQUIRED" );
- }
- if ( jQuery.migrateWarnings ) {
- window.console.log( "JQMIGRATE: Migrate plugin loaded multiple times" );
- }
+// Need jQuery 3.x and no older Migrate loaded
+if ( !jQuery || !jQueryVersionSince( "3.0.0" ) ||
+ jQueryVersionSince( "4.0.0" ) ) {
+ window.console.log( "JQMIGRATE: jQuery 3.x REQUIRED" );
+}
+if ( jQuery.migrateWarnings ) {
+ window.console.log( "JQMIGRATE: Migrate plugin loaded multiple times" );
+}
- // Show a message on the console so devs know we're active
- window.console.log( "JQMIGRATE: Migrate is installed" +
- ( jQuery.migrateMute ? "" : " with logging active" ) +
- ", version " + jQuery.migrateVersion );
+// Show a message on the console so devs know we're active
+window.console.log( "JQMIGRATE: Migrate is installed" +
+ ( jQuery.migrateMute ? "" : " with logging active" ) +
+ ", version " + jQuery.migrateVersion );
} )();
var warnedAbout = {};
-// By default each warning is only reported once.
+// By default, each warning is only reported once.
jQuery.migrateDeduplicateWarnings = true;
// List of warnings already given; public read only
jQuery.migrateWarnings = [];
-// Set to false to disable traces that appear with warnings
+// Set to `false` to disable traces that appear with warnings
if ( jQuery.migrateTrace === undefined ) {
jQuery.migrateTrace = true;
}
@@ -199,78 +201,27 @@ if ( window.document.compatMode === "BackCompat" ) {
migrateWarn( "quirks", "jQuery is not compatible with Quirks Mode" );
}
-var findProp,
+var arr = [],
+ push = arr.push,
+ sort = arr.sort,
+ splice = arr.splice,
class2type = {},
- oldInit = jQuery.fn.init,
- oldFind = jQuery.find,
-
- rattrHashTest = /\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/,
- rattrHashGlob = /\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/g,
// Require that the "whitespace run" starts from a non-whitespace
// to avoid O(N^2) behavior when the engine would try matching "\s+$" at each space position.
rtrim = /^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;
-migratePatchFunc( jQuery.fn, "init", function( arg1 ) {
- var args = Array.prototype.slice.call( arguments );
-
- if ( jQuery.migrateIsPatchEnabled( "selector-empty-id" ) &&
- typeof arg1 === "string" && arg1 === "#" ) {
-
- // JQuery( "#" ) is a bogus ID selector, but it returned an empty set
- // before jQuery 3.0
- migrateWarn( "selector-empty-id", "jQuery( '#' ) is not a valid selector" );
- args[ 0 ] = [];
- }
-
- return oldInit.apply( this, args );
-}, "selector-empty-id" );
-
-// This is already done in Core but the above patch will lose this assignment
-// so we need to redo it. It doesn't matter whether the patch is enabled or not
-// as the method is always going to be a Migrate-created wrapper.
-jQuery.fn.init.prototype = jQuery.fn;
-
-migratePatchFunc( jQuery, "find", function( selector ) {
- var args = Array.prototype.slice.call( arguments );
-
- // Support: PhantomJS 1.x
- // String#match fails to match when used with a //g RegExp, only on some strings
- if ( typeof selector === "string" && rattrHashTest.test( selector ) ) {
-
- // The nonstandard and undocumented unquoted-hash was removed in jQuery 1.12.0
- // First see if qS thinks it's a valid selector, if so avoid a false positive
- try {
- window.document.querySelector( selector );
- } catch ( err1 ) {
-
- // Didn't *look* valid to qSA, warn and try quoting what we think is the value
- selector = selector.replace( rattrHashGlob, function( _, attr, op, value ) {
- return "[" + attr + op + "\"" + value + "\"]";
- } );
-
- // If the regexp *may* have created an invalid selector, don't update it
- // Note that there may be false alarms if selector uses jQuery extensions
- try {
- window.document.querySelector( selector );
- migrateWarn( "selector-hash",
- "Attribute selector with '#' must be quoted: " + args[ 0 ] );
- args[ 0 ] = selector;
- } catch ( err2 ) {
- migrateWarn( "selector-hash",
- "Attribute selector with '#' was not fixed: " + args[ 0 ] );
- }
- }
- }
-
- return oldFind.apply( this, args );
-}, "selector-hash" );
-
-// Copy properties attached to original jQuery.find method (e.g. .attr, .isXML)
-for ( findProp in oldFind ) {
- if ( Object.prototype.hasOwnProperty.call( oldFind, findProp ) ) {
- jQuery.find[ findProp ] = oldFind[ findProp ];
- }
+function isFunction( obj ) {
+
+ // Support: Chrome <=57, Firefox <=52
+ // In some browsers, typeof returns "function" for HTML <object> elements
+ // (i.e., `typeof document.createElement( "object" ) === "function"`).
+ // We don't want to classify *any* DOM node as a function.
+ // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5
+ // Plus for old WebKit, typeof returns "function" for HTML collections
+ // (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756)
+ return typeof obj === "function" && typeof obj.nodeType !== "number" &&
+ typeof obj.item !== "function";
}
// The number of elements contained in the matched element set
@@ -290,12 +241,6 @@ migratePatchAndWarnFunc( jQuery, "holdReady", jQuery.holdReady,
migratePatchAndWarnFunc( jQuery, "unique", jQuery.uniqueSort,
"unique", "jQuery.unique is deprecated; use jQuery.uniqueSort" );
-// Now jQuery.expr.pseudos is the standard incantation
-migrateWarnProp( jQuery.expr, "filters", jQuery.expr.pseudos, "expr-pre-pseudos",
- "jQuery.expr.filters is deprecated; use jQuery.expr.pseudos" );
-migrateWarnProp( jQuery.expr, ":", jQuery.expr.pseudos, "expr-pre-pseudos",
- "jQuery.expr[':'] is deprecated; use jQuery.expr.pseudos" );
-
// Prior to jQuery 3.1.1 there were internal refs so we don't warn there
if ( jQueryVersionSince( "3.1.1" ) ) {
migratePatchAndWarnFunc( jQuery, "trim", function( text ) {
@@ -320,7 +265,8 @@ if ( jQueryVersionSince( "3.2.0" ) ) {
if ( jQueryVersionSince( "3.3.0" ) ) {
- migratePatchAndWarnFunc( jQuery, "isNumeric", function( obj ) {
+ migratePatchAndWarnFunc( jQuery, "isNumeric",
+ function( obj ) {
// As of jQuery 3.0, isNumeric is limited to
// strings and numbers (primitives or objects)
@@ -355,11 +301,10 @@ if ( jQueryVersionSince( "3.3.0" ) ) {
}, "type",
"jQuery.type is deprecated" );
- migratePatchAndWarnFunc( jQuery, "isFunction",
- function( obj ) {
- return typeof obj === "function";
- }, "isFunction",
- "jQuery.isFunction() is deprecated" );
+ migratePatchAndWarnFunc( jQuery, "isFunction", function( obj ) {
+ return isFunction( obj );
+ }, "isFunction",
+ "jQuery.isFunction() is deprecated" );
migratePatchAndWarnFunc( jQuery, "isWindow",
function( obj ) {
@@ -367,12 +312,184 @@ if ( jQueryVersionSince( "3.3.0" ) ) {
}, "isWindow",
"jQuery.isWindow() is deprecated"
);
+
+ migratePatchAndWarnFunc( jQuery, "now", Date.now, "now",
+ "jQuery.now() is deprecated; use Date.now()"
+ );
+
+ migratePatchAndWarnFunc( jQuery, "camelCase", jQuery.camelCase, "camelCase",
+ "jQuery.camelCase() is deprecated"
+ );
+
+ // Bind a function to a context, optionally partially applying any
+ // arguments.
+ // jQuery.proxy is deprecated to promote standards (specifically Function#bind)
+ // However, it is not slated for removal any time soon
+ migratePatchAndWarnFunc( jQuery, "proxy", jQuery.proxy,
+ "proxy", "DEPRECATED: jQuery.proxy()" );
+
+}
+
+if ( jQueryVersionSince( "3.7.0" ) ) {
+ migratePatchAndWarnFunc( jQuery.fn, "push", push, "push",
+ "jQuery.fn.push() is deprecated; use .add() or convert to an array" );
+ migratePatchAndWarnFunc( jQuery.fn, "sort", sort, "sort",
+ "jQuery.fn.sort() is deprecated; convert to an array before sorting" );
+ migratePatchAndWarnFunc( jQuery.fn, "splice", splice, "splice",
+ "jQuery.fn.splice() is deprecated; use .slice() or .not() with .eq()" );
+}
+
+var findProp,
+ oldInit = jQuery.fn.init,
+ oldFind = jQuery.find,
+
+ rattrHashTest = /\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/,
+ rattrHashGlob = /\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/g;
+
+migratePatchFunc( jQuery.fn, "init", function( arg1 ) {
+ var args = Array.prototype.slice.call( arguments );
+
+ if ( jQuery.migrateIsPatchEnabled( "selector-empty-id" ) &&
+ typeof arg1 === "string" && arg1 === "#" ) {
+
+ // JQuery( "#" ) is a bogus ID selector, but it returned an empty set
+ // before jQuery 3.0
+ migrateWarn( "selector-empty-id", "jQuery( '#' ) is not a valid selector" );
+ args[ 0 ] = [];
+ }
+
+ return oldInit.apply( this, args );
+}, "selector-empty-id" );
+
+// This is already done in Core but the above patch will lose this assignment
+// so we need to redo it. It doesn't matter whether the patch is enabled or not
+// as the method is always going to be a Migrate-created wrapper.
+jQuery.fn.init.prototype = jQuery.fn;
+
+migratePatchFunc( jQuery, "find", function( selector ) {
+ var args = Array.prototype.slice.call( arguments );
+
+ // Support: PhantomJS 1.x
+ // String#match fails to match when used with a //g RegExp, only on some strings
+ if ( typeof selector === "string" && rattrHashTest.test( selector ) ) {
+
+ // The nonstandard and undocumented unquoted-hash was removed in jQuery 1.12.0
+ // First see if qS thinks it's a valid selector, if so avoid a false positive
+ try {
+ window.document.querySelector( selector );
+ } catch ( err1 ) {
+
+ // Didn't *look* valid to qSA, warn and try quoting what we think is the value
+ selector = selector.replace( rattrHashGlob, function( _, attr, op, value ) {
+ return "[" + attr + op + "\"" + value + "\"]";
+ } );
+
+ // If the regexp *may* have created an invalid selector, don't update it
+ // Note that there may be false alarms if selector uses jQuery extensions
+ try {
+ window.document.querySelector( selector );
+ migrateWarn( "selector-hash",
+ "Attribute selector with '#' must be quoted: " + args[ 0 ] );
+ args[ 0 ] = selector;
+ } catch ( err2 ) {
+ migrateWarn( "selector-hash",
+ "Attribute selector with '#' was not fixed: " + args[ 0 ] );
+ }
+ }
+ }
+
+ return oldFind.apply( this, args );
+}, "selector-hash" );
+
+// Copy properties attached to original jQuery.find method (e.g. .attr, .isXML)
+for ( findProp in oldFind ) {
+ if ( Object.prototype.hasOwnProperty.call( oldFind, findProp ) ) {
+ jQuery.find[ findProp ] = oldFind[ findProp ];
+ }
+}
+
+// Now jQuery.expr.pseudos is the standard incantation
+migrateWarnProp( jQuery.expr, "filters", jQuery.expr.pseudos, "expr-pre-pseudos",
+ "jQuery.expr.filters is deprecated; use jQuery.expr.pseudos" );
+migrateWarnProp( jQuery.expr, ":", jQuery.expr.pseudos, "expr-pre-pseudos",
+ "jQuery.expr[':'] is deprecated; use jQuery.expr.pseudos" );
+
+function markFunction( fn ) {
+ fn[ jQuery.expando ] = true;
+ return fn;
+}
+
+// jQuery older than 3.7.0 used Sizzle which has its own private expando
+// variable that we cannot access. This makes thi patch impossible in those
+// jQuery versions.
+if ( jQueryVersionSince( "3.7.0" ) ) {
+ migratePatchFunc( jQuery.expr.filter, "PSEUDO", function( pseudo, argument ) {
+
+ // pseudo-class names are case-insensitive
+ // https://www.w3.org/TR/selectors/#pseudo-classes
+ // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
+ // Remember that setFilters inherits from pseudos
+ var args,
+ fn = jQuery.expr.pseudos[ pseudo ] ||
+ jQuery.expr.setFilters[ pseudo.toLowerCase() ] ||
+ jQuery.error(
+ "Syntax error, unrecognized expression: unsupported pseudo: " +
+ pseudo );
+
+ // The user may use createPseudo to indicate that
+ // arguments are needed to create the filter function
+ // just as jQuery does
+ if ( fn[ jQuery.expando ] ) {
+ return fn( argument );
+ }
+
+ // But maintain support for old signatures
+ if ( fn.length > 1 ) {
+ migrateWarn( "legacy-custom-pseudos",
+ "Pseudos with multiple arguments are deprecated; " +
+ "use jQuery.expr.createPseudo()" );
+ args = [ pseudo, pseudo, "", argument ];
+ return jQuery.expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
+ markFunction( function( seed, matches ) {
+ var idx,
+ matched = fn( seed, argument ),
+ i = matched.length;
+ while ( i-- ) {
+ idx = Array.prototype.indexOf.call( seed, matched[ i ] );
+ seed[ idx ] = !( matches[ idx ] = matched[ i ] );
+ }
+ } ) :
+ function( elem ) {
+ return fn( elem, 0, args );
+ };
+ }
+
+ return fn;
+ }, "legacy-custom-pseudos" );
+
+ if ( typeof Proxy !== "undefined" ) {
+ jQuery.each( [ "pseudos", "setFilters" ], function( _, api ) {
+ jQuery.expr[ api ] = new Proxy( jQuery.expr[ api ], {
+ set: function( _target, _prop, fn ) {
+ if ( typeof fn === "function" && !fn[ jQuery.expando ] && fn.length > 1 ) {
+ migrateWarn( "legacy-custom-pseudos",
+ "Pseudos with multiple arguments are deprecated; " +
+ "use jQuery.expr.createPseudo()" );
+ }
+ return Reflect.set.apply( this, arguments );
+ }
+ } );
+ } );
+ }
}
// Support jQuery slim which excludes the ajax module
if ( jQuery.ajax ) {
var oldAjax = jQuery.ajax,
+ oldCallbacks = [],
+ guid = "migrate-" + Date.now(),
+ origJsonpCallback = jQuery.ajaxSettings.jsonpCallback,
rjsonp = /(=)\?(?=&|$)|\?\?/;
migratePatchFunc( jQuery, "ajax", function() {
@@ -391,40 +508,155 @@ migratePatchFunc( jQuery, "ajax", function() {
return jQXHR;
}, "jqXHR-methods" );
-// Only trigger the logic in jQuery <4 as the JSON-to-JSONP auto-promotion
-// behavior is gone in jQuery 4.0 and as it has security implications, we don't
-// want to restore the legacy behavior.
-if ( !jQueryVersionSince( "4.0.0" ) ) {
-
- // Register this prefilter before the jQuery one. Otherwise, a promoted
- // request is transformed into one with the script dataType and we can't
- // catch it anymore.
- jQuery.ajaxPrefilter( "+json", function( s ) {
-
- // Warn if JSON-to-JSONP auto-promotion happens.
- if ( s.jsonp !== false && ( rjsonp.test( s.url ) ||
- typeof s.data === "string" &&
- ( s.contentType || "" )
- .indexOf( "application/x-www-form-urlencoded" ) === 0 &&
- rjsonp.test( s.data )
- ) ) {
- migrateWarn( "jsonp-promotion", "JSON-to-JSONP auto-promotion is deprecated" );
+jQuery.ajaxSetup( {
+ jsonpCallback: function() {
+
+ // Source is virtually the same as in Core, but we need to duplicate
+ // to maintain a proper `oldCallbacks` reference.
+ if ( jQuery.migrateIsPatchEnabled( "jsonp-promotion" ) ) {
+ var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( guid++ ) );
+ this[ callback ] = true;
+ return callback;
+ } else {
+ return origJsonpCallback.apply( this, arguments );
}
- } );
-}
+ }
+} );
+
+// Register this prefilter before the jQuery one. Otherwise, a promoted
+// request is transformed into one with the script dataType, and we can't
+// catch it anymore.
+// jQuery <4 already contains this prefilter; don't duplicate the whole logic,
+// but only enough to know when to warn.
+jQuery.ajaxPrefilter( "+json", function( s ) {
+
+ if ( !jQuery.migrateIsPatchEnabled( "jsonp-promotion" ) ) {
+ return;
+ }
+
+ // Warn if JSON-to-JSONP auto-promotion happens.
+ if ( s.jsonp !== false && ( rjsonp.test( s.url ) ||
+ typeof s.data === "string" &&
+ ( s.contentType || "" )
+ .indexOf( "application/x-www-form-urlencoded" ) === 0 &&
+ rjsonp.test( s.data )
+ ) ) {
+ migrateWarn( "jsonp-promotion", "JSON-to-JSONP auto-promotion is deprecated" );
+ }
+} );
}
var oldRemoveAttr = jQuery.fn.removeAttr,
+ oldJQueryAttr = jQuery.attr,
oldToggleClass = jQuery.fn.toggleClass,
- rmatchNonSpace = /\S+/g;
+ booleans = "checked|selected|async|autofocus|autoplay|controls|defer|" +
+ "disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
+ rbooleans = new RegExp( "^(?:" + booleans + ")$", "i" ),
+ rmatchNonSpace = /\S+/g,
+
+ // Some formerly boolean attributes gained new values with special meaning.
+ // Skip the old boolean attr logic for those values.
+ extraBoolAttrValues = {
+ hidden: [ "until-found" ]
+ };
+
+// HTML boolean attributes have special behavior:
+// we consider the lowercase name to be the only valid value, so
+// getting (if the attribute is present) normalizes to that, as does
+// setting to any non-`false` value (and setting to `false` removes the attribute).
+// See https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#boolean-attributes
+jQuery.each( booleans.split( "|" ), function( _i, name ) {
+ var origAttrHooks = jQuery.attrHooks[ name ] || {};
+ jQuery.attrHooks[ name ] = {
+ get: origAttrHooks.get || function( elem ) {
+ var attrValue;
+
+ if ( jQuery.migrateIsPatchEnabled( "boolean-attributes" ) ) {
+ attrValue = elem.getAttribute( name );
+
+ if ( attrValue !== name && attrValue != null &&
+ ( extraBoolAttrValues[ name ] || [] )
+ .indexOf( String( attrValue ).toLowerCase() ) === -1
+ ) {
+ migrateWarn( "boolean-attributes",
+ "Boolean attribute '" + name +
+ "' value is different from its lowercased name" );
+ }
+ }
+
+ return null;
+ },
+
+ set: origAttrHooks.set || function( elem, value, name ) {
+ if ( jQuery.migrateIsPatchEnabled( "boolean-attributes" ) ) {
+ if ( value !== name &&
+ ( extraBoolAttrValues[ name ] || [] )
+ .indexOf( String( value ).toLowerCase() ) === -1
+ ) {
+ if ( value !== false ) {
+ migrateWarn( "boolean-attributes",
+ "Boolean attribute '" + name +
+ "' is not set to its lowercased name" );
+ }
+
+ if ( value === false ) {
+
+ // Remove boolean attributes when set to false
+ jQuery.removeAttr( elem, name );
+ } else {
+ elem.setAttribute( name, name );
+ }
+ return name;
+ }
+ } else {
+
+ // jQuery <4 uses a private `boolHook` for the boolean attribute
+ // setter. It's only activated if `attrHook` is not set, but we set
+ // it here in Migrate so jQuery would not use it. Since we cannot
+ // access it, let's just repeat its contents here.
+ if ( value === false ) {
+
+ // Remove boolean attributes when set to false
+ jQuery.removeAttr( elem, name );
+ } else {
+ elem.setAttribute( name, name );
+ }
+ return name;
+ }
+ }
+ };
+} );
+
+migratePatchFunc( jQuery, "attr", function( elem, name, value ) {
+ var nType = elem.nodeType;
+
+ // Fallback to the original method on text, comment and attribute nodes
+ // and when attributes are not supported.
+ if ( nType === 3 || nType === 8 || nType === 2 ||
+ typeof elem.getAttribute === "undefined" ) {
+ return oldJQueryAttr.apply( this, arguments );
+ }
+
+ if ( value === false && name.toLowerCase().indexOf( "aria-" ) !== 0 &&
+ !rbooleans.test( name ) ) {
+ migrateWarn( "attr-false",
+ "Setting the non-ARIA non-boolean attribute '" + name +
+ "' to false" );
+
+ jQuery.attr( elem, name, "false" );
+ return;
+ }
+
+ return oldJQueryAttr.apply( this, arguments );
+}, "attr-false" );
migratePatchFunc( jQuery.fn, "removeAttr", function( name ) {
var self = this,
patchNeeded = false;
jQuery.each( name.match( rmatchNonSpace ), function( _i, attr ) {
- if ( jQuery.expr.match.bool.test( attr ) ) {
+ if ( rbooleans.test( attr ) ) {
// Only warn if at least a single node had the property set to
// something else than `false`. Otherwise, this Migrate patch
@@ -467,13 +699,13 @@ migratePatchFunc( jQuery.fn, "toggleClass", function( state ) {
// If the element has a class name or if we're passed `false`,
// then remove the whole classname (if there was one, the above saved it).
- // Otherwise bring back whatever was previously saved (if anything),
+ // Otherwise, bring back whatever was previously saved (if anything),
// falling back to the empty string if nothing was stored.
if ( this.setAttribute ) {
this.setAttribute( "class",
className || state === false ?
- "" :
- jQuery.data( this, "__className__" ) || ""
+ "" :
+ jQuery.data( this, "__className__" ) || ""
);
}
} );
@@ -485,7 +717,74 @@ function camelCase( string ) {
} );
}
-var origFnCss, internalCssNumber,
+// Make `object` inherit from `Object.prototype` via an additional object
+// in between; that intermediate object proxies properties
+// to `Object.prototype`, warning about their usage first.
+function patchProto( object, options ) {
+
+ // Support: IE 9 - 10 only, iOS 7 - 8 only
+ // Older IE doesn't have a way to change an existing prototype.
+ // Just return the original method there.
+ // Older WebKit supports `__proto__` but not `Object.setPrototypeOf`.
+ // To avoid complicating code, don't patch the API there either.
+ if ( !Object.setPrototypeOf ) {
+ return object;
+ }
+
+ var i,
+ warningId = options.warningId,
+ apiName = options.apiName,
+
+ // `Object.prototype` keys are not enumerable so list the
+ // official ones here. An alternative would be wrapping
+ // objects with a Proxy but that creates additional issues
+ // like breaking object identity on subsequent calls.
+ objProtoKeys = [
+ "__proto__",
+ "__defineGetter__",
+ "__defineSetter__",
+ "__lookupGetter__",
+ "__lookupSetter__",
+ "hasOwnProperty",
+ "isPrototypeOf",
+ "propertyIsEnumerable",
+ "toLocaleString",
+ "toString",
+ "valueOf"
+ ],
+
+ // Use a null prototype at the beginning so that we can define our
+ // `__proto__` getter & setter. We'll reset the prototype afterward.
+ intermediateObj = Object.create( null );
+
+ for ( i = 0; i < objProtoKeys.length; i++ ) {
+ ( function( key ) {
+ Object.defineProperty( intermediateObj, key, {
+ get: function() {
+ migrateWarn( warningId,
+ "Accessing properties from " + apiName +
+ " inherited from Object.prototype is deprecated" );
+ return ( key + "__cache" ) in intermediateObj ?
+ intermediateObj[ key + "__cache" ] :
+ Object.prototype[ key ];
+ },
+ set: function( value ) {
+ migrateWarn( warningId,
+ "Setting properties from " + apiName +
+ " inherited from Object.prototype is deprecated" );
+ intermediateObj[ key + "__cache" ] = value;
+ }
+ } );
+ } )( objProtoKeys[ i ] );
+ }
+
+ Object.setPrototypeOf( intermediateObj, Object.prototype );
+ Object.setPrototypeOf( object, intermediateObj );
+
+ return object;
+}
+
+var origFnCss,
internalSwapCall = false,
ralphaStart = /^[a-z]/,
@@ -563,62 +862,6 @@ if ( jQueryVersionSince( "3.4.0" ) && typeof Proxy !== "undefined" ) {
} );
}
-// In jQuery >=4 where jQuery.cssNumber is missing fill it with the latest 3.x version:
-// https://github.com/jquery/jquery/blob/3.6.0/src/css.js#L212-L233
-// This way, number values for the CSS properties below won't start triggering
-// Migrate warnings when jQuery gets updated to >=4.0.0 (gh-438).
-if ( jQueryVersionSince( "4.0.0" ) ) {
-
- // We need to keep this as a local variable as we need it internally
- // in a `jQuery.fn.css` patch and this usage shouldn't warn.
- internalCssNumber = {
- animationIterationCount: true,
- columnCount: true,
- fillOpacity: true,
- flexGrow: true,
- flexShrink: true,
- fontWeight: true,
- gridArea: true,
- gridColumn: true,
- gridColumnEnd: true,
- gridColumnStart: true,
- gridRow: true,
- gridRowEnd: true,
- gridRowStart: true,
- lineHeight: true,
- opacity: true,
- order: true,
- orphans: true,
- widows: true,
- zIndex: true,
- zoom: true
- };
-
- if ( typeof Proxy !== "undefined" ) {
- jQuery.cssNumber = new Proxy( internalCssNumber, {
- get: function() {
- migrateWarn( "css-number", "jQuery.cssNumber is deprecated" );
- return Reflect.get.apply( this, arguments );
- },
- set: function() {
- migrateWarn( "css-number", "jQuery.cssNumber is deprecated" );
- return Reflect.set.apply( this, arguments );
- }
- } );
- } else {
-
- // Support: IE 9-11+
- // IE doesn't support proxies, but we still want to restore the legacy
- // jQuery.cssNumber there.
- jQuery.cssNumber = internalCssNumber;
- }
-} else {
-
- // Make `internalCssNumber` defined for jQuery <4 as well as it's needed
- // in the `jQuery.fn.css` patch below.
- internalCssNumber = jQuery.cssNumber;
-}
-
function isAutoPx( prop ) {
// The first test is used to ensure that:
@@ -644,9 +887,7 @@ migratePatchFunc( jQuery.fn, "css", function( name, value ) {
if ( typeof value === "number" ) {
camelName = camelCase( name );
- // Use `internalCssNumber` to avoid triggering our warnings in this
- // internal check.
- if ( !isAutoPx( camelName ) && !internalCssNumber[ camelName ] ) {
+ if ( !isAutoPx( camelName ) && !jQuery.cssNumber[ camelName ] ) {
migrateWarn( "css-number",
"Number-typed values are deprecated for jQuery.fn.css( \"" +
name + "\", value )" );
@@ -656,47 +897,319 @@ migratePatchFunc( jQuery.fn, "css", function( name, value ) {
return origFnCss.apply( this, arguments );
}, "css-number" );
-var origData = jQuery.data;
+var rmultiDash = /[A-Z]/g,
+ rnothtmlwhite = /[^\x20\t\r\n\f]+/g,
+ origJQueryData = jQuery.data,
+ origJQueryPrivateData = jQuery._data;
-migratePatchFunc( jQuery, "data", function( elem, name, value ) {
- var curData, sameKeys, key;
+function unCamelCase( str ) {
+ return str.replace( rmultiDash, "-$&" ).toLowerCase();
+}
- // Name can be an object, and each entry in the object is meant to be set as data
- if ( name && typeof name === "object" && arguments.length === 2 ) {
+function patchDataCamelCase( origData, options ) {
+ var apiName = options.apiName,
+ isPrivateData = options.isPrivateData,
+ isInstanceMethod = options.isInstanceMethod,
+ origJQueryStaticData = isPrivateData ? origJQueryPrivateData : origJQueryData;
+
+ function objectSetter( elem, obj ) {
+ var curData, key;
+
+ // Name can be an object, and each entry in the object is meant
+ // to be set as data.
+ // Let the original method handle the case of a missing elem.
+ if ( elem ) {
+
+ // Don't use the instance method here to avoid `data-*` attributes
+ // detection this early.
+ curData = origJQueryStaticData( elem );
+
+ for ( key in obj ) {
+ if ( key !== camelCase( key ) ) {
+ migrateWarn( "data-camelCase",
+ apiName + " always sets/gets camelCased names: " +
+ key );
+ curData[ key ] = obj[ key ];
+ }
+ }
- curData = jQuery.hasData( elem ) && origData.call( this, elem );
- sameKeys = {};
- for ( key in name ) {
- if ( key !== camelCase( key ) ) {
- migrateWarn( "data-camelCase",
- "jQuery.data() always sets/gets camelCased names: " + key );
- curData[ key ] = name[ key ];
+ // Pass the keys handled above to the original API as well
+ // so that both the camelCase & initial keys are saved.
+ if ( isInstanceMethod ) {
+ origData.call( this, obj );
} else {
- sameKeys[ key ] = name[ key ];
+ origData.call( this, elem, obj );
}
+
+ return obj;
}
+ }
- origData.call( this, elem, sameKeys );
+ function singleSetter( elem, name, value ) {
+ var curData;
- return name;
- }
+ // If the name is transformed, look for the un-transformed name
+ // in the data object.
+ // Let the original method handle the case of a missing elem.
+ if ( elem ) {
- // If the name is transformed, look for the un-transformed name in the data object
- if ( name && typeof name === "string" && name !== camelCase( name ) ) {
+ // Don't use the instance method here to avoid `data-*` attributes
+ // detection this early.
+ curData = origJQueryStaticData( elem );
+
+ if ( curData && name in curData ) {
+ migrateWarn( "data-camelCase",
+ apiName + " always sets/gets camelCased names: " +
+ name );
- curData = jQuery.hasData( elem ) && origData.call( this, elem );
- if ( curData && name in curData ) {
- migrateWarn( "data-camelCase",
- "jQuery.data() always sets/gets camelCased names: " + name );
- if ( arguments.length > 2 ) {
curData[ name ] = value;
}
- return curData[ name ];
+
+ origJQueryStaticData( elem, name, value );
+
+ // Since the "set" path can have two possible entry points
+ // return the expected data based on which path was taken.
+ return value !== undefined ? value : name;
+ }
+ }
+
+ return function jQueryDataPatched( elem, name, value ) {
+ var curData,
+ that = this,
+
+ // Support: IE 9 only
+ // IE 9 doesn't support strict mode and later modifications of
+ // parameters also modify the arguments object in sloppy mode.
+ // We need the original arguments so save them here.
+ args = Array.prototype.slice.call( arguments ),
+
+ adjustedArgsLength = args.length;
+
+ if ( isInstanceMethod ) {
+ value = name;
+ name = elem;
+ elem = that[ 0 ];
+ adjustedArgsLength++;
+ }
+
+ if ( name && typeof name === "object" && adjustedArgsLength === 2 ) {
+ if ( isInstanceMethod ) {
+ return that.each( function() {
+ objectSetter.call( that, this, name );
+ } );
+ } else {
+ return objectSetter.call( that, elem, name );
+ }
+ }
+
+ // If the name is transformed, look for the un-transformed name
+ // in the data object.
+ // Let the original method handle the case of a missing elem.
+ if ( name && typeof name === "string" && name !== camelCase( name ) &&
+ adjustedArgsLength > 2 ) {
+
+ if ( isInstanceMethod ) {
+ return that.each( function() {
+ singleSetter.call( that, this, name, value );
+ } );
+ } else {
+ return singleSetter.call( that, elem, name, value );
+ }
+ }
+
+ if ( elem && name && typeof name === "string" &&
+ name !== camelCase( name ) &&
+ adjustedArgsLength === 2 ) {
+
+ // Don't use the instance method here to avoid `data-*` attributes
+ // detection this early.
+ curData = origJQueryStaticData( elem );
+
+ if ( curData && name in curData ) {
+ migrateWarn( "data-camelCase",
+ apiName + " always sets/gets camelCased names: " +
+ name );
+ return curData[ name ];
+ }
+ }
+
+ return origData.apply( this, args );
+ };
+}
+
+function patchRemoveDataCamelCase( origRemoveData, options ) {
+ var isPrivateData = options.isPrivateData,
+ isInstanceMethod = options.isInstanceMethod,
+ origJQueryStaticData = isPrivateData ? origJQueryPrivateData : origJQueryData;
+
+ function remove( elem, keys ) {
+ var i, singleKey, unCamelCasedKeys,
+ curData = origJQueryStaticData( elem );
+
+ if ( keys === undefined ) {
+ origRemoveData( elem );
+ return;
+ }
+
+ // Support array or space separated string of keys
+ if ( !Array.isArray( keys ) ) {
+
+ // If a key with the spaces exists, use it.
+ // Otherwise, create an array by matching non-whitespace
+ keys = keys in curData ?
+ [ keys ] :
+ ( keys.match( rnothtmlwhite ) || [] );
+ }
+
+ // Remove:
+ // * the original keys as passed
+ // * their "unCamelCased" version
+ // * their camelCase version
+ // These may be three distinct values for each key!
+ // jQuery 3.x only removes camelCase versions by default. However, in this patch
+ // we set the original keys in the mass-setter case and if the key already exists
+ // so without removing the "unCamelCased" versions the following would be broken:
+ // ```js
+ // elem.data( { "a-a": 1 } ).removeData( "aA" );
+ // ```
+ // Unfortunately, we'll still hit this issue for partially camelCased keys, e.g.:
+ // ```js
+ // elem.data( { "a-aA": 1 } ).removeData( "aAA" );
+ // ```
+ // won't work with this patch. We consider this an edge case, but to make sure that
+ // at least piggybacking works:
+ // ```js
+ // elem.data( { "a-aA": 1 } ).removeData( "a-aA" );
+ // ```
+ // we also remove the original key. Hence, all three are needed.
+ // The original API already removes the camelCase versions, though, so let's defer
+ // to it.
+ unCamelCasedKeys = keys.map( unCamelCase );
+
+ i = keys.length;
+ while ( i-- ) {
+ singleKey = keys[ i ];
+ if ( singleKey !== camelCase( singleKey ) && singleKey in curData ) {
+ migrateWarn( "data-camelCase",
+ "jQuery" + ( isInstanceMethod ? ".fn" : "" ) +
+ ".data() always sets/gets camelCased names: " +
+ singleKey );
+ }
+ delete curData[ singleKey ];
}
+
+ // Don't warn when removing "unCamelCased" keys; we're already printing
+ // a warning when setting them and the fix is needed there, not in
+ // the `.removeData()` call.
+ i = unCamelCasedKeys.length;
+ while ( i-- ) {
+ delete curData[ unCamelCasedKeys[ i ] ];
+ }
+
+ origRemoveData( elem, keys );
}
- return origData.apply( this, arguments );
-}, "data-camelCase" );
+ return function jQueryRemoveDataPatched( elem, key ) {
+ if ( isInstanceMethod ) {
+ key = elem;
+ return this.each( function() {
+ remove( this, key );
+ } );
+ } else {
+ remove( elem, key );
+ }
+ };
+}
+
+migratePatchFunc( jQuery, "data",
+ patchDataCamelCase( jQuery.data, {
+ apiName: "jQuery.data()",
+ isPrivateData: false,
+ isInstanceMethod: false
+ } ),
+ "data-camelCase" );
+migratePatchFunc( jQuery, "_data",
+ patchDataCamelCase( jQuery._data, {
+ apiName: "jQuery._data()",
+ isPrivateData: true,
+ isInstanceMethod: false
+ } ),
+ "data-camelCase" );
+migratePatchFunc( jQuery.fn, "data",
+ patchDataCamelCase( jQuery.fn.data, {
+ apiName: "jQuery.fn.data()",
+ isPrivateData: false,
+ isInstanceMethod: true
+ } ),
+ "data-camelCase" );
+
+migratePatchFunc( jQuery, "removeData",
+ patchRemoveDataCamelCase( jQuery.removeData, {
+ isPrivateData: false,
+ isInstanceMethod: false
+ } ),
+ "data-camelCase" );
+migratePatchFunc( jQuery, "_removeData",
+ patchRemoveDataCamelCase( jQuery._removeData, {
+ isPrivateData: true,
+ isInstanceMethod: false
+ } ),
+ "data-camelCase" );
+migratePatchFunc( jQuery.fn, "removeData",
+
+ // No, it's not a typo - we're intentionally passing
+ // the static method here as we need something working on
+ // a single element.
+ patchRemoveDataCamelCase( jQuery.removeData, {
+ isPrivateData: false,
+ isInstanceMethod: true
+ } ),
+ "data-camelCase" );
+
+function patchDataProto( original, options ) {
+ var warningId = options.warningId,
+ apiName = options.apiName,
+ isInstanceMethod = options.isInstanceMethod;
+
+ return function apiWithProtoPatched() {
+ var result = original.apply( this, arguments );
+
+ if ( arguments.length !== ( isInstanceMethod ? 0 : 1 ) || result === undefined ) {
+ return result;
+ }
+
+ patchProto( result, {
+ warningId: warningId,
+ apiName: apiName
+ } );
+
+ return result;
+ };
+}
+
+// Yes, we are patching jQuery.data twice; here & above. This is necessary
+// so that each of the two patches can be independently disabled.
+migratePatchFunc( jQuery, "data",
+ patchDataProto( jQuery.data, {
+ warningId: "data-null-proto",
+ apiName: "jQuery.data()",
+ isInstanceMethod: false
+ } ),
+ "data-null-proto" );
+migratePatchFunc( jQuery, "_data",
+ patchDataProto( jQuery._data, {
+ warningId: "data-null-proto",
+ apiName: "jQuery._data()",
+ isInstanceMethod: false
+ } ),
+ "data-null-proto" );
+migratePatchFunc( jQuery.fn, "data",
+ patchDataProto( jQuery.fn.data, {
+ warningId: "data-null-proto",
+ apiName: "jQuery.fn.data()",
+ isInstanceMethod: true
+ } ),
+ "data-null-proto" );
// Support jQuery slim which excludes the effects module
if ( jQuery.fx ) {
@@ -837,16 +1350,12 @@ jQuery.each( [ "load", "unload", "error" ], function( _, name ) {
jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
"change select submit keydown keypress keyup contextmenu" ).split( " " ),
- function( _i, name ) {
+function( _i, name ) {
// Handle event binding
- migratePatchAndWarnFunc( jQuery.fn, name, function( data, fn ) {
- return arguments.length > 0 ?
- this.on( name, null, data, fn ) :
- this.trigger( name );
- },
- "shorthand-deprecated-v3",
- "jQuery.fn." + name + "() event shorthand is deprecated" );
+ migratePatchAndWarnFunc( jQuery.fn, name, jQuery.fn[ name ], "shorthand-deprecated-v3",
+ "DEPRECATED: jQuery.fn." + name + "() event shorthand" );
+
} );
// Trigger "ready" event only once, on document ready
@@ -862,6 +1371,11 @@ jQuery.event.special.ready = {
}
};
+// Support: jQuery <3.2.0 only
+// jQuery 3.0.x & 3.1.x used to not include the deprecated module in the slim build.
+// To maintain compatibility with those versions, we need to reimplement APIs
+// deprecated in them.
+// See https://github.com/jquery/jquery/blob/3.1.1/src/deprecated.js
migratePatchAndWarnFunc( jQuery.fn, "bind", function( types, data, fn ) {
return this.on( types, null, data, fn );
}, "pre-on-methods", "jQuery.fn.bind() is deprecated" );
@@ -880,6 +1394,14 @@ migratePatchAndWarnFunc( jQuery.fn, "hover", function( fnOver, fnOut ) {
return this.on( "mouseenter", fnOver ).on( "mouseleave", fnOut || fnOver );
}, "pre-on-methods", "jQuery.fn.hover() is deprecated" );
+// We can apply the patch unconditionally here as in the `3.x` line the API
+// inherits from `Object.prototype` even without a patch and `migrateWarn`
+// inside `patchProto` will already silence warnings if the patch gets disabled.
+patchProto( jQuery.event.special, {
+ warningId: "event-special-null-proto",
+ apiName: "jQuery.event.special"
+} );
+
var rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
makeMarkup = function( html ) {
var doc = window.document.implementation.createHTMLDocument( "" );
@@ -898,9 +1420,11 @@ var rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\
* Deprecated, please use `jQuery.migrateDisablePatches( "self-closed-tags" )` instead.
* @deprecated
*/
-jQuery.UNSAFE_restoreLegacyHtmlPrefilter = function() {
+migratePatchAndWarnFunc( jQuery, "UNSAFE_restoreLegacyHtmlPrefilter", function() {
jQuery.migrateEnablePatches( "self-closed-tags" );
-};
+}, "legacy-self-closed-tags",
+"jQuery.UNSAFE_restoreLegacyHtmlPrefilter deprecated; use " +
+ "`jQuery.migrateEnablePatches( \"self-closed-tags\" )`" );
migratePatchFunc( jQuery, "htmlPrefilter", function( html ) {
warnIfChanged( html );
@@ -952,7 +1476,8 @@ migratePatchAndWarnFunc( jQuery.fn, "andSelf", jQuery.fn.addBack, "andSelf",
// Support jQuery slim which excludes the deferred module in jQuery 4.0+
if ( jQuery.Deferred ) {
-var oldDeferred = jQuery.Deferred,
+var unpatchedGetStackHookValue,
+ oldDeferred = jQuery.Deferred,
tuples = [
// Action, add listener, callbacks, .then handlers, final state
@@ -1012,6 +1537,40 @@ migratePatchFunc( jQuery, "Deferred", function( func ) {
// Preserve handler of uncaught exceptions in promise chains
jQuery.Deferred.exceptionHook = oldDeferred.exceptionHook;
+// Preserve the optional hook to record the error, if defined
+jQuery.Deferred.getErrorHook = oldDeferred.getErrorHook;
+
+// We want to mirror jQuery.Deferred.getErrorHook here, so we cannot use
+// existing Migrate utils.
+Object.defineProperty( jQuery.Deferred, "getStackHook", {
+ configurable: true,
+ enumerable: true,
+ get: function() {
+ if ( jQuery.migrateIsPatchEnabled( "deferred-getStackHook" ) ) {
+
+ // jQuery 3.x checks `getStackHook` if `getErrorHook` is missing,
+ // so don't warn on the getter.
+ return jQuery.Deferred.getErrorHook;
+ } else {
+ return unpatchedGetStackHookValue;
+ }
+ },
+ set: function( newValue ) {
+ if ( jQuery.migrateIsPatchEnabled( "deferred-getStackHook" ) ) {
+
+ // Only warn if `getErrorHook` wasn't set to the same value first.
+ if ( jQuery.Deferred.getErrorHook !== newValue ) {
+ migrateWarn( "deferred-getStackHook",
+ "jQuery.Deferred.getStackHook is deprecated; " +
+ "use jQuery.Deferred.getErrorHook" );
+ jQuery.Deferred.getErrorHook = newValue;
+ }
+ } else {
+ unpatchedGetStackHookValue = newValue;
+ }
+ }
+} );
+
}
return jQuery;
diff --git a/wp-includes/js/jquery/jquery-migrate.min.js b/wp-includes/js/jquery/jquery-migrate.min.js
index 29a4939df3..2e54dadf2d 100644
--- a/wp-includes/js/jquery/jquery-migrate.min.js
+++ b/wp-includes/js/jquery/jquery-migrate.min.js
@@ -1,2 +1,2 @@
-/*! jQuery Migrate v3.4.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */
-"undefined"==typeof jQuery.migrateMute&&(jQuery.migrateMute=!0),function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],function(e){return t(e,window)}):"object"==typeof module&&module.exports?module.exports=t(require("jquery"),window):t(jQuery,window)}(function(s,n){"use strict";function e(e){return 0<=function(e,t){for(var r=/^(\d+)\.(\d+)\.(\d+)/,n=r.exec(e)||[],o=r.exec(t)||[],a=1;a<=3;a++){if(+o[a]<+n[a])return 1;if(+n[a]<+o[a])return-1}return 0}(s.fn.jquery,e)}s.migrateVersion="3.4.1";var t=Object.create(null);s.migrateDisablePatches=function(){for(var e=0;e<arguments.length;e++)t[arguments[e]]=!0},s.migrateEnablePatches=function(){for(var e=0;e<arguments.length;e++)delete t[arguments[e]]},s.migrateIsPatchEnabled=function(e){return!t[e]},n.console&&n.console.log&&(s&&e("3.0.0")&&!e("5.0.0")||n.console.log("JQMIGRATE: jQuery 3.x-4.x REQUIRED"),s.migrateWarnings&&n.console.log("JQMIGRATE: Migrate plugin loaded multiple times"),n.console.log("JQMIGRATE: Migrate is installed"+(s.migrateMute?"":" with logging active")+", version "+s.migrateVersion));var o={};function u(e,t){var r=n.console;!s.migrateIsPatchEnabled(e)||s.migrateDeduplicateWarnings&&o[t]||(o[t]=!0,s.migrateWarnings.push(t+" ["+e+"]"),r&&r.warn&&!s.migrateMute&&(r.warn("JQMIGRATE: "+t),s.migrateTrace&&r.trace&&r.trace()))}function r(e,t,r,n,o){Object.defineProperty(e,t,{configurable:!0,enumerable:!0,get:function(){return u(n,o),r},set:function(e){u(n,o),r=e}})}function a(e,t,r,n,o){var a=e[t];e[t]=function(){return o&&u(n,o),(s.migrateIsPatchEnabled(n)?r:a||s.noop).apply(this,arguments)}}function c(e,t,r,n,o){if(!o)throw new Error("No warning message provided");return a(e,t,r,n,o),0}function i(e,t,r,n){return a(e,t,r,n),0}s.migrateDeduplicateWarnings=!0,s.migrateWarnings=[],void 0===s.migrateTrace&&(s.migrateTrace=!0),s.migrateReset=function(){o={},s.migrateWarnings.length=0},"BackCompat"===n.document.compatMode&&u("quirks","jQuery is not compatible with Quirks Mode");var d,l,p,f={},m=s.fn.init,y=s.find,h=/\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/,g=/\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/g,v=/^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;for(d in i(s.fn,"init",function(e){var t=Array.prototype.slice.call(arguments);return s.migrateIsPatchEnabled("selector-empty-id")&&"string"==typeof e&&"#"===e&&(u("selector-empty-id","jQuery( '#' ) is not a valid selector"),t[0]=[]),m.apply(this,t)},"selector-empty-id"),s.fn.init.prototype=s.fn,i(s,"find",function(t){var r=Array.prototype.slice.call(arguments);if("string"==typeof t&&h.test(t))try{n.document.querySelector(t)}catch(e){t=t.replace(g,function(e,t,r,n){return"["+t+r+'"'+n+'"]'});try{n.document.querySelector(t),u("selector-hash","Attribute selector with '#' must be quoted: "+r[0]),r[0]=t}catch(e){u("selector-hash","Attribute selector with '#' was not fixed: "+r[0])}}return y.apply(this,r)},"selector-hash"),y)Object.prototype.hasOwnProperty.call(y,d)&&(s.find[d]=y[d]);c(s.fn,"size",function(){return this.length},"size","jQuery.fn.size() is deprecated and removed; use the .length property"),c(s,"parseJSON",function(){return JSON.parse.apply(null,arguments)},"parseJSON","jQuery.parseJSON is deprecated; use JSON.parse"),c(s,"holdReady",s.holdReady,"holdReady","jQuery.holdReady is deprecated"),c(s,"unique",s.uniqueSort,"unique","jQuery.unique is deprecated; use jQuery.uniqueSort"),r(s.expr,"filters",s.expr.pseudos,"expr-pre-pseudos","jQuery.expr.filters is deprecated; use jQuery.expr.pseudos"),r(s.expr,":",s.expr.pseudos,"expr-pre-pseudos","jQuery.expr[':'] is deprecated; use jQuery.expr.pseudos"),e("3.1.1")&&c(s,"trim",function(e){return null==e?"":(e+"").replace(v,"$1")},"trim","jQuery.trim is deprecated; use String.prototype.trim"),e("3.2.0")&&(c(s,"nodeName",function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},"nodeName","jQuery.nodeName is deprecated"),c(s,"isArray",Array.isArray,"isArray","jQuery.isArray is deprecated; use Array.isArray")),e("3.3.0")&&(c(s,"isNumeric",function(e){var t=typeof e;return("number"==t||"string"==t)&&!isNaN(e-parseFloat(e))},"isNumeric","jQuery.isNumeric() is deprecated"),s.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){f["[object "+t+"]"]=t.toLowerCase()}),c(s,"type",function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?f[Object.prototype.toString.call(e)]||"object":typeof e},"type","jQuery.type is deprecated"),c(s,"isFunction",function(e){return"function"==typeof e},"isFunction","jQuery.isFunction() is deprecated"),c(s,"isWindow",function(e){return null!=e&&e===e.window},"isWindow","jQuery.isWindow() is deprecated")),s.ajax&&(l=s.ajax,p=/(=)\?(?=&|$)|\?\?/,i(s,"ajax",function(){var e=l.apply(this,arguments);return e.promise&&(c(e,"success",e.done,"jqXHR-methods","jQXHR.success is deprecated and removed"),c(e,"error",e.fail,"jqXHR-methods","jQXHR.error is deprecated and removed"),c(e,"complete",e.always,"jqXHR-methods","jQXHR.complete is deprecated and removed")),e},"jqXHR-methods"),e("4.0.0")||s.ajaxPrefilter("+json",function(e){!1!==e.jsonp&&(p.test(e.url)||"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&p.test(e.data))&&u("jsonp-promotion","JSON-to-JSONP auto-promotion is deprecated")}));var j=s.fn.removeAttr,b=s.fn.toggleClass,w=/\S+/g;function x(e){return e.replace(/-([a-z])/g,function(e,t){return t.toUpperCase()})}i(s.fn,"removeAttr",function(e){var r=this,n=!1;return s.each(e.match(w),function(e,t){s.expr.match.bool.test(t)&&r.each(function(){if(!1!==s(this).prop(t))return!(n=!0)}),n&&(u("removeAttr-bool","jQuery.fn.removeAttr no longer sets boolean properties: "+t),r.prop(t,!1))}),j.apply(this,arguments)},"removeAttr-bool"),i(s.fn,"toggleClass",function(t){return void 0!==t&&"boolean"!=typeof t?b.apply(this,arguments):(u("toggleClass-bool","jQuery.fn.toggleClass( boolean ) is deprecated"),this.each(function(){var e=this.getAttribute&&this.getAttribute("class")||"";e&&s.data(this,"__className__",e),this.setAttribute&&this.setAttribute("class",!e&&!1!==t&&s.data(this,"__className__")||"")}))},"toggleClass-bool");var Q,A,R=!1,C=/^[a-z]/,N=/^(?:Border(?:Top|Right|Bottom|Left)?(?:Width|)|(?:Margin|Padding)?(?:Top|Right|Bottom|Left)?|(?:Min|Max)?(?:Width|Height))$/;s.swap&&s.each(["height","width","reliableMarginRight"],function(e,t){var r=s.cssHooks[t]&&s.cssHooks[t].get;r&&(s.cssHooks[t].get=function(){var e;return R=!0,e=r.apply(this,arguments),R=!1,e})}),i(s,"swap",function(e,t,r,n){var o,a,i={};for(a in R||u("swap","jQuery.swap() is undocumented and deprecated"),t)i[a]=e.style[a],e.style[a]=t[a];for(a in o=r.apply(e,n||[]),t)e.style[a]=i[a];return o},"swap"),e("3.4.0")&&"undefined"!=typeof Proxy&&(s.cssProps=new Proxy(s.cssProps||{},{set:function(){return u("cssProps","jQuery.cssProps is deprecated"),Reflect.set.apply(this,arguments)}})),e("4.0.0")?(A={animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},"undefined"!=typeof Proxy?s.cssNumber=new Proxy(A,{get:function(){return u("css-number","jQuery.cssNumber is deprecated"),Reflect.get.apply(this,arguments)},set:function(){return u("css-number","jQuery.cssNumber is deprecated"),Reflect.set.apply(this,arguments)}}):s.cssNumber=A):A=s.cssNumber,Q=s.fn.css,i(s.fn,"css",function(e,t){var r,n,o=this;return e&&"object"==typeof e&&!Array.isArray(e)?(s.each(e,function(e,t){s.fn.css.call(o,e,t)}),this):("number"==typeof t&&(r=x(e),n=r,C.test(n)&&N.test(n[0].toUpperCase()+n.slice(1))||A[r]||u("css-number",'Number-typed values are deprecated for jQuery.fn.css( "'+e+'", value )')),Q.apply(this,arguments))},"css-number");var S,P,k,H,E=s.data;i(s,"data",function(e,t,r){var n,o,a;if(t&&"object"==typeof t&&2===arguments.length){for(a in n=s.hasData(e)&&E.call(this,e),o={},t)a!==x(a)?(u("data-camelCase","jQuery.data() always sets/gets camelCased names: "+a),n[a]=t[a]):o[a]=t[a];return E.call(this,e,o),t}return t&&"string"==typeof t&&t!==x(t)&&(n=s.hasData(e)&&E.call(this,e))&&t in n?(u("data-camelCase","jQuery.data() always sets/gets camelCased names: "+t),2<arguments.length&&(n[t]=r),n[t]):E.apply(this,arguments)},"data-camelCase"),s.fx&&(k=s.Tween.prototype.run,H=function(e){return e},i(s.Tween.prototype,"run",function(){1<s.easing[this.easing].length&&(u("easing-one-arg","'jQuery.easing."+this.easing.toString()+"' should use only one argument"),s.easing[this.easing]=H),k.apply(this,arguments)},"easing-one-arg"),S=s.fx.interval,P="jQuery.fx.interval is deprecated",n.requestAnimationFrame&&Object.defineProperty(s.fx,"interval",{configurable:!0,enumerable:!0,get:function(){return n.document.hidden||u("fx-interval",P),s.migrateIsPatchEnabled("fx-interval")&&void 0===S?13:S},set:function(e){u("fx-interval",P),S=e}}));var M=s.fn.load,q=s.event.add,O=s.event.fix;s.event.props=[],s.event.fixHooks={},r(s.event.props,"concat",s.event.props.concat,"event-old-patch","jQuery.event.props.concat() is deprecated and removed"),i(s.event,"fix",function(e){var t,r=e.type,n=this.fixHooks[r],o=s.event.props;if(o.length){u("event-old-patch","jQuery.event.props are deprecated and removed: "+o.join());while(o.length)s.event.addProp(o.pop())}if(n&&!n._migrated_&&(n._migrated_=!0,u("event-old-patch","jQuery.event.fixHooks are deprecated and removed: "+r),(o=n.props)&&o.length))while(o.length)s.event.addProp(o.pop());return t=O.call(this,e),n&&n.filter?n.filter(t,e):t},"event-old-patch"),i(s.event,"add",function(e,t){return e===n&&"load"===t&&"complete"===n.document.readyState&&u("load-after-event","jQuery(window).on('load'...) called after load event occurred"),q.apply(this,arguments)},"load-after-event"),s.each(["load","unload","error"],function(e,t){i(s.fn,t,function(){var e=Array.prototype.slice.call(arguments,0);return"load"===t&&"string"==typeof e[0]?M.apply(this,e):(u("shorthand-removed-v3","jQuery.fn."+t+"() is deprecated"),e.splice(0,0,t),arguments.length?this.on.apply(this,e):(this.triggerHandler.apply(this,e),this))},"shorthand-removed-v3")}),s.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,r){c(s.fn,r,function(e,t){return 0<arguments.length?this.on(r,null,e,t):this.trigger(r)},"shorthand-deprecated-v3","jQuery.fn."+r+"() event shorthand is deprecated")}),s(function(){s(n.document).triggerHandler("ready")}),s.event.special.ready={setup:function(){this===n.document&&u("ready-event","'ready' event is deprecated")}},c(s.fn,"bind",function(e,t,r){return this.on(e,null,t,r)},"pre-on-methods","jQuery.fn.bind() is deprecated"),c(s.fn,"unbind",function(e,t){return this.off(e,null,t)},"pre-on-methods","jQuery.fn.unbind() is deprecated"),c(s.fn,"delegate",function(e,t,r,n){return this.on(t,e,r,n)},"pre-on-methods","jQuery.fn.delegate() is deprecated"),c(s.fn,"undelegate",function(e,t,r){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",r)},"pre-on-methods","jQuery.fn.undelegate() is deprecated"),c(s.fn,"hover",function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)},"pre-on-methods","jQuery.fn.hover() is deprecated");function T(e){var t=n.document.implementation.createHTMLDocument("");return t.body.innerHTML=e,t.body&&t.body.innerHTML}var F=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi;s.UNSAFE_restoreLegacyHtmlPrefilter=function(){s.migrateEnablePatches("self-closed-tags")},i(s,"htmlPrefilter",function(e){var t,r;return(r=(t=e).replace(F,"<$1></$2>"))!==t&&T(t)!==T(r)&&u("self-closed-tags","HTML tags must be properly nested and closed: "+t),e.replace(F,"<$1></$2>")},"self-closed-tags"),s.migrateDisablePatches("self-closed-tags");var D,W,_,I=s.fn.offset;return i(s.fn,"offset",function(){var e=this[0];return!e||e.nodeType&&e.getBoundingClientRect?I.apply(this,arguments):(u("offset-valid-elem","jQuery.fn.offset() requires a valid DOM element"),arguments.length?this:void 0)},"offset-valid-elem"),s.ajax&&(D=s.param,i(s,"param",function(e,t){var r=s.ajaxSettings&&s.ajaxSettings.traditional;return void 0===t&&r&&(u("param-ajax-traditional","jQuery.param() no longer uses jQuery.ajaxSettings.traditional"),t=r),D.call(this,e,t)},"param-ajax-traditional")),c(s.fn,"andSelf",s.fn.addBack,"andSelf","jQuery.fn.andSelf() is deprecated and removed, use jQuery.fn.addBack()"),s.Deferred&&(W=s.Deferred,_=[["resolve","done",s.Callbacks("once memory"),s.Callbacks("once memory"),"resolved"],["reject","fail",s.Callbacks("once memory"),s.Callbacks("once memory"),"rejected"],["notify","progress",s.Callbacks("memory"),s.Callbacks("memory")]],i(s,"Deferred",function(e){var a=W(),i=a.promise();function t(){var o=arguments;return s.Deferred(function(n){s.each(_,function(e,t){var r="function"==typeof o[e]&&o[e];a[t[1]](function(){var e=r&&r.apply(this,arguments);e&&"function"==typeof e.promise?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[t[0]+"With"](this===i?n.promise():this,r?[e]:arguments)})}),o=null}).promise()}return c(a,"pipe",t,"deferred-pipe","deferred.pipe() is deprecated"),c(i,"pipe",t,"deferred-pipe","deferred.pipe() is deprecated"),e&&e.call(a,a),a},"deferred-pipe"),s.Deferred.exceptionHook=W.exceptionHook),s});
+/*! jQuery Migrate v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.com/license */
+"undefined"==typeof jQuery.migrateMute&&(jQuery.migrateMute=!0),function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],function(e){return t(e,window)}):"object"==typeof module&&module.exports?module.exports=t(require("jquery"),window):t(jQuery,window)}(function(s,a){"use strict";function e(e){return 0<=function(e,t){for(var r=/^(\d+)\.(\d+)\.(\d+)/,a=r.exec(e)||[],n=r.exec(t)||[],o=1;o<=3;o++){if(+n[o]<+a[o])return 1;if(+a[o]<+n[o])return-1}return 0}(s.fn.jquery,e)}s.migrateVersion="3.6.0";var t=Object.create(null);s.migrateDisablePatches=function(){for(var e=0;e<arguments.length;e++)t[arguments[e]]=!0},s.migrateEnablePatches=function(){for(var e=0;e<arguments.length;e++)delete t[arguments[e]]},s.migrateIsPatchEnabled=function(e){return!t[e]},a.console&&a.console.log&&(s&&e("3.0.0")&&!e("4.0.0")||a.console.log("JQMIGRATE: jQuery 3.x REQUIRED"),s.migrateWarnings&&a.console.log("JQMIGRATE: Migrate plugin loaded multiple times"),a.console.log("JQMIGRATE: Migrate is installed"+(s.migrateMute?"":" with logging active")+", version "+s.migrateVersion));var n={};function f(e,t){var r=a.console;!s.migrateIsPatchEnabled(e)||s.migrateDeduplicateWarnings&&n[t]||(n[t]=!0,s.migrateWarnings.push(t+" ["+e+"]"),r&&r.warn&&!s.migrateMute&&(r.warn("JQMIGRATE: "+t),s.migrateTrace&&r.trace&&r.trace()))}function r(e,t,r,a,n){Object.defineProperty(e,t,{configurable:!0,enumerable:!0,get:function(){return f(a,n),r},set:function(e){f(a,n),r=e}})}function o(e,t,r,a,n){var o=e[t];e[t]=function(){return n&&f(a,n),(s.migrateIsPatchEnabled(a)?r:o||s.noop).apply(this,arguments)}}function c(e,t,r,a,n){if(!n)throw new Error("No warning message provided");return o(e,t,r,a,n),0}function i(e,t,r,a){return o(e,t,r,a),0}s.migrateDeduplicateWarnings=!0,s.migrateWarnings=[],void 0===s.migrateTrace&&(s.migrateTrace=!0),s.migrateReset=function(){n={},s.migrateWarnings.length=0},"BackCompat"===a.document.compatMode&&f("quirks","jQuery is not compatible with Quirks Mode");var d=[],u=d.push,l=d.sort,p=d.splice,m={},y=/^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;c(s.fn,"size",function(){return this.length},"size","jQuery.fn.size() is deprecated and removed; use the .length property"),c(s,"parseJSON",function(){return JSON.parse.apply(null,arguments)},"parseJSON","jQuery.parseJSON is deprecated; use JSON.parse"),c(s,"holdReady",s.holdReady,"holdReady","jQuery.holdReady is deprecated"),c(s,"unique",s.uniqueSort,"unique","jQuery.unique is deprecated; use jQuery.uniqueSort"),e("3.1.1")&&c(s,"trim",function(e){return null==e?"":(e+"").replace(y,"$1")},"trim","jQuery.trim is deprecated; use String.prototype.trim"),e("3.2.0")&&(c(s,"nodeName",function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},"nodeName","jQuery.nodeName is deprecated"),c(s,"isArray",Array.isArray,"isArray","jQuery.isArray is deprecated; use Array.isArray")),e("3.3.0")&&(c(s,"isNumeric",function(e){var t=typeof e;return("number"==t||"string"==t)&&!isNaN(e-parseFloat(e))},"isNumeric","jQuery.isNumeric() is deprecated"),s.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){m["[object "+t+"]"]=t.toLowerCase()}),c(s,"type",function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?m[Object.prototype.toString.call(e)]||"object":typeof e},"type","jQuery.type is deprecated"),c(s,"isFunction",function(e){return"function"==typeof(t=e)&&"number"!=typeof t.nodeType&&"function"!=typeof t.item;var t},"isFunction","jQuery.isFunction() is deprecated"),c(s,"isWindow",function(e){return null!=e&&e===e.window},"isWindow","jQuery.isWindow() is deprecated"),c(s,"now",Date.now,"now","jQuery.now() is deprecated; use Date.now()"),c(s,"camelCase",s.camelCase,"camelCase","jQuery.camelCase() is deprecated"),c(s,"proxy",s.proxy,"proxy","DEPRECATED: jQuery.proxy()")),e("3.7.0")&&(c(s.fn,"push",u,"push","jQuery.fn.push() is deprecated; use .add() or convert to an array"),c(s.fn,"sort",l,"sort","jQuery.fn.sort() is deprecated; convert to an array before sorting"),c(s.fn,"splice",p,"splice","jQuery.fn.splice() is deprecated; use .slice() or .not() with .eq()"));var h,g,v,j,b,w,x=s.fn.init,Q=s.find,P=/\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/,A=/\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/g;for(h in i(s.fn,"init",function(e){var t=Array.prototype.slice.call(arguments);return s.migrateIsPatchEnabled("selector-empty-id")&&"string"==typeof e&&"#"===e&&(f("selector-empty-id","jQuery( '#' ) is not a valid selector"),t[0]=[]),x.apply(this,t)},"selector-empty-id"),s.fn.init.prototype=s.fn,i(s,"find",function(t){var r=Array.prototype.slice.call(arguments);if("string"==typeof t&&P.test(t))try{a.document.querySelector(t)}catch(e){t=t.replace(A,function(e,t,r,a){return"["+t+r+'"'+a+'"]'});try{a.document.querySelector(t),f("selector-hash","Attribute selector with '#' must be quoted: "+r[0]),r[0]=t}catch(e){f("selector-hash","Attribute selector with '#' was not fixed: "+r[0])}}return Q.apply(this,r)},"selector-hash"),Q)Object.prototype.hasOwnProperty.call(Q,h)&&(s.find[h]=Q[h]);r(s.expr,"filters",s.expr.pseudos,"expr-pre-pseudos","jQuery.expr.filters is deprecated; use jQuery.expr.pseudos"),r(s.expr,":",s.expr.pseudos,"expr-pre-pseudos","jQuery.expr[':'] is deprecated; use jQuery.expr.pseudos"),e("3.7.0")&&(i(s.expr.filter,"PSEUDO",function(e,o){var t,r,i=s.expr.pseudos[e]||s.expr.setFilters[e.toLowerCase()]||s.error("Syntax error, unrecognized expression: unsupported pseudo: "+e);return i[s.expando]?i(o):1<i.length?(f("legacy-custom-pseudos","Pseudos with multiple arguments are deprecated; use jQuery.expr.createPseudo()"),t=[e,e,"",o],s.expr.setFilters.hasOwnProperty(e.toLowerCase())?((r=function(e,t){var r,a=i(e,o),n=a.length;while(n--)e[r=Array.prototype.indexOf.call(e,a[n])]=!(t[r]=a[n])})[s.expando]=!0,r):function(e){return i(e,0,t)}):i},"legacy-custom-pseudos"),"undefined"!=typeof Proxy&&s.each(["pseudos","setFilters"],function(e,t){s.expr[t]=new Proxy(s.expr[t],{set:function(e,t,r){return"function"==typeof r&&!r[s.expando]&&1<r.length&&f("legacy-custom-pseudos","Pseudos with multiple arguments are deprecated; use jQuery.expr.createPseudo()"),Reflect.set.apply(this,arguments)}})})),s.ajax&&(g=s.ajax,v=[],j="migrate-"+Date.now(),b=s.ajaxSettings.jsonpCallback,w=/(=)\?(?=&|$)|\?\?/,i(s,"ajax",function(){var e=g.apply(this,arguments);return e.promise&&(c(e,"success",e.done,"jqXHR-methods","jQXHR.success is deprecated and removed"),c(e,"error",e.fail,"jqXHR-methods","jQXHR.error is deprecated and removed"),c(e,"complete",e.always,"jqXHR-methods","jQXHR.complete is deprecated and removed")),e},"jqXHR-methods"),s.ajaxSetup({jsonpCallback:function(){if(s.migrateIsPatchEnabled("jsonp-promotion")){var e=v.pop()||s.expando+"_"+j++;return this[e]=!0,e}return b.apply(this,arguments)}}),s.ajaxPrefilter("+json",function(e){s.migrateIsPatchEnabled("jsonp-promotion")&&!1!==e.jsonp&&(w.test(e.url)||"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&w.test(e.data))&&f("jsonp-promotion","JSON-to-JSONP auto-promotion is deprecated")}));var _=s.fn.removeAttr,k=s.attr,C=s.fn.toggleClass,E="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",S=new RegExp("^(?:"+E+")$","i"),D=/\S+/g,O={hidden:["until-found"]};function H(e){return e.replace(/-([a-z])/g,function(e,t){return t.toUpperCase()})}function I(e,t){if(!Object.setPrototypeOf)return e;for(var r=t.warningId,a=t.apiName,n=["__proto__","__defineGetter__","__defineSetter__","__lookupGetter__","__lookupSetter__","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],o=Object.create(null),i=0;i<n.length;i++)!function(t){Object.defineProperty(o,t,{get:function(){return f(r,"Accessing properties from "+a+" inherited from Object.prototype is deprecated"),t+"__cache"in o?o[t+"__cache"]:Object.prototype[t]},set:function(e){f(r,"Setting properties from "+a+" inherited from Object.prototype is deprecated"),o[t+"__cache"]=e}})}(n[i]);return Object.setPrototypeOf(o,Object.prototype),Object.setPrototypeOf(e,o),e}s.each(E.split("|"),function(e,r){var t=s.attrHooks[r]||{};s.attrHooks[r]={get:t.get||function(e){var t;return s.migrateIsPatchEnabled("boolean-attributes")&&(t=e.getAttribute(r))!==r&&null!=t&&-1===(O[r]||[]).indexOf(String(t).toLowerCase())&&f("boolean-attributes","Boolean attribute '"+r+"' value is different from its lowercased name"),null},set:t.set||function(e,t,r){return s.migrateIsPatchEnabled("boolean-attributes")?t!==r&&-1===(O[r]||[]).indexOf(String(t).toLowerCase())?(!1!==t&&f("boolean-attributes","Boolean attribute '"+r+"' is not set to its lowercased name"),!1===t?s.removeAttr(e,r):e.setAttribute(r,r),r):void 0:(!1===t?s.removeAttr(e,r):e.setAttribute(r,r),r)}}}),i(s,"attr",function(e,t,r){var a=e.nodeType;return 3===a||8===a||2===a||"undefined"==typeof e.getAttribute||!1!==r||0===t.toLowerCase().indexOf("aria-")||S.test(t)?k.apply(this,arguments):(f("attr-false","Setting the non-ARIA non-boolean attribute '"+t+"' to false"),void s.attr(e,t,"false"))},"attr-false"),i(s.fn,"removeAttr",function(e){var r=this,a=!1;return s.each(e.match(D),function(e,t){S.test(t)&&r.each(function(){if(!1!==s(this).prop(t))return!(a=!0)}),a&&(f("removeAttr-bool","jQuery.fn.removeAttr no longer sets boolean properties: "+t),r.prop(t,!1))}),_.apply(this,arguments)},"removeAttr-bool"),i(s.fn,"toggleClass",function(t){return void 0!==t&&"boolean"!=typeof t?C.apply(this,arguments):(f("toggleClass-bool","jQuery.fn.toggleClass( boolean ) is deprecated"),this.each(function(){var e=this.getAttribute&&this.getAttribute("class")||"";e&&s.data(this,"__className__",e),this.setAttribute&&this.setAttribute("class",!e&&!1!==t&&s.data(this,"__className__")||"")}))},"toggleClass-bool");var N,M=!1,R=/^[a-z]/,q=/^(?:Border(?:Top|Right|Bottom|Left)?(?:Width|)|(?:Margin|Padding)?(?:Top|Right|Bottom|Left)?|(?:Min|Max)?(?:Width|Height))$/;s.swap&&s.each(["height","width","reliableMarginRight"],function(e,t){var r=s.cssHooks[t]&&s.cssHooks[t].get;r&&(s.cssHooks[t].get=function(){var e;return M=!0,e=r.apply(this,arguments),M=!1,e})}),i(s,"swap",function(e,t,r,a){var n,o,i={};for(o in M||f("swap","jQuery.swap() is undocumented and deprecated"),t)i[o]=e.style[o],e.style[o]=t[o];for(o in n=r.apply(e,a||[]),t)e.style[o]=i[o];return n},"swap"),e("3.4.0")&&"undefined"!=typeof Proxy&&(s.cssProps=new Proxy(s.cssProps||{},{set:function(){return f("cssProps","jQuery.cssProps is deprecated"),Reflect.set.apply(this,arguments)}})),N=s.fn.css,i(s.fn,"css",function(e,t){var r,a,n=this;return e&&"object"==typeof e&&!Array.isArray(e)?(s.each(e,function(e,t){s.fn.css.call(n,e,t)}),this):("number"==typeof t&&(r=H(e),a=r,R.test(a)&&q.test(a[0].toUpperCase()+a.slice(1))||s.cssNumber[r]||f("css-number",'Number-typed values are deprecated for jQuery.fn.css( "'+e+'", value )')),N.apply(this,arguments))},"css-number");var T,F,L,W,$=/[A-Z]/g,J=/[^\x20\t\r\n\f]+/g,B=s.data,z=s._data;function X(e){return e.replace($,"-$&").toLowerCase()}function G(s,e){var c=e.apiName,t=e.isPrivateData,d=e.isInstanceMethod,u=t?z:B;function l(e,t){var r,a;if(e){for(a in r=u(e),t)a!==H(a)&&(f("data-camelCase",c+" always sets/gets camelCased names: "+a),r[a]=t[a]);return d?s.call(this,t):s.call(this,e,t),t}}function p(e,t,r){var a;if(e)return(a=u(e))&&t in a&&(f("data-camelCase",c+" always sets/gets camelCased names: "+t),a[t]=r),u(e,t,r),void 0!==r?r:t}return function(e,t,r){var a,n=this,o=Array.prototype.slice.call(arguments),i=o.length;return d&&(r=t,t=e,e=n[0],i++),t&&"object"==typeof t&&2===i?d?n.each(function(){l.call(n,this,t)}):l.call(n,e,t):t&&"string"==typeof t&&t!==H(t)&&2<i?d?n.each(function(){p.call(n,this,t,r)}):p.call(n,e,t,r):e&&t&&"string"==typeof t&&t!==H(t)&&2===i&&(a=u(e))&&t in a?(f("data-camelCase",c+" always sets/gets camelCased names: "+t),a[t]):s.apply(this,o)}}function U(i,e){var t=e.isPrivateData,s=e.isInstanceMethod,c=t?z:B;function r(e,t){var r,a,n,o=c(e);if(void 0!==t){Array.isArray(t)||(t=t in o?[t]:t.match(J)||[]),n=t.map(X),r=t.length;while(r--)(a=t[r])!==H(a)&&a in o&&f("data-camelCase","jQuery"+(s?".fn":"")+".data() always sets/gets camelCased names: "+a),delete o[a];r=n.length;while(r--)delete o[n[r]];i(e,t)}else i(e)}return function(e,t){if(s)return t=e,this.each(function(){r(this,t)});r(e,t)}}function V(t,e){var r=e.warningId,a=e.apiName,n=e.isInstanceMethod;return function(){var e=t.apply(this,arguments);return arguments.length!==(n?0:1)||void 0===e||I(e,{warningId:r,apiName:a}),e}}i(s,"data",G(s.data,{apiName:"jQuery.data()",isPrivateData:!1,isInstanceMethod:!1}),"data-camelCase"),i(s,"_data",G(s._data,{apiName:"jQuery._data()",isPrivateData:!0,isInstanceMethod:!1}),"data-camelCase"),i(s.fn,"data",G(s.fn.data,{apiName:"jQuery.fn.data()",isPrivateData:!1,isInstanceMethod:!0}),"data-camelCase"),i(s,"removeData",U(s.removeData,{isPrivateData:!1,isInstanceMethod:!1}),"data-camelCase"),i(s,"_removeData",U(s._removeData,{isPrivateData:!0,isInstanceMethod:!1}),"data-camelCase"),i(s.fn,"removeData",U(s.removeData,{isPrivateData:!1,isInstanceMethod:!0}),"data-camelCase"),i(s,"data",V(s.data,{warningId:"data-null-proto",apiName:"jQuery.data()",isInstanceMethod:!1}),"data-null-proto"),i(s,"_data",V(s._data,{warningId:"data-null-proto",apiName:"jQuery._data()",isInstanceMethod:!1}),"data-null-proto"),i(s.fn,"data",V(s.fn.data,{warningId:"data-null-proto",apiName:"jQuery.fn.data()",isInstanceMethod:!0}),"data-null-proto"),s.fx&&(L=s.Tween.prototype.run,W=function(e){return e},i(s.Tween.prototype,"run",function(){1<s.easing[this.easing].length&&(f("easing-one-arg","'jQuery.easing."+this.easing.toString()+"' should use only one argument"),s.easing[this.easing]=W),L.apply(this,arguments)},"easing-one-arg"),T=s.fx.interval,F="jQuery.fx.interval is deprecated",a.requestAnimationFrame&&Object.defineProperty(s.fx,"interval",{configurable:!0,enumerable:!0,get:function(){return a.document.hidden||f("fx-interval",F),s.migrateIsPatchEnabled("fx-interval")&&void 0===T?13:T},set:function(e){f("fx-interval",F),T=e}}));var Z=s.fn.load,K=s.event.add,Y=s.event.fix;s.event.props=[],s.event.fixHooks={},r(s.event.props,"concat",s.event.props.concat,"event-old-patch","jQuery.event.props.concat() is deprecated and removed"),i(s.event,"fix",function(e){var t,r=e.type,a=this.fixHooks[r],n=s.event.props;if(n.length){f("event-old-patch","jQuery.event.props are deprecated and removed: "+n.join());while(n.length)s.event.addProp(n.pop())}if(a&&!a._migrated_&&(a._migrated_=!0,f("event-old-patch","jQuery.event.fixHooks are deprecated and removed: "+r),(n=a.props)&&n.length))while(n.length)s.event.addProp(n.pop());return t=Y.call(this,e),a&&a.filter?a.filter(t,e):t},"event-old-patch"),i(s.event,"add",function(e,t){return e===a&&"load"===t&&"complete"===a.document.readyState&&f("load-after-event","jQuery(window).on('load'...) called after load event occurred"),K.apply(this,arguments)},"load-after-event"),s.each(["load","unload","error"],function(e,t){i(s.fn,t,function(){var e=Array.prototype.slice.call(arguments,0);return"load"===t&&"string"==typeof e[0]?Z.apply(this,e):(f("shorthand-removed-v3","jQuery.fn."+t+"() is deprecated"),e.splice(0,0,t),arguments.length?this.on.apply(this,e):(this.triggerHandler.apply(this,e),this))},"shorthand-removed-v3")}),s.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){c(s.fn,t,s.fn[t],"shorthand-deprecated-v3","DEPRECATED: jQuery.fn."+t+"() event shorthand")}),s(function(){s(a.document).triggerHandler("ready")}),s.event.special.ready={setup:function(){this===a.document&&f("ready-event","'ready' event is deprecated")}},c(s.fn,"bind",function(e,t,r){return this.on(e,null,t,r)},"pre-on-methods","jQuery.fn.bind() is deprecated"),c(s.fn,"unbind",function(e,t){return this.off(e,null,t)},"pre-on-methods","jQuery.fn.unbind() is deprecated"),c(s.fn,"delegate",function(e,t,r,a){return this.on(t,e,r,a)},"pre-on-methods","jQuery.fn.delegate() is deprecated"),c(s.fn,"undelegate",function(e,t,r){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",r)},"pre-on-methods","jQuery.fn.undelegate() is deprecated"),c(s.fn,"hover",function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)},"pre-on-methods","jQuery.fn.hover() is deprecated"),I(s.event.special,{warningId:"event-special-null-proto",apiName:"jQuery.event.special"});function ee(e){var t=a.document.implementation.createHTMLDocument("");return t.body.innerHTML=e,t.body&&t.body.innerHTML}var te=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi;c(s,"UNSAFE_restoreLegacyHtmlPrefilter",function(){s.migrateEnablePatches("self-closed-tags")},"legacy-self-closed-tags",'jQuery.UNSAFE_restoreLegacyHtmlPrefilter deprecated; use `jQuery.migrateEnablePatches( "self-closed-tags" )`'),i(s,"htmlPrefilter",function(e){var t,r;return(r=(t=e).replace(te,"<$1></$2>"))!==t&&ee(t)!==ee(r)&&f("self-closed-tags","HTML tags must be properly nested and closed: "+t),e.replace(te,"<$1></$2>")},"self-closed-tags"),s.migrateDisablePatches("self-closed-tags");var re,ae,ne,oe,ie=s.fn.offset;return i(s.fn,"offset",function(){var e=this[0];return!e||e.nodeType&&e.getBoundingClientRect?ie.apply(this,arguments):(f("offset-valid-elem","jQuery.fn.offset() requires a valid DOM element"),arguments.length?this:void 0)},"offset-valid-elem"),s.ajax&&(re=s.param,i(s,"param",function(e,t){var r=s.ajaxSettings&&s.ajaxSettings.traditional;return void 0===t&&r&&(f("param-ajax-traditional","jQuery.param() no longer uses jQuery.ajaxSettings.traditional"),t=r),re.call(this,e,t)},"param-ajax-traditional")),c(s.fn,"andSelf",s.fn.addBack,"andSelf","jQuery.fn.andSelf() is deprecated and removed, use jQuery.fn.addBack()"),s.Deferred&&(ne=s.Deferred,oe=[["resolve","done",s.Callbacks("once memory"),s.Callbacks("once memory"),"resolved"],["reject","fail",s.Callbacks("once memory"),s.Callbacks("once memory"),"rejected"],["notify","progress",s.Callbacks("memory"),s.Callbacks("memory")]],i(s,"Deferred",function(e){var o=ne(),i=o.promise();function t(){var n=arguments;return s.Deferred(function(a){s.each(oe,function(e,t){var r="function"==typeof n[e]&&n[e];o[t[1]](function(){var e=r&&r.apply(this,arguments);e&&"function"==typeof e.promise?e.promise().done(a.resolve).fail(a.reject).progress(a.notify):a[t[0]+"With"](this===i?a.promise():this,r?[e]:arguments)})}),n=null}).promise()}return c(o,"pipe",t,"deferred-pipe","deferred.pipe() is deprecated"),c(i,"pipe",t,"deferred-pipe","deferred.pipe() is deprecated"),e&&e.call(o,o),o},"deferred-pipe"),s.Deferred.exceptionHook=ne.exceptionHook,s.Deferred.getErrorHook=ne.getErrorHook,Object.defineProperty(s.Deferred,"getStackHook",{configurable:!0,enumerable:!0,get:function(){return s.migrateIsPatchEnabled("deferred-getStackHook")?s.Deferred.getErrorHook:ae},set:function(e){s.migrateIsPatchEnabled("deferred-getStackHook")?s.Deferred.getErrorHook!==e&&(f("deferred-getStackHook","jQuery.Deferred.getStackHook is deprecated; use jQuery.Deferred.getErrorHook"),s.Deferred.getErrorHook=e):ae=e}})),s});
diff --git a/wp-includes/script-loader.php b/wp-includes/script-loader.php
index 7b93f6a5c1..6b01efa171 100644
--- a/wp-includes/script-loader.php
+++ b/wp-includes/script-loader.php
@@ -906,7 +906,7 @@ function wp_default_scripts( $scripts ) {
*/
$scripts->add( 'jquery', false, array( 'jquery-core', 'jquery-migrate' ), '3.7.1' );
$scripts->add( 'jquery-core', "/wp-includes/js/jquery/jquery$suffix.js", array(), '3.7.1' );
- $scripts->add( 'jquery-migrate', "/wp-includes/js/jquery/jquery-migrate$suffix.js", array(), '3.4.1' );
+ $scripts->add( 'jquery-migrate', "/wp-includes/js/jquery/jquery-migrate$suffix.js", array(), '3.6.0' );
/*
* Full jQuery UI.
diff --git a/wp-includes/version.php b/wp-includes/version.php
index a88ee97b42..571a2decde 100644
--- a/wp-includes/version.php
+++ b/wp-includes/version.php
@@ -16,7 +16,7 @@
*
* @global string $wp_version
*/
-$wp_version = '7.2-alpha-63982';
+$wp_version = '7.2-alpha-63983';
/**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.