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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["prepareAnimation","animatedProp","lastAnimation","lastValue","Array","isArray","forEach","prop","index","onFrame","animation","value","current","undefined","callStart","timestamp","onStart","getTimestamp","Object","keys","key","runAnimations","result","animationsActive","allFinished","entry","finished","callback","k","styleUpdater","viewDescriptors","updater","state","maybeViewRef","animations","newValues","oldValues","last","hasAnimations","isAnimated","frame","_timestamp","isAnimationCancelled","isAnimationRunning","updates","propName","updateProps","requestAnimationFrame","_frameTimestamp","assign","style","getStyleWithoutAnimations","diff","styleDiff","jestStyleUpdater","animatedStyle","adapters","length","updatePropsJestWrapper","checkSharedValueUsage","currentKey","element","Error","useAnimatedStyle","dependencies","viewsRef","makeViewsRefSet","initRef","useRef","inputs","values","_closure","adaptersArray","adaptersHash","buildWorkletsHash","useSharedValue","__workletHash","push","initialStyle","initialUpdaterRun","validateAnimatedStyles","initial","remoteState","makeRemote","makeViewDescriptorsSet","sharableViewDescriptors","NativeReanimatedModule","native","useEffect","fun","updaterFn","adapter","shouldBeUseWeb","parseColors","isJest","mapperId","startMapper","stopMapper","process","env","JEST_WORKER_ID"],"sources":["useAnimatedStyle.ts"],"sourcesContent":["/* global _frameTimestamp */\nimport { MutableRefObject, useEffect, useRef } from 'react';\n\nimport { startMapper, stopMapper, makeRemote, getTimestamp } from '../core';\nimport updateProps, { updatePropsJestWrapper } from '../UpdateProps';\nimport { initialUpdaterRun } from '../animation';\nimport NativeReanimatedModule from '../NativeReanimated';\nimport { useSharedValue } from './useSharedValue';\nimport {\n buildWorkletsHash,\n getStyleWithoutAnimations,\n isAnimated,\n parseColors,\n styleDiff,\n validateAnimatedStyles,\n} from './utils';\nimport { DependencyList, Descriptor } from './commonTypes';\nimport {\n makeViewDescriptorsSet,\n makeViewsRefSet,\n ViewDescriptorsSet,\n ViewRefSet,\n} from '../ViewDescriptorsSet';\nimport { isJest, shouldBeUseWeb } from '../PlatformChecker';\nimport {\n AnimationObject,\n Timestamp,\n AdapterWorkletFunction,\n AnimatedStyle,\n BasicWorkletFunction,\n BasicWorkletFunctionOptional,\n NestedObjectValues,\n SharedValue,\n} from '../commonTypes';\nexport interface AnimatedStyleResult {\n viewDescriptors: ViewDescriptorsSet;\n initial: AnimatedStyle;\n viewsRef: ViewRefSet<any>;\n animatedStyle?: MutableRefObject<AnimatedStyle>;\n}\n\ninterface AnimatedState {\n last: AnimatedStyle;\n animations: AnimatedStyle;\n isAnimationRunning: boolean;\n isAnimationCancelled: boolean;\n}\n\ninterface AnimationRef {\n initial: {\n value: AnimatedStyle;\n updater: () => AnimatedStyle;\n };\n remoteState: AnimatedState;\n viewDescriptors: ViewDescriptorsSet;\n}\n\nfunction prepareAnimation(\n animatedProp: AnimatedStyle,\n lastAnimation: AnimatedStyle,\n lastValue: AnimatedStyle\n): void {\n 'worklet';\n if (Array.isArray(animatedProp)) {\n animatedProp.forEach((prop, index) => {\n prepareAnimation(\n prop,\n lastAnimation && lastAnimation[index],\n lastValue && lastValue[index]\n );\n });\n // return animatedProp;\n }\n if (typeof animatedProp === 'object' && animatedProp.onFrame) {\n const animation = animatedProp;\n\n let value = animation.current;\n if (lastValue !== undefined) {\n if (typeof lastValue === 'object') {\n if (lastValue.value !== undefined) {\n // previously it was a shared value\n value = lastValue.value;\n } else if (lastValue.onFrame !== undefined) {\n if (lastAnimation?.current !== undefined) {\n // it was an animation before, copy its state\n value = lastAnimation.current;\n } else if (lastValue?.current !== undefined) {\n // it was initialized\n value = lastValue.current;\n }\n }\n } else {\n // previously it was a plain value, just set it as starting point\n value = lastValue;\n }\n }\n\n animation.callStart = (timestamp: Timestamp) => {\n animation.onStart(animation, value, timestamp, lastAnimation);\n };\n animation.callStart(getTimestamp());\n animation.callStart = null;\n } else if (typeof animatedProp === 'object') {\n // it is an object\n Object.keys(animatedProp).forEach((key) =>\n prepareAnimation(\n animatedProp[key],\n lastAnimation && lastAnimation[key],\n lastValue && lastValue[key]\n )\n );\n }\n}\n\nfunction runAnimations(\n animation: AnimatedStyle,\n timestamp: Timestamp,\n key: number | string,\n result: AnimatedStyle,\n animationsActive: SharedValue<boolean>\n): boolean {\n 'worklet';\n if (!animationsActive.value) {\n return true;\n }\n if (Array.isArray(animation)) {\n result[key] = [];\n let allFinished = true;\n animation.forEach((entry, index) => {\n if (\n !runAnimations(entry, timestamp, index, result[key], animationsActive)\n ) {\n allFinished = false;\n }\n });\n return allFinished;\n } else if (typeof animation === 'object' && animation.onFrame) {\n let finished = true;\n if (!animation.finished) {\n if (animation.callStart) {\n animation.callStart(timestamp);\n animation.callStart = null;\n }\n finished = animation.onFrame(animation, timestamp);\n animation.timestamp = timestamp;\n if (finished) {\n animation.finished = true;\n animation.callback && animation.callback(true /* finished */);\n }\n }\n result[key] = animation.current;\n return finished;\n } else if (typeof animation === 'object') {\n result[key] = {};\n let allFinished = true;\n Object.keys(animation).forEach((k) => {\n if (\n !runAnimations(\n animation[k],\n timestamp,\n k,\n result[key],\n animationsActive\n )\n ) {\n allFinished = false;\n }\n });\n return allFinished;\n } else {\n result[key] = animation;\n return true;\n }\n}\n\nfunction styleUpdater(\n viewDescriptors: SharedValue<Descriptor[]>,\n updater: BasicWorkletFunction<AnimatedStyle>,\n state: AnimatedState,\n maybeViewRef: ViewRefSet<any> | undefined,\n animationsActive: SharedValue<boolean>\n): void {\n 'worklet';\n const animations = state.animations ?? {};\n const newValues = updater() ?? {};\n const oldValues = state.last;\n\n let hasAnimations = false;\n for (const key in newValues) {\n const value = newValues[key];\n if (isAnimated(value)) {\n prepareAnimation(value, animations[key], oldValues[key]);\n animations[key] = value;\n hasAnimations = true;\n } else {\n delete animations[key];\n }\n }\n\n if (hasAnimations) {\n const frame = (_timestamp?: Timestamp) => {\n const { animations, last, isAnimationCancelled } = state;\n const timestamp = _timestamp ?? getTimestamp();\n if (isAnimationCancelled) {\n state.isAnimationRunning = false;\n return;\n }\n\n const updates: AnimatedStyle = {};\n let allFinished = true;\n for (const propName in animations) {\n const finished = runAnimations(\n animations[propName],\n timestamp,\n propName,\n updates,\n animationsActive\n );\n if (finished) {\n last[propName] = updates[propName];\n delete animations[propName];\n } else {\n allFinished = false;\n }\n }\n\n if (updates) {\n updateProps(viewDescriptors, updates, maybeViewRef);\n }\n\n if (!allFinished) {\n requestAnimationFrame(frame);\n } else {\n state.isAnimationRunning = false;\n }\n };\n\n state.animations = animations;\n if (!state.isAnimationRunning) {\n state.isAnimationCancelled = false;\n state.isAnimationRunning = true;\n if (_frameTimestamp) {\n frame(_frameTimestamp);\n } else {\n requestAnimationFrame(frame);\n }\n }\n state.last = Object.assign({}, oldValues, newValues);\n const style = getStyleWithoutAnimations(state.last);\n if (style) {\n updateProps(viewDescriptors, style, maybeViewRef);\n }\n } else {\n state.isAnimationCancelled = true;\n state.animations = [];\n\n const diff = styleDiff(oldValues, newValues);\n state.last = Object.assign({}, oldValues, newValues);\n if (diff) {\n updateProps(viewDescriptors, newValues, maybeViewRef);\n }\n }\n}\n\nfunction jestStyleUpdater(\n viewDescriptors: SharedValue<Descriptor[]>,\n updater: BasicWorkletFunction<AnimatedStyle>,\n state: AnimatedState,\n maybeViewRef: ViewRefSet<any> | undefined,\n animationsActive: SharedValue<boolean>,\n animatedStyle: MutableRefObject<AnimatedStyle>,\n adapters: AdapterWorkletFunction[] = []\n): void {\n 'worklet';\n const animations: AnimatedStyle = state.animations ?? {};\n const newValues = updater() ?? {};\n const oldValues = state.last;\n\n // extract animated props\n let hasAnimations = false;\n Object.keys(animations).forEach((key) => {\n const value = newValues[key];\n if (!isAnimated(value)) {\n delete animations[key];\n }\n });\n Object.keys(newValues).forEach((key) => {\n const value = newValues[key];\n if (isAnimated(value)) {\n prepareAnimation(value, animations[key], oldValues[key]);\n animations[key] = value;\n hasAnimations = true;\n }\n });\n\n function frame(_timestamp?: Timestamp) {\n const { animations, last, isAnimationCancelled } = state;\n const timestamp = _timestamp ?? getTimestamp();\n if (isAnimationCancelled) {\n state.isAnimationRunning = false;\n return;\n }\n\n const updates: AnimatedStyle = {};\n let allFinished = true;\n Object.keys(animations).forEach((propName) => {\n const finished = runAnimations(\n animations[propName],\n timestamp,\n propName,\n updates,\n animationsActive\n );\n if (finished) {\n last[propName] = updates[propName];\n delete animations[propName];\n } else {\n allFinished = false;\n }\n });\n\n if (Object.keys(updates).length) {\n updatePropsJestWrapper(\n viewDescriptors,\n updates,\n maybeViewRef,\n animatedStyle,\n adapters\n );\n }\n\n if (!allFinished) {\n requestAnimationFrame(frame);\n } else {\n state.isAnimationRunning = false;\n }\n }\n\n if (hasAnimations) {\n state.animations = animations;\n if (!state.isAnimationRunning) {\n state.isAnimationCancelled = false;\n state.isAnimationRunning = true;\n if (_frameTimestamp) {\n frame(_frameTimestamp);\n } else {\n requestAnimationFrame(frame);\n }\n }\n } else {\n state.isAnimationCancelled = true;\n state.animations = [];\n }\n\n // calculate diff\n const diff = styleDiff(oldValues, newValues);\n state.last = Object.assign({}, oldValues, newValues);\n\n if (Object.keys(diff).length !== 0) {\n updatePropsJestWrapper(\n viewDescriptors,\n diff,\n maybeViewRef,\n animatedStyle,\n adapters\n );\n }\n}\n\n// check for invalid usage of shared values in returned object\nfunction checkSharedValueUsage(\n prop: NestedObjectValues<AnimationObject>,\n currentKey?: string\n): void {\n if (Array.isArray(prop)) {\n // if it's an array (i.ex. transform) validate all its elements\n for (const element of prop) {\n checkSharedValueUsage(element, currentKey);\n }\n } else if (typeof prop === 'object' && prop.value === undefined) {\n // if it's a nested object, run validation for all its props\n for (const key of Object.keys(prop)) {\n checkSharedValueUsage(prop[key], key);\n }\n } else if (\n currentKey !== undefined &&\n typeof prop === 'object' &&\n prop.value !== undefined\n ) {\n // if shared value is passed insted of its value, throw an error\n throw new Error(\n `invalid value passed to \\`${currentKey}\\`, maybe you forgot to use \\`.value\\`?`\n );\n }\n}\n\nexport function useAnimatedStyle<T extends AnimatedStyle>(\n updater: BasicWorkletFunction<T>,\n dependencies?: DependencyList,\n adapters?: AdapterWorkletFunction | AdapterWorkletFunction[]\n): AnimatedStyleResult {\n const viewsRef: ViewRefSet<any> = makeViewsRefSet();\n const initRef = useRef<AnimationRef>();\n const inputs = Object.values(updater._closure ?? {});\n const adaptersArray: AdapterWorkletFunction[] = adapters\n ? Array.isArray(adapters)\n ? adapters\n : [adapters]\n : [];\n const adaptersHash = adapters ? buildWorkletsHash(adaptersArray) : null;\n const animationsActive = useSharedValue<boolean>(true);\n const animatedStyle: MutableRefObject<AnimatedStyle> = useRef<AnimatedStyle>(\n {}\n );\n\n // build dependencies\n if (!dependencies) {\n dependencies = [...inputs, updater.__workletHash];\n } else {\n dependencies.push(updater.__workletHash);\n }\n adaptersHash && dependencies.push(adaptersHash);\n\n if (!initRef.current) {\n const initialStyle: AnimatedStyle = initialUpdaterRun(updater);\n validateAnimatedStyles(initialStyle);\n initRef.current = {\n initial: {\n value: initialStyle,\n updater: updater,\n },\n remoteState: makeRemote<AnimatedState>({\n last: initialStyle,\n animations: {},\n isAnimationCancelled: false,\n isAnimationRunning: false,\n }),\n viewDescriptors: makeViewDescriptorsSet(),\n };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const { initial, remoteState, viewDescriptors } = initRef.current!;\n const sharableViewDescriptors = viewDescriptors.sharableViewDescriptors;\n const maybeViewRef = NativeReanimatedModule.native ? undefined : viewsRef;\n\n dependencies.push(sharableViewDescriptors);\n\n useEffect(() => {\n let fun;\n let updaterFn = updater as BasicWorkletFunctionOptional<T>;\n if (adapters) {\n updaterFn = () => {\n 'worklet';\n const newValues = updater();\n adaptersArray.forEach((adapter) => {\n adapter(newValues);\n });\n return newValues;\n };\n }\n\n if (!shouldBeUseWeb()) {\n updaterFn = () => {\n 'worklet';\n const style = updaterFn();\n parseColors(style);\n return style;\n };\n }\n\n if (isJest()) {\n fun = () => {\n 'worklet';\n jestStyleUpdater(\n sharableViewDescriptors,\n updater,\n remoteState,\n maybeViewRef,\n animationsActive,\n animatedStyle,\n adaptersArray\n );\n };\n } else {\n fun = () => {\n 'worklet';\n styleUpdater(\n sharableViewDescriptors,\n updaterFn,\n remoteState,\n maybeViewRef,\n animationsActive\n );\n };\n }\n const mapperId = startMapper(fun, inputs);\n return () => {\n stopMapper(mapperId);\n };\n }, dependencies);\n\n useEffect(() => {\n animationsActive.value = true;\n return () => {\n // initRef.current = null;\n // viewsRef = null;\n animationsActive.value = false;\n };\n }, []);\n\n checkSharedValueUsage(initial.value);\n\n if (process.env.JEST_WORKER_ID) {\n return { viewDescriptors, initial: initial, viewsRef, animatedStyle };\n } else {\n return { viewDescriptors, initial: initial, viewsRef };\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["prepareAnimation","frameTimestamp","animatedProp","lastAnimation","lastValue","Array","isArray","forEach","prop","index","onFrame","animation","value","current","undefined","callStart","timestamp","onStart","Object","keys","key","runAnimations","result","animationsActive","allFinished","entry","finished","callback","k","styleUpdater","viewDescriptors","updater","state","maybeViewRef","animations","newValues","oldValues","last","nonAnimatedNewValues","hasAnimations","hasNonAnimatedValues","isAnimated","global","__frameTimestamp","performance","now","frame","isAnimationCancelled","isAnimationRunning","updates","propName","updateProps","requestAnimationFrame","shallowEqual","jestStyleUpdater","animatedStyle","adapters","length","updatePropsJestWrapper","checkSharedValueUsage","currentKey","element","Error","useAnimatedStyle","dependencies","viewsRef","makeViewsRefSet","initRef","useRef","inputs","values","_closure","shouldBeUseWeb","__DEV__","__workletHash","adaptersArray","adaptersHash","buildWorkletsHash","useSharedValue","push","initialStyle","initialUpdaterRun","validateAnimatedStyles","initial","remoteState","makeRemote","makeViewDescriptorsSet","sharableViewDescriptors","NativeReanimatedModule","native","useEffect","fun","updaterFn","adapter","isJest","mapperId","startMapper","stopMapper","process","env","JEST_WORKER_ID"],"sources":["useAnimatedStyle.ts"],"sourcesContent":["import { MutableRefObject, useEffect, useRef } from 'react';\n\nimport { startMapper, stopMapper, makeRemote } from '../core';\nimport updateProps, { updatePropsJestWrapper } from '../UpdateProps';\nimport { initialUpdaterRun } from '../animation';\nimport NativeReanimatedModule from '../NativeReanimated';\nimport { useSharedValue } from './useSharedValue';\nimport {\n buildWorkletsHash,\n isAnimated,\n shallowEqual,\n validateAnimatedStyles,\n} from './utils';\nimport { DependencyList, Descriptor } from './commonTypes';\nimport {\n makeViewDescriptorsSet,\n makeViewsRefSet,\n ViewDescriptorsSet,\n ViewRefSet,\n} from '../ViewDescriptorsSet';\nimport { isJest, shouldBeUseWeb } from '../PlatformChecker';\nimport {\n AnimationObject,\n Timestamp,\n AdapterWorkletFunction,\n AnimatedStyle,\n BasicWorkletFunction,\n BasicWorkletFunctionOptional,\n NestedObjectValues,\n SharedValue,\n StyleProps,\n} from '../commonTypes';\nexport interface AnimatedStyleResult {\n viewDescriptors: ViewDescriptorsSet;\n initial: AnimatedStyle;\n viewsRef: ViewRefSet<any>;\n animatedStyle?: MutableRefObject<AnimatedStyle>;\n}\n\ninterface AnimatedState {\n last: AnimatedStyle;\n animations: AnimatedStyle;\n isAnimationRunning: boolean;\n isAnimationCancelled: boolean;\n}\n\ninterface AnimationRef {\n initial: {\n value: AnimatedStyle;\n updater: () => AnimatedStyle;\n };\n remoteState: AnimatedState;\n viewDescriptors: ViewDescriptorsSet;\n}\n\nfunction prepareAnimation(\n frameTimestamp: number,\n animatedProp: AnimatedStyle,\n lastAnimation: AnimatedStyle,\n lastValue: AnimatedStyle\n): void {\n 'worklet';\n if (Array.isArray(animatedProp)) {\n animatedProp.forEach((prop, index) => {\n prepareAnimation(\n frameTimestamp,\n prop,\n lastAnimation && lastAnimation[index],\n lastValue && lastValue[index]\n );\n });\n // return animatedProp;\n }\n if (typeof animatedProp === 'object' && animatedProp.onFrame) {\n const animation = animatedProp;\n\n let value = animation.current;\n if (lastValue !== undefined) {\n if (typeof lastValue === 'object') {\n if (lastValue.value !== undefined) {\n // previously it was a shared value\n value = lastValue.value;\n } else if (lastValue.onFrame !== undefined) {\n if (lastAnimation?.current !== undefined) {\n // it was an animation before, copy its state\n value = lastAnimation.current;\n } else if (lastValue?.current !== undefined) {\n // it was initialized\n value = lastValue.current;\n }\n }\n } else {\n // previously it was a plain value, just set it as starting point\n value = lastValue;\n }\n }\n\n animation.callStart = (timestamp: Timestamp) => {\n animation.onStart(animation, value, timestamp, lastAnimation);\n };\n animation.callStart(frameTimestamp);\n animation.callStart = null;\n } else if (typeof animatedProp === 'object') {\n // it is an object\n Object.keys(animatedProp).forEach((key) =>\n prepareAnimation(\n frameTimestamp,\n animatedProp[key],\n lastAnimation && lastAnimation[key],\n lastValue && lastValue[key]\n )\n );\n }\n}\n\nfunction runAnimations(\n animation: AnimatedStyle,\n timestamp: Timestamp,\n key: number | string,\n result: AnimatedStyle,\n animationsActive: SharedValue<boolean>\n): boolean {\n 'worklet';\n if (!animationsActive.value) {\n return true;\n }\n if (Array.isArray(animation)) {\n result[key] = [];\n let allFinished = true;\n animation.forEach((entry, index) => {\n if (\n !runAnimations(entry, timestamp, index, result[key], animationsActive)\n ) {\n allFinished = false;\n }\n });\n return allFinished;\n } else if (typeof animation === 'object' && animation.onFrame) {\n let finished = true;\n if (!animation.finished) {\n if (animation.callStart) {\n animation.callStart(timestamp);\n animation.callStart = null;\n }\n finished = animation.onFrame(animation, timestamp);\n animation.timestamp = timestamp;\n if (finished) {\n animation.finished = true;\n animation.callback && animation.callback(true /* finished */);\n }\n }\n result[key] = animation.current;\n return finished;\n } else if (typeof animation === 'object') {\n result[key] = {};\n let allFinished = true;\n Object.keys(animation).forEach((k) => {\n if (\n !runAnimations(\n animation[k],\n timestamp,\n k,\n result[key],\n animationsActive\n )\n ) {\n allFinished = false;\n }\n });\n return allFinished;\n } else {\n result[key] = animation;\n return true;\n }\n}\n\nfunction styleUpdater(\n viewDescriptors: SharedValue<Descriptor[]>,\n updater: BasicWorkletFunction<AnimatedStyle>,\n state: AnimatedState,\n maybeViewRef: ViewRefSet<any> | undefined,\n animationsActive: SharedValue<boolean>\n): void {\n 'worklet';\n const animations = state.animations ?? {};\n const newValues = updater() ?? {};\n const oldValues = state.last;\n const nonAnimatedNewValues: StyleProps = {};\n\n let hasAnimations = false;\n let frameTimestamp: number | undefined;\n let hasNonAnimatedValues = false;\n for (const key in newValues) {\n const value = newValues[key];\n if (isAnimated(value)) {\n frameTimestamp = global.__frameTimestamp || performance.now();\n prepareAnimation(frameTimestamp, value, animations[key], oldValues[key]);\n animations[key] = value;\n hasAnimations = true;\n } else {\n hasNonAnimatedValues = true;\n nonAnimatedNewValues[key] = value;\n delete animations[key];\n }\n }\n\n if (hasAnimations) {\n const frame = (timestamp: Timestamp) => {\n const { animations, last, isAnimationCancelled } = state;\n if (isAnimationCancelled) {\n state.isAnimationRunning = false;\n return;\n }\n\n const updates: AnimatedStyle = {};\n let allFinished = true;\n for (const propName in animations) {\n const finished = runAnimations(\n animations[propName],\n timestamp,\n propName,\n updates,\n animationsActive\n );\n if (finished) {\n last[propName] = updates[propName];\n delete animations[propName];\n } else {\n allFinished = false;\n }\n }\n\n if (updates) {\n updateProps(viewDescriptors, updates, maybeViewRef);\n }\n\n if (!allFinished) {\n requestAnimationFrame(frame);\n } else {\n state.isAnimationRunning = false;\n }\n };\n\n state.animations = animations;\n if (!state.isAnimationRunning) {\n state.isAnimationCancelled = false;\n state.isAnimationRunning = true;\n frame(frameTimestamp!);\n }\n\n if (hasNonAnimatedValues) {\n updateProps(viewDescriptors, nonAnimatedNewValues, maybeViewRef);\n }\n } else {\n state.isAnimationCancelled = true;\n state.animations = [];\n\n if (!shallowEqual(oldValues, newValues)) {\n updateProps(viewDescriptors, newValues, maybeViewRef);\n }\n }\n state.last = newValues;\n}\n\nfunction jestStyleUpdater(\n viewDescriptors: SharedValue<Descriptor[]>,\n updater: BasicWorkletFunction<AnimatedStyle>,\n state: AnimatedState,\n maybeViewRef: ViewRefSet<any> | undefined,\n animationsActive: SharedValue<boolean>,\n animatedStyle: MutableRefObject<AnimatedStyle>,\n adapters: AdapterWorkletFunction[] = []\n): void {\n 'worklet';\n const animations: AnimatedStyle = state.animations ?? {};\n const newValues = updater() ?? {};\n const oldValues = state.last;\n\n // extract animated props\n let hasAnimations = false;\n let frameTimestamp: number | undefined;\n Object.keys(animations).forEach((key) => {\n const value = newValues[key];\n if (!isAnimated(value)) {\n delete animations[key];\n }\n });\n Object.keys(newValues).forEach((key) => {\n const value = newValues[key];\n if (isAnimated(value)) {\n frameTimestamp = global.__frameTimestamp || performance.now();\n prepareAnimation(frameTimestamp, value, animations[key], oldValues[key]);\n animations[key] = value;\n hasAnimations = true;\n }\n });\n\n function frame(timestamp: Timestamp) {\n const { animations, last, isAnimationCancelled } = state;\n if (isAnimationCancelled) {\n state.isAnimationRunning = false;\n return;\n }\n\n const updates: AnimatedStyle = {};\n let allFinished = true;\n Object.keys(animations).forEach((propName) => {\n const finished = runAnimations(\n animations[propName],\n timestamp,\n propName,\n updates,\n animationsActive\n );\n if (finished) {\n last[propName] = updates[propName];\n delete animations[propName];\n } else {\n allFinished = false;\n }\n });\n\n if (Object.keys(updates).length) {\n updatePropsJestWrapper(\n viewDescriptors,\n updates,\n maybeViewRef,\n animatedStyle,\n adapters\n );\n }\n\n if (!allFinished) {\n requestAnimationFrame(frame);\n } else {\n state.isAnimationRunning = false;\n }\n }\n\n if (hasAnimations) {\n state.animations = animations;\n if (!state.isAnimationRunning) {\n state.isAnimationCancelled = false;\n state.isAnimationRunning = true;\n frame(frameTimestamp!);\n }\n } else {\n state.isAnimationCancelled = true;\n state.animations = [];\n }\n\n // calculate diff\n state.last = newValues;\n\n if (!shallowEqual(oldValues, newValues)) {\n updatePropsJestWrapper(\n viewDescriptors,\n newValues,\n maybeViewRef,\n animatedStyle,\n adapters\n );\n }\n}\n\n// check for invalid usage of shared values in returned object\nfunction checkSharedValueUsage(\n prop: NestedObjectValues<AnimationObject>,\n currentKey?: string\n): void {\n if (Array.isArray(prop)) {\n // if it's an array (i.ex. transform) validate all its elements\n for (const element of prop) {\n checkSharedValueUsage(element, currentKey);\n }\n } else if (typeof prop === 'object' && prop.value === undefined) {\n // if it's a nested object, run validation for all its props\n for (const key of Object.keys(prop)) {\n checkSharedValueUsage(prop[key], key);\n }\n } else if (\n currentKey !== undefined &&\n typeof prop === 'object' &&\n prop.value !== undefined\n ) {\n // if shared value is passed insted of its value, throw an error\n throw new Error(\n `invalid value passed to \\`${currentKey}\\`, maybe you forgot to use \\`.value\\`?`\n );\n }\n}\n\nexport function useAnimatedStyle<T extends AnimatedStyle>(\n updater: BasicWorkletFunction<T>,\n dependencies?: DependencyList,\n adapters?: AdapterWorkletFunction | AdapterWorkletFunction[]\n): AnimatedStyleResult {\n const viewsRef: ViewRefSet<any> = makeViewsRefSet();\n const initRef = useRef<AnimationRef>();\n let inputs = Object.values(updater._closure ?? {});\n if (shouldBeUseWeb()) {\n if (!inputs.length && dependencies?.length) {\n // let web work without a Babel/SWC plugin\n inputs = dependencies;\n }\n if (__DEV__ && !inputs.length && !dependencies && !updater.__workletHash) {\n throw new Error(\n `useAnimatedStyle was used without a dependency array or Babel plugin. Please explicitly pass a dependency array, or enable the Babel/SWC plugin.\n\nFor more, see the docs: https://docs.swmansion.com/react-native-reanimated/docs/fundamentals/web-support#web-without-a-babel-plugin`\n );\n }\n }\n const adaptersArray: AdapterWorkletFunction[] = adapters\n ? Array.isArray(adapters)\n ? adapters\n : [adapters]\n : [];\n const adaptersHash = adapters ? buildWorkletsHash(adaptersArray) : null;\n const animationsActive = useSharedValue<boolean>(true);\n const animatedStyle: MutableRefObject<AnimatedStyle> = useRef<AnimatedStyle>(\n {}\n );\n\n // build dependencies\n if (!dependencies) {\n dependencies = [...inputs, updater.__workletHash];\n } else {\n dependencies.push(updater.__workletHash);\n }\n adaptersHash && dependencies.push(adaptersHash);\n\n if (!initRef.current) {\n const initialStyle: AnimatedStyle = initialUpdaterRun(updater);\n validateAnimatedStyles(initialStyle);\n initRef.current = {\n initial: {\n value: initialStyle,\n updater: updater,\n },\n remoteState: makeRemote<AnimatedState>({\n last: initialStyle,\n animations: {},\n isAnimationCancelled: false,\n isAnimationRunning: false,\n }),\n viewDescriptors: makeViewDescriptorsSet(),\n };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const { initial, remoteState, viewDescriptors } = initRef.current!;\n const sharableViewDescriptors = viewDescriptors.sharableViewDescriptors;\n const maybeViewRef = NativeReanimatedModule.native ? undefined : viewsRef;\n\n dependencies.push(sharableViewDescriptors);\n\n useEffect(() => {\n let fun;\n let updaterFn = updater as BasicWorkletFunctionOptional<T>;\n if (adapters) {\n updaterFn = () => {\n 'worklet';\n const newValues = updater();\n adaptersArray.forEach((adapter) => {\n adapter(newValues);\n });\n return newValues;\n };\n }\n\n if (isJest()) {\n fun = () => {\n 'worklet';\n jestStyleUpdater(\n sharableViewDescriptors,\n updater,\n remoteState,\n maybeViewRef,\n animationsActive,\n animatedStyle,\n adaptersArray\n );\n };\n } else {\n fun = () => {\n 'worklet';\n styleUpdater(\n sharableViewDescriptors,\n updaterFn,\n remoteState,\n maybeViewRef,\n animationsActive\n );\n };\n }\n const mapperId = startMapper(fun, inputs);\n return () => {\n stopMapper(mapperId);\n };\n }, dependencies);\n\n useEffect(() => {\n animationsActive.value = true;\n return () => {\n animationsActive.value = false;\n };\n }, []);\n\n checkSharedValueUsage(initial.value);\n\n if (process.env.JEST_WORKER_ID) {\n return { viewDescriptors, initial: initial, viewsRef, animatedStyle };\n } else {\n return { viewDescriptors, initial: initial, viewsRef };\n }\n}\n"],"mappings":"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"}
|
|
@@ -11,9 +11,21 @@ var _animation = require("../animation");
|
|
|
11
11
|
|
|
12
12
|
var _core = require("../core");
|
|
13
13
|
|
|
14
|
+
var _PlatformChecker = require("../PlatformChecker");
|
|
15
|
+
|
|
14
16
|
function useDerivedValue(processor, dependencies) {
|
|
15
17
|
const initRef = (0, _react.useRef)(null);
|
|
16
|
-
|
|
18
|
+
let inputs = Object.values(processor._closure ?? {});
|
|
19
|
+
|
|
20
|
+
if ((0, _PlatformChecker.shouldBeUseWeb)()) {
|
|
21
|
+
var _dependencies;
|
|
22
|
+
|
|
23
|
+
if (!inputs.length && (_dependencies = dependencies) !== null && _dependencies !== void 0 && _dependencies.length) {
|
|
24
|
+
// let web work without a Babel/SWC plugin
|
|
25
|
+
inputs = dependencies;
|
|
26
|
+
}
|
|
27
|
+
} // build dependencies
|
|
28
|
+
|
|
17
29
|
|
|
18
30
|
if (dependencies === undefined) {
|
|
19
31
|
dependencies = [...inputs, processor.__workletHash];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useDerivedValue","processor","dependencies","initRef","useRef","inputs","Object","values","_closure","undefined","__workletHash","push","current","makeMutable","initialUpdaterRun","sharedValue","useEffect","fun","value","mapperId","startMapper","stopMapper"],"sources":["useDerivedValue.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport { initialUpdaterRun } from '../animation';\nimport { BasicWorkletFunction, SharedValue } from '../commonTypes';\nimport { makeMutable, startMapper, stopMapper } from '../core';\nimport { DependencyList } from './commonTypes';\n\nexport type DerivedValue<T> = Readonly<SharedValue<T>>;\n\nexport function useDerivedValue<T>(\n processor: BasicWorkletFunction<T>,\n dependencies: DependencyList\n): DerivedValue<T> {\n const initRef = useRef<SharedValue<T> | null>(null);\n
|
|
1
|
+
{"version":3,"names":["useDerivedValue","processor","dependencies","initRef","useRef","inputs","Object","values","_closure","shouldBeUseWeb","length","undefined","__workletHash","push","current","makeMutable","initialUpdaterRun","sharedValue","useEffect","fun","value","mapperId","startMapper","stopMapper"],"sources":["useDerivedValue.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport { initialUpdaterRun } from '../animation';\nimport { BasicWorkletFunction, SharedValue } from '../commonTypes';\nimport { makeMutable, startMapper, stopMapper } from '../core';\nimport { DependencyList } from './commonTypes';\nimport { shouldBeUseWeb } from '../PlatformChecker';\n\nexport type DerivedValue<T> = Readonly<SharedValue<T>>;\n\nexport function useDerivedValue<T>(\n processor: BasicWorkletFunction<T>,\n dependencies: DependencyList\n): DerivedValue<T> {\n const initRef = useRef<SharedValue<T> | null>(null);\n let inputs = Object.values(processor._closure ?? {});\n if (shouldBeUseWeb()) {\n if (!inputs.length && dependencies?.length) {\n // let web work without a Babel/SWC plugin\n inputs = dependencies;\n }\n }\n\n // build dependencies\n if (dependencies === undefined) {\n dependencies = [...inputs, processor.__workletHash];\n } else {\n dependencies.push(processor.__workletHash);\n }\n\n if (initRef.current === null) {\n initRef.current = makeMutable(initialUpdaterRun(processor));\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const sharedValue: SharedValue<T> = initRef.current!;\n\n useEffect(() => {\n const fun = () => {\n 'worklet';\n sharedValue.value = processor();\n };\n const mapperId = startMapper(fun, inputs, [sharedValue]);\n return () => {\n stopMapper(mapperId);\n };\n }, dependencies);\n\n useEffect(() => {\n return () => {\n initRef.current = null;\n };\n }, []);\n\n return sharedValue;\n}\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AAEA;;AAIO,SAASA,eAAT,CACLC,SADK,EAELC,YAFK,EAGY;EACjB,MAAMC,OAAO,GAAG,IAAAC,aAAA,EAA8B,IAA9B,CAAhB;EACA,IAAIC,MAAM,GAAGC,MAAM,CAACC,MAAP,CAAcN,SAAS,CAACO,QAAV,IAAsB,EAApC,CAAb;;EACA,IAAI,IAAAC,+BAAA,GAAJ,EAAsB;IAAA;;IACpB,IAAI,CAACJ,MAAM,CAACK,MAAR,qBAAkBR,YAAlB,0CAAkB,cAAcQ,MAApC,EAA4C;MAC1C;MACAL,MAAM,GAAGH,YAAT;IACD;EACF,CARgB,CAUjB;;;EACA,IAAIA,YAAY,KAAKS,SAArB,EAAgC;IAC9BT,YAAY,GAAG,CAAC,GAAGG,MAAJ,EAAYJ,SAAS,CAACW,aAAtB,CAAf;EACD,CAFD,MAEO;IACLV,YAAY,CAACW,IAAb,CAAkBZ,SAAS,CAACW,aAA5B;EACD;;EAED,IAAIT,OAAO,CAACW,OAAR,KAAoB,IAAxB,EAA8B;IAC5BX,OAAO,CAACW,OAAR,GAAkB,IAAAC,iBAAA,EAAY,IAAAC,4BAAA,EAAkBf,SAAlB,CAAZ,CAAlB;EACD,CAnBgB,CAqBjB;;;EACA,MAAMgB,WAA2B,GAAGd,OAAO,CAACW,OAA5C;EAEA,IAAAI,gBAAA,EAAU,MAAM;IACd,MAAMC,GAAG,GAAG,MAAM;MAChB;;MACAF,WAAW,CAACG,KAAZ,GAAoBnB,SAAS,EAA7B;IACD,CAHD;;IAIA,MAAMoB,QAAQ,GAAG,IAAAC,iBAAA,EAAYH,GAAZ,EAAiBd,MAAjB,EAAyB,CAACY,WAAD,CAAzB,CAAjB;IACA,OAAO,MAAM;MACX,IAAAM,gBAAA,EAAWF,QAAX;IACD,CAFD;EAGD,CATD,EASGnB,YATH;EAWA,IAAAgB,gBAAA,EAAU,MAAM;IACd,OAAO,MAAM;MACXf,OAAO,CAACW,OAAR,GAAkB,IAAlB;IACD,CAFD;EAGD,CAJD,EAIG,EAJH;EAMA,OAAOG,WAAP;AACD"}
|
|
@@ -13,7 +13,7 @@ var _utils = require("./utils");
|
|
|
13
13
|
|
|
14
14
|
var _useSharedValue = require("./useSharedValue");
|
|
15
15
|
|
|
16
|
-
const
|
|
16
|
+
const scrollEventNames = ['onScroll', 'onScrollBeginDrag', 'onScrollEndDrag', 'onMomentumScrollBegin', 'onMomentumScrollEnd'];
|
|
17
17
|
|
|
18
18
|
function useScrollViewOffset(aref) {
|
|
19
19
|
const offsetRef = (0, _react.useRef)((0, _useSharedValue.useSharedValue)(0));
|
|
@@ -21,7 +21,7 @@ function useScrollViewOffset(aref) {
|
|
|
21
21
|
'worklet';
|
|
22
22
|
|
|
23
23
|
offsetRef.current.value = event.contentOffset.x === 0 ? event.contentOffset.y : event.contentOffset.x;
|
|
24
|
-
},
|
|
24
|
+
}, scrollEventNames);
|
|
25
25
|
(0, _react.useEffect)(() => {
|
|
26
26
|
var _event$current;
|
|
27
27
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["scrollEventNames","useScrollViewOffset","aref","offsetRef","useRef","useSharedValue","event","useEvent","current","value","contentOffset","x","y","useEffect","viewTag","findNodeHandle","registerForEvents"],"sources":["useScrollViewOffset.ts"],"sourcesContent":["import { RefObject, useEffect, useRef } from 'react';\n\nimport type Animated from 'react-native-reanimated';\nimport { ScrollEvent } from './useAnimatedScrollHandler';\nimport { SharedValue } from '../commonTypes';\nimport { findNodeHandle } from 'react-native';\nimport { useEvent } from './utils';\nimport { useSharedValue } from './useSharedValue';\n\nconst scrollEventNames = [\n 'onScroll',\n 'onScrollBeginDrag',\n 'onScrollEndDrag',\n 'onMomentumScrollBegin',\n 'onMomentumScrollEnd',\n];\n\nexport function useScrollViewOffset(\n aref: RefObject<Animated.ScrollView>\n): SharedValue<number> {\n const offsetRef = useRef(useSharedValue(0));\n\n const event = useEvent<ScrollEvent>((event: ScrollEvent) => {\n 'worklet';\n offsetRef.current.value =\n event.contentOffset.x === 0\n ? event.contentOffset.y\n : event.contentOffset.x;\n }, scrollEventNames);\n\n useEffect(() => {\n const viewTag = findNodeHandle(aref.current);\n event.current?.registerForEvents(viewTag as number);\n }, [aref.current]);\n\n return offsetRef.current;\n}\n"],"mappings":";;;;;;;AAAA;;AAKA;;AACA;;AACA;;AAEA,MAAMA,gBAAgB,GAAG,CACvB,UADuB,EAEvB,mBAFuB,EAGvB,iBAHuB,EAIvB,uBAJuB,EAKvB,qBALuB,CAAzB;;AAQO,SAASC,mBAAT,CACLC,IADK,EAEgB;EACrB,MAAMC,SAAS,GAAG,IAAAC,aAAA,EAAO,IAAAC,8BAAA,EAAe,CAAf,CAAP,CAAlB;EAEA,MAAMC,KAAK,GAAG,IAAAC,eAAA,EAAuBD,KAAD,IAAwB;IAC1D;;IACAH,SAAS,CAACK,OAAV,CAAkBC,KAAlB,GACEH,KAAK,CAACI,aAAN,CAAoBC,CAApB,KAA0B,CAA1B,GACIL,KAAK,CAACI,aAAN,CAAoBE,CADxB,GAEIN,KAAK,CAACI,aAAN,CAAoBC,CAH1B;EAID,CANa,EAMXX,gBANW,CAAd;EAQA,IAAAa,gBAAA,EAAU,MAAM;IAAA;;IACd,MAAMC,OAAO,GAAG,IAAAC,2BAAA,EAAeb,IAAI,CAACM,OAApB,CAAhB;IACA,kBAAAF,KAAK,CAACE,OAAN,kEAAeQ,iBAAf,CAAiCF,OAAjC;EACD,CAHD,EAGG,CAACZ,IAAI,CAACM,OAAN,CAHH;EAKA,OAAOL,SAAS,CAACK,OAAjB;AACD"}
|
|
@@ -6,12 +6,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.areDependenciesEqual = areDependenciesEqual;
|
|
7
7
|
exports.buildDependencies = buildDependencies;
|
|
8
8
|
exports.buildWorkletsHash = buildWorkletsHash;
|
|
9
|
-
exports.canApplyOptimalisation = canApplyOptimalisation;
|
|
10
|
-
exports.getStyleWithoutAnimations = getStyleWithoutAnimations;
|
|
11
9
|
exports.hasColorProps = hasColorProps;
|
|
12
10
|
exports.isAnimated = isAnimated;
|
|
13
11
|
exports.parseColors = parseColors;
|
|
14
|
-
exports.
|
|
12
|
+
exports.shallowEqual = shallowEqual;
|
|
15
13
|
exports.useEvent = useEvent;
|
|
16
14
|
exports.useHandler = useHandler;
|
|
17
15
|
exports.validateAnimatedStyles = void 0;
|
|
@@ -153,84 +151,39 @@ function parseColors(updates) {
|
|
|
153
151
|
}
|
|
154
152
|
}
|
|
155
153
|
|
|
156
|
-
function canApplyOptimalisation(upadterFn) {
|
|
157
|
-
const FUNCTIONLESS_FLAG = 0b00000001;
|
|
158
|
-
const STATEMENTLESS_FLAG = 0b00000010; // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
159
|
-
|
|
160
|
-
const optimalization = upadterFn.__optimalization;
|
|
161
|
-
return optimalization & FUNCTIONLESS_FLAG && optimalization & STATEMENTLESS_FLAG;
|
|
162
|
-
}
|
|
163
|
-
|
|
164
154
|
function isAnimated(prop) {
|
|
165
155
|
'worklet';
|
|
166
156
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
if (Array.isArray(currentProp)) {
|
|
173
|
-
for (const item of currentProp) {
|
|
174
|
-
propsToCheck.push(item);
|
|
175
|
-
}
|
|
176
|
-
} else if ((currentProp === null || currentProp === void 0 ? void 0 : currentProp.onFrame) !== undefined) {
|
|
157
|
+
if (Array.isArray(prop)) {
|
|
158
|
+
return prop.some(isAnimated);
|
|
159
|
+
} else if (typeof prop === 'object') {
|
|
160
|
+
if (prop.onFrame !== undefined) {
|
|
177
161
|
return true;
|
|
178
|
-
} else
|
|
179
|
-
|
|
180
|
-
propsToCheck.push(item);
|
|
181
|
-
}
|
|
182
|
-
} // if none of the above, it's not the animated prop, check next one
|
|
183
|
-
|
|
184
|
-
} // when none of the props were animated return false
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
return false;
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
function styleDiff(oldStyle, newStyle) {
|
|
191
|
-
'worklet';
|
|
192
|
-
|
|
193
|
-
const diff = {};
|
|
194
|
-
|
|
195
|
-
for (const key in oldStyle) {
|
|
196
|
-
if (newStyle[key] === undefined) {
|
|
197
|
-
diff[key] = null;
|
|
162
|
+
} else {
|
|
163
|
+
return Object.values(prop).some(isAnimated);
|
|
198
164
|
}
|
|
199
165
|
}
|
|
200
166
|
|
|
201
|
-
|
|
202
|
-
const value = newStyle[key];
|
|
203
|
-
const oldValue = oldStyle[key];
|
|
204
|
-
|
|
205
|
-
if (isAnimated(value)) {
|
|
206
|
-
// do nothing
|
|
207
|
-
continue;
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
if (oldValue !== value) {
|
|
211
|
-
diff[key] = value;
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
return diff;
|
|
167
|
+
return false;
|
|
216
168
|
}
|
|
217
169
|
|
|
218
|
-
function
|
|
170
|
+
function shallowEqual(a, b) {
|
|
219
171
|
'worklet';
|
|
220
172
|
|
|
221
|
-
const
|
|
173
|
+
const aKeys = Object.keys(a);
|
|
174
|
+
const bKeys = Object.keys(b);
|
|
222
175
|
|
|
223
|
-
|
|
224
|
-
|
|
176
|
+
if (aKeys.length !== bKeys.length) {
|
|
177
|
+
return false;
|
|
178
|
+
}
|
|
225
179
|
|
|
226
|
-
|
|
227
|
-
|
|
180
|
+
for (let i = 0; i < aKeys.length; i++) {
|
|
181
|
+
if (a[aKeys[i]] !== b[aKeys[i]]) {
|
|
182
|
+
return false;
|
|
228
183
|
}
|
|
229
|
-
|
|
230
|
-
diff[key] = value;
|
|
231
184
|
}
|
|
232
185
|
|
|
233
|
-
return
|
|
186
|
+
return true;
|
|
234
187
|
}
|
|
235
188
|
|
|
236
189
|
const validateAnimatedStyles = styles => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEvent","handler","eventNames","rebuild","initRef","useRef","current","WorkletEventHandler","updateWorklet","useHandler","handlers","dependencies","context","makeRemote","savedDependencies","useEffect","buildDependencies","doDependenciesDiffer","areDependenciesEqual","useWeb","isWeb","isJest","buildWorkletsHash","Object","values","reduce","acc","worklet","__workletHash","toString","handlersList","filter","undefined","map","workletHash","closure","_closure","push","nextDeps","prevDeps","is","x","y","objectIs","areHookInputsEqual","length","i","hasColorProps","updates","colorPropsSet","Set","colorProps","key","has","parseColors","indexOf","processedColor","processColor","canApplyOptimalisation","upadterFn","FUNCTIONLESS_FLAG","STATEMENTLESS_FLAG","optimalization","__optimalization","isAnimated","prop","propsToCheck","currentProp","pop","Array","isArray","item","onFrame","styleDiff","oldStyle","newStyle","diff","value","oldValue","getStyleWithoutAnimations","validateAnimatedStyles","styles","Error"],"sources":["utils.ts"],"sourcesContent":["import { MutableRefObject, useEffect, useRef } from 'react';\nimport { processColor } from '../Colors';\nimport {\n AnimatedStyle,\n Context,\n NativeEvent,\n NestedObjectValues,\n StyleProps,\n WorkletFunction,\n AnimationObject,\n} from '../commonTypes';\nimport { makeRemote } from '../core';\nimport { isWeb, isJest } from '../PlatformChecker';\nimport { colorProps } from '../UpdateProps';\nimport WorkletEventHandler from '../WorkletEventHandler';\nimport { ContextWithDependencies, DependencyList } from './commonTypes';\n\ninterface Handler<T, TContext extends Context> extends WorkletFunction {\n (event: T, context: TContext): void;\n}\n\ninterface Handlers<T, TContext extends Context> {\n [key: string]: Handler<T, TContext> | undefined;\n}\n\nexport interface UseHandlerContext<TContext extends Context> {\n context: TContext;\n doDependenciesDiffer: boolean;\n useWeb: boolean;\n}\n\nexport function useEvent<T extends NativeEvent<T>>(\n handler: (event: T) => void,\n eventNames: string[] = [],\n rebuild = false\n): MutableRefObject<WorkletEventHandler<T> | null> {\n const initRef = useRef<WorkletEventHandler<T> | null>(null);\n if (initRef.current === null) {\n initRef.current = new WorkletEventHandler(handler, eventNames);\n } else if (rebuild) {\n initRef.current.updateWorklet(handler);\n }\n\n return initRef;\n}\n\nexport function useHandler<T, TContext extends Context>(\n handlers: Handlers<T, TContext>,\n dependencies?: DependencyList\n): UseHandlerContext<TContext> {\n const initRef = useRef<ContextWithDependencies<TContext> | null>(null);\n if (initRef.current === null) {\n initRef.current = {\n context: makeRemote<TContext>({} as TContext),\n savedDependencies: [],\n };\n }\n\n useEffect(() => {\n return () => {\n initRef.current = null;\n };\n }, []);\n\n const { context, savedDependencies } = initRef.current;\n\n dependencies = buildDependencies(dependencies, handlers);\n\n const doDependenciesDiffer = !areDependenciesEqual(\n dependencies,\n savedDependencies\n );\n initRef.current.savedDependencies = dependencies;\n const useWeb = isWeb() || isJest();\n\n return { context, doDependenciesDiffer, useWeb };\n}\n\n// builds one big hash from multiple worklets' hashes\nexport function buildWorkletsHash(\n handlers: Record<string, WorkletFunction> | Array<WorkletFunction>\n): string {\n return Object.values(handlers).reduce(\n (acc: string, worklet: WorkletFunction) =>\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n acc + worklet.__workletHash!.toString(),\n ''\n );\n}\n\n// builds dependencies array for gesture handlers\nexport function buildDependencies(\n dependencies: DependencyList,\n handlers: Record<string, WorkletFunction | undefined>\n): Array<unknown> {\n const handlersList: WorkletFunction[] = Object.values(handlers).filter(\n (handler) => handler !== undefined\n ) as WorkletFunction[];\n if (!dependencies) {\n dependencies = handlersList.map((handler) => {\n return {\n workletHash: handler.__workletHash,\n closure: handler._closure,\n };\n });\n } else {\n dependencies.push(buildWorkletsHash(handlersList));\n }\n return dependencies;\n}\n\n// this is supposed to work as useEffect comparison\nexport function areDependenciesEqual(\n nextDeps: DependencyList,\n prevDeps: DependencyList\n): boolean {\n function is(x: number, y: number) {\n /* eslint-disable no-self-compare */\n return (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y);\n /* eslint-enable no-self-compare */\n }\n const objectIs: (nextDeps: unknown, prevDeps: unknown) => boolean =\n typeof Object.is === 'function' ? Object.is : is;\n\n function areHookInputsEqual(\n nextDeps: DependencyList,\n prevDeps: DependencyList\n ): boolean {\n if (!nextDeps || !prevDeps || prevDeps.length !== nextDeps.length) {\n return false;\n }\n for (let i = 0; i < prevDeps.length; ++i) {\n if (!objectIs(nextDeps[i], prevDeps[i])) {\n return false;\n }\n }\n return true;\n }\n\n return areHookInputsEqual(nextDeps, prevDeps);\n}\n\nexport function hasColorProps(updates: AnimatedStyle): boolean {\n const colorPropsSet = new Set(colorProps);\n for (const key in updates) {\n if (colorPropsSet.has(key)) {\n return true;\n }\n }\n return false;\n}\n\nexport function parseColors(updates: AnimatedStyle): void {\n 'worklet';\n for (const key in updates) {\n if (colorProps.indexOf(key) !== -1) {\n // value could be an animation in which case processColor will recognize it and will return undefined\n // -> in such a case we don't want to override style of that key\n const processedColor = processColor(updates[key]);\n if (processedColor !== undefined) {\n updates[key] = processedColor;\n }\n }\n }\n}\n\nexport function canApplyOptimalisation(upadterFn: WorkletFunction): number {\n const FUNCTIONLESS_FLAG = 0b00000001;\n const STATEMENTLESS_FLAG = 0b00000010;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const optimalization = upadterFn.__optimalization!;\n return (\n optimalization & FUNCTIONLESS_FLAG && optimalization & STATEMENTLESS_FLAG\n );\n}\n\nexport function isAnimated(prop: NestedObjectValues<AnimationObject>): boolean {\n 'worklet';\n const propsToCheck: NestedObjectValues<AnimationObject>[] = [prop];\n while (propsToCheck.length > 0) {\n const currentProp: NestedObjectValues<AnimationObject> =\n propsToCheck.pop() as NestedObjectValues<AnimationObject>;\n if (Array.isArray(currentProp)) {\n for (const item of currentProp) {\n propsToCheck.push(item);\n }\n } else if (currentProp?.onFrame !== undefined) {\n return true;\n } else if (typeof currentProp === 'object') {\n for (const item of Object.values(currentProp)) {\n propsToCheck.push(item);\n }\n }\n // if none of the above, it's not the animated prop, check next one\n }\n\n // when none of the props were animated return false\n return false;\n}\n\nexport function styleDiff<T extends AnimatedStyle>(\n oldStyle: AnimatedStyle,\n newStyle: AnimatedStyle\n): Partial<T> {\n 'worklet';\n const diff: any = {};\n for (const key in oldStyle) {\n if (newStyle[key] === undefined) {\n diff[key] = null;\n }\n }\n for (const key in newStyle) {\n const value = newStyle[key];\n const oldValue = oldStyle[key];\n\n if (isAnimated(value)) {\n // do nothing\n continue;\n }\n if (oldValue !== value) {\n diff[key] = value;\n }\n }\n return diff;\n}\n\nexport function getStyleWithoutAnimations(newStyle: AnimatedStyle): StyleProps {\n 'worklet';\n const diff: StyleProps = {};\n\n for (const key in newStyle) {\n const value = newStyle[key];\n if (isAnimated(value)) {\n continue;\n }\n diff[key] = value;\n }\n return diff;\n}\n\nexport const validateAnimatedStyles = (styles: AnimatedStyle): void => {\n 'worklet';\n if (typeof styles !== 'object') {\n throw new Error(\n `useAnimatedStyle has to return an object, found ${typeof styles} instead`\n );\n } else if (Array.isArray(styles)) {\n throw new Error(\n 'useAnimatedStyle has to return an object and cannot return static styles combined with dynamic ones. Please do merging where a component receives props.'\n );\n }\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["useEvent","handler","eventNames","rebuild","initRef","useRef","current","WorkletEventHandler","updateWorklet","useHandler","handlers","dependencies","context","makeRemote","savedDependencies","useEffect","buildDependencies","doDependenciesDiffer","areDependenciesEqual","useWeb","isWeb","isJest","buildWorkletsHash","Object","values","reduce","acc","worklet","__workletHash","toString","handlersList","filter","undefined","map","workletHash","closure","_closure","push","nextDeps","prevDeps","is","x","y","objectIs","areHookInputsEqual","length","i","hasColorProps","updates","colorPropsSet","Set","colorProps","key","has","parseColors","indexOf","processedColor","processColor","isAnimated","prop","Array","isArray","some","onFrame","shallowEqual","a","b","aKeys","keys","bKeys","validateAnimatedStyles","styles","Error"],"sources":["utils.ts"],"sourcesContent":["import { MutableRefObject, useEffect, useRef } from 'react';\nimport { processColor } from '../Colors';\nimport {\n AnimatedStyle,\n Context,\n NativeEvent,\n NestedObjectValues,\n WorkletFunction,\n AnimationObject,\n} from '../commonTypes';\nimport { makeRemote } from '../core';\nimport { isWeb, isJest } from '../PlatformChecker';\nimport { colorProps } from '../UpdateProps';\nimport WorkletEventHandler from '../WorkletEventHandler';\nimport { ContextWithDependencies, DependencyList } from './commonTypes';\n\ninterface Handler<T, TContext extends Context> extends WorkletFunction {\n (event: T, context: TContext): void;\n}\n\ninterface Handlers<T, TContext extends Context> {\n [key: string]: Handler<T, TContext> | undefined;\n}\n\nexport interface UseHandlerContext<TContext extends Context> {\n context: TContext;\n doDependenciesDiffer: boolean;\n useWeb: boolean;\n}\n\nexport function useEvent<T extends NativeEvent<T>>(\n handler: (event: T) => void,\n eventNames: string[] = [],\n rebuild = false\n): MutableRefObject<WorkletEventHandler<T> | null> {\n const initRef = useRef<WorkletEventHandler<T> | null>(null);\n if (initRef.current === null) {\n initRef.current = new WorkletEventHandler(handler, eventNames);\n } else if (rebuild) {\n initRef.current.updateWorklet(handler);\n }\n\n return initRef;\n}\n\nexport function useHandler<T, TContext extends Context>(\n handlers: Handlers<T, TContext>,\n dependencies?: DependencyList\n): UseHandlerContext<TContext> {\n const initRef = useRef<ContextWithDependencies<TContext> | null>(null);\n if (initRef.current === null) {\n initRef.current = {\n context: makeRemote<TContext>({} as TContext),\n savedDependencies: [],\n };\n }\n\n useEffect(() => {\n return () => {\n initRef.current = null;\n };\n }, []);\n\n const { context, savedDependencies } = initRef.current;\n\n dependencies = buildDependencies(dependencies, handlers);\n\n const doDependenciesDiffer = !areDependenciesEqual(\n dependencies,\n savedDependencies\n );\n initRef.current.savedDependencies = dependencies;\n const useWeb = isWeb() || isJest();\n\n return { context, doDependenciesDiffer, useWeb };\n}\n\n// builds one big hash from multiple worklets' hashes\nexport function buildWorkletsHash(\n handlers: Record<string, WorkletFunction> | Array<WorkletFunction>\n): string {\n return Object.values(handlers).reduce(\n (acc: string, worklet: WorkletFunction) =>\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n acc + worklet.__workletHash!.toString(),\n ''\n );\n}\n\n// builds dependencies array for gesture handlers\nexport function buildDependencies(\n dependencies: DependencyList,\n handlers: Record<string, WorkletFunction | undefined>\n): Array<unknown> {\n const handlersList: WorkletFunction[] = Object.values(handlers).filter(\n (handler) => handler !== undefined\n ) as WorkletFunction[];\n if (!dependencies) {\n dependencies = handlersList.map((handler) => {\n return {\n workletHash: handler.__workletHash,\n closure: handler._closure,\n };\n });\n } else {\n dependencies.push(buildWorkletsHash(handlersList));\n }\n return dependencies;\n}\n\n// this is supposed to work as useEffect comparison\nexport function areDependenciesEqual(\n nextDeps: DependencyList,\n prevDeps: DependencyList\n): boolean {\n function is(x: number, y: number) {\n /* eslint-disable no-self-compare */\n return (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y);\n /* eslint-enable no-self-compare */\n }\n const objectIs: (nextDeps: unknown, prevDeps: unknown) => boolean =\n typeof Object.is === 'function' ? Object.is : is;\n\n function areHookInputsEqual(\n nextDeps: DependencyList,\n prevDeps: DependencyList\n ): boolean {\n if (!nextDeps || !prevDeps || prevDeps.length !== nextDeps.length) {\n return false;\n }\n for (let i = 0; i < prevDeps.length; ++i) {\n if (!objectIs(nextDeps[i], prevDeps[i])) {\n return false;\n }\n }\n return true;\n }\n\n return areHookInputsEqual(nextDeps, prevDeps);\n}\n\nexport function hasColorProps(updates: AnimatedStyle): boolean {\n const colorPropsSet = new Set(colorProps);\n for (const key in updates) {\n if (colorPropsSet.has(key)) {\n return true;\n }\n }\n return false;\n}\n\nexport function parseColors(updates: AnimatedStyle): void {\n 'worklet';\n for (const key in updates) {\n if (colorProps.indexOf(key) !== -1) {\n // value could be an animation in which case processColor will recognize it and will return undefined\n // -> in such a case we don't want to override style of that key\n const processedColor = processColor(updates[key]);\n if (processedColor !== undefined) {\n updates[key] = processedColor;\n }\n }\n }\n}\n\nexport function isAnimated(prop: NestedObjectValues<AnimationObject>): boolean {\n 'worklet';\n if (Array.isArray(prop)) {\n return prop.some(isAnimated);\n } else if (typeof prop === 'object') {\n if (prop.onFrame !== undefined) {\n return true;\n } else {\n return Object.values(prop).some(isAnimated);\n }\n }\n return false;\n}\n\nexport function shallowEqual(a: any, b: any) {\n 'worklet';\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n for (let i = 0; i < aKeys.length; i++) {\n if (a[aKeys[i]] !== b[aKeys[i]]) {\n return false;\n }\n }\n return true;\n}\n\nexport const validateAnimatedStyles = (styles: AnimatedStyle): void => {\n 'worklet';\n if (typeof styles !== 'object') {\n throw new Error(\n `useAnimatedStyle has to return an object, found ${typeof styles} instead`\n );\n } else if (Array.isArray(styles)) {\n throw new Error(\n 'useAnimatedStyle has to return an object and cannot return static styles combined with dynamic ones. Please do merging where a component receives props.'\n );\n }\n};\n"],"mappings":"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"}
|
|
@@ -159,4 +159,17 @@ Object.keys(_commonTypes).forEach(function (key) {
|
|
|
159
159
|
}
|
|
160
160
|
});
|
|
161
161
|
});
|
|
162
|
+
|
|
163
|
+
var _pluginUtils = require("./pluginUtils");
|
|
164
|
+
|
|
165
|
+
Object.keys(_pluginUtils).forEach(function (key) {
|
|
166
|
+
if (key === "default" || key === "__esModule") return;
|
|
167
|
+
if (key in exports && exports[key] === _pluginUtils[key]) return;
|
|
168
|
+
Object.defineProperty(exports, key, {
|
|
169
|
+
enumerable: true,
|
|
170
|
+
get: function () {
|
|
171
|
+
return _pluginUtils[key];
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
});
|
|
162
175
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from './core';\nexport * from './hook';\nexport * from './animation';\nexport * from './interpolation';\nexport * from './interpolateColor';\nexport * from './Easing';\nexport * from './NativeMethods';\nexport * from './Colors';\nexport * from './PropAdapters';\nexport * from './layoutReanimation';\nexport * from './utils';\nexport * from './commonTypes';\n"],"mappings":";;;;;;AAAA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
|
|
1
|
+
{"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from './core';\nexport * from './hook';\nexport * from './animation';\nexport * from './interpolation';\nexport * from './interpolateColor';\nexport * from './Easing';\nexport * from './NativeMethods';\nexport * from './Colors';\nexport * from './PropAdapters';\nexport * from './layoutReanimation';\nexport * from './utils';\nexport * from './commonTypes';\nexport * from './pluginUtils';\n"],"mappings":";;;;;;AAAA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.initializeUIRuntime = initializeUIRuntime;
|
|
7
|
+
|
|
8
|
+
var _errors = require("./errors");
|
|
9
|
+
|
|
10
|
+
var _NativeReanimated = _interopRequireDefault(require("./NativeReanimated"));
|
|
11
|
+
|
|
12
|
+
var _PlatformChecker = require("./PlatformChecker");
|
|
13
|
+
|
|
14
|
+
var _threads = require("./threads");
|
|
15
|
+
|
|
16
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
+
|
|
18
|
+
// callGuard is only used with debug builds
|
|
19
|
+
function callGuardDEV(fn) {
|
|
20
|
+
'worklet';
|
|
21
|
+
|
|
22
|
+
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
23
|
+
args[_key - 1] = arguments[_key];
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
try {
|
|
27
|
+
fn(...args);
|
|
28
|
+
} catch (e) {
|
|
29
|
+
if (global.ErrorUtils) {
|
|
30
|
+
global.ErrorUtils.reportFatalError(e);
|
|
31
|
+
} else {
|
|
32
|
+
throw e;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function valueUnpacker(objectToUnpack, category) {
|
|
38
|
+
'worklet';
|
|
39
|
+
|
|
40
|
+
let workletsCache = global.__workletsCache;
|
|
41
|
+
let handleCache = global.__handleCache;
|
|
42
|
+
|
|
43
|
+
if (workletsCache === undefined) {
|
|
44
|
+
// init
|
|
45
|
+
workletsCache = global.__workletsCache = new Map();
|
|
46
|
+
handleCache = global.__handleCache = new WeakMap();
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const workletHash = objectToUnpack.__workletHash;
|
|
50
|
+
|
|
51
|
+
if (workletHash !== undefined) {
|
|
52
|
+
let workletFun = workletsCache.get(workletHash);
|
|
53
|
+
|
|
54
|
+
if (workletFun === undefined) {
|
|
55
|
+
const initData = objectToUnpack.__initData;
|
|
56
|
+
|
|
57
|
+
if (global.evalWithSourceMap) {
|
|
58
|
+
// if the runtime (hermes only for now) supports loading source maps
|
|
59
|
+
// we want to use the proper filename for the location as it guarantees
|
|
60
|
+
// that debugger understands and loads the source code of the file where
|
|
61
|
+
// the worklet is defined.
|
|
62
|
+
workletFun = global.evalWithSourceMap('(' + initData.code + '\n)', initData.location, initData.sourceMap);
|
|
63
|
+
} else if (global.evalWithSourceUrl) {
|
|
64
|
+
// if the runtime doesn't support loading source maps, in dev mode we
|
|
65
|
+
// can pass source url when evaluating the worklet. Now, instead of using
|
|
66
|
+
// the actual file location we use worklet hash, as it the allows us to
|
|
67
|
+
// properly symbolicate traces (see errors.ts for details)
|
|
68
|
+
workletFun = global.evalWithSourceUrl('(' + initData.code + '\n)', `worklet_${workletHash}`);
|
|
69
|
+
} else {
|
|
70
|
+
// in release we use the regular eval to save on JSI calls
|
|
71
|
+
// eslint-disable-next-line no-eval
|
|
72
|
+
workletFun = eval('(' + initData.code + '\n)');
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
workletsCache.set(workletHash, workletFun);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
const functionInstance = workletFun.bind(objectToUnpack);
|
|
79
|
+
objectToUnpack._recur = functionInstance;
|
|
80
|
+
return functionInstance;
|
|
81
|
+
} else if (objectToUnpack.__init) {
|
|
82
|
+
let value = handleCache.get(objectToUnpack);
|
|
83
|
+
|
|
84
|
+
if (value === undefined) {
|
|
85
|
+
value = objectToUnpack.__init();
|
|
86
|
+
handleCache.set(objectToUnpack, value);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return value;
|
|
90
|
+
} else if (category === 'RemoteFunction') {
|
|
91
|
+
const fun = () => {
|
|
92
|
+
throw new Error(`Tried to synchronously call a non-worklet function on the UI thread.
|
|
93
|
+
|
|
94
|
+
Possible solutions are:
|
|
95
|
+
a) If you want to synchronously execute this method, mark it as a worklet
|
|
96
|
+
b) If you want to execute this function on the JS thread, wrap it using \`runOnJS\``);
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
fun.__remoteFunction = objectToUnpack;
|
|
100
|
+
return fun;
|
|
101
|
+
} else {
|
|
102
|
+
throw new Error('data type not recognized by unpack method');
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
function setupRequestAnimationFrame() {
|
|
107
|
+
'worklet'; // Jest mocks requestAnimationFrame API and it does not like if that mock gets overridden
|
|
108
|
+
// so we avoid doing requestAnimationFrame batching in Jest environment.
|
|
109
|
+
|
|
110
|
+
const nativeRequestAnimationFrame = global.requestAnimationFrame;
|
|
111
|
+
let animationFrameCallbacks = [];
|
|
112
|
+
let lastNativeAnimationFrameTimestamp = -1;
|
|
113
|
+
|
|
114
|
+
global.__flushAnimationFrame = frameTimestamp => {
|
|
115
|
+
const currentCallbacks = animationFrameCallbacks;
|
|
116
|
+
animationFrameCallbacks = [];
|
|
117
|
+
currentCallbacks.forEach(f => f(frameTimestamp));
|
|
118
|
+
(0, _threads.flushImmediates)();
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
global.requestAnimationFrame = callback => {
|
|
122
|
+
animationFrameCallbacks.push(callback);
|
|
123
|
+
|
|
124
|
+
if (animationFrameCallbacks.length === 1) {
|
|
125
|
+
// We schedule native requestAnimationFrame only when the first callback
|
|
126
|
+
// is added and then use it to execute all the enqueued callbacks. Once
|
|
127
|
+
// the callbacks are run, we clear the array.
|
|
128
|
+
nativeRequestAnimationFrame(timestamp => {
|
|
129
|
+
if (lastNativeAnimationFrameTimestamp >= timestamp) {
|
|
130
|
+
// Make sure we only execute the callbacks once for a given frame
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
lastNativeAnimationFrameTimestamp = timestamp;
|
|
135
|
+
global.__frameTimestamp = timestamp;
|
|
136
|
+
|
|
137
|
+
global.__flushAnimationFrame(timestamp);
|
|
138
|
+
|
|
139
|
+
global.__frameTimestamp = undefined;
|
|
140
|
+
});
|
|
141
|
+
} // Reanimated currently does not support cancelling calbacks requested with
|
|
142
|
+
// requestAnimationFrame. We return -1 as identifier which isn't in line
|
|
143
|
+
// with the spec but it should give users better clue in case they actually
|
|
144
|
+
// attempt to store the value returned from rAF and use it for cancelling.
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
return -1;
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
function initializeUIRuntime() {
|
|
152
|
+
_NativeReanimated.default.installCoreFunctions(callGuardDEV, valueUnpacker);
|
|
153
|
+
|
|
154
|
+
const IS_JEST = (0, _PlatformChecker.isJest)();
|
|
155
|
+
|
|
156
|
+
if (IS_JEST) {
|
|
157
|
+
// requestAnimationFrame react-native jest's setup is incorrect as it polyfills
|
|
158
|
+
// the method directly using setTimeout, therefore the callback doesn't get the
|
|
159
|
+
// expected timestamp as the only argument: https://github.com/facebook/react-native/blob/main/jest/setup.js#L28
|
|
160
|
+
// We override this setup here to make sure that callbacks get the proper timestamps
|
|
161
|
+
// when executed. For non-jest environments we define requestAnimationFrame in setupRequestAnimationFrame
|
|
162
|
+
// @ts-ignore TypeScript uses Node definition for rAF, setTimeout, etc which returns a Timeout object rather than a number
|
|
163
|
+
global.requestAnimationFrame = callback => {
|
|
164
|
+
return setTimeout(() => callback(performance.now()), 0);
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
const capturableConsole = console;
|
|
169
|
+
(0, _threads.runOnUIImmediately)(() => {
|
|
170
|
+
'worklet'; // setup error handler
|
|
171
|
+
|
|
172
|
+
global.ErrorUtils = {
|
|
173
|
+
reportFatalError: error => {
|
|
174
|
+
(0, _threads.runOnJS)(_errors.reportFatalErrorOnJS)({
|
|
175
|
+
message: error.message,
|
|
176
|
+
stack: error.stack
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
}; // setup console
|
|
180
|
+
// @ts-ignore TypeScript doesn't like that there are missing methods in console object, but we don't provide all the methods for the UI runtime console version
|
|
181
|
+
|
|
182
|
+
global.console = {
|
|
183
|
+
debug: (0, _threads.runOnJS)(capturableConsole.debug),
|
|
184
|
+
log: (0, _threads.runOnJS)(capturableConsole.log),
|
|
185
|
+
warn: (0, _threads.runOnJS)(capturableConsole.warn),
|
|
186
|
+
error: (0, _threads.runOnJS)(capturableConsole.error),
|
|
187
|
+
info: (0, _threads.runOnJS)(capturableConsole.info)
|
|
188
|
+
};
|
|
189
|
+
|
|
190
|
+
if (!IS_JEST) {
|
|
191
|
+
(0, _threads.setupSetImmediate)();
|
|
192
|
+
setupRequestAnimationFrame();
|
|
193
|
+
}
|
|
194
|
+
})();
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=initializers.js.map
|