react-native-reanimated 3.0.0-rc.8 → 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 +122 -121
- package/Common/cpp/NativeModules/NativeReanimatedModule.h +21 -14
- package/Common/cpp/NativeModules/NativeReanimatedModuleSpec.cpp +15 -7
- package/Common/cpp/NativeModules/NativeReanimatedModuleSpec.h +8 -4
- package/Common/cpp/ReanimatedRuntime/ReanimatedHermesRuntime.cpp +50 -1
- package/Common/cpp/ReanimatedRuntime/ReanimatedHermesRuntime.h +10 -1
- 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 +11 -63
- package/Common/cpp/SharedItems/Shareables.h +113 -93
- 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 +67 -247
- package/Common/cpp/Tools/RuntimeDecorator.h +2 -3
- 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 +31 -5
- package/ios/LayoutReanimation/REAAnimationsManager.m +265 -77
- 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 +67 -60
- 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 +18 -35
- 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/component/FlatList.js +19 -3
- package/lib/commonjs/reanimated2/component/FlatList.js.map +1 -1
- package/lib/commonjs/reanimated2/core.js +34 -83
- package/lib/commonjs/reanimated2/core.js.map +1 -1
- package/lib/commonjs/reanimated2/errors.js +66 -0
- package/lib/commonjs/reanimated2/errors.js.map +1 -0
- 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 -50
- 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 +196 -0
- package/lib/commonjs/reanimated2/initializers.js.map +1 -0
- 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 +101 -16
- 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 +4 -9
- 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 +16 -12
- 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 +45 -0
- 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 +38 -11
- 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 +18 -34
- 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/component/FlatList.js +18 -4
- package/lib/module/reanimated2/component/FlatList.js.map +1 -1
- package/lib/module/reanimated2/core.js +30 -76
- package/lib/module/reanimated2/core.js.map +1 -1
- package/lib/module/reanimated2/errors.js +58 -0
- package/lib/module/reanimated2/errors.js.map +1 -0
- 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 +45 -52
- 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 +182 -0
- package/lib/module/reanimated2/initializers.js.map +1 -0
- 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 +101 -16
- 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 +4 -9
- 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 -10
- 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 +45 -0
- 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 +38 -9
- 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 +9 -8
- package/{plugin.js → plugin/index.js} +173 -228
- 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 +63 -41
- 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/component/FlatList.tsx +30 -5
- package/src/reanimated2/core.ts +45 -75
- package/src/reanimated2/errors.ts +57 -0
- package/src/reanimated2/frameCallback/FrameCallbackRegistryUI.ts +2 -2
- package/src/reanimated2/globals.d.ts +34 -18
- 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 +43 -45
- 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 +184 -0
- package/src/reanimated2/interpolateColor.ts +104 -20
- package/src/reanimated2/jestUtils.ts +1 -1
- package/src/reanimated2/js-reanimated/JSReanimated.ts +105 -18
- 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 +4 -8
- 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 -12
- 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 +128 -0
- 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 +47 -11
- 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
|
@@ -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
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","findNodeHandle","Platform","StyleSheet","WorkletEventHandler","setAndForwardRef","invariant","adaptViewConfig","RNRenderer","configureLayoutAnimations","enableLayoutAnimations","runOnUI","isJest","isChromeDebugger","shouldBeUseWeb","initialUpdaterRun","getShadowNodeWrapperFromRef","makeShareableShadowNodeWrapper","dummyListener","maybeBuild","layoutAnimationOrBuilder","isAnimationBuilder","value","build","flattenArray","array","Array","isArray","resultArr","_flattenArray","arr","forEach","item","push","onlyAnimatedStyles","styles","filter","style","viewDescriptors","isSameAnimatedStyle","style1","style2","viewsRef","isSameAnimatedProps","has","key","x","undefined","createAnimatedComponent","Component","options","prototype","isReactComponent","AnimatedComponent","constructor","props","getForwardedRef","forwardedRef","setLocalRef","ref","tag","layout","entering","exiting","_component","animatedStyle","componentWillUnmount","_detachNativeEvents","_detachStyles","componentDidMount","_attachNativeEvents","_attachAnimatedStyles","viewTag","prop","current","registerForEvents","unregisterFromEvents","OS","_styles","remove","_viewTag","animatedProps","global","_IS_FABRIC","shadowNodeWrapper","_removeShadowNodeFromRegistry","_reattachNativeEvents","prevProps","reattachNeeded","_updateFromNative","setNativeProps","prevStyles","prevAnimatedProps","_animatedProps","viewName","hostInstance","findHostInstance_DEPRECATED","Error","_nativeTag","viewConfig","uiViewClassName","hasReanimated2Props","length","hasOneSameStyle","prevStyle","isPresent","some","add","name","initial","componentDidUpdate","_filterNonAnimatedProps","inputProps","styleProp","processedStyle","map","_isFirstRender","initialStyle","updater","flatten","animatedProp","Object","keys","eventNames","eventName","listeners","render","platformProps","select","web","default","collapsable","_setComponentRef","displayName","forwardRef"],"sources":["createAnimatedComponent.tsx"],"sourcesContent":["import React, { Component, ComponentType, MutableRefObject, Ref } from 'react';\nimport { findNodeHandle, Platform, StyleSheet } from 'react-native';\nimport WorkletEventHandler from './reanimated2/WorkletEventHandler';\nimport setAndForwardRef from './setAndForwardRef';\nimport './reanimated2/layoutReanimation/animationsManager';\nimport invariant from 'invariant';\nimport { adaptViewConfig } from './ConfigHelper';\nimport { RNRenderer } from './reanimated2/platform-specific/RNRenderer';\nimport {\n configureLayoutAnimations,\n enableLayoutAnimations,\n runOnUI,\n} from './reanimated2/core';\nimport {\n isJest,\n isChromeDebugger,\n shouldBeUseWeb,\n} from './reanimated2/PlatformChecker';\nimport { initialUpdaterRun } from './reanimated2/animation';\nimport {\n BaseAnimationBuilder,\n EntryExitAnimationFunction,\n ILayoutAnimationBuilder,\n LayoutAnimationFunction,\n} from './reanimated2/layoutReanimation';\nimport {\n SharedValue,\n StyleProps,\n ShadowNodeWrapper,\n} from './reanimated2/commonTypes';\nimport {\n ViewDescriptorsSet,\n ViewRefSet,\n} from './reanimated2/ViewDescriptorsSet';\nimport { getShadowNodeWrapperFromRef } from './reanimated2/fabricUtils';\nimport { makeShareableShadowNodeWrapper } from './reanimated2/shareables';\n\nfunction dummyListener() {\n // empty listener we use to assign to listener properties for which animated\n // event is used.\n}\n\nfunction maybeBuild(\n layoutAnimationOrBuilder:\n | ILayoutAnimationBuilder\n | LayoutAnimationFunction\n | Keyframe\n): LayoutAnimationFunction | Keyframe {\n const isAnimationBuilder = (\n value: ILayoutAnimationBuilder | LayoutAnimationFunction | Keyframe\n ): value is ILayoutAnimationBuilder =>\n 'build' in layoutAnimationOrBuilder &&\n typeof layoutAnimationOrBuilder.build === 'function';\n\n if (isAnimationBuilder(layoutAnimationOrBuilder)) {\n return layoutAnimationOrBuilder.build();\n } else {\n return layoutAnimationOrBuilder;\n }\n}\n\ntype NestedArray<T> = T | NestedArray<T>[];\nfunction flattenArray<T>(array: NestedArray<T>): T[] {\n if (!Array.isArray(array)) {\n return [array];\n }\n const resultArr: T[] = [];\n\n const _flattenArray = (arr: NestedArray<T>[]): void => {\n arr.forEach((item) => {\n if (Array.isArray(item)) {\n _flattenArray(item);\n } else {\n resultArr.push(item);\n }\n });\n };\n _flattenArray(array);\n return resultArr;\n}\n\nfunction onlyAnimatedStyles(styles: StyleProps[]) {\n return styles.filter((style) => style?.viewDescriptors);\n}\n\nfunction isSameAnimatedStyle(\n style1?: StyleProps,\n style2?: StyleProps\n): boolean {\n // We cannot use equality check to compare useAnimatedStyle outputs directly.\n // Instead, we can compare its viewsRefs.\n return style1?.viewsRef === style2?.viewsRef;\n}\n\nconst isSameAnimatedProps = isSameAnimatedStyle;\n\nconst has = <K extends string>(\n key: K,\n x: unknown\n): x is { [key in K]: unknown } => {\n if (typeof x === 'function' || typeof x === 'object') {\n if (x === null || x === undefined) {\n return false;\n } else {\n return key in x;\n }\n }\n return false;\n};\n\ninterface AnimatedProps extends Record<string, unknown> {\n viewDescriptors?: ViewDescriptorsSet;\n viewsRef?: ViewRefSet<unknown>;\n initial?: SharedValue<StyleProps>;\n}\n\nexport type AnimatedComponentProps<P extends Record<string, unknown>> = P & {\n forwardedRef?: Ref<Component>;\n style?: NestedArray<StyleProps>;\n animatedProps?: Partial<AnimatedComponentProps<AnimatedProps>>;\n animatedStyle?: StyleProps;\n layout?:\n | BaseAnimationBuilder\n | ILayoutAnimationBuilder\n | typeof BaseAnimationBuilder;\n entering?:\n | BaseAnimationBuilder\n | typeof BaseAnimationBuilder\n | EntryExitAnimationFunction\n | Keyframe;\n exiting?:\n | BaseAnimationBuilder\n | typeof BaseAnimationBuilder\n | EntryExitAnimationFunction\n | Keyframe;\n};\n\ntype Options<P> = {\n setNativeProps: (ref: ComponentRef, props: P) => void;\n};\n\ninterface ComponentRef extends Component {\n setNativeProps?: (props: Record<string, unknown>) => void;\n getScrollableNode?: () => ComponentRef;\n}\n\nexport interface InitialComponentProps extends Record<string, unknown> {\n ref?: Ref<Component>;\n collapsable?: boolean;\n}\n\nexport default function createAnimatedComponent(\n Component: ComponentType<InitialComponentProps>,\n options?: Options<InitialComponentProps>\n): ComponentType<AnimatedComponentProps<InitialComponentProps>> {\n invariant(\n typeof Component !== 'function' ||\n (Component.prototype && Component.prototype.isReactComponent),\n '`createAnimatedComponent` does not support stateless functional components; ' +\n 'use a class component instead.'\n );\n\n class AnimatedComponent extends React.Component<\n AnimatedComponentProps<InitialComponentProps>\n > {\n _styles: StyleProps[] | null = null;\n _animatedProps?: Partial<AnimatedComponentProps<AnimatedProps>>;\n _viewTag = -1;\n _isFirstRender = true;\n animatedStyle: { value: StyleProps } = { value: {} };\n initialStyle = {};\n _component: ComponentRef | null = null;\n static displayName: string;\n\n constructor(props: AnimatedComponentProps<InitialComponentProps>) {\n super(props);\n if (isJest()) {\n this.animatedStyle = { value: {} };\n }\n }\n\n componentWillUnmount() {\n this._detachNativeEvents();\n this._detachStyles();\n }\n\n componentDidMount() {\n this._attachNativeEvents();\n this._attachAnimatedStyles();\n }\n\n _attachNativeEvents() {\n const viewTag = findNodeHandle(this);\n for (const key in this.props) {\n const prop = this.props[key];\n if (\n has('current', prop) &&\n prop.current instanceof WorkletEventHandler\n ) {\n prop.current.registerForEvents(viewTag as number, key);\n }\n }\n }\n\n _detachNativeEvents() {\n for (const key in this.props) {\n const prop = this.props[key];\n if (\n has('current', prop) &&\n prop.current instanceof WorkletEventHandler\n ) {\n prop.current.unregisterFromEvents();\n }\n }\n }\n\n _detachStyles() {\n if (Platform.OS === 'web' && this._styles !== null) {\n for (const style of this._styles) {\n if (style?.viewsRef) {\n style.viewsRef.remove(this);\n }\n }\n } else if (this._viewTag !== -1 && this._styles !== null) {\n for (const style of this._styles) {\n style.viewDescriptors.remove(this._viewTag);\n }\n if (this.props.animatedProps?.viewDescriptors) {\n this.props.animatedProps.viewDescriptors.remove(this._viewTag);\n }\n if (global._IS_FABRIC) {\n const shadowNodeWrapper = getShadowNodeWrapperFromRef(this);\n runOnUI(() => {\n 'worklet';\n _removeShadowNodeFromRegistry(shadowNodeWrapper);\n })();\n }\n }\n }\n\n _reattachNativeEvents(\n prevProps: AnimatedComponentProps<InitialComponentProps>\n ) {\n let viewTag: number | undefined;\n\n for (const key in this.props) {\n const prop = this.props[key];\n if (\n has('current', prop) &&\n prop.current instanceof WorkletEventHandler\n ) {\n if (viewTag === undefined) {\n viewTag = prop.current.viewTag;\n }\n }\n }\n for (const key in prevProps) {\n const prop = this.props[key];\n if (\n has('current', prop) &&\n prop.current instanceof WorkletEventHandler &&\n prop.current.reattachNeeded\n ) {\n prop.current.unregisterFromEvents();\n }\n }\n\n for (const key in this.props) {\n const prop = this.props[key];\n if (\n has('current', prop) &&\n prop.current instanceof WorkletEventHandler &&\n prop.current.reattachNeeded\n ) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n prop.current.registerForEvents(viewTag!, key);\n prop.current.reattachNeeded = false;\n }\n }\n }\n\n _updateFromNative(props: StyleProps) {\n if (options?.setNativeProps) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n options.setNativeProps(this._component!, props);\n } else {\n // eslint-disable-next-line no-unused-expressions\n this._component?.setNativeProps?.(props);\n }\n }\n\n _attachAnimatedStyles() {\n const styles = this.props.style\n ? onlyAnimatedStyles(flattenArray<StyleProps>(this.props.style))\n : [];\n const prevStyles = this._styles;\n this._styles = styles;\n\n const prevAnimatedProps = this._animatedProps;\n this._animatedProps = this.props.animatedProps;\n\n let viewTag: number | null;\n let viewName: string | null;\n let shadowNodeWrapper: ShadowNodeWrapper | null = null;\n if (Platform.OS === 'web') {\n viewTag = findNodeHandle(this);\n viewName = null;\n shadowNodeWrapper = null;\n } else {\n // 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\n const hostInstance = RNRenderer.findHostInstance_DEPRECATED(this);\n if (!hostInstance) {\n throw new Error(\n 'Cannot find host instance for this component. Maybe it renders nothing?'\n );\n }\n // we can access view tag in the same way it's accessed here https://github.com/facebook/react/blob/e3f4eb7272d4ca0ee49f27577156b57eeb07cf73/packages/react-native-renderer/src/ReactFabric.js#L146\n viewTag = hostInstance?._nativeTag;\n /**\n * RN uses viewConfig for components for storing different properties of the component(example: https://github.com/facebook/react-native/blob/master/Libraries/Components/ScrollView/ScrollViewViewConfig.js#L16).\n * The name we're looking for is in the field named uiViewClassName.\n */\n viewName = hostInstance?.viewConfig?.uiViewClassName;\n // update UI props whitelist for this view\n const hasReanimated2Props =\n this.props.animatedProps?.viewDescriptors || styles.length;\n if (hasReanimated2Props && hostInstance?.viewConfig) {\n adaptViewConfig(hostInstance.viewConfig);\n }\n\n if (global._IS_FABRIC) {\n shadowNodeWrapper = makeShareableShadowNodeWrapper(\n getShadowNodeWrapperFromRef(this)\n );\n }\n }\n this._viewTag = viewTag as number;\n\n // remove old styles\n if (prevStyles) {\n // in most of the cases, views have only a single animated style and it remains unchanged\n const hasOneSameStyle =\n styles.length === 1 &&\n prevStyles.length === 1 &&\n isSameAnimatedStyle(styles[0], prevStyles[0]);\n\n if (!hasOneSameStyle) {\n // otherwise, remove each style that is not present in new styles\n for (const prevStyle of prevStyles) {\n const isPresent = styles.some((style) =>\n isSameAnimatedStyle(style, prevStyle)\n );\n if (!isPresent) {\n prevStyle.viewDescriptors.remove(viewTag);\n }\n }\n }\n }\n\n styles.forEach((style) => {\n style.viewDescriptors.add({\n tag: viewTag,\n name: viewName,\n shadowNodeWrapper,\n });\n if (isJest()) {\n /**\n * We need to connect Jest's TestObject instance whose contains just props object\n * with the updateProps() function where we update the properties of the component.\n * We can't update props object directly because TestObject contains a copy of props - look at render function:\n * const props = this._filterNonAnimatedProps(this.props);\n */\n this.animatedStyle.value = {\n ...this.animatedStyle.value,\n ...style.initial.value,\n };\n style.animatedStyle.current = this.animatedStyle;\n }\n });\n\n // detach old animatedProps\n if (\n prevAnimatedProps &&\n !isSameAnimatedProps(prevAnimatedProps, this.props.animatedProps)\n ) {\n prevAnimatedProps.viewDescriptors!.remove(viewTag as number);\n }\n\n // attach animatedProps property\n if (this.props.animatedProps?.viewDescriptors) {\n this.props.animatedProps.viewDescriptors.add({\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n tag: viewTag!,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n name: viewName!,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n shadowNodeWrapper: shadowNodeWrapper!,\n });\n }\n }\n\n componentDidUpdate(\n prevProps: AnimatedComponentProps<InitialComponentProps>\n ) {\n this._reattachNativeEvents(prevProps);\n this._attachAnimatedStyles();\n }\n\n _setComponentRef = setAndForwardRef<Component>({\n getForwardedRef: () =>\n this.props.forwardedRef as MutableRefObject<\n Component<Record<string, unknown>, Record<string, unknown>, unknown>\n >,\n setLocalRef: (ref) => {\n // TODO update config\n const tag = findNodeHandle(ref);\n const { layout, entering, exiting } = this.props;\n if ((layout || entering || exiting) && tag != null) {\n if (!shouldBeUseWeb()) {\n enableLayoutAnimations(true, false);\n }\n if (layout) {\n configureLayoutAnimations(tag, 'layout', maybeBuild(layout));\n }\n if (entering) {\n configureLayoutAnimations(tag, 'entering', maybeBuild(entering));\n }\n if (exiting) {\n configureLayoutAnimations(tag, 'exiting', maybeBuild(exiting));\n }\n }\n\n if (ref !== this._component) {\n this._component = ref;\n }\n },\n });\n\n _filterNonAnimatedProps(\n inputProps: AnimatedComponentProps<InitialComponentProps>\n ): Record<string, unknown> {\n const props: Record<string, unknown> = {};\n for (const key in inputProps) {\n const value = inputProps[key];\n if (key === 'style') {\n const styleProp = inputProps.style;\n const styles = flattenArray<StyleProps>(styleProp ?? []);\n const processedStyle: StyleProps = styles.map((style) => {\n if (style && style.viewDescriptors) {\n // this is how we recognize styles returned by useAnimatedStyle\n style.viewsRef.add(this);\n if (this._isFirstRender) {\n this.initialStyle = {\n ...style.initial.value,\n ...initialUpdaterRun<StyleProps>(style.initial.updater),\n };\n }\n return this.initialStyle;\n } else {\n return style;\n }\n });\n props[key] = StyleSheet.flatten(processedStyle);\n } else if (key === 'animatedProps') {\n const animatedProp = inputProps.animatedProps as Partial<\n AnimatedComponentProps<AnimatedProps>\n >;\n if (animatedProp.initial !== undefined) {\n Object.keys(animatedProp.initial.value).forEach((key) => {\n props[key] = animatedProp.initial?.value[key];\n animatedProp.viewsRef?.add(this);\n });\n }\n } else if (\n has('current', value) &&\n value.current instanceof WorkletEventHandler\n ) {\n if (value.current.eventNames.length > 0) {\n value.current.eventNames.forEach((eventName) => {\n props[eventName] = has('listeners', value.current)\n ? (value.current.listeners as Record<string, unknown>)[\n eventName\n ]\n : dummyListener;\n });\n } else {\n props[key] = dummyListener;\n }\n } else if (\n key !== 'onGestureHandlerStateChange' ||\n !isChromeDebugger()\n ) {\n props[key] = value;\n }\n }\n return props;\n }\n\n render() {\n const props = this._filterNonAnimatedProps(this.props);\n if (isJest()) {\n props.animatedStyle = this.animatedStyle;\n }\n\n if (this._isFirstRender) {\n this._isFirstRender = false;\n }\n\n const platformProps = Platform.select({\n web: {},\n default: { collapsable: false },\n });\n return (\n <Component {...props} ref={this._setComponentRef} {...platformProps} />\n );\n }\n }\n\n AnimatedComponent.displayName = `AnimatedComponent(${\n Component.displayName || Component.name || 'Component'\n })`;\n\n return React.forwardRef<Component>((props, ref) => {\n return (\n <AnimatedComponent\n {...props}\n {...(ref === null ? null : { forwardedRef: ref })}\n />\n );\n });\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["React","findNodeHandle","Platform","StyleSheet","WorkletEventHandler","setAndForwardRef","invariant","adaptViewConfig","RNRenderer","configureLayoutAnimations","enableLayoutAnimations","runOnUI","startMapper","stopMapper","isJest","isChromeDebugger","shouldBeUseWeb","initialUpdaterRun","DefaultSharedTransition","LayoutAnimationType","makeViewDescriptorsSet","getShadowNodeWrapperFromRef","updateProps","NativeReanimatedModule","isSharedValue","dummyListener","maybeBuild","layoutAnimationOrBuilder","isAnimationBuilder","value","build","flattenArray","array","Array","isArray","resultArr","_flattenArray","arr","forEach","item","push","onlyAnimatedStyles","styles","filter","style","viewDescriptors","isSameAnimatedStyle","style1","style2","viewsRef","isSameAnimatedProps","has","key","x","undefined","isInlineStyleTransform","transform","some","t","hasInlineStyles","Object","keys","styleValue","extractSharedValuesMapFromProps","props","inlineProps","entries","inlinePropsHasChanged","styles1","styles2","length","getInlinePropsUpdate","update","map","createAnimatedComponent","Component","options","prototype","isReactComponent","AnimatedComponent","constructor","getForwardedRef","forwardedRef","setLocalRef","ref","tag","layout","entering","exiting","sharedTransitionTag","LAYOUT","ENTERING","EXITING","sharedElementTransition","sharedTransitionStyle","SHARED_ELEMENT_TRANSITION","_component","animatedStyle","componentWillUnmount","_detachNativeEvents","_detachStyles","_detachInlineProps","componentDidMount","_attachNativeEvents","_attachAnimatedStyles","_attachInlineProps","_getEventViewRef","getScrollableNode","node","viewTag","setNativeProps","prop","current","registerForEvents","unregisterFromEvents","OS","_styles","remove","_viewTag","animatedProps","global","_IS_FABRIC","_removeShadowNodeFromRegistry","_reattachNativeEvents","prevProps","reattachNeeded","_updateFromNative","_getViewInfo","viewName","shadowNodeWrapper","viewConfig","hostInstance","findHostInstance_DEPRECATED","Error","_nativeTag","uiViewClassName","prevStyles","prevAnimatedProps","_animatedProps","hasReanimated2Props","hasOneSameStyle","prevStyle","isPresent","add","name","initial","newInlineProps","hasChanged","_inlineProps","_inlinePropsViewDescriptors","sharableViewDescriptors","maybeViewRef","native","items","Set","updaterFunction","_inlinePropsMapperId","values","componentDidUpdate","_filterNonAnimatedProps","inputProps","styleProp","processedStyle","_isFirstRender","initialStyle","updater","newStyle","flatten","animatedProp","eventNames","eventName","listeners","render","platformProps","select","web","default","collapsable","_setComponentRef","displayName","forwardRef"],"sources":["createAnimatedComponent.tsx"],"sourcesContent":["import React, { Component, ComponentType, MutableRefObject, Ref } from 'react';\nimport { findNodeHandle, Platform, StyleSheet } from 'react-native';\nimport WorkletEventHandler from './reanimated2/WorkletEventHandler';\nimport setAndForwardRef from './setAndForwardRef';\nimport './reanimated2/layoutReanimation/animationsManager';\nimport invariant from 'invariant';\nimport { adaptViewConfig } from './ConfigHelper';\nimport { RNRenderer } from './reanimated2/platform-specific/RNRenderer';\nimport {\n configureLayoutAnimations,\n enableLayoutAnimations,\n runOnUI,\n startMapper,\n stopMapper,\n} from './reanimated2/core';\nimport {\n isJest,\n isChromeDebugger,\n shouldBeUseWeb,\n} from './reanimated2/PlatformChecker';\nimport { initialUpdaterRun } from './reanimated2/animation';\nimport {\n BaseAnimationBuilder,\n DefaultSharedTransition,\n EntryExitAnimationFunction,\n ILayoutAnimationBuilder,\n LayoutAnimationFunction,\n LayoutAnimationType,\n} from './reanimated2/layoutReanimation';\nimport {\n SharedValue,\n StyleProps,\n ShadowNodeWrapper,\n} from './reanimated2/commonTypes';\nimport {\n makeViewDescriptorsSet,\n ViewDescriptorsSet,\n ViewRefSet,\n} from './reanimated2/ViewDescriptorsSet';\nimport { getShadowNodeWrapperFromRef } from './reanimated2/fabricUtils';\nimport updateProps from './reanimated2/UpdateProps';\nimport NativeReanimatedModule from './reanimated2/NativeReanimated';\nimport { isSharedValue } from './reanimated2';\n\nfunction dummyListener() {\n // empty listener we use to assign to listener properties for which animated\n // event is used.\n}\n\nfunction maybeBuild(\n layoutAnimationOrBuilder:\n | ILayoutAnimationBuilder\n | LayoutAnimationFunction\n | Keyframe\n): LayoutAnimationFunction | Keyframe {\n const isAnimationBuilder = (\n value: ILayoutAnimationBuilder | LayoutAnimationFunction | Keyframe\n ): value is ILayoutAnimationBuilder =>\n 'build' in layoutAnimationOrBuilder &&\n typeof layoutAnimationOrBuilder.build === 'function';\n\n if (isAnimationBuilder(layoutAnimationOrBuilder)) {\n return layoutAnimationOrBuilder.build();\n } else {\n return layoutAnimationOrBuilder;\n }\n}\n\ntype NestedArray<T> = T | NestedArray<T>[];\nfunction flattenArray<T>(array: NestedArray<T>): T[] {\n if (!Array.isArray(array)) {\n return [array];\n }\n const resultArr: T[] = [];\n\n const _flattenArray = (arr: NestedArray<T>[]): void => {\n arr.forEach((item) => {\n if (Array.isArray(item)) {\n _flattenArray(item);\n } else {\n resultArr.push(item);\n }\n });\n };\n _flattenArray(array);\n return resultArr;\n}\n\nfunction onlyAnimatedStyles(styles: StyleProps[]) {\n return styles.filter((style) => style?.viewDescriptors);\n}\n\nfunction isSameAnimatedStyle(\n style1?: StyleProps,\n style2?: StyleProps\n): boolean {\n // We cannot use equality check to compare useAnimatedStyle outputs directly.\n // Instead, we can compare its viewsRefs.\n return style1?.viewsRef === style2?.viewsRef;\n}\n\nconst isSameAnimatedProps = isSameAnimatedStyle;\n\nconst has = <K extends string>(\n key: K,\n x: unknown\n): x is { [key in K]: unknown } => {\n if (typeof x === 'function' || typeof x === 'object') {\n if (x === null || x === undefined) {\n return false;\n } else {\n return key in x;\n }\n }\n return false;\n};\n\nfunction isInlineStyleTransform(transform: any): boolean {\n return transform.some((t: Record<string, any>) => hasInlineStyles(t));\n}\n\nfunction hasInlineStyles(style: StyleProps): boolean {\n return Object.keys(style).some((key) => {\n const styleValue = style[key];\n return (\n isSharedValue(styleValue) ||\n (key === 'transform' && isInlineStyleTransform(styleValue))\n );\n });\n}\n\nfunction extractSharedValuesMapFromProps(\n props: AnimatedComponentProps<InitialComponentProps>\n): Record<string, any> {\n const inlineProps: Record<string, any> = {};\n\n for (const key in props) {\n const value = props[key];\n if (key === 'style') {\n const styles = flattenArray<StyleProps>(props.style ?? []);\n styles.forEach((style) => {\n for (const [key, styleValue] of Object.entries(style)) {\n if (isSharedValue(styleValue)) {\n inlineProps[key] = styleValue;\n } else if (\n key === 'transform' &&\n isInlineStyleTransform(styleValue)\n ) {\n inlineProps[key] = styleValue;\n }\n }\n });\n } else if (isSharedValue(value)) {\n inlineProps[key] = value;\n }\n }\n\n return inlineProps;\n}\n\nfunction inlinePropsHasChanged(styles1: StyleProps, styles2: StyleProps) {\n if (Object.keys(styles1).length !== Object.keys(styles2).length) {\n return true;\n }\n\n for (const key of Object.keys(styles1)) {\n if (styles1[key] !== styles2[key]) return true;\n }\n\n return false;\n}\n\nfunction getInlinePropsUpdate(inlineProps: Record<string, any>) {\n 'worklet';\n const update: Record<string, any> = {};\n for (const [key, styleValue] of Object.entries(inlineProps)) {\n if (key === 'transform') {\n update[key] = styleValue.map((transform: Record<string, any>) => {\n return getInlinePropsUpdate(transform);\n });\n } else if (isSharedValue(styleValue)) {\n update[key] = styleValue.value;\n } else {\n update[key] = styleValue;\n }\n }\n return update;\n}\n\ninterface AnimatedProps extends Record<string, unknown> {\n viewDescriptors?: ViewDescriptorsSet;\n viewsRef?: ViewRefSet<unknown>;\n initial?: SharedValue<StyleProps>;\n}\n\nexport type AnimatedComponentProps<P extends Record<string, unknown>> = P & {\n forwardedRef?: Ref<Component>;\n style?: NestedArray<StyleProps>;\n animatedProps?: Partial<AnimatedComponentProps<AnimatedProps>>;\n animatedStyle?: StyleProps;\n layout?:\n | BaseAnimationBuilder\n | ILayoutAnimationBuilder\n | typeof BaseAnimationBuilder;\n entering?:\n | BaseAnimationBuilder\n | typeof BaseAnimationBuilder\n | EntryExitAnimationFunction\n | Keyframe;\n exiting?:\n | BaseAnimationBuilder\n | typeof BaseAnimationBuilder\n | EntryExitAnimationFunction\n | Keyframe;\n sharedTransitionTag?: string;\n sharedTransitionStyle?: ILayoutAnimationBuilder;\n};\n\ntype Options<P> = {\n setNativeProps: (ref: ComponentRef, props: P) => void;\n};\n\ninterface ComponentRef extends Component {\n setNativeProps?: (props: Record<string, unknown>) => void;\n getScrollableNode?: () => ComponentRef;\n}\n\nexport interface InitialComponentProps extends Record<string, unknown> {\n ref?: Ref<Component>;\n collapsable?: boolean;\n}\n\nexport default function createAnimatedComponent(\n Component: ComponentType<InitialComponentProps>,\n options?: Options<InitialComponentProps>\n): ComponentType<AnimatedComponentProps<InitialComponentProps>> {\n invariant(\n typeof Component !== 'function' ||\n (Component.prototype && Component.prototype.isReactComponent),\n '`createAnimatedComponent` does not support stateless functional components; ' +\n 'use a class component instead.'\n );\n\n class AnimatedComponent extends React.Component<\n AnimatedComponentProps<InitialComponentProps>\n > {\n _styles: StyleProps[] | null = null;\n _animatedProps?: Partial<AnimatedComponentProps<AnimatedProps>>;\n _viewTag = -1;\n _isFirstRender = true;\n animatedStyle: { value: StyleProps } = { value: {} };\n initialStyle = {};\n _component: ComponentRef | null = null;\n _inlinePropsViewDescriptors: ViewDescriptorsSet | null = null;\n _inlinePropsMapperId: number | null = null;\n _inlineProps: StyleProps = {};\n static displayName: string;\n\n constructor(props: AnimatedComponentProps<InitialComponentProps>) {\n super(props);\n if (isJest()) {\n this.animatedStyle = { value: {} };\n }\n }\n\n componentWillUnmount() {\n this._detachNativeEvents();\n this._detachStyles();\n this._detachInlineProps();\n }\n\n componentDidMount() {\n this._attachNativeEvents();\n this._attachAnimatedStyles();\n this._attachInlineProps();\n }\n\n _getEventViewRef() {\n // Make sure to get the scrollable node for components that implement\n // `ScrollResponder.Mixin`.\n return this._component?.getScrollableNode\n ? this._component.getScrollableNode()\n : this._component;\n }\n\n _attachNativeEvents() {\n const node = this._getEventViewRef();\n const viewTag = findNodeHandle(options?.setNativeProps ? this : node);\n\n for (const key in this.props) {\n const prop = this.props[key];\n if (\n has('current', prop) &&\n prop.current instanceof WorkletEventHandler\n ) {\n prop.current.registerForEvents(viewTag as number, key);\n }\n }\n }\n\n _detachNativeEvents() {\n for (const key in this.props) {\n const prop = this.props[key];\n if (\n has('current', prop) &&\n prop.current instanceof WorkletEventHandler\n ) {\n prop.current.unregisterFromEvents();\n }\n }\n }\n\n _detachStyles() {\n if (Platform.OS === 'web' && this._styles !== null) {\n for (const style of this._styles) {\n if (style?.viewsRef) {\n style.viewsRef.remove(this);\n }\n }\n } else if (this._viewTag !== -1 && this._styles !== null) {\n for (const style of this._styles) {\n style.viewDescriptors.remove(this._viewTag);\n }\n if (this.props.animatedProps?.viewDescriptors) {\n this.props.animatedProps.viewDescriptors.remove(this._viewTag);\n }\n if (global._IS_FABRIC) {\n const viewTag = this._viewTag;\n runOnUI(() => {\n 'worklet';\n _removeShadowNodeFromRegistry(viewTag);\n })();\n }\n }\n }\n\n _reattachNativeEvents(\n prevProps: AnimatedComponentProps<InitialComponentProps>\n ) {\n let viewTag: number | undefined;\n\n for (const key in this.props) {\n const prop = this.props[key];\n if (\n has('current', prop) &&\n prop.current instanceof WorkletEventHandler\n ) {\n if (viewTag === undefined) {\n viewTag = prop.current.viewTag;\n }\n }\n }\n for (const key in prevProps) {\n const prop = this.props[key];\n if (\n has('current', prop) &&\n prop.current instanceof WorkletEventHandler &&\n prop.current.reattachNeeded\n ) {\n prop.current.unregisterFromEvents();\n }\n }\n\n for (const key in this.props) {\n const prop = this.props[key];\n if (\n has('current', prop) &&\n prop.current instanceof WorkletEventHandler &&\n prop.current.reattachNeeded\n ) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n prop.current.registerForEvents(viewTag!, key);\n prop.current.reattachNeeded = false;\n }\n }\n }\n\n _updateFromNative(props: StyleProps) {\n if (options?.setNativeProps) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n options.setNativeProps(this._component!, props);\n } else {\n // eslint-disable-next-line no-unused-expressions\n this._component?.setNativeProps?.(props);\n }\n }\n\n _getViewInfo() {\n let viewTag: number | null;\n let viewName: string | null;\n let shadowNodeWrapper: ShadowNodeWrapper | null = null;\n let viewConfig;\n if (Platform.OS === 'web') {\n viewTag = findNodeHandle(this);\n viewName = null;\n shadowNodeWrapper = null;\n viewConfig = null;\n } else {\n // 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\n const hostInstance = RNRenderer.findHostInstance_DEPRECATED(this);\n if (!hostInstance) {\n throw new Error(\n 'Cannot find host instance for this component. Maybe it renders nothing?'\n );\n }\n // we can access view tag in the same way it's accessed here https://github.com/facebook/react/blob/e3f4eb7272d4ca0ee49f27577156b57eeb07cf73/packages/react-native-renderer/src/ReactFabric.js#L146\n viewTag = hostInstance?._nativeTag;\n /**\n * RN uses viewConfig for components for storing different properties of the component(example: https://github.com/facebook/react-native/blob/master/Libraries/Components/ScrollView/ScrollViewViewConfig.js#L16).\n * The name we're looking for is in the field named uiViewClassName.\n */\n viewName = hostInstance?.viewConfig?.uiViewClassName;\n\n viewConfig = hostInstance?.viewConfig;\n\n if (global._IS_FABRIC) {\n shadowNodeWrapper = getShadowNodeWrapperFromRef(this);\n }\n }\n return { viewTag, viewName, shadowNodeWrapper, viewConfig };\n }\n\n _attachAnimatedStyles() {\n const styles = this.props.style\n ? onlyAnimatedStyles(flattenArray<StyleProps>(this.props.style))\n : [];\n const prevStyles = this._styles;\n this._styles = styles;\n\n const prevAnimatedProps = this._animatedProps;\n this._animatedProps = this.props.animatedProps;\n\n const { viewTag, viewName, shadowNodeWrapper, viewConfig } =\n this._getViewInfo();\n\n // update UI props whitelist for this view\n const hasReanimated2Props =\n this.props.animatedProps?.viewDescriptors || styles.length;\n if (hasReanimated2Props && viewConfig) {\n adaptViewConfig(viewConfig);\n }\n\n this._viewTag = viewTag as number;\n\n // remove old styles\n if (prevStyles) {\n // in most of the cases, views have only a single animated style and it remains unchanged\n const hasOneSameStyle =\n styles.length === 1 &&\n prevStyles.length === 1 &&\n isSameAnimatedStyle(styles[0], prevStyles[0]);\n\n if (!hasOneSameStyle) {\n // otherwise, remove each style that is not present in new styles\n for (const prevStyle of prevStyles) {\n const isPresent = styles.some((style) =>\n isSameAnimatedStyle(style, prevStyle)\n );\n if (!isPresent) {\n prevStyle.viewDescriptors.remove(viewTag);\n }\n }\n }\n }\n\n styles.forEach((style) => {\n style.viewDescriptors.add({\n tag: viewTag,\n name: viewName,\n shadowNodeWrapper,\n });\n if (isJest()) {\n /**\n * We need to connect Jest's TestObject instance whose contains just props object\n * with the updateProps() function where we update the properties of the component.\n * We can't update props object directly because TestObject contains a copy of props - look at render function:\n * const props = this._filterNonAnimatedProps(this.props);\n */\n this.animatedStyle.value = {\n ...this.animatedStyle.value,\n ...style.initial.value,\n };\n style.animatedStyle.current = this.animatedStyle;\n }\n });\n\n // detach old animatedProps\n if (\n prevAnimatedProps &&\n !isSameAnimatedProps(prevAnimatedProps, this.props.animatedProps)\n ) {\n prevAnimatedProps.viewDescriptors!.remove(viewTag as number);\n }\n\n // attach animatedProps property\n if (this.props.animatedProps?.viewDescriptors) {\n this.props.animatedProps.viewDescriptors.add({\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n tag: viewTag!,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n name: viewName!,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n shadowNodeWrapper: shadowNodeWrapper!,\n });\n }\n }\n\n _attachInlineProps() {\n const newInlineProps: Record<string, any> =\n extractSharedValuesMapFromProps(this.props);\n const hasChanged = inlinePropsHasChanged(\n newInlineProps,\n this._inlineProps\n );\n\n if (hasChanged) {\n if (!this._inlinePropsViewDescriptors) {\n this._inlinePropsViewDescriptors = makeViewDescriptorsSet();\n\n const { viewTag, viewName, shadowNodeWrapper, viewConfig } =\n this._getViewInfo();\n\n if (Object.keys(newInlineProps).length && viewConfig) {\n adaptViewConfig(viewConfig);\n }\n\n this._inlinePropsViewDescriptors.add({\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n tag: viewTag!,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n name: viewName!,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n shadowNodeWrapper: shadowNodeWrapper!,\n });\n }\n const sharableViewDescriptors =\n this._inlinePropsViewDescriptors.sharableViewDescriptors;\n\n const maybeViewRef = NativeReanimatedModule.native\n ? undefined\n : ({ items: new Set([this]) } as ViewRefSet<any>); // see makeViewsRefSet\n\n const updaterFunction = () => {\n 'worklet';\n const update = getInlinePropsUpdate(newInlineProps);\n updateProps(sharableViewDescriptors, update, maybeViewRef);\n };\n this._inlineProps = newInlineProps;\n if (this._inlinePropsMapperId) {\n stopMapper(this._inlinePropsMapperId);\n }\n this._inlinePropsMapperId = null;\n if (Object.keys(newInlineProps).length) {\n this._inlinePropsMapperId = startMapper(\n updaterFunction,\n Object.values(newInlineProps)\n );\n }\n }\n }\n\n _detachInlineProps() {\n if (this._inlinePropsMapperId) {\n stopMapper(this._inlinePropsMapperId);\n }\n }\n\n componentDidUpdate(\n prevProps: AnimatedComponentProps<InitialComponentProps>\n ) {\n this._reattachNativeEvents(prevProps);\n this._attachAnimatedStyles();\n this._attachInlineProps();\n }\n\n _setComponentRef = setAndForwardRef<Component>({\n getForwardedRef: () =>\n this.props.forwardedRef as MutableRefObject<\n Component<Record<string, unknown>, Record<string, unknown>, unknown>\n >,\n setLocalRef: (ref) => {\n // TODO update config\n const tag = findNodeHandle(ref);\n const { layout, entering, exiting, sharedTransitionTag } = this.props;\n if (\n (layout || entering || exiting || sharedTransitionTag) &&\n tag != null\n ) {\n if (!shouldBeUseWeb()) {\n enableLayoutAnimations(true, false);\n }\n if (layout) {\n configureLayoutAnimations(\n tag,\n LayoutAnimationType.LAYOUT,\n maybeBuild(layout)\n );\n }\n if (entering) {\n configureLayoutAnimations(\n tag,\n LayoutAnimationType.ENTERING,\n maybeBuild(entering)\n );\n }\n if (exiting) {\n configureLayoutAnimations(\n tag,\n LayoutAnimationType.EXITING,\n maybeBuild(exiting)\n );\n }\n if (sharedTransitionTag) {\n const sharedElementTransition =\n this.props.sharedTransitionStyle ?? DefaultSharedTransition;\n configureLayoutAnimations(\n tag,\n LayoutAnimationType.SHARED_ELEMENT_TRANSITION,\n maybeBuild(sharedElementTransition),\n sharedTransitionTag\n );\n }\n }\n\n if (ref !== this._component) {\n this._component = ref;\n }\n },\n });\n\n _filterNonAnimatedProps(\n inputProps: AnimatedComponentProps<InitialComponentProps>\n ): Record<string, unknown> {\n const props: Record<string, unknown> = {};\n for (const key in inputProps) {\n const value = inputProps[key];\n if (key === 'style') {\n const styleProp = inputProps.style;\n const styles = flattenArray<StyleProps>(styleProp ?? []);\n const processedStyle: StyleProps = styles.map((style) => {\n if (style && style.viewDescriptors) {\n // this is how we recognize styles returned by useAnimatedStyle\n style.viewsRef.add(this);\n if (this._isFirstRender) {\n this.initialStyle = {\n ...style.initial.value,\n ...initialUpdaterRun<StyleProps>(style.initial.updater),\n };\n }\n return this.initialStyle;\n } else if (hasInlineStyles(style)) {\n if (this._isFirstRender) {\n return getInlinePropsUpdate(style);\n }\n const newStyle: StyleProps = {};\n for (const [key, styleValue] of Object.entries(style)) {\n if (\n !isSharedValue(styleValue) &&\n !(key === 'transform' && isInlineStyleTransform(styleValue))\n ) {\n newStyle[key] = styleValue;\n }\n }\n return newStyle;\n } else {\n return style;\n }\n });\n props[key] = StyleSheet.flatten(processedStyle);\n } else if (key === 'animatedProps') {\n const animatedProp = inputProps.animatedProps as Partial<\n AnimatedComponentProps<AnimatedProps>\n >;\n if (animatedProp.initial !== undefined) {\n Object.keys(animatedProp.initial.value).forEach((key) => {\n props[key] = animatedProp.initial?.value[key];\n animatedProp.viewsRef?.add(this);\n });\n }\n } else if (\n has('current', value) &&\n value.current instanceof WorkletEventHandler\n ) {\n if (value.current.eventNames.length > 0) {\n value.current.eventNames.forEach((eventName) => {\n props[eventName] = has('listeners', value.current)\n ? (value.current.listeners as Record<string, unknown>)[\n eventName\n ]\n : dummyListener;\n });\n } else {\n props[key] = dummyListener;\n }\n } else if (isSharedValue(value)) {\n if (this._isFirstRender) {\n props[key] = (value as SharedValue<any>).value;\n }\n } else if (\n key !== 'onGestureHandlerStateChange' ||\n !isChromeDebugger()\n ) {\n props[key] = value;\n }\n }\n return props;\n }\n\n render() {\n const props = this._filterNonAnimatedProps(this.props);\n if (isJest()) {\n props.animatedStyle = this.animatedStyle;\n }\n\n if (this._isFirstRender) {\n this._isFirstRender = false;\n }\n\n const platformProps = Platform.select({\n web: {},\n default: { collapsable: false },\n });\n return (\n <Component {...props} ref={this._setComponentRef} {...platformProps} />\n );\n }\n }\n\n AnimatedComponent.displayName = `AnimatedComponent(${\n Component.displayName || Component.name || 'Component'\n })`;\n\n return React.forwardRef<Component>((props, ref) => {\n return (\n <AnimatedComponent\n {...props}\n {...(ref === null ? null : { forwardedRef: ref })}\n />\n );\n });\n}\n"],"mappings":"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"}
|
|
@@ -540,7 +540,7 @@ function HSVtoRGB(h, s, v) {
|
|
|
540
540
|
/* eslint-enable */
|
|
541
541
|
}
|
|
542
542
|
|
|
543
|
-
export const hsvToColor = (h, s, v) => {
|
|
543
|
+
export const hsvToColor = (h, s, v, a) => {
|
|
544
544
|
'worklet';
|
|
545
545
|
|
|
546
546
|
const {
|
|
@@ -548,7 +548,7 @@ export const hsvToColor = (h, s, v) => {
|
|
|
548
548
|
g,
|
|
549
549
|
b
|
|
550
550
|
} = HSVtoRGB(h, s, v);
|
|
551
|
-
return rgbaColor(r, g, b);
|
|
551
|
+
return rgbaColor(r, g, b, a);
|
|
552
552
|
};
|
|
553
553
|
export function processColorInitially(color) {
|
|
554
554
|
'worklet';
|
|
@@ -603,30 +603,46 @@ export function processColor(color) {
|
|
|
603
603
|
|
|
604
604
|
return normalizedColor;
|
|
605
605
|
}
|
|
606
|
-
export function
|
|
606
|
+
export function convertToRGBA(color) {
|
|
607
607
|
'worklet';
|
|
608
608
|
|
|
609
609
|
const processedColor = processColorInitially(color); // argb;
|
|
610
610
|
|
|
611
611
|
const a = (processedColor >>> 24) / 255;
|
|
612
|
-
const r = processedColor << 8 >>> 24;
|
|
613
|
-
const g = processedColor << 16 >>> 24;
|
|
614
|
-
const b = processedColor << 24 >>> 24;
|
|
615
|
-
|
|
616
|
-
h,
|
|
617
|
-
s,
|
|
618
|
-
v
|
|
619
|
-
} = RGBtoHSV(r, g, b);
|
|
620
|
-
return [h, s, v, a];
|
|
612
|
+
const r = (processedColor << 8 >>> 24) / 255;
|
|
613
|
+
const g = (processedColor << 16 >>> 24) / 255;
|
|
614
|
+
const b = (processedColor << 24 >>> 24) / 255;
|
|
615
|
+
return [r, g, b, a];
|
|
621
616
|
}
|
|
622
|
-
export function
|
|
617
|
+
export function rgbaArrayToRGBAColor(RGBA) {
|
|
623
618
|
'worklet';
|
|
624
619
|
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
620
|
+
return `rgba(${Math.round(RGBA[0] * 255)}, ${Math.round(RGBA[1] * 255)}, ${Math.round(RGBA[2] * 255)}, ${RGBA[3]})`;
|
|
621
|
+
}
|
|
622
|
+
export function toLinearSpace(RGBA) {
|
|
623
|
+
'worklet';
|
|
624
|
+
|
|
625
|
+
let gamma = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2.2;
|
|
626
|
+
const res = [];
|
|
627
|
+
|
|
628
|
+
for (let i = 0; i < 3; ++i) {
|
|
629
|
+
res.push(Math.pow(RGBA[i], gamma));
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
res.push(RGBA[3]);
|
|
633
|
+
return res;
|
|
634
|
+
}
|
|
635
|
+
export function toGammaSpace(RGBA) {
|
|
636
|
+
'worklet';
|
|
637
|
+
|
|
638
|
+
let gamma = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2.2;
|
|
639
|
+
const res = [];
|
|
640
|
+
|
|
641
|
+
for (let i = 0; i < 3; ++i) {
|
|
642
|
+
res.push(Math.pow(RGBA[i], 1 / gamma));
|
|
643
|
+
}
|
|
644
|
+
|
|
645
|
+
res.push(RGBA[3]);
|
|
646
|
+
return res;
|
|
631
647
|
}
|
|
632
648
|
//# sourceMappingURL=Colors.js.map
|