Projet

Général

Profil

Paste
Télécharger (1,9 ko) Statistiques
| Branche: | Révision:

root / drupal7 / sites / all / modules / jquery_update / replace / ui / ui / jquery.ui.effect-shake.js @ 503b3f7b

1
/*!
2
 * jQuery UI Effects Shake 1.10.2
3
 * http://jqueryui.com
4
 *
5
 * Copyright 2013 jQuery Foundation and other contributors
6
 * Released under the MIT license.
7
 * http://jquery.org/license
8
 *
9
 * http://api.jqueryui.com/shake-effect/
10
 *
11
 * Depends:
12
 *        jquery.ui.effect.js
13
 */
14
(function( $, undefined ) {
15

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

    
18
        var el = $( this ),
19
                props = [ "position", "top", "bottom", "left", "right", "height", "width" ],
20
                mode = $.effects.setMode( el, o.mode || "effect" ),
21
                direction = o.direction || "left",
22
                distance = o.distance || 20,
23
                times = o.times || 3,
24
                anims = times * 2 + 1,
25
                speed = Math.round(o.duration/anims),
26
                ref = (direction === "up" || direction === "down") ? "top" : "left",
27
                positiveMotion = (direction === "up" || direction === "left"),
28
                animation = {},
29
                animation1 = {},
30
                animation2 = {},
31
                i,
32

    
33
                // we will need to re-assemble the queue to stack our animations in place
34
                queue = el.queue(),
35
                queuelen = queue.length;
36

    
37
        $.effects.save( el, props );
38
        el.show();
39
        $.effects.createWrapper( el );
40

    
41
        // Animation
42
        animation[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance;
43
        animation1[ ref ] = ( positiveMotion ? "+=" : "-=" ) + distance * 2;
44
        animation2[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance * 2;
45

    
46
        // Animate
47
        el.animate( animation, speed, o.easing );
48

    
49
        // Shakes
50
        for ( i = 1; i < times; i++ ) {
51
                el.animate( animation1, speed, o.easing ).animate( animation2, speed, o.easing );
52
        }
53
        el
54
                .animate( animation1, speed, o.easing )
55
                .animate( animation, speed / 2, o.easing )
56
                .queue(function() {
57
                        if ( mode === "hide" ) {
58
                                el.hide();
59
                        }
60
                        $.effects.restore( el, props );
61
                        $.effects.removeWrapper( el );
62
                        done();
63
                });
64

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

    
72
};
73

    
74
})(jQuery);