react-native-reanimated 2.6.0 → 3.0.0-rc.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/Fabric/FabricUtils.cpp +128 -0
- package/Common/cpp/Fabric/ReanimatedUIManagerBinding.cpp +197 -0
- package/Common/cpp/NativeModules/NativeReanimatedModule.cpp +311 -6
- package/Common/cpp/Registries/EventHandlerRegistry.cpp +14 -1
- package/Common/cpp/Registries/NewestShadowNodesRegistry.cpp +68 -0
- package/Common/cpp/SharedItems/ShareableValue.cpp +20 -2
- package/Common/cpp/Tools/Mapper.cpp +23 -4
- package/Common/cpp/Tools/RuntimeDecorator.cpp +92 -46
- package/Common/cpp/Tools/Scheduler.cpp +4 -0
- package/Common/cpp/headers/Fabric/FabricUtils.h +78 -0
- package/Common/cpp/headers/Fabric/ReanimatedUIManagerBinding.h +46 -0
- package/Common/cpp/headers/NativeModules/NativeReanimatedModule.h +72 -2
- package/Common/cpp/headers/Registries/EventHandlerRegistry.h +8 -0
- package/Common/cpp/headers/Registries/NewestShadowNodesRegistry.h +41 -0
- package/Common/cpp/headers/SharedItems/SharedParent.h +3 -0
- package/Common/cpp/headers/SharedItems/ValueWrapper.h +25 -0
- package/Common/cpp/headers/SpecTools/ErrorHandler.h +5 -0
- package/Common/cpp/headers/Tools/Mapper.h +1 -1
- package/Common/cpp/headers/Tools/PlatformDepMethodsHolder.h +43 -8
- package/Common/cpp/headers/Tools/RuntimeDecorator.h +8 -3
- package/README.md +4 -0
- package/RNReanimated.podspec +22 -11
- package/android/CMakeLists.txt +139 -27
- package/android/build.gradle +86 -209
- package/android/local.properties +1 -0
- package/android/src/fabric/java/com/swmansion/reanimated/NativeProxy.java +310 -0
- package/android/src/fabric/java/com/swmansion/reanimated/ReaCompatibility.java +25 -0
- package/android/src/main/cpp/NativeProxy.cpp +196 -41
- package/android/src/main/cpp/headers/NativeProxy.h +45 -7
- package/android/src/main/java/com/swmansion/reanimated/NodesManager.java +13 -245
- package/android/src/main/java/com/swmansion/reanimated/ReanimatedModule.java +0 -125
- package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/AnimationsManager.java +13 -6
- package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/LayoutAnimations.java +2 -1
- package/android/src/{main → paper}/java/com/swmansion/reanimated/NativeProxy.java +26 -10
- package/android/src/paper/java/com/swmansion/reanimated/ReaCompatibility.java +17 -0
- package/ios/Fabric/REAInitializerRCTFabricSurface.h +12 -0
- package/ios/Fabric/REAInitializerRCTFabricSurface.mm +73 -0
- package/ios/LayoutReanimation/REAAnimationsManager.h +1 -1
- package/ios/LayoutReanimation/REAAnimationsManager.m +2 -2
- package/ios/LayoutReanimation/REASnapshot.m +1 -1
- package/ios/LayoutReanimation/REAUIManager.h +1 -1
- package/ios/LayoutReanimation/REAUIManager.mm +4 -5
- package/ios/REAEventDispatcher.m +1 -2
- package/ios/REAModule.h +10 -1
- package/ios/REAModule.mm +284 -0
- package/ios/REANodesManager.h +27 -52
- package/ios/{REANodesManager.m → REANodesManager.mm} +92 -226
- package/ios/native/NativeMethods.h +1 -3
- package/ios/native/NativeMethods.mm +1 -1
- package/ios/native/NativeProxy.h +2 -2
- package/ios/native/NativeProxy.mm +162 -32
- package/ios/native/REAIOSErrorHandler.h +2 -4
- package/ios/native/REAIOSErrorHandler.mm +1 -1
- package/ios/native/REAIOSLogger.h +1 -3
- package/ios/native/REAIOSLogger.mm +1 -1
- package/ios/native/REAIOSScheduler.h +1 -3
- package/ios/native/REAIOSScheduler.mm +2 -2
- package/ios/native/REAInitializer.h +0 -7
- package/ios/native/REAInitializer.mm +14 -6
- package/ios/native/UIResponder+Reanimated.h +3 -1
- package/ios/native/UIResponder+Reanimated.mm +6 -4
- package/ios/sensor/ReanimatedSensor.h +1 -1
- package/ios/sensor/ReanimatedSensor.m +1 -1
- package/ios/sensor/ReanimatedSensorContainer.h +1 -1
- package/ios/sensor/ReanimatedSensorContainer.m +2 -2
- package/lib/Animated.js +0 -13
- package/lib/ConfigHelper.js +0 -1
- package/lib/createAnimatedComponent.js +30 -169
- package/lib/index.js +0 -13
- package/lib/reanimated2/Easing.js +8 -44
- package/lib/reanimated2/NativeMethods.js +20 -3
- package/lib/reanimated2/UpdateProps.js +25 -10
- package/lib/reanimated2/core.js +4 -37
- package/lib/reanimated2/fabricUtils.js +18 -0
- package/lib/reanimated2/globals.d.ts +18 -3
- package/lib/reanimated2/hook/useAnimatedRef.js +6 -2
- package/lib/reanimated2/hook/utils.js +0 -5
- package/lib/reanimated2/interpolateColor.js +5 -2
- package/lib/reanimated2/interpolation.js +0 -15
- package/lib/reanimated2/js-reanimated/index.js +3 -0
- package/lib/types/{lib/ConfigHelper.d.ts → ConfigHelper.d.ts} +0 -0
- package/lib/types/{lib/ReanimatedEventEmitter.d.ts → ReanimatedEventEmitter.d.ts} +0 -0
- package/lib/types/{lib/ReanimatedModule.d.ts → ReanimatedModule.d.ts} +0 -0
- package/lib/types/{lib/ReanimatedModule.macos.d.ts → ReanimatedModule.macos.d.ts} +0 -0
- package/lib/types/{lib/ReanimatedModule.native.d.ts → ReanimatedModule.native.d.ts} +0 -0
- package/lib/types/{lib/ReanimatedModule.windows.d.ts → ReanimatedModule.windows.d.ts} +0 -0
- package/lib/types/{lib/ReanimatedModuleCompat.d.ts → ReanimatedModuleCompat.d.ts} +0 -0
- package/lib/types/{lib/createAnimatedComponent.d.ts → createAnimatedComponent.d.ts} +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/Bezier.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/Colors.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/Easing.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/NativeMethods.d.ts +2 -1
- package/lib/types/{lib/reanimated2 → reanimated2}/NativeReanimated/NativeReanimated.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/NativeReanimated/index.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/PlatformChecker.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/PropAdapters.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/UpdateProps.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/ViewDescriptorsSet.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/WorkletEventHandler.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/__mocks__/MutableValue.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/__mocks__/NativeReanimated.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/__mocks__/NativeReanimated.native.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/animation/commonTypes.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/animation/decay.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/animation/delay.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/animation/index.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/animation/repeat.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/animation/sequence.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/animation/spring.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/animation/styleAnimation.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/animation/timing.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/animation/util.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/commonTypes.d.ts +2 -2
- package/lib/types/{lib/reanimated2 → reanimated2}/component/FlatList.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/component/WrappedComponents.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/component/index.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/core.d.ts +0 -0
- package/lib/types/reanimated2/fabricUtils.d.ts +4 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/hook/Hooks.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/hook/commonTypes.d.ts +2 -1
- package/lib/types/{lib/reanimated2 → reanimated2}/hook/index.d.ts +1 -1
- package/lib/types/{lib/reanimated2 → reanimated2}/hook/useAnimatedGestureHandler.d.ts +2 -2
- package/lib/types/{lib/reanimated2 → reanimated2}/hook/useAnimatedReaction.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/hook/useAnimatedRef.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/hook/useAnimatedScrollHandler.d.ts +2 -2
- package/lib/types/{lib/reanimated2 → reanimated2}/hook/useAnimatedSensor.d.ts +1 -3
- package/lib/types/{lib/reanimated2 → reanimated2}/hook/useAnimatedStyle.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/hook/useDerivedValue.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/hook/useSharedValue.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/hook/utils.d.ts +2 -2
- package/lib/types/{lib/reanimated2 → reanimated2}/index.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/interpolateColor.d.ts +5 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/interpolation.d.ts +1 -4
- package/lib/types/{lib/reanimated2 → reanimated2}/jestUtils.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/js-reanimated/JSReanimated.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/js-reanimated/Mapper.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/js-reanimated/MapperRegistry.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/js-reanimated/MutableValue.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/js-reanimated/commonTypes.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/js-reanimated/index.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/LayoutAnimationRepository.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/animationBuilder/BaseAnimationBuilder.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/animationBuilder/ComplexAnimationBuilder.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/animationBuilder/Keyframe.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/animationBuilder/commonTypes.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/animationBuilder/index.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Bounce.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Default.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Fade.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Flip.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Lightspeed.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Pinwheel.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Roll.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Rotate.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Slide.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Stretch.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/Zoom.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultAnimations/index.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultTransitions/CurvedTransition.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultTransitions/EntryExitTransition.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultTransitions/FadingTransition.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultTransitions/JumpingTransition.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultTransitions/LinearTransition.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultTransitions/SequencedTransition.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/defaultTransitions/index.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/layoutReanimation/index.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/mock.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/platform-specific/RNRenderer.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/platform-specific/RNRenderer.web.d.ts +0 -0
- package/lib/types/{lib/reanimated2 → reanimated2}/utils.d.ts +0 -0
- package/lib/types/{lib/setAndForwardRef.d.ts → setAndForwardRef.d.ts} +0 -0
- package/package.json +10 -10
- package/plugin.js +29 -33
- package/react-native-reanimated.d.ts +15 -3
- package/src/Animated.js +0 -13
- package/src/ConfigHelper.ts +0 -1
- package/src/createAnimatedComponent.tsx +37 -197
- package/src/reanimated2/Easing.ts +8 -55
- package/src/reanimated2/NativeMethods.ts +39 -7
- package/src/reanimated2/UpdateProps.ts +38 -19
- package/src/reanimated2/commonTypes.ts +4 -2
- package/src/reanimated2/component/FlatList.tsx +8 -5
- package/src/reanimated2/core.ts +7 -48
- package/src/reanimated2/fabricUtils.ts +27 -0
- package/src/reanimated2/globals.d.ts +18 -3
- package/src/reanimated2/hook/commonTypes.ts +4 -2
- package/src/reanimated2/hook/index.ts +1 -1
- package/src/reanimated2/hook/useAnimatedGestureHandler.ts +2 -2
- package/src/reanimated2/hook/useAnimatedRef.ts +8 -3
- package/src/reanimated2/hook/useAnimatedScrollHandler.ts +2 -2
- package/src/reanimated2/hook/useAnimatedSensor.ts +1 -3
- package/src/reanimated2/hook/utils.ts +2 -11
- package/src/reanimated2/interpolateColor.ts +6 -2
- package/src/reanimated2/interpolation.ts +1 -26
- package/src/reanimated2/js-reanimated/index.ts +5 -0
- 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 +0 -2
- 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/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/src/main/java/com/swmansion/reanimated/UpdateContext.java +0 -11
- package/android/src/main/java/com/swmansion/reanimated/nodes/AlwaysNode.java +0 -29
- package/android/src/main/java/com/swmansion/reanimated/nodes/BezierNode.java +0 -87
- package/android/src/main/java/com/swmansion/reanimated/nodes/BlockNode.java +0 -24
- package/android/src/main/java/com/swmansion/reanimated/nodes/CallFuncNode.java +0 -49
- package/android/src/main/java/com/swmansion/reanimated/nodes/ClockNode.java +0 -38
- package/android/src/main/java/com/swmansion/reanimated/nodes/ClockOpNode.java +0 -73
- package/android/src/main/java/com/swmansion/reanimated/nodes/ConcatNode.java +0 -36
- package/android/src/main/java/com/swmansion/reanimated/nodes/CondNode.java +0 -41
- package/android/src/main/java/com/swmansion/reanimated/nodes/DebugNode.java +0 -33
- package/android/src/main/java/com/swmansion/reanimated/nodes/EventNode.java +0 -83
- package/android/src/main/java/com/swmansion/reanimated/nodes/FinalNode.java +0 -5
- package/android/src/main/java/com/swmansion/reanimated/nodes/FunctionNode.java +0 -20
- package/android/src/main/java/com/swmansion/reanimated/nodes/JSCallNode.java +0 -41
- package/android/src/main/java/com/swmansion/reanimated/nodes/Node.java +0 -139
- package/android/src/main/java/com/swmansion/reanimated/nodes/NoopNode.java +0 -37
- package/android/src/main/java/com/swmansion/reanimated/nodes/OperatorNode.java +0 -377
- package/android/src/main/java/com/swmansion/reanimated/nodes/ParamNode.java +0 -71
- package/android/src/main/java/com/swmansion/reanimated/nodes/PropsNode.java +0 -153
- package/android/src/main/java/com/swmansion/reanimated/nodes/SetNode.java +0 -32
- package/android/src/main/java/com/swmansion/reanimated/nodes/StyleNode.java +0 -40
- package/android/src/main/java/com/swmansion/reanimated/nodes/TransformNode.java +0 -84
- package/android/src/main/java/com/swmansion/reanimated/nodes/ValueNode.java +0 -40
- package/android/src/main/java/com/swmansion/reanimated/transitions/ChangeTransition.java +0 -84
- package/android/src/main/java/com/swmansion/reanimated/transitions/SaneSidePropagation.java +0 -25
- package/android/src/main/java/com/swmansion/reanimated/transitions/Scale.java +0 -86
- package/android/src/main/java/com/swmansion/reanimated/transitions/TransitionModule.java +0 -41
- package/android/src/main/java/com/swmansion/reanimated/transitions/TransitionUtils.java +0 -161
- package/ios/Nodes/REAAlwaysNode.h +0 -4
- package/ios/Nodes/REAAlwaysNode.m +0 -35
- package/ios/Nodes/REABezierNode.h +0 -5
- package/ios/Nodes/REABezierNode.m +0 -104
- package/ios/Nodes/REABlockNode.h +0 -5
- package/ios/Nodes/REABlockNode.m +0 -25
- package/ios/Nodes/REACallFuncNode.h +0 -6
- package/ios/Nodes/REACallFuncNode.m +0 -69
- package/ios/Nodes/REAClockNodes.h +0 -19
- package/ios/Nodes/REAClockNodes.m +0 -118
- package/ios/Nodes/REAConcatNode.h +0 -5
- package/ios/Nodes/REAConcatNode.m +0 -32
- package/ios/Nodes/REACondNode.h +0 -5
- package/ios/Nodes/REACondNode.m +0 -36
- package/ios/Nodes/READebugNode.h +0 -5
- package/ios/Nodes/READebugNode.m +0 -30
- package/ios/Nodes/REAEventNode.h +0 -9
- package/ios/Nodes/REAEventNode.m +0 -35
- package/ios/Nodes/REAFunctionNode.h +0 -6
- package/ios/Nodes/REAFunctionNode.m +0 -24
- package/ios/Nodes/REAJSCallNode.h +0 -5
- package/ios/Nodes/REAJSCallNode.m +0 -30
- package/ios/Nodes/REANode.h +0 -40
- package/ios/Nodes/REANode.m +0 -155
- package/ios/Nodes/REAOperatorNode.h +0 -5
- package/ios/Nodes/REAOperatorNode.m +0 -115
- package/ios/Nodes/REAParamNode.h +0 -10
- package/ios/Nodes/REAParamNode.m +0 -79
- package/ios/Nodes/REAPropsNode.h +0 -9
- package/ios/Nodes/REAPropsNode.m +0 -98
- package/ios/Nodes/REASetNode.h +0 -5
- package/ios/Nodes/REASetNode.m +0 -34
- package/ios/Nodes/REAStyleNode.h +0 -5
- package/ios/Nodes/REAStyleNode.m +0 -28
- package/ios/Nodes/REATransformNode.h +0 -5
- package/ios/Nodes/REATransformNode.m +0 -36
- package/ios/Nodes/REAValueNode.h +0 -11
- package/ios/Nodes/REAValueNode.m +0 -26
- package/ios/REAModule.m +0 -185
- package/ios/Transitioning/RCTConvert+REATransition.h +0 -12
- package/ios/Transitioning/RCTConvert+REATransition.m +0 -53
- package/ios/Transitioning/REAAllTransitions.h +0 -26
- package/ios/Transitioning/REAAllTransitions.m +0 -297
- package/ios/Transitioning/REATransition.h +0 -65
- package/ios/Transitioning/REATransition.m +0 -211
- package/ios/Transitioning/REATransitionAnimation.h +0 -17
- package/ios/Transitioning/REATransitionAnimation.m +0 -80
- package/ios/Transitioning/REATransitionManager.h +0 -9
- package/ios/Transitioning/REATransitionManager.m +0 -62
- package/ios/Transitioning/REATransitionValues.h +0 -15
- package/ios/Transitioning/REATransitionValues.m +0 -26
- package/lib/reanimated1/Easing.js +0 -231
- package/lib/reanimated1/SpringConfig.js +0 -79
- package/lib/reanimated1/Transitioning.js +0 -158
- package/lib/reanimated1/animations/Animation.js +0 -32
- package/lib/reanimated1/animations/SpringUtils.js +0 -199
- package/lib/reanimated1/animations/backwardCompatibleAnimWrapper.js +0 -117
- package/lib/reanimated1/animations/decay.js +0 -54
- package/lib/reanimated1/animations/spring.js +0 -198
- package/lib/reanimated1/animations/timing.js +0 -74
- package/lib/reanimated1/base.js +0 -13
- package/lib/reanimated1/core/AnimatedAlways.js +0 -33
- package/lib/reanimated1/core/AnimatedBezier.js +0 -150
- package/lib/reanimated1/core/AnimatedBlock.js +0 -52
- package/lib/reanimated1/core/AnimatedCall.js +0 -55
- package/lib/reanimated1/core/AnimatedCallFunc.js +0 -72
- package/lib/reanimated1/core/AnimatedClock.js +0 -90
- package/lib/reanimated1/core/AnimatedClockTest.js +0 -22
- package/lib/reanimated1/core/AnimatedCode.js +0 -32
- package/lib/reanimated1/core/AnimatedConcat.js +0 -32
- package/lib/reanimated1/core/AnimatedCond.js +0 -57
- package/lib/reanimated1/core/AnimatedDebug.js +0 -62
- package/lib/reanimated1/core/AnimatedEvent.js +0 -126
- package/lib/reanimated1/core/AnimatedFunction.js +0 -55
- package/lib/reanimated1/core/AnimatedNode.js +0 -223
- package/lib/reanimated1/core/AnimatedOperator.js +0 -103
- package/lib/reanimated1/core/AnimatedParam.js +0 -88
- package/lib/reanimated1/core/AnimatedProps.js +0 -108
- package/lib/reanimated1/core/AnimatedSet.js +0 -38
- package/lib/reanimated1/core/AnimatedStartClock.js +0 -30
- package/lib/reanimated1/core/AnimatedStopClock.js +0 -30
- package/lib/reanimated1/core/AnimatedStyle.js +0 -78
- package/lib/reanimated1/core/AnimatedTransform.js +0 -78
- package/lib/reanimated1/core/AnimatedValue.js +0 -38
- package/lib/reanimated1/core/Core.test.js +0 -30
- package/lib/reanimated1/core/InternalAnimatedValue.js +0 -87
- package/lib/reanimated1/core/__mocks__/AnimatedProps.js +0 -86
- package/lib/reanimated1/core/createEventObjectProxyPolyfill.js +0 -44
- package/lib/reanimated1/derived/__mocks__/evaluateOnce.js +0 -14
- package/lib/reanimated1/derived/acc.js +0 -11
- package/lib/reanimated1/derived/color.js +0 -47
- package/lib/reanimated1/derived/diff.js +0 -16
- package/lib/reanimated1/derived/diffClamp.js +0 -11
- package/lib/reanimated1/derived/evaluateOnce.js +0 -35
- package/lib/reanimated1/derived/index.js +0 -8
- package/lib/reanimated1/derived/interpolate.js +0 -152
- package/lib/reanimated1/derived/interpolateColors.js +0 -62
- package/lib/reanimated1/derived/onChange.js +0 -14
- package/lib/reanimated1/derived/useCode.js +0 -41
- package/lib/reanimated1/index.js +0 -53
- package/lib/reanimated1/operators.js +0 -35
- package/lib/reanimated1/useValue.js +0 -10
- package/lib/reanimated1/val.js +0 -3
- package/lib/types/react-native-reanimated-tests.d.ts +0 -1
- package/src/reanimated1/Easing.js +0 -231
- package/src/reanimated1/SpringConfig.js +0 -79
- package/src/reanimated1/Transitioning.js +0 -158
- package/src/reanimated1/animations/Animation.js +0 -32
- package/src/reanimated1/animations/SpringUtils.js +0 -199
- package/src/reanimated1/animations/backwardCompatibleAnimWrapper.js +0 -117
- package/src/reanimated1/animations/decay.js +0 -54
- package/src/reanimated1/animations/spring.js +0 -198
- package/src/reanimated1/animations/timing.js +0 -74
- package/src/reanimated1/base.js +0 -13
- package/src/reanimated1/core/AnimatedAlways.js +0 -33
- package/src/reanimated1/core/AnimatedBezier.js +0 -150
- package/src/reanimated1/core/AnimatedBlock.js +0 -52
- package/src/reanimated1/core/AnimatedCall.js +0 -55
- package/src/reanimated1/core/AnimatedCallFunc.js +0 -72
- package/src/reanimated1/core/AnimatedClock.js +0 -90
- package/src/reanimated1/core/AnimatedClockTest.js +0 -22
- package/src/reanimated1/core/AnimatedCode.js +0 -32
- package/src/reanimated1/core/AnimatedConcat.js +0 -32
- package/src/reanimated1/core/AnimatedCond.js +0 -57
- package/src/reanimated1/core/AnimatedDebug.js +0 -62
- package/src/reanimated1/core/AnimatedEvent.js +0 -126
- package/src/reanimated1/core/AnimatedFunction.js +0 -55
- package/src/reanimated1/core/AnimatedNode.js +0 -223
- package/src/reanimated1/core/AnimatedOperator.js +0 -103
- package/src/reanimated1/core/AnimatedParam.js +0 -88
- package/src/reanimated1/core/AnimatedProps.js +0 -108
- package/src/reanimated1/core/AnimatedSet.js +0 -38
- package/src/reanimated1/core/AnimatedStartClock.js +0 -30
- package/src/reanimated1/core/AnimatedStopClock.js +0 -30
- package/src/reanimated1/core/AnimatedStyle.js +0 -78
- package/src/reanimated1/core/AnimatedTransform.js +0 -78
- package/src/reanimated1/core/AnimatedValue.js +0 -38
- package/src/reanimated1/core/Core.test.js +0 -30
- package/src/reanimated1/core/InternalAnimatedValue.js +0 -87
- package/src/reanimated1/core/__mocks__/AnimatedProps.js +0 -86
- package/src/reanimated1/core/createEventObjectProxyPolyfill.js +0 -44
- package/src/reanimated1/derived/__mocks__/evaluateOnce.js +0 -14
- package/src/reanimated1/derived/acc.js +0 -11
- package/src/reanimated1/derived/color.js +0 -47
- package/src/reanimated1/derived/diff.js +0 -16
- package/src/reanimated1/derived/diffClamp.js +0 -11
- package/src/reanimated1/derived/evaluateOnce.js +0 -35
- package/src/reanimated1/derived/index.js +0 -8
- package/src/reanimated1/derived/interpolate.js +0 -152
- package/src/reanimated1/derived/interpolateColors.js +0 -62
- package/src/reanimated1/derived/onChange.js +0 -14
- package/src/reanimated1/derived/useCode.js +0 -41
- package/src/reanimated1/index.js +0 -53
- package/src/reanimated1/operators.js +0 -35
- package/src/reanimated1/useValue.js +0 -10
- package/src/reanimated1/val.js +0 -3
package/plugin.js
CHANGED
|
@@ -65,12 +65,15 @@ const globals = new Set([
|
|
|
65
65
|
'Map',
|
|
66
66
|
'Set',
|
|
67
67
|
'_log',
|
|
68
|
-
'
|
|
68
|
+
'_updatePropsPaper',
|
|
69
|
+
'_updatePropsFabric',
|
|
70
|
+
'_removeShadowNodeFromRegistry',
|
|
69
71
|
'RegExp',
|
|
70
72
|
'Error',
|
|
71
73
|
'global',
|
|
72
74
|
'_measure',
|
|
73
75
|
'_scrollTo',
|
|
76
|
+
'_dispatchCommand',
|
|
74
77
|
'_setGestureState',
|
|
75
78
|
'_getCurrentTime',
|
|
76
79
|
'_eventTimestamp',
|
|
@@ -331,7 +334,7 @@ function makeWorkletName(t, fun) {
|
|
|
331
334
|
return '_f'; // fallback for ArrowFunctionExpression and unnamed FunctionExpression
|
|
332
335
|
}
|
|
333
336
|
|
|
334
|
-
function makeWorklet(t, fun,
|
|
337
|
+
function makeWorklet(t, fun, state) {
|
|
335
338
|
// Returns a new FunctionExpression which is a workletized version of provided
|
|
336
339
|
// FunctionDeclaration, FunctionExpression, ArrowFunctionExpression or ObjectMethod.
|
|
337
340
|
|
|
@@ -358,7 +361,7 @@ function makeWorklet(t, fun, fileName) {
|
|
|
358
361
|
'\n(' + (t.isObjectMethod(fun) ? 'function ' : '') + fun.toString() + '\n)';
|
|
359
362
|
|
|
360
363
|
const transformed = transformSync(code, {
|
|
361
|
-
filename:
|
|
364
|
+
filename: state.file.opts.filename,
|
|
362
365
|
presets: ['@babel/preset-typescript'],
|
|
363
366
|
plugins: [
|
|
364
367
|
'@babel/plugin-transform-shorthand-properties',
|
|
@@ -445,11 +448,17 @@ function makeWorklet(t, fun, fileName) {
|
|
|
445
448
|
);
|
|
446
449
|
const workletHash = hash(funString);
|
|
447
450
|
|
|
451
|
+
let location = state.file.opts.filename;
|
|
452
|
+
if (state.opts.relativeSourceLocation) {
|
|
453
|
+
const path = require('path');
|
|
454
|
+
location = path.relative(state.cwd, location);
|
|
455
|
+
}
|
|
456
|
+
|
|
448
457
|
const loc = fun && fun.node && fun.node.loc && fun.node.loc.start;
|
|
449
458
|
if (loc) {
|
|
450
459
|
const { line, column } = loc;
|
|
451
460
|
if (typeof line === 'number' && typeof column === 'number') {
|
|
452
|
-
|
|
461
|
+
location = `${location} (${line}:${column})`;
|
|
453
462
|
}
|
|
454
463
|
}
|
|
455
464
|
|
|
@@ -490,7 +499,7 @@ function makeWorklet(t, fun, fileName) {
|
|
|
490
499
|
t.identifier('__location'),
|
|
491
500
|
false
|
|
492
501
|
),
|
|
493
|
-
t.stringLiteral(
|
|
502
|
+
t.stringLiteral(location)
|
|
494
503
|
)
|
|
495
504
|
),
|
|
496
505
|
];
|
|
@@ -511,18 +520,6 @@ function makeWorklet(t, fun, fileName) {
|
|
|
511
520
|
);
|
|
512
521
|
}
|
|
513
522
|
|
|
514
|
-
statements.push(
|
|
515
|
-
t.expressionStatement(
|
|
516
|
-
t.callExpression(
|
|
517
|
-
t.memberExpression(
|
|
518
|
-
t.identifier('global'),
|
|
519
|
-
t.identifier('__reanimatedWorkletInit'),
|
|
520
|
-
false
|
|
521
|
-
),
|
|
522
|
-
[privateFunctionId]
|
|
523
|
-
)
|
|
524
|
-
)
|
|
525
|
-
);
|
|
526
523
|
statements.push(t.returnStatement(privateFunctionId));
|
|
527
524
|
|
|
528
525
|
const newFun = t.functionExpression(fun.id, [], t.blockStatement(statements));
|
|
@@ -530,7 +527,7 @@ function makeWorklet(t, fun, fileName) {
|
|
|
530
527
|
return newFun;
|
|
531
528
|
}
|
|
532
529
|
|
|
533
|
-
function processWorkletFunction(t, fun,
|
|
530
|
+
function processWorkletFunction(t, fun, state) {
|
|
534
531
|
// Replaces FunctionDeclaration, FunctionExpression or ArrowFunctionExpression
|
|
535
532
|
// with a workletized version of itself.
|
|
536
533
|
|
|
@@ -538,7 +535,7 @@ function processWorkletFunction(t, fun, fileName) {
|
|
|
538
535
|
return;
|
|
539
536
|
}
|
|
540
537
|
|
|
541
|
-
const newFun = makeWorklet(t, fun,
|
|
538
|
+
const newFun = makeWorklet(t, fun, state);
|
|
542
539
|
|
|
543
540
|
const replacement = t.callExpression(newFun, []);
|
|
544
541
|
|
|
@@ -558,14 +555,14 @@ function processWorkletFunction(t, fun, fileName) {
|
|
|
558
555
|
);
|
|
559
556
|
}
|
|
560
557
|
|
|
561
|
-
function processWorkletObjectMethod(t, path,
|
|
558
|
+
function processWorkletObjectMethod(t, path, state) {
|
|
562
559
|
// Replaces ObjectMethod with a workletized version of itself.
|
|
563
560
|
|
|
564
561
|
if (!t.isFunctionParent(path)) {
|
|
565
562
|
return;
|
|
566
563
|
}
|
|
567
564
|
|
|
568
|
-
const newFun = makeWorklet(t, path,
|
|
565
|
+
const newFun = makeWorklet(t, path, state);
|
|
569
566
|
|
|
570
567
|
const replacement = t.objectProperty(
|
|
571
568
|
t.identifier(path.node.key.name),
|
|
@@ -575,7 +572,7 @@ function processWorkletObjectMethod(t, path, fileName) {
|
|
|
575
572
|
path.replaceWith(replacement);
|
|
576
573
|
}
|
|
577
574
|
|
|
578
|
-
function processIfWorkletNode(t, fun,
|
|
575
|
+
function processIfWorkletNode(t, fun, state) {
|
|
579
576
|
fun.traverse({
|
|
580
577
|
DirectiveLiteral(path) {
|
|
581
578
|
const value = path.node.value;
|
|
@@ -593,14 +590,14 @@ function processIfWorkletNode(t, fun, fileName) {
|
|
|
593
590
|
directive.value.value === 'worklet'
|
|
594
591
|
)
|
|
595
592
|
) {
|
|
596
|
-
processWorkletFunction(t, fun,
|
|
593
|
+
processWorkletFunction(t, fun, state);
|
|
597
594
|
}
|
|
598
595
|
}
|
|
599
596
|
},
|
|
600
597
|
});
|
|
601
598
|
}
|
|
602
599
|
|
|
603
|
-
function processIfGestureHandlerEventCallbackFunctionNode(t, fun,
|
|
600
|
+
function processIfGestureHandlerEventCallbackFunctionNode(t, fun, state) {
|
|
604
601
|
// Auto-workletizes React Native Gesture Handler callback functions.
|
|
605
602
|
// Detects `Gesture.Tap().onEnd(<fun>)` or similar, but skips `something.onEnd(<fun>)`.
|
|
606
603
|
// Supports method chaining as well, e.g. `Gesture.Tap().onStart(<fun1>).onUpdate(<fun2>).onEnd(<fun3>)`.
|
|
@@ -653,7 +650,7 @@ function processIfGestureHandlerEventCallbackFunctionNode(t, fun, fileName) {
|
|
|
653
650
|
t.isCallExpression(fun.parent) &&
|
|
654
651
|
isGestureObjectEventCallbackMethod(t, fun.parent.callee)
|
|
655
652
|
) {
|
|
656
|
-
processWorkletFunction(t, fun,
|
|
653
|
+
processWorkletFunction(t, fun, state);
|
|
657
654
|
}
|
|
658
655
|
}
|
|
659
656
|
|
|
@@ -709,7 +706,7 @@ function isGestureObject(t, node) {
|
|
|
709
706
|
);
|
|
710
707
|
}
|
|
711
708
|
|
|
712
|
-
function processWorklets(t, path,
|
|
709
|
+
function processWorklets(t, path, state) {
|
|
713
710
|
const name =
|
|
714
711
|
path.node.callee.type === 'MemberExpression'
|
|
715
712
|
? path.node.callee.property.name
|
|
@@ -721,17 +718,17 @@ function processWorklets(t, path, fileName) {
|
|
|
721
718
|
const properties = path.get('arguments.0.properties');
|
|
722
719
|
for (const property of properties) {
|
|
723
720
|
if (t.isObjectMethod(property)) {
|
|
724
|
-
processWorkletObjectMethod(t, property,
|
|
721
|
+
processWorkletObjectMethod(t, property, state);
|
|
725
722
|
} else {
|
|
726
723
|
const value = property.get('value');
|
|
727
|
-
processWorkletFunction(t, value,
|
|
724
|
+
processWorkletFunction(t, value, state);
|
|
728
725
|
}
|
|
729
726
|
}
|
|
730
727
|
} else {
|
|
731
728
|
const indexes = functionArgsToWorkletize.get(name);
|
|
732
729
|
if (Array.isArray(indexes)) {
|
|
733
730
|
indexes.forEach((index) => {
|
|
734
|
-
processWorkletFunction(t, path.get(`arguments.${index}`),
|
|
731
|
+
processWorkletFunction(t, path.get(`arguments.${index}`), state);
|
|
735
732
|
});
|
|
736
733
|
}
|
|
737
734
|
}
|
|
@@ -776,14 +773,13 @@ module.exports = function ({ types: t }) {
|
|
|
776
773
|
visitor: {
|
|
777
774
|
CallExpression: {
|
|
778
775
|
enter(path, state) {
|
|
779
|
-
processWorklets(t, path, state
|
|
776
|
+
processWorklets(t, path, state);
|
|
780
777
|
},
|
|
781
778
|
},
|
|
782
779
|
'FunctionDeclaration|FunctionExpression|ArrowFunctionExpression': {
|
|
783
780
|
enter(path, state) {
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
processIfGestureHandlerEventCallbackFunctionNode(t, path, fileName);
|
|
781
|
+
processIfWorkletNode(t, path, state);
|
|
782
|
+
processIfGestureHandlerEventCallbackFunctionNode(t, path, state);
|
|
787
783
|
},
|
|
788
784
|
},
|
|
789
785
|
},
|
|
@@ -498,10 +498,17 @@ declare module 'react-native-reanimated' {
|
|
|
498
498
|
interval: number;
|
|
499
499
|
};
|
|
500
500
|
|
|
501
|
+
export type AnimatedSensor = {
|
|
502
|
+
sensor: SensorValue3D | SensorValueRotation | null;
|
|
503
|
+
unregister: () => void;
|
|
504
|
+
isAvailable: boolean;
|
|
505
|
+
config: SensorConfig;
|
|
506
|
+
};
|
|
507
|
+
|
|
501
508
|
export function useAnimatedSensor(
|
|
502
509
|
sensorType: SensorType,
|
|
503
510
|
userConfig?: SensorConfig
|
|
504
|
-
);
|
|
511
|
+
): AnimatedSensor;
|
|
505
512
|
|
|
506
513
|
export interface ExitAnimationsValues {
|
|
507
514
|
currentOriginX: number;
|
|
@@ -614,14 +621,19 @@ declare module 'react-native-reanimated' {
|
|
|
614
621
|
callback?: AnimationCallback
|
|
615
622
|
): number;
|
|
616
623
|
export function cancelAnimation<T>(sharedValue: SharedValue<T>): void;
|
|
617
|
-
export function withDelay<T extends AnimatableValue>(
|
|
624
|
+
export function withDelay<T extends AnimatableValue>(
|
|
625
|
+
delayMS: number,
|
|
626
|
+
delayedAnimation: T
|
|
627
|
+
): T;
|
|
618
628
|
export function withRepeat<T extends AnimatableValue>(
|
|
619
629
|
animation: T,
|
|
620
630
|
numberOfReps?: number,
|
|
621
631
|
reverse?: boolean,
|
|
622
632
|
callback?: AnimationCallback
|
|
623
633
|
): T;
|
|
624
|
-
export function withSequence<T extends AnimatableValue>(
|
|
634
|
+
export function withSequence<T extends AnimatableValue>(
|
|
635
|
+
...animations: [T, ...T[]]
|
|
636
|
+
): T;
|
|
625
637
|
|
|
626
638
|
// reanimated2 functions
|
|
627
639
|
export function runOnUI<A extends any[], R>(
|
package/src/Animated.js
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import { LogBox } from 'react-native';
|
|
2
1
|
import createAnimatedComponent from './createAnimatedComponent';
|
|
3
2
|
import {
|
|
4
3
|
addWhitelistedNativeProps,
|
|
5
4
|
addWhitelistedUIProps,
|
|
6
5
|
} from './ConfigHelper';
|
|
7
|
-
import * as reanimated1 from './reanimated1';
|
|
8
6
|
import ReanimatedComponents from './reanimated2/component';
|
|
9
7
|
|
|
10
8
|
const Animated = {
|
|
@@ -14,18 +12,7 @@ const Animated = {
|
|
|
14
12
|
// configuration
|
|
15
13
|
addWhitelistedNativeProps,
|
|
16
14
|
addWhitelistedUIProps,
|
|
17
|
-
// reanimated 1
|
|
18
|
-
...reanimated1,
|
|
19
15
|
};
|
|
20
16
|
|
|
21
17
|
export * from './reanimated2';
|
|
22
|
-
export * from './reanimated1';
|
|
23
18
|
export default Animated;
|
|
24
|
-
|
|
25
|
-
// I think we can ignore this message as long as Gesture Handler doesn't
|
|
26
|
-
// try to load the Reanimated module. I figured it should be here instead of
|
|
27
|
-
// RNGH because this prevents the message from being displayed for all
|
|
28
|
-
// versions of RNGH.
|
|
29
|
-
LogBox.ignoreLogs([
|
|
30
|
-
'RCTBridge required dispatch_sync to load RNGestureHandlerModule. This may lead to deadlocks',
|
|
31
|
-
]);
|
package/src/ConfigHelper.ts
CHANGED
|
@@ -1,19 +1,8 @@
|
|
|
1
1
|
import React, { Component, ComponentType, MutableRefObject, Ref } from 'react';
|
|
2
2
|
import { findNodeHandle, Platform, StyleSheet } from 'react-native';
|
|
3
|
-
import ReanimatedEventEmitter from './ReanimatedEventEmitter';
|
|
4
|
-
|
|
5
|
-
// @ts-ignore JS file
|
|
6
|
-
import AnimatedEvent from './reanimated1/core/AnimatedEvent';
|
|
7
|
-
// @ts-ignore JS file
|
|
8
|
-
import AnimatedNode from './reanimated1/core/AnimatedNode';
|
|
9
|
-
// @ts-ignore JS file
|
|
10
|
-
import AnimatedValue from './reanimated1/core/AnimatedValue';
|
|
11
|
-
// @ts-ignore JS file
|
|
12
|
-
import { createOrReusePropsNode } from './reanimated1/core/AnimatedProps';
|
|
13
3
|
import WorkletEventHandler from './reanimated2/WorkletEventHandler';
|
|
14
4
|
import setAndForwardRef from './setAndForwardRef';
|
|
15
5
|
import './reanimated2/layoutReanimation/LayoutAnimationRepository';
|
|
16
|
-
|
|
17
6
|
import invariant from 'invariant';
|
|
18
7
|
import { adaptViewConfig } from './ConfigHelper';
|
|
19
8
|
import { RNRenderer } from './reanimated2/platform-specific/RNRenderer';
|
|
@@ -38,44 +27,22 @@ import {
|
|
|
38
27
|
EntryExitAnimationFunction,
|
|
39
28
|
ILayoutAnimationBuilder,
|
|
40
29
|
} from './reanimated2/layoutReanimation';
|
|
41
|
-
import {
|
|
30
|
+
import {
|
|
31
|
+
SharedValue,
|
|
32
|
+
StyleProps,
|
|
33
|
+
ShadowNodeWrapper,
|
|
34
|
+
} from './reanimated2/commonTypes';
|
|
42
35
|
import {
|
|
43
36
|
ViewDescriptorsSet,
|
|
44
37
|
ViewRefSet,
|
|
45
38
|
} from './reanimated2/ViewDescriptorsSet';
|
|
46
|
-
|
|
47
|
-
const NODE_MAPPING = new Map();
|
|
48
|
-
|
|
49
|
-
interface ListenerData {
|
|
50
|
-
viewTag: number;
|
|
51
|
-
props: StyleProps;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
function listener(data: ListenerData) {
|
|
55
|
-
const component = NODE_MAPPING.get(data.viewTag);
|
|
56
|
-
component && component._updateFromNative(data.props);
|
|
57
|
-
}
|
|
39
|
+
import { getShadowNodeWrapperFromRef } from './reanimated2/fabricUtils';
|
|
58
40
|
|
|
59
41
|
function dummyListener() {
|
|
60
42
|
// empty listener we use to assign to listener properties for which animated
|
|
61
43
|
// event is used.
|
|
62
44
|
}
|
|
63
45
|
|
|
64
|
-
function hasAnimatedNodes(value: unknown): boolean {
|
|
65
|
-
if (value instanceof AnimatedNode) {
|
|
66
|
-
return true;
|
|
67
|
-
}
|
|
68
|
-
if (Array.isArray(value)) {
|
|
69
|
-
return value.some((item) => hasAnimatedNodes(item));
|
|
70
|
-
}
|
|
71
|
-
if (value && typeof value === 'object') {
|
|
72
|
-
return Object.keys(value).some((key) =>
|
|
73
|
-
hasAnimatedNodes((value as Record<string, unknown>)[key])
|
|
74
|
-
);
|
|
75
|
-
}
|
|
76
|
-
return false;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
46
|
type NestedArray<T> = T | NestedArray<T>[];
|
|
80
47
|
function flattenArray<T>(array: NestedArray<T>): T[] {
|
|
81
48
|
if (!Array.isArray(array)) {
|
|
@@ -166,14 +133,6 @@ export interface InitialComponentProps extends Record<string, unknown> {
|
|
|
166
133
|
collapsable?: boolean;
|
|
167
134
|
}
|
|
168
135
|
|
|
169
|
-
interface PropsAnimated {
|
|
170
|
-
__onEvaluate: () => StyleProps;
|
|
171
|
-
__detach: () => void;
|
|
172
|
-
__getValue: () => StyleProps;
|
|
173
|
-
update: () => void;
|
|
174
|
-
setNativeView: (view: Component) => void;
|
|
175
|
-
}
|
|
176
|
-
|
|
177
136
|
export default function createAnimatedComponent(
|
|
178
137
|
Component: ComponentType<InitialComponentProps>,
|
|
179
138
|
options?: Options<InitialComponentProps>
|
|
@@ -188,7 +147,6 @@ export default function createAnimatedComponent(
|
|
|
188
147
|
class AnimatedComponent extends React.Component<
|
|
189
148
|
AnimatedComponentProps<InitialComponentProps>
|
|
190
149
|
> {
|
|
191
|
-
_invokeAnimatedPropsCallbackOnMount = false;
|
|
192
150
|
_styles: StyleProps[] | null = null;
|
|
193
151
|
_animatedProps?: Partial<AnimatedComponentProps<AnimatedProps>>;
|
|
194
152
|
_viewTag = -1;
|
|
@@ -196,13 +154,11 @@ export default function createAnimatedComponent(
|
|
|
196
154
|
animatedStyle: { value: StyleProps } = { value: {} };
|
|
197
155
|
initialStyle = {};
|
|
198
156
|
sv: SharedValue<null | Record<string, unknown>> | null;
|
|
199
|
-
_propsAnimated?: PropsAnimated;
|
|
200
157
|
_component: ComponentRef | null = null;
|
|
201
158
|
static displayName: string;
|
|
202
159
|
|
|
203
160
|
constructor(props: AnimatedComponentProps<InitialComponentProps>) {
|
|
204
161
|
super(props);
|
|
205
|
-
this._attachProps(this.props);
|
|
206
162
|
if (isJest()) {
|
|
207
163
|
this.animatedStyle = { value: {} };
|
|
208
164
|
}
|
|
@@ -210,43 +166,21 @@ export default function createAnimatedComponent(
|
|
|
210
166
|
}
|
|
211
167
|
|
|
212
168
|
componentWillUnmount() {
|
|
213
|
-
this._detachPropUpdater();
|
|
214
|
-
this._propsAnimated && this._propsAnimated.__detach();
|
|
215
169
|
this._detachNativeEvents();
|
|
216
170
|
this._detachStyles();
|
|
217
171
|
this.sv = null;
|
|
218
172
|
}
|
|
219
173
|
|
|
220
174
|
componentDidMount() {
|
|
221
|
-
if (this._invokeAnimatedPropsCallbackOnMount) {
|
|
222
|
-
this._invokeAnimatedPropsCallbackOnMount = false;
|
|
223
|
-
this._animatedPropsCallback();
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
this._propsAnimated &&
|
|
227
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
228
|
-
this._propsAnimated.setNativeView(this._component!);
|
|
229
175
|
this._attachNativeEvents();
|
|
230
|
-
this._attachPropUpdater();
|
|
231
176
|
this._attachAnimatedStyles();
|
|
232
177
|
}
|
|
233
178
|
|
|
234
|
-
_getEventViewRef() {
|
|
235
|
-
// Make sure to get the scrollable node for components that implement
|
|
236
|
-
// `ScrollResponder.Mixin`.
|
|
237
|
-
return this._component?.getScrollableNode
|
|
238
|
-
? this._component.getScrollableNode()
|
|
239
|
-
: this._component;
|
|
240
|
-
}
|
|
241
|
-
|
|
242
179
|
_attachNativeEvents() {
|
|
243
|
-
const
|
|
244
|
-
const viewTag = findNodeHandle(options?.setNativeProps ? this : node);
|
|
180
|
+
const viewTag = findNodeHandle(this);
|
|
245
181
|
for (const key in this.props) {
|
|
246
182
|
const prop = this.props[key];
|
|
247
|
-
if (
|
|
248
|
-
(prop as AnimatedEvent).attachEvent(node, key);
|
|
249
|
-
} else if (
|
|
183
|
+
if (
|
|
250
184
|
has('current', prop) &&
|
|
251
185
|
prop.current instanceof WorkletEventHandler
|
|
252
186
|
) {
|
|
@@ -256,13 +190,9 @@ export default function createAnimatedComponent(
|
|
|
256
190
|
}
|
|
257
191
|
|
|
258
192
|
_detachNativeEvents() {
|
|
259
|
-
const node = this._getEventViewRef();
|
|
260
|
-
|
|
261
193
|
for (const key in this.props) {
|
|
262
194
|
const prop = this.props[key];
|
|
263
|
-
if (
|
|
264
|
-
(prop as AnimatedEvent).detachEvent(node, key);
|
|
265
|
-
} else if (
|
|
195
|
+
if (
|
|
266
196
|
has('current', prop) &&
|
|
267
197
|
prop.current instanceof WorkletEventHandler
|
|
268
198
|
) {
|
|
@@ -285,22 +215,24 @@ export default function createAnimatedComponent(
|
|
|
285
215
|
if (this.props.animatedProps?.viewDescriptors) {
|
|
286
216
|
this.props.animatedProps.viewDescriptors.remove(this._viewTag);
|
|
287
217
|
}
|
|
218
|
+
if (global._IS_FABRIC) {
|
|
219
|
+
const shadowNodeWrapper = getShadowNodeWrapperFromRef(this);
|
|
220
|
+
runOnUI(() => {
|
|
221
|
+
'worklet';
|
|
222
|
+
_removeShadowNodeFromRegistry(shadowNodeWrapper);
|
|
223
|
+
})();
|
|
224
|
+
}
|
|
288
225
|
}
|
|
289
226
|
}
|
|
290
227
|
|
|
291
228
|
_reattachNativeEvents(
|
|
292
229
|
prevProps: AnimatedComponentProps<InitialComponentProps>
|
|
293
230
|
) {
|
|
294
|
-
const node = this._getEventViewRef();
|
|
295
|
-
const attached = new Set();
|
|
296
|
-
const nextEvts = new Set();
|
|
297
231
|
let viewTag: number | undefined;
|
|
298
232
|
|
|
299
233
|
for (const key in this.props) {
|
|
300
234
|
const prop = this.props[key];
|
|
301
|
-
if (
|
|
302
|
-
nextEvts.add((prop as AnimatedEvent).__nodeID);
|
|
303
|
-
} else if (
|
|
235
|
+
if (
|
|
304
236
|
has('current', prop) &&
|
|
305
237
|
prop.current instanceof WorkletEventHandler
|
|
306
238
|
) {
|
|
@@ -311,15 +243,7 @@ export default function createAnimatedComponent(
|
|
|
311
243
|
}
|
|
312
244
|
for (const key in prevProps) {
|
|
313
245
|
const prop = this.props[key];
|
|
314
|
-
if (
|
|
315
|
-
if (!nextEvts.has((prop as AnimatedEvent).__nodeID)) {
|
|
316
|
-
// event was in prev props but not in current props, we detach
|
|
317
|
-
(prop as AnimatedEvent).detachEvent(node, key);
|
|
318
|
-
} else {
|
|
319
|
-
// event was in prev and is still in current props
|
|
320
|
-
attached.add((prop as AnimatedEvent).__nodeID);
|
|
321
|
-
}
|
|
322
|
-
} else if (
|
|
246
|
+
if (
|
|
323
247
|
has('current', prop) &&
|
|
324
248
|
prop.current instanceof WorkletEventHandler &&
|
|
325
249
|
prop.current.reattachNeeded
|
|
@@ -331,12 +255,6 @@ export default function createAnimatedComponent(
|
|
|
331
255
|
for (const key in this.props) {
|
|
332
256
|
const prop = this.props[key];
|
|
333
257
|
if (
|
|
334
|
-
prop instanceof AnimatedEvent &&
|
|
335
|
-
!attached.has((prop as AnimatedEvent).__nodeID)
|
|
336
|
-
) {
|
|
337
|
-
// not yet attached
|
|
338
|
-
(prop as AnimatedEvent).attachEvent(node, key);
|
|
339
|
-
} else if (
|
|
340
258
|
has('current', prop) &&
|
|
341
259
|
prop.current instanceof WorkletEventHandler &&
|
|
342
260
|
prop.current.reattachNeeded
|
|
@@ -348,49 +266,6 @@ export default function createAnimatedComponent(
|
|
|
348
266
|
}
|
|
349
267
|
}
|
|
350
268
|
|
|
351
|
-
// The system is best designed when setNativeProps is implemented. It is
|
|
352
|
-
// able to avoid re-rendering and directly set the attributes that changed.
|
|
353
|
-
// However, setNativeProps can only be implemented on native components
|
|
354
|
-
// If you want to animate a composite component, you need to re-render it.
|
|
355
|
-
// In this case, we have a fallback that uses forceUpdate.
|
|
356
|
-
_animatedPropsCallback = () => {
|
|
357
|
-
if (this._component == null) {
|
|
358
|
-
// AnimatedProps is created in will-mount because it's used in render.
|
|
359
|
-
// But this callback may be invoked before mount in async mode,
|
|
360
|
-
// In which case we should defer the setNativeProps() call.
|
|
361
|
-
// React may throw away uncommitted work in async mode,
|
|
362
|
-
// So a deferred call won't always be invoked.
|
|
363
|
-
this._invokeAnimatedPropsCallbackOnMount = true;
|
|
364
|
-
} else if (typeof this._component.setNativeProps !== 'function') {
|
|
365
|
-
this.forceUpdate();
|
|
366
|
-
} else {
|
|
367
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
368
|
-
this._component.setNativeProps(this._propsAnimated!.__getValue());
|
|
369
|
-
}
|
|
370
|
-
};
|
|
371
|
-
|
|
372
|
-
_attachProps(nextProps: StyleProps) {
|
|
373
|
-
const oldPropsAnimated = this._propsAnimated;
|
|
374
|
-
|
|
375
|
-
this._propsAnimated = createOrReusePropsNode(
|
|
376
|
-
nextProps,
|
|
377
|
-
this._animatedPropsCallback,
|
|
378
|
-
oldPropsAnimated
|
|
379
|
-
);
|
|
380
|
-
// If prop node has been reused we don't need to call into "__detach"
|
|
381
|
-
if (oldPropsAnimated !== this._propsAnimated) {
|
|
382
|
-
// When you call detach, it removes the element from the parent list
|
|
383
|
-
// of children. If it goes to 0, then the parent also detaches itself
|
|
384
|
-
// and so on.
|
|
385
|
-
// An optimization is to attach the new elements and THEN detach the old
|
|
386
|
-
// ones instead of detaching and THEN attaching.
|
|
387
|
-
// This way the intermediate state isn't to go to 0 and trigger
|
|
388
|
-
// this expensive recursive detaching to then re-attach everything on
|
|
389
|
-
// the very next operation.
|
|
390
|
-
oldPropsAnimated && oldPropsAnimated.__detach();
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
|
|
394
269
|
_updateFromNative(props: StyleProps) {
|
|
395
270
|
if (options?.setNativeProps) {
|
|
396
271
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
@@ -401,14 +276,6 @@ export default function createAnimatedComponent(
|
|
|
401
276
|
}
|
|
402
277
|
}
|
|
403
278
|
|
|
404
|
-
_attachPropUpdater() {
|
|
405
|
-
const viewTag = findNodeHandle(this);
|
|
406
|
-
NODE_MAPPING.set(viewTag, this);
|
|
407
|
-
if (NODE_MAPPING.size === 1) {
|
|
408
|
-
ReanimatedEventEmitter.addListener('onReanimatedPropsChange', listener);
|
|
409
|
-
}
|
|
410
|
-
}
|
|
411
|
-
|
|
412
279
|
_attachAnimatedStyles() {
|
|
413
280
|
const styles = this.props.style
|
|
414
281
|
? onlyAnimatedStyles(flattenArray<StyleProps>(this.props.style))
|
|
@@ -421,9 +288,11 @@ export default function createAnimatedComponent(
|
|
|
421
288
|
|
|
422
289
|
let viewTag: number | null;
|
|
423
290
|
let viewName: string | null;
|
|
291
|
+
let shadowNodeWrapper: ShadowNodeWrapper | null = null;
|
|
424
292
|
if (Platform.OS === 'web') {
|
|
425
293
|
viewTag = findNodeHandle(this);
|
|
426
294
|
viewName = null;
|
|
295
|
+
shadowNodeWrapper = null;
|
|
427
296
|
} else {
|
|
428
297
|
// hostInstance can be null for a component that doesn't render anything (render function returns null). Example: svg Stop: https://github.com/react-native-svg/react-native-svg/blob/develop/src/elements/Stop.tsx
|
|
429
298
|
const hostInstance = RNRenderer.findHostInstance_DEPRECATED(this);
|
|
@@ -445,6 +314,10 @@ export default function createAnimatedComponent(
|
|
|
445
314
|
if (hasReanimated2Props && hostInstance?.viewConfig) {
|
|
446
315
|
adaptViewConfig(hostInstance.viewConfig);
|
|
447
316
|
}
|
|
317
|
+
|
|
318
|
+
if (global._IS_FABRIC) {
|
|
319
|
+
shadowNodeWrapper = getShadowNodeWrapperFromRef(this);
|
|
320
|
+
}
|
|
448
321
|
}
|
|
449
322
|
this._viewTag = viewTag as number;
|
|
450
323
|
|
|
@@ -470,7 +343,11 @@ export default function createAnimatedComponent(
|
|
|
470
343
|
}
|
|
471
344
|
|
|
472
345
|
styles.forEach((style) => {
|
|
473
|
-
style.viewDescriptors.add({
|
|
346
|
+
style.viewDescriptors.add({
|
|
347
|
+
tag: viewTag,
|
|
348
|
+
name: viewName,
|
|
349
|
+
shadowNodeWrapper,
|
|
350
|
+
});
|
|
474
351
|
if (isJest()) {
|
|
475
352
|
/**
|
|
476
353
|
* We need to connect Jest's TestObject instance whose contains just props object
|
|
@@ -501,27 +378,16 @@ export default function createAnimatedComponent(
|
|
|
501
378
|
tag: viewTag!,
|
|
502
379
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
503
380
|
name: viewName!,
|
|
381
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
382
|
+
shadowNodeWrapper: shadowNodeWrapper!,
|
|
504
383
|
});
|
|
505
384
|
}
|
|
506
385
|
}
|
|
507
386
|
|
|
508
|
-
_detachPropUpdater() {
|
|
509
|
-
const viewTag = findNodeHandle(this);
|
|
510
|
-
NODE_MAPPING.delete(viewTag);
|
|
511
|
-
if (NODE_MAPPING.size === 0) {
|
|
512
|
-
ReanimatedEventEmitter.removeAllListeners('onReanimatedPropsChange');
|
|
513
|
-
}
|
|
514
|
-
}
|
|
515
|
-
|
|
516
387
|
componentDidUpdate(
|
|
517
388
|
prevProps: AnimatedComponentProps<InitialComponentProps>
|
|
518
389
|
) {
|
|
519
|
-
this._attachProps(this.props);
|
|
520
390
|
this._reattachNativeEvents(prevProps);
|
|
521
|
-
|
|
522
|
-
this._propsAnimated &&
|
|
523
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
524
|
-
this._propsAnimated.setNativeView(this._component!);
|
|
525
391
|
this._attachAnimatedStyles();
|
|
526
392
|
}
|
|
527
393
|
|
|
@@ -578,21 +444,6 @@ export default function createAnimatedComponent(
|
|
|
578
444
|
},
|
|
579
445
|
});
|
|
580
446
|
|
|
581
|
-
_filterNonAnimatedStyle(inputStyle: StyleProps) {
|
|
582
|
-
const style: StyleProps = {};
|
|
583
|
-
for (const key in inputStyle) {
|
|
584
|
-
const value = inputStyle[key];
|
|
585
|
-
if (!hasAnimatedNodes(value)) {
|
|
586
|
-
style[key] = value;
|
|
587
|
-
} else if (value instanceof AnimatedValue) {
|
|
588
|
-
// if any style in animated component is set directly to the `Value` we set those styles to the first value of `Value` node in order
|
|
589
|
-
// to avoid flash of default styles when `Value` is being asynchrounously sent via bridge and initialized in the native side.
|
|
590
|
-
style[key] = value._startingValue;
|
|
591
|
-
}
|
|
592
|
-
}
|
|
593
|
-
return style;
|
|
594
|
-
}
|
|
595
|
-
|
|
596
447
|
_filterNonAnimatedProps(
|
|
597
448
|
inputProps: AnimatedComponentProps<InitialComponentProps>
|
|
598
449
|
): Record<string, unknown> {
|
|
@@ -617,9 +468,7 @@ export default function createAnimatedComponent(
|
|
|
617
468
|
return style;
|
|
618
469
|
}
|
|
619
470
|
});
|
|
620
|
-
props[key] =
|
|
621
|
-
StyleSheet.flatten(processedStyle)
|
|
622
|
-
);
|
|
471
|
+
props[key] = StyleSheet.flatten(processedStyle);
|
|
623
472
|
} else if (key === 'animatedProps') {
|
|
624
473
|
const animatedProp = inputProps.animatedProps as Partial<
|
|
625
474
|
AnimatedComponentProps<AnimatedProps>
|
|
@@ -630,12 +479,6 @@ export default function createAnimatedComponent(
|
|
|
630
479
|
animatedProp.viewsRef?.add(this);
|
|
631
480
|
});
|
|
632
481
|
}
|
|
633
|
-
} else if (value instanceof AnimatedEvent) {
|
|
634
|
-
// we cannot filter out event listeners completely as some components
|
|
635
|
-
// rely on having a callback registered in order to generate events
|
|
636
|
-
// alltogether. Therefore we provide a dummy callback here to allow
|
|
637
|
-
// native event dispatcher to hijack events.
|
|
638
|
-
props[key] = dummyListener;
|
|
639
482
|
} else if (
|
|
640
483
|
has('current', value) &&
|
|
641
484
|
value.current instanceof WorkletEventHandler
|
|
@@ -651,14 +494,11 @@ export default function createAnimatedComponent(
|
|
|
651
494
|
} else {
|
|
652
495
|
props[key] = dummyListener;
|
|
653
496
|
}
|
|
654
|
-
} else if (
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
// if any prop in animated component is set directly to the `Value` we set those props to the first value of `Value` node in order
|
|
660
|
-
// to avoid default values for a short moment when `Value` is being asynchrounously sent via bridge and initialized in the native side.
|
|
661
|
-
props[key] = (value as AnimatedValue)._startingValue;
|
|
497
|
+
} else if (
|
|
498
|
+
key !== 'onGestureHandlerStateChange' ||
|
|
499
|
+
!isChromeDebugger()
|
|
500
|
+
) {
|
|
501
|
+
props[key] = value;
|
|
662
502
|
}
|
|
663
503
|
}
|
|
664
504
|
return props;
|