src/cm/media/js/lib/yui/yui3-3.15.0/build/oop/oop-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('oop', 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
Adds object inheritance and manipulation utilities to the YUI instance. This
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     5
module is required by most YUI components.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     6
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     7
@module oop
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     8
**/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     9
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    10
var L            = Y.Lang,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    11
    A            = Y.Array,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    12
    OP           = Object.prototype,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    13
    CLONE_MARKER = '_~yuim~_',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    14
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    15
    hasOwn   = OP.hasOwnProperty,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    16
    toString = OP.toString;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    17
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    18
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    19
Calls the specified _action_ method on _o_ if it exists. Otherwise, if _o_ is an
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    20
array, calls the _action_ method on `Y.Array`, or if _o_ is an object, calls the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    21
_action_ method on `Y.Object`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    22
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    23
If _o_ is an array-like object, it will be coerced to an array.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    24
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    25
This is intended to be used with array/object iteration methods that share
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    26
signatures, such as `each()`, `some()`, etc.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    27
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    28
@method dispatch
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    29
@param {Object} o Array or object to dispatch to.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    30
@param {Function} f Iteration callback.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    31
    @param {Mixed} f.value Value being iterated.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    32
    @param {Mixed} f.key Current object key or array index.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    33
    @param {Mixed} f.object Object or array being iterated.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    34
@param {Object} c `this` object to bind the iteration callback to.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    35
@param {Boolean} proto If `true`, prototype properties of objects will be
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    36
    iterated.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    37
@param {String} action Function name to be dispatched on _o_. For example:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    38
    'some', 'each', etc.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    39
@private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    40
@return {Mixed} Returns the value returned by the chosen iteration action, which
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    41
    varies.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    42
**/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    43
function dispatch(o, f, c, proto, action) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    44
    if (o && o[action] && o !== Y) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    45
        return o[action].call(o, f, c);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    46
    } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    47
        switch (A.test(o)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    48
            case 1:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    49
                return A[action](o, f, c);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    50
            case 2:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    51
                return A[action](Y.Array(o, 0, true), f, c);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    52
            default:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    53
                return Y.Object[action](o, f, c, proto);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    54
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    55
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    56
}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    57
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    58
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    59
Augments the _receiver_ with prototype properties from the _supplier_. The
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    60
receiver may be a constructor function or an object. The supplier must be a
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    61
constructor function.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    62
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    63
If the _receiver_ is an object, then the _supplier_ constructor will be called
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    64
immediately after _receiver_ is augmented, with _receiver_ as the `this` object.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    65
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    66
If the _receiver_ is a constructor function, then all prototype methods of
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    67
_supplier_ that are copied to _receiver_ will be sequestered, and the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    68
_supplier_ constructor will not be called immediately. The first time any
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    69
sequestered method is called on the _receiver_'s prototype, all sequestered
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    70
methods will be immediately copied to the _receiver_'s prototype, the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    71
_supplier_'s constructor will be executed, and finally the newly unsequestered
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    72
method that was called will be executed.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    73
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    74
This sequestering logic sounds like a bunch of complicated voodoo, but it makes
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    75
it cheap to perform frequent augmentation by ensuring that suppliers'
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    76
constructors are only called if a supplied method is actually used. If none of
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    77
the supplied methods is ever used, then there's no need to take the performance
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    78
hit of calling the _supplier_'s constructor.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    79
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    80
@method augment
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    81
@param {Function|Object} receiver Object or function to be augmented.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    82
@param {Function} supplier Function that supplies the prototype properties with
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    83
  which to augment the _receiver_.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    84
@param {Boolean} [overwrite=false] If `true`, properties already on the receiver
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    85
  will be overwritten if found on the supplier's prototype.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    86
@param {String[]} [whitelist] An array of property names. If specified,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    87
  only the whitelisted prototype properties will be applied to the receiver, and
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    88
  all others will be ignored.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    89
@param {Array|any} [args] Argument or array of arguments to pass to the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    90
  supplier's constructor when initializing.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    91
