in src/common/GestureView.tsx [542:604]
private _sendPanEvent(e: Types.TapGestureState, gestureState: GestureStatePointVelocity,
gestureType: GestureType, initializeFromEvent: boolean, isComplete: boolean) {
const state = this._pendingGestureState as Types.PanGestureState;
assert(this._lastGestureStartEvent, 'Gesture start event must not be null.');
const initialPageX = this._lastGestureStartEvent
? this._lastGestureStartEvent.pageX!
: initializeFromEvent ? e.pageX : state.initialPageX;
const initialPageY = this._lastGestureStartEvent
? this._lastGestureStartEvent.pageY!
: initializeFromEvent ? e.pageY : state.initialPageY;
const initialClientX = this._lastGestureStartEvent
? this._lastGestureStartEvent.locationX!
: initializeFromEvent ? e.clientX : state.initialClientX;
const initialClientY = this._lastGestureStartEvent
? this._lastGestureStartEvent.locationY!
: initializeFromEvent ? e.clientY : state.initialClientY;
const velocityX = initializeFromEvent ? 0 : gestureState.vx;
const velocityY = initializeFromEvent ? 0 : gestureState.vy;
const panEvent: Types.PanGestureState = {
initialPageX: initialPageX,
initialPageY: initialPageY,
initialClientX: initialClientX,
initialClientY: initialClientY,
pageX: e.pageX,
pageY: e.pageY,
clientX: e.clientX,
clientY: e.clientY,
velocityX: velocityX,
velocityY: velocityY,
isComplete: isComplete,
timeStamp: e.timeStamp,
isTouch: !GestureView._isActuallyMouseEvent(this._lastGestureStartEvent),
};
switch (gestureType) {
case GestureType.Pan:
if (this.props.onPan) {
this.props.onPan(panEvent);
}
break;
case GestureType.PanVertical:
if (this.props.onPanVertical) {
this.props.onPanVertical(panEvent);
}
break;
case GestureType.PanHorizontal:
if (this.props.onPanHorizontal) {
this.props.onPanHorizontal(panEvent);
}
break;
default:
// do nothing;
}
return panEvent;
}