Skip to content
Permalink
Browse files

Effects.*: DRY the complete callback execution into the 'done' callba…

…ck passed into an effect
  • Loading branch information
gnarf committed Jun 21, 2011
1 parent 65a6c46 commit ab627e03a6a37cbf3291e9600f5482bd50991360
@@ -15,7 +15,7 @@
var rvertical = /up|down|vertical/,
rpositivemotion = /up|left|vertical|horizontal/;

$.effects.effect.blind = function( o, next ) {
$.effects.effect.blind = function( o, done ) {
// Create element
var el = $( this ),
props = [ "position", "top", "bottom", "left", "right", "height", "width" ],
@@ -70,10 +70,7 @@ $.effects.effect.blind = function( o, next ) {
}
$.effects.restore( el, props );
$.effects.removeWrapper( el );
if ( $.isFunction( o.complete ) ) {
o.complete.apply( el[ 0 ], arguments );
}
next();
done();
}
});

@@ -12,7 +12,7 @@
*/
(function( $, undefined ) {

$.effects.effect.bounce = function( o, next ) {
$.effects.effect.bounce = function( o, done ) {
var el = $( this ),
props = [ "position", "top", "bottom", "left", "right", "height", "width" ],

@@ -91,24 +91,21 @@ $.effects.effect.bounce = function( o, next ) {
el.animate( upAnim, speed, easing );
}

el.queue( function( next ) {
el.queue(function() {
if ( hide ) {
el.hide();
}
$.effects.restore( el, props );
$.effects.removeWrapper( el );
if ( o.complete ) {
o.complete.apply( el[ 0 ] );
}
next();
done();
});

// inject all the animations we just queued to be first in line (after "inprogress")
if ( queuelen > 1) {
queue.splice.apply( queue,
[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );
}
next();
el.dequeue();

};

@@ -12,7 +12,7 @@
*/
(function( $, undefined ) {

$.effects.effect.clip = function( o, next ) {
$.effects.effect.clip = function( o, done ) {
// Create element
var el = $( this ),
props = [ "position", "top", "bottom", "left", "right", "height", "width" ],
@@ -57,10 +57,7 @@ $.effects.effect.clip = function( o, next ) {
}
$.effects.restore( el, props );
$.effects.removeWrapper( el );
if ( $.isFunction( o.complete ) ) {
o.complete.apply( el[ 0 ], arguments );
}
el.dequeue();
done();
}
});

@@ -556,7 +556,19 @@ $.fn.extend({
}

function run( next ) {
effectMethod.call( this, args, $.isFunction( next ) ? next : $.noop );
var elem = this,
complete = args.complete;

function done() {
if ( $.isFunction( complete ) ) {
complete.call( elem );
}
if ( $.isFunction( next ) ) {
next();
}
}

effectMethod.call( elem, args, done );
}

// TODO: remove this check in 2.0, effectMethod will always be true
@@ -12,7 +12,7 @@
*/
(function( $, undefined ) {

$.effects.effect.drop = function( o, next ) {
$.effects.effect.drop = function( o, done ) {

var el = $( this ),
props = [ "position", "top", "bottom", "left", "right", "opacity", "height", "width" ],
@@ -54,8 +54,7 @@ $.effects.effect.drop = function( o, next ) {
mode == "hide" && el.hide();
$.effects.restore( el, props );
$.effects.removeWrapper( el );
$.isFunction( o.complete ) && o.complete.apply( this, arguments );
next();
done();
}
});

@@ -12,7 +12,7 @@
*/
(function( $, undefined ) {

$.effects.effect.explode = function( o, next ) {
$.effects.effect.explode = function( o, done ) {

var rows = o.pieces ? Math.round( Math.sqrt( o.pieces ) ) : 3,
cells = rows,
@@ -89,10 +89,7 @@ $.effects.effect.explode = function( o, next ) {
if ( !show ) {
el.hide();
}
if ( $.isFunction( o.complete ) ) {
o.complete.apply( el[ 0 ] );
}
next();
done();
}
};

@@ -12,7 +12,7 @@
*/
(function( $, undefined ) {

$.effects.effect.fade = function( o, next ) {
$.effects.effect.fade = function( o, done ) {
var el = $( this ),
mode = $.effects.setMode( el, o.mode || "toggle" ),
hide = mode === "hide";
@@ -28,10 +28,7 @@ $.effects.effect.fade = function( o, next ) {
if ( hide ) {
el.hide();
}
if ( o.complete ) {
o.complete.call( this );
}
next();
done();
}
});
};
@@ -12,7 +12,7 @@
*/
(function( $, undefined ) {

$.effects.effect.fold = function( o, next ) {
$.effects.effect.fold = function( o, done ) {

// Create element
var el = $( this ),
@@ -66,10 +66,7 @@ $.effects.effect.fold = function( o, next ) {
}
$.effects.restore( el, props );
$.effects.removeWrapper( el );
if ( $.isFunction( o.complete ) ) {
o.complete.apply( el[ 0 ], arguments );
}
next();
done();
});

};
@@ -12,7 +12,7 @@
*/
(function( $, undefined ) {

$.effects.effect.highlight = function( o, next ) {
$.effects.effect.highlight = function( o, done ) {
var elem = $( this ),
props = [ "backgroundImage", "backgroundColor", "opacity" ],
mode = $.effects.setMode( elem, o.mode || "show" ),
@@ -41,10 +41,7 @@ $.effects.effect.highlight = function( o, next ) {
elem.hide();
}
$.effects.restore( elem, props );
if ( $.isFunction( o.complete) ) {
o.complete.apply( this, arguments );
}
next();
done();
}
});
};
@@ -12,7 +12,7 @@
*/
(function( $, undefined ) {

$.effects.effect.pulsate = function( o, next ) {
$.effects.effect.pulsate = function( o, done ) {
var elem = $( this ),
mode = $.effects.setMode( elem, o.mode || "show" ),
show = mode === "show",
@@ -44,22 +44,19 @@ $.effects.effect.pulsate = function( o, next ) {
opacity: animateTo
}, duration, o.easing);

elem.queue( function( next ) {
elem.queue(function() {
if ( hide ) {
elem.hide();
}
if ( o.complete ) {
o.complete.apply( this );
}
next();
done();
});

// We just queued up "anims" animations, we need to put them next in the queue
if ( queuelen > 1 ) {
queue.splice.apply( queue,
[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );
}
next();
elem.dequeue();
};

})(jQuery);
@@ -12,16 +12,7 @@
*/
(function( $, undefined ) {

function compFunction( el, complete, next ) {
return function() {
if ( $.isFunction( complete ) ) {
complete.apply( el );
}
next();
};
};

$.effects.effect.puff = function( o, next ) {
$.effects.effect.puff = function( o, done ) {
var elem = $( this ),
mode = $.effects.setMode( elem, o.mode || "hide" ),
hide = mode === "hide",
@@ -37,7 +28,7 @@ $.effects.effect.puff = function( o, next ) {
queue: false,
fade: true,
mode: mode,
complete: compFunction( this, o.complete, next ),
complete: done,
percent: hide ? percent : 100,
from: hide
? original
@@ -50,7 +41,7 @@ $.effects.effect.puff = function( o, next ) {
elem.effect( o );
};

$.effects.effect.scale = function( o, next ) {
$.effects.effect.scale = function( o, done ) {

// Create element
var el = $( this ),
@@ -73,7 +64,7 @@ $.effects.effect.scale = function( o, next ) {
// We are going to pass this effect to the size effect:
options.effect = "size";
options.queue = false;
options.complete = compFunction( this, options.complete, next );
options.complete = done;

// Set default origin and restore for show/hide
if ( mode != "effect" ) {
@@ -105,7 +96,7 @@ $.effects.effect.scale = function( o, next ) {

};

$.effects.effect.size = function( o, next ) {
$.effects.effect.size = function( o, done ) {

// Create element
var el = $( this ),
@@ -302,10 +293,7 @@ $.effects.effect.size = function( o, next ) {
}

$.effects.removeWrapper( el );
if ( $.isFunction( o.complete ) ) {
o.complete.apply( this, arguments );
}
next();
done();
}
});

@@ -12,7 +12,7 @@
*/
(function( $, undefined ) {

$.effects.effect.shake = function( o, next ) {
$.effects.effect.shake = function( o, done ) {

var el = $( this ),
props = [ "position", "top", "bottom", "left", "right", "height", "width" ],
@@ -53,24 +53,21 @@ $.effects.effect.shake = function( o, next ) {
el
.animate( animation1, speed, o.easing )
.animate( animation, speed / 2, o.easing )
.queue( function( next ) {
.queue(function() {
if ( mode === "hide" ) {
el.hide();
}
$.effects.restore( el, props );
$.effects.removeWrapper( el );
if ( $.isFunction( o.complete ) ) {
o.complete.apply( this, arguments );
}
next();
done();
});

// inject all the animations we just queued to be first in line (after "inprogress")
if ( queuelen > 1) {
queue.splice.apply( queue,
[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );
}
next();
el.dequeue();

};

@@ -12,7 +12,7 @@
*/
(function( $, undefined ) {

$.effects.effect.slide = function( o, next ) {
$.effects.effect.slide = function( o, done ) {

// Create element
var el = $( this ),
@@ -58,10 +58,7 @@ $.effects.effect.slide = function( o, next ) {
}
$.effects.restore( el, props );
$.effects.removeWrapper( el );
if ( $.isFunction( o.complete ) ) {
o.complete.apply( this, arguments );
}
next();
done();
}
});

@@ -12,7 +12,7 @@
*/
(function( $, undefined ) {

$.effects.effect.transfer = function( o, next ) {
$.effects.effect.transfer = function( o, done ) {
var elem = $( this ),
target = $( o.to ),
targetFixed = target.css( "position" ) === "fixed",
@@ -39,10 +39,7 @@ $.effects.effect.transfer = function( o, next ) {
})
.animate( animation, o.duration, o.easing, function() {
transfer.remove();
if ( $.isFunction( o.complete ) ) {
o.complete.apply( elem[0], arguments );
}
next();
done();
});
};

0 comments on commit ab627e0

Please sign in to comment.
You can’t perform that action at this time.