@react-native-oh-tpl/react-native-gesture-handler 2.12.6-1 → 2.12.6-2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (79) hide show
  1. package/harmony/gesture_handler/LICENSE +21 -0
  2. package/harmony/gesture_handler/OAT.xml +44 -0
  3. package/harmony/gesture_handler/README.OpenSource +11 -0
  4. package/harmony/gesture_handler/README.md +1 -0
  5. package/harmony/gesture_handler/build-profile.json5 +7 -7
  6. package/harmony/gesture_handler/hvigorfile.ts +2 -2
  7. package/harmony/gesture_handler/index.ets +2 -2
  8. package/harmony/gesture_handler/oh-package.json5 +13 -11
  9. package/harmony/gesture_handler/src/main/cpp/CMakeLists.txt +8 -8
  10. package/harmony/gesture_handler/src/main/cpp/GestureHandlerPackage.cpp +33 -33
  11. package/harmony/gesture_handler/src/main/cpp/GestureHandlerPackage.h +14 -14
  12. package/harmony/gesture_handler/src/main/cpp/RNGestureHandlerButtonComponentDescriptor.h +60 -60
  13. package/harmony/gesture_handler/src/main/cpp/RNGestureHandlerModule.cpp +17 -17
  14. package/harmony/gesture_handler/src/main/cpp/RNGestureHandlerModule.h +11 -11
  15. package/harmony/gesture_handler/src/main/cpp/RNGestureHandlerRootViewComponentDescriptor.h +60 -60
  16. package/harmony/gesture_handler/src/main/ets/CircularBuffer.ts +42 -42
  17. package/harmony/gesture_handler/src/main/ets/Event.ts +67 -67
  18. package/harmony/gesture_handler/src/main/ets/EventDispatcher.ts +37 -37
  19. package/harmony/gesture_handler/src/main/ets/GestureHandler.ts +663 -663
  20. package/harmony/gesture_handler/src/main/ets/GestureHandlerArkUIAdapter.ets +201 -201
  21. package/harmony/gesture_handler/src/main/ets/GestureHandlerFactory.ts +44 -44
  22. package/harmony/gesture_handler/src/main/ets/GestureHandlerOrchestrator.ts +280 -280
  23. package/harmony/gesture_handler/src/main/ets/GestureHandlerPackage.ts +22 -22
  24. package/harmony/gesture_handler/src/main/ets/GestureHandlerRegistry.ts +27 -27
  25. package/harmony/gesture_handler/src/main/ets/InteractionManager.ts +108 -108
  26. package/harmony/gesture_handler/src/main/ets/LeastSquareSolver.ts +182 -182
  27. package/harmony/gesture_handler/src/main/ets/NativeViewGestureHandler.ts +114 -114
  28. package/harmony/gesture_handler/src/main/ets/OutgoingEvent.ts +33 -33
  29. package/harmony/gesture_handler/src/main/ets/PanGestureHandler.ts +327 -327
  30. package/harmony/gesture_handler/src/main/ets/PointerTracker.ts +239 -239
  31. package/harmony/gesture_handler/src/main/ets/RNGHError.ts +4 -4
  32. package/harmony/gesture_handler/src/main/ets/RNGHLogger.ts +28 -28
  33. package/harmony/gesture_handler/src/main/ets/RNGHRootTouchHandler.ets +57 -57
  34. package/harmony/gesture_handler/src/main/ets/RNGestureHandlerButton.ets +36 -36
  35. package/harmony/gesture_handler/src/main/ets/RNGestureHandlerModule.ts +125 -125
  36. package/harmony/gesture_handler/src/main/ets/RNGestureHandlerRootView.ets +56 -55
  37. package/harmony/gesture_handler/src/main/ets/RNOHScrollLocker.ts +10 -10
  38. package/harmony/gesture_handler/src/main/ets/State.ts +46 -46
  39. package/harmony/gesture_handler/src/main/ets/TapGestureHandler.ts +205 -205
  40. package/harmony/gesture_handler/src/main/ets/Vector2D.ts +36 -36
  41. package/harmony/gesture_handler/src/main/ets/VelocityTracker.ts +98 -98
  42. package/harmony/gesture_handler/src/main/ets/View.ts +70 -70
  43. package/harmony/gesture_handler/src/main/ets/ViewRegistry.ts +42 -42
  44. package/harmony/gesture_handler/src/main/ets/pages/Index.ets +16 -16
  45. package/harmony/gesture_handler/src/main/ets/webviewability/WebviewAbility.ts +41 -41
  46. package/harmony/gesture_handler/src/main/module.json5 +6 -6
  47. package/harmony/gesture_handler/src/main/resources/base/element/color.json +7 -7
  48. package/harmony/gesture_handler/src/main/resources/base/element/string.json +15 -15
  49. package/harmony/gesture_handler/src/main/resources/base/profile/main_pages.json +5 -5
  50. package/harmony/gesture_handler/src/main/resources/en_US/element/string.json +15 -15
  51. package/harmony/gesture_handler/src/main/resources/zh_CN/element/string.json +15 -15
  52. package/harmony/gesture_handler.har +0 -0
  53. package/lib/commonjs/components/touchables/GenericTouchable.js +9 -9
  54. package/lib/commonjs/components/touchables/TouchableOpacity.js +2 -2
  55. package/lib/commonjs/handlers/createNativeWrapper.js +6 -6
  56. package/lib/commonjs/handlers/gestures/GestureDetector.js +3 -3
  57. package/lib/module/components/touchables/GenericTouchable.js +9 -9
  58. package/lib/module/components/touchables/TouchableOpacity.js +2 -2
  59. package/lib/module/handlers/createNativeWrapper.js +6 -6
  60. package/lib/module/handlers/gestures/GestureDetector.js +3 -3
  61. package/package.json +70 -70
  62. package/src/RNGestureHandlerModule.ts +6 -6
  63. package/src/components/GestureButtons.tsx +334 -334
  64. package/src/components/GestureHandlerButton.tsx +5 -5
  65. package/src/components/GestureHandlerRootView.tsx +34 -34
  66. package/src/components/RNGestureHandlerButton.tsx +23 -23
  67. package/src/components/touchables/GenericTouchable.tsx +301 -301
  68. package/src/components/touchables/TouchableOpacity.tsx +76 -76
  69. package/src/components/touchables/TouchableWithoutFeedback.tsx +14 -14
  70. package/src/components/touchables/index.ts +7 -7
  71. package/src/handlers/NativeViewGestureHandler.ts +55 -55
  72. package/src/handlers/PanGestureHandler.ts +327 -327
  73. package/src/handlers/TapGestureHandler.ts +95 -95
  74. package/src/handlers/createHandler.tsx +535 -535
  75. package/src/handlers/createNativeWrapper.tsx +81 -81
  76. package/src/handlers/gestureHandlerCommon.ts +15 -15
  77. package/src/handlers/gestures/GestureDetector.tsx +823 -823
  78. package/src/index.ts +172 -172
  79. package/src/init.ts +18 -18
