scratch – Diff between revs 58 and 125
?pathlinks?
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 | |