src/cm/media/js/lib/yui/yui3.0.0/build/event/event-mouseenter-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('event-mouseenter', 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
 * Adds support for mouseenter/mouseleave events
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    12
 * @module event
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    13
 * @submodule event-mouseenter
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    14
 */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    15
var Event = Y.Event,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    16
	Lang = Y.Lang,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    17
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    18
	plugins = Y.Env.evt.plugins,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    19
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    20
	listeners = {},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    21
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    22
	eventConfig = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    23
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    24
    	on: function(type, fn, el) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    25
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    26
		    var args = Y.Array(arguments, 0, true),	    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    27
				element = el,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    28
				availHandle;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    29
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    30
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    31
			if (Lang.isString(el)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    32
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    33
				//	Need to use Y.all because if el is a string it could be a 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    34
				//	selector that returns a NodeList
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    35
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    36
				element = Y.all(el);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    37
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    38
				if (element.size() === 0) { // Not found, check using onAvailable
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    39
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    40
		            availHandle = Event.onAvailable(el, function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    41
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    42
		                availHandle.handle = Y.on.apply(Y, args);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    43
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    44
		            }, Event, true, false);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    45
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    46
					return availHandle;
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
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    50
			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    51
			
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    52
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    53
	        var sDOMEvent = (type === "mouseenter") ? "mouseover" : "mouseout",
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    54
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    55
				//	The name of the custom event
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    56
				sEventName = type + ":" + Y.stamp(element) + sDOMEvent,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    57
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    58
				listener = listeners[sEventName],
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    59
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    60
				domEventHandle,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    61
				
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    62
				ceHandle,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    63
				
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    64
				nListeners;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    65
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    66
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    67
			//	Bind an actual DOM event listener that will call the 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    68
			//	the custom event				
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    69
			if (!listener) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    70
				
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    71
				domEventHandle = Y.on(sDOMEvent, Y.rbind(Event._fireMouseEnter, Y, sEventName), element);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    72
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    73
				//	Hook into the _delete method for the Custom Event wrapper of this
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    74
				//	DOM Event in order to clean up the 'listeners' map and unsubscribe
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    75
				//	the associated Custom Event listeners fired by this DOM event
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    76
				//	listener if/when the user calls "purgeElement" OR removes all 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    77
				//	listeners of the Custom Event.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    78
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    79
				Y.after(function (sub) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    80
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    81
					if (domEventHandle.sub == sub) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    82
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    83
						//	Delete this event from the map of known mouseenter 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    84
						//	and mouseleave listeners
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    85
						delete listeners[sEventName];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    86
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    87
						Y.log("DOM event listener associated with the " + sEventName + " Custom Event removed.  Removing all " + sEventName + " listeners.", "info", "Event");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    88
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    89
						//	Unsubscribe all listeners of the Custom Event fired 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    90
						//	by this DOM event.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    91
						Y.detachAll(sEventName);
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
				}, domEventHandle.evt, "_delete");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    96
				
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    97
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    98
				listener = {};				
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    99
				listener.handle = domEventHandle;				
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   100
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   101
				listeners[sEventName] = listener;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   102
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
			nListeners = listener.count;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   106
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   107
			listener.count = nListeners ? (nListeners + 1) : 1;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   108
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   109
	        args[0] = sEventName;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   110
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   111
	        // Remove the element from the args
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   112
			args.splice(2, 1);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   113
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   114
	        // Subscribe to the custom event
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   115
	        ceHandle = Y.on.apply(Y, args);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   116
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   117
			//	Hook into the detach method of the handle in order to clean up the 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   118
			//	'listeners' map and remove the associated DOM event handler 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   119
			//	responsible for firing this Custom Event if all listener for this 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   120
			//	event have been removed.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   121
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   122
			Y.after(function () {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   123
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   124
				listener.count = (listener.count - 1);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   125
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   126
				if (listener.count === 0) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   127
					Y.log("No more listeners for the " + sEventName + " Custom Event.  Removing its associated DOM event listener.", "info", "Event");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   128
					listener.handle.detach();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   129
				}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   130
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   131
			}, ceHandle, "detach");	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   132
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   133
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   134
			return ceHandle;
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
	};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   139
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   140
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   141
Event._fireMouseEnter = function (e, eventName) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   142
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   143
	var relatedTarget = e.relatedTarget,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   144
		currentTarget = e.currentTarget;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   145
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   146
	if (currentTarget !== relatedTarget && 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   147
		!currentTarget.contains(relatedTarget)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   148
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   149
		Y.publish(eventName, {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   150
               contextFn: function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   151
                   return currentTarget;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   152
               }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   153
           });			
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   154
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   155
		Y.fire(eventName, e);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   156
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
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   162
/**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   163
 * Sets up a "mouseenter" listener&#151;a listener that is called the first time 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   164
 * the user's mouse enters the specified element(s).
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   165
 * 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   166
 * @event mouseenter
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   167
 * @param type {string} "mouseenter"
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   168
 * @param fn {function} The method the event invokes.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   169
 * @param el {string|node} The element(s) to assign the listener to.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   170
 * @param spec {string} Optional.  String representing a selector that must 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   171
 * match the target of the event in order for the listener to be called.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   172
 * @return {EventHandle} the detach handle
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   173
 * @for YUI
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   174
 */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   175
plugins.mouseenter = eventConfig;
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
* Sets up a "mouseleave" listener&#151;a listener that is called the first time 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   179
* the user's mouse leaves the specified element(s).
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   180
* 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   181
* @event mouseleave
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   182
* @param type {string} "mouseleave"
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   183
* @param fn {function} The method the event invokes.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   184
* @param el {string|node} The element(s) to assign the listener to.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   185
* @param spec {string} Optional.  String representing a selector that must 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   186
* match the target of the event in order for the listener to be called.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   187
* @return {EventHandle} the detach handle
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   188
* @for YUI
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   189
 */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   190
plugins.mouseleave = eventConfig;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   191
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   192
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   193
}, '3.0.0' ,{requires:['node-base']});