scratch – Diff between revs 58 and 125

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