Blame view
app/bower_components/jquery/src/effects.js
16.9 KB
87c93a029
|
1 |
define( [ |
f986e111b
|
2 |
"./core", |
87c93a029
|
3 4 5 |
"./var/document", "./var/rcssNum", "./var/rnothtmlwhite", |
f986e111b
|
6 |
"./css/var/cssExpand", |
87c93a029
|
7 8 9 10 11 |
"./css/var/isHiddenWithinTree", "./css/var/swap", "./css/adjustCSS", "./data/var/dataPriv", "./css/showHide", |
f986e111b
|
12 13 |
"./core/init", |
f986e111b
|
14 |
"./queue", |
f986e111b
|
15 |
"./deferred", |
87c93a029
|
16 17 18 19 20 21 22 23 |
"./traversing", "./manipulation", "./css", "./effects/Tween" ], function( jQuery, document, rcssNum, rnothtmlwhite, cssExpand, isHiddenWithinTree, swap, adjustCSS, dataPriv, showHide ) { "use strict"; |
f986e111b
|
24 25 26 27 |
var fxNow, timerId, rfxtypes = /^(?:toggle|show|hide)$/, |
87c93a029
|
28 |
rrun = /queueHooks$/; |
f986e111b
|
29 |
|
87c93a029
|
30 31 32 33 34 35 |
function raf() { if ( timerId ) { window.requestAnimationFrame( raf ); jQuery.fx.tick(); } } |
f986e111b
|
36 37 38 |
// Animations created synchronously will run synchronously function createFxNow() { |
87c93a029
|
39 |
window.setTimeout( function() { |
f986e111b
|
40 |
fxNow = undefined; |
87c93a029
|
41 |
} ); |
f986e111b
|
42 43 44 45 46 47 |
return ( fxNow = jQuery.now() ); } // Generate parameters to create a standard animation function genFx( type, includeWidth ) { var which, |
87c93a029
|
48 49 |
i = 0, attrs = { height: type }; |
f986e111b
|
50 |
|
87c93a029
|
51 52 |
// If we include width, step value is 1 to do all cssExpand values, // otherwise step value is 2 to skip over Left and Right |
f986e111b
|
53 |
includeWidth = includeWidth ? 1 : 0; |
87c93a029
|
54 |
for ( ; i < 4; i += 2 - includeWidth ) { |
f986e111b
|
55 56 57 58 59 60 61 62 63 64 65 66 67 |
which = cssExpand[ i ]; attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; } if ( includeWidth ) { attrs.opacity = attrs.width = type; } return attrs; } function createTween( value, prop, animation ) { var tween, |
87c93a029
|
68 |
collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), |
f986e111b
|
69 70 71 |
index = 0, length = collection.length; for ( ; index < length; index++ ) { |
87c93a029
|
72 |
if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { |
f986e111b
|
73 |
|
87c93a029
|
74 |
// We're done with this property |
f986e111b
|
75 76 77 78 79 80 |
return tween; } } } function defaultPrefilter( elem, props, opts ) { |
87c93a029
|
81 82 |
var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, isBox = "width" in props || "height" in props, |
f986e111b
|
83 84 85 |
anim = this, orig = {}, style = elem.style, |
87c93a029
|
86 87 |
hidden = elem.nodeType && isHiddenWithinTree( elem ), dataShow = dataPriv.get( elem, "fxshow" ); |
f986e111b
|
88 |
|
87c93a029
|
89 |
// Queue-skipping animations hijack the fx hooks |
f986e111b
|
90 91 92 93 94 95 96 97 98 99 100 101 |
if ( !opts.queue ) { hooks = jQuery._queueHooks( elem, "fx" ); if ( hooks.unqueued == null ) { hooks.unqueued = 0; oldfire = hooks.empty.fire; hooks.empty.fire = function() { if ( !hooks.unqueued ) { oldfire(); } }; } hooks.unqueued++; |
87c93a029
|
102 103 104 105 |
anim.always( function() { // Ensure the complete handler is called before this completes anim.always( function() { |
f986e111b
|
106 107 108 109 |
hooks.unqueued--; if ( !jQuery.queue( elem, "fx" ).length ) { hooks.empty.fire(); } |
87c93a029
|
110 111 |
} ); } ); |
f986e111b
|
112 |
} |
87c93a029
|
113 |
// Detect show/hide animations |
f986e111b
|
114 115 |
for ( prop in props ) { value = props[ prop ]; |
87c93a029
|
116 |
if ( rfxtypes.test( value ) ) { |
f986e111b
|
117 118 119 |
delete props[ prop ]; toggle = toggle || value === "toggle"; if ( value === ( hidden ? "hide" : "show" ) ) { |
87c93a029
|
120 121 |
// Pretend to be hidden if this is a "show" and // there is still data from a stopped show/hide |
f986e111b
|
122 123 |
if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { hidden = true; |
87c93a029
|
124 125 |
// Ignore all other no-op show/hide data |
f986e111b
|
126 127 128 129 130 |
} else { continue; } } orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); |
f986e111b
|
131 132 |
} } |
87c93a029
|
133 134 135 136 137 |
// Bail out if this is a no-op like .hide().hide() propTween = !jQuery.isEmptyObject( props ); if ( !propTween && jQuery.isEmptyObject( orig ) ) { return; } |
f986e111b
|
138 |
|
87c93a029
|
139 140 141 142 143 144 145 146 147 148 149 150 |
// Restrict "overflow" and "display" styles during box animations if ( isBox && elem.nodeType === 1 ) { // Support: IE <=9 - 11, Edge 12 - 13 // Record all 3 overflow attributes because IE does not infer the shorthand // from identically-valued overflowX and overflowY opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; // Identify a display type, preferring old show/hide data over the CSS cascade restoreDisplay = dataShow && dataShow.display; if ( restoreDisplay == null ) { restoreDisplay = dataPriv.get( elem, "display" ); |
f986e111b
|
151 |
} |
87c93a029
|
152 153 154 155 156 157 158 159 160 161 162 163 |
display = jQuery.css( elem, "display" ); if ( display === "none" ) { if ( restoreDisplay ) { display = restoreDisplay; } else { // Get nonempty value(s) by temporarily forcing visibility showHide( [ elem ], true ); restoreDisplay = elem.style.display || restoreDisplay; display = jQuery.css( elem, "display" ); showHide( [ elem ] ); } |
f986e111b
|
164 |
} |
87c93a029
|
165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 |
// Animate inline elements as inline-block if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { if ( jQuery.css( elem, "float" ) === "none" ) { // Restore the original display value at the end of pure show/hide animations if ( !propTween ) { anim.done( function() { style.display = restoreDisplay; } ); if ( restoreDisplay == null ) { display = style.display; restoreDisplay = display === "none" ? "" : display; } } style.display = "inline-block"; |
f986e111b
|
181 |
} |
87c93a029
|
182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 |
} } if ( opts.overflow ) { style.overflow = "hidden"; anim.always( function() { style.overflow = opts.overflow[ 0 ]; style.overflowX = opts.overflow[ 1 ]; style.overflowY = opts.overflow[ 2 ]; } ); } // Implement show/hide animations propTween = false; for ( prop in orig ) { // General show/hide setup for this element animation if ( !propTween ) { if ( dataShow ) { if ( "hidden" in dataShow ) { hidden = dataShow.hidden; |
f986e111b
|
203 |
} |
87c93a029
|
204 205 206 207 208 209 210 211 212 213 214 215 |
} else { dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); } // Store hidden/visible for toggle so `.stop().toggle()` "reverses" if ( toggle ) { dataShow.hidden = !hidden; } // Show elements before animating them if ( hidden ) { showHide( [ elem ], true ); |
f986e111b
|
216 |
} |
87c93a029
|
217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 |
/* eslint-disable no-loop-func */ anim.done( function() { /* eslint-enable no-loop-func */ // The final step of a "hide" animation is actually hiding the element if ( !hidden ) { showHide( [ elem ] ); } dataPriv.remove( elem, "fxshow" ); for ( prop in orig ) { jQuery.style( elem, prop, orig[ prop ] ); } } ); |
f986e111b
|
233 |
} |
87c93a029
|
234 235 236 237 238 239 240 241 242 |
// Per-property setup propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); if ( !( prop in dataShow ) ) { dataShow[ prop ] = propTween.start; if ( hidden ) { propTween.end = propTween.start; propTween.start = 0; } } |
f986e111b
|
243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 |
} } function propFilter( props, specialEasing ) { var index, name, easing, value, hooks; // camelCase, specialEasing and expand cssHook pass for ( index in props ) { name = jQuery.camelCase( index ); easing = specialEasing[ name ]; value = props[ index ]; if ( jQuery.isArray( value ) ) { easing = value[ 1 ]; value = props[ index ] = value[ 0 ]; } if ( index !== name ) { props[ name ] = value; delete props[ index ]; } hooks = jQuery.cssHooks[ name ]; if ( hooks && "expand" in hooks ) { value = hooks.expand( value ); delete props[ name ]; |
87c93a029
|
268 269 |
// Not quite $.extend, this won't overwrite existing keys. // Reusing 'index' because we have the correct "name" |
f986e111b
|
270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 |
for ( index in value ) { if ( !( index in props ) ) { props[ index ] = value[ index ]; specialEasing[ index ] = easing; } } } else { specialEasing[ name ] = easing; } } } function Animation( elem, properties, options ) { var result, stopped, index = 0, |
87c93a029
|
286 |
length = Animation.prefilters.length, |
f986e111b
|
287 |
deferred = jQuery.Deferred().always( function() { |
87c93a029
|
288 289 |
// Don't match elem in the :animated selector |
f986e111b
|
290 |
delete tick.elem; |
87c93a029
|
291 |
} ), |
f986e111b
|
292 293 294 295 296 297 |
tick = function() { if ( stopped ) { return false; } var currentTime = fxNow || createFxNow(), remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), |
87c93a029
|
298 299 300 |
// Support: Android 2.3 only // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) |
f986e111b
|
301 302 303 304 |
temp = remaining / animation.duration || 0, percent = 1 - temp, index = 0, length = animation.tweens.length; |
87c93a029
|
305 |
for ( ; index < length; index++ ) { |
f986e111b
|
306 307 |
animation.tweens[ index ].run( percent ); } |
87c93a029
|
308 |
deferred.notifyWith( elem, [ animation, percent, remaining ] ); |
f986e111b
|
309 310 311 312 313 314 315 316 |
if ( percent < 1 && length ) { return remaining; } else { deferred.resolveWith( elem, [ animation ] ); return false; } }, |
87c93a029
|
317 |
animation = deferred.promise( { |
f986e111b
|
318 319 |
elem: elem, props: jQuery.extend( {}, properties ), |
87c93a029
|
320 321 322 323 |
opts: jQuery.extend( true, { specialEasing: {}, easing: jQuery.easing._default }, options ), |
f986e111b
|
324 325 326 327 328 329 330 331 332 333 334 335 336 |
originalProperties: properties, originalOptions: options, startTime: fxNow || createFxNow(), duration: options.duration, tweens: [], createTween: function( prop, end ) { var tween = jQuery.Tween( elem, animation.opts, prop, end, animation.opts.specialEasing[ prop ] || animation.opts.easing ); animation.tweens.push( tween ); return tween; }, stop: function( gotoEnd ) { var index = 0, |
87c93a029
|
337 338 |
// If we are going to the end, we want to run all the tweens |
f986e111b
|
339 340 341 342 343 344 |
// otherwise we skip this part length = gotoEnd ? animation.tweens.length : 0; if ( stopped ) { return this; } stopped = true; |
87c93a029
|
345 |
for ( ; index < length; index++ ) { |
f986e111b
|
346 347 |
animation.tweens[ index ].run( 1 ); } |
87c93a029
|
348 |
// Resolve when we played the last frame; otherwise, reject |
f986e111b
|
349 |
if ( gotoEnd ) { |
87c93a029
|
350 |
deferred.notifyWith( elem, [ animation, 1, 0 ] ); |
f986e111b
|
351 352 353 354 355 356 |
deferred.resolveWith( elem, [ animation, gotoEnd ] ); } else { deferred.rejectWith( elem, [ animation, gotoEnd ] ); } return this; } |
87c93a029
|
357 |
} ), |
f986e111b
|
358 359 360 |
props = animation.props; propFilter( props, animation.opts.specialEasing ); |
87c93a029
|
361 362 |
for ( ; index < length; index++ ) { result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); |
f986e111b
|
363 |
if ( result ) { |
87c93a029
|
364 365 366 367 |
if ( jQuery.isFunction( result.stop ) ) { jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = jQuery.proxy( result.stop, result ); } |
f986e111b
|
368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 |
return result; } } jQuery.map( props, createTween, animation ); if ( jQuery.isFunction( animation.opts.start ) ) { animation.opts.start.call( elem, animation ); } jQuery.fx.timer( jQuery.extend( tick, { elem: elem, anim: animation, queue: animation.opts.queue |
87c93a029
|
383 |
} ) |
f986e111b
|
384 385 386 387 388 389 390 391 392 393 |
); // attach callbacks from options return animation.progress( animation.opts.progress ) .done( animation.opts.done, animation.opts.complete ) .fail( animation.opts.fail ) .always( animation.opts.always ); } jQuery.Animation = jQuery.extend( Animation, { |
87c93a029
|
394 395 396 397 398 399 400 401 |
tweeners: { "*": [ function( prop, value ) { var tween = this.createTween( prop, value ); adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); return tween; } ] }, |
f986e111b
|
402 403 404 405 406 |
tweener: function( props, callback ) { if ( jQuery.isFunction( props ) ) { callback = props; props = [ "*" ]; } else { |
87c93a029
|
407 |
props = props.match( rnothtmlwhite ); |
f986e111b
|
408 409 410 411 412 |
} var prop, index = 0, length = props.length; |
87c93a029
|
413 |
for ( ; index < length; index++ ) { |
f986e111b
|
414 |
prop = props[ index ]; |
87c93a029
|
415 416 |
Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; Animation.tweeners[ prop ].unshift( callback ); |
f986e111b
|
417 418 |
} }, |
87c93a029
|
419 |
prefilters: [ defaultPrefilter ], |
f986e111b
|
420 421 |
prefilter: function( callback, prepend ) { if ( prepend ) { |
87c93a029
|
422 |
Animation.prefilters.unshift( callback ); |
f986e111b
|
423 |
} else { |
87c93a029
|
424 |
Animation.prefilters.push( callback ); |
f986e111b
|
425 426 |
} } |
87c93a029
|
427 |
} ); |
f986e111b
|
428 429 430 431 432 433 434 435 |
jQuery.speed = function( speed, easing, fn ) { var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { complete: fn || !fn && easing || jQuery.isFunction( speed ) && speed, duration: speed, easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing }; |
87c93a029
|
436 437 438 439 440 441 442 443 444 445 446 447 448 449 |
// Go to the end state if fx are off or if document is hidden if ( jQuery.fx.off || document.hidden ) { opt.duration = 0; } else { if ( typeof opt.duration !== "number" ) { if ( opt.duration in jQuery.fx.speeds ) { opt.duration = jQuery.fx.speeds[ opt.duration ]; } else { opt.duration = jQuery.fx.speeds._default; } } } |
f986e111b
|
450 |
|
87c93a029
|
451 |
// Normalize opt.queue - true/undefined/null -> "fx" |
f986e111b
|
452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 |
if ( opt.queue == null || opt.queue === true ) { opt.queue = "fx"; } // Queueing opt.old = opt.complete; opt.complete = function() { if ( jQuery.isFunction( opt.old ) ) { opt.old.call( this ); } if ( opt.queue ) { jQuery.dequeue( this, opt.queue ); } }; return opt; }; |
87c93a029
|
471 |
jQuery.fn.extend( { |
f986e111b
|
472 |
fadeTo: function( speed, to, easing, callback ) { |
87c93a029
|
473 474 |
// Show any hidden elements after setting opacity to 0 return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() |
f986e111b
|
475 |
|
87c93a029
|
476 477 |
// Animate to the value specified .end().animate( { opacity: to }, speed, easing, callback ); |
f986e111b
|
478 479 480 481 482 |
}, animate: function( prop, speed, easing, callback ) { var empty = jQuery.isEmptyObject( prop ), optall = jQuery.speed( speed, easing, callback ), doAnimation = function() { |
87c93a029
|
483 |
|
f986e111b
|
484 485 486 487 |
// Operate on a copy of prop so per-property easing won't be lost var anim = Animation( this, jQuery.extend( {}, prop ), optall ); // Empty animations, or finishing resolves immediately |
87c93a029
|
488 |
if ( empty || dataPriv.get( this, "finish" ) ) { |
f986e111b
|
489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 |
anim.stop( true ); } }; doAnimation.finish = doAnimation; return empty || optall.queue === false ? this.each( doAnimation ) : this.queue( optall.queue, doAnimation ); }, stop: function( type, clearQueue, gotoEnd ) { var stopQueue = function( hooks ) { var stop = hooks.stop; delete hooks.stop; stop( gotoEnd ); }; if ( typeof type !== "string" ) { gotoEnd = clearQueue; clearQueue = type; type = undefined; } if ( clearQueue && type !== false ) { this.queue( type || "fx", [] ); } |
87c93a029
|
513 |
return this.each( function() { |
f986e111b
|
514 515 516 |
var dequeue = true, index = type != null && type + "queueHooks", timers = jQuery.timers, |
87c93a029
|
517 |
data = dataPriv.get( this ); |
f986e111b
|
518 519 520 521 522 523 524 525 526 527 528 529 530 531 |
if ( index ) { if ( data[ index ] && data[ index ].stop ) { stopQueue( data[ index ] ); } } else { for ( index in data ) { if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { stopQueue( data[ index ] ); } } } for ( index = timers.length; index--; ) { |
87c93a029
|
532 533 |
if ( timers[ index ].elem === this && ( type == null || timers[ index ].queue === type ) ) { |
f986e111b
|
534 535 536 537 538 |
timers[ index ].anim.stop( gotoEnd ); dequeue = false; timers.splice( index, 1 ); } } |
87c93a029
|
539 540 541 |
// Start the next in the queue if the last step wasn't forced. // Timers currently will call their complete callbacks, which // will dequeue but only if they were gotoEnd. |
f986e111b
|
542 543 544 |
if ( dequeue || !gotoEnd ) { jQuery.dequeue( this, type ); } |
87c93a029
|
545 |
} ); |
f986e111b
|
546 547 548 549 550 |
}, finish: function( type ) { if ( type !== false ) { type = type || "fx"; } |
87c93a029
|
551 |
return this.each( function() { |
f986e111b
|
552 |
var index, |
87c93a029
|
553 |
data = dataPriv.get( this ), |
f986e111b
|
554 555 556 557 |
queue = data[ type + "queue" ], hooks = data[ type + "queueHooks" ], timers = jQuery.timers, length = queue ? queue.length : 0; |
87c93a029
|
558 |
// Enable finishing flag on private data |
f986e111b
|
559 |
data.finish = true; |
87c93a029
|
560 |
// Empty the queue first |
f986e111b
|
561 562 563 564 565 |
jQuery.queue( this, type, [] ); if ( hooks && hooks.stop ) { hooks.stop.call( this, true ); } |
87c93a029
|
566 |
// Look for any active animations, and finish them |
f986e111b
|
567 568 569 570 571 572 |
for ( index = timers.length; index--; ) { if ( timers[ index ].elem === this && timers[ index ].queue === type ) { timers[ index ].anim.stop( true ); timers.splice( index, 1 ); } } |
87c93a029
|
573 |
// Look for any animations in the old queue and finish them |
f986e111b
|
574 575 576 577 578 |
for ( index = 0; index < length; index++ ) { if ( queue[ index ] && queue[ index ].finish ) { queue[ index ].finish.call( this ); } } |
87c93a029
|
579 |
// Turn off finishing flag |
f986e111b
|
580 |
delete data.finish; |
87c93a029
|
581 |
} ); |
f986e111b
|
582 |
} |
87c93a029
|
583 |
} ); |
f986e111b
|
584 |
|
87c93a029
|
585 |
jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) { |
f986e111b
|
586 587 588 589 590 591 |
var cssFn = jQuery.fn[ name ]; jQuery.fn[ name ] = function( speed, easing, callback ) { return speed == null || typeof speed === "boolean" ? cssFn.apply( this, arguments ) : this.animate( genFx( name, true ), speed, easing, callback ); }; |
87c93a029
|
592 |
} ); |
f986e111b
|
593 594 |
// Generate shortcuts for custom animations |
87c93a029
|
595 596 597 598 |
jQuery.each( { slideDown: genFx( "show" ), slideUp: genFx( "hide" ), slideToggle: genFx( "toggle" ), |
f986e111b
|
599 600 601 602 603 604 605 |
fadeIn: { opacity: "show" }, fadeOut: { opacity: "hide" }, fadeToggle: { opacity: "toggle" } }, function( name, props ) { jQuery.fn[ name ] = function( speed, easing, callback ) { return this.animate( props, speed, easing, callback ); }; |
87c93a029
|
606 |
} ); |
f986e111b
|
607 608 609 610 |
jQuery.timers = []; jQuery.fx.tick = function() { var timer, |
87c93a029
|
611 612 |
i = 0, timers = jQuery.timers; |
f986e111b
|
613 614 615 616 617 |
fxNow = jQuery.now(); for ( ; i < timers.length; i++ ) { timer = timers[ i ]; |
87c93a029
|
618 |
|
f986e111b
|
619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 |
// Checks the timer has not already been removed if ( !timer() && timers[ i ] === timer ) { timers.splice( i--, 1 ); } } if ( !timers.length ) { jQuery.fx.stop(); } fxNow = undefined; }; jQuery.fx.timer = function( timer ) { jQuery.timers.push( timer ); if ( timer() ) { jQuery.fx.start(); } else { jQuery.timers.pop(); } }; jQuery.fx.interval = 13; |
f986e111b
|
641 642 |
jQuery.fx.start = function() { if ( !timerId ) { |
87c93a029
|
643 644 645 |
timerId = window.requestAnimationFrame ? window.requestAnimationFrame( raf ) : window.setInterval( jQuery.fx.tick, jQuery.fx.interval ); |
f986e111b
|
646 647 648 649 |
} }; jQuery.fx.stop = function() { |
87c93a029
|
650 651 652 653 654 |
if ( window.cancelAnimationFrame ) { window.cancelAnimationFrame( timerId ); } else { window.clearInterval( timerId ); } |
f986e111b
|
655 656 657 658 659 660 |
timerId = null; }; jQuery.fx.speeds = { slow: 600, fast: 200, |
87c93a029
|
661 |
|
f986e111b
|
662 663 664 665 666 |
// Default speed _default: 400 }; return jQuery; |
87c93a029
|
667 |
} ); |