react-native-reanimated 3.0.2 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Common/cpp/Fabric/FabricUtils.h +1 -1
- package/Common/cpp/NativeModules/NativeReanimatedModule.cpp +38 -27
- package/Common/cpp/SharedItems/Shareables.h +22 -0
- package/Common/cpp/Tools/PlatformDepMethodsHolder.h +2 -0
- package/Common/cpp/Tools/RuntimeDecorator.cpp +4 -1
- package/Common/cpp/Tools/RuntimeDecorator.h +2 -1
- package/Common/cpp/Tools/SingleInstanceChecker.h +14 -2
- package/RNReanimated.podspec +5 -2
- package/android/CMakeLists.txt +4 -0
- package/android/build.gradle +18 -10
- package/android/src/main/cpp/NativeProxy.cpp +316 -337
- package/android/src/main/cpp/NativeProxy.h +53 -11
- package/android/src/main/java/com/swmansion/reanimated/NativeMethodsHelper.java +7 -12
- package/android/src/main/java/com/swmansion/reanimated/NodesManager.java +11 -8
- package/android/src/main/java/com/swmansion/reanimated/nativeProxy/NativeProxyCommon.java +21 -14
- package/android/src/paper/java/com/swmansion/reanimated/NativeProxy.java +0 -3
- package/ios/Fabric/REAInitializerRCTFabricSurface.mm +1 -0
- package/ios/REANodesManager.h +1 -0
- package/ios/REANodesManager.mm +30 -4
- package/ios/keyboardObserver/REAKeyboardEventObserver.m +51 -130
- package/ios/native/NativeMethods.mm +1 -1
- package/ios/native/NativeProxy.mm +4 -1
- package/ios/native/REAIOSErrorHandler.mm +1 -1
- package/ios/native/REAIOSLogger.mm +1 -1
- package/ios/native/REAIOSScheduler.mm +1 -1
- package/ios/native/REAInitializer.mm +1 -1
- package/ios/native/REAMessageThread.mm +2 -2
- package/lib/commonjs/Animated.js +0 -8
- package/lib/commonjs/Animated.js.map +1 -1
- package/lib/commonjs/ConfigHelper.js +8 -19
- package/lib/commonjs/ConfigHelper.js.map +1 -1
- package/lib/commonjs/createAnimatedComponent.js +20 -158
- package/lib/commonjs/createAnimatedComponent.js.map +1 -1
- package/lib/commonjs/index.js +0 -9
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/index.web.js +0 -7
- package/lib/commonjs/index.web.js.map +1 -1
- package/lib/commonjs/reanimated2/Bezier.js +14 -34
- package/lib/commonjs/reanimated2/Bezier.js.map +1 -1
- package/lib/commonjs/reanimated2/Colors.js +60 -132
- package/lib/commonjs/reanimated2/Colors.js.map +1 -1
- package/lib/commonjs/reanimated2/Easing.js +81 -34
- package/lib/commonjs/reanimated2/Easing.js.map +1 -1
- package/lib/commonjs/reanimated2/NativeMethods.js +8 -20
- package/lib/commonjs/reanimated2/NativeMethods.js.map +1 -1
- package/lib/commonjs/reanimated2/NativeReanimated/NativeReanimated.js +5 -31
- package/lib/commonjs/reanimated2/NativeReanimated/NativeReanimated.js.map +1 -1
- package/lib/commonjs/reanimated2/NativeReanimated/index.js +0 -7
- package/lib/commonjs/reanimated2/NativeReanimated/index.js.map +1 -1
- package/lib/commonjs/reanimated2/PlatformChecker.js +0 -6
- package/lib/commonjs/reanimated2/PlatformChecker.js.map +1 -1
- package/lib/commonjs/reanimated2/PropAdapters.js +10 -12
- package/lib/commonjs/reanimated2/PropAdapters.js.map +1 -1
- package/lib/commonjs/reanimated2/UpdateProps.js +3 -12
- package/lib/commonjs/reanimated2/UpdateProps.js.map +1 -1
- package/lib/commonjs/reanimated2/ViewDescriptorsSet.js +0 -10
- package/lib/commonjs/reanimated2/ViewDescriptorsSet.js.map +1 -1
- package/lib/commonjs/reanimated2/WorkletEventHandler.js +5 -22
- package/lib/commonjs/reanimated2/WorkletEventHandler.js.map +1 -1
- package/lib/commonjs/reanimated2/animation/decay.js +7 -18
- package/lib/commonjs/reanimated2/animation/decay.js.map +1 -1
- package/lib/commonjs/reanimated2/animation/delay.js +0 -11
- package/lib/commonjs/reanimated2/animation/delay.js.map +1 -1
- package/lib/commonjs/reanimated2/animation/index.js +0 -8
- package/lib/commonjs/reanimated2/animation/index.js.map +1 -1
- package/lib/commonjs/reanimated2/animation/repeat.js +6 -22
- package/lib/commonjs/reanimated2/animation/repeat.js.map +1 -1
- package/lib/commonjs/reanimated2/animation/sequence.js +3 -20
- package/lib/commonjs/reanimated2/animation/sequence.js.map +1 -1
- package/lib/commonjs/reanimated2/animation/spring.js +11 -23
- package/lib/commonjs/reanimated2/animation/spring.js.map +1 -1
- package/lib/commonjs/reanimated2/animation/styleAnimation.js +3 -35
- package/lib/commonjs/reanimated2/animation/styleAnimation.js.map +1 -1
- package/lib/commonjs/reanimated2/animation/timing.js +0 -11
- package/lib/commonjs/reanimated2/animation/timing.js.map +1 -1
- package/lib/commonjs/reanimated2/animation/util.js +11 -41
- package/lib/commonjs/reanimated2/animation/util.js.map +1 -1
- package/lib/commonjs/reanimated2/commonTypes.js +16 -23
- package/lib/commonjs/reanimated2/commonTypes.js.map +1 -1
- package/lib/commonjs/reanimated2/component/FlatList.js +0 -16
- package/lib/commonjs/reanimated2/component/FlatList.js.map +1 -1
- package/lib/commonjs/reanimated2/component/Image.js +0 -4
- package/lib/commonjs/reanimated2/component/Image.js.map +1 -1
- package/lib/commonjs/reanimated2/component/ScrollView.js +0 -4
- package/lib/commonjs/reanimated2/component/ScrollView.js.map +1 -1
- package/lib/commonjs/reanimated2/component/Text.js +0 -4
- package/lib/commonjs/reanimated2/component/Text.js.map +1 -1
- package/lib/commonjs/reanimated2/component/View.js +0 -4
- package/lib/commonjs/reanimated2/component/View.js.map +1 -1
- package/lib/commonjs/reanimated2/core.js +6 -48
- package/lib/commonjs/reanimated2/core.js.map +1 -1
- package/lib/commonjs/reanimated2/errors.js +3 -14
- package/lib/commonjs/reanimated2/errors.js.map +1 -1
- package/lib/commonjs/reanimated2/fabricUtils.js +3 -5
- package/lib/commonjs/reanimated2/fabricUtils.js.map +1 -1
- package/lib/commonjs/reanimated2/fabricUtils.web.js +1 -3
- package/lib/commonjs/reanimated2/fabricUtils.web.js.map +1 -1
- package/lib/commonjs/reanimated2/frameCallback/FrameCallbackRegistryJS.js +3 -12
- package/lib/commonjs/reanimated2/frameCallback/FrameCallbackRegistryJS.js.map +1 -1
- package/lib/commonjs/reanimated2/frameCallback/FrameCallbackRegistryUI.js +13 -17
- 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/Hooks.js +0 -5
- package/lib/commonjs/reanimated2/hook/Hooks.js.map +1 -1
- package/lib/commonjs/reanimated2/hook/commonTypes.js.map +1 -1
- package/lib/commonjs/reanimated2/hook/index.js +0 -12
- package/lib/commonjs/reanimated2/hook/index.js.map +1 -1
- package/lib/commonjs/reanimated2/hook/useAnimatedGestureHandler.js +4 -17
- package/lib/commonjs/reanimated2/hook/useAnimatedGestureHandler.js.map +1 -1
- package/lib/commonjs/reanimated2/hook/useAnimatedKeyboard.js +2 -9
- package/lib/commonjs/reanimated2/hook/useAnimatedKeyboard.js.map +1 -1
- package/lib/commonjs/reanimated2/hook/useAnimatedReaction.js +1 -11
- package/lib/commonjs/reanimated2/hook/useAnimatedReaction.js.map +1 -1
- package/lib/commonjs/reanimated2/hook/useAnimatedRef.js +0 -12
- package/lib/commonjs/reanimated2/hook/useAnimatedRef.js.map +1 -1
- package/lib/commonjs/reanimated2/hook/useAnimatedScrollHandler.js +2 -9
- package/lib/commonjs/reanimated2/hook/useAnimatedScrollHandler.js.map +1 -1
- package/lib/commonjs/reanimated2/hook/useAnimatedSensor.js +8 -23
- package/lib/commonjs/reanimated2/hook/useAnimatedSensor.js.map +1 -1
- package/lib/commonjs/reanimated2/hook/useAnimatedStyle.js +13 -71
- package/lib/commonjs/reanimated2/hook/useAnimatedStyle.js.map +1 -1
- package/lib/commonjs/reanimated2/hook/useDerivedValue.js +4 -13
- package/lib/commonjs/reanimated2/hook/useDerivedValue.js.map +1 -1
- package/lib/commonjs/reanimated2/hook/useFrameCallback.js +0 -5
- package/lib/commonjs/reanimated2/hook/useFrameCallback.js.map +1 -1
- package/lib/commonjs/reanimated2/hook/useScrollViewOffset.js +0 -7
- package/lib/commonjs/reanimated2/hook/useScrollViewOffset.js.map +1 -1
- package/lib/commonjs/reanimated2/hook/useSharedValue.js +2 -7
- package/lib/commonjs/reanimated2/hook/useSharedValue.js.map +1 -1
- package/lib/commonjs/reanimated2/hook/utils.js +8 -39
- package/lib/commonjs/reanimated2/hook/utils.js.map +1 -1
- package/lib/commonjs/reanimated2/index.js +0 -26
- package/lib/commonjs/reanimated2/index.js.map +1 -1
- package/lib/commonjs/reanimated2/initializers.js +21 -43
- package/lib/commonjs/reanimated2/initializers.js.map +1 -1
- package/lib/commonjs/reanimated2/interpolateColor.js +6 -43
- package/lib/commonjs/reanimated2/interpolateColor.js.map +1 -1
- package/lib/commonjs/reanimated2/interpolation.js +14 -29
- package/lib/commonjs/reanimated2/interpolation.js.map +1 -1
- package/lib/commonjs/reanimated2/jestUtils.js +11 -44
- package/lib/commonjs/reanimated2/jestUtils.js.map +1 -1
- package/lib/commonjs/reanimated2/js-reanimated/JSReanimated.js +15 -39
- package/lib/commonjs/reanimated2/js-reanimated/JSReanimated.js.map +1 -1
- package/lib/commonjs/reanimated2/js-reanimated/Mapper.js +9 -28
- package/lib/commonjs/reanimated2/js-reanimated/Mapper.js.map +1 -1
- package/lib/commonjs/reanimated2/js-reanimated/MapperRegistry.js +7 -37
- package/lib/commonjs/reanimated2/js-reanimated/MapperRegistry.js.map +1 -1
- package/lib/commonjs/reanimated2/js-reanimated/MutableValue.js +5 -18
- package/lib/commonjs/reanimated2/js-reanimated/MutableValue.js.map +1 -1
- package/lib/commonjs/reanimated2/js-reanimated/global.js +2 -9
- package/lib/commonjs/reanimated2/js-reanimated/global.js.map +1 -1
- package/lib/commonjs/reanimated2/js-reanimated/index.js +3 -14
- package/lib/commonjs/reanimated2/js-reanimated/index.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/BaseAnimationBuilder.js +7 -26
- package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/BaseAnimationBuilder.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.js +3 -49
- package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/Keyframe.js +7 -43
- package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/Keyframe.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/commonTypes.js +4 -5
- package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/commonTypes.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/index.js +0 -4
- package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/index.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/animationsManager.js +4 -23
- package/lib/commonjs/reanimated2/layoutReanimation/animationsManager.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Bounce.js +3 -74
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Bounce.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Fade.js +3 -53
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Fade.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Flip.js +3 -63
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Flip.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js +7 -26
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.js +3 -13
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Roll.js +3 -23
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Roll.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Rotate.js +3 -43
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Rotate.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Slide.js +3 -43
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Slide.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Stretch.js +3 -23
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Stretch.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Zoom.js +3 -83
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Zoom.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/index.js +0 -20
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/index.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.js +3 -22
- package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.js +5 -29
- package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.js +3 -9
- package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.js +5 -11
- package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.js +3 -8
- package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/SequencedTransition.js +3 -12
- package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/SequencedTransition.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/index.js +0 -12
- package/lib/commonjs/reanimated2/layoutReanimation/defaultTransitions/index.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/index.js +0 -9
- package/lib/commonjs/reanimated2/layoutReanimation/index.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/sharedTransitions/index.js +3 -17
- package/lib/commonjs/reanimated2/layoutReanimation/sharedTransitions/index.js.map +1 -1
- package/lib/commonjs/reanimated2/mappers.js +26 -32
- package/lib/commonjs/reanimated2/mappers.js.map +1 -1
- package/lib/commonjs/reanimated2/mock.js +5 -15
- package/lib/commonjs/reanimated2/mock.js.map +1 -1
- package/lib/commonjs/reanimated2/mutables.js +2 -28
- package/lib/commonjs/reanimated2/mutables.js.map +1 -1
- package/lib/commonjs/reanimated2/platform-specific/RNRenderer.js +0 -2
- package/lib/commonjs/reanimated2/platform-specific/RNRenderer.js.map +1 -1
- package/lib/commonjs/reanimated2/platform-specific/RNRenderer.web.js.map +1 -1
- package/lib/commonjs/reanimated2/platform-specific/checkCppVersion.js +31 -0
- package/lib/commonjs/reanimated2/platform-specific/checkCppVersion.js.map +1 -0
- package/lib/commonjs/reanimated2/platform-specific/checkVersion.web.js +0 -2
- package/lib/commonjs/reanimated2/platform-specific/checkVersion.web.js.map +1 -1
- package/lib/commonjs/reanimated2/platform-specific/jsVersion.js +14 -0
- package/lib/commonjs/reanimated2/platform-specific/jsVersion.js.map +1 -0
- package/lib/commonjs/reanimated2/pluginUtils.js +0 -1
- package/lib/commonjs/reanimated2/pluginUtils.js.map +1 -1
- package/lib/commonjs/reanimated2/shareables.js +92 -49
- package/lib/commonjs/reanimated2/shareables.js.map +1 -1
- package/lib/commonjs/reanimated2/threads.js +42 -46
- package/lib/commonjs/reanimated2/threads.js.map +1 -1
- package/lib/commonjs/reanimated2/utils.js +0 -5
- package/lib/commonjs/reanimated2/utils.js.map +1 -1
- package/lib/commonjs/reanimated2/valueSetter.js +6 -21
- package/lib/commonjs/reanimated2/valueSetter.js.map +1 -1
- package/lib/commonjs/setAndForwardRef.js +3 -3
- package/lib/commonjs/setAndForwardRef.js.map +1 -1
- package/lib/module/Animated.js.map +1 -1
- package/lib/module/ConfigHelper.js +9 -15
- package/lib/module/ConfigHelper.js.map +1 -1
- package/lib/module/createAnimatedComponent.js +20 -139
- package/lib/module/createAnimatedComponent.js.map +1 -1
- package/lib/module/index.js +0 -2
- package/lib/module/index.js.map +1 -1
- package/lib/module/index.web.js.map +1 -1
- package/lib/module/reanimated2/Bezier.js +14 -33
- package/lib/module/reanimated2/Bezier.js.map +1 -1
- package/lib/module/reanimated2/Colors.js +59 -109
- package/lib/module/reanimated2/Colors.js.map +1 -1
- package/lib/module/reanimated2/Easing.js +37 -33
- package/lib/module/reanimated2/Easing.js.map +1 -1
- package/lib/module/reanimated2/NativeMethods.js +8 -15
- package/lib/module/reanimated2/NativeMethods.js.map +1 -1
- package/lib/module/reanimated2/NativeReanimated/NativeReanimated.js +5 -27
- package/lib/module/reanimated2/NativeReanimated/NativeReanimated.js.map +1 -1
- package/lib/module/reanimated2/NativeReanimated/index.js +0 -2
- package/lib/module/reanimated2/NativeReanimated/index.js.map +1 -1
- package/lib/module/reanimated2/PlatformChecker.js.map +1 -1
- package/lib/module/reanimated2/PropAdapters.js +12 -10
- package/lib/module/reanimated2/PropAdapters.js.map +1 -1
- package/lib/module/reanimated2/UpdateProps.js +3 -5
- package/lib/module/reanimated2/UpdateProps.js.map +1 -1
- package/lib/module/reanimated2/ViewDescriptorsSet.js +0 -6
- package/lib/module/reanimated2/ViewDescriptorsSet.js.map +1 -1
- package/lib/module/reanimated2/WorkletEventHandler.js +5 -18
- package/lib/module/reanimated2/WorkletEventHandler.js.map +1 -1
- package/lib/module/reanimated2/animation/decay.js +7 -15
- package/lib/module/reanimated2/animation/decay.js.map +1 -1
- package/lib/module/reanimated2/animation/delay.js +0 -9
- package/lib/module/reanimated2/animation/delay.js.map +1 -1
- package/lib/module/reanimated2/animation/index.js.map +1 -1
- package/lib/module/reanimated2/animation/repeat.js +6 -20
- package/lib/module/reanimated2/animation/repeat.js.map +1 -1
- package/lib/module/reanimated2/animation/sequence.js +3 -18
- package/lib/module/reanimated2/animation/sequence.js.map +1 -1
- package/lib/module/reanimated2/animation/spring.js +11 -21
- package/lib/module/reanimated2/animation/spring.js.map +1 -1
- package/lib/module/reanimated2/animation/styleAnimation.js +7 -31
- package/lib/module/reanimated2/animation/styleAnimation.js.map +1 -1
- package/lib/module/reanimated2/animation/timing.js +0 -8
- package/lib/module/reanimated2/animation/timing.js.map +1 -1
- package/lib/module/reanimated2/animation/util.js +10 -33
- package/lib/module/reanimated2/animation/util.js.map +1 -1
- package/lib/module/reanimated2/commonTypes.js +12 -19
- package/lib/module/reanimated2/commonTypes.js.map +1 -1
- package/lib/module/reanimated2/component/FlatList.js +0 -4
- package/lib/module/reanimated2/component/FlatList.js.map +1 -1
- package/lib/module/reanimated2/component/Image.js.map +1 -1
- package/lib/module/reanimated2/component/ScrollView.js.map +1 -1
- package/lib/module/reanimated2/component/Text.js.map +1 -1
- package/lib/module/reanimated2/component/View.js.map +1 -1
- package/lib/module/reanimated2/core.js +6 -22
- package/lib/module/reanimated2/core.js.map +1 -1
- package/lib/module/reanimated2/errors.js +3 -13
- package/lib/module/reanimated2/errors.js.map +1 -1
- package/lib/module/reanimated2/fabricUtils.js +3 -3
- package/lib/module/reanimated2/fabricUtils.js.map +1 -1
- package/lib/module/reanimated2/fabricUtils.web.js +1 -1
- package/lib/module/reanimated2/fabricUtils.web.js.map +1 -1
- package/lib/module/reanimated2/frameCallback/FrameCallbackRegistryJS.js +3 -8
- package/lib/module/reanimated2/frameCallback/FrameCallbackRegistryJS.js.map +1 -1
- package/lib/module/reanimated2/frameCallback/FrameCallbackRegistryUI.js +13 -15
- 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/Hooks.js +3 -2
- package/lib/module/reanimated2/hook/Hooks.js.map +1 -1
- package/lib/module/reanimated2/hook/commonTypes.js.map +1 -1
- package/lib/module/reanimated2/hook/index.js.map +1 -1
- package/lib/module/reanimated2/hook/useAnimatedGestureHandler.js +3 -14
- package/lib/module/reanimated2/hook/useAnimatedGestureHandler.js.map +1 -1
- package/lib/module/reanimated2/hook/useAnimatedKeyboard.js +2 -5
- package/lib/module/reanimated2/hook/useAnimatedKeyboard.js.map +1 -1
- package/lib/module/reanimated2/hook/useAnimatedReaction.js +1 -7
- package/lib/module/reanimated2/hook/useAnimatedReaction.js.map +1 -1
- package/lib/module/reanimated2/hook/useAnimatedRef.js +0 -6
- package/lib/module/reanimated2/hook/useAnimatedRef.js.map +1 -1
- package/lib/module/reanimated2/hook/useAnimatedScrollHandler.js +2 -7
- package/lib/module/reanimated2/hook/useAnimatedScrollHandler.js.map +1 -1
- package/lib/module/reanimated2/hook/useAnimatedSensor.js +9 -20
- package/lib/module/reanimated2/hook/useAnimatedSensor.js.map +1 -1
- package/lib/module/reanimated2/hook/useAnimatedStyle.js +13 -59
- package/lib/module/reanimated2/hook/useAnimatedStyle.js.map +1 -1
- package/lib/module/reanimated2/hook/useDerivedValue.js +4 -8
- package/lib/module/reanimated2/hook/useDerivedValue.js.map +1 -1
- package/lib/module/reanimated2/hook/useFrameCallback.js.map +1 -1
- package/lib/module/reanimated2/hook/useScrollViewOffset.js +0 -1
- package/lib/module/reanimated2/hook/useScrollViewOffset.js.map +1 -1
- package/lib/module/reanimated2/hook/useSharedValue.js +2 -3
- package/lib/module/reanimated2/hook/useSharedValue.js.map +1 -1
- package/lib/module/reanimated2/hook/utils.js +8 -21
- package/lib/module/reanimated2/hook/utils.js.map +1 -1
- package/lib/module/reanimated2/index.js.map +1 -1
- package/lib/module/reanimated2/initializers.js +23 -37
- package/lib/module/reanimated2/initializers.js.map +1 -1
- package/lib/module/reanimated2/interpolateColor.js +5 -34
- package/lib/module/reanimated2/interpolateColor.js.map +1 -1
- package/lib/module/reanimated2/interpolation.js +13 -28
- package/lib/module/reanimated2/interpolation.js.map +1 -1
- package/lib/module/reanimated2/jestUtils.js +11 -35
- package/lib/module/reanimated2/jestUtils.js.map +1 -1
- package/lib/module/reanimated2/js-reanimated/JSReanimated.js +15 -35
- package/lib/module/reanimated2/js-reanimated/JSReanimated.js.map +1 -1
- package/lib/module/reanimated2/js-reanimated/Mapper.js +9 -23
- package/lib/module/reanimated2/js-reanimated/Mapper.js.map +1 -1
- package/lib/module/reanimated2/js-reanimated/MapperRegistry.js +7 -35
- package/lib/module/reanimated2/js-reanimated/MapperRegistry.js.map +1 -1
- package/lib/module/reanimated2/js-reanimated/MutableValue.js +5 -16
- package/lib/module/reanimated2/js-reanimated/MutableValue.js.map +1 -1
- package/lib/module/reanimated2/js-reanimated/global.js +2 -6
- package/lib/module/reanimated2/js-reanimated/global.js.map +1 -1
- package/lib/module/reanimated2/js-reanimated/index.js +3 -9
- package/lib/module/reanimated2/js-reanimated/index.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/animationBuilder/BaseAnimationBuilder.js +7 -23
- package/lib/module/reanimated2/layoutReanimation/animationBuilder/BaseAnimationBuilder.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.js +3 -45
- package/lib/module/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/animationBuilder/Keyframe.js +7 -39
- package/lib/module/reanimated2/layoutReanimation/animationBuilder/Keyframe.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/animationBuilder/commonTypes.js +3 -3
- package/lib/module/reanimated2/layoutReanimation/animationBuilder/commonTypes.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/animationBuilder/index.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/animationsManager.js +4 -19
- package/lib/module/reanimated2/layoutReanimation/animationsManager.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Bounce.js +3 -52
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Bounce.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Fade.js +3 -32
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Fade.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Flip.js +3 -38
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Flip.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js +7 -16
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.js +3 -8
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Roll.js +3 -14
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Roll.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Rotate.js +3 -26
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Rotate.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Slide.js +3 -26
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Slide.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Stretch.js +3 -14
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Stretch.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Zoom.js +3 -50
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Zoom.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/index.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.js +3 -17
- package/lib/module/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.js +5 -23
- package/lib/module/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.js +3 -5
- package/lib/module/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.js +5 -6
- package/lib/module/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.js +3 -5
- package/lib/module/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultTransitions/SequencedTransition.js +3 -8
- package/lib/module/reanimated2/layoutReanimation/defaultTransitions/SequencedTransition.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultTransitions/index.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/index.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/sharedTransitions/index.js +3 -13
- package/lib/module/reanimated2/layoutReanimation/sharedTransitions/index.js.map +1 -1
- package/lib/module/reanimated2/mappers.js +26 -25
- package/lib/module/reanimated2/mappers.js.map +1 -1
- package/lib/module/reanimated2/mock.js +5 -15
- package/lib/module/reanimated2/mock.js.map +1 -1
- package/lib/module/reanimated2/mutables.js +2 -19
- package/lib/module/reanimated2/mutables.js.map +1 -1
- package/lib/module/reanimated2/platform-specific/RNRenderer.js.map +1 -1
- package/lib/module/reanimated2/platform-specific/RNRenderer.web.js.map +1 -1
- package/lib/module/reanimated2/platform-specific/checkCppVersion.js +24 -0
- package/lib/module/reanimated2/platform-specific/checkCppVersion.js.map +1 -0
- package/lib/module/reanimated2/platform-specific/checkVersion.web.js +0 -1
- package/lib/module/reanimated2/platform-specific/checkVersion.web.js.map +1 -1
- package/lib/module/reanimated2/platform-specific/jsVersion.js +7 -0
- package/lib/module/reanimated2/platform-specific/jsVersion.js.map +1 -0
- package/lib/module/reanimated2/pluginUtils.js.map +1 -1
- package/lib/module/reanimated2/shareables.js +96 -44
- package/lib/module/reanimated2/shareables.js.map +1 -1
- package/lib/module/reanimated2/threads.js +39 -33
- package/lib/module/reanimated2/threads.js.map +1 -1
- package/lib/module/reanimated2/utils.js +0 -3
- package/lib/module/reanimated2/utils.js.map +1 -1
- package/lib/module/reanimated2/valueSetter.js +6 -19
- package/lib/module/reanimated2/valueSetter.js.map +1 -1
- package/lib/module/setAndForwardRef.js +3 -2
- package/lib/module/setAndForwardRef.js.map +1 -1
- package/package.json +46 -40
- package/plugin/.eslintrc.js +7 -0
- package/plugin/README.md +241 -0
- package/plugin/build/plugin.js +714 -0
- package/plugin/build/plugin.js.map +7 -0
- package/plugin/index.js +1 -807
- package/plugin/package.json +23 -0
- package/plugin/src/buildWorkletString.ts +213 -0
- package/plugin/src/commonObjects.ts +60 -0
- package/plugin/src/injectVersion.ts +37 -0
- package/plugin/src/makeWorklet.ts +375 -0
- package/plugin/src/plugin.ts +49 -0
- package/plugin/src/processForCalleesWorklets.ts +106 -0
- package/plugin/src/processIfGestureHandlerEventCallbackFunctionNode.ts +156 -0
- package/plugin/src/processIfWorkletFunction.ts +55 -0
- package/plugin/src/processIfWorkletNode.ts +44 -0
- package/plugin/src/processInlineStylesWarning.ts +129 -0
- package/plugin/src/processWorkletObjectMethod.ts +31 -0
- package/plugin/src/types.ts +15 -0
- package/plugin/src/utils.ts +6 -0
- package/plugin/tsconfig.json +15 -0
- package/plugin/yarn.lock +2193 -0
- package/react-native-reanimated.d.ts +1 -0
- package/scripts/reanimated_utils.rb +2 -2
- package/src/createAnimatedComponent.tsx +2 -3
- package/src/reanimated2/Easing.ts +19 -0
- package/src/reanimated2/NativeMethods.ts +9 -4
- package/src/reanimated2/NativeReanimated/NativeReanimated.ts +2 -2
- package/src/reanimated2/UpdateProps.ts +2 -2
- package/src/reanimated2/animation/decay.ts +7 -1
- package/src/reanimated2/animation/styleAnimation.ts +5 -1
- package/src/reanimated2/core.ts +4 -4
- package/src/reanimated2/errors.ts +1 -0
- package/src/reanimated2/frameCallback/FrameCallbackRegistryUI.ts +12 -4
- package/src/reanimated2/globals.d.ts +71 -112
- package/src/reanimated2/hook/commonTypes.ts +1 -1
- package/src/reanimated2/hook/useAnimatedReaction.ts +2 -2
- package/src/reanimated2/hook/useAnimatedSensor.ts +2 -2
- package/src/reanimated2/initializers.ts +11 -8
- package/src/reanimated2/jestUtils.ts +0 -1
- package/src/reanimated2/js-reanimated/JSReanimated.ts +5 -1
- package/src/reanimated2/js-reanimated/index.ts +1 -1
- package/src/reanimated2/mappers.ts +26 -4
- package/src/reanimated2/mock.ts +1 -0
- package/src/reanimated2/platform-specific/checkCppVersion.ts +29 -0
- package/src/reanimated2/platform-specific/jsVersion.ts +6 -0
- package/src/reanimated2/shareables.ts +107 -8
- package/src/reanimated2/threads.ts +36 -17
- package/lib/commonjs/reanimated2/platform-specific/checkVersion.js +0 -42
- package/lib/commonjs/reanimated2/platform-specific/checkVersion.js.map +0 -1
- package/lib/module/reanimated2/platform-specific/checkVersion.js +0 -35
- package/lib/module/reanimated2/platform-specific/checkVersion.js.map +0 -1
- package/src/reanimated2/platform-specific/checkVersion.ts +0 -39
|
@@ -4,17 +4,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.initializeUIRuntime = initializeUIRuntime;
|
|
7
|
-
|
|
8
7
|
var _errors = require("./errors");
|
|
9
|
-
|
|
10
8
|
var _NativeReanimated = _interopRequireDefault(require("./NativeReanimated"));
|
|
11
|
-
|
|
12
9
|
var _PlatformChecker = require("./PlatformChecker");
|
|
13
|
-
|
|
14
10
|
var _threads = require("./threads");
|
|
15
|
-
|
|
16
11
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
-
|
|
18
12
|
// callGuard is only used with debug builds
|
|
19
13
|
function callGuardDEV(fn) {
|
|
20
14
|
'worklet';
|
|
@@ -22,38 +16,31 @@ function callGuardDEV(fn) {
|
|
|
22
16
|
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
23
17
|
args[_key - 1] = arguments[_key];
|
|
24
18
|
}
|
|
25
|
-
|
|
26
19
|
try {
|
|
27
20
|
fn(...args);
|
|
28
21
|
} catch (e) {
|
|
29
|
-
if (global.
|
|
30
|
-
global.
|
|
22
|
+
if (global.__ErrorUtils) {
|
|
23
|
+
global.__ErrorUtils.reportFatalError(e);
|
|
31
24
|
} else {
|
|
32
25
|
throw e;
|
|
33
26
|
}
|
|
34
27
|
}
|
|
35
28
|
}
|
|
36
|
-
|
|
37
29
|
function valueUnpacker(objectToUnpack, category) {
|
|
38
30
|
'worklet';
|
|
39
31
|
|
|
40
32
|
let workletsCache = global.__workletsCache;
|
|
41
33
|
let handleCache = global.__handleCache;
|
|
42
|
-
|
|
43
34
|
if (workletsCache === undefined) {
|
|
44
35
|
// init
|
|
45
36
|
workletsCache = global.__workletsCache = new Map();
|
|
46
37
|
handleCache = global.__handleCache = new WeakMap();
|
|
47
38
|
}
|
|
48
|
-
|
|
49
39
|
const workletHash = objectToUnpack.__workletHash;
|
|
50
|
-
|
|
51
40
|
if (workletHash !== undefined) {
|
|
52
41
|
let workletFun = workletsCache.get(workletHash);
|
|
53
|
-
|
|
54
42
|
if (workletFun === undefined) {
|
|
55
43
|
const initData = objectToUnpack.__initData;
|
|
56
|
-
|
|
57
44
|
if (global.evalWithSourceMap) {
|
|
58
45
|
// if the runtime (hermes only for now) supports loading source maps
|
|
59
46
|
// we want to use the proper filename for the location as it guarantees
|
|
@@ -71,21 +58,17 @@ function valueUnpacker(objectToUnpack, category) {
|
|
|
71
58
|
// eslint-disable-next-line no-eval
|
|
72
59
|
workletFun = eval('(' + initData.code + '\n)');
|
|
73
60
|
}
|
|
74
|
-
|
|
75
61
|
workletsCache.set(workletHash, workletFun);
|
|
76
62
|
}
|
|
77
|
-
|
|
78
63
|
const functionInstance = workletFun.bind(objectToUnpack);
|
|
79
64
|
objectToUnpack._recur = functionInstance;
|
|
80
65
|
return functionInstance;
|
|
81
66
|
} else if (objectToUnpack.__init) {
|
|
82
67
|
let value = handleCache.get(objectToUnpack);
|
|
83
|
-
|
|
84
68
|
if (value === undefined) {
|
|
85
69
|
value = objectToUnpack.__init();
|
|
86
70
|
handleCache.set(objectToUnpack, value);
|
|
87
71
|
}
|
|
88
|
-
|
|
89
72
|
return value;
|
|
90
73
|
} else if (category === 'RemoteFunction') {
|
|
91
74
|
const fun = () => {
|
|
@@ -95,32 +78,28 @@ Possible solutions are:
|
|
|
95
78
|
a) If you want to synchronously execute this method, mark it as a worklet
|
|
96
79
|
b) If you want to execute this function on the JS thread, wrap it using \`runOnJS\``);
|
|
97
80
|
};
|
|
98
|
-
|
|
99
81
|
fun.__remoteFunction = objectToUnpack;
|
|
100
82
|
return fun;
|
|
101
83
|
} else {
|
|
102
84
|
throw new Error('data type not recognized by unpack method');
|
|
103
85
|
}
|
|
104
86
|
}
|
|
105
|
-
|
|
106
87
|
function setupRequestAnimationFrame() {
|
|
107
|
-
'worklet';
|
|
108
|
-
// so we avoid doing requestAnimationFrame batching in Jest environment.
|
|
88
|
+
'worklet';
|
|
109
89
|
|
|
90
|
+
// Jest mocks requestAnimationFrame API and it does not like if that mock gets overridden
|
|
91
|
+
// so we avoid doing requestAnimationFrame batching in Jest environment.
|
|
110
92
|
const nativeRequestAnimationFrame = global.requestAnimationFrame;
|
|
111
93
|
let animationFrameCallbacks = [];
|
|
112
94
|
let lastNativeAnimationFrameTimestamp = -1;
|
|
113
|
-
|
|
114
95
|
global.__flushAnimationFrame = frameTimestamp => {
|
|
115
96
|
const currentCallbacks = animationFrameCallbacks;
|
|
116
97
|
animationFrameCallbacks = [];
|
|
117
98
|
currentCallbacks.forEach(f => f(frameTimestamp));
|
|
118
|
-
(0, _threads.
|
|
99
|
+
(0, _threads.callMicrotasks)();
|
|
119
100
|
};
|
|
120
|
-
|
|
121
101
|
global.requestAnimationFrame = callback => {
|
|
122
102
|
animationFrameCallbacks.push(callback);
|
|
123
|
-
|
|
124
103
|
if (animationFrameCallbacks.length === 1) {
|
|
125
104
|
// We schedule native requestAnimationFrame only when the first callback
|
|
126
105
|
// is added and then use it to execute all the enqueued callbacks. Once
|
|
@@ -130,29 +109,22 @@ function setupRequestAnimationFrame() {
|
|
|
130
109
|
// Make sure we only execute the callbacks once for a given frame
|
|
131
110
|
return;
|
|
132
111
|
}
|
|
133
|
-
|
|
134
112
|
lastNativeAnimationFrameTimestamp = timestamp;
|
|
135
113
|
global.__frameTimestamp = timestamp;
|
|
136
|
-
|
|
137
114
|
global.__flushAnimationFrame(timestamp);
|
|
138
|
-
|
|
139
115
|
global.__frameTimestamp = undefined;
|
|
140
116
|
});
|
|
141
|
-
}
|
|
117
|
+
}
|
|
118
|
+
// Reanimated currently does not support cancelling callbacks requested with
|
|
142
119
|
// requestAnimationFrame. We return -1 as identifier which isn't in line
|
|
143
120
|
// with the spec but it should give users better clue in case they actually
|
|
144
121
|
// attempt to store the value returned from rAF and use it for cancelling.
|
|
145
|
-
|
|
146
|
-
|
|
147
122
|
return -1;
|
|
148
123
|
};
|
|
149
124
|
}
|
|
150
|
-
|
|
151
125
|
function initializeUIRuntime() {
|
|
152
126
|
_NativeReanimated.default.installCoreFunctions(callGuardDEV, valueUnpacker);
|
|
153
|
-
|
|
154
127
|
const IS_JEST = (0, _PlatformChecker.isJest)();
|
|
155
|
-
|
|
156
128
|
if (IS_JEST) {
|
|
157
129
|
// requestAnimationFrame react-native jest's setup is incorrect as it polyfills
|
|
158
130
|
// the method directly using setTimeout, therefore the callback doesn't get the
|
|
@@ -165,30 +137,36 @@ function initializeUIRuntime() {
|
|
|
165
137
|
};
|
|
166
138
|
}
|
|
167
139
|
|
|
168
|
-
|
|
140
|
+
// We really have to create a copy of console here. Function runOnJS we use on elements inside
|
|
141
|
+
// this object makes it not configurable
|
|
142
|
+
const capturableConsole = {
|
|
143
|
+
...console
|
|
144
|
+
};
|
|
169
145
|
(0, _threads.runOnUIImmediately)(() => {
|
|
170
|
-
'worklet';
|
|
146
|
+
'worklet';
|
|
171
147
|
|
|
172
|
-
|
|
148
|
+
// setup error handler
|
|
149
|
+
global.__ErrorUtils = {
|
|
173
150
|
reportFatalError: error => {
|
|
174
151
|
(0, _threads.runOnJS)(_errors.reportFatalErrorOnJS)({
|
|
175
152
|
message: error.message,
|
|
176
153
|
stack: error.stack
|
|
177
154
|
});
|
|
178
155
|
}
|
|
179
|
-
};
|
|
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
|
|
156
|
+
};
|
|
181
157
|
|
|
158
|
+
// setup console
|
|
159
|
+
// @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
|
|
182
160
|
global.console = {
|
|
161
|
+
assert: (0, _threads.runOnJS)(capturableConsole.assert),
|
|
183
162
|
debug: (0, _threads.runOnJS)(capturableConsole.debug),
|
|
184
163
|
log: (0, _threads.runOnJS)(capturableConsole.log),
|
|
185
164
|
warn: (0, _threads.runOnJS)(capturableConsole.warn),
|
|
186
165
|
error: (0, _threads.runOnJS)(capturableConsole.error),
|
|
187
166
|
info: (0, _threads.runOnJS)(capturableConsole.info)
|
|
188
167
|
};
|
|
189
|
-
|
|
190
168
|
if (!IS_JEST) {
|
|
191
|
-
(0, _threads.
|
|
169
|
+
(0, _threads.setupMicrotasks)();
|
|
192
170
|
setupRequestAnimationFrame();
|
|
193
171
|
}
|
|
194
172
|
})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["callGuardDEV","fn","args","e","global","ErrorUtils","reportFatalError","valueUnpacker","objectToUnpack","category","workletsCache","__workletsCache","handleCache","__handleCache","undefined","Map","WeakMap","workletHash","__workletHash","workletFun","get","initData","__initData","evalWithSourceMap","code","location","sourceMap","evalWithSourceUrl","eval","set","functionInstance","bind","_recur","__init","value","fun","Error","__remoteFunction","setupRequestAnimationFrame","nativeRequestAnimationFrame","requestAnimationFrame","animationFrameCallbacks","lastNativeAnimationFrameTimestamp","__flushAnimationFrame","frameTimestamp","currentCallbacks","forEach","f","flushImmediates","callback","push","length","timestamp","__frameTimestamp","initializeUIRuntime","NativeReanimatedModule","installCoreFunctions","IS_JEST","isJest","setTimeout","performance","now","capturableConsole","console","runOnUIImmediately","error","runOnJS","reportFatalErrorOnJS","message","stack","debug","log","warn","info","setupSetImmediate"],"sources":["initializers.ts"],"sourcesContent":["import { reportFatalErrorOnJS } from './errors';\nimport NativeReanimatedModule from './NativeReanimated';\nimport { isJest } from './PlatformChecker';\nimport {\n runOnJS,\n setupSetImmediate,\n flushImmediates,\n runOnUIImmediately,\n} from './threads';\n\n// callGuard is only used with debug builds\nfunction callGuardDEV<T extends Array<any>, U>(\n fn: (...args: T) => U,\n ...args: T\n): void {\n 'worklet';\n try {\n fn(...args);\n } catch (e) {\n if (global.ErrorUtils) {\n global.ErrorUtils.reportFatalError(e as Error);\n } else {\n throw e;\n }\n }\n}\n\nfunction valueUnpacker(objectToUnpack: any, category?: string): any {\n 'worklet';\n let workletsCache = global.__workletsCache;\n let handleCache = global.__handleCache;\n if (workletsCache === undefined) {\n // init\n workletsCache = global.__workletsCache = new Map();\n handleCache = global.__handleCache = new WeakMap();\n }\n const workletHash = objectToUnpack.__workletHash;\n if (workletHash !== undefined) {\n let workletFun = workletsCache.get(workletHash);\n if (workletFun === undefined) {\n const initData = objectToUnpack.__initData;\n if (global.evalWithSourceMap) {\n // if the runtime (hermes only for now) supports loading source maps\n // we want to use the proper filename for the location as it guarantees\n // that debugger understands and loads the source code of the file where\n // the worklet is defined.\n workletFun = global.evalWithSourceMap(\n '(' + initData.code + '\\n)',\n initData.location,\n initData.sourceMap\n ) as (...args: any[]) => any;\n } else if (global.evalWithSourceUrl) {\n // if the runtime doesn't support loading source maps, in dev mode we\n // can pass source url when evaluating the worklet. Now, instead of using\n // the actual file location we use worklet hash, as it the allows us to\n // properly symbolicate traces (see errors.ts for details)\n workletFun = global.evalWithSourceUrl(\n '(' + initData.code + '\\n)',\n `worklet_${workletHash}`\n ) as (...args: any[]) => any;\n } else {\n // in release we use the regular eval to save on JSI calls\n // eslint-disable-next-line no-eval\n workletFun = eval('(' + initData.code + '\\n)') as (\n ...args: any[]\n ) => any;\n }\n workletsCache.set(workletHash, workletFun);\n }\n const functionInstance = workletFun.bind(objectToUnpack);\n objectToUnpack._recur = functionInstance;\n return functionInstance;\n } else if (objectToUnpack.__init) {\n let value = handleCache!.get(objectToUnpack);\n if (value === undefined) {\n value = objectToUnpack.__init();\n handleCache!.set(objectToUnpack, value);\n }\n return value;\n } else if (category === 'RemoteFunction') {\n const fun = () => {\n throw new Error(`Tried to synchronously call a non-worklet function on the UI thread.\n\nPossible solutions are:\n a) If you want to synchronously execute this method, mark it as a worklet\n b) If you want to execute this function on the JS thread, wrap it using \\`runOnJS\\``);\n };\n fun.__remoteFunction = objectToUnpack;\n return fun;\n } else {\n throw new Error('data type not recognized by unpack method');\n }\n}\n\nfunction setupRequestAnimationFrame() {\n 'worklet';\n\n // Jest mocks requestAnimationFrame API and it does not like if that mock gets overridden\n // so we avoid doing requestAnimationFrame batching in Jest environment.\n const nativeRequestAnimationFrame = global.requestAnimationFrame;\n\n let animationFrameCallbacks: Array<(timestamp: number) => void> = [];\n let lastNativeAnimationFrameTimestamp = -1;\n\n global.__flushAnimationFrame = (frameTimestamp: number) => {\n const currentCallbacks = animationFrameCallbacks;\n animationFrameCallbacks = [];\n currentCallbacks.forEach((f) => f(frameTimestamp));\n flushImmediates();\n };\n\n global.requestAnimationFrame = (\n callback: (timestamp: number) => void\n ): number => {\n animationFrameCallbacks.push(callback);\n if (animationFrameCallbacks.length === 1) {\n // We schedule native requestAnimationFrame only when the first callback\n // is added and then use it to execute all the enqueued callbacks. Once\n // the callbacks are run, we clear the array.\n nativeRequestAnimationFrame((timestamp) => {\n if (lastNativeAnimationFrameTimestamp >= timestamp) {\n // Make sure we only execute the callbacks once for a given frame\n return;\n }\n lastNativeAnimationFrameTimestamp = timestamp;\n global.__frameTimestamp = timestamp;\n global.__flushAnimationFrame(timestamp);\n global.__frameTimestamp = undefined;\n });\n }\n // Reanimated currently does not support cancelling callbacks requested with\n // requestAnimationFrame. We return -1 as identifier which isn't in line\n // with the spec but it should give users better clue in case they actually\n // attempt to store the value returned from rAF and use it for cancelling.\n return -1;\n };\n}\n\nexport function initializeUIRuntime() {\n NativeReanimatedModule.installCoreFunctions(callGuardDEV, valueUnpacker);\n\n const IS_JEST = isJest();\n\n if (IS_JEST) {\n // requestAnimationFrame react-native jest's setup is incorrect as it polyfills\n // the method directly using setTimeout, therefore the callback doesn't get the\n // expected timestamp as the only argument: https://github.com/facebook/react-native/blob/main/jest/setup.js#L28\n // We override this setup here to make sure that callbacks get the proper timestamps\n // when executed. For non-jest environments we define requestAnimationFrame in setupRequestAnimationFrame\n // @ts-ignore TypeScript uses Node definition for rAF, setTimeout, etc which returns a Timeout object rather than a number\n global.requestAnimationFrame = (callback: (timestamp: number) => void) => {\n return setTimeout(() => callback(performance.now()), 0);\n };\n }\n\n const capturableConsole = console;\n runOnUIImmediately(() => {\n 'worklet';\n // setup error handler\n global.ErrorUtils = {\n reportFatalError: (error: Error) => {\n runOnJS(reportFatalErrorOnJS)({\n message: error.message,\n stack: error.stack,\n });\n },\n };\n\n // setup console\n // @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\n global.console = {\n debug: runOnJS(capturableConsole.debug),\n log: runOnJS(capturableConsole.log),\n warn: runOnJS(capturableConsole.warn),\n error: runOnJS(capturableConsole.error),\n info: runOnJS(capturableConsole.info),\n };\n\n if (!IS_JEST) {\n setupSetImmediate();\n setupRequestAnimationFrame();\n }\n })();\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_errors","require","_NativeReanimated","_interopRequireDefault","_PlatformChecker","_threads","obj","__esModule","default","callGuardDEV","fn","_len","arguments","length","args","Array","_key","e","global","__ErrorUtils","reportFatalError","valueUnpacker","objectToUnpack","category","workletsCache","__workletsCache","handleCache","__handleCache","undefined","Map","WeakMap","workletHash","__workletHash","workletFun","get","initData","__initData","evalWithSourceMap","code","location","sourceMap","evalWithSourceUrl","eval","set","functionInstance","bind","_recur","__init","value","fun","Error","__remoteFunction","setupRequestAnimationFrame","nativeRequestAnimationFrame","requestAnimationFrame","animationFrameCallbacks","lastNativeAnimationFrameTimestamp","__flushAnimationFrame","frameTimestamp","currentCallbacks","forEach","f","callMicrotasks","callback","push","timestamp","__frameTimestamp","initializeUIRuntime","NativeReanimatedModule","installCoreFunctions","IS_JEST","isJest","setTimeout","performance","now","capturableConsole","console","runOnUIImmediately","error","runOnJS","reportFatalErrorOnJS","message","stack","assert","debug","log","warn","info","setupMicrotasks"],"sources":["initializers.ts"],"sourcesContent":["import { reportFatalErrorOnJS } from './errors';\nimport NativeReanimatedModule from './NativeReanimated';\nimport { isJest } from './PlatformChecker';\nimport {\n runOnJS,\n setupMicrotasks,\n callMicrotasks,\n runOnUIImmediately,\n} from './threads';\n\n// callGuard is only used with debug builds\nfunction callGuardDEV<T extends Array<any>, U>(\n fn: (...args: T) => U,\n ...args: T\n): void {\n 'worklet';\n try {\n fn(...args);\n } catch (e) {\n if (global.__ErrorUtils) {\n global.__ErrorUtils.reportFatalError(e as Error);\n } else {\n throw e;\n }\n }\n}\n\nfunction valueUnpacker(objectToUnpack: any, category?: string): any {\n 'worklet';\n let workletsCache = global.__workletsCache;\n let handleCache = global.__handleCache;\n if (workletsCache === undefined) {\n // init\n workletsCache = global.__workletsCache = new Map();\n handleCache = global.__handleCache = new WeakMap();\n }\n const workletHash = objectToUnpack.__workletHash;\n if (workletHash !== undefined) {\n let workletFun = workletsCache.get(workletHash);\n if (workletFun === undefined) {\n const initData = objectToUnpack.__initData;\n if (global.evalWithSourceMap) {\n // if the runtime (hermes only for now) supports loading source maps\n // we want to use the proper filename for the location as it guarantees\n // that debugger understands and loads the source code of the file where\n // the worklet is defined.\n workletFun = global.evalWithSourceMap(\n '(' + initData.code + '\\n)',\n initData.location,\n initData.sourceMap\n ) as (...args: any[]) => any;\n } else if (global.evalWithSourceUrl) {\n // if the runtime doesn't support loading source maps, in dev mode we\n // can pass source url when evaluating the worklet. Now, instead of using\n // the actual file location we use worklet hash, as it the allows us to\n // properly symbolicate traces (see errors.ts for details)\n workletFun = global.evalWithSourceUrl(\n '(' + initData.code + '\\n)',\n `worklet_${workletHash}`\n ) as (...args: any[]) => any;\n } else {\n // in release we use the regular eval to save on JSI calls\n // eslint-disable-next-line no-eval\n workletFun = eval('(' + initData.code + '\\n)') as (\n ...args: any[]\n ) => any;\n }\n workletsCache.set(workletHash, workletFun);\n }\n const functionInstance = workletFun.bind(objectToUnpack);\n objectToUnpack._recur = functionInstance;\n return functionInstance;\n } else if (objectToUnpack.__init) {\n let value = handleCache!.get(objectToUnpack);\n if (value === undefined) {\n value = objectToUnpack.__init();\n handleCache!.set(objectToUnpack, value);\n }\n return value;\n } else if (category === 'RemoteFunction') {\n const fun = () => {\n throw new Error(`Tried to synchronously call a non-worklet function on the UI thread.\n\nPossible solutions are:\n a) If you want to synchronously execute this method, mark it as a worklet\n b) If you want to execute this function on the JS thread, wrap it using \\`runOnJS\\``);\n };\n fun.__remoteFunction = objectToUnpack;\n return fun;\n } else {\n throw new Error('data type not recognized by unpack method');\n }\n}\n\nfunction setupRequestAnimationFrame() {\n 'worklet';\n\n // Jest mocks requestAnimationFrame API and it does not like if that mock gets overridden\n // so we avoid doing requestAnimationFrame batching in Jest environment.\n const nativeRequestAnimationFrame = global.requestAnimationFrame;\n\n let animationFrameCallbacks: Array<(timestamp: number) => void> = [];\n let lastNativeAnimationFrameTimestamp = -1;\n\n global.__flushAnimationFrame = (frameTimestamp: number) => {\n const currentCallbacks = animationFrameCallbacks;\n animationFrameCallbacks = [];\n currentCallbacks.forEach((f) => f(frameTimestamp));\n callMicrotasks();\n };\n\n global.requestAnimationFrame = (\n callback: (timestamp: number) => void\n ): number => {\n animationFrameCallbacks.push(callback);\n if (animationFrameCallbacks.length === 1) {\n // We schedule native requestAnimationFrame only when the first callback\n // is added and then use it to execute all the enqueued callbacks. Once\n // the callbacks are run, we clear the array.\n nativeRequestAnimationFrame((timestamp) => {\n if (lastNativeAnimationFrameTimestamp >= timestamp) {\n // Make sure we only execute the callbacks once for a given frame\n return;\n }\n lastNativeAnimationFrameTimestamp = timestamp;\n global.__frameTimestamp = timestamp;\n global.__flushAnimationFrame(timestamp);\n global.__frameTimestamp = undefined;\n });\n }\n // Reanimated currently does not support cancelling callbacks requested with\n // requestAnimationFrame. We return -1 as identifier which isn't in line\n // with the spec but it should give users better clue in case they actually\n // attempt to store the value returned from rAF and use it for cancelling.\n return -1;\n };\n}\n\nexport function initializeUIRuntime() {\n NativeReanimatedModule.installCoreFunctions(callGuardDEV, valueUnpacker);\n\n const IS_JEST = isJest();\n\n if (IS_JEST) {\n // requestAnimationFrame react-native jest's setup is incorrect as it polyfills\n // the method directly using setTimeout, therefore the callback doesn't get the\n // expected timestamp as the only argument: https://github.com/facebook/react-native/blob/main/jest/setup.js#L28\n // We override this setup here to make sure that callbacks get the proper timestamps\n // when executed. For non-jest environments we define requestAnimationFrame in setupRequestAnimationFrame\n // @ts-ignore TypeScript uses Node definition for rAF, setTimeout, etc which returns a Timeout object rather than a number\n global.requestAnimationFrame = (callback: (timestamp: number) => void) => {\n return setTimeout(() => callback(performance.now()), 0);\n };\n }\n\n // We really have to create a copy of console here. Function runOnJS we use on elements inside\n // this object makes it not configurable\n const capturableConsole = { ...console };\n runOnUIImmediately(() => {\n 'worklet';\n // setup error handler\n global.__ErrorUtils = {\n reportFatalError: (error: Error) => {\n runOnJS(reportFatalErrorOnJS)({\n message: error.message,\n stack: error.stack,\n });\n },\n };\n\n // setup console\n // @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\n global.console = {\n assert: runOnJS(capturableConsole.assert),\n debug: runOnJS(capturableConsole.debug),\n log: runOnJS(capturableConsole.log),\n warn: runOnJS(capturableConsole.warn),\n error: runOnJS(capturableConsole.error),\n info: runOnJS(capturableConsole.info),\n };\n\n if (!IS_JEST) {\n setupMicrotasks();\n setupRequestAnimationFrame();\n }\n })();\n}\n"],"mappings":"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"}
|
|
@@ -5,22 +5,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.interpolateSharableColor = exports.interpolateColor = exports.Extrapolate = exports.ColorSpace = void 0;
|
|
7
7
|
exports.useInterpolateConfig = useInterpolateConfig;
|
|
8
|
-
|
|
9
8
|
var _Colors = require("./Colors");
|
|
10
|
-
|
|
11
9
|
var _core = require("./core");
|
|
12
|
-
|
|
13
10
|
var _interpolation = require("./interpolation");
|
|
14
|
-
|
|
15
11
|
var _useSharedValue = require("./hook/useSharedValue");
|
|
16
|
-
|
|
17
12
|
const Extrapolate = {
|
|
18
13
|
EXTEND: 'extend',
|
|
19
14
|
CLAMP: 'clamp',
|
|
20
15
|
IDENTITY: 'identity'
|
|
21
16
|
};
|
|
22
17
|
exports.Extrapolate = Extrapolate;
|
|
23
|
-
|
|
24
18
|
const interpolateColorsHSV = (value, inputRange, colors, options) => {
|
|
25
19
|
'worklet';
|
|
26
20
|
|
|
@@ -28,7 +22,6 @@ const interpolateColorsHSV = (value, inputRange, colors, options) => {
|
|
|
28
22
|
const {
|
|
29
23
|
useCorrectedHSVInterpolation = true
|
|
30
24
|
} = options;
|
|
31
|
-
|
|
32
25
|
if (useCorrectedHSVInterpolation) {
|
|
33
26
|
// if the difference between hues in a range is > 180 deg
|
|
34
27
|
// then move the hue at the right end of the range +/- 360 deg
|
|
@@ -37,10 +30,8 @@ const interpolateColorsHSV = (value, inputRange, colors, options) => {
|
|
|
37
30
|
const correctedInputRange = [inputRange[0]];
|
|
38
31
|
const originalH = colors.h;
|
|
39
32
|
const correctedH = [originalH[0]];
|
|
40
|
-
|
|
41
33
|
for (let i = 1; i < originalH.length; ++i) {
|
|
42
34
|
const d = originalH[i] - originalH[i - 1];
|
|
43
|
-
|
|
44
35
|
if (originalH[i] > originalH[i - 1] && d > 0.5) {
|
|
45
36
|
correctedInputRange.push(inputRange[i]);
|
|
46
37
|
correctedInputRange.push(inputRange[i] + 0.00001);
|
|
@@ -56,30 +47,25 @@ const interpolateColorsHSV = (value, inputRange, colors, options) => {
|
|
|
56
47
|
correctedH.push(originalH[i]);
|
|
57
48
|
}
|
|
58
49
|
}
|
|
59
|
-
|
|
60
50
|
h = ((0, _interpolation.interpolate)(value, correctedInputRange, correctedH, Extrapolate.CLAMP) + 1) % 1;
|
|
61
51
|
} else {
|
|
62
52
|
h = (0, _interpolation.interpolate)(value, inputRange, colors.h, Extrapolate.CLAMP);
|
|
63
53
|
}
|
|
64
|
-
|
|
65
54
|
const s = (0, _interpolation.interpolate)(value, inputRange, colors.s, Extrapolate.CLAMP);
|
|
66
55
|
const v = (0, _interpolation.interpolate)(value, inputRange, colors.v, Extrapolate.CLAMP);
|
|
67
56
|
const a = (0, _interpolation.interpolate)(value, inputRange, colors.a, Extrapolate.CLAMP);
|
|
68
57
|
return (0, _Colors.hsvToColor)(h, s, v, a);
|
|
69
58
|
};
|
|
70
|
-
|
|
71
59
|
const toLinearSpace = (x, gamma) => {
|
|
72
60
|
'worklet';
|
|
73
61
|
|
|
74
62
|
return x.map(v => Math.pow(v / 255, gamma));
|
|
75
63
|
};
|
|
76
|
-
|
|
77
64
|
const toGammaSpace = (x, gamma) => {
|
|
78
65
|
'worklet';
|
|
79
66
|
|
|
80
67
|
return Math.round(Math.pow(x, 1 / gamma) * 255);
|
|
81
68
|
};
|
|
82
|
-
|
|
83
69
|
const interpolateColorsRGB = (value, inputRange, colors, options) => {
|
|
84
70
|
'worklet';
|
|
85
71
|
|
|
@@ -91,25 +77,20 @@ const interpolateColorsRGB = (value, inputRange, colors, options) => {
|
|
|
91
77
|
g: outputG,
|
|
92
78
|
b: outputB
|
|
93
79
|
} = colors;
|
|
94
|
-
|
|
95
80
|
if (gamma !== 1) {
|
|
96
81
|
outputR = toLinearSpace(outputR, gamma);
|
|
97
82
|
outputG = toLinearSpace(outputG, gamma);
|
|
98
83
|
outputB = toLinearSpace(outputB, gamma);
|
|
99
84
|
}
|
|
100
|
-
|
|
101
85
|
const r = (0, _interpolation.interpolate)(value, inputRange, outputR, Extrapolate.CLAMP);
|
|
102
86
|
const g = (0, _interpolation.interpolate)(value, inputRange, outputG, Extrapolate.CLAMP);
|
|
103
87
|
const b = (0, _interpolation.interpolate)(value, inputRange, outputB, Extrapolate.CLAMP);
|
|
104
88
|
const a = (0, _interpolation.interpolate)(value, inputRange, colors.a, Extrapolate.CLAMP);
|
|
105
|
-
|
|
106
89
|
if (gamma === 1) {
|
|
107
90
|
return (0, _Colors.rgbaColor)(r, g, b, a);
|
|
108
91
|
}
|
|
109
|
-
|
|
110
92
|
return (0, _Colors.rgbaColor)(toGammaSpace(r, gamma), toGammaSpace(g, gamma), toGammaSpace(b, gamma), a);
|
|
111
93
|
};
|
|
112
|
-
|
|
113
94
|
const getInterpolateRGB = colors => {
|
|
114
95
|
'worklet';
|
|
115
96
|
|
|
@@ -117,11 +98,10 @@ const getInterpolateRGB = colors => {
|
|
|
117
98
|
const g = [];
|
|
118
99
|
const b = [];
|
|
119
100
|
const a = [];
|
|
120
|
-
|
|
121
101
|
for (let i = 0; i < colors.length; ++i) {
|
|
122
102
|
const color = colors[i];
|
|
123
|
-
const processedColor = (0, _Colors.processColor)(color);
|
|
124
|
-
|
|
103
|
+
const processedColor = (0, _Colors.processColor)(color);
|
|
104
|
+
// explicit check in case if processedColor is 0
|
|
125
105
|
if (processedColor !== null && processedColor !== undefined) {
|
|
126
106
|
r.push((0, _Colors.red)(processedColor));
|
|
127
107
|
g.push((0, _Colors.green)(processedColor));
|
|
@@ -129,7 +109,6 @@ const getInterpolateRGB = colors => {
|
|
|
129
109
|
a.push((0, _Colors.opacity)(processedColor));
|
|
130
110
|
}
|
|
131
111
|
}
|
|
132
|
-
|
|
133
112
|
return {
|
|
134
113
|
r,
|
|
135
114
|
g,
|
|
@@ -137,7 +116,6 @@ const getInterpolateRGB = colors => {
|
|
|
137
116
|
a
|
|
138
117
|
};
|
|
139
118
|
};
|
|
140
|
-
|
|
141
119
|
const getInterpolateHSV = colors => {
|
|
142
120
|
'worklet';
|
|
143
121
|
|
|
@@ -145,11 +123,9 @@ const getInterpolateHSV = colors => {
|
|
|
145
123
|
const s = [];
|
|
146
124
|
const v = [];
|
|
147
125
|
const a = [];
|
|
148
|
-
|
|
149
126
|
for (let i = 0; i < colors.length; ++i) {
|
|
150
127
|
const color = colors[i];
|
|
151
128
|
const processedColor = (0, _Colors.processColor)(color);
|
|
152
|
-
|
|
153
129
|
if (typeof processedColor === 'number') {
|
|
154
130
|
const processedHSVColor = (0, _Colors.RGBtoHSV)((0, _Colors.red)(processedColor), (0, _Colors.green)(processedColor), (0, _Colors.blue)(processedColor));
|
|
155
131
|
h.push(processedHSVColor.h);
|
|
@@ -158,7 +134,6 @@ const getInterpolateHSV = colors => {
|
|
|
158
134
|
a.push((0, _Colors.opacity)(processedColor));
|
|
159
135
|
}
|
|
160
136
|
}
|
|
161
|
-
|
|
162
137
|
return {
|
|
163
138
|
h,
|
|
164
139
|
s,
|
|
@@ -166,31 +141,25 @@ const getInterpolateHSV = colors => {
|
|
|
166
141
|
a
|
|
167
142
|
};
|
|
168
143
|
};
|
|
169
|
-
|
|
170
144
|
const interpolateColor = function (value, inputRange, outputRange) {
|
|
171
145
|
'worklet';
|
|
172
146
|
|
|
173
147
|
let colorSpace = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'RGB';
|
|
174
148
|
let options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
|
|
175
|
-
|
|
176
149
|
if (colorSpace === 'HSV') {
|
|
177
150
|
return interpolateColorsHSV(value, inputRange, getInterpolateHSV(outputRange), options);
|
|
178
151
|
} else if (colorSpace === 'RGB') {
|
|
179
152
|
return interpolateColorsRGB(value, inputRange, getInterpolateRGB(outputRange), options);
|
|
180
153
|
}
|
|
181
|
-
|
|
182
154
|
throw new Error(`Invalid color space provided: ${colorSpace}. Supported values are: ['RGB', 'HSV']`);
|
|
183
155
|
};
|
|
184
|
-
|
|
185
156
|
exports.interpolateColor = interpolateColor;
|
|
186
|
-
let ColorSpace
|
|
187
|
-
exports.ColorSpace = ColorSpace;
|
|
188
|
-
|
|
189
|
-
(function (ColorSpace) {
|
|
157
|
+
let ColorSpace = /*#__PURE__*/function (ColorSpace) {
|
|
190
158
|
ColorSpace[ColorSpace["RGB"] = 0] = "RGB";
|
|
191
159
|
ColorSpace[ColorSpace["HSV"] = 1] = "HSV";
|
|
192
|
-
|
|
193
|
-
|
|
160
|
+
return ColorSpace;
|
|
161
|
+
}({});
|
|
162
|
+
exports.ColorSpace = ColorSpace;
|
|
194
163
|
function useInterpolateConfig(inputRange, outputRange) {
|
|
195
164
|
let colorSpace = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ColorSpace.RGB;
|
|
196
165
|
let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
|
|
@@ -202,30 +171,24 @@ function useInterpolateConfig(inputRange, outputRange) {
|
|
|
202
171
|
options
|
|
203
172
|
});
|
|
204
173
|
}
|
|
205
|
-
|
|
206
174
|
const interpolateSharableColor = (value, interpolateConfig) => {
|
|
207
175
|
'worklet';
|
|
208
176
|
|
|
209
177
|
let colors = interpolateConfig.value.cache.value;
|
|
210
|
-
|
|
211
178
|
if (interpolateConfig.value.colorSpace === ColorSpace.RGB) {
|
|
212
179
|
if (!colors) {
|
|
213
180
|
colors = getInterpolateRGB(interpolateConfig.value.outputRange);
|
|
214
181
|
interpolateConfig.value.cache.value = colors;
|
|
215
182
|
}
|
|
216
|
-
|
|
217
183
|
return interpolateColorsRGB(value, interpolateConfig.value.inputRange, colors, interpolateConfig.value.options);
|
|
218
184
|
} else if (interpolateConfig.value.colorSpace === ColorSpace.HSV) {
|
|
219
185
|
if (!colors) {
|
|
220
186
|
colors = getInterpolateHSV(interpolateConfig.value.outputRange);
|
|
221
187
|
interpolateConfig.value.cache.value = colors;
|
|
222
188
|
}
|
|
223
|
-
|
|
224
189
|
return interpolateColorsHSV(value, interpolateConfig.value.inputRange, colors, interpolateConfig.value.options);
|
|
225
190
|
}
|
|
226
|
-
|
|
227
191
|
throw new Error(`Invalid color space provided: ${interpolateConfig.value.colorSpace}. Supported values are: ['RGB', 'HSV']`);
|
|
228
192
|
};
|
|
229
|
-
|
|
230
193
|
exports.interpolateSharableColor = interpolateSharableColor;
|
|
231
194
|
//# sourceMappingURL=interpolateColor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Extrapolate","EXTEND","CLAMP","IDENTITY","interpolateColorsHSV","value","inputRange","colors","options","h","useCorrectedHSVInterpolation","correctedInputRange","originalH","correctedH","i","length","d","push","interpolate","s","v","a","hsvToColor","toLinearSpace","x","gamma","map","Math","pow","toGammaSpace","round","interpolateColorsRGB","r","outputR","g","outputG","b","outputB","rgbaColor","getInterpolateRGB","color","processedColor","processColor","undefined","red","green","blue","opacity","getInterpolateHSV","processedHSVColor","RGBtoHSV","interpolateColor","outputRange","colorSpace","Error","ColorSpace","useInterpolateConfig","RGB","useSharedValue","cache","makeMutable","interpolateSharableColor","interpolateConfig","HSV"],"sources":["interpolateColor.ts"],"sourcesContent":["import {\n hsvToColor,\n RGBtoHSV,\n rgbaColor,\n processColor,\n red,\n green,\n blue,\n opacity,\n} from './Colors';\nimport { makeMutable } from './core';\nimport { interpolate } from './interpolation';\nimport { SharedValue } from './commonTypes';\nimport { useSharedValue } from './hook/useSharedValue';\n\nexport const Extrapolate = {\n EXTEND: 'extend',\n CLAMP: 'clamp',\n IDENTITY: 'identity',\n};\n\nexport type InterpolationOptions = {\n gamma?: number;\n useCorrectedHSVInterpolation?: boolean;\n};\n\nconst interpolateColorsHSV = (\n value: number,\n inputRange: readonly number[],\n colors: InterpolateHSV,\n options: InterpolationOptions\n) => {\n 'worklet';\n let h = 0;\n const { useCorrectedHSVInterpolation = true } = options;\n if (useCorrectedHSVInterpolation) {\n // if the difference between hues in a range is > 180 deg\n // then move the hue at the right end of the range +/- 360 deg\n // and add the next point in the original place + 0.00001 with original hue\n // to not break the next range\n const correctedInputRange = [inputRange[0]];\n const originalH = colors.h;\n const correctedH = [originalH[0]];\n\n for (let i = 1; i < originalH.length; ++i) {\n const d = originalH[i] - originalH[i - 1];\n if (originalH[i] > originalH[i - 1] && d > 0.5) {\n correctedInputRange.push(inputRange[i]);\n correctedInputRange.push(inputRange[i] + 0.00001);\n correctedH.push(originalH[i] - 1);\n correctedH.push(originalH[i]);\n } else if (originalH[i] < originalH[i - 1] && d < -0.5) {\n correctedInputRange.push(inputRange[i]);\n correctedInputRange.push(inputRange[i] + 0.00001);\n correctedH.push(originalH[i] + 1);\n correctedH.push(originalH[i]);\n } else {\n correctedInputRange.push(inputRange[i]);\n correctedH.push(originalH[i]);\n }\n }\n h =\n (interpolate(value, correctedInputRange, correctedH, Extrapolate.CLAMP) +\n 1) %\n 1;\n } else {\n h = interpolate(value, inputRange, colors.h, Extrapolate.CLAMP);\n }\n const s = interpolate(value, inputRange, colors.s, Extrapolate.CLAMP);\n const v = interpolate(value, inputRange, colors.v, Extrapolate.CLAMP);\n const a = interpolate(value, inputRange, colors.a, Extrapolate.CLAMP);\n return hsvToColor(h, s, v, a);\n};\n\nconst toLinearSpace = (x: number[], gamma: number): number[] => {\n 'worklet';\n return x.map((v) => Math.pow(v / 255, gamma));\n};\n\nconst toGammaSpace = (x: number, gamma: number): number => {\n 'worklet';\n return Math.round(Math.pow(x, 1 / gamma) * 255);\n};\n\nconst interpolateColorsRGB = (\n value: number,\n inputRange: readonly number[],\n colors: InterpolateRGB,\n options: InterpolationOptions\n) => {\n 'worklet';\n const { gamma = 2.2 } = options;\n let { r: outputR, g: outputG, b: outputB } = colors;\n if (gamma !== 1) {\n outputR = toLinearSpace(outputR, gamma);\n outputG = toLinearSpace(outputG, gamma);\n outputB = toLinearSpace(outputB, gamma);\n }\n const r = interpolate(value, inputRange, outputR, Extrapolate.CLAMP);\n const g = interpolate(value, inputRange, outputG, Extrapolate.CLAMP);\n const b = interpolate(value, inputRange, outputB, Extrapolate.CLAMP);\n const a = interpolate(value, inputRange, colors.a, Extrapolate.CLAMP);\n if (gamma === 1) {\n return rgbaColor(r, g, b, a);\n }\n return rgbaColor(\n toGammaSpace(r, gamma),\n toGammaSpace(g, gamma),\n toGammaSpace(b, gamma),\n a\n );\n};\n\ninterface InterpolateRGB {\n r: number[];\n g: number[];\n b: number[];\n a: number[];\n}\n\nconst getInterpolateRGB = (\n colors: readonly (string | number)[]\n): InterpolateRGB => {\n 'worklet';\n\n const r = [];\n const g = [];\n const b = [];\n const a = [];\n for (let i = 0; i < colors.length; ++i) {\n const color = colors[i];\n const processedColor = processColor(color);\n // explicit check in case if processedColor is 0\n if (processedColor !== null && processedColor !== undefined) {\n r.push(red(processedColor));\n g.push(green(processedColor));\n b.push(blue(processedColor));\n a.push(opacity(processedColor));\n }\n }\n return { r, g, b, a };\n};\n\ninterface InterpolateHSV {\n h: number[];\n s: number[];\n v: number[];\n a: number[];\n}\n\nconst getInterpolateHSV = (\n colors: readonly (string | number)[]\n): InterpolateHSV => {\n 'worklet';\n const h = [];\n const s = [];\n const v = [];\n const a = [];\n for (let i = 0; i < colors.length; ++i) {\n const color = colors[i];\n const processedColor = processColor(color) as any;\n if (typeof processedColor === 'number') {\n const processedHSVColor = RGBtoHSV(\n red(processedColor),\n green(processedColor),\n blue(processedColor)\n );\n\n h.push(processedHSVColor.h);\n s.push(processedHSVColor.s);\n v.push(processedHSVColor.v);\n a.push(opacity(processedColor));\n }\n }\n return { h, s, v, a };\n};\n\nexport const interpolateColor = (\n value: number,\n inputRange: readonly number[],\n outputRange: readonly (string | number)[],\n colorSpace: 'RGB' | 'HSV' = 'RGB',\n options: InterpolationOptions = {}\n): string | number => {\n 'worklet';\n if (colorSpace === 'HSV') {\n return interpolateColorsHSV(\n value,\n inputRange,\n getInterpolateHSV(outputRange),\n options\n );\n } else if (colorSpace === 'RGB') {\n return interpolateColorsRGB(\n value,\n inputRange,\n getInterpolateRGB(outputRange),\n options\n );\n }\n throw new Error(\n `Invalid color space provided: ${colorSpace}. Supported values are: ['RGB', 'HSV']`\n );\n};\n\nexport enum ColorSpace {\n RGB = 0,\n HSV = 1,\n}\n\nexport interface InterpolateConfig {\n inputRange: readonly number[];\n outputRange: readonly (string | number)[];\n colorSpace: ColorSpace;\n cache: SharedValue<InterpolateRGB | InterpolateHSV | null>;\n options: InterpolationOptions;\n}\n\nexport function useInterpolateConfig(\n inputRange: readonly number[],\n outputRange: readonly (string | number)[],\n colorSpace = ColorSpace.RGB,\n options: InterpolationOptions = {}\n): SharedValue<InterpolateConfig> {\n return useSharedValue<InterpolateConfig>({\n inputRange,\n outputRange,\n colorSpace,\n cache: makeMutable<InterpolateRGB | InterpolateHSV | null>(null),\n options,\n });\n}\n\nexport const interpolateSharableColor = (\n value: number,\n interpolateConfig: SharedValue<InterpolateConfig>\n): string | number => {\n 'worklet';\n let colors = interpolateConfig.value.cache.value;\n if (interpolateConfig.value.colorSpace === ColorSpace.RGB) {\n if (!colors) {\n colors = getInterpolateRGB(interpolateConfig.value.outputRange);\n interpolateConfig.value.cache.value = colors;\n }\n return interpolateColorsRGB(\n value,\n interpolateConfig.value.inputRange,\n colors as InterpolateRGB,\n interpolateConfig.value.options\n );\n } else if (interpolateConfig.value.colorSpace === ColorSpace.HSV) {\n if (!colors) {\n colors = getInterpolateHSV(interpolateConfig.value.outputRange);\n interpolateConfig.value.cache.value = colors;\n }\n return interpolateColorsHSV(\n value,\n interpolateConfig.value.inputRange,\n colors as InterpolateHSV,\n interpolateConfig.value.options\n );\n }\n throw new Error(\n `Invalid color space provided: ${interpolateConfig.value.colorSpace}. Supported values are: ['RGB', 'HSV']`\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_Colors","require","_core","_interpolation","_useSharedValue","Extrapolate","EXTEND","CLAMP","IDENTITY","exports","interpolateColorsHSV","value","inputRange","colors","options","h","useCorrectedHSVInterpolation","correctedInputRange","originalH","correctedH","i","length","d","push","interpolate","s","v","a","hsvToColor","toLinearSpace","x","gamma","map","Math","pow","toGammaSpace","round","interpolateColorsRGB","r","outputR","g","outputG","b","outputB","rgbaColor","getInterpolateRGB","color","processedColor","processColor","undefined","red","green","blue","opacity","getInterpolateHSV","processedHSVColor","RGBtoHSV","interpolateColor","outputRange","colorSpace","arguments","Error","ColorSpace","useInterpolateConfig","RGB","useSharedValue","cache","makeMutable","interpolateSharableColor","interpolateConfig","HSV"],"sources":["interpolateColor.ts"],"sourcesContent":["import {\n hsvToColor,\n RGBtoHSV,\n rgbaColor,\n processColor,\n red,\n green,\n blue,\n opacity,\n} from './Colors';\nimport { makeMutable } from './core';\nimport { interpolate } from './interpolation';\nimport { SharedValue } from './commonTypes';\nimport { useSharedValue } from './hook/useSharedValue';\n\nexport const Extrapolate = {\n EXTEND: 'extend',\n CLAMP: 'clamp',\n IDENTITY: 'identity',\n};\n\nexport type InterpolationOptions = {\n gamma?: number;\n useCorrectedHSVInterpolation?: boolean;\n};\n\nconst interpolateColorsHSV = (\n value: number,\n inputRange: readonly number[],\n colors: InterpolateHSV,\n options: InterpolationOptions\n) => {\n 'worklet';\n let h = 0;\n const { useCorrectedHSVInterpolation = true } = options;\n if (useCorrectedHSVInterpolation) {\n // if the difference between hues in a range is > 180 deg\n // then move the hue at the right end of the range +/- 360 deg\n // and add the next point in the original place + 0.00001 with original hue\n // to not break the next range\n const correctedInputRange = [inputRange[0]];\n const originalH = colors.h;\n const correctedH = [originalH[0]];\n\n for (let i = 1; i < originalH.length; ++i) {\n const d = originalH[i] - originalH[i - 1];\n if (originalH[i] > originalH[i - 1] && d > 0.5) {\n correctedInputRange.push(inputRange[i]);\n correctedInputRange.push(inputRange[i] + 0.00001);\n correctedH.push(originalH[i] - 1);\n correctedH.push(originalH[i]);\n } else if (originalH[i] < originalH[i - 1] && d < -0.5) {\n correctedInputRange.push(inputRange[i]);\n correctedInputRange.push(inputRange[i] + 0.00001);\n correctedH.push(originalH[i] + 1);\n correctedH.push(originalH[i]);\n } else {\n correctedInputRange.push(inputRange[i]);\n correctedH.push(originalH[i]);\n }\n }\n h =\n (interpolate(value, correctedInputRange, correctedH, Extrapolate.CLAMP) +\n 1) %\n 1;\n } else {\n h = interpolate(value, inputRange, colors.h, Extrapolate.CLAMP);\n }\n const s = interpolate(value, inputRange, colors.s, Extrapolate.CLAMP);\n const v = interpolate(value, inputRange, colors.v, Extrapolate.CLAMP);\n const a = interpolate(value, inputRange, colors.a, Extrapolate.CLAMP);\n return hsvToColor(h, s, v, a);\n};\n\nconst toLinearSpace = (x: number[], gamma: number): number[] => {\n 'worklet';\n return x.map((v) => Math.pow(v / 255, gamma));\n};\n\nconst toGammaSpace = (x: number, gamma: number): number => {\n 'worklet';\n return Math.round(Math.pow(x, 1 / gamma) * 255);\n};\n\nconst interpolateColorsRGB = (\n value: number,\n inputRange: readonly number[],\n colors: InterpolateRGB,\n options: InterpolationOptions\n) => {\n 'worklet';\n const { gamma = 2.2 } = options;\n let { r: outputR, g: outputG, b: outputB } = colors;\n if (gamma !== 1) {\n outputR = toLinearSpace(outputR, gamma);\n outputG = toLinearSpace(outputG, gamma);\n outputB = toLinearSpace(outputB, gamma);\n }\n const r = interpolate(value, inputRange, outputR, Extrapolate.CLAMP);\n const g = interpolate(value, inputRange, outputG, Extrapolate.CLAMP);\n const b = interpolate(value, inputRange, outputB, Extrapolate.CLAMP);\n const a = interpolate(value, inputRange, colors.a, Extrapolate.CLAMP);\n if (gamma === 1) {\n return rgbaColor(r, g, b, a);\n }\n return rgbaColor(\n toGammaSpace(r, gamma),\n toGammaSpace(g, gamma),\n toGammaSpace(b, gamma),\n a\n );\n};\n\ninterface InterpolateRGB {\n r: number[];\n g: number[];\n b: number[];\n a: number[];\n}\n\nconst getInterpolateRGB = (\n colors: readonly (string | number)[]\n): InterpolateRGB => {\n 'worklet';\n\n const r = [];\n const g = [];\n const b = [];\n const a = [];\n for (let i = 0; i < colors.length; ++i) {\n const color = colors[i];\n const processedColor = processColor(color);\n // explicit check in case if processedColor is 0\n if (processedColor !== null && processedColor !== undefined) {\n r.push(red(processedColor));\n g.push(green(processedColor));\n b.push(blue(processedColor));\n a.push(opacity(processedColor));\n }\n }\n return { r, g, b, a };\n};\n\ninterface InterpolateHSV {\n h: number[];\n s: number[];\n v: number[];\n a: number[];\n}\n\nconst getInterpolateHSV = (\n colors: readonly (string | number)[]\n): InterpolateHSV => {\n 'worklet';\n const h = [];\n const s = [];\n const v = [];\n const a = [];\n for (let i = 0; i < colors.length; ++i) {\n const color = colors[i];\n const processedColor = processColor(color) as any;\n if (typeof processedColor === 'number') {\n const processedHSVColor = RGBtoHSV(\n red(processedColor),\n green(processedColor),\n blue(processedColor)\n );\n\n h.push(processedHSVColor.h);\n s.push(processedHSVColor.s);\n v.push(processedHSVColor.v);\n a.push(opacity(processedColor));\n }\n }\n return { h, s, v, a };\n};\n\nexport const interpolateColor = (\n value: number,\n inputRange: readonly number[],\n outputRange: readonly (string | number)[],\n colorSpace: 'RGB' | 'HSV' = 'RGB',\n options: InterpolationOptions = {}\n): string | number => {\n 'worklet';\n if (colorSpace === 'HSV') {\n return interpolateColorsHSV(\n value,\n inputRange,\n getInterpolateHSV(outputRange),\n options\n );\n } else if (colorSpace === 'RGB') {\n return interpolateColorsRGB(\n value,\n inputRange,\n getInterpolateRGB(outputRange),\n options\n );\n }\n throw new Error(\n `Invalid color space provided: ${colorSpace}. Supported values are: ['RGB', 'HSV']`\n );\n};\n\nexport enum ColorSpace {\n RGB = 0,\n HSV = 1,\n}\n\nexport interface InterpolateConfig {\n inputRange: readonly number[];\n outputRange: readonly (string | number)[];\n colorSpace: ColorSpace;\n cache: SharedValue<InterpolateRGB | InterpolateHSV | null>;\n options: InterpolationOptions;\n}\n\nexport function useInterpolateConfig(\n inputRange: readonly number[],\n outputRange: readonly (string | number)[],\n colorSpace = ColorSpace.RGB,\n options: InterpolationOptions = {}\n): SharedValue<InterpolateConfig> {\n return useSharedValue<InterpolateConfig>({\n inputRange,\n outputRange,\n colorSpace,\n cache: makeMutable<InterpolateRGB | InterpolateHSV | null>(null),\n options,\n });\n}\n\nexport const interpolateSharableColor = (\n value: number,\n interpolateConfig: SharedValue<InterpolateConfig>\n): string | number => {\n 'worklet';\n let colors = interpolateConfig.value.cache.value;\n if (interpolateConfig.value.colorSpace === ColorSpace.RGB) {\n if (!colors) {\n colors = getInterpolateRGB(interpolateConfig.value.outputRange);\n interpolateConfig.value.cache.value = colors;\n }\n return interpolateColorsRGB(\n value,\n interpolateConfig.value.inputRange,\n colors as InterpolateRGB,\n interpolateConfig.value.options\n );\n } else if (interpolateConfig.value.colorSpace === ColorSpace.HSV) {\n if (!colors) {\n colors = getInterpolateHSV(interpolateConfig.value.outputRange);\n interpolateConfig.value.cache.value = colors;\n }\n return interpolateColorsHSV(\n value,\n interpolateConfig.value.inputRange,\n colors as InterpolateHSV,\n interpolateConfig.value.options\n );\n }\n throw new Error(\n `Invalid color space provided: ${interpolateConfig.value.colorSpace}. Supported values are: ['RGB', 'HSV']`\n );\n};\n"],"mappings":"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"}
|