react-native-reanimated 2.3.0-alpha.3 → 2.3.0-beta.4
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/LayoutAnimations/LayoutAnimationsProxy.cpp +15 -8
- package/Common/cpp/NativeModules/NativeReanimatedModule.cpp +176 -154
- package/Common/cpp/NativeModules/NativeReanimatedModuleSpec.cpp +49 -33
- package/Common/cpp/Registries/EventHandlerRegistry.cpp +14 -7
- package/Common/cpp/Registries/MapperRegistry.cpp +24 -20
- package/Common/cpp/Registries/WorkletsCache.cpp +19 -9
- package/Common/cpp/SharedItems/FrozenObject.cpp +17 -8
- package/Common/cpp/SharedItems/MutableValue.cpp +38 -25
- package/Common/cpp/SharedItems/MutableValueSetterProxy.cpp +11 -7
- package/Common/cpp/SharedItems/RemoteObject.cpp +9 -5
- package/Common/cpp/SharedItems/ShareableValue.cpp +211 -160
- package/Common/cpp/Tools/FeaturesConfig.cpp +5 -0
- package/Common/cpp/Tools/JSIStoreValueUser.cpp +25 -6
- package/Common/cpp/Tools/Mapper.cpp +30 -30
- package/Common/cpp/Tools/RuntimeDecorator.cpp +124 -86
- package/Common/cpp/Tools/Scheduler.cpp +6 -5
- package/Common/cpp/Tools/WorkletEventHandler.cpp +4 -2
- package/Common/cpp/headers/LayoutAnimations/LayoutAnimationsProxy.h +12 -11
- package/Common/cpp/headers/NativeModules/NativeReanimatedModule.h +50 -31
- package/Common/cpp/headers/NativeModules/NativeReanimatedModuleSpec.h +34 -16
- package/Common/cpp/headers/Registries/EventHandlerRegistry.h +15 -8
- package/Common/cpp/headers/Registries/MapperRegistry.h +5 -4
- package/Common/cpp/headers/Registries/WorkletsCache.h +9 -7
- package/Common/cpp/headers/SharedItems/FrozenObject.h +19 -11
- package/Common/cpp/headers/SharedItems/HostFunctionHandler.h +8 -4
- package/Common/cpp/headers/SharedItems/MutableValue.h +23 -12
- package/Common/cpp/headers/SharedItems/MutableValueSetterProxy.h +12 -7
- package/Common/cpp/headers/SharedItems/RemoteObject.h +19 -8
- package/Common/cpp/headers/SharedItems/RuntimeManager.h +26 -25
- package/Common/cpp/headers/SharedItems/ShareableValue.h +32 -27
- package/Common/cpp/headers/SharedItems/SharedParent.h +10 -7
- package/Common/cpp/headers/SharedItems/ValueWrapper.h +95 -72
- package/Common/cpp/headers/SpecTools/ErrorHandler.h +18 -19
- package/Common/cpp/headers/Tools/FeaturesConfig.h +19 -0
- package/Common/cpp/headers/Tools/JSIStoreValueUser.h +13 -16
- package/Common/cpp/headers/Tools/Mapper.h +19 -16
- package/Common/cpp/headers/Tools/PlatformDepMethodsHolder.h +17 -7
- package/Common/cpp/headers/Tools/ReanimatedHiddenHeaders.h +7 -11
- package/Common/cpp/headers/Tools/RuntimeDecorator.h +36 -27
- package/Common/cpp/headers/Tools/Scheduler.h +30 -35
- package/Common/cpp/headers/Tools/WorkletEventHandler.h +11 -8
- package/Common/cpp/hidden_headers/Logger.h +14 -14
- package/Common/cpp/hidden_headers/LoggerInterface.h +8 -9
- package/Common/cpp/hidden_headers/SpeedChecker.h +7 -8
- package/README.md +1 -1
- package/RNReanimated.podspec +24 -6
- package/android/build.gradle +38 -29
- package/android/react-native-reanimated-63-hermes.aar +0 -0
- package/android/react-native-reanimated-63-jsc.aar +0 -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/ios/LayoutReanimation/REAAnimationsManager.h +10 -8
- package/ios/LayoutReanimation/REAAnimationsManager.m +91 -87
- package/ios/LayoutReanimation/REASnapshot.h +2 -2
- package/ios/LayoutReanimation/REASnapshot.m +8 -7
- package/ios/LayoutReanimation/REAUIManager.h +4 -4
- package/ios/LayoutReanimation/REAUIManager.mm +116 -70
- package/ios/Nodes/REAAlwaysNode.m +14 -15
- package/ios/Nodes/REABezierNode.m +8 -7
- package/ios/Nodes/REABlockNode.m +1 -1
- package/ios/Nodes/REACallFuncNode.h +0 -1
- package/ios/Nodes/REACallFuncNode.m +10 -8
- package/ios/Nodes/REAClockNodes.m +22 -20
- package/ios/Nodes/REAConcatNode.h +0 -1
- package/ios/Nodes/REAConcatNode.m +2 -2
- package/ios/Nodes/REACondNode.m +7 -5
- package/ios/Nodes/READebugNode.m +5 -4
- package/ios/Nodes/REAEventNode.m +1 -1
- package/ios/Nodes/REAFunctionNode.h +0 -1
- package/ios/Nodes/REAFunctionNode.m +2 -2
- package/ios/Nodes/REAJSCallNode.m +4 -5
- package/ios/Nodes/REANode.h +3 -4
- package/ios/Nodes/REANode.m +9 -11
- package/ios/Nodes/REAOperatorNode.m +68 -67
- package/ios/Nodes/REAParamNode.h +1 -3
- package/ios/Nodes/REAParamNode.m +15 -17
- package/ios/Nodes/REAPropsNode.h +1 -3
- package/ios/Nodes/REAPropsNode.m +19 -22
- package/ios/Nodes/REASetNode.h +0 -1
- package/ios/Nodes/REASetNode.m +7 -5
- package/ios/Nodes/REAStyleNode.h +0 -1
- package/ios/Nodes/REAStyleNode.m +2 -4
- package/ios/Nodes/REATransformNode.h +0 -1
- package/ios/Nodes/REATransformNode.m +3 -5
- package/ios/Nodes/REAValueNode.m +5 -7
- package/ios/REAEventDispatcher.m +4 -4
- package/ios/REAModule.h +0 -2
- package/ios/REAModule.m +29 -38
- package/ios/REANodesManager.h +11 -19
- package/ios/REANodesManager.m +106 -130
- package/ios/REAUtils.h +5 -3
- package/ios/RNGestureHandlerStateManager.h +5 -0
- package/ios/Transitioning/RCTConvert+REATransition.m +45 -29
- package/ios/Transitioning/REAAllTransitions.h +2 -2
- package/ios/Transitioning/REAAllTransitions.m +14 -25
- package/ios/Transitioning/REATransition.h +8 -7
- package/ios/Transitioning/REATransition.m +19 -16
- package/ios/Transitioning/REATransitionAnimation.h +1 -1
- package/ios/Transitioning/REATransitionAnimation.m +2 -3
- package/ios/Transitioning/REATransitionManager.m +3 -3
- package/ios/native/NativeMethods.h +20 -5
- package/ios/native/NativeMethods.mm +14 -6
- package/ios/native/NativeProxy.h +4 -2
- package/ios/native/NativeProxy.mm +84 -63
- package/ios/native/REAIOSErrorHandler.h +13 -10
- package/ios/native/REAIOSErrorHandler.mm +19 -15
- package/ios/native/REAIOSLogger.h +8 -8
- package/ios/native/REAIOSLogger.mm +10 -6
- package/ios/native/REAIOSScheduler.h +5 -5
- package/ios/native/REAIOSScheduler.mm +17 -10
- package/ios/native/REAInitializer.h +5 -7
- package/ios/native/REAInitializer.mm +43 -31
- package/ios/native/UIResponder+Reanimated.mm +2 -2
- package/lib/Animated.js +9 -1
- package/lib/ConfigHelper.js +121 -138
- package/lib/ReanimatedEventEmitter.js +0 -1
- package/lib/ReanimatedModule.js +0 -1
- package/lib/ReanimatedModule.macos.js +0 -1
- package/lib/ReanimatedModule.native.js +5 -6
- package/lib/ReanimatedModule.windows.js +0 -1
- package/lib/ReanimatedModuleCompat.js +64 -35
- package/lib/createAnimatedComponent.js +468 -487
- package/lib/index.js +9 -1
- package/lib/reanimated2/NativeMethods.js +7 -12
- package/lib/reanimated2/NativeReanimated/NativeReanimated.js +37 -0
- package/lib/reanimated2/NativeReanimated/index.js +15 -0
- package/lib/reanimated2/PropAdapters.js +0 -1
- package/lib/reanimated2/UpdateProps.js +6 -7
- package/lib/reanimated2/ViewDescriptorsSet.js +4 -4
- package/lib/reanimated2/WorkletEventHandler.js +15 -13
- package/lib/reanimated2/animation/delay.js +8 -2
- package/lib/reanimated2/animation/spring.js +2 -0
- package/lib/reanimated2/animation/styleAnimation.js +7 -3
- package/lib/reanimated2/animation/util.js +25 -2
- package/lib/reanimated2/core.js +41 -17
- package/lib/reanimated2/globals.d.ts +21 -1
- package/lib/reanimated2/hook/useAnimatedRef.js +1 -1
- package/lib/reanimated2/hook/useAnimatedStyle.js +3 -3
- package/lib/reanimated2/index.js +1 -0
- package/lib/reanimated2/interpolation.js +95 -87
- package/lib/reanimated2/js-reanimated/JSReanimated.js +13 -10
- package/lib/reanimated2/js-reanimated/Mapper.js +4 -3
- package/lib/reanimated2/js-reanimated/MapperRegistry.js +3 -6
- package/lib/reanimated2/js-reanimated/MutableValue.js +0 -2
- package/lib/reanimated2/js-reanimated/index.js +10 -8
- package/lib/reanimated2/layoutReanimation/LayoutAnimationRepository.js +33 -2
- package/lib/reanimated2/layoutReanimation/animationBuilder/BaseAnimationBuilder.js +27 -124
- package/lib/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.js +125 -0
- package/lib/reanimated2/layoutReanimation/animationBuilder/index.js +1 -2
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Bounce.js +115 -45
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Default.js +7 -2
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Fade.js +21 -21
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Flip.js +25 -25
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js +19 -17
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.js +5 -5
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Roll.js +9 -9
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Rotate.js +17 -17
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Slide.js +19 -19
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Stretch.js +9 -9
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Zoom.js +33 -33
- package/lib/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.js +78 -0
- package/lib/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.js +128 -0
- package/lib/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.js +37 -0
- package/lib/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.js +41 -0
- package/lib/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.js +34 -0
- package/lib/reanimated2/layoutReanimation/defaultTransitions/SequencedTransition.js +46 -0
- package/lib/reanimated2/layoutReanimation/defaultTransitions/index.js +6 -0
- package/lib/reanimated2/layoutReanimation/index.js +1 -0
- package/lib/reanimated2/mock.js +3 -1
- package/lib/reanimated2/utils.js +9 -0
- package/lib/setAndForwardRef.js +14 -48
- 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
- package/mock.js +1 -1
- package/package.json +28 -17
- package/plugin.js +220 -39
- package/react-native-reanimated.d.ts +542 -547
- package/src/Animated.js +9 -1
- package/src/{ConfigHelper.js → ConfigHelper.ts} +15 -7
- package/src/{ReanimatedEventEmitter.js → ReanimatedEventEmitter.ts} +0 -0
- package/src/{ReanimatedModule.js → ReanimatedModule.macos.ts} +0 -0
- package/src/{ReanimatedModule.native.js → ReanimatedModule.native.ts} +0 -0
- package/src/{ReanimatedModule.macos.js → ReanimatedModule.ts} +0 -0
- package/src/{ReanimatedModule.windows.js → ReanimatedModule.windows.ts} +0 -0
- package/src/ReanimatedModuleCompat.ts +51 -0
- package/src/{createAnimatedComponent.js → createAnimatedComponent.tsx} +285 -126
- package/src/reanimated2/NativeMethods.ts +34 -13
- package/src/reanimated2/NativeReanimated/NativeReanimated.ts +72 -0
- package/src/reanimated2/NativeReanimated/index.ts +18 -0
- package/src/reanimated2/PropAdapters.ts +0 -1
- package/src/reanimated2/UpdateProps.ts +31 -15
- package/src/reanimated2/ViewDescriptorsSet.ts +15 -12
- package/src/reanimated2/WorkletEventHandler.ts +41 -23
- package/src/reanimated2/animation/commonTypes.ts +4 -4
- package/src/reanimated2/animation/decay.ts +2 -2
- package/src/reanimated2/animation/delay.ts +11 -5
- package/src/reanimated2/animation/index.ts +7 -7
- package/src/reanimated2/animation/repeat.ts +4 -4
- package/src/reanimated2/animation/sequence.ts +2 -2
- package/src/reanimated2/animation/spring.ts +6 -5
- package/src/reanimated2/animation/styleAnimation.ts +27 -15
- package/src/reanimated2/animation/timing.ts +5 -5
- package/src/reanimated2/animation/util.ts +47 -8
- package/src/reanimated2/commonTypes.ts +3 -0
- package/src/reanimated2/core.ts +80 -34
- package/src/reanimated2/globals.d.ts +21 -1
- package/src/reanimated2/hook/useAnimatedGestureHandler.ts +1 -1
- package/src/reanimated2/hook/useAnimatedRef.ts +13 -15
- package/src/reanimated2/hook/useAnimatedScrollHandler.ts +3 -3
- package/src/reanimated2/hook/useAnimatedStyle.ts +7 -7
- package/src/reanimated2/hook/utils.ts +4 -3
- package/src/reanimated2/index.ts +1 -0
- package/src/reanimated2/interpolation.ts +170 -103
- package/src/reanimated2/js-reanimated/JSReanimated.ts +37 -23
- package/src/reanimated2/js-reanimated/Mapper.ts +22 -9
- package/src/reanimated2/js-reanimated/MapperRegistry.ts +22 -19
- package/src/reanimated2/js-reanimated/MutableValue.ts +11 -11
- package/src/reanimated2/js-reanimated/index.ts +31 -14
- package/src/reanimated2/layoutReanimation/LayoutAnimationRepository.ts +75 -0
- package/src/reanimated2/layoutReanimation/animationBuilder/BaseAnimationBuilder.ts +29 -159
- package/src/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.ts +169 -0
- package/src/reanimated2/layoutReanimation/animationBuilder/Keyframe.ts +2 -2
- package/src/reanimated2/layoutReanimation/animationBuilder/commonTypes.ts +3 -9
- package/src/reanimated2/layoutReanimation/animationBuilder/index.ts +1 -5
- package/src/reanimated2/layoutReanimation/defaultAnimations/Bounce.ts +162 -82
- package/src/reanimated2/layoutReanimation/defaultAnimations/Default.ts +7 -2
- package/src/reanimated2/layoutReanimation/defaultAnimations/Fade.ts +32 -32
- package/src/reanimated2/layoutReanimation/defaultAnimations/Flip.ts +38 -38
- package/src/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.ts +34 -32
- package/src/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.ts +8 -8
- package/src/reanimated2/layoutReanimation/defaultAnimations/Roll.ts +14 -14
- package/src/reanimated2/layoutReanimation/defaultAnimations/Rotate.ts +26 -26
- package/src/reanimated2/layoutReanimation/defaultAnimations/Slide.ts +28 -28
- package/src/reanimated2/layoutReanimation/defaultAnimations/Stretch.ts +14 -14
- package/src/reanimated2/layoutReanimation/defaultAnimations/Zoom.ts +50 -50
- package/src/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.ts +104 -0
- package/src/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.ts +213 -0
- package/src/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.ts +60 -0
- package/src/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.ts +58 -0
- package/src/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.ts +41 -0
- package/src/reanimated2/layoutReanimation/defaultTransitions/SequencedTransition.ts +78 -0
- package/src/reanimated2/layoutReanimation/defaultTransitions/index.ts +6 -0
- package/src/reanimated2/layoutReanimation/index.ts +1 -0
- package/src/reanimated2/mock.ts +3 -1
- package/src/reanimated2/utils.ts +21 -0
- package/src/{setAndForwardRef.js → setAndForwardRef.ts} +12 -2
- package/android/react-native-reanimated-62-hermes.aar +0 -0
- package/android/react-native-reanimated-62-jsc.aar +0 -0
- package/lib/reanimated2/NativeReanimated.js +0 -48
- package/lib/reanimated2/layoutReanimation/animationBuilder/BaseBounceAnimationBuilder.js +0 -55
- package/lib/reanimated2/layoutReanimation/animationBuilder/LayoutAnimationBuilder.js +0 -165
- package/src/ReanimatedModuleCompat.js +0 -37
- package/src/reanimated2/NativeReanimated.ts +0 -70
- package/src/reanimated2/layoutReanimation/LayoutAnimationRepository.tsx +0 -41
- package/src/reanimated2/layoutReanimation/animationBuilder/BaseBounceAnimationBuilder.ts +0 -82
- package/src/reanimated2/layoutReanimation/animationBuilder/LayoutAnimationBuilder.ts +0 -217
package/lib/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Image, ScrollView, Text, View } from 'react-native';
|
|
1
|
+
import { Image, ScrollView, Text, View, LogBox } from 'react-native';
|
|
2
2
|
import createAnimatedComponent from './createAnimatedComponent';
|
|
3
3
|
import {
|
|
4
4
|
addWhitelistedNativeProps,
|
|
@@ -23,3 +23,11 @@ const Animated = {
|
|
|
23
23
|
export * from './reanimated2';
|
|
24
24
|
export * from './reanimated1';
|
|
25
25
|
export default Animated;
|
|
26
|
+
|
|
27
|
+
// I think we can ignore this message as long as Gesture Handler doesn't
|
|
28
|
+
// try to load the Reanimated module. I figured it should be here instead of
|
|
29
|
+
// RNGH because this prevents the message from being displayed for all
|
|
30
|
+
// versions of RNGH.
|
|
31
|
+
LogBox.ignoreLogs([
|
|
32
|
+
'RCTBridge required dispatch_sync to load RNGestureHandlerModule. This may lead to deadlocks',
|
|
33
|
+
]);
|
|
@@ -1,20 +1,8 @@
|
|
|
1
|
-
/* global _WORKLET _measure _scrollTo */
|
|
2
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
3
|
-
// @ts-nocheck
|
|
4
1
|
import { findNodeHandle } from 'react-native';
|
|
5
2
|
import { isChromeDebugger } from './PlatformChecker';
|
|
6
3
|
export function getTag(view) {
|
|
7
4
|
return findNodeHandle(view);
|
|
8
5
|
}
|
|
9
|
-
/**
|
|
10
|
-
* fields that can be accessed:
|
|
11
|
-
* x
|
|
12
|
-
* y
|
|
13
|
-
* width
|
|
14
|
-
* height
|
|
15
|
-
* pageX
|
|
16
|
-
* pageY
|
|
17
|
-
*/
|
|
18
6
|
export function measure(animatedRef) {
|
|
19
7
|
'worklet';
|
|
20
8
|
if (!_WORKLET && !isChromeDebugger()) {
|
|
@@ -35,3 +23,10 @@ export function scrollTo(animatedRef, x, y, animated) {
|
|
|
35
23
|
const viewTag = animatedRef();
|
|
36
24
|
_scrollTo(viewTag, x, y, animated);
|
|
37
25
|
}
|
|
26
|
+
export function setGestureState(handlerTag, newState) {
|
|
27
|
+
'worklet';
|
|
28
|
+
if (!_WORKLET && !isChromeDebugger()) {
|
|
29
|
+
console.warn('[Reanimated] You can not use setGestureState in non-worklet function.');
|
|
30
|
+
}
|
|
31
|
+
_setGestureState(handlerTag, newState);
|
|
32
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
const InnerNativeModule = global.__reanimatedModuleProxy;
|
|
2
|
+
export class NativeReanimated {
|
|
3
|
+
constructor(native = true) {
|
|
4
|
+
this.native = native;
|
|
5
|
+
this.useOnlyV1 = InnerNativeModule === null;
|
|
6
|
+
}
|
|
7
|
+
installCoreFunctions(valueSetter) {
|
|
8
|
+
return InnerNativeModule.installCoreFunctions(valueSetter);
|
|
9
|
+
}
|
|
10
|
+
makeShareable(value) {
|
|
11
|
+
return InnerNativeModule.makeShareable(value);
|
|
12
|
+
}
|
|
13
|
+
makeMutable(value) {
|
|
14
|
+
return InnerNativeModule.makeMutable(value);
|
|
15
|
+
}
|
|
16
|
+
makeRemote(object = {}) {
|
|
17
|
+
return InnerNativeModule.makeRemote(object);
|
|
18
|
+
}
|
|
19
|
+
startMapper(mapper, inputs = [], outputs = [], updater, viewDescriptors) {
|
|
20
|
+
return InnerNativeModule.startMapper(mapper, inputs, outputs, updater, viewDescriptors);
|
|
21
|
+
}
|
|
22
|
+
stopMapper(mapperId) {
|
|
23
|
+
return InnerNativeModule.stopMapper(mapperId);
|
|
24
|
+
}
|
|
25
|
+
registerEventHandler(eventHash, eventHandler) {
|
|
26
|
+
return InnerNativeModule.registerEventHandler(eventHash, eventHandler);
|
|
27
|
+
}
|
|
28
|
+
unregisterEventHandler(id) {
|
|
29
|
+
return InnerNativeModule.unregisterEventHandler(id);
|
|
30
|
+
}
|
|
31
|
+
getViewProp(viewTag, propName, callback) {
|
|
32
|
+
return InnerNativeModule.getViewProp(viewTag, propName, callback);
|
|
33
|
+
}
|
|
34
|
+
enableLayoutAnimations(flag) {
|
|
35
|
+
InnerNativeModule.enableLayoutAnimations(flag);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import reanimatedJS from '../js-reanimated';
|
|
2
|
+
import { nativeShouldBeMock } from '../PlatformChecker';
|
|
3
|
+
import { Platform } from 'react-native';
|
|
4
|
+
import { NativeReanimated } from './NativeReanimated';
|
|
5
|
+
let exportedModule;
|
|
6
|
+
if (nativeShouldBeMock()) {
|
|
7
|
+
exportedModule = reanimatedJS;
|
|
8
|
+
}
|
|
9
|
+
else {
|
|
10
|
+
exportedModule = new NativeReanimated();
|
|
11
|
+
if (exportedModule.useOnlyV1 && Platform.OS === 'android') {
|
|
12
|
+
console.warn(`If you want to use Reanimated 2 then go through our installation steps https://docs.swmansion.com/react-native-reanimated/docs/installation`);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export default exportedModule;
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
/* global _updateProps */
|
|
2
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
3
|
-
// @ts-nocheck
|
|
4
1
|
import { processColor } from './Colors';
|
|
5
2
|
import { makeShareable, isConfigured } from './core';
|
|
6
3
|
import { _updatePropsJS } from './js-reanimated';
|
|
@@ -22,14 +19,16 @@ export const colorProps = [
|
|
|
22
19
|
'textShadowColor',
|
|
23
20
|
'overlayColor',
|
|
24
21
|
];
|
|
25
|
-
const ColorProperties = !isConfigured() ? [] : makeShareable(colorProps);
|
|
22
|
+
export const ColorProperties = !isConfigured() ? [] : makeShareable(colorProps);
|
|
26
23
|
let updatePropsByPlatform;
|
|
27
24
|
if (shouldBeUseWeb()) {
|
|
28
25
|
updatePropsByPlatform = (_, updates, maybeViewRef) => {
|
|
29
26
|
'worklet';
|
|
30
|
-
maybeViewRef
|
|
31
|
-
|
|
32
|
-
|
|
27
|
+
if (maybeViewRef) {
|
|
28
|
+
maybeViewRef.items.forEach((item, _) => {
|
|
29
|
+
_updatePropsJS(updates, item);
|
|
30
|
+
});
|
|
31
|
+
}
|
|
33
32
|
};
|
|
34
33
|
}
|
|
35
34
|
else {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
2
|
-
// @ts-nocheck
|
|
3
1
|
import { useRef } from 'react';
|
|
4
2
|
import { makeMutable } from './core';
|
|
3
|
+
import { Platform } from 'react-native';
|
|
4
|
+
const scheduleUpdates = Platform.OS === 'web' ? requestAnimationFrame : setImmediate;
|
|
5
5
|
export function makeViewDescriptorsSet() {
|
|
6
6
|
const ref = useRef(null);
|
|
7
7
|
if (ref.current === null) {
|
|
@@ -20,7 +20,7 @@ export function makeViewDescriptorsSet() {
|
|
|
20
20
|
data.items.push(item);
|
|
21
21
|
if (!data.waitForInsertSync) {
|
|
22
22
|
data.waitForInsertSync = true;
|
|
23
|
-
|
|
23
|
+
scheduleUpdates(() => {
|
|
24
24
|
data.sharableViewDescriptors.value = data.items;
|
|
25
25
|
data.waitForInsertSync = false;
|
|
26
26
|
});
|
|
@@ -30,7 +30,7 @@ export function makeViewDescriptorsSet() {
|
|
|
30
30
|
data.batchToRemove.add(viewTag);
|
|
31
31
|
if (!data.waitForRemoveSync) {
|
|
32
32
|
data.waitForRemoveSync = true;
|
|
33
|
-
|
|
33
|
+
scheduleUpdates(() => {
|
|
34
34
|
const items = [];
|
|
35
35
|
for (const item of data.items) {
|
|
36
36
|
if (data.batchToRemove.has(item.tag)) {
|
|
@@ -1,15 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
}
|
|
1
|
+
import NativeReanimatedModule from './NativeReanimated';
|
|
2
|
+
function jsListener(eventName, handler) {
|
|
3
|
+
return (evt) => {
|
|
4
|
+
handler(Object.assign(Object.assign({}, evt.nativeEvent), { eventName }));
|
|
5
|
+
};
|
|
6
|
+
}
|
|
7
7
|
export default class WorkletEventHandler {
|
|
8
8
|
constructor(worklet, eventNames = []) {
|
|
9
9
|
this.worklet = worklet;
|
|
10
10
|
this.eventNames = eventNames;
|
|
11
11
|
this.reattachNeeded = false;
|
|
12
|
-
|
|
12
|
+
this.listeners = {};
|
|
13
|
+
this.viewTag = undefined;
|
|
14
|
+
this.registrations = [];
|
|
15
|
+
if (!NativeReanimatedModule.native) {
|
|
13
16
|
this.listeners = eventNames.reduce((acc, eventName) => {
|
|
14
17
|
acc[eventName] = jsListener(eventName, worklet);
|
|
15
18
|
return acc;
|
|
@@ -20,16 +23,15 @@ export default class WorkletEventHandler {
|
|
|
20
23
|
this.worklet = newWorklet;
|
|
21
24
|
this.reattachNeeded = true;
|
|
22
25
|
}
|
|
23
|
-
registerForEvents(viewTag, fallbackEventName
|
|
26
|
+
registerForEvents(viewTag, fallbackEventName) {
|
|
24
27
|
this.viewTag = viewTag;
|
|
25
|
-
this.registrations = this.eventNames.map((eventName) =>
|
|
28
|
+
this.registrations = this.eventNames.map((eventName) => NativeReanimatedModule.registerEventHandler(viewTag + eventName, this.worklet));
|
|
26
29
|
if (this.registrations.length === 0 && fallbackEventName) {
|
|
27
|
-
this.registrations.push(
|
|
30
|
+
this.registrations.push(NativeReanimatedModule.registerEventHandler(viewTag + fallbackEventName, this.worklet));
|
|
28
31
|
}
|
|
29
32
|
}
|
|
30
33
|
unregisterFromEvents() {
|
|
31
|
-
this.registrations
|
|
32
|
-
|
|
33
|
-
this.registrations = undefined;
|
|
34
|
+
this.registrations.forEach((id) => NativeReanimatedModule.unregisterEventHandler(id));
|
|
35
|
+
this.registrations = [];
|
|
34
36
|
}
|
|
35
37
|
}
|
|
@@ -17,7 +17,8 @@ export function withDelay(delayMs, _nextAnimation) {
|
|
|
17
17
|
return finished;
|
|
18
18
|
}
|
|
19
19
|
else if (previousAnimation) {
|
|
20
|
-
const finished = previousAnimation.
|
|
20
|
+
const finished = previousAnimation.finished ||
|
|
21
|
+
previousAnimation.onFrame(previousAnimation, now);
|
|
21
22
|
animation.current = previousAnimation.current;
|
|
22
23
|
if (finished) {
|
|
23
24
|
animation.previousAnimation = null;
|
|
@@ -29,7 +30,12 @@ export function withDelay(delayMs, _nextAnimation) {
|
|
|
29
30
|
animation.startTime = now;
|
|
30
31
|
animation.started = false;
|
|
31
32
|
animation.current = value;
|
|
32
|
-
|
|
33
|
+
if (previousAnimation === animation) {
|
|
34
|
+
animation.previousAnimation = previousAnimation.previousAnimation;
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
animation.previousAnimation = previousAnimation;
|
|
38
|
+
}
|
|
33
39
|
}
|
|
34
40
|
const callback = (finished) => {
|
|
35
41
|
if (nextAnimation.callback) {
|
|
@@ -73,6 +73,8 @@ export function withSpring(toValue, userConfig, callback) {
|
|
|
73
73
|
animation.velocity = 0;
|
|
74
74
|
animation.current = toValue;
|
|
75
75
|
}
|
|
76
|
+
// clear lastTimestamp to avoid using stale value by the next spring animation that starts after this one
|
|
77
|
+
animation.lastTimestamp = 0;
|
|
76
78
|
return true;
|
|
77
79
|
}
|
|
78
80
|
return false;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { defineAnimation } from './util';
|
|
2
2
|
import { withTiming } from './timing';
|
|
3
|
+
import { ColorProperties } from '../UpdateProps';
|
|
4
|
+
import { processColor } from '../Colors';
|
|
3
5
|
// resolves path to value for nested objects
|
|
4
6
|
// if path cannot be resolved returns undefined
|
|
5
|
-
function resolvePath(obj, path) {
|
|
7
|
+
export function resolvePath(obj, path) {
|
|
6
8
|
'worklet';
|
|
7
9
|
const keys = Array.isArray(path) ? path : [path];
|
|
8
10
|
return keys.reduce((acc, current) => {
|
|
@@ -15,8 +17,7 @@ function resolvePath(obj, path) {
|
|
|
15
17
|
return undefined;
|
|
16
18
|
}, obj);
|
|
17
19
|
}
|
|
18
|
-
|
|
19
|
-
function setPath(obj, path, value) {
|
|
20
|
+
export function setPath(obj, path, value) {
|
|
20
21
|
'worklet';
|
|
21
22
|
const keys = Array.isArray(path) ? path : [path];
|
|
22
23
|
let currObj = obj;
|
|
@@ -80,6 +81,9 @@ export function withStyleAnimation(styleAnimations) {
|
|
|
80
81
|
else {
|
|
81
82
|
stillGoing = true;
|
|
82
83
|
}
|
|
84
|
+
if (ColorProperties.includes(currentEntry.path[0])) {
|
|
85
|
+
currentStyleAnimation.current = processColor(currentStyleAnimation.current);
|
|
86
|
+
}
|
|
83
87
|
setPath(animation.current, currentEntry.path, currentStyleAnimation.current);
|
|
84
88
|
}
|
|
85
89
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* global _WORKLET */
|
|
2
2
|
import { convertToHSVA, isColor, toRGBA } from '../Colors';
|
|
3
|
-
import
|
|
3
|
+
import NativeReanimatedModule from '../NativeReanimated';
|
|
4
4
|
let IN_STYLE_UPDATER = false;
|
|
5
5
|
export function initialUpdaterRun(updater) {
|
|
6
6
|
IN_STYLE_UPDATER = true;
|
|
@@ -107,12 +107,35 @@ function decorateAnimation(animation) {
|
|
|
107
107
|
animation.current = toRGBA(res);
|
|
108
108
|
return finished;
|
|
109
109
|
};
|
|
110
|
+
const arrayOnStart = (animation, value, timestamp, previousAnimation) => {
|
|
111
|
+
value.forEach((v, i) => {
|
|
112
|
+
animation[i] = Object.assign({}, animationCopy);
|
|
113
|
+
animation[i].current = v;
|
|
114
|
+
animation[i].toValue = animation.toValue[i];
|
|
115
|
+
animation[i].onStart(animation[i], v, timestamp, previousAnimation ? previousAnimation[i] : undefined);
|
|
116
|
+
});
|
|
117
|
+
animation.current = value;
|
|
118
|
+
};
|
|
119
|
+
const arrayOnFrame = (animation, timestamp) => {
|
|
120
|
+
let finished = true;
|
|
121
|
+
animation.current.forEach((v, i) => {
|
|
122
|
+
// @ts-ignore: disable-next-line
|
|
123
|
+
finished &= animation[i].onFrame(animation[i], timestamp);
|
|
124
|
+
animation.current[i] = animation[i].current;
|
|
125
|
+
});
|
|
126
|
+
return finished;
|
|
127
|
+
};
|
|
110
128
|
animation.onStart = (animation, value, timestamp, previousAnimation) => {
|
|
111
129
|
if (isColor(value)) {
|
|
112
130
|
colorOnStart(animation, value, timestamp, previousAnimation);
|
|
113
131
|
animation.onFrame = colorOnFrame;
|
|
114
132
|
return;
|
|
115
133
|
}
|
|
134
|
+
else if (Array.isArray(value)) {
|
|
135
|
+
arrayOnStart(animation, value, timestamp, previousAnimation);
|
|
136
|
+
animation.onFrame = arrayOnFrame;
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
116
139
|
else if (typeof value === 'string') {
|
|
117
140
|
prefNumberSuffOnStart(animation, value, timestamp, previousAnimation);
|
|
118
141
|
animation.onFrame = prefNumberSuffOnFrame;
|
|
@@ -132,7 +155,7 @@ export function defineAnimation(starting, factory) {
|
|
|
132
155
|
decorateAnimation(animation);
|
|
133
156
|
return animation;
|
|
134
157
|
};
|
|
135
|
-
if (_WORKLET || !
|
|
158
|
+
if (_WORKLET || !NativeReanimatedModule.native) {
|
|
136
159
|
return create();
|
|
137
160
|
}
|
|
138
161
|
// @ts-ignore: eslint-disable-line
|
package/lib/reanimated2/core.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* global _WORKLET _getCurrentTime _frameTimestamp _eventTimestamp, _setGlobalConsole */
|
|
2
|
-
import
|
|
2
|
+
import NativeReanimatedModule from './NativeReanimated';
|
|
3
3
|
import { Platform } from 'react-native';
|
|
4
4
|
import { nativeShouldBeMock, shouldBeUseWeb } from './PlatformChecker';
|
|
5
5
|
global.__reanimatedWorkletInit = function (worklet) {
|
|
@@ -24,11 +24,11 @@ export const checkPluginState = (throwError = true) => {
|
|
|
24
24
|
return true;
|
|
25
25
|
};
|
|
26
26
|
export const isConfigured = (throwError = false) => {
|
|
27
|
-
return checkPluginState(throwError) && !
|
|
27
|
+
return checkPluginState(throwError) && !NativeReanimatedModule.useOnlyV1;
|
|
28
28
|
};
|
|
29
29
|
export const isConfiguredCheck = () => {
|
|
30
30
|
if (!isConfigured(true)) {
|
|
31
|
-
throw new Error('If you want to use Reanimated 2 then go through our installation steps https://docs.swmansion.com/react-native-reanimated/docs/installation');
|
|
31
|
+
throw new Error('If you want to use Reanimated 2 then go through our installation steps https://docs.swmansion.com/react-native-reanimated/docs/fundamentals/installation');
|
|
32
32
|
}
|
|
33
33
|
};
|
|
34
34
|
function _toArrayReanimated(object) {
|
|
@@ -65,11 +65,11 @@ global.__reanimatedWorkletInit = function (worklet) {
|
|
|
65
65
|
}
|
|
66
66
|
};
|
|
67
67
|
function pushFrame(frame) {
|
|
68
|
-
|
|
68
|
+
NativeReanimatedModule.pushFrame(frame);
|
|
69
69
|
}
|
|
70
70
|
export function requestFrame(frame) {
|
|
71
71
|
'worklet';
|
|
72
|
-
if (
|
|
72
|
+
if (NativeReanimatedModule.native) {
|
|
73
73
|
requestAnimationFrame(frame);
|
|
74
74
|
}
|
|
75
75
|
else {
|
|
@@ -85,11 +85,11 @@ export function runOnUI(worklet) {
|
|
|
85
85
|
}
|
|
86
86
|
export function makeShareable(value) {
|
|
87
87
|
isConfiguredCheck();
|
|
88
|
-
return
|
|
88
|
+
return NativeReanimatedModule.makeShareable(value);
|
|
89
89
|
}
|
|
90
90
|
export function getViewProp(viewTag, propName) {
|
|
91
91
|
return new Promise((resolve, reject) => {
|
|
92
|
-
return
|
|
92
|
+
return NativeReanimatedModule.getViewProp(viewTag, propName, (result) => {
|
|
93
93
|
if (typeof result === 'string' && result.substr(0, 6) === 'error:') {
|
|
94
94
|
reject(result);
|
|
95
95
|
}
|
|
@@ -102,7 +102,7 @@ export function getViewProp(viewTag, propName) {
|
|
|
102
102
|
let _getTimestamp;
|
|
103
103
|
if (nativeShouldBeMock()) {
|
|
104
104
|
_getTimestamp = () => {
|
|
105
|
-
return
|
|
105
|
+
return NativeReanimatedModule.getTimestamp();
|
|
106
106
|
};
|
|
107
107
|
}
|
|
108
108
|
else {
|
|
@@ -120,7 +120,7 @@ else {
|
|
|
120
120
|
export function getTimestamp() {
|
|
121
121
|
'worklet';
|
|
122
122
|
if (Platform.OS === 'web') {
|
|
123
|
-
return
|
|
123
|
+
return NativeReanimatedModule.getTimestamp();
|
|
124
124
|
}
|
|
125
125
|
return _getTimestamp();
|
|
126
126
|
}
|
|
@@ -135,7 +135,9 @@ function workletValueSetter(value) {
|
|
|
135
135
|
(value !== null &&
|
|
136
136
|
typeof value === 'object' &&
|
|
137
137
|
value.onFrame !== undefined)) {
|
|
138
|
-
const animation = typeof value === 'function'
|
|
138
|
+
const animation = typeof value === 'function'
|
|
139
|
+
? value()
|
|
140
|
+
: value;
|
|
139
141
|
// prevent setting again to the same value
|
|
140
142
|
// and triggering the mappers that treat this value as an input
|
|
141
143
|
// this happens when the animation's target value(stored in animation.current until animation.onStart is called) is set to the same value as a current one(this._value)
|
|
@@ -196,7 +198,9 @@ function workletValueSetterJS(value) {
|
|
|
196
198
|
typeof value === 'object' &&
|
|
197
199
|
value.onFrame)) {
|
|
198
200
|
// animated set
|
|
199
|
-
const animation = typeof value === 'function'
|
|
201
|
+
const animation = typeof value === 'function'
|
|
202
|
+
? value()
|
|
203
|
+
: value;
|
|
200
204
|
let initializeAnimation = (timestamp) => {
|
|
201
205
|
animation.onStart(animation, this.value, timestamp, previousAnimation);
|
|
202
206
|
};
|
|
@@ -228,20 +232,20 @@ function workletValueSetterJS(value) {
|
|
|
228
232
|
}
|
|
229
233
|
export function makeMutable(value) {
|
|
230
234
|
isConfiguredCheck();
|
|
231
|
-
return
|
|
235
|
+
return NativeReanimatedModule.makeMutable(value);
|
|
232
236
|
}
|
|
233
237
|
export function makeRemote(object = {}) {
|
|
234
238
|
isConfiguredCheck();
|
|
235
|
-
return
|
|
239
|
+
return NativeReanimatedModule.makeRemote(object);
|
|
236
240
|
}
|
|
237
241
|
export function startMapper(mapper, inputs = [], outputs = [], updater = () => {
|
|
238
242
|
// noop
|
|
239
243
|
}, viewDescriptors = []) {
|
|
240
244
|
isConfiguredCheck();
|
|
241
|
-
return
|
|
245
|
+
return NativeReanimatedModule.startMapper(mapper, inputs, outputs, updater, viewDescriptors);
|
|
242
246
|
}
|
|
243
247
|
export function stopMapper(mapperId) {
|
|
244
|
-
|
|
248
|
+
NativeReanimatedModule.stopMapper(mapperId);
|
|
245
249
|
}
|
|
246
250
|
export function runOnJS(fun) {
|
|
247
251
|
'worklet';
|
|
@@ -255,8 +259,10 @@ export function runOnJS(fun) {
|
|
|
255
259
|
return fun.__callAsync;
|
|
256
260
|
}
|
|
257
261
|
}
|
|
258
|
-
if (!
|
|
259
|
-
|
|
262
|
+
if (!NativeReanimatedModule.useOnlyV1) {
|
|
263
|
+
NativeReanimatedModule.installCoreFunctions(NativeReanimatedModule.native
|
|
264
|
+
? workletValueSetter
|
|
265
|
+
: workletValueSetterJS);
|
|
260
266
|
const capturableConsole = console;
|
|
261
267
|
isConfigured() &&
|
|
262
268
|
runOnUI(() => {
|
|
@@ -271,3 +277,21 @@ if (!NativeReanimated.useOnlyV1) {
|
|
|
271
277
|
_setGlobalConsole(console);
|
|
272
278
|
})();
|
|
273
279
|
}
|
|
280
|
+
let featuresConfig = {
|
|
281
|
+
enableLayoutAnimations: false,
|
|
282
|
+
setByUser: false,
|
|
283
|
+
};
|
|
284
|
+
export function enableLayoutAnimations(flag, isCallByUser = true) {
|
|
285
|
+
if (isCallByUser) {
|
|
286
|
+
featuresConfig = {
|
|
287
|
+
enableLayoutAnimations: flag,
|
|
288
|
+
setByUser: true,
|
|
289
|
+
};
|
|
290
|
+
NativeReanimatedModule.enableLayoutAnimations(flag);
|
|
291
|
+
}
|
|
292
|
+
else if (!featuresConfig.setByUser &&
|
|
293
|
+
featuresConfig.enableLayoutAnimations !== flag) {
|
|
294
|
+
featuresConfig.enableLayoutAnimations = flag;
|
|
295
|
+
NativeReanimatedModule.enableLayoutAnimations(flag);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import { WorkletFunction } from './commonTypes';
|
|
1
|
+
import { AnimatedStyle, StyleProps, WorkletFunction } from './commonTypes';
|
|
2
2
|
import { ReanimatedConsole } from './core';
|
|
3
|
+
import { MeasuredDimensions } from './NativeMethods';
|
|
4
|
+
import { NativeReanimated } from './NativeReanimated/NativeReanimated';
|
|
3
5
|
declare global {
|
|
4
6
|
const _WORKLET: boolean;
|
|
5
7
|
const _frameTimestamp: number;
|
|
@@ -11,12 +13,30 @@ declare global {
|
|
|
11
13
|
tag: number,
|
|
12
14
|
flag: { value: boolean; _value: boolean }
|
|
13
15
|
) => void;
|
|
16
|
+
const _setGestureState: (handlerTag: number, newState: number) => void;
|
|
17
|
+
const _updateProps: (
|
|
18
|
+
tag: number,
|
|
19
|
+
name: string,
|
|
20
|
+
updates: StyleProps | AnimatedStyle
|
|
21
|
+
) => void;
|
|
22
|
+
const _measure: (viewTag: number) => MeasuredDimensions;
|
|
23
|
+
const _scrollTo: (
|
|
24
|
+
viewTag: number,
|
|
25
|
+
x: number,
|
|
26
|
+
y: number,
|
|
27
|
+
animated: boolean
|
|
28
|
+
) => void;
|
|
14
29
|
namespace NodeJS {
|
|
15
30
|
interface Global {
|
|
16
31
|
__reanimatedWorkletInit: (worklet: WorkletFunction) => void;
|
|
17
32
|
_setGlobalConsole: (console?: ReanimatedConsole) => void;
|
|
18
33
|
_log: (s: string) => void;
|
|
34
|
+
_setGestureState: () => void;
|
|
19
35
|
_WORKLET: boolean;
|
|
36
|
+
__reanimatedModuleProxy: NativeReanimated;
|
|
37
|
+
_frameTimestamp: number | null;
|
|
38
|
+
_measure: () => MeasuredDimensions;
|
|
39
|
+
_scrollTo: () => void;
|
|
20
40
|
LayoutAnimationRepository: {
|
|
21
41
|
configs: Record<string, unknown>;
|
|
22
42
|
registerConfig(tag: number, config: Record<string, unknown>): void;
|
|
@@ -5,7 +5,7 @@ export function useAnimatedRef() {
|
|
|
5
5
|
const tag = useSharedValue(-1);
|
|
6
6
|
const ref = useRef();
|
|
7
7
|
if (!ref.current) {
|
|
8
|
-
const fun = (
|
|
8
|
+
const fun = ((component) => {
|
|
9
9
|
'worklet';
|
|
10
10
|
// enters when ref is set by attaching to a component
|
|
11
11
|
if (component) {
|
|
@@ -3,7 +3,7 @@ import { useEffect, useRef } from 'react';
|
|
|
3
3
|
import { startMapper, stopMapper, makeRemote, requestFrame, getTimestamp, makeMutable, } from '../core';
|
|
4
4
|
import updateProps, { updatePropsJestWrapper } from '../UpdateProps';
|
|
5
5
|
import { initialUpdaterRun } from '../animation';
|
|
6
|
-
import
|
|
6
|
+
import NativeReanimatedModule from '../NativeReanimated';
|
|
7
7
|
import { useSharedValue } from './useSharedValue';
|
|
8
8
|
import { buildWorkletsHash, canApplyOptimalisation, getStyleWithoutAnimations, hasColorProps, isAnimated, parseColors, styleDiff, validateAnimatedStyles, } from './utils';
|
|
9
9
|
import { makeViewDescriptorsSet, makeViewsRefSet, } from '../ViewDescriptorsSet';
|
|
@@ -290,6 +290,7 @@ export function useAnimatedStyle(updater, dependencies, adapters) {
|
|
|
290
290
|
initRef.current = {
|
|
291
291
|
initial: {
|
|
292
292
|
value: initialStyle,
|
|
293
|
+
updater: updater,
|
|
293
294
|
},
|
|
294
295
|
remoteState: makeRemote({ last: initialStyle }),
|
|
295
296
|
sharableViewDescriptors: makeMutable([]),
|
|
@@ -301,8 +302,7 @@ export function useAnimatedStyle(updater, dependencies, adapters) {
|
|
|
301
302
|
dependencies.push((_b = initRef.current) === null || _b === void 0 ? void 0 : _b.sharableViewDescriptors.value);
|
|
302
303
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
303
304
|
const { initial, remoteState, sharableViewDescriptors } = initRef.current;
|
|
304
|
-
const maybeViewRef =
|
|
305
|
-
initial.value = initialUpdaterRun(updater);
|
|
305
|
+
const maybeViewRef = NativeReanimatedModule.native ? undefined : viewsRef;
|
|
306
306
|
useEffect(() => {
|
|
307
307
|
let fun;
|
|
308
308
|
let upadterFn = updater;
|
package/lib/reanimated2/index.js
CHANGED