2
YUI 3.10.3 (build 2fb5187)
3
Copyright 2013 Yahoo! Inc. All rights reserved.
4
Licensed under the BSD License.
5
http://yuilibrary.com/license/
8
YUI.add('event-touch', function (Y, NAME) {
11
Adds touch event facade normalization properties (touches, changedTouches, targetTouches etc.) to the DOM event facade. Adds
12
touch events to the DOM events whitelist.
15
YUI().use('event-touch', function (Y) {
16
Y.one('#myDiv').on('touchstart', function(e) {
21
@submodule event-touch
24
ROTATION = "rotation",
25
IDENTIFIER = "identifier",
30
* Adds touch event facade normalization properties to the DOM event facade
35
* @param ev {Event} the DOM event
36
* @param currentTarget {HTMLElement} the element the listener was attached to
37
* @param wrapper {Event.Custom} the custom event wrapper for this DOM event
39
Y.DOMEventFacade.prototype._touch = function(e, currentTarget, wrapper) {
41
var i,l, etCached, et,touchCache;
47
* Array of individual touch events for touch points that are still in
48
* contact with the touch surface.
51
* @type {DOMEventFacade[]}
56
for (i = 0, l = e.touches.length; i < l; ++i) {
58
touchCache[Y.stamp(et)] = this.touches[i] = new Y.DOMEventFacade(et, currentTarget, wrapper);
62
if (e.targetTouches) {
65
* Array of individual touch events still in contact with the touch
66
* surface and whose `touchstart` event occurred inside the same taregt
67
* element as the current target element.
69
* @property targetTouches
70
* @type {DOMEventFacade[]}
72
this.targetTouches = [];
74
for (i = 0, l = e.targetTouches.length; i < l; ++i) {
75
et = e.targetTouches[i];
76
etCached = touchCache && touchCache[Y.stamp(et, true)];
78
this.targetTouches[i] = etCached || new Y.DOMEventFacade(et, currentTarget, wrapper);
83
if (e.changedTouches) {
86
An array of event-specific touch events.
88
For `touchstart`, the touch points that became active with the current
91
For `touchmove`, the touch points that have changed since the last
94
For `touchend`, the touch points that have been removed from the touch
97
@property changedTouches
98
@type {DOMEventFacade[]}
100
this.changedTouches = [];
102
for (i = 0, l = e.changedTouches.length; i < l; ++i) {
103
et = e.changedTouches[i];
104
etCached = touchCache && touchCache[Y.stamp(et, true)];
106
this.changedTouches[i] = etCached || new Y.DOMEventFacade(et, currentTarget, wrapper);
112
this[SCALE] = e[SCALE];
116
this[ROTATION] = e[ROTATION];
119
if (IDENTIFIER in e) {
120
this[IDENTIFIER] = e[IDENTIFIER];
124
//Adding MSPointer events to whitelisted DOM Events. MSPointer event payloads
125
//have the same properties as mouse events.
126
if (Y.Node.DOM_EVENTS) {
127
Y.mix(Y.Node.DOM_EVENTS, {
141
//Add properties to Y.EVENT.GESTURE_MAP based on feature detection.
142
if ((win && ("ontouchstart" in win)) && !(Y.UA.chrome && Y.UA.chrome < 6)) {
143
GESTURE_MAP.start = "touchstart";
144
GESTURE_MAP.end = "touchend";
145
GESTURE_MAP.move = "touchmove";
146
GESTURE_MAP.cancel = "touchcancel";
151
else if (win && ("msPointerEnabled" in win.navigator)) {
152
GESTURE_MAP.start = "MSPointerDown";
153
GESTURE_MAP.end = "MSPointerUp";
154
GESTURE_MAP.move = "MSPointerMove";
155
GESTURE_MAP.cancel = "MSPointerCancel";
159
GESTURE_MAP.start = "mousedown";
160
GESTURE_MAP.end = "mouseup";
161
GESTURE_MAP.move = "mousemove";
162
GESTURE_MAP.cancel = "mousecancel";
166
* A object literal with keys "start", "end", and "move". The value for each key is a
167
* string representing the event for that environment. For touch environments, the respective
168
* values are "touchstart", "touchend" and "touchmove". Mouse and MSPointer environments are also
169
* supported via feature detection.
171
* @property _GESTURE_MAP
175
Y.Event._GESTURE_MAP = GESTURE_MAP;
178
}, '3.10.3', {"requires": ["node-base"]});