annotate default/node_modules/jquery/src/effects.js @ 0:1d038bc9b3d2 default tip

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