react-native-gesture-handler 2.0.0 → 2.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/android/build.gradle +26 -0
  2. package/android/{src → common/src}/main/java/com/swmansion/common/GestureHandlerStateManager.kt +0 -0
  3. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.kt +4 -1
  4. package/ios/Handlers/RNFlingHandler.m +1 -1
  5. package/ios/Handlers/RNLongPressHandler.m +2 -2
  6. package/ios/Handlers/RNPanHandler.m +1 -1
  7. package/ios/Handlers/RNTapHandler.m +2 -2
  8. package/lib/commonjs/handlers/gestures/GestureDetector.js +28 -3
  9. package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
  10. package/lib/commonjs/handlers/gestures/eventReceiver.js +34 -11
  11. package/lib/commonjs/handlers/gestures/eventReceiver.js.map +1 -1
  12. package/lib/commonjs/handlers/gestures/forceTouchGesture.js +26 -0
  13. package/lib/commonjs/handlers/gestures/forceTouchGesture.js.map +1 -1
  14. package/lib/commonjs/handlers/gestures/gesture.js +22 -6
  15. package/lib/commonjs/handlers/gestures/gesture.js.map +1 -1
  16. package/lib/commonjs/handlers/gestures/manualGesture.js +12 -0
  17. package/lib/commonjs/handlers/gestures/manualGesture.js.map +1 -1
  18. package/lib/commonjs/handlers/gestures/panGesture.js +28 -0
  19. package/lib/commonjs/handlers/gestures/panGesture.js.map +1 -1
  20. package/lib/commonjs/handlers/gestures/pinchGesture.js +26 -0
  21. package/lib/commonjs/handlers/gestures/pinchGesture.js.map +1 -1
  22. package/lib/commonjs/handlers/gestures/rotationGesture.js +26 -0
  23. package/lib/commonjs/handlers/gestures/rotationGesture.js.map +1 -1
  24. package/lib/commonjs/index.js +0 -106
  25. package/lib/commonjs/index.js.map +1 -1
  26. package/lib/module/handlers/gestures/GestureDetector.js +27 -3
  27. package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
  28. package/lib/module/handlers/gestures/eventReceiver.js +34 -11
  29. package/lib/module/handlers/gestures/eventReceiver.js.map +1 -1
  30. package/lib/module/handlers/gestures/forceTouchGesture.js +27 -0
  31. package/lib/module/handlers/gestures/forceTouchGesture.js.map +1 -1
  32. package/lib/module/handlers/gestures/gesture.js +22 -6
  33. package/lib/module/handlers/gestures/gesture.js.map +1 -1
  34. package/lib/module/handlers/gestures/manualGesture.js +13 -0
  35. package/lib/module/handlers/gestures/manualGesture.js.map +1 -1
  36. package/lib/module/handlers/gestures/panGesture.js +29 -0
  37. package/lib/module/handlers/gestures/panGesture.js.map +1 -1
  38. package/lib/module/handlers/gestures/pinchGesture.js +27 -0
  39. package/lib/module/handlers/gestures/pinchGesture.js.map +1 -1
  40. package/lib/module/handlers/gestures/rotationGesture.js +27 -0
  41. package/lib/module/handlers/gestures/rotationGesture.js.map +1 -1
  42. package/lib/module/index.js +0 -11
  43. package/lib/module/index.js.map +1 -1
  44. package/lib/typescript/handlers/ForceTouchGestureHandler.d.ts +1 -1
  45. package/lib/typescript/handlers/gestures/forceTouchGesture.d.ts +7 -1
  46. package/lib/typescript/handlers/gestures/gesture.d.ts +14 -7
  47. package/lib/typescript/handlers/gestures/manualGesture.d.ts +3 -1
  48. package/lib/typescript/handlers/gestures/panGesture.d.ts +8 -1
  49. package/lib/typescript/handlers/gestures/pinchGesture.d.ts +7 -1
  50. package/lib/typescript/handlers/gestures/rotationGesture.d.ts +7 -1
  51. package/lib/typescript/handlers/handlersRegistry.d.ts +1 -1
  52. package/lib/typescript/index.d.ts +11 -11
  53. package/lib/typescript/web/constants.d.ts +0 -1
  54. package/package.json +2 -1
  55. package/src/handlers/gestures/GestureDetector.tsx +31 -2
  56. package/src/handlers/gestures/eventReceiver.ts +24 -2
  57. package/src/handlers/gestures/forceTouchGesture.ts +43 -1
  58. package/src/handlers/gestures/gesture.ts +42 -12
  59. package/src/handlers/gestures/manualGesture.ts +21 -1
  60. package/src/handlers/gestures/panGesture.ts +43 -1
  61. package/src/handlers/gestures/pinchGesture.ts +40 -1
  62. package/src/handlers/gestures/rotationGesture.ts +40 -1
  63. package/src/index.ts +11 -11
  64. package/ios/RNGestureHandler.xcodeproj/xcuserdata/mdk.xcuserdatad/xcschemes/RNGestureHandler.xcscheme +0 -80
  65. package/ios/RNGestureHandler.xcodeproj/xcuserdata/mdk.xcuserdatad/xcschemes/xcschememanagement.plist +0 -27
@@ -1 +1 @@
1
- {"version":3,"sources":["pinchGesture.ts"],"names":["ContinousBaseGesture","PinchGesture","constructor","handlerName"],"mappings":"AAAA,SAASA,oBAAT,QAAqC,WAArC;AAGA,OAAO,MAAMC,YAAN,SAA2BD,oBAA3B,CAAiF;AACtFE,EAAAA,WAAW,GAAG;AACZ;AAEA,SAAKC,WAAL,GAAmB,qBAAnB;AACD;;AALqF","sourcesContent":["import { ContinousBaseGesture } from './gesture';\nimport { PinchGestureHandlerEventPayload } from '../PinchGestureHandler';\n\nexport class PinchGesture extends ContinousBaseGesture<PinchGestureHandlerEventPayload> {\n constructor() {\n super();\n\n this.handlerName = 'PinchGestureHandler';\n }\n}\n\nexport type PinchGestureType = InstanceType<typeof PinchGesture>;\n"]}
1
+ {"version":3,"sources":["pinchGesture.ts"],"names":["ContinousBaseGesture","changeEventCalculator","current","previous","changePayload","undefined","scaleChange","scale","PinchGesture","constructor","handlerName","onChange","callback","handlers"],"mappings":"AAAA,SAASA,oBAAT,QAAqC,WAArC;;AAQA,SAASC,qBAAT,CACEC,OADF,EAEEC,QAFF,EAGE;AACA;;AACA,MAAIC,aAAJ;;AACA,MAAID,QAAQ,KAAKE,SAAjB,EAA4B;AAC1BD,IAAAA,aAAa,GAAG;AACdE,MAAAA,WAAW,EAAEJ,OAAO,CAACK;AADP,KAAhB;AAGD,GAJD,MAIO;AACLH,IAAAA,aAAa,GAAG;AACdE,MAAAA,WAAW,EAAEJ,OAAO,CAACK,KAAR,GAAgBJ,QAAQ,CAACI;AADxB,KAAhB;AAGD;;AAED,SAAO,EAAE,GAAGL,OAAL;AAAc,OAAGE;AAAjB,GAAP;AACD;;AAED,OAAO,MAAMI,YAAN,SAA2BR,oBAA3B,CAGL;AACAS,EAAAA,WAAW,GAAG;AACZ;AAEA,SAAKC,WAAL,GAAmB,qBAAnB;AACD;;AAEDC,EAAAA,QAAQ,CACNC,QADM,EAMN;AACA;AACA,SAAKC,QAAL,CAAcZ,qBAAd,GAAsCA,qBAAtC;AACA,WAAO,MAAMU,QAAN,CAAeC,QAAf,CAAP;AACD;;AAjBD","sourcesContent":["import { ContinousBaseGesture } from './gesture';\nimport { PinchGestureHandlerEventPayload } from '../PinchGestureHandler';\nimport { GestureUpdateEvent } from '../gestureHandlerCommon';\n\ntype PinchGestureChangeEventPayload = {\n scaleChange: number;\n};\n\nfunction changeEventCalculator(\n current: GestureUpdateEvent<PinchGestureHandlerEventPayload>,\n previous?: GestureUpdateEvent<PinchGestureHandlerEventPayload>\n) {\n 'worklet';\n let changePayload: PinchGestureChangeEventPayload;\n if (previous === undefined) {\n changePayload = {\n scaleChange: current.scale,\n };\n } else {\n changePayload = {\n scaleChange: current.scale / previous.scale,\n };\n }\n\n return { ...current, ...changePayload };\n}\n\nexport class PinchGesture extends ContinousBaseGesture<\n PinchGestureHandlerEventPayload,\n PinchGestureChangeEventPayload\n> {\n constructor() {\n super();\n\n this.handlerName = 'PinchGestureHandler';\n }\n\n onChange(\n callback: (\n event: GestureUpdateEvent<\n PinchGestureHandlerEventPayload & PinchGestureChangeEventPayload\n >\n ) => void\n ) {\n // @ts-ignore TS being overprotective, PinchGestureHandlerEventPayload is Record\n this.handlers.changeEventCalculator = changeEventCalculator;\n return super.onChange(callback);\n }\n}\n\nexport type PinchGestureType = InstanceType<typeof PinchGesture>;\n"]}
@@ -1,9 +1,36 @@
1
1
  import { ContinousBaseGesture } from './gesture';
