react-native-gesture-handler 2.4.0 → 2.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (120) hide show
  1. package/README.md +3 -2
  2. package/android/build.gradle +28 -4
  3. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.kt +9 -5
  4. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.kt +6 -1
  5. package/android/lib/src/main/java/com/swmansion/gesturehandler/NativeViewGestureHandler.kt +103 -22
  6. package/android/lib/src/main/java/com/swmansion/gesturehandler/PanGestureHandler.kt +29 -2
  7. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +74 -84
  8. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +4 -0
  9. package/android/src/main/jni/Android.mk +1 -2
  10. package/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerDelegate.java +12 -9
  11. package/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerInterface.java +1 -0
  12. package/ios/Handlers/RNFlingHandler.m +43 -1
  13. package/ios/Handlers/{RNNativeViewHandler.m → RNNativeViewHandler.mm} +13 -1
  14. package/ios/Handlers/RNPanHandler.m +27 -0
  15. package/ios/RNGestureHandler.h +1 -0
  16. package/ios/RNGestureHandler.m +22 -4
  17. package/ios/RNGestureHandlerManager.mm +10 -2
  18. package/ios/RNGestureHandlerModule.mm +4 -1
  19. package/ios/RNManualActivationRecognizer.m +10 -3
  20. package/ios/RNRootViewGestureRecognizer.m +12 -1
  21. package/lib/commonjs/RNGestureHandlerModule.macos.js +81 -0
  22. package/lib/commonjs/RNGestureHandlerModule.macos.js.map +1 -0
  23. package/lib/commonjs/components/DrawerLayout.js +38 -11
  24. package/lib/commonjs/components/DrawerLayout.js.map +1 -1
  25. package/lib/commonjs/components/GestureButtons.js.map +1 -1
  26. package/lib/commonjs/components/touchables/GenericTouchable.js +4 -1
  27. package/lib/commonjs/components/touchables/GenericTouchable.js.map +1 -1
  28. package/lib/commonjs/fabric/RNGestureHandlerButtonNativeComponent.js.map +1 -1
  29. package/lib/commonjs/handlers/ForceTouchGestureHandler.js +2 -1
  30. package/lib/commonjs/handlers/ForceTouchGestureHandler.js.map +1 -1
  31. package/lib/commonjs/handlers/PanGestureHandler.js +1 -1
  32. package/lib/commonjs/handlers/PanGestureHandler.js.map +1 -1
  33. package/lib/commonjs/handlers/PressabilityDebugView.js +14 -0
  34. package/lib/commonjs/handlers/PressabilityDebugView.js.map +1 -0
  35. package/lib/commonjs/handlers/PressabilityDebugView.web.js +12 -0
  36. package/lib/commonjs/handlers/PressabilityDebugView.web.js.map +1 -0
  37. package/lib/commonjs/handlers/createHandler.js +25 -11
  38. package/lib/commonjs/handlers/createHandler.js.map +1 -1
  39. package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
  40. package/lib/commonjs/handlers/gestures/GestureDetector.js +83 -63
  41. package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
  42. package/lib/commonjs/handlers/gestures/gesture.js +13 -2
  43. package/lib/commonjs/handlers/gestures/gesture.js.map +1 -1
  44. package/lib/commonjs/handlers/gestures/gestureStateManager.js +13 -9
  45. package/lib/commonjs/handlers/gestures/gestureStateManager.js.map +1 -1
  46. package/lib/commonjs/handlers/gestures/panGesture.js +5 -0
  47. package/lib/commonjs/handlers/gestures/panGesture.js.map +1 -1
  48. package/lib/commonjs/mocks.js +2 -0
  49. package/lib/commonjs/mocks.js.map +1 -1
  50. package/lib/commonjs/utils.js +6 -3
  51. package/lib/commonjs/utils.js.map +1 -1
  52. package/lib/commonjs/web/utils.js.map +1 -1
  53. package/lib/module/RNGestureHandlerModule.macos.js +57 -0
  54. package/lib/module/RNGestureHandlerModule.macos.js.map +1 -0
  55. package/lib/module/components/DrawerLayout.js +38 -11
  56. package/lib/module/components/DrawerLayout.js.map +1 -1
  57. package/lib/module/components/GestureButtons.js.map +1 -1
  58. package/lib/module/components/touchables/GenericTouchable.js +4 -1
  59. package/lib/module/components/touchables/GenericTouchable.js.map +1 -1
  60. package/lib/module/fabric/RNGestureHandlerButtonNativeComponent.js.map +1 -1
  61. package/lib/module/handlers/ForceTouchGestureHandler.js +1 -1
  62. package/lib/module/handlers/ForceTouchGestureHandler.js.map +1 -1
  63. package/lib/module/handlers/PanGestureHandler.js +1 -1
  64. package/lib/module/handlers/PanGestureHandler.js.map +1 -1
  65. package/lib/module/handlers/PressabilityDebugView.js +3 -0
  66. package/lib/module/handlers/PressabilityDebugView.js.map +1 -0
  67. package/lib/module/handlers/PressabilityDebugView.web.js +5 -0
  68. package/lib/module/handlers/PressabilityDebugView.web.js.map +1 -0
  69. package/lib/module/handlers/createHandler.js +26 -12
  70. package/lib/module/handlers/createHandler.js.map +1 -1
  71. package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
  72. package/lib/module/handlers/gestures/GestureDetector.js +83 -63
  73. package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
  74. package/lib/module/handlers/gestures/gesture.js +13 -2
  75. package/lib/module/handlers/gestures/gesture.js.map +1 -1
  76. package/lib/module/handlers/gestures/gestureStateManager.js +13 -9
  77. package/lib/module/handlers/gestures/gestureStateManager.js.map +1 -1
  78. package/lib/module/handlers/gestures/panGesture.js +5 -0
  79. package/lib/module/handlers/gestures/panGesture.js.map +1 -1
  80. package/lib/module/mocks.js +2 -0
  81. package/lib/module/mocks.js.map +1 -1
  82. package/lib/module/utils.js +2 -1
  83. package/lib/module/utils.js.map +1 -1
  84. package/lib/module/web/utils.js.map +1 -1
  85. package/lib/typescript/RNGestureHandlerModule.macos.d.ts +34 -0
  86. package/lib/typescript/RNGestureHandlerModule.web.d.ts +1 -1
  87. package/lib/typescript/components/DrawerLayout.d.ts +3 -0
  88. package/lib/typescript/components/GestureButtons.d.ts +6 -0
  89. package/lib/typescript/fabric/RNGestureHandlerButtonNativeComponent.d.ts +1 -0
  90. package/lib/typescript/handlers/ForceTouchGestureHandler.d.ts +2 -2
  91. package/lib/typescript/handlers/PanGestureHandler.d.ts +2 -1
  92. package/lib/typescript/handlers/PressabilityDebugView.d.ts +1 -0
  93. package/lib/typescript/handlers/PressabilityDebugView.web.d.ts +1 -0
  94. package/lib/typescript/handlers/gestureHandlerCommon.d.ts +1 -0
  95. package/lib/typescript/handlers/gestures/GestureDetector.d.ts +2 -1
  96. package/lib/typescript/handlers/gestures/gesture.d.ts +3 -0
  97. package/lib/typescript/handlers/gestures/panGesture.d.ts +1 -0
  98. package/lib/typescript/mocks.d.ts +1 -0
  99. package/lib/typescript/web/NodeManager.d.ts +2 -2
  100. package/package.json +1 -1
  101. package/src/RNGestureHandlerModule.macos.ts +62 -0
  102. package/src/components/DrawerLayout.tsx +34 -10
  103. package/src/components/GestureButtons.tsx +7 -0
  104. package/src/components/touchables/GenericTouchable.tsx +1 -0
  105. package/src/fabric/RNGestureHandlerButtonNativeComponent.ts +1 -0
  106. package/src/handlers/ForceTouchGestureHandler.ts +3 -2
  107. package/src/handlers/PanGestureHandler.ts +2 -0
  108. package/src/handlers/PressabilityDebugView.tsx +2 -0
  109. package/src/handlers/PressabilityDebugView.web.tsx +4 -0
  110. package/src/handlers/{createHandler.ts → createHandler.tsx} +32 -17
  111. package/src/handlers/gestureHandlerCommon.ts +2 -0
  112. package/src/handlers/gestures/GestureDetector.tsx +107 -81
  113. package/src/handlers/gestures/gesture.ts +16 -0
  114. package/src/handlers/gestures/gestureStateManager.ts +13 -8
  115. package/src/handlers/gestures/panGesture.ts +5 -0
  116. package/src/mocks.ts +2 -0
  117. package/src/utils.ts +3 -1
  118. package/src/web/utils.ts +1 -1
  119. package/ios/RNGestureHandler.xcodeproj/project.xcworkspace/xcuserdata/jakubpiasecki.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  120. package/ios/RNGestureHandler.xcodeproj/xcuserdata/jakubpiasecki.xcuserdatad/xcschemes/xcschememanagement.plist +0 -19
