react-native-gesture-handler 1.2.1 → 1.4.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. package/DrawerLayout.js +5 -4
  2. package/GestureButtons.js +166 -0
  3. package/GestureComponents.js +63 -0
  4. package/GestureComponents.web.js +35 -0
  5. package/GestureHandler.js +10 -621
  6. package/GestureHandlerButton.web.js +4 -12
  7. package/GestureHandlerPropTypes.js +45 -0
  8. package/Gestures.js +278 -0
  9. package/NativeViewGestureHandler.js +14 -0
  10. package/PlatformConstants.web.js +3 -1
  11. package/RNGestureHandler.podspec +1 -1
  12. package/RNGestureHandlerModule.web.js +49 -0
  13. package/State.js +12 -1
  14. package/Swipeable.js +6 -11
  15. package/android/build.gradle +3 -7
  16. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.java +1 -1
  17. package/android/lib/src/main/java/com/swmansion/gesturehandler/PanGestureHandler.java +1 -1
  18. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.java +1 -1
  19. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.java +2 -2
  20. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.java +1 -1
  21. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerPackage.java +1 -1
  22. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.java +1 -1
  23. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootInterface.java +1 -1
  24. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.java +1 -1
  25. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.java +1 -1
  26. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.java +2 -2
  27. package/createHandler.js +46 -20
  28. package/createNativeWrapper.js +86 -0
  29. package/ios/RNGestureHandler.xcodeproj/project.pbxproj +4 -4
  30. package/package.json +20 -17
  31. package/react-native-gesture-handler.d.ts +25 -3
  32. package/touchables/GenericTouchable.js +3 -1
  33. package/touchables/TouchableHighlight.js +1 -3
  34. package/touchables/TouchableOpacity.web.js +2 -0
  35. package/touchables/TouchableWithoutFeedback.js +4 -2
  36. package/web/DiscreteGestureHandler.js +66 -0
  37. package/web/DraggingGestureHandler.js +22 -0
  38. package/web/Errors.js +5 -0
  39. package/web/FlingGestureHandler.js +137 -0
  40. package/web/GestureHandler.js +442 -0
  41. package/web/IndiscreteGestureHandler.js +33 -0
  42. package/web/LongPressGestureHandler.js +50 -0
  43. package/web/NativeViewGestureHandler.js +38 -0
  44. package/web/NodeManager.js +24 -0
  45. package/web/PanGestureHandler.js +213 -0
  46. package/web/PinchGestureHandler.js +24 -0
  47. package/web/PressGestureHandler.js +147 -0
  48. package/web/RotationGestureHandler.js +24 -0
  49. package/web/TapGestureHandler.js +160 -0
  50. package/web/constants.js +48 -0
  51. package/web/utils.js +14 -0
  52. package/Directions.web.js +0 -6
  53. package/Swipeable.web.js +0 -4
  54. package/createHandler.web.js +0 -205
