From d531ada12aca2a4bb90a327b9a2bc0c0cb24d823 Mon Sep 17 00:00:00 2001 From: Andre Kovac Date: Wed, 1 Mar 2017 17:50:52 -0300 Subject: [PATCH 1/3] Add onSingleTap prop which may act as a callback on each tap (including double-tap) if provided --- library/transform/ViewTransformer.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/library/transform/ViewTransformer.js b/library/transform/ViewTransformer.js index f97ab00..7a8989c 100644 --- a/library/transform/ViewTransformer.js +++ b/library/transform/ViewTransformer.js @@ -219,6 +219,9 @@ export default class ViewTransformer extends React.Component { return; } + if (gestureState.singleTapUp) { + this.props.onSingleTap && this.props.onSingleTap(); + } if (gestureState.doubleTapUp) { if (!this.props.enableScale) { @@ -450,7 +453,8 @@ ViewTransformer.propTypes = { onTransformGestureReleased: React.PropTypes.func, - onSingleTapConfirmed: React.PropTypes.func + onSingleTap: React.PropTypes.func, + onSingleTapConfirmed: React.PropTypes.func, }; ViewTransformer.defaultProps = { maxOverScrollDistance: 20, @@ -458,5 +462,7 @@ ViewTransformer.defaultProps = { enableTranslate: true, enableTransform: true, maxScale: 1, - enableResistance: false + enableResistance: false, + onSingleTap: undefined, + onSingleTapConfirmed: undefined, }; From 534ceffabf14b8aeaff5f9fa5c04a7d2e8b3880f Mon Sep 17 00:00:00 2001 From: Andre Kovac Date: Wed, 1 Mar 2017 17:56:06 -0300 Subject: [PATCH 2/3] Add onDoubleTap callback. If provided it overwrites the default double-tap scaling behavior. Returns tap coordinates as first two arguments --- library/transform/ViewTransformer.js | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/library/transform/ViewTransformer.js b/library/transform/ViewTransformer.js index 7a8989c..912f42c 100644 --- a/library/transform/ViewTransformer.js +++ b/library/transform/ViewTransformer.js @@ -237,7 +237,11 @@ export default class ViewTransformer extends React.Component { pivotY = gestureState.y0 - this.state.pageY; } - this.performDoubleTapUp(pivotX, pivotY); + if (this.props.onDoubleTap) { + this.props.onDoubleTap(pivotX, pivotY); + } else { + this.performDoubleTapUp(pivotX, pivotY); + } } else { if(this.props.enableTranslate) { this.performFling(gestureState.vx, gestureState.vy); @@ -453,8 +457,21 @@ ViewTransformer.propTypes = { onTransformGestureReleased: React.PropTypes.func, + /** + * Callback on a single tap (includes first and second tap of double-tap) + */ onSingleTap: React.PropTypes.func, + /** + * Callback on a single tap which is not part of a double-tap + */ onSingleTapConfirmed: React.PropTypes.func, + /** + * Callback on a double tap (if supplied, it overwrites default scaling behavior) + * + * The first two arguments of the callback are the x- and y-coordinates of the + * finger while tapping, respectively. + */ + onDoubleTap: React.PropTypes.func, }; ViewTransformer.defaultProps = { maxOverScrollDistance: 20, @@ -465,4 +482,5 @@ ViewTransformer.defaultProps = { enableResistance: false, onSingleTap: undefined, onSingleTapConfirmed: undefined, + onDoubleTap: undefined, }; From 452949eb40393f4cd921476aa2425d88a5cf27f0 Mon Sep 17 00:00:00 2001 From: Andre Kovac Date: Wed, 1 Mar 2017 18:04:52 -0300 Subject: [PATCH 3/3] Add enableFling prop to give possibility to disable fling behavior --- library/transform/ViewTransformer.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/library/transform/ViewTransformer.js b/library/transform/ViewTransformer.js index 912f42c..93ee720 100644 --- a/library/transform/ViewTransformer.js +++ b/library/transform/ViewTransformer.js @@ -244,7 +244,7 @@ export default class ViewTransformer extends React.Component { } } else { if(this.props.enableTranslate) { - this.performFling(gestureState.vx, gestureState.vy); + this.props.enableFling && this.performFling(gestureState.vx, gestureState.vy); } else { this.animateBounce(); } @@ -452,6 +452,11 @@ ViewTransformer.propTypes = { * Use true to enable resistance effect on over pulling. Default is false. */ enableResistance: React.PropTypes.bool, + /** + * Use false to disable flinging back after moving the image away from the center. + * Default is true. + */ + enableFling: React.PropTypes.bool, onViewTransformed: React.PropTypes.func, @@ -480,6 +485,7 @@ ViewTransformer.defaultProps = { enableTransform: true, maxScale: 1, enableResistance: false, + enableFling: true, onSingleTap: undefined, onSingleTapConfirmed: undefined, onDoubleTap: undefined,