src/cm/media/js/lib/yui/yui_3.10.3/build/event-move/event-move.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-move', 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 lower level support for "gesturemovestart", "gesturemove" and "gesturemoveend" events, which can be used to create drag/drop
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
 * interactions which work across touch and mouse input devices. They correspond to "touchstart", "touchmove" and "touchend" on a touch input
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    13
 * device, and "mousedown", "mousemove", "mouseup" on a mouse based input device.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
 * <p>Documentation for the gesturemove triplet of events can be found on the <a href="../classes/YUI.html#event_gesturemove">YUI</a> global,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
 * along with the other supported events.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
 @example
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
     YUI().use('event-move', function (Y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
         Y.one('#myNode').on('gesturemovestart', function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
         });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
         Y.one('#myNode').on('gesturemove', function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
         });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
         Y.one('#myNode').on('gesturemoveend', function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
         });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
     });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
 * @module event-gestures
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
 * @submodule event-move
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
 var GESTURE_MAP = Y.Event._GESTURE_MAP,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
     EVENT = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
         start: GESTURE_MAP.start,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
         end: GESTURE_MAP.end,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
         move: GESTURE_MAP.move
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
     },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
    START = "start",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
    MOVE = "move",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
    END = "end",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
    GESTURE_MOVE = "gesture" + MOVE,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
    GESTURE_MOVE_END = GESTURE_MOVE + END,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
    GESTURE_MOVE_START = GESTURE_MOVE + START,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
    _MOVE_START_HANDLE = "_msh",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
    _MOVE_HANDLE = "_mh",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
    _MOVE_END_HANDLE = "_meh",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
    _DEL_MOVE_START_HANDLE = "_dmsh",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
    _DEL_MOVE_HANDLE = "_dmh",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
    _DEL_MOVE_END_HANDLE = "_dmeh",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
    _MOVE_START = "_ms",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
    _MOVE = "_m",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
    MIN_TIME = "minTime",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
    MIN_DISTANCE = "minDistance",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
    PREVENT_DEFAULT = "preventDefault",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
    BUTTON = "button",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
    OWNER_DOCUMENT = "ownerDocument",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
    CURRENT_TARGET = "currentTarget",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
    TARGET = "target",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
    NODE_TYPE = "nodeType",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
    SUPPORTS_POINTER = Y.config.win && ("msPointerEnabled" in Y.config.win.navigator),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
    MS_TOUCH_ACTION_COUNT = 'msTouchActionCount',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
    MS_INIT_TOUCH_ACTION = 'msInitTouchAction',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
    _defArgsProcessor = function(se, args, delegate) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
        var iConfig = (delegate) ? 4 : 3,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
            config = (args.length > iConfig) ? Y.merge(args.splice(iConfig,1)[0]) : {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
        if (!(PREVENT_DEFAULT in config)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
            config[PREVENT_DEFAULT] = se.PREVENT_DEFAULT;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
        return config;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
    _getRoot = function(node, subscriber) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
        return subscriber._extra.root || (node.get(NODE_TYPE) === 9) ? node : node.get(OWNER_DOCUMENT);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
    //Checks to see if the node is the document, and if it is, returns the documentElement.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
    _checkDocumentElem = function(node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
        var elem = node.getDOMNode();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
        if (node.compareTo(Y.config.doc) && elem.documentElement) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
            return elem.documentElement;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
        else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
            return false;
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
    _normTouchFacade = function(touchFacade, touch, params) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
        touchFacade.pageX = touch.pageX;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
        touchFacade.pageY = touch.pageY;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
        touchFacade.screenX = touch.screenX;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
        touchFacade.screenY = touch.screenY;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
        touchFacade.clientX = touch.clientX;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
        touchFacade.clientY = touch.clientY;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
        touchFacade[TARGET] = touchFacade[TARGET] || touch[TARGET];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
        touchFacade[CURRENT_TARGET] = touchFacade[CURRENT_TARGET] || touch[CURRENT_TARGET];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
        touchFacade[BUTTON] = (params && params[BUTTON]) || 1; // default to left (left as per vendors, not W3C which is 0)
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
    /*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
    In IE10 touch mode, gestures will not work properly unless the -ms-touch-action CSS property is set to something other than 'auto'. Read http://msdn.microsoft.com/en-us/library/windows/apps/hh767313.aspx for more info. To get around this, we set -ms-touch-action: none which is the same as e.preventDefault() on touch environments. This tells the browser to fire DOM events for all touch events, and not perform any default behavior.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
    The user can over-ride this by setting a more lenient -ms-touch-action property on a node (such as pan-x, pan-y, etc.) via CSS when subscribing to the 'gesturemovestart' event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
    _setTouchActions = function (node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
        var elem = _checkDocumentElem(node) || node.getDOMNode(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
            num = node.getData(MS_TOUCH_ACTION_COUNT);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
        //Checks to see if msTouchAction is supported.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
        if (SUPPORTS_POINTER) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
            if (!num) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
                num = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
                node.setData(MS_INIT_TOUCH_ACTION, elem.style.msTouchAction);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
            elem.style.msTouchAction = Y.Event._DEFAULT_TOUCH_ACTION;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
            num++;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
            node.setData(MS_TOUCH_ACTION_COUNT, num);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
        }
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
    Resets the element's -ms-touch-action property back to the original value, This is called on detach() and detachDelegate().
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
    _unsetTouchActions = function (node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
        var elem = _checkDocumentElem(node) || node.getDOMNode(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
            num = node.getData(MS_TOUCH_ACTION_COUNT),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
            initTouchAction = node.getData(MS_INIT_TOUCH_ACTION);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
        if (SUPPORTS_POINTER) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
            num--;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
            node.setData(MS_TOUCH_ACTION_COUNT, num);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
            if (num === 0 && elem.style.msTouchAction !== initTouchAction) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
                elem.style.msTouchAction = initTouchAction;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
    _prevent = function(e, preventDefault) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
        if (preventDefault) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
            // preventDefault is a boolean or a function
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
            if (!preventDefault.call || preventDefault(e)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
                e.preventDefault();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
    define = Y.Event.define;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
    Y.Event._DEFAULT_TOUCH_ACTION = 'none';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
 * Sets up a "gesturemovestart" event, that is fired on touch devices in response to a single finger "touchstart",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
 * and on mouse based devices in response to a "mousedown". The subscriber can specify the minimum time
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
 * and distance thresholds which should be crossed before the "gesturemovestart" is fired and for the mouse,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
 * which button should initiate a "gesturemovestart". This event can also be listened for using node.delegate().
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
 * <p>It is recommended that you use Y.bind to set up context and additional arguments for your event handler,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
 * however if you want to pass the context and arguments as additional signature arguments to on/delegate,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
 * you need to provide a null value for the configuration object, e.g: <code>node.on("gesturemovestart", fn, null, context, arg1, arg2, arg3)</code></p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
 * @event gesturemovestart
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
 * @for YUI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
 * @param type {string} "gesturemovestart"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
 * @param fn {function} The method the event invokes. It receives the event facade of the underlying DOM event (mousedown or touchstart.touches[0]) which contains position co-ordinates.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
 * @param cfg {Object} Optional. An object which specifies:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
 * <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
 * <dt>minDistance (defaults to 0)</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
 * <dd>The minimum distance threshold which should be crossed before the gesturemovestart is fired</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
 * <dt>minTime (defaults to 0)</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
 * <dd>The minimum time threshold for which the finger/mouse should be help down before the gesturemovestart is fired</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
 * <dt>button (no default)</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   184
 * <dd>In the case of a mouse input device, if the event should only be fired for a specific mouse button.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
 * <dt>preventDefault (defaults to false)</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
 * <dd>Can be set to true/false to prevent default behavior as soon as the touchstart or mousedown is received (that is before minTime or minDistance thresholds are crossed, and so before the gesturemovestart listener is notified) so that things like text selection and context popups (on touch devices) can be
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
 * prevented. This property can also be set to a function, which returns true or false, based on the event facade passed to it (for example, DragDrop can determine if the target is a valid handle or not before preventing default).</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
 * </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
 * @return {EventHandle} the detach handle
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
define(GESTURE_MOVE_START, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
    on: function (node, subscriber, ce) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
        //Set -ms-touch-action on IE10 and set preventDefault to true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
        _setTouchActions(node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
        subscriber[_MOVE_START_HANDLE] = node.on(EVENT[START],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
            this._onStart,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
            this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
            node,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
            subscriber,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
            ce);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
    delegate : function(node, subscriber, ce, filter) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
        var se = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
        subscriber[_DEL_MOVE_START_HANDLE] = node.delegate(EVENT[START],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
            function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
                se._onStart(e, node, subscriber, ce, 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
            filter);
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
    detachDelegate : function(node, subscriber, ce, filter) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
        var handle = subscriber[_DEL_MOVE_START_HANDLE];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
        if (handle) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
            handle.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
            subscriber[_DEL_MOVE_START_HANDLE] = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
        _unsetTouchActions(node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
    detach: function (node, subscriber, ce) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
        var startHandle = subscriber[_MOVE_START_HANDLE];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
        if (startHandle) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
            startHandle.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
            subscriber[_MOVE_START_HANDLE] = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
        _unsetTouchActions(node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
    processArgs : function(args, delegate) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
        var params = _defArgsProcessor(this, args, delegate);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
        if (!(MIN_TIME in params)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
            params[MIN_TIME] = this.MIN_TIME;
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
        if (!(MIN_DISTANCE in params)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
            params[MIN_DISTANCE] = this.MIN_DISTANCE;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
        return params;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
    _onStart : function(e, node, subscriber, ce, delegate) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
        if (delegate) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
            node = e[CURRENT_TARGET];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
        var params = subscriber._extra,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   262
            fireStart = true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   263
            minTime = params[MIN_TIME],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   264
            minDistance = params[MIN_DISTANCE],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
            button = params.button,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
            preventDefault = params[PREVENT_DEFAULT],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   267
            root = _getRoot(node, subscriber),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
            startXY;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
        if (e.touches) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
            if (e.touches.length === 1) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
                _normTouchFacade(e, e.touches[0], params);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
                fireStart = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   276
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   277
            fireStart = (button === undefined) || (button === e.button);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
        if (fireStart) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
            _prevent(e, preventDefault);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   284
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   285
            if (minTime === 0 || minDistance === 0) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   286
                this._start(e, node, ce, params);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   287
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
                startXY = [e.pageX, e.pageY];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
                if (minTime > 0) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
                    params._ht = Y.later(minTime, this, this._start, [e, node, ce, params]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
                    params._hme = root.on(EVENT[END], Y.bind(function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
                        this._cancel(params);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
                    }, this));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   301
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   302
                if (minDistance > 0) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   303
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   304
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
                    params._hm = root.on(EVENT[MOVE], Y.bind(function(em) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
                        if (Math.abs(em.pageX - startXY[0]) > minDistance || Math.abs(em.pageY - startXY[1]) > minDistance) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   307
                            this._start(e, node, ce, params);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   308
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   309
                    }, this));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   311
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   312
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   313
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   314
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   315
    _cancel : function(params) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   316
        if (params._ht) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   317
            params._ht.cancel();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   318
            params._ht = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   319
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   320
        if (params._hme) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   321
            params._hme.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   322
            params._hme = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   323
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   324
        if (params._hm) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   325
            params._hm.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   326
            params._hm = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   327
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   328
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   329
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   330
    _start : function(e, node, ce, params) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   331
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   332
        if (params) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   333
            this._cancel(params);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   334
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   335
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   336
        e.type = GESTURE_MOVE_START;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   337
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   338
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   339
        node.setData(_MOVE_START, e);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   340
        ce.fire(e);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   341
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   342
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   343
    MIN_TIME : 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   344
    MIN_DISTANCE : 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   345
    PREVENT_DEFAULT : false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   346
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   347
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   348
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   349
 * Sets up a "gesturemove" event, that is fired on touch devices in response to a single finger "touchmove",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   350
 * and on mouse based devices in response to a "mousemove".
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   351
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   352
 * <p>By default this event is only fired when the same node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   353
 * has received a "gesturemovestart" event. The subscriber can set standAlone to true, in the configuration properties,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   354
 * if they want to listen for this event without an initial "gesturemovestart".</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   355
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   356
 * <p>By default this event sets up it's internal "touchmove" and "mousemove" DOM listeners on the document element. The subscriber
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   357
 * can set the root configuration property, to specify which node to attach DOM listeners to, if different from the document.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   358
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   359
 * <p>This event can also be listened for using node.delegate().</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   360
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   361
 * <p>It is recommended that you use Y.bind to set up context and additional arguments for your event handler,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   362
 * however if you want to pass the context and arguments as additional signature arguments to on/delegate,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   363
 * you need to provide a null value for the configuration object, e.g: <code>node.on("gesturemove", fn, null, context, arg1, arg2, arg3)</code></p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   364
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   365
 * @event gesturemove
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   366
 * @for YUI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   367
 * @param type {string} "gesturemove"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   368
 * @param fn {function} The method the event invokes. It receives the event facade of the underlying DOM event (mousemove or touchmove.touches[0]) which contains position co-ordinates.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   369
 * @param cfg {Object} Optional. An object which specifies:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   370
 * <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   371
 * <dt>standAlone (defaults to false)</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   372
 * <dd>true, if the subscriber should be notified even if a "gesturemovestart" has not occured on the same node.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   373
 * <dt>root (defaults to document)</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   374
 * <dd>The node to which the internal DOM listeners should be attached.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   375
 * <dt>preventDefault (defaults to false)</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   376
 * <dd>Can be set to true/false to prevent default behavior as soon as the touchmove or mousemove is received. As with gesturemovestart, can also be set to function which returns true/false based on the event facade passed to it.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   377
 * </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   378
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   379
 * @return {EventHandle} the detach handle
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   380
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   381
define(GESTURE_MOVE, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   382
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   383
    on : function (node, subscriber, ce) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   384
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   385
        _setTouchActions(node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   386
        var root = _getRoot(node, subscriber, EVENT[MOVE]),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   387
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   388
            moveHandle = root.on(EVENT[MOVE],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   389
                this._onMove,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   390
                this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   391
                node,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   392
                subscriber,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   393
                ce);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   394
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   395
        subscriber[_MOVE_HANDLE] = moveHandle;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   396
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   397
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   398
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   399
    delegate : function(node, subscriber, ce, filter) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   400
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   401
        var se = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   402
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   403
        subscriber[_DEL_MOVE_HANDLE] = node.delegate(EVENT[MOVE],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   404
            function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   405
                se._onMove(e, node, subscriber, ce, true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   406
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   407
            filter);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   408
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   409
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   410
    detach : function (node, subscriber, ce) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   411
        var moveHandle = subscriber[_MOVE_HANDLE];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   412
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   413
        if (moveHandle) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   414
            moveHandle.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   415
            subscriber[_MOVE_HANDLE] = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   416
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   417
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   418
        _unsetTouchActions(node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   419
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   420
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   421
    detachDelegate : function(node, subscriber, ce, filter) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   422
        var handle = subscriber[_DEL_MOVE_HANDLE];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   423
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   424
        if (handle) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   425
            handle.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   426
            subscriber[_DEL_MOVE_HANDLE] = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   427
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   428
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   429
        _unsetTouchActions(node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   430
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   431
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   432
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   433
    processArgs : function(args, delegate) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   434
        return _defArgsProcessor(this, args, delegate);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   435
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   436
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   437
    _onMove : function(e, node, subscriber, ce, delegate) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   438
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   439
        if (delegate) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   440
            node = e[CURRENT_TARGET];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   441
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   442
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   443
        var fireMove = subscriber._extra.standAlone || node.getData(_MOVE_START),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   444
            preventDefault = subscriber._extra.preventDefault;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   445
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   446
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   447
        if (fireMove) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   448
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   449
            if (e.touches) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   450
                if (e.touches.length === 1) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   451
                    _normTouchFacade(e, e.touches[0]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   452
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   453
                    fireMove = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   454
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   455
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   456
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   457
            if (fireMove) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   458
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   459
                _prevent(e, preventDefault);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   460
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   461
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   462
                e.type = GESTURE_MOVE;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   463
                ce.fire(e);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   464
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   465
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   466
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   467
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   468
    PREVENT_DEFAULT : false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   469
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   470
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   471
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   472
 * Sets up a "gesturemoveend" event, that is fired on touch devices in response to a single finger "touchend",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   473
 * and on mouse based devices in response to a "mouseup".
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   474
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   475
 * <p>By default this event is only fired when the same node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   476
 * has received a "gesturemove" or "gesturemovestart" event. The subscriber can set standAlone to true, in the configuration properties,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   477
 * if they want to listen for this event without a preceding "gesturemovestart" or "gesturemove".</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   478
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   479
 * <p>By default this event sets up it's internal "touchend" and "mouseup" DOM listeners on the document element. The subscriber
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   480
 * can set the root configuration property, to specify which node to attach DOM listeners to, if different from the document.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   481
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   482
 * <p>This event can also be listened for using node.delegate().</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   483
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   484
 * <p>It is recommended that you use Y.bind to set up context and additional arguments for your event handler,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   485
 * however if you want to pass the context and arguments as additional signature arguments to on/delegate,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   486
 * you need to provide a null value for the configuration object, e.g: <code>node.on("gesturemoveend", fn, null, context, arg1, arg2, arg3)</code></p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   487
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   488
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   489
 * @event gesturemoveend
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   490
 * @for YUI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   491
 * @param type {string} "gesturemoveend"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   492
 * @param fn {function} The method the event invokes. It receives the event facade of the underlying DOM event (mouseup or touchend.changedTouches[0]).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   493
 * @param cfg {Object} Optional. An object which specifies:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   494
 * <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   495
 * <dt>standAlone (defaults to false)</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   496
 * <dd>true, if the subscriber should be notified even if a "gesturemovestart" or "gesturemove" has not occured on the same node.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   497
 * <dt>root (defaults to document)</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   498
 * <dd>The node to which the internal DOM listeners should be attached.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   499
 * <dt>preventDefault (defaults to false)</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   500
 * <dd>Can be set to true/false to prevent default behavior as soon as the touchend or mouseup is received. As with gesturemovestart, can also be set to function which returns true/false based on the event facade passed to it.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   501
 * </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   502
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   503
 * @return {EventHandle} the detach handle
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   504
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   505
define(GESTURE_MOVE_END, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   506
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   507
    on : function (node, subscriber, ce) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   508
        _setTouchActions(node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   509
        var root = _getRoot(node, subscriber),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   510
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   511
            endHandle = root.on(EVENT[END],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   512
                this._onEnd,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   513
                this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   514
                node,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   515
                subscriber,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   516
                ce);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   517
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   518
        subscriber[_MOVE_END_HANDLE] = endHandle;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   519
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   520
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   521
    delegate : function(node, subscriber, ce, filter) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   522
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   523
        var se = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   524
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   525
        subscriber[_DEL_MOVE_END_HANDLE] = node.delegate(EVENT[END],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   526
            function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   527
                se._onEnd(e, node, subscriber, ce, true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   528
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   529
            filter);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   530
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   531
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   532
    detachDelegate : function(node, subscriber, ce, filter) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   533
        var handle = subscriber[_DEL_MOVE_END_HANDLE];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   534
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   535
        if (handle) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   536
            handle.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   537
            subscriber[_DEL_MOVE_END_HANDLE] = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   538
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   539
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   540
        _unsetTouchActions(node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   541
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   542
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   543
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   544
    detach : function (node, subscriber, ce) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   545
        var endHandle = subscriber[_MOVE_END_HANDLE];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   546
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   547
        if (endHandle) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   548
            endHandle.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   549
            subscriber[_MOVE_END_HANDLE] = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   550
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   551
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   552
        _unsetTouchActions(node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   553
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   554
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   555
    processArgs : function(args, delegate) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   556
        return _defArgsProcessor(this, args, delegate);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   557
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   558
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   559
    _onEnd : function(e, node, subscriber, ce, delegate) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   560
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   561
        if (delegate) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   562
            node = e[CURRENT_TARGET];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   563
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   564
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   565
        var fireMoveEnd = subscriber._extra.standAlone || node.getData(_MOVE) || node.getData(_MOVE_START),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   566
            preventDefault = subscriber._extra.preventDefault;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   567
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   568
        if (fireMoveEnd) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   569
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   570
            if (e.changedTouches) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   571
                if (e.changedTouches.length === 1) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   572
                    _normTouchFacade(e, e.changedTouches[0]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   573
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   574
                    fireMoveEnd = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   575
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   576
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   577
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   578
            if (fireMoveEnd) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   579
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   580
                _prevent(e, preventDefault);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   581
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   582
                e.type = GESTURE_MOVE_END;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   583
                ce.fire(e);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   584
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   585
                node.clearData(_MOVE_START);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   586
                node.clearData(_MOVE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   587
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   588
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   589
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   590
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   591
    PREVENT_DEFAULT : false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   592
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   593
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   594
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   595
}, '3.10.3', {"requires": ["node-base", "event-touch", "event-synthetic"]});