function _simulateTouchEvent()

in src/app-host/touch-events.js [18:67]


function _simulateTouchEvent(type, mouseevent) {
    if (_lastMouseEvent &&
            mouseevent.type === _lastMouseEvent.type &&
            mouseevent.pageX === _lastMouseEvent.pageX &&
            mouseevent.pageY === _lastMouseEvent.pageY) {
        return;
    }

    _lastMouseEvent = mouseevent;

    var touchObj = {
        clientX: mouseevent.pageX,
        clientY: mouseevent.pageY,
        pageX: mouseevent.pageX,
        pageY: mouseevent.pageY,
        screenX: mouseevent.pageX,
        screenY: mouseevent.pageY,
        target: mouseevent.target,
        identifier: ''
    };

    var eventData = {
        altKey: mouseevent.altKey,
        ctrlKey: mouseevent.ctrlKey,
        shiftKey: mouseevent.shiftKey,
        metaKey: mouseevent.metaKey,
        changedTouches: [touchObj],
        targetTouches: type === 'touchend' ? [] : [touchObj],
        touches: type === 'touchend' ? [] : [touchObj]
    };

    utils.mixin(touchObj, eventData);

    var itemFn = function (index) {
        return this[index];
    };

    eventData.touches.item = itemFn;
    eventData.changedTouches.item = itemFn;
    eventData.targetTouches.item = itemFn;

    var listenerName = 'on' + type,
        simulatedEvent = _createTouchEvent(type, true, true, eventData);

    mouseevent.target.dispatchEvent(simulatedEvent);

    if (typeof mouseevent.target[listenerName] === 'function') {
        mouseevent.target[listenerName].apply(mouseevent.target, [simulatedEvent]);
    }
}