src/cm/media/js/lib/yui/yui_3.10.3/build/event-move/event-move-debug.js
author ymh <ymh.work@gmail.com>
Fri, 14 Mar 2014 13:16:10 +0100
changeset 611 fa66f4bb1563
parent 525 89ef5ed3c48b
permissions -rw-r--r--
add some more custom config and put every thing in comment in the custom.yaml template
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
             Y.log('gesturemovestart Fired.');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
         });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
         Y.one('#myNode').on('gesturemove', function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
             Y.log('gesturemove Fired.');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
         });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
         Y.one('#myNode').on('gesturemoveend', function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
             Y.log('gesturemoveend Fired.');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
         });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
     });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
 * @module event-gestures
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
 * @submodule event-move
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
 var GESTURE_MAP = Y.Event._GESTURE_MAP,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
     EVENT = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
         start: GESTURE_MAP.start,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
         end: GESTURE_MAP.end,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
         move: GESTURE_MAP.move
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
     },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
    START = "start",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
    MOVE = "move",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
    END = "end",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
    GESTURE_MOVE = "gesture" + MOVE,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
    GESTURE_MOVE_END = GESTURE_MOVE + END,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
    GESTURE_MOVE_START = GESTURE_MOVE + START,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
    _MOVE_START_HANDLE = "_msh",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
    _MOVE_HANDLE = "_mh",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
    _MOVE_END_HANDLE = "_meh",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
    _DEL_MOVE_START_HANDLE = "_dmsh",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
    _DEL_MOVE_HANDLE = "_dmh",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
    _DEL_MOVE_END_HANDLE = "_dmeh",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
    _MOVE_START = "_ms",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
    _MOVE = "_m",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
    MIN_TIME = "minTime",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
    MIN_DISTANCE = "minDistance",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
    PREVENT_DEFAULT = "preventDefault",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
    BUTTON = "button",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
    OWNER_DOCUMENT = "ownerDocument",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
    CURRENT_TARGET = "currentTarget",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
    TARGET = "target",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
    NODE_TYPE = "nodeType",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
    SUPPORTS_POINTER = Y.config.win && ("msPointerEnabled" in Y.config.win.navigator),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
    MS_TOUCH_ACTION_COUNT = 'msTouchActionCount',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
    MS_INIT_TOUCH_ACTION = 'msInitTouchAction',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
    _defArgsProcessor = function(se, args, delegate) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
        var iConfig = (delegate) ? 4 : 3,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
            config = (args.length > iConfig) ? Y.merge(args.splice(iConfig,1)[0]) : {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
        if (!(PREVENT_DEFAULT in config)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
            config[PREVENT_DEFAULT] = se.PREVENT_DEFAULT;
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
        return config;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
    _getRoot = function(node, subscriber) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
        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
    89
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
    //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
    92
    _checkDocumentElem = function(node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
        var elem = node.getDOMNode();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
        if (node.compareTo(Y.config.doc) && elem.documentElement) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
            return elem.documentElement;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
        else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
            return false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
    _normTouchFacade = function(touchFacade, touch, params) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
        touchFacade.pageX = touch.pageX;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
        touchFacade.pageY = touch.pageY;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
        touchFacade.screenX = touch.screenX;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
        touchFacade.screenY = touch.screenY;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
        touchFacade.clientX = touch.clientX;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
        touchFacade.clientY = touch.clientY;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
        touchFacade[TARGET] = touchFacade[TARGET] || touch[TARGET];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
        touchFacade[CURRENT_TARGET] = touchFacade[CURRENT_TARGET] || touch[CURRENT_TARGET];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
        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
   113
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
    /*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
    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
   117
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
    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
   119
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
    _setTouchActions = function (node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
        var elem = _checkDocumentElem(node) || node.getDOMNode(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
            num = node.getData(MS_TOUCH_ACTION_COUNT);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
        //Checks to see if msTouchAction is supported.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
        if (SUPPORTS_POINTER) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
            if (!num) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
                num = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
                node.setData(MS_INIT_TOUCH_ACTION, elem.style.msTouchAction);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
            elem.style.msTouchAction = Y.Event._DEFAULT_TOUCH_ACTION;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
            num++;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
            node.setData(MS_TOUCH_ACTION_COUNT, num);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
        }
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
    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
   138
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
    _unsetTouchActions = function (node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
        var elem = _checkDocumentElem(node) || node.getDOMNode(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
            num = node.getData(MS_TOUCH_ACTION_COUNT),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
            initTouchAction = node.getData(MS_INIT_TOUCH_ACTION);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
        if (SUPPORTS_POINTER) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
            num--;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
            node.setData(MS_TOUCH_ACTION_COUNT, num);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
            if (num === 0 && elem.style.msTouchAction !== initTouchAction) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
                elem.style.msTouchAction = initTouchAction;
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
    _prevent = function(e, preventDefault) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
        if (preventDefault) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
            // preventDefault is a boolean or a function
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
            if (!preventDefault.call || preventDefault(e)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
                e.preventDefault();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
    define = Y.Event.define;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
    Y.Event._DEFAULT_TOUCH_ACTION = 'none';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
 * 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
   167
 * 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
   168
 * 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
   169
 * 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
   170
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
 * <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
   172
 * 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
   173
 * 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
   174
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
 * @event gesturemovestart
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
 * @for YUI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
 * @param type {string} "gesturemovestart"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
 * @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
   179
 * @param cfg {Object} Optional. An object which specifies:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
 * <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
 * <dt>minDistance (defaults to 0)</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
 * <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
   184
 * <dt>minTime (defaults to 0)</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
 * <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
   186
 * <dt>button (no default)</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
 * <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
   188
 * <dt>preventDefault (defaults to false)</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
 * <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
   190
 * 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
   191
 * </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
 * @return {EventHandle} the detach handle
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
define(GESTURE_MOVE_START, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
    on: function (node, subscriber, ce) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
        //Set -ms-touch-action on IE10 and set preventDefault to true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
        _setTouchActions(node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
        subscriber[_MOVE_START_HANDLE] = node.on(EVENT[START],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
            this._onStart,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
            this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
            node,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
            subscriber,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
            ce);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
    delegate : function(node, subscriber, ce, filter) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
        var se = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
        subscriber[_DEL_MOVE_START_HANDLE] = node.delegate(EVENT[START],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
            function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
                se._onStart(e, node, subscriber, ce, true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
            filter);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
    detachDelegate : function(node, subscriber, ce, filter) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
        var handle = subscriber[_DEL_MOVE_START_HANDLE];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
        if (handle) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
            handle.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
            subscriber[_DEL_MOVE_START_HANDLE] = null;
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
        _unsetTouchActions(node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
    detach: function (node, subscriber, ce) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
        var startHandle = subscriber[_MOVE_START_HANDLE];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
        if (startHandle) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
            startHandle.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
            subscriber[_MOVE_START_HANDLE] = null;
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
        _unsetTouchActions(node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
    processArgs : function(args, delegate) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
        var params = _defArgsProcessor(this, args, delegate);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
        if (!(MIN_TIME in params)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
            params[MIN_TIME] = this.MIN_TIME;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
        if (!(MIN_DISTANCE in params)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
            params[MIN_DISTANCE] = this.MIN_DISTANCE;
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
        return params;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
    _onStart : function(e, node, subscriber, ce, delegate) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
        if (delegate) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
            node = e[CURRENT_TARGET];
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
        var params = subscriber._extra,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
            fireStart = true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
            minTime = params[MIN_TIME],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   267
            minDistance = params[MIN_DISTANCE],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
            button = params.button,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
            preventDefault = params[PREVENT_DEFAULT],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
            root = _getRoot(node, subscriber),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
            startXY;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
        if (e.touches) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
            if (e.touches.length === 1) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
                _normTouchFacade(e, e.touches[0], params);
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 = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
            fireStart = (button === undefined) || (button === e.button);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
        Y.log("gesturemovestart: params = button:" + button + ", minTime = " + minTime + ", minDistance = " + minDistance, "event-gestures");
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 (fireStart) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   286
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   287
            _prevent(e, preventDefault);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
            if (minTime === 0 || minDistance === 0) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
                Y.log("gesturemovestart: No minTime or minDistance. Firing immediately", "event-gestures");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
                this._start(e, node, ce, params);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
                startXY = [e.pageX, e.pageY];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
                if (minTime > 0) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
                    Y.log("gesturemovestart: minTime specified. Setup timer.", "event-gestures");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
                    Y.log("gesturemovestart: initialTime for minTime = " + new Date().getTime(), "event-gestures");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   301
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   302
                    params._ht = Y.later(minTime, this, this._start, [e, node, ce, params]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   303
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   304
                    params._hme = root.on(EVENT[END], Y.bind(function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
                        this._cancel(params);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
                    }, this));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   307
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   308
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   309
                if (minDistance > 0) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   311
                    Y.log("gesturemovestart: minDistance specified. Setup native mouse/touchmove listener to measure distance.", "event-gestures");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   312
                    Y.log("gesturemovestart: initialXY for minDistance = " + startXY, "event-gestures");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   313
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   314
                    params._hm = root.on(EVENT[MOVE], Y.bind(function(em) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   315
                        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
   316
                            Y.log("gesturemovestart: minDistance hit.", "event-gestures");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   317
                            this._start(e, node, ce, params);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   318
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   319
                    }, this));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   320
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   321
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   322
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   323
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   324
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   325
    _cancel : function(params) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   326
        if (params._ht) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   327
            params._ht.cancel();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   328
            params._ht = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   329
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   330
        if (params._hme) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   331
            params._hme.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   332
            params._hme = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   333
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   334
        if (params._hm) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   335
            params._hm.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   336
            params._hm = null;
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   340
    _start : function(e, node, ce, params) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   341
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   342
        if (params) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   343
            this._cancel(params);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   344
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   345
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   346
        e.type = GESTURE_MOVE_START;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   347
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   348
        Y.log("gesturemovestart: Firing start: " + new Date().getTime(), "event-gestures");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   349
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   350
        node.setData(_MOVE_START, e);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   351
        ce.fire(e);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   352
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   353
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   354
    MIN_TIME : 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   355
    MIN_DISTANCE : 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   356
    PREVENT_DEFAULT : false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   357
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   358
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   359
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   360
 * 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
   361
 * and on mouse based devices in response to a "mousemove".
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   362
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   363
 * <p>By default this event is only fired when the same node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   364
 * 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
   365
 * if they want to listen for this event without an initial "gesturemovestart".</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   366
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   367
 * <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
   368
 * 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
   369
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   370
 * <p>This event can also be listened for using node.delegate().</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   371
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   372
 * <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
   373
 * 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
   374
 * 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
   375
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   376
 * @event gesturemove
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   377
 * @for YUI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   378
 * @param type {string} "gesturemove"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   379
 * @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
   380
 * @param cfg {Object} Optional. An object which specifies:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   381
 * <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   382
 * <dt>standAlone (defaults to false)</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   383
 * <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
   384
 * <dt>root (defaults to document)</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   385
 * <dd>The node to which the internal DOM listeners should be attached.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   386
 * <dt>preventDefault (defaults to false)</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   387
 * <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
   388
 * </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   389
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   390
 * @return {EventHandle} the detach handle
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   391
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   392
define(GESTURE_MOVE, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   393
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   394
    on : function (node, subscriber, ce) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   395
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   396
        _setTouchActions(node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   397
        var root = _getRoot(node, subscriber, EVENT[MOVE]),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   398
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   399
            moveHandle = root.on(EVENT[MOVE],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   400
                this._onMove,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   401
                this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   402
                node,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   403
                subscriber,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   404
                ce);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   405
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   406
        subscriber[_MOVE_HANDLE] = moveHandle;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   407
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
    delegate : function(node, subscriber, ce, filter) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   411
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   412
        var se = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   413
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   414
        subscriber[_DEL_MOVE_HANDLE] = node.delegate(EVENT[MOVE],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   415
            function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   416
                se._onMove(e, node, subscriber, ce, true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   417
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   418
            filter);
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
    detach : function (node, subscriber, ce) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   422
        var moveHandle = subscriber[_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 (moveHandle) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   425
            moveHandle.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   426
            subscriber[_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
    detachDelegate : function(node, subscriber, ce, filter) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   433
        var handle = subscriber[_DEL_MOVE_HANDLE];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   434
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   435
        if (handle) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   436
            handle.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   437
            subscriber[_DEL_MOVE_HANDLE] = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   438
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   439
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   440
        _unsetTouchActions(node);
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   444
    processArgs : function(args, delegate) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   445
        return _defArgsProcessor(this, args, delegate);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   446
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   447
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   448
    _onMove : function(e, node, subscriber, ce, delegate) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   449
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   450
        if (delegate) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   451
            node = e[CURRENT_TARGET];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   452
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   453
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   454
        var fireMove = subscriber._extra.standAlone || node.getData(_MOVE_START),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   455
            preventDefault = subscriber._extra.preventDefault;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   456
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   457
        Y.log("onMove initial fireMove check:" + fireMove,"event-gestures");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   458
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   459
        if (fireMove) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   460
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   461
            if (e.touches) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   462
                if (e.touches.length === 1) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   463
                    _normTouchFacade(e, e.touches[0]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   464
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   465
                    fireMove = false;
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   469
            if (fireMove) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   470
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   471
                _prevent(e, preventDefault);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   472
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   473
                Y.log("onMove second fireMove check:" + fireMove,"event-gestures");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   474
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   475
                e.type = GESTURE_MOVE;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   476
                ce.fire(e);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   477
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   478
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   479
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   480
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   481
    PREVENT_DEFAULT : false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   482
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   483
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   484
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   485
 * 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
   486
 * and on mouse based devices in response to a "mouseup".
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   487
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   488
 * <p>By default this event is only fired when the same node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   489
 * 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
   490
 * 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
   491
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   492
 * <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
   493
 * 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
   494
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   495
 * <p>This event can also be listened for using node.delegate().</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   496
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   497
 * <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
   498
 * 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
   499
 * 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
   500
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   501
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   502
 * @event gesturemoveend
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   503
 * @for YUI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   504
 * @param type {string} "gesturemoveend"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   505
 * @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
   506
 * @param cfg {Object} Optional. An object which specifies:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   507
 * <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   508
 * <dt>standAlone (defaults to false)</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   509
 * <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
   510
 * <dt>root (defaults to document)</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   511
 * <dd>The node to which the internal DOM listeners should be attached.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   512
 * <dt>preventDefault (defaults to false)</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   513
 * <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
   514
 * </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   515
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   516
 * @return {EventHandle} the detach handle
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   517
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   518
define(GESTURE_MOVE_END, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   519
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   520
    on : function (node, subscriber, ce) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   521
        _setTouchActions(node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   522
        var root = _getRoot(node, subscriber),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   523
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   524
            endHandle = root.on(EVENT[END],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   525
                this._onEnd,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   526
                this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   527
                node,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   528
                subscriber,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   529
                ce);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   530
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   531
        subscriber[_MOVE_END_HANDLE] = endHandle;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   532
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   533
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   534
    delegate : function(node, subscriber, ce, filter) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   535
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   536
        var se = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   537
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   538
        subscriber[_DEL_MOVE_END_HANDLE] = node.delegate(EVENT[END],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   539
            function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   540
                se._onEnd(e, node, subscriber, ce, true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   541
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   542
            filter);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   543
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   544
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   545
    detachDelegate : function(node, subscriber, ce, filter) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   546
        var handle = subscriber[_DEL_MOVE_END_HANDLE];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   547
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   548
        if (handle) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   549
            handle.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   550
            subscriber[_DEL_MOVE_END_HANDLE] = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   551
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   552
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   553
        _unsetTouchActions(node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   554
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   555
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   556
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   557
    detach : function (node, subscriber, ce) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   558
        var endHandle = subscriber[_MOVE_END_HANDLE];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   559
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   560
        if (endHandle) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   561
            endHandle.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   562
            subscriber[_MOVE_END_HANDLE] = null;
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
        _unsetTouchActions(node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   566
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   567
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   568
    processArgs : function(args, delegate) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   569
        return _defArgsProcessor(this, args, delegate);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   570
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   571
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   572
    _onEnd : function(e, node, subscriber, ce, delegate) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   573
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   574
        if (delegate) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   575
            node = e[CURRENT_TARGET];
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
        var fireMoveEnd = subscriber._extra.standAlone || node.getData(_MOVE) || node.getData(_MOVE_START),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   579
            preventDefault = subscriber._extra.preventDefault;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   580
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   581
        if (fireMoveEnd) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   582
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   583
            if (e.changedTouches) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   584
                if (e.changedTouches.length === 1) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   585
                    _normTouchFacade(e, e.changedTouches[0]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   586
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   587
                    fireMoveEnd = false;
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
            if (fireMoveEnd) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   592
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   593
                _prevent(e, preventDefault);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   594
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   595
                e.type = GESTURE_MOVE_END;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   596
                ce.fire(e);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   597
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   598
                node.clearData(_MOVE_START);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   599
                node.clearData(_MOVE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   600
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   601
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   602
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   603
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   604
    PREVENT_DEFAULT : false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   605
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   606
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   607
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   608
}, '3.10.3', {"requires": ["node-base", "event-touch", "event-synthetic"]});