demo/www/lib/ionic/js/ionic.bundle.js
function extendEventData(ev) {
      var startEv = this.current.startEvent;

      // if the touches change, set the new touches over the startEvent touches
      // this because touchevents don't have all the touches on touchstart, or the
      // user must place his fingers at the EXACT same time on the screen, which is not realistic
      // but, sometimes it happens that both fingers are touching at the EXACT same time
      if(startEv && (ev.touches.length != startEv.touches.length || ev.touches === startEv.touches)) {
        // extend 1 level deep to get the touchlist with the touch objects
        startEv.touches = [];
        for(var i=0,len=ev.touches.length; i<len; i++) {
          startEv.touches.push(ionic.Gestures.utils.extend({}, ev.touches[i]));
        }
      }

      var delta_time = ev.timeStamp - startEv.timeStamp,
          delta_x = ev.center.pageX - startEv.center.pageX,
          delta_y = ev.center.pageY - startEv.center.pageY,
          velocity = ionic.Gestures.utils.getVelocity(delta_time, delta_x, delta_y);

      ionic.Gestures.utils.extend(ev, {
        deltaTime   : delta_time,

        deltaX      : delta_x,
        deltaY      : delta_y,

        velocityX   : velocity.x,
        velocityY   : velocity.y,

        distance    : ionic.Gestures.utils.getDistance(startEv.center, ev.center),
        angle       : ionic.Gestures.utils.getAngle(startEv.center, ev.center),
        direction   : ionic.Gestures.utils.getDirection(startEv.center, ev.center),

        scale       : ionic.Gestures.utils.getScale(startEv.touches, ev.touches),
        rotation    : ionic.Gestures.utils.getRotation(startEv.touches, ev.touches),

        startEvent  : startEv
      });

      return ev;
    }
function extendEventData(ev) {
      var startEv = this.current.startEvent;

      // if the touches change, set the new touches over the startEvent touches
      // this because touchevents don't have all the touches on touchstart, or the
      // user must place his fingers at the EXACT same time on the screen, which is not realistic
      // but, sometimes it happens that both fingers are touching at the EXACT same time
      if(startEv && (ev.touches.length != startEv.touches.length || ev.touches === startEv.touches)) {
        // extend 1 level deep to get the touchlist with the touch objects
        startEv.touches = [];
        for(var i=0,len=ev.touches.length; i<len; i++) {
          startEv.touches.push(ionic.Gestures.utils.extend({}, ev.touches[i]));
        }
      }

      var delta_time = ev.timeStamp - startEv.timeStamp,
          delta_x = ev.center.pageX - startEv.center.pageX,
          delta_y = ev.center.pageY - startEv.center.pageY,
          velocity = ionic.Gestures.utils.getVelocity(delta_time, delta_x, delta_y);

      ionic.Gestures.utils.extend(ev, {
        deltaTime   : delta_time,

        deltaX      : delta_x,
        deltaY      : delta_y,

        velocityX   : velocity.x,
        velocityY   : velocity.y,

        distance    : ionic.Gestures.utils.getDistance(startEv.center, ev.center),
        angle       : ionic.Gestures.utils.getAngle(startEv.center, ev.center),
        direction   : ionic.Gestures.utils.getDirection(startEv.center, ev.center),

        scale       : ionic.Gestures.utils.getScale(startEv.touches, ev.touches),
        rotation    : ionic.Gestures.utils.getRotation(startEv.touches, ev.touches),

        startEvent  : startEv
      });

      return ev;
    }
function extendEventData ( ev ) { var startEv = this . current . startEvent ; // if the touches change, set the new touches over the startEvent touches // this because touchevents don't have all the touches on touchstart, or the // user must place his fingers at the EXACT same time on the screen, which is not realistic // but, sometimes it happens that both fingers are touching at the EXACT same time if ( startEv && ( ev . touches . length != startEv . touches . length || ev . touches === startEv . touches ) ) { // extend 1 level deep to get the touchlist with the touch objects startEv . touches = [ ] ; for ( var i = 0 , len = ev . touches . length ; i < len ; i ++ ) { startEv . touches . push ( ionic . Gestures . utils . extend ( { } , ev . touches [ i ] ) ) ; } } var delta_time = ev . timeStamp - startEv . timeStamp , delta_x = ev . center . pageX - startEv . center . pageX , delta_y = ev . center . pageY - startEv . center . pageY , velocity = ionic . Gestures . utils . getVelocity ( delta_time , delta_x , delta_y ) ; ionic . Gestures . utils . extend ( ev , { deltaTime : delta_time , deltaX : delta_x , deltaY : delta_y , velocityX : velocity . x , velocityY : velocity . y , distance : ionic . Gestures . utils . getDistance ( startEv . center , ev . center ) , angle : ionic . Gestures . utils . getAngle ( startEv . center , ev . center ) , direction : ionic . Gestures . utils . getDirection ( startEv . center , ev . center ) , scale : ionic . Gestures . utils . getScale ( startEv . touches , ev . touches ) , rotation : ionic . Gestures . utils . getRotation ( startEv . touches , ev . touches ) , startEvent : startEv } ) ; return ev ; }
extend eventData for ionic.Gestures.gestures
@param   {Object}   ev
@returns {Object}   ev
extend eventData for ionic . Gestures . gestures