scratch – Blame information for rev 125

Subversion Repositories:
Rev:
Rev Author Line No. Line
125 office 1 define([
58 office 2 "./core",
125 office 3 "./data/var/data_priv",
58 office 4 "./deferred",
5 "./callbacks"
125 office 6 ], function( jQuery, data_priv ) {
58 office 7  
125 office 8 jQuery.extend({
58 office 9 queue: function( elem, type, data ) {
10 var queue;
11  
12 if ( elem ) {
13 type = ( type || "fx" ) + "queue";
125 office 14 queue = data_priv.get( elem, type );
58 office 15  
16 // Speed up dequeue by getting out quickly if this is just a lookup
17 if ( data ) {
18 if ( !queue || jQuery.isArray( data ) ) {
125 office 19 queue = data_priv.access( elem, type, jQuery.makeArray(data) );
58 office 20 } else {
21 queue.push( data );
22 }
23 }
24 return queue || [];
25 }
26 },
27  
28 dequeue: function( elem, type ) {
29 type = type || "fx";
30  
31 var queue = jQuery.queue( elem, type ),
32 startLength = queue.length,
33 fn = queue.shift(),
34 hooks = jQuery._queueHooks( elem, type ),
35 next = function() {
36 jQuery.dequeue( elem, type );
37 };
38  
39 // If the fx queue is dequeued, always remove the progress sentinel
40 if ( fn === "inprogress" ) {
41 fn = queue.shift();
42 startLength--;
43 }
44  
45 if ( fn ) {
46  
47 // Add a progress sentinel to prevent the fx queue from being
48 // automatically dequeued
49 if ( type === "fx" ) {
50 queue.unshift( "inprogress" );
51 }
52  
53 // Clear up the last queue stop function
54 delete hooks.stop;
55 fn.call( elem, next, hooks );
56 }
57  
58 if ( !startLength && hooks ) {
59 hooks.empty.fire();
60 }
61 },
62  
63 // Not public - generate a queueHooks object, or return the current one
64 _queueHooks: function( elem, type ) {
65 var key = type + "queueHooks";
125 office 66 return data_priv.get( elem, key ) || data_priv.access( elem, key, {
67 empty: jQuery.Callbacks("once memory").add(function() {
68 data_priv.remove( elem, [ type + "queue", key ] );
69 })
70 });
58 office 71 }
125 office 72 });
58 office 73  
125 office 74 jQuery.fn.extend({
58 office 75 queue: function( type, data ) {
76 var setter = 2;
77  
78 if ( typeof type !== "string" ) {
79 data = type;
80 type = "fx";
81 setter--;
82 }
83  
84 if ( arguments.length < setter ) {
125 office 85 return jQuery.queue( this[0], type );
58 office 86 }
87  
88 return data === undefined ?
89 this :
125 office 90 this.each(function() {
58 office 91 var queue = jQuery.queue( this, type, data );
92  
93 // Ensure a hooks for this queue
94 jQuery._queueHooks( this, type );
95  
125 office 96 if ( type === "fx" && queue[0] !== "inprogress" ) {
58 office 97 jQuery.dequeue( this, type );
98 }
125 office 99 });
58 office 100 },
101 dequeue: function( type ) {
125 office 102 return this.each(function() {
58 office 103 jQuery.dequeue( this, type );
125 office 104 });
58 office 105 },
106 clearQueue: function( type ) {
107 return this.queue( type || "fx", [] );
108 },
109 // Get a promise resolved when queues of a certain type
110 // are emptied (fx is the type by default)
111 promise: function( type, obj ) {
112 var tmp,
113 count = 1,
114 defer = jQuery.Deferred(),
115 elements = this,
116 i = this.length,
117 resolve = function() {
118 if ( !( --count ) ) {
119 defer.resolveWith( elements, [ elements ] );
120 }
121 };
122  
123 if ( typeof type !== "string" ) {
124 obj = type;
125 type = undefined;
126 }
127 type = type || "fx";
128  
129 while ( i-- ) {
125 office 130 tmp = data_priv.get( elements[ i ], type + "queueHooks" );
58 office 131 if ( tmp && tmp.empty ) {
132 count++;
133 tmp.empty.add( resolve );
134 }
135 }
136 resolve();
137 return defer.promise( obj );
138 }
125 office 139 });
58 office 140  
141 return jQuery;
125 office 142 });