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