@return {Function} Augmented object.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    92
@for YUI
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    93
**/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    94
Y.augment = function (receiver, supplier, overwrite, whitelist, args) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    95
    var rProto    = receiver.prototype,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    96
        sequester = rProto && supplier,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    97
        sProto    = supplier.prototype,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    98
        to        = rProto || receiver,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    99
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   100
        copy,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   101
        newPrototype,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   102
        replacements,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   103
        sequestered,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   104
        unsequester;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   105
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   106
    args = args ? Y.Array(args) : [];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   107
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   108
    if (sequester) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   109
        newPrototype = {};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   110
        replacements = {};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   111
        sequestered  = {};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   112
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   113
        copy = function (value, key) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   114
            if (overwrite || !(key in rProto)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   115
                if (toString.call(value) === '[object Function]') {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   116
                    sequestered[key] = value;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   117
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   118
                    newPrototype[key] = replacements[key] = function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   119
                        return unsequester(this, value, arguments);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   120
                    };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   121
                } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   122
                    newPrototype[key] = value;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   123
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   124
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   125
        };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   126
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   127
        unsequester = function (instance, fn, fnArgs) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   128
            // Unsequester all sequestered functions.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   129
            for (var key in sequestered) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   130
                if (hasOwn.call(sequestered, key)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   131
                        && instance[key] === replacements[key]) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   132
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   133
                    instance[key] = sequestered[key];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   134
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   135
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   136
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   137
            // Execute the supplier constructor.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   138
            supplier.apply(instance, args);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   139
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   140
            // Finally, execute the original sequestered function.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   141
            return fn.apply(instance, fnArgs);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   142
        };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   143
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   144
        if (whitelist) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   145
            Y.Array.each(whitelist, function (name) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   146
                if (name in sProto) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   147
                    copy(sProto[name], name);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   148
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   149
            });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   150
        } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   151
            Y.Object.each(sProto, copy, null, true);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   152
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   153
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   154
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   155
    Y.mix(to, newPrototype || sProto, overwrite, whitelist);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   156
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   157
    if (!sequester) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   158
        supplier.apply(to, args);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   159
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   160
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   161
    return receiver;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   162
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   163
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   164
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   165
 * Copies object properties from the supplier to the receiver. If the target has
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   166
 * the property, and the property is an object, the target object will be
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   167
 * augmented with the supplier's value.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   168
 *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   169
 * @method aggregate
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   170
 * @param {Object} receiver Object to receive the augmentation.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   171
 * @param {Object} supplier Object that supplies the properties with which to
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   172
 *     augment the receiver.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   173
 * @param {Boolean} [overwrite=false] If `true`, properties already on the receiver
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   174
 *     will be overwritten if found on the supplier.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   175
 * @param {String[]} [whitelist] Whitelist. If supplied, only properties in this
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   176
 *     list will be applied to the receiver.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   177
 * @return {Object} Augmented object.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   178
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   179
Y.aggregate = function(r, s, ov, wl) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   180
    return Y.mix(r, s, ov, wl, 0, true);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   181
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   182
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   183
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   184
 * Utility to set up the prototype, constructor and superclass properties to
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   185
 * support an inheritance strategy that can chain constructors and methods.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   186
 * Static members will not be inherited.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   187
 *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   188
 * @method extend
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   189
 * @param {function} r   the object to modify.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   190
 * @param {function} s the object to inherit.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   191
 * @param {object} px prototype properties to add/override.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   192
 * @param {object} sx static properties to add/override.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   193
 * @return {object} the extended object.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   194
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   195
Y.extend = function(r, s, px, sx) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   196
    if (!s || !r) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   197
        Y.error('extend failed, verify dependencies');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   198
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   199
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   200
    var sp = s.prototype, rp = Y.Object(sp);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   201
    r.prototype = rp;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   202
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   203
    rp.constructor = r;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   204
    r.superclass = sp;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   205
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   206
    // assign constructor property
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   207
    if (s != Object && sp.constructor == OP.constructor) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   208
        sp.constructor = s;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   209
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   210
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   211
    // add prototype overrides
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   212
    if (px) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   213
        Y.mix(rp, px, true);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   214
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   215
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   216
    // add object overrides
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   217
    if (sx) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   218
        Y.mix(r, sx, true);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   219
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   220
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   221
    return r;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   222
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   223
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   224
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   225
 * Executes the supplied function for each item in
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   226
 * a collection.  Supports arrays, objects, and
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   227
 * NodeLists
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   228
 * @method each
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   229
 * @param {object} o the object to iterate.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   230
 * @param {function} f the function to execute.  This function
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   231
 * receives the value, key, and object as parameters.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   232
 * @param {object} c the execution context for the function.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   233
 * @param {boolean} proto if true, prototype properties are
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   234
 * iterated on objects.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   235
 * @return {YUI} the YUI instance.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   236
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   237
Y.each = function(o, f, c, proto) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   238
    return dispatch(o, f, c, proto, 'each');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   239
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   240
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   241
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   242
 * Executes the supplied function for each item in
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   243
 * a collection.  The operation stops if the function
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   244
 * returns true. Supports arrays, objects, and
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   245
 * NodeLists.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   246
 * @method some
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   247
 * @param {object} o the object to iterate.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   248
 * @param {function} f the function to execute.  This function
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   249
 * receives the value, key, and object as parameters.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   250
 * @param {object} c the execution context for the function.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   251
 * @param {boolean} proto if true, prototype properties are
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   252
 * iterated on objects.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   253
 * @return {boolean} true if the function ever returns true,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   254
 * false otherwise.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   255
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   256
Y.some = function(o, f, c, proto) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   257
    return dispatch(o, f, c, proto, 'some');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   258
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   259
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   260
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   261
Deep object/array copy. Function clones are actually wrappers around the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   262
original function. Array-like objects are treated as arrays. Primitives are
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   263
returned untouched. Optionally, a function can be provided to handle other data
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   264
types, filter keys, validate values, etc.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   265
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   266
**Note:** Cloning a non-trivial object is a reasonably heavy operation, due to
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   267
the need to recursively iterate down non-primitive properties. Clone should be
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   268
used only when a deep clone down to leaf level properties is explicitly
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   269
required. This method will also
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   270
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   271
In many cases (for example, when trying to isolate objects used as hashes for
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   272
configuration properties), a shallow copy, using `Y.merge()` is normally
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   273
sufficient. If more than one level of isolation is required, `Y.merge()` can be
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   274
used selectively at each level which needs to be isolated from the original
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   275
without going all the way to leaf properties.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   276
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   277
@method clone
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   278
@param {object} o what to clone.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   279
@param {boolean} safe if true, objects will not have prototype items from the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   280
    source. If false, they will. In this case, the original is initially
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   281
    protected, but the clone is not completely immune from changes to the source
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   282
    object prototype. Also, cloned prototype items that are deleted from the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   283
    clone will result in the value of the source prototype being exposed. If
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   284
    operating on a non-safe clone, items should be nulled out rather than
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   285
    deleted.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   286
