From ab627e03a6a37cbf3291e9600f5482bd50991360 Mon Sep 17 00:00:00 2001 From: gnarf Date: Tue, 21 Jun 2011 01:11:46 -0500 Subject: [PATCH] Effects.*: DRY the complete callback execution into the 'done' callback passed into an effect --- ui/jquery.effects.blind.js | 7 ++----- ui/jquery.effects.bounce.js | 11 ++++------- ui/jquery.effects.clip.js | 7 ++----- ui/jquery.effects.core.js | 14 +++++++++++++- ui/jquery.effects.drop.js | 5 ++--- ui/jquery.effects.explode.js | 7 ++----- ui/jquery.effects.fade.js | 7 ++----- ui/jquery.effects.fold.js | 7 ++----- ui/jquery.effects.highlight.js | 7 ++----- ui/jquery.effects.pulsate.js | 11 ++++------- ui/jquery.effects.scale.js | 24 ++++++------------------ ui/jquery.effects.shake.js | 11 ++++------- ui/jquery.effects.slide.js | 7 ++----- ui/jquery.effects.transfer.js | 7 ++----- 14 files changed, 49 insertions(+), 83 deletions(-) diff --git a/ui/jquery.effects.blind.js b/ui/jquery.effects.blind.js index 09d6a9e57..5f86bed7b 100644 --- a/ui/jquery.effects.blind.js +++ b/ui/jquery.effects.blind.js @@ -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(); } }); diff --git a/ui/jquery.effects.bounce.js b/ui/jquery.effects.bounce.js index 38171c32e..41ee34f64 100644 --- a/ui/jquery.effects.bounce.js +++ b/ui/jquery.effects.bounce.js @@ -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,16 +91,13 @@ $.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") @@ -108,7 +105,7 @@ $.effects.effect.bounce = function( o, next ) { queue.splice.apply( queue, [ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) ); } - next(); + el.dequeue(); }; diff --git a/ui/jquery.effects.clip.js b/ui/jquery.effects.clip.js index 8c5c76e8c..c6eecc671 100644 --- a/ui/jquery.effects.clip.js +++ b/ui/jquery.effects.clip.js @@ -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(); } }); diff --git a/ui/jquery.effects.core.js b/ui/jquery.effects.core.js index 87fc5a074..330ddd83c 100644 --- a/ui/jquery.effects.core.js +++ b/ui/jquery.effects.core.js @@ -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 diff --git a/ui/jquery.effects.drop.js b/ui/jquery.effects.drop.js index 2fba49d92..2e7a6ec0f 100644 --- a/ui/jquery.effects.drop.js +++ b/ui/jquery.effects.drop.js @@ -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(); } }); diff --git a/ui/jquery.effects.explode.js b/ui/jquery.effects.explode.js index 0deb2be9f..22f506045 100644 --- a/ui/jquery.effects.explode.js +++ b/ui/jquery.effects.explode.js @@ -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(); } }; diff --git a/ui/jquery.effects.fade.js b/ui/jquery.effects.fade.js index 8f2d956dc..9b79ad3bc 100644 --- a/ui/jquery.effects.fade.js +++ b/ui/jquery.effects.fade.js @@ -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(); } }); }; diff --git a/ui/jquery.effects.fold.js b/ui/jquery.effects.fold.js index b2a02ba78..7c4f583c1 100644 --- a/ui/jquery.effects.fold.js +++ b/ui/jquery.effects.fold.js @@ -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(); }); }; diff --git a/ui/jquery.effects.highlight.js b/ui/jquery.effects.highlight.js index 709e93a3c..edde845a3 100644 --- a/ui/jquery.effects.highlight.js +++ b/ui/jquery.effects.highlight.js @@ -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(); } }); }; diff --git a/ui/jquery.effects.pulsate.js b/ui/jquery.effects.pulsate.js index bc257f624..7d6e9328f 100644 --- a/ui/jquery.effects.pulsate.js +++ b/ui/jquery.effects.pulsate.js @@ -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,14 +44,11 @@ $.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 @@ -59,7 +56,7 @@ $.effects.effect.pulsate = function( o, next ) { queue.splice.apply( queue, [ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) ); } - next(); + elem.dequeue(); }; })(jQuery); diff --git a/ui/jquery.effects.scale.js b/ui/jquery.effects.scale.js index 2642c6c1d..000fdee28 100644 --- a/ui/jquery.effects.scale.js +++ b/ui/jquery.effects.scale.js @@ -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(); } }); diff --git a/ui/jquery.effects.shake.js b/ui/jquery.effects.shake.js index 311edced0..7d83a9bb8 100644 --- a/ui/jquery.effects.shake.js +++ b/ui/jquery.effects.shake.js @@ -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,16 +53,13 @@ $.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") @@ -70,7 +67,7 @@ $.effects.effect.shake = function( o, next ) { queue.splice.apply( queue, [ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) ); } - next(); + el.dequeue(); }; diff --git a/ui/jquery.effects.slide.js b/ui/jquery.effects.slide.js index 3be28d91b..de393c779 100644 --- a/ui/jquery.effects.slide.js +++ b/ui/jquery.effects.slide.js @@ -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(); } }); diff --git a/ui/jquery.effects.transfer.js b/ui/jquery.effects.transfer.js index 0c840c35c..1fa291228 100644 --- a/ui/jquery.effects.transfer.js +++ b/ui/jquery.effects.transfer.js @@ -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(); }); }; -- 2.39.5