react-native-reanimated 3.0.0-rc.9 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Common/cpp/AnimatedSensor/AnimatedSensorModule.cpp +30 -12
- package/Common/cpp/AnimatedSensor/AnimatedSensorModule.h +2 -0
- package/Common/cpp/Fabric/FabricUtils.cpp +3 -107
- package/Common/cpp/Fabric/FabricUtils.h +3 -24
- package/Common/cpp/Fabric/ReanimatedUIManagerBinding.cpp +54 -37
- package/Common/cpp/LayoutAnimations/LayoutAnimationType.h +8 -0
- package/Common/cpp/LayoutAnimations/LayoutAnimationsManager.cpp +81 -26
- package/Common/cpp/LayoutAnimations/LayoutAnimationsManager.h +20 -3
- package/Common/cpp/NativeModules/NativeReanimatedModule.cpp +105 -109
- package/Common/cpp/NativeModules/NativeReanimatedModule.h +19 -12
- package/Common/cpp/NativeModules/NativeReanimatedModuleSpec.cpp +15 -7
- package/Common/cpp/NativeModules/NativeReanimatedModuleSpec.h +6 -2
- package/Common/cpp/ReanimatedRuntime/ReanimatedHermesRuntime.cpp +20 -1
- package/Common/cpp/ReanimatedRuntime/ReanimatedHermesRuntime.h +9 -0
- package/Common/cpp/ReanimatedRuntime/ReanimatedRuntime.cpp +5 -1
- package/Common/cpp/Registries/EventHandlerRegistry.cpp +8 -34
- package/Common/cpp/Registries/EventHandlerRegistry.h +7 -13
- package/Common/cpp/SharedItems/Shareables.cpp +9 -63
- package/Common/cpp/SharedItems/Shareables.h +77 -72
- package/Common/cpp/Tools/CollectionUtils.h +14 -0
- package/Common/cpp/Tools/JsiUtils.cpp +26 -0
- package/Common/cpp/Tools/JsiUtils.h +176 -0
- package/Common/cpp/Tools/PlatformDepMethodsHolder.h +5 -5
- package/Common/cpp/Tools/ReanimatedVersion.cpp +17 -0
- package/Common/cpp/Tools/ReanimatedVersion.h +11 -0
- package/Common/cpp/Tools/RuntimeDecorator.cpp +49 -230
- package/Common/cpp/Tools/RuntimeDecorator.h +0 -2
- package/Common/cpp/Tools/WorkletEventHandler.cpp +3 -2
- package/Common/cpp/Tools/WorkletEventHandler.h +14 -6
- package/RNReanimated.podspec +2 -1
- package/android/CMakeLists.txt +188 -181
- package/android/build.gradle +362 -311
- package/android/proguard-rules.pro +2 -0
- package/android/src/fabric/java/com/swmansion/reanimated/NativeProxy.java +63 -295
- package/android/src/main/cpp/LayoutAnimations.cpp +35 -5
- package/android/src/main/cpp/LayoutAnimations.h +23 -6
- package/android/src/main/cpp/NativeProxy.cpp +143 -98
- package/android/src/main/cpp/NativeProxy.h +22 -28
- package/android/src/main/java/com/swmansion/reanimated/ReanimatedPackage.java +5 -4
- package/android/src/main/java/com/swmansion/reanimated/Utils.java +7 -1
- package/android/src/main/java/com/swmansion/reanimated/keyboardObserver/ReanimatedKeyboardEventListener.java +10 -3
- package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/AnimationsManager.java +218 -35
- package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/LayoutAnimations.java +43 -17
- package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/NativeMethodsHolder.java +6 -2
- package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/SharedElement.java +19 -0
- package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/SharedTransitionManager.java +610 -0
- package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/Snapshot.java +93 -23
- package/android/src/main/java/com/swmansion/reanimated/nativeProxy/AnimationFrameCallback.java +19 -0
- package/android/src/main/java/com/swmansion/reanimated/nativeProxy/EventHandler.java +35 -0
- package/android/src/main/java/com/swmansion/reanimated/nativeProxy/KeyboardEventDataUpdater.java +16 -0
- package/android/src/main/java/com/swmansion/reanimated/nativeProxy/NativeProxyCommon.java +206 -0
- package/android/src/main/java/com/swmansion/reanimated/nativeProxy/SensorSetter.java +17 -0
- package/android/src/main/java/com/swmansion/reanimated/sensor/ReanimatedSensor.java +9 -3
- package/android/src/main/java/com/swmansion/reanimated/sensor/ReanimatedSensorContainer.java +3 -4
- package/android/src/main/java/com/swmansion/reanimated/sensor/ReanimatedSensorListener.java +31 -7
- package/android/src/paper/java/com/swmansion/reanimated/NativeProxy.java +90 -307
- package/android/src/reactNativeVersionPatch/ReanimatedUIManager/70/com/swmansion/reanimated/ReanimatedUIManagerFactory.java +16 -0
- package/android/src/reactNativeVersionPatch/ReanimatedUIManager/latest/com/swmansion/reanimated/ReanimatedUIManagerFactory.java +63 -0
- package/android/src/reactNativeVersionPatch/ReanimatedUIManager/latest/com/swmansion/reanimated/layoutReanimation/ReanimatedUIManager.java +271 -0
- package/android/src/reactNativeVersionPatch/nativeHierarchyManager/latest/com/swmansion/reanimated/layoutReanimation/ReanimatedNativeHierarchyManager.java +76 -20
- package/ios/LayoutReanimation/REAAnimationsManager.h +28 -4
- package/ios/LayoutReanimation/REAAnimationsManager.m +216 -61
- package/ios/LayoutReanimation/REAFrame.h +10 -0
- package/ios/LayoutReanimation/REAFrame.m +15 -0
- package/ios/LayoutReanimation/REAScreensHelper.h +19 -0
- package/ios/LayoutReanimation/REAScreensHelper.m +106 -0
- package/ios/LayoutReanimation/REASharedElement.h +15 -0
- package/ios/LayoutReanimation/REASharedElement.m +16 -0
- package/ios/LayoutReanimation/REASharedTransitionManager.h +17 -0
- package/ios/LayoutReanimation/REASharedTransitionManager.m +632 -0
- package/ios/LayoutReanimation/REASnapshot.h +1 -0
- package/ios/LayoutReanimation/REASnapshot.m +96 -11
- package/ios/LayoutReanimation/REAUIManager.mm +64 -17
- package/ios/REAModule.mm +2 -7
- package/ios/REANodesManager.mm +1 -21
- package/ios/keyboardObserver/REAKeyboardEventObserver.m +72 -36
- package/ios/native/NativeProxy.mm +75 -114
- package/ios/native/REAInitializer.mm +2 -7
- package/ios/native/REAJSIUtils.h +60 -2
- package/ios/sensor/ReanimatedSensor.h +6 -2
- package/ios/sensor/ReanimatedSensor.m +43 -7
- package/ios/sensor/ReanimatedSensorContainer.h +4 -1
- package/ios/sensor/ReanimatedSensorContainer.m +8 -2
- package/lib/commonjs/createAnimatedComponent.js +232 -28
- package/lib/commonjs/createAnimatedComponent.js.map +1 -1
- package/lib/commonjs/reanimated2/Colors.js +43 -22
- package/lib/commonjs/reanimated2/Colors.js.map +1 -1
- package/lib/commonjs/reanimated2/NativeReanimated/NativeReanimated.js +16 -33
- package/lib/commonjs/reanimated2/NativeReanimated/NativeReanimated.js.map +1 -1
- package/lib/commonjs/reanimated2/animation/styleAnimation.js +5 -1
- package/lib/commonjs/reanimated2/animation/styleAnimation.js.map +1 -1
- package/lib/commonjs/reanimated2/animation/util.js +17 -15
- package/lib/commonjs/reanimated2/animation/util.js.map +1 -1
- package/lib/commonjs/reanimated2/commonTypes.js +33 -1
- package/lib/commonjs/reanimated2/commonTypes.js.map +1 -1
- package/lib/commonjs/reanimated2/core.js +33 -14
- package/lib/commonjs/reanimated2/core.js.map +1 -1
- package/lib/commonjs/reanimated2/frameCallback/FrameCallbackRegistryUI.js +2 -2
- package/lib/commonjs/reanimated2/frameCallback/FrameCallbackRegistryUI.js.map +1 -1
- package/lib/commonjs/reanimated2/globals.d.js.map +1 -1
- package/lib/commonjs/reanimated2/hook/index.js +0 -6
- package/lib/commonjs/reanimated2/hook/index.js.map +1 -1
- package/lib/commonjs/reanimated2/hook/useAnimatedKeyboard.js +5 -2
- package/lib/commonjs/reanimated2/hook/useAnimatedKeyboard.js.map +1 -1
- package/lib/commonjs/reanimated2/hook/useAnimatedReaction.js +13 -1
- package/lib/commonjs/reanimated2/hook/useAnimatedReaction.js.map +1 -1
- package/lib/commonjs/reanimated2/hook/useAnimatedRef.js +1 -1
- package/lib/commonjs/reanimated2/hook/useAnimatedRef.js.map +1 -1
- package/lib/commonjs/reanimated2/hook/useAnimatedSensor.js +89 -16
- package/lib/commonjs/reanimated2/hook/useAnimatedSensor.js.map +1 -1
- package/lib/commonjs/reanimated2/hook/useAnimatedStyle.js +43 -40
- package/lib/commonjs/reanimated2/hook/useAnimatedStyle.js.map +1 -1
- package/lib/commonjs/reanimated2/hook/useDerivedValue.js +13 -1
- package/lib/commonjs/reanimated2/hook/useDerivedValue.js.map +1 -1
- package/lib/commonjs/reanimated2/hook/useScrollViewOffset.js +2 -2
- package/lib/commonjs/reanimated2/hook/useScrollViewOffset.js.map +1 -1
- package/lib/commonjs/reanimated2/hook/utils.js +18 -65
- package/lib/commonjs/reanimated2/hook/utils.js.map +1 -1
- package/lib/commonjs/reanimated2/index.js +13 -0
- package/lib/commonjs/reanimated2/index.js.map +1 -1
- package/lib/commonjs/reanimated2/initializers.js +71 -32
- package/lib/commonjs/reanimated2/initializers.js.map +1 -1
- package/lib/commonjs/reanimated2/interpolateColor.js +96 -19
- package/lib/commonjs/reanimated2/interpolateColor.js.map +1 -1
- package/lib/commonjs/reanimated2/jestUtils.js +1 -1
- package/lib/commonjs/reanimated2/jestUtils.js.map +1 -1
- package/lib/commonjs/reanimated2/js-reanimated/JSReanimated.js +103 -13
- package/lib/commonjs/reanimated2/js-reanimated/JSReanimated.js.map +1 -1
- package/lib/commonjs/reanimated2/js-reanimated/Mapper.js +22 -0
- package/lib/commonjs/reanimated2/js-reanimated/Mapper.js.map +1 -1
- package/lib/commonjs/reanimated2/js-reanimated/WebSensor.js +2 -0
- package/lib/commonjs/reanimated2/js-reanimated/WebSensor.js.map +1 -0
- package/lib/commonjs/reanimated2/js-reanimated/commonTypes.js.map +1 -1
- package/lib/commonjs/reanimated2/js-reanimated/global.js +0 -2
- package/lib/commonjs/reanimated2/js-reanimated/global.js.map +1 -1
- package/lib/commonjs/reanimated2/js-reanimated/index.js +0 -1
- package/lib/commonjs/reanimated2/js-reanimated/index.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/commonTypes.js +11 -0
- package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/commonTypes.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/index.js +8 -0
- package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/index.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/animationsManager.js +17 -9
- package/lib/commonjs/reanimated2/layoutReanimation/animationsManager.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Bounce.js +16 -23
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Bounce.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js +8 -14
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Roll.js +8 -14
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Roll.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Slide.js +8 -15
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Slide.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Zoom.js +16 -23
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Zoom.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/index.js +13 -0
- package/lib/commonjs/reanimated2/layoutReanimation/index.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/sharedTransitions/index.js +94 -0
- package/lib/commonjs/reanimated2/layoutReanimation/sharedTransitions/index.js.map +1 -0
- package/lib/commonjs/reanimated2/mappers.js +18 -6
- package/lib/commonjs/reanimated2/mappers.js.map +1 -1
- package/lib/commonjs/reanimated2/mock.js +20 -1
- package/lib/commonjs/reanimated2/mock.js.map +1 -1
- package/lib/commonjs/reanimated2/mutables.js +4 -2
- package/lib/commonjs/reanimated2/mutables.js.map +1 -1
- package/lib/commonjs/reanimated2/platform-specific/checkVersion.js +42 -0
- package/lib/commonjs/reanimated2/platform-specific/checkVersion.js.map +1 -0
- package/lib/commonjs/reanimated2/platform-specific/checkVersion.web.js +15 -0
- package/lib/commonjs/reanimated2/platform-specific/checkVersion.web.js.map +1 -0
- package/lib/commonjs/reanimated2/pluginUtils.js +11 -0
- package/lib/commonjs/reanimated2/pluginUtils.js.map +1 -0
- package/lib/commonjs/reanimated2/shareables.js +36 -15
- package/lib/commonjs/reanimated2/shareables.js.map +1 -1
- package/lib/commonjs/reanimated2/threads.js +114 -4
- package/lib/commonjs/reanimated2/threads.js.map +1 -1
- package/lib/commonjs/reanimated2/utils.js +7 -0
- package/lib/commonjs/reanimated2/utils.js.map +1 -1
- package/lib/commonjs/reanimated2/valueSetter.js +1 -3
- package/lib/commonjs/reanimated2/valueSetter.js.map +1 -1
- package/lib/module/createAnimatedComponent.js +229 -29
- package/lib/module/createAnimatedComponent.js.map +1 -1
- package/lib/module/reanimated2/Colors.js +35 -19
- package/lib/module/reanimated2/Colors.js.map +1 -1
- package/lib/module/reanimated2/NativeReanimated/NativeReanimated.js +16 -32
- package/lib/module/reanimated2/NativeReanimated/NativeReanimated.js.map +1 -1
- package/lib/module/reanimated2/animation/styleAnimation.js +5 -1
- package/lib/module/reanimated2/animation/styleAnimation.js.map +1 -1
- package/lib/module/reanimated2/animation/util.js +17 -16
- package/lib/module/reanimated2/animation/util.js.map +1 -1
- package/lib/module/reanimated2/commonTypes.js +29 -0
- package/lib/module/reanimated2/commonTypes.js.map +1 -1
- package/lib/module/reanimated2/core.js +32 -7
- package/lib/module/reanimated2/core.js.map +1 -1
- package/lib/module/reanimated2/frameCallback/FrameCallbackRegistryUI.js +2 -2
- package/lib/module/reanimated2/frameCallback/FrameCallbackRegistryUI.js.map +1 -1
- package/lib/module/reanimated2/globals.d.js.map +1 -1
- package/lib/module/reanimated2/hook/index.js +1 -1
- package/lib/module/reanimated2/hook/index.js.map +1 -1
- package/lib/module/reanimated2/hook/useAnimatedKeyboard.js +5 -2
- package/lib/module/reanimated2/hook/useAnimatedKeyboard.js.map +1 -1
- package/lib/module/reanimated2/hook/useAnimatedReaction.js +12 -1
- package/lib/module/reanimated2/hook/useAnimatedReaction.js.map +1 -1
- package/lib/module/reanimated2/hook/useAnimatedRef.js +2 -2
- package/lib/module/reanimated2/hook/useAnimatedRef.js.map +1 -1
- package/lib/module/reanimated2/hook/useAnimatedSensor.js +88 -13
- package/lib/module/reanimated2/hook/useAnimatedSensor.js.map +1 -1
- package/lib/module/reanimated2/hook/useAnimatedStyle.js +46 -43
- package/lib/module/reanimated2/hook/useAnimatedStyle.js.map +1 -1
- package/lib/module/reanimated2/hook/useDerivedValue.js +12 -1
- package/lib/module/reanimated2/hook/useDerivedValue.js.map +1 -1
- package/lib/module/reanimated2/hook/useScrollViewOffset.js +2 -2
- package/lib/module/reanimated2/hook/useScrollViewOffset.js.map +1 -1
- package/lib/module/reanimated2/hook/utils.js +17 -60
- package/lib/module/reanimated2/hook/utils.js.map +1 -1
- package/lib/module/reanimated2/index.js +1 -0
- package/lib/module/reanimated2/index.js.map +1 -1
- package/lib/module/reanimated2/initializers.js +72 -33
- package/lib/module/reanimated2/initializers.js.map +1 -1
- package/lib/module/reanimated2/interpolateColor.js +96 -19
- package/lib/module/reanimated2/interpolateColor.js.map +1 -1
- package/lib/module/reanimated2/jestUtils.js +1 -1
- package/lib/module/reanimated2/jestUtils.js.map +1 -1
- package/lib/module/reanimated2/js-reanimated/JSReanimated.js +103 -13
- package/lib/module/reanimated2/js-reanimated/JSReanimated.js.map +1 -1
- package/lib/module/reanimated2/js-reanimated/Mapper.js +21 -0
- package/lib/module/reanimated2/js-reanimated/Mapper.js.map +1 -1
- package/lib/module/reanimated2/js-reanimated/WebSensor.js +2 -0
- package/lib/module/reanimated2/js-reanimated/WebSensor.js.map +1 -0
- package/lib/module/reanimated2/js-reanimated/commonTypes.js.map +1 -1
- package/lib/module/reanimated2/js-reanimated/global.js +0 -2
- package/lib/module/reanimated2/js-reanimated/global.js.map +1 -1
- package/lib/module/reanimated2/js-reanimated/index.js +0 -1
- package/lib/module/reanimated2/js-reanimated/index.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/animationBuilder/commonTypes.js +9 -1
- package/lib/module/reanimated2/layoutReanimation/animationBuilder/commonTypes.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/animationBuilder/index.js +1 -0
- package/lib/module/reanimated2/layoutReanimation/animationBuilder/index.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/animationsManager.js +15 -8
- package/lib/module/reanimated2/layoutReanimation/animationsManager.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Bounce.js +16 -21
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Bounce.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js +8 -12
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Roll.js +8 -12
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Roll.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Slide.js +8 -13
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Slide.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Zoom.js +16 -21
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Zoom.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/index.js +1 -0
- package/lib/module/reanimated2/layoutReanimation/index.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/sharedTransitions/index.js +82 -0
- package/lib/module/reanimated2/layoutReanimation/sharedTransitions/index.js.map +1 -0
- package/lib/module/reanimated2/mappers.js +16 -6
- package/lib/module/reanimated2/mappers.js.map +1 -1
- package/lib/module/reanimated2/mock.js +20 -1
- package/lib/module/reanimated2/mock.js.map +1 -1
- package/lib/module/reanimated2/mutables.js +4 -2
- package/lib/module/reanimated2/mutables.js.map +1 -1
- package/lib/module/reanimated2/platform-specific/checkVersion.js +35 -0
- package/lib/module/reanimated2/platform-specific/checkVersion.js.map +1 -0
- package/lib/module/reanimated2/platform-specific/checkVersion.web.js +8 -0
- package/lib/module/reanimated2/platform-specific/checkVersion.web.js.map +1 -0
- package/lib/module/reanimated2/pluginUtils.js +4 -0
- package/lib/module/reanimated2/pluginUtils.js.map +1 -0
- package/lib/module/reanimated2/shareables.js +36 -12
- package/lib/module/reanimated2/shareables.js.map +1 -1
- package/lib/module/reanimated2/threads.js +105 -4
- package/lib/module/reanimated2/threads.js.map +1 -1
- package/lib/module/reanimated2/utils.js +5 -0
- package/lib/module/reanimated2/utils.js.map +1 -1
- package/lib/module/reanimated2/valueSetter.js +1 -2
- package/lib/module/reanimated2/valueSetter.js.map +1 -1
- package/package.json +10 -10
- package/{plugin.js → plugin/index.js} +128 -249
- package/react-native-reanimated.d.ts +57 -10
- package/scripts/reanimated_utils.rb +15 -2
- package/src/createAnimatedComponent.tsx +238 -28
- package/src/reanimated2/Colors.ts +38 -11
- package/src/reanimated2/NativeReanimated/NativeReanimated.ts +52 -39
- package/src/reanimated2/animation/styleAnimation.ts +8 -1
- package/src/reanimated2/animation/util.ts +29 -16
- package/src/reanimated2/commonTypes.ts +28 -1
- package/src/reanimated2/core.ts +42 -9
- package/src/reanimated2/frameCallback/FrameCallbackRegistryUI.ts +2 -2
- package/src/reanimated2/globals.d.ts +12 -15
- package/src/reanimated2/hook/index.ts +1 -1
- package/src/reanimated2/hook/useAnimatedKeyboard.ts +10 -4
- package/src/reanimated2/hook/useAnimatedReaction.ts +12 -5
- package/src/reanimated2/hook/useAnimatedRef.ts +1 -4
- package/src/reanimated2/hook/useAnimatedSensor.ts +88 -11
- package/src/reanimated2/hook/useAnimatedStyle.ts +44 -36
- package/src/reanimated2/hook/useDerivedValue.ts +8 -1
- package/src/reanimated2/hook/useScrollViewOffset.ts +2 -2
- package/src/reanimated2/hook/utils.ts +15 -61
- package/src/reanimated2/index.ts +1 -0
- package/src/reanimated2/initializers.ts +76 -35
- package/src/reanimated2/interpolateColor.ts +104 -20
- package/src/reanimated2/jestUtils.ts +1 -1
- package/src/reanimated2/js-reanimated/JSReanimated.ts +98 -15
- package/src/reanimated2/js-reanimated/Mapper.ts +32 -0
- package/src/reanimated2/js-reanimated/WebSensor.ts +34 -0
- package/src/reanimated2/js-reanimated/commonTypes.ts +0 -1
- package/src/reanimated2/js-reanimated/global.ts +0 -1
- package/src/reanimated2/js-reanimated/index.ts +0 -1
- package/src/reanimated2/layoutReanimation/animationBuilder/commonTypes.ts +13 -1
- package/src/reanimated2/layoutReanimation/animationBuilder/index.ts +1 -0
- package/src/reanimated2/layoutReanimation/animationsManager.ts +17 -9
- package/src/reanimated2/layoutReanimation/defaultAnimations/Bounce.ts +16 -19
- package/src/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.ts +14 -11
- package/src/reanimated2/layoutReanimation/defaultAnimations/Roll.ts +21 -11
- package/src/reanimated2/layoutReanimation/defaultAnimations/Slide.ts +32 -11
- package/src/reanimated2/layoutReanimation/defaultAnimations/Zoom.ts +36 -19
- package/src/reanimated2/layoutReanimation/index.ts +1 -0
- package/src/reanimated2/layoutReanimation/sharedTransitions/index.ts +87 -0
- package/src/reanimated2/mappers.ts +17 -6
- package/src/reanimated2/mock.ts +24 -1
- package/src/reanimated2/mutables.ts +2 -0
- package/src/reanimated2/platform-specific/checkVersion.ts +39 -0
- package/src/reanimated2/platform-specific/checkVersion.web.ts +6 -0
- package/src/reanimated2/pluginUtils.ts +8 -0
- package/src/reanimated2/shareables.ts +45 -16
- package/src/reanimated2/threads.ts +103 -1
- package/src/reanimated2/utils.ts +6 -0
- package/src/reanimated2/valueSetter.ts +1 -2
- package/lib/commonjs/reanimated2/time.js +0 -55
- package/lib/commonjs/reanimated2/time.js.map +0 -1
- package/lib/module/reanimated2/time.js +0 -37
- package/lib/module/reanimated2/time.js.map +0 -1
- package/src/reanimated2/time.ts +0 -30
- /package/android/src/{main/java → reactNativeVersionPatch/ReanimatedUIManager/70}/com/swmansion/reanimated/layoutReanimation/ReanimatedUIManager.java +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["runOnUI","worklet","__DEV__","__workletHash","undefined","Error","args","NativeReanimatedModule","scheduleOnUI","makeShareableCloneRecursive","runOnJS","fun","__remoteFunction","_WORKLET","_scheduleOnJS","
|
|
1
|
+
{"version":3,"names":["IS_JEST","isJest","_runOnUIQueue","setupSetImmediate","immediateCalbacks","global","setImmediate","callback","push","__flushImmediates","index","length","flushImmediatesOnUIThread","flushImmediates","shouldBeUseWeb","runOnUI","worklet","__DEV__","__workletHash","undefined","Error","args","NativeReanimatedModule","scheduleOnUI","makeShareableCloneRecursive","queue","forEach","runOnUIImmediately","e","runOnJS","fun","__remoteFunction","_WORKLET","_scheduleOnJS","makeShareableCloneOnUIRecursive"],"sources":["threads.ts"],"sourcesContent":["import NativeReanimatedModule from './NativeReanimated';\nimport { isJest, shouldBeUseWeb } from './PlatformChecker';\nimport { ComplexWorkletFunction } from './commonTypes';\nimport {\n makeShareableCloneOnUIRecursive,\n makeShareableCloneRecursive,\n} from './shareables';\n\nconst IS_JEST = isJest();\n\nlet _runOnUIQueue: Array<[ComplexWorkletFunction<any[], any>, any[]]> = [];\n\nexport function setupSetImmediate() {\n 'worklet';\n\n let immediateCalbacks: Array<() => void> = [];\n\n // @ts-ignore – typescript expects this to conform to NodeJS definition and expects the return value to be NodeJS.Immediate which is an object and not a number\n global.setImmediate = (callback: () => void): number => {\n immediateCalbacks.push(callback);\n return -1;\n };\n\n global.__flushImmediates = () => {\n for (let index = 0; index < immediateCalbacks.length; index += 1) {\n // we use classic 'for' loop because the size of the currentTasks array may change while executing some of the callbacks due to setImmediate calls\n immediateCalbacks[index]();\n }\n immediateCalbacks = [];\n };\n}\n\nfunction flushImmediatesOnUIThread() {\n 'worklet';\n global.__flushImmediates();\n}\n\nexport const flushImmediates = shouldBeUseWeb()\n ? () => {\n // on web flushing is a noop as immediates are handled by the browser\n }\n : flushImmediatesOnUIThread;\n\n/**\n * Schedule a worklet to execute on the UI runtime. This method does not schedule the work immediately but instead\n * waits for other worklets to be scheduled within the same JS loop. It uses setImmediate to schedule all the worklets\n * at once making sure they will run within the same frame boundaries on the UI thread.\n */\nexport function runOnUI<A extends any[], R>(\n worklet: ComplexWorkletFunction<A, R>\n): (...args: A) => void {\n if (__DEV__ && !shouldBeUseWeb()) {\n if (worklet.__workletHash === undefined) {\n throw new Error('runOnUI() can only be used on worklets');\n }\n }\n return (...args) => {\n if (IS_JEST) {\n // Mocking time in Jest is tricky as both requestAnimationFrame and setImmediate\n // callbacks run on the same queue and can be interleaved. There is no way\n // to flush particular queue in Jest and the only control over mocked timers\n // is by using jest.advanceTimersByTime() method which advances all types\n // of timers including immediate and animation callbacks. Ideally we'd like\n // to have some way here to schedule work along with React updates, but\n // that's not possible, and hence in Jest environment instead of using scheduling\n // mechanism we just schedule the work ommiting the queue. This is ok for the\n // uses that we currently have but may not be ok for future tests that we write.\n NativeReanimatedModule.scheduleOnUI(\n makeShareableCloneRecursive(() => {\n 'worklet';\n worklet(...args);\n })\n );\n return;\n }\n _runOnUIQueue.push([worklet, args]);\n if (_runOnUIQueue.length === 1) {\n setImmediate(() => {\n const queue = _runOnUIQueue;\n _runOnUIQueue = [];\n NativeReanimatedModule.scheduleOnUI(\n makeShareableCloneRecursive(() => {\n 'worklet';\n queue.forEach(([worklet, args]) => {\n worklet(...args);\n });\n flushImmediates();\n })\n );\n });\n }\n };\n}\n\n/**\n * Schedule a worklet to execute on the UI runtime skipping batching mechanism.\n */\nexport function runOnUIImmediately<A extends any[], R>(\n worklet: ComplexWorkletFunction<A, R>\n): (...args: A) => void {\n if (__DEV__) {\n if (worklet.__workletHash === undefined) {\n throw new Error('runOnUI() can only be used on worklets');\n }\n }\n return (...args) => {\n NativeReanimatedModule.scheduleOnUI(\n makeShareableCloneRecursive(() => {\n 'worklet';\n worklet(...args);\n })\n );\n };\n}\n\nif (__DEV__) {\n try {\n runOnUI(() => {\n 'worklet';\n });\n } catch (e) {\n throw new Error(\n 'Failed to create a worklet. Did you forget to add Reanimated Babel plugin in babel.config.js? See installation docs at https://docs.swmansion.com/react-native-reanimated/docs/fundamentals/installation#babel-plugin.'\n );\n }\n}\n\nexport function runOnJS<A extends any[], R>(\n fun: ComplexWorkletFunction<A, R>\n): (...args: A) => void {\n 'worklet';\n if (fun.__remoteFunction) {\n // in development mode the function provided as `fun` throws an error message\n // such that when someone accidently calls it directly on the UI runtime, they\n // see that they should use `runOnJS` instead. To facilitate that we purt the\n // reference to the original remote function in the `__remoteFunction` property.\n fun = fun.__remoteFunction;\n }\n if (!_WORKLET) {\n return fun;\n }\n return (...args) => {\n _scheduleOnJS(\n fun,\n args.length > 0 ? makeShareableCloneOnUIRecursive(args) : undefined\n );\n };\n}\n"],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.getRelativeCoords = getRelativeCoords;
|
|
7
|
+
exports.isSharedValue = isSharedValue;
|
|
7
8
|
|
|
8
9
|
var _NativeMethods = require("./NativeMethods");
|
|
9
10
|
|
|
@@ -25,4 +26,10 @@ function getRelativeCoords(parentRef, absoluteX, absoluteY) {
|
|
|
25
26
|
y: absoluteY - parentCoords.y
|
|
26
27
|
};
|
|
27
28
|
}
|
|
29
|
+
|
|
30
|
+
function isSharedValue(value) {
|
|
31
|
+
'worklet';
|
|
32
|
+
|
|
33
|
+
return typeof value === 'object' && value._isReanimatedSharedValue === true;
|
|
34
|
+
}
|
|
28
35
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getRelativeCoords","parentRef","absoluteX","absoluteY","parentCoords","measure","x","y"],"sources":["utils.ts"],"sourcesContent":["import { Component } from 'react';\nimport { measure } from './NativeMethods';\nimport { RefObjectFunction } from './hook/commonTypes';\n\nexport interface ComponentCoords {\n x: number;\n y: number;\n}\n\n/**\n * Given an absolute position and a component ref, returns the relative\n * position in the component's local coordinate space.\n */\nexport function getRelativeCoords(\n parentRef: RefObjectFunction<Component>,\n absoluteX: number,\n absoluteY: number\n): ComponentCoords | null {\n 'worklet';\n const parentCoords = measure(parentRef);\n if (parentCoords === null) {\n return null;\n }\n return {\n x: absoluteX - parentCoords.x,\n y: absoluteY - parentCoords.y,\n };\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":["getRelativeCoords","parentRef","absoluteX","absoluteY","parentCoords","measure","x","y","isSharedValue","value","_isReanimatedSharedValue"],"sources":["utils.ts"],"sourcesContent":["import { Component } from 'react';\nimport { measure } from './NativeMethods';\nimport { RefObjectFunction } from './hook/commonTypes';\nimport { SharedValue } from './commonTypes';\n\nexport interface ComponentCoords {\n x: number;\n y: number;\n}\n\n/**\n * Given an absolute position and a component ref, returns the relative\n * position in the component's local coordinate space.\n */\nexport function getRelativeCoords(\n parentRef: RefObjectFunction<Component>,\n absoluteX: number,\n absoluteY: number\n): ComponentCoords | null {\n 'worklet';\n const parentCoords = measure(parentRef);\n if (parentCoords === null) {\n return null;\n }\n return {\n x: absoluteX - parentCoords.x,\n y: absoluteY - parentCoords.y,\n };\n}\n\nexport function isSharedValue<T>(value: any): value is SharedValue<T> {\n 'worklet';\n return typeof value === 'object' && value._isReanimatedSharedValue === true;\n}\n"],"mappings":";;;;;;;;AACA;;AASA;AACA;AACA;AACA;AACO,SAASA,iBAAT,CACLC,SADK,EAELC,SAFK,EAGLC,SAHK,EAImB;EACxB;;EACA,MAAMC,YAAY,GAAG,IAAAC,sBAAA,EAAQJ,SAAR,CAArB;;EACA,IAAIG,YAAY,KAAK,IAArB,EAA2B;IACzB,OAAO,IAAP;EACD;;EACD,OAAO;IACLE,CAAC,EAAEJ,SAAS,GAAGE,YAAY,CAACE,CADvB;IAELC,CAAC,EAAEJ,SAAS,GAAGC,YAAY,CAACG;EAFvB,CAAP;AAID;;AAEM,SAASC,aAAT,CAA0BC,KAA1B,EAA+D;EACpE;;EACA,OAAO,OAAOA,KAAP,KAAiB,QAAjB,IAA6BA,KAAK,CAACC,wBAAN,KAAmC,IAAvE;AACD"}
|
|
@@ -11,8 +11,6 @@ Object.defineProperty(exports, "stopMapper", {
|
|
|
11
11
|
});
|
|
12
12
|
exports.valueSetter = valueSetter;
|
|
13
13
|
|
|
14
|
-
var _time = require("./time");
|
|
15
|
-
|
|
16
14
|
var _mappers = require("./mappers");
|
|
17
15
|
|
|
18
16
|
function valueSetter(sv, value) {
|
|
@@ -41,7 +39,7 @@ function valueSetter(sv, value) {
|
|
|
41
39
|
animation.onStart(animation, sv.value, timestamp, previousAnimation);
|
|
42
40
|
};
|
|
43
41
|
|
|
44
|
-
const currentTimestamp =
|
|
42
|
+
const currentTimestamp = global.__frameTimestamp || performance.now();
|
|
45
43
|
initializeAnimation(currentTimestamp);
|
|
46
44
|
|
|
47
45
|
const step = timestamp => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["valueSetter","sv","value","previousAnimation","_animation","cancelled","onFrame","undefined","animation","_value","current","isHigherOrder","callback","initializeAnimation","timestamp","onStart","currentTimestamp","
|
|
1
|
+
{"version":3,"names":["valueSetter","sv","value","previousAnimation","_animation","cancelled","onFrame","undefined","animation","_value","current","isHigherOrder","callback","initializeAnimation","timestamp","onStart","currentTimestamp","global","__frameTimestamp","performance","now","step","finished","requestAnimationFrame"],"sources":["valueSetter.ts"],"sourcesContent":["import { AnimationObject, AnimatableValue } from './commonTypes';\nimport { Descriptor } from './hook/commonTypes';\nexport { stopMapper } from './mappers';\n\nexport function valueSetter(sv: any, value: any): void {\n 'worklet';\n const previousAnimation = sv._animation;\n if (previousAnimation) {\n previousAnimation.cancelled = true;\n sv._animation = null;\n }\n if (\n typeof value === 'function' ||\n (value !== null &&\n typeof value === 'object' &&\n (value as AnimationObject).onFrame !== undefined)\n ) {\n const animation: AnimationObject =\n typeof value === 'function'\n ? (value as () => AnimationObject)()\n : (value as AnimationObject);\n // prevent setting again to the same value\n // and triggering the mappers that treat this value as an input\n // this happens when the animation's target value(stored in animation.current until animation.onStart is called) is set to the same value as a current one(this._value)\n // built in animations that are not higher order(withTiming, withSpring) hold target value in .current\n if (sv._value === animation.current && !animation.isHigherOrder) {\n animation.callback && animation.callback(true);\n return;\n }\n // animated set\n const initializeAnimation = (timestamp: number) => {\n animation.onStart(animation, sv.value, timestamp, previousAnimation);\n };\n const currentTimestamp = global.__frameTimestamp || performance.now();\n initializeAnimation(currentTimestamp);\n const step = (timestamp: number) => {\n if (animation.cancelled) {\n animation.callback && animation.callback(false /* finished */);\n return;\n }\n const finished = animation.onFrame(animation, timestamp);\n animation.finished = true;\n animation.timestamp = timestamp;\n sv._value = animation.current;\n if (finished) {\n animation.callback && animation.callback(true /* finished */);\n } else {\n requestAnimationFrame(step);\n }\n };\n\n sv._animation = animation;\n\n step(currentTimestamp);\n } else {\n // prevent setting again to the same value\n // and triggering the mappers that treat this value as an input\n if (sv._value === value) {\n return;\n }\n sv._value = value as Descriptor | AnimatableValue;\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAEA;;AAEO,SAASA,WAAT,CAAqBC,EAArB,EAA8BC,KAA9B,EAAgD;EACrD;;EACA,MAAMC,iBAAiB,GAAGF,EAAE,CAACG,UAA7B;;EACA,IAAID,iBAAJ,EAAuB;IACrBA,iBAAiB,CAACE,SAAlB,GAA8B,IAA9B;IACAJ,EAAE,CAACG,UAAH,GAAgB,IAAhB;EACD;;EACD,IACE,OAAOF,KAAP,KAAiB,UAAjB,IACCA,KAAK,KAAK,IAAV,IACC,OAAOA,KAAP,KAAiB,QADlB,IAEEA,KAAD,CAA2BI,OAA3B,KAAuCC,SAJ3C,EAKE;IACA,MAAMC,SAA0B,GAC9B,OAAON,KAAP,KAAiB,UAAjB,GACKA,KAAD,EADJ,GAEKA,KAHP,CADA,CAKA;IACA;IACA;IACA;;IACA,IAAID,EAAE,CAACQ,MAAH,KAAcD,SAAS,CAACE,OAAxB,IAAmC,CAACF,SAAS,CAACG,aAAlD,EAAiE;MAC/DH,SAAS,CAACI,QAAV,IAAsBJ,SAAS,CAACI,QAAV,CAAmB,IAAnB,CAAtB;MACA;IACD,CAZD,CAaA;;;IACA,MAAMC,mBAAmB,GAAIC,SAAD,IAAuB;MACjDN,SAAS,CAACO,OAAV,CAAkBP,SAAlB,EAA6BP,EAAE,CAACC,KAAhC,EAAuCY,SAAvC,EAAkDX,iBAAlD;IACD,CAFD;;IAGA,MAAMa,gBAAgB,GAAGC,MAAM,CAACC,gBAAP,IAA2BC,WAAW,CAACC,GAAZ,EAApD;IACAP,mBAAmB,CAACG,gBAAD,CAAnB;;IACA,MAAMK,IAAI,GAAIP,SAAD,IAAuB;MAClC,IAAIN,SAAS,CAACH,SAAd,EAAyB;QACvBG,SAAS,CAACI,QAAV,IAAsBJ,SAAS,CAACI,QAAV,CAAmB;QAAM;QAAzB,CAAtB;QACA;MACD;;MACD,MAAMU,QAAQ,GAAGd,SAAS,CAACF,OAAV,CAAkBE,SAAlB,EAA6BM,SAA7B,CAAjB;MACAN,SAAS,CAACc,QAAV,GAAqB,IAArB;MACAd,SAAS,CAACM,SAAV,GAAsBA,SAAtB;MACAb,EAAE,CAACQ,MAAH,GAAYD,SAAS,CAACE,OAAtB;;MACA,IAAIY,QAAJ,EAAc;QACZd,SAAS,CAACI,QAAV,IAAsBJ,SAAS,CAACI,QAAV,CAAmB;QAAK;QAAxB,CAAtB;MACD,CAFD,MAEO;QACLW,qBAAqB,CAACF,IAAD,CAArB;MACD;IACF,CAdD;;IAgBApB,EAAE,CAACG,UAAH,GAAgBI,SAAhB;IAEAa,IAAI,CAACL,gBAAD,CAAJ;EACD,CA3CD,MA2CO;IACL;IACA;IACA,IAAIf,EAAE,CAACQ,MAAH,KAAcP,KAAlB,EAAyB;MACvB;IACD;;IACDD,EAAE,CAACQ,MAAH,GAAYP,KAAZ;EACD;AACF"}
|
|
@@ -10,11 +10,15 @@ import './reanimated2/layoutReanimation/animationsManager';
|
|
|
10
10
|
import invariant from 'invariant';
|
|
11
11
|
import { adaptViewConfig } from './ConfigHelper';
|
|
12
12
|
import { RNRenderer } from './reanimated2/platform-specific/RNRenderer';
|
|
13
|
-
import { configureLayoutAnimations, enableLayoutAnimations, runOnUI } from './reanimated2/core';
|
|
13
|
+
import { configureLayoutAnimations, enableLayoutAnimations, runOnUI, startMapper, stopMapper } from './reanimated2/core';
|
|
14
14
|
import { isJest, isChromeDebugger, shouldBeUseWeb } from './reanimated2/PlatformChecker';
|
|
15
15
|
import { initialUpdaterRun } from './reanimated2/animation';
|
|
16
|
+
import { DefaultSharedTransition, LayoutAnimationType } from './reanimated2/layoutReanimation';
|
|
17
|
+
import { makeViewDescriptorsSet } from './reanimated2/ViewDescriptorsSet';
|
|
16
18
|
import { getShadowNodeWrapperFromRef } from './reanimated2/fabricUtils';
|
|
17
|
-
import
|
|
19
|
+
import updateProps from './reanimated2/UpdateProps';
|
|
20
|
+
import NativeReanimatedModule from './reanimated2/NativeReanimated';
|
|
21
|
+
import { isSharedValue } from './reanimated2';
|
|
18
22
|
|
|
19
23
|
function dummyListener() {// empty listener we use to assign to listener properties for which animated
|
|
20
24
|
// event is used.
|
|
@@ -76,6 +80,74 @@ const has = (key, x) => {
|
|
|
76
80
|
return false;
|
|
77
81
|
};
|
|
78
82
|
|
|
83
|
+
function isInlineStyleTransform(transform) {
|
|
84
|
+
return transform.some(t => hasInlineStyles(t));
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
function hasInlineStyles(style) {
|
|
88
|
+
return Object.keys(style).some(key => {
|
|
89
|
+
const styleValue = style[key];
|
|
90
|
+
return isSharedValue(styleValue) || key === 'transform' && isInlineStyleTransform(styleValue);
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
function extractSharedValuesMapFromProps(props) {
|
|
95
|
+
const inlineProps = {};
|
|
96
|
+
|
|
97
|
+
for (const key in props) {
|
|
98
|
+
const value = props[key];
|
|
99
|
+
|
|
100
|
+
if (key === 'style') {
|
|
101
|
+
const styles = flattenArray(props.style ?? []);
|
|
102
|
+
styles.forEach(style => {
|
|
103
|
+
for (const [key, styleValue] of Object.entries(style)) {
|
|
104
|
+
if (isSharedValue(styleValue)) {
|
|
105
|
+
inlineProps[key] = styleValue;
|
|
106
|
+
} else if (key === 'transform' && isInlineStyleTransform(styleValue)) {
|
|
107
|
+
inlineProps[key] = styleValue;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
} else if (isSharedValue(value)) {
|
|
112
|
+
inlineProps[key] = value;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
return inlineProps;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
function inlinePropsHasChanged(styles1, styles2) {
|
|
120
|
+
if (Object.keys(styles1).length !== Object.keys(styles2).length) {
|
|
121
|
+
return true;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
for (const key of Object.keys(styles1)) {
|
|
125
|
+
if (styles1[key] !== styles2[key]) return true;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
function getInlinePropsUpdate(inlineProps) {
|
|
132
|
+
'worklet';
|
|
133
|
+
|
|
134
|
+
const update = {};
|
|
135
|
+
|
|
136
|
+
for (const [key, styleValue] of Object.entries(inlineProps)) {
|
|
137
|
+
if (key === 'transform') {
|
|
138
|
+
update[key] = styleValue.map(transform => {
|
|
139
|
+
return getInlinePropsUpdate(transform);
|
|
140
|
+
});
|
|
141
|
+
} else if (isSharedValue(styleValue)) {
|
|
142
|
+
update[key] = styleValue.value;
|
|
143
|
+
} else {
|
|
144
|
+
update[key] = styleValue;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
return update;
|
|
149
|
+
}
|
|
150
|
+
|
|
79
151
|
export default function createAnimatedComponent(Component, options) {
|
|
80
152
|
invariant(typeof Component !== 'function' || Component.prototype && Component.prototype.isReactComponent, '`createAnimatedComponent` does not support stateless functional components; ' + 'use a class component instead.');
|
|
81
153
|
|
|
@@ -99,6 +171,12 @@ export default function createAnimatedComponent(Component, options) {
|
|
|
99
171
|
|
|
100
172
|
_defineProperty(this, "_component", null);
|
|
101
173
|
|
|
174
|
+
_defineProperty(this, "_inlinePropsViewDescriptors", null);
|
|
175
|
+
|
|
176
|
+
_defineProperty(this, "_inlinePropsMapperId", null);
|
|
177
|
+
|
|
178
|
+
_defineProperty(this, "_inlineProps", {});
|
|
179
|
+
|
|
102
180
|
_defineProperty(this, "_setComponentRef", setAndForwardRef({
|
|
103
181
|
getForwardedRef: () => this.props.forwardedRef,
|
|
104
182
|
setLocalRef: ref => {
|
|
@@ -107,24 +185,30 @@ export default function createAnimatedComponent(Component, options) {
|
|
|
107
185
|
const {
|
|
108
186
|
layout,
|
|
109
187
|
entering,
|
|
110
|
-
exiting
|
|
188
|
+
exiting,
|
|
189
|
+
sharedTransitionTag
|
|
111
190
|
} = this.props;
|
|
112
191
|
|
|
113
|
-
if ((layout || entering || exiting) && tag != null) {
|
|
192
|
+
if ((layout || entering || exiting || sharedTransitionTag) && tag != null) {
|
|
114
193
|
if (!shouldBeUseWeb()) {
|
|
115
194
|
enableLayoutAnimations(true, false);
|
|
116
195
|
}
|
|
117
196
|
|
|
118
197
|
if (layout) {
|
|
119
|
-
configureLayoutAnimations(tag,
|
|
198
|
+
configureLayoutAnimations(tag, LayoutAnimationType.LAYOUT, maybeBuild(layout));
|
|
120
199
|
}
|
|
121
200
|
|
|
122
201
|
if (entering) {
|
|
123
|
-
configureLayoutAnimations(tag,
|
|
202
|
+
configureLayoutAnimations(tag, LayoutAnimationType.ENTERING, maybeBuild(entering));
|
|
124
203
|
}
|
|
125
204
|
|
|
126
205
|
if (exiting) {
|
|
127
|
-
configureLayoutAnimations(tag,
|
|
206
|
+
configureLayoutAnimations(tag, LayoutAnimationType.EXITING, maybeBuild(exiting));
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
if (sharedTransitionTag) {
|
|
210
|
+
const sharedElementTransition = this.props.sharedTransitionStyle ?? DefaultSharedTransition;
|
|
211
|
+
configureLayoutAnimations(tag, LayoutAnimationType.SHARED_ELEMENT_TRANSITION, maybeBuild(sharedElementTransition), sharedTransitionTag);
|
|
128
212
|
}
|
|
129
213
|
}
|
|
130
214
|
|
|
@@ -145,16 +229,30 @@ export default function createAnimatedComponent(Component, options) {
|
|
|
145
229
|
this._detachNativeEvents();
|
|
146
230
|
|
|
147
231
|
this._detachStyles();
|
|
232
|
+
|
|
233
|
+
this._detachInlineProps();
|
|
148
234
|
}
|
|
149
235
|
|
|
150
236
|
componentDidMount() {
|
|
151
237
|
this._attachNativeEvents();
|
|
152
238
|
|
|
153
239
|
this._attachAnimatedStyles();
|
|
240
|
+
|
|
241
|
+
this._attachInlineProps();
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
_getEventViewRef() {
|
|
245
|
+
var _this$_component;
|
|
246
|
+
|
|
247
|
+
// Make sure to get the scrollable node for components that implement
|
|
248
|
+
// `ScrollResponder.Mixin`.
|
|
249
|
+
return (_this$_component = this._component) !== null && _this$_component !== void 0 && _this$_component.getScrollableNode ? this._component.getScrollableNode() : this._component;
|
|
154
250
|
}
|
|
155
251
|
|
|
156
252
|
_attachNativeEvents() {
|
|
157
|
-
const
|
|
253
|
+
const node = this._getEventViewRef();
|
|
254
|
+
|
|
255
|
+
const viewTag = findNodeHandle(options !== null && options !== void 0 && options.setNativeProps ? this : node);
|
|
158
256
|
|
|
159
257
|
for (const key in this.props) {
|
|
160
258
|
const prop = this.props[key];
|
|
@@ -194,11 +292,11 @@ export default function createAnimatedComponent(Component, options) {
|
|
|
194
292
|
}
|
|
195
293
|
|
|
196
294
|
if (global._IS_FABRIC) {
|
|
197
|
-
const
|
|
295
|
+
const viewTag = this._viewTag;
|
|
198
296
|
runOnUI(() => {
|
|
199
297
|
'worklet';
|
|
200
298
|
|
|
201
|
-
_removeShadowNodeFromRegistry(
|
|
299
|
+
_removeShadowNodeFromRegistry(viewTag);
|
|
202
300
|
})();
|
|
203
301
|
}
|
|
204
302
|
}
|
|
@@ -241,31 +339,26 @@ export default function createAnimatedComponent(Component, options) {
|
|
|
241
339
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
242
340
|
options.setNativeProps(this._component, props);
|
|
243
341
|
} else {
|
|
244
|
-
var _this$
|
|
342
|
+
var _this$_component2, _this$_component2$set;
|
|
245
343
|
|
|
246
344
|
// eslint-disable-next-line no-unused-expressions
|
|
247
|
-
(_this$
|
|
345
|
+
(_this$_component2 = this._component) === null || _this$_component2 === void 0 ? void 0 : (_this$_component2$set = _this$_component2.setNativeProps) === null || _this$_component2$set === void 0 ? void 0 : _this$_component2$set.call(_this$_component2, props);
|
|
248
346
|
}
|
|
249
347
|
}
|
|
250
348
|
|
|
251
|
-
|
|
252
|
-
var _this$props$animatedP3;
|
|
253
|
-
|
|
254
|
-
const styles = this.props.style ? onlyAnimatedStyles(flattenArray(this.props.style)) : [];
|
|
255
|
-
const prevStyles = this._styles;
|
|
256
|
-
this._styles = styles;
|
|
257
|
-
const prevAnimatedProps = this._animatedProps;
|
|
258
|
-
this._animatedProps = this.props.animatedProps;
|
|
349
|
+
_getViewInfo() {
|
|
259
350
|
let viewTag;
|
|
260
351
|
let viewName;
|
|
261
352
|
let shadowNodeWrapper = null;
|
|
353
|
+
let viewConfig;
|
|
262
354
|
|
|
263
355
|
if (Platform.OS === 'web') {
|
|
264
356
|
viewTag = findNodeHandle(this);
|
|
265
357
|
viewName = null;
|
|
266
358
|
shadowNodeWrapper = null;
|
|
359
|
+
viewConfig = null;
|
|
267
360
|
} else {
|
|
268
|
-
var _hostInstance$viewCon
|
|
361
|
+
var _hostInstance$viewCon;
|
|
269
362
|
|
|
270
363
|
// 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
|
|
271
364
|
const hostInstance = RNRenderer.findHostInstance_DEPRECATED(this);
|
|
@@ -281,19 +374,45 @@ export default function createAnimatedComponent(Component, options) {
|
|
|
281
374
|
* The name we're looking for is in the field named uiViewClassName.
|
|
282
375
|
*/
|
|
283
376
|
|
|
284
|
-
viewName = hostInstance === null || hostInstance === void 0 ? void 0 : (_hostInstance$viewCon = hostInstance.viewConfig) === null || _hostInstance$viewCon === void 0 ? void 0 : _hostInstance$viewCon.uiViewClassName;
|
|
285
|
-
|
|
286
|
-
const hasReanimated2Props = ((_this$props$animatedP2 = this.props.animatedProps) === null || _this$props$animatedP2 === void 0 ? void 0 : _this$props$animatedP2.viewDescriptors) || styles.length;
|
|
287
|
-
|
|
288
|
-
if (hasReanimated2Props && hostInstance !== null && hostInstance !== void 0 && hostInstance.viewConfig) {
|
|
289
|
-
adaptViewConfig(hostInstance.viewConfig);
|
|
290
|
-
}
|
|
377
|
+
viewName = hostInstance === null || hostInstance === void 0 ? void 0 : (_hostInstance$viewCon = hostInstance.viewConfig) === null || _hostInstance$viewCon === void 0 ? void 0 : _hostInstance$viewCon.uiViewClassName;
|
|
378
|
+
viewConfig = hostInstance === null || hostInstance === void 0 ? void 0 : hostInstance.viewConfig;
|
|
291
379
|
|
|
292
380
|
if (global._IS_FABRIC) {
|
|
293
|
-
shadowNodeWrapper =
|
|
381
|
+
shadowNodeWrapper = getShadowNodeWrapperFromRef(this);
|
|
294
382
|
}
|
|
295
383
|
}
|
|
296
384
|
|
|
385
|
+
return {
|
|
386
|
+
viewTag,
|
|
387
|
+
viewName,
|
|
388
|
+
shadowNodeWrapper,
|
|
389
|
+
viewConfig
|
|
390
|
+
};
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
_attachAnimatedStyles() {
|
|
394
|
+
var _this$props$animatedP2, _this$props$animatedP3;
|
|
395
|
+
|
|
396
|
+
const styles = this.props.style ? onlyAnimatedStyles(flattenArray(this.props.style)) : [];
|
|
397
|
+
const prevStyles = this._styles;
|
|
398
|
+
this._styles = styles;
|
|
399
|
+
const prevAnimatedProps = this._animatedProps;
|
|
400
|
+
this._animatedProps = this.props.animatedProps;
|
|
401
|
+
|
|
402
|
+
const {
|
|
403
|
+
viewTag,
|
|
404
|
+
viewName,
|
|
405
|
+
shadowNodeWrapper,
|
|
406
|
+
viewConfig
|
|
407
|
+
} = this._getViewInfo(); // update UI props whitelist for this view
|
|
408
|
+
|
|
409
|
+
|
|
410
|
+
const hasReanimated2Props = ((_this$props$animatedP2 = this.props.animatedProps) === null || _this$props$animatedP2 === void 0 ? void 0 : _this$props$animatedP2.viewDescriptors) || styles.length;
|
|
411
|
+
|
|
412
|
+
if (hasReanimated2Props && viewConfig) {
|
|
413
|
+
adaptViewConfig(viewConfig);
|
|
414
|
+
}
|
|
415
|
+
|
|
297
416
|
this._viewTag = viewTag; // remove old styles
|
|
298
417
|
|
|
299
418
|
if (prevStyles) {
|
|
@@ -350,10 +469,73 @@ export default function createAnimatedComponent(Component, options) {
|
|
|
350
469
|
}
|
|
351
470
|
}
|
|
352
471
|
|
|
472
|
+
_attachInlineProps() {
|
|
473
|
+
const newInlineProps = extractSharedValuesMapFromProps(this.props);
|
|
474
|
+
const hasChanged = inlinePropsHasChanged(newInlineProps, this._inlineProps);
|
|
475
|
+
|
|
476
|
+
if (hasChanged) {
|
|
477
|
+
if (!this._inlinePropsViewDescriptors) {
|
|
478
|
+
this._inlinePropsViewDescriptors = makeViewDescriptorsSet();
|
|
479
|
+
|
|
480
|
+
const {
|
|
481
|
+
viewTag,
|
|
482
|
+
viewName,
|
|
483
|
+
shadowNodeWrapper,
|
|
484
|
+
viewConfig
|
|
485
|
+
} = this._getViewInfo();
|
|
486
|
+
|
|
487
|
+
if (Object.keys(newInlineProps).length && viewConfig) {
|
|
488
|
+
adaptViewConfig(viewConfig);
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
this._inlinePropsViewDescriptors.add({
|
|
492
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
493
|
+
tag: viewTag,
|
|
494
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
495
|
+
name: viewName,
|
|
496
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
497
|
+
shadowNodeWrapper: shadowNodeWrapper
|
|
498
|
+
});
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
const sharableViewDescriptors = this._inlinePropsViewDescriptors.sharableViewDescriptors;
|
|
502
|
+
const maybeViewRef = NativeReanimatedModule.native ? undefined : {
|
|
503
|
+
items: new Set([this])
|
|
504
|
+
}; // see makeViewsRefSet
|
|
505
|
+
|
|
506
|
+
const updaterFunction = () => {
|
|
507
|
+
'worklet';
|
|
508
|
+
|
|
509
|
+
const update = getInlinePropsUpdate(newInlineProps);
|
|
510
|
+
updateProps(sharableViewDescriptors, update, maybeViewRef);
|
|
511
|
+
};
|
|
512
|
+
|
|
513
|
+
this._inlineProps = newInlineProps;
|
|
514
|
+
|
|
515
|
+
if (this._inlinePropsMapperId) {
|
|
516
|
+
stopMapper(this._inlinePropsMapperId);
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
this._inlinePropsMapperId = null;
|
|
520
|
+
|
|
521
|
+
if (Object.keys(newInlineProps).length) {
|
|
522
|
+
this._inlinePropsMapperId = startMapper(updaterFunction, Object.values(newInlineProps));
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
_detachInlineProps() {
|
|
528
|
+
if (this._inlinePropsMapperId) {
|
|
529
|
+
stopMapper(this._inlinePropsMapperId);
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
|
|
353
533
|
componentDidUpdate(prevProps) {
|
|
354
534
|
this._reattachNativeEvents(prevProps);
|
|
355
535
|
|
|
356
536
|
this._attachAnimatedStyles();
|
|
537
|
+
|
|
538
|
+
this._attachInlineProps();
|
|
357
539
|
}
|
|
358
540
|
|
|
359
541
|
_filterNonAnimatedProps(inputProps) {
|
|
@@ -377,6 +559,20 @@ export default function createAnimatedComponent(Component, options) {
|
|
|
377
559
|
}
|
|
378
560
|
|
|
379
561
|
return this.initialStyle;
|
|
562
|
+
} else if (hasInlineStyles(style)) {
|
|
563
|
+
if (this._isFirstRender) {
|
|
564
|
+
return getInlinePropsUpdate(style);
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
const newStyle = {};
|
|
568
|
+
|
|
569
|
+
for (const [key, styleValue] of Object.entries(style)) {
|
|
570
|
+
if (!isSharedValue(styleValue) && !(key === 'transform' && isInlineStyleTransform(styleValue))) {
|
|
571
|
+
newStyle[key] = styleValue;
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
|
|
575
|
+
return newStyle;
|
|
380
576
|
} else {
|
|
381
577
|
return style;
|
|
382
578
|
}
|
|
@@ -401,6 +597,10 @@ export default function createAnimatedComponent(Component, options) {
|
|
|
401
597
|
} else {
|
|
402
598
|
props[key] = dummyListener;
|
|
403
599
|
}
|
|
600
|
+
} else if (isSharedValue(value)) {
|
|
601
|
+
if (this._isFirstRender) {
|
|
602
|
+
props[key] = value.value;
|
|
603
|
+
}
|
|
404
604
|
} else if (key !== 'onGestureHandlerStateChange' || !isChromeDebugger()) {
|
|
405
605
|
props[key] = value;
|
|
406
606
|
}
|