src/cm/media/js/lib/yui/yui3.0.0/build/base/base-build-debug.js
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Fri, 09 May 2014 18:35:26 +0200
changeset 656 a84519031134
parent 0 40c8f766c9b8
permissions -rw-r--r--
add link to "privacy policy" in the header test
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     1
/*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     2
Copyright (c) 2009, Yahoo! Inc. All rights reserved.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     3
Code licensed under the BSD License:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     4
http://developer.yahoo.net/yui/license.txt
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     5
version: 3.0.0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     6
build: 1549
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     7
*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     8
YUI.add('base-build', function(Y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     9
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    10
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    11
     * The base-build submodule provides Base.build functionality, which
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    12
     * can be used to create custom classes, by aggregating extensions onto 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    13
     * a main class.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    14
     *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    15
     * @module base
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    16
     * @submodule base-build
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    17
     * @for Base
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    18
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    19
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    20
    var Base = Y.Base,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    21
        L = Y.Lang;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    22
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    23
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    24
     * The build configuration for the Base class.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    25
     *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    26
     * Defines the static fields which need to be aggregated
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    27
     * when the Base class is used as the main class passed to 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    28
     * the <a href="#method_Base.build">Base.build</a> method.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    29
     *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    30
     * @property Base._buildCfg
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    31
     * @type Object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    32
     * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    33
     * @final
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    34
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    35
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    36
    Base._buildCfg = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    37
        aggregates : ["ATTRS", "_PLUG", "_UNPLUG"]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    38
    };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    39
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    40
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    41
     * <p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    42
     * Builds a custom constructor function (class) from the
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    43
     * main function, and array of extension functions (classes)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    44
     * provided. The NAME field for the constructor function is 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    45
     * defined by the first argument passed in.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    46
     * </p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    47
     * <p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    48
     * The cfg object supports the following properties
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    49
     * </p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    50
     * <dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    51
     *    <dt>dynamic &#60;boolean&#62;</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    52
     *    <dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    53
     *    <p>If true (default), a completely new class
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    54
     *    is created which extends the main class, and acts as the 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    55
     *    host on which the extension classes are augmented.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    56
     *    <p>If false, the extensions classes are augmented directly to
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    57
     *    the main class, modifying the main class' prototype.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    58
     *    </dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    59
     *    <dt>aggregates &#60;String[]&#62;</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    60
     *    <dd>An array of static property names, which will get aggregated
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    61
     *    on to the built class, in addition to the default properties build 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    62
     *    will always aggregate as defined by the main class' static _buildCfg
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    63
     *    property.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    64
     *    </dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    65
     * </dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    66
     *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    67
     * @method Base.build
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    68
     * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    69
     * @param {Function} name The name of the new class. Used to defined the NAME property for the new class.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    70
     * @param {Function} main The main class on which to base the built class
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    71
     * @param {Function[]} extensions The set of extension classes which will be
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    72
     * augmented/aggregated to the built class.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    73
     * @param {Object} cfg Optional. Build configuration for the class (see description).
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    74
     * @return {Function} A custom class, created from the provided main and extension classes
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    75
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    76
    Base.build = function(name, main, extensions, cfg) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    77
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    78
        var build = Base.build,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    79
            builtClass = build._getClass(main, cfg),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    80
            aggregates = build._getAggregates(main, cfg),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    81
            dynamic = builtClass._yuibuild.dynamic,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    82
            i, l, val, extClass;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    83
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    84
        // Shallow isolate aggregates
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    85
        if (dynamic) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    86
            if (aggregates) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    87
                for (i = 0, l = aggregates.length; i < l; ++i) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    88
                    val = aggregates[i];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    89
                    if (main.hasOwnProperty(val)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    90
                        builtClass[val] = L.isArray(main[val]) ? [] : {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    91
                    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    92
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    93
                Y.aggregate(builtClass, main, true, aggregates);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    94
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    95
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    96
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    97
        // Augment/Aggregate
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    98
        for (i = 0, l = extensions.length; i < l; i++) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    99
            extClass = extensions[i];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   100
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   101
            if (aggregates) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   102
                Y.aggregate(builtClass, extClass, true, aggregates);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   103
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   104
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   105
            // Old augment
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   106
            Y.mix(builtClass, extClass, true, null, 1);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   107
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   108
            builtClass._yuibuild.exts.push(extClass);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   109
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   110
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   111
        builtClass.prototype.hasImpl = build._hasImpl;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   112
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   113
        if (dynamic) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   114
            builtClass.NAME = name;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   115
            builtClass.prototype.constructor = builtClass;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   116
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   117
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   118
        return builtClass;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   119
    };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   120
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   121
    Y.mix(Base.build, {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   122
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   123
        _template: function(main) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   124
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   125
            function BuiltClass() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   126
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   127
                BuiltClass.superclass.constructor.apply(this, arguments);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   128
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   129
                var f = BuiltClass._yuibuild.exts, 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   130
                    l = f.length,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   131
                    i;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   132
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   133
                for (i = 0; i < l; i++) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   134
                    f[i].apply(this, arguments);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   135
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   136
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   137
                return this;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   138
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   139
            Y.extend(BuiltClass, main);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   140
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   141
            return BuiltClass;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   142
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   143
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   144
        _hasImpl : function(extClass) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   145
            var classes = this._getClasses();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   146
            for (var i = 0, l = classes.length; i < l; i++) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   147
                var cls = classes[i];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   148
                 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   149
                if (cls._yuibuild) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   150
                    var exts = cls._yuibuild.exts,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   151
                        ll = exts.length,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   152
                        j;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   153
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   154
                    for (j = 0; j < ll; j++) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   155
                        if (exts[j] === extClass) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   156
                            return true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   157
                        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   158
                    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   159
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   160
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   161
            return false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   162
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   163
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   164
        _getClass : function(main, cfg) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   165
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   166
           var dynamic = (cfg && false === cfg.dynamic) ? false : true,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   167
                builtClass = (dynamic) ? Base.build._template(main) : main;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   168
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   169
            builtClass._yuibuild = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   170
                id: null,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   171
                exts : [],
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   172
                dynamic : dynamic
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   173
            };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   174
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   175
            return builtClass;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   176
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   177
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   178
        _getAggregates : function(main, cfg) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   179
            var aggr = [],
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   180
                cfgAggr = (cfg && cfg.aggregates),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   181
                c = main,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   182
                classAggr;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   183
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   184
            while (c && c.prototype) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   185
                classAggr = c._buildCfg && c._buildCfg.aggregates;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   186
                if (classAggr) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   187
                    aggr = aggr.concat(classAggr);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   188
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   189
                c = c.superclass ? c.superclass.constructor : null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   190
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   191
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   192
            if (cfgAggr) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   193
                aggr = aggr.concat(cfgAggr);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   194
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   195
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   196
            return aggr;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   197
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   198
    });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   199
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   200
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   201
}, '3.0.0' ,{requires:['base-base']});