react-native-gesture-handler 2.0.0 → 2.1.3

Sign up to get free protection for your applications and to get access to all the features.
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;