wp/wp-includes/js/jquery/ui/core.js
changeset 19 3d72ae0968f4
parent 18 be944660c56a
child 21 48c4eec2b7e6
equal deleted inserted replaced
18:be944660c56a 19:3d72ae0968f4
     1 /*! jQuery UI - v1.12.1 - 2020-09-25
     1 /*! jQuery UI - v1.13.1 - 2022-01-20
     2 * http://jqueryui.com
     2 * http://jqueryui.com
     3 * Includes: data.js, disable-selection.js, escape-selector.js, focusable.js, form-reset-mixin.js, form.js, ie.js, jquery-1-7.js, keycode.js, labels.js, plugin.js, position.js, safe-active-element.js, safe-blur.js, scroll-parent.js, tabbable.js, unique-id.js, version.js, widget.js
     3 * Includes: data.js, disable-selection.js, escape-selector.js, focusable.js, form-reset-mixin.js, form.js, ie.js, jquery-1-7.js, keycode.js, labels.js, plugin.js, position.js, safe-active-element.js, safe-blur.js, scroll-parent.js, tabbable.js, unique-id.js, version.js, widget.js
     4 * Copyright jQuery Foundation and other contributors; Licensed  */
     4 * Copyright jQuery Foundation and other contributors; Licensed  */
     5 ( function( factory ) {
     5 ( function( factory ) {
       
     6 	"use strict";
       
     7 
     6 	if ( typeof define === "function" && define.amd ) {
     8 	if ( typeof define === "function" && define.amd ) {
     7 
     9 
     8 		// AMD. Register as an anonymous module.
    10 		// AMD. Register as an anonymous module.
     9 		define( [ "jquery" ], factory );
    11 		define( [ "jquery" ], factory );
    10 	} else {
    12 	} else {
    11 
    13 
    12 		// Browser globals
    14 		// Browser globals
    13 		factory( jQuery );
    15 		factory( jQuery );
    14 	}
    16 	}
    15 } ( function( $ ) {
    17 } ( function( $ ) {
       
    18 "use strict";
    16 
    19 
    17 // Source: version.js
    20 // Source: version.js
    18 $.ui = $.ui || {};
    21 $.ui = $.ui || {};
    19 
    22 
    20 $.ui.version = "1.12.1";
    23 $.ui.version = "1.13.1";
    21 
    24 
    22 // Source: data.js
    25 // Source: data.js
    23 /*!
    26 /*!
    24  * jQuery UI :data 1.12.1
    27  * jQuery UI :data 1.13.1
    25  * http://jqueryui.com
    28  * http://jqueryui.com
    26  *
    29  *
    27  * Copyright jQuery Foundation and other contributors
    30  * Copyright jQuery Foundation and other contributors
    28  * Released under the MIT license.
    31  * Released under the MIT license.
    29  * http://jquery.org/license
    32  * http://jquery.org/license
    32 //>>label: :data Selector
    35 //>>label: :data Selector
    33 //>>group: Core
    36 //>>group: Core
    34 //>>description: Selects elements which have data stored under the specified key.
    37 //>>description: Selects elements which have data stored under the specified key.
    35 //>>docs: http://api.jqueryui.com/data-selector/
    38 //>>docs: http://api.jqueryui.com/data-selector/
    36 
    39 
    37 $.extend( $.expr[ ":" ], {
    40 $.extend( $.expr.pseudos, {
    38 	data: $.expr.createPseudo ?
    41 	data: $.expr.createPseudo ?
    39 		$.expr.createPseudo( function( dataName ) {
    42 		$.expr.createPseudo( function( dataName ) {
    40 			return function( elem ) {
    43 			return function( elem ) {
    41 				return !!$.data( elem, dataName );
    44 				return !!$.data( elem, dataName );
    42 			};
    45 			};
    46 		function( elem, i, match ) {
    49 		function( elem, i, match ) {
    47 			return !!$.data( elem, match[ 3 ] );
    50 			return !!$.data( elem, match[ 3 ] );
    48 		}
    51 		}
    49 } );
    52 } );
    50 
    53 
    51 
       
    52 // Source: disable-selection.js
    54 // Source: disable-selection.js
    53 /*!
    55 /*!
    54  * jQuery UI Disable Selection 1.12.1
    56  * jQuery UI Disable Selection 1.13.1
    55  * http://jqueryui.com
    57  * http://jqueryui.com
    56  *
    58  *
    57  * Copyright jQuery Foundation and other contributors
    59  * Copyright jQuery Foundation and other contributors
    58  * Released under the MIT license.
    60  * Released under the MIT license.
    59  * http://jquery.org/license
    61  * http://jquery.org/license
    81 	enableSelection: function() {
    83 	enableSelection: function() {
    82 		return this.off( ".ui-disableSelection" );
    84 		return this.off( ".ui-disableSelection" );
    83 	}
    85 	}
    84 } );
    86 } );
    85 
    87 
    86 // Source: escape-selector.js
       
    87 // Internal use only
       
    88 $.ui.escapeSelector = ( function() {
       
    89 	var selectorEscape = /([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;
       
    90 	return function( selector ) {
       
    91 		return selector.replace( selectorEscape, "\\$1" );
       
    92 	};
       
    93 } )();
       
    94 
       
    95 // Source: focusable.js
    88 // Source: focusable.js
    96 /*!
    89 /*!
    97  * jQuery UI Focusable 1.12.1
    90  * jQuery UI Focusable 1.13.1
    98  * http://jqueryui.com
    91  * http://jqueryui.com
    99  *
    92  *
   100  * Copyright jQuery Foundation and other contributors
    93  * Copyright jQuery Foundation and other contributors
   101  * Released under the MIT license.
    94  * Released under the MIT license.
   102  * http://jquery.org/license
    95  * http://jquery.org/license
   151 	var visibility = element.css( "visibility" );
   144 	var visibility = element.css( "visibility" );
   152 	while ( visibility === "inherit" ) {
   145 	while ( visibility === "inherit" ) {
   153 		element = element.parent();
   146 		element = element.parent();
   154 		visibility = element.css( "visibility" );
   147 		visibility = element.css( "visibility" );
   155 	}
   148 	}
   156 	return visibility !== "hidden";
   149 	return visibility === "visible";
   157 }
   150 }
   158 
   151 
   159 $.extend( $.expr[ ":" ], {
   152 $.extend( $.expr.pseudos, {
   160 	focusable: function( element ) {
   153 	focusable: function( element ) {
   161 		return $.ui.focusable( element, $.attr( element, "tabindex" ) != null );
   154 		return $.ui.focusable( element, $.attr( element, "tabindex" ) != null );
   162 	}
   155 	}
   163 } );
   156 } );
   164 
   157 
   165 // Source: form.js
       
   166 // Support: IE8 Only
   158 // Support: IE8 Only
   167 // IE8 does not support the form attribute and when it is supplied. It overwrites the form prop
   159 // IE8 does not support the form attribute and when it is supplied. It overwrites the form prop
   168 // with a string, so we need to find the proper form.
   160 // with a string, so we need to find the proper form.
   169 $.fn.form = function() {
   161 $.fn._form = function() {
   170 	return typeof this[ 0 ].form === "string" ? this.closest( "form" ) : $( this[ 0 ].form );
   162 	return typeof this[ 0 ].form === "string" ? this.closest( "form" ) : $( this[ 0 ].form );
   171 };
   163 };
   172 
   164 
   173 // Source: form-reset-mixin.js
   165 // Source: form-reset-mixin.js
   174 /*!
   166 /*!
   175  * jQuery UI Form Reset Mixin 1.12.1
   167  * jQuery UI Form Reset Mixin 1.13.1
   176  * http://jqueryui.com
   168  * http://jqueryui.com
   177  *
   169  *
   178  * Copyright jQuery Foundation and other contributors
   170  * Copyright jQuery Foundation and other contributors
   179  * Released under the MIT license.
   171  * Released under the MIT license.
   180  * http://jquery.org/license
   172  * http://jquery.org/license
   197 			} );
   189 			} );
   198 		} );
   190 		} );
   199 	},
   191 	},
   200 
   192 
   201 	_bindFormResetHandler: function() {
   193 	_bindFormResetHandler: function() {
   202 		this.form = this.element.form();
   194 		this.form = this.element._form();
   203 		if ( !this.form.length ) {
   195 		if ( !this.form.length ) {
   204 			return;
   196 			return;
   205 		}
   197 		}
   206 
   198 
   207 		var instances = this.form.data( "ui-form-reset-instances" ) || [];
   199 		var instances = this.form.data( "ui-form-reset-instances" ) || [];
   233 
   225 
   234 // Source: ie.js
   226 // Source: ie.js
   235 // This file is deprecated
   227 // This file is deprecated
   236 $.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() );
   228 $.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() );
   237 
   229 
   238 // Source: jquery-1-7.js
   230 // Source: jquery-patch.js
   239 /*!
   231 /*!
   240  * jQuery UI Support for jQuery core 1.7.x 1.12.1
   232  * jQuery UI Support for jQuery core 1.8.x and newer 1.13.0
   241  * http://jqueryui.com
   233  * http://jqueryui.com
   242  *
   234  *
   243  * Copyright jQuery Foundation and other contributors
   235  * Copyright jQuery Foundation and other contributors
   244  * Released under the MIT license.
   236  * Released under the MIT license.
   245  * http://jquery.org/license
   237  * http://jquery.org/license
   246  *
   238  *
   247  */
   239  */
   248 
   240 
   249 //>>label: jQuery 1.7 Support
   241 //>>label: jQuery 1.8+ Support
   250 //>>group: Core
   242 //>>group: Core
   251 //>>description: Support version 1.7.x of jQuery core
   243 //>>description: Support version 1.8.x and newer of jQuery core
   252 
   244 
   253 // Support: jQuery 1.7 only
   245 // Support: jQuery 1.9.x or older
   254 // Not a great way to check versions, but since we only support 1.7+ and only
   246 // $.expr[ ":" ] is deprecated.
   255 // need to detect <1.8, this is a simple check that should suffice. Checking
   247 if ( !$.expr.pseudos ) {
   256 // for "1.7." would be a bit safer, but the version string is 1.7, not 1.7.0
   248 	$.expr.pseudos = $.expr[ ":" ];
   257 // and we'll never reach 1.70.0 (if we do, we certainly won't be supporting
   249 }
   258 // 1.7 anymore). See #11197 for why we're not using feature detection.
   250 
   259 if ( $.fn.jquery.substring( 0, 3 ) === "1.7" ) {
   251 // Support: jQuery 1.11.x or older
   260 
   252 // $.unique has been renamed to $.uniqueSort
   261 	// Setters for .innerWidth(), .innerHeight(), .outerWidth(), .outerHeight()
   253 if ( !$.uniqueSort ) {
   262 	// Unlike jQuery Core 1.8+, these only support numeric values to set the
   254 	$.uniqueSort = $.unique;
   263 	// dimensions in pixels
   255 }
   264 	$.each( [ "Width", "Height" ], function( i, name ) {
   256 
   265 		var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ],
   257 // Support: jQuery 2.2.x or older.
   266 			type = name.toLowerCase(),
   258 // This method has been defined in jQuery 3.0.0.
   267 			orig = {
   259 // Code from https://github.com/jquery/jquery/blob/e539bac79e666bba95bba86d690b4e609dca2286/src/selector/escapeSelector.js
   268 				innerWidth: $.fn.innerWidth,
   260 if ( !$.escapeSelector ) {
   269 				innerHeight: $.fn.innerHeight,
   261 
   270 				outerWidth: $.fn.outerWidth,
   262 	// CSS string/identifier serialization
   271 				outerHeight: $.fn.outerHeight
   263 	// https://drafts.csswg.org/cssom/#common-serializing-idioms
   272 			};
   264 	var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;
   273 
   265 
   274 		function reduce( elem, size, border, margin ) {
   266 	var fcssescape = function( ch, asCodePoint ) {
   275 			$.each( side, function() {
   267 		if ( asCodePoint ) {
   276 				size -= parseFloat( $.css( elem, "padding" + this ) ) || 0;
   268 
   277 				if ( border ) {
   269 			// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
   278 					size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0;
   270 			if ( ch === "\0" ) {
   279 				}
   271 				return "\uFFFD";
   280 				if ( margin ) {
   272 			}
   281 					size -= parseFloat( $.css( elem, "margin" + this ) ) || 0;
   273 
   282 				}
   274 			// Control characters and (dependent upon position) numbers get escaped as code points
   283 			} );
   275 			return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
   284 			return size;
   276 		}
   285 		}
   277 
   286 
   278 		// Other potentially-special ASCII characters get backslash-escaped
   287 		$.fn[ "inner" + name ] = function( size ) {
   279 		return "\\" + ch;
   288 			if ( size === undefined ) {
   280 	};
   289 				return orig[ "inner" + name ].call( this );
   281 
   290 			}
   282 	$.escapeSelector = function( sel ) {
   291 
   283 		return ( sel + "" ).replace( rcssescape, fcssescape );
   292 			return this.each( function() {
       
   293 				$( this ).css( type, reduce( this, size ) + "px" );
       
   294 			} );
       
   295 		};
       
   296 
       
   297 		$.fn[ "outer" + name ] = function( size, margin ) {
       
   298 			if ( typeof size !== "number" ) {
       
   299 				return orig[ "outer" + name ].call( this, size );
       
   300 			}
       
   301 
       
   302 			return this.each( function() {
       
   303 				$( this ).css( type, reduce( this, size, true, margin ) + "px" );
       
   304 			} );
       
   305 		};
       
   306 	} );
       
   307 
       
   308 	$.fn.addBack = function( selector ) {
       
   309 		return this.add( selector == null ?
       
   310 			this.prevObject : this.prevObject.filter( selector )
       
   311 		);
       
   312 	};
   284 	};
   313 }
   285 }
   314 
   286 
       
   287 // Support: jQuery 3.4.x or older
       
   288 // These methods have been defined in jQuery 3.5.0.
       
   289 if ( !$.fn.even || !$.fn.odd ) {
       
   290 	$.fn.extend( {
       
   291 		even: function() {
       
   292 			return this.filter( function( i ) {
       
   293 				return i % 2 === 0;
       
   294 			} );
       
   295 		},
       
   296 		odd: function() {
       
   297 			return this.filter( function( i ) {
       
   298 				return i % 2 === 1;
       
   299 			} );
       
   300 		}
       
   301 	} );
       
   302 }
       
   303 
   315 // Source: keycode.js
   304 // Source: keycode.js
   316 /*!
   305 /*!
   317  * jQuery UI Keycode 1.12.1
   306  * jQuery UI Keycode 1.13.1
   318  * http://jqueryui.com
   307  * http://jqueryui.com
   319  *
   308  *
   320  * Copyright jQuery Foundation and other contributors
   309  * Copyright jQuery Foundation and other contributors
   321  * Released under the MIT license.
   310  * Released under the MIT license.
   322  * http://jquery.org/license
   311  * http://jquery.org/license
   346 	UP: 38
   335 	UP: 38
   347 };
   336 };
   348 
   337 
   349 // Source: labels.js
   338 // Source: labels.js
   350 /*!
   339 /*!
   351  * jQuery UI Labels 1.12.1
   340  * jQuery UI Labels 1.13.1
   352  * http://jqueryui.com
   341  * http://jqueryui.com
   353  *
   342  *
   354  * Copyright jQuery Foundation and other contributors
   343  * Copyright jQuery Foundation and other contributors
   355  * Released under the MIT license.
   344  * Released under the MIT license.
   356  * http://jquery.org/license
   345  * http://jquery.org/license
   362 //>>docs: http://api.jqueryui.com/labels/
   351 //>>docs: http://api.jqueryui.com/labels/
   363 
   352 
   364 $.fn.labels = function() {
   353 $.fn.labels = function() {
   365 	var ancestor, selector, id, labels, ancestors;
   354 	var ancestor, selector, id, labels, ancestors;
   366 
   355 
       
   356 	if ( !this.length ) {
       
   357 		return this.pushStack( [] );
       
   358 	}
       
   359 
   367 	// Check control.labels first
   360 	// Check control.labels first
   368 	if ( this[ 0 ].labels && this[ 0 ].labels.length ) {
   361 	if ( this[ 0 ].labels && this[ 0 ].labels.length ) {
   369 		return this.pushStack( this[ 0 ].labels );
   362 		return this.pushStack( this[ 0 ].labels );
   370 	}
   363 	}
   371 
   364 
   384 
   377 
   385 		// Get a full set of top level ancestors
   378 		// Get a full set of top level ancestors
   386 		ancestors = ancestor.add( ancestor.length ? ancestor.siblings() : this.siblings() );
   379 		ancestors = ancestor.add( ancestor.length ? ancestor.siblings() : this.siblings() );
   387 
   380 
   388 		// Create a selector for the label based on the id
   381 		// Create a selector for the label based on the id
   389 		selector = "label[for='" + $.ui.escapeSelector( id ) + "']";
   382 		selector = "label[for='" + $.escapeSelector( id ) + "']";
   390 
   383 
   391 		labels = labels.add( ancestors.find( selector ).addBack( selector ) );
   384 		labels = labels.add( ancestors.find( selector ).addBack( selector ) );
   392 
   385 
   393 	}
   386 	}
   394 
   387 
   414 		if ( !set ) {
   407 		if ( !set ) {
   415 			return;
   408 			return;
   416 		}
   409 		}
   417 
   410 
   418 		if ( !allowDisconnected && ( !instance.element[ 0 ].parentNode ||
   411 		if ( !allowDisconnected && ( !instance.element[ 0 ].parentNode ||
   419 				instance.element[ 0 ].parentNode.nodeType === 11 ) ) {
   412 			instance.element[ 0 ].parentNode.nodeType === 11 ) ) {
   420 			return;
   413 			return;
   421 		}
   414 		}
   422 
   415 
   423 		for ( i = 0; i < set.length; i++ ) {
   416 		for ( i = 0; i < set.length; i++ ) {
   424 			if ( instance.options[ set[ i ][ 0 ] ] ) {
   417 			if ( instance.options[ set[ i ][ 0 ] ] ) {
   428 	}
   421 	}
   429 };
   422 };
   430 
   423 
   431 // Source: position.js
   424 // Source: position.js
   432 /*!
   425 /*!
   433  * jQuery UI Position 1.12.1
   426  * jQuery UI Position 1.13.1
   434  * http://jqueryui.com
   427  * http://jqueryui.com
   435  *
   428  *
   436  * Copyright jQuery Foundation and other contributors
   429  * Copyright jQuery Foundation and other contributors
   437  * Released under the MIT license.
   430  * Released under the MIT license.
   438  * http://jquery.org/license
   431  * http://jquery.org/license
   466 
   459 
   467 function parseCss( element, property ) {
   460 function parseCss( element, property ) {
   468 	return parseInt( $.css( element, property ), 10 ) || 0;
   461 	return parseInt( $.css( element, property ), 10 ) || 0;
   469 }
   462 }
   470 
   463 
       
   464 function isWindow( obj ) {
       
   465 	return obj != null && obj === obj.window;
       
   466 }
       
   467 
   471 function getDimensions( elem ) {
   468 function getDimensions( elem ) {
   472 	var raw = elem[ 0 ];
   469 	var raw = elem[ 0 ];
   473 	if ( raw.nodeType === 9 ) {
   470 	if ( raw.nodeType === 9 ) {
   474 		return {
   471 		return {
   475 			width: elem.width(),
   472 			width: elem.width(),
   476 			height: elem.height(),
   473 			height: elem.height(),
   477 			offset: { top: 0, left: 0 }
   474 			offset: { top: 0, left: 0 }
   478 		};
   475 		};
   479 	}
   476 	}
   480 	if ( $.isWindow( raw ) ) {
   477 	if ( isWindow( raw ) ) {
   481 		return {
   478 		return {
   482 			width: elem.width(),
   479 			width: elem.width(),
   483 			height: elem.height(),
   480 			height: elem.height(),
   484 			offset: { top: elem.scrollTop(), left: elem.scrollLeft() }
   481 			offset: { top: elem.scrollTop(), left: elem.scrollLeft() }
   485 		};
   482 		};
   502 	scrollbarWidth: function() {
   499 	scrollbarWidth: function() {
   503 		if ( cachedScrollbarWidth !== undefined ) {
   500 		if ( cachedScrollbarWidth !== undefined ) {
   504 			return cachedScrollbarWidth;
   501 			return cachedScrollbarWidth;
   505 		}
   502 		}
   506 		var w1, w2,
   503 		var w1, w2,
   507 			div = $( "<div " +
   504 			div = $( "<div style=" +
   508 				"style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'>" +
   505 				"'display:block;position:absolute;width:200px;height:200px;overflow:hidden;'>" +
   509 				"<div style='height:100px;width:auto;'></div></div>" ),
   506 				"<div style='height:300px;width:auto;'></div></div>" ),
   510 			innerDiv = div.children()[ 0 ];
   507 			innerDiv = div.children()[ 0 ];
   511 
   508 
   512 		$( "body" ).append( div );
   509 		$( "body" ).append( div );
   513 		w1 = innerDiv.offsetWidth;
   510 		w1 = innerDiv.offsetWidth;
   514 		div.css( "overflow", "scroll" );
   511 		div.css( "overflow", "scroll" );
   537 			height: hasOverflowX ? $.position.scrollbarWidth() : 0
   534 			height: hasOverflowX ? $.position.scrollbarWidth() : 0
   538 		};
   535 		};
   539 	},
   536 	},
   540 	getWithinInfo: function( element ) {
   537 	getWithinInfo: function( element ) {
   541 		var withinElement = $( element || window ),
   538 		var withinElement = $( element || window ),
   542 			isWindow = $.isWindow( withinElement[ 0 ] ),
   539 			isElemWindow = isWindow( withinElement[ 0 ] ),
   543 			isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9,
   540 			isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9,
   544 			hasOffset = !isWindow && !isDocument;
   541 			hasOffset = !isElemWindow && !isDocument;
   545 		return {
   542 		return {
   546 			element: withinElement,
   543 			element: withinElement,
   547 			isWindow: isWindow,
   544 			isWindow: isElemWindow,
   548 			isDocument: isDocument,
   545 			isDocument: isDocument,
   549 			offset: hasOffset ? $( element ).offset() : { left: 0, top: 0 },
   546 			offset: hasOffset ? $( element ).offset() : { left: 0, top: 0 },
   550 			scrollLeft: withinElement.scrollLeft(),
   547 			scrollLeft: withinElement.scrollLeft(),
   551 			scrollTop: withinElement.scrollTop(),
   548 			scrollTop: withinElement.scrollTop(),
   552 			width: withinElement.outerWidth(),
   549 			width: withinElement.outerWidth(),
   562 
   559 
   563 	// Make a copy, we don't want to modify arguments
   560 	// Make a copy, we don't want to modify arguments
   564 	options = $.extend( {}, options );
   561 	options = $.extend( {}, options );
   565 
   562 
   566 	var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,
   563 	var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,
   567 		target = $( options.of ),
   564 
       
   565 		// Make sure string options are treated as CSS selectors
       
   566 		target = typeof options.of === "string" ?
       
   567 			$( document ).find( options.of ) :
       
   568 			$( options.of ),
       
   569 
   568 		within = $.position.getWithinInfo( options.within ),
   570 		within = $.position.getWithinInfo( options.within ),
   569 		scrollInfo = $.position.getScrollInfo( within ),
   571 		scrollInfo = $.position.getScrollInfo( within ),
   570 		collision = ( options.collision || "flip" ).split( " " ),
   572 		collision = ( options.collision || "flip" ).split( " " ),
   571 		offsets = {};
   573 		offsets = {};
   572 
   574 
   952 	}
   954 	}
   953 };
   955 };
   954 
   956 
   955 // Source: scroll-parent.js
   957 // Source: scroll-parent.js
   956 /*!
   958 /*!
   957  * jQuery UI Scroll Parent 1.12.1
   959  * jQuery UI Scroll Parent 1.13.1
   958  * http://jqueryui.com
   960  * http://jqueryui.com
   959  *
   961  *
   960  * Copyright jQuery Foundation and other contributors
   962  * Copyright jQuery Foundation and other contributors
   961  * Released under the MIT license.
   963  * Released under the MIT license.
   962  * http://jquery.org/license
   964  * http://jquery.org/license
   985 		scrollParent;
   987 		scrollParent;
   986 };
   988 };
   987 
   989 
   988 // Source: tabbable.js
   990 // Source: tabbable.js
   989 /*!
   991 /*!
   990  * jQuery UI Tabbable 1.12.1
   992  * jQuery UI Tabbable 1.13.1
   991  * http://jqueryui.com
   993  * http://jqueryui.com
   992  *
   994  *
   993  * Copyright jQuery Foundation and other contributors
   995  * Copyright jQuery Foundation and other contributors
   994  * Released under the MIT license.
   996  * Released under the MIT license.
   995  * http://jquery.org/license
   997  * http://jquery.org/license
   998 //>>label: :tabbable Selector
  1000 //>>label: :tabbable Selector
   999 //>>group: Core
  1001 //>>group: Core
  1000 //>>description: Selects elements which can be tabbed to.
  1002 //>>description: Selects elements which can be tabbed to.
  1001 //>>docs: http://api.jqueryui.com/tabbable-selector/
  1003 //>>docs: http://api.jqueryui.com/tabbable-selector/
  1002 
  1004 
  1003 $.extend( $.expr[ ":" ], {
  1005 $.extend( $.expr.pseudos, {
  1004 	tabbable: function( element ) {
  1006 	tabbable: function( element ) {
  1005 		var tabIndex = $.attr( element, "tabindex" ),
  1007 		var tabIndex = $.attr( element, "tabindex" ),
  1006 			hasTabindex = tabIndex != null;
  1008 			hasTabindex = tabIndex != null;
  1007 		return ( !hasTabindex || tabIndex >= 0 ) && $.ui.focusable( element, hasTabindex );
  1009 		return ( !hasTabindex || tabIndex >= 0 ) && $.ui.focusable( element, hasTabindex );
  1008 	}
  1010 	}
  1009 } );
  1011 } );
  1010 
  1012 
  1011 // Source: unique-id.js
  1013 // Source: unique-id.js
  1012 /*!
  1014 /*!
  1013  * jQuery UI Unique ID 1.12.1
  1015  * jQuery UI Unique ID 1.13.1
  1014  * http://jqueryui.com
  1016  * http://jqueryui.com
  1015  *
  1017  *
  1016  * Copyright jQuery Foundation and other contributors
  1018  * Copyright jQuery Foundation and other contributors
  1017  * Released under the MIT license.
  1019  * Released under the MIT license.
  1018  * http://jquery.org/license
  1020  * http://jquery.org/license
  1045 	}
  1047 	}
  1046 } );
  1048 } );
  1047 
  1049 
  1048 // Source: widget.js
  1050 // Source: widget.js
  1049 /*!
  1051 /*!
  1050  * jQuery UI Widget 1.12.1
  1052  * jQuery UI Widget 1.13.1
  1051  * http://jqueryui.com
  1053  * http://jqueryui.com
  1052  *
  1054  *
  1053  * Copyright jQuery Foundation and other contributors
  1055  * Copyright jQuery Foundation and other contributors
  1054  * Released under the MIT license.
  1056  * Released under the MIT license.
  1055  * http://jquery.org/license
  1057  * http://jquery.org/license
  1060 //>>description: Provides a factory for creating stateful widgets with a common API.
  1062 //>>description: Provides a factory for creating stateful widgets with a common API.
  1061 //>>docs: http://api.jqueryui.com/jQuery.widget/
  1063 //>>docs: http://api.jqueryui.com/jQuery.widget/
  1062 //>>demos: http://jqueryui.com/widget/
  1064 //>>demos: http://jqueryui.com/widget/
  1063 
  1065 
  1064 var widgetUuid = 0;
  1066 var widgetUuid = 0;
       
  1067 var widgetHasOwnProperty = Array.prototype.hasOwnProperty;
  1065 var widgetSlice = Array.prototype.slice;
  1068 var widgetSlice = Array.prototype.slice;
  1066 
  1069 
  1067 $.cleanData = ( function( orig ) {
  1070 $.cleanData = ( function( orig ) {
  1068 	return function( elems ) {
  1071 	return function( elems ) {
  1069 		var events, elem, i;
  1072 		var events, elem, i;
  1070 		for ( i = 0; ( elem = elems[ i ] ) != null; i++ ) {
  1073 		for ( i = 0; ( elem = elems[ i ] ) != null; i++ ) {
  1071 			try {
  1074 
  1072 
  1075 			// Only trigger remove when necessary to save time
  1073 				// Only trigger remove when necessary to save time
  1076 			events = $._data( elem, "events" );
  1074 				events = $._data( elem, "events" );
  1077 			if ( events && events.remove ) {
  1075 				if ( events && events.remove ) {
  1078 				$( elem ).triggerHandler( "remove" );
  1076 					$( elem ).triggerHandler( "remove" );
  1079 			}
  1077 				}
       
  1078 
       
  1079 			// Http://bugs.jquery.com/ticket/8235
       
  1080 			} catch ( e ) {}
       
  1081 		}
  1080 		}
  1082 		orig( elems );
  1081 		orig( elems );
  1083 	};
  1082 	};
  1084 } )( $.cleanData );
  1083 } )( $.cleanData );
  1085 
  1084 
  1097 	if ( !prototype ) {
  1096 	if ( !prototype ) {
  1098 		prototype = base;
  1097 		prototype = base;
  1099 		base = $.Widget;
  1098 		base = $.Widget;
  1100 	}
  1099 	}
  1101 
  1100 
  1102 	if ( $.isArray( prototype ) ) {
  1101 	if ( Array.isArray( prototype ) ) {
  1103 		prototype = $.extend.apply( null, [ {} ].concat( prototype ) );
  1102 		prototype = $.extend.apply( null, [ {} ].concat( prototype ) );
  1104 	}
  1103 	}
  1105 
  1104 
  1106 	// Create selector for plugin
  1105 	// Create selector for plugin
  1107 	$.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) {
  1106 	$.expr.pseudos[ fullName.toLowerCase() ] = function( elem ) {
  1108 		return !!$.data( elem, fullName );
  1107 		return !!$.data( elem, fullName );
  1109 	};
  1108 	};
  1110 
  1109 
  1111 	$[ namespace ] = $[ namespace ] || {};
  1110 	$[ namespace ] = $[ namespace ] || {};
  1112 	existingConstructor = $[ namespace ][ name ];
  1111 	existingConstructor = $[ namespace ][ name ];
  1113 	constructor = $[ namespace ][ name ] = function( options, element ) {
  1112 	constructor = $[ namespace ][ name ] = function( options, element ) {
  1114 
  1113 
  1115 		// Allow instantiation without "new" keyword
  1114 		// Allow instantiation without "new" keyword
  1116 		if ( !this._createWidget ) {
  1115 		if ( !this || !this._createWidget ) {
  1117 			return new constructor( options, element );
  1116 			return new constructor( options, element );
  1118 		}
  1117 		}
  1119 
  1118 
  1120 		// Allow instantiation without initializing for simple inheritance
  1119 		// Allow instantiation without initializing for simple inheritance
  1121 		// must use "new" keyword (the code above always passes args)
  1120 		// must use "new" keyword (the code above always passes args)
  1142 	// We need to make the options hash a property directly on the new instance
  1141 	// We need to make the options hash a property directly on the new instance
  1143 	// otherwise we'll modify the options hash on the prototype that we're
  1142 	// otherwise we'll modify the options hash on the prototype that we're
  1144 	// inheriting from
  1143 	// inheriting from
  1145 	basePrototype.options = $.widget.extend( {}, basePrototype.options );
  1144 	basePrototype.options = $.widget.extend( {}, basePrototype.options );
  1146 	$.each( prototype, function( prop, value ) {
  1145 	$.each( prototype, function( prop, value ) {
  1147 		if ( !$.isFunction( value ) ) {
  1146 		if ( typeof value !== "function" ) {
  1148 			proxiedPrototype[ prop ] = value;
  1147 			proxiedPrototype[ prop ] = value;
  1149 			return;
  1148 			return;
  1150 		}
  1149 		}
  1151 		proxiedPrototype[ prop ] = ( function() {
  1150 		proxiedPrototype[ prop ] = ( function() {
  1152 			function _super() {
  1151 			function _super() {
  1221 	var value;
  1220 	var value;
  1222 
  1221 
  1223 	for ( ; inputIndex < inputLength; inputIndex++ ) {
  1222 	for ( ; inputIndex < inputLength; inputIndex++ ) {
  1224 		for ( key in input[ inputIndex ] ) {
  1223 		for ( key in input[ inputIndex ] ) {
  1225 			value = input[ inputIndex ][ key ];
  1224 			value = input[ inputIndex ][ key ];
  1226 			if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {
  1225 			if ( widgetHasOwnProperty.call( input[ inputIndex ], key ) && value !== undefined ) {
  1227 
  1226 
  1228 				// Clone objects
  1227 				// Clone objects
  1229 				if ( $.isPlainObject( value ) ) {
  1228 				if ( $.isPlainObject( value ) ) {
  1230 					target[ key ] = $.isPlainObject( target[ key ] ) ?
  1229 					target[ key ] = $.isPlainObject( target[ key ] ) ?
  1231 						$.widget.extend( {}, target[ key ], value ) :
  1230 						$.widget.extend( {}, target[ key ], value ) :
  1232 
  1231 
  1233 						// Don't extend strings, arrays, etc. with objects
  1232 						// Don't extend strings, arrays, etc. with objects
  1234 						$.widget.extend( {}, value );
  1233 						$.widget.extend( {}, value );
  1235 
  1234 
  1236 				// Copy everything else by reference
  1235 					// Copy everything else by reference
  1237 				} else {
  1236 				} else {
  1238 					target[ key ] = value;
  1237 					target[ key ] = value;
  1239 				}
  1238 				}
  1240 			}
  1239 			}
  1241 		}
  1240 		}
  1270 						return $.error( "cannot call methods on " + name +
  1269 						return $.error( "cannot call methods on " + name +
  1271 							" prior to initialization; " +
  1270 							" prior to initialization; " +
  1272 							"attempted to call method '" + options + "'" );
  1271 							"attempted to call method '" + options + "'" );
  1273 					}
  1272 					}
  1274 
  1273 
  1275 					if ( !$.isFunction( instance[ options ] ) || options.charAt( 0 ) === "_" ) {
  1274 					if ( typeof instance[ options ] !== "function" ||
       
  1275 						options.charAt( 0 ) === "_" ) {
  1276 						return $.error( "no such method '" + options + "' for " + name +
  1276 						return $.error( "no such method '" + options + "' for " + name +
  1277 							" widget instance" );
  1277 							" widget instance" );
  1278 					}
  1278 					}
  1279 
  1279 
  1280 					methodValue = instance[ options ].apply( instance, args );
  1280 					methodValue = instance[ options ].apply( instance, args );
  1479 		var classKey, elements, currentElements;
  1479 		var classKey, elements, currentElements;
  1480 
  1480 
  1481 		for ( classKey in value ) {
  1481 		for ( classKey in value ) {
  1482 			currentElements = this.classesElementLookup[ classKey ];
  1482 			currentElements = this.classesElementLookup[ classKey ];
  1483 			if ( value[ classKey ] === this.options.classes[ classKey ] ||
  1483 			if ( value[ classKey ] === this.options.classes[ classKey ] ||
  1484 					!currentElements ||
  1484 				!currentElements ||
  1485 					!currentElements.length ) {
  1485 				!currentElements.length ) {
  1486 				continue;
  1486 				continue;
  1487 			}
  1487 			}
  1488 
  1488 
  1489 			// We are doing this to create a new jQuery object because the _removeClass() call
  1489 			// We are doing this to create a new jQuery object because the _removeClass() call
  1490 			// on the next line is going to destroy the reference to the current elements being
  1490 			// on the next line is going to destroy the reference to the current elements being
  1531 		options = $.extend( {
  1531 		options = $.extend( {
  1532 			element: this.element,
  1532 			element: this.element,
  1533 			classes: this.options.classes || {}
  1533 			classes: this.options.classes || {}
  1534 		}, options );
  1534 		}, options );
  1535 
  1535 
       
  1536 		function bindRemoveEvent() {
       
  1537 			var nodesToBind = [];
       
  1538 
       
  1539 			options.element.each( function( _, element ) {
       
  1540 				var isTracked = $.map( that.classesElementLookup, function( elements ) {
       
  1541 					return elements;
       
  1542 				} )
       
  1543 					.some( function( elements ) {
       
  1544 						return elements.is( element );
       
  1545 					} );
       
  1546 
       
  1547 				if ( !isTracked ) {
       
  1548 					nodesToBind.push( element );
       
  1549 				}
       
  1550 			} );
       
  1551 
       
  1552 			that._on( $( nodesToBind ), {
       
  1553 				remove: "_untrackClassesElement"
       
  1554 			} );
       
  1555 		}
       
  1556 
  1536 		function processClassString( classes, checkOption ) {
  1557 		function processClassString( classes, checkOption ) {
  1537 			var current, i;
  1558 			var current, i;
  1538 			for ( i = 0; i < classes.length; i++ ) {
  1559 			for ( i = 0; i < classes.length; i++ ) {
  1539 				current = that.classesElementLookup[ classes[ i ] ] || $();
  1560 				current = that.classesElementLookup[ classes[ i ] ] || $();
  1540 				if ( options.add ) {
  1561 				if ( options.add ) {
  1541 					current = $( $.unique( current.get().concat( options.element.get() ) ) );
  1562 					bindRemoveEvent();
       
  1563 					current = $( $.uniqueSort( current.get().concat( options.element.get() ) ) );
  1542 				} else {
  1564 				} else {
  1543 					current = $( current.not( options.element ).get() );
  1565 					current = $( current.not( options.element ).get() );
  1544 				}
  1566 				}
  1545 				that.classesElementLookup[ classes[ i ] ] = current;
  1567 				that.classesElementLookup[ classes[ i ] ] = current;
  1546 				full.push( classes[ i ] );
  1568 				full.push( classes[ i ] );
  1547 				if ( checkOption && options.classes[ classes[ i ] ] ) {
  1569 				if ( checkOption && options.classes[ classes[ i ] ] ) {
  1548 					full.push( options.classes[ classes[ i ] ] );
  1570 					full.push( options.classes[ classes[ i ] ] );
  1549 				}
  1571 				}
  1550 			}
  1572 			}
  1551 		}
  1573 		}
  1552 
       
  1553 		this._on( options.element, {
       
  1554 			"remove": "_untrackClassesElement"
       
  1555 		} );
       
  1556 
  1574 
  1557 		if ( options.keys ) {
  1575 		if ( options.keys ) {
  1558 			processClassString( options.keys.match( /\S+/g ) || [], true );
  1576 			processClassString( options.keys.match( /\S+/g ) || [], true );
  1559 		}
  1577 		}
  1560 		if ( options.extra ) {
  1578 		if ( options.extra ) {
  1569 		$.each( that.classesElementLookup, function( key, value ) {
  1587 		$.each( that.classesElementLookup, function( key, value ) {
  1570 			if ( $.inArray( event.target, value ) !== -1 ) {
  1588 			if ( $.inArray( event.target, value ) !== -1 ) {
  1571 				that.classesElementLookup[ key ] = $( value.not( event.target ).get() );
  1589 				that.classesElementLookup[ key ] = $( value.not( event.target ).get() );
  1572 			}
  1590 			}
  1573 		} );
  1591 		} );
       
  1592 
       
  1593 		this._off( $( event.target ) );
  1574 	},
  1594 	},
  1575 
  1595 
  1576 	_removeClass: function( element, keys, extra ) {
  1596 	_removeClass: function( element, keys, extra ) {
  1577 		return this._toggleClass( element, keys, extra, false );
  1597 		return this._toggleClass( element, keys, extra, false );
  1578 	},
  1598 	},
  1620 
  1640 
  1621 				// Allow widgets to customize the disabled handling
  1641 				// Allow widgets to customize the disabled handling
  1622 				// - disabled as an array instead of boolean
  1642 				// - disabled as an array instead of boolean
  1623 				// - disabled class as method for disabling individual parts
  1643 				// - disabled class as method for disabling individual parts
  1624 				if ( !suppressDisabledCheck &&
  1644 				if ( !suppressDisabledCheck &&
  1625 						( instance.options.disabled === true ||
  1645 					( instance.options.disabled === true ||
  1626 						$( this ).hasClass( "ui-state-disabled" ) ) ) {
  1646 						$( this ).hasClass( "ui-state-disabled" ) ) ) {
  1627 					return;
  1647 					return;
  1628 				}
  1648 				}
  1629 				return ( typeof handler === "string" ? instance[ handler ] : handler )
  1649 				return ( typeof handler === "string" ? instance[ handler ] : handler )
  1630 					.apply( instance, arguments );
  1650 					.apply( instance, arguments );
  1649 	},
  1669 	},
  1650 
  1670 
  1651 	_off: function( element, eventName ) {
  1671 	_off: function( element, eventName ) {
  1652 		eventName = ( eventName || "" ).split( " " ).join( this.eventNamespace + " " ) +
  1672 		eventName = ( eventName || "" ).split( " " ).join( this.eventNamespace + " " ) +
  1653 			this.eventNamespace;
  1673 			this.eventNamespace;
  1654 		element.off( eventName ).off( eventName );
  1674 		element.off( eventName );
  1655 
  1675 
  1656 		// Clear the stack to avoid memory leaks (#10056)
  1676 		// Clear the stack to avoid memory leaks (#10056)
  1657 		this.bindings = $( this.bindings.not( element ).get() );
  1677 		this.bindings = $( this.bindings.not( element ).get() );
  1658 		this.focusable = $( this.focusable.not( element ).get() );
  1678 		this.focusable = $( this.focusable.not( element ).get() );
  1659 		this.hoverable = $( this.hoverable.not( element ).get() );
  1679 		this.hoverable = $( this.hoverable.not( element ).get() );
  1715 				}
  1735 				}
  1716 			}
  1736 			}
  1717 		}
  1737 		}
  1718 
  1738 
  1719 		this.element.trigger( event, data );
  1739 		this.element.trigger( event, data );
  1720 		return !( $.isFunction( callback ) &&
  1740 		return !( typeof callback === "function" &&
  1721 			callback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false ||
  1741 			callback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false ||
  1722 			event.isDefaultPrevented() );
  1742 			event.isDefaultPrevented() );
  1723 	}
  1743 	}
  1724 };
  1744 };
  1725 
  1745 
  1737 				options.effect || defaultEffect;
  1757 				options.effect || defaultEffect;
  1738 
  1758 
  1739 		options = options || {};
  1759 		options = options || {};
  1740 		if ( typeof options === "number" ) {
  1760 		if ( typeof options === "number" ) {
  1741 			options = { duration: options };
  1761 			options = { duration: options };
       
  1762 		} else if ( options === true ) {
       
  1763 			options = {};
  1742 		}
  1764 		}
  1743 
  1765 
  1744 		hasOptions = !$.isEmptyObject( options );
  1766 		hasOptions = !$.isEmptyObject( options );
  1745 		options.complete = callback;
  1767 		options.complete = callback;
  1746 
  1768