@@ -1,205 +0,0 @@
1
- import React from 'react';
2
- import { TouchableWithoutFeedback } from 'react-native';
3
-
4
- import State from './State';
5
-
6
- function handleHandlerStateChange(props, event, oldState, state) {
7
- const { enabled, onHandlerStateChange } = props;
8
-
9
- if (enabled !== false && onHandlerStateChange) {
10
- const {
11
- nativeEvent: {
12
- locationX: x,
13
- locationY: y,
14
- pageX: absoluteX,
15
- pageY: absoluteY,
16
- },
17
- } = event;
18
-
19
- onHandlerStateChange({
20
- nativeEvent: {
21
- oldState,
22
- state,
23
- x,
24
- y,
25
- absoluteX,
26
- absoluteY,
27
- pointerInside: true,
28
- },
29
- });
30
- }
31
- }
32
-
33
- function handleFailed(props, event) {
34
- handleHandlerStateChange(props, event, State.ACTIVE, State.FAILED);
35
- }
36
-
37
- function handleEnd(props, event) {
38
- handleHandlerStateChange(props, event, State.ACTIVE, State.END);
39
- }
40
-
41
- function handleActivate(props, event) {
42
- handleHandlerStateChange(props, event, State.BEGAN, State.ACTIVE);
43
- }
44
-
45
- function handleBegan(props, event) {
46
- handleHandlerStateChange(props, event, State.UNDETERMINED, State.BEGAN);
47
- }
48
-
49
- class UnimplementedGestureHandler extends React.Component {
50
- setNativeProps = () => {
51
- // Do nothing
52
- };
53
-
54
- render() {
55
- return this.props.children;
56
- }
57
- }
58
-
59
- const handlers = {
60
- NativeViewGestureHandler: class NativeViewGestureHandler extends React.Component {
61
- render() {
62
- const { children } = this.props;
63
-
64
- return children;
65
- }
66
- },
67
-
68
- TapGestureHandler: class TapGestureHandler extends React.Component {
69
- static defaultProps = {
70
- numberOfTaps: 1,
71
- maxDurationMs: 500,
72
- maxDelayMs: 500,
73
- minPointers: 1,
74
- maxDeltaX: Number.MAX_SAFE_INTEGER,
75
- maxDeltaY: Number.MAX_SAFE_INTEGER,
76
- maxDist: Number.MAX_SAFE_INTEGER,
77
- };
78
-
79
- hasBegun = false;
80
- touchBank = [];
81
- timeout = null;
82
-
83
- setNativeProps() {}
84
-
85
- clearState = () => {
86
- this.hasBegun = false;
87
- this.touchBank = [];
88
- window.clearTimeout(this.timeout);
89
- };
90
-
91
- handlePressIn = event => {
92
- const { maxDelayMs } = this.props;
93
-
94
- if (!this.hasBegun) {
95
- event.persist();
96
- this.hasBegun = true;
97
- handleBegan(this.props, event);
98
-
99
- // Cancel if not finished in time
100
- this.timeout = window.setTimeout(() => {
101
- if (this.hasBegun) {
102
- this.clearState();
103
- handleFailed(this.props, event);
104
- }
105
- }, maxDelayMs);
106
- }
107
- };
108
-
109
- handlePressOut = event => {
110
- const {
111
- touchHistory: { touchBank = [] },
112
- } = event;
113
- const { maxDeltaX, maxDeltaY, maxDurationMs, numberOfTaps } = this.props;
114
-
115
- this.touchBank = this.touchBank.concat(touchBank);
116
-
117
- // Check if all touches are valid
118
- const areTouchesValid = this.touchBank.every(touch => {
119
- const {
120
- currentPageX,
121
- currentPageY,
122
- currentTimeStamp,
123
- startPageX,
124
- startPageY,
125
- startTimeStamp,
126
- } = touch;
127
-
128
- // Check if touch took longer than it may
129
- if (startTimeStamp + maxDurationMs < currentTimeStamp) {
130
- return false;
131
- }
132
-
133
- // Check if touch moved too far away
134
- if (
135
- startPageX + maxDeltaX < currentPageX ||
136
- startPageX - maxDeltaX > currentPageX
137
- ) {
138
- return false;
139
- }
140
-
141
- // Check if touch moved too far away
142
- if (
143
- startPageY + maxDeltaY < currentPageY ||
144
- startPageY - maxDeltaY > currentPageY
145
- ) {
146
- return false;
147
- }
148
-
149
- return true;
150
- });
151
-
152
- // Check if all touches were valid and the necessary number of touches was achieved
153
- if (!areTouchesValid) {
154
- this.clearState();
155
- handleFailed(this.props, event);
156
- } else if (this.touchBank.length >= numberOfTaps) {
157
- handleActivate(this.props, event);
158
- this.clearState();
159
- handleEnd(this.props, event);
160
- }
161
- };
162
-
163
- render() {
164
- const { children, style } = this.props;
165
-
166
- return (
167
- <TouchableWithoutFeedback
168
- style={style}
169
- onPressIn={this.handlePressIn}
170
- onPressOut={this.handlePressOut}>
171
- {children}
172
- </TouchableWithoutFeedback>
173
- );
174
- }
175
- },
176
- };
177
-
178
- export default function createHandler(handlerName, propTypes = {}) {
179
- class Handler extends React.Component {
180
- static displayName = handlerName;
181
-
182
- static propTypes = propTypes;
183
-
184
- componentDidMount() {
185
- if (!handlers[handlerName]) {
186
- console.warn(`${handlerName} is not yet supported on web.`);
187
- }
188
- }
189
-
190
- _refHandler = node => {
191
- this._viewNode = node;
192
- };
193
-
194
- setNativeProps = (...args) => {
195
- this._viewNode.setNativeProps(...args);
196
- };
197
-
198
- render() {
199
- const Handler = handlers[handlerName] || UnimplementedGestureHandler;
200
-
201
- return <Handler ref={this._refHandler} {...this.props} />;
202
- }
203
- }
204
- return Handler;
205
- }