]>
git.r.bdr.sh - rbdr/dotfiles/blob - atom/packages/ex-mode/node_modules/space-pen/node_modules/jquery/src/effects.js
90226bd491889691365bcb686892c42b54716abb
6 "./css/defaultDisplay",
7 "./data/var/data_priv",
15 ], function( jQuery
, pnum
, cssExpand
, isHidden
, defaultDisplay
, data_priv
) {
19 rfxtypes
= /^(?:toggle|show|hide)$/,
20 rfxnum
= new RegExp( "^(?:([+-])=|)(" + pnum
+ ")([a-z%]*)$", "i" ),
22 animationPrefilters
= [ defaultPrefilter
],
24 "*": [ function( prop
, value
) {
25 var tween
= this.createTween( prop
, value
),
27 parts
= rfxnum
.exec( value
),
28 unit
= parts
&& parts
[ 3 ] || ( jQuery
.cssNumber
[ prop
] ? "" : "px" ),
30 // Starting value computation is required for potential unit mismatches
31 start
= ( jQuery
.cssNumber
[ prop
] || unit
!== "px" && +target
) &&
32 rfxnum
.exec( jQuery
.css( tween
.elem
, prop
) ),
36 if ( start
&& start
[ 3 ] !== unit
) {
37 // Trust units reported by jQuery.css
38 unit
= unit
|| start
[ 3 ];
40 // Make sure we update the tween properties later on
43 // Iteratively approximate from a nonzero starting point
47 // If previous iteration zeroed out, double until we get *something*.
48 // Use string for doubling so we don't accidentally see scale as unchanged below
49 scale
= scale
|| ".5";
52 start
= start
/ scale
;
53 jQuery
.style( tween
.elem
, prop
, start
+ unit
);
55 // Update scale, tolerating zero or NaN from tween.cur(),
56 // break the loop if scale is unchanged or perfect, or if we've just had enough
57 } while ( scale
!== (scale
= tween
.cur() / target
) && scale
!== 1 && --maxIterations
);
60 // Update tween properties
62 start
= tween
.start
= +start
|| +target
|| 0;
64 // If a +=/-= token was provided, we're doing a relative animation
65 tween
.end
= parts
[ 1 ] ?
66 start
+ ( parts
[ 1 ] + 1 ) * parts
[ 2 ] :
74 // Animations created synchronously will run synchronously
75 function createFxNow() {
76 setTimeout(function() {
79 return ( fxNow
= jQuery
.now() );
82 // Generate parameters to create a standard animation
83 function genFx( type
, includeWidth
) {
86 attrs
= { height: type
};
88 // If we include width, step value is 1 to do all cssExpand values,
89 // otherwise step value is 2 to skip over Left and Right
90 includeWidth
= includeWidth
? 1 : 0;
91 for ( ; i
< 4 ; i
+= 2 - includeWidth
) {
92 which
= cssExpand
[ i
];
93 attrs
[ "margin" + which
] = attrs
[ "padding" + which
] = type
;
97 attrs
.opacity
= attrs
.width
= type
;
103 function createTween( value
, prop
, animation
) {
105 collection
= ( tweeners
[ prop
] || [] ).concat( tweeners
[ "*" ] ),
107 length
= collection
.length
;
108 for ( ; index
< length
; index
++ ) {
109 if ( (tween
= collection
[ index
].call( animation
, prop
, value
)) ) {
111 // We're done with this property
117 function defaultPrefilter( elem
, props
, opts
) {
118 /* jshint validthis: true */
119 var prop
, value
, toggle
, tween
, hooks
, oldfire
, display
, checkDisplay
,
123 hidden
= elem
.nodeType
&& isHidden( elem
),
124 dataShow
= data_priv
.get( elem
, "fxshow" );
126 // Handle queue: false promises
128 hooks
= jQuery
._queueHooks( elem
, "fx" );
129 if ( hooks
.unqueued
== null ) {
131 oldfire
= hooks
.empty
.fire
;
132 hooks
.empty
.fire = function() {
133 if ( !hooks
.unqueued
) {
140 anim
.always(function() {
141 // Ensure the complete handler is called before this completes
142 anim
.always(function() {
144 if ( !jQuery
.queue( elem
, "fx" ).length
) {
151 // Height/width overflow pass
152 if ( elem
.nodeType
=== 1 && ( "height" in props
|| "width" in props
) ) {
153 // Make sure that nothing sneaks out
154 // Record all 3 overflow attributes because IE9-10 do not
155 // change the overflow attribute when overflowX and
156 // overflowY are set to the same value
157 opts
.overflow
= [ style
.overflow
, style
.overflowX
, style
.overflowY
];
159 // Set display property to inline-block for height/width
160 // animations on inline elements that are having width/height animated
161 display
= jQuery
.css( elem
, "display" );
163 // Test default display if display is currently "none"
164 checkDisplay
= display
=== "none" ?
165 data_priv
.get( elem
, "olddisplay" ) || defaultDisplay( elem
.nodeName
) : display
;
167 if ( checkDisplay
=== "inline" && jQuery
.css( elem
, "float" ) === "none" ) {
168 style
.display
= "inline-block";
172 if ( opts
.overflow
) {
173 style
.overflow
= "hidden";
174 anim
.always(function() {
175 style
.overflow
= opts
.overflow
[ 0 ];
176 style
.overflowX
= opts
.overflow
[ 1 ];
177 style
.overflowY
= opts
.overflow
[ 2 ];
182 for ( prop
in props
) {
183 value
= props
[ prop
];
184 if ( rfxtypes
.exec( value
) ) {
185 delete props
[ prop
];
186 toggle
= toggle
|| value
=== "toggle";
187 if ( value
=== ( hidden
? "hide" : "show" ) ) {
189 // If there is dataShow left over from a stopped hide or show and we are going to proceed with show, we should pretend to be hidden
190 if ( value
=== "show" && dataShow
&& dataShow
[ prop
] !== undefined ) {
196 orig
[ prop
] = dataShow
&& dataShow
[ prop
] || jQuery
.style( elem
, prop
);
198 // Any non-fx value stops us from restoring the original display value
204 if ( !jQuery
.isEmptyObject( orig
) ) {
206 if ( "hidden" in dataShow
) {
207 hidden
= dataShow
.hidden
;
210 dataShow
= data_priv
.access( elem
, "fxshow", {} );
213 // Store state if its toggle - enables .stop().toggle() to "reverse"
215 dataShow
.hidden
= !hidden
;
218 jQuery( elem
).show();
220 anim
.done(function() {
221 jQuery( elem
).hide();
224 anim
.done(function() {
227 data_priv
.remove( elem
, "fxshow" );
228 for ( prop
in orig
) {
229 jQuery
.style( elem
, prop
, orig
[ prop
] );
232 for ( prop
in orig
) {
233 tween
= createTween( hidden
? dataShow
[ prop
] : 0, prop
, anim
);
235 if ( !( prop
in dataShow
) ) {
236 dataShow
[ prop
] = tween
.start
;
238 tween
.end
= tween
.start
;
239 tween
.start
= prop
=== "width" || prop
=== "height" ? 1 : 0;
244 // If this is a noop like .hide().hide(), restore an overwritten display value
245 } else if ( (display
=== "none" ? defaultDisplay( elem
.nodeName
) : display
) === "inline" ) {
246 style
.display
= display
;
250 function propFilter( props
, specialEasing
) {
251 var index
, name
, easing
, value
, hooks
;
253 // camelCase, specialEasing and expand cssHook pass
254 for ( index
in props
) {
255 name
= jQuery
.camelCase( index
);
256 easing
= specialEasing
[ name
];
257 value
= props
[ index
];
258 if ( jQuery
.isArray( value
) ) {
260 value
= props
[ index
] = value
[ 0 ];
263 if ( index
!== name
) {
264 props
[ name
] = value
;
265 delete props
[ index
];
268 hooks
= jQuery
.cssHooks
[ name
];
269 if ( hooks
&& "expand" in hooks
) {
270 value
= hooks
.expand( value
);
271 delete props
[ name
];
273 // Not quite $.extend, this won't overwrite existing keys.
274 // Reusing 'index' because we have the correct "name"
275 for ( index
in value
) {
276 if ( !( index
in props
) ) {
277 props
[ index
] = value
[ index
];
278 specialEasing
[ index
] = easing
;
282 specialEasing
[ name
] = easing
;
287 function Animation( elem
, properties
, options
) {
291 length
= animationPrefilters
.length
,
292 deferred
= jQuery
.Deferred().always( function() {
293 // Don't match elem in the :animated selector
300 var currentTime
= fxNow
|| createFxNow(),
301 remaining
= Math
.max( 0, animation
.startTime
+ animation
.duration
- currentTime
),
302 // Support: Android 2.3
303 // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
304 temp
= remaining
/ animation
.duration
|| 0,
307 length
= animation
.tweens
.length
;
309 for ( ; index
< length
; index
++ ) {
310 animation
.tweens
[ index
].run( percent
);
313 deferred
.notifyWith( elem
, [ animation
, percent
, remaining
]);
315 if ( percent
< 1 && length
) {
318 deferred
.resolveWith( elem
, [ animation
] );
322 animation
= deferred
.promise({
324 props: jQuery
.extend( {}, properties
),
325 opts: jQuery
.extend( true, { specialEasing: {} }, options
),
326 originalProperties: properties
,
327 originalOptions: options
,
328 startTime: fxNow
|| createFxNow(),
329 duration: options
.duration
,
331 createTween: function( prop
, end
) {
332 var tween
= jQuery
.Tween( elem
, animation
.opts
, prop
, end
,
333 animation
.opts
.specialEasing
[ prop
] || animation
.opts
.easing
);
334 animation
.tweens
.push( tween
);
337 stop: function( gotoEnd
) {
339 // If we are going to the end, we want to run all the tweens
340 // otherwise we skip this part
341 length
= gotoEnd
? animation
.tweens
.length : 0;
346 for ( ; index
< length
; index
++ ) {
347 animation
.tweens
[ index
].run( 1 );
350 // Resolve when we played the last frame; otherwise, reject
352 deferred
.resolveWith( elem
, [ animation
, gotoEnd
] );
354 deferred
.rejectWith( elem
, [ animation
, gotoEnd
] );
359 props
= animation
.props
;
361 propFilter( props
, animation
.opts
.specialEasing
);
363 for ( ; index
< length
; index
++ ) {
364 result
= animationPrefilters
[ index
].call( animation
, elem
, props
, animation
.opts
);
370 jQuery
.map( props
, createTween
, animation
);
372 if ( jQuery
.isFunction( animation
.opts
.start
) ) {
373 animation
.opts
.start
.call( elem
, animation
);
377 jQuery
.extend( tick
, {
380 queue: animation
.opts
.queue
384 // attach callbacks from options
385 return animation
.progress( animation
.opts
.progress
)
386 .done( animation
.opts
.done
, animation
.opts
.complete
)
387 .fail( animation
.opts
.fail
)
388 .always( animation
.opts
.always
);
391 jQuery
.Animation
= jQuery
.extend( Animation
, {
393 tweener: function( props
, callback
) {
394 if ( jQuery
.isFunction( props
) ) {
398 props
= props
.split(" ");
403 length
= props
.length
;
405 for ( ; index
< length
; index
++ ) {
406 prop
= props
[ index
];
407 tweeners
[ prop
] = tweeners
[ prop
] || [];
408 tweeners
[ prop
].unshift( callback
);
412 prefilter: function( callback
, prepend
) {
414 animationPrefilters
.unshift( callback
);
416 animationPrefilters
.push( callback
);
421 jQuery
.speed = function( speed
, easing
, fn
) {
422 var opt
= speed
&& typeof speed
=== "object" ? jQuery
.extend( {}, speed
) : {
423 complete: fn
|| !fn
&& easing
||
424 jQuery
.isFunction( speed
) && speed
,
426 easing: fn
&& easing
|| easing
&& !jQuery
.isFunction( easing
) && easing
429 opt
.duration
= jQuery
.fx
.off
? 0 : typeof opt
.duration
=== "number" ? opt
.duration :
430 opt
.duration
in jQuery
.fx
.speeds
? jQuery
.fx
.speeds
[ opt
.duration
] : jQuery
.fx
.speeds
._default
;
432 // Normalize opt.queue - true/undefined/null -> "fx"
433 if ( opt
.queue
== null || opt
.queue
=== true ) {
438 opt
.old
= opt
.complete
;
440 opt
.complete = function() {
441 if ( jQuery
.isFunction( opt
.old
) ) {
442 opt
.old
.call( this );
446 jQuery
.dequeue( this, opt
.queue
);
454 fadeTo: function( speed
, to
, easing
, callback
) {
456 // Show any hidden elements after setting opacity to 0
457 return this.filter( isHidden
).css( "opacity", 0 ).show()
459 // Animate to the value specified
460 .end().animate({ opacity: to
}, speed
, easing
, callback
);
462 animate: function( prop
, speed
, easing
, callback
) {
463 var empty
= jQuery
.isEmptyObject( prop
),
464 optall
= jQuery
.speed( speed
, easing
, callback
),
465 doAnimation = function() {
466 // Operate on a copy of prop so per-property easing won't be lost
467 var anim
= Animation( this, jQuery
.extend( {}, prop
), optall
);
469 // Empty animations, or finishing resolves immediately
470 if ( empty
|| data_priv
.get( this, "finish" ) ) {
474 doAnimation
.finish
= doAnimation
;
476 return empty
|| optall
.queue
=== false ?
477 this.each( doAnimation
) :
478 this.queue( optall
.queue
, doAnimation
);
480 stop: function( type
, clearQueue
, gotoEnd
) {
481 var stopQueue = function( hooks
) {
482 var stop
= hooks
.stop
;
487 if ( typeof type
!== "string" ) {
488 gotoEnd
= clearQueue
;
492 if ( clearQueue
&& type
!== false ) {
493 this.queue( type
|| "fx", [] );
496 return this.each(function() {
498 index
= type
!= null && type
+ "queueHooks",
499 timers
= jQuery
.timers
,
500 data
= data_priv
.get( this );
503 if ( data
[ index
] && data
[ index
].stop
) {
504 stopQueue( data
[ index
] );
507 for ( index
in data
) {
508 if ( data
[ index
] && data
[ index
].stop
&& rrun
.test( index
) ) {
509 stopQueue( data
[ index
] );
514 for ( index
= timers
.length
; index
--; ) {
515 if ( timers
[ index
].elem
=== this && (type
== null || timers
[ index
].queue
=== type
) ) {
516 timers
[ index
].anim
.stop( gotoEnd
);
518 timers
.splice( index
, 1 );
522 // Start the next in the queue if the last step wasn't forced.
523 // Timers currently will call their complete callbacks, which
524 // will dequeue but only if they were gotoEnd.
525 if ( dequeue
|| !gotoEnd
) {
526 jQuery
.dequeue( this, type
);
530 finish: function( type
) {
531 if ( type
!== false ) {
534 return this.each(function() {
536 data
= data_priv
.get( this ),
537 queue
= data
[ type
+ "queue" ],
538 hooks
= data
[ type
+ "queueHooks" ],
539 timers
= jQuery
.timers
,
540 length
= queue
? queue
.length : 0;
542 // Enable finishing flag on private data
545 // Empty the queue first
546 jQuery
.queue( this, type
, [] );
548 if ( hooks
&& hooks
.stop
) {
549 hooks
.stop
.call( this, true );
552 // Look for any active animations, and finish them
553 for ( index
= timers
.length
; index
--; ) {
554 if ( timers
[ index
].elem
=== this && timers
[ index
].queue
=== type
) {
555 timers
[ index
].anim
.stop( true );
556 timers
.splice( index
, 1 );
560 // Look for any animations in the old queue and finish them
561 for ( index
= 0; index
< length
; index
++ ) {
562 if ( queue
[ index
] && queue
[ index
].finish
) {
563 queue
[ index
].finish
.call( this );
567 // Turn off finishing flag
573 jQuery
.each([ "toggle", "show", "hide" ], function( i
, name
) {
574 var cssFn
= jQuery
.fn
[ name
];
575 jQuery
.fn
[ name
] = function( speed
, easing
, callback
) {
576 return speed
== null || typeof speed
=== "boolean" ?
577 cssFn
.apply( this, arguments
) :
578 this.animate( genFx( name
, true ), speed
, easing
, callback
);
582 // Generate shortcuts for custom animations
584 slideDown: genFx("show"),
585 slideUp: genFx("hide"),
586 slideToggle: genFx("toggle"),
587 fadeIn: { opacity: "show" },
588 fadeOut: { opacity: "hide" },
589 fadeToggle: { opacity: "toggle" }
590 }, function( name
, props
) {
591 jQuery
.fn
[ name
] = function( speed
, easing
, callback
) {
592 return this.animate( props
, speed
, easing
, callback
);
597 jQuery
.fx
.tick = function() {
600 timers
= jQuery
.timers
;
602 fxNow
= jQuery
.now();
604 for ( ; i
< timers
.length
; i
++ ) {
606 // Checks the timer has not already been removed
607 if ( !timer() && timers
[ i
] === timer
) {
608 timers
.splice( i
--, 1 );
612 if ( !timers
.length
) {
618 jQuery
.fx
.timer = function( timer
) {
619 jQuery
.timers
.push( timer
);
627 jQuery
.fx
.interval
= 13;
629 jQuery
.fx
.start = function() {
631 timerId
= setInterval( jQuery
.fx
.tick
, jQuery
.fx
.interval
);
635 jQuery
.fx
.stop = function() {
636 clearInterval( timerId
);