| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 | <!DOCTYPE html><html><head>  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  <title>The source code</title>  <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />  <script type="text/javascript" src="../resources/prettify/prettify.js"></script>  <style type="text/css">    .highlight { display: block; background-color: #ddd; }  </style>  <script type="text/javascript">    function highlight() {      document.getElementById(location.hash.replace(/#/, "")).className = "highlight";    }  </script></head><body onload="prettyPrint(); highlight();">  <pre class="prettyprint lang-js"><span id='Ext-fx-target-ElementCSS'>/**</span> * @class Ext.fx.target.ElementCSS *  * This class represents a animation target for an {@link Ext.Element} that supports CSS * based animation. In general this class will not be created directly, the {@link Ext.Element}  * will be passed to the animation and the appropriate target will be created. */Ext.define('Ext.fx.target.ElementCSS', {    /* Begin Definitions */    extend: 'Ext.fx.target.Element',    /* End Definitions */    setAttr: function(targetData, isFirstFrame) {        var cssArr = {                attrs: [],                duration: [],                easing: []            },            ln = targetData.length,            attributes,            attrs,            attr,            easing,            duration,            o,            i,            j,            ln2;        for (i = 0; i < ln; i++) {            attrs = targetData[i];            duration = attrs.duration;            easing = attrs.easing;            attrs = attrs.attrs;            for (attr in attrs) {                if (Ext.Array.indexOf(cssArr.attrs, attr) == -1) {                    cssArr.attrs.push(attr.replace(/[A-Z]/g, function(v) {                        return '-' + v.toLowerCase();                    }));                    cssArr.duration.push(duration + 'ms');                    cssArr.easing.push(easing);                }            }        }        attributes = cssArr.attrs.join(',');        duration = cssArr.duration.join(',');        easing = cssArr.easing.join(', ');        for (i = 0; i < ln; i++) {            attrs = targetData[i].attrs;            for (attr in attrs) {                ln2 = attrs[attr].length;                for (j = 0; j < ln2; j++) {                    o = attrs[attr][j];                    o[0].setStyle(Ext.supports.CSS3Prefix + 'TransitionProperty', isFirstFrame ? '' : attributes);                    o[0].setStyle(Ext.supports.CSS3Prefix + 'TransitionDuration', isFirstFrame ? '' : duration);                    o[0].setStyle(Ext.supports.CSS3Prefix + 'TransitionTimingFunction', isFirstFrame ? '' : easing);                    o[0].setStyle(attr, o[1]);                    // Must trigger reflow to make this get used as the start point for the transition that follows                    if (isFirstFrame) {                        o = o[0].dom.offsetWidth;                    }                    else {                        // Remove transition properties when completed.                        o[0].on(Ext.supports.CSS3TransitionEnd, function() {                            this.setStyle(Ext.supports.CSS3Prefix + 'TransitionProperty', null);                            this.setStyle(Ext.supports.CSS3Prefix + 'TransitionDuration', null);                            this.setStyle(Ext.supports.CSS3Prefix + 'TransitionTimingFunction', null);                        }, o[0], { single: true });                    }                }            }        }    }});</pre></body></html>
 |