@@ -126,6 +126,8 @@ export type BaseGestureHandlerProps<
126
126
  onHandlerStateChange?: (
127
127
  event: HandlerStateChangeEvent<ExtraEventPayloadT>
128
128
  ) => void;
129
+ // implicit `children` prop has been removed in @types/react^18.0.0
130
+ children?: React.ReactNode;
129
131
  };
130
132
 
131
133
  function isConfigParam(param: unknown, name: string) {
@@ -268,11 +268,34 @@ function updateHandlers(
268
268
  }
269
269
 
270
270
  if (preparedGesture.animatedHandlers) {
271
- preparedGesture.animatedHandlers.value = (preparedGesture.config
271
+ const previousHandlersValue =
272
+ preparedGesture.animatedHandlers.value ?? [];
273
+ const newHandlersValue = (preparedGesture.config
272
274
  .filter((g) => g.shouldUseReanimated) // ignore gestures that shouldn't run on UI
273
275
  .map((g) => g.handlers) as unknown) as HandlerCallbacks<
274
276
  Record<string, unknown>
275
277
  >[];
278
+
279
+ // if amount of gesture configs changes, we need to update the callbacks in shared value
280
+ let shouldUpdateSharedValue =
281
+ previousHandlersValue.length !== newHandlersValue.length;
282
+
283
+ if (!shouldUpdateSharedValue) {
284
+ // if the amount is the same, we need to check if any of the configs inside has changed
285
+ for (let i = 0; i < newHandlersValue.length; i++) {
286
+ if (
287
+ // we can use the `gestureId` prop as it's unique for every config instance
288
+ newHandlersValue[i].gestureId !== previousHandlersValue[i].gestureId
289
+ ) {
290
+ shouldUpdateSharedValue = true;
291
+ break;
292
+ }
293
+ }
294
+ }
295
+
296
+ if (shouldUpdateSharedValue) {
297
+ preparedGesture.animatedHandlers.value = newHandlersValue;
298
+ }
276
299
  }
277
300
 
278
301
  scheduleFlushOperations();
@@ -299,90 +322,90 @@ function needsToReattach(
299
322
  return false;
300
323
  }
301
324
 
302
- function useAnimatedGesture(
303
- preparedGesture: GestureConfigReference,
304
- needsRebuild: boolean
305
- ) {
306
- if (!Reanimated) {
307
- return;
308
- }
325
+ function isStateChangeEvent(
326
+ event: GestureUpdateEvent | GestureStateChangeEvent | GestureTouchEvent
327
+ ): event is GestureStateChangeEvent {
328
+ 'worklet';
329
+ // @ts-ignore Yes, the oldState prop is missing on GestureTouchEvent, that's the point
330
+ return event.oldState != null;
331
+ }
309
332
 
310
- function isStateChangeEvent(
311
- event: GestureUpdateEvent | GestureStateChangeEvent | GestureTouchEvent
312
- ): event is GestureStateChangeEvent {
313
- 'worklet';
314
- // @ts-ignore Yes, the oldState prop is missing on GestureTouchEvent, that's the point
315
- return event.oldState != null;
316
- }
333
+ function isTouchEvent(
334
+ event: GestureUpdateEvent | GestureStateChangeEvent | GestureTouchEvent
335
+ ): event is GestureTouchEvent {
336
+ 'worklet';
337
+ return event.eventType != null;
338
+ }
317
339
 
318
- function isTouchEvent(
319
- event: GestureUpdateEvent | GestureStateChangeEvent | GestureTouchEvent
320
- ): event is GestureTouchEvent {
321
- 'worklet';
322
- return event.eventType != null;
340
+ function getHandler(
341
+ type: CALLBACK_TYPE,
342
+ gesture: HandlerCallbacks<Record<string, unknown>>
343
+ ) {
344
+ 'worklet';
345
+ switch (type) {
346
+ case CALLBACK_TYPE.BEGAN:
347
+ return gesture.onBegin;
348
+ case CALLBACK_TYPE.START:
349
+ return gesture.onStart;
350
+ case CALLBACK_TYPE.UPDATE:
351
+ return gesture.onUpdate;
352
+ case CALLBACK_TYPE.CHANGE:
353
+ return gesture.onChange;
354
+ case CALLBACK_TYPE.END:
355
+ return gesture.onEnd;
356
+ case CALLBACK_TYPE.FINALIZE:
357
+ return gesture.onFinalize;
358
+ case CALLBACK_TYPE.TOUCHES_DOWN:
359
+ return gesture.onTouchesDown;
360
+ case CALLBACK_TYPE.TOUCHES_MOVE:
361
+ return gesture.onTouchesMove;
362
+ case CALLBACK_TYPE.TOUCHES_UP:
363
+ return gesture.onTouchesUp;
364
+ case CALLBACK_TYPE.TOUCHES_CANCELLED:
365
+ return gesture.onTouchesCancelled;
323
366
  }
367
+ }
324
368
 
325
- function getHandler(
326
- type: CALLBACK_TYPE,
327
- gesture: HandlerCallbacks<Record<string, unknown>>
328
- ) {
329
- 'worklet';
330
- switch (type) {
331
- case CALLBACK_TYPE.BEGAN:
332
- return gesture.onBegin;
333
- case CALLBACK_TYPE.START:
334
- return gesture.onStart;
335
- case CALLBACK_TYPE.UPDATE:
336
- return gesture.onUpdate;
337
- case CALLBACK_TYPE.CHANGE:
338
- return gesture.onChange;
339
- case CALLBACK_TYPE.END:
340
- return gesture.onEnd;
341
- case CALLBACK_TYPE.FINALIZE:
342
- return gesture.onFinalize;
343
- case CALLBACK_TYPE.TOUCHES_DOWN:
344
- return gesture.onTouchesDown;
345
- case CALLBACK_TYPE.TOUCHES_MOVE:
346
- return gesture.onTouchesMove;
347
- case CALLBACK_TYPE.TOUCHES_UP:
348
- return gesture.onTouchesUp;
349
- case CALLBACK_TYPE.TOUCHES_CANCELLED:
350
- return gesture.onTouchesCancelled;
351
- }
369
+ function touchEventTypeToCallbackType(
370
+ eventType: TouchEventType
371
+ ): CALLBACK_TYPE {
372
+ 'worklet';
373
+ switch (eventType) {
374
+ case TouchEventType.TOUCHES_DOWN:
375
+ return CALLBACK_TYPE.TOUCHES_DOWN;
376
+ case TouchEventType.TOUCHES_MOVE:
377
+ return CALLBACK_TYPE.TOUCHES_MOVE;
378
+ case TouchEventType.TOUCHES_UP:
379
+ return CALLBACK_TYPE.TOUCHES_UP;
380
+ case TouchEventType.TOUCHES_CANCELLED:
381
+ return CALLBACK_TYPE.TOUCHES_CANCELLED;
352
382
  }
383
+ return CALLBACK_TYPE.UNDEFINED;
384
+ }
353
385
 
354
- function touchEventTypeToCallbackType(
355
- eventType: TouchEventType
356
- ): CALLBACK_TYPE {
357
- 'worklet';
358
- switch (eventType) {
359
- case TouchEventType.TOUCHES_DOWN:
360
- return CALLBACK_TYPE.TOUCHES_DOWN;
361
- case TouchEventType.TOUCHES_MOVE:
362
- return CALLBACK_TYPE.TOUCHES_MOVE;
363
- case TouchEventType.TOUCHES_UP:
364
- return CALLBACK_TYPE.TOUCHES_UP;
365
- case TouchEventType.TOUCHES_CANCELLED:
366
- return CALLBACK_TYPE.TOUCHES_CANCELLED;
367
- }
368
- return CALLBACK_TYPE.UNDEFINED;
386
+ function runWorklet(
387
+ type: CALLBACK_TYPE,
388
+ gesture: HandlerCallbacks<Record<string, unknown>>,
389
+ event: GestureStateChangeEvent | GestureUpdateEvent | GestureTouchEvent,
390
+ ...args: any[]
391
+ ) {
392
+ 'worklet';
393
+ const handler = getHandler(type, gesture);
394
+ if (gesture.isWorklet[type]) {
395
+ // @ts-ignore Logic below makes sure the correct event is send to the
396
+ // correct handler.
397
+ handler?.(event, ...args);
398
+ } else if (handler) {
399
+ console.warn(tagMessage('Animated gesture callback must be a worklet'));
369
400
  }
401
+ }
370
402
 
371
- function runWorklet(
372
- type: CALLBACK_TYPE,
373
- gesture: HandlerCallbacks<Record<string, unknown>>,
374
- event: GestureStateChangeEvent | GestureUpdateEvent | GestureTouchEvent,
375
- ...args: any[]
376
- ) {
377
- 'worklet';
378
- const handler = getHandler(type, gesture);
379
- if (gesture.isWorklet[type]) {
380
- // @ts-ignore Logic below makes sure the correct event is send to the
381
- // correct handler.
382
- handler?.(event, ...args);
383
- } else if (handler) {
384
- console.warn(tagMessage('Animated gesture callback must be a worklet'));
385
- }
403
+ function useAnimatedGesture(
404
+ preparedGesture: GestureConfigReference,
405
+ needsRebuild: boolean
406
+ ) {
407
+ if (!Reanimated) {
408
+ return;
386
409
  }
387
410
 
388
411
  // Hooks are called conditionally, but the condition is whether the
@@ -490,10 +513,9 @@ function useAnimatedGesture(
490
513
 
491
514
  interface GestureDetectorProps {
492
515
  gesture?: ComposedGesture | GestureType;
516
+ children?: React.ReactNode;
493
517
  }
494
- export const GestureDetector: React.FunctionComponent<GestureDetectorProps> = (
495
- props
496
- ) => {
518
+ export const GestureDetector = (props: GestureDetectorProps) => {
497
519
  const gestureConfig = props.gesture;
498
520
  const gesture = gestureConfig?.toGestureArray?.() ?? [];
499
521
  const useReanimatedHook = gesture.some((g) => g.shouldUseReanimated);
@@ -605,7 +627,11 @@ export const GestureDetector: React.FunctionComponent<GestureDetectorProps> = (
605
627
  }
606
628
  };
607
629
 
608
- class Wrap extends React.Component<{ onGestureHandlerEvent?: unknown }> {
630
+ class Wrap extends React.Component<{
631
+ onGestureHandlerEvent?: unknown;
632
+ // implicit `children` prop has been removed in @types/react^18.0.0
633
+ children?: React.ReactNode;
634
+ }> {
609
635
  render() {
610
636
  // I don't think that fighting with types over such a simple function is worth it
611
637
  // The only thing it does is add 'collapsable: false' to the child component
@@ -53,6 +53,7 @@ type TouchEventHandlerType = (
53
53
  ) => void;
54
54
 
55
55
  export type HandlerCallbacks<EventPayloadT extends Record<string, unknown>> = {
56
+ gestureId: number;
56
57
  handlerTag: number;
57
58
  onBegin?: (event: GestureStateChangeEvent<EventPayloadT>) => void;
58
59
  onStart?: (event: GestureStateChangeEvent<EventPayloadT>) => void;
@@ -115,17 +116,32 @@ export abstract class Gesture {
115
116
  abstract prepare(): void;
116
117
  }
117
118
 
119
+ let nextGestureId = 0;
118
120
  export abstract class BaseGesture<
119
121
  EventPayloadT extends Record<string, unknown>
120
122
  > extends Gesture {
123
+ private gestureId = -1;
121
124
  public handlerTag = -1;
122
125
  public handlerName = '';
123
126
  public config: BaseGestureConfig = {};
124
127
  public handlers: HandlerCallbacks<EventPayloadT> = {
128
+ gestureId: -1,
125
129
  handlerTag: -1,
126
130
  isWorklet: [],
127
131
  };
128
132
 
133
+ constructor() {
134
+ super();
135
+
136
+ // Used to check whether the gesture config has been updated when wrapping it
137
+ // with `useMemo`. Since every config will have a unique id, when the dependencies
138
+ // don't change, the config won't be recreated and the id will stay the same.
139
+ // If the id is different, it means that the config has changed and the gesture
140
+ // needs to be updated.
141
+ this.gestureId = nextGestureId++;
142
+ this.handlers.gestureId = this.gestureId;
143
+ }
144
+
129
145
  private addDependency(
130
146
  key: 'simultaneousWith' | 'requireToFail',
131
147
  gesture: Exclude<GestureRef, number>
@@ -13,14 +13,19 @@ const warningMessage = tagMessage(
13
13
  'react-native-reanimated is required in order to use synchronous state management'
14
14
  );
15
15
 
16
+ // check if reanimated module is available, but look for useSharedValue as conditional
17
+ // require of reanimated can sometimes return content of `utils.ts` file (?)
18
+ const REANIMATED_AVAILABLE = Reanimated?.useSharedValue !== undefined;
19
+ const setGestureState = Reanimated?.setGestureState;
20
+
16
21
  export const GestureStateManager = {
17
22
  create(handlerTag: number): GestureStateManagerType {
18
23
  'worklet';
19
24
  return {
20
25
  begin: () => {
21
26
  'worklet';
22
- if (Reanimated) {
23
- Reanimated.setGestureState(handlerTag, State.BEGAN);
27
+ if (REANIMATED_AVAILABLE) {
28
+ setGestureState(handlerTag, State.BEGAN);
24
29
  } else {
25
30
  console.warn(warningMessage);
26
31
  }
@@ -28,8 +33,8 @@ export const GestureStateManager = {
28
33
 
29
34
  activate: () => {
30
35
  'worklet';
31
- if (Reanimated) {
32
- Reanimated.setGestureState(handlerTag, State.ACTIVE);
36
+ if (REANIMATED_AVAILABLE) {
37
+ setGestureState(handlerTag, State.ACTIVE);
33
38
  } else {
34
39
  console.warn(warningMessage);
35
40
  }
@@ -37,8 +42,8 @@ export const GestureStateManager = {
37
42
 
38
43
  fail: () => {
39
44
  'worklet';
40
- if (Reanimated) {
41
- Reanimated.setGestureState(handlerTag, State.FAILED);
45
+ if (REANIMATED_AVAILABLE) {
46
+ setGestureState(handlerTag, State.FAILED);
42
47
  } else {
43
48
  console.warn(warningMessage);
44
49
  }
@@ -46,8 +51,8 @@ export const GestureStateManager = {
46
51
 
47
52
  end: () => {
48
53
  'worklet';
49
- if (Reanimated) {
50
- Reanimated.setGestureState(handlerTag, State.END);
54
+ if (REANIMATED_AVAILABLE) {
55
+ setGestureState(handlerTag, State.END);
51
56
  } else {
52
57
  console.warn(warningMessage);
53
58
  }
@@ -131,6 +131,11 @@ export class PanGesture extends ContinousBaseGesture<
131
131
  return this;
132
132
  }
133
133
 
134
+ activateAfterLongPress(duration: number) {
135
+ this.config.activateAfterLongPress = duration;
136
+ return this;
137
+ }
138
+
134
139
  onChange(
135
140
  callback: (
136
141
  event: GestureUpdateEvent<
package/src/mocks.ts CHANGED
@@ -21,6 +21,7 @@ const attachGestureHandler = NOOP;
21
21
  const createGestureHandler = NOOP;
22
22
  const dropGestureHandler = NOOP;
23
23
  const updateGestureHandler = NOOP;
24
+ const flushOperations = NOOP;
24
25
  const NativeViewGestureHandler = View;
25
26
  const TapGestureHandler = View;
26
27
  const ForceTouchGestureHandler = View;
@@ -59,6 +60,7 @@ export default {
59
60
  createGestureHandler,
60
61
  dropGestureHandler,
61
62
  updateGestureHandler,
63
+ flushOperations,
62
64
  // probably can be removed
63
65
  Directions,
64
66
  State,
package/src/utils.ts CHANGED
@@ -1,4 +1,6 @@
1
- import { version as rnVersion } from 'react-native/package.json';
1
+ import pack from 'react-native/package.json';
2
+
3
+ const rnVersion = pack.version;
2
4
 
3
5
  export function toArray<T>(object: T | T[]): T[] {
4
6
  if (!Array.isArray(object)) {
package/src/web/utils.ts CHANGED
@@ -20,5 +20,5 @@ export function fireAfterInterval(
20
20
  method();
21
21
  return null;
22
22
  }
23
- return setTimeout(() => method(), interval);
23
+ return setTimeout(() => method(), interval as number);
24
24
  }
@@ -1,19 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
- <plist version="1.0">
4
- <dict>
5
- <key>SchemeUserState</key>
6
- <dict>
7
- <key>RNGestureHandler-tvOS.xcscheme_^#shared#^_</key>
8
- <dict>
9
- <key>orderHint</key>
10
- <integer>1</integer>
11
- </dict>
12
- <key>RNGestureHandler.xcscheme_^#shared#^_</key>
13
- <dict>
14
- <key>orderHint</key>
15
- <integer>0</integer>
16
- </dict>
17
- </dict>
18
- </dict>
19
- </plist>