react-native-reanimated 2.3.3 → 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/Common/cpp/AnimatedSensor/AnimatedSensorModule.cpp +72 -0
- package/Common/cpp/NativeModules/NativeReanimatedModule.cpp +30 -1
- package/Common/cpp/NativeModules/NativeReanimatedModuleSpec.cpp +64 -39
- package/Common/cpp/Tools/RuntimeDecorator.cpp +2 -0
- package/Common/cpp/headers/AnimatedSensor/AnimatedSensorModule.h +41 -0
- package/Common/cpp/headers/NativeModules/NativeReanimatedModule.h +14 -0
- package/Common/cpp/headers/NativeModules/NativeReanimatedModuleSpec.h +14 -0
- package/Common/cpp/headers/SharedItems/MutableValue.h +4 -1
- package/Common/cpp/headers/SharedItems/ShareableValue.h +3 -0
- package/Common/cpp/headers/SharedItems/ValueWrapper.h +3 -0
- package/Common/cpp/headers/Tools/PlatformDepMethodsHolder.h +11 -0
- package/Common/cpp/headers/Tools/RuntimeDecorator.h +2 -0
- package/LICENSE +1 -1
- package/README.md +2 -2
- package/android/.gradle/7.2/dependencies-accessors/dependencies-accessors.lock +0 -0
- package/android/.gradle/7.2/dependencies-accessors/gc.properties +0 -0
- package/android/.gradle/7.2/executionHistory/executionHistory.bin +0 -0
- package/android/.gradle/7.2/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/7.2/fileChanges/last-build.bin +0 -0
- package/android/.gradle/7.2/fileHashes/fileHashes.bin +0 -0
- package/android/.gradle/7.2/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/7.2/fileHashes/resourceHashesCache.bin +0 -0
- package/android/.gradle/7.2/gc.properties +0 -0
- package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/android/.gradle/buildOutputCleanup/cache.properties +2 -0
- package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
- package/android/.gradle/checksums/checksums.lock +0 -0
- package/android/.gradle/checksums/md5-checksums.bin +0 -0
- package/android/.gradle/checksums/sha1-checksums.bin +0 -0
- package/android/.gradle/vcs-1/gc.properties +0 -0
- package/android/CMakeLists.txt +198 -0
- package/android/README.md +15 -0
- package/android/build.gradle +686 -73
- package/android/empty.cpp +1 -0
- package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/android/gradle/wrapper/gradle-wrapper.properties +5 -0
- package/android/gradle.properties +25 -0
- package/android/gradlew +234 -0
- package/android/gradlew.bat +89 -0
- package/android/react-native-reanimated-64-hermes.aar +0 -0
- package/android/react-native-reanimated-64-jsc.aar +0 -0
- package/android/react-native-reanimated-65-hermes.aar +0 -0
- package/android/react-native-reanimated-65-jsc.aar +0 -0
- package/android/react-native-reanimated-66-hermes.aar +0 -0
- package/android/react-native-reanimated-66-jsc.aar +0 -0
- package/android/react-native-reanimated-67-hermes.aar +0 -0
- package/android/react-native-reanimated-67-jsc.aar +0 -0
- package/android/react-native-reanimated-68-hermes.aar +0 -0
- package/android/react-native-reanimated-68-jsc.aar +0 -0
- package/android/rnVersionPatch/62/layoutReanimation/ReanimatedNativeHierarchyManager.java +412 -0
- package/android/rnVersionPatch/62/layoutReanimation/ReanimatedUIImplementation.java +68 -0
- package/android/rnVersionPatch/63/layoutReanimation/ReanimatedUIImplementation.java +68 -0
- package/android/rnVersionPatch/64/layoutReanimation/ReanimatedUIImplementation.java +68 -0
- package/android/rnVersionPatch/65/.gitkeep +0 -0
- package/android/rnVersionPatch/66/.gitkeep +0 -0
- package/android/rnVersionPatch/67/.gitkeep +0 -0
- package/android/rnVersionPatch/68/.gitkeep +0 -0
- package/android/rnVersionPatch/backup/.gitkeep +0 -0
- package/android/settings.gradle +1 -0
- package/android/spotless.gradle +9 -0
- package/android/src/{AndroidManifest.xml → main/AndroidManifest.xml} +0 -0
- package/android/src/main/cpp/AndroidErrorHandler.cpp +42 -0
- package/android/src/main/cpp/AndroidLogger.cpp +27 -0
- package/android/src/main/cpp/AndroidScheduler.cpp +59 -0
- package/android/src/main/cpp/JNIHelper.cpp +59 -0
- package/android/src/main/cpp/LayoutAnimations.cpp +103 -0
- package/android/src/main/cpp/NativeProxy.cpp +327 -0
- package/android/src/main/cpp/OnLoad.cpp +17 -0
- package/android/src/main/cpp/TurboModule.cpp +44 -0
- package/android/src/main/cpp/headers/AndroidErrorHandler.h +30 -0
- package/android/src/main/cpp/headers/AndroidLogger.h +16 -0
- package/android/src/main/cpp/headers/AndroidScheduler.h +41 -0
- package/android/src/main/cpp/headers/JNIHelper.h +30 -0
- package/android/src/main/cpp/headers/LayoutAnimations.h +42 -0
- package/android/src/main/cpp/headers/NativeProxy.h +170 -0
- package/android/src/main/cpp/headers/TurboModule.h +70 -0
- package/android/src/main/java/com/facebook/react/uimanager/UIManagerReanimatedHelper.java +15 -0
- package/android/src/main/java/com/swmansion/common/GestureHandlerStateManager.java +5 -0
- package/android/src/main/java/com/swmansion/reanimated/AndroidErrorHandler.java +8 -0
- package/android/src/main/java/com/swmansion/reanimated/CopiedEvent.java +43 -0
- package/android/src/main/java/com/swmansion/reanimated/MapUtils.java +26 -0
- package/android/src/main/java/com/swmansion/reanimated/NativeMethodsHelper.java +117 -0
- package/android/src/main/java/com/swmansion/reanimated/NativeProxy.java +285 -0
- package/android/src/main/java/com/swmansion/reanimated/NodesManager.java +682 -0
- package/android/src/main/java/com/swmansion/reanimated/ReanimatedJSIModulePackage.java +29 -0
- package/android/src/main/java/com/swmansion/reanimated/ReanimatedModule.java +251 -0
- package/android/src/main/java/com/swmansion/reanimated/ReanimatedPackage.java +96 -0
- package/android/src/main/java/com/swmansion/reanimated/Scheduler.java +51 -0
- package/android/src/main/java/com/swmansion/reanimated/UpdateContext.java +11 -0
- package/android/src/main/java/com/swmansion/reanimated/Utils.java +32 -0
- package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/AnimationsManager.java +517 -0
- package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/LayoutAnimations.java +56 -0
- package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/NativeMethodsHolder.java +11 -0
- package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/ReanimatedNativeHierarchyManager.java +410 -0
- package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/ReanimatedUIImplementation.java +68 -0
- package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/ReanimatedUIManager.java +292 -0
- package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/Snapshot.java +121 -0
- package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/ViewHierarchyObserver.java +12 -0
- package/android/src/main/java/com/swmansion/reanimated/nodes/AlwaysNode.java +29 -0
- package/android/src/main/java/com/swmansion/reanimated/nodes/BezierNode.java +87 -0
- package/android/src/main/java/com/swmansion/reanimated/nodes/BlockNode.java +24 -0
- package/android/src/main/java/com/swmansion/reanimated/nodes/CallFuncNode.java +49 -0
- package/android/src/main/java/com/swmansion/reanimated/nodes/ClockNode.java +38 -0
- package/android/src/main/java/com/swmansion/reanimated/nodes/ClockOpNode.java +73 -0
- package/android/src/main/java/com/swmansion/reanimated/nodes/ConcatNode.java +36 -0
- package/android/src/main/java/com/swmansion/reanimated/nodes/CondNode.java +41 -0
- package/android/src/main/java/com/swmansion/reanimated/nodes/DebugNode.java +33 -0
- package/android/src/main/java/com/swmansion/reanimated/nodes/EventNode.java +83 -0
- package/android/src/main/java/com/swmansion/reanimated/nodes/FinalNode.java +5 -0
- package/android/src/main/java/com/swmansion/reanimated/nodes/FunctionNode.java +20 -0
- package/android/src/main/java/com/swmansion/reanimated/nodes/JSCallNode.java +41 -0
- package/android/src/main/java/com/swmansion/reanimated/nodes/Node.java +139 -0
- package/android/src/main/java/com/swmansion/reanimated/nodes/NoopNode.java +37 -0
- package/android/src/main/java/com/swmansion/reanimated/nodes/OperatorNode.java +377 -0
- package/android/src/main/java/com/swmansion/reanimated/nodes/ParamNode.java +71 -0
- package/android/src/main/java/com/swmansion/reanimated/nodes/PropsNode.java +153 -0
- package/android/src/main/java/com/swmansion/reanimated/nodes/SetNode.java +32 -0
- package/android/src/main/java/com/swmansion/reanimated/nodes/StyleNode.java +40 -0
- package/android/src/main/java/com/swmansion/reanimated/nodes/TransformNode.java +84 -0
- package/android/src/main/java/com/swmansion/reanimated/nodes/ValueNode.java +40 -0
- package/android/src/main/java/com/swmansion/reanimated/sensor/ReanimatedSensor.java +41 -0
- package/android/src/main/java/com/swmansion/reanimated/sensor/ReanimatedSensorContainer.java +40 -0
- package/android/src/main/java/com/swmansion/reanimated/sensor/ReanimatedSensorListener.java +31 -0
- package/android/src/main/java/com/swmansion/reanimated/sensor/ReanimatedSensorType.java +35 -0
- package/android/src/main/java/com/swmansion/reanimated/transitions/ChangeTransition.java +84 -0
- package/android/src/main/java/com/swmansion/reanimated/transitions/SaneSidePropagation.java +25 -0
- package/android/src/main/java/com/swmansion/reanimated/transitions/Scale.java +86 -0
- package/android/src/main/java/com/swmansion/reanimated/transitions/TransitionModule.java +41 -0
- package/android/src/main/java/com/swmansion/reanimated/transitions/TransitionUtils.java +161 -0
- package/ios/LayoutReanimation/REAAnimationsManager.h +1 -1
- package/ios/LayoutReanimation/REAAnimationsManager.m +18 -4
- package/ios/REAModule.m +8 -9
- package/ios/REANodesManager.h +4 -1
- package/ios/REANodesManager.m +75 -3
- package/ios/native/NativeMethods.h +1 -1
- package/ios/native/NativeProxy.mm +85 -5
- package/ios/sensor/ReanimatedSensor.h +21 -0
- package/ios/sensor/ReanimatedSensor.m +169 -0
- package/ios/sensor/ReanimatedSensorContainer.h +13 -0
- package/ios/sensor/ReanimatedSensorContainer.m +41 -0
- package/ios/sensor/ReanimatedSensorType.h +7 -0
- package/lib/ConfigHelper.js +2 -2
- package/lib/createAnimatedComponent.js +3 -4
- package/lib/reanimated1/core/AnimatedFunction.js +1 -1
- package/lib/reanimated1/derived/interpolate.js +2 -4
- package/lib/reanimated2/Colors.js +3 -98
- package/lib/reanimated2/Easing.js +5 -0
- package/lib/reanimated2/NativeMethods.js +15 -5
- package/lib/reanimated2/NativeReanimated/NativeReanimated.js +25 -12
- package/lib/reanimated2/NativeReanimated/index.js +2 -6
- package/lib/reanimated2/ViewDescriptorsSet.js +2 -2
- package/lib/reanimated2/animation/styleAnimation.js +2 -1
- package/lib/reanimated2/core.js +30 -24
- package/lib/reanimated2/globals.d.ts +6 -0
- package/lib/reanimated2/hook/index.js +1 -0
- package/lib/reanimated2/hook/useAnimatedGestureHandler.js +1 -2
- package/lib/reanimated2/hook/useAnimatedSensor.js +66 -0
- package/lib/reanimated2/hook/useAnimatedStyle.js +31 -14
- package/lib/reanimated2/hook/utils.js +14 -11
- package/lib/reanimated2/index.js +2 -0
- package/lib/reanimated2/interpolateColor.js +98 -0
- package/lib/reanimated2/interpolation.js +1 -1
- package/lib/reanimated2/jestUtils.js +9 -4
- package/lib/reanimated2/js-reanimated/JSReanimated.js +24 -3
- package/lib/reanimated2/js-reanimated/commonTypes.js +1 -0
- package/lib/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.js +8 -0
- package/lib/reanimated2/layoutReanimation/animationBuilder/Keyframe.js +2 -1
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Bounce.js +32 -42
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Fade.js +20 -38
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Flip.js +32 -44
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js +8 -16
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.js +6 -10
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Roll.js +8 -12
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Rotate.js +20 -36
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Slide.js +16 -20
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Stretch.js +8 -12
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Zoom.js +32 -48
- package/lib/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.js +22 -18
- package/lib/reanimated2/mock.js +3 -2
- package/mock.js +6 -4
- package/package.json +44 -36
- package/plugin.js +3 -0
- package/react-native-reanimated.d.ts +102 -15
- package/src/ConfigHelper.ts +4 -4
- package/src/createAnimatedComponent.tsx +3 -3
- package/src/reanimated1/core/AnimatedFunction.js +1 -1
- package/src/reanimated1/derived/interpolate.js +2 -4
- package/src/reanimated2/Colors.ts +8 -151
- package/src/reanimated2/Easing.ts +11 -0
- package/src/reanimated2/NativeMethods.ts +19 -6
- package/src/reanimated2/NativeReanimated/NativeReanimated.ts +42 -14
- package/src/reanimated2/NativeReanimated/index.ts +2 -8
- package/src/reanimated2/ViewDescriptorsSet.ts +2 -3
- package/src/reanimated2/animation/commonTypes.ts +44 -40
- package/src/reanimated2/animation/decay.ts +1 -1
- package/src/reanimated2/animation/delay.ts +2 -16
- package/src/reanimated2/animation/index.ts +8 -8
- package/src/reanimated2/animation/repeat.ts +2 -12
- package/src/reanimated2/animation/sequence.ts +3 -10
- package/src/reanimated2/animation/spring.ts +1 -1
- package/src/reanimated2/animation/styleAnimation.ts +11 -25
- package/src/reanimated2/animation/timing.ts +4 -2
- package/src/reanimated2/animation/util.ts +22 -20
- package/src/reanimated2/commonTypes.ts +68 -1
- package/src/reanimated2/component/FlatList.tsx +2 -1
- package/src/reanimated2/core.ts +35 -29
- package/src/reanimated2/globals.d.ts +6 -0
- package/src/reanimated2/hook/commonTypes.ts +5 -0
- package/src/reanimated2/hook/index.ts +1 -0
- package/src/reanimated2/hook/useAnimatedGestureHandler.ts +1 -2
- package/src/reanimated2/hook/useAnimatedRef.ts +1 -5
- package/src/reanimated2/hook/useAnimatedSensor.ts +91 -0
- package/src/reanimated2/hook/useAnimatedStyle.ts +35 -16
- package/src/reanimated2/hook/utils.ts +20 -18
- package/src/reanimated2/index.ts +2 -0
- package/src/reanimated2/interpolateColor.ts +178 -0
- package/src/reanimated2/interpolation.ts +2 -6
- package/src/reanimated2/jestUtils.ts +9 -4
- package/src/reanimated2/js-reanimated/JSReanimated.ts +28 -6
- package/src/reanimated2/js-reanimated/Mapper.ts +1 -1
- package/src/reanimated2/js-reanimated/MapperRegistry.ts +1 -1
- package/src/reanimated2/js-reanimated/commonTypes.ts +51 -0
- package/src/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.ts +13 -0
- package/src/reanimated2/layoutReanimation/animationBuilder/Keyframe.ts +2 -3
- package/src/reanimated2/layoutReanimation/defaultAnimations/Bounce.ts +51 -21
- package/src/reanimated2/layoutReanimation/defaultAnimations/Fade.ts +40 -10
- package/src/reanimated2/layoutReanimation/defaultAnimations/Flip.ts +48 -12
- package/src/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.ts +16 -4
- package/src/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.ts +8 -2
- package/src/reanimated2/layoutReanimation/defaultAnimations/Roll.ts +16 -4
- package/src/reanimated2/layoutReanimation/defaultAnimations/Rotate.ts +32 -8
- package/src/reanimated2/layoutReanimation/defaultAnimations/Slide.ts +32 -10
- package/src/reanimated2/layoutReanimation/defaultAnimations/Stretch.ts +16 -4
- package/src/reanimated2/layoutReanimation/defaultAnimations/Zoom.ts +64 -16
- package/src/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.ts +2 -1
- package/src/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.ts +32 -21
- package/src/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.ts +2 -1
- package/src/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.ts +2 -1
- package/src/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.ts +2 -1
- package/src/reanimated2/layoutReanimation/defaultTransitions/SequencedTransition.ts +2 -1
- package/src/reanimated2/mock.ts +3 -2
- package/src/reanimated2/utils.ts +1 -1
- package/android/react-native-reanimated-63-hermes.aar +0 -0
- package/android/react-native-reanimated-63-jsc.aar +0 -0
- package/android/src/main/java/com/swmansion/reanimated/ReanimatedProxyPackage.java +0 -15
- package/libSo/fbjni/jni/arm64-v8a/libfbjni.so +0 -0
- package/libSo/fbjni/jni/armeabi-v7a/libfbjni.so +0 -0
- package/libSo/fbjni/jni/x86/libfbjni.so +0 -0
- package/libSo/fbjni/jni/x86_64/libfbjni.so +0 -0
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
package com.swmansion.reanimated;
|
|
2
|
+
|
|
3
|
+
import android.os.SystemClock;
|
|
4
|
+
import android.util.Log;
|
|
5
|
+
import androidx.annotation.Nullable;
|
|
6
|
+
import com.facebook.jni.HybridData;
|
|
7
|
+
import com.facebook.proguard.annotations.DoNotStrip;
|
|
8
|
+
import com.facebook.react.ReactApplication;
|
|
9
|
+
import com.facebook.react.bridge.NativeModule;
|
|
10
|
+
import com.facebook.react.bridge.ReactApplicationContext;
|
|
11
|
+
import com.facebook.react.bridge.ReadableNativeArray;
|
|
12
|
+
import com.facebook.react.bridge.WritableArray;
|
|
13
|
+
import com.facebook.react.bridge.WritableMap;
|
|
14
|
+
import com.facebook.react.devsupport.interfaces.DevSupportManager;
|
|
15
|
+
import com.facebook.react.turbomodule.core.CallInvokerHolderImpl;
|
|
16
|
+
import com.facebook.react.uimanager.UIManagerModule;
|
|
17
|
+
import com.facebook.react.uimanager.events.RCTEventEmitter;
|
|
18
|
+
import com.swmansion.common.GestureHandlerStateManager;
|
|
19
|
+
import com.swmansion.reanimated.layoutReanimation.AnimationsManager;
|
|
20
|
+
import com.swmansion.reanimated.layoutReanimation.LayoutAnimations;
|
|
21
|
+
import com.swmansion.reanimated.layoutReanimation.NativeMethodsHolder;
|
|
22
|
+
import com.swmansion.reanimated.sensor.ReanimatedSensorContainer;
|
|
23
|
+
import com.swmansion.reanimated.sensor.ReanimatedSensorType;
|
|
24
|
+
import java.lang.ref.WeakReference;
|
|
25
|
+
import java.util.ArrayList;
|
|
26
|
+
import java.util.HashMap;
|
|
27
|
+
import java.util.HashSet;
|
|
28
|
+
import java.util.Map;
|
|
29
|
+
import java.util.Set;
|
|
30
|
+
|
|
31
|
+
public class NativeProxy {
|
|
32
|
+
|
|
33
|
+
static {
|
|
34
|
+
System.loadLibrary("reanimated");
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
@DoNotStrip
|
|
38
|
+
public static class AnimationFrameCallback implements NodesManager.OnAnimationFrame {
|
|
39
|
+
|
|
40
|
+
@DoNotStrip private final HybridData mHybridData;
|
|
41
|
+
|
|
42
|
+
@DoNotStrip
|
|
43
|
+
private AnimationFrameCallback(HybridData hybridData) {
|
|
44
|
+
mHybridData = hybridData;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
@Override
|
|
48
|
+
public native void onAnimationFrame(double timestampMs);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
@DoNotStrip
|
|
52
|
+
public static class EventHandler implements RCTEventEmitter {
|
|
53
|
+
|
|
54
|
+
@DoNotStrip private final HybridData mHybridData;
|
|
55
|
+
private UIManagerModule.CustomEventNamesResolver mCustomEventNamesResolver;
|
|
56
|
+
|
|
57
|
+
@DoNotStrip
|
|
58
|
+
private EventHandler(HybridData hybridData) {
|
|
59
|
+
mHybridData = hybridData;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
@Override
|
|
63
|
+
public void receiveEvent(int targetTag, String eventName, @Nullable WritableMap event) {
|
|
64
|
+
String resolvedEventName = mCustomEventNamesResolver.resolveCustomEventName(eventName);
|
|
65
|
+
receiveEvent(targetTag + resolvedEventName, event);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
public native void receiveEvent(String eventKey, @Nullable WritableMap event);
|
|
69
|
+
|
|
70
|
+
@Override
|
|
71
|
+
public void receiveTouches(
|
|
72
|
+
String eventName, WritableArray touches, WritableArray changedIndices) {
|
|
73
|
+
// not interested in processing touch events this way, we process raw events only
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
@DoNotStrip
|
|
78
|
+
public static class SensorSetter {
|
|
79
|
+
|
|
80
|
+
@DoNotStrip private final HybridData mHybridData;
|
|
81
|
+
|
|
82
|
+
@DoNotStrip
|
|
83
|
+
private SensorSetter(HybridData hybridData) {
|
|
84
|
+
mHybridData = hybridData;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
public native void sensorSetter(float[] value);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
@DoNotStrip
|
|
91
|
+
@SuppressWarnings("unused")
|
|
92
|
+
private final HybridData mHybridData;
|
|
93
|
+
|
|
94
|
+
private NodesManager mNodesManager;
|
|
95
|
+
private final WeakReference<ReactApplicationContext> mContext;
|
|
96
|
+
private Scheduler mScheduler = null;
|
|
97
|
+
private ReanimatedSensorContainer reanimatedSensorContainer;
|
|
98
|
+
private final GestureHandlerStateManager gestureHandlerStateManager;
|
|
99
|
+
private Long firstUptime = SystemClock.uptimeMillis();
|
|
100
|
+
private boolean slowAnimationsEnabled = false;
|
|
101
|
+
|
|
102
|
+
public NativeProxy(ReactApplicationContext context) {
|
|
103
|
+
CallInvokerHolderImpl holder =
|
|
104
|
+
(CallInvokerHolderImpl) context.getCatalystInstance().getJSCallInvokerHolder();
|
|
105
|
+
LayoutAnimations LayoutAnimations = new LayoutAnimations(context);
|
|
106
|
+
mScheduler = new Scheduler(context);
|
|
107
|
+
mHybridData =
|
|
108
|
+
initHybrid(
|
|
109
|
+
context.getJavaScriptContextHolder().get(), holder, mScheduler, LayoutAnimations);
|
|
110
|
+
mContext = new WeakReference<>(context);
|
|
111
|
+
prepare(LayoutAnimations);
|
|
112
|
+
reanimatedSensorContainer = new ReanimatedSensorContainer(mContext);
|
|
113
|
+
addDevMenuOption();
|
|
114
|
+
|
|
115
|
+
GestureHandlerStateManager tempHandlerStateManager;
|
|
116
|
+
try {
|
|
117
|
+
Class<NativeModule> gestureHandlerModuleClass =
|
|
118
|
+
(Class<NativeModule>)
|
|
119
|
+
Class.forName("com.swmansion.gesturehandler.react.RNGestureHandlerModule");
|
|
120
|
+
tempHandlerStateManager =
|
|
121
|
+
(GestureHandlerStateManager) context.getNativeModule(gestureHandlerModuleClass);
|
|
122
|
+
} catch (ClassCastException | ClassNotFoundException e) {
|
|
123
|
+
tempHandlerStateManager = null;
|
|
124
|
+
}
|
|
125
|
+
gestureHandlerStateManager = tempHandlerStateManager;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
private native HybridData initHybrid(
|
|
129
|
+
long jsContext,
|
|
130
|
+
CallInvokerHolderImpl jsCallInvokerHolder,
|
|
131
|
+
Scheduler scheduler,
|
|
132
|
+
LayoutAnimations LayoutAnimations);
|
|
133
|
+
|
|
134
|
+
private native void installJSIBindings();
|
|
135
|
+
|
|
136
|
+
public native boolean isAnyHandlerWaitingForEvent(String eventName);
|
|
137
|
+
|
|
138
|
+
public Scheduler getScheduler() {
|
|
139
|
+
return mScheduler;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
private void toggleSlowAnimations() {
|
|
143
|
+
slowAnimationsEnabled = !slowAnimationsEnabled;
|
|
144
|
+
if (slowAnimationsEnabled) {
|
|
145
|
+
firstUptime = SystemClock.uptimeMillis();
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
private void addDevMenuOption() {
|
|
150
|
+
final DevSupportManager devSupportManager =
|
|
151
|
+
((ReactApplication) mContext.get().getApplicationContext())
|
|
152
|
+
.getReactNativeHost()
|
|
153
|
+
.getReactInstanceManager()
|
|
154
|
+
.getDevSupportManager();
|
|
155
|
+
|
|
156
|
+
devSupportManager.addCustomDevOption(
|
|
157
|
+
"Toggle slow animations (Reanimated)", this::toggleSlowAnimations);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
@DoNotStrip
|
|
161
|
+
private void requestRender(AnimationFrameCallback callback) {
|
|
162
|
+
mNodesManager.postOnAnimation(callback);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
@DoNotStrip
|
|
166
|
+
private void updateProps(int viewTag, Map<String, Object> props) {
|
|
167
|
+
mNodesManager.updateProps(viewTag, props);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
@DoNotStrip
|
|
171
|
+
private String obtainProp(int viewTag, String propName) {
|
|
172
|
+
return mNodesManager.obtainProp(viewTag, propName);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
@DoNotStrip
|
|
176
|
+
private void scrollTo(int viewTag, double x, double y, boolean animated) {
|
|
177
|
+
mNodesManager.scrollTo(viewTag, x, y, animated);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
@DoNotStrip
|
|
181
|
+
private void setGestureState(int handlerTag, int newState) {
|
|
182
|
+
if (gestureHandlerStateManager != null) {
|
|
183
|
+
gestureHandlerStateManager.setGestureHandlerState(handlerTag, newState);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
@DoNotStrip
|
|
188
|
+
private String getUptime() {
|
|
189
|
+
if (slowAnimationsEnabled) {
|
|
190
|
+
final long ANIMATIONS_DRAG_FACTOR = 10;
|
|
191
|
+
return Long.toString(
|
|
192
|
+
this.firstUptime
|
|
193
|
+
+ (SystemClock.uptimeMillis() - this.firstUptime) / ANIMATIONS_DRAG_FACTOR);
|
|
194
|
+
} else {
|
|
195
|
+
return Long.toString(SystemClock.uptimeMillis());
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
@DoNotStrip
|
|
200
|
+
private float[] measure(int viewTag) {
|
|
201
|
+
return mNodesManager.measure(viewTag);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
@DoNotStrip
|
|
205
|
+
private void configureProps(ReadableNativeArray uiProps, ReadableNativeArray nativeProps) {
|
|
206
|
+
Set<String> uiPropsSet = convertProps(uiProps);
|
|
207
|
+
Set<String> nativePropsSet = convertProps(nativeProps);
|
|
208
|
+
mNodesManager.configureProps(uiPropsSet, nativePropsSet);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
private Set<String> convertProps(ReadableNativeArray props) {
|
|
212
|
+
Set<String> propsSet = new HashSet<>();
|
|
213
|
+
ArrayList<Object> propsList = props.toArrayList();
|
|
214
|
+
for (int i = 0; i < propsList.size(); i++) {
|
|
215
|
+
propsSet.add((String) propsList.get(i));
|
|
216
|
+
}
|
|
217
|
+
return propsSet;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
@DoNotStrip
|
|
221
|
+
private void registerEventHandler(EventHandler handler) {
|
|
222
|
+
handler.mCustomEventNamesResolver = mNodesManager.getEventNameResolver();
|
|
223
|
+
mNodesManager.registerEventHandler(handler);
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
@DoNotStrip
|
|
227
|
+
private int registerSensor(int sensorType, int interval, SensorSetter setter) {
|
|
228
|
+
return reanimatedSensorContainer.registerSensor(
|
|
229
|
+
ReanimatedSensorType.getInstanceById(sensorType), interval, setter);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
@DoNotStrip
|
|
233
|
+
private void unregisterSensor(int sensorId) {
|
|
234
|
+
reanimatedSensorContainer.unregisterSensor(sensorId);
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
public void onCatalystInstanceDestroy() {
|
|
238
|
+
mScheduler.deactivate();
|
|
239
|
+
mHybridData.resetNative();
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
public void prepare(LayoutAnimations LayoutAnimations) {
|
|
243
|
+
if (Utils.isChromeDebugger) {
|
|
244
|
+
Log.w("[REANIMATED]", "You can not use LayoutAnimation with enabled Chrome Debugger");
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
mNodesManager = mContext.get().getNativeModule(ReanimatedModule.class).getNodesManager();
|
|
248
|
+
installJSIBindings();
|
|
249
|
+
AnimationsManager animationsManager =
|
|
250
|
+
mContext
|
|
251
|
+
.get()
|
|
252
|
+
.getNativeModule(ReanimatedModule.class)
|
|
253
|
+
.getNodesManager()
|
|
254
|
+
.getAnimationsManager();
|
|
255
|
+
|
|
256
|
+
WeakReference<LayoutAnimations> weakLayoutAnimations = new WeakReference<>(LayoutAnimations);
|
|
257
|
+
animationsManager.setNativeMethods(
|
|
258
|
+
new NativeMethodsHolder() {
|
|
259
|
+
@Override
|
|
260
|
+
public void startAnimationForTag(int tag, String type, HashMap<String, Float> values) {
|
|
261
|
+
LayoutAnimations LayoutAnimations = weakLayoutAnimations.get();
|
|
262
|
+
if (LayoutAnimations != null) {
|
|
263
|
+
HashMap<String, String> preparedValues = new HashMap<>();
|
|
264
|
+
for (String key : values.keySet()) {
|
|
265
|
+
preparedValues.put(key, values.get(key).toString());
|
|
266
|
+
}
|
|
267
|
+
LayoutAnimations.startAnimationForTag(tag, type, preparedValues);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
@Override
|
|
272
|
+
public void removeConfigForTag(int tag) {
|
|
273
|
+
LayoutAnimations LayoutAnimations = weakLayoutAnimations.get();
|
|
274
|
+
if (LayoutAnimations != null) {
|
|
275
|
+
LayoutAnimations.removeConfigForTag(tag);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
@Override
|
|
280
|
+
public boolean isLayoutAnimationEnabled() {
|
|
281
|
+
return LayoutAnimations.isLayoutAnimationEnabled();
|
|
282
|
+
}
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
}
|