react-native-gesture-handler 2.13.4 → 2.14.1
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/android/build.gradle +3 -2
- package/android/gradle.properties +2 -2
- package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerOrchestrator.kt +36 -72
- package/android/src/main/java/com/swmansion/gesturehandler/react/Extensions.kt +1 -1
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt +12 -14
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt +8 -1
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +34 -88
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt +1 -1
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.kt +18 -12
- package/android/src/main/java/com/swmansion/gesturehandler/react/eventbuilders/FlingGestureHandlerEventDataBuilder.kt +30 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/eventbuilders/GestureHandlerEventDataBuilder.kt +22 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/eventbuilders/HoverGestureHandlerEventDataBuilder.kt +30 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/eventbuilders/LongPressGestureHandlerEventDataBuilder.kt +33 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/eventbuilders/ManualGestureHandlerEventDataBuilder.kt +5 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/eventbuilders/NativeGestureHandlerEventDataBuilder.kt +18 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/eventbuilders/PanGestureHandlerEventDataBuilder.kt +42 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/eventbuilders/PinchGestureHandlerEventDataBuilder.kt +30 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/eventbuilders/RotationGestureHandlerEventDataBuilder.kt +30 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/eventbuilders/TapGestureHandlerEventDataBuilder.kt +30 -0
- package/android/src/main/jni/CMakeLists.txt +14 -2
- package/ios/Handlers/RNHoverHandler.m +15 -14
- package/ios/RNGestureHandler.m +11 -0
- package/ios/RNGestureHandlerButtonComponentView.mm +2 -0
- package/lib/commonjs/components/gestureHandlerRootHOC.js.map +1 -1
- package/lib/commonjs/components/touchables/TouchableNativeFeedback.android.js +1 -1
- package/lib/commonjs/components/touchables/TouchableNativeFeedback.android.js.map +1 -1
- package/lib/commonjs/components/touchables/TouchableWithoutFeedback.js.map +1 -1
- package/lib/commonjs/getReactNativeVersion.js +22 -0
- package/lib/commonjs/getReactNativeVersion.js.map +1 -0
- package/lib/commonjs/getReactNativeVersion.web.js +11 -0
- package/lib/commonjs/getReactNativeVersion.web.js.map +1 -0
- package/lib/commonjs/handlers/gestureHandlerCommon.js +1 -1
- package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector.js +13 -3
- package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gesture.js +8 -0
- package/lib/commonjs/handlers/gestures/gesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gestureStateManager.js +39 -37
- package/lib/commonjs/handlers/gestures/gestureStateManager.js.map +1 -1
- package/lib/commonjs/utils.js +0 -13
- package/lib/commonjs/utils.js.map +1 -1
- package/lib/commonjs/web/handlers/FlingGestureHandler.js +4 -6
- package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
- package/lib/commonjs/web/interfaces.js.map +1 -1
- package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js +4 -15
- package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js.map +1 -1
- package/lib/commonjs/web/tools/InteractionManager.js +27 -29
- package/lib/commonjs/web/tools/InteractionManager.js.map +1 -1
- package/lib/commonjs/web/tools/PointerEventManager.js +13 -3
- package/lib/commonjs/web/tools/PointerEventManager.js.map +1 -1
- package/lib/module/components/gestureHandlerRootHOC.js.map +1 -1
- package/lib/module/components/touchables/TouchableNativeFeedback.android.js +1 -1
- package/lib/module/components/touchables/TouchableNativeFeedback.android.js.map +1 -1
- package/lib/module/components/touchables/TouchableWithoutFeedback.js.map +1 -1
- package/lib/module/getReactNativeVersion.js +10 -0
- package/lib/module/getReactNativeVersion.js.map +1 -0
- package/lib/module/getReactNativeVersion.web.js +4 -0
- package/lib/module/getReactNativeVersion.web.js.map +1 -0
- package/lib/module/handlers/gestureHandlerCommon.js +1 -1
- package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector.js +12 -3
- package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/module/handlers/gestures/gesture.js +8 -0
- package/lib/module/handlers/gestures/gesture.js.map +1 -1
- package/lib/module/handlers/gestures/gestureStateManager.js +44 -42
- package/lib/module/handlers/gestures/gestureStateManager.js.map +1 -1
- package/lib/module/utils.js +0 -6
- package/lib/module/utils.js.map +1 -1
- package/lib/module/web/handlers/FlingGestureHandler.js +4 -6
- package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/GestureHandler.js.map +1 -1
- package/lib/module/web/interfaces.js.map +1 -1
- package/lib/module/web/tools/GestureHandlerOrchestrator.js +4 -15
- package/lib/module/web/tools/GestureHandlerOrchestrator.js.map +1 -1
- package/lib/module/web/tools/InteractionManager.js +27 -29
- package/lib/module/web/tools/InteractionManager.js.map +1 -1
- package/lib/module/web/tools/PointerEventManager.js +12 -3
- package/lib/module/web/tools/PointerEventManager.js.map +1 -1
- package/lib/typescript/ActionType.d.ts +1 -1
- package/lib/typescript/Directions.d.ts +1 -1
- package/lib/typescript/PlatformConstants.d.ts +1 -1
- package/lib/typescript/RNGestureHandlerModule.d.ts +1 -1
- package/lib/typescript/State.d.ts +1 -1
- package/lib/typescript/TouchEventType.d.ts +1 -1
- package/lib/typescript/components/DrawerLayout.d.ts +9 -9
- package/lib/typescript/components/GestureButtons.d.ts +3 -3
- package/lib/typescript/components/GestureComponents.d.ts +6 -6
- package/lib/typescript/components/GestureComponents.web.d.ts +1 -1
- package/lib/typescript/components/GestureHandlerRootView.android.d.ts +2 -1
- package/lib/typescript/components/GestureHandlerRootView.d.ts +2 -1
- package/lib/typescript/components/GestureHandlerRootView.web.d.ts +2 -1
- package/lib/typescript/components/Swipeable.d.ts +4 -4
- package/lib/typescript/components/gestureHandlerRootHOC.d.ts +1 -1
- package/lib/typescript/components/touchables/GenericTouchable.d.ts +4 -3
- package/lib/typescript/components/touchables/TouchableHighlight.d.ts +4 -3
- package/lib/typescript/components/touchables/TouchableNativeFeedback.android.d.ts +7 -6
- package/lib/typescript/components/touchables/TouchableOpacity.d.ts +3 -2
- package/lib/typescript/components/touchables/TouchableWithoutFeedback.d.ts +1 -1
- package/lib/typescript/getReactNativeVersion.d.ts +4 -0
- package/lib/typescript/getReactNativeVersion.web.d.ts +1 -0
- package/lib/typescript/handlers/FlingGestureHandler.d.ts +2 -2
- package/lib/typescript/handlers/ForceTouchGestureHandler.d.ts +2 -2
- package/lib/typescript/handlers/LongPressGestureHandler.d.ts +2 -2
- package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +3 -3
- package/lib/typescript/handlers/PanGestureHandler.d.ts +2 -2
- package/lib/typescript/handlers/PinchGestureHandler.d.ts +2 -2
- package/lib/typescript/handlers/RotationGestureHandler.d.ts +2 -2
- package/lib/typescript/handlers/TapGestureHandler.d.ts +2 -2
- package/lib/typescript/handlers/createHandler.d.ts +1 -1
- package/lib/typescript/handlers/gestureHandlerCommon.d.ts +11 -10
- package/lib/typescript/handlers/gestureHandlerTypesCompat.d.ts +32 -32
- package/lib/typescript/handlers/gestures/GestureDetector.d.ts +2 -2
- package/lib/typescript/handlers/gestures/flingGesture.d.ts +1 -1
- package/lib/typescript/handlers/gestures/forceTouchGesture.d.ts +2 -2
- package/lib/typescript/handlers/gestures/gesture.d.ts +7 -5
- package/lib/typescript/handlers/gestures/gestureComposition.d.ts +4 -4
- package/lib/typescript/handlers/gestures/gestureStateManager.d.ts +3 -1
- package/lib/typescript/handlers/gestures/hoverGesture.d.ts +3 -3
- package/lib/typescript/handlers/gestures/longPressGesture.d.ts +1 -1
- package/lib/typescript/handlers/gestures/manualGesture.d.ts +1 -1
- package/lib/typescript/handlers/gestures/nativeGesture.d.ts +1 -1
- package/lib/typescript/handlers/gestures/panGesture.d.ts +2 -2
- package/lib/typescript/handlers/gestures/pinchGesture.d.ts +2 -2
- package/lib/typescript/handlers/gestures/rotationGesture.d.ts +2 -2
- package/lib/typescript/handlers/gestures/tapGesture.d.ts +1 -1
- package/lib/typescript/jestUtils/jestUtils.d.ts +6 -6
- package/lib/typescript/typeUtils.d.ts +1 -1
- package/lib/typescript/utils.d.ts +1 -5
- package/lib/typescript/web/interfaces.d.ts +4 -3
- package/lib/typescript/web/tools/GestureHandlerOrchestrator.d.ts +0 -1
- package/lib/typescript/web/tools/InteractionManager.d.ts +2 -1
- package/lib/typescript/web_hammer/GestureHandler.d.ts +2 -2
- package/package.json +7 -7
- package/src/components/gestureHandlerRootHOC.tsx +1 -3
- package/src/components/touchables/TouchableNativeFeedback.android.tsx +2 -1
- package/src/components/touchables/TouchableWithoutFeedback.tsx +3 -3
- package/src/getReactNativeVersion.ts +11 -0
- package/src/getReactNativeVersion.web.ts +3 -0
- package/src/handlers/gestureHandlerCommon.ts +6 -1
- package/src/handlers/gestures/GestureDetector.tsx +9 -6
- package/src/handlers/gestures/gesture.ts +9 -1
- package/src/handlers/gestures/gestureStateManager.ts +42 -40
- package/src/utils.ts +0 -8
- package/src/web/handlers/FlingGestureHandler.ts +5 -5
- package/src/web/handlers/GestureHandler.ts +1 -1
- package/src/web/interfaces.ts +1 -0
- package/src/web/tools/GestureHandlerOrchestrator.ts +4 -13
- package/src/web/tools/InteractionManager.ts +37 -30
- package/src/web/tools/PointerEventManager.ts +14 -3
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDataExtractor.kt +0 -8
- /package/android/{src/fabric → fabric/src/main}/java/com/swmansion/gesturehandler/RNGestureHandlerComponentsRegistry.java +0 -0
- /package/android/{src/fabric → fabric/src/main}/java/com/swmansion/gesturehandler/ReactContextExtensions.kt +0 -0
- /package/android/{src/paper → paper/src/main}/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerDelegate.java +0 -0
- /package/android/{src/paper → paper/src/main}/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerInterface.java +0 -0
- /package/android/{src/paper → paper/src/main}/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerDelegate.java +0 -0
- /package/android/{src/paper → paper/src/main}/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerInterface.java +0 -0
- /package/android/{src/paper → paper/src/main}/java/com/swmansion/gesturehandler/ReactContextExtensions.kt +0 -0
package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.kt
CHANGED
|
@@ -12,21 +12,29 @@ import com.facebook.react.bridge.WritableMap
|
|
|
12
12
|
import com.facebook.react.uimanager.events.Event
|
|
13
13
|
import com.facebook.react.uimanager.events.RCTEventEmitter
|
|
14
14
|
import com.swmansion.gesturehandler.core.GestureHandler
|
|
15
|
+
import com.swmansion.gesturehandler.react.eventbuilders.GestureHandlerEventDataBuilder
|
|
15
16
|
|
|
16
17
|
class RNGestureHandlerStateChangeEvent private constructor() : Event<RNGestureHandlerStateChangeEvent>() {
|
|
17
|
-
private var
|
|
18
|
+
private var dataBuilder: GestureHandlerEventDataBuilder<*>? = null
|
|
19
|
+
private var newState: Int = GestureHandler.STATE_UNDETERMINED
|
|
20
|
+
private var oldState: Int = GestureHandler.STATE_UNDETERMINED
|
|
21
|
+
|
|
18
22
|
private fun <T : GestureHandler<T>> init(
|
|
19
23
|
handler: T,
|
|
20
24
|
newState: Int,
|
|
21
25
|
oldState: Int,
|
|
22
|
-
|
|
26
|
+
dataBuilder: GestureHandlerEventDataBuilder<T>,
|
|
23
27
|
) {
|
|
24
28
|
super.init(handler.view!!.id)
|
|
25
|
-
|
|
29
|
+
this.dataBuilder = dataBuilder
|
|
30
|
+
this.newState = newState
|
|
31
|
+
this.oldState = oldState
|
|
26
32
|
}
|
|
27
33
|
|
|
28
34
|
override fun onDispose() {
|
|
29
|
-
|
|
35
|
+
dataBuilder = null
|
|
36
|
+
newState = GestureHandler.STATE_UNDETERMINED
|
|
37
|
+
oldState = GestureHandler.STATE_UNDETERMINED
|
|
30
38
|
EVENTS_POOL.release(this)
|
|
31
39
|
}
|
|
32
40
|
|
|
@@ -39,7 +47,7 @@ class RNGestureHandlerStateChangeEvent private constructor() : Event<RNGestureHa
|
|
|
39
47
|
override fun getCoalescingKey(): Short = 0
|
|
40
48
|
|
|
41
49
|
override fun dispatch(rctEventEmitter: RCTEventEmitter) {
|
|
42
|
-
rctEventEmitter.receiveEvent(viewTag, EVENT_NAME,
|
|
50
|
+
rctEventEmitter.receiveEvent(viewTag, EVENT_NAME, createEventData(dataBuilder!!, newState, oldState))
|
|
43
51
|
}
|
|
44
52
|
|
|
45
53
|
companion object {
|
|
@@ -51,20 +59,18 @@ class RNGestureHandlerStateChangeEvent private constructor() : Event<RNGestureHa
|
|
|
51
59
|
handler: T,
|
|
52
60
|
newState: Int,
|
|
53
61
|
oldState: Int,
|
|
54
|
-
|
|
62
|
+
dataBuilder: GestureHandlerEventDataBuilder<T>,
|
|
55
63
|
): RNGestureHandlerStateChangeEvent =
|
|
56
64
|
(EVENTS_POOL.acquire() ?: RNGestureHandlerStateChangeEvent()).apply {
|
|
57
|
-
init(handler, newState, oldState,
|
|
65
|
+
init(handler, newState, oldState, dataBuilder)
|
|
58
66
|
}
|
|
59
67
|
|
|
60
|
-
fun
|
|
61
|
-
|
|
62
|
-
dataExtractor: RNGestureHandlerEventDataExtractor<T>?,
|
|
68
|
+
fun createEventData(
|
|
69
|
+
dataBuilder: GestureHandlerEventDataBuilder<*>,
|
|
63
70
|
newState: Int,
|
|
64
71
|
oldState: Int,
|
|
65
72
|
): WritableMap = Arguments.createMap().apply {
|
|
66
|
-
|
|
67
|
-
putInt("handlerTag", handler.tag)
|
|
73
|
+
dataBuilder.buildEventData(this)
|
|
68
74
|
putInt("state", newState)
|
|
69
75
|
putInt("oldState", oldState)
|
|
70
76
|
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
package com.swmansion.gesturehandler.react.eventbuilders
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.WritableMap
|
|
4
|
+
import com.facebook.react.uimanager.PixelUtil
|
|
5
|
+
import com.swmansion.gesturehandler.core.FlingGestureHandler
|
|
6
|
+
|
|
7
|
+
class FlingGestureHandlerEventDataBuilder(handler: FlingGestureHandler) : GestureHandlerEventDataBuilder<FlingGestureHandler>(handler) {
|
|
8
|
+
private val x: Float
|
|
9
|
+
private val y: Float
|
|
10
|
+
private val absoluteX: Float
|
|
11
|
+
private val absoluteY: Float
|
|
12
|
+
|
|
13
|
+
init {
|
|
14
|
+
x = handler.lastRelativePositionX
|
|
15
|
+
y = handler.lastRelativePositionY
|
|
16
|
+
absoluteX = handler.lastPositionInWindowX
|
|
17
|
+
absoluteY = handler.lastPositionInWindowY
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
override fun buildEventData(eventData: WritableMap) {
|
|
21
|
+
super.buildEventData(eventData)
|
|
22
|
+
|
|
23
|
+
with(eventData) {
|
|
24
|
+
putDouble("x", PixelUtil.toDIPFromPixel(x).toDouble())
|
|
25
|
+
putDouble("y", PixelUtil.toDIPFromPixel(y).toDouble())
|
|
26
|
+
putDouble("absoluteX", PixelUtil.toDIPFromPixel(absoluteX).toDouble())
|
|
27
|
+
putDouble("absoluteY", PixelUtil.toDIPFromPixel(absoluteY).toDouble())
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
package com.swmansion.gesturehandler.react.eventbuilders
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.WritableMap
|
|
4
|
+
import com.swmansion.gesturehandler.core.GestureHandler
|
|
5
|
+
|
|
6
|
+
abstract class GestureHandlerEventDataBuilder<T : GestureHandler<T>>(handler: T) {
|
|
7
|
+
private val numberOfPointers: Int
|
|
8
|
+
private val handlerTag: Int
|
|
9
|
+
private val state: Int
|
|
10
|
+
|
|
11
|
+
init {
|
|
12
|
+
numberOfPointers = handler.numberOfPointers
|
|
13
|
+
handlerTag = handler.tag
|
|
14
|
+
state = handler.state
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
open fun buildEventData(eventData: WritableMap) {
|
|
18
|
+
eventData.putInt("numberOfPointers", numberOfPointers)
|
|
19
|
+
eventData.putInt("handlerTag", handlerTag)
|
|
20
|
+
eventData.putInt("state", state)
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
package com.swmansion.gesturehandler.react.eventbuilders
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.WritableMap
|
|
4
|
+
import com.facebook.react.uimanager.PixelUtil
|
|
5
|
+
import com.swmansion.gesturehandler.core.HoverGestureHandler
|
|
6
|
+
|
|
7
|
+
class HoverGestureHandlerEventDataBuilder(handler: HoverGestureHandler) : GestureHandlerEventDataBuilder<HoverGestureHandler>(handler) {
|
|
8
|
+
private val x: Float
|
|
9
|
+
private val y: Float
|
|
10
|
+
private val absoluteX: Float
|
|
11
|
+
private val absoluteY: Float
|
|
12
|
+
|
|
13
|
+
init {
|
|
14
|
+
x = handler.lastRelativePositionX
|
|
15
|
+
y = handler.lastRelativePositionY
|
|
16
|
+
absoluteX = handler.lastPositionInWindowX
|
|
17
|
+
absoluteY = handler.lastPositionInWindowY
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
override fun buildEventData(eventData: WritableMap) {
|
|
21
|
+
super.buildEventData(eventData)
|
|
22
|
+
|
|
23
|
+
with(eventData) {
|
|
24
|
+
putDouble("x", PixelUtil.toDIPFromPixel(x).toDouble())
|
|
25
|
+
putDouble("y", PixelUtil.toDIPFromPixel(y).toDouble())
|
|
26
|
+
putDouble("absoluteX", PixelUtil.toDIPFromPixel(absoluteX).toDouble())
|
|
27
|
+
putDouble("absoluteY", PixelUtil.toDIPFromPixel(absoluteY).toDouble())
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
package com.swmansion.gesturehandler.react.eventbuilders
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.WritableMap
|
|
4
|
+
import com.facebook.react.uimanager.PixelUtil
|
|
5
|
+
import com.swmansion.gesturehandler.core.LongPressGestureHandler
|
|
6
|
+
|
|
7
|
+
class LongPressGestureHandlerEventDataBuilder(handler: LongPressGestureHandler) : GestureHandlerEventDataBuilder<LongPressGestureHandler>(handler) {
|
|
8
|
+
private val x: Float
|
|
9
|
+
private val y: Float
|
|
10
|
+
private val absoluteX: Float
|
|
11
|
+
private val absoluteY: Float
|
|
12
|
+
private val duration: Int
|
|
13
|
+
|
|
14
|
+
init {
|
|
15
|
+
x = handler.lastRelativePositionX
|
|
16
|
+
y = handler.lastRelativePositionY
|
|
17
|
+
absoluteX = handler.lastPositionInWindowX
|
|
18
|
+
absoluteY = handler.lastPositionInWindowY
|
|
19
|
+
duration = handler.duration
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
override fun buildEventData(eventData: WritableMap) {
|
|
23
|
+
super.buildEventData(eventData)
|
|
24
|
+
|
|
25
|
+
with(eventData) {
|
|
26
|
+
putDouble("x", PixelUtil.toDIPFromPixel(x).toDouble())
|
|
27
|
+
putDouble("y", PixelUtil.toDIPFromPixel(y).toDouble())
|
|
28
|
+
putDouble("absoluteX", PixelUtil.toDIPFromPixel(absoluteX).toDouble())
|
|
29
|
+
putDouble("absoluteY", PixelUtil.toDIPFromPixel(absoluteY).toDouble())
|
|
30
|
+
putInt("duration", duration)
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
package com.swmansion.gesturehandler.react.eventbuilders
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.WritableMap
|
|
4
|
+
import com.swmansion.gesturehandler.core.NativeViewGestureHandler
|
|
5
|
+
|
|
6
|
+
class NativeGestureHandlerEventDataBuilder(handler: NativeViewGestureHandler) : GestureHandlerEventDataBuilder<NativeViewGestureHandler>(handler) {
|
|
7
|
+
private val pointerInside: Boolean
|
|
8
|
+
|
|
9
|
+
init {
|
|
10
|
+
pointerInside = handler.isWithinBounds
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
override fun buildEventData(eventData: WritableMap) {
|
|
14
|
+
super.buildEventData(eventData)
|
|
15
|
+
|
|
16
|
+
eventData.putBoolean("pointerInside", pointerInside)
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
package com.swmansion.gesturehandler.react.eventbuilders
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.WritableMap
|
|
4
|
+
import com.facebook.react.uimanager.PixelUtil
|
|
5
|
+
import com.swmansion.gesturehandler.core.PanGestureHandler
|
|
6
|
+
|
|
7
|
+
class PanGestureHandlerEventDataBuilder(handler: PanGestureHandler) : GestureHandlerEventDataBuilder<PanGestureHandler>(handler) {
|
|
8
|
+
private val x: Float
|
|
9
|
+
private val y: Float
|
|
10
|
+
private val absoluteX: Float
|
|
11
|
+
private val absoluteY: Float
|
|
12
|
+
private val translationX: Float
|
|
13
|
+
private val translationY: Float
|
|
14
|
+
private val velocityX: Float
|
|
15
|
+
private val velocityY: Float
|
|
16
|
+
|
|
17
|
+
init {
|
|
18
|
+
x = handler.lastRelativePositionX
|
|
19
|
+
y = handler.lastRelativePositionY
|
|
20
|
+
absoluteX = handler.lastPositionInWindowX
|
|
21
|
+
absoluteY = handler.lastPositionInWindowY
|
|
22
|
+
translationX = handler.translationX
|
|
23
|
+
translationY = handler.translationY
|
|
24
|
+
velocityX = handler.velocityX
|
|
25
|
+
velocityY = handler.velocityY
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
override fun buildEventData(eventData: WritableMap) {
|
|
29
|
+
super.buildEventData(eventData)
|
|
30
|
+
|
|
31
|
+
with(eventData) {
|
|
32
|
+
putDouble("x", PixelUtil.toDIPFromPixel(x).toDouble())
|
|
33
|
+
putDouble("y", PixelUtil.toDIPFromPixel(y).toDouble())
|
|
34
|
+
putDouble("absoluteX", PixelUtil.toDIPFromPixel(absoluteX).toDouble())
|
|
35
|
+
putDouble("absoluteY", PixelUtil.toDIPFromPixel(absoluteY).toDouble())
|
|
36
|
+
putDouble("translationX", PixelUtil.toDIPFromPixel(translationX).toDouble())
|
|
37
|
+
putDouble("translationY", PixelUtil.toDIPFromPixel(translationY).toDouble())
|
|
38
|
+
putDouble("velocityX", PixelUtil.toDIPFromPixel(velocityX).toDouble())
|
|
39
|
+
putDouble("velocityY", PixelUtil.toDIPFromPixel(velocityY).toDouble())
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
package com.swmansion.gesturehandler.react.eventbuilders
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.WritableMap
|
|
4
|
+
import com.facebook.react.uimanager.PixelUtil
|
|
5
|
+
import com.swmansion.gesturehandler.core.PinchGestureHandler
|
|
6
|
+
|
|
7
|
+
class PinchGestureHandlerEventDataBuilder(handler: PinchGestureHandler) : GestureHandlerEventDataBuilder<PinchGestureHandler>(handler) {
|
|
8
|
+
private val scale: Double
|
|
9
|
+
private val focalX: Float
|
|
10
|
+
private val focalY: Float
|
|
11
|
+
private val velocity: Double
|
|
12
|
+
|
|
13
|
+
init {
|
|
14
|
+
scale = handler.scale
|
|
15
|
+
focalX = handler.focalPointX
|
|
16
|
+
focalY = handler.focalPointY
|
|
17
|
+
velocity = handler.velocity
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
override fun buildEventData(eventData: WritableMap) {
|
|
21
|
+
super.buildEventData(eventData)
|
|
22
|
+
|
|
23
|
+
with(eventData) {
|
|
24
|
+
putDouble("scale", scale)
|
|
25
|
+
putDouble("focalX", PixelUtil.toDIPFromPixel(focalX).toDouble())
|
|
26
|
+
putDouble("focalY", PixelUtil.toDIPFromPixel(focalY).toDouble())
|
|
27
|
+
putDouble("velocity", velocity)
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
package com.swmansion.gesturehandler.react.eventbuilders
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.WritableMap
|
|
4
|
+
import com.facebook.react.uimanager.PixelUtil
|
|
5
|
+
import com.swmansion.gesturehandler.core.RotationGestureHandler
|
|
6
|
+
|
|
7
|
+
class RotationGestureHandlerEventDataBuilder(handler: RotationGestureHandler) : GestureHandlerEventDataBuilder<RotationGestureHandler>(handler) {
|
|
8
|
+
private val rotation: Double
|
|
9
|
+
private val anchorX: Float
|
|
10
|
+
private val anchorY: Float
|
|
11
|
+
private val velocity: Double
|
|
12
|
+
|
|
13
|
+
init {
|
|
14
|
+
rotation = handler.rotation
|
|
15
|
+
anchorX = handler.anchorX
|
|
16
|
+
anchorY = handler.anchorY
|
|
17
|
+
velocity = handler.velocity
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
override fun buildEventData(eventData: WritableMap) {
|
|
21
|
+
super.buildEventData(eventData)
|
|
22
|
+
|
|
23
|
+
with(eventData) {
|
|
24
|
+
putDouble("rotation", rotation)
|
|
25
|
+
putDouble("anchorX", PixelUtil.toDIPFromPixel(anchorX).toDouble())
|
|
26
|
+
putDouble("anchorY", PixelUtil.toDIPFromPixel(anchorY).toDouble())
|
|
27
|
+
putDouble("velocity", velocity)
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
package com.swmansion.gesturehandler.react.eventbuilders
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.WritableMap
|
|
4
|
+
import com.facebook.react.uimanager.PixelUtil
|
|
5
|
+
import com.swmansion.gesturehandler.core.TapGestureHandler
|
|
6
|
+
|
|
7
|
+
class TapGestureHandlerEventDataBuilder(handler: TapGestureHandler) : GestureHandlerEventDataBuilder<TapGestureHandler>(handler) {
|
|
8
|
+
private val x: Float
|
|
9
|
+
private val y: Float
|
|
10
|
+
private val absoluteX: Float
|
|
11
|
+
private val absoluteY: Float
|
|
12
|
+
|
|
13
|
+
init {
|
|
14
|
+
x = handler.lastRelativePositionX
|
|
15
|
+
y = handler.lastRelativePositionY
|
|
16
|
+
absoluteX = handler.lastPositionInWindowX
|
|
17
|
+
absoluteY = handler.lastPositionInWindowY
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
override fun buildEventData(eventData: WritableMap) {
|
|
21
|
+
super.buildEventData(eventData)
|
|
22
|
+
|
|
23
|
+
with(eventData) {
|
|
24
|
+
putDouble("x", PixelUtil.toDIPFromPixel(x).toDouble())
|
|
25
|
+
putDouble("y", PixelUtil.toDIPFromPixel(y).toDouble())
|
|
26
|
+
putDouble("absoluteX", PixelUtil.toDIPFromPixel(absoluteX).toDouble())
|
|
27
|
+
putDouble("absoluteY", PixelUtil.toDIPFromPixel(absoluteY).toDouble())
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -2,24 +2,36 @@ project(GestureHandler)
|
|
|
2
2
|
cmake_minimum_required(VERSION 3.9.0)
|
|
3
3
|
|
|
4
4
|
set(CMAKE_VERBOSE_MAKEFILE ON)
|
|
5
|
-
|
|
5
|
+
if(${REACT_NATIVE_MINOR_VERSION} GREATER_EQUAL 73)
|
|
6
|
+
set(CMAKE_CXX_STANDARD 20)
|
|
7
|
+
else()
|
|
8
|
+
set(CMAKE_CXX_STANDARD 17)
|
|
9
|
+
endif()
|
|
6
10
|
|
|
11
|
+
set(PACKAGE_NAME "gesturehandler")
|
|
7
12
|
set(REACT_ANDROID_DIR "${REACT_NATIVE_DIR}/ReactAndroid")
|
|
8
13
|
|
|
9
14
|
include(${REACT_ANDROID_DIR}/cmake-utils/folly-flags.cmake)
|
|
10
15
|
add_compile_options(${folly_FLAGS})
|
|
11
16
|
|
|
12
|
-
add_library(
|
|
17
|
+
add_library(${PACKAGE_NAME}
|
|
13
18
|
SHARED
|
|
14
19
|
cpp-adapter.cpp
|
|
15
20
|
)
|
|
16
21
|
|
|
22
|
+
target_include_directories(
|
|
23
|
+
${PACKAGE_NAME}
|
|
24
|
+
PRIVATE
|
|
25
|
+
"${REACT_NATIVE_DIR}/ReactCommon"
|
|
26
|
+
)
|
|
27
|
+
|
|
17
28
|
find_package(ReactAndroid REQUIRED CONFIG)
|
|
18
29
|
|
|
19
30
|
target_link_libraries(
|
|
20
31
|
gesturehandler
|
|
21
32
|
ReactAndroid::react_render_core
|
|
22
33
|
ReactAndroid::react_render_uimanager
|
|
34
|
+
ReactAndroid::react_render_graphics
|
|
23
35
|
ReactAndroid::jsi
|
|
24
36
|
ReactAndroid::react_nativemodule_core
|
|
25
37
|
)
|
|
@@ -10,14 +10,17 @@
|
|
|
10
10
|
#import <React/RCTConvert.h>
|
|
11
11
|
#import <UIKit/UIGestureRecognizerSubclass.h>
|
|
12
12
|
|
|
13
|
+
#define CHECK_TARGET(__VERSION__) \
|
|
14
|
+
defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && defined(__IPHONE_##__VERSION__) && \
|
|
15
|
+
__IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_##__VERSION__ && !TARGET_OS_TV
|
|
16
|
+
|
|
13
17
|
typedef NS_ENUM(NSInteger, RNGestureHandlerHoverEffect) {
|
|
14
18
|
RNGestureHandlerHoverEffectNone = 0,
|
|
15
19
|
RNGestureHandlerHoverEffectLift,
|
|
16
20
|
RNGestureHandlerHoverEffectHightlight,
|
|
17
21
|
};
|
|
18
22
|
|
|
19
|
-
#if
|
|
20
|
-
__IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_13_4
|
|
23
|
+
#if CHECK_TARGET(13_4)
|
|
21
24
|
|
|
22
25
|
API_AVAILABLE(ios(13.4))
|
|
23
26
|
@interface RNBetterHoverGestureRecognizer : UIHoverGestureRecognizer <UIPointerInteractionDelegate>
|
|
@@ -74,17 +77,19 @@ API_AVAILABLE(ios(13.4))
|
|
|
74
77
|
#endif
|
|
75
78
|
|
|
76
79
|
@implementation RNHoverGestureHandler {
|
|
77
|
-
#if
|
|
78
|
-
__IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_13_4
|
|
80
|
+
#if CHECK_TARGET(13_4)
|
|
79
81
|
UIPointerInteraction *_pointerInteraction;
|
|
80
82
|
#endif
|
|
81
83
|
}
|
|
82
84
|
|
|
83
85
|
- (instancetype)initWithTag:(NSNumber *)tag
|
|
84
86
|
{
|
|
87
|
+
#if TARGET_OS_TV
|
|
88
|
+
RCTLogWarn(@"Hover gesture handler is not supported on tvOS");
|
|
89
|
+
#endif
|
|
90
|
+
|
|
85
91
|
if ((self = [super initWithTag:tag])) {
|
|
86
|
-
#if
|
|
87
|
-
__IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_13_4
|
|
92
|
+
#if CHECK_TARGET(13_4)
|
|
88
93
|
if (@available(iOS 13.4, *)) {
|
|
89
94
|
_recognizer = [[RNBetterHoverGestureRecognizer alloc] initWithGestureHandler:self];
|
|
90
95
|
_pointerInteraction =
|
|
@@ -97,8 +102,7 @@ API_AVAILABLE(ios(13.4))
|
|
|
97
102
|
|
|
98
103
|
- (void)bindToView:(UIView *)view
|
|
99
104
|
{
|
|
100
|
-
#if
|
|
101
|
-
__IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_13_4
|
|
105
|
+
#if CHECK_TARGET(13_4)
|
|
102
106
|
if (@available(iOS 13.4, *)) {
|
|
103
107
|
[super bindToView:view];
|
|
104
108
|
[view addInteraction:_pointerInteraction];
|
|
@@ -108,8 +112,7 @@ API_AVAILABLE(ios(13.4))
|
|
|
108
112
|
|
|
109
113
|
- (void)unbindFromView
|
|
110
114
|
{
|
|
111
|
-
#if
|
|
112
|
-
__IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_13_4
|
|
115
|
+
#if CHECK_TARGET(13_4)
|
|
113
116
|
if (@available(iOS 13.4, *)) {
|
|
114
117
|
[super unbindFromView];
|
|
115
118
|
[self.recognizer.view removeInteraction:_pointerInteraction];
|
|
@@ -121,8 +124,7 @@ API_AVAILABLE(ios(13.4))
|
|
|
121
124
|
{
|
|
122
125
|
[super resetConfig];
|
|
123
126
|
|
|
124
|
-
#if
|
|
125
|
-
__IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_13_4
|
|
127
|
+
#if CHECK_TARGET(13_4)
|
|
126
128
|
if (@available(iOS 13.4, *)) {
|
|
127
129
|
RNBetterHoverGestureRecognizer *recognizer = (RNBetterHoverGestureRecognizer *)_recognizer;
|
|
128
130
|
recognizer.hoverEffect = RNGestureHandlerHoverEffectNone;
|
|
@@ -134,8 +136,7 @@ API_AVAILABLE(ios(13.4))
|
|
|
134
136
|
{
|
|
135
137
|
[super configure:config];
|
|
136
138
|
|
|
137
|
-
#if
|
|
138
|
-
__IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_13_4
|
|
139
|
+
#if CHECK_TARGET(13_4)
|
|
139
140
|
if (@available(iOS 13.4, *)) {
|
|
140
141
|
RNBetterHoverGestureRecognizer *recognizer = (RNBetterHoverGestureRecognizer *)_recognizer;
|
|
141
142
|
APPLY_INT_PROP(hoverEffect);
|
package/ios/RNGestureHandler.m
CHANGED
|
@@ -66,6 +66,7 @@ static NSHashTable<RNGestureHandler *> *allGestureHandlers;
|
|
|
66
66
|
RNGestureHandlerState _state;
|
|
67
67
|
RNManualActivationRecognizer *_manualActivationRecognizer;
|
|
68
68
|
NSArray<NSNumber *> *_handlersToWaitFor;
|
|
69
|
+
NSArray<NSNumber *> *_handlersThatShouldWait;
|
|
69
70
|
NSArray<NSNumber *> *_simultaneousHandlers;
|
|
70
71
|
RNGHHitSlop _hitSlop;
|
|
71
72
|
uint16_t _eventCoalescingKey;
|
|
@@ -98,6 +99,7 @@ static NSHashTable<RNGestureHandler *> *allGestureHandlers;
|
|
|
98
99
|
_shouldCancelWhenOutside = NO;
|
|
99
100
|
_handlersToWaitFor = nil;
|
|
100
101
|
_simultaneousHandlers = nil;
|
|
102
|
+
_handlersThatShouldWait = nil;
|
|
101
103
|
_hitSlop = RNGHHitSlopEmpty;
|
|
102
104
|
_needsPointerData = NO;
|
|
103
105
|
|
|
@@ -109,6 +111,7 @@ static NSHashTable<RNGestureHandler *> *allGestureHandlers;
|
|
|
109
111
|
[self resetConfig];
|
|
110
112
|
_handlersToWaitFor = [RCTConvert NSNumberArray:config[@"waitFor"]];
|
|
111
113
|
_simultaneousHandlers = [RCTConvert NSNumberArray:config[@"simultaneousHandlers"]];
|
|
114
|
+
_handlersThatShouldWait = [RCTConvert NSNumberArray:config[@"blocksHandlers"]];
|
|
112
115
|
|
|
113
116
|
id prop = config[@"enabled"];
|
|
114
117
|
if (prop != nil) {
|
|
@@ -380,6 +383,14 @@ static NSHashTable<RNGestureHandler *> *allGestureHandlers;
|
|
|
380
383
|
}
|
|
381
384
|
}
|
|
382
385
|
|
|
386
|
+
if (handler != nil) {
|
|
387
|
+
for (NSNumber *handlerTag in _handlersThatShouldWait) {
|
|
388
|
+
if ([handler.tag isEqual:handlerTag]) {
|
|
389
|
+
return YES;
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
|
|
383
394
|
return NO;
|
|
384
395
|
}
|
|
385
396
|
|
|
@@ -46,7 +46,9 @@ using namespace facebook::react;
|
|
|
46
46
|
const auto &newProps = *std::static_pointer_cast<const RNGestureHandlerButtonProps>(props);
|
|
47
47
|
|
|
48
48
|
_buttonView.userEnabled = newProps.enabled;
|
|
49
|
+
#if !TARGET_OS_TV
|
|
49
50
|
_buttonView.exclusiveTouch = newProps.exclusive;
|
|
51
|
+
#endif
|
|
50
52
|
_buttonView.hitTestEdgeInsets = UIEdgeInsetsMake(
|
|
51
53
|
-newProps.hitSlop.top, -newProps.hitSlop.left, -newProps.hitSlop.bottom, -newProps.hitSlop.right);
|
|
52
54
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["gestureHandlerRootHOC.tsx"],"names":["gestureHandlerRootHOC","Component","containerStyles","Wrapper","props","styles","container","displayName","name","StyleSheet","create","flex"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;;;;;;;AAEe,SAASA,qBAAT,
|
|
1
|
+
{"version":3,"sources":["gestureHandlerRootHOC.tsx"],"names":["gestureHandlerRootHOC","Component","containerStyles","Wrapper","props","styles","container","displayName","name","StyleSheet","create","flex"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;;;;;;;AAEe,SAASA,qBAAT,CACbC,SADa,EAEbC,eAFa,EAGW;AACxB,WAASC,OAAT,CAAiBC,KAAjB,EAA2B;AACzB,wBACE,oBAAC,+BAAD;AAAwB,MAAA,KAAK,EAAE,CAACC,MAAM,CAACC,SAAR,EAAmBJ,eAAnB;AAA/B,oBACE,oBAAC,SAAD,EAAeE,KAAf,CADF,CADF;AAKD;;AAEDD,EAAAA,OAAO,CAACI,WAAR,GAAuB,yBACrBN,SAAS,CAACM,WAAV,IAAyBN,SAAS,CAACO,IACpC,GAFD,CATwB,CAaxB;;AACA,qCAAqBL,OAArB,EAA8BF,SAA9B;AAEA,SAAOE,OAAP;AACD;;AAED,MAAME,MAAM,GAAGI,wBAAWC,MAAX,CAAkB;AAC/BJ,EAAAA,SAAS,EAAE;AAAEK,IAAAA,IAAI,EAAE;AAAR;AADoB,CAAlB,CAAf","sourcesContent":["import * as React from 'react';\nimport { StyleSheet, StyleProp, ViewStyle } from 'react-native';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport GestureHandlerRootView from './GestureHandlerRootView';\n\nexport default function gestureHandlerRootHOC<P extends object>(\n Component: React.ComponentType<P>,\n containerStyles?: StyleProp<ViewStyle>\n): React.ComponentType<P> {\n function Wrapper(props: P) {\n return (\n <GestureHandlerRootView style={[styles.container, containerStyles]}>\n <Component {...props} />\n </GestureHandlerRootView>\n );\n }\n\n Wrapper.displayName = `gestureHandlerRootHOC(${\n Component.displayName || Component.name\n })`;\n\n // @ts-ignore - hoistNonReactStatics uses old version of @types/react\n hoistNonReactStatics(Wrapper, Component);\n\n return Wrapper;\n}\n\nconst styles = StyleSheet.create({\n container: { flex: 1 },\n});\n"]}
|
|
@@ -96,5 +96,5 @@ _defineProperty(TouchableNativeFeedback, "Ripple", (color, borderless, rippleRad
|
|
|
96
96
|
rippleRadius
|
|
97
97
|
}));
|
|
98
98
|
|
|
99
|
-
_defineProperty(TouchableNativeFeedback, "canUseNativeForeground", () => _reactNative.Platform.Version >= 23);
|
|
99
|
+
_defineProperty(TouchableNativeFeedback, "canUseNativeForeground", () => _reactNative.Platform.OS === 'android' && _reactNative.Platform.Version >= 23);
|
|
100
100
|
//# sourceMappingURL=TouchableNativeFeedback.android.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["TouchableNativeFeedback.android.tsx"],"names":["TouchableNativeFeedback","Component","getExtraButtonProps","extraProps","background","props","type","borderless","color","attribute","rippleRadius","useForeground","render","style","rest","GenericTouchable","defaultProps","extraButtonProps","rippleColor","Platform","Version"],"mappings":";;;;;;;AAAA;;AAKA;;AAEA;;;;;;;;;;;;AAYA;AACA;AACA;AACA;AACA;AACA;AACe,MAAMA,uBAAN,SAAsCC,eAAtC,CAA8E;AAU3F;
|
|
1
|
+
{"version":3,"sources":["TouchableNativeFeedback.android.tsx"],"names":["TouchableNativeFeedback","Component","getExtraButtonProps","extraProps","background","props","type","borderless","color","attribute","rippleRadius","useForeground","render","style","rest","GenericTouchable","defaultProps","extraButtonProps","rippleColor","Platform","OS","Version"],"mappings":";;;;;;;AAAA;;AAKA;;AAEA;;;;;;;;;;;;AAYA;AACA;AACA;AACA;AACA;AACA;AACe,MAAMA,uBAAN,SAAsCC,eAAtC,CAA8E;AAU3F;AA0BAC,EAAAA,mBAAmB,GAAG;AACpB,UAAMC,UAA6C,GAAG,EAAtD;AACA,UAAM;AAAEC,MAAAA;AAAF,QAAiB,KAAKC,KAA5B;;AACA,QAAID,UAAJ,EAAgB;AACd;AACA;AACA,UAAIA,UAAU,CAACE,IAAX,KAAoB,eAAxB,EAAyC;AACvCH,QAAAA,UAAU,CAAC,YAAD,CAAV,GAA2BC,UAAU,CAACG,UAAtC;AACAJ,QAAAA,UAAU,CAAC,aAAD,CAAV,GAA4BC,UAAU,CAACI,KAAvC;AACD,OAHD,MAGO,IAAIJ,UAAU,CAACE,IAAX,KAAoB,kBAAxB,EAA4C;AACjDH,QAAAA,UAAU,CAAC,YAAD,CAAV,GACEC,UAAU,CAACK,SAAX,KAAyB,oCAD3B;AAED,OATa,CAUd;;;AACAN,MAAAA,UAAU,CAAC,cAAD,CAAV,GAA6BC,UAAU,CAACM,YAAxC;AACD;;AACDP,IAAAA,UAAU,CAAC,YAAD,CAAV,GAA2B,KAAKE,KAAL,CAAWM,aAAtC;AACA,WAAOR,UAAP;AACD;;AACDS,EAAAA,MAAM,GAAG;AACP,UAAM;AAAEC,MAAAA,KAAK,GAAG,EAAV;AAAc,SAAGC;AAAjB,QAA0B,KAAKT,KAArC;AACA,wBACE,oBAAC,yBAAD,eACMS,IADN;AAEE,MAAA,KAAK,EAAED,KAFT;AAGE,MAAA,gBAAgB,EAAE,KAAKX,mBAAL;AAHpB,OADF;AAOD;;AAhE0F;;;;gBAAxEF,uB,kBACG,EACpB,GAAGe,0BAAiBC,YADA;AAEpBL,EAAAA,aAAa,EAAE,IAFK;AAGpBM,EAAAA,gBAAgB,EAAE;AAChB;AACAC,IAAAA,WAAW,EAAE;AAFG;AAHE,C;;gBADHlB,uB,0BAWYU,YAAD,KAA4B;AACxDJ,EAAAA,IAAI,EAAE,kBADkD;AAExD;AACAG,EAAAA,SAAS,EAAE,0BAH6C;AAIxDC,EAAAA;AAJwD,CAA5B,C;;gBAXXV,uB,oCAiBsBU,YAAD,KAA4B;AAClEJ,EAAAA,IAAI,EAAE,kBAD4D;AAElEG,EAAAA,SAAS,EAAE,oCAFuD;AAGlEC,EAAAA;AAHkE,CAA5B,C;;gBAjBrBV,uB,YAsBH,CACdQ,KADc,EAEdD,UAFc,EAGdG,YAHc,MAIV;AACJJ,EAAAA,IAAI,EAAE,eADF;AAEJE,EAAAA,KAFI;AAGJD,EAAAA,UAHI;AAIJG,EAAAA;AAJI,CAJU,C;;gBAtBGV,uB,4BAiCa,MAC9BmB,sBAASC,EAAT,KAAgB,SAAhB,IAA6BD,sBAASE,OAAT,IAAoB,E","sourcesContent":["import {\n Platform,\n TouchableNativeFeedbackProps as RNTouchableNativeFeedbackProps,\n ColorValue,\n} from 'react-native';\nimport * as React from 'react';\nimport { Component } from 'react';\nimport GenericTouchable, { GenericTouchableProps } from './GenericTouchable';\n\nexport type TouchableNativeFeedbackExtraProps = {\n borderless?: boolean;\n rippleColor?: number | null;\n rippleRadius?: number | null;\n foreground?: boolean;\n};\n\nexport type TouchableNativeFeedbackProps = RNTouchableNativeFeedbackProps &\n GenericTouchableProps;\n\n/**\n * TouchableNativeFeedback behaves slightly different than RN's TouchableNativeFeedback.\n * There's small difference with handling long press ripple since RN's implementation calls\n * ripple animation via bridge. This solution leaves all animations' handling for native components so\n * it follows native behaviours.\n */\nexport default class TouchableNativeFeedback extends Component<TouchableNativeFeedbackProps> {\n static defaultProps = {\n ...GenericTouchable.defaultProps,\n useForeground: true,\n extraButtonProps: {\n // Disable hiding ripple on Android\n rippleColor: null,\n },\n };\n\n // could be taken as RNTouchableNativeFeedback.SelectableBackground etc. but the API may change\n static SelectableBackground = (rippleRadius?: number) => ({\n type: 'ThemeAttrAndroid',\n // I added `attribute` prop to clone the implementation of RN and be able to use only 2 types\n attribute: 'selectableItemBackground',\n rippleRadius,\n });\n static SelectableBackgroundBorderless = (rippleRadius?: number) => ({\n type: 'ThemeAttrAndroid',\n attribute: 'selectableItemBackgroundBorderless',\n rippleRadius,\n });\n static Ripple = (\n color: ColorValue,\n borderless: boolean,\n rippleRadius?: number\n ) => ({\n type: 'RippleAndroid',\n color,\n borderless,\n rippleRadius,\n });\n\n static canUseNativeForeground = () =>\n Platform.OS === 'android' && Platform.Version >= 23;\n\n getExtraButtonProps() {\n const extraProps: TouchableNativeFeedbackExtraProps = {};\n const { background } = this.props;\n if (background) {\n // I changed type values to match those used in RN\n // TODO(TS): check if it works the same as previous implementation - looks like it works the same as RN component, so it should be ok\n if (background.type === 'RippleAndroid') {\n extraProps['borderless'] = background.borderless;\n extraProps['rippleColor'] = background.color;\n } else if (background.type === 'ThemeAttrAndroid') {\n extraProps['borderless'] =\n background.attribute === 'selectableItemBackgroundBorderless';\n }\n // I moved it from above since it should be available in all options\n extraProps['rippleRadius'] = background.rippleRadius;\n }\n extraProps['foreground'] = this.props.useForeground;\n return extraProps;\n }\n render() {\n const { style = {}, ...rest } = this.props;\n return (\n <GenericTouchable\n {...rest}\n style={style}\n extraButtonProps={this.getExtraButtonProps()}\n />\n );\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["TouchableWithoutFeedback.tsx"],"names":["TouchableWithoutFeedback","React","forwardRef","props","ref","defaultProps","GenericTouchable"],"mappings":";;;;;;;AAAA;;AAEA;;;;;;;;;;AAIA,MAAMA,wBAAwB,gBAAGC,KAAK,CAACC,UAAN,CAG/B,CAACC,KAAD,EAAQC,GAAR,kBAAgB,oBAAC,yBAAD;AAAkB,EAAA,GAAG,EAAEA;AAAvB,GAAgCD,KAAhC,EAHe,CAAjC;AAKAH,wBAAwB,CAACK,YAAzB,GAAwCC,0BAAiBD,YAAzD;eAEeL,wB","sourcesContent":["import * as React from 'react';\nimport { PropsWithChildren } from 'react';\nimport GenericTouchable, { GenericTouchableProps } from './GenericTouchable';\n\nexport type TouchableWithoutFeedbackProps =
|
|
1
|
+
{"version":3,"sources":["TouchableWithoutFeedback.tsx"],"names":["TouchableWithoutFeedback","React","forwardRef","props","ref","defaultProps","GenericTouchable"],"mappings":";;;;;;;AAAA;;AAEA;;;;;;;;;;AAIA,MAAMA,wBAAwB,gBAAGC,KAAK,CAACC,UAAN,CAG/B,CAACC,KAAD,EAAQC,GAAR,kBAAgB,oBAAC,yBAAD;AAAkB,EAAA,GAAG,EAAEA;AAAvB,GAAgCD,KAAhC,EAHe,CAAjC;AAKAH,wBAAwB,CAACK,YAAzB,GAAwCC,0BAAiBD,YAAzD;eAEeL,wB","sourcesContent":["import * as React from 'react';\nimport { PropsWithChildren } from 'react';\nimport GenericTouchable, { GenericTouchableProps } from './GenericTouchable';\n\nexport type TouchableWithoutFeedbackProps = GenericTouchableProps;\n\nconst TouchableWithoutFeedback = React.forwardRef<\n GenericTouchable,\n PropsWithChildren<TouchableWithoutFeedbackProps>\n>((props, ref) => <GenericTouchable ref={ref} {...props} />);\n\nTouchableWithoutFeedback.defaultProps = GenericTouchable.defaultProps;\n\nexport default TouchableWithoutFeedback;\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getReactNativeVersion = getReactNativeVersion;
|
|
7
|
+
|
|
8
|
+
var _package = _interopRequireDefault(require("react-native/package.json"));
|
|
9
|
+
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
+
|
|
12
|
+
const [majorStr, minorStr] = _package.default.version.split('.');
|
|
13
|
+
|
|
14
|
+
const REACT_NATIVE_VERSION = {
|
|
15
|
+
major: parseInt(majorStr, 10),
|
|
16
|
+
minor: parseInt(minorStr, 10)
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
function getReactNativeVersion() {
|
|
20
|
+
return REACT_NATIVE_VERSION;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=getReactNativeVersion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["getReactNativeVersion.ts"],"names":["majorStr","minorStr","pack","version","split","REACT_NATIVE_VERSION","major","parseInt","minor","getReactNativeVersion"],"mappings":";;;;;;;AAAA;;;;AAEA,MAAM,CAACA,QAAD,EAAWC,QAAX,IAAuBC,iBAAKC,OAAL,CAAaC,KAAb,CAAmB,GAAnB,CAA7B;;AACA,MAAMC,oBAAoB,GAAG;AAC3BC,EAAAA,KAAK,EAAEC,QAAQ,CAACP,QAAD,EAAW,EAAX,CADY;AAE3BQ,EAAAA,KAAK,EAAED,QAAQ,CAACN,QAAD,EAAW,EAAX;AAFY,CAA7B;;AAKO,SAASQ,qBAAT,GAAiC;AACtC,SAAOJ,oBAAP;AACD","sourcesContent":["import pack from 'react-native/package.json';\n\nconst [majorStr, minorStr] = pack.version.split('.');\nconst REACT_NATIVE_VERSION = {\n major: parseInt(majorStr, 10),\n minor: parseInt(minorStr, 10),\n};\n\nexport function getReactNativeVersion() {\n return REACT_NATIVE_VERSION;\n}\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getReactNativeVersion = getReactNativeVersion;
|
|
7
|
+
|
|
8
|
+
function getReactNativeVersion() {
|
|
9
|
+
throw new Error('getReactNativeVersion is not supported on web');
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=getReactNativeVersion.web.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["getReactNativeVersion.web.ts"],"names":["getReactNativeVersion","Error"],"mappings":";;;;;;;AAAO,SAASA,qBAAT,GAAiC;AACtC,QAAM,IAAIC,KAAJ,CAAU,+CAAV,CAAN;AACD","sourcesContent":["export function getReactNativeVersion() {\n throw new Error('getReactNativeVersion is not supported on web');\n}\n"]}
|
|
@@ -25,7 +25,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
25
25
|
// e.g. React.createRef<TapGestureHandler> -> React.createRef<typeof TapGestureHandler>.
|
|
26
26
|
// See https://www.typescriptlang.org/docs/handbook/classes.html#constructor-functions for reference.
|
|
27
27
|
const commonProps = ['id', 'enabled', 'shouldCancelWhenOutside', 'hitSlop', 'cancelsTouchesInView', 'userSelect', 'activeCursor'];
|
|
28
|
-
const componentInteractionProps = ['waitFor', 'simultaneousHandlers'];
|
|
28
|
+
const componentInteractionProps = ['waitFor', 'simultaneousHandlers', 'blocksHandlers'];
|
|
29
29
|
const baseGestureHandlerProps = [...commonProps, ...componentInteractionProps, 'onBegan', 'onFailed', 'onCancelled', 'onActivated', 'onEnded', 'onGestureEvent', 'onHandlerStateChange'];
|
|
30
30
|
exports.baseGestureHandlerProps = baseGestureHandlerProps;
|
|
31
31
|
const baseGestureHandlerWithMonitorProps = [...commonProps, 'needsPointerData', 'manualActivation'];
|