1 /*! jQuery UI - v1.12.1 - 2020-09-25 |
1 /*! jQuery UI - v1.13.1 - 2022-01-20 |
2 * http://jqueryui.com |
2 * http://jqueryui.com |
3 * Includes: data.js, disable-selection.js, escape-selector.js, focusable.js, form-reset-mixin.js, form.js, ie.js, jquery-1-7.js, keycode.js, labels.js, plugin.js, position.js, safe-active-element.js, safe-blur.js, scroll-parent.js, tabbable.js, unique-id.js, version.js, widget.js |
3 * Includes: data.js, disable-selection.js, escape-selector.js, focusable.js, form-reset-mixin.js, form.js, ie.js, jquery-1-7.js, keycode.js, labels.js, plugin.js, position.js, safe-active-element.js, safe-blur.js, scroll-parent.js, tabbable.js, unique-id.js, version.js, widget.js |
4 * Copyright jQuery Foundation and other contributors; Licensed */ |
4 * Copyright jQuery Foundation and other contributors; Licensed */ |
5 ( function( factory ) { |
5 ( function( factory ) { |
|
6 "use strict"; |
|
7 |
6 if ( typeof define === "function" && define.amd ) { |
8 if ( typeof define === "function" && define.amd ) { |
7 |
9 |
8 // AMD. Register as an anonymous module. |
10 // AMD. Register as an anonymous module. |
9 define( [ "jquery" ], factory ); |
11 define( [ "jquery" ], factory ); |
10 } else { |
12 } else { |
11 |
13 |
12 // Browser globals |
14 // Browser globals |
13 factory( jQuery ); |
15 factory( jQuery ); |
14 } |
16 } |
15 } ( function( $ ) { |
17 } ( function( $ ) { |
|
18 "use strict"; |
16 |
19 |
17 // Source: version.js |
20 // Source: version.js |
18 $.ui = $.ui || {}; |
21 $.ui = $.ui || {}; |
19 |
22 |
20 $.ui.version = "1.12.1"; |
23 $.ui.version = "1.13.1"; |
21 |
24 |
22 // Source: data.js |
25 // Source: data.js |
23 /*! |
26 /*! |
24 * jQuery UI :data 1.12.1 |
27 * jQuery UI :data 1.13.1 |
25 * http://jqueryui.com |
28 * http://jqueryui.com |
26 * |
29 * |
27 * Copyright jQuery Foundation and other contributors |
30 * Copyright jQuery Foundation and other contributors |
28 * Released under the MIT license. |
31 * Released under the MIT license. |
29 * http://jquery.org/license |
32 * http://jquery.org/license |
151 var visibility = element.css( "visibility" ); |
144 var visibility = element.css( "visibility" ); |
152 while ( visibility === "inherit" ) { |
145 while ( visibility === "inherit" ) { |
153 element = element.parent(); |
146 element = element.parent(); |
154 visibility = element.css( "visibility" ); |
147 visibility = element.css( "visibility" ); |
155 } |
148 } |
156 return visibility !== "hidden"; |
149 return visibility === "visible"; |
157 } |
150 } |
158 |
151 |
159 $.extend( $.expr[ ":" ], { |
152 $.extend( $.expr.pseudos, { |
160 focusable: function( element ) { |
153 focusable: function( element ) { |
161 return $.ui.focusable( element, $.attr( element, "tabindex" ) != null ); |
154 return $.ui.focusable( element, $.attr( element, "tabindex" ) != null ); |
162 } |
155 } |
163 } ); |
156 } ); |
164 |
157 |
165 // Source: form.js |
|
166 // Support: IE8 Only |
158 // Support: IE8 Only |
167 // IE8 does not support the form attribute and when it is supplied. It overwrites the form prop |
159 // IE8 does not support the form attribute and when it is supplied. It overwrites the form prop |
168 // with a string, so we need to find the proper form. |
160 // with a string, so we need to find the proper form. |
169 $.fn.form = function() { |
161 $.fn._form = function() { |
170 return typeof this[ 0 ].form === "string" ? this.closest( "form" ) : $( this[ 0 ].form ); |
162 return typeof this[ 0 ].form === "string" ? this.closest( "form" ) : $( this[ 0 ].form ); |
171 }; |
163 }; |
172 |
164 |
173 // Source: form-reset-mixin.js |
165 // Source: form-reset-mixin.js |
174 /*! |
166 /*! |
175 * jQuery UI Form Reset Mixin 1.12.1 |
167 * jQuery UI Form Reset Mixin 1.13.1 |
176 * http://jqueryui.com |
168 * http://jqueryui.com |
177 * |
169 * |
178 * Copyright jQuery Foundation and other contributors |
170 * Copyright jQuery Foundation and other contributors |
179 * Released under the MIT license. |
171 * Released under the MIT license. |
180 * http://jquery.org/license |
172 * http://jquery.org/license |
233 |
225 |
234 // Source: ie.js |
226 // Source: ie.js |
235 // This file is deprecated |
227 // This file is deprecated |
236 $.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() ); |
228 $.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() ); |
237 |
229 |
238 // Source: jquery-1-7.js |
230 // Source: jquery-patch.js |
239 /*! |
231 /*! |
240 * jQuery UI Support for jQuery core 1.7.x 1.12.1 |
232 * jQuery UI Support for jQuery core 1.8.x and newer 1.13.0 |
241 * http://jqueryui.com |
233 * http://jqueryui.com |
242 * |
234 * |
243 * Copyright jQuery Foundation and other contributors |
235 * Copyright jQuery Foundation and other contributors |
244 * Released under the MIT license. |
236 * Released under the MIT license. |
245 * http://jquery.org/license |
237 * http://jquery.org/license |
246 * |
238 * |
247 */ |
239 */ |
248 |
240 |
249 //>>label: jQuery 1.7 Support |
241 //>>label: jQuery 1.8+ Support |
250 //>>group: Core |
242 //>>group: Core |
251 //>>description: Support version 1.7.x of jQuery core |
243 //>>description: Support version 1.8.x and newer of jQuery core |
252 |
244 |
253 // Support: jQuery 1.7 only |
245 // Support: jQuery 1.9.x or older |
254 // Not a great way to check versions, but since we only support 1.7+ and only |
246 // $.expr[ ":" ] is deprecated. |
255 // need to detect <1.8, this is a simple check that should suffice. Checking |
247 if ( !$.expr.pseudos ) { |
256 // for "1.7." would be a bit safer, but the version string is 1.7, not 1.7.0 |
248 $.expr.pseudos = $.expr[ ":" ]; |
257 // and we'll never reach 1.70.0 (if we do, we certainly won't be supporting |
249 } |
258 // 1.7 anymore). See #11197 for why we're not using feature detection. |
250 |
259 if ( $.fn.jquery.substring( 0, 3 ) === "1.7" ) { |
251 // Support: jQuery 1.11.x or older |
260 |
252 // $.unique has been renamed to $.uniqueSort |
261 // Setters for .innerWidth(), .innerHeight(), .outerWidth(), .outerHeight() |
253 if ( !$.uniqueSort ) { |
262 // Unlike jQuery Core 1.8+, these only support numeric values to set the |
254 $.uniqueSort = $.unique; |
263 // dimensions in pixels |
255 } |
264 $.each( [ "Width", "Height" ], function( i, name ) { |
256 |
265 var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ], |
257 // Support: jQuery 2.2.x or older. |
266 type = name.toLowerCase(), |
258 // This method has been defined in jQuery 3.0.0. |
267 orig = { |
259 // Code from https://github.com/jquery/jquery/blob/e539bac79e666bba95bba86d690b4e609dca2286/src/selector/escapeSelector.js |
268 innerWidth: $.fn.innerWidth, |
260 if ( !$.escapeSelector ) { |
269 innerHeight: $.fn.innerHeight, |
261 |
270 outerWidth: $.fn.outerWidth, |
262 // CSS string/identifier serialization |
271 outerHeight: $.fn.outerHeight |
263 // https://drafts.csswg.org/cssom/#common-serializing-idioms |
272 }; |
264 var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g; |
273 |
265 |
274 function reduce( elem, size, border, margin ) { |
266 var fcssescape = function( ch, asCodePoint ) { |
275 $.each( side, function() { |
267 if ( asCodePoint ) { |
276 size -= parseFloat( $.css( elem, "padding" + this ) ) || 0; |
268 |
277 if ( border ) { |
269 // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER |
278 size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0; |
270 if ( ch === "\0" ) { |
279 } |
271 return "\uFFFD"; |
280 if ( margin ) { |
272 } |
281 size -= parseFloat( $.css( elem, "margin" + this ) ) || 0; |
273 |
282 } |
274 // Control characters and (dependent upon position) numbers get escaped as code points |
283 } ); |
275 return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; |
284 return size; |
276 } |
285 } |
277 |
286 |
278 // Other potentially-special ASCII characters get backslash-escaped |
287 $.fn[ "inner" + name ] = function( size ) { |
279 return "\\" + ch; |
288 if ( size === undefined ) { |
280 }; |
289 return orig[ "inner" + name ].call( this ); |
281 |
290 } |
282 $.escapeSelector = function( sel ) { |
291 |
283 return ( sel + "" ).replace( rcssescape, fcssescape ); |
292 return this.each( function() { |
|
293 $( this ).css( type, reduce( this, size ) + "px" ); |
|
294 } ); |
|
295 }; |
|
296 |
|
297 $.fn[ "outer" + name ] = function( size, margin ) { |
|
298 if ( typeof size !== "number" ) { |
|
299 return orig[ "outer" + name ].call( this, size ); |
|
300 } |
|
301 |
|
302 return this.each( function() { |
|
303 $( this ).css( type, reduce( this, size, true, margin ) + "px" ); |
|
304 } ); |
|
305 }; |
|
306 } ); |
|
307 |
|
308 $.fn.addBack = function( selector ) { |
|
309 return this.add( selector == null ? |
|
310 this.prevObject : this.prevObject.filter( selector ) |
|
311 ); |
|
312 }; |
284 }; |
313 } |
285 } |
314 |
286 |
|
287 // Support: jQuery 3.4.x or older |
|
288 // These methods have been defined in jQuery 3.5.0. |
|
289 if ( !$.fn.even || !$.fn.odd ) { |
|
290 $.fn.extend( { |
|
291 even: function() { |
|
292 return this.filter( function( i ) { |
|
293 return i % 2 === 0; |
|
294 } ); |
|
295 }, |
|
296 odd: function() { |
|
297 return this.filter( function( i ) { |
|
298 return i % 2 === 1; |
|
299 } ); |
|
300 } |
|
301 } ); |
|
302 } |
|
303 |
315 // Source: keycode.js |
304 // Source: keycode.js |
316 /*! |
305 /*! |
317 * jQuery UI Keycode 1.12.1 |
306 * jQuery UI Keycode 1.13.1 |
318 * http://jqueryui.com |
307 * http://jqueryui.com |
319 * |
308 * |
320 * Copyright jQuery Foundation and other contributors |
309 * Copyright jQuery Foundation and other contributors |
321 * Released under the MIT license. |
310 * Released under the MIT license. |
322 * http://jquery.org/license |
311 * http://jquery.org/license |
466 |
459 |
467 function parseCss( element, property ) { |
460 function parseCss( element, property ) { |
468 return parseInt( $.css( element, property ), 10 ) || 0; |
461 return parseInt( $.css( element, property ), 10 ) || 0; |
469 } |
462 } |
470 |
463 |
|
464 function isWindow( obj ) { |
|
465 return obj != null && obj === obj.window; |
|
466 } |
|
467 |
471 function getDimensions( elem ) { |
468 function getDimensions( elem ) { |
472 var raw = elem[ 0 ]; |
469 var raw = elem[ 0 ]; |
473 if ( raw.nodeType === 9 ) { |
470 if ( raw.nodeType === 9 ) { |
474 return { |
471 return { |
475 width: elem.width(), |
472 width: elem.width(), |
476 height: elem.height(), |
473 height: elem.height(), |
477 offset: { top: 0, left: 0 } |
474 offset: { top: 0, left: 0 } |
478 }; |
475 }; |
479 } |
476 } |
480 if ( $.isWindow( raw ) ) { |
477 if ( isWindow( raw ) ) { |
481 return { |
478 return { |
482 width: elem.width(), |
479 width: elem.width(), |
483 height: elem.height(), |
480 height: elem.height(), |
484 offset: { top: elem.scrollTop(), left: elem.scrollLeft() } |
481 offset: { top: elem.scrollTop(), left: elem.scrollLeft() } |
485 }; |
482 }; |
537 height: hasOverflowX ? $.position.scrollbarWidth() : 0 |
534 height: hasOverflowX ? $.position.scrollbarWidth() : 0 |
538 }; |
535 }; |
539 }, |
536 }, |
540 getWithinInfo: function( element ) { |
537 getWithinInfo: function( element ) { |
541 var withinElement = $( element || window ), |
538 var withinElement = $( element || window ), |
542 isWindow = $.isWindow( withinElement[ 0 ] ), |
539 isElemWindow = isWindow( withinElement[ 0 ] ), |
543 isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9, |
540 isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9, |
544 hasOffset = !isWindow && !isDocument; |
541 hasOffset = !isElemWindow && !isDocument; |
545 return { |
542 return { |
546 element: withinElement, |
543 element: withinElement, |
547 isWindow: isWindow, |
544 isWindow: isElemWindow, |
548 isDocument: isDocument, |
545 isDocument: isDocument, |
549 offset: hasOffset ? $( element ).offset() : { left: 0, top: 0 }, |
546 offset: hasOffset ? $( element ).offset() : { left: 0, top: 0 }, |
550 scrollLeft: withinElement.scrollLeft(), |
547 scrollLeft: withinElement.scrollLeft(), |
551 scrollTop: withinElement.scrollTop(), |
548 scrollTop: withinElement.scrollTop(), |
552 width: withinElement.outerWidth(), |
549 width: withinElement.outerWidth(), |
562 |
559 |
563 // Make a copy, we don't want to modify arguments |
560 // Make a copy, we don't want to modify arguments |
564 options = $.extend( {}, options ); |
561 options = $.extend( {}, options ); |
565 |
562 |
566 var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions, |
563 var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions, |
567 target = $( options.of ), |
564 |
|
565 // Make sure string options are treated as CSS selectors |
|
566 target = typeof options.of === "string" ? |
|
567 $( document ).find( options.of ) : |
|
568 $( options.of ), |
|
569 |
568 within = $.position.getWithinInfo( options.within ), |
570 within = $.position.getWithinInfo( options.within ), |
569 scrollInfo = $.position.getScrollInfo( within ), |
571 scrollInfo = $.position.getScrollInfo( within ), |
570 collision = ( options.collision || "flip" ).split( " " ), |
572 collision = ( options.collision || "flip" ).split( " " ), |
571 offsets = {}; |
573 offsets = {}; |
572 |
574 |
998 //>>label: :tabbable Selector |
1000 //>>label: :tabbable Selector |
999 //>>group: Core |
1001 //>>group: Core |
1000 //>>description: Selects elements which can be tabbed to. |
1002 //>>description: Selects elements which can be tabbed to. |
1001 //>>docs: http://api.jqueryui.com/tabbable-selector/ |
1003 //>>docs: http://api.jqueryui.com/tabbable-selector/ |
1002 |
1004 |
1003 $.extend( $.expr[ ":" ], { |
1005 $.extend( $.expr.pseudos, { |
1004 tabbable: function( element ) { |
1006 tabbable: function( element ) { |
1005 var tabIndex = $.attr( element, "tabindex" ), |
1007 var tabIndex = $.attr( element, "tabindex" ), |
1006 hasTabindex = tabIndex != null; |
1008 hasTabindex = tabIndex != null; |
1007 return ( !hasTabindex || tabIndex >= 0 ) && $.ui.focusable( element, hasTabindex ); |
1009 return ( !hasTabindex || tabIndex >= 0 ) && $.ui.focusable( element, hasTabindex ); |
1008 } |
1010 } |
1009 } ); |
1011 } ); |
1010 |
1012 |
1011 // Source: unique-id.js |
1013 // Source: unique-id.js |
1012 /*! |
1014 /*! |
1013 * jQuery UI Unique ID 1.12.1 |
1015 * jQuery UI Unique ID 1.13.1 |
1014 * http://jqueryui.com |
1016 * http://jqueryui.com |
1015 * |
1017 * |
1016 * Copyright jQuery Foundation and other contributors |
1018 * Copyright jQuery Foundation and other contributors |
1017 * Released under the MIT license. |
1019 * Released under the MIT license. |
1018 * http://jquery.org/license |
1020 * http://jquery.org/license |
1060 //>>description: Provides a factory for creating stateful widgets with a common API. |
1062 //>>description: Provides a factory for creating stateful widgets with a common API. |
1061 //>>docs: http://api.jqueryui.com/jQuery.widget/ |
1063 //>>docs: http://api.jqueryui.com/jQuery.widget/ |
1062 //>>demos: http://jqueryui.com/widget/ |
1064 //>>demos: http://jqueryui.com/widget/ |
1063 |
1065 |
1064 var widgetUuid = 0; |
1066 var widgetUuid = 0; |
|
1067 var widgetHasOwnProperty = Array.prototype.hasOwnProperty; |
1065 var widgetSlice = Array.prototype.slice; |
1068 var widgetSlice = Array.prototype.slice; |
1066 |
1069 |
1067 $.cleanData = ( function( orig ) { |
1070 $.cleanData = ( function( orig ) { |
1068 return function( elems ) { |
1071 return function( elems ) { |
1069 var events, elem, i; |
1072 var events, elem, i; |
1070 for ( i = 0; ( elem = elems[ i ] ) != null; i++ ) { |
1073 for ( i = 0; ( elem = elems[ i ] ) != null; i++ ) { |
1071 try { |
1074 |
1072 |
1075 // Only trigger remove when necessary to save time |
1073 // Only trigger remove when necessary to save time |
1076 events = $._data( elem, "events" ); |
1074 events = $._data( elem, "events" ); |
1077 if ( events && events.remove ) { |
1075 if ( events && events.remove ) { |
1078 $( elem ).triggerHandler( "remove" ); |
1076 $( elem ).triggerHandler( "remove" ); |
1079 } |
1077 } |
|
1078 |
|
1079 // Http://bugs.jquery.com/ticket/8235 |
|
1080 } catch ( e ) {} |
|
1081 } |
1080 } |
1082 orig( elems ); |
1081 orig( elems ); |
1083 }; |
1082 }; |
1084 } )( $.cleanData ); |
1083 } )( $.cleanData ); |
1085 |
1084 |
1097 if ( !prototype ) { |
1096 if ( !prototype ) { |
1098 prototype = base; |
1097 prototype = base; |
1099 base = $.Widget; |
1098 base = $.Widget; |
1100 } |
1099 } |
1101 |
1100 |
1102 if ( $.isArray( prototype ) ) { |
1101 if ( Array.isArray( prototype ) ) { |
1103 prototype = $.extend.apply( null, [ {} ].concat( prototype ) ); |
1102 prototype = $.extend.apply( null, [ {} ].concat( prototype ) ); |
1104 } |
1103 } |
1105 |
1104 |
1106 // Create selector for plugin |
1105 // Create selector for plugin |
1107 $.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) { |
1106 $.expr.pseudos[ fullName.toLowerCase() ] = function( elem ) { |
1108 return !!$.data( elem, fullName ); |
1107 return !!$.data( elem, fullName ); |
1109 }; |
1108 }; |
1110 |
1109 |
1111 $[ namespace ] = $[ namespace ] || {}; |
1110 $[ namespace ] = $[ namespace ] || {}; |
1112 existingConstructor = $[ namespace ][ name ]; |
1111 existingConstructor = $[ namespace ][ name ]; |
1113 constructor = $[ namespace ][ name ] = function( options, element ) { |
1112 constructor = $[ namespace ][ name ] = function( options, element ) { |
1114 |
1113 |
1115 // Allow instantiation without "new" keyword |
1114 // Allow instantiation without "new" keyword |
1116 if ( !this._createWidget ) { |
1115 if ( !this || !this._createWidget ) { |
1117 return new constructor( options, element ); |
1116 return new constructor( options, element ); |
1118 } |
1117 } |
1119 |
1118 |
1120 // Allow instantiation without initializing for simple inheritance |
1119 // Allow instantiation without initializing for simple inheritance |
1121 // must use "new" keyword (the code above always passes args) |
1120 // must use "new" keyword (the code above always passes args) |
1221 var value; |
1220 var value; |
1222 |
1221 |
1223 for ( ; inputIndex < inputLength; inputIndex++ ) { |
1222 for ( ; inputIndex < inputLength; inputIndex++ ) { |
1224 for ( key in input[ inputIndex ] ) { |
1223 for ( key in input[ inputIndex ] ) { |
1225 value = input[ inputIndex ][ key ]; |
1224 value = input[ inputIndex ][ key ]; |
1226 if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) { |
1225 if ( widgetHasOwnProperty.call( input[ inputIndex ], key ) && value !== undefined ) { |
1227 |
1226 |
1228 // Clone objects |
1227 // Clone objects |
1229 if ( $.isPlainObject( value ) ) { |
1228 if ( $.isPlainObject( value ) ) { |
1230 target[ key ] = $.isPlainObject( target[ key ] ) ? |
1229 target[ key ] = $.isPlainObject( target[ key ] ) ? |
1231 $.widget.extend( {}, target[ key ], value ) : |
1230 $.widget.extend( {}, target[ key ], value ) : |
1232 |
1231 |
1233 // Don't extend strings, arrays, etc. with objects |
1232 // Don't extend strings, arrays, etc. with objects |
1234 $.widget.extend( {}, value ); |
1233 $.widget.extend( {}, value ); |
1235 |
1234 |
1236 // Copy everything else by reference |
1235 // Copy everything else by reference |
1237 } else { |
1236 } else { |
1238 target[ key ] = value; |
1237 target[ key ] = value; |
1239 } |
1238 } |
1240 } |
1239 } |
1241 } |
1240 } |
1531 options = $.extend( { |
1531 options = $.extend( { |
1532 element: this.element, |
1532 element: this.element, |
1533 classes: this.options.classes || {} |
1533 classes: this.options.classes || {} |
1534 }, options ); |
1534 }, options ); |
1535 |
1535 |
|
1536 function bindRemoveEvent() { |
|
1537 var nodesToBind = []; |
|
1538 |
|
1539 options.element.each( function( _, element ) { |
|
1540 var isTracked = $.map( that.classesElementLookup, function( elements ) { |
|
1541 return elements; |
|
1542 } ) |
|
1543 .some( function( elements ) { |
|
1544 return elements.is( element ); |
|
1545 } ); |
|
1546 |
|
1547 if ( !isTracked ) { |
|
1548 nodesToBind.push( element ); |
|
1549 } |
|
1550 } ); |
|
1551 |
|
1552 that._on( $( nodesToBind ), { |
|
1553 remove: "_untrackClassesElement" |
|
1554 } ); |
|
1555 } |
|
1556 |
1536 function processClassString( classes, checkOption ) { |
1557 function processClassString( classes, checkOption ) { |
1537 var current, i; |
1558 var current, i; |
1538 for ( i = 0; i < classes.length; i++ ) { |
1559 for ( i = 0; i < classes.length; i++ ) { |
1539 current = that.classesElementLookup[ classes[ i ] ] || $(); |
1560 current = that.classesElementLookup[ classes[ i ] ] || $(); |
1540 if ( options.add ) { |
1561 if ( options.add ) { |
1541 current = $( $.unique( current.get().concat( options.element.get() ) ) ); |
1562 bindRemoveEvent(); |
|
1563 current = $( $.uniqueSort( current.get().concat( options.element.get() ) ) ); |
1542 } else { |
1564 } else { |
1543 current = $( current.not( options.element ).get() ); |
1565 current = $( current.not( options.element ).get() ); |
1544 } |
1566 } |
1545 that.classesElementLookup[ classes[ i ] ] = current; |
1567 that.classesElementLookup[ classes[ i ] ] = current; |
1546 full.push( classes[ i ] ); |
1568 full.push( classes[ i ] ); |
1547 if ( checkOption && options.classes[ classes[ i ] ] ) { |
1569 if ( checkOption && options.classes[ classes[ i ] ] ) { |
1548 full.push( options.classes[ classes[ i ] ] ); |
1570 full.push( options.classes[ classes[ i ] ] ); |
1549 } |
1571 } |
1550 } |
1572 } |
1551 } |
1573 } |
1552 |
|
1553 this._on( options.element, { |
|
1554 "remove": "_untrackClassesElement" |
|
1555 } ); |
|
1556 |
1574 |
1557 if ( options.keys ) { |
1575 if ( options.keys ) { |
1558 processClassString( options.keys.match( /\S+/g ) || [], true ); |
1576 processClassString( options.keys.match( /\S+/g ) || [], true ); |
1559 } |
1577 } |
1560 if ( options.extra ) { |
1578 if ( options.extra ) { |