src/cm/media/js/lib/yui/yui3-3.15.0/build/attribute-extras/attribute-extras-debug.js
author gibus
Mon, 10 Mar 2014 15:19:48 +0100
changeset 602 e16a97fb364a
permissions -rw-r--r--
Use YUI 3.15
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
602
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     1
YUI.add('attribute-extras', function (Y, NAME) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     2
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     3
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     4
     * The attribute module provides an augmentable Attribute implementation, which
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     5
     * adds configurable attributes and attribute change events to the class being
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     6
     * augmented. It also provides a State class, which is used internally by Attribute,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     7
     * but can also be used independently to provide a name/property/value data structure to
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     8
     * store state.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     9
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    10
     * @module attribute
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    11
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    12
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    13
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    14
     * The attribute-extras submodule provides less commonly used attribute methods, and can
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    15
     * be augmented/mixed into an implemention which used attribute-core.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    16
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    17
     * @module attribute
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    18
     * @submodule attribute-extras
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    19
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    20
    var BROADCAST = "broadcast",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    21
        PUBLISHED = "published",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    22
        INIT_VALUE = "initValue",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    23
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    24
        MODIFIABLE = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    25
            readOnly:1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    26
            writeOnce:1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    27
            getter:1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    28
            broadcast:1
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    29
        };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    30
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    31
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    32
     * A augmentable implementation for AttributeCore, providing less frequently used
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    33
     * methods for Attribute management such as modifyAttrs(), removeAttr and reset()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    34
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    35
     * @class AttributeExtras
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    36
     * @extensionfor AttributeCore
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    37
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    38
    function AttributeExtras() {}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    39
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    40
    AttributeExtras.prototype = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    41
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    42
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    43
         * Updates the configuration of an attribute which has already been added.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    44
         * <p>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    45
         * The properties which can be modified through this interface are limited
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    46
         * to the following subset of attributes, which can be safely modified
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    47
         * after a value has already been set on the attribute: readOnly, writeOnce,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    48
         * broadcast and getter.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    49
         * </p>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    50
         * @method modifyAttr
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    51
         * @param {String} name The name of the attribute whose configuration is to be updated.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    52
         * @param {Object} config An object with configuration property/value pairs, specifying the configuration properties to modify.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    53
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    54
        modifyAttr: function(name, config) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    55
            var host = this, // help compression
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    56
                prop, state;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    57
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    58
            if (host.attrAdded(name)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    59
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    60
                if (host._isLazyAttr(name)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    61
                    host._addLazyAttr(name);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    62
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    63
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    64
                state = host._state;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    65
                for (prop in config) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    66
                    if (MODIFIABLE[prop] && config.hasOwnProperty(prop)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    67
                        state.add(name, prop, config[prop]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    68
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    69
                        // If we reconfigured broadcast, need to republish
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    70
                        if (prop === BROADCAST) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    71
                            state.remove(name, PUBLISHED);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    72
                        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    73
                    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    74
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    75
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    76
            /*jshint maxlen:200*/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    77
            if (!host.attrAdded(name)) {Y.log('Attribute modifyAttr:' + name + ' has not been added. Use addAttr to add the attribute', 'warn', 'attribute');}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    78
            /*jshint maxlen:150 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    79
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    80
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    81
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    82
         * Removes an attribute from the host object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    83
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    84
         * @method removeAttr
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    85
         * @param {String} name The name of the attribute to be removed.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    86
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    87
        removeAttr: function(name) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    88
            this._state.removeAll(name);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    89
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    90
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    91
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    92
         * Resets the attribute (or all attributes) to its initial value, as long as
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    93
         * the attribute is not readOnly, or writeOnce.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    94
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    95
         * @method reset
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    96
         * @param {String} name Optional. The name of the attribute to reset.  If omitted, all attributes are reset.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    97
         * @return {Object} A reference to the host object.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    98
         * @chainable
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    99
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   100
        reset : function(name) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   101
            var host = this;  // help compression
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   102
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   103
            if (name) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   104
                if (host._isLazyAttr(name)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   105
                    host._addLazyAttr(name);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   106
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   107
                host.set(name, host._state.get(name, INIT_VALUE));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   108
            } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   109
                Y.Object.each(host._state.data, function(v, n) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   110
                    host.reset(n);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   111
                });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   112
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   113
            return host;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   114
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   115
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   116
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   117
         * Returns an object with the configuration properties (and value)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   118
         * for the given attribute. If attrName is not provided, returns the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   119
         * configuration properties for all attributes.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   120
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   121
         * @method _getAttrCfg
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   122
         * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   123
         * @param {String} name Optional. The attribute name. If not provided, the method will return the configuration for all attributes.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   124
         * @return {Object} The configuration properties for the given attribute, or all attributes.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   125
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   126
        _getAttrCfg : function(name) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   127
            var o,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   128
                state = this._state;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   129
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   130
            if (name) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   131
                o = state.getAll(name) || {};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   132
            } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   133
                o = {};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   134
                Y.each(state.data, function(v, n) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   135
                    o[n] = state.getAll(n);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   136
                });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   137
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   138
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   139
            return o;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   140
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   141
    };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   142
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   143
    Y.AttributeExtras = AttributeExtras;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   144
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   145
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   146
}, '@VERSION@', {"requires": ["oop"]});