2
+
3
+ function changeEventCalculator(current, previous) {
4
+ 'worklet';
5
+
6
+ let changePayload;
7
+
8
+ if (previous === undefined) {
9
+ changePayload = {
10
+ rotationChange: current.rotation
11
+ };
12
+ } else {
13
+ changePayload = {
14
+ rotationChange: current.rotation - previous.rotation
15
+ };
16
+ }
17
+
18
+ return { ...current,
19
+ ...changePayload
20
+ };
21
+ }
22
+
2
23
  export class RotationGesture extends ContinousBaseGesture {
3
24
  constructor() {
4
25
  super();
5
26
  this.handlerName = 'RotationGestureHandler';
6
27
  }
7
28
 
29
+ onChange(callback) {
30
+ // @ts-ignore TS being overprotective, RotationGestureHandlerEventPayload is Record
31
+ this.handlers.changeEventCalculator = changeEventCalculator;
32
+ return super.onChange(callback);
33
+ }
34
+
8
35
  }
9
36
  //# sourceMappingURL=rotationGesture.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["rotationGesture.ts"],"names":["ContinousBaseGesture","RotationGesture","constructor","handlerName"],"mappings":"AAAA,SAASA,oBAAT,QAAqC,WAArC;AAGA,OAAO,MAAMC,eAAN,SAA8BD,oBAA9B,CAAuF;AAC5FE,EAAAA,WAAW,GAAG;AACZ;AAEA,SAAKC,WAAL,GAAmB,wBAAnB;AACD;;AAL2F","sourcesContent":["import { ContinousBaseGesture } from './gesture';\nimport { RotationGestureHandlerEventPayload } from '../RotationGestureHandler';\n\nexport class RotationGesture extends ContinousBaseGesture<RotationGestureHandlerEventPayload> {\n constructor() {\n super();\n\n this.handlerName = 'RotationGestureHandler';\n }\n}\n\nexport type RotationGestureType = InstanceType<typeof RotationGesture>;\n"]}
1
+ {"version":3,"sources":["rotationGesture.ts"],"names":["ContinousBaseGesture","changeEventCalculator","current","previous","changePayload","undefined","rotationChange","rotation","RotationGesture","constructor","handlerName","onChange","callback","handlers"],"mappings":"AAAA,SAASA,oBAAT,QAAqC,WAArC;;AAQA,SAASC,qBAAT,CACEC,OADF,EAEEC,QAFF,EAGE;AACA;;AACA,MAAIC,aAAJ;;AACA,MAAID,QAAQ,KAAKE,SAAjB,EAA4B;AAC1BD,IAAAA,aAAa,GAAG;AACdE,MAAAA,cAAc,EAAEJ,OAAO,CAACK;AADV,KAAhB;AAGD,GAJD,MAIO;AACLH,IAAAA,aAAa,GAAG;AACdE,MAAAA,cAAc,EAAEJ,OAAO,CAACK,QAAR,GAAmBJ,QAAQ,CAACI;AAD9B,KAAhB;AAGD;;AAED,SAAO,EAAE,GAAGL,OAAL;AAAc,OAAGE;AAAjB,GAAP;AACD;;AAED,OAAO,MAAMI,eAAN,SAA8BR,oBAA9B,CAGL;AACAS,EAAAA,WAAW,GAAG;AACZ;AAEA,SAAKC,WAAL,GAAmB,wBAAnB;AACD;;AAEDC,EAAAA,QAAQ,CACNC,QADM,EAMN;AACA;AACA,SAAKC,QAAL,CAAcZ,qBAAd,GAAsCA,qBAAtC;AACA,WAAO,MAAMU,QAAN,CAAeC,QAAf,CAAP;AACD;;AAjBD","sourcesContent":["import { ContinousBaseGesture } from './gesture';\nimport { RotationGestureHandlerEventPayload } from '../RotationGestureHandler';\nimport { GestureUpdateEvent } from '../gestureHandlerCommon';\n\ntype RotationGestureChangeEventPayload = {\n rotationChange: number;\n};\n\nfunction changeEventCalculator(\n current: GestureUpdateEvent<RotationGestureHandlerEventPayload>,\n previous?: GestureUpdateEvent<RotationGestureHandlerEventPayload>\n) {\n 'worklet';\n let changePayload: RotationGestureChangeEventPayload;\n if (previous === undefined) {\n changePayload = {\n rotationChange: current.rotation,\n };\n } else {\n changePayload = {\n rotationChange: current.rotation - previous.rotation,\n };\n }\n\n return { ...current, ...changePayload };\n}\n\nexport class RotationGesture extends ContinousBaseGesture<\n RotationGestureHandlerEventPayload,\n RotationGestureChangeEventPayload\n> {\n constructor() {\n super();\n\n this.handlerName = 'RotationGestureHandler';\n }\n\n onChange(\n callback: (\n event: GestureUpdateEvent<\n RotationGestureHandlerEventPayload & RotationGestureChangeEventPayload\n >\n ) => void\n ) {\n // @ts-ignore TS being overprotective, RotationGestureHandlerEventPayload is Record\n this.handlers.changeEventCalculator = changeEventCalculator;\n return super.onChange(callback);\n }\n}\n\nexport type RotationGestureType = InstanceType<typeof RotationGesture>;\n"]}
@@ -13,17 +13,6 @@ export { FlingGestureHandler } from './handlers/FlingGestureHandler';
13
13
  export { default as createNativeWrapper } from './handlers/createNativeWrapper';
14
14
  export { GestureDetector } from './handlers/gestures/GestureDetector';
15
15
  export { GestureObjects as Gesture } from './handlers/gestures/gestureObjects';
16
- export { TapGestureType as TapGesture } from './handlers/gestures/tapGesture';
17
- export { PanGestureType as PanGesture } from './handlers/gestures/panGesture';
18
- export { FlingGestureType as FlingGesture } from './handlers/gestures/flingGesture';
19
- export { LongPressGestureType as LongPressGesture } from './handlers/gestures/longPressGesture';
20
- export { PinchGestureType as PinchGesture } from './handlers/gestures/pinchGesture';
21
- export { RotationGestureType as RotationGesture } from './handlers/gestures/rotationGesture';
22
- export { ForceTouchGestureType as ForceTouchGesture } from './handlers/gestures/forceTouchGesture';
23
- export { NativeGestureType as NativeGesture } from './handlers/gestures/nativeGesture';
24
- export { ManualGestureType as ManualGesture } from './handlers/gestures/manualGesture';
25
- export { ComposedGestureType as ComposedGesture, RaceGestureType as RaceGesture, SimultaneousGestureType as SimultaneousGesture, ExclusiveGestureType as ExclusiveGesture } from './handlers/gestures/gestureComposition';
26
- export { GestureStateManagerType as GestureStateManager } from './handlers/gestures/gestureStateManager';
27
16
  export { NativeViewGestureHandler } from './handlers/NativeViewGestureHandler';
28
17
  export { RawButton, BaseButton, RectButton, BorderlessButton } from './components/GestureButtons';
