react-native-gesture-handler 2.13.4 → 2.14.1
Sign up to get free protection for your applications and to get access to all the features.
- 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'];
|