mirror of
				https://github.com/dani-garcia/vaultwarden.git
				synced 2025-10-31 10:18:19 +02:00 
			
		
		
		
	Multiple Admin Interface fixes and some others.
Misc: - Fixed hadolint workflow, new git cli needs some extra arguments. - Add ignore paths to all specific on triggers. - Updated hadolint version. - Made SMTP_DEBUG read-only, since it can't be changed at runtime. Admin: - Migrated from Bootstrap v4 to v5 - Updated jquery to v3.6.0 - Updated Datatables - Made Javascript strict - Added a way to show which ENV Vars are overridden. - Changed the way to provide data for handlebars. - Fixed date/time check. - Made support string use details and summary feature of markdown/github.
This commit is contained in:
		
							
								
								
									
										5015
									
								
								src/static/scripts/bootstrap-native.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5015
									
								
								src/static/scripts/bootstrap-native.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										14435
									
								
								src/static/scripts/bootstrap.css
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										14435
									
								
								src/static/scripts/bootstrap.css
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										26
									
								
								src/static/scripts/datatables.css
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										26
									
								
								src/static/scripts/datatables.css
									
									
									
									
										vendored
									
									
								
							| @@ -4,13 +4,18 @@ | ||||
|  * | ||||
|  * To rebuild or modify this file with the latest versions of the included | ||||
|  * software please visit: | ||||
|  *   https://datatables.net/download/#bs4/dt-1.10.23 | ||||
|  *   https://datatables.net/download/#bs5/dt-1.10.25 | ||||
|  * | ||||
|  * Included libraries: | ||||
|  *   DataTables 1.10.23 | ||||
|  *   DataTables 1.10.25 | ||||
|  */ | ||||
|  | ||||
| @charset "UTF-8"; | ||||
| /*! Bootstrap 5 integration for DataTables | ||||
|  * | ||||
|  * ©2020 SpryMedia Ltd, all rights reserved. | ||||
|  * License: MIT datatables.net/license/mit | ||||
|  */ | ||||
| table.dataTable { | ||||
|   clear: both; | ||||
|   margin-top: 6px !important; | ||||
| @@ -105,7 +110,7 @@ table.dataTable > thead .sorting_asc_disabled:after, | ||||
| table.dataTable > thead .sorting_desc_disabled:before, | ||||
| table.dataTable > thead .sorting_desc_disabled:after { | ||||
|   position: absolute; | ||||
|   bottom: 0.9em; | ||||
|   bottom: 0.5em; | ||||
|   display: block; | ||||
|   opacity: 0.3; | ||||
| } | ||||
| @@ -193,18 +198,27 @@ table.dataTable.table-sm .sorting_desc:after { | ||||
| table.table-bordered.dataTable { | ||||
|   border-right-width: 0; | ||||
| } | ||||
| table.table-bordered.dataTable thead tr:first-child th, | ||||
| table.table-bordered.dataTable thead tr:first-child td { | ||||
|   border-top-width: 1px; | ||||
| } | ||||
| table.table-bordered.dataTable th, | ||||
| table.table-bordered.dataTable td { | ||||
|   border-left-width: 0; | ||||
| } | ||||
| table.table-bordered.dataTable th:first-child, table.table-bordered.dataTable th:first-child, | ||||
| table.table-bordered.dataTable td:first-child, | ||||
| table.table-bordered.dataTable td:first-child { | ||||
|   border-left-width: 1px; | ||||
| } | ||||
| table.table-bordered.dataTable th:last-child, table.table-bordered.dataTable th:last-child, | ||||
| table.table-bordered.dataTable td:last-child, | ||||
| table.table-bordered.dataTable td:last-child { | ||||
|   border-right-width: 1px; | ||||
| } | ||||
| table.table-bordered.dataTable tbody th, | ||||
| table.table-bordered.dataTable tbody td { | ||||
|   border-bottom-width: 0; | ||||
| table.table-bordered.dataTable th, | ||||
| table.table-bordered.dataTable td { | ||||
|   border-bottom-width: 1px; | ||||
| } | ||||
|  | ||||
| div.dataTables_scrollHead table.table-bordered { | ||||
|   | ||||
							
								
								
									
										90
									
								
								src/static/scripts/datatables.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										90
									
								
								src/static/scripts/datatables.js
									
									
									
									
										vendored
									
									
								
							| @@ -4,24 +4,24 @@ | ||||
|  * | ||||
|  * To rebuild or modify this file with the latest versions of the included | ||||
|  * software please visit: | ||||
|  *   https://datatables.net/download/#bs4/dt-1.10.23 | ||||
|  *   https://datatables.net/download/#bs5/dt-1.10.25 | ||||
|  * | ||||
|  * Included libraries: | ||||
|  *   DataTables 1.10.23 | ||||
|  *   DataTables 1.10.25 | ||||
|  */ | ||||
|  | ||||
| /*! DataTables 1.10.23 | ||||
|  * ©2008-2020 SpryMedia Ltd - datatables.net/license | ||||
| /*! DataTables 1.10.25 | ||||
|  * ©2008-2021 SpryMedia Ltd - datatables.net/license | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * @summary     DataTables | ||||
|  * @description Paginate, search and order HTML tables | ||||
|  * @version     1.10.23 | ||||
|  * @version     1.10.25 | ||||
|  * @file        jquery.dataTables.js | ||||
|  * @author      SpryMedia Ltd | ||||
|  * @contact     www.datatables.net | ||||
|  * @copyright   Copyright 2008-2020 SpryMedia Ltd. | ||||
|  * @copyright   Copyright 2008-2021 SpryMedia Ltd. | ||||
|  * | ||||
|  * This source file is free software, available under the following license: | ||||
|  *   MIT license - http://datatables.net/license | ||||
| @@ -1100,6 +1100,8 @@ | ||||
| 						_fnLanguageCompat( json ); | ||||
| 						_fnCamelToHungarian( defaults.oLanguage, json ); | ||||
| 						$.extend( true, oLanguage, json ); | ||||
| 			 | ||||
| 						_fnCallbackFire( oSettings, null, 'i18n', [oSettings]); | ||||
| 						_fnInitialise( oSettings ); | ||||
| 					}, | ||||
| 					error: function () { | ||||
| @@ -1109,6 +1111,9 @@ | ||||
| 				} ); | ||||
| 				bInitHandedOff = true; | ||||
| 			} | ||||
| 			else { | ||||
| 				_fnCallbackFire( oSettings, null, 'i18n', [oSettings]); | ||||
| 			} | ||||
| 			 | ||||
| 			/* | ||||
| 			 * Stripes | ||||
| @@ -1260,7 +1265,7 @@ | ||||
| 			 | ||||
| 				var tbody = $this.children('tbody'); | ||||
| 				if ( tbody.length === 0 ) { | ||||
| 					tbody = $('<tbody/>').appendTo($this); | ||||
| 					tbody = $('<tbody/>').insertAfter(thead); | ||||
| 				} | ||||
| 				oSettings.nTBody = tbody[0]; | ||||
| 			 | ||||
| @@ -2315,8 +2320,9 @@ | ||||
| 						} | ||||
| 	 | ||||
| 						// Only a single match is needed for html type since it is | ||||
| 						// bottom of the pile and very similar to string | ||||
| 						if ( detectedType === 'html' ) { | ||||
| 						// bottom of the pile and very similar to string - but it | ||||
| 						// must not be empty | ||||
| 						if ( detectedType === 'html' && ! _empty(cache[k]) ) { | ||||
| 							break; | ||||
| 						} | ||||
| 					} | ||||
| @@ -3421,9 +3427,10 @@ | ||||
| 	/** | ||||
| 	 * Insert the required TR nodes into the table for display | ||||
| 	 *  @param {object} oSettings dataTables settings object | ||||
| 	 *  @param ajaxComplete true after ajax call to complete rendering | ||||
| 	 *  @memberof DataTable#oApi | ||||
| 	 */ | ||||
| 	function _fnDraw( oSettings ) | ||||
| 	function _fnDraw( oSettings, ajaxComplete ) | ||||
| 	{ | ||||
| 		/* Provide a pre-callback function which can be used to cancel the draw is false is returned */ | ||||
| 		var aPreDraw = _fnCallbackFire( oSettings, 'aoPreDrawCallback', 'preDraw', [oSettings] ); | ||||
| @@ -3472,8 +3479,9 @@ | ||||
| 		{ | ||||
| 			oSettings.iDraw++; | ||||
| 		} | ||||
| 		else if ( !oSettings.bDestroying && !_fnAjaxUpdate( oSettings ) ) | ||||
| 		else if ( !oSettings.bDestroying && !ajaxComplete) | ||||
| 		{ | ||||
| 			_fnAjaxUpdate( oSettings ); | ||||
| 			return; | ||||
| 		} | ||||
| 	 | ||||
| @@ -4005,21 +4013,16 @@ | ||||
| 	 */ | ||||
| 	function _fnAjaxUpdate( settings ) | ||||
| 	{ | ||||
| 		if ( settings.bAjaxDataGet ) { | ||||
| 			settings.iDraw++; | ||||
| 			_fnProcessingDisplay( settings, true ); | ||||
| 		settings.iDraw++; | ||||
| 		_fnProcessingDisplay( settings, true ); | ||||
| 	 | ||||
| 			_fnBuildAjax( | ||||
| 				settings, | ||||
| 				_fnAjaxParameters( settings ), | ||||
| 				function(json) { | ||||
| 					_fnAjaxUpdateDraw( settings, json ); | ||||
| 				} | ||||
| 			); | ||||
| 	 | ||||
| 			return false; | ||||
| 		} | ||||
| 		return true; | ||||
| 		_fnBuildAjax( | ||||
| 			settings, | ||||
| 			_fnAjaxParameters( settings ), | ||||
| 			function(json) { | ||||
| 				_fnAjaxUpdateDraw( settings, json ); | ||||
| 			} | ||||
| 		); | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| @@ -4172,14 +4175,12 @@ | ||||
| 		} | ||||
| 		settings.aiDisplay = settings.aiDisplayMaster.slice(); | ||||
| 	 | ||||
| 		settings.bAjaxDataGet = false; | ||||
| 		_fnDraw( settings ); | ||||
| 		_fnDraw( settings, true ); | ||||
| 	 | ||||
| 		if ( ! settings._bInitComplete ) { | ||||
| 			_fnInitComplete( settings, json ); | ||||
| 		} | ||||
| 	 | ||||
| 		settings.bAjaxDataGet = true; | ||||
| 		_fnProcessingDisplay( settings, false ); | ||||
| 	} | ||||
| 	 | ||||
| @@ -6108,7 +6109,7 @@ | ||||
| 		{ | ||||
| 			var col = columns[i]; | ||||
| 			var asSorting = col.asSorting; | ||||
| 			var sTitle = col.sTitle.replace( /<.*?>/g, "" ); | ||||
| 			var sTitle = col.ariaTitle || col.sTitle.replace( /<.*?>/g, "" ); | ||||
| 			var th = col.nTh; | ||||
| 	 | ||||
| 			// IE7 is throwing an error when setting these properties with jQuery's | ||||
| @@ -9542,7 +9543,7 @@ | ||||
| 	 *  @type string | ||||
| 	 *  @default Version number | ||||
| 	 */ | ||||
| 	DataTable.version = "1.10.23"; | ||||
| 	DataTable.version = "1.10.25"; | ||||
|  | ||||
| 	/** | ||||
| 	 * Private data store, containing all of the settings objects that are | ||||
| @@ -13623,13 +13624,6 @@ | ||||
| 		 */ | ||||
| 		"sAjaxDataProp": null, | ||||
| 	 | ||||
| 		/** | ||||
| 		 * Note if draw should be blocked while getting data | ||||
| 		 *  @type boolean | ||||
| 		 *  @default true | ||||
| 		 */ | ||||
| 		"bAjaxDataGet": true, | ||||
| 	 | ||||
| 		/** | ||||
| 		 * The last jQuery XHR object that was used for server-side data gathering. | ||||
| 		 * This can be used for working with the XHR information in one of the | ||||
| @@ -13966,7 +13960,7 @@ | ||||
| 		 * | ||||
| 		 *  @type string | ||||
| 		 */ | ||||
| 		build:"bs4/dt-1.10.23", | ||||
| 		build:"bs5/dt-1.10.25", | ||||
| 	 | ||||
| 	 | ||||
| 		/** | ||||
| @@ -14494,8 +14488,8 @@ | ||||
| 		"sSortAsc": "sorting_asc", | ||||
| 		"sSortDesc": "sorting_desc", | ||||
| 		"sSortable": "sorting", /* Sortable in both directions */ | ||||
| 		"sSortableAsc": "sorting_asc_disabled", | ||||
| 		"sSortableDesc": "sorting_desc_disabled", | ||||
| 		"sSortableAsc": "sorting_desc_disabled", | ||||
| 		"sSortableDesc": "sorting_asc_disabled", | ||||
| 		"sSortableNone": "sorting_disabled", | ||||
| 		"sSortColumn": "sorting_", /* Note that an int is postfixed for the sorting order */ | ||||
| 	 | ||||
| @@ -14936,7 +14930,6 @@ | ||||
| 	 | ||||
| 					cell | ||||
| 						.removeClass( | ||||
| 							column.sSortingClass +' '+ | ||||
| 							classes.sSortAsc +' '+ | ||||
| 							classes.sSortDesc | ||||
| 						) | ||||
| @@ -15061,6 +15054,11 @@ | ||||
| 						decimal+(d - intPart).toFixed( precision ).substring( 2 ): | ||||
| 						''; | ||||
| 	 | ||||
| 					// If zero, then can't have a negative prefix | ||||
| 					if (intPart === 0 && parseFloat(floatPart) === 0) { | ||||
| 						negative = ''; | ||||
| 					} | ||||
| 	 | ||||
| 					return negative + (prefix||'') + | ||||
| 						intPart.toString().replace( | ||||
| 							/\B(?=(\d{3})+(?!\d))/g, thousands | ||||
| @@ -15395,12 +15393,12 @@ | ||||
| })); | ||||
|  | ||||
|  | ||||
| /*! DataTables Bootstrap 4 integration | ||||
|  * ©2011-2017 SpryMedia Ltd - datatables.net/license | ||||
| /*! DataTables Bootstrap 5 integration | ||||
|  * 2020 SpryMedia Ltd - datatables.net/license | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * DataTables integration for Bootstrap 4. This requires Bootstrap 4 and | ||||
|  * DataTables integration for Bootstrap 4. This requires Bootstrap 5 and | ||||
|  * DataTables 1.10 or newer. | ||||
|  * | ||||
|  * This file sets the defaults and adds options to DataTables to style its | ||||
| @@ -15452,9 +15450,9 @@ $.extend( true, DataTable.defaults, { | ||||
|  | ||||
| /* Default class modification */ | ||||
| $.extend( DataTable.ext.classes, { | ||||
| 	sWrapper:      "dataTables_wrapper dt-bootstrap4", | ||||
| 	sWrapper:      "dataTables_wrapper dt-bootstrap5", | ||||
| 	sFilterInput:  "form-control form-control-sm", | ||||
| 	sLengthSelect: "custom-select custom-select-sm form-control form-control-sm", | ||||
| 	sLengthSelect: "form-select form-select-sm", | ||||
| 	sProcessing:   "dataTables_processing card", | ||||
| 	sPageButton:   "paginate_button page-item" | ||||
| } ); | ||||
|   | ||||
| @@ -1,15 +1,15 @@ | ||||
| /*! | ||||
|  * jQuery JavaScript Library v3.5.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-deprecated/ajax-event-alias,-effects,-effects/Tween,-effects/animatedSelector | ||||
|  * jQuery JavaScript Library v3.6.0 -ajax,-ajax/jsonp,-ajax/load,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-deprecated/ajax-event-alias,-effects,-effects/Tween,-effects/animatedSelector | ||||
|  * https://jquery.com/
 | ||||
|  * | ||||
|  * Includes Sizzle.js | ||||
|  * https://sizzlejs.com/
 | ||||
|  * | ||||
|  * Copyright JS Foundation and other contributors | ||||
|  * Copyright OpenJS Foundation and other contributors | ||||
|  * Released under the MIT license | ||||
|  * https://jquery.org/license
 | ||||
|  * | ||||
|  * Date: 2020-05-04T22:49Z | ||||
|  * Date: 2021-03-02T17:08Z | ||||
|  */ | ||||
| ( function( global, factory ) { | ||||
| 
 | ||||
| @@ -76,12 +76,16 @@ var support = {}; | ||||
| 
 | ||||
| var isFunction = 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.
 | ||||
|       return typeof obj === "function" && typeof obj.nodeType !== "number"; | ||||
|   }; | ||||
| 		// 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"; | ||||
| 	}; | ||||
| 
 | ||||
| 
 | ||||
| var isWindow = function isWindow( obj ) { | ||||
| @@ -147,7 +151,7 @@ function toType( obj ) { | ||||
| 
 | ||||
| 
 | ||||
| var | ||||
| 	version = "3.5.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-deprecated/ajax-event-alias,-effects,-effects/Tween,-effects/animatedSelector", | ||||
| 	version = "3.6.0 -ajax,-ajax/jsonp,-ajax/load,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-deprecated/ajax-event-alias,-effects,-effects/Tween,-effects/animatedSelector", | ||||
| 
 | ||||
| 	// Define a local copy of jQuery
 | ||||
| 	jQuery = function( selector, context ) { | ||||
| @@ -401,7 +405,7 @@ jQuery.extend( { | ||||
| 			if ( isArrayLike( Object( arr ) ) ) { | ||||
| 				jQuery.merge( ret, | ||||
| 					typeof arr === "string" ? | ||||
| 					[ arr ] : arr | ||||
| 						[ arr ] : arr | ||||
| 				); | ||||
| 			} else { | ||||
| 				push.call( ret, arr ); | ||||
| @@ -496,9 +500,9 @@ if ( typeof Symbol === "function" ) { | ||||
| 
 | ||||
| // Populate the class2type map
 | ||||
| jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), | ||||
| function( _i, name ) { | ||||
| 	class2type[ "[object " + name + "]" ] = name.toLowerCase(); | ||||
| } ); | ||||
| 	function( _i, name ) { | ||||
| 		class2type[ "[object " + name + "]" ] = name.toLowerCase(); | ||||
| 	} ); | ||||
| 
 | ||||
| function isArrayLike( obj ) { | ||||
| 
 | ||||
| @@ -518,14 +522,14 @@ function isArrayLike( obj ) { | ||||
| } | ||||
| var Sizzle = | ||||
| /*! | ||||
|  * Sizzle CSS Selector Engine v2.3.5 | ||||
|  * Sizzle CSS Selector Engine v2.3.6 | ||||
|  * https://sizzlejs.com/
 | ||||
|  * | ||||
|  * Copyright JS Foundation and other contributors | ||||
|  * Released under the MIT license | ||||
|  * https://js.foundation/
 | ||||
|  * | ||||
|  * Date: 2020-03-14 | ||||
|  * Date: 2021-02-16 | ||||
|  */ | ||||
| ( function( window ) { | ||||
| var i, | ||||
| @@ -1108,8 +1112,8 @@ support = Sizzle.support = {}; | ||||
|  * @returns {Boolean} True iff elem is a non-HTML XML node | ||||
|  */ | ||||
| isXML = Sizzle.isXML = function( elem ) { | ||||
| 	var namespace = elem.namespaceURI, | ||||
| 		docElem = ( elem.ownerDocument || elem ).documentElement; | ||||
| 	var namespace = elem && elem.namespaceURI, | ||||
| 		docElem = elem && ( elem.ownerDocument || elem ).documentElement; | ||||
| 
 | ||||
| 	// Support: IE <=8
 | ||||
| 	// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes
 | ||||
| @@ -3024,9 +3028,9 @@ var rneedsContext = jQuery.expr.match.needsContext; | ||||
| 
 | ||||
| function nodeName( elem, name ) { | ||||
| 
 | ||||
|   return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); | ||||
| 	return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); | ||||
| 
 | ||||
| }; | ||||
| } | ||||
| var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); | ||||
| 
 | ||||
| 
 | ||||
| @@ -3997,8 +4001,8 @@ jQuery.extend( { | ||||
| 			resolveContexts = Array( i ), | ||||
| 			resolveValues = slice.call( arguments ), | ||||
| 
 | ||||
| 			// the master Deferred
 | ||||
| 			master = jQuery.Deferred(), | ||||
| 			// the primary Deferred
 | ||||
| 			primary = jQuery.Deferred(), | ||||
| 
 | ||||
| 			// subordinate callback factory
 | ||||
| 			updateFunc = function( i ) { | ||||
| @@ -4006,30 +4010,30 @@ jQuery.extend( { | ||||
| 					resolveContexts[ i ] = this; | ||||
| 					resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; | ||||
| 					if ( !( --remaining ) ) { | ||||
| 						master.resolveWith( resolveContexts, resolveValues ); | ||||
| 						primary.resolveWith( resolveContexts, resolveValues ); | ||||
| 					} | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 		// Single- and empty arguments are adopted like Promise.resolve
 | ||||
| 		if ( remaining <= 1 ) { | ||||
| 			adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, | ||||
| 			adoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject, | ||||
| 				!remaining ); | ||||
| 
 | ||||
| 			// Use .then() to unwrap secondary thenables (cf. gh-3000)
 | ||||
| 			if ( master.state() === "pending" || | ||||
| 			if ( primary.state() === "pending" || | ||||
| 				isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { | ||||
| 
 | ||||
| 				return master.then(); | ||||
| 				return primary.then(); | ||||
| 			} | ||||
| 		} | ||||
| 
 | ||||
| 		// Multiple arguments are aggregated like Promise.all array elements
 | ||||
| 		while ( i-- ) { | ||||
| 			adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); | ||||
| 			adoptValue( resolveValues[ i ], updateFunc( i ), primary.reject ); | ||||
| 		} | ||||
| 
 | ||||
| 		return master.promise(); | ||||
| 		return primary.promise(); | ||||
| 	} | ||||
| } ); | ||||
| 
 | ||||
| @@ -4180,8 +4184,8 @@ var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { | ||||
| 			for ( ; i < len; i++ ) { | ||||
| 				fn( | ||||
| 					elems[ i ], key, raw ? | ||||
| 					value : | ||||
| 					value.call( elems[ i ], i, fn( elems[ i ], key ) ) | ||||
| 						value : | ||||
| 						value.call( elems[ i ], i, fn( elems[ i ], key ) ) | ||||
| 				); | ||||
| 			} | ||||
| 		} | ||||
| @@ -5089,10 +5093,7 @@ function buildFragment( elems, context, scripts, selection, ignored ) { | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| var | ||||
| 	rkeyEvent = /^key/, | ||||
| 	rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, | ||||
| 	rtypenamespace = /^([^.]*)(?:\.(.+)|)/; | ||||
| var rtypenamespace = /^([^.]*)(?:\.(.+)|)/; | ||||
| 
 | ||||
| function returnTrue() { | ||||
| 	return true; | ||||
| @@ -5387,8 +5388,8 @@ jQuery.event = { | ||||
| 			event = jQuery.event.fix( nativeEvent ), | ||||
| 
 | ||||
| 			handlers = ( | ||||
| 					dataPriv.get( this, "events" ) || Object.create( null ) | ||||
| 				)[ event.type ] || [], | ||||
| 				dataPriv.get( this, "events" ) || Object.create( null ) | ||||
| 			)[ event.type ] || [], | ||||
| 			special = jQuery.event.special[ event.type ] || {}; | ||||
| 
 | ||||
| 		// Use the fix-ed jQuery.Event rather than the (read-only) native event
 | ||||
| @@ -5512,12 +5513,12 @@ jQuery.event = { | ||||
| 			get: isFunction( hook ) ? | ||||
| 				function() { | ||||
| 					if ( this.originalEvent ) { | ||||
| 							return hook( this.originalEvent ); | ||||
| 						return hook( this.originalEvent ); | ||||
| 					} | ||||
| 				} : | ||||
| 				function() { | ||||
| 					if ( this.originalEvent ) { | ||||
| 							return this.originalEvent[ name ]; | ||||
| 						return this.originalEvent[ name ]; | ||||
| 					} | ||||
| 				}, | ||||
| 
 | ||||
| @@ -5656,7 +5657,13 @@ function leverageNative( el, type, expectSync ) { | ||||
| 						// Cancel the outer synthetic event
 | ||||
| 						event.stopImmediatePropagation(); | ||||
| 						event.preventDefault(); | ||||
| 						return result.value; | ||||
| 
 | ||||
| 						// Support: Chrome 86+
 | ||||
| 						// In Chrome, if an element having a focusout handler is blurred by
 | ||||
| 						// clicking outside of it, it invokes the handler synchronously. If
 | ||||
| 						// that handler calls `.remove()` on the element, the data is cleared,
 | ||||
| 						// leaving `result` undefined. We need to guard against this.
 | ||||
| 						return result && result.value; | ||||
| 					} | ||||
| 
 | ||||
| 				// If this is an inner synthetic event for an event with a bubbling surrogate
 | ||||
| @@ -5821,34 +5828,7 @@ jQuery.each( { | ||||
| 	targetTouches: true, | ||||
| 	toElement: true, | ||||
| 	touches: true, | ||||
| 
 | ||||
| 	which: function( event ) { | ||||
| 		var button = event.button; | ||||
| 
 | ||||
| 		// Add which for key events
 | ||||
| 		if ( event.which == null && rkeyEvent.test( event.type ) ) { | ||||
| 			return event.charCode != null ? event.charCode : event.keyCode; | ||||
| 		} | ||||
| 
 | ||||
| 		// Add which for click: 1 === left; 2 === middle; 3 === right
 | ||||
| 		if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { | ||||
| 			if ( button & 1 ) { | ||||
| 				return 1; | ||||
| 			} | ||||
| 
 | ||||
| 			if ( button & 2 ) { | ||||
| 				return 3; | ||||
| 			} | ||||
| 
 | ||||
| 			if ( button & 4 ) { | ||||
| 				return 2; | ||||
| 			} | ||||
| 
 | ||||
| 			return 0; | ||||
| 		} | ||||
| 
 | ||||
| 		return event.which; | ||||
| 	} | ||||
| 	which: true | ||||
| }, jQuery.event.addProp ); | ||||
| 
 | ||||
| jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { | ||||
| @@ -5874,6 +5854,12 @@ jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateTyp | ||||
| 			return true; | ||||
| 		}, | ||||
| 
 | ||||
| 		// Suppress native focus or blur as it's already being fired
 | ||||
| 		// in leverageNative.
 | ||||
| 		_default: function() { | ||||
| 			return true; | ||||
| 		}, | ||||
| 
 | ||||
| 		delegateType: delegateType | ||||
| 	}; | ||||
| } ); | ||||
| @@ -6541,6 +6527,10 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); | ||||
| 		// set in CSS while `offset*` properties report correct values.
 | ||||
| 		// Behavior in IE 9 is more subtle than in newer versions & it passes
 | ||||
| 		// some versions of this test; make sure not to make it pass there!
 | ||||
| 		//
 | ||||
| 		// Support: Firefox 70+
 | ||||
| 		// Only Firefox includes border widths
 | ||||
| 		// in computed dimensions. (gh-4529)
 | ||||
| 		reliableTrDimensions: function() { | ||||
| 			var table, tr, trChild, trStyle; | ||||
| 			if ( reliableTrDimensionsVal == null ) { | ||||
| @@ -6548,17 +6538,32 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); | ||||
| 				tr = document.createElement( "tr" ); | ||||
| 				trChild = document.createElement( "div" ); | ||||
| 
 | ||||
| 				table.style.cssText = "position:absolute;left:-11111px"; | ||||
| 				table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate"; | ||||
| 				tr.style.cssText = "border:1px solid"; | ||||
| 
 | ||||
| 				// Support: Chrome 86+
 | ||||
| 				// Height set through cssText does not get applied.
 | ||||
| 				// Computed height then comes back as 0.
 | ||||
| 				tr.style.height = "1px"; | ||||
| 				trChild.style.height = "9px"; | ||||
| 
 | ||||
| 				// Support: Android 8 Chrome 86+
 | ||||
| 				// In our bodyBackground.html iframe,
 | ||||
| 				// display for all div elements is set to "inline",
 | ||||
| 				// which causes a problem only in Android 8 Chrome 86.
 | ||||
| 				// Ensuring the div is display: block
 | ||||
| 				// gets around this issue.
 | ||||
| 				trChild.style.display = "block"; | ||||
| 
 | ||||
| 				documentElement | ||||
| 					.appendChild( table ) | ||||
| 					.appendChild( tr ) | ||||
| 					.appendChild( trChild ); | ||||
| 
 | ||||
| 				trStyle = window.getComputedStyle( tr ); | ||||
| 				reliableTrDimensionsVal = parseInt( trStyle.height ) > 3; | ||||
| 				reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) + | ||||
| 					parseInt( trStyle.borderTopWidth, 10 ) + | ||||
| 					parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight; | ||||
| 
 | ||||
| 				documentElement.removeChild( table ); | ||||
| 			} | ||||
| @@ -7022,10 +7027,10 @@ jQuery.each( [ "height", "width" ], function( _i, dimension ) { | ||||
| 					// Running getBoundingClientRect on a disconnected node
 | ||||
| 					// in IE throws an error.
 | ||||
| 					( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? | ||||
| 						swap( elem, cssShow, function() { | ||||
| 							return getWidthOrHeight( elem, dimension, extra ); | ||||
| 						} ) : | ||||
| 						getWidthOrHeight( elem, dimension, extra ); | ||||
| 					swap( elem, cssShow, function() { | ||||
| 						return getWidthOrHeight( elem, dimension, extra ); | ||||
| 					} ) : | ||||
| 					getWidthOrHeight( elem, dimension, extra ); | ||||
| 			} | ||||
| 		}, | ||||
| 
 | ||||
| @@ -7084,7 +7089,7 @@ jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, | ||||
| 					swap( elem, { marginLeft: 0 }, function() { | ||||
| 						return elem.getBoundingClientRect().left; | ||||
| 					} ) | ||||
| 				) + "px"; | ||||
| 			) + "px"; | ||||
| 		} | ||||
| 	} | ||||
| ); | ||||
| @@ -7608,8 +7613,8 @@ jQuery.fn.extend( { | ||||
| 				if ( this.setAttribute ) { | ||||
| 					this.setAttribute( "class", | ||||
| 						className || value === false ? | ||||
| 						"" : | ||||
| 						dataPriv.get( this, "__className__" ) || "" | ||||
| 							"" : | ||||
| 							dataPriv.get( this, "__className__" ) || "" | ||||
| 					); | ||||
| 				} | ||||
| 			} | ||||
| @@ -7624,7 +7629,7 @@ jQuery.fn.extend( { | ||||
| 		while ( ( elem = this[ i++ ] ) ) { | ||||
| 			if ( elem.nodeType === 1 && | ||||
| 				( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { | ||||
| 					return true; | ||||
| 				return true; | ||||
| 			} | ||||
| 		} | ||||
| 
 | ||||
| @@ -7914,9 +7919,7 @@ jQuery.extend( jQuery.event, { | ||||
| 				special.bindType || type; | ||||
| 
 | ||||
| 			// jQuery handler
 | ||||
| 			handle = ( | ||||
| 					dataPriv.get( cur, "events" ) || Object.create( null ) | ||||
| 				)[ event.type ] && | ||||
| 			handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] && | ||||
| 				dataPriv.get( cur, "handle" ); | ||||
| 			if ( handle ) { | ||||
| 				handle.apply( cur, data ); | ||||
| @@ -8057,7 +8060,7 @@ if ( !support.focusin ) { | ||||
| 
 | ||||
| // Cross-browser xml parsing
 | ||||
| jQuery.parseXML = function( data ) { | ||||
| 	var xml; | ||||
| 	var xml, parserErrorElem; | ||||
| 	if ( !data || typeof data !== "string" ) { | ||||
| 		return null; | ||||
| 	} | ||||
| @@ -8066,12 +8069,17 @@ jQuery.parseXML = function( data ) { | ||||
| 	// IE throws on parseFromString with invalid input.
 | ||||
| 	try { | ||||
| 		xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); | ||||
| 	} catch ( e ) { | ||||
| 		xml = undefined; | ||||
| 	} | ||||
| 	} catch ( e ) {} | ||||
| 
 | ||||
| 	if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { | ||||
| 		jQuery.error( "Invalid XML: " + data ); | ||||
| 	parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ]; | ||||
| 	if ( !xml || parserErrorElem ) { | ||||
| 		jQuery.error( "Invalid XML: " + ( | ||||
| 			parserErrorElem ? | ||||
| 				jQuery.map( parserErrorElem.childNodes, function( el ) { | ||||
| 					return el.textContent; | ||||
| 				} ).join( "\n" ) : | ||||
| 				data | ||||
| 		) ); | ||||
| 	} | ||||
| 	return xml; | ||||
| }; | ||||
| @@ -8172,16 +8180,14 @@ jQuery.fn.extend( { | ||||
| 			// Can add propHook for "elements" to filter or add form elements
 | ||||
| 			var elements = jQuery.prop( this, "elements" ); | ||||
| 			return elements ? jQuery.makeArray( elements ) : this; | ||||
| 		} ) | ||||
| 		.filter( function() { | ||||
| 		} ).filter( function() { | ||||
| 			var type = this.type; | ||||
| 
 | ||||
| 			// Use .is( ":disabled" ) so that fieldset[disabled] works
 | ||||
| 			return this.name && !jQuery( this ).is( ":disabled" ) && | ||||
| 				rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && | ||||
| 				( this.checked || !rcheckableType.test( type ) ); | ||||
| 		} ) | ||||
| 		.map( function( _i, elem ) { | ||||
| 		} ).map( function( _i, elem ) { | ||||
| 			var val = jQuery( this ).val(); | ||||
| 
 | ||||
| 			if ( val == null ) { | ||||
| @@ -8387,12 +8393,6 @@ jQuery.offset = { | ||||
| 			options.using.call( elem, props ); | ||||
| 
 | ||||
| 		} else { | ||||
| 			if ( typeof props.top === "number" ) { | ||||
| 				props.top += "px"; | ||||
| 			} | ||||
| 			if ( typeof props.left === "number" ) { | ||||
| 				props.left += "px"; | ||||
| 			} | ||||
| 			curElem.css( props ); | ||||
| 		} | ||||
| 	} | ||||
| @@ -8561,8 +8561,11 @@ jQuery.each( [ "top", "left" ], function( _i, prop ) { | ||||
| 
 | ||||
| // Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
 | ||||
| jQuery.each( { Height: "height", Width: "width" }, function( name, type ) { | ||||
| 	jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, | ||||
| 		function( defaultExtra, funcName ) { | ||||
| 	jQuery.each( { | ||||
| 		padding: "inner" + name, | ||||
| 		content: type, | ||||
| 		"": "outer" + name | ||||
| 	}, function( defaultExtra, funcName ) { | ||||
| 
 | ||||
| 		// Margin is only for outerHeight, outerWidth
 | ||||
| 		jQuery.fn[ funcName ] = function( margin, value ) { | ||||
| @@ -8631,7 +8634,8 @@ jQuery.fn.extend( { | ||||
| 	} | ||||
| } ); | ||||
| 
 | ||||
| jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " + | ||||
| 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 ) { | ||||
| @@ -8642,7 +8646,8 @@ jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " + | ||||
| 				this.on( name, null, data, fn ) : | ||||
| 				this.trigger( name ); | ||||
| 		}; | ||||
| 	} ); | ||||
| 	} | ||||
| ); | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
		Reference in New Issue
	
	Block a user