29
18
  export { TouchableHighlight, TouchableNativeFeedback, TouchableOpacity, TouchableWithoutFeedback } from './components/touchables';
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts"],"names":["initialize","Directions","State","default","gestureHandlerRootHOC","GestureHandlerRootView","TapGestureHandler","ForceTouchGestureHandler","LongPressGestureHandler","PanGestureHandler","PinchGestureHandler","RotationGestureHandler","FlingGestureHandler","createNativeWrapper","GestureDetector","GestureObjects","Gesture","TapGestureType","TapGesture","PanGestureType","PanGesture","FlingGestureType","FlingGesture","LongPressGestureType","LongPressGesture","PinchGestureType","PinchGesture","RotationGestureType","RotationGesture","ForceTouchGestureType","ForceTouchGesture","NativeGestureType","NativeGesture","ManualGestureType","ManualGesture","ComposedGestureType","ComposedGesture","RaceGestureType","RaceGesture","SimultaneousGestureType","SimultaneousGesture","ExclusiveGestureType","ExclusiveGesture","GestureStateManagerType","GestureStateManager","NativeViewGestureHandler","RawButton","BaseButton","RectButton","BorderlessButton","TouchableHighlight","TouchableNativeFeedback","TouchableOpacity","TouchableWithoutFeedback","ScrollView","Switch","TextInput","DrawerLayoutAndroid","FlatList","Swipeable","DrawerLayout"],"mappings":"AAAA,SAASA,UAAT,QAA2B,QAA3B;AAEA,SAASC,UAAT,QAA2B,cAA3B;AACA,SAASC,KAAT,QAAsB,SAAtB;AACA,SAASC,OAAO,IAAIC,qBAApB,QAAiD,yBAAjD;AACA,SAASD,OAAO,IAAIE,sBAApB,QAAkD,0BAAlD;AA4CA,SAASC,iBAAT,QAAkC,8BAAlC;AACA,SAASC,wBAAT,QAAyC,qCAAzC;AACA,SAASC,uBAAT,QAAwC,oCAAxC;AACA,SAASC,iBAAT,QAAkC,8BAAlC;AACA,SAASC,mBAAT,QAAoC,gCAApC;AACA,SAASC,sBAAT,QAAuC,mCAAvC;AACA,SAASC,mBAAT,QAAoC,gCAApC;AACA,SAAST,OAAO,IAAIU,mBAApB,QAA+C,gCAA/C;AAKA,SAASC,eAAT,QAAgC,qCAAhC;AACA,SAASC,cAAc,IAAIC,OAA3B,QAA0C,oCAA1C;AACA,SAASC,cAAc,IAAIC,UAA3B,QAA6C,gCAA7C;AACA,SAASC,cAAc,IAAIC,UAA3B,QAA6C,gCAA7C;AACA,SAASC,gBAAgB,IAAIC,YAA7B,QAAiD,kCAAjD;AACA,SAASC,oBAAoB,IAAIC,gBAAjC,QAAyD,sCAAzD;AACA,SAASC,gBAAgB,IAAIC,YAA7B,QAAiD,kCAAjD;AACA,SAASC,mBAAmB,IAAIC,eAAhC,QAAuD,qCAAvD;AACA,SAASC,qBAAqB,IAAIC,iBAAlC,QAA2D,uCAA3D;AACA,SAASC,iBAAiB,IAAIC,aAA9B,QAAmD,mCAAnD;AACA,SAASC,iBAAiB,IAAIC,aAA9B,QAAmD,mCAAnD;AACA,SACEC,mBAAmB,IAAIC,eADzB,EAEEC,eAAe,IAAIC,WAFrB,EAGEC,uBAAuB,IAAIC,mBAH7B,EAIEC,oBAAoB,IAAIC,gBAJ1B,QAKO,wCALP;AAMA,SAASC,uBAAuB,IAAIC,mBAApC,QAA+D,yCAA/D;AACA,SAASC,wBAAT,QAAyC,qCAAzC;AAOA,SACEC,SADF,EAEEC,UAFF,EAGEC,UAHF,EAIEC,gBAJF,QAKO,6BALP;AAMA,SACEC,kBADF,EAEEC,uBAFF,EAGEC,gBAHF,EAIEC,wBAJF,QAKO,yBALP;AAMA,SACEC,UADF,EAEEC,MAFF,EAGEC,SAHF,EAIEC,mBAJF,EAKEC,QALF,QAMO,gCANP;AA8CA,SAASvD,OAAO,IAAIwD,SAApB,QAAqC,wBAArC;AASA,SAASxD,OAAO,IAAIyD,YAApB,QAAwC,2BAAxC;AAEA5D,UAAU","sourcesContent":["import { initialize } from './init';\n\nexport { Directions } from './Directions';\nexport { State } from './State';\nexport { default as gestureHandlerRootHOC } from './gestureHandlerRootHOC';\nexport { default as GestureHandlerRootView } from './GestureHandlerRootView';\nexport type {\n // event types\n GestureEvent,\n HandlerStateChangeEvent,\n // event payloads types\n GestureEventPayload,\n HandlerStateChangeEventPayload,\n // pointer events\n GestureTouchEvent,\n TouchData,\n // new api event types\n GestureUpdateEvent,\n GestureStateChangeEvent,\n} from './handlers/gestureHandlerCommon';\nexport type { GestureType } from './handlers/gestures/gesture';\nexport type {\n TapGestureHandlerEventPayload,\n TapGestureHandlerProps,\n} from './handlers/TapGestureHandler';\nexport type {\n ForceTouchGestureHandlerEventPayload,\n ForceTouchGestureHandlerProps,\n} from './handlers/ForceTouchGestureHandler';\nexport type {\n LongPressGestureHandlerEventPayload,\n LongPressGestureHandlerProps,\n} from './handlers/LongPressGestureHandler';\nexport type {\n PanGestureHandlerEventPayload,\n PanGestureHandlerProps,\n} from './handlers/PanGestureHandler';\nexport type {\n PinchGestureHandlerEventPayload,\n PinchGestureHandlerProps,\n} from './handlers/PinchGestureHandler';\nexport type {\n RotationGestureHandlerEventPayload,\n RotationGestureHandlerProps,\n} from './handlers/RotationGestureHandler';\nexport type {\n FlingGestureHandlerEventPayload,\n FlingGestureHandlerProps,\n} from './handlers/FlingGestureHandler';\nexport { TapGestureHandler } from './handlers/TapGestureHandler';\nexport { ForceTouchGestureHandler } from './handlers/ForceTouchGestureHandler';\nexport { LongPressGestureHandler } from './handlers/LongPressGestureHandler';\nexport { PanGestureHandler } from './handlers/PanGestureHandler';\nexport { PinchGestureHandler } from './handlers/PinchGestureHandler';\nexport { RotationGestureHandler } from './handlers/RotationGestureHandler';\nexport { FlingGestureHandler } from './handlers/FlingGestureHandler';\nexport { default as createNativeWrapper } from './handlers/createNativeWrapper';\nexport type {\n NativeViewGestureHandlerPayload,\n NativeViewGestureHandlerProps,\n} from './handlers/NativeViewGestureHandler';\nexport { GestureDetector } from './handlers/gestures/GestureDetector';\nexport { GestureObjects as Gesture } from './handlers/gestures/gestureObjects';\nexport { TapGestureType as TapGesture } from './handlers/gestures/tapGesture';\nexport { PanGestureType as PanGesture } from './handlers/gestures/panGesture';\nexport { FlingGestureType as FlingGesture } from './handlers/gestures/flingGesture';\nexport { LongPressGestureType as LongPressGesture } from './handlers/gestures/longPressGesture';\nexport { PinchGestureType as PinchGesture } from './handlers/gestures/pinchGesture';\nexport { RotationGestureType as RotationGesture } from './handlers/gestures/rotationGesture';\nexport { ForceTouchGestureType as ForceTouchGesture } from './handlers/gestures/forceTouchGesture';\nexport { NativeGestureType as NativeGesture } from './handlers/gestures/nativeGesture';\nexport { ManualGestureType as ManualGesture } from './handlers/gestures/manualGesture';\nexport {\n ComposedGestureType as ComposedGesture,\n RaceGestureType as RaceGesture,\n SimultaneousGestureType as SimultaneousGesture,\n ExclusiveGestureType as ExclusiveGesture,\n} from './handlers/gestures/gestureComposition';\nexport { GestureStateManagerType as GestureStateManager } from './handlers/gestures/gestureStateManager';\nexport { NativeViewGestureHandler } from './handlers/NativeViewGestureHandler';\nexport type {\n RawButtonProps,\n BaseButtonProps,\n RectButtonProps,\n BorderlessButtonProps,\n} from './components/GestureButtons';\nexport {\n RawButton,\n BaseButton,\n RectButton,\n BorderlessButton,\n} from './components/GestureButtons';\nexport {\n TouchableHighlight,\n TouchableNativeFeedback,\n TouchableOpacity,\n TouchableWithoutFeedback,\n} from './components/touchables';\nexport {\n ScrollView,\n Switch,\n TextInput,\n DrawerLayoutAndroid,\n FlatList,\n} from './components/GestureComponents';\nexport type {\n //events\n GestureHandlerGestureEvent,\n GestureHandlerStateChangeEvent,\n //event payloads\n GestureHandlerGestureEventNativeEvent,\n GestureHandlerStateChangeNativeEvent,\n NativeViewGestureHandlerGestureEvent,\n NativeViewGestureHandlerStateChangeEvent,\n TapGestureHandlerGestureEvent,\n TapGestureHandlerStateChangeEvent,\n ForceTouchGestureHandlerGestureEvent,\n ForceTouchGestureHandlerStateChangeEvent,\n LongPressGestureHandlerGestureEvent,\n LongPressGestureHandlerStateChangeEvent,\n PanGestureHandlerGestureEvent,\n PanGestureHandlerStateChangeEvent,\n PinchGestureHandlerGestureEvent,\n PinchGestureHandlerStateChangeEvent,\n RotationGestureHandlerGestureEvent,\n RotationGestureHandlerStateChangeEvent,\n FlingGestureHandlerGestureEvent,\n FlingGestureHandlerStateChangeEvent,\n // handlers props\n NativeViewGestureHandlerProperties,\n TapGestureHandlerProperties,\n LongPressGestureHandlerProperties,\n PanGestureHandlerProperties,\n PinchGestureHandlerProperties,\n RotationGestureHandlerProperties,\n FlingGestureHandlerProperties,\n ForceTouchGestureHandlerProperties,\n // buttons props\n RawButtonProperties,\n BaseButtonProperties,\n RectButtonProperties,\n BorderlessButtonProperties,\n} from './handlers/gestureHandlerTypesCompat';\n\nexport { default as Swipeable } from './components/Swipeable';\nexport type {\n DrawerLayoutProps,\n DrawerPosition,\n DrawerState,\n DrawerType,\n DrawerLockMode,\n DrawerKeyboardDismissMode,\n} from './components/DrawerLayout';\nexport { default as DrawerLayout } from './components/DrawerLayout';\n\ninitialize();\n"]}
1
+ {"version":3,"sources":["index.ts"],"names":["initialize","Directions","State","default","gestureHandlerRootHOC","GestureHandlerRootView","TapGestureHandler","ForceTouchGestureHandler","LongPressGestureHandler","PanGestureHandler","PinchGestureHandler","RotationGestureHandler","FlingGestureHandler","createNativeWrapper","GestureDetector","GestureObjects","Gesture","NativeViewGestureHandler","RawButton","BaseButton","RectButton","BorderlessButton","TouchableHighlight","TouchableNativeFeedback","TouchableOpacity","TouchableWithoutFeedback","ScrollView","Switch","TextInput","DrawerLayoutAndroid","FlatList","Swipeable","DrawerLayout"],"mappings":"AAAA,SAASA,UAAT,QAA2B,QAA3B;AAEA,SAASC,UAAT,QAA2B,cAA3B;AACA,SAASC,KAAT,QAAsB,SAAtB;AACA,SAASC,OAAO,IAAIC,qBAApB,QAAiD,yBAAjD;AACA,SAASD,OAAO,IAAIE,sBAApB,QAAkD,0BAAlD;AA4CA,SAASC,iBAAT,QAAkC,8BAAlC;AACA,SAASC,wBAAT,QAAyC,qCAAzC;AACA,SAASC,uBAAT,QAAwC,oCAAxC;AACA,SAASC,iBAAT,QAAkC,8BAAlC;AACA,SAASC,mBAAT,QAAoC,gCAApC;AACA,SAASC,sBAAT,QAAuC,mCAAvC;AACA,SAASC,mBAAT,QAAoC,gCAApC;AACA,SAAST,OAAO,IAAIU,mBAApB,QAA+C,gCAA/C;AAKA,SAASC,eAAT,QAAgC,qCAAhC;AACA,SAASC,cAAc,IAAIC,OAA3B,QAA0C,oCAA1C;AAiBA,SAASC,wBAAT,QAAyC,qCAAzC;AAOA,SACEC,SADF,EAEEC,UAFF,EAGEC,UAHF,EAIEC,gBAJF,QAKO,6BALP;AAMA,SACEC,kBADF,EAEEC,uBAFF,EAGEC,gBAHF,EAIEC,wBAJF,QAKO,yBALP;AAMA,SACEC,UADF,EAEEC,MAFF,EAGEC,SAHF,EAIEC,mBAJF,EAKEC,QALF,QAMO,gCANP;AA8CA,SAAS3B,OAAO,IAAI4B,SAApB,QAAqC,wBAArC;AASA,SAAS5B,OAAO,IAAI6B,YAApB,QAAwC,2BAAxC;AAEAhC,UAAU","sourcesContent":["import { initialize } from './init';\n\nexport { Directions } from './Directions';\nexport { State } from './State';\nexport { default as gestureHandlerRootHOC } from './gestureHandlerRootHOC';\nexport { default as GestureHandlerRootView } from './GestureHandlerRootView';\nexport type {\n // event types\n GestureEvent,\n HandlerStateChangeEvent,\n // event payloads types\n GestureEventPayload,\n HandlerStateChangeEventPayload,\n // pointer events\n GestureTouchEvent,\n TouchData,\n // new api event types\n GestureUpdateEvent,\n GestureStateChangeEvent,\n} from './handlers/gestureHandlerCommon';\nexport type { GestureType } from './handlers/gestures/gesture';\nexport type {\n TapGestureHandlerEventPayload,\n TapGestureHandlerProps,\n} from './handlers/TapGestureHandler';\nexport type {\n ForceTouchGestureHandlerEventPayload,\n ForceTouchGestureHandlerProps,\n} from './handlers/ForceTouchGestureHandler';\nexport type {\n LongPressGestureHandlerEventPayload,\n LongPressGestureHandlerProps,\n} from './handlers/LongPressGestureHandler';\nexport type {\n PanGestureHandlerEventPayload,\n PanGestureHandlerProps,\n} from './handlers/PanGestureHandler';\nexport type {\n PinchGestureHandlerEventPayload,\n PinchGestureHandlerProps,\n} from './handlers/PinchGestureHandler';\nexport type {\n RotationGestureHandlerEventPayload,\n RotationGestureHandlerProps,\n} from './handlers/RotationGestureHandler';\nexport type {\n FlingGestureHandlerEventPayload,\n FlingGestureHandlerProps,\n} from './handlers/FlingGestureHandler';\nexport { TapGestureHandler } from './handlers/TapGestureHandler';\nexport { ForceTouchGestureHandler } from './handlers/ForceTouchGestureHandler';\nexport { LongPressGestureHandler } from './handlers/LongPressGestureHandler';\nexport { PanGestureHandler } from './handlers/PanGestureHandler';\nexport { PinchGestureHandler } from './handlers/PinchGestureHandler';\nexport { RotationGestureHandler } from './handlers/RotationGestureHandler';\nexport { FlingGestureHandler } from './handlers/FlingGestureHandler';\nexport { default as createNativeWrapper } from './handlers/createNativeWrapper';\nexport type {\n NativeViewGestureHandlerPayload,\n NativeViewGestureHandlerProps,\n} from './handlers/NativeViewGestureHandler';\nexport { GestureDetector } from './handlers/gestures/GestureDetector';\nexport { GestureObjects as Gesture } from './handlers/gestures/gestureObjects';\nexport type { TapGestureType as TapGesture } from './handlers/gestures/tapGesture';\nexport type { PanGestureType as PanGesture } from './handlers/gestures/panGesture';\nexport type { FlingGestureType as FlingGesture } from './handlers/gestures/flingGesture';\nexport type { LongPressGestureType as LongPressGesture } from './handlers/gestures/longPressGesture';\nexport type { PinchGestureType as PinchGesture } from './handlers/gestures/pinchGesture';\nexport type { RotationGestureType as RotationGesture } from './handlers/gestures/rotationGesture';\nexport type { ForceTouchGestureType as ForceTouchGesture } from './handlers/gestures/forceTouchGesture';\nexport type { NativeGestureType as NativeGesture } from './handlers/gestures/nativeGesture';\nexport type { ManualGestureType as ManualGesture } from './handlers/gestures/manualGesture';\nexport type {\n ComposedGestureType as ComposedGesture,\n RaceGestureType as RaceGesture,\n SimultaneousGestureType as SimultaneousGesture,\n ExclusiveGestureType as ExclusiveGesture,\n} from './handlers/gestures/gestureComposition';\nexport type { GestureStateManagerType as GestureStateManager } from './handlers/gestures/gestureStateManager';\nexport { NativeViewGestureHandler } from './handlers/NativeViewGestureHandler';\nexport type {\n RawButtonProps,\n BaseButtonProps,\n RectButtonProps,\n BorderlessButtonProps,\n} from './components/GestureButtons';\nexport {\n RawButton,\n BaseButton,\n RectButton,\n BorderlessButton,\n} from './components/GestureButtons';\nexport {\n TouchableHighlight,\n TouchableNativeFeedback,\n TouchableOpacity,\n TouchableWithoutFeedback,\n} from './components/touchables';\nexport {\n ScrollView,\n Switch,\n TextInput,\n DrawerLayoutAndroid,\n FlatList,\n} from './components/GestureComponents';\nexport type {\n //events\n GestureHandlerGestureEvent,\n GestureHandlerStateChangeEvent,\n //event payloads\n GestureHandlerGestureEventNativeEvent,\n GestureHandlerStateChangeNativeEvent,\n NativeViewGestureHandlerGestureEvent,\n NativeViewGestureHandlerStateChangeEvent,\n TapGestureHandlerGestureEvent,\n TapGestureHandlerStateChangeEvent,\n ForceTouchGestureHandlerGestureEvent,\n ForceTouchGestureHandlerStateChangeEvent,\n LongPressGestureHandlerGestureEvent,\n LongPressGestureHandlerStateChangeEvent,\n PanGestureHandlerGestureEvent,\n PanGestureHandlerStateChangeEvent,\n PinchGestureHandlerGestureEvent,\n PinchGestureHandlerStateChangeEvent,\n RotationGestureHandlerGestureEvent,\n RotationGestureHandlerStateChangeEvent,\n FlingGestureHandlerGestureEvent,\n FlingGestureHandlerStateChangeEvent,\n // handlers props\n NativeViewGestureHandlerProperties,\n TapGestureHandlerProperties,\n LongPressGestureHandlerProperties,\n PanGestureHandlerProperties,\n PinchGestureHandlerProperties,\n RotationGestureHandlerProperties,\n FlingGestureHandlerProperties,\n ForceTouchGestureHandlerProperties,\n // buttons props\n RawButtonProperties,\n BaseButtonProperties,\n RectButtonProperties,\n BorderlessButtonProperties,\n} from './handlers/gestureHandlerTypesCompat';\n\nexport { default as Swipeable } from './components/Swipeable';\nexport type {\n DrawerLayoutProps,\n DrawerPosition,\n DrawerState,\n DrawerType,\n DrawerLockMode,\n DrawerKeyboardDismissMode,\n} from './components/DrawerLayout';\nexport { default as DrawerLayout } from './components/DrawerLayout';\n\ninitialize();\n"]}
@@ -39,5 +39,5 @@ export interface ForceTouchGestureHandlerProps extends BaseGestureHandlerProps<F
39
39
  export declare type ForceTouchGestureHandler = typeof ForceTouchGestureHandler & {
40
40
  forceTouchAvailable: boolean;
41
41
  };
42
- export declare const ForceTouchGestureHandler: typeof ForceTouchFallback | React.ComponentClass<ForceTouchGestureHandlerProps & React.RefAttributes<any>, any> | React.FunctionComponent<ForceTouchGestureHandlerProps & React.RefAttributes<any>>;
42
+ export declare const ForceTouchGestureHandler: typeof ForceTouchFallback | React.ComponentType<ForceTouchGestureHandlerProps & React.RefAttributes<any>>;
43
43
  export {};
@@ -1,10 +1,16 @@
1
1
  import { BaseGestureConfig, ContinousBaseGesture } from './gesture';
2
2
  import { ForceTouchGestureConfig, ForceTouchGestureHandlerEventPayload } from '../ForceTouchGestureHandler';
3
- export declare class ForceTouchGesture extends ContinousBaseGesture<ForceTouchGestureHandlerEventPayload> {
3
+ import { GestureUpdateEvent } from '../gestureHandlerCommon';
4
+ declare type ForceTouchGestureChangeEventPayload = {
5
+ forceChange: number;
6
+ };
7
+ export declare class ForceTouchGesture extends ContinousBaseGesture<ForceTouchGestureHandlerEventPayload, ForceTouchGestureChangeEventPayload> {
4
8
  config: BaseGestureConfig & ForceTouchGestureConfig;
5
9
  constructor();
6
10
  minForce(force: number): this;
7
11
  maxForce(force: number): this;
8
12
  feedbackOnActivation(value: boolean): this;
13
+ onChange(callback: (event: GestureUpdateEvent<GestureUpdateEvent<ForceTouchGestureHandlerEventPayload & ForceTouchGestureChangeEventPayload>>) => void): this;
9
14
  }
10
15
  export declare type ForceTouchGestureType = InstanceType<typeof ForceTouchGesture>;
16
+ export {};
@@ -23,11 +23,14 @@ export declare type HandlerCallbacks<EventPayloadT extends Record<string, unknow
23
23
  onBegin?: (event: GestureStateChangeEvent<EventPayloadT>) => void;
24
24
  onStart?: (event: GestureStateChangeEvent<EventPayloadT>) => void;
25
25
  onEnd?: (event: GestureStateChangeEvent<EventPayloadT>, success: boolean) => void;
26
+ onFinalize?: (event: GestureStateChangeEvent<EventPayloadT>, success: boolean) => void;
26
27
  onUpdate?: (event: GestureUpdateEvent<EventPayloadT>) => void;
28
+ onChange?: (event: any) => void;
27
29
  onTouchesDown?: TouchEventHandlerType;
28
30
  onTouchesMove?: TouchEventHandlerType;
29
31
  onTouchesUp?: TouchEventHandlerType;
30
32
  onTouchesCancelled?: TouchEventHandlerType;
33
+ changeEventCalculator?: (current: GestureUpdateEvent<Record<string, unknown>>, previous?: GestureUpdateEvent<Record<string, unknown>>) => GestureUpdateEvent<Record<string, unknown>>;
31
34
  isWorklet: boolean[];
32
35
  };
33
36
  export declare const CALLBACK_TYPE: {
@@ -35,11 +38,13 @@ export declare const CALLBACK_TYPE: {
35
38
  readonly BEGAN: 1;
36
39
  readonly START: 2;
37
40
  readonly UPDATE: 3;
38
- readonly END: 4;
39
- readonly TOUCHES_DOWN: 5;
40
- readonly TOUCHES_MOVE: 6;
41
- readonly TOUCHES_UP: 7;
42
- readonly TOUCHES_CANCELLED: 8;
41
+ readonly CHANGE: 4;
42
+ readonly END: 5;
43
+ readonly FINALIZE: 6;
44
+ readonly TOUCHES_DOWN: 7;
45
+ readonly TOUCHES_MOVE: 8;
46
+ readonly TOUCHES_UP: 9;
47
+ readonly TOUCHES_CANCELLED: 10;
43
48
  };
44
49
  export declare type CALLBACK_TYPE = typeof CALLBACK_TYPE[keyof typeof CALLBACK_TYPE];
45
50
  export declare abstract class Gesture {
@@ -66,10 +71,11 @@ export declare abstract class BaseGesture<EventPayloadT extends Record<string, u
66
71
  handlers: HandlerCallbacks<EventPayloadT>;
67
72
  private addDependency;
68
73
  withRef(ref: React.MutableRefObject<GestureType | undefined>): this;
69
- protected isWorklet(callback: TouchEventHandlerType | ((event: GestureUpdateEvent<EventPayloadT>) => void) | ((event: GestureStateChangeEvent<EventPayloadT>) => void)): boolean;
74
+ protected isWorklet(callback: Function): boolean;
70
75
  onBegin(callback: (event: GestureStateChangeEvent<EventPayloadT>) => void): this;
71
76
  onStart(callback: (event: GestureStateChangeEvent<EventPayloadT>) => void): this;
72
77
  onEnd(callback: (event: GestureStateChangeEvent<EventPayloadT>, success: boolean) => void): this;
78
+ onFinalize(callback: (event: GestureStateChangeEvent<EventPayloadT>, success: boolean) => void): this;
73
79
  onTouchesDown(callback: TouchEventHandlerType): this;
74
80
  onTouchesMove(callback: TouchEventHandlerType): this;
75
81
  onTouchesUp(callback: TouchEventHandlerType): this;
@@ -83,8 +89,9 @@ export declare abstract class BaseGesture<EventPayloadT extends Record<string, u
83
89
  toGestureArray(): GestureType[];
84
90
  prepare(): void;
85
91
  }
86
- export declare abstract class ContinousBaseGesture<EventPayloadT extends Record<string, unknown>> extends BaseGesture<EventPayloadT> {
92
+ export declare abstract class ContinousBaseGesture<EventPayloadT extends Record<string, unknown>, EventChangePayloadT extends Record<string, unknown>> extends BaseGesture<EventPayloadT> {
87
93
  onUpdate(callback: (event: GestureUpdateEvent<EventPayloadT>) => void): this;
94
+ onChange(callback: (event: GestureUpdateEvent<EventPayloadT & EventChangePayloadT>) => void): this;
88
95
  manualActivation(manualActivation: boolean): this;
89
96
  }
90
97
  export {};
@@ -1,5 +1,7 @@
1
+ import { GestureUpdateEvent } from '../gestureHandlerCommon';
1
2
  import { ContinousBaseGesture } from './gesture';
2
- export declare class ManualGesture extends ContinousBaseGesture<Record<string, never>> {
3
+ export declare class ManualGesture extends ContinousBaseGesture<Record<string, never>, Record<string, never>> {
3
4
  constructor();
5
+ onChange(callback: (event: GestureUpdateEvent<Record<string, never>>) => void): this;
4
6
  }
5
7
  export declare type ManualGestureType = InstanceType<typeof ManualGesture>;
@@ -1,6 +1,11 @@
1
1
  import { BaseGestureConfig, ContinousBaseGesture } from './gesture';
2
+ import { GestureUpdateEvent } from '../gestureHandlerCommon';
2
3
  import { PanGestureConfig, PanGestureHandlerEventPayload } from '../PanGestureHandler';
3
- export declare class PanGesture extends ContinousBaseGesture<PanGestureHandlerEventPayload> {
4
+ declare type PanGestureChangeEventPayload = {
5
+ changeX: number;
6
+ changeY: number;
7
+ };
8
+ export declare class PanGesture extends ContinousBaseGesture<PanGestureHandlerEventPayload, PanGestureChangeEventPayload> {
4
9
  config: BaseGestureConfig & PanGestureConfig;
5
10
  constructor();
6
11
  activeOffsetY(offset: number | number[]): this;
@@ -15,5 +20,7 @@ export declare class PanGesture extends ContinousBaseGesture<PanGestureHandlerEv
15
20
  minVelocityY(velocity: number): this;
16
21
  averageTouches(value: boolean): this;
17
22
  enableTrackpadTwoFingerGesture(value: boolean): this;
23
+ onChange(callback: (event: GestureUpdateEvent<PanGestureHandlerEventPayload & PanGestureChangeEventPayload>) => void): this;
18
24
  }
19
25
  export declare type PanGestureType = InstanceType<typeof PanGesture>;
26
+ export {};
@@ -1,6 +1,12 @@
1
1
  import { ContinousBaseGesture } from './gesture';
2
2
  import { PinchGestureHandlerEventPayload } from '../PinchGestureHandler';
3
- export declare class PinchGesture extends ContinousBaseGesture<PinchGestureHandlerEventPayload> {
3
+ import { GestureUpdateEvent } from '../gestureHandlerCommon';
4
+ declare type PinchGestureChangeEventPayload = {
5
+ scaleChange: number;
6
+ };
7
+ export declare class PinchGesture extends ContinousBaseGesture<PinchGestureHandlerEventPayload, PinchGestureChangeEventPayload> {
4
8
  constructor();
9
+ onChange(callback: (event: GestureUpdateEvent<PinchGestureHandlerEventPayload & PinchGestureChangeEventPayload>) => void): this;
5
10
  }
6
11
  export declare type PinchGestureType = InstanceType<typeof PinchGesture>;
12
+ export {};
@@ -1,6 +1,12 @@
1
1
  import { ContinousBaseGesture } from './gesture';
2
2
  import { RotationGestureHandlerEventPayload } from '../RotationGestureHandler';
3
- export declare class RotationGesture extends ContinousBaseGesture<RotationGestureHandlerEventPayload> {
3
+ import { GestureUpdateEvent } from '../gestureHandlerCommon';
4
+ declare type RotationGestureChangeEventPayload = {
5
+ rotationChange: number;
6
+ };
7
+ export declare class RotationGesture extends ContinousBaseGesture<RotationGestureHandlerEventPayload, RotationGestureChangeEventPayload> {
4
8
  constructor();
9
+ onChange(callback: (event: GestureUpdateEvent<RotationGestureHandlerEventPayload & RotationGestureChangeEventPayload>) => void): this;
5
10
  }
6
11
  export declare type RotationGestureType = InstanceType<typeof RotationGesture>;
12
+ export {};
@@ -3,4 +3,4 @@ export declare const handlerIDToTag: Record<string, number>;
3
3
  export declare function getNextHandlerTag(): number;
4
4
  export declare function registerHandler(handlerTag: number, handler: GestureType): void;
5
5
  export declare function unregisterHandler(handlerTag: number): void;
6
- export declare function findHandler(handlerTag: number): import("./gestures/gesture").BaseGesture<Record<string, unknown>> | import("./gestures/gesture").BaseGesture<Record<string, never>> | import("./gestures/gesture").BaseGesture<import("./TapGestureHandler").TapGestureHandlerEventPayload> | import("./gestures/gesture").BaseGesture<import("./PanGestureHandler").PanGestureHandlerEventPayload> | import("./gestures/gesture").BaseGesture<import("./LongPressGestureHandler").LongPressGestureHandlerEventPayload> | import("./gestures/gesture").BaseGesture<import("./RotationGestureHandler").RotationGestureHandlerEventPayload> | import("./gestures/gesture").BaseGesture<import("./PinchGestureHandler").PinchGestureHandlerEventPayload> | import("./gestures/gesture").BaseGesture<import("./FlingGestureHandler").FlingGestureHandlerEventPayload> | import("./gestures/gesture").BaseGesture<import("./ForceTouchGestureHandler").ForceTouchGestureHandlerEventPayload> | import("./gestures/gesture").BaseGesture<import("./NativeViewGestureHandler").NativeViewGestureHandlerPayload> | undefined;
6
+ export declare function findHandler(handlerTag: number): GestureType | undefined;
@@ -22,17 +22,17 @@ export { default as createNativeWrapper } from './handlers/createNativeWrapper';
22
22
  export type { NativeViewGestureHandlerPayload, NativeViewGestureHandlerProps, } from './handlers/NativeViewGestureHandler';
23
23
  export { GestureDetector } from './handlers/gestures/GestureDetector';
24
24
  export { GestureObjects as Gesture } from './handlers/gestures/gestureObjects';
25
- export { TapGestureType as TapGesture } from './handlers/gestures/tapGesture';
26
- export { PanGestureType as PanGesture } from './handlers/gestures/panGesture';
27
- export { FlingGestureType as FlingGesture } from './handlers/gestures/flingGesture';
28
- export { LongPressGestureType as LongPressGesture } from './handlers/gestures/longPressGesture';
29
- export { PinchGestureType as PinchGesture } from './handlers/gestures/pinchGesture';
30
- export { RotationGestureType as RotationGesture } from './handlers/gestures/rotationGesture';
31
- export { ForceTouchGestureType as ForceTouchGesture } from './handlers/gestures/forceTouchGesture';
32
- export { NativeGestureType as NativeGesture } from './handlers/gestures/nativeGesture';
33
- export { ManualGestureType as ManualGesture } from './handlers/gestures/manualGesture';
34
- export { ComposedGestureType as ComposedGesture, RaceGestureType as RaceGesture, SimultaneousGestureType as SimultaneousGesture, ExclusiveGestureType as ExclusiveGesture, } from './handlers/gestures/gestureComposition';
35
- export { GestureStateManagerType as GestureStateManager } from './handlers/gestures/gestureStateManager';
25
+ export type { TapGestureType as TapGesture } from './handlers/gestures/tapGesture';
26
+ export type { PanGestureType as PanGesture } from './handlers/gestures/panGesture';
27
+ export type { FlingGestureType as FlingGesture } from './handlers/gestures/flingGesture';
28
+ export type { LongPressGestureType as LongPressGesture } from './handlers/gestures/longPressGesture';
29
+ export type { PinchGestureType as PinchGesture } from './handlers/gestures/pinchGesture';
30
+ export type { RotationGestureType as RotationGesture } from './handlers/gestures/rotationGesture';
31
+ export type { ForceTouchGestureType as ForceTouchGesture } from './handlers/gestures/forceTouchGesture';
32
+ export type { NativeGestureType as NativeGesture } from './handlers/gestures/nativeGesture';
33
+ export type { ManualGestureType as ManualGesture } from './handlers/gestures/manualGesture';
34
+ export type { ComposedGestureType as ComposedGesture, RaceGestureType as RaceGesture, SimultaneousGestureType as SimultaneousGesture, ExclusiveGestureType as ExclusiveGesture, } from './handlers/gestures/gestureComposition';
35
+ export type { GestureStateManagerType as GestureStateManager } from './handlers/gestures/gestureStateManager';
36
36
  export { NativeViewGestureHandler } from './handlers/NativeViewGestureHandler';
37
37
  export type { RawButtonProps, BaseButtonProps, RectButtonProps, BorderlessButtonProps, } from './components/GestureButtons';
38
38
  export { RawButton, BaseButton, RectButton, BorderlessButton, } from './components/GestureButtons';
@@ -1,4 +1,3 @@
1
- import Hammer from '@egjs/hammerjs';
2
1
  export declare const CONTENT_TOUCHES_DELAY = 240;
3
2
  export declare const CONTENT_TOUCHES_QUICK_TAP_END_DELAY = 50;
4
3
  export declare const MULTI_FINGER_PAN_MAX_PINCH_THRESHOLD = 0.1;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-gesture-handler",
3
- "version": "2.0.0",
3
+ "version": "2.1.3",
4
4
  "description": "Experimental implementation of a new declarative API for gesture handling in react-native",
5
5
  "scripts": {
6
6
  "prepare": "bob build",
@@ -27,6 +27,7 @@
27
27
  "android/src/main/java/",
28
28
  "android/lib/build.gradle",
29
29
  "android/lib/src/main/java/",
30
+ "android/common/src/main/java/",
30
31
  "ios/",
31
32
  "Swipeable/",
32
33
  "DrawerLayout/",
@@ -256,8 +256,12 @@ function useAnimatedGesture(preparedGesture: GestureConfigReference) {
256
256
  return gesture.onStart;
257
257
  case CALLBACK_TYPE.UPDATE:
258
258
  return gesture.onUpdate;
259
+ case CALLBACK_TYPE.CHANGE:
260
+ return gesture.onChange;
259
261
  case CALLBACK_TYPE.END:
260
262
  return gesture.onEnd;
263
+ case CALLBACK_TYPE.FINALIZE:
264
+ return gesture.onFinalize;
261
265
  case CALLBACK_TYPE.TOUCHES_DOWN:
262
266
  return gesture.onTouchesDown;
263
267
  case CALLBACK_TYPE.TOUCHES_MOVE:
@@ -308,6 +312,11 @@ function useAnimatedGesture(preparedGesture: GestureConfigReference) {
308
312
  HandlerCallbacks<Record<string, unknown>>[] | null
309
313
  >(null);
310
314
 
315
+ // eslint-disable-next-line react-hooks/rules-of-hooks
316
+ const lastUpdateEvent = Reanimated.useSharedValue<
317
+ (GestureUpdateEvent | undefined)[]
318
+ >([]);
319
+
311
320
  // not every gesture needs a state controller, init them lazily
312
321
  const stateControllers: GestureStateManagerType[] = [];
313
322
 
@@ -337,16 +346,23 @@ function useAnimatedGesture(preparedGesture: GestureConfigReference) {
337
346
  event.state === State.ACTIVE
338
347
  ) {
339
348
  runWorklet(CALLBACK_TYPE.START, gesture, event);
349
+ lastUpdateEvent.value[gesture.handlerTag] = undefined;
340
350
  } else if (
341
351
  event.oldState !== event.state &&
342
352
  event.state === State.END
343
353
  ) {
344
- runWorklet(CALLBACK_TYPE.END, gesture, event, true);
354
+ if (event.oldState === State.ACTIVE) {
355
+ runWorklet(CALLBACK_TYPE.END, gesture, event, true);
356
+ }
357
+ runWorklet(CALLBACK_TYPE.FINALIZE, gesture, event, true);
345
358
  } else if (
346
359
  (event.state === State.FAILED || event.state === State.CANCELLED) &&
347
360
  event.state !== event.oldState
348
361
  ) {
349
- runWorklet(CALLBACK_TYPE.END, gesture, event, false);
362
+ if (event.oldState === State.ACTIVE) {
363
+ runWorklet(CALLBACK_TYPE.END, gesture, event, false);
364
+ }
365
+ runWorklet(CALLBACK_TYPE.FINALIZE, gesture, event, false);
350
366
  }
351
367
  } else if (isTouchEvent(event)) {
352
368
  if (!stateControllers[i]) {
@@ -363,6 +379,19 @@ function useAnimatedGesture(preparedGesture: GestureConfigReference) {
363
379
  }
364
380
  } else {
365
381
  runWorklet(CALLBACK_TYPE.UPDATE, gesture, event);
382
+
383
+ if (gesture.onChange && gesture.changeEventCalculator) {
384
+ runWorklet(
385
+ CALLBACK_TYPE.CHANGE,
386
+ gesture,
387
+ gesture.changeEventCalculator?.(
388
+ event,
389
+ lastUpdateEvent.value[gesture.handlerTag]
390
+ )
391
+ );
392
+
393
+ lastUpdateEvent.value[gesture.handlerTag] = event;
394
+ }
366
395
  }
367
396
  }
368
397
  }
@@ -36,6 +36,8 @@ const dummyStateManager: GestureStateManagerType = {
36
36
  },
37
37
  };
38
38
 
39
+ const lastUpdateEvent: (GestureUpdateEvent | undefined)[] = [];
40
+
39
41
  function isStateChangeEvent(
40
42
  event: GestureUpdateEvent | GestureStateChangeEvent | GestureTouchEvent
41
43
  ): event is GestureStateChangeEvent {
@@ -69,13 +71,22 @@ function onGestureHandlerEvent(
69
71
  event.state === State.ACTIVE
70
72
  ) {
71
73
  handler.handlers.onStart?.(event);
74
+ lastUpdateEvent[handler.handlers.handlerTag] = event;
72
75
  } else if (event.oldState !== event.state && event.state === State.END) {
73
- handler.handlers.onEnd?.(event, true);
76
+ if (event.oldState === State.ACTIVE) {
77
+ handler.handlers.onEnd?.(event, true);
78
+ }
79
+ handler.handlers.onFinalize?.(event, true);
80
+ lastUpdateEvent[handler.handlers.handlerTag] = undefined;
74
81
  } else if (
75
82
  (event.state === State.FAILED || event.state === State.CANCELLED) &&
76
83
  event.oldState !== event.state
77
84
  ) {
78
- handler.handlers.onEnd?.(event, false);
85
+ if (event.oldState === State.ACTIVE) {
86
+ handler.handlers.onEnd?.(event, false);
87
+ }
88
+ handler.handlers.onFinalize?.(event, false);
89
+ lastUpdateEvent[handler.handlers.handlerTag] = undefined;
79
90
  }
80
91
  } else if (isTouchEvent(event)) {
81
92
  switch (event.eventType) {
@@ -94,6 +105,17 @@ function onGestureHandlerEvent(
94
105
  }
95
106
  } else {
96
107
  handler.handlers.onUpdate?.(event);
108
+
109
+ if (handler.handlers.onChange && handler.handlers.changeEventCalculator) {
110
+ handler.handlers.onChange?.(
111
+ handler.handlers.changeEventCalculator?.(
112
+ event,
113
+ lastUpdateEvent[handler.handlers.handlerTag]
114
+ )
115
+ );
116
+
117
+ lastUpdateEvent[handler.handlers.handlerTag] = event;
118
+ }
97
119
  }
98
120
  }
99
121
  }
@@ -3,8 +3,35 @@ import {
3
3
  ForceTouchGestureConfig,
4
4
  ForceTouchGestureHandlerEventPayload,
5
5
  } from '../ForceTouchGestureHandler';
6
+ import { GestureUpdateEvent } from '../gestureHandlerCommon';
6
7
 
7
- export class ForceTouchGesture extends ContinousBaseGesture<ForceTouchGestureHandlerEventPayload> {
8
+ type ForceTouchGestureChangeEventPayload = {
9
+ forceChange: number;
10
+ };
11
+
12
+ function changeEventCalculator(
13
+ current: GestureUpdateEvent<ForceTouchGestureHandlerEventPayload>,
14
+ previous?: GestureUpdateEvent<ForceTouchGestureHandlerEventPayload>
15
+ ) {
16
+ 'worklet';
17
+ let changePayload: ForceTouchGestureChangeEventPayload;
18
+ if (previous === undefined) {
19
+ changePayload = {
20
+ forceChange: current.force,
21
+ };
22
+ } else {
23
+ changePayload = {
24
+ forceChange: current.force - previous.force,
25
+ };
26
+ }
27
+
28
+ return { ...current, ...changePayload };
29
+ }
30
+
31
+ export class ForceTouchGesture extends ContinousBaseGesture<
32
+ ForceTouchGestureHandlerEventPayload,
33
+ ForceTouchGestureChangeEventPayload
34
+ > {
8
35
  public config: BaseGestureConfig & ForceTouchGestureConfig = {};
9
36
 
10
37
  constructor() {
@@ -27,6 +54,21 @@ export class ForceTouchGesture extends ContinousBaseGesture<ForceTouchGestureHan
27
54
  this.config.feedbackOnActivation = value;
28
55
  return this;
29
56
  }
57
+
58
+ onChange(
59
+ callback: (
60
+ event: GestureUpdateEvent<
61
+ GestureUpdateEvent<
62
+ ForceTouchGestureHandlerEventPayload &
63
+ ForceTouchGestureChangeEventPayload
64
+ >
65
+ >
66
+ ) => void
67
+ ) {
68
+ // @ts-ignore TS being overprotective, ForceTouchGestureHandlerEventPayload is Record
69
+ this.handlers.changeEventCalculator = changeEventCalculator;
70
+ return super.onChange(callback);
71
+ }
30
72
  }
31
73
 
32
74
  export type ForceTouchGestureType = InstanceType<typeof ForceTouchGesture>;
@@ -56,11 +56,20 @@ export type HandlerCallbacks<EventPayloadT extends Record<string, unknown>> = {
56
56
  event: GestureStateChangeEvent<EventPayloadT>,
57
57
  success: boolean
58
58
  ) => void;
59
+ onFinalize?: (
60
+ event: GestureStateChangeEvent<EventPayloadT>,
61
+ success: boolean
62
+ ) => void;
59
63
  onUpdate?: (event: GestureUpdateEvent<EventPayloadT>) => void;
64
+ onChange?: (event: any) => void;
60
65
  onTouchesDown?: TouchEventHandlerType;
61
66
  onTouchesMove?: TouchEventHandlerType;
62
67
  onTouchesUp?: TouchEventHandlerType;
63
68
  onTouchesCancelled?: TouchEventHandlerType;
69
+ changeEventCalculator?: (
70
+ current: GestureUpdateEvent<Record<string, unknown>>,
71
+ previous?: GestureUpdateEvent<Record<string, unknown>>
72
+ ) => GestureUpdateEvent<Record<string, unknown>>;
64
73
  isWorklet: boolean[];
65
74
  };
66
75
 
@@ -69,11 +78,13 @@ export const CALLBACK_TYPE = {
69
78
  BEGAN: 1,
70
79
  START: 2,
71
80
  UPDATE: 3,
72
- END: 4,
73
- TOUCHES_DOWN: 5,
74
- TOUCHES_MOVE: 6,
75
- TOUCHES_UP: 7,
76
- TOUCHES_CANCELLED: 8,
81
+ CHANGE: 4,
82
+ END: 5,
83
+ FINALIZE: 6,
84
+ TOUCHES_DOWN: 7,
85
+ TOUCHES_MOVE: 8,
86
+ TOUCHES_UP: 9,
87
+ TOUCHES_CANCELLED: 10,
77
88
  } as const;
78
89
 
79
90
  // Allow using CALLBACK_TYPE as object and type
@@ -126,12 +137,8 @@ export abstract class BaseGesture<
126
137
  return this;
127
138
  }
128
139
 
129
- protected isWorklet(
130
- callback:
131
- | TouchEventHandlerType
132
- | ((event: GestureUpdateEvent<EventPayloadT>) => void)
133
- | ((event: GestureStateChangeEvent<EventPayloadT>) => void)
134
- ) {
140
+ // eslint-disable-next-line @typescript-eslint/ban-types
141
+ protected isWorklet(callback: Function) {
135
142
  //@ts-ignore if callback is a worklet, the property will be available, if not then the check will return false
136
143
  return callback.__workletHash !== undefined;
137
144
  }
@@ -160,6 +167,18 @@ export abstract class BaseGesture<
160
167
  return this;
161
168
  }
162
169
 
170
+ onFinalize(
171
+ callback: (
172
+ event: GestureStateChangeEvent<EventPayloadT>,
173
+ success: boolean
174
+ ) => void
175
+ ) {
176
+ this.handlers.onFinalize = callback;
177
+ //@ts-ignore if callback is a worklet, the property will be available, if not then the check will return false
178
+ this.handlers.isWorklet[CALLBACK_TYPE.FINALIZE] = this.isWorklet(callback);
179
+ return this;
180
+ }
181
+
163
182
  onTouchesDown(callback: TouchEventHandlerType) {
164
183
  this.config.needsPointerData = true;
165
184
  this.handlers.onTouchesDown = callback;
@@ -247,7 +266,8 @@ export abstract class BaseGesture<
247
266
  }
248
267
 
249
268
  export abstract class ContinousBaseGesture<
250
- EventPayloadT extends Record<string, unknown>
269
+ EventPayloadT extends Record<string, unknown>,
270
+ EventChangePayloadT extends Record<string, unknown>
251
271
  > extends BaseGesture<EventPayloadT> {
252
272
  onUpdate(callback: (event: GestureUpdateEvent<EventPayloadT>) => void) {
253
273
  this.handlers.onUpdate = callback;
@@ -255,6 +275,16 @@ export abstract class ContinousBaseGesture<
255
275
  return this;
256
276
  }
257
277
 
278
+ onChange(
279
+ callback: (
280
+ event: GestureUpdateEvent<EventPayloadT & EventChangePayloadT>
281
+ ) => void
282
+ ) {
283
+ this.handlers.onChange = callback;
284
+ this.handlers.isWorklet[CALLBACK_TYPE.CHANGE] = this.isWorklet(callback);
285
+ return this;
286
+ }
287
+
258
288
  manualActivation(manualActivation: boolean) {
259
289
  this.config.manualActivation = manualActivation;
260
290
  return this;