/** * @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; }});