@param {function} f optional function to apply to each item in a collection; it
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   287
    will be executed prior to applying the value to the new object.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   288
    Return false to prevent the copy.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   289
@param {object} c optional execution context for f.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   290
@param {object} owner Owner object passed when clone is iterating an object.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   291
    Used to set up context for cloned functions.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   292
@param {object} cloned hash of previously cloned objects to avoid multiple
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   293
    clones.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   294
@return {Array|Object} the cloned object.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   295
**/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   296
Y.clone = function(o, safe, f, c, owner, cloned) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   297
    var o2, marked, stamp;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   298
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   299
    // Does not attempt to clone:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   300
    //
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   301
    // * Non-typeof-object values, "primitive" values don't need cloning.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   302
    //
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   303
    // * YUI instances, cloning complex object like YUI instances is not
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   304
    //   advised, this is like cloning the world.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   305
    //
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   306
    // * DOM nodes (#2528250), common host objects like DOM nodes cannot be
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   307
    //   "subclassed" in Firefox and old versions of IE. Trying to use
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   308
    //   `Object.create()` or `Y.extend()` on a DOM node will throw an error in
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   309
    //   these browsers.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   310
    //
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   311
    // Instad, the passed-in `o` will be return as-is when it matches one of the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   312
    // above criteria.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   313
    if (!L.isObject(o) ||
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   314
            Y.instanceOf(o, YUI) ||
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   315
            (o.addEventListener || o.attachEvent)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   316
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   317
        return o;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   318
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   319
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   320
    marked = cloned || {};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   321
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   322
    switch (L.type(o)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   323
        case 'date':
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   324
            return new Date(o);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   325
        case 'regexp':
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   326
            // if we do this we need to set the flags too
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   327
            // return new RegExp(o.source);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   328
            return o;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   329
        case 'function':
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   330
            // o2 = Y.bind(o, owner);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   331
            // break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   332
            return o;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   333
        case 'array':
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   334
            o2 = [];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   335
            break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   336
        default:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   337
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   338
            // #2528250 only one clone of a given object should be created.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   339
            if (o[CLONE_MARKER]) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   340
                return marked[o[CLONE_MARKER]];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   341
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   342
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   343
            stamp = Y.guid();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   344
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   345
            o2 = (safe) ? {} : Y.Object(o);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   346
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   347
            o[CLONE_MARKER] = stamp;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   348
            marked[stamp] = o;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   349
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   350
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   351
    Y.each(o, function(v, k) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   352
        if ((k || k === 0) && (!f || (f.call(c || this, v, k, this, o) !== false))) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   353
            if (k !== CLONE_MARKER) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   354
                if (k == 'prototype') {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   355
                    // skip the prototype
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   356
                // } else if (o[k] === o) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   357
                //     this[k] = this;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   358
                } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   359
                    this[k] =
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   360
                        Y.clone(v, safe, f, c, owner || o, marked);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   361
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   362
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   363
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   364
    }, o2);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   365
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   366
    if (!cloned) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   367
        Y.Object.each(marked, function(v, k) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   368
            if (v[CLONE_MARKER]) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   369
                try {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   370
                    delete v[CLONE_MARKER];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   371
                } catch (e) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   372
                    v[CLONE_MARKER] = null;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   373
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   374
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   375
        }, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   376
        marked = null;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   377
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   378
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   379
    return o2;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   380
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   381
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   382
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   383
 * Returns a function that will execute the supplied function in the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   384
 * supplied object's context, optionally adding any additional
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   385
 * supplied parameters to the beginning of the arguments collection the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   386
 * supplied to the function.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   387
 *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   388
 * @method bind
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   389
 * @param {Function|String} f the function to bind, or a function name
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   390
 * to execute on the context object.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   391
 * @param {object} c the execution context.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   392
 * @param {any} args* 0..n arguments to include before the arguments the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   393
 * function is executed with.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   394
 * @return {function} the wrapped function.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   395
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   396
Y.bind = function(f, c) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   397
    var xargs = arguments.length > 2 ?
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   398
            Y.Array(arguments, 2, true) : null;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   399
    return function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   400
        var fn = L.isString(f) ? c[f] : f,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   401
            args = (xargs) ?
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   402
                xargs.concat(Y.Array(arguments, 0, true)) : arguments;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   403
        return fn.apply(c || fn, args);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   404
    };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   405
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   406
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   407
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   408
 * Returns a function that will execute the supplied function in the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   409
 * supplied object's context, optionally adding any additional
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   410
 * supplied parameters to the end of the arguments the function
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   411
 * is executed with.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   412
 *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   413
 * @method rbind
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   414
 * @param {Function|String} f the function to bind, or a function name
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   415
 * to execute on the context object.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   416
 * @param {object} c the execution context.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   417
 * @param {any} args* 0..n arguments to append to the end of
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   418
 * arguments collection supplied to the function.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   419
 * @return {function} the wrapped function.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   420
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   421
Y.rbind = function(f, c) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   422
    var xargs = arguments.length > 2 ? Y.Array(arguments, 2, true) : null;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   423
    return function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   424
        var fn = L.isString(f) ? c[f] : f,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   425
            args = (xargs) ?
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   426
                Y.Array(arguments, 0, true).concat(xargs) : arguments;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   427
        return fn.apply(c || fn, args);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   428
    };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   429
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   430
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   431
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   432
}, '@VERSION@', {"requires": ["yui-base"]});