j1-template 2022.1.2 → 2022.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,27 +1,30 @@
1
- /*! jQuery UI - v1.12.1 - 2016-09-14
1
+ /*! jQuery UI - v1.13.1 - 2022-01-20
2
2
  * http://jqueryui.com
3
- * Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js
3
+ * Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-patch.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js
4
4
  * Copyright jQuery Foundation and other contributors; Licensed MIT */
5
5
 
6
- (function( factory ) {
6
+ ( function( factory ) {
7
+ "use strict";
8
+
7
9
  if ( typeof define === "function" && define.amd ) {
8
10
 
9
11
  // AMD. Register as an anonymous module.
10
- define([ "jquery" ], factory );
12
+ define( [ "jquery" ], factory );
11
13
  } else {
12
14
 
13
15
  // Browser globals
14
16
  factory( jQuery );
15
17
  }
16
- }(function( $ ) {
18
+ } )( function( $ ) {
19
+ "use strict";
17
20
 
18
21
  $.ui = $.ui || {};
19
22
 
20
- var version = $.ui.version = "1.12.1";
23
+ var version = $.ui.version = "1.13.1";
21
24
 
22
25
 
23
26
  /*!
24
- * jQuery UI Widget 1.12.1
27
+ * jQuery UI Widget 1.13.1
25
28
  * http://jqueryui.com
26
29
  *
27
30
  * Copyright jQuery Foundation and other contributors
@@ -35,23 +38,21 @@ var version = $.ui.version = "1.12.1";
35
38
  //>>docs: http://api.jqueryui.com/jQuery.widget/
36
39
  //>>demos: http://jqueryui.com/widget/
37
40
 
41
+
38
42
  var widgetUuid = 0;
43
+ var widgetHasOwnProperty = Array.prototype.hasOwnProperty;
39
44
  var widgetSlice = Array.prototype.slice;
40
45
 
41
46
  $.cleanData = ( function( orig ) {
42
47
  return function( elems ) {
43
48
  var events, elem, i;
44
49
  for ( i = 0; ( elem = elems[ i ] ) != null; i++ ) {
45
- try {
46
-
47
- // Only trigger remove when necessary to save time
48
- events = $._data( elem, "events" );
49
- if ( events && events.remove ) {
50
- $( elem ).triggerHandler( "remove" );
51
- }
52
50
 
53
- // Http://bugs.jquery.com/ticket/8235
54
- } catch ( e ) {}
51
+ // Only trigger remove when necessary to save time
52
+ events = $._data( elem, "events" );
53
+ if ( events && events.remove ) {
54
+ $( elem ).triggerHandler( "remove" );
55
+ }
55
56
  }
56
57
  orig( elems );
57
58
  };
@@ -73,12 +74,12 @@ $.widget = function( name, base, prototype ) {
73
74
  base = $.Widget;
74
75
  }
75
76
 
76
- if ( $.isArray( prototype ) ) {
77
+ if ( Array.isArray( prototype ) ) {
77
78
  prototype = $.extend.apply( null, [ {} ].concat( prototype ) );
78
79
  }
79
80
 
80
81
  // Create selector for plugin
81
- $.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) {
82
+ $.expr.pseudos[ fullName.toLowerCase() ] = function( elem ) {
82
83
  return !!$.data( elem, fullName );
83
84
  };
84
85
 
@@ -87,7 +88,7 @@ $.widget = function( name, base, prototype ) {
87
88
  constructor = $[ namespace ][ name ] = function( options, element ) {
88
89
 
89
90
  // Allow instantiation without "new" keyword
90
- if ( !this._createWidget ) {
91
+ if ( !this || !this._createWidget ) {
91
92
  return new constructor( options, element );
92
93
  }
93
94
 
@@ -118,7 +119,7 @@ $.widget = function( name, base, prototype ) {
118
119
  // inheriting from
119
120
  basePrototype.options = $.widget.extend( {}, basePrototype.options );
120
121
  $.each( prototype, function( prop, value ) {
121
- if ( !$.isFunction( value ) ) {
122
+ if ( typeof value !== "function" ) {
122
123
  proxiedPrototype[ prop ] = value;
123
124
  return;
124
125
  }
@@ -197,7 +198,7 @@ $.widget.extend = function( target ) {
197
198
  for ( ; inputIndex < inputLength; inputIndex++ ) {
198
199
  for ( key in input[ inputIndex ] ) {
199
200
  value = input[ inputIndex ][ key ];
200
- if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {
201
+ if ( widgetHasOwnProperty.call( input[ inputIndex ], key ) && value !== undefined ) {
201
202
 
202
203
  // Clone objects
203
204
  if ( $.isPlainObject( value ) ) {
@@ -246,7 +247,8 @@ $.widget.bridge = function( name, object ) {
246
247
  "attempted to call method '" + options + "'" );
247
248
  }
248
249
 
249
- if ( !$.isFunction( instance[ options ] ) || options.charAt( 0 ) === "_" ) {
250
+ if ( typeof instance[ options ] !== "function" ||
251
+ options.charAt( 0 ) === "_" ) {
250
252
  return $.error( "no such method '" + options + "' for " + name +
251
253
  " widget instance" );
252
254
  }
@@ -507,12 +509,34 @@ $.Widget.prototype = {
507
509
  classes: this.options.classes || {}
508
510
  }, options );
509
511
 
512
+ function bindRemoveEvent() {
513
+ var nodesToBind = [];
514
+
515
+ options.element.each( function( _, element ) {
516
+ var isTracked = $.map( that.classesElementLookup, function( elements ) {
517
+ return elements;
518
+ } )
519
+ .some( function( elements ) {
520
+ return elements.is( element );
521
+ } );
522
+
523
+ if ( !isTracked ) {
524
+ nodesToBind.push( element );
525
+ }
526
+ } );
527
+
528
+ that._on( $( nodesToBind ), {
529
+ remove: "_untrackClassesElement"
530
+ } );
531
+ }
532
+
510
533
  function processClassString( classes, checkOption ) {
511
534
  var current, i;
512
535
  for ( i = 0; i < classes.length; i++ ) {
513
536
  current = that.classesElementLookup[ classes[ i ] ] || $();
514
537
  if ( options.add ) {
515
- current = $( $.unique( current.get().concat( options.element.get() ) ) );
538
+ bindRemoveEvent();
539
+ current = $( $.uniqueSort( current.get().concat( options.element.get() ) ) );
516
540
  } else {
517
541
  current = $( current.not( options.element ).get() );
518
542
  }
@@ -524,10 +548,6 @@ $.Widget.prototype = {
524
548
  }
525
549
  }
526
550
 
527
- this._on( options.element, {
528
- "remove": "_untrackClassesElement"
529
- } );
530
-
531
551
  if ( options.keys ) {
532
552
  processClassString( options.keys.match( /\S+/g ) || [], true );
533
553
  }
@@ -545,6 +565,8 @@ $.Widget.prototype = {
545
565
  that.classesElementLookup[ key ] = $( value.not( event.target ).get() );
546
566
  }
547
567
  } );
568
+
569
+ this._off( $( event.target ) );
548
570
  },
549
571
 
550
572
  _removeClass: function( element, keys, extra ) {
@@ -625,7 +647,7 @@ $.Widget.prototype = {
625
647
  _off: function( element, eventName ) {
626
648
  eventName = ( eventName || "" ).split( " " ).join( this.eventNamespace + " " ) +
627
649
  this.eventNamespace;
628
- element.off( eventName ).off( eventName );
650
+ element.off( eventName );
629
651
 
630
652
  // Clear the stack to avoid memory leaks (#10056)
631
653
  this.bindings = $( this.bindings.not( element ).get() );
@@ -691,7 +713,7 @@ $.Widget.prototype = {
691
713
  }
692
714
 
693
715
  this.element.trigger( event, data );
694
- return !( $.isFunction( callback ) &&
716
+ return !( typeof callback === "function" &&
695
717
  callback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false ||
696
718
  event.isDefaultPrevented() );
697
719
  }
@@ -713,6 +735,8 @@ $.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) {
713
735
  options = options || {};
714
736
  if ( typeof options === "number" ) {
715
737
  options = { duration: options };
738
+ } else if ( options === true ) {
739
+ options = {};
716
740
  }
717
741
 
718
742
  hasOptions = !$.isEmptyObject( options );
@@ -742,7 +766,7 @@ var widget = $.widget;
742
766
 
743
767
 
744
768
  /*!
745
- * jQuery UI Position 1.12.1
769
+ * jQuery UI Position 1.13.1
746
770
  * http://jqueryui.com
747
771
  *
748
772
  * Copyright jQuery Foundation and other contributors
@@ -781,6 +805,10 @@ function parseCss( element, property ) {
781
805
  return parseInt( $.css( element, property ), 10 ) || 0;
782
806
  }
783
807
 
808
+ function isWindow( obj ) {
809
+ return obj != null && obj === obj.window;
810
+ }
811
+
784
812
  function getDimensions( elem ) {
785
813
  var raw = elem[ 0 ];
786
814
  if ( raw.nodeType === 9 ) {
@@ -790,7 +818,7 @@ function getDimensions( elem ) {
790
818
  offset: { top: 0, left: 0 }
791
819
  };
792
820
  }
793
- if ( $.isWindow( raw ) ) {
821
+ if ( isWindow( raw ) ) {
794
822
  return {
795
823
  width: elem.width(),
796
824
  height: elem.height(),
@@ -817,9 +845,9 @@ $.position = {
817
845
  return cachedScrollbarWidth;
818
846
  }
819
847
  var w1, w2,
820
- div = $( "<div " +
821
- "style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'>" +
822
- "<div style='height:100px;width:auto;'></div></div>" ),
848
+ div = $( "<div style=" +
849
+ "'display:block;position:absolute;width:200px;height:200px;overflow:hidden;'>" +
850
+ "<div style='height:300px;width:auto;'></div></div>" ),
823
851
  innerDiv = div.children()[ 0 ];
824
852
 
825
853
  $( "body" ).append( div );
@@ -852,12 +880,12 @@ $.position = {
852
880
  },
853
881
  getWithinInfo: function( element ) {
854
882
  var withinElement = $( element || window ),
855
- isWindow = $.isWindow( withinElement[ 0 ] ),
883
+ isElemWindow = isWindow( withinElement[ 0 ] ),
856
884
  isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9,
857
- hasOffset = !isWindow && !isDocument;
885
+ hasOffset = !isElemWindow && !isDocument;
858
886
  return {
859
887
  element: withinElement,
860
- isWindow: isWindow,
888
+ isWindow: isElemWindow,
861
889
  isDocument: isDocument,
862
890
  offset: hasOffset ? $( element ).offset() : { left: 0, top: 0 },
863
891
  scrollLeft: withinElement.scrollLeft(),
@@ -877,7 +905,12 @@ $.fn.position = function( options ) {
877
905
  options = $.extend( {}, options );
878
906
 
879
907
  var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,
880
- target = $( options.of ),
908
+
909
+ // Make sure string options are treated as CSS selectors
910
+ target = typeof options.of === "string" ?
911
+ $( document ).find( options.of ) :
912
+ $( options.of ),
913
+
881
914
  within = $.position.getWithinInfo( options.within ),
882
915
  scrollInfo = $.position.getScrollInfo( within ),
883
916
  collision = ( options.collision || "flip" ).split( " " ),
@@ -1230,7 +1263,7 @@ var position = $.ui.position;
1230
1263
 
1231
1264
 
1232
1265
  /*!
1233
- * jQuery UI :data 1.12.1
1266
+ * jQuery UI :data 1.13.1
1234
1267
  * http://jqueryui.com
1235
1268
  *
1236
1269
  * Copyright jQuery Foundation and other contributors
@@ -1244,7 +1277,7 @@ var position = $.ui.position;
1244
1277
  //>>docs: http://api.jqueryui.com/data-selector/
1245
1278
 
1246
1279
 
1247
- var data = $.extend( $.expr[ ":" ], {
1280
+ var data = $.extend( $.expr.pseudos, {
1248
1281
  data: $.expr.createPseudo ?
1249
1282
  $.expr.createPseudo( function( dataName ) {
1250
1283
  return function( elem ) {
@@ -1259,7 +1292,7 @@ var data = $.extend( $.expr[ ":" ], {
1259
1292
  } );
1260
1293
 
1261
1294
  /*!
1262
- * jQuery UI Disable Selection 1.12.1
1295
+ * jQuery UI Disable Selection 1.13.1
1263
1296
  * http://jqueryui.com
1264
1297
  *
1265
1298
  * Copyright jQuery Foundation and other contributors
@@ -1274,7 +1307,6 @@ var data = $.extend( $.expr[ ":" ], {
1274
1307
 
1275
1308
  // This file is deprecated
1276
1309
 
1277
-
1278
1310
  var disableSelection = $.fn.extend( {
1279
1311
  disableSelection: ( function() {
1280
1312
  var eventType = "onselectstart" in document.createElement( "div" ) ?
@@ -1294,56 +1326,37 @@ var disableSelection = $.fn.extend( {
1294
1326
  } );
1295
1327
 
1296
1328
 
1297
- /*!
1298
- * jQuery UI Effects 1.12.1
1299
- * http://jqueryui.com
1300
- *
1301
- * Copyright jQuery Foundation and other contributors
1302
- * Released under the MIT license.
1303
- * http://jquery.org/license
1304
- */
1305
-
1306
- //>>label: Effects Core
1307
- //>>group: Effects
1308
- // jscs:disable maximumLineLength
1309
- //>>description: Extends the internal jQuery effects. Includes morphing and easing. Required by all other effects.
1310
- // jscs:enable maximumLineLength
1311
- //>>docs: http://api.jqueryui.com/category/effects-core/
1312
- //>>demos: http://jqueryui.com/effect/
1313
-
1314
-
1315
1329
 
1316
- var dataSpace = "ui-effects-",
1317
- dataSpaceStyle = "ui-effects-style",
1318
- dataSpaceAnimated = "ui-effects-animated",
1330
+ // Create a local jQuery because jQuery Color relies on it and the
1331
+ // global may not exist with AMD and a custom build (#10199).
1332
+ // This module is a noop if used as a regular AMD module.
1333
+ // eslint-disable-next-line no-unused-vars
1334
+ var jQuery = $;
1319
1335
 
1320
- // Create a local jQuery because jQuery Color relies on it and the
1321
- // global may not exist with AMD and a custom build (#10199)
1322
- jQuery = $;
1323
-
1324
- $.effects = {
1325
- effect: {}
1326
- };
1327
1336
 
1328
1337
  /*!
1329
- * jQuery Color Animations v2.1.2
1338
+ * jQuery Color Animations v2.2.0
1330
1339
  * https://github.com/jquery/jquery-color
1331
1340
  *
1332
- * Copyright 2014 jQuery Foundation and other contributors
1341
+ * Copyright OpenJS Foundation and other contributors
1333
1342
  * Released under the MIT license.
1334
1343
  * http://jquery.org/license
1335
1344
  *
1336
- * Date: Wed Jan 16 08:47:09 2013 -0600
1345
+ * Date: Sun May 10 09:02:36 2020 +0200
1337
1346
  */
1338
- ( function( jQuery, undefined ) {
1347
+
1348
+
1339
1349
 
1340
1350
  var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor " +
1341
1351
  "borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",
1342
1352
 
1343
- // Plusequals test for += 100 -= 100
1353
+ class2type = {},
1354
+ toString = class2type.toString,
1355
+
1356
+ // plusequals test for += 100 -= 100
1344
1357
  rplusequals = /^([\-+])=\s*(\d+\.?\d*)/,
1345
1358
 
1346
- // A set of RE's that can match strings and generate color tuples.
1359
+ // a set of RE's that can match strings and generate color tuples.
1347
1360
  stringParsers = [ {
1348
1361
  re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
1349
1362
  parse: function( execResult ) {
@@ -1366,24 +1379,31 @@ $.effects = {
1366
1379
  }
1367
1380
  }, {
1368
1381
 
1369
- // This regex ignores A-F because it's compared against an already lowercased string
1370
- re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,
1382
+ // this regex ignores A-F because it's compared against an already lowercased string
1383
+ re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})?/,
1371
1384
  parse: function( execResult ) {
1372
1385
  return [
1373
1386
  parseInt( execResult[ 1 ], 16 ),
1374
1387
  parseInt( execResult[ 2 ], 16 ),
1375
- parseInt( execResult[ 3 ], 16 )
1388
+ parseInt( execResult[ 3 ], 16 ),
1389
+ execResult[ 4 ] ?
1390
+ ( parseInt( execResult[ 4 ], 16 ) / 255 ).toFixed( 2 ) :
1391
+ 1
1376
1392
  ];
1377
1393
  }
1378
1394
  }, {
1379
1395
 
1380
- // This regex ignores A-F because it's compared against an already lowercased string
1381
- re: /#([a-f0-9])([a-f0-9])([a-f0-9])/,
1396
+ // this regex ignores A-F because it's compared against an already lowercased string
1397
+ re: /#([a-f0-9])([a-f0-9])([a-f0-9])([a-f0-9])?/,
1382
1398
  parse: function( execResult ) {
1383
1399
  return [
1384
1400
  parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ),
1385
1401
  parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ),
1386
- parseInt( execResult[ 3 ] + execResult[ 3 ], 16 )
1402
+ parseInt( execResult[ 3 ] + execResult[ 3 ], 16 ),
1403
+ execResult[ 4 ] ?
1404
+ ( parseInt( execResult[ 4 ] + execResult[ 4 ], 16 ) / 255 )
1405
+ .toFixed( 2 ) :
1406
+ 1
1387
1407
  ];
1388
1408
  }
1389
1409
  }, {
@@ -1399,7 +1419,7 @@ $.effects = {
1399
1419
  }
1400
1420
  } ],
1401
1421
 
1402
- // JQuery.Color( )
1422
+ // jQuery.Color( )
1403
1423
  color = jQuery.Color = function( color, green, blue, alpha ) {
1404
1424
  return new jQuery.Color.fn.parse( color, green, blue, alpha );
1405
1425
  },
@@ -1453,20 +1473,20 @@ $.effects = {
1453
1473
  },
1454
1474
  support = color.support = {},
1455
1475
 
1456
- // Element for support tests
1476
+ // element for support tests
1457
1477
  supportElem = jQuery( "<p>" )[ 0 ],
1458
1478
 
1459
- // Colors = jQuery.Color.names
1479
+ // colors = jQuery.Color.names
1460
1480
  colors,
1461
1481
 
1462
- // Local aliases of functions called often
1482
+ // local aliases of functions called often
1463
1483
  each = jQuery.each;
1464
1484
 
1465
- // Determine rgba support immediately
1485
+ // determine rgba support immediately
1466
1486
  supportElem.style.cssText = "background-color:rgba(1,1,1,.5)";
1467
1487
  support.rgba = supportElem.style.backgroundColor.indexOf( "rgba" ) > -1;
1468
1488
 
1469
- // Define cache name and alpha properties
1489
+ // define cache name and alpha properties
1470
1490
  // for rgba and hsla spaces
1471
1491
  each( spaces, function( spaceName, space ) {
1472
1492
  space.cache = "_" + spaceName;
@@ -1477,6 +1497,22 @@ each( spaces, function( spaceName, space ) {
1477
1497
  };
1478
1498
  } );
1479
1499
 
1500
+ // Populate the class2type map
1501
+ jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
1502
+ function( _i, name ) {
1503
+ class2type[ "[object " + name + "]" ] = name.toLowerCase();
1504
+ } );
1505
+
1506
+ function getType( obj ) {
1507
+ if ( obj == null ) {
1508
+ return obj + "";
1509
+ }
1510
+
1511
+ return typeof obj === "object" ?
1512
+ class2type[ toString.call( obj ) ] || "object" :
1513
+ typeof obj;
1514
+ }
1515
+
1480
1516
  function clamp( value, prop, allowEmpty ) {
1481
1517
  var type = propTypes[ prop.type ] || {};
1482
1518
 
@@ -1495,13 +1531,13 @@ function clamp( value, prop, allowEmpty ) {
1495
1531
 
1496
1532
  if ( type.mod ) {
1497
1533
 
1498
- // We add mod before modding to make sure that negatives values
1534
+ // we add mod before modding to make sure that negatives values
1499
1535
  // get converted properly: -10 -> 350
1500
1536
  return ( value + type.mod ) % type.mod;
1501
1537
  }
1502
1538
 
1503
- // For now all property types without mod have min and max
1504
- return 0 > value ? 0 : type.max < value ? type.max : value;
1539
+ // for now all property types without mod have min and max
1540
+ return Math.min( type.max, Math.max( 0, value ) );
1505
1541
  }
1506
1542
 
1507
1543
  function stringParse( string ) {
@@ -1510,7 +1546,7 @@ function stringParse( string ) {
1510
1546
 
1511
1547
  string = string.toLowerCase();
1512
1548
 
1513
- each( stringParsers, function( i, parser ) {
1549
+ each( stringParsers, function( _i, parser ) {
1514
1550
  var parsed,
1515
1551
  match = parser.re.exec( string ),
1516
1552
  values = match && parser.parse( match ),
@@ -1519,12 +1555,12 @@ function stringParse( string ) {
1519
1555
  if ( values ) {
1520
1556
  parsed = inst[ spaceName ]( values );
1521
1557
 
1522
- // If this was an rgba parse the assignment might happen twice
1558
+ // if this was an rgba parse the assignment might happen twice
1523
1559
  // oh well....
1524
1560
  inst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ];
1525
1561
  rgba = inst._rgba = parsed._rgba;
1526
1562
 
1527
- // Exit each( stringParsers ) here because we matched
1563
+ // exit each( stringParsers ) here because we matched
1528
1564
  return false;
1529
1565
  }
1530
1566
  } );
@@ -1532,7 +1568,7 @@ function stringParse( string ) {
1532
1568
  // Found a stringParser that handled it
1533
1569
  if ( rgba.length ) {
1534
1570
 
1535
- // If this came from a parsed string, force "transparent" when alpha is 0
1571
+ // if this came from a parsed string, force "transparent" when alpha is 0
1536
1572
  // chrome, (and maybe others) return "transparent" as rgba(0,0,0,0)
1537
1573
  if ( rgba.join() === "0,0,0,0" ) {
1538
1574
  jQuery.extend( rgba, colors.transparent );
@@ -1540,7 +1576,7 @@ function stringParse( string ) {
1540
1576
  return inst;
1541
1577
  }
1542
1578
 
1543
- // Named colors
1579
+ // named colors
1544
1580
  return colors[ string ];
1545
1581
  }
1546
1582
 
@@ -1556,10 +1592,10 @@ color.fn = jQuery.extend( color.prototype, {
1556
1592
  }
1557
1593
 
1558
1594
  var inst = this,
1559
- type = jQuery.type( red ),
1595
+ type = getType( red ),
1560
1596
  rgba = this._rgba = [];
1561
1597
 
1562
- // More than 1 argument specified - assume ( red, green, blue, alpha )
1598
+ // more than 1 argument specified - assume ( red, green, blue, alpha )
1563
1599
  if ( green !== undefined ) {
1564
1600
  red = [ red, green, blue, alpha ];
1565
1601
  type = "array";
@@ -1570,7 +1606,7 @@ color.fn = jQuery.extend( color.prototype, {
1570
1606
  }
1571
1607
 
1572
1608
  if ( type === "array" ) {
1573
- each( spaces.rgba.props, function( key, prop ) {
1609
+ each( spaces.rgba.props, function( _key, prop ) {
1574
1610
  rgba[ prop.idx ] = clamp( red[ prop.idx ], prop );
1575
1611
  } );
1576
1612
  return this;
@@ -1578,20 +1614,20 @@ color.fn = jQuery.extend( color.prototype, {
1578
1614
 
1579
1615
  if ( type === "object" ) {
1580
1616
  if ( red instanceof color ) {
1581
- each( spaces, function( spaceName, space ) {
1617
+ each( spaces, function( _spaceName, space ) {
1582
1618
  if ( red[ space.cache ] ) {
1583
1619
  inst[ space.cache ] = red[ space.cache ].slice();
1584
1620
  }
1585
1621
  } );
1586
1622
  } else {
1587
- each( spaces, function( spaceName, space ) {
1623
+ each( spaces, function( _spaceName, space ) {
1588
1624
  var cache = space.cache;
1589
1625
  each( space.props, function( key, prop ) {
1590
1626
 
1591
- // If the cache doesn't exist, and we know how to convert
1627
+ // if the cache doesn't exist, and we know how to convert
1592
1628
  if ( !inst[ cache ] && space.to ) {
1593
1629
 
1594
- // If the value was null, we don't need to copy it
1630
+ // if the value was null, we don't need to copy it
1595
1631
  // if the key was alpha, we don't need to copy it either
1596
1632
  if ( key === "alpha" || red[ key ] == null ) {
1597
1633
  return;
@@ -1599,17 +1635,19 @@ color.fn = jQuery.extend( color.prototype, {
1599
1635
  inst[ cache ] = space.to( inst._rgba );
1600
1636
  }
1601
1637
 
1602
- // This is the only case where we allow nulls for ALL properties.
1638
+ // this is the only case where we allow nulls for ALL properties.
1603
1639
  // call clamp with alwaysAllowEmpty
1604
1640
  inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true );
1605
1641
  } );
1606
1642
 
1607
- // Everything defined but alpha?
1608
- if ( inst[ cache ] &&
1609
- jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) {
1643
+ // everything defined but alpha?
1644
+ if ( inst[ cache ] && jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) {
1645
+
1646
+ // use the default of 1
1647
+ if ( inst[ cache ][ 3 ] == null ) {
1648
+ inst[ cache ][ 3 ] = 1;
1649
+ }
1610
1650
 
1611
- // Use the default of 1
1612
- inst[ cache ][ 3 ] = 1;
1613
1651
  if ( space.from ) {
1614
1652
  inst._rgba = space.from( inst[ cache ] );
1615
1653
  }
@@ -1659,18 +1697,18 @@ color.fn = jQuery.extend( color.prototype, {
1659
1697
  result = start.slice();
1660
1698
 
1661
1699
  end = end[ space.cache ];
1662
- each( space.props, function( key, prop ) {
1700
+ each( space.props, function( _key, prop ) {
1663
1701
  var index = prop.idx,
1664
1702
  startValue = start[ index ],
1665
1703
  endValue = end[ index ],
1666
1704
  type = propTypes[ prop.type ] || {};
1667
1705
 
1668
- // If null, don't override start value
1706
+ // if null, don't override start value
1669
1707
  if ( endValue === null ) {
1670
1708
  return;
1671
1709
  }
1672
1710
 
1673
- // If null - use end
1711
+ // if null - use end
1674
1712
  if ( startValue === null ) {
1675
1713
  result[ index ] = endValue;
1676
1714
  } else {
@@ -1688,7 +1726,7 @@ color.fn = jQuery.extend( color.prototype, {
1688
1726
  },
1689
1727
  blend: function( opaque ) {
1690
1728
 
1691
- // If we are already opaque - return ourself
1729
+ // if we are already opaque - return ourself
1692
1730
  if ( this._rgba[ 3 ] === 1 ) {
1693
1731
  return this;
1694
1732
  }
@@ -1704,7 +1742,10 @@ color.fn = jQuery.extend( color.prototype, {
1704
1742
  toRgbaString: function() {
1705
1743
  var prefix = "rgba(",
1706
1744
  rgba = jQuery.map( this._rgba, function( v, i ) {
1707
- return v == null ? ( i > 2 ? 1 : 0 ) : v;
1745
+ if ( v != null ) {
1746
+ return v;
1747
+ }
1748
+ return i > 2 ? 1 : 0;
1708
1749
  } );
1709
1750
 
1710
1751
  if ( rgba[ 3 ] === 1 ) {
@@ -1721,7 +1762,7 @@ color.fn = jQuery.extend( color.prototype, {
1721
1762
  v = i > 2 ? 1 : 0;
1722
1763
  }
1723
1764
 
1724
- // Catch 1 and 2
1765
+ // catch 1 and 2
1725
1766
  if ( i && i < 3 ) {
1726
1767
  v = Math.round( v * 100 ) + "%";
1727
1768
  }
@@ -1744,7 +1785,7 @@ color.fn = jQuery.extend( color.prototype, {
1744
1785
 
1745
1786
  return "#" + jQuery.map( rgba, function( v ) {
1746
1787
 
1747
- // Default to 0 when nulls exist
1788
+ // default to 0 when nulls exist
1748
1789
  v = ( v || 0 ).toString( 16 );
1749
1790
  return v.length === 1 ? "0" + v : v;
1750
1791
  } ).join( "" );
@@ -1755,7 +1796,7 @@ color.fn = jQuery.extend( color.prototype, {
1755
1796
  } );
1756
1797
  color.fn.parse.prototype = color.fn;
1757
1798
 
1758
- // Hsla conversions adapted from:
1799
+ // hsla conversions adapted from:
1759
1800
  // https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021
1760
1801
 
1761
1802
  function hue2rgb( p, q, h ) {
@@ -1797,7 +1838,7 @@ spaces.hsla.to = function( rgba ) {
1797
1838
  h = ( 60 * ( r - g ) / diff ) + 240;
1798
1839
  }
1799
1840
 
1800
- // Chroma (diff) == 0 means greyscale which, by definition, saturation = 0%
1841
+ // chroma (diff) == 0 means greyscale which, by definition, saturation = 0%
1801
1842
  // otherwise, saturation is based on the ratio of chroma (diff) to lightness (add)
1802
1843
  if ( diff === 0 ) {
1803
1844
  s = 0;
@@ -1828,16 +1869,17 @@ spaces.hsla.from = function( hsla ) {
1828
1869
  ];
1829
1870
  };
1830
1871
 
1872
+
1831
1873
  each( spaces, function( spaceName, space ) {
1832
1874
  var props = space.props,
1833
1875
  cache = space.cache,
1834
1876
  to = space.to,
1835
1877
  from = space.from;
1836
1878
 
1837
- // Makes rgba() and hsla()
1879
+ // makes rgba() and hsla()
1838
1880
  color.fn[ spaceName ] = function( value ) {
1839
1881
 
1840
- // Generate a cache for this space if it doesn't exist
1882
+ // generate a cache for this space if it doesn't exist
1841
1883
  if ( to && !this[ cache ] ) {
1842
1884
  this[ cache ] = to( this._rgba );
1843
1885
  }
@@ -1846,7 +1888,7 @@ each( spaces, function( spaceName, space ) {
1846
1888
  }
1847
1889
 
1848
1890
  var ret,
1849
- type = jQuery.type( value ),
1891
+ type = getType( value ),
1850
1892
  arr = ( type === "array" || type === "object" ) ? value : arguments,
1851
1893
  local = this[ cache ].slice();
1852
1894
 
@@ -1867,19 +1909,24 @@ each( spaces, function( spaceName, space ) {
1867
1909
  }
1868
1910
  };
1869
1911
 
1870
- // Makes red() green() blue() alpha() hue() saturation() lightness()
1912
+ // makes red() green() blue() alpha() hue() saturation() lightness()
1871
1913
  each( props, function( key, prop ) {
1872
1914
 
1873
- // Alpha is included in more than one space
1915
+ // alpha is included in more than one space
1874
1916
  if ( color.fn[ key ] ) {
1875
1917
  return;
1876
1918
  }
1877
1919
  color.fn[ key ] = function( value ) {
1878
- var vtype = jQuery.type( value ),
1879
- fn = ( key === "alpha" ? ( this._hsla ? "hsla" : "rgba" ) : spaceName ),
1880
- local = this[ fn ](),
1881
- cur = local[ prop.idx ],
1882
- match;
1920
+ var local, cur, match, fn,
1921
+ vtype = getType( value );
1922
+
1923
+ if ( key === "alpha" ) {
1924
+ fn = this._hsla ? "hsla" : "rgba";
1925
+ } else {
1926
+ fn = spaceName;
1927
+ }
1928
+ local = this[ fn ]();
1929
+ cur = local[ prop.idx ];
1883
1930
 
1884
1931
  if ( vtype === "undefined" ) {
1885
1932
  return cur;
@@ -1887,7 +1934,7 @@ each( spaces, function( spaceName, space ) {
1887
1934
 
1888
1935
  if ( vtype === "function" ) {
1889
1936
  value = value.call( this, cur );
1890
- vtype = jQuery.type( value );
1937
+ vtype = getType( value );
1891
1938
  }
1892
1939
  if ( value == null && prop.empty ) {
1893
1940
  return this;
@@ -1904,18 +1951,17 @@ each( spaces, function( spaceName, space ) {
1904
1951
  } );
1905
1952
  } );
1906
1953
 
1907
- // Add cssHook and .fx.step function for each named hook.
1954
+ // add cssHook and .fx.step function for each named hook.
1908
1955
  // accept a space separated string of properties
1909
1956
  color.hook = function( hook ) {
1910
1957
  var hooks = hook.split( " " );
1911
- each( hooks, function( i, hook ) {
1958
+ each( hooks, function( _i, hook ) {
1912
1959
  jQuery.cssHooks[ hook ] = {
1913
1960
  set: function( elem, value ) {
1914
1961
  var parsed, curElem,
1915
1962
  backgroundColor = "";
1916
1963
 
1917
- if ( value !== "transparent" && ( jQuery.type( value ) !== "string" ||
1918
- ( parsed = stringParse( value ) ) ) ) {
1964
+ if ( value !== "transparent" && ( getType( value ) !== "string" || ( parsed = stringParse( value ) ) ) ) {
1919
1965
  value = color( parsed || value );
1920
1966
  if ( !support.rgba && value._rgba[ 3 ] !== 1 ) {
1921
1967
  curElem = hook === "backgroundColor" ? elem.parentNode : elem;
@@ -1941,8 +1987,7 @@ color.hook = function( hook ) {
1941
1987
  elem.style[ hook ] = value;
1942
1988
  } catch ( e ) {
1943
1989
 
1944
- // Wrapped to prevent IE from throwing errors on "invalid" values like
1945
- // 'auto' or 'inherit'
1990
+ // wrapped to prevent IE from throwing errors on "invalid" values like 'auto' or 'inherit'
1946
1991
  }
1947
1992
  }
1948
1993
  };
@@ -1964,7 +2009,7 @@ jQuery.cssHooks.borderColor = {
1964
2009
  expand: function( value ) {
1965
2010
  var expanded = {};
1966
2011
 
1967
- each( [ "Top", "Right", "Bottom", "Left" ], function( i, part ) {
2012
+ each( [ "Top", "Right", "Bottom", "Left" ], function( _i, part ) {
1968
2013
  expanded[ "border" + part + "Color" ] = value;
1969
2014
  } );
1970
2015
  return expanded;
@@ -2000,7 +2045,32 @@ colors = jQuery.Color.names = {
2000
2045
  _default: "#ffffff"
2001
2046
  };
2002
2047
 
2003
- } )( jQuery );
2048
+
2049
+ /*!
2050
+ * jQuery UI Effects 1.13.1
2051
+ * http://jqueryui.com
2052
+ *
2053
+ * Copyright jQuery Foundation and other contributors
2054
+ * Released under the MIT license.
2055
+ * http://jquery.org/license
2056
+ */
2057
+
2058
+ //>>label: Effects Core
2059
+ //>>group: Effects
2060
+ /* eslint-disable max-len */
2061
+ //>>description: Extends the internal jQuery effects. Includes morphing and easing. Required by all other effects.
2062
+ /* eslint-enable max-len */
2063
+ //>>docs: http://api.jqueryui.com/category/effects-core/
2064
+ //>>demos: http://jqueryui.com/effect/
2065
+
2066
+
2067
+ var dataSpace = "ui-effects-",
2068
+ dataSpaceStyle = "ui-effects-style",
2069
+ dataSpaceAnimated = "ui-effects-animated";
2070
+
2071
+ $.effects = {
2072
+ effect: {}
2073
+ };
2004
2074
 
2005
2075
  /******************************************************************************/
2006
2076
  /****************************** CLASS ANIMATIONS ******************************/
@@ -2032,6 +2102,12 @@ $.each(
2032
2102
  }
2033
2103
  );
2034
2104
 
2105
+ function camelCase( string ) {
2106
+ return string.replace( /-([\da-z])/gi, function( all, letter ) {
2107
+ return letter.toUpperCase();
2108
+ } );
2109
+ }
2110
+
2035
2111
  function getElementStyles( elem ) {
2036
2112
  var key, len,
2037
2113
  style = elem.ownerDocument.defaultView ?
@@ -2044,7 +2120,7 @@ function getElementStyles( elem ) {
2044
2120
  while ( len-- ) {
2045
2121
  key = style[ len ];
2046
2122
  if ( typeof style[ key ] === "string" ) {
2047
- styles[ $.camelCase( key ) ] = style[ key ];
2123
+ styles[ camelCase( key ) ] = style[ key ];
2048
2124
  }
2049
2125
  }
2050
2126
 
@@ -2218,12 +2294,12 @@ $.fn.extend( {
2218
2294
 
2219
2295
  ( function() {
2220
2296
 
2221
- if ( $.expr && $.expr.filters && $.expr.filters.animated ) {
2222
- $.expr.filters.animated = ( function( orig ) {
2297
+ if ( $.expr && $.expr.pseudos && $.expr.pseudos.animated ) {
2298
+ $.expr.pseudos.animated = ( function( orig ) {
2223
2299
  return function( elem ) {
2224
2300
  return !!$( elem ).data( dataSpaceAnimated ) || orig( elem );
2225
2301
  };
2226
- } )( $.expr.filters.animated );
2302
+ } )( $.expr.pseudos.animated );
2227
2303
  }
2228
2304
 
2229
2305
  if ( $.uiBackCompat !== false ) {
@@ -2292,6 +2368,7 @@ if ( $.uiBackCompat !== false ) {
2292
2368
  // Firefox incorrectly exposes anonymous content
2293
2369
  // https://bugzilla.mozilla.org/show_bug.cgi?id=561664
2294
2370
  try {
2371
+ // eslint-disable-next-line no-unused-expressions
2295
2372
  active.id;
2296
2373
  } catch ( e ) {
2297
2374
  active = document.body;
@@ -2354,7 +2431,7 @@ if ( $.uiBackCompat !== false ) {
2354
2431
  }
2355
2432
 
2356
2433
  $.extend( $.effects, {
2357
- version: "1.12.1",
2434
+ version: "1.13.1",
2358
2435
 
2359
2436
  define: function( name, mode, effect ) {
2360
2437
  if ( !effect ) {
@@ -2570,7 +2647,7 @@ function _normalizeArguments( effect, options, speed, callback ) {
2570
2647
  }
2571
2648
 
2572
2649
  // Catch (effect, callback)
2573
- if ( $.isFunction( options ) ) {
2650
+ if ( typeof options === "function" ) {
2574
2651
  callback = options;
2575
2652
  speed = null;
2576
2653
  options = {};
@@ -2584,7 +2661,7 @@ function _normalizeArguments( effect, options, speed, callback ) {
2584
2661
  }
2585
2662
 
2586
2663
  // Catch (effect, options, callback)
2587
- if ( $.isFunction( speed ) ) {
2664
+ if ( typeof speed === "function" ) {
2588
2665
  callback = speed;
2589
2666
  speed = null;
2590
2667
  }
@@ -2618,7 +2695,7 @@ function standardAnimationOption( option ) {
2618
2695
  }
2619
2696
 
2620
2697
  // Complete callback
2621
- if ( $.isFunction( option ) ) {
2698
+ if ( typeof option === "function" ) {
2622
2699
  return true;
2623
2700
  }
2624
2701
 
@@ -2645,7 +2722,7 @@ $.fn.extend( {
2645
2722
  var el = $( this ),
2646
2723
  normalizedMode = $.effects.mode( el, mode ) || defaultMode;
2647
2724
 
2648
- // Sentinel for duck-punching the :animated psuedo-selector
2725
+ // Sentinel for duck-punching the :animated pseudo-selector
2649
2726
  el.data( dataSpaceAnimated, true );
2650
2727
 
2651
2728
  // Save effect mode for later use,
@@ -2653,7 +2730,7 @@ $.fn.extend( {
2653
2730
  // as the .show() below destroys the initial state
2654
2731
  modes.push( normalizedMode );
2655
2732
 
2656
- // See $.uiBackCompat inside of run() for removal of defaultMode in 1.13
2733
+ // See $.uiBackCompat inside of run() for removal of defaultMode in 1.14
2657
2734
  if ( defaultMode && ( normalizedMode === "show" ||
2658
2735
  ( normalizedMode === defaultMode && normalizedMode === "hide" ) ) ) {
2659
2736
  el.show();
@@ -2663,7 +2740,7 @@ $.fn.extend( {
2663
2740
  $.effects.saveStyle( el );
2664
2741
  }
2665
2742
 
2666
- if ( $.isFunction( next ) ) {
2743
+ if ( typeof next === "function" ) {
2667
2744
  next();
2668
2745
  }
2669
2746
  };
@@ -2698,11 +2775,11 @@ $.fn.extend( {
2698
2775
  }
2699
2776
 
2700
2777
  function done() {
2701
- if ( $.isFunction( complete ) ) {
2778
+ if ( typeof complete === "function" ) {
2702
2779
  complete.call( elem[ 0 ] );
2703
2780
  }
2704
2781
 
2705
- if ( $.isFunction( next ) ) {
2782
+ if ( typeof next === "function" ) {
2706
2783
  next();
2707
2784
  }
2708
2785
  }
@@ -2811,22 +2888,24 @@ $.fn.extend( {
2811
2888
  width: target.innerWidth()
2812
2889
  },
2813
2890
  startPosition = element.offset(),
2814
- transfer = $( "<div class='ui-effects-transfer'></div>" )
2815
- .appendTo( "body" )
2816
- .addClass( options.className )
2817
- .css( {
2818
- top: startPosition.top - fixTop,
2819
- left: startPosition.left - fixLeft,
2820
- height: element.innerHeight(),
2821
- width: element.innerWidth(),
2822
- position: targetFixed ? "fixed" : "absolute"
2823
- } )
2824
- .animate( animation, options.duration, options.easing, function() {
2825
- transfer.remove();
2826
- if ( $.isFunction( done ) ) {
2827
- done();
2828
- }
2829
- } );
2891
+ transfer = $( "<div class='ui-effects-transfer'></div>" );
2892
+
2893
+ transfer
2894
+ .appendTo( "body" )
2895
+ .addClass( options.className )
2896
+ .css( {
2897
+ top: startPosition.top - fixTop,
2898
+ left: startPosition.left - fixLeft,
2899
+ height: element.innerHeight(),
2900
+ width: element.innerWidth(),
2901
+ position: targetFixed ? "fixed" : "absolute"
2902
+ } )
2903
+ .animate( animation, options.duration, options.easing, function() {
2904
+ transfer.remove();
2905
+ if ( typeof done === "function" ) {
2906
+ done();
2907
+ }
2908
+ } );
2830
2909
  }
2831
2910
  } );
2832
2911
 
@@ -2920,7 +2999,7 @@ var effect = $.effects;
2920
2999
 
2921
3000
 
2922
3001
  /*!
2923
- * jQuery UI Effects Blind 1.12.1
3002
+ * jQuery UI Effects Blind 1.13.1
2924
3003
  * http://jqueryui.com
2925
3004
  *
2926
3005
  * Copyright jQuery Foundation and other contributors
@@ -2935,7 +3014,6 @@ var effect = $.effects;
2935
3014
  //>>demos: http://jqueryui.com/effect/
2936
3015
 
2937
3016
 
2938
-
2939
3017
  var effectsEffectBlind = $.effects.define( "blind", "hide", function( options, done ) {
2940
3018
  var map = {
2941
3019
  up: [ "bottom", "top" ],
@@ -2976,7 +3054,7 @@ var effectsEffectBlind = $.effects.define( "blind", "hide", function( options, d
2976
3054
 
2977
3055
 
2978
3056
  /*!
2979
- * jQuery UI Effects Bounce 1.12.1
3057
+ * jQuery UI Effects Bounce 1.13.1
2980
3058
  * http://jqueryui.com
2981
3059
  *
2982
3060
  * Copyright jQuery Foundation and other contributors
@@ -2991,7 +3069,6 @@ var effectsEffectBlind = $.effects.define( "blind", "hide", function( options, d
2991
3069
  //>>demos: http://jqueryui.com/effect/
2992
3070
 
2993
3071
 
2994
-
2995
3072
  var effectsEffectBounce = $.effects.define( "bounce", function( options, done ) {
2996
3073
  var upAnim, downAnim, refValue,
2997
3074
  element = $( this ),
@@ -3072,7 +3149,7 @@ var effectsEffectBounce = $.effects.define( "bounce", function( options, done )
3072
3149
 
3073
3150
 
3074
3151
  /*!
3075
- * jQuery UI Effects Clip 1.12.1
3152
+ * jQuery UI Effects Clip 1.13.1
3076
3153
  * http://jqueryui.com
3077
3154
  *
3078
3155
  * Copyright jQuery Foundation and other contributors
@@ -3087,7 +3164,6 @@ var effectsEffectBounce = $.effects.define( "bounce", function( options, done )
3087
3164
  //>>demos: http://jqueryui.com/effect/
3088
3165
 
3089
3166
 
3090
-
3091
3167
  var effectsEffectClip = $.effects.define( "clip", "hide", function( options, done ) {
3092
3168
  var start,
3093
3169
  animate = {},
@@ -3123,7 +3199,7 @@ var effectsEffectClip = $.effects.define( "clip", "hide", function( options, don
3123
3199
 
3124
3200
 
3125
3201
  /*!
3126
- * jQuery UI Effects Drop 1.12.1
3202
+ * jQuery UI Effects Drop 1.13.1
3127
3203
  * http://jqueryui.com
3128
3204
  *
3129
3205
  * Copyright jQuery Foundation and other contributors
@@ -3138,7 +3214,6 @@ var effectsEffectClip = $.effects.define( "clip", "hide", function( options, don
3138
3214
  //>>demos: http://jqueryui.com/effect/
3139
3215
 
3140
3216
 
3141
-
3142
3217
  var effectsEffectDrop = $.effects.define( "drop", "hide", function( options, done ) {
3143
3218
 
3144
3219
  var distance,
@@ -3178,7 +3253,7 @@ var effectsEffectDrop = $.effects.define( "drop", "hide", function( options, don
3178
3253
 
3179
3254
 
3180
3255
  /*!
3181
- * jQuery UI Effects Explode 1.12.1
3256
+ * jQuery UI Effects Explode 1.13.1
3182
3257
  * http://jqueryui.com
3183
3258
  *
3184
3259
  * Copyright jQuery Foundation and other contributors
@@ -3188,14 +3263,13 @@ var effectsEffectDrop = $.effects.define( "drop", "hide", function( options, don
3188
3263
 
3189
3264
  //>>label: Explode Effect
3190
3265
  //>>group: Effects
3191
- // jscs:disable maximumLineLength
3266
+ /* eslint-disable max-len */
3192
3267
  //>>description: Explodes an element in all directions into n pieces. Implodes an element to its original wholeness.
3193
- // jscs:enable maximumLineLength
3268
+ /* eslint-enable max-len */
3194
3269
  //>>docs: http://api.jqueryui.com/explode-effect/
3195
3270
  //>>demos: http://jqueryui.com/effect/
3196
3271
 
3197
3272
 
3198
-
3199
3273
  var effectsEffectExplode = $.effects.define( "explode", "hide", function( options, done ) {
3200
3274
 
3201
3275
  var i, j, left, top, mx, my,
@@ -3275,7 +3349,7 @@ var effectsEffectExplode = $.effects.define( "explode", "hide", function( option
3275
3349
 
3276
3350
 
3277
3351
  /*!
3278
- * jQuery UI Effects Fade 1.12.1
3352
+ * jQuery UI Effects Fade 1.13.1
3279
3353
  * http://jqueryui.com
3280
3354
  *
3281
3355
  * Copyright jQuery Foundation and other contributors
@@ -3290,7 +3364,6 @@ var effectsEffectExplode = $.effects.define( "explode", "hide", function( option
3290
3364
  //>>demos: http://jqueryui.com/effect/
3291
3365
 
3292
3366
 
3293
-
3294
3367
  var effectsEffectFade = $.effects.define( "fade", "toggle", function( options, done ) {
3295
3368
  var show = options.mode === "show";
3296
3369
 
@@ -3308,7 +3381,7 @@ var effectsEffectFade = $.effects.define( "fade", "toggle", function( options, d
3308
3381
 
3309
3382
 
3310
3383
  /*!
3311
- * jQuery UI Effects Fold 1.12.1
3384
+ * jQuery UI Effects Fold 1.13.1
3312
3385
  * http://jqueryui.com
3313
3386
  *
3314
3387
  * Copyright jQuery Foundation and other contributors
@@ -3323,7 +3396,6 @@ var effectsEffectFade = $.effects.define( "fade", "toggle", function( options, d
3323
3396
  //>>demos: http://jqueryui.com/effect/
3324
3397
 
3325
3398
 
3326
-
3327
3399
  var effectsEffectFold = $.effects.define( "fold", "hide", function( options, done ) {
3328
3400
 
3329
3401
  // Create element
@@ -3383,7 +3455,7 @@ var effectsEffectFold = $.effects.define( "fold", "hide", function( options, don
3383
3455
 
3384
3456
 
3385
3457
  /*!
3386
- * jQuery UI Effects Highlight 1.12.1
3458
+ * jQuery UI Effects Highlight 1.13.1
3387
3459
  * http://jqueryui.com
3388
3460
  *
3389
3461
  * Copyright jQuery Foundation and other contributors
@@ -3398,7 +3470,6 @@ var effectsEffectFold = $.effects.define( "fold", "hide", function( options, don
3398
3470
  //>>demos: http://jqueryui.com/effect/
3399
3471
 
3400
3472
 
3401
-
3402
3473
  var effectsEffectHighlight = $.effects.define( "highlight", "show", function( options, done ) {
3403
3474
  var element = $( this ),
3404
3475
  animation = {
@@ -3426,7 +3497,7 @@ var effectsEffectHighlight = $.effects.define( "highlight", "show", function( op
3426
3497
 
3427
3498
 
3428
3499
  /*!
3429
- * jQuery UI Effects Size 1.12.1
3500
+ * jQuery UI Effects Size 1.13.1
3430
3501
  * http://jqueryui.com
3431
3502
  *
3432
3503
  * Copyright jQuery Foundation and other contributors
@@ -3441,7 +3512,6 @@ var effectsEffectHighlight = $.effects.define( "highlight", "show", function( op
3441
3512
  //>>demos: http://jqueryui.com/effect/
3442
3513
 
3443
3514
 
3444
-
3445
3515
  var effectsEffectSize = $.effects.define( "size", function( options, done ) {
3446
3516
 
3447
3517
  // Create element
@@ -3518,6 +3588,8 @@ var effectsEffectSize = $.effects.define( "size", function( options, done ) {
3518
3588
  to.top = ( original.outerHeight - to.outerHeight ) * baseline.y + pos.top;
3519
3589
  to.left = ( original.outerWidth - to.outerWidth ) * baseline.x + pos.left;
3520
3590
  }
3591
+ delete from.outerHeight;
3592
+ delete from.outerWidth;
3521
3593
  element.css( from );
3522
3594
 
3523
3595
  // Animate the children if desired
@@ -3603,7 +3675,7 @@ var effectsEffectSize = $.effects.define( "size", function( options, done ) {
3603
3675
 
3604
3676
 
3605
3677
  /*!
3606
- * jQuery UI Effects Scale 1.12.1
3678
+ * jQuery UI Effects Scale 1.13.1
3607
3679
  * http://jqueryui.com
3608
3680
  *
3609
3681
  * Copyright jQuery Foundation and other contributors
@@ -3618,7 +3690,6 @@ var effectsEffectSize = $.effects.define( "size", function( options, done ) {
3618
3690
  //>>demos: http://jqueryui.com/effect/
3619
3691
 
3620
3692
 
3621
-
3622
3693
  var effectsEffectScale = $.effects.define( "scale", function( options, done ) {
3623
3694
 
3624
3695
  // Create element
@@ -3644,7 +3715,7 @@ var effectsEffectScale = $.effects.define( "scale", function( options, done ) {
3644
3715
 
3645
3716
 
3646
3717
  /*!
3647
- * jQuery UI Effects Puff 1.12.1
3718
+ * jQuery UI Effects Puff 1.13.1
3648
3719
  * http://jqueryui.com
3649
3720
  *
3650
3721
  * Copyright jQuery Foundation and other contributors
@@ -3659,7 +3730,6 @@ var effectsEffectScale = $.effects.define( "scale", function( options, done ) {
3659
3730
  //>>demos: http://jqueryui.com/effect/
3660
3731
 
3661
3732
 
3662
-
3663
3733
  var effectsEffectPuff = $.effects.define( "puff", "hide", function( options, done ) {
3664
3734
  var newOptions = $.extend( true, {}, options, {
3665
3735
  fade: true,
@@ -3671,7 +3741,7 @@ var effectsEffectPuff = $.effects.define( "puff", "hide", function( options, don
3671
3741
 
3672
3742
 
3673
3743
  /*!
3674
- * jQuery UI Effects Pulsate 1.12.1
3744
+ * jQuery UI Effects Pulsate 1.13.1
3675
3745
  * http://jqueryui.com
3676
3746
  *
3677
3747
  * Copyright jQuery Foundation and other contributors
@@ -3686,7 +3756,6 @@ var effectsEffectPuff = $.effects.define( "puff", "hide", function( options, don
3686
3756
  //>>demos: http://jqueryui.com/effect/
3687
3757
 
3688
3758
 
3689
-
3690
3759
  var effectsEffectPulsate = $.effects.define( "pulsate", "show", function( options, done ) {
3691
3760
  var element = $( this ),
3692
3761
  mode = options.mode,
@@ -3721,7 +3790,7 @@ var effectsEffectPulsate = $.effects.define( "pulsate", "show", function( option
3721
3790
 
3722
3791
 
3723
3792
  /*!
3724
- * jQuery UI Effects Shake 1.12.1
3793
+ * jQuery UI Effects Shake 1.13.1
3725
3794
  * http://jqueryui.com
3726
3795
  *
3727
3796
  * Copyright jQuery Foundation and other contributors
@@ -3736,7 +3805,6 @@ var effectsEffectPulsate = $.effects.define( "pulsate", "show", function( option
3736
3805
  //>>demos: http://jqueryui.com/effect/
3737
3806
 
3738
3807
 
3739
-
3740
3808
  var effectsEffectShake = $.effects.define( "shake", function( options, done ) {
3741
3809
 
3742
3810
  var i = 1,
@@ -3781,7 +3849,7 @@ var effectsEffectShake = $.effects.define( "shake", function( options, done ) {
3781
3849
 
3782
3850
 
3783
3851
  /*!
3784
- * jQuery UI Effects Slide 1.12.1
3852
+ * jQuery UI Effects Slide 1.13.1
3785
3853
  * http://jqueryui.com
3786
3854
  *
3787
3855
  * Copyright jQuery Foundation and other contributors
@@ -3796,7 +3864,6 @@ var effectsEffectShake = $.effects.define( "shake", function( options, done ) {
3796
3864
  //>>demos: http://jqueryui.com/effect/
3797
3865
 
3798
3866
 
3799
-
3800
3867
  var effectsEffectSlide = $.effects.define( "slide", "show", function( options, done ) {
3801
3868
  var startClip, startRef,
3802
3869
  element = $( this ),
@@ -3843,7 +3910,7 @@ var effectsEffectSlide = $.effects.define( "slide", "show", function( options, d
3843
3910
 
3844
3911
 
3845
3912
  /*!
3846
- * jQuery UI Effects Transfer 1.12.1
3913
+ * jQuery UI Effects Transfer 1.13.1
3847
3914
  * http://jqueryui.com
3848
3915
  *
3849
3916
  * Copyright jQuery Foundation and other contributors
@@ -3858,7 +3925,6 @@ var effectsEffectSlide = $.effects.define( "slide", "show", function( options, d
3858
3925
  //>>demos: http://jqueryui.com/effect/
3859
3926
 
3860
3927
 
3861
-
3862
3928
  var effect;
3863
3929
  if ( $.uiBackCompat !== false ) {
3864
3930
  effect = $.effects.define( "transfer", function( options, done ) {
@@ -3869,7 +3935,7 @@ var effectsEffectTransfer = effect;
3869
3935
 
3870
3936
 
3871
3937
  /*!
3872
- * jQuery UI Focusable 1.12.1
3938
+ * jQuery UI Focusable 1.13.1
3873
3939
  * http://jqueryui.com
3874
3940
  *
3875
3941
  * Copyright jQuery Foundation and other contributors
@@ -3883,7 +3949,6 @@ var effectsEffectTransfer = effect;
3883
3949
  //>>docs: http://api.jqueryui.com/focusable-selector/
3884
3950
 
3885
3951
 
3886
-
3887
3952
  // Selectors
3888
3953
  $.ui.focusable = function( element, hasTabindex ) {
3889
3954
  var map, mapName, img, focusableIfVisible, fieldset,
@@ -3930,10 +3995,10 @@ function visible( element ) {
3930
3995
  element = element.parent();
3931
3996
  visibility = element.css( "visibility" );
3932
3997
  }
3933
- return visibility !== "hidden";
3998
+ return visibility === "visible";
3934
3999
  }
3935
4000
 
3936
- $.extend( $.expr[ ":" ], {
4001
+ $.extend( $.expr.pseudos, {
3937
4002
  focusable: function( element ) {
3938
4003
  return $.ui.focusable( element, $.attr( element, "tabindex" ) != null );
3939
4004
  }
@@ -3943,17 +4008,16 @@ var focusable = $.ui.focusable;
3943
4008
 
3944
4009
 
3945
4010
 
3946
-
3947
4011
  // Support: IE8 Only
3948
4012
  // IE8 does not support the form attribute and when it is supplied. It overwrites the form prop
3949
4013
  // with a string, so we need to find the proper form.
3950
- var form = $.fn.form = function() {
4014
+ var form = $.fn._form = function() {
3951
4015
  return typeof this[ 0 ].form === "string" ? this.closest( "form" ) : $( this[ 0 ].form );
3952
4016
  };
3953
4017
 
3954
4018
 
3955
4019
  /*!
3956
- * jQuery UI Form Reset Mixin 1.12.1
4020
+ * jQuery UI Form Reset Mixin 1.13.1
3957
4021
  * http://jqueryui.com
3958
4022
  *
3959
4023
  * Copyright jQuery Foundation and other contributors
@@ -3967,7 +4031,6 @@ var form = $.fn.form = function() {
3967
4031
  //>>docs: http://api.jqueryui.com/form-reset-mixin/
3968
4032
 
3969
4033
 
3970
-
3971
4034
  var formResetMixin = $.ui.formResetMixin = {
3972
4035
  _formResetHandler: function() {
3973
4036
  var form = $( this );
@@ -3982,7 +4045,7 @@ var formResetMixin = $.ui.formResetMixin = {
3982
4045
  },
3983
4046
 
3984
4047
  _bindFormResetHandler: function() {
3985
- this.form = this.element.form();
4048
+ this.form = this.element._form();
3986
4049
  if ( !this.form.length ) {
3987
4050
  return;
3988
4051
  }
@@ -4016,7 +4079,7 @@ var formResetMixin = $.ui.formResetMixin = {
4016
4079
 
4017
4080
 
4018
4081
  /*!
4019
- * jQuery UI Support for jQuery core 1.7.x 1.12.1
4082
+ * jQuery UI Support for jQuery core 1.8.x and newer 1.13.1
4020
4083
  * http://jqueryui.com
4021
4084
  *
4022
4085
  * Copyright jQuery Foundation and other contributors
@@ -4025,77 +4088,73 @@ var formResetMixin = $.ui.formResetMixin = {
4025
4088
  *
4026
4089
  */
4027
4090
 
4028
- //>>label: jQuery 1.7 Support
4091
+ //>>label: jQuery 1.8+ Support
4029
4092
  //>>group: Core
4030
- //>>description: Support version 1.7.x of jQuery core
4031
-
4032
-
4033
-
4034
- // Support: jQuery 1.7 only
4035
- // Not a great way to check versions, but since we only support 1.7+ and only
4036
- // need to detect <1.8, this is a simple check that should suffice. Checking
4037
- // for "1.7." would be a bit safer, but the version string is 1.7, not 1.7.0
4038
- // and we'll never reach 1.70.0 (if we do, we certainly won't be supporting
4039
- // 1.7 anymore). See #11197 for why we're not using feature detection.
4040
- if ( $.fn.jquery.substring( 0, 3 ) === "1.7" ) {
4041
-
4042
- // Setters for .innerWidth(), .innerHeight(), .outerWidth(), .outerHeight()
4043
- // Unlike jQuery Core 1.8+, these only support numeric values to set the
4044
- // dimensions in pixels
4045
- $.each( [ "Width", "Height" ], function( i, name ) {
4046
- var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ],
4047
- type = name.toLowerCase(),
4048
- orig = {
4049
- innerWidth: $.fn.innerWidth,
4050
- innerHeight: $.fn.innerHeight,
4051
- outerWidth: $.fn.outerWidth,
4052
- outerHeight: $.fn.outerHeight
4053
- };
4093
+ //>>description: Support version 1.8.x and newer of jQuery core
4054
4094
 
4055
- function reduce( elem, size, border, margin ) {
4056
- $.each( side, function() {
4057
- size -= parseFloat( $.css( elem, "padding" + this ) ) || 0;
4058
- if ( border ) {
4059
- size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0;
4060
- }
4061
- if ( margin ) {
4062
- size -= parseFloat( $.css( elem, "margin" + this ) ) || 0;
4063
- }
4064
- } );
4065
- return size;
4066
- }
4067
4095
 
4068
- $.fn[ "inner" + name ] = function( size ) {
4069
- if ( size === undefined ) {
4070
- return orig[ "inner" + name ].call( this );
4071
- }
4096
+ // Support: jQuery 1.9.x or older
4097
+ // $.expr[ ":" ] is deprecated.
4098
+ if ( !$.expr.pseudos ) {
4099
+ $.expr.pseudos = $.expr[ ":" ];
4100
+ }
4072
4101
 
4073
- return this.each( function() {
4074
- $( this ).css( type, reduce( this, size ) + "px" );
4075
- } );
4076
- };
4102
+ // Support: jQuery 1.11.x or older
4103
+ // $.unique has been renamed to $.uniqueSort
4104
+ if ( !$.uniqueSort ) {
4105
+ $.uniqueSort = $.unique;
4106
+ }
4107
+
4108
+ // Support: jQuery 2.2.x or older.
4109
+ // This method has been defined in jQuery 3.0.0.
4110
+ // Code from https://github.com/jquery/jquery/blob/e539bac79e666bba95bba86d690b4e609dca2286/src/selector/escapeSelector.js
4111
+ if ( !$.escapeSelector ) {
4112
+
4113
+ // CSS string/identifier serialization
4114
+ // https://drafts.csswg.org/cssom/#common-serializing-idioms
4115
+ var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;
4077
4116
 
4078
- $.fn[ "outer" + name ] = function( size, margin ) {
4079
- if ( typeof size !== "number" ) {
4080
- return orig[ "outer" + name ].call( this, size );
4117
+ var fcssescape = function( ch, asCodePoint ) {
4118
+ if ( asCodePoint ) {
4119
+
4120
+ // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
4121
+ if ( ch === "\0" ) {
4122
+ return "\uFFFD";
4081
4123
  }
4082
4124
 
4083
- return this.each( function() {
4084
- $( this ).css( type, reduce( this, size, true, margin ) + "px" );
4085
- } );
4086
- };
4087
- } );
4125
+ // Control characters and (dependent upon position) numbers get escaped as code points
4126
+ return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
4127
+ }
4088
4128
 
4089
- $.fn.addBack = function( selector ) {
4090
- return this.add( selector == null ?
4091
- this.prevObject : this.prevObject.filter( selector )
4092
- );
4129
+ // Other potentially-special ASCII characters get backslash-escaped
4130
+ return "\\" + ch;
4131
+ };
4132
+
4133
+ $.escapeSelector = function( sel ) {
4134
+ return ( sel + "" ).replace( rcssescape, fcssescape );
4093
4135
  };
4094
4136
  }
4095
4137
 
4138
+ // Support: jQuery 3.4.x or older
4139
+ // These methods have been defined in jQuery 3.5.0.
4140
+ if ( !$.fn.even || !$.fn.odd ) {
4141
+ $.fn.extend( {
4142
+ even: function() {
4143
+ return this.filter( function( i ) {
4144
+ return i % 2 === 0;
4145
+ } );
4146
+ },
4147
+ odd: function() {
4148
+ return this.filter( function( i ) {
4149
+ return i % 2 === 1;
4150
+ } );
4151
+ }
4152
+ } );
4153
+ }
4154
+
4096
4155
  ;
4097
4156
  /*!
4098
- * jQuery UI Keycode 1.12.1
4157
+ * jQuery UI Keycode 1.13.1
4099
4158
  * http://jqueryui.com
4100
4159
  *
4101
4160
  * Copyright jQuery Foundation and other contributors
@@ -4129,19 +4188,8 @@ var keycode = $.ui.keyCode = {
4129
4188
  };
4130
4189
 
4131
4190
 
4132
-
4133
-
4134
- // Internal use only
4135
- var escapeSelector = $.ui.escapeSelector = ( function() {
4136
- var selectorEscape = /([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;
4137
- return function( selector ) {
4138
- return selector.replace( selectorEscape, "\\$1" );
4139
- };
4140
- } )();
4141
-
4142
-
4143
4191
  /*!
4144
- * jQuery UI Labels 1.12.1
4192
+ * jQuery UI Labels 1.13.1
4145
4193
  * http://jqueryui.com
4146
4194
  *
4147
4195
  * Copyright jQuery Foundation and other contributors
@@ -4155,10 +4203,13 @@ var escapeSelector = $.ui.escapeSelector = ( function() {
4155
4203
  //>>docs: http://api.jqueryui.com/labels/
4156
4204
 
4157
4205
 
4158
-
4159
4206
  var labels = $.fn.labels = function() {
4160
4207
  var ancestor, selector, id, labels, ancestors;
4161
4208
 
4209
+ if ( !this.length ) {
4210
+ return this.pushStack( [] );
4211
+ }
4212
+
4162
4213
  // Check control.labels first
4163
4214
  if ( this[ 0 ].labels && this[ 0 ].labels.length ) {
4164
4215
  return this.pushStack( this[ 0 ].labels );
@@ -4181,7 +4232,7 @@ var labels = $.fn.labels = function() {
4181
4232
  ancestors = ancestor.add( ancestor.length ? ancestor.siblings() : this.siblings() );
4182
4233
 
4183
4234
  // Create a selector for the label based on the id
4184
- selector = "label[for='" + $.ui.escapeSelector( id ) + "']";
4235
+ selector = "label[for='" + $.escapeSelector( id ) + "']";
4185
4236
 
4186
4237
  labels = labels.add( ancestors.find( selector ).addBack( selector ) );
4187
4238
 
@@ -4193,7 +4244,7 @@ var labels = $.fn.labels = function() {
4193
4244
 
4194
4245
 
4195
4246
  /*!
4196
- * jQuery UI Scroll Parent 1.12.1
4247
+ * jQuery UI Scroll Parent 1.13.1
4197
4248
  * http://jqueryui.com
4198
4249
  *
4199
4250
  * Copyright jQuery Foundation and other contributors
@@ -4207,7 +4258,6 @@ var labels = $.fn.labels = function() {
4207
4258
  //>>docs: http://api.jqueryui.com/scrollParent/
4208
4259
 
4209
4260
 
4210
-
4211
4261
  var scrollParent = $.fn.scrollParent = function( includeHidden ) {
4212
4262
  var position = this.css( "position" ),
4213
4263
  excludeStaticParent = position === "absolute",
@@ -4228,7 +4278,7 @@ var scrollParent = $.fn.scrollParent = function( includeHidden ) {
4228
4278
 
4229
4279
 
4230
4280
  /*!
4231
- * jQuery UI Tabbable 1.12.1
4281
+ * jQuery UI Tabbable 1.13.1
4232
4282
  * http://jqueryui.com
4233
4283
  *
4234
4284
  * Copyright jQuery Foundation and other contributors
@@ -4242,8 +4292,7 @@ var scrollParent = $.fn.scrollParent = function( includeHidden ) {
4242
4292
  //>>docs: http://api.jqueryui.com/tabbable-selector/
4243
4293
 
4244
4294
 
4245
-
4246
- var tabbable = $.extend( $.expr[ ":" ], {
4295
+ var tabbable = $.extend( $.expr.pseudos, {
4247
4296
  tabbable: function( element ) {
4248
4297
  var tabIndex = $.attr( element, "tabindex" ),
4249
4298
  hasTabindex = tabIndex != null;
@@ -4253,7 +4302,7 @@ var tabbable = $.extend( $.expr[ ":" ], {
4253
4302
 
4254
4303
 
4255
4304
  /*!
4256
- * jQuery UI Unique ID 1.12.1
4305
+ * jQuery UI Unique ID 1.13.1
4257
4306
  * http://jqueryui.com
4258
4307
  *
4259
4308
  * Copyright jQuery Foundation and other contributors
@@ -4267,7 +4316,6 @@ var tabbable = $.extend( $.expr[ ":" ], {
4267
4316
  //>>docs: http://api.jqueryui.com/uniqueId/
4268
4317
 
4269
4318
 
4270
-
4271
4319
  var uniqueId = $.fn.extend( {
4272
4320
  uniqueId: ( function() {
4273
4321
  var uuid = 0;
@@ -4292,7 +4340,7 @@ var uniqueId = $.fn.extend( {
4292
4340
 
4293
4341
 
4294
4342
  /*!
4295
- * jQuery UI Accordion 1.12.1
4343
+ * jQuery UI Accordion 1.13.1
4296
4344
  * http://jqueryui.com
4297
4345
  *
4298
4346
  * Copyright jQuery Foundation and other contributors
@@ -4302,9 +4350,9 @@ var uniqueId = $.fn.extend( {
4302
4350
 
4303
4351
  //>>label: Accordion
4304
4352
  //>>group: Widgets
4305
- // jscs:disable maximumLineLength
4353
+ /* eslint-disable max-len */
4306
4354
  //>>description: Displays collapsible content panels for presenting information in a limited amount of space.
4307
- // jscs:enable maximumLineLength
4355
+ /* eslint-enable max-len */
4308
4356
  //>>docs: http://api.jqueryui.com/accordion/
4309
4357
  //>>demos: http://jqueryui.com/accordion/
4310
4358
  //>>css.structure: ../../themes/base/core.css
@@ -4312,9 +4360,8 @@ var uniqueId = $.fn.extend( {
4312
4360
  //>>css.theme: ../../themes/base/theme.css
4313
4361
 
4314
4362
 
4315
-
4316
4363
  var widgetsAccordion = $.widget( "ui.accordion", {
4317
- version: "1.12.1",
4364
+ version: "1.13.1",
4318
4365
  options: {
4319
4366
  active: 0,
4320
4367
  animate: {},
@@ -4325,7 +4372,9 @@ var widgetsAccordion = $.widget( "ui.accordion", {
4325
4372
  },
4326
4373
  collapsible: false,
4327
4374
  event: "click",
4328
- header: "> li > :first-child, > :not(li):even",
4375
+ header: function( elem ) {
4376
+ return elem.find( "> li > :first-child" ).add( elem.find( "> :not(li)" ).even() );
4377
+ },
4329
4378
  heightStyle: "auto",
4330
4379
  icons: {
4331
4380
  activeHeader: "ui-icon-triangle-1-s",
@@ -4556,7 +4605,11 @@ var widgetsAccordion = $.widget( "ui.accordion", {
4556
4605
  var prevHeaders = this.headers,
4557
4606
  prevPanels = this.panels;
4558
4607
 
4559
- this.headers = this.element.find( this.options.header );
4608
+ if ( typeof this.options.header === "function" ) {
4609
+ this.headers = this.options.header( this.element );
4610
+ } else {
4611
+ this.headers = this.element.find( this.options.header );
4612
+ }
4560
4613
  this._addClass( this.headers, "ui-accordion-header ui-accordion-header-collapsed",
4561
4614
  "ui-state-default" );
4562
4615
 
@@ -4919,7 +4972,7 @@ var safeActiveElement = $.ui.safeActiveElement = function( document ) {
4919
4972
 
4920
4973
 
4921
4974
  /*!
4922
- * jQuery UI Menu 1.12.1
4975
+ * jQuery UI Menu 1.13.1
4923
4976
  * http://jqueryui.com
4924
4977
  *
4925
4978
  * Copyright jQuery Foundation and other contributors
@@ -4937,9 +4990,8 @@ var safeActiveElement = $.ui.safeActiveElement = function( document ) {
4937
4990
  //>>css.theme: ../../themes/base/theme.css
4938
4991
 
4939
4992
 
4940
-
4941
4993
  var widgetsMenu = $.widget( "ui.menu", {
4942
- version: "1.12.1",
4994
+ version: "1.13.1",
4943
4995
  defaultElement: "<ul>",
4944
4996
  delay: 300,
4945
4997
  options: {
@@ -4966,6 +5018,7 @@ var widgetsMenu = $.widget( "ui.menu", {
4966
5018
  // Flag used to prevent firing of the click handler
4967
5019
  // as the event bubbles up through nested menus
4968
5020
  this.mouseHandled = false;
5021
+ this.lastMousePosition = { x: null, y: null };
4969
5022
  this.element
4970
5023
  .uniqueId()
4971
5024
  .attr( {
@@ -4980,6 +5033,8 @@ var widgetsMenu = $.widget( "ui.menu", {
4980
5033
  // them (focus should always stay on UL during navigation).
4981
5034
  "mousedown .ui-menu-item": function( event ) {
4982
5035
  event.preventDefault();
5036
+
5037
+ this._activateItem( event );
4983
5038
  },
4984
5039
  "click .ui-menu-item": function( event ) {
4985
5040
  var target = $( event.target );
@@ -5009,36 +5064,15 @@ var widgetsMenu = $.widget( "ui.menu", {
5009
5064
  }
5010
5065
  }
5011
5066
  },
5012
- "mouseenter .ui-menu-item": function( event ) {
5013
-
5014
- // Ignore mouse events while typeahead is active, see #10458.
5015
- // Prevents focusing the wrong item when typeahead causes a scroll while the mouse
5016
- // is over an item in the menu
5017
- if ( this.previousFilter ) {
5018
- return;
5019
- }
5020
-
5021
- var actualTarget = $( event.target ).closest( ".ui-menu-item" ),
5022
- target = $( event.currentTarget );
5023
-
5024
- // Ignore bubbled events on parent items, see #11641
5025
- if ( actualTarget[ 0 ] !== target[ 0 ] ) {
5026
- return;
5027
- }
5028
-
5029
- // Remove ui-state-active class from siblings of the newly focused menu item
5030
- // to avoid a jump caused by adjacent elements both having a class with a border
5031
- this._removeClass( target.siblings().children( ".ui-state-active" ),
5032
- null, "ui-state-active" );
5033
- this.focus( event, target );
5034
- },
5067
+ "mouseenter .ui-menu-item": "_activateItem",
5068
+ "mousemove .ui-menu-item": "_activateItem",
5035
5069
  mouseleave: "collapseAll",
5036
5070
  "mouseleave .ui-menu": "collapseAll",
5037
5071
  focus: function( event, keepActiveItem ) {
5038
5072
 
5039
5073
  // If there's already an active item, keep it active
5040
5074
  // If not, activate the first item
5041
- var item = this.active || this.element.find( this.options.items ).eq( 0 );
5075
+ var item = this.active || this._menuItems().first();
5042
5076
 
5043
5077
  if ( !keepActiveItem ) {
5044
5078
  this.focus( event, item );
@@ -5064,7 +5098,7 @@ var widgetsMenu = $.widget( "ui.menu", {
5064
5098
  this._on( this.document, {
5065
5099
  click: function( event ) {
5066
5100
  if ( this._closeOnDocumentClick( event ) ) {
5067
- this.collapseAll( event );
5101
+ this.collapseAll( event, true );
5068
5102
  }
5069
5103
 
5070
5104
  // Reset the mouseHandled flag
@@ -5073,6 +5107,46 @@ var widgetsMenu = $.widget( "ui.menu", {
5073
5107
  } );
5074
5108
  },
5075
5109
 
5110
+ _activateItem: function( event ) {
5111
+
5112
+ // Ignore mouse events while typeahead is active, see #10458.
5113
+ // Prevents focusing the wrong item when typeahead causes a scroll while the mouse
5114
+ // is over an item in the menu
5115
+ if ( this.previousFilter ) {
5116
+ return;
5117
+ }
5118
+
5119
+ // If the mouse didn't actually move, but the page was scrolled, ignore the event (#9356)
5120
+ if ( event.clientX === this.lastMousePosition.x &&
5121
+ event.clientY === this.lastMousePosition.y ) {
5122
+ return;
5123
+ }
5124
+
5125
+ this.lastMousePosition = {
5126
+ x: event.clientX,
5127
+ y: event.clientY
5128
+ };
5129
+
5130
+ var actualTarget = $( event.target ).closest( ".ui-menu-item" ),
5131
+ target = $( event.currentTarget );
5132
+
5133
+ // Ignore bubbled events on parent items, see #11641
5134
+ if ( actualTarget[ 0 ] !== target[ 0 ] ) {
5135
+ return;
5136
+ }
5137
+
5138
+ // If the item is already active, there's nothing to do
5139
+ if ( target.is( ".ui-state-active" ) ) {
5140
+ return;
5141
+ }
5142
+
5143
+ // Remove ui-state-active class from siblings of the newly focused menu item
5144
+ // to avoid a jump caused by adjacent elements both having a class with a border
5145
+ this._removeClass( target.siblings().children( ".ui-state-active" ),
5146
+ null, "ui-state-active" );
5147
+ this.focus( event, target );
5148
+ },
5149
+
5076
5150
  _destroy: function() {
5077
5151
  var items = this.element.find( ".ui-menu-item" )
5078
5152
  .removeAttr( "role aria-disabled" ),
@@ -5404,7 +5478,7 @@ var widgetsMenu = $.widget( "ui.menu", {
5404
5478
  this._removeClass( currentMenu.find( ".ui-state-active" ), null, "ui-state-active" );
5405
5479
 
5406
5480
  this.activeMenu = currentMenu;
5407
- }, this.delay );
5481
+ }, all ? 0 : this.delay );
5408
5482
  },
5409
5483
 
5410
5484
  // With no arguments, closes the currently active menu - if nothing is active
@@ -5440,11 +5514,7 @@ var widgetsMenu = $.widget( "ui.menu", {
5440
5514
  },
5441
5515
 
5442
5516
  expand: function( event ) {
5443
- var newItem = this.active &&
5444
- this.active
5445
- .children( ".ui-menu " )
5446
- .find( this.options.items )
5447
- .first();
5517
+ var newItem = this.active && this._menuItems( this.active.children( ".ui-menu" ) ).first();
5448
5518
 
5449
5519
  if ( newItem && newItem.length ) {
5450
5520
  this._open( newItem.parent() );
@@ -5472,21 +5542,27 @@ var widgetsMenu = $.widget( "ui.menu", {
5472
5542
  return this.active && !this.active.nextAll( ".ui-menu-item" ).length;
5473
5543
  },
5474
5544
 
5545
+ _menuItems: function( menu ) {
5546
+ return ( menu || this.element )
5547
+ .find( this.options.items )
5548
+ .filter( ".ui-menu-item" );
5549
+ },
5550
+
5475
5551
  _move: function( direction, filter, event ) {
5476
5552
  var next;
5477
5553
  if ( this.active ) {
5478
5554
  if ( direction === "first" || direction === "last" ) {
5479
5555
  next = this.active
5480
5556
  [ direction === "first" ? "prevAll" : "nextAll" ]( ".ui-menu-item" )
5481
- .eq( -1 );
5557
+ .last();
5482
5558
  } else {
5483
5559
  next = this.active
5484
5560
  [ direction + "All" ]( ".ui-menu-item" )
5485
- .eq( 0 );
5561
+ .first();
5486
5562
  }
5487
5563
  }
5488
5564
  if ( !next || !next.length || !this.active ) {
5489
- next = this.activeMenu.find( this.options.items )[ filter ]();
5565
+ next = this._menuItems( this.activeMenu )[ filter ]();
5490
5566
  }
5491
5567
 
5492
5568
  this.focus( event, next );
@@ -5504,7 +5580,13 @@ var widgetsMenu = $.widget( "ui.menu", {
5504
5580
  }
5505
5581
  if ( this._hasScroll() ) {
5506
5582
  base = this.active.offset().top;
5507
- height = this.element.height();
5583
+ height = this.element.innerHeight();
5584
+
5585
+ // jQuery 3.2 doesn't include scrollbars in innerHeight, add it back.
5586
+ if ( $.fn.jquery.indexOf( "3.2." ) === 0 ) {
5587
+ height += this.element[ 0 ].offsetHeight - this.element.outerHeight();
5588
+ }
5589
+
5508
5590
  this.active.nextAll( ".ui-menu-item" ).each( function() {
5509
5591
  item = $( this );
5510
5592
  return item.offset().top - base - height < 0;
@@ -5512,7 +5594,7 @@ var widgetsMenu = $.widget( "ui.menu", {
5512
5594
 
5513
5595
  this.focus( event, item );
5514
5596
  } else {
5515
- this.focus( event, this.activeMenu.find( this.options.items )
5597
+ this.focus( event, this._menuItems( this.activeMenu )
5516
5598
  [ !this.active ? "first" : "last" ]() );
5517
5599
  }
5518
5600
  },
@@ -5528,7 +5610,13 @@ var widgetsMenu = $.widget( "ui.menu", {
5528
5610
  }
5529
5611
  if ( this._hasScroll() ) {
5530
5612
  base = this.active.offset().top;
5531
- height = this.element.height();
5613
+ height = this.element.innerHeight();
5614
+
5615
+ // jQuery 3.2 doesn't include scrollbars in innerHeight, add it back.
5616
+ if ( $.fn.jquery.indexOf( "3.2." ) === 0 ) {
5617
+ height += this.element[ 0 ].offsetHeight - this.element.outerHeight();
5618
+ }
5619
+
5532
5620
  this.active.prevAll( ".ui-menu-item" ).each( function() {
5533
5621
  item = $( this );
5534
5622
  return item.offset().top - base + height > 0;
@@ -5536,7 +5624,7 @@ var widgetsMenu = $.widget( "ui.menu", {
5536
5624
 
5537
5625
  this.focus( event, item );
5538
5626
  } else {
5539
- this.focus( event, this.activeMenu.find( this.options.items ).first() );
5627
+ this.focus( event, this._menuItems( this.activeMenu ).first() );
5540
5628
  }
5541
5629
  },
5542
5630
 
@@ -5567,14 +5655,15 @@ var widgetsMenu = $.widget( "ui.menu", {
5567
5655
  .filter( ".ui-menu-item" )
5568
5656
  .filter( function() {
5569
5657
  return regex.test(
5570
- $.trim( $( this ).children( ".ui-menu-item-wrapper" ).text() ) );
5658
+ String.prototype.trim.call(
5659
+ $( this ).children( ".ui-menu-item-wrapper" ).text() ) );
5571
5660
  } );
5572
5661
  }
5573
5662
  } );
5574
5663
 
5575
5664
 
5576
5665
  /*!
5577
- * jQuery UI Autocomplete 1.12.1
5666
+ * jQuery UI Autocomplete 1.13.1
5578
5667
  * http://jqueryui.com
5579
5668
  *
5580
5669
  * Copyright jQuery Foundation and other contributors
@@ -5592,9 +5681,8 @@ var widgetsMenu = $.widget( "ui.menu", {
5592
5681
  //>>css.theme: ../../themes/base/theme.css
5593
5682
 
5594
5683
 
5595
-
5596
5684
  $.widget( "ui.autocomplete", {
5597
- version: "1.12.1",
5685
+ version: "1.13.1",
5598
5686
  defaultElement: "<input>",
5599
5687
  options: {
5600
5688
  appendTo: null,
@@ -5620,6 +5708,7 @@ $.widget( "ui.autocomplete", {
5620
5708
 
5621
5709
  requestIndex: 0,
5622
5710
  pending: 0,
5711
+ liveRegionTimer: null,
5623
5712
 
5624
5713
  _create: function() {
5625
5714
 
@@ -5757,11 +5846,6 @@ $.widget( "ui.autocomplete", {
5757
5846
  this.previous = this._value();
5758
5847
  },
5759
5848
  blur: function( event ) {
5760
- if ( this.cancelBlur ) {
5761
- delete this.cancelBlur;
5762
- return;
5763
- }
5764
-
5765
5849
  clearTimeout( this.searching );
5766
5850
  this.close( event );
5767
5851
  this._change( event );
@@ -5777,31 +5861,24 @@ $.widget( "ui.autocomplete", {
5777
5861
  role: null
5778
5862
  } )
5779
5863
  .hide()
5864
+
5865
+ // Support: IE 11 only, Edge <= 14
5866
+ // For other browsers, we preventDefault() on the mousedown event
5867
+ // to keep the dropdown from taking focus from the input. This doesn't
5868
+ // work for IE/Edge, causing problems with selection and scrolling (#9638)
5869
+ // Happily, IE and Edge support an "unselectable" attribute that
5870
+ // prevents an element from receiving focus, exactly what we want here.
5871
+ .attr( {
5872
+ "unselectable": "on"
5873
+ } )
5780
5874
  .menu( "instance" );
5781
5875
 
5782
5876
  this._addClass( this.menu.element, "ui-autocomplete", "ui-front" );
5783
5877
  this._on( this.menu.element, {
5784
5878
  mousedown: function( event ) {
5785
5879
 
5786
- // prevent moving focus out of the text field
5880
+ // Prevent moving focus out of the text field
5787
5881
  event.preventDefault();
5788
-
5789
- // IE doesn't prevent moving focus even with event.preventDefault()
5790
- // so we set a flag to know when we should ignore the blur event
5791
- this.cancelBlur = true;
5792
- this._delay( function() {
5793
- delete this.cancelBlur;
5794
-
5795
- // Support: IE 8 only
5796
- // Right clicking a menu item or selecting text from the menu items will
5797
- // result in focus moving out of the input. However, we've already received
5798
- // and ignored the blur event because of the cancelBlur flag set above. So
5799
- // we restore focus to ensure that the menu closes properly based on the user's
5800
- // next actions.
5801
- if ( this.element[ 0 ] !== $.ui.safeActiveElement( this.document[ 0 ] ) ) {
5802
- this.element.trigger( "focus" );
5803
- }
5804
- } );
5805
5882
  },
5806
5883
  menufocus: function( event, ui ) {
5807
5884
  var label, item;
@@ -5832,9 +5909,11 @@ $.widget( "ui.autocomplete", {
5832
5909
 
5833
5910
  // Announce the value in the liveRegion
5834
5911
  label = ui.item.attr( "aria-label" ) || item.value;
5835
- if ( label && $.trim( label ).length ) {
5836
- this.liveRegion.children().hide();
5837
- $( "<div>" ).text( label ).appendTo( this.liveRegion );
5912
+ if ( label && String.prototype.trim.call( label ).length ) {
5913
+ clearTimeout( this.liveRegionTimer );
5914
+ this.liveRegionTimer = this._delay( function() {
5915
+ this.liveRegion.html( $( "<div>" ).text( label ) );
5916
+ }, 100 );
5838
5917
  }
5839
5918
  },
5840
5919
  menuselect: function( event, ui ) {
@@ -5944,7 +6023,7 @@ $.widget( "ui.autocomplete", {
5944
6023
  _initSource: function() {
5945
6024
  var array, url,
5946
6025
  that = this;
5947
- if ( $.isArray( this.options.source ) ) {
6026
+ if ( Array.isArray( this.options.source ) ) {
5948
6027
  array = this.options.source;
5949
6028
  this.source = function( request, response ) {
5950
6029
  response( $.ui.autocomplete.filter( array, request.term ) );
@@ -6016,7 +6095,7 @@ $.widget( "ui.autocomplete", {
6016
6095
  _response: function() {
6017
6096
  var index = ++this.requestIndex;
6018
6097
 
6019
- return $.proxy( function( content ) {
6098
+ return function( content ) {
6020
6099
  if ( index === this.requestIndex ) {
6021
6100
  this.__response( content );
6022
6101
  }
@@ -6025,7 +6104,7 @@ $.widget( "ui.autocomplete", {
6025
6104
  if ( !this.pending ) {
6026
6105
  this._removeClass( "ui-autocomplete-loading" );
6027
6106
  }
6028
- }, this );
6107
+ }.bind( this );
6029
6108
  },
6030
6109
 
6031
6110
  __response: function( content ) {
@@ -6185,7 +6264,7 @@ $.widget( "ui.autocomplete", {
6185
6264
  var editable = element.prop( "contentEditable" );
6186
6265
 
6187
6266
  if ( editable === "inherit" ) {
6188
- return this._isContentEditable( element.parent() );
6267
+ return this._isContentEditable( element.parent() );
6189
6268
  }
6190
6269
 
6191
6270
  return editable === "true";
@@ -6229,8 +6308,10 @@ $.widget( "ui.autocomplete", $.ui.autocomplete, {
6229
6308
  } else {
6230
6309
  message = this.options.messages.noResults;
6231
6310
  }
6232
- this.liveRegion.children().hide();
6233
- $( "<div>" ).text( message ).appendTo( this.liveRegion );
6311
+ clearTimeout( this.liveRegionTimer );
6312
+ this.liveRegionTimer = this._delay( function() {
6313
+ this.liveRegion.html( $( "<div>" ).text( message ) );
6314
+ }, 100 );
6234
6315
  }
6235
6316
  } );
6236
6317
 
@@ -6238,7 +6319,7 @@ var widgetsAutocomplete = $.ui.autocomplete;
6238
6319
 
6239
6320
 
6240
6321
  /*!
6241
- * jQuery UI Controlgroup 1.12.1
6322
+ * jQuery UI Controlgroup 1.13.1
6242
6323
  * http://jqueryui.com
6243
6324
  *
6244
6325
  * Copyright jQuery Foundation and other contributors
@@ -6259,7 +6340,7 @@ var widgetsAutocomplete = $.ui.autocomplete;
6259
6340
  var controlgroupCornerRegex = /ui-corner-([a-z]){2,6}/g;
6260
6341
 
6261
6342
  var widgetsControlgroup = $.widget( "ui.controlgroup", {
6262
- version: "1.12.1",
6343
+ version: "1.13.1",
6263
6344
  defaultElement: "<div>",
6264
6345
  options: {
6265
6346
  direction: "horizontal",
@@ -6376,7 +6457,7 @@ var widgetsControlgroup = $.widget( "ui.controlgroup", {
6376
6457
  } );
6377
6458
  } );
6378
6459
 
6379
- this.childWidgets = $( $.unique( childWidgets ) );
6460
+ this.childWidgets = $( $.uniqueSort( childWidgets ) );
6380
6461
  this._addClass( this.childWidgets, "ui-controlgroup-item" );
6381
6462
  },
6382
6463
 
@@ -6460,7 +6541,7 @@ var widgetsControlgroup = $.widget( "ui.controlgroup", {
6460
6541
  var result = {};
6461
6542
  $.each( classes, function( key ) {
6462
6543
  var current = instance.options.classes[ key ] || "";
6463
- current = $.trim( current.replace( controlgroupCornerRegex, "" ) );
6544
+ current = String.prototype.trim.call( current.replace( controlgroupCornerRegex, "" ) );
6464
6545
  result[ key ] = ( current + " " + classes[ key ] ).replace( /\s+/g, " " );
6465
6546
  } );
6466
6547
  return result;
@@ -6523,7 +6604,7 @@ var widgetsControlgroup = $.widget( "ui.controlgroup", {
6523
6604
  } );
6524
6605
 
6525
6606
  /*!
6526
- * jQuery UI Checkboxradio 1.12.1
6607
+ * jQuery UI Checkboxradio 1.13.1
6527
6608
  * http://jqueryui.com
6528
6609
  *
6529
6610
  * Copyright jQuery Foundation and other contributors
@@ -6542,9 +6623,8 @@ var widgetsControlgroup = $.widget( "ui.controlgroup", {
6542
6623
  //>>css.theme: ../../themes/base/theme.css
6543
6624
 
6544
6625
 
6545
-
6546
6626
  $.widget( "ui.checkboxradio", [ $.ui.formResetMixin, {
6547
- version: "1.12.1",
6627
+ version: "1.13.1",
6548
6628
  options: {
6549
6629
  disabled: null,
6550
6630
  label: null,
@@ -6623,9 +6703,6 @@ $.widget( "ui.checkboxradio", [ $.ui.formResetMixin, {
6623
6703
 
6624
6704
  if ( checked ) {
6625
6705
  this._addClass( this.label, "ui-checkboxradio-checked", "ui-state-active" );
6626
- if ( this.icon ) {
6627
- this._addClass( this.icon, null, "ui-state-hover" );
6628
- }
6629
6706
  }
6630
6707
 
6631
6708
  this._on( {
@@ -6660,7 +6737,7 @@ $.widget( "ui.checkboxradio", [ $.ui.formResetMixin, {
6660
6737
  _getRadioGroup: function() {
6661
6738
  var group;
6662
6739
  var name = this.element[ 0 ].name;
6663
- var nameSelector = "input[name='" + $.ui.escapeSelector( name ) + "']";
6740
+ var nameSelector = "input[name='" + $.escapeSelector( name ) + "']";
6664
6741
 
6665
6742
  if ( !name ) {
6666
6743
  return $( [] );
@@ -6672,7 +6749,7 @@ $.widget( "ui.checkboxradio", [ $.ui.formResetMixin, {
6672
6749
 
6673
6750
  // Not inside a form, check all inputs that also are not inside a form
6674
6751
  group = $( nameSelector ).filter( function() {
6675
- return $( this ).form().length === 0;
6752
+ return $( this )._form().length === 0;
6676
6753
  } );
6677
6754
  }
6678
6755
 
@@ -6793,7 +6870,7 @@ var widgetsCheckboxradio = $.ui.checkboxradio;
6793
6870
 
6794
6871
 
6795
6872
  /*!
6796
- * jQuery UI Button 1.12.1
6873
+ * jQuery UI Button 1.13.1
6797
6874
  * http://jqueryui.com
6798
6875
  *
6799
6876
  * Copyright jQuery Foundation and other contributors
@@ -6811,9 +6888,8 @@ var widgetsCheckboxradio = $.ui.checkboxradio;
6811
6888
  //>>css.theme: ../../themes/base/theme.css
6812
6889
 
6813
6890
 
6814
-
6815
6891
  $.widget( "ui.button", {
6816
- version: "1.12.1",
6892
+ version: "1.13.1",
6817
6893
  defaultElement: "<button>",
6818
6894
  options: {
6819
6895
  classes: {
@@ -7037,7 +7113,7 @@ $.widget( "ui.button", {
7037
7113
  this._toggleClass( null, "ui-state-disabled", value );
7038
7114
  this.element[ 0 ].disabled = value;
7039
7115
  if ( value ) {
7040
- this.element.blur();
7116
+ this.element.trigger( "blur" );
7041
7117
  }
7042
7118
  }
7043
7119
  },
@@ -7116,22 +7192,82 @@ if ( $.uiBackCompat !== false ) {
7116
7192
  } );
7117
7193
 
7118
7194
  $.fn.button = ( function( orig ) {
7119
- return function() {
7120
- if ( !this.length || ( this.length && this[ 0 ].tagName !== "INPUT" ) ||
7121
- ( this.length && this[ 0 ].tagName === "INPUT" && (
7122
- this.attr( "type" ) !== "checkbox" && this.attr( "type" ) !== "radio"
7123
- ) ) ) {
7124
- return orig.apply( this, arguments );
7125
- }
7126
- if ( !$.ui.checkboxradio ) {
7127
- $.error( "Checkboxradio widget missing" );
7128
- }
7129
- if ( arguments.length === 0 ) {
7130
- return this.checkboxradio( {
7131
- "icon": false
7195
+ return function( options ) {
7196
+ var isMethodCall = typeof options === "string";
7197
+ var args = Array.prototype.slice.call( arguments, 1 );
7198
+ var returnValue = this;
7199
+
7200
+ if ( isMethodCall ) {
7201
+
7202
+ // If this is an empty collection, we need to have the instance method
7203
+ // return undefined instead of the jQuery instance
7204
+ if ( !this.length && options === "instance" ) {
7205
+ returnValue = undefined;
7206
+ } else {
7207
+ this.each( function() {
7208
+ var methodValue;
7209
+ var type = $( this ).attr( "type" );
7210
+ var name = type !== "checkbox" && type !== "radio" ?
7211
+ "button" :
7212
+ "checkboxradio";
7213
+ var instance = $.data( this, "ui-" + name );
7214
+
7215
+ if ( options === "instance" ) {
7216
+ returnValue = instance;
7217
+ return false;
7218
+ }
7219
+
7220
+ if ( !instance ) {
7221
+ return $.error( "cannot call methods on button" +
7222
+ " prior to initialization; " +
7223
+ "attempted to call method '" + options + "'" );
7224
+ }
7225
+
7226
+ if ( typeof instance[ options ] !== "function" ||
7227
+ options.charAt( 0 ) === "_" ) {
7228
+ return $.error( "no such method '" + options + "' for button" +
7229
+ " widget instance" );
7230
+ }
7231
+
7232
+ methodValue = instance[ options ].apply( instance, args );
7233
+
7234
+ if ( methodValue !== instance && methodValue !== undefined ) {
7235
+ returnValue = methodValue && methodValue.jquery ?
7236
+ returnValue.pushStack( methodValue.get() ) :
7237
+ methodValue;
7238
+ return false;
7239
+ }
7240
+ } );
7241
+ }
7242
+ } else {
7243
+
7244
+ // Allow multiple hashes to be passed on init
7245
+ if ( args.length ) {
7246
+ options = $.widget.extend.apply( null, [ options ].concat( args ) );
7247
+ }
7248
+
7249
+ this.each( function() {
7250
+ var type = $( this ).attr( "type" );
7251
+ var name = type !== "checkbox" && type !== "radio" ? "button" : "checkboxradio";
7252
+ var instance = $.data( this, "ui-" + name );
7253
+
7254
+ if ( instance ) {
7255
+ instance.option( options || {} );
7256
+ if ( instance._init ) {
7257
+ instance._init();
7258
+ }
7259
+ } else {
7260
+ if ( name === "button" ) {
7261
+ orig.call( $( this ), options );
7262
+ return;
7263
+ }
7264
+
7265
+ $( this ).checkboxradio( $.extend( { icon: false }, options ) );
7266
+ }
7132
7267
  } );
7133
7268
  }
7134
- return this.checkboxradio.apply( this, arguments );
7269
+
7270
+ return returnValue;
7135
7271
  };
7136
7272
  } )( $.fn.button );
7137
7273
 
@@ -7158,10 +7294,9 @@ if ( $.uiBackCompat !== false ) {
7158
7294
  var widgetsButton = $.ui.button;
7159
7295
 
7160
7296
 
7161
- // jscs:disable maximumLineLength
7162
- /* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
7297
+ /* eslint-disable max-len, camelcase */
7163
7298
  /*!
7164
- * jQuery UI Datepicker 1.12.1
7299
+ * jQuery UI Datepicker 1.13.1
7165
7300
  * http://jqueryui.com
7166
7301
  *
7167
7302
  * Copyright jQuery Foundation and other contributors
@@ -7179,8 +7314,7 @@ var widgetsButton = $.ui.button;
7179
7314
  //>>css.theme: ../../themes/base/theme.css
7180
7315
 
7181
7316
 
7182
-
7183
- $.extend( $.ui, { datepicker: { version: "1.12.1" } } );
7317
+ $.extend( $.ui, { datepicker: { version: "1.13.1" } } );
7184
7318
 
7185
7319
  var datepicker_instActive;
7186
7320
 
@@ -7208,6 +7342,7 @@ function datepicker_getZindex( elem ) {
7208
7342
 
7209
7343
  return 0;
7210
7344
  }
7345
+
7211
7346
  /* Date picker manager.
7212
7347
  Use the singleton instance of this class, $.datepicker, to interact with the date picker.
7213
7348
  Settings for (groups of) date pickers are maintained in an instance object,
@@ -7234,18 +7369,20 @@ function Datepicker() {
7234
7369
  prevText: "Prev", // Display text for previous month link
7235
7370
  nextText: "Next", // Display text for next month link
7236
7371
  currentText: "Today", // Display text for current month link
7237
- monthNames: [ "January","February","March","April","May","June",
7238
- "July","August","September","October","November","December" ], // Names of months for drop-down and formatting
7372
+ monthNames: [ "January", "February", "March", "April", "May", "June",
7373
+ "July", "August", "September", "October", "November", "December" ], // Names of months for drop-down and formatting
7239
7374
  monthNamesShort: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ], // For formatting
7240
7375
  dayNames: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], // For formatting
7241
7376
  dayNamesShort: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ], // For formatting
7242
- dayNamesMin: [ "Su","Mo","Tu","We","Th","Fr","Sa" ], // Column headings for days starting at Sunday
7377
+ dayNamesMin: [ "Su", "Mo", "Tu", "We", "Th", "Fr", "Sa" ], // Column headings for days starting at Sunday
7243
7378
  weekHeader: "Wk", // Column header for week of the year
7244
7379
  dateFormat: "mm/dd/yy", // See format options on parseDate
7245
7380
  firstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...
7246
7381
  isRTL: false, // True if right-to-left language, false if left-to-right
7247
7382
  showMonthAfterYear: false, // True if the year select precedes month, false for month then year
7248
- yearSuffix: "" // Additional text to append to the year in the month headers
7383
+ yearSuffix: "", // Additional text to append to the year in the month headers,
7384
+ selectMonthLabel: "Select month", // Invisible label for month selector
7385
+ selectYearLabel: "Select year" // Invisible label for year selector
7249
7386
  };
7250
7387
  this._defaults = { // Global defaults for all the date picker instances
7251
7388
  showOn: "focus", // "focus" for popup on focus,
@@ -7286,6 +7423,7 @@ function Datepicker() {
7286
7423
  onSelect: null, // Define a callback function when a date is selected
7287
7424
  onChangeMonthYear: null, // Define a callback function when the month or year is changed
7288
7425
  onClose: null, // Define a callback function when the datepicker is closed
7426
+ onUpdateDatepicker: null, // Define a callback function when the datepicker is updated
7289
7427
  numberOfMonths: 1, // Number of months to show at a time
7290
7428
  showCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0)
7291
7429
  stepMonths: 1, // Number of months to step back/forward
@@ -7304,6 +7442,7 @@ function Datepicker() {
7304
7442
  }
7305
7443
 
7306
7444
  $.extend( Datepicker.prototype, {
7445
+
7307
7446
  /* Class name added to elements to indicate already configured with a date picker. */
7308
7447
  markerClassName: "hasDatepicker",
7309
7448
 
@@ -7386,7 +7525,9 @@ $.extend( Datepicker.prototype, {
7386
7525
  inst.append.remove();
7387
7526
  }
7388
7527
  if ( appendText ) {
7389
- inst.append = $( "<span class='" + this._appendClass + "'>" + appendText + "</span>" );
7528
+ inst.append = $( "<span>" )
7529
+ .addClass( this._appendClass )
7530
+ .text( appendText );
7390
7531
  input[ isRTL ? "before" : "after" ]( inst.append );
7391
7532
  }
7392
7533
 
@@ -7403,12 +7544,32 @@ $.extend( Datepicker.prototype, {
7403
7544
  if ( showOn === "button" || showOn === "both" ) { // pop-up date picker when button clicked
7404
7545
  buttonText = this._get( inst, "buttonText" );
7405
7546
  buttonImage = this._get( inst, "buttonImage" );
7406
- inst.trigger = $( this._get( inst, "buttonImageOnly" ) ?
7407
- $( "<img/>" ).addClass( this._triggerClass ).
7408
- attr( { src: buttonImage, alt: buttonText, title: buttonText } ) :
7409
- $( "<button type='button'></button>" ).addClass( this._triggerClass ).
7410
- html( !buttonImage ? buttonText : $( "<img/>" ).attr(
7411
- { src:buttonImage, alt:buttonText, title:buttonText } ) ) );
7547
+
7548
+ if ( this._get( inst, "buttonImageOnly" ) ) {
7549
+ inst.trigger = $( "<img>" )
7550
+ .addClass( this._triggerClass )
7551
+ .attr( {
7552
+ src: buttonImage,
7553
+ alt: buttonText,
7554
+ title: buttonText
7555
+ } );
7556
+ } else {
7557
+ inst.trigger = $( "<button type='button'>" )
7558
+ .addClass( this._triggerClass );
7559
+ if ( buttonImage ) {
7560
+ inst.trigger.html(
7561
+ $( "<img>" )
7562
+ .attr( {
7563
+ src: buttonImage,
7564
+ alt: buttonText,
7565
+ title: buttonText
7566
+ } )
7567
+ );
7568
+ } else {
7569
+ inst.trigger.text( buttonText );
7570
+ }
7571
+ }
7572
+
7412
7573
  input[ isRTL ? "before" : "after" ]( inst.trigger );
7413
7574
  inst.trigger.on( "click", function() {
7414
7575
  if ( $.datepicker._datepickerShowing && $.datepicker._lastInput === input[ 0 ] ) {
@@ -7554,6 +7715,7 @@ $.extend( Datepicker.prototype, {
7554
7715
 
7555
7716
  if ( datepicker_instActive === inst ) {
7556
7717
  datepicker_instActive = null;
7718
+ this._curInst = null;
7557
7719
  }
7558
7720
  },
7559
7721
 
@@ -7573,7 +7735,9 @@ $.extend( Datepicker.prototype, {
7573
7735
  if ( nodeName === "input" ) {
7574
7736
  target.disabled = false;
7575
7737
  inst.trigger.filter( "button" ).
7576
- each( function() { this.disabled = false; } ).end().
7738
+ each( function() {
7739
+ this.disabled = false;
7740
+ } ).end().
7577
7741
  filter( "img" ).css( { opacity: "1.0", cursor: "" } );
7578
7742
  } else if ( nodeName === "div" || nodeName === "span" ) {
7579
7743
  inline = $target.children( "." + this._inlineClass );
@@ -7582,7 +7746,11 @@ $.extend( Datepicker.prototype, {
7582
7746
  prop( "disabled", false );
7583
7747
  }
7584
7748
  this._disabledInputs = $.map( this._disabledInputs,
7585
- function( value ) { return ( value === target ? null : value ); } ); // delete entry
7749
+
7750
+ // Delete entry
7751
+ function( value ) {
7752
+ return ( value === target ? null : value );
7753
+ } );
7586
7754
  },
7587
7755
 
7588
7756
  /* Disable the date picker to a jQuery selection.
@@ -7601,7 +7769,9 @@ $.extend( Datepicker.prototype, {
7601
7769
  if ( nodeName === "input" ) {
7602
7770
  target.disabled = true;
7603
7771
  inst.trigger.filter( "button" ).
7604
- each( function() { this.disabled = true; } ).end().
7772
+ each( function() {
7773
+ this.disabled = true;
7774
+ } ).end().
7605
7775
  filter( "img" ).css( { opacity: "0.5", cursor: "default" } );
7606
7776
  } else if ( nodeName === "div" || nodeName === "span" ) {
7607
7777
  inline = $target.children( "." + this._inlineClass );
@@ -7610,7 +7780,11 @@ $.extend( Datepicker.prototype, {
7610
7780
  prop( "disabled", true );
7611
7781
  }
7612
7782
  this._disabledInputs = $.map( this._disabledInputs,
7613
- function( value ) { return ( value === target ? null : value ); } ); // delete entry
7783
+
7784
+ // Delete entry
7785
+ function( value ) {
7786
+ return ( value === target ? null : value );
7787
+ } );
7614
7788
  this._disabledInputs[ this._disabledInputs.length ] = target;
7615
7789
  },
7616
7790
 
@@ -7638,8 +7812,7 @@ $.extend( Datepicker.prototype, {
7638
7812
  _getInst: function( target ) {
7639
7813
  try {
7640
7814
  return $.data( target, "datepicker" );
7641
- }
7642
- catch ( err ) {
7815
+ } catch ( err ) {
7643
7816
  throw "Missing instance data for this datepicker";
7644
7817
  }
7645
7818
  },
@@ -7872,8 +8045,7 @@ $.extend( Datepicker.prototype, {
7872
8045
  $.datepicker._updateAlternate( inst );
7873
8046
  $.datepicker._updateDatepicker( inst );
7874
8047
  }
7875
- }
7876
- catch ( err ) {
8048
+ } catch ( err ) {
7877
8049
  }
7878
8050
  }
7879
8051
  return true;
@@ -7978,7 +8150,8 @@ $.extend( Datepicker.prototype, {
7978
8150
  numMonths = this._getNumberOfMonths( inst ),
7979
8151
  cols = numMonths[ 1 ],
7980
8152
  width = 17,
7981
- activeCell = inst.dpDiv.find( "." + this._dayOverClass + " a" );
8153
+ activeCell = inst.dpDiv.find( "." + this._dayOverClass + " a" ),
8154
+ onUpdateDatepicker = $.datepicker._get( inst, "onUpdateDatepicker" );
7982
8155
 
7983
8156
  if ( activeCell.length > 0 ) {
7984
8157
  datepicker_handleMouseover.apply( activeCell.get( 0 ) );
@@ -8004,11 +8177,15 @@ $.extend( Datepicker.prototype, {
8004
8177
 
8005
8178
  //assure that inst.yearshtml didn't change.
8006
8179
  if ( origyearshtml === inst.yearshtml && inst.yearshtml ) {
8007
- inst.dpDiv.find( "select.ui-datepicker-year:first" ).replaceWith( inst.yearshtml );
8180
+ inst.dpDiv.find( "select.ui-datepicker-year" ).first().replaceWith( inst.yearshtml );
8008
8181
  }
8009
8182
  origyearshtml = inst.yearshtml = null;
8010
8183
  }, 0 );
8011
8184
  }
8185
+
8186
+ if ( onUpdateDatepicker ) {
8187
+ onUpdateDatepicker.apply( ( inst.input ? inst.input[ 0 ] : null ), [ inst ] );
8188
+ }
8012
8189
  },
8013
8190
 
8014
8191
  // #6694 - don't focus the input if it's already focused
@@ -8046,7 +8223,7 @@ $.extend( Datepicker.prototype, {
8046
8223
  inst = this._getInst( obj ),
8047
8224
  isRTL = this._get( inst, "isRTL" );
8048
8225
 
8049
- while ( obj && ( obj.type === "hidden" || obj.nodeType !== 1 || $.expr.filters.hidden( obj ) ) ) {
8226
+ while ( obj && ( obj.type === "hidden" || obj.nodeType !== 1 || $.expr.pseudos.hidden( obj ) ) ) {
8050
8227
  obj = obj[ isRTL ? "previousSibling" : "nextSibling" ];
8051
8228
  }
8052
8229
 
@@ -8134,9 +8311,7 @@ $.extend( Datepicker.prototype, {
8134
8311
  if ( this._isDisabledDatepicker( target[ 0 ] ) ) {
8135
8312
  return;
8136
8313
  }
8137
- this._adjustInstDate( inst, offset +
8138
- ( period === "M" ? this._get( inst, "showCurrentAtPos" ) : 0 ), // undo positioning
8139
- period );
8314
+ this._adjustInstDate( inst, offset, period );
8140
8315
  this._updateDatepicker( inst );
8141
8316
  },
8142
8317
 
@@ -8183,7 +8358,7 @@ $.extend( Datepicker.prototype, {
8183
8358
  }
8184
8359
 
8185
8360
  inst = this._getInst( target[ 0 ] );
8186
- inst.selectedDay = inst.currentDay = $( "a", td ).html();
8361
+ inst.selectedDay = inst.currentDay = parseInt( $( "a", td ).attr( "data-date" ) );
8187
8362
  inst.selectedMonth = inst.currentMonth = month;
8188
8363
  inst.selectedYear = inst.currentYear = year;
8189
8364
  this._selectDate( id, this._formatDate( inst,
@@ -8236,7 +8411,7 @@ $.extend( Datepicker.prototype, {
8236
8411
  altFormat = this._get( inst, "altFormat" ) || this._get( inst, "dateFormat" );
8237
8412
  date = this._getDate( inst );
8238
8413
  dateStr = this.formatDate( altFormat, date, this._getFormatConfig( inst ) );
8239
- $( altField ).val( dateStr );
8414
+ $( document ).find( altField ).val( dateStr );
8240
8415
  }
8241
8416
  },
8242
8417
 
@@ -8675,8 +8850,7 @@ $.extend( Datepicker.prototype, {
8675
8850
  try {
8676
8851
  return $.datepicker.parseDate( $.datepicker._get( inst, "dateFormat" ),
8677
8852
  offset, $.datepicker._getFormatConfig( inst ) );
8678
- }
8679
- catch ( e ) {
8853
+ } catch ( e ) {
8680
8854
 
8681
8855
  // Ignore
8682
8856
  }
@@ -8850,32 +9024,104 @@ $.extend( Datepicker.prototype, {
8850
9024
  this._daylightSavingAdjust( new Date( drawYear, drawMonth - stepMonths, 1 ) ),
8851
9025
  this._getFormatConfig( inst ) ) );
8852
9026
 
8853
- prev = ( this._canAdjustMonth( inst, -1, drawYear, drawMonth ) ?
8854
- "<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click'" +
8855
- " title='" + prevText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w" ) + "'>" + prevText + "</span></a>" :
8856
- ( hideIfNoPrevNext ? "" : "<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='" + prevText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w" ) + "'>" + prevText + "</span></a>" ) );
9027
+ if ( this._canAdjustMonth( inst, -1, drawYear, drawMonth ) ) {
9028
+ prev = $( "<a>" )
9029
+ .attr( {
9030
+ "class": "ui-datepicker-prev ui-corner-all",
9031
+ "data-handler": "prev",
9032
+ "data-event": "click",
9033
+ title: prevText
9034
+ } )
9035
+ .append(
9036
+ $( "<span>" )
9037
+ .addClass( "ui-icon ui-icon-circle-triangle-" +
9038
+ ( isRTL ? "e" : "w" ) )
9039
+ .text( prevText )
9040
+ )[ 0 ].outerHTML;
9041
+ } else if ( hideIfNoPrevNext ) {
9042
+ prev = "";
9043
+ } else {
9044
+ prev = $( "<a>" )
9045
+ .attr( {
9046
+ "class": "ui-datepicker-prev ui-corner-all ui-state-disabled",
9047
+ title: prevText
9048
+ } )
9049
+ .append(
9050
+ $( "<span>" )
9051
+ .addClass( "ui-icon ui-icon-circle-triangle-" +
9052
+ ( isRTL ? "e" : "w" ) )
9053
+ .text( prevText )
9054
+ )[ 0 ].outerHTML;
9055
+ }
8857
9056
 
8858
9057
  nextText = this._get( inst, "nextText" );
8859
9058
  nextText = ( !navigationAsDateFormat ? nextText : this.formatDate( nextText,
8860
9059
  this._daylightSavingAdjust( new Date( drawYear, drawMonth + stepMonths, 1 ) ),
8861
9060
  this._getFormatConfig( inst ) ) );
8862
9061
 
8863
- next = ( this._canAdjustMonth( inst, +1, drawYear, drawMonth ) ?
8864
- "<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click'" +
8865
- " title='" + nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e" ) + "'>" + nextText + "</span></a>" :
8866
- ( hideIfNoPrevNext ? "" : "<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='" + nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e" ) + "'>" + nextText + "</span></a>" ) );
9062
+ if ( this._canAdjustMonth( inst, +1, drawYear, drawMonth ) ) {
9063
+ next = $( "<a>" )
9064
+ .attr( {
9065
+ "class": "ui-datepicker-next ui-corner-all",
9066
+ "data-handler": "next",
9067
+ "data-event": "click",
9068
+ title: nextText
9069
+ } )
9070
+ .append(
9071
+ $( "<span>" )
9072
+ .addClass( "ui-icon ui-icon-circle-triangle-" +
9073
+ ( isRTL ? "w" : "e" ) )
9074
+ .text( nextText )
9075
+ )[ 0 ].outerHTML;
9076
+ } else if ( hideIfNoPrevNext ) {
9077
+ next = "";
9078
+ } else {
9079
+ next = $( "<a>" )
9080
+ .attr( {
9081
+ "class": "ui-datepicker-next ui-corner-all ui-state-disabled",
9082
+ title: nextText
9083
+ } )
9084
+ .append(
9085
+ $( "<span>" )
9086
+ .attr( "class", "ui-icon ui-icon-circle-triangle-" +
9087
+ ( isRTL ? "w" : "e" ) )
9088
+ .text( nextText )
9089
+ )[ 0 ].outerHTML;
9090
+ }
8867
9091
 
8868
9092
  currentText = this._get( inst, "currentText" );
8869
9093
  gotoDate = ( this._get( inst, "gotoCurrent" ) && inst.currentDay ? currentDate : today );
8870
9094
  currentText = ( !navigationAsDateFormat ? currentText :
8871
9095
  this.formatDate( currentText, gotoDate, this._getFormatConfig( inst ) ) );
8872
9096
 
8873
- controls = ( !inst.inline ? "<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>" +
8874
- this._get( inst, "closeText" ) + "</button>" : "" );
8875
-
8876
- buttonPanel = ( showButtonPanel ) ? "<div class='ui-datepicker-buttonpane ui-widget-content'>" + ( isRTL ? controls : "" ) +
8877
- ( this._isInRange( inst, gotoDate ) ? "<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'" +
8878
- ">" + currentText + "</button>" : "" ) + ( isRTL ? "" : controls ) + "</div>" : "";
9097
+ controls = "";
9098
+ if ( !inst.inline ) {
9099
+ controls = $( "<button>" )
9100
+ .attr( {
9101
+ type: "button",
9102
+ "class": "ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all",
9103
+ "data-handler": "hide",
9104
+ "data-event": "click"
9105
+ } )
9106
+ .text( this._get( inst, "closeText" ) )[ 0 ].outerHTML;
9107
+ }
9108
+
9109
+ buttonPanel = "";
9110
+ if ( showButtonPanel ) {
9111
+ buttonPanel = $( "<div class='ui-datepicker-buttonpane ui-widget-content'>" )
9112
+ .append( isRTL ? controls : "" )
9113
+ .append( this._isInRange( inst, gotoDate ) ?
9114
+ $( "<button>" )
9115
+ .attr( {
9116
+ type: "button",
9117
+ "class": "ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all",
9118
+ "data-handler": "today",
9119
+ "data-event": "click"
9120
+ } )
9121
+ .text( currentText ) :
9122
+ "" )
9123
+ .append( isRTL ? "" : controls )[ 0 ].outerHTML;
9124
+ }
8879
9125
 
8880
9126
  firstDay = parseInt( this._get( inst, "firstDay" ), 10 );
8881
9127
  firstDay = ( isNaN( firstDay ) ? 0 : firstDay );
@@ -8963,7 +9209,9 @@ $.extend( Datepicker.prototype, {
8963
9209
  ( printDate.getTime() === today.getTime() ? " ui-state-highlight" : "" ) +
8964
9210
  ( printDate.getTime() === currentDate.getTime() ? " ui-state-active" : "" ) + // highlight selected day
8965
9211
  ( otherMonth ? " ui-priority-secondary" : "" ) + // distinguish dates from other months
8966
- "' href='#'>" + printDate.getDate() + "</a>" ) ) + "</td>"; // display selectable date
9212
+ "' href='#' aria-current='" + ( printDate.getTime() === currentDate.getTime() ? "true" : "false" ) + // mark date as selected for screen reader
9213
+ "' data-date='" + printDate.getDate() + // store date as data
9214
+ "'>" + printDate.getDate() + "</a>" ) ) + "</td>"; // display selectable date
8967
9215
  printDate.setDate( printDate.getDate() + 1 );
8968
9216
  printDate = this._daylightSavingAdjust( printDate );
8969
9217
  }
@@ -8993,6 +9241,8 @@ $.extend( Datepicker.prototype, {
8993
9241
  changeMonth = this._get( inst, "changeMonth" ),
8994
9242
  changeYear = this._get( inst, "changeYear" ),
8995
9243
  showMonthAfterYear = this._get( inst, "showMonthAfterYear" ),
9244
+ selectMonthLabel = this._get( inst, "selectMonthLabel" ),
9245
+ selectYearLabel = this._get( inst, "selectYearLabel" ),
8996
9246
  html = "<div class='ui-datepicker-title'>",
8997
9247
  monthHtml = "";
8998
9248
 
@@ -9002,7 +9252,7 @@ $.extend( Datepicker.prototype, {
9002
9252
  } else {
9003
9253
  inMinYear = ( minDate && minDate.getFullYear() === drawYear );
9004
9254
  inMaxYear = ( maxDate && maxDate.getFullYear() === drawYear );
9005
- monthHtml += "<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>";
9255
+ monthHtml += "<select class='ui-datepicker-month' aria-label='" + selectMonthLabel + "' data-handler='selectMonth' data-event='change'>";
9006
9256
  for ( month = 0; month < 12; month++ ) {
9007
9257
  if ( ( !inMinYear || month >= minDate.getMonth() ) && ( !inMaxYear || month <= maxDate.getMonth() ) ) {
9008
9258
  monthHtml += "<option value='" + month + "'" +
@@ -9037,7 +9287,7 @@ $.extend( Datepicker.prototype, {
9037
9287
  endYear = Math.max( year, determineYear( years[ 1 ] || "" ) );
9038
9288
  year = ( minDate ? Math.max( year, minDate.getFullYear() ) : year );
9039
9289
  endYear = ( maxDate ? Math.min( endYear, maxDate.getFullYear() ) : endYear );
9040
- inst.yearshtml += "<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";
9290
+ inst.yearshtml += "<select class='ui-datepicker-year' aria-label='" + selectYearLabel + "' data-handler='selectYear' data-event='change'>";
9041
9291
  for ( ; year <= endYear; year++ ) {
9042
9292
  inst.yearshtml += "<option value='" + year + "'" +
9043
9293
  ( year === drawYear ? " selected='selected'" : "" ) +
@@ -9249,28 +9499,29 @@ $.fn.datepicker = function( options ) {
9249
9499
  apply( $.datepicker, [ this[ 0 ] ].concat( otherArgs ) );
9250
9500
  }
9251
9501
  return this.each( function() {
9252
- typeof options === "string" ?
9253
- $.datepicker[ "_" + options + "Datepicker" ].
9254
- apply( $.datepicker, [ this ].concat( otherArgs ) ) :
9502
+ if ( typeof options === "string" ) {
9503
+ $.datepicker[ "_" + options + "Datepicker" ]
9504
+ .apply( $.datepicker, [ this ].concat( otherArgs ) );
9505
+ } else {
9255
9506
  $.datepicker._attachDatepicker( this, options );
9507
+ }
9256
9508
  } );
9257
9509
  };
9258
9510
 
9259
9511
  $.datepicker = new Datepicker(); // singleton instance
9260
9512
  $.datepicker.initialized = false;
9261
9513
  $.datepicker.uuid = new Date().getTime();
9262
- $.datepicker.version = "1.12.1";
9514
+ $.datepicker.version = "1.13.1";
9263
9515
 
9264
9516
  var widgetsDatepicker = $.datepicker;
9265
9517
 
9266
9518
 
9267
9519
 
9268
-
9269
9520
  // This file is deprecated
9270
9521
  var ie = $.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() );
9271
9522
 
9272
9523
  /*!
9273
- * jQuery UI Mouse 1.12.1
9524
+ * jQuery UI Mouse 1.13.1
9274
9525
  * http://jqueryui.com
9275
9526
  *
9276
9527
  * Copyright jQuery Foundation and other contributors
@@ -9284,14 +9535,13 @@ var ie = $.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() );
9284
9535
  //>>docs: http://api.jqueryui.com/mouse/
9285
9536
 
9286
9537
 
9287
-
9288
9538
  var mouseHandled = false;
9289
9539
  $( document ).on( "mouseup", function() {
9290
9540
  mouseHandled = false;
9291
9541
  } );
9292
9542
 
9293
9543
  var widgetsMouse = $.widget( "ui.mouse", {
9294
- version: "1.12.1",
9544
+ version: "1.13.1",
9295
9545
  options: {
9296
9546
  cancel: "input, textarea, button, select, option",
9297
9547
  distance: 1,
@@ -9336,7 +9586,9 @@ var widgetsMouse = $.widget( "ui.mouse", {
9336
9586
  this._mouseMoved = false;
9337
9587
 
9338
9588
  // We may have missed mouseup (out of window)
9339
- ( this._mouseStarted && this._mouseUp( event ) );
9589
+ if ( this._mouseStarted ) {
9590
+ this._mouseUp( event );
9591
+ }
9340
9592
 
9341
9593
  this._mouseDownEvent = event;
9342
9594
 
@@ -9429,7 +9681,11 @@ var widgetsMouse = $.widget( "ui.mouse", {
9429
9681
  if ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) {
9430
9682
  this._mouseStarted =
9431
9683
  ( this._mouseStart( this._mouseDownEvent, event ) !== false );
9432
- ( this._mouseStarted ? this._mouseDrag( event ) : this._mouseUp( event ) );
9684
+ if ( this._mouseStarted ) {
9685
+ this._mouseDrag( event );
9686
+ } else {
9687
+ this._mouseUp( event );
9688
+ }
9433
9689
  }
9434
9690
 
9435
9691
  return !this._mouseStarted;
@@ -9476,12 +9732,13 @@ var widgetsMouse = $.widget( "ui.mouse", {
9476
9732
  _mouseStart: function( /* event */ ) {},
9477
9733
  _mouseDrag: function( /* event */ ) {},
9478
9734
  _mouseStop: function( /* event */ ) {},
9479
- _mouseCapture: function( /* event */ ) { return true; }
9735
+ _mouseCapture: function( /* event */ ) {
9736
+ return true;
9737
+ }
9480
9738
  } );
9481
9739
 
9482
9740
 
9483
9741
 
9484
-
9485
9742
  // $.ui.plugin is deprecated. Use $.widget() extensions instead.
9486
9743
  var plugin = $.ui.plugin = {
9487
9744
  add: function( module, option, set ) {
@@ -9526,7 +9783,7 @@ var safeBlur = $.ui.safeBlur = function( element ) {
9526
9783
 
9527
9784
 
9528
9785
  /*!
9529
- * jQuery UI Draggable 1.12.1
9786
+ * jQuery UI Draggable 1.13.1
9530
9787
  * http://jqueryui.com
9531
9788
  *
9532
9789
  * Copyright jQuery Foundation and other contributors
@@ -9542,9 +9799,8 @@ var safeBlur = $.ui.safeBlur = function( element ) {
9542
9799
  //>>css.structure: ../../themes/base/draggable.css
9543
9800
 
9544
9801
 
9545
-
9546
9802
  $.widget( "ui.draggable", $.ui.mouse, {
9547
- version: "1.12.1",
9803
+ version: "1.13.1",
9548
9804
  widgetEventPrefix: "drag",
9549
9805
  options: {
9550
9806
  addClasses: true,
@@ -9708,7 +9964,9 @@ $.widget( "ui.draggable", $.ui.mouse, {
9708
9964
  this.originalPageY = event.pageY;
9709
9965
 
9710
9966
  //Adjust the mouse offset relative to the helper if "cursorAt" is supplied
9711
- ( o.cursorAt && this._adjustOffsetFromHelper( o.cursorAt ) );
9967
+ if ( o.cursorAt ) {
9968
+ this._adjustOffsetFromHelper( o.cursorAt );
9969
+ }
9712
9970
 
9713
9971
  //Set a containment if given in the options
9714
9972
  this._setContainment();
@@ -9803,7 +10061,7 @@ $.widget( "ui.draggable", $.ui.mouse, {
9803
10061
 
9804
10062
  if ( ( this.options.revert === "invalid" && !dropped ) ||
9805
10063
  ( this.options.revert === "valid" && dropped ) ||
9806
- this.options.revert === true || ( $.isFunction( this.options.revert ) &&
10064
+ this.options.revert === true || ( typeof this.options.revert === "function" &&
9807
10065
  this.options.revert.call( this.element, dropped ) )
9808
10066
  ) {
9809
10067
  $( this.helper ).animate(
@@ -9875,7 +10133,7 @@ $.widget( "ui.draggable", $.ui.mouse, {
9875
10133
  _createHelper: function( event ) {
9876
10134
 
9877
10135
  var o = this.options,
9878
- helperIsFunction = $.isFunction( o.helper ),
10136
+ helperIsFunction = typeof o.helper === "function",
9879
10137
  helper = helperIsFunction ?
9880
10138
  $( o.helper.apply( this.element[ 0 ], [ event ] ) ) :
9881
10139
  ( o.helper === "clone" ?
@@ -9914,7 +10172,7 @@ $.widget( "ui.draggable", $.ui.mouse, {
9914
10172
  if ( typeof obj === "string" ) {
9915
10173
  obj = obj.split( " " );
9916
10174
  }
9917
- if ( $.isArray( obj ) ) {
10175
+ if ( Array.isArray( obj ) ) {
9918
10176
  obj = { left: +obj[ 0 ], top: +obj[ 1 ] || 0 };
9919
10177
  }
9920
10178
  if ( "left" in obj ) {
@@ -10623,12 +10881,13 @@ $.ui.plugin.add( "draggable", "snap", {
10623
10881
  !$.contains( inst.snapElements[ i ].item.ownerDocument,
10624
10882
  inst.snapElements[ i ].item ) ) {
10625
10883
  if ( inst.snapElements[ i ].snapping ) {
10626
- ( inst.options.snap.release &&
10884
+ if ( inst.options.snap.release ) {
10627
10885
  inst.options.snap.release.call(
10628
10886
  inst.element,
10629
10887
  event,
10630
10888
  $.extend( inst._uiHash(), { snapItem: inst.snapElements[ i ].item } )
10631
- ) );
10889
+ );
10890
+ }
10632
10891
  }
10633
10892
  inst.snapElements[ i ].snapping = false;
10634
10893
  continue;
@@ -10699,13 +10958,14 @@ $.ui.plugin.add( "draggable", "snap", {
10699
10958
  }
10700
10959
 
10701
10960
  if ( !inst.snapElements[ i ].snapping && ( ts || bs || ls || rs || first ) ) {
10702
- ( inst.options.snap.snap &&
10961
+ if ( inst.options.snap.snap ) {
10703
10962
  inst.options.snap.snap.call(
10704
10963
  inst.element,
10705
10964
  event,
10706
10965
  $.extend( inst._uiHash(), {
10707
10966
  snapItem: inst.snapElements[ i ].item
10708
- } ) ) );
10967
+ } ) );
10968
+ }
10709
10969
  }
10710
10970
  inst.snapElements[ i ].snapping = ( ts || bs || ls || rs || first );
10711
10971
 
@@ -10723,7 +10983,9 @@ $.ui.plugin.add( "draggable", "stack", {
10723
10983
  ( parseInt( $( b ).css( "zIndex" ), 10 ) || 0 );
10724
10984
  } );
10725
10985
 
10726
- if ( !group.length ) { return; }
10986
+ if ( !group.length ) {
10987
+ return;
10988
+ }
10727
10989
 
10728
10990
  min = parseInt( $( group[ 0 ] ).css( "zIndex" ), 10 ) || 0;
10729
10991
  $( group ).each( function( i ) {
@@ -10756,7 +11018,7 @@ var widgetsDraggable = $.ui.draggable;
10756
11018
 
10757
11019
 
10758
11020
  /*!
10759
- * jQuery UI Resizable 1.12.1
11021
+ * jQuery UI Resizable 1.13.1
10760
11022
  * http://jqueryui.com
10761
11023
  *
10762
11024
  * Copyright jQuery Foundation and other contributors
@@ -10774,9 +11036,8 @@ var widgetsDraggable = $.ui.draggable;
10774
11036
  //>>css.theme: ../../themes/base/theme.css
10775
11037
 
10776
11038
 
10777
-
10778
11039
  $.widget( "ui.resizable", $.ui.mouse, {
10779
- version: "1.12.1",
11040
+ version: "1.13.1",
10780
11041
  widgetEventPrefix: "resize",
10781
11042
  options: {
10782
11043
  alsoResize: false,
@@ -10831,9 +11092,15 @@ $.widget( "ui.resizable", $.ui.mouse, {
10831
11092
  // TODO: determine which cases actually cause this to happen
10832
11093
  // if the element doesn't have the scroll set, see if it's possible to
10833
11094
  // set the scroll
10834
- el[ scroll ] = 1;
10835
- has = ( el[ scroll ] > 0 );
10836
- el[ scroll ] = 0;
11095
+ try {
11096
+ el[ scroll ] = 1;
11097
+ has = ( el[ scroll ] > 0 );
11098
+ el[ scroll ] = 0;
11099
+ } catch ( e ) {
11100
+
11101
+ // `el` might be a string, then setting `scroll` will throw
11102
+ // an error in strict mode; ignore it.
11103
+ }
10837
11104
  return has;
10838
11105
  },
10839
11106
 
@@ -10856,7 +11123,8 @@ $.widget( "ui.resizable", $.ui.mouse, {
10856
11123
  if ( this.element[ 0 ].nodeName.match( /^(canvas|textarea|input|select|button|img)$/i ) ) {
10857
11124
 
10858
11125
  this.element.wrap(
10859
- $( "<div class='ui-wrapper' style='overflow: hidden;'></div>" ).css( {
11126
+ $( "<div class='ui-wrapper'></div>" ).css( {
11127
+ overflow: "hidden",
10860
11128
  position: this.element.css( "position" ),
10861
11129
  width: this.element.outerWidth(),
10862
11130
  height: this.element.outerHeight(),
@@ -10927,15 +11195,14 @@ $.widget( "ui.resizable", $.ui.mouse, {
10927
11195
  _destroy: function() {
10928
11196
 
10929
11197
  this._mouseDestroy();
11198
+ this._addedHandles.remove();
10930
11199
 
10931
11200
  var wrapper,
10932
11201
  _destroy = function( exp ) {
10933
11202
  $( exp )
10934
11203
  .removeData( "resizable" )
10935
11204
  .removeData( "ui-resizable" )
10936
- .off( ".resizable" )
10937
- .find( ".ui-resizable-handle" )
10938
- .remove();
11205
+ .off( ".resizable" );
10939
11206
  };
10940
11207
 
10941
11208
  // TODO: Unwrap at same DOM position
@@ -10966,6 +11233,9 @@ $.widget( "ui.resizable", $.ui.mouse, {
10966
11233
  this._removeHandles();
10967
11234
  this._setupHandles();
10968
11235
  break;
11236
+ case "aspectRatio":
11237
+ this._aspectRatio = !!value;
11238
+ break;
10969
11239
  default:
10970
11240
  break;
10971
11241
  }
@@ -10987,6 +11257,7 @@ $.widget( "ui.resizable", $.ui.mouse, {
10987
11257
  } );
10988
11258
 
10989
11259
  this._handles = $();
11260
+ this._addedHandles = $();
10990
11261
  if ( this.handles.constructor === String ) {
10991
11262
 
10992
11263
  if ( this.handles === "all" ) {
@@ -10998,7 +11269,7 @@ $.widget( "ui.resizable", $.ui.mouse, {
10998
11269
 
10999
11270
  for ( i = 0; i < n.length; i++ ) {
11000
11271
 
11001
- handle = $.trim( n[ i ] );
11272
+ handle = String.prototype.trim.call( n[ i ] );
11002
11273
  hname = "ui-resizable-" + handle;
11003
11274
  axis = $( "<div>" );
11004
11275
  this._addClass( axis, "ui-resizable-handle " + hname );
@@ -11006,7 +11277,10 @@ $.widget( "ui.resizable", $.ui.mouse, {
11006
11277
  axis.css( { zIndex: o.zIndex } );
11007
11278
 
11008
11279
  this.handles[ handle ] = ".ui-resizable-" + handle;
11009
- this.element.append( axis );
11280
+ if ( !this.element.children( this.handles[ handle ] ).length ) {
11281
+ this.element.append( axis );
11282
+ this._addedHandles = this._addedHandles.add( axis );
11283
+ }
11010
11284
  }
11011
11285
 
11012
11286
  }
@@ -11072,7 +11346,7 @@ $.widget( "ui.resizable", $.ui.mouse, {
11072
11346
  },
11073
11347
 
11074
11348
  _removeHandles: function() {
11075
- this._handles.remove();
11349
+ this._addedHandles.remove();
11076
11350
  },
11077
11351
 
11078
11352
  _mouseCapture: function( event ) {
@@ -11452,7 +11726,7 @@ $.widget( "ui.resizable", $.ui.mouse, {
11452
11726
 
11453
11727
  if ( this._helper ) {
11454
11728
 
11455
- this.helper = this.helper || $( "<div style='overflow:hidden;'></div>" );
11729
+ this.helper = this.helper || $( "<div></div>" ).css( { overflow: "hidden" } );
11456
11730
 
11457
11731
  this._addClass( this.helper, this._helper );
11458
11732
  this.helper.css( {
@@ -11509,7 +11783,9 @@ $.widget( "ui.resizable", $.ui.mouse, {
11509
11783
 
11510
11784
  _propagate: function( n, event ) {
11511
11785
  $.ui.plugin.call( this, n, [ event, this.ui() ] );
11512
- ( n !== "resize" && this._trigger( n, event, this.ui() ) );
11786
+ if ( n !== "resize" ) {
11787
+ this._trigger( n, event, this.ui() );
11788
+ }
11513
11789
  },
11514
11790
 
11515
11791
  plugins: {},
@@ -11630,8 +11906,8 @@ $.ui.plugin.add( "resizable", "containment", {
11630
11906
  co = that.containerOffset;
11631
11907
  ch = that.containerSize.height;
11632
11908
  cw = that.containerSize.width;
11633
- width = ( that._hasScroll ( ce, "left" ) ? ce.scrollWidth : cw );
11634
- height = ( that._hasScroll ( ce ) ? ce.scrollHeight : ch ) ;
11909
+ width = ( that._hasScroll( ce, "left" ) ? ce.scrollWidth : cw );
11910
+ height = ( that._hasScroll( ce ) ? ce.scrollHeight : ch );
11635
11911
 
11636
11912
  that.parentData = {
11637
11913
  element: ce,
@@ -11940,7 +12216,7 @@ var widgetsResizable = $.ui.resizable;
11940
12216
 
11941
12217
 
11942
12218
  /*!
11943
- * jQuery UI Dialog 1.12.1
12219
+ * jQuery UI Dialog 1.13.1
11944
12220
  * http://jqueryui.com
11945
12221
  *
11946
12222
  * Copyright jQuery Foundation and other contributors
@@ -11958,9 +12234,8 @@ var widgetsResizable = $.ui.resizable;
11958
12234
  //>>css.theme: ../../themes/base/theme.css
11959
12235
 
11960
12236
 
11961
-
11962
12237
  $.widget( "ui.dialog", {
11963
- version: "1.12.1",
12238
+ version: "1.13.1",
11964
12239
  options: {
11965
12240
  appendTo: "body",
11966
12241
  autoOpen: true,
@@ -12205,7 +12480,7 @@ $.widget( "ui.dialog", {
12205
12480
  that._trigger( "focus" );
12206
12481
  } );
12207
12482
 
12208
- // Track the dialog immediately upon openening in case a focus event
12483
+ // Track the dialog immediately upon opening in case a focus event
12209
12484
  // somehow occurs outside of the dialog before an element inside the
12210
12485
  // dialog is focused (#10152)
12211
12486
  this._makeFocusTarget();
@@ -12241,22 +12516,23 @@ $.widget( "ui.dialog", {
12241
12516
  hasFocus.eq( 0 ).trigger( "focus" );
12242
12517
  },
12243
12518
 
12244
- _keepFocus: function( event ) {
12245
- function checkFocus() {
12246
- var activeElement = $.ui.safeActiveElement( this.document[ 0 ] ),
12247
- isActive = this.uiDialog[ 0 ] === activeElement ||
12248
- $.contains( this.uiDialog[ 0 ], activeElement );
12249
- if ( !isActive ) {
12250
- this._focusTabbable();
12251
- }
12519
+ _restoreTabbableFocus: function() {
12520
+ var activeElement = $.ui.safeActiveElement( this.document[ 0 ] ),
12521
+ isActive = this.uiDialog[ 0 ] === activeElement ||
12522
+ $.contains( this.uiDialog[ 0 ], activeElement );
12523
+ if ( !isActive ) {
12524
+ this._focusTabbable();
12252
12525
  }
12526
+ },
12527
+
12528
+ _keepFocus: function( event ) {
12253
12529
  event.preventDefault();
12254
- checkFocus.call( this );
12530
+ this._restoreTabbableFocus();
12255
12531
 
12256
12532
  // support: IE
12257
12533
  // IE <= 8 doesn't prevent moving focus even with event.preventDefault()
12258
12534
  // so we check again later
12259
- this._delay( checkFocus );
12535
+ this._delay( this._restoreTabbableFocus );
12260
12536
  },
12261
12537
 
12262
12538
  _createWrapper: function() {
@@ -12285,8 +12561,8 @@ $.widget( "ui.dialog", {
12285
12561
  return;
12286
12562
  }
12287
12563
  var tabbables = this.uiDialog.find( ":tabbable" ),
12288
- first = tabbables.filter( ":first" ),
12289
- last = tabbables.filter( ":last" );
12564
+ first = tabbables.first(),
12565
+ last = tabbables.last();
12290
12566
 
12291
12567
  if ( ( event.target === last[ 0 ] || event.target === this.uiDialog[ 0 ] ) &&
12292
12568
  !event.shiftKey ) {
@@ -12397,14 +12673,14 @@ $.widget( "ui.dialog", {
12397
12673
  this.uiDialogButtonPane.remove();
12398
12674
  this.uiButtonSet.empty();
12399
12675
 
12400
- if ( $.isEmptyObject( buttons ) || ( $.isArray( buttons ) && !buttons.length ) ) {
12676
+ if ( $.isEmptyObject( buttons ) || ( Array.isArray( buttons ) && !buttons.length ) ) {
12401
12677
  this._removeClass( this.uiDialog, "ui-dialog-buttons" );
12402
12678
  return;
12403
12679
  }
12404
12680
 
12405
12681
  $.each( buttons, function( name, props ) {
12406
12682
  var click, buttonOptions;
12407
- props = $.isFunction( props ) ?
12683
+ props = typeof props === "function" ?
12408
12684
  { click: props, text: name } :
12409
12685
  props;
12410
12686
 
@@ -12769,6 +13045,8 @@ $.widget( "ui.dialog", {
12769
13045
  return;
12770
13046
  }
12771
13047
 
13048
+ var jqMinor = $.fn.jquery.substring( 0, 4 );
13049
+
12772
13050
  // We use a delay in case the overlay is created from an
12773
13051
  // event that we're going to be cancelling (#2804)
12774
13052
  var isOpening = true;
@@ -12779,20 +13057,28 @@ $.widget( "ui.dialog", {
12779
13057
  if ( !this.document.data( "ui-dialog-overlays" ) ) {
12780
13058
 
12781
13059
  // Prevent use of anchors and inputs
12782
- // Using _on() for an event handler shared across many instances is
12783
- // safe because the dialogs stack and must be closed in reverse order
12784
- this._on( this.document, {
12785
- focusin: function( event ) {
12786
- if ( isOpening ) {
12787
- return;
12788
- }
13060
+ // This doesn't use `_on()` because it is a shared event handler
13061
+ // across all open modal dialogs.
13062
+ this.document.on( "focusin.ui-dialog", function( event ) {
13063
+ if ( isOpening ) {
13064
+ return;
13065
+ }
12789
13066
 
12790
- if ( !this._allowInteraction( event ) ) {
12791
- event.preventDefault();
12792
- this._trackingInstances()[ 0 ]._focusTabbable();
13067
+ var instance = this._trackingInstances()[ 0 ];
13068
+ if ( !instance._allowInteraction( event ) ) {
13069
+ event.preventDefault();
13070
+ instance._focusTabbable();
13071
+
13072
+ // Support: jQuery >=3.4 <3.6 only
13073
+ // Focus re-triggering in jQuery 3.4/3.5 makes the original element
13074
+ // have its focus event propagated last, breaking the re-targeting.
13075
+ // Trigger focus in a delay in addition if needed to avoid the issue
13076
+ // See https://github.com/jquery/jquery/issues/4382
13077
+ if ( jqMinor === "3.4." || jqMinor === "3.5." ) {
13078
+ instance._delay( instance._restoreTabbableFocus );
12793
13079
  }
12794
13080
  }
12795
- } );
13081
+ }.bind( this ) );
12796
13082
  }
12797
13083
 
12798
13084
  this.overlay = $( "<div>" )
@@ -12815,7 +13101,7 @@ $.widget( "ui.dialog", {
12815
13101
  var overlays = this.document.data( "ui-dialog-overlays" ) - 1;
12816
13102
 
12817
13103
  if ( !overlays ) {
12818
- this._off( this.document, "focusin" );
13104
+ this.document.off( "focusin.ui-dialog" );
12819
13105
  this.document.removeData( "ui-dialog-overlays" );
12820
13106
  } else {
12821
13107
  this.document.data( "ui-dialog-overlays", overlays );
@@ -12855,7 +13141,7 @@ var widgetsDialog = $.ui.dialog;
12855
13141
 
12856
13142
 
12857
13143
  /*!
12858
- * jQuery UI Droppable 1.12.1
13144
+ * jQuery UI Droppable 1.13.1
12859
13145
  * http://jqueryui.com
12860
13146
  *
12861
13147
  * Copyright jQuery Foundation and other contributors
@@ -12870,9 +13156,8 @@ var widgetsDialog = $.ui.dialog;
12870
13156
  //>>demos: http://jqueryui.com/droppable/
12871
13157
 
12872
13158
 
12873
-
12874
13159
  $.widget( "ui.droppable", {
12875
- version: "1.12.1",
13160
+ version: "1.13.1",
12876
13161
  widgetEventPrefix: "drop",
12877
13162
  options: {
12878
13163
  accept: "*",
@@ -12897,7 +13182,7 @@ $.widget( "ui.droppable", {
12897
13182
  this.isover = false;
12898
13183
  this.isout = true;
12899
13184
 
12900
- this.accept = $.isFunction( accept ) ? accept : function( d ) {
13185
+ this.accept = typeof accept === "function" ? accept : function( d ) {
12901
13186
  return d.is( accept );
12902
13187
  };
12903
13188
 
@@ -12920,7 +13205,9 @@ $.widget( "ui.droppable", {
12920
13205
 
12921
13206
  this._addToManager( o.scope );
12922
13207
 
12923
- o.addClasses && this._addClass( "ui-droppable" );
13208
+ if ( o.addClasses ) {
13209
+ this._addClass( "ui-droppable" );
13210
+ }
12924
13211
 
12925
13212
  },
12926
13213
 
@@ -12949,7 +13236,7 @@ $.widget( "ui.droppable", {
12949
13236
  _setOption: function( key, value ) {
12950
13237
 
12951
13238
  if ( key === "accept" ) {
12952
- this.accept = $.isFunction( value ) ? value : function( d ) {
13239
+ this.accept = typeof value === "function" ? value : function( d ) {
12953
13240
  return d.is( value );
12954
13241
  };
12955
13242
  } else if ( key === "scope" ) {
@@ -13039,14 +13326,15 @@ $.widget( "ui.droppable", {
13039
13326
  inst.accept.call(
13040
13327
  inst.element[ 0 ], ( draggable.currentItem || draggable.element )
13041
13328
  ) &&
13042
- intersect(
13329
+ $.ui.intersect(
13043
13330
  draggable,
13044
13331
  $.extend( inst, { offset: inst.element.offset() } ),
13045
13332
  inst.options.tolerance, event
13046
13333
  )
13047
13334
  ) {
13048
13335
  childrenIntersection = true;
13049
- return false; }
13336
+ return false;
13337
+ }
13050
13338
  } );
13051
13339
  if ( childrenIntersection ) {
13052
13340
  return false;
@@ -13075,7 +13363,7 @@ $.widget( "ui.droppable", {
13075
13363
  },
13076
13364
 
13077
13365
  // Extension points just to make backcompat sane and avoid duplicating logic
13078
- // TODO: Remove in 1.13 along with call to it below
13366
+ // TODO: Remove in 1.14 along with call to it below
13079
13367
  _addHoverClass: function() {
13080
13368
  this._addClass( "ui-droppable-hover" );
13081
13369
  },
@@ -13093,7 +13381,7 @@ $.widget( "ui.droppable", {
13093
13381
  }
13094
13382
  } );
13095
13383
 
13096
- var intersect = $.ui.intersect = ( function() {
13384
+ $.ui.intersect = ( function() {
13097
13385
  function isOverAxis( x, reference, size ) {
13098
13386
  return ( x >= reference ) && ( x < ( reference + size ) );
13099
13387
  }
@@ -13201,7 +13489,7 @@ $.ui.ddmanager = {
13201
13489
  return;
13202
13490
  }
13203
13491
  if ( !this.options.disabled && this.visible &&
13204
- intersect( draggable, this, this.options.tolerance, event ) ) {
13492
+ $.ui.intersect( draggable, this, this.options.tolerance, event ) ) {
13205
13493
  dropped = this._drop.call( this, event ) || dropped;
13206
13494
  }
13207
13495
 
@@ -13242,7 +13530,7 @@ $.ui.ddmanager = {
13242
13530
  }
13243
13531
 
13244
13532
  var parentInstance, scope, parent,
13245
- intersects = intersect( draggable, this, this.options.tolerance, event ),
13533
+ intersects = $.ui.intersect( draggable, this, this.options.tolerance, event ),
13246
13534
  c = !intersects && this.isover ?
13247
13535
  "isout" :
13248
13536
  ( intersects && !this.isover ? "isover" : null );
@@ -13336,7 +13624,7 @@ var widgetsDroppable = $.ui.droppable;
13336
13624
 
13337
13625
 
13338
13626
  /*!
13339
- * jQuery UI Progressbar 1.12.1
13627
+ * jQuery UI Progressbar 1.13.1
13340
13628
  * http://jqueryui.com
13341
13629
  *
13342
13630
  * Copyright jQuery Foundation and other contributors
@@ -13346,9 +13634,9 @@ var widgetsDroppable = $.ui.droppable;
13346
13634
 
13347
13635
  //>>label: Progressbar
13348
13636
  //>>group: Widgets
13349
- // jscs:disable maximumLineLength
13637
+ /* eslint-disable max-len */
13350
13638
  //>>description: Displays a status indicator for loading state, standard percentage, and other progress indicators.
13351
- // jscs:enable maximumLineLength
13639
+ /* eslint-enable max-len */
13352
13640
  //>>docs: http://api.jqueryui.com/progressbar/
13353
13641
  //>>demos: http://jqueryui.com/progressbar/
13354
13642
  //>>css.structure: ../../themes/base/core.css
@@ -13356,9 +13644,8 @@ var widgetsDroppable = $.ui.droppable;
13356
13644
  //>>css.theme: ../../themes/base/theme.css
13357
13645
 
13358
13646
 
13359
-
13360
13647
  var widgetsProgressbar = $.widget( "ui.progressbar", {
13361
- version: "1.12.1",
13648
+ version: "1.13.1",
13362
13649
  options: {
13363
13650
  classes: {
13364
13651
  "ui-progressbar": "ui-corner-all",
@@ -13500,7 +13787,7 @@ var widgetsProgressbar = $.widget( "ui.progressbar", {
13500
13787
 
13501
13788
 
13502
13789
  /*!
13503
- * jQuery UI Selectable 1.12.1
13790
+ * jQuery UI Selectable 1.13.1
13504
13791
  * http://jqueryui.com
13505
13792
  *
13506
13793
  * Copyright jQuery Foundation and other contributors
@@ -13516,9 +13803,8 @@ var widgetsProgressbar = $.widget( "ui.progressbar", {
13516
13803
  //>>css.structure: ../../themes/base/selectable.css
13517
13804
 
13518
13805
 
13519
-
13520
13806
  var widgetsSelectable = $.widget( "ui.selectable", $.ui.mouse, {
13521
- version: "1.12.1",
13807
+ version: "1.13.1",
13522
13808
  options: {
13523
13809
  appendTo: "body",
13524
13810
  autoRefresh: true,
@@ -13669,8 +13955,12 @@ var widgetsSelectable = $.widget( "ui.selectable", $.ui.mouse, {
13669
13955
  x2 = event.pageX,
13670
13956
  y2 = event.pageY;
13671
13957
 
13672
- if ( x1 > x2 ) { tmp = x2; x2 = x1; x1 = tmp; }
13673
- if ( y1 > y2 ) { tmp = y2; y2 = y1; y1 = tmp; }
13958
+ if ( x1 > x2 ) {
13959
+ tmp = x2; x2 = x1; x1 = tmp;
13960
+ }
13961
+ if ( y1 > y2 ) {
13962
+ tmp = y2; y2 = y1; y1 = tmp;
13963
+ }
13674
13964
  this.helper.css( { left: x1, top: y1, width: x2 - x1, height: y2 - y1 } );
13675
13965
 
13676
13966
  this.selectees.each( function() {
@@ -13795,7 +14085,7 @@ var widgetsSelectable = $.widget( "ui.selectable", $.ui.mouse, {
13795
14085
 
13796
14086
 
13797
14087
  /*!
13798
- * jQuery UI Selectmenu 1.12.1
14088
+ * jQuery UI Selectmenu 1.13.1
13799
14089
  * http://jqueryui.com
13800
14090
  *
13801
14091
  * Copyright jQuery Foundation and other contributors
@@ -13805,9 +14095,9 @@ var widgetsSelectable = $.widget( "ui.selectable", $.ui.mouse, {
13805
14095
 
13806
14096
  //>>label: Selectmenu
13807
14097
  //>>group: Widgets
13808
- // jscs:disable maximumLineLength
14098
+ /* eslint-disable max-len */
13809
14099
  //>>description: Duplicates and extends the functionality of a native HTML select element, allowing it to be customizable in behavior and appearance far beyond the limitations of a native select.
13810
- // jscs:enable maximumLineLength
14100
+ /* eslint-enable max-len */
13811
14101
  //>>docs: http://api.jqueryui.com/selectmenu/
13812
14102
  //>>demos: http://jqueryui.com/selectmenu/
13813
14103
  //>>css.structure: ../../themes/base/core.css
@@ -13815,9 +14105,8 @@ var widgetsSelectable = $.widget( "ui.selectable", $.ui.mouse, {
13815
14105
  //>>css.theme: ../../themes/base/theme.css
13816
14106
 
13817
14107
 
13818
-
13819
14108
  var widgetsSelectmenu = $.widget( "ui.selectmenu", [ $.ui.formResetMixin, {
13820
- version: "1.12.1",
14109
+ version: "1.13.1",
13821
14110
  defaultElement: "<select>",
13822
14111
  options: {
13823
14112
  appendTo: null,
@@ -13872,7 +14161,7 @@ var widgetsSelectmenu = $.widget( "ui.selectmenu", [ $.ui.formResetMixin, {
13872
14161
  this.labels = this.element.labels().attr( "for", this.ids.button );
13873
14162
  this._on( this.labels, {
13874
14163
  click: function( event ) {
13875
- this.button.focus();
14164
+ this.button.trigger( "focus" );
13876
14165
  event.preventDefault();
13877
14166
  }
13878
14167
  } );
@@ -14200,7 +14489,7 @@ var widgetsSelectmenu = $.widget( "ui.selectmenu", [ $.ui.formResetMixin, {
14200
14489
  }
14201
14490
 
14202
14491
  if ( !$( event.target ).closest( ".ui-selectmenu-menu, #" +
14203
- $.ui.escapeSelector( this.ids.button ) ).length ) {
14492
+ $.escapeSelector( this.ids.button ) ).length ) {
14204
14493
  this.close( event );
14205
14494
  }
14206
14495
  }
@@ -14431,6 +14720,10 @@ var widgetsSelectmenu = $.widget( "ui.selectmenu", [ $.ui.formResetMixin, {
14431
14720
  var that = this,
14432
14721
  data = [];
14433
14722
  options.each( function( index, item ) {
14723
+ if ( item.hidden ) {
14724
+ return;
14725
+ }
14726
+
14434
14727
  data.push( that._parseOption( $( item ), index ) );
14435
14728
  } );
14436
14729
  this.items = data;
@@ -14461,7 +14754,7 @@ var widgetsSelectmenu = $.widget( "ui.selectmenu", [ $.ui.formResetMixin, {
14461
14754
 
14462
14755
 
14463
14756
  /*!
14464
- * jQuery UI Slider 1.12.1
14757
+ * jQuery UI Slider 1.13.1
14465
14758
  * http://jqueryui.com
14466
14759
  *
14467
14760
  * Copyright jQuery Foundation and other contributors
@@ -14479,9 +14772,8 @@ var widgetsSelectmenu = $.widget( "ui.selectmenu", [ $.ui.formResetMixin, {
14479
14772
  //>>css.theme: ../../themes/base/theme.css
14480
14773
 
14481
14774
 
14482
-
14483
14775
  var widgetsSlider = $.widget( "ui.slider", $.ui.mouse, {
14484
- version: "1.12.1",
14776
+ version: "1.13.1",
14485
14777
  widgetEventPrefix: "slide",
14486
14778
 
14487
14779
  options: {
@@ -14578,7 +14870,7 @@ var widgetsSlider = $.widget( "ui.slider", $.ui.mouse, {
14578
14870
  options.values = [ this._valueMin(), this._valueMin() ];
14579
14871
  } else if ( options.values.length && options.values.length !== 2 ) {
14580
14872
  options.values = [ options.values[ 0 ], options.values[ 0 ] ];
14581
- } else if ( $.isArray( options.values ) ) {
14873
+ } else if ( Array.isArray( options.values ) ) {
14582
14874
  options.values = options.values.slice( 0 );
14583
14875
  }
14584
14876
  }
@@ -14841,7 +15133,7 @@ var widgetsSlider = $.widget( "ui.slider", $.ui.mouse, {
14841
15133
  }
14842
15134
 
14843
15135
  if ( arguments.length ) {
14844
- if ( $.isArray( arguments[ 0 ] ) ) {
15136
+ if ( Array.isArray( arguments[ 0 ] ) ) {
14845
15137
  vals = this.options.values;
14846
15138
  newValues = arguments[ 0 ];
14847
15139
  for ( i = 0; i < vals.length; i += 1 ) {
@@ -14875,7 +15167,7 @@ var widgetsSlider = $.widget( "ui.slider", $.ui.mouse, {
14875
15167
  }
14876
15168
  }
14877
15169
 
14878
- if ( $.isArray( this.options.values ) ) {
15170
+ if ( Array.isArray( this.options.values ) ) {
14879
15171
  valsLength = this.options.values.length;
14880
15172
  }
14881
15173
 
@@ -15197,7 +15489,7 @@ var widgetsSlider = $.widget( "ui.slider", $.ui.mouse, {
15197
15489
 
15198
15490
 
15199
15491
  /*!
15200
- * jQuery UI Sortable 1.12.1
15492
+ * jQuery UI Sortable 1.13.1
15201
15493
  * http://jqueryui.com
15202
15494
  *
15203
15495
  * Copyright jQuery Foundation and other contributors
@@ -15213,9 +15505,8 @@ var widgetsSlider = $.widget( "ui.slider", $.ui.mouse, {
15213
15505
  //>>css.structure: ../../themes/base/sortable.css
15214
15506
 
15215
15507
 
15216
-
15217
15508
  var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
15218
- version: "1.12.1",
15509
+ version: "1.13.1",
15219
15510
  widgetEventPrefix: "sort",
15220
15511
  ready: false,
15221
15512
  options: {
@@ -15375,6 +15666,11 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
15375
15666
  // mouseCapture
15376
15667
  this.refreshPositions();
15377
15668
 
15669
+ //Prepare the dragged items parent
15670
+ this.appendTo = $( o.appendTo !== "parent" ?
15671
+ o.appendTo :
15672
+ this.currentItem.parent() );
15673
+
15378
15674
  //Create and append the visible helper
15379
15675
  this.helper = this._createHelper( event );
15380
15676
 
@@ -15389,9 +15685,6 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
15389
15685
  //Cache the margins of the original element
15390
15686
  this._cacheMargins();
15391
15687
 
15392
- //Get the next scrolling parent
15393
- this.scrollParent = this.helper.scrollParent();
15394
-
15395
15688
  //The element's absolute position on the page minus margins
15396
15689
  this.offset = this.currentItem.offset();
15397
15690
  this.offset = {
@@ -15404,25 +15697,22 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
15404
15697
  left: event.pageX - this.offset.left,
15405
15698
  top: event.pageY - this.offset.top
15406
15699
  },
15407
- parent: this._getParentOffset(),
15408
15700
 
15409
15701
  // This is a relative to absolute position minus the actual position calculation -
15410
15702
  // only used for relative positioned helper
15411
15703
  relative: this._getRelativeOffset()
15412
15704
  } );
15413
15705
 
15414
- // Only after we got the offset, we can change the helper's position to absolute
15706
+ // After we get the helper offset, but before we get the parent offset we can
15707
+ // change the helper's position to absolute
15415
15708
  // TODO: Still need to figure out a way to make relative sorting possible
15416
15709
  this.helper.css( "position", "absolute" );
15417
15710
  this.cssPosition = this.helper.css( "position" );
15418
15711
 
15419
- //Generate the original position
15420
- this.originalPosition = this._generatePosition( event );
15421
- this.originalPageX = event.pageX;
15422
- this.originalPageY = event.pageY;
15423
-
15424
15712
  //Adjust the mouse offset relative to the helper if "cursorAt" is supplied
15425
- ( o.cursorAt && this._adjustOffsetFromHelper( o.cursorAt ) );
15713
+ if ( o.cursorAt ) {
15714
+ this._adjustOffsetFromHelper( o.cursorAt );
15715
+ }
15426
15716
 
15427
15717
  //Cache the former DOM position
15428
15718
  this.domPosition = {
@@ -15439,6 +15729,13 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
15439
15729
  //Create the placeholder
15440
15730
  this._createPlaceholder();
15441
15731
 
15732
+ //Get the next scrolling parent
15733
+ this.scrollParent = this.placeholder.scrollParent();
15734
+
15735
+ $.extend( this.offset, {
15736
+ parent: this._getParentOffset()
15737
+ } );
15738
+
15442
15739
  //Set a containment if given in the options
15443
15740
  if ( o.containment ) {
15444
15741
  this._setContainment();
@@ -15455,13 +15752,9 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
15455
15752
  $( "<style>*{ cursor: " + o.cursor + " !important; }</style>" ).appendTo( body );
15456
15753
  }
15457
15754
 
15458
- if ( o.opacity ) { // opacity option
15459
- if ( this.helper.css( "opacity" ) ) {
15460
- this._storedOpacity = this.helper.css( "opacity" );
15461
- }
15462
- this.helper.css( "opacity", o.opacity );
15463
- }
15464
-
15755
+ // We need to make sure to grab the zIndex before setting the
15756
+ // opacity, because setting the opacity to anything lower than 1
15757
+ // causes the zIndex to change from "auto" to 0.
15465
15758
  if ( o.zIndex ) { // zIndex option
15466
15759
  if ( this.helper.css( "zIndex" ) ) {
15467
15760
  this._storedZIndex = this.helper.css( "zIndex" );
@@ -15469,6 +15762,13 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
15469
15762
  this.helper.css( "zIndex", o.zIndex );
15470
15763
  }
15471
15764
 
15765
+ if ( o.opacity ) { // opacity option
15766
+ if ( this.helper.css( "opacity" ) ) {
15767
+ this._storedOpacity = this.helper.css( "opacity" );
15768
+ }
15769
+ this.helper.css( "opacity", o.opacity );
15770
+ }
15771
+
15472
15772
  //Prepare scrolling
15473
15773
  if ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
15474
15774
  this.scrollParent[ 0 ].tagName !== "HTML" ) {
@@ -15503,77 +15803,82 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
15503
15803
 
15504
15804
  this._addClass( this.helper, "ui-sortable-helper" );
15505
15805
 
15506
- // Execute the drag once - this causes the helper not to be visiblebefore getting its
15507
- // correct position
15508
- this._mouseDrag( event );
15509
- return true;
15806
+ //Move the helper, if needed
15807
+ if ( !this.helper.parent().is( this.appendTo ) ) {
15808
+ this.helper.detach().appendTo( this.appendTo );
15510
15809
 
15511
- },
15810
+ //Update position
15811
+ this.offset.parent = this._getParentOffset();
15812
+ }
15512
15813
 
15513
- _mouseDrag: function( event ) {
15514
- var i, item, itemElement, intersection,
15515
- o = this.options,
15516
- scrolled = false;
15814
+ //Generate the original position
15815
+ this.position = this.originalPosition = this._generatePosition( event );
15816
+ this.originalPageX = event.pageX;
15817
+ this.originalPageY = event.pageY;
15818
+ this.lastPositionAbs = this.positionAbs = this._convertPositionTo( "absolute" );
15517
15819
 
15518
- //Compute the helpers position
15519
- this.position = this._generatePosition( event );
15520
- this.positionAbs = this._convertPositionTo( "absolute" );
15820
+ this._mouseDrag( event );
15521
15821
 
15522
- if ( !this.lastPositionAbs ) {
15523
- this.lastPositionAbs = this.positionAbs;
15524
- }
15822
+ return true;
15525
15823
 
15526
- //Do scrolling
15527
- if ( this.options.scroll ) {
15528
- if ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
15529
- this.scrollParent[ 0 ].tagName !== "HTML" ) {
15824
+ },
15530
15825
 
15531
- if ( ( this.overflowOffset.top + this.scrollParent[ 0 ].offsetHeight ) -
15532
- event.pageY < o.scrollSensitivity ) {
15533
- this.scrollParent[ 0 ].scrollTop =
15534
- scrolled = this.scrollParent[ 0 ].scrollTop + o.scrollSpeed;
15535
- } else if ( event.pageY - this.overflowOffset.top < o.scrollSensitivity ) {
15536
- this.scrollParent[ 0 ].scrollTop =
15537
- scrolled = this.scrollParent[ 0 ].scrollTop - o.scrollSpeed;
15538
- }
15826
+ _scroll: function( event ) {
15827
+ var o = this.options,
15828
+ scrolled = false;
15539
15829
 
15540
- if ( ( this.overflowOffset.left + this.scrollParent[ 0 ].offsetWidth ) -
15541
- event.pageX < o.scrollSensitivity ) {
15542
- this.scrollParent[ 0 ].scrollLeft = scrolled =
15543
- this.scrollParent[ 0 ].scrollLeft + o.scrollSpeed;
15544
- } else if ( event.pageX - this.overflowOffset.left < o.scrollSensitivity ) {
15545
- this.scrollParent[ 0 ].scrollLeft = scrolled =
15546
- this.scrollParent[ 0 ].scrollLeft - o.scrollSpeed;
15547
- }
15830
+ if ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
15831
+ this.scrollParent[ 0 ].tagName !== "HTML" ) {
15548
15832
 
15549
- } else {
15833
+ if ( ( this.overflowOffset.top + this.scrollParent[ 0 ].offsetHeight ) -
15834
+ event.pageY < o.scrollSensitivity ) {
15835
+ this.scrollParent[ 0 ].scrollTop =
15836
+ scrolled = this.scrollParent[ 0 ].scrollTop + o.scrollSpeed;
15837
+ } else if ( event.pageY - this.overflowOffset.top < o.scrollSensitivity ) {
15838
+ this.scrollParent[ 0 ].scrollTop =
15839
+ scrolled = this.scrollParent[ 0 ].scrollTop - o.scrollSpeed;
15840
+ }
15550
15841
 
15551
- if ( event.pageY - this.document.scrollTop() < o.scrollSensitivity ) {
15552
- scrolled = this.document.scrollTop( this.document.scrollTop() - o.scrollSpeed );
15553
- } else if ( this.window.height() - ( event.pageY - this.document.scrollTop() ) <
15554
- o.scrollSensitivity ) {
15555
- scrolled = this.document.scrollTop( this.document.scrollTop() + o.scrollSpeed );
15556
- }
15842
+ if ( ( this.overflowOffset.left + this.scrollParent[ 0 ].offsetWidth ) -
15843
+ event.pageX < o.scrollSensitivity ) {
15844
+ this.scrollParent[ 0 ].scrollLeft = scrolled =
15845
+ this.scrollParent[ 0 ].scrollLeft + o.scrollSpeed;
15846
+ } else if ( event.pageX - this.overflowOffset.left < o.scrollSensitivity ) {
15847
+ this.scrollParent[ 0 ].scrollLeft = scrolled =
15848
+ this.scrollParent[ 0 ].scrollLeft - o.scrollSpeed;
15849
+ }
15557
15850
 
15558
- if ( event.pageX - this.document.scrollLeft() < o.scrollSensitivity ) {
15559
- scrolled = this.document.scrollLeft(
15560
- this.document.scrollLeft() - o.scrollSpeed
15561
- );
15562
- } else if ( this.window.width() - ( event.pageX - this.document.scrollLeft() ) <
15563
- o.scrollSensitivity ) {
15564
- scrolled = this.document.scrollLeft(
15565
- this.document.scrollLeft() + o.scrollSpeed
15566
- );
15567
- }
15851
+ } else {
15568
15852
 
15853
+ if ( event.pageY - this.document.scrollTop() < o.scrollSensitivity ) {
15854
+ scrolled = this.document.scrollTop( this.document.scrollTop() - o.scrollSpeed );
15855
+ } else if ( this.window.height() - ( event.pageY - this.document.scrollTop() ) <
15856
+ o.scrollSensitivity ) {
15857
+ scrolled = this.document.scrollTop( this.document.scrollTop() + o.scrollSpeed );
15569
15858
  }
15570
15859
 
15571
- if ( scrolled !== false && $.ui.ddmanager && !o.dropBehaviour ) {
15572
- $.ui.ddmanager.prepareOffsets( this, event );
15860
+ if ( event.pageX - this.document.scrollLeft() < o.scrollSensitivity ) {
15861
+ scrolled = this.document.scrollLeft(
15862
+ this.document.scrollLeft() - o.scrollSpeed
15863
+ );
15864
+ } else if ( this.window.width() - ( event.pageX - this.document.scrollLeft() ) <
15865
+ o.scrollSensitivity ) {
15866
+ scrolled = this.document.scrollLeft(
15867
+ this.document.scrollLeft() + o.scrollSpeed
15868
+ );
15573
15869
  }
15870
+
15574
15871
  }
15575
15872
 
15576
- //Regenerate the absolute position used for position checks
15873
+ return scrolled;
15874
+ },
15875
+
15876
+ _mouseDrag: function( event ) {
15877
+ var i, item, itemElement, intersection,
15878
+ o = this.options;
15879
+
15880
+ //Compute the helpers position
15881
+ this.position = this._generatePosition( event );
15577
15882
  this.positionAbs = this._convertPositionTo( "absolute" );
15578
15883
 
15579
15884
  //Set the helper position
@@ -15584,6 +15889,24 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
15584
15889
  this.helper[ 0 ].style.top = this.position.top + "px";
15585
15890
  }
15586
15891
 
15892
+ //Do scrolling
15893
+ if ( o.scroll ) {
15894
+ if ( this._scroll( event ) !== false ) {
15895
+
15896
+ //Update item positions used in position checks
15897
+ this._refreshItemPositions( true );
15898
+
15899
+ if ( $.ui.ddmanager && !o.dropBehaviour ) {
15900
+ $.ui.ddmanager.prepareOffsets( this, event );
15901
+ }
15902
+ }
15903
+ }
15904
+
15905
+ this.dragDirection = {
15906
+ vertical: this._getDragVerticalDirection(),
15907
+ horizontal: this._getDragHorizontalDirection()
15908
+ };
15909
+
15587
15910
  //Rearrange
15588
15911
  for ( i = this.items.length - 1; i >= 0; i-- ) {
15589
15912
 
@@ -15610,7 +15933,8 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
15610
15933
  // no useless actions that have been done before
15611
15934
  // no action if the item moved is the parent of the item checked
15612
15935
  if ( itemElement !== this.currentItem[ 0 ] &&
15613
- this.placeholder[ intersection === 1 ? "next" : "prev" ]()[ 0 ] !== itemElement &&
15936
+ this.placeholder[ intersection === 1 ?
15937
+ "next" : "prev" ]()[ 0 ] !== itemElement &&
15614
15938
  !$.contains( this.placeholder[ 0 ], itemElement ) &&
15615
15939
  ( this.options.type === "semi-dynamic" ?
15616
15940
  !$.contains( this.element[ 0 ], itemElement ) :
@@ -15620,7 +15944,8 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
15620
15944
 
15621
15945
  this.direction = intersection === 1 ? "down" : "up";
15622
15946
 
15623
- if ( this.options.tolerance === "pointer" || this._intersectsWithSides( item ) ) {
15947
+ if ( this.options.tolerance === "pointer" ||
15948
+ this._intersectsWithSides( item ) ) {
15624
15949
  this._rearrange( event, item );
15625
15950
  } else {
15626
15951
  break;
@@ -15836,12 +16161,12 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
15836
16161
  return false;
15837
16162
  }
15838
16163
 
15839
- verticalDirection = this._getDragVerticalDirection();
15840
- horizontalDirection = this._getDragHorizontalDirection();
16164
+ verticalDirection = this.dragDirection.vertical;
16165
+ horizontalDirection = this.dragDirection.horizontal;
15841
16166
 
15842
16167
  return this.floating ?
15843
- ( ( horizontalDirection === "right" || verticalDirection === "down" ) ? 2 : 1 )
15844
- : ( verticalDirection && ( verticalDirection === "down" ? 2 : 1 ) );
16168
+ ( ( horizontalDirection === "right" || verticalDirection === "down" ) ? 2 : 1 ) :
16169
+ ( verticalDirection && ( verticalDirection === "down" ? 2 : 1 ) );
15845
16170
 
15846
16171
  },
15847
16172
 
@@ -15851,8 +16176,8 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
15851
16176
  this.offset.click.top, item.top + ( item.height / 2 ), item.height ),
15852
16177
  isOverRightHalf = this._isOverAxis( this.positionAbs.left +
15853
16178
  this.offset.click.left, item.left + ( item.width / 2 ), item.width ),
15854
- verticalDirection = this._getDragVerticalDirection(),
15855
- horizontalDirection = this._getDragHorizontalDirection();
16179
+ verticalDirection = this.dragDirection.vertical,
16180
+ horizontalDirection = this.dragDirection.horizontal;
15856
16181
 
15857
16182
  if ( this.floating && horizontalDirection ) {
15858
16183
  return ( ( horizontalDirection === "right" && isOverRightHalf ) ||
@@ -15901,7 +16226,7 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
15901
16226
  for ( j = cur.length - 1; j >= 0; j-- ) {
15902
16227
  inst = $.data( cur[ j ], this.widgetFullName );
15903
16228
  if ( inst && inst !== this && !inst.options.disabled ) {
15904
- queries.push( [ $.isFunction( inst.options.items ) ?
16229
+ queries.push( [ typeof inst.options.items === "function" ?
15905
16230
  inst.options.items.call( inst.element ) :
15906
16231
  $( inst.options.items, inst.element )
15907
16232
  .not( ".ui-sortable-helper" )
@@ -15911,7 +16236,7 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
15911
16236
  }
15912
16237
  }
15913
16238
 
15914
- queries.push( [ $.isFunction( this.options.items ) ?
16239
+ queries.push( [ typeof this.options.items === "function" ?
15915
16240
  this.options.items
15916
16241
  .call( this.element, null, { options: this.options, item: this.currentItem } ) :
15917
16242
  $( this.options.items, this.element )
@@ -15951,7 +16276,7 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
15951
16276
 
15952
16277
  var i, j, cur, inst, targetData, _queries, item, queriesLength,
15953
16278
  items = this.items,
15954
- queries = [ [ $.isFunction( this.options.items ) ?
16279
+ queries = [ [ typeof this.options.items === "function" ?
15955
16280
  this.options.items.call( this.element[ 0 ], event, { item: this.currentItem } ) :
15956
16281
  $( this.options.items, this.element ), this ] ],
15957
16282
  connectWith = this._connectWith();
@@ -15963,7 +16288,7 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
15963
16288
  for ( j = cur.length - 1; j >= 0; j-- ) {
15964
16289
  inst = $.data( cur[ j ], this.widgetFullName );
15965
16290
  if ( inst && inst !== this && !inst.options.disabled ) {
15966
- queries.push( [ $.isFunction( inst.options.items ) ?
16291
+ queries.push( [ typeof inst.options.items === "function" ?
15967
16292
  inst.options.items
15968
16293
  .call( inst.element[ 0 ], event, { item: this.currentItem } ) :
15969
16294
  $( inst.options.items, inst.element ), inst ] );
@@ -15994,26 +16319,14 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
15994
16319
 
15995
16320
  },
15996
16321
 
15997
- refreshPositions: function( fast ) {
15998
-
15999
- // Determine whether items are being displayed horizontally
16000
- this.floating = this.items.length ?
16001
- this.options.axis === "x" || this._isFloating( this.items[ 0 ].item ) :
16002
- false;
16003
-
16004
- //This has to be redone because due to the item being moved out/into the offsetParent,
16005
- // the offsetParent's position will change
16006
- if ( this.offsetParent && this.helper ) {
16007
- this.offset.parent = this._getParentOffset();
16008
- }
16009
-
16322
+ _refreshItemPositions: function( fast ) {
16010
16323
  var i, item, t, p;
16011
16324
 
16012
16325
  for ( i = this.items.length - 1; i >= 0; i-- ) {
16013
16326
  item = this.items[ i ];
16014
16327
 
16015
16328
  //We ignore calculating positions of all connected containers when we're not over them
16016
- if ( item.instance !== this.currentContainer && this.currentContainer &&
16329
+ if ( this.currentContainer && item.instance !== this.currentContainer &&
16017
16330
  item.item[ 0 ] !== this.currentItem[ 0 ] ) {
16018
16331
  continue;
16019
16332
  }
@@ -16031,6 +16344,24 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
16031
16344
  item.left = p.left;
16032
16345
  item.top = p.top;
16033
16346
  }
16347
+ },
16348
+
16349
+ refreshPositions: function( fast ) {
16350
+
16351
+ // Determine whether items are being displayed horizontally
16352
+ this.floating = this.items.length ?
16353
+ this.options.axis === "x" || this._isFloating( this.items[ 0 ].item ) :
16354
+ false;
16355
+
16356
+ // This has to be redone because due to the item being moved out/into the offsetParent,
16357
+ // the offsetParent's position will change
16358
+ if ( this.offsetParent && this.helper ) {
16359
+ this.offset.parent = this._getParentOffset();
16360
+ }
16361
+
16362
+ this._refreshItemPositions( fast );
16363
+
16364
+ var i, p;
16034
16365
 
16035
16366
  if ( this.options.custom && this.options.custom.refreshContainers ) {
16036
16367
  this.options.custom.refreshContainers.call( this );
@@ -16051,20 +16382,20 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
16051
16382
 
16052
16383
  _createPlaceholder: function( that ) {
16053
16384
  that = that || this;
16054
- var className,
16385
+ var className, nodeName,
16055
16386
  o = that.options;
16056
16387
 
16057
16388
  if ( !o.placeholder || o.placeholder.constructor === String ) {
16058
16389
  className = o.placeholder;
16390
+ nodeName = that.currentItem[ 0 ].nodeName.toLowerCase();
16059
16391
  o.placeholder = {
16060
16392
  element: function() {
16061
16393
 
16062
- var nodeName = that.currentItem[ 0 ].nodeName.toLowerCase(),
16063
- element = $( "<" + nodeName + ">", that.document[ 0 ] );
16394
+ var element = $( "<" + nodeName + ">", that.document[ 0 ] );
16064
16395
 
16065
- that._addClass( element, "ui-sortable-placeholder",
16066
- className || that.currentItem[ 0 ].className )
16067
- ._removeClass( element, "ui-sortable-helper" );
16396
+ that._addClass( element, "ui-sortable-placeholder",
16397
+ className || that.currentItem[ 0 ].className )
16398
+ ._removeClass( element, "ui-sortable-helper" );
16068
16399
 
16069
16400
  if ( nodeName === "tbody" ) {
16070
16401
  that._createTrPlaceholder(
@@ -16093,9 +16424,15 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
16093
16424
  return;
16094
16425
  }
16095
16426
 
16096
- //If the element doesn't have a actual height by itself (without styles coming
16097
- // from a stylesheet), it receives the inline height from the dragged item
16098
- if ( !p.height() ) {
16427
+ // If the element doesn't have a actual height or width by itself (without
16428
+ // styles coming from a stylesheet), it receives the inline height and width
16429
+ // from the dragged item. Or, if it's a tbody or tr, it's going to have a height
16430
+ // anyway since we're populating them with <td>s above, but they're unlikely to
16431
+ // be the correct height on their own if the row heights are dynamic, so we'll
16432
+ // always assign the height of the dragged item given forcePlaceholderSize
16433
+ // is true.
16434
+ if ( !p.height() || ( o.forcePlaceholderSize &&
16435
+ ( nodeName === "tbody" || nodeName === "tr" ) ) ) {
16099
16436
  p.height(
16100
16437
  that.currentItem.innerHeight() -
16101
16438
  parseInt( that.currentItem.css( "paddingTop" ) || 0, 10 ) -
@@ -16228,9 +16565,11 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
16228
16565
  return;
16229
16566
  }
16230
16567
 
16231
- itemWithLeastDistance ?
16232
- this._rearrange( event, itemWithLeastDistance, null, true ) :
16568
+ if ( itemWithLeastDistance ) {
16569
+ this._rearrange( event, itemWithLeastDistance, null, true );
16570
+ } else {
16233
16571
  this._rearrange( event, null, this.containers[ innermostIndex ].element, true );
16572
+ }
16234
16573
  this._trigger( "change", event, this._uiHash() );
16235
16574
  this.containers[ innermostIndex ]._trigger( "change", event, this._uiHash( this ) );
16236
16575
  this.currentContainer = this.containers[ innermostIndex ];
@@ -16238,6 +16577,15 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
16238
16577
  //Update the placeholder
16239
16578
  this.options.placeholder.update( this.currentContainer, this.placeholder );
16240
16579
 
16580
+ //Update scrollParent
16581
+ this.scrollParent = this.placeholder.scrollParent();
16582
+
16583
+ //Update overflowOffset
16584
+ if ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
16585
+ this.scrollParent[ 0 ].tagName !== "HTML" ) {
16586
+ this.overflowOffset = this.scrollParent.offset();
16587
+ }
16588
+
16241
16589
  this.containers[ innermostIndex ]._trigger( "over", event, this._uiHash( this ) );
16242
16590
  this.containers[ innermostIndex ].containerCache.over = 1;
16243
16591
  }
@@ -16247,15 +16595,13 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
16247
16595
  _createHelper: function( event ) {
16248
16596
 
16249
16597
  var o = this.options,
16250
- helper = $.isFunction( o.helper ) ?
16598
+ helper = typeof o.helper === "function" ?
16251
16599
  $( o.helper.apply( this.element[ 0 ], [ event, this.currentItem ] ) ) :
16252
16600
  ( o.helper === "clone" ? this.currentItem.clone() : this.currentItem );
16253
16601
 
16254
16602
  //Add the helper to the DOM if that didn't happen already
16255
16603
  if ( !helper.parents( "body" ).length ) {
16256
- $( o.appendTo !== "parent" ?
16257
- o.appendTo :
16258
- this.currentItem[ 0 ].parentNode )[ 0 ].appendChild( helper[ 0 ] );
16604
+ this.appendTo[ 0 ].appendChild( helper[ 0 ] );
16259
16605
  }
16260
16606
 
16261
16607
  if ( helper[ 0 ] === this.currentItem[ 0 ] ) {
@@ -16283,7 +16629,7 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
16283
16629
  if ( typeof obj === "string" ) {
16284
16630
  obj = obj.split( " " );
16285
16631
  }
16286
- if ( $.isArray( obj ) ) {
16632
+ if ( Array.isArray( obj ) ) {
16287
16633
  obj = { left: +obj[ 0 ], top: +obj[ 1 ] || 0 };
16288
16634
  }
16289
16635
  if ( "left" in obj ) {
@@ -16563,9 +16909,12 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
16563
16909
 
16564
16910
  _rearrange: function( event, i, a, hardRefresh ) {
16565
16911
 
16566
- a ? a[ 0 ].appendChild( this.placeholder[ 0 ] ) :
16912
+ if ( a ) {
16913
+ a[ 0 ].appendChild( this.placeholder[ 0 ] );
16914
+ } else {
16567
16915
  i.item[ 0 ].parentNode.insertBefore( this.placeholder[ 0 ],
16568
16916
  ( this.direction === "down" ? i.item[ 0 ] : i.item[ 0 ].nextSibling ) );
16917
+ }
16569
16918
 
16570
16919
  //Various things done here to improve the performance:
16571
16920
  // 1. we create a setTimeout, that calls refreshPositions
@@ -16733,7 +17082,7 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
16733
17082
 
16734
17083
 
16735
17084
  /*!
16736
- * jQuery UI Spinner 1.12.1
17085
+ * jQuery UI Spinner 1.13.1
16737
17086
  * http://jqueryui.com
16738
17087
  *
16739
17088
  * Copyright jQuery Foundation and other contributors
@@ -16751,8 +17100,7 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
16751
17100
  //>>css.theme: ../../themes/base/theme.css
16752
17101
 
16753
17102
 
16754
-
16755
- function spinnerModifer( fn ) {
17103
+ function spinnerModifier( fn ) {
16756
17104
  return function() {
16757
17105
  var previous = this.element.val();
16758
17106
  fn.apply( this, arguments );
@@ -16764,7 +17112,7 @@ function spinnerModifer( fn ) {
16764
17112
  }
16765
17113
 
16766
17114
  $.widget( "ui.spinner", {
16767
- version: "1.12.1",
17115
+ version: "1.13.1",
16768
17116
  defaultElement: "<input>",
16769
17117
  widgetEventPrefix: "spin",
16770
17118
  options: {
@@ -16857,9 +17205,13 @@ $.widget( "ui.spinner", {
16857
17205
  }
16858
17206
  },
16859
17207
  mousewheel: function( event, delta ) {
16860
- if ( !delta ) {
17208
+ var activeElement = $.ui.safeActiveElement( this.document[ 0 ] );
17209
+ var isActive = this.element[ 0 ] === activeElement;
17210
+
17211
+ if ( !isActive || !delta ) {
16861
17212
  return;
16862
17213
  }
17214
+
16863
17215
  if ( !this.spinning && !this._start( event ) ) {
16864
17216
  return false;
16865
17217
  }
@@ -17057,7 +17409,7 @@ $.widget( "ui.spinner", {
17057
17409
  var incremental = this.options.incremental;
17058
17410
 
17059
17411
  if ( incremental ) {
17060
- return $.isFunction( incremental ) ?
17412
+ return typeof incremental === "function" ?
17061
17413
  incremental( i ) :
17062
17414
  Math.floor( i * i * i / 50000 - i * i / 500 + 17 * i / 200 + 1 );
17063
17415
  }
@@ -17155,7 +17507,7 @@ $.widget( "ui.spinner", {
17155
17507
  this.buttons.button( value ? "disable" : "enable" );
17156
17508
  },
17157
17509
 
17158
- _setOptions: spinnerModifer( function( options ) {
17510
+ _setOptions: spinnerModifier( function( options ) {
17159
17511
  this._super( options );
17160
17512
  } ),
17161
17513
 
@@ -17222,7 +17574,7 @@ $.widget( "ui.spinner", {
17222
17574
  this.uiSpinner.replaceWith( this.element );
17223
17575
  },
17224
17576
 
17225
- stepUp: spinnerModifer( function( steps ) {
17577
+ stepUp: spinnerModifier( function( steps ) {
17226
17578
  this._stepUp( steps );
17227
17579
  } ),
17228
17580
  _stepUp: function( steps ) {
@@ -17232,7 +17584,7 @@ $.widget( "ui.spinner", {
17232
17584
  }
17233
17585
  },
17234
17586
 
17235
- stepDown: spinnerModifer( function( steps ) {
17587
+ stepDown: spinnerModifier( function( steps ) {
17236
17588
  this._stepDown( steps );
17237
17589
  } ),
17238
17590
  _stepDown: function( steps ) {
@@ -17242,11 +17594,11 @@ $.widget( "ui.spinner", {
17242
17594
  }
17243
17595
  },
17244
17596
 
17245
- pageUp: spinnerModifer( function( pages ) {
17597
+ pageUp: spinnerModifier( function( pages ) {
17246
17598
  this._stepUp( ( pages || 1 ) * this.options.page );
17247
17599
  } ),
17248
17600
 
17249
- pageDown: spinnerModifer( function( pages ) {
17601
+ pageDown: spinnerModifier( function( pages ) {
17250
17602
  this._stepDown( ( pages || 1 ) * this.options.page );
17251
17603
  } ),
17252
17604
 
@@ -17254,7 +17606,7 @@ $.widget( "ui.spinner", {
17254
17606
  if ( !arguments.length ) {
17255
17607
  return this._parse( this.element.val() );
17256
17608
  }
17257
- spinnerModifer( this._value ).call( this, newVal );
17609
+ spinnerModifier( this._value ).call( this, newVal );
17258
17610
  },
17259
17611
 
17260
17612
  widget: function() {
@@ -17291,7 +17643,7 @@ var widgetsSpinner = $.ui.spinner;
17291
17643
 
17292
17644
 
17293
17645
  /*!
17294
- * jQuery UI Tabs 1.12.1
17646
+ * jQuery UI Tabs 1.13.1
17295
17647
  * http://jqueryui.com
17296
17648
  *
17297
17649
  * Copyright jQuery Foundation and other contributors
@@ -17309,9 +17661,8 @@ var widgetsSpinner = $.ui.spinner;
17309
17661
  //>>css.theme: ../../themes/base/theme.css
17310
17662
 
17311
17663
 
17312
-
17313
17664
  $.widget( "ui.tabs", {
17314
- version: "1.12.1",
17665
+ version: "1.13.1",
17315
17666
  delay: 300,
17316
17667
  options: {
17317
17668
  active: null,
@@ -17369,8 +17720,8 @@ $.widget( "ui.tabs", {
17369
17720
 
17370
17721
  // Take disabling tabs via class attribute from HTML
17371
17722
  // into account and update option properly.
17372
- if ( $.isArray( options.disabled ) ) {
17373
- options.disabled = $.unique( options.disabled.concat(
17723
+ if ( Array.isArray( options.disabled ) ) {
17724
+ options.disabled = $.uniqueSort( options.disabled.concat(
17374
17725
  $.map( this.tabs.filter( ".ui-state-disabled" ), function( li ) {
17375
17726
  return that.tabs.index( li );
17376
17727
  } )
@@ -17705,7 +18056,6 @@ $.widget( "ui.tabs", {
17705
18056
  return $( "a", this )[ 0 ];
17706
18057
  } )
17707
18058
  .attr( {
17708
- role: "presentation",
17709
18059
  tabIndex: -1
17710
18060
  } );
17711
18061
  this._addClass( this.anchors, "ui-tabs-anchor" );
@@ -17777,7 +18127,7 @@ $.widget( "ui.tabs", {
17777
18127
  _setOptionDisabled: function( disabled ) {
17778
18128
  var currentItem, li, i;
17779
18129
 
17780
- if ( $.isArray( disabled ) ) {
18130
+ if ( Array.isArray( disabled ) ) {
17781
18131
  if ( !disabled.length ) {
17782
18132
  disabled = false;
17783
18133
  } else if ( disabled.length === this.anchors.length ) {
@@ -18008,7 +18358,7 @@ $.widget( "ui.tabs", {
18008
18358
  // meta-function to give users option to provide a href string instead of a numerical index.
18009
18359
  if ( typeof index === "string" ) {
18010
18360
  index = this.anchors.index( this.anchors.filter( "[href$='" +
18011
- $.ui.escapeSelector( index ) + "']" ) );
18361
+ $.escapeSelector( index ) + "']" ) );
18012
18362
  }
18013
18363
 
18014
18364
  return index;
@@ -18065,7 +18415,7 @@ $.widget( "ui.tabs", {
18065
18415
  disabled = false;
18066
18416
  } else {
18067
18417
  index = this._getIndex( index );
18068
- if ( $.isArray( disabled ) ) {
18418
+ if ( Array.isArray( disabled ) ) {
18069
18419
  disabled = $.map( disabled, function( num ) {
18070
18420
  return num !== index ? num : null;
18071
18421
  } );
@@ -18091,7 +18441,7 @@ $.widget( "ui.tabs", {
18091
18441
  if ( $.inArray( index, disabled ) !== -1 ) {
18092
18442
  return;
18093
18443
  }
18094
- if ( $.isArray( disabled ) ) {
18444
+ if ( Array.isArray( disabled ) ) {
18095
18445
  disabled = $.merge( [ index ], disabled ).sort();
18096
18446
  } else {
18097
18447
  disabled = [ index ];
@@ -18197,7 +18547,7 @@ var widgetsTabs = $.ui.tabs;
18197
18547
 
18198
18548
 
18199
18549
  /*!
18200
- * jQuery UI Tooltip 1.12.1
18550
+ * jQuery UI Tooltip 1.13.1
18201
18551
  * http://jqueryui.com
18202
18552
  *
18203
18553
  * Copyright jQuery Foundation and other contributors
@@ -18215,18 +18565,14 @@ var widgetsTabs = $.ui.tabs;
18215
18565
  //>>css.theme: ../../themes/base/theme.css
18216
18566
 
18217
18567
 
18218
-
18219
18568
  $.widget( "ui.tooltip", {
18220
- version: "1.12.1",
18569
+ version: "1.13.1",
18221
18570
  options: {
18222
18571
  classes: {
18223
18572
  "ui-tooltip": "ui-corner-all ui-widget-shadow"
18224
18573
  },
18225
18574
  content: function() {
18226
-
18227
- // support: IE<9, Opera in jQuery <1.7
18228
- // .text() can't accept undefined, so coerce to a string
18229
- var title = $( this ).attr( "title" ) || "";
18575
+ var title = $( this ).attr( "title" );
18230
18576
 
18231
18577
  // Escape title, since we're going from an attribute to raw HTML
18232
18578
  return $( "<a>" ).text( title ).html();
@@ -18253,7 +18599,7 @@ $.widget( "ui.tooltip", {
18253
18599
  describedby.push( id );
18254
18600
  elem
18255
18601
  .data( "ui-tooltip-id", id )
18256
- .attr( "aria-describedby", $.trim( describedby.join( " " ) ) );
18602
+ .attr( "aria-describedby", String.prototype.trim.call( describedby.join( " " ) ) );
18257
18603
  },
18258
18604
 
18259
18605
  _removeDescribedBy: function( elem ) {
@@ -18266,7 +18612,7 @@ $.widget( "ui.tooltip", {
18266
18612
  }
18267
18613
 
18268
18614
  elem.removeData( "ui-tooltip-id" );
18269
- describedby = $.trim( describedby.join( " " ) );
18615
+ describedby = String.prototype.trim.call( describedby.join( " " ) );
18270
18616
  if ( describedby ) {
18271
18617
  elem.attr( "aria-describedby", describedby );
18272
18618
  } else {
@@ -18512,7 +18858,7 @@ $.widget( "ui.tooltip", {
18512
18858
  position( positionOption.of );
18513
18859
  clearInterval( delayedShow );
18514
18860
  }
18515
- }, $.fx.interval );
18861
+ }, 13 );
18516
18862
  }
18517
18863
 
18518
18864
  this._trigger( "open", event, { tooltip: tooltip } );
@@ -18533,7 +18879,10 @@ $.widget( "ui.tooltip", {
18533
18879
  // tooltips will handle this in destroy.
18534
18880
  if ( target[ 0 ] !== this.element[ 0 ] ) {
18535
18881
  events.remove = function() {
18536
- this._removeTooltip( this._find( target ).tooltip );
18882
+ var targetElement = this._find( target );
18883
+ if ( targetElement ) {
18884
+ this._removeTooltip( targetElement.tooltip );
18885
+ }
18537
18886
  };
18538
18887
  }
18539
18888
 
@@ -18633,6 +18982,10 @@ $.widget( "ui.tooltip", {
18633
18982
  },
18634
18983
 
18635
18984
  _removeTooltip: function( tooltip ) {
18985
+
18986
+ // Clear the interval for delayed tracking tooltips
18987
+ clearInterval( this.delayedShow );
18988
+
18636
18989
  tooltip.remove();
18637
18990
  delete this.tooltips[ tooltip.attr( "id" ) ];
18638
18991
  },
@@ -18698,4 +19051,7 @@ if ( $.uiBackCompat !== false ) {
18698
19051
 
18699
19052
  var widgetsTooltip = $.ui.tooltip;
18700
19053
 
18701
- }));
19054
+
19055
+
19056
+
19057
+ } );