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