src/cm/media/js/lib/yui/yui_3.10.3/build/event-tap/event-tap-debug.js
author gibus
Tue, 16 Jul 2013 14:29:46 +0200
changeset 525 89ef5ed3c48b
permissions -rw-r--r--
Upgrades to yui 3.10.3
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('event-tap', 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
The tap module provides a gesture events, "tap", which normalizes user interactions
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
across touch and mouse or pointer based input devices.  This can be used by application developers
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    13
to build input device agnostic components which behave the same in response to either touch or mouse based
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
interaction.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
'tap' is like a touchscreen 'click', only it requires much less finger-down time since it listens to touch events,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
but reverts to mouse events if touch is not supported.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
@example
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
    YUI().use('event-tap', function (Y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
        Y.one('#my-button').on('tap', function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
            Y.log('Button was tapped on');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
@module event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
@submodule event-tap
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
@author Andres Garza, matuzak and tilo mitra
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
@since 3.7.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
var doc = Y.config.doc,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
    GESTURE_MAP = Y.Event._GESTURE_MAP,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
    SUPPORTS_TOUCHES = !!(doc && doc.createTouch),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
    EVT_START = GESTURE_MAP.start,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
    EVT_MOVE = GESTURE_MAP.move,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
    EVT_END = GESTURE_MAP.end,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
    EVT_CANCEL = GESTURE_MAP.cancel,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
    EVT_TAP = 'tap',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
    HANDLES = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
        START: 'Y_TAP_ON_START_HANDLE',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
        MOVE: 'Y_TAP_ON_MOVE_HANDLE',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
        END: 'Y_TAP_ON_END_HANDLE',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
        CANCEL: 'Y_TAP_ON_CANCEL_HANDLE'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
function detachHelper(subscription, handles, subset, context) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
    handles = subset ? handles : [ handles.START, handles.MOVE, handles.END, handles.CANCEL ];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
    Y.Array.each(handles, function (item, index, array) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
        var handle = subscription[item];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
        if (handle) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
            handle.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
            subscription[item] = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
        }
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
Sets up a "tap" event, that is fired on touch devices in response to a tap event (finger down, finder up).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
This event can be used instead of listening for click events which have a 500ms delay on most touch devices.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
This event can also be listened for using node.delegate().
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
@event tap
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
@param type {string} "tap"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
@param fn {function} The method the event invokes. It receives the event facade of the underlying DOM event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
@for Event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
@return {EventHandle} the detach handle
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
Y.Event.define(EVT_TAP, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
    This function should set up the node that will eventually fire the event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
    Usage:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
        node.on('tap', function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
            Y.log('the node was tapped on');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
    @method on
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
    @param {Y.Node} node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
    @param {Array} subscription
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
    @param {Boolean} notifier
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
    @public
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
    @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
    on: function (node, subscription, notifier) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
        subscription[HANDLES.START] = node.on(EVT_START, this.touchStart, this, node, subscription, notifier);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
    Detaches all event subscriptions set up by the event-tap module
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
    @method detach
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
    @param {Y.Node} node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
    @param {Array} subscription
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
    @param {Boolean} notifier
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
    @public
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
    @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
    detach: function (node, subscription, notifier) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
        detachHelper(subscription, HANDLES);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
    Event delegation for the 'tap' event. The delegated event will use a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
    supplied selector or filtering function to test if the event references at least one
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
    node that should trigger the subscription callback.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
    Usage:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
        node.delegate('tap', function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
            Y.log('li a inside node was tapped.');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
        }, 'li a');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
    @method delegate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
    @param {Y.Node} node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
    @param {Array} subscription
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
    @param {Boolean} notifier
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
    @param {String | Function} filter
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
    @public
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
    @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
    delegate: function (node, subscription, notifier, filter) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
        subscription[HANDLES.START] = node.delegate(EVT_START, function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
            this.touchStart(e, node, subscription, notifier, true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
        }, filter, this);
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
    Detaches the delegated event subscriptions set up by the event-tap module.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
    Only used if you use node.delegate(...) instead of node.on(...);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
    @method detachDelegate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
    @param {Y.Node} node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
    @param {Array} subscription
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
    @param {Boolean} notifier
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
    @public
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
    @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
    detachDelegate: function (node, subscription, notifier) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
        detachHelper(subscription, HANDLES);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
    Called when the monitor(s) are tapped on, either through touchstart or mousedown.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
    @method touchStart
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
    @param {DOMEventFacade} event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
    @param {Y.Node} node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
    @param {Array} subscription
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
    @param {Boolean} notifier
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
    @param {Boolean} delegate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
    @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
    touchStart: function (event, node, subscription, notifier, delegate) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
        var context = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
                canceled: false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
            };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
        //move ways to quit early to the top.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
        // no right clicks
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
        if (event.button && event.button === 3) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
            return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
        // for now just support a 1 finger count (later enhance via config)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
        if (event.touches && event.touches.length !== 1) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
            return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
        context.node = delegate ? event.currentTarget : node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
        //There is a double check in here to support event simulation tests, in which
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   184
        //event.touches can be undefined when simulating 'touchstart' on touch devices.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
        if (SUPPORTS_TOUCHES && event.touches) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
          context.startXY = [ event.touches[0].pageX, event.touches[0].pageY ];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
        else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
          context.startXY = [ event.pageX, event.pageY ];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
        //Possibly outdated issue: something is off with the move that it attaches it but never triggers the handler
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
        subscription[HANDLES.MOVE] = node.once(EVT_MOVE, this.touchMove, this, node, subscription, notifier, delegate, context);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
        subscription[HANDLES.END] = node.once(EVT_END, this.touchEnd, this, node, subscription, notifier, delegate, context);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
        subscription[HANDLES.CANCEL] = node.once(EVT_CANCEL, this.touchMove, this, node, subscription, notifier, delegate, context);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
    Called when the monitor(s) fires a touchmove or touchcancel event (or the mouse equivalent).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
    This method detaches event handlers so that 'tap' is not fired.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
    @method touchMove
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
    @param {DOMEventFacade} event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
    @param {Y.Node} node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
    @param {Array} subscription
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
    @param {Boolean} notifier
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
    @param {Boolean} delegate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
    @param {Object} context
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
    @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
    touchMove: function (event, node, subscription, notifier, delegate, context) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
        detachHelper(subscription, [ HANDLES.MOVE, HANDLES.END, HANDLES.CANCEL ], true, context);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
        context.cancelled = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
    Called when the monitor(s) fires a touchend event (or the mouse equivalent).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
    This method fires the 'tap' event if certain requirements are met.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
    @method touchEnd
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
    @param {DOMEventFacade} event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
    @param {Y.Node} node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
    @param {Array} subscription
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
    @param {Boolean} notifier
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
    @param {Boolean} delegate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
    @param {Object} context
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
    @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
    touchEnd: function (event, node, subscription, notifier, delegate, context) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
        var startXY = context.startXY,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
            endXY,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
            clientXY;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
        //There is a double check in here to support event simulation tests, in which
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
        //event.touches can be undefined when simulating 'touchstart' on touch devices.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
        if (SUPPORTS_TOUCHES && event.changedTouches) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
          endXY = [ event.changedTouches[0].pageX, event.changedTouches[0].pageY ];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
          clientXY = [event.changedTouches[0].clientX, event.changedTouches[0].clientY];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
        else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
          endXY = [ event.pageX, event.pageY ];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
          clientXY = [event.clientX, event.clientY];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
        detachHelper(subscription, [ HANDLES.MOVE, HANDLES.END, HANDLES.CANCEL ], true, context);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
        // make sure mouse didn't move
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
        if (Math.abs(endXY[0] - startXY[0]) === 0 && Math.abs(endXY[1] - startXY[1]) === 0) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
            event.type = EVT_TAP;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
            event.pageX = endXY[0];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
            event.pageY = endXY[1];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
            event.clientX = clientXY[0];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
            event.clientY = clientXY[1];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
            event.currentTarget = context.node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
            notifier.fire(event);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   262
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   263
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   264
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
}, '3.10.3', {"requires": ["node-base", "event-base", "event-touch", "event-synthetic"]});