/**
* @private
*/
Ext.define('Ext.fx.State', {
isAnimatable: {
'background-color': true,
'background-image': true,
'background-position': true,
'border-bottom-color': true,
'border-bottom-width': true,
'border-color': true,
'border-left-color': true,
'border-left-width': true,
'border-right-color': true,
'border-right-width': true,
'border-spacing': true,
'border-top-color': true,
'border-top-width': true,
'border-width': true,
'bottom': true,
'color': true,
'crop': true,
'font-size': true,
'font-weight': true,
'height': true,
'left': true,
'letter-spacing': true,
'line-height': true,
'margin-bottom': true,
'margin-left': true,
'margin-right': true,
'margin-top': true,
'max-height': true,
'max-width': true,
'min-height': true,
'min-width': true,
'opacity': true,
'outline-color': true,
'outline-offset': true,
'outline-width': true,
'padding-bottom': true,
'padding-left': true,
'padding-right': true,
'padding-top': true,
'right': true,
'text-indent': true,
'text-shadow': true,
'top': true,
'vertical-align': true,
'visibility': true,
'width': true,
'word-spacing': true,
'z-index': true,
'zoom': true,
'transform': true
},
constructor: function(data) {
this.data = {};
this.set(data);
},
setConfig: function(data) {
this.set(data);
return this;
},
setRaw: function(data) {
this.data = data;
return this;
},
clear: function() {
return this.setRaw({});
},
setTransform: function(name, value) {
var data = this.data,
isArray = Ext.isArray(value),
transform = data.transform,
ln, key;
if (!transform) {
transform = data.transform = {
translateX: 0,
translateY: 0,
translateZ: 0,
scaleX: 1,
scaleY: 1,
scaleZ: 1,
rotate: 0,
rotateX: 0,
rotateY: 0,
rotateZ: 0,
skewX: 0,
skewY: 0
};
}
if (typeof name === 'string') {
switch (name) {
case 'translate':
if (isArray) {
ln = value.length;
if (ln === 0) {
break;
}
transform.translateX = value[0];
if (ln === 1) {
break;
}
transform.translateY = value[1];
if (ln === 2) {
break;
}
transform.translateZ = value[2];
}
else {
transform.translateX = value;
}
break;
case 'rotate':
if (isArray) {
ln = value.length;
if (ln === 0) {
break;
}
transform.rotateX = value[0];
if (ln === 1) {
break;
}
transform.rotateY = value[1];
if (ln === 2) {
break;
}
transform.rotateZ = value[2];
}
else {
transform.rotate = value;
}
break;
case 'scale':
if (isArray) {
ln = value.length;
if (ln === 0) {
break;
}
transform.scaleX = value[0];
if (ln === 1) {
break;
}
transform.scaleY = value[1];
if (ln === 2) {
break;
}
transform.scaleZ = value[2];
}
else {
transform.scaleX = value;
transform.scaleY = value;
}
break;
case 'skew':
if (isArray) {
ln = value.length;
if (ln === 0) {
break;
}
transform.skewX = value[0];
if (ln === 1) {
break;
}
transform.skewY = value[1];
}
else {
transform.skewX = value;
}
break;
default:
transform[name] = value;
}
}
else {
for (key in name) {
if (name.hasOwnProperty(key)) {
value = name[key];
this.setTransform(key, value);
}
}
}
},
set: function(name, value) {
var data = this.data,
key;
if (typeof name !== 'string') {
for (key in name) {
value = name[key];
if (key === 'transform') {
this.setTransform(value);
}
else {
data[key] = value;
}
}
}
else {
if (name === 'transform') {
this.setTransform(value);
}
else {
data[name] = value;
}
}
return this;
},
unset: function(name) {
var data = this.data;
if (data.hasOwnProperty(name)) {
delete data[name];
}
return this;
},
getData: function() {
return this.data;
}
});