3 * Animation Queue mixin to handle chaining and queueing by target.
7 Ext.define('Ext.fx.Queue', {
9 requires: ['Ext.util.HashMap'],
11 constructor: function() {
12 this.targets = Ext.create('Ext.util.HashMap');
17 getFxDefaults: function(targetId) {
18 var target = this.targets.get(targetId);
20 return target.fxDefaults;
26 setFxDefaults: function(targetId, obj) {
27 var target = this.targets.get(targetId);
29 target.fxDefaults = Ext.apply(target.fxDefaults || {}, obj);
34 stopAnimation: function(targetId) {
36 queue = me.getFxQueue(targetId),
46 * Returns current animation object if the element has any effects actively running or queued, else returns false.
48 getActiveAnimation: function(targetId) {
49 var queue = this.getFxQueue(targetId);
50 return (queue && !!queue.length) ? queue[0] : false;
54 hasFxBlock: function(targetId) {
55 var queue = this.getFxQueue(targetId);
56 return queue && queue[0] && queue[0].block;
59 // @private get fx queue for passed target, create if needed.
60 getFxQueue: function(targetId) {
65 queue = me.fxQueue[targetId],
66 target = me.targets.get(targetId);
73 me.fxQueue[targetId] = [];
74 // GarbageCollector will need to clean up Elements since they aren't currently observable
75 if (target.type != 'element') {
76 target.target.on('destroy', function() {
77 me.fxQueue[targetId] = [];
81 return me.fxQueue[targetId];
85 queueFx: function(anim) {
94 queue = me.getFxQueue(target.getId());
98 if (anim.concurrent) {
102 queue[ln - 1].on('afteranimate', function() {
110 anim.on('afteranimate', function() {
111 Ext.Array.remove(queue, anim);
113 if (target.type == 'element') {
114 var el = Ext.get(target.id);