src/cm/media/js/lib/yui/yui_3.10.3/build/pluginhost-config/pluginhost-config-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('pluginhost-config', 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
     * Adds pluginhost constructor configuration and static configuration support
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
     * @submodule pluginhost-config
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    13
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
    var PluginHost = Y.Plugin.Host,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
        L = Y.Lang;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
     * A protected initialization method, used by the host class to initialize
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
     * plugin configurations passed the constructor, through the config object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
     * 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
     * Host objects should invoke this method at the appropriate time in their
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
     * construction lifecycle.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
     * 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
     * @method _initConfigPlugins
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
     * @param {Object} config The configuration object passed to the constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
     * @for Plugin.Host
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
    PluginHost.prototype._initConfigPlugins = function(config) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
        // Class Configuration
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
        var classes = (this._getClasses) ? this._getClasses() : [this.constructor],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
            plug = [],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
            unplug = {},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
            constructor, i, classPlug, classUnplug, pluginClassName;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
        // TODO: Room for optimization. Can we apply statically/unplug in same pass?
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
        for (i = classes.length - 1; i >= 0; i--) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
            constructor = classes[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
            classUnplug = constructor._UNPLUG;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
            if (classUnplug) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
                // subclasses over-write
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
                Y.mix(unplug, classUnplug, true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
            classPlug = constructor._PLUG;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
            if (classPlug) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
                // subclasses over-write
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
                Y.mix(plug, classPlug, true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
        for (pluginClassName in plug) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
            if (plug.hasOwnProperty(pluginClassName)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
                if (!unplug[pluginClassName]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
                    this.plug(plug[pluginClassName]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
        // User Configuration
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
        if (config && config.plugins) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
            this.plug(config.plugins);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
     * Registers plugins to be instantiated at the class level (plugins 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
     * which should be plugged into every instance of the class by default).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
     * @method plug
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
     * @param {Function} hostClass The host class on which to register the plugins
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
     * @param {Function | Array} plugin Either the plugin class, an array of plugin classes or an array of objects (with fn and cfg properties defined)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
     * @param {Object} config (Optional) If plugin is the plugin class, the configuration for the plugin
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
     * @for Plugin.Host
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
    PluginHost.plug = function(hostClass, plugin, config) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
        // Cannot plug into Base, since Plugins derive from Base [ will cause infinite recurrsion ]
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
        var p, i, l, name;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
        if (hostClass !== Y.Base) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
            hostClass._PLUG = hostClass._PLUG || {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
            if (!L.isArray(plugin)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
                if (config) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
                    plugin = {fn:plugin, cfg:config};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
                plugin = [plugin];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
            for (i = 0, l = plugin.length; i < l;i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
                p = plugin[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
                name = p.NAME || p.fn.NAME;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
                hostClass._PLUG[name] = p;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
     * Unregisters any class level plugins which have been registered by the host class, or any
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
     * other class in the hierarchy.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
     * @method unplug
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
     * @param {Function} hostClass The host class from which to unregister the plugins
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
     * @param {Function | Array} plugin The plugin class, or an array of plugin classes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
     * @for Plugin.Host
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
    PluginHost.unplug = function(hostClass, plugin) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
        var p, i, l, name;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
        if (hostClass !== Y.Base) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
            hostClass._UNPLUG = hostClass._UNPLUG || {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
            if (!L.isArray(plugin)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
                plugin = [plugin];
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
            for (i = 0, l = plugin.length; i < l; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
                p = plugin[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
                name = p.NAME;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
                if (!hostClass._PLUG[name]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
                    hostClass._UNPLUG[name] = p;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
                    delete hostClass._PLUG[name];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
}, '3.10.3', {"requires": ["pluginhost-base"]});