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
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
2
|
+
|
|
3
|
+
#include "FabricUtils.h"
|
|
4
|
+
|
|
5
|
+
#include <react/renderer/uimanager/UIManagerBinding.h>
|
|
6
|
+
|
|
7
|
+
using namespace facebook::react;
|
|
8
|
+
|
|
9
|
+
namespace reanimated {
|
|
10
|
+
|
|
11
|
+
#ifdef ANDROID
|
|
12
|
+
RuntimeExecutor getRuntimeExecutorFromBinding(Binding *binding) {
|
|
13
|
+
BindingPublic *bindingPublic = reinterpret_cast<BindingPublic *>(binding);
|
|
14
|
+
SchedulerPublic *schedulerPublic =
|
|
15
|
+
reinterpret_cast<SchedulerPublic *>((bindingPublic->scheduler_).get());
|
|
16
|
+
return schedulerPublic->runtimeExecutor_;
|
|
17
|
+
}
|
|
18
|
+
#endif
|
|
19
|
+
|
|
20
|
+
inline static const UIManagerPublic *getUIManagerPublic(
|
|
21
|
+
const UIManager *uiManager) {
|
|
22
|
+
return reinterpret_cast<const UIManagerPublic *>(uiManager);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
std::shared_ptr<const ContextContainer> getContextContainerFromUIManager(
|
|
26
|
+
const UIManager *uiManager) {
|
|
27
|
+
return getUIManagerPublic(uiManager)->contextContainer_;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
inline static UIManagerDelegate *getDelegateFromUIManager(
|
|
31
|
+
const UIManager *uiManager) {
|
|
32
|
+
return getUIManagerPublic(uiManager)->delegate_;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
void UIManager_dispatchCommand(
|
|
36
|
+
const std::shared_ptr<UIManager> &uiManager,
|
|
37
|
+
const ShadowNode::Shared &shadowNode,
|
|
38
|
+
std::string const &commandName,
|
|
39
|
+
folly::dynamic const &args) {
|
|
40
|
+
auto delegate_ = getDelegateFromUIManager(&*uiManager);
|
|
41
|
+
|
|
42
|
+
// copied from UIManager.cpp
|
|
43
|
+
if (delegate_) {
|
|
44
|
+
delegate_->uiManagerDidDispatchCommand(shadowNode, commandName, args);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
LayoutMetrics UIManager_getRelativeLayoutMetrics(
|
|
49
|
+
const std::shared_ptr<UIManager> &uiManager,
|
|
50
|
+
ShadowNode const &shadowNode,
|
|
51
|
+
ShadowNode const *ancestorShadowNode,
|
|
52
|
+
LayoutableShadowNode::LayoutInspectingPolicy policy) {
|
|
53
|
+
// based on implementation from UIManager.cpp
|
|
54
|
+
const auto &shadowTreeRegistry = uiManager->getShadowTreeRegistry();
|
|
55
|
+
|
|
56
|
+
// We might store here an owning pointer to `ancestorShadowNode` to ensure
|
|
57
|
+
// that the node is not deallocated during method execution lifetime.
|
|
58
|
+
auto owningAncestorShadowNode = ShadowNode::Shared{};
|
|
59
|
+
|
|
60
|
+
if (!ancestorShadowNode) {
|
|
61
|
+
shadowTreeRegistry.visit(
|
|
62
|
+
shadowNode.getSurfaceId(), [&](ShadowTree const &shadowTree) {
|
|
63
|
+
owningAncestorShadowNode =
|
|
64
|
+
shadowTree.getCurrentRevision().rootShadowNode;
|
|
65
|
+
ancestorShadowNode = owningAncestorShadowNode.get();
|
|
66
|
+
});
|
|
67
|
+
} else {
|
|
68
|
+
// It is possible for JavaScript (or other callers) to have a reference
|
|
69
|
+
// to a previous version of ShadowNodes, but we enforce that
|
|
70
|
+
// metrics are only calculated on most recently committed versions.
|
|
71
|
+
owningAncestorShadowNode =
|
|
72
|
+
uiManager->getNewestCloneOfShadowNode(*ancestorShadowNode);
|
|
73
|
+
ancestorShadowNode = owningAncestorShadowNode.get();
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
auto layoutableAncestorShadowNode =
|
|
77
|
+
traitCast<LayoutableShadowNode const *>(ancestorShadowNode);
|
|
78
|
+
|
|
79
|
+
if (!layoutableAncestorShadowNode) {
|
|
80
|
+
return EmptyLayoutMetrics;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
return LayoutableShadowNode::computeRelativeLayoutMetrics(
|
|
84
|
+
shadowNode.getFamily(), *layoutableAncestorShadowNode, policy);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
SharedShadowNode UIManager_cloneNode(
|
|
88
|
+
const UIManager *uiManager,
|
|
89
|
+
const ShadowNode::Shared &shadowNode,
|
|
90
|
+
const SharedShadowNodeSharedList &children,
|
|
91
|
+
const RawProps *rawProps) {
|
|
92
|
+
auto delegate_ = getDelegateFromUIManager(uiManager);
|
|
93
|
+
auto contextContainer_ = getContextContainerFromUIManager(uiManager);
|
|
94
|
+
|
|
95
|
+
// copied from UIManager.cpp
|
|
96
|
+
PropsParserContext propsParserContext{
|
|
97
|
+
shadowNode->getFamily().getSurfaceId(), *contextContainer_.get()};
|
|
98
|
+
|
|
99
|
+
auto &componentDescriptor = shadowNode->getComponentDescriptor();
|
|
100
|
+
auto clonedShadowNode = componentDescriptor.cloneShadowNode(
|
|
101
|
+
*shadowNode,
|
|
102
|
+
{
|
|
103
|
+
/* .props = */
|
|
104
|
+
rawProps ? componentDescriptor.cloneProps(
|
|
105
|
+
propsParserContext, shadowNode->getProps(), *rawProps)
|
|
106
|
+
: ShadowNodeFragment::propsPlaceholder(),
|
|
107
|
+
/* .children = */ children,
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
if (delegate_) {
|
|
111
|
+
delegate_->uiManagerDidCloneShadowNode(
|
|
112
|
+
*shadowNode.get(), *clonedShadowNode);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
return clonedShadowNode;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
void UIManager_appendChild(
|
|
119
|
+
const ShadowNode::Shared &parentShadowNode,
|
|
120
|
+
const ShadowNode::Shared &childShadowNode) {
|
|
121
|
+
// copied from UIManager.cpp
|
|
122
|
+
auto &componentDescriptor = parentShadowNode->getComponentDescriptor();
|
|
123
|
+
componentDescriptor.appendChild(parentShadowNode, childShadowNode);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
} // namespace reanimated
|
|
127
|
+
|
|
128
|
+
#endif // RCT_NEW_ARCH_ENABLED
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
2
|
+
|
|
3
|
+
#include "ReanimatedUIManagerBinding.h"
|
|
4
|
+
#include "FabricUtils.h"
|
|
5
|
+
#include "NewestShadowNodesRegistry.h"
|
|
6
|
+
|
|
7
|
+
using namespace facebook;
|
|
8
|
+
using namespace react;
|
|
9
|
+
|
|
10
|
+
namespace reanimated {
|
|
11
|
+
|
|
12
|
+
void ReanimatedUIManagerBinding::createAndInstallIfNeeded(
|
|
13
|
+
jsi::Runtime &runtime,
|
|
14
|
+
RuntimeExecutor const &runtimeExecutor,
|
|
15
|
+
std::shared_ptr<UIManager> const &uiManager,
|
|
16
|
+
std::shared_ptr<NewestShadowNodesRegistry> const
|
|
17
|
+
&newestShadowNodesRegistry) {
|
|
18
|
+
// adapted from UIManagerBinding.cpp
|
|
19
|
+
auto uiManagerModuleName = "nativeFabricUIManager";
|
|
20
|
+
auto uiManagerBinding = std::make_shared<ReanimatedUIManagerBinding>(
|
|
21
|
+
uiManager, runtimeExecutor, newestShadowNodesRegistry);
|
|
22
|
+
auto object = jsi::Object::createFromHostObject(runtime, uiManagerBinding);
|
|
23
|
+
runtime.global().setProperty(runtime, uiManagerModuleName, std::move(object));
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
ReanimatedUIManagerBinding::ReanimatedUIManagerBinding(
|
|
27
|
+
std::shared_ptr<UIManager> uiManager,
|
|
28
|
+
RuntimeExecutor runtimeExecutor,
|
|
29
|
+
std::shared_ptr<NewestShadowNodesRegistry> newestShadowNodesRegistry)
|
|
30
|
+
: UIManagerBinding(uiManager, runtimeExecutor),
|
|
31
|
+
uiManager_(std::move(uiManager)),
|
|
32
|
+
newestShadowNodesRegistry_(newestShadowNodesRegistry) {}
|
|
33
|
+
|
|
34
|
+
ReanimatedUIManagerBinding::~ReanimatedUIManagerBinding() {}
|
|
35
|
+
|
|
36
|
+
void ReanimatedUIManagerBinding::invalidate() const {
|
|
37
|
+
uiManager_->setDelegate(nullptr);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
static inline ShadowNode::Shared cloneNode(
|
|
41
|
+
UIManager *uiManager,
|
|
42
|
+
NewestShadowNodesRegistry *newestShadowNodesRegistry,
|
|
43
|
+
const ShadowNode::Shared &shadowNode,
|
|
44
|
+
const SharedShadowNodeSharedList &children = nullptr,
|
|
45
|
+
const RawProps *rawProps = nullptr) {
|
|
46
|
+
{
|
|
47
|
+
auto lock = newestShadowNodesRegistry->createLock();
|
|
48
|
+
auto newest = newestShadowNodesRegistry->get(shadowNode->getTag());
|
|
49
|
+
if (newest != nullptr) {
|
|
50
|
+
// ShadowNode managed by Reanimated, use newest ShadowNode from registry
|
|
51
|
+
auto clone = UIManager_cloneNode(uiManager, newest, children, rawProps);
|
|
52
|
+
newestShadowNodesRegistry->update(clone);
|
|
53
|
+
return clone;
|
|
54
|
+
}
|
|
55
|
+
} // release lock since we don't need registry anymore
|
|
56
|
+
|
|
57
|
+
// ShadowNode not managed by Reanimated (yet?)
|
|
58
|
+
return UIManager_cloneNode(uiManager, shadowNode, children, rawProps);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
jsi::Value ReanimatedUIManagerBinding::get(
|
|
62
|
+
jsi::Runtime &runtime,
|
|
63
|
+
jsi::PropNameID const &name) {
|
|
64
|
+
// Currently, we need to overwrite all variants of `cloneNode` as well as
|
|
65
|
+
// `appendChild` to prevent React from overwriting layout props animated using
|
|
66
|
+
// Reanimated. However, this may degrade performance due to using locks.
|
|
67
|
+
// We already have an idea how this can be done better without locks
|
|
68
|
+
// (i.e. by overwriting `completeRoot` and using UIManagerCommitHooks).
|
|
69
|
+
|
|
70
|
+
// based on implementation from UIManagerBinding.cpp
|
|
71
|
+
auto methodName = name.utf8(runtime);
|
|
72
|
+
UIManager *uiManager = uiManager_.get();
|
|
73
|
+
NewestShadowNodesRegistry *newestShadowNodesRegistry =
|
|
74
|
+
newestShadowNodesRegistry_.get();
|
|
75
|
+
|
|
76
|
+
// Semantic: Clones the node with *same* props and *same* children.
|
|
77
|
+
if (methodName == "cloneNode") {
|
|
78
|
+
return jsi::Function::createFromHostFunction(
|
|
79
|
+
runtime,
|
|
80
|
+
name,
|
|
81
|
+
1,
|
|
82
|
+
[uiManager, newestShadowNodesRegistry](
|
|
83
|
+
jsi::Runtime &runtime,
|
|
84
|
+
jsi::Value const &thisValue,
|
|
85
|
+
jsi::Value const *arguments,
|
|
86
|
+
size_t count) noexcept -> jsi::Value {
|
|
87
|
+
return valueFromShadowNode(
|
|
88
|
+
runtime,
|
|
89
|
+
cloneNode(
|
|
90
|
+
uiManager,
|
|
91
|
+
newestShadowNodesRegistry,
|
|
92
|
+
shadowNodeFromValue(runtime, arguments[0])));
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// Semantic: Clones the node with *same* props and *empty* children.
|
|
97
|
+
if (methodName == "cloneNodeWithNewChildren") {
|
|
98
|
+
return jsi::Function::createFromHostFunction(
|
|
99
|
+
runtime,
|
|
100
|
+
name,
|
|
101
|
+
1,
|
|
102
|
+
[uiManager, newestShadowNodesRegistry](
|
|
103
|
+
jsi::Runtime &runtime,
|
|
104
|
+
jsi::Value const &thisValue,
|
|
105
|
+
jsi::Value const *arguments,
|
|
106
|
+
size_t count) noexcept -> jsi::Value {
|
|
107
|
+
return valueFromShadowNode(
|
|
108
|
+
runtime,
|
|
109
|
+
cloneNode(
|
|
110
|
+
uiManager,
|
|
111
|
+
newestShadowNodesRegistry,
|
|
112
|
+
shadowNodeFromValue(runtime, arguments[0]),
|
|
113
|
+
ShadowNode::emptySharedShadowNodeSharedList()));
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// Semantic: Clones the node with *given* props and *same* children.
|
|
118
|
+
if (methodName == "cloneNodeWithNewProps") {
|
|
119
|
+
return jsi::Function::createFromHostFunction(
|
|
120
|
+
runtime,
|
|
121
|
+
name,
|
|
122
|
+
2,
|
|
123
|
+
[uiManager, newestShadowNodesRegistry](
|
|
124
|
+
jsi::Runtime &runtime,
|
|
125
|
+
jsi::Value const &thisValue,
|
|
126
|
+
jsi::Value const *arguments,
|
|
127
|
+
size_t count) noexcept -> jsi::Value {
|
|
128
|
+
auto const &rawProps = RawProps(runtime, arguments[1]);
|
|
129
|
+
return valueFromShadowNode(
|
|
130
|
+
runtime,
|
|
131
|
+
cloneNode(
|
|
132
|
+
uiManager,
|
|
133
|
+
newestShadowNodesRegistry,
|
|
134
|
+
shadowNodeFromValue(runtime, arguments[0]),
|
|
135
|
+
nullptr,
|
|
136
|
+
&rawProps));
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// Semantic: Clones the node with *given* props and *empty* children.
|
|
141
|
+
if (methodName == "cloneNodeWithNewChildrenAndProps") {
|
|
142
|
+
return jsi::Function::createFromHostFunction(
|
|
143
|
+
runtime,
|
|
144
|
+
name,
|
|
145
|
+
2,
|
|
146
|
+
[uiManager, newestShadowNodesRegistry](
|
|
147
|
+
jsi::Runtime &runtime,
|
|
148
|
+
jsi::Value const &thisValue,
|
|
149
|
+
jsi::Value const *arguments,
|
|
150
|
+
size_t count) noexcept -> jsi::Value {
|
|
151
|
+
auto const &rawProps = RawProps(runtime, arguments[1]);
|
|
152
|
+
return valueFromShadowNode(
|
|
153
|
+
runtime,
|
|
154
|
+
cloneNode(
|
|
155
|
+
uiManager,
|
|
156
|
+
newestShadowNodesRegistry,
|
|
157
|
+
shadowNodeFromValue(runtime, arguments[0]),
|
|
158
|
+
ShadowNode::emptySharedShadowNodeSharedList(),
|
|
159
|
+
&rawProps));
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
if (methodName == "appendChild") {
|
|
164
|
+
return jsi::Function::createFromHostFunction(
|
|
165
|
+
runtime,
|
|
166
|
+
name,
|
|
167
|
+
2,
|
|
168
|
+
[newestShadowNodesRegistry](
|
|
169
|
+
jsi::Runtime &runtime,
|
|
170
|
+
jsi::Value const &thisValue,
|
|
171
|
+
jsi::Value const *arguments,
|
|
172
|
+
size_t count) noexcept -> jsi::Value {
|
|
173
|
+
auto parent = shadowNodeFromValue(runtime, arguments[0]);
|
|
174
|
+
auto child = shadowNodeFromValue(runtime, arguments[1]);
|
|
175
|
+
{
|
|
176
|
+
auto lock = newestShadowNodesRegistry->createLock();
|
|
177
|
+
auto newest = newestShadowNodesRegistry->get(child->getTag());
|
|
178
|
+
if (newest != nullptr) {
|
|
179
|
+
child = newest;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
UIManager_appendChild(parent, child);
|
|
183
|
+
return jsi::Value::undefined();
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
// Methods like "findNodeAtPoint", "getRelativeLayoutMetrics", "measure" etc.
|
|
188
|
+
// use `UIManager::getNewestCloneOfShadowNode` or
|
|
189
|
+
// `ShadowTree::getCurrentRevision` under the hood,
|
|
190
|
+
// so there's no need to overwrite them.
|
|
191
|
+
|
|
192
|
+
return UIManagerBinding::get(runtime, name);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
} // namespace reanimated
|
|
196
|
+
|
|
197
|
+
#endif // RCT_NEW_ARCH_ENABLED
|
|
@@ -1,7 +1,20 @@
|
|
|
1
1
|
#include "NativeReanimatedModule.h"
|
|
2
|
+
|
|
3
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
4
|
+
#include <react/renderer/uimanager/UIManagerBinding.h>
|
|
5
|
+
#include <react/renderer/uimanager/primitives.h>
|
|
6
|
+
#endif
|
|
7
|
+
|
|
2
8
|
#include <functional>
|
|
3
9
|
#include <memory>
|
|
4
10
|
#include <thread>
|
|
11
|
+
|
|
12
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
13
|
+
#include "FabricUtils.h"
|
|
14
|
+
#include "NewestShadowNodesRegistry.h"
|
|
15
|
+
#include "ReanimatedUIManagerBinding.h"
|
|
16
|
+
#endif
|
|
17
|
+
|
|
5
18
|
#include "EventHandlerRegistry.h"
|
|
6
19
|
#include "FeaturesConfig.h"
|
|
7
20
|
#include "FrozenObject.h"
|
|
@@ -62,8 +75,12 @@ NativeReanimatedModule::NativeReanimatedModule(
|
|
|
62
75
|
std::shared_ptr<Scheduler> scheduler,
|
|
63
76
|
std::shared_ptr<jsi::Runtime> rt,
|
|
64
77
|
std::shared_ptr<ErrorHandler> errorHandler,
|
|
78
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
79
|
+
// nothing
|
|
80
|
+
#else
|
|
65
81
|
std::function<jsi::Value(jsi::Runtime &, const int, const jsi::String &)>
|
|
66
82
|
propObtainer,
|
|
83
|
+
#endif
|
|
67
84
|
std::shared_ptr<LayoutAnimationsProxy> layoutAnimationsProxy,
|
|
68
85
|
PlatformDepMethodsHolder platformDepMethodsHolder)
|
|
69
86
|
: NativeReanimatedModuleSpec(jsInvoker),
|
|
@@ -71,10 +88,20 @@ NativeReanimatedModule::NativeReanimatedModule(
|
|
|
71
88
|
mapperRegistry(std::make_shared<MapperRegistry>()),
|
|
72
89
|
eventHandlerRegistry(std::make_shared<EventHandlerRegistry>()),
|
|
73
90
|
requestRender(platformDepMethodsHolder.requestRender),
|
|
91
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
92
|
+
// nothing
|
|
93
|
+
#else
|
|
74
94
|
propObtainer(propObtainer),
|
|
95
|
+
#endif
|
|
75
96
|
animatedSensorModule(platformDepMethodsHolder, this),
|
|
97
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
98
|
+
synchronouslyUpdateUIPropsFunction(
|
|
99
|
+
platformDepMethodsHolder.synchronouslyUpdateUIPropsFunction)
|
|
100
|
+
#else
|
|
76
101
|
configurePropsPlatformFunction(
|
|
77
|
-
platformDepMethodsHolder.configurePropsFunction)
|
|
102
|
+
platformDepMethodsHolder.configurePropsFunction)
|
|
103
|
+
#endif
|
|
104
|
+
{
|
|
78
105
|
auto requestAnimationFrame = [=](FrameCallback callback) {
|
|
79
106
|
frameCallbacks.push_back(callback);
|
|
80
107
|
maybeRequestRender();
|
|
@@ -82,12 +109,45 @@ NativeReanimatedModule::NativeReanimatedModule(
|
|
|
82
109
|
|
|
83
110
|
this->layoutAnimationsProxy = layoutAnimationsProxy;
|
|
84
111
|
|
|
112
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
113
|
+
auto updateProps = [this](
|
|
114
|
+
jsi::Runtime &rt,
|
|
115
|
+
const jsi::Value &shadowNodeValue,
|
|
116
|
+
const jsi::Value &props) {
|
|
117
|
+
this->updateProps(rt, shadowNodeValue, props);
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
auto removeShadowNodeFromRegistry =
|
|
121
|
+
[this](jsi::Runtime &rt, const jsi::Value &shadowNodeValue) {
|
|
122
|
+
this->removeShadowNodeFromRegistry(rt, shadowNodeValue);
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
auto measure = [this](jsi::Runtime &rt, const jsi::Value &shadowNodeValue) {
|
|
126
|
+
return this->measure(rt, shadowNodeValue);
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
auto dispatchCommand = [this](
|
|
130
|
+
jsi::Runtime &rt,
|
|
131
|
+
const jsi::Value &shadowNodeValue,
|
|
132
|
+
const jsi::Value &commandNameValue,
|
|
133
|
+
const jsi::Value &argsValue) {
|
|
134
|
+
this->dispatchCommand(rt, shadowNodeValue, commandNameValue, argsValue);
|
|
135
|
+
};
|
|
136
|
+
#endif
|
|
137
|
+
|
|
85
138
|
RuntimeDecorator::decorateUIRuntime(
|
|
86
139
|
*runtime,
|
|
87
|
-
|
|
88
|
-
|
|
140
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
141
|
+
updateProps,
|
|
142
|
+
measure,
|
|
143
|
+
removeShadowNodeFromRegistry,
|
|
144
|
+
dispatchCommand,
|
|
145
|
+
#else
|
|
146
|
+
platformDepMethodsHolder.updatePropsFunction,
|
|
147
|
+
platformDepMethodsHolder.measureFunction,
|
|
89
148
|
platformDepMethodsHolder.scrollToFunction,
|
|
90
|
-
|
|
149
|
+
#endif
|
|
150
|
+
requestAnimationFrame,
|
|
91
151
|
platformDepMethodsHolder.getCurrentTime,
|
|
92
152
|
platformDepMethodsHolder.registerSensor,
|
|
93
153
|
platformDepMethodsHolder.unregisterSensor,
|
|
@@ -97,7 +157,12 @@ NativeReanimatedModule::NativeReanimatedModule(
|
|
|
97
157
|
this->renderRequested = false;
|
|
98
158
|
this->onRender(timestampMs);
|
|
99
159
|
};
|
|
100
|
-
|
|
160
|
+
|
|
161
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
162
|
+
// nothing
|
|
163
|
+
#else
|
|
164
|
+
updatePropsFunction = platformDepMethodsHolder.updatePropsFunction;
|
|
165
|
+
#endif
|
|
101
166
|
}
|
|
102
167
|
|
|
103
168
|
void NativeReanimatedModule::installCoreFunctions(
|
|
@@ -253,15 +318,33 @@ jsi::Value NativeReanimatedModule::configureProps(
|
|
|
253
318
|
jsi::Runtime &rt,
|
|
254
319
|
const jsi::Value &uiProps,
|
|
255
320
|
const jsi::Value &nativeProps) {
|
|
321
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
322
|
+
jsi::Array array = nativeProps.asObject(rt).asArray(rt);
|
|
323
|
+
for (int i = 0; i < array.size(rt); ++i) {
|
|
324
|
+
std::string name = array.getValueAtIndex(rt, i).asString(rt).utf8(rt);
|
|
325
|
+
nativePropNames_.insert(name);
|
|
326
|
+
}
|
|
327
|
+
#else
|
|
256
328
|
configurePropsPlatformFunction(rt, uiProps, nativeProps);
|
|
329
|
+
#endif // RCT_NEW_ARCH_ENABLED
|
|
330
|
+
|
|
257
331
|
return jsi::Value::undefined();
|
|
258
332
|
}
|
|
259
333
|
|
|
260
334
|
void NativeReanimatedModule::onEvent(
|
|
261
335
|
std::string eventName,
|
|
262
|
-
|
|
336
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
337
|
+
jsi::Value &&payload
|
|
338
|
+
#else
|
|
339
|
+
std::string eventAsString
|
|
340
|
+
#endif
|
|
341
|
+
/**/) {
|
|
263
342
|
try {
|
|
343
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
344
|
+
eventHandlerRegistry->processEvent(*runtime, eventName, payload);
|
|
345
|
+
#else
|
|
264
346
|
eventHandlerRegistry->processEvent(*runtime, eventName, eventAsString);
|
|
347
|
+
#endif
|
|
265
348
|
mapperRegistry->execute(*runtime);
|
|
266
349
|
if (mapperRegistry->needRunOnRender()) {
|
|
267
350
|
maybeRequestRender();
|
|
@@ -327,4 +410,226 @@ void NativeReanimatedModule::unregisterSensor(
|
|
|
327
410
|
animatedSensorModule.unregisterSensor(sensorId);
|
|
328
411
|
}
|
|
329
412
|
|
|
413
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
414
|
+
bool NativeReanimatedModule::isThereAnyLayoutProp(
|
|
415
|
+
jsi::Runtime &rt,
|
|
416
|
+
const jsi::Value &props) {
|
|
417
|
+
const jsi::Array propNames = props.asObject(rt).getPropertyNames(rt);
|
|
418
|
+
for (size_t i = 0; i < propNames.size(rt); ++i) {
|
|
419
|
+
const std::string propName =
|
|
420
|
+
propNames.getValueAtIndex(rt, i).asString(rt).utf8(rt);
|
|
421
|
+
bool isLayoutProp =
|
|
422
|
+
nativePropNames_.find(propName) != nativePropNames_.end();
|
|
423
|
+
if (isLayoutProp) {
|
|
424
|
+
return true;
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
return false;
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
bool NativeReanimatedModule::handleEvent(
|
|
431
|
+
const std::string &eventName,
|
|
432
|
+
jsi::Value &&payload,
|
|
433
|
+
double currentTime) {
|
|
434
|
+
jsi::Runtime &rt = *runtime.get();
|
|
435
|
+
jsi::Object global = rt.global();
|
|
436
|
+
jsi::String eventTimestampName =
|
|
437
|
+
jsi::String::createFromAscii(rt, "_eventTimestamp");
|
|
438
|
+
global.setProperty(rt, eventTimestampName, currentTime);
|
|
439
|
+
onEvent(eventName, std::move(payload));
|
|
440
|
+
global.setProperty(rt, eventTimestampName, jsi::Value::undefined());
|
|
441
|
+
|
|
442
|
+
// TODO: return true if Reanimated successfully handled the event
|
|
443
|
+
// to avoid sending it to JavaScript
|
|
444
|
+
return false;
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
bool NativeReanimatedModule::handleRawEvent(
|
|
448
|
+
const RawEvent &rawEvent,
|
|
449
|
+
double currentTime) {
|
|
450
|
+
const EventTarget *eventTarget = rawEvent.eventTarget.get();
|
|
451
|
+
if (eventTarget == nullptr) {
|
|
452
|
+
// after app reload scrollview is unmounted and its content offset is set to
|
|
453
|
+
// 0 and view is thrown into recycle pool setting content offset triggers
|
|
454
|
+
// scroll event eventTarget is null though, because it's unmounting we can
|
|
455
|
+
// just ignore this event, because it's an event on unmounted component
|
|
456
|
+
return false;
|
|
457
|
+
}
|
|
458
|
+
const std::string &type = rawEvent.type;
|
|
459
|
+
const ValueFactory &payloadFactory = rawEvent.payloadFactory;
|
|
460
|
+
|
|
461
|
+
int tag = eventTarget->getTag();
|
|
462
|
+
std::string eventType = type;
|
|
463
|
+
if (eventType.rfind("top", 0) == 0) {
|
|
464
|
+
eventType = "on" + eventType.substr(3);
|
|
465
|
+
}
|
|
466
|
+
std::string eventName = std::to_string(tag) + eventType;
|
|
467
|
+
jsi::Runtime &rt = *runtime.get();
|
|
468
|
+
jsi::Value payload = payloadFactory(rt);
|
|
469
|
+
|
|
470
|
+
return handleEvent(eventName, std::move(payload), currentTime);
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
void NativeReanimatedModule::updateProps(
|
|
474
|
+
jsi::Runtime &rt,
|
|
475
|
+
const jsi::Value &shadowNodeValue,
|
|
476
|
+
const jsi::Value &props) {
|
|
477
|
+
ShadowNode::Shared shadowNode = shadowNodeFromValue(rt, shadowNodeValue);
|
|
478
|
+
|
|
479
|
+
// TODO: support multiple surfaces
|
|
480
|
+
surfaceId_ = shadowNode->getSurfaceId();
|
|
481
|
+
|
|
482
|
+
if (isThereAnyLayoutProp(rt, props)) {
|
|
483
|
+
operationsInBatch_.emplace_back(
|
|
484
|
+
shadowNode, std::make_unique<jsi::Value>(rt, props));
|
|
485
|
+
} else {
|
|
486
|
+
// TODO: batch with layout props changes?
|
|
487
|
+
Tag tag = shadowNode->getTag();
|
|
488
|
+
synchronouslyUpdateUIPropsFunction(rt, tag, props);
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
void NativeReanimatedModule::performOperations() {
|
|
493
|
+
if (operationsInBatch_.empty()) {
|
|
494
|
+
return;
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
auto copiedOperationsQueue = std::move(operationsInBatch_);
|
|
498
|
+
operationsInBatch_ =
|
|
499
|
+
std::vector<std::pair<ShadowNode::Shared, std::unique_ptr<jsi::Value>>>();
|
|
500
|
+
|
|
501
|
+
auto copiedTagsToRemove = std::move(tagsToRemove_);
|
|
502
|
+
tagsToRemove_ = std::vector<Tag>();
|
|
503
|
+
|
|
504
|
+
react_native_assert(uiManager_ != nullptr);
|
|
505
|
+
const auto &shadowTreeRegistry = uiManager_->getShadowTreeRegistry();
|
|
506
|
+
auto contextContainer = getContextContainerFromUIManager(
|
|
507
|
+
&*uiManager_); // TODO: use Scheduler::getContextContainer
|
|
508
|
+
PropsParserContext propsParserContext{surfaceId_, *contextContainer};
|
|
509
|
+
jsi::Runtime &rt = *runtime.get();
|
|
510
|
+
|
|
511
|
+
shadowTreeRegistry.visit(surfaceId_, [&](ShadowTree const &shadowTree) {
|
|
512
|
+
shadowTree.commit([&](RootShadowNode const &oldRootShadowNode) {
|
|
513
|
+
// lock once due to performance reasons
|
|
514
|
+
auto lock = newestShadowNodesRegistry_->createLock();
|
|
515
|
+
|
|
516
|
+
auto rootNode = oldRootShadowNode.ShadowNode::clone(ShadowNodeFragment{});
|
|
517
|
+
|
|
518
|
+
for (const auto &pair : copiedOperationsQueue) {
|
|
519
|
+
const ShadowNodeFamily &family = pair.first->getFamily();
|
|
520
|
+
react_native_assert(family.getSurfaceId() == surfaceId_);
|
|
521
|
+
|
|
522
|
+
auto newRootNode =
|
|
523
|
+
rootNode->cloneTree(family, [&](ShadowNode const &oldShadowNode) {
|
|
524
|
+
const auto newest =
|
|
525
|
+
newestShadowNodesRegistry_->get(oldShadowNode.getTag());
|
|
526
|
+
|
|
527
|
+
const auto &source = newest == nullptr ? oldShadowNode : *newest;
|
|
528
|
+
|
|
529
|
+
const auto newProps = source.getComponentDescriptor().cloneProps(
|
|
530
|
+
propsParserContext,
|
|
531
|
+
source.getProps(),
|
|
532
|
+
RawProps(rt, *pair.second));
|
|
533
|
+
|
|
534
|
+
return source.clone({/* .props = */ newProps});
|
|
535
|
+
});
|
|
536
|
+
|
|
537
|
+
if (newRootNode == nullptr) {
|
|
538
|
+
// this happens when React removed the component but Reanimated still
|
|
539
|
+
// tries to animate it, let's skip update for this specific component
|
|
540
|
+
continue;
|
|
541
|
+
}
|
|
542
|
+
rootNode = newRootNode;
|
|
543
|
+
|
|
544
|
+
auto ancestors = family.getAncestors(*rootNode);
|
|
545
|
+
for (const auto &pair : ancestors) {
|
|
546
|
+
const auto &parent = pair.first.get();
|
|
547
|
+
const auto &child = parent.getChildren().at(pair.second);
|
|
548
|
+
newestShadowNodesRegistry_->set(child, parent.getTag());
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
// remove ShadowNodes and its ancestors from NewestShadowNodesRegistry
|
|
553
|
+
for (auto tag : copiedTagsToRemove) {
|
|
554
|
+
newestShadowNodesRegistry_->remove(tag);
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
return std::static_pointer_cast<RootShadowNode>(rootNode);
|
|
558
|
+
});
|
|
559
|
+
});
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
void NativeReanimatedModule::removeShadowNodeFromRegistry(
|
|
563
|
+
jsi::Runtime &rt,
|
|
564
|
+
const jsi::Value &shadowNodeValue) {
|
|
565
|
+
auto shadowNode = shadowNodeFromValue(rt, shadowNodeValue);
|
|
566
|
+
tagsToRemove_.push_back(shadowNode->getTag());
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
void NativeReanimatedModule::dispatchCommand(
|
|
570
|
+
jsi::Runtime &rt,
|
|
571
|
+
const jsi::Value &shadowNodeValue,
|
|
572
|
+
const jsi::Value &commandNameValue,
|
|
573
|
+
const jsi::Value &argsValue) {
|
|
574
|
+
ShadowNode::Shared shadowNode = shadowNodeFromValue(rt, shadowNodeValue);
|
|
575
|
+
std::string commandName = stringFromValue(rt, commandNameValue);
|
|
576
|
+
folly::dynamic args = commandArgsFromValue(rt, argsValue);
|
|
577
|
+
|
|
578
|
+
// TODO: use uiManager_->dispatchCommand once it's public
|
|
579
|
+
UIManager_dispatchCommand(uiManager_, shadowNode, commandName, args);
|
|
580
|
+
}
|
|
581
|
+
|
|
582
|
+
jsi::Value NativeReanimatedModule::measure(
|
|
583
|
+
jsi::Runtime &rt,
|
|
584
|
+
const jsi::Value &shadowNodeValue) {
|
|
585
|
+
// based on implementation from UIManagerBinding.cpp
|
|
586
|
+
|
|
587
|
+
auto shadowNode = shadowNodeFromValue(rt, shadowNodeValue);
|
|
588
|
+
// TODO: use uiManager_->getRelativeLayoutMetrics once it's public
|
|
589
|
+
// auto layoutMetrics = uiManager_->getRelativeLayoutMetrics(
|
|
590
|
+
// *shadowNode, nullptr, {/* .includeTransform = */ true});
|
|
591
|
+
auto layoutMetrics = UIManager_getRelativeLayoutMetrics(
|
|
592
|
+
uiManager_, *shadowNode, nullptr, {/* .includeTransform = */ true});
|
|
593
|
+
|
|
594
|
+
if (layoutMetrics == EmptyLayoutMetrics) {
|
|
595
|
+
return jsi::Value::undefined();
|
|
596
|
+
}
|
|
597
|
+
auto newestCloneOfShadowNode =
|
|
598
|
+
uiManager_->getNewestCloneOfShadowNode(*shadowNode);
|
|
599
|
+
|
|
600
|
+
auto layoutableShadowNode =
|
|
601
|
+
traitCast<LayoutableShadowNode const *>(newestCloneOfShadowNode.get());
|
|
602
|
+
facebook::react::Point originRelativeToParent = layoutableShadowNode
|
|
603
|
+
? layoutableShadowNode->getLayoutMetrics().frame.origin
|
|
604
|
+
: facebook::react::Point();
|
|
605
|
+
|
|
606
|
+
auto frame = layoutMetrics.frame;
|
|
607
|
+
|
|
608
|
+
jsi::Object result(rt);
|
|
609
|
+
result.setProperty(
|
|
610
|
+
rt, "x", jsi::Value(static_cast<double>(originRelativeToParent.x)));
|
|
611
|
+
result.setProperty(
|
|
612
|
+
rt, "y", jsi::Value(static_cast<double>(originRelativeToParent.y)));
|
|
613
|
+
result.setProperty(
|
|
614
|
+
rt, "width", jsi::Value(static_cast<double>(frame.size.width)));
|
|
615
|
+
result.setProperty(
|
|
616
|
+
rt, "height", jsi::Value(static_cast<double>(frame.size.height)));
|
|
617
|
+
result.setProperty(
|
|
618
|
+
rt, "pageX", jsi::Value(static_cast<double>(frame.origin.x)));
|
|
619
|
+
result.setProperty(
|
|
620
|
+
rt, "pageY", jsi::Value(static_cast<double>(frame.origin.y)));
|
|
621
|
+
return result;
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
void NativeReanimatedModule::setUIManager(
|
|
625
|
+
std::shared_ptr<UIManager> uiManager) {
|
|
626
|
+
uiManager_ = uiManager;
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
void NativeReanimatedModule::setNewestShadowNodesRegistry(
|
|
630
|
+
std::shared_ptr<NewestShadowNodesRegistry> newestShadowNodesRegistry) {
|
|
631
|
+
newestShadowNodesRegistry_ = newestShadowNodesRegistry;
|
|
632
|
+
}
|
|
633
|
+
#endif // RCT_NEW_ARCH_ENABLED
|
|
634
|
+
|
|
330
635
|
} // namespace reanimated
|