| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225 | 
							- <!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">/*
 
-  * The dirty implementation in this class is quite naive. The reasoning for this is that the dirty state
 
-  * will only be used in very specific circumstances, specifically, after the render process has begun but
 
-  * the component is not yet rendered to the DOM. As such, we want it to perform as quickly as possible
 
-  * so it's not as fully featured as you may expect.
 
-  */
 
- <span id='Ext-util-ProtoElement'>/**
 
- </span> * Manages certain element-like data prior to rendering. These values are passed
 
-  * on to the render process. This is currently used to manage the "class" and "style" attributes
 
-  * of a component's primary el as well as the bodyEl of panels. This allows things like
 
-  * addBodyCls in Panel to share logic with addCls in AbstractComponent.
 
-  * @private
 
-  */
 
- Ext.define('Ext.util.ProtoElement', (function () {
 
-     var splitWords = Ext.String.splitWords,
 
-         toMap = Ext.Array.toMap;
 
-     return {
 
-         
 
-         isProtoEl: true,
 
-         
 
- <span id='Ext-util-ProtoElement-property-clsProp'>        /**
 
- </span>         * The property name for the className on the data object passed to {@link #writeTo}.
 
-          */
 
-         clsProp: 'cls',
 
- <span id='Ext-util-ProtoElement-property-styleProp'>        /**
 
- </span>         * The property name for the style on the data object passed to {@link #writeTo}.
 
-          */
 
-         styleProp: 'style',
 
-         
 
- <span id='Ext-util-ProtoElement-property-removedProp'>        /**
 
- </span>         * The property name for the removed classes on the data object passed to {@link #writeTo}.
 
-          */
 
-         removedProp: 'removed',
 
- <span id='Ext-util-ProtoElement-property-styleIsText'>        /**
 
- </span>         * True if the style must be converted to text during {@link #writeTo}. When used to
 
-          * populate tpl data, this will be true. When used to populate {@link Ext.DomHelper}
 
-          * specs, this will be false (the default).
 
-          */
 
-         styleIsText: false,
 
-         constructor: function (config) {
 
-             var me = this;
 
-             Ext.apply(me, config);
 
-             me.classList = splitWords(me.cls);
 
-             me.classMap = toMap(me.classList);
 
-             delete me.cls;
 
-             if (Ext.isFunction(me.style)) {
 
-                 me.styleFn = me.style;
 
-                 delete me.style;
 
-             } else if (typeof me.style == 'string') {
 
-                 me.style = Ext.Element.parseStyles(me.style);
 
-             } else if (me.style) {
 
-                 me.style = Ext.apply({}, me.style); // don't edit the given object
 
-             }
 
-         },
 
-         
 
- <span id='Ext-util-ProtoElement-method-flush'>        /**
 
- </span>         * Indicates that the current state of the object has been flushed to the DOM, so we need
 
-          * to track any subsequent changes
 
-          */
 
-         flush: function(){
 
-             this.flushClassList = [];
 
-             this.removedClasses = {};
 
-             // clear the style, it will be recreated if we add anything new
 
-             delete this.style;
 
-         },
 
- <span id='Ext-util-ProtoElement-method-addCls'>        /**
 
- </span>         * Adds class to the element.
 
-          * @param {String} cls One or more classnames separated with spaces.
 
-          * @return {Ext.util.ProtoElement} this
 
-          */
 
-         addCls: function (cls) {
 
-             var me = this,
 
-                 add = splitWords(cls),
 
-                 length = add.length,
 
-                 list = me.classList,
 
-                 map = me.classMap,
 
-                 flushList = me.flushClassList,
 
-                 i = 0,
 
-                 c;
 
-             for (; i < length; ++i) {
 
-                 c = add[i];
 
-                 if (!map[c]) {
 
-                     map[c] = true;
 
-                     list.push(c);
 
-                     if (flushList) {
 
-                         flushList.push(c);
 
-                         delete me.removedClasses[c];
 
-                     }
 
-                 }
 
-             }
 
-             return me;
 
-         },
 
- <span id='Ext-util-ProtoElement-method-hasCls'>        /**
 
- </span>         * True if the element has given class.
 
-          * @param {String} cls
 
-          * @return {Boolean}
 
-          */
 
-         hasCls: function (cls) {
 
-             return cls in this.classMap;
 
-         },
 
- <span id='Ext-util-ProtoElement-method-removeCls'>        /**
 
- </span>         * Removes class from the element.
 
-          * @param {String} cls One or more classnames separated with spaces.
 
-          * @return {Ext.util.ProtoElement} this
 
-          */
 
-         removeCls: function (cls) {
 
-             var me = this,
 
-                 list = me.classList,
 
-                 newList = (me.classList = []),
 
-                 remove = toMap(splitWords(cls)),
 
-                 length = list.length,
 
-                 map = me.classMap,
 
-                 removedClasses = me.removedClasses,
 
-                 i, c;
 
-             for (i = 0; i < length; ++i) {
 
-                 c = list[i];
 
-                 if (remove[c]) {
 
-                     if (removedClasses) {
 
-                         if (map[c]) {
 
-                             removedClasses[c] = true;
 
-                             Ext.Array.remove(me.flushClassList, c);
 
-                         }
 
-                     }
 
-                     delete map[c];
 
-                 } else {
 
-                     newList.push(c);
 
-                 }
 
-             }
 
-             return me;
 
-         },
 
- <span id='Ext-util-ProtoElement-method-setStyle'>        /**
 
- </span>         * Adds styles to the element.
 
-          * @param {String/Object} prop The style property to be set, or an object of multiple styles.
 
-          * @param {String} [value] The value to apply to the given property.
 
-          * @return {Ext.util.ProtoElement} this
 
-          */
 
-         setStyle: function (prop, value) {
 
-             var me = this,
 
-                 style = me.style || (me.style = {});
 
-             if (typeof prop == 'string') {
 
-                 if (arguments.length === 1) {
 
-                     me.setStyle(Ext.Element.parseStyles(prop));
 
-                 } else {
 
-                     style[prop] = value;
 
-                 }
 
-             } else {
 
-                 Ext.apply(style, prop);
 
-             }
 
-             return me;
 
-         },
 
- <span id='Ext-util-ProtoElement-method-writeTo'>        /**
 
- </span>         * Writes style and class properties to given object.
 
-          * Styles will be written to {@link #styleProp} and class names to {@link #clsProp}.
 
-          * @param {Object} to
 
-          * @return {Object} to
 
-          */
 
-         writeTo: function (to) {
 
-             var me = this,
 
-                 classList = me.flushClassList || me.classList,
 
-                 removedClasses = me.removedClasses,
 
-                 style;
 
-             if (me.styleFn) {
 
-                 style = Ext.apply({}, me.styleFn());
 
-                 Ext.apply(style, me.style);
 
-             } else {
 
-                 style = me.style;
 
-             }
 
-             to[me.clsProp] = classList.join(' ');
 
-             if (style) {
 
-                 to[me.styleProp] = me.styleIsText ? Ext.DomHelper.generateStyles(style) : style;
 
-             }
 
-             
 
-             if (removedClasses) {
 
-                 removedClasses = Ext.Object.getKeys(removedClasses);
 
-                 if (removedClasses.length) {
 
-                     to[me.removedProp] = removedClasses.join(' ');
 
-                 }
 
-             }
 
-             return to;
 
-         }
 
-     };
 
- }()));
 
- </pre>
 
- </body>
 
- </html>
 
 
  |