react-native-gesture-handler 2.4.0 → 2.5.0
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.
- package/README.md +3 -2
- package/android/build.gradle +28 -4
- package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.kt +9 -5
- package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.kt +6 -1
- package/android/lib/src/main/java/com/swmansion/gesturehandler/NativeViewGestureHandler.kt +103 -22
- package/android/lib/src/main/java/com/swmansion/gesturehandler/PanGestureHandler.kt +29 -2
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +74 -84
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +4 -0
- package/android/src/main/jni/Android.mk +1 -2
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerDelegate.java +12 -9
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerInterface.java +1 -0
- package/ios/Handlers/RNFlingHandler.m +43 -1
- package/ios/Handlers/{RNNativeViewHandler.m → RNNativeViewHandler.mm} +13 -1
- package/ios/Handlers/RNPanHandler.m +27 -0
- package/ios/RNGestureHandler.h +1 -0
- package/ios/RNGestureHandler.m +22 -4
- package/ios/RNGestureHandlerManager.mm +10 -2
- package/ios/RNGestureHandlerModule.mm +4 -1
- package/ios/RNManualActivationRecognizer.m +10 -3
- package/ios/RNRootViewGestureRecognizer.m +12 -1
- package/lib/commonjs/RNGestureHandlerModule.macos.js +81 -0
- package/lib/commonjs/RNGestureHandlerModule.macos.js.map +1 -0
- package/lib/commonjs/components/DrawerLayout.js +38 -11
- package/lib/commonjs/components/DrawerLayout.js.map +1 -1
- package/lib/commonjs/components/GestureButtons.js.map +1 -1
- package/lib/commonjs/components/touchables/GenericTouchable.js +4 -1
- package/lib/commonjs/components/touchables/GenericTouchable.js.map +1 -1
- package/lib/commonjs/fabric/RNGestureHandlerButtonNativeComponent.js.map +1 -1
- package/lib/commonjs/handlers/ForceTouchGestureHandler.js +2 -1
- package/lib/commonjs/handlers/ForceTouchGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/PanGestureHandler.js +1 -1
- package/lib/commonjs/handlers/PanGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/PressabilityDebugView.js +14 -0
- package/lib/commonjs/handlers/PressabilityDebugView.js.map +1 -0
- package/lib/commonjs/handlers/PressabilityDebugView.web.js +12 -0
- package/lib/commonjs/handlers/PressabilityDebugView.web.js.map +1 -0
- package/lib/commonjs/handlers/createHandler.js +25 -11
- package/lib/commonjs/handlers/createHandler.js.map +1 -1
- package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector.js +83 -63
- package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gesture.js +13 -2
- package/lib/commonjs/handlers/gestures/gesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gestureStateManager.js +13 -9
- package/lib/commonjs/handlers/gestures/gestureStateManager.js.map +1 -1
- package/lib/commonjs/handlers/gestures/panGesture.js +5 -0
- package/lib/commonjs/handlers/gestures/panGesture.js.map +1 -1
- package/lib/commonjs/mocks.js +2 -0
- package/lib/commonjs/mocks.js.map +1 -1
- package/lib/commonjs/utils.js +6 -3
- package/lib/commonjs/utils.js.map +1 -1
- package/lib/commonjs/web/utils.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.macos.js +57 -0
- package/lib/module/RNGestureHandlerModule.macos.js.map +1 -0
- package/lib/module/components/DrawerLayout.js +38 -11
- package/lib/module/components/DrawerLayout.js.map +1 -1
- package/lib/module/components/GestureButtons.js.map +1 -1
- package/lib/module/components/touchables/GenericTouchable.js +4 -1
- package/lib/module/components/touchables/GenericTouchable.js.map +1 -1
- package/lib/module/fabric/RNGestureHandlerButtonNativeComponent.js.map +1 -1
- package/lib/module/handlers/ForceTouchGestureHandler.js +1 -1
- package/lib/module/handlers/ForceTouchGestureHandler.js.map +1 -1
- package/lib/module/handlers/PanGestureHandler.js +1 -1
- package/lib/module/handlers/PanGestureHandler.js.map +1 -1
- package/lib/module/handlers/PressabilityDebugView.js +3 -0
- package/lib/module/handlers/PressabilityDebugView.js.map +1 -0
- package/lib/module/handlers/PressabilityDebugView.web.js +5 -0
- package/lib/module/handlers/PressabilityDebugView.web.js.map +1 -0
- package/lib/module/handlers/createHandler.js +26 -12
- package/lib/module/handlers/createHandler.js.map +1 -1
- package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector.js +83 -63
- package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/module/handlers/gestures/gesture.js +13 -2
- package/lib/module/handlers/gestures/gesture.js.map +1 -1
- package/lib/module/handlers/gestures/gestureStateManager.js +13 -9
- package/lib/module/handlers/gestures/gestureStateManager.js.map +1 -1
- package/lib/module/handlers/gestures/panGesture.js +5 -0
- package/lib/module/handlers/gestures/panGesture.js.map +1 -1
- package/lib/module/mocks.js +2 -0
- package/lib/module/mocks.js.map +1 -1
- package/lib/module/utils.js +2 -1
- package/lib/module/utils.js.map +1 -1
- package/lib/module/web/utils.js.map +1 -1
- package/lib/typescript/RNGestureHandlerModule.macos.d.ts +34 -0
- package/lib/typescript/RNGestureHandlerModule.web.d.ts +1 -1
- package/lib/typescript/components/DrawerLayout.d.ts +3 -0
- package/lib/typescript/components/GestureButtons.d.ts +6 -0
- package/lib/typescript/fabric/RNGestureHandlerButtonNativeComponent.d.ts +1 -0
- package/lib/typescript/handlers/ForceTouchGestureHandler.d.ts +2 -2
- package/lib/typescript/handlers/PanGestureHandler.d.ts +2 -1
- package/lib/typescript/handlers/PressabilityDebugView.d.ts +1 -0
- package/lib/typescript/handlers/PressabilityDebugView.web.d.ts +1 -0
- package/lib/typescript/handlers/gestureHandlerCommon.d.ts +1 -0
- package/lib/typescript/handlers/gestures/GestureDetector.d.ts +2 -1
- package/lib/typescript/handlers/gestures/gesture.d.ts +3 -0
- package/lib/typescript/handlers/gestures/panGesture.d.ts +1 -0
- package/lib/typescript/mocks.d.ts +1 -0
- package/lib/typescript/web/NodeManager.d.ts +2 -2
- package/package.json +1 -1
- package/src/RNGestureHandlerModule.macos.ts +62 -0
- package/src/components/DrawerLayout.tsx +34 -10
- package/src/components/GestureButtons.tsx +7 -0
- package/src/components/touchables/GenericTouchable.tsx +1 -0
- package/src/fabric/RNGestureHandlerButtonNativeComponent.ts +1 -0
- package/src/handlers/ForceTouchGestureHandler.ts +3 -2
- package/src/handlers/PanGestureHandler.ts +2 -0
- package/src/handlers/PressabilityDebugView.tsx +2 -0
- package/src/handlers/PressabilityDebugView.web.tsx +4 -0
- package/src/handlers/{createHandler.ts → createHandler.tsx} +32 -17
- package/src/handlers/gestureHandlerCommon.ts +2 -0
- package/src/handlers/gestures/GestureDetector.tsx +107 -81
- package/src/handlers/gestures/gesture.ts +16 -0
- package/src/handlers/gestures/gestureStateManager.ts +13 -8
- package/src/handlers/gestures/panGesture.ts +5 -0
- package/src/mocks.ts +2 -0
- package/src/utils.ts +3 -1
- package/src/web/utils.ts +1 -1
- package/ios/RNGestureHandler.xcodeproj/project.xcworkspace/xcuserdata/jakubpiasecki.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/ios/RNGestureHandler.xcodeproj/xcuserdata/jakubpiasecki.xcuserdatad/xcschemes/xcschememanagement.plist +0 -19
package/lib/module/mocks.js
CHANGED
|
@@ -10,6 +10,7 @@ const attachGestureHandler = NOOP;
|
|
|
10
10
|
const createGestureHandler = NOOP;
|
|
11
11
|
const dropGestureHandler = NOOP;
|
|
12
12
|
const updateGestureHandler = NOOP;
|
|
13
|
+
const flushOperations = NOOP;
|
|
13
14
|
const NativeViewGestureHandler = View;
|
|
14
15
|
const TapGestureHandler = View;
|
|
15
16
|
const ForceTouchGestureHandler = View;
|
|
@@ -47,6 +48,7 @@ export default {
|
|
|
47
48
|
createGestureHandler,
|
|
48
49
|
dropGestureHandler,
|
|
49
50
|
updateGestureHandler,
|
|
51
|
+
flushOperations,
|
|
50
52
|
// probably can be removed
|
|
51
53
|
Directions,
|
|
52
54
|
State
|
package/lib/module/mocks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["mocks.ts"],"names":["TouchableHighlight","TouchableNativeFeedback","TouchableOpacity","TouchableWithoutFeedback","ScrollView","FlatList","Switch","TextInput","DrawerLayoutAndroid","View","State","Directions","NOOP","PanGestureHandler","attachGestureHandler","createGestureHandler","dropGestureHandler","updateGestureHandler","NativeViewGestureHandler","TapGestureHandler","ForceTouchGestureHandler","LongPressGestureHandler","PinchGestureHandler","RotationGestureHandler","FlingGestureHandler","RawButton","BaseButton","RectButton","BorderlessButton"],"mappings":"AAAA,SACEA,kBADF,EAEEC,uBAFF,EAGEC,gBAHF,EAIEC,wBAJF,EAKEC,UALF,EAMEC,QANF,EAOEC,MAPF,EAQEC,SARF,EASEC,mBATF,EAUEC,IAVF,QAWO,cAXP;AAYA,SAASC,KAAT,QAAsB,SAAtB;AACA,SAASC,UAAT,QAA2B,cAA3B;;AAEA,MAAMC,IAAI,GAAG,MAAM,CACjB;AACD,CAFD;;AAGA,MAAMC,iBAAiB,GAAGJ,IAA1B;AACA,MAAMK,oBAAoB,GAAGF,IAA7B;AACA,MAAMG,oBAAoB,GAAGH,IAA7B;AACA,MAAMI,kBAAkB,GAAGJ,IAA3B;AACA,MAAMK,oBAAoB,GAAGL,IAA7B;AACA,MAAMM,wBAAwB,
|
|
1
|
+
{"version":3,"sources":["mocks.ts"],"names":["TouchableHighlight","TouchableNativeFeedback","TouchableOpacity","TouchableWithoutFeedback","ScrollView","FlatList","Switch","TextInput","DrawerLayoutAndroid","View","State","Directions","NOOP","PanGestureHandler","attachGestureHandler","createGestureHandler","dropGestureHandler","updateGestureHandler","flushOperations","NativeViewGestureHandler","TapGestureHandler","ForceTouchGestureHandler","LongPressGestureHandler","PinchGestureHandler","RotationGestureHandler","FlingGestureHandler","RawButton","BaseButton","RectButton","BorderlessButton"],"mappings":"AAAA,SACEA,kBADF,EAEEC,uBAFF,EAGEC,gBAHF,EAIEC,wBAJF,EAKEC,UALF,EAMEC,QANF,EAOEC,MAPF,EAQEC,SARF,EASEC,mBATF,EAUEC,IAVF,QAWO,cAXP;AAYA,SAASC,KAAT,QAAsB,SAAtB;AACA,SAASC,UAAT,QAA2B,cAA3B;;AAEA,MAAMC,IAAI,GAAG,MAAM,CACjB;AACD,CAFD;;AAGA,MAAMC,iBAAiB,GAAGJ,IAA1B;AACA,MAAMK,oBAAoB,GAAGF,IAA7B;AACA,MAAMG,oBAAoB,GAAGH,IAA7B;AACA,MAAMI,kBAAkB,GAAGJ,IAA3B;AACA,MAAMK,oBAAoB,GAAGL,IAA7B;AACA,MAAMM,eAAe,GAAGN,IAAxB;AACA,MAAMO,wBAAwB,GAAGV,IAAjC;AACA,MAAMW,iBAAiB,GAAGX,IAA1B;AACA,MAAMY,wBAAwB,GAAGZ,IAAjC;AACA,MAAMa,uBAAuB,GAAGb,IAAhC;AACA,MAAMc,mBAAmB,GAAGd,IAA5B;AACA,MAAMe,sBAAsB,GAAGf,IAA/B;AACA,MAAMgB,mBAAmB,GAAGhB,IAA5B;AACA,MAAMiB,SAAS,GAAGzB,uBAAlB;AACA,MAAM0B,UAAU,GAAG1B,uBAAnB;AACA,MAAM2B,UAAU,GAAG3B,uBAAnB;AACA,MAAM4B,gBAAgB,GAAG5B,uBAAzB;AAEA,eAAe;AACbD,EAAAA,kBADa;AAEbC,EAAAA,uBAFa;AAGbC,EAAAA,gBAHa;AAIbC,EAAAA,wBAJa;AAKbC,EAAAA,UALa;AAMbC,EAAAA,QANa;AAObC,EAAAA,MAPa;AAQbC,EAAAA,SARa;AASbC,EAAAA,mBATa;AAUbW,EAAAA,wBAVa;AAWbC,EAAAA,iBAXa;AAYbC,EAAAA,wBAZa;AAabC,EAAAA,uBAba;AAcbC,EAAAA,mBAda;AAebC,EAAAA,sBAfa;AAgBbC,EAAAA,mBAhBa;AAiBbC,EAAAA,SAjBa;AAkBbC,EAAAA,UAlBa;AAmBbC,EAAAA,UAnBa;AAoBbC,EAAAA,gBApBa;AAqBbhB,EAAAA,iBArBa;AAsBbC,EAAAA,oBAtBa;AAuBbC,EAAAA,oBAvBa;AAwBbC,EAAAA,kBAxBa;AAyBbC,EAAAA,oBAzBa;AA0BbC,EAAAA,eA1Ba;AA2Bb;AACAP,EAAAA,UA5Ba;AA6BbD,EAAAA;AA7Ba,CAAf","sourcesContent":["import {\n TouchableHighlight,\n TouchableNativeFeedback,\n TouchableOpacity,\n TouchableWithoutFeedback,\n ScrollView,\n FlatList,\n Switch,\n TextInput,\n DrawerLayoutAndroid,\n View,\n} from 'react-native';\nimport { State } from './State';\nimport { Directions } from './Directions';\n\nconst NOOP = () => {\n // do nothing\n};\nconst PanGestureHandler = View;\nconst attachGestureHandler = NOOP;\nconst createGestureHandler = NOOP;\nconst dropGestureHandler = NOOP;\nconst updateGestureHandler = NOOP;\nconst flushOperations = NOOP;\nconst NativeViewGestureHandler = View;\nconst TapGestureHandler = View;\nconst ForceTouchGestureHandler = View;\nconst LongPressGestureHandler = View;\nconst PinchGestureHandler = View;\nconst RotationGestureHandler = View;\nconst FlingGestureHandler = View;\nconst RawButton = TouchableNativeFeedback;\nconst BaseButton = TouchableNativeFeedback;\nconst RectButton = TouchableNativeFeedback;\nconst BorderlessButton = TouchableNativeFeedback;\n\nexport default {\n TouchableHighlight,\n TouchableNativeFeedback,\n TouchableOpacity,\n TouchableWithoutFeedback,\n ScrollView,\n FlatList,\n Switch,\n TextInput,\n DrawerLayoutAndroid,\n NativeViewGestureHandler,\n TapGestureHandler,\n ForceTouchGestureHandler,\n LongPressGestureHandler,\n PinchGestureHandler,\n RotationGestureHandler,\n FlingGestureHandler,\n RawButton,\n BaseButton,\n RectButton,\n BorderlessButton,\n PanGestureHandler,\n attachGestureHandler,\n createGestureHandler,\n dropGestureHandler,\n updateGestureHandler,\n flushOperations,\n // probably can be removed\n Directions,\n State,\n} as const;\n"]}
|
package/lib/module/utils.js
CHANGED
package/lib/module/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["utils.ts"],"names":["
|
|
1
|
+
{"version":3,"sources":["utils.ts"],"names":["pack","rnVersion","version","toArray","object","Array","isArray","withPrevAndCurrent","array","mapFn","previousArr","currentArr","transformedArr","forEach","current","i","previous","transformed","push","hasProperty","key","Object","prototype","hasOwnProperty","call","isJestEnv","global","process","env","JEST_WORKER_ID","tagMessage","msg","isFabric","nativeFabricUIManager","shouldUseCodegenNativeComponent","majorStr","minorStr","split","major","Number","parseInt","minor","isRemoteDebuggingEnabled","nativeCallSyncHook","__REMOTEDEV__"],"mappings":"AAAA,OAAOA,IAAP,MAAiB,2BAAjB;AAEA,MAAMC,SAAS,GAAGD,IAAI,CAACE,OAAvB;AAEA,OAAO,SAASC,OAAT,CAAoBC,MAApB,EAA0C;AAC/C,MAAI,CAACC,KAAK,CAACC,OAAN,CAAcF,MAAd,CAAL,EAA4B;AAC1B,WAAO,CAACA,MAAD,CAAP;AACD;;AAED,SAAOA,MAAP;AACD;AAMD,OAAO,SAASG,kBAAT,CACLC,KADK,EAELC,KAFK,EAGU;AACf,QAAMC,WAAmC,GAAG,CAAC,IAAD,CAA5C;AACA,QAAMC,UAAU,GAAG,CAAC,GAAGH,KAAJ,CAAnB;AACA,QAAMI,cAA6B,GAAG,EAAtC;AACAD,EAAAA,UAAU,CAACE,OAAX,CAAmB,CAACC,OAAD,EAAUC,CAAV,KAAgB;AACjC,UAAMC,QAAQ,GAAGN,WAAW,CAACK,CAAD,CAA5B;AACA,UAAME,WAAW,GAAGR,KAAK,CAACO,QAAD,EAAWF,OAAX,CAAzB;AACAJ,IAAAA,WAAW,CAACQ,IAAZ,CAAiBD,WAAjB;AACAL,IAAAA,cAAc,CAACM,IAAf,CAAoBD,WAApB;AACD,GALD;AAMA,SAAOL,cAAP;AACD,C,CAED;;AACA,OAAO,SAASO,WAAT,CAAqBf,MAArB,EAAqCgB,GAArC,EAAkD;AACvD,SAAOC,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCpB,MAArC,EAA6CgB,GAA7C,CAAP;AACD;AAED,OAAO,SAASK,SAAT,GAA8B;AACnC;AACA,SAAON,WAAW,CAACO,MAAD,EAAS,SAAT,CAAX,IAAkC,CAAC,CAACC,OAAO,CAACC,GAAR,CAAYC,cAAvD;AACD;AAED,OAAO,SAASC,UAAT,CAAoBC,GAApB,EAAiC;AACtC,SAAQ,kCAAiCA,GAAI,EAA7C;AACD,C,CAED;AACA;;AACA,OAAO,SAASC,QAAT,GAA6B;AAAA;;AAClC;AACA,SAAO,CAAC,aAACN,MAAD,oCAAC,QAAQO,qBAAT,CAAR;AACD;AAED,OAAO,SAASC,+BAAT,GAAoD;AACzD,QAAM,CAACC,QAAD,EAAWC,QAAX,IAAuBnC,SAAS,CAACoC,KAAV,CAAgB,GAAhB,CAA7B;AACA,QAAMC,KAAK,GAAGC,MAAM,CAACC,QAAP,CAAgBL,QAAhB,CAAd;AACA,QAAMM,KAAK,GAAGF,MAAM,CAACC,QAAP,CAAgBJ,QAAhB,CAAd,CAHyD,CAKzD;;AACA,SAAOK,KAAK,IAAI,EAAT,IAAeH,KAAK,GAAG,CAA9B;AACD;AAED,OAAO,SAASI,wBAAT,GAA6C;AAClD;AACA;AACA,SAAO,CAAEhB,MAAD,CAAgBiB,kBAAjB,IAAwCjB,MAAD,CAAgBkB,aAA9D;AACD","sourcesContent":["import pack from 'react-native/package.json';\n\nconst rnVersion = pack.version;\n\nexport function toArray<T>(object: T | T[]): T[] {\n if (!Array.isArray(object)) {\n return [object];\n }\n\n return object;\n}\n\nexport type withPrevAndCurrentMapFn<T, Transformed> = (\n previous: Transformed | null,\n current: T\n) => Transformed;\nexport function withPrevAndCurrent<T, Transformed>(\n array: T[],\n mapFn: withPrevAndCurrentMapFn<T, Transformed>\n): Transformed[] {\n const previousArr: (null | Transformed)[] = [null];\n const currentArr = [...array];\n const transformedArr: Transformed[] = [];\n currentArr.forEach((current, i) => {\n const previous = previousArr[i];\n const transformed = mapFn(previous, current);\n previousArr.push(transformed);\n transformedArr.push(transformed);\n });\n return transformedArr;\n}\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function hasProperty(object: object, key: string) {\n return Object.prototype.hasOwnProperty.call(object, key);\n}\n\nexport function isJestEnv(): boolean {\n // @ts-ignore Do not use `@types/node` because it will prioritise Node types over RN types which breaks the types (ex. setTimeout) in React Native projects.\n return hasProperty(global, 'process') && !!process.env.JEST_WORKER_ID;\n}\n\nexport function tagMessage(msg: string) {\n return `[react-native-gesture-handler] ${msg}`;\n}\n\n// helper method to check whether Fabric is enabled, however global.nativeFabricUIManager\n// may not be initialized before the first render\nexport function isFabric(): boolean {\n // @ts-expect-error nativeFabricUIManager is not yet included in the RN types\n return !!global?.nativeFabricUIManager;\n}\n\nexport function shouldUseCodegenNativeComponent(): boolean {\n const [majorStr, minorStr] = rnVersion.split('.');\n const major = Number.parseInt(majorStr);\n const minor = Number.parseInt(minorStr);\n\n // use codegenNativeComponent starting with RN 0.68\n return minor >= 68 || major > 0;\n}\n\nexport function isRemoteDebuggingEnabled(): boolean {\n // react-native-reanimated checks if in remote debugging in the same way\n // @ts-ignore global is available but node types are not included\n return !(global as any).nativeCallSyncHook || (global as any).__REMOTEDEV__;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["utils.ts"],"names":["isnan","v","Number","isNaN","isValidNumber","TEST_MIN_IF_NOT_NAN","value","limit","VEC_LEN_SQ","x","y","TEST_MAX_IF_NOT_NAN","max","fireAfterInterval","method","interval","setTimeout"],"mappings":"AAAA;AACA,OAAO,MAAMA,KAAK,GAAIC,CAAD,IAAgBC,MAAM,CAACC,KAAP,CAAaF,CAAb,CAA9B,C,CAEP;;AACA,OAAO,MAAMG,aAAa,GAAIH,CAAD,IAC3B,OAAOA,CAAP,KAAa,QAAb,IAAyB,CAACC,MAAM,CAACC,KAAP,CAAaF,CAAb,CADrB;AAGP,OAAO,MAAMI,mBAAmB,GAAG,CAACC,KAAD,EAAgBC,KAAhB,KACjC,CAACP,KAAK,CAACO,KAAD,CAAN,KACEA,KAAK,GAAG,CAAR,IAAaD,KAAK,IAAIC,KAAvB,IAAkCA,KAAK,IAAI,CAAT,IAAcD,KAAK,IAAIC,KAD1D,CADK;AAGP,OAAO,MAAMC,UAAU,GAAG,CAAC;AAAEC,EAAAA,CAAC,GAAG,CAAN;AAASC,EAAAA,CAAC,GAAG;AAAb,IAAmB,EAApB,KAA2BD,CAAC,GAAGA,CAAJ,GAAQC,CAAC,GAAGA,CAA1D;AACP,OAAO,MAAMC,mBAAmB,GAAG,CAACL,KAAD,EAAgBM,GAAhB,KACjC,CAACZ,KAAK,CAACY,GAAD,CAAN,KAAiBA,GAAG,GAAG,CAAN,IAAWN,KAAK,GAAGM,GAApB,IAA6BA,GAAG,IAAI,CAAP,IAAYN,KAAK,GAAGM,GAAjE,CADK;AAGP,OAAO,SAASC,iBAAT,CACLC,MADK,EAELC,QAFK,EAGL;AACA,MAAI,CAACA,QAAL,EAAe;AACbD,IAAAA,MAAM;AACN,WAAO,IAAP;AACD;;AACD,SAAOE,UAAU,CAAC,MAAMF,MAAM,EAAb,EAAiBC,QAAjB,CAAjB;AACD","sourcesContent":["// TODO(TS) remove if not necessary after rewrite\nexport const isnan = (v: unknown) => Number.isNaN(v);\n\n// TODO(TS) remove if not necessary after rewrite\nexport const isValidNumber = (v: unknown) =>\n typeof v === 'number' && !Number.isNaN(v);\n\nexport const TEST_MIN_IF_NOT_NAN = (value: number, limit: number): boolean =>\n !isnan(limit) &&\n ((limit < 0 && value <= limit) || (limit >= 0 && value >= limit));\nexport const VEC_LEN_SQ = ({ x = 0, y = 0 } = {}) => x * x + y * y;\nexport const TEST_MAX_IF_NOT_NAN = (value: number, max: number) =>\n !isnan(max) && ((max < 0 && value < max) || (max >= 0 && value > max));\n\nexport function fireAfterInterval(\n method: () => void,\n interval?: number | boolean\n) {\n if (!interval) {\n method();\n return null;\n }\n return setTimeout(() => method(), interval);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["utils.ts"],"names":["isnan","v","Number","isNaN","isValidNumber","TEST_MIN_IF_NOT_NAN","value","limit","VEC_LEN_SQ","x","y","TEST_MAX_IF_NOT_NAN","max","fireAfterInterval","method","interval","setTimeout"],"mappings":"AAAA;AACA,OAAO,MAAMA,KAAK,GAAIC,CAAD,IAAgBC,MAAM,CAACC,KAAP,CAAaF,CAAb,CAA9B,C,CAEP;;AACA,OAAO,MAAMG,aAAa,GAAIH,CAAD,IAC3B,OAAOA,CAAP,KAAa,QAAb,IAAyB,CAACC,MAAM,CAACC,KAAP,CAAaF,CAAb,CADrB;AAGP,OAAO,MAAMI,mBAAmB,GAAG,CAACC,KAAD,EAAgBC,KAAhB,KACjC,CAACP,KAAK,CAACO,KAAD,CAAN,KACEA,KAAK,GAAG,CAAR,IAAaD,KAAK,IAAIC,KAAvB,IAAkCA,KAAK,IAAI,CAAT,IAAcD,KAAK,IAAIC,KAD1D,CADK;AAGP,OAAO,MAAMC,UAAU,GAAG,CAAC;AAAEC,EAAAA,CAAC,GAAG,CAAN;AAASC,EAAAA,CAAC,GAAG;AAAb,IAAmB,EAApB,KAA2BD,CAAC,GAAGA,CAAJ,GAAQC,CAAC,GAAGA,CAA1D;AACP,OAAO,MAAMC,mBAAmB,GAAG,CAACL,KAAD,EAAgBM,GAAhB,KACjC,CAACZ,KAAK,CAACY,GAAD,CAAN,KAAiBA,GAAG,GAAG,CAAN,IAAWN,KAAK,GAAGM,GAApB,IAA6BA,GAAG,IAAI,CAAP,IAAYN,KAAK,GAAGM,GAAjE,CADK;AAGP,OAAO,SAASC,iBAAT,CACLC,MADK,EAELC,QAFK,EAGL;AACA,MAAI,CAACA,QAAL,EAAe;AACbD,IAAAA,MAAM;AACN,WAAO,IAAP;AACD;;AACD,SAAOE,UAAU,CAAC,MAAMF,MAAM,EAAb,EAAiBC,QAAjB,CAAjB;AACD","sourcesContent":["// TODO(TS) remove if not necessary after rewrite\nexport const isnan = (v: unknown) => Number.isNaN(v);\n\n// TODO(TS) remove if not necessary after rewrite\nexport const isValidNumber = (v: unknown) =>\n typeof v === 'number' && !Number.isNaN(v);\n\nexport const TEST_MIN_IF_NOT_NAN = (value: number, limit: number): boolean =>\n !isnan(limit) &&\n ((limit < 0 && value <= limit) || (limit >= 0 && value >= limit));\nexport const VEC_LEN_SQ = ({ x = 0, y = 0 } = {}) => x * x + y * y;\nexport const TEST_MAX_IF_NOT_NAN = (value: number, max: number) =>\n !isnan(max) && ((max < 0 && value < max) || (max >= 0 && value > max));\n\nexport function fireAfterInterval(\n method: () => void,\n interval?: number | boolean\n) {\n if (!interval) {\n method();\n return null;\n }\n return setTimeout(() => method(), interval as number);\n}\n"]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ActionType } from './ActionType';
|
|
2
|
+
import FlingGestureHandler from './web/FlingGestureHandler';
|
|
3
|
+
import LongPressGestureHandler from './web/LongPressGestureHandler';
|
|
4
|
+
import NativeViewGestureHandler from './web/NativeViewGestureHandler';
|
|
5
|
+
import PanGestureHandler from './web/PanGestureHandler';
|
|
6
|
+
import PinchGestureHandler from './web/PinchGestureHandler';
|
|
7
|
+
import RotationGestureHandler from './web/RotationGestureHandler';
|
|
8
|
+
import TapGestureHandler from './web/TapGestureHandler';
|
|
9
|
+
export declare const Gestures: {
|
|
10
|
+
PanGestureHandler: typeof PanGestureHandler;
|
|
11
|
+
RotationGestureHandler: typeof RotationGestureHandler;
|
|
12
|
+
PinchGestureHandler: typeof PinchGestureHandler;
|
|
13
|
+
TapGestureHandler: typeof TapGestureHandler;
|
|
14
|
+
NativeViewGestureHandler: typeof NativeViewGestureHandler;
|
|
15
|
+
LongPressGestureHandler: typeof LongPressGestureHandler;
|
|
16
|
+
FlingGestureHandler: typeof FlingGestureHandler;
|
|
17
|
+
};
|
|
18
|
+
declare const _default: {
|
|
19
|
+
Direction: {
|
|
20
|
+
RIGHT: number;
|
|
21
|
+
LEFT: number;
|
|
22
|
+
UP: number;
|
|
23
|
+
DOWN: number;
|
|
24
|
+
};
|
|
25
|
+
handleSetJSResponder(): void;
|
|
26
|
+
handleClearJSResponder(): void;
|
|
27
|
+
createGestureHandler<T>(handlerName: keyof typeof Gestures, handlerTag: number, config: T): void;
|
|
28
|
+
attachGestureHandler(handlerTag: number, newView: number, _actionType: ActionType, propsRef: React.RefObject<unknown>): void;
|
|
29
|
+
updateGestureHandler(handlerTag: number, newConfig: any): void;
|
|
30
|
+
getGestureHandlerNode(handlerTag: number): LongPressGestureHandler | NativeViewGestureHandler | PanGestureHandler | RotationGestureHandler | PinchGestureHandler | TapGestureHandler | FlingGestureHandler;
|
|
31
|
+
dropGestureHandler(handlerTag: number): void;
|
|
32
|
+
flushOperations(): void;
|
|
33
|
+
};
|
|
34
|
+
export default _default;
|
|
@@ -27,7 +27,7 @@ declare const _default: {
|
|
|
27
27
|
createGestureHandler<T>(handlerName: keyof typeof Gestures, handlerTag: number, config: T): void;
|
|
28
28
|
attachGestureHandler(handlerTag: number, newView: number, _actionType: ActionType, propsRef: React.RefObject<unknown>): void;
|
|
29
29
|
updateGestureHandler(handlerTag: number, newConfig: any): void;
|
|
30
|
-
getGestureHandlerNode(handlerTag: number):
|
|
30
|
+
getGestureHandlerNode(handlerTag: number): LongPressGestureHandler | NativeViewGestureHandler | PanGestureHandler | RotationGestureHandler | PinchGestureHandler | TapGestureHandler | FlingGestureHandler;
|
|
31
31
|
dropGestureHandler(handlerTag: number): void;
|
|
32
32
|
flushOperations(): void;
|
|
33
33
|
};
|
|
@@ -78,12 +78,15 @@ export interface DrawerLayoutProps {
|
|
|
78
78
|
enableTrackpadTwoFingerGesture?: boolean;
|
|
79
79
|
onDrawerSlide?: (position: number) => void;
|
|
80
80
|
onGestureRef?: (ref: PanGestureHandler) => void;
|
|
81
|
+
children?: React.ReactNode | ((openValue?: Animated.AnimatedInterpolation) => React.ReactNode);
|
|
81
82
|
}
|
|
82
83
|
export declare type DrawerLayoutState = {
|
|
83
84
|
dragX: Animated.Value;
|
|
84
85
|
touchX: Animated.Value;
|
|
85
86
|
drawerTranslation: Animated.Value;
|
|
86
87
|
containerWidth: number;
|
|
88
|
+
drawerState: DrawerState;
|
|
89
|
+
drawerOpened: boolean;
|
|
87
90
|
};
|
|
88
91
|
export declare type DrawerMovementOption = {
|
|
89
92
|
velocity?: number;
|
|
@@ -31,6 +31,12 @@ export interface RawButtonProps extends NativeViewGestureHandlerProps {
|
|
|
31
31
|
* Defines whether the ripple animation should be drawn on the foreground of the view.
|
|
32
32
|
*/
|
|
33
33
|
foreground?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Android only.
|
|
36
|
+
*
|
|
37
|
+
* Set this to true if you don't want the system to play sound when the button is pressed.
|
|
38
|
+
*/
|
|
39
|
+
touchSoundDisabled?: boolean;
|
|
34
40
|
}
|
|
35
41
|
export interface BaseButtonProps extends RawButtonProps {
|
|
36
42
|
/**
|
|
@@ -8,6 +8,7 @@ interface NativeProps extends ViewProps {
|
|
|
8
8
|
enabled?: WithDefault<boolean, true>;
|
|
9
9
|
rippleColor?: ColorValue;
|
|
10
10
|
rippleRadius?: Int32;
|
|
11
|
+
touchSoundDisabled?: WithDefault<boolean, false>;
|
|
11
12
|
}
|
|
12
13
|
declare const _default: HostComponent<NativeProps>;
|
|
13
14
|
export default _default;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { PropsWithChildren } from 'react';
|
|
2
2
|
import { BaseGestureHandlerProps } from './gestureHandlerCommon';
|
|
3
3
|
export declare const forceTouchGestureHandlerProps: readonly ["minForce", "maxForce", "feedbackOnActivation"];
|
|
4
|
-
declare class ForceTouchFallback extends React.Component {
|
|
4
|
+
declare class ForceTouchFallback extends React.Component<PropsWithChildren<unknown>> {
|
|
5
5
|
static forceTouchAvailable: boolean;
|
|
6
6
|
componentDidMount(): void;
|
|
7
7
|
render(): React.ReactNode;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BaseGestureHandlerProps } from './gestureHandlerCommon';
|
|
2
|
-
export declare const panGestureHandlerProps: readonly ["activeOffsetY", "activeOffsetX", "failOffsetY", "failOffsetX", "minDist", "minVelocity", "minVelocityX", "minVelocityY", "minPointers", "maxPointers", "avgTouches", "enableTrackpadTwoFingerGesture"];
|
|
2
|
+
export declare const panGestureHandlerProps: readonly ["activeOffsetY", "activeOffsetX", "failOffsetY", "failOffsetX", "minDist", "minVelocity", "minVelocityX", "minVelocityY", "minPointers", "maxPointers", "avgTouches", "enableTrackpadTwoFingerGesture", "activateAfterLongPress"];
|
|
3
3
|
export declare const panGestureHandlerCustomNativeProps: readonly ["activeOffsetYStart", "activeOffsetYEnd", "activeOffsetXStart", "activeOffsetXEnd", "failOffsetYStart", "failOffsetYEnd", "failOffsetXStart", "failOffsetXEnd"];
|
|
4
4
|
export declare type PanGestureHandlerEventPayload = {
|
|
5
5
|
/**
|
|
@@ -82,6 +82,7 @@ interface CommonPanProperties {
|
|
|
82
82
|
minVelocity?: number;
|
|
83
83
|
minVelocityX?: number;
|
|
84
84
|
minVelocityY?: number;
|
|
85
|
+
activateAfterLongPress?: number;
|
|
85
86
|
}
|
|
86
87
|
export interface PanGestureConfig extends CommonPanProperties {
|
|
87
88
|
activeOffsetYStart?: number;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { PressabilityDebugView } from 'react-native/Libraries/Pressability/PressabilityDebug';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function PressabilityDebugView(): null;
|
|
@@ -54,6 +54,7 @@ export declare type BaseGestureHandlerProps<ExtraEventPayloadT extends Record<st
|
|
|
54
54
|
onEnded?: (event: HandlerStateChangeEvent) => void;
|
|
55
55
|
onGestureEvent?: (event: GestureEvent<ExtraEventPayloadT>) => void;
|
|
56
56
|
onHandlerStateChange?: (event: HandlerStateChangeEvent<ExtraEventPayloadT>) => void;
|
|
57
|
+
children?: React.ReactNode;
|
|
57
58
|
};
|
|
58
59
|
export declare function filterConfig(props: Record<string, unknown>, validProps: string[], defaults?: Record<string, unknown>): {
|
|
59
60
|
[x: string]: unknown;
|
|
@@ -11,6 +11,7 @@ export declare type GestureConfigReference = {
|
|
|
11
11
|
};
|
|
12
12
|
interface GestureDetectorProps {
|
|
13
13
|
gesture?: ComposedGesture | GestureType;
|
|
14
|
+
children?: React.ReactNode;
|
|
14
15
|
}
|
|
15
|
-
export declare const GestureDetector:
|
|
16
|
+
export declare const GestureDetector: (props: GestureDetectorProps) => JSX.Element;
|
|
16
17
|
export {};
|
|
@@ -22,6 +22,7 @@ export interface BaseGestureConfig extends CommonGestureConfig, Record<string, u
|
|
|
22
22
|
}
|
|
23
23
|
declare type TouchEventHandlerType = (event: GestureTouchEvent, stateManager: GestureStateManagerType) => void;
|
|
24
24
|
export declare type HandlerCallbacks<EventPayloadT extends Record<string, unknown>> = {
|
|
25
|
+
gestureId: number;
|
|
25
26
|
handlerTag: number;
|
|
26
27
|
onBegin?: (event: GestureStateChangeEvent<EventPayloadT>) => void;
|
|
27
28
|
onStart?: (event: GestureStateChangeEvent<EventPayloadT>) => void;
|
|
@@ -68,10 +69,12 @@ export declare abstract class Gesture {
|
|
|
68
69
|
abstract prepare(): void;
|
|
69
70
|
}
|
|
70
71
|
export declare abstract class BaseGesture<EventPayloadT extends Record<string, unknown>> extends Gesture {
|
|
72
|
+
private gestureId;
|
|
71
73
|
handlerTag: number;
|
|
72
74
|
handlerName: string;
|
|
73
75
|
config: BaseGestureConfig;
|
|
74
76
|
handlers: HandlerCallbacks<EventPayloadT>;
|
|
77
|
+
constructor();
|
|
75
78
|
private addDependency;
|
|
76
79
|
withRef(ref: React.MutableRefObject<GestureType | undefined>): this;
|
|
77
80
|
protected isWorklet(callback: Function): boolean;
|
|
@@ -20,6 +20,7 @@ export declare class PanGesture extends ContinousBaseGesture<PanGestureHandlerEv
|
|
|
20
20
|
minVelocityY(velocity: number): this;
|
|
21
21
|
averageTouches(value: boolean): this;
|
|
22
22
|
enableTrackpadTwoFingerGesture(value: boolean): this;
|
|
23
|
+
activateAfterLongPress(duration: number): this;
|
|
23
24
|
onChange(callback: (event: GestureUpdateEvent<PanGestureHandlerEventPayload & PanGestureChangeEventPayload>) => void): this;
|
|
24
25
|
}
|
|
25
26
|
export declare type PanGestureType = InstanceType<typeof PanGesture>;
|
|
@@ -25,6 +25,7 @@ declare const _default: {
|
|
|
25
25
|
readonly createGestureHandler: () => void;
|
|
26
26
|
readonly dropGestureHandler: () => void;
|
|
27
27
|
readonly updateGestureHandler: () => void;
|
|
28
|
+
readonly flushOperations: () => void;
|
|
28
29
|
readonly Directions: {
|
|
29
30
|
readonly RIGHT: 1;
|
|
30
31
|
readonly LEFT: 2;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { ValueOf } from '../typeUtils';
|
|
2
2
|
import { Gestures } from '../RNGestureHandlerModule.web';
|
|
3
|
-
export declare function getHandler(tag: number): import("./
|
|
3
|
+
export declare function getHandler(tag: number): import("./LongPressGestureHandler").default | import("./NativeViewGestureHandler").default | import("./PanGestureHandler").default | import("./RotationGestureHandler").default | import("./PinchGestureHandler").default | import("./TapGestureHandler").default | import("./FlingGestureHandler").default;
|
|
4
4
|
export declare function createGestureHandler(handlerTag: number, handler: InstanceType<ValueOf<typeof Gestures>>): void;
|
|
5
5
|
export declare function dropGestureHandler(handlerTag: number): void;
|
|
6
6
|
export declare function getNodes(): {
|
|
7
|
-
[x: number]: import("./
|
|
7
|
+
[x: number]: import("./LongPressGestureHandler").default | import("./NativeViewGestureHandler").default | import("./PanGestureHandler").default | import("./RotationGestureHandler").default | import("./PinchGestureHandler").default | import("./TapGestureHandler").default | import("./FlingGestureHandler").default;
|
|
8
8
|
};
|
package/package.json
CHANGED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { ActionType } from './ActionType';
|
|
2
|
+
import { Direction } from './web/constants';
|
|
3
|
+
import FlingGestureHandler from './web/FlingGestureHandler';
|
|
4
|
+
import LongPressGestureHandler from './web/LongPressGestureHandler';
|
|
5
|
+
import NativeViewGestureHandler from './web/NativeViewGestureHandler';
|
|
6
|
+
import * as NodeManager from './web/NodeManager';
|
|
7
|
+
import PanGestureHandler from './web/PanGestureHandler';
|
|
8
|
+
import PinchGestureHandler from './web/PinchGestureHandler';
|
|
9
|
+
import RotationGestureHandler from './web/RotationGestureHandler';
|
|
10
|
+
import TapGestureHandler from './web/TapGestureHandler';
|
|
11
|
+
|
|
12
|
+
export const Gestures = {
|
|
13
|
+
PanGestureHandler,
|
|
14
|
+
RotationGestureHandler,
|
|
15
|
+
PinchGestureHandler,
|
|
16
|
+
TapGestureHandler,
|
|
17
|
+
NativeViewGestureHandler,
|
|
18
|
+
LongPressGestureHandler,
|
|
19
|
+
FlingGestureHandler,
|
|
20
|
+
// ForceTouchGestureHandler,
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export default {
|
|
24
|
+
Direction,
|
|
25
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
26
|
+
handleSetJSResponder() {},
|
|
27
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
28
|
+
handleClearJSResponder() {},
|
|
29
|
+
createGestureHandler<T>(
|
|
30
|
+
handlerName: keyof typeof Gestures,
|
|
31
|
+
handlerTag: number,
|
|
32
|
+
config: T
|
|
33
|
+
) {
|
|
34
|
+
//TODO(TS) extends config
|
|
35
|
+
if (!(handlerName in Gestures))
|
|
36
|
+
throw new Error(
|
|
37
|
+
`react-native-gesture-handler: ${handlerName} is not supported on macos.`
|
|
38
|
+
);
|
|
39
|
+
const GestureClass = Gestures[handlerName];
|
|
40
|
+
NodeManager.createGestureHandler(handlerTag, new GestureClass());
|
|
41
|
+
this.updateGestureHandler(handlerTag, config);
|
|
42
|
+
},
|
|
43
|
+
attachGestureHandler(
|
|
44
|
+
handlerTag: number,
|
|
45
|
+
newView: number,
|
|
46
|
+
_actionType: ActionType,
|
|
47
|
+
propsRef: React.RefObject<unknown>
|
|
48
|
+
) {
|
|
49
|
+
NodeManager.getHandler(handlerTag).setView(newView, propsRef);
|
|
50
|
+
},
|
|
51
|
+
updateGestureHandler(handlerTag: number, newConfig: any) {
|
|
52
|
+
NodeManager.getHandler(handlerTag).updateGestureConfig(newConfig);
|
|
53
|
+
},
|
|
54
|
+
getGestureHandlerNode(handlerTag: number) {
|
|
55
|
+
return NodeManager.getHandler(handlerTag);
|
|
56
|
+
},
|
|
57
|
+
dropGestureHandler(handlerTag: number) {
|
|
58
|
+
NodeManager.dropGestureHandler(handlerTag);
|
|
59
|
+
},
|
|
60
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
61
|
+
flushOperations() {},
|
|
62
|
+
};
|
|
@@ -148,6 +148,11 @@ export interface DrawerLayoutProps {
|
|
|
148
148
|
onDrawerSlide?: (position: number) => void;
|
|
149
149
|
|
|
150
150
|
onGestureRef?: (ref: PanGestureHandler) => void;
|
|
151
|
+
|
|
152
|
+
// implicit `children` prop has been removed in @types/react^18.0.0
|
|
153
|
+
children?:
|
|
154
|
+
| React.ReactNode
|
|
155
|
+
| ((openValue?: Animated.AnimatedInterpolation) => React.ReactNode);
|
|
151
156
|
}
|
|
152
157
|
|
|
153
158
|
export type DrawerLayoutState = {
|
|
@@ -155,6 +160,8 @@ export type DrawerLayoutState = {
|
|
|
155
160
|
touchX: Animated.Value;
|
|
156
161
|
drawerTranslation: Animated.Value;
|
|
157
162
|
containerWidth: number;
|
|
163
|
+
drawerState: DrawerState;
|
|
164
|
+
drawerOpened: boolean;
|
|
158
165
|
};
|
|
159
166
|
|
|
160
167
|
export type DrawerMovementOption = {
|
|
@@ -189,6 +196,8 @@ export default class DrawerLayout extends Component<
|
|
|
189
196
|
touchX,
|
|
190
197
|
drawerTranslation,
|
|
191
198
|
containerWidth: 0,
|
|
199
|
+
drawerState: IDLE,
|
|
200
|
+
drawerOpened: false,
|
|
192
201
|
};
|
|
193
202
|
|
|
194
203
|
this.updateAnimatedEvent(props, this.state);
|
|
@@ -349,6 +358,7 @@ export default class DrawerLayout extends Component<
|
|
|
349
358
|
this.handleRelease({ nativeEvent });
|
|
350
359
|
} else if (nativeEvent.state === State.ACTIVE) {
|
|
351
360
|
this.emitStateChanged(DRAGGING, false);
|
|
361
|
+
this.setState({ drawerState: DRAGGING });
|
|
352
362
|
if (this.props.keyboardDismissMode === 'on-drag') {
|
|
353
363
|
Keyboard.dismiss();
|
|
354
364
|
}
|
|
@@ -464,6 +474,7 @@ export default class DrawerLayout extends Component<
|
|
|
464
474
|
const willShow = toValue !== 0;
|
|
465
475
|
this.updateShowing(willShow);
|
|
466
476
|
this.emitStateChanged(SETTLING, willShow);
|
|
477
|
+
this.setState({ drawerState: SETTLING });
|
|
467
478
|
if (this.props.hideStatusBar) {
|
|
468
479
|
StatusBar.setHidden(willShow, this.props.statusBarAnimation || 'slide');
|
|
469
480
|
}
|
|
@@ -476,6 +487,12 @@ export default class DrawerLayout extends Component<
|
|
|
476
487
|
}).start(({ finished }) => {
|
|
477
488
|
if (finished) {
|
|
478
489
|
this.emitStateChanged(IDLE, willShow);
|
|
490
|
+
this.setState({ drawerOpened: willShow });
|
|
491
|
+
if (this.state.drawerState !== DRAGGING) {
|
|
492
|
+
// it's possilbe that user started drag while the drawer
|
|
493
|
+
// was settling, don't override state in this case
|
|
494
|
+
this.setState({ drawerState: IDLE });
|
|
495
|
+
}
|
|
479
496
|
if (willShow) {
|
|
480
497
|
this.props.onDrawerOpen?.();
|
|
481
498
|
} else {
|
|
@@ -516,11 +533,14 @@ export default class DrawerLayout extends Component<
|
|
|
516
533
|
private renderOverlay = () => {
|
|
517
534
|
/* Overlay styles */
|
|
518
535
|
invariant(this.openValue, 'should be set');
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
}
|
|
536
|
+
let overlayOpacity;
|
|
537
|
+
|
|
538
|
+
if (this.state.drawerState !== IDLE) {
|
|
539
|
+
overlayOpacity = this.openValue;
|
|
540
|
+
} else {
|
|
541
|
+
overlayOpacity = this.state.drawerOpened ? 1 : 0;
|
|
542
|
+
}
|
|
543
|
+
|
|
524
544
|
const dynamicOverlayStyles = {
|
|
525
545
|
opacity: overlayOpacity,
|
|
526
546
|
backgroundColor: this.props.overlayColor,
|
|
@@ -579,11 +599,15 @@ export default class DrawerLayout extends Component<
|
|
|
579
599
|
let drawerTranslateX: number | Animated.AnimatedInterpolation = 0;
|
|
580
600
|
if (drawerSlide) {
|
|
581
601
|
const closedDrawerOffset = fromLeft ? -drawerWidth! : drawerWidth!;
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
602
|
+
if (this.state.drawerState !== IDLE) {
|
|
603
|
+
drawerTranslateX = openValue.interpolate({
|
|
604
|
+
inputRange: [0, 1],
|
|
605
|
+
outputRange: [closedDrawerOffset, 0],
|
|
606
|
+
extrapolate: 'clamp',
|
|
607
|
+
});
|
|
608
|
+
} else {
|
|
609
|
+
drawerTranslateX = this.state.drawerOpened ? 0 : closedDrawerOffset;
|
|
610
|
+
}
|
|
587
611
|
}
|
|
588
612
|
const drawerStyles: {
|
|
589
613
|
transform: { translateX: number | Animated.AnimatedInterpolation }[];
|
|
@@ -56,6 +56,13 @@ export interface RawButtonProps extends NativeViewGestureHandlerProps {
|
|
|
56
56
|
* Defines whether the ripple animation should be drawn on the foreground of the view.
|
|
57
57
|
*/
|
|
58
58
|
foreground?: boolean;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Android only.
|
|
62
|
+
*
|
|
63
|
+
* Set this to true if you don't want the system to play sound when the button is pressed.
|
|
64
|
+
*/
|
|
65
|
+
touchSoundDisabled?: boolean;
|
|
59
66
|
}
|
|
60
67
|
|
|
61
68
|
export interface BaseButtonProps extends RawButtonProps {
|
|
@@ -277,6 +277,7 @@ export default class GenericTouchable extends Component<
|
|
|
277
277
|
shouldActivateOnStart={this.props.shouldActivateOnStart}
|
|
278
278
|
disallowInterruption={this.props.disallowInterruption}
|
|
279
279
|
testID={this.props.testID}
|
|
280
|
+
touchSoundDisabled={this.props.touchSoundDisabled ?? false}
|
|
280
281
|
{...this.props.extraButtonProps}>
|
|
281
282
|
<Animated.View {...coreProps} style={this.props.style}>
|
|
282
283
|
{this.props.children}
|
|
@@ -22,6 +22,7 @@ interface NativeProps extends ViewProps {
|
|
|
22
22
|
enabled?: WithDefault<boolean, true>;
|
|
23
23
|
rippleColor?: ColorValue;
|
|
24
24
|
rippleRadius?: Int32;
|
|
25
|
+
touchSoundDisabled?: WithDefault<boolean, false>;
|
|
25
26
|
}
|
|
26
27
|
|
|
27
28
|
export default codegenNativeComponent<NativeProps>('RNGestureHandlerButton');
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { PropsWithChildren } from 'react';
|
|
2
2
|
import { tagMessage } from '../utils';
|
|
3
3
|
import PlatformConstants from '../PlatformConstants';
|
|
4
4
|
import createHandler from './createHandler';
|
|
@@ -13,7 +13,8 @@ export const forceTouchGestureHandlerProps = [
|
|
|
13
13
|
'feedbackOnActivation',
|
|
14
14
|
] as const;
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
// implicit `children` prop has been removed in @types/react^18.0.0
|
|
17
|
+
class ForceTouchFallback extends React.Component<PropsWithChildren<unknown>> {
|
|
17
18
|
static forceTouchAvailable = false;
|
|
18
19
|
componentDidMount() {
|
|
19
20
|
console.warn(
|
|
@@ -17,6 +17,7 @@ export const panGestureHandlerProps = [
|
|
|
17
17
|
'maxPointers',
|
|
18
18
|
'avgTouches',
|
|
19
19
|
'enableTrackpadTwoFingerGesture',
|
|
20
|
+
'activateAfterLongPress',
|
|
20
21
|
] as const;
|
|
21
22
|
|
|
22
23
|
export const panGestureHandlerCustomNativeProps = [
|
|
@@ -124,6 +125,7 @@ interface CommonPanProperties {
|
|
|
124
125
|
minVelocity?: number;
|
|
125
126
|
minVelocityX?: number;
|
|
126
127
|
minVelocityY?: number;
|
|
128
|
+
activateAfterLongPress?: number;
|
|
127
129
|
}
|
|
128
130
|
|
|
129
131
|
export interface PanGestureConfig extends CommonPanProperties {
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import {
|
|
3
3
|
Platform,
|
|
4
|
-
Touchable,
|
|
5
4
|
UIManager,
|
|
6
5
|
DeviceEventEmitter,
|
|
7
6
|
EmitterSubscription,
|
|
@@ -28,6 +27,7 @@ import {
|
|
|
28
27
|
import { ValueOf } from '../typeUtils';
|
|
29
28
|
import { isFabric, isJestEnv } from '../utils';
|
|
30
29
|
import { ActionType } from '../ActionType';
|
|
30
|
+
import { PressabilityDebugView } from './PressabilityDebugView';
|
|
31
31
|
|
|
32
32
|
const UIManagerAny = UIManager as any;
|
|
33
33
|
|
|
@@ -148,6 +148,8 @@ type InternalEventHandlers = {
|
|
|
148
148
|
onGestureHandlerStateChange?: (event: any) => void;
|
|
149
149
|
};
|
|
150
150
|
|
|
151
|
+
const UNRESOLVED_REFS_RETRY_LIMIT = 1;
|
|
152
|
+
|
|
151
153
|
// TODO(TS) - make sure that BaseGestureHandlerProps doesn't need other generic parameter to work with custom properties.
|
|
152
154
|
export default function createHandler<
|
|
153
155
|
T extends BaseGestureHandlerProps<U>,
|
|
@@ -198,7 +200,7 @@ export default function createHandler<
|
|
|
198
200
|
'toggleElementInspector',
|
|
199
201
|
() => {
|
|
200
202
|
this.setState((_) => ({ allowTouches }));
|
|
201
|
-
this.update();
|
|
203
|
+
this.update(UNRESOLVED_REFS_RETRY_LIMIT);
|
|
202
204
|
}
|
|
203
205
|
);
|
|
204
206
|
}
|
|
@@ -211,7 +213,7 @@ export default function createHandler<
|
|
|
211
213
|
// be resolved by then.
|
|
212
214
|
this.updateEnqueued = setImmediate(() => {
|
|
213
215
|
this.updateEnqueued = null;
|
|
214
|
-
this.update();
|
|
216
|
+
this.update(UNRESOLVED_REFS_RETRY_LIMIT);
|
|
215
217
|
});
|
|
216
218
|
}
|
|
217
219
|
|
|
@@ -231,7 +233,7 @@ export default function createHandler<
|
|
|
231
233
|
if (this.viewTag !== viewTag) {
|
|
232
234
|
this.attachGestureHandler(viewTag as number); // TODO(TS) - check interaction between _viewTag & findNodeHandle
|
|
233
235
|
}
|
|
234
|
-
this.update();
|
|
236
|
+
this.update(UNRESOLVED_REFS_RETRY_LIMIT);
|
|
235
237
|
}
|
|
236
238
|
|
|
237
239
|
componentWillUnmount() {
|
|
@@ -361,14 +363,26 @@ export default function createHandler<
|
|
|
361
363
|
scheduleFlushOperations();
|
|
362
364
|
};
|
|
363
365
|
|
|
364
|
-
private update() {
|
|
365
|
-
const
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
if (
|
|
371
|
-
this.
|
|
366
|
+
private update(remainingTries: number) {
|
|
367
|
+
const props: HandlerProps<U> = this.props;
|
|
368
|
+
|
|
369
|
+
// When ref is set via a function i.e. `ref={(r) => refObject.current = r}` instead of
|
|
370
|
+
// `ref={refObject}` it's possible that it won't be resolved in time. Seems like trying
|
|
371
|
+
// again is easy enough fix.
|
|
372
|
+
if (hasUnresolvedRefs(props) && remainingTries > 0) {
|
|
373
|
+
this.updateEnqueued = setImmediate(() => {
|
|
374
|
+
this.updateEnqueued = null;
|
|
375
|
+
this.update(remainingTries - 1);
|
|
376
|
+
});
|
|
377
|
+
} else {
|
|
378
|
+
const newConfig = filterConfig(
|
|
379
|
+
transformProps ? transformProps(this.props) : this.props,
|
|
380
|
+
[...allowedProps, ...customNativeProps],
|
|
381
|
+
config
|
|
382
|
+
);
|
|
383
|
+
if (!deepEqual(this.config, newConfig)) {
|
|
384
|
+
this.updateGestureHandler(newConfig);
|
|
385
|
+
}
|
|
372
386
|
}
|
|
373
387
|
}
|
|
374
388
|
|
|
@@ -458,7 +472,7 @@ export default function createHandler<
|
|
|
458
472
|
const child: any = React.Children.only(this.props.children);
|
|
459
473
|
let grandChildren = child.props.children;
|
|
460
474
|
if (
|
|
461
|
-
|
|
475
|
+
__DEV__ &&
|
|
462
476
|
child.type &&
|
|
463
477
|
(child.type === 'RNGestureHandlerButton' ||
|
|
464
478
|
child.type.name === 'View' ||
|
|
@@ -466,10 +480,11 @@ export default function createHandler<
|
|
|
466
480
|
) {
|
|
467
481
|
grandChildren = React.Children.toArray(grandChildren);
|
|
468
482
|
grandChildren.push(
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
483
|
+
<PressabilityDebugView
|
|
484
|
+
key="pressabilityDebugView"
|
|
485
|
+
color="mediumspringgreen"
|
|
486
|
+
hitSlop={child.props.hitSlop}
|
|
487
|
+
/>
|
|
473
488
|
);
|
|
474
489
|
}
|
|
475
490
|
|