src/cm/media/js/lib/yui/yui_3.0.0b1/build/plugin/plugin-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.0b1
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     6
build: 1163
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('plugin', 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
     * Provides the base Plugin class, which plugin developers should extend, when creating custom plugins
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    12
     *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    13
     * @module plugin
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    14
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    15
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    16
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    17
     * The base class for all Plugin instances.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    18
     *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    19
     * @class Plugin.Base 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    20
     * @extends Base
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    21
     * @param {Object} config Configuration object with property name/value pairs.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    22
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    23
    function Plugin(config) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    24
        Plugin.superclass.constructor.apply(this, arguments);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    25
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    26
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    27
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    28
     * Object defining the set of attributes supported by the Plugin.Base class
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 Plugin.Base.ATTRS
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
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    34
    Plugin.ATTRS = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    35
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    36
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    37
         * The plugin's host object.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    38
         *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    39
         * @attribute host
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    40
         * @writeonce
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    41
         * @type Plugin.Host
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    42
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    43
        host : {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    44
            writeOnce: true
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    45
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    46
    };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    47
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    48
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    49
     * The string identifying the Plugin.Base class. Plugins extending
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    50
     * Plugin.Base should set their own NAME value.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    51
     *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    52
     * @property Plugin.Base.NAME
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    53
     * @type String
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    54
     * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    55
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    56
    Plugin.NAME = 'plugin';
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    57
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    58
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    59
     * The name of the property the the plugin will be attached to
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    60
     * when plugged into a Plugin Host. Plugins extending Plugin.Base,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    61
     * should set their own NS value.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    62
     *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    63
     * @property Plugin.NS
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    64
     * @type String
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    65
     * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    66
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    67
    Plugin.NS = 'plugin';
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    68
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    69
    Y.extend(Plugin, Y.Base, {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    70
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    71
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    72
         * The list of event handles for event listeners or AOP injected methods
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    73
         * applied by the plugin to the host object.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    74
         *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    75
         * @property _handles
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    76
         * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    77
         * @type Array
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    78
         * @value null
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    79
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    80
        _handles: null,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    81
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    82
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    83
         * Initializer lifecycle implementation.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    84
         *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    85
         * @method initializer
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    86
         * @param {Object} config Configuration object with property name/value pairs.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    87
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    88
        initializer : function(config) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    89
            this._handles = [];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    90
            if (!this.get("host")) { Y.log('No host defined for plugin ' + this, 'warn', 'Plugin');}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    91
            Y.log('Initializing: ' + this.constructor.NAME, 'info', 'Plugin');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    92
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    93
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    94
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    95
         * Destructor lifecycle implementation.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    96
         *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    97
         * Removes any event listeners or injected methods applied by the Plugin
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    98
         *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    99
         * @method destructor
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   100
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   101
        destructor: function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   102
            // remove all handles
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   103
            if (this._handles) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   104
                for (var i = 0, l = this._handles.length; i < l; i++) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   105
                   this._handles[i].detach();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   106
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   107
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   108
        },
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
         * Listens for the "on" moment of events fired by the host, 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   112
         * or injects code "before" a given method on the host.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   113
         *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   114
         * @method doBefore
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   115
         *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   116
         * @param sFn {String} The event to listen for, or method to inject logic before.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   117
         * @param fn {Function} The handler function. For events, the "on" moment listener. For methods, the function to execute before the given method is executed.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   118
         * @param context {Object} An optional context to call the handler with. The default context is the plugin instance.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   119
         * @return handle {EventHandle} The detach handle for the handler.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   120
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   121
        doBefore: function(sFn, fn, context) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   122
            var host = this.get("host"),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   123
                handle;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   124
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   125
            context = context || this;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   126
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   127
            if (sFn in host) { // method
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   128
                handle = Y.Do.before(fn, host, sFn, context);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   129
            } else if (host.on) { // event
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   130
                handle = host.on(sFn, fn, context);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   131
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   132
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   133
            this._handles.push(handle);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   134
            return handle;
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
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   138
         * Listens for the "after" moment of events fired by the host, 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   139
         * or injects code "after" a given method on the host.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   140
         *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   141
         * @method doAfter
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   142
         *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   143
         * @param sFn {String} The event to listen for, or method to inject logic after.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   144
         * @param fn {Function} The handler function. For events, the "after" moment listener. For methods, the function to execute after the given method is executed.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   145
         * @param context {Object} An optional context to call the handler with. The default context is the plugin instance.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   146
         * @return handle {EventHandle} The detach handle for the handler.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   147
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   148
        doAfter: function(sFn, fn, context) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   149
            var host = this.get("host"),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   150
                handle;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   151
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   152
            context = context || this;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   153
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   154
            if (sFn in host) { // method
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   155
                handle = Y.Do.after(fn, host, sFn, context);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   156
            } else if (host.after) { // event
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   157
                handle = host.after(sFn, fn, context);
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
            this._handles.push(handle);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   161
            return handle;
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
        toString: function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   165
            return this.constructor.NAME + '[' + this.constructor.NS + ']';
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   166
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   167
    });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   168
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   169
    Y.namespace("Plugin").Base = Plugin;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   170
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   171
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   172
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   173
}, '3.0.0b1' ,{requires:['base']});