@@ -1,327 +1,327 @@
1
- // RNGH: patching to replace `createHandler`
2
-
3
- import createHandler from './createHandler'; // RNGH: using local create handler
4
- import {
5
- BaseGestureHandlerProps,
6
- baseGestureHandlerProps,
7
- } from 'react-native-gesture-handler/src/handlers/gestureHandlerCommon';
8
-
9
- export const panGestureHandlerProps = [
10
- 'activeOffsetY',
11
- 'activeOffsetX',
12
- 'failOffsetY',
13
- 'failOffsetX',
14
- 'minDist',
15
- 'minVelocity',
16
- 'minVelocityX',
17
- 'minVelocityY',
18
- 'minPointers',
19
- 'maxPointers',
20
- 'avgTouches',
21
- 'enableTrackpadTwoFingerGesture',
22
- 'activateAfterLongPress',
23
- ] as const;
24
-
25
- export const panGestureHandlerCustomNativeProps = [
26
- 'activeOffsetYStart',
27
- 'activeOffsetYEnd',
28
- 'activeOffsetXStart',
29
- 'activeOffsetXEnd',
30
- 'failOffsetYStart',
31
- 'failOffsetYEnd',
32
- 'failOffsetXStart',
33
- 'failOffsetXEnd',
34
- ] as const;
35
-
36
- export type PanGestureHandlerEventPayload = {
37
- /**
38
- * X coordinate of the current position of the pointer (finger or a leading
39
- * pointer when there are multiple fingers placed) relative to the view
40
- * attached to the handler. Expressed in point units.
41
- */
42
- x: number;
43
-
44
- /**
45
- * Y coordinate of the current position of the pointer (finger or a leading
46
- * pointer when there are multiple fingers placed) relative to the view
47
- * attached to the handler. Expressed in point units.
48
- */
49
- y: number;
50
-
51
- /**
52
- * X coordinate of the current position of the pointer (finger or a leading
53
- * pointer when there are multiple fingers placed) relative to the window.
54
- * The value is expressed in point units. It is recommended to use it instead
55
- * of `x` in cases when the original view can be transformed as an effect of
56
- * the gesture.
57
- */
58
- absoluteX: number;
59
-
60
- /**
61
- * Y coordinate of the current position of the pointer (finger or a leading
62
- * pointer when there are multiple fingers placed) relative to the window.
63
- * The value is expressed in point units. It is recommended to use it instead
64
- * of `y` in cases when the original view can be transformed as an
65
- * effect of the gesture.
66
- */
67
- absoluteY: number;
68
-
69
- /**
70
- * Translation of the pan gesture along X axis accumulated over the time of
71
- * the gesture. The value is expressed in the point units.
72
- */
73
- translationX: number;
74
-
75
- /**
76
- * Translation of the pan gesture along Y axis accumulated over the time of
77
- * the gesture. The value is expressed in the point units.
78
- */
79
- translationY: number;
80
-
81
- /**
82
- * Velocity of the pan gesture along the X axis in the current moment. The
83
- * value is expressed in point units per second.
84
- */
85
- velocityX: number;
86
-
87
- /**
88
- * Velocity of the pan gesture along the Y axis in the current moment. The
89
- * value is expressed in point units per second.
90
- */
91
- velocityY: number;
92
- };
93
-
94
- interface CommonPanProperties {
95
- /**
96
- * Minimum distance the finger (or multiple finger) need to travel before the
97
- * handler activates. Expressed in points.
98
- */
99
- minDist?: number;
100
-
101
- /**
102
- * Android only.
103
- */
104
- avgTouches?: boolean;
105
-
106
- /**
107
- * Enables two-finger gestures on supported devices, for example iPads with
108
- * trackpads. If not enabled the gesture will require click + drag, with
109
- * enableTrackpadTwoFingerGesture swiping with two fingers will also trigger
110
- * the gesture.
111
- */
112
- enableTrackpadTwoFingerGesture?: boolean;
113
-
114
- /**
115
- * A number of fingers that is required to be placed before handler can
116
- * activate. Should be a higher or equal to 0 integer.
117
- */
118
- minPointers?: number;
119
-
120
- /**
121
- * When the given number of fingers is placed on the screen and handler hasn't
122
- * yet activated it will fail recognizing the gesture. Should be a higher or
123
- * equal to 0 integer.
124
- */
125
- maxPointers?: number;
126
-
127
- minVelocity?: number;
128
- minVelocityX?: number;
129
- minVelocityY?: number;
130
- activateAfterLongPress?: number;
131
- }
132
-
133
- export interface PanGestureConfig extends CommonPanProperties {
134
- activeOffsetYStart?: number;
135
- activeOffsetYEnd?: number;
136
- activeOffsetXStart?: number;
137
- activeOffsetXEnd?: number;
138
- failOffsetYStart?: number;
139
- failOffsetYEnd?: number;
140
- failOffsetXStart?: number;
141
- failOffsetXEnd?: number;
142
- }
143
-
144
- export interface PanGestureHandlerProps
145
- extends BaseGestureHandlerProps<PanGestureHandlerEventPayload>,
146
- CommonPanProperties {
147
- /**
148
- * Range along X axis (in points) where fingers travels without activation of
149
- * handler. Moving outside of this range implies activation of handler. Range
150
- * can be given as an array or a single number. If range is set as an array,
151
- * first value must be lower or equal to 0, a the second one higher or equal
152
- * to 0. If only one number `p` is given a range of `(-inf, p)` will be used
153
- * if `p` is higher or equal to 0 and `(-p, inf)` otherwise.
154
- */
155
- activeOffsetY?: number | number[];
156
-
157
- /**
158
- * Range along X axis (in points) where fingers travels without activation of
159
- * handler. Moving outside of this range implies activation of handler. Range
160
- * can be given as an array or a single number. If range is set as an array,
161
- * first value must be lower or equal to 0, a the second one higher or equal
162
- * to 0. If only one number `p` is given a range of `(-inf, p)` will be used
163
- * if `p` is higher or equal to 0 and `(-p, inf)` otherwise.
164
- */
165
- activeOffsetX?: number | number[];
166
-
167
- /**
168
- * When the finger moves outside this range (in points) along Y axis and
169
- * handler hasn't yet activated it will fail recognizing the gesture. Range
170
- * can be given as an array or a single number. If range is set as an array,
171
- * first value must be lower or equal to 0, a the second one higher or equal
172
- * to 0. If only one number `p` is given a range of `(-inf, p)` will be used
173
- * if `p` is higher or equal to 0 and `(-p, inf)` otherwise.
174
- */
175
- failOffsetY?: number | number[];
176
-
177
- /**
178
- * When the finger moves outside this range (in points) along X axis and
179
- * handler hasn't yet activated it will fail recognizing the gesture. Range
180
- * can be given as an array or a single number. If range is set as an array,
181
- * first value must be lower or equal to 0, a the second one higher or equal
182
- * to 0. If only one number `p` is given a range of `(-inf, p)` will be used
183
- * if `p` is higher or equal to 0 and `(-p, inf)` otherwise.
184
- */
185
- failOffsetX?: number | number[];
186
- }
187
-
188
- export const panHandlerName = 'PanGestureHandler';
189
-
190
- export type PanGestureHandler = typeof PanGestureHandler;
191
- // eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file
192
- export const PanGestureHandler = createHandler<
193
- PanGestureHandlerProps,
194
- PanGestureHandlerEventPayload
195
- >({
196
- name: panHandlerName,
197
- allowedProps: [
198
- ...baseGestureHandlerProps,
199
- ...panGestureHandlerProps,
200
- ] as const,
201
- config: {},
202
- transformProps: managePanProps,
203
- customNativeProps: panGestureHandlerCustomNativeProps,
204
- });
205
-
206
- function validatePanGestureHandlerProps(props: PanGestureHandlerProps) {
207
- if (
208
- Array.isArray(props.activeOffsetX) &&
209
- (props.activeOffsetX[0] > 0 || props.activeOffsetX[1] < 0)
210
- ) {
211
- throw new Error(
212
- `First element of activeOffsetX should be negative, a the second one should be positive`
213
- );
214
- }
215
-
216
- if (
217
- Array.isArray(props.activeOffsetY) &&
218
- (props.activeOffsetY[0] > 0 || props.activeOffsetY[1] < 0)
219
- ) {
220
- throw new Error(
221
- `First element of activeOffsetY should be negative, a the second one should be positive`
222
- );
223
- }
224
-
225
- if (
226
- Array.isArray(props.failOffsetX) &&
227
- (props.failOffsetX[0] > 0 || props.failOffsetX[1] < 0)
228
- ) {
229
- throw new Error(
230
- `First element of failOffsetX should be negative, a the second one should be positive`
231
- );
232
- }
233
-
234
- if (
235
- Array.isArray(props.failOffsetY) &&
236
- (props.failOffsetY[0] > 0 || props.failOffsetY[1] < 0)
237
- ) {
238
- throw new Error(
239
- `First element of failOffsetY should be negative, a the second one should be positive`
240
- );
241
- }
242
-
243
- if (props.minDist && (props.failOffsetX || props.failOffsetY)) {
244
- throw new Error(
245
- `It is not supported to use minDist with failOffsetX or failOffsetY, use activeOffsetX and activeOffsetY instead`
246
- );
247
- }
248
-
249
- if (props.minDist && (props.activeOffsetX || props.activeOffsetY)) {
250
- throw new Error(
251
- `It is not supported to use minDist with activeOffsetX or activeOffsetY`
252
- );
253
- }
254
- }
255
-
256
- function transformPanGestureHandlerProps(props: PanGestureHandlerProps) {
257
- type InternalPanGHKeys =
258
- | 'activeOffsetXStart'
259
- | 'activeOffsetXEnd'
260
- | 'failOffsetXStart'
261
- | 'failOffsetXEnd'
262
- | 'activeOffsetYStart'
263
- | 'activeOffsetYEnd'
264
- | 'failOffsetYStart'
265
- | 'failOffsetYEnd';
266
- type PanGestureHandlerInternalProps = PanGestureHandlerProps &
267
- Partial<Record<InternalPanGHKeys, number>>;
268
-
269
- const res: PanGestureHandlerInternalProps = { ...props };
270
-
271
- if (props.activeOffsetX !== undefined) {
272
- delete res.activeOffsetX;
273
- if (Array.isArray(props.activeOffsetX)) {
274
- res.activeOffsetXStart = props.activeOffsetX[0];
275
- res.activeOffsetXEnd = props.activeOffsetX[1];
276
- } else if (props.activeOffsetX < 0) {
277
- res.activeOffsetXStart = props.activeOffsetX;
278
- } else {
279
- res.activeOffsetXEnd = props.activeOffsetX;
280
- }
281
- }
282
-
283
- if (props.activeOffsetY !== undefined) {
284
- delete res.activeOffsetY;
285
- if (Array.isArray(props.activeOffsetY)) {
286
- res.activeOffsetYStart = props.activeOffsetY[0];
287
- res.activeOffsetYEnd = props.activeOffsetY[1];
288
- } else if (props.activeOffsetY < 0) {
289
- res.activeOffsetYStart = props.activeOffsetY;
290
- } else {
291
- res.activeOffsetYEnd = props.activeOffsetY;
292
- }
293
- }
294
-
295
- if (props.failOffsetX !== undefined) {
296
- delete res.failOffsetX;
297
- if (Array.isArray(props.failOffsetX)) {
298
- res.failOffsetXStart = props.failOffsetX[0];
299
- res.failOffsetXEnd = props.failOffsetX[1];
300
- } else if (props.failOffsetX < 0) {
301
- res.failOffsetXStart = props.failOffsetX;
302
- } else {
303
- res.failOffsetXEnd = props.failOffsetX;
304
- }
305
- }
306
-
307
- if (props.failOffsetY !== undefined) {
308
- delete res.failOffsetY;
309
- if (Array.isArray(props.failOffsetY)) {
310
- res.failOffsetYStart = props.failOffsetY[0];
311
- res.failOffsetYEnd = props.failOffsetY[1];
312
- } else if (props.failOffsetY < 0) {
313
- res.failOffsetYStart = props.failOffsetY;
314
- } else {
315
- res.failOffsetYEnd = props.failOffsetY;
316
- }
317
- }
318
-
319
- return res;
320
- }
321
-
322
- export function managePanProps(props: PanGestureHandlerProps) {
323
- if (__DEV__) {
324
- validatePanGestureHandlerProps(props);
325
- }
326
- return transformPanGestureHandlerProps(props);
327
- }
1
+ // RNGH: patching to replace `createHandler`
2
+
3
+ import createHandler from './createHandler'; // RNGH: using local create handler
4
+ import {
5
+ BaseGestureHandlerProps,
6
+ baseGestureHandlerProps,
7
+ } from 'react-native-gesture-handler/src/handlers/gestureHandlerCommon';
8
+
9
+ export const panGestureHandlerProps = [
10
+ 'activeOffsetY',
11
+ 'activeOffsetX',
12
+ 'failOffsetY',
13
+ 'failOffsetX',
14
+ 'minDist',
15
+ 'minVelocity',
16
+ 'minVelocityX',
17
+ 'minVelocityY',
18
+ 'minPointers',
19
+ 'maxPointers',
20
+ 'avgTouches',
21
+ 'enableTrackpadTwoFingerGesture',
22
+ 'activateAfterLongPress',
23
+ ] as const;
24
+
25
+ export const panGestureHandlerCustomNativeProps = [
26
+ 'activeOffsetYStart',
27
+ 'activeOffsetYEnd',
28
+ 'activeOffsetXStart',
29
+ 'activeOffsetXEnd',
30
+ 'failOffsetYStart',
31
+ 'failOffsetYEnd',
32
+ 'failOffsetXStart',
33
+ 'failOffsetXEnd',
34
+ ] as const;
35
+
36
+ export type PanGestureHandlerEventPayload = {
37
+ /**
38
+ * X coordinate of the current position of the pointer (finger or a leading
39
+ * pointer when there are multiple fingers placed) relative to the view
40
+ * attached to the handler. Expressed in point units.
41
+ */
42
+ x: number;
43
+
44
+ /**
45
+ * Y coordinate of the current position of the pointer (finger or a leading
46
+ * pointer when there are multiple fingers placed) relative to the view
47
+ * attached to the handler. Expressed in point units.
48
+ */
49
+ y: number;
50
+
51
+ /**
52
+ * X coordinate of the current position of the pointer (finger or a leading
53
+ * pointer when there are multiple fingers placed) relative to the window.
54
+ * The value is expressed in point units. It is recommended to use it instead
55
+ * of `x` in cases when the original view can be transformed as an effect of
56
+ * the gesture.
57
+ */
58
+ absoluteX: number;
59
+
60
+ /**
61
+ * Y coordinate of the current position of the pointer (finger or a leading
62
+ * pointer when there are multiple fingers placed) relative to the window.
63
+ * The value is expressed in point units. It is recommended to use it instead
64
+ * of `y` in cases when the original view can be transformed as an
65
+ * effect of the gesture.
66
+ */
67
+ absoluteY: number;
68
+
69
+ /**
70
+ * Translation of the pan gesture along X axis accumulated over the time of
71
+ * the gesture. The value is expressed in the point units.
72
+ */
73
+ translationX: number;
74
+
75
+ /**
76
+ * Translation of the pan gesture along Y axis accumulated over the time of
77
+ * the gesture. The value is expressed in the point units.
78
+ */
79
+ translationY: number;
80
+
81
+ /**
82
+ * Velocity of the pan gesture along the X axis in the current moment. The
83
+ * value is expressed in point units per second.
84
+ */
85
+ velocityX: number;
86
+
87
+ /**
88
+ * Velocity of the pan gesture along the Y axis in the current moment. The
89
+ * value is expressed in point units per second.
90
+ */
91
+ velocityY: number;
92
+ };
93
+
94
+ interface CommonPanProperties {
95
+ /**
96
+ * Minimum distance the finger (or multiple finger) need to travel before the
97
+ * handler activates. Expressed in points.
98
+ */
99
+ minDist?: number;
100
+
101
+ /**
102
+ * Android only.
103
+ */
104
+ avgTouches?: boolean;
105
+
106
+ /**
107
+ * Enables two-finger gestures on supported devices, for example iPads with
108
+ * trackpads. If not enabled the gesture will require click + drag, with
109
+ * enableTrackpadTwoFingerGesture swiping with two fingers will also trigger
110
+ * the gesture.
111
+ */
112
+ enableTrackpadTwoFingerGesture?: boolean;
113
+
114
+ /**
115
+ * A number of fingers that is required to be placed before handler can
116
+ * activate. Should be a higher or equal to 0 integer.
117
+ */
118
+ minPointers?: number;
119
+
120
+ /**
121
+ * When the given number of fingers is placed on the screen and handler hasn't
122
+ * yet activated it will fail recognizing the gesture. Should be a higher or
123
+ * equal to 0 integer.
124
+ */
125
+ maxPointers?: number;
126
+
127
+ minVelocity?: number;
128
+ minVelocityX?: number;
129
+ minVelocityY?: number;
130
+ activateAfterLongPress?: number;
131
+ }
132
+
133
+ export interface PanGestureConfig extends CommonPanProperties {
134
+ activeOffsetYStart?: number;
135
+ activeOffsetYEnd?: number;
136
+ activeOffsetXStart?: number;
137
+ activeOffsetXEnd?: number;
138
+ failOffsetYStart?: number;
139
+ failOffsetYEnd?: number;
140
+ failOffsetXStart?: number;
141
+ failOffsetXEnd?: number;
142
+ }
143
+
144
+ export interface PanGestureHandlerProps
145
+ extends BaseGestureHandlerProps<PanGestureHandlerEventPayload>,
146
+ CommonPanProperties {
147
+ /**
148
+ * Range along X axis (in points) where fingers travels without activation of
149
+ * handler. Moving outside of this range implies activation of handler. Range
150
+ * can be given as an array or a single number. If range is set as an array,
151
+ * first value must be lower or equal to 0, a the second one higher or equal
152
+ * to 0. If only one number `p` is given a range of `(-inf, p)` will be used
153
+ * if `p` is higher or equal to 0 and `(-p, inf)` otherwise.
154
+ */
155
+ activeOffsetY?: number | number[];
156
+
157
+ /**
158
+ * Range along X axis (in points) where fingers travels without activation of
159
+ * handler. Moving outside of this range implies activation of handler. Range
160
+ * can be given as an array or a single number. If range is set as an array,
161
+ * first value must be lower or equal to 0, a the second one higher or equal
162
+ * to 0. If only one number `p` is given a range of `(-inf, p)` will be used
163
+ * if `p` is higher or equal to 0 and `(-p, inf)` otherwise.
164
+ */
165
+ activeOffsetX?: number | number[];
166
+
167
+ /**
168
+ * When the finger moves outside this range (in points) along Y axis and
169
+ * handler hasn't yet activated it will fail recognizing the gesture. Range
170
+ * can be given as an array or a single number. If range is set as an array,
171
+ * first value must be lower or equal to 0, a the second one higher or equal
172
+ * to 0. If only one number `p` is given a range of `(-inf, p)` will be used
173
+ * if `p` is higher or equal to 0 and `(-p, inf)` otherwise.
174
+ */
175
+ failOffsetY?: number | number[];
176
+
177
+ /**
178
+ * When the finger moves outside this range (in points) along X axis and
179
+ * handler hasn't yet activated it will fail recognizing the gesture. Range
180
+ * can be given as an array or a single number. If range is set as an array,
181
+ * first value must be lower or equal to 0, a the second one higher or equal
182
+ * to 0. If only one number `p` is given a range of `(-inf, p)` will be used
183
+ * if `p` is higher or equal to 0 and `(-p, inf)` otherwise.
184
+ */
185
+ failOffsetX?: number | number[];
186
+ }
187
+
188
+ export const panHandlerName = 'PanGestureHandler';
189
+
190
+ export type PanGestureHandler = typeof PanGestureHandler;
191
+ // eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; see description on the top of gestureHandlerCommon.ts file
192
+ export const PanGestureHandler = createHandler<
193
+ PanGestureHandlerProps,
194
+ PanGestureHandlerEventPayload
195
+ >({
196
+ name: panHandlerName,
197
+ allowedProps: [
198
+ ...baseGestureHandlerProps,
199
+ ...panGestureHandlerProps,
200
+ ] as const,
201
+ config: {},
202
+ transformProps: managePanProps,
203
+ customNativeProps: panGestureHandlerCustomNativeProps,
204
+ });
205
+
206
+ function validatePanGestureHandlerProps(props: PanGestureHandlerProps) {
207
+ if (
208
+ Array.isArray(props.activeOffsetX) &&
209
+ (props.activeOffsetX[0] > 0 || props.activeOffsetX[1] < 0)
210
+ ) {
211
+ throw new Error(
212
+ `First element of activeOffsetX should be negative, a the second one should be positive`
213
+ );
214
+ }
215
+
216
+ if (
217
+ Array.isArray(props.activeOffsetY) &&
218
+ (props.activeOffsetY[0] > 0 || props.activeOffsetY[1] < 0)
219
+ ) {
220
+ throw new Error(
221
+ `First element of activeOffsetY should be negative, a the second one should be positive`
222
+ );
223
+ }
224
+
225
+ if (
226
+ Array.isArray(props.failOffsetX) &&
227
+ (props.failOffsetX[0] > 0 || props.failOffsetX[1] < 0)
228
+ ) {
229
+ throw new Error(
230
+ `First element of failOffsetX should be negative, a the second one should be positive`
231
+ );
232
+ }
233
+
234
+ if (
235
+ Array.isArray(props.failOffsetY) &&
236
+ (props.failOffsetY[0] > 0 || props.failOffsetY[1] < 0)
237
+ ) {
238
+ throw new Error(
239
+ `First element of failOffsetY should be negative, a the second one should be positive`
240
+ );
241
+ }
242
+
243
+ if (props.minDist && (props.failOffsetX || props.failOffsetY)) {
244
+ throw new Error(
245
+ `It is not supported to use minDist with failOffsetX or failOffsetY, use activeOffsetX and activeOffsetY instead`
246
+ );
247
+ }
248
+
249
+ if (props.minDist && (props.activeOffsetX || props.activeOffsetY)) {
250
+ throw new Error(
251
+ `It is not supported to use minDist with activeOffsetX or activeOffsetY`
252
+ );
253
+ }
254
+ }
255
+
256
+ function transformPanGestureHandlerProps(props: PanGestureHandlerProps) {
257
+ type InternalPanGHKeys =
258
+ | 'activeOffsetXStart'
259
+ | 'activeOffsetXEnd'
260
+ | 'failOffsetXStart'
261
+ | 'failOffsetXEnd'
262
+ | 'activeOffsetYStart'
263
+ | 'activeOffsetYEnd'
264
+ | 'failOffsetYStart'
265
+ | 'failOffsetYEnd';
266
+ type PanGestureHandlerInternalProps = PanGestureHandlerProps &
267
+ Partial<Record<InternalPanGHKeys, number>>;
268
+
269
+ const res: PanGestureHandlerInternalProps = { ...props };
270
+
271
+ if (props.activeOffsetX !== undefined) {
272
+ delete res.activeOffsetX;
273
+ if (Array.isArray(props.activeOffsetX)) {
274
+ res.activeOffsetXStart = props.activeOffsetX[0];
275
+ res.activeOffsetXEnd = props.activeOffsetX[1];
276
+ } else if (props.activeOffsetX < 0) {
277
+ res.activeOffsetXStart = props.activeOffsetX;
278
+ } else {
279
+ res.activeOffsetXEnd = props.activeOffsetX;
280
+ }
281
+ }
282
+
283
+ if (props.activeOffsetY !== undefined) {
284
+ delete res.activeOffsetY;
285
+ if (Array.isArray(props.activeOffsetY)) {
286
+ res.activeOffsetYStart = props.activeOffsetY[0];
287
+ res.activeOffsetYEnd = props.activeOffsetY[1];
288
+ } else if (props.activeOffsetY < 0) {
289
+ res.activeOffsetYStart = props.activeOffsetY;
290
+ } else {
291
+ res.activeOffsetYEnd = props.activeOffsetY;
292
+ }
293
+ }
294
+
295
+ if (props.failOffsetX !== undefined) {
296
+ delete res.failOffsetX;
297
+ if (Array.isArray(props.failOffsetX)) {
298
+ res.failOffsetXStart = props.failOffsetX[0];
299
+ res.failOffsetXEnd = props.failOffsetX[1];
300
+ } else if (props.failOffsetX < 0) {
301
+ res.failOffsetXStart = props.failOffsetX;
302
+ } else {
303
+ res.failOffsetXEnd = props.failOffsetX;
304
+ }
305
+ }
306
+
307
+ if (props.failOffsetY !== undefined) {
308
+ delete res.failOffsetY;
309
+ if (Array.isArray(props.failOffsetY)) {
310
+ res.failOffsetYStart = props.failOffsetY[0];
311
+ res.failOffsetYEnd = props.failOffsetY[1];
312
+ } else if (props.failOffsetY < 0) {
313
+ res.failOffsetYStart = props.failOffsetY;
314
+ } else {
315
+ res.failOffsetYEnd = props.failOffsetY;
316
+ }
317
+ }
318
+
319
+ return res;
320
+ }
321
+
322
+ export function managePanProps(props: PanGestureHandlerProps) {
323
+ if (__DEV__) {
324
+ validatePanGestureHandlerProps(props);
325
+ }
326
+ return transformPanGestureHandlerProps(props);
327
+ }