react-native-reanimated 3.8.0 → 3.9.0-layout-animation-experimental
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/ShadowTreeCloner.cpp +5 -2
- package/Common/cpp/LayoutAnimations/LayoutAnimationsManager.cpp +42 -32
- package/Common/cpp/LayoutAnimations/LayoutAnimationsManager.h +5 -7
- package/Common/cpp/LayoutAnimations/LayoutAnimationsProxy.cpp +565 -0
- package/Common/cpp/LayoutAnimations/LayoutAnimationsProxy.h +74 -0
- package/Common/cpp/LayoutAnimations/LayoutAnimationsUtils.h +140 -0
- package/Common/cpp/NativeModules/NativeReanimatedModule.cpp +216 -58
- package/Common/cpp/NativeModules/NativeReanimatedModule.h +32 -11
- package/Common/cpp/NativeModules/NativeReanimatedModuleSpec.cpp +2 -17
- package/Common/cpp/NativeModules/NativeReanimatedModuleSpec.h +6 -8
- package/Common/cpp/ReanimatedRuntime/RNRuntimeDecorator.cpp +3 -0
- package/Common/cpp/ReanimatedRuntime/WorkletRuntime.cpp +3 -4
- package/Common/cpp/ReanimatedRuntime/WorkletRuntimeDecorator.cpp +8 -3
- package/Common/cpp/SharedItems/Shareables.cpp +31 -5
- package/Common/cpp/SharedItems/Shareables.h +18 -2
- package/Common/cpp/Tools/JSScheduler.cpp +29 -5
- package/Common/cpp/Tools/JSScheduler.h +21 -4
- package/Common/cpp/Tools/PlatformDepMethodsHolder.h +6 -2
- package/Common/cpp/Tools/UIRuntimeDecorator.cpp +6 -0
- package/Common/cpp/Tools/UIRuntimeDecorator.h +1 -0
- package/android/CMakeLists.txt +3 -0
- package/android/build.gradle +17 -5
- package/android/src/main/cpp/NativeProxy.cpp +77 -12
- package/android/src/main/cpp/NativeProxy.h +35 -1
- package/android/src/main/java/com/swmansion/reanimated/NodesManager.java +58 -19
- package/android/src/main/java/com/swmansion/reanimated/ReanimatedPackage.java +7 -2
- package/android/src/{reactNativeVersionPatch/ReanimatedUIManager/latest → main/java}/com/swmansion/reanimated/ReanimatedUIManagerFactory.java +5 -5
- package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/AnimationsManager.java +10 -6
- package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/ReanimatedNativeHierarchyManager.java +18 -1
- package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/SharedTransitionManager.java +105 -17
- package/android/src/main/java/com/swmansion/reanimated/sensor/ReanimatedSensor.java +2 -1
- package/android/src/paper/java/com/swmansion/reanimated/NativeReanimatedModuleSpec.java +37 -0
- package/android/src/{main/java/com/swmansion/reanimated → reactNativeVersionPatch/ReanimatedUIManager/73/com/swmansion}/ReanimatedModule.java +4 -3
- package/android/src/reactNativeVersionPatch/ReanimatedUIManager/{70 → 73}/com/swmansion/reanimated/layoutReanimation/ReanimatedUIManager.java +1 -22
- package/android/src/reactNativeVersionPatch/ReanimatedUIManager/latest/com/swmansion/reanimated/ReanimatedModule.java +176 -0
- package/android/src/reactNativeVersionPatch/ReanimatedUIManager/latest/com/swmansion/reanimated/layoutReanimation/ReanimatedUIManager.java +0 -26
- package/android/src/{fabric/java → reactNativeVersionPatch/RuntimeExecutor/73}/com/swmansion/reanimated/NativeProxy.java +16 -4
- package/android/src/reactNativeVersionPatch/RuntimeExecutor/latest/com/swmansion/reanimated/NativeProxy.java +143 -0
- package/apple/LayoutReanimation/REAAnimationsManager.h +3 -0
- package/apple/LayoutReanimation/REAAnimationsManager.m +11 -0
- package/apple/LayoutReanimation/REASharedTransitionManager.m +99 -23
- package/apple/LayoutReanimation/REASnapshot.h +1 -0
- package/apple/LayoutReanimation/REASnapshot.m +78 -37
- package/apple/REAModule.h +22 -2
- package/apple/REAModule.mm +97 -46
- package/apple/REANodesManager.h +3 -3
- package/apple/REANodesManager.mm +46 -22
- package/apple/native/NativeProxy.h +28 -2
- package/apple/native/NativeProxy.mm +65 -195
- package/apple/native/PlatformDepMethodsHolderImpl.h +59 -0
- package/apple/native/PlatformDepMethodsHolderImpl.mm +429 -0
- package/apple/sensor/ReanimatedSensor.m +5 -5
- package/lib/module/Animated.js.map +1 -1
- package/lib/module/ConfigHelper.js +1 -1
- package/lib/module/ConfigHelper.js.map +1 -1
- package/lib/module/animationBuilder.js +1 -0
- package/lib/module/animationBuilder.js.map +1 -1
- package/lib/module/createAnimatedComponent/InlinePropManager.js +4 -4
- package/lib/module/createAnimatedComponent/InlinePropManager.js.map +1 -1
- package/lib/module/createAnimatedComponent/JSPropsUpdater.js +9 -6
- package/lib/module/createAnimatedComponent/JSPropsUpdater.js.map +1 -1
- package/lib/module/createAnimatedComponent/JSPropsUpdater.web.js +11 -0
- package/lib/module/createAnimatedComponent/JSPropsUpdater.web.js.map +1 -0
- package/lib/module/createAnimatedComponent/PropsFilter.js +25 -9
- package/lib/module/createAnimatedComponent/PropsFilter.js.map +1 -1
- package/lib/module/createAnimatedComponent/commonTypes.js.map +1 -1
- package/lib/module/createAnimatedComponent/createAnimatedComponent.js +83 -52
- package/lib/module/createAnimatedComponent/createAnimatedComponent.js.map +1 -1
- package/lib/module/createAnimatedComponent/getViewInfo.js +37 -0
- package/lib/module/createAnimatedComponent/getViewInfo.js.map +1 -0
- package/lib/module/createAnimatedComponent/index.js.map +1 -1
- package/lib/module/createAnimatedComponent/setAndForwardRef.js +4 -5
- package/lib/module/createAnimatedComponent/setAndForwardRef.js.map +1 -1
- package/lib/module/createAnimatedComponent/utils.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/index.web.js +1 -2
- package/lib/module/index.web.js.map +1 -1
- package/lib/module/mock.js +12 -12
- package/lib/module/mock.js.map +1 -1
- package/lib/module/propsAllowlists.js.map +1 -1
- package/lib/module/reanimated2/Bezier.js.map +1 -1
- package/lib/module/reanimated2/Colors.js +4 -11
- package/lib/module/reanimated2/Colors.js.map +1 -1
- package/lib/module/reanimated2/Easing.js +3 -7
- package/lib/module/reanimated2/Easing.js.map +1 -1
- package/lib/module/reanimated2/NativeReanimated/NativeReanimated.js +16 -13
- package/lib/module/reanimated2/NativeReanimated/NativeReanimated.js.map +1 -1
- package/lib/module/reanimated2/NativeReanimated/index.js.map +1 -1
- package/lib/module/reanimated2/NativeReanimated/index.web.js.map +1 -1
- package/lib/module/reanimated2/PlatformChecker.js +2 -1
- package/lib/module/reanimated2/PlatformChecker.js.map +1 -1
- package/lib/module/reanimated2/PropAdapters.js +1 -1
- package/lib/module/reanimated2/PropAdapters.js.map +1 -1
- package/lib/module/reanimated2/PropsRegistry.js +1 -2
- package/lib/module/reanimated2/PropsRegistry.js.map +1 -1
- package/lib/module/reanimated2/Sensor.js +2 -2
- package/lib/module/reanimated2/Sensor.js.map +1 -1
- package/lib/module/reanimated2/SensorContainer.js +2 -2
- package/lib/module/reanimated2/SensorContainer.js.map +1 -1
- package/lib/module/reanimated2/UpdateLayoutAnimations.js +30 -8
- package/lib/module/reanimated2/UpdateLayoutAnimations.js.map +1 -1
- package/lib/module/reanimated2/UpdateProps.js.map +1 -1
- package/lib/module/reanimated2/ViewDescriptorsSet.js.map +1 -1
- package/lib/module/reanimated2/WorkletEventHandler.js +74 -31
- package/lib/module/reanimated2/WorkletEventHandler.js.map +1 -1
- package/lib/module/reanimated2/animation/clamp.js.map +1 -1
- package/lib/module/reanimated2/animation/commonTypes.js.map +1 -1
- package/lib/module/reanimated2/animation/decay/decay.js.map +1 -1
- package/lib/module/reanimated2/animation/decay/index.js.map +1 -1
- package/lib/module/reanimated2/animation/decay/rigidDecay.js.map +1 -1
- package/lib/module/reanimated2/animation/decay/rubberBandDecay.js.map +1 -1
- package/lib/module/reanimated2/animation/decay/utils.js.map +1 -1
- 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 +1 -6
- package/lib/module/reanimated2/animation/repeat.js.map +1 -1
- package/lib/module/reanimated2/animation/sequence.js +1 -5
- package/lib/module/reanimated2/animation/sequence.js.map +1 -1
- package/lib/module/reanimated2/animation/spring.js.map +1 -1
- package/lib/module/reanimated2/animation/springUtils.js +8 -10
- package/lib/module/reanimated2/animation/springUtils.js.map +1 -1
- package/lib/module/reanimated2/animation/styleAnimation.js +5 -4
- package/lib/module/reanimated2/animation/styleAnimation.js.map +1 -1
- package/lib/module/reanimated2/animation/timing.js +4 -1
- package/lib/module/reanimated2/animation/timing.js.map +1 -1
- package/lib/module/reanimated2/animation/transformationMatrix/matrixUtils.js +1 -2
- package/lib/module/reanimated2/animation/transformationMatrix/matrixUtils.js.map +1 -1
- package/lib/module/reanimated2/animation/util.js +22 -2
- package/lib/module/reanimated2/animation/util.js.map +1 -1
- package/lib/module/reanimated2/commonTypes.js +3 -1
- package/lib/module/reanimated2/commonTypes.js.map +1 -1
- package/lib/module/reanimated2/component/FlatList.js +1 -0
- package/lib/module/reanimated2/component/FlatList.js.map +1 -1
- package/lib/module/reanimated2/component/Image.js +1 -0
- package/lib/module/reanimated2/component/Image.js.map +1 -1
- package/lib/module/reanimated2/component/LayoutAnimationConfig.js +1 -0
- package/lib/module/reanimated2/component/LayoutAnimationConfig.js.map +1 -1
- package/lib/module/reanimated2/component/PerformanceMonitor.js +169 -0
- package/lib/module/reanimated2/component/PerformanceMonitor.js.map +1 -0
- package/lib/module/reanimated2/component/ScrollView.js +1 -0
- package/lib/module/reanimated2/component/ScrollView.js.map +1 -1
- package/lib/module/reanimated2/component/Text.js +1 -0
- package/lib/module/reanimated2/component/Text.js.map +1 -1
- package/lib/module/reanimated2/component/View.js +1 -0
- package/lib/module/reanimated2/component/View.js.map +1 -1
- package/lib/module/reanimated2/core.js +6 -15
- package/lib/module/reanimated2/core.js.map +1 -1
- package/lib/module/reanimated2/errors.js +8 -8
- package/lib/module/reanimated2/errors.js.map +1 -1
- package/lib/module/reanimated2/fabricUtils.js +33 -8
- package/lib/module/reanimated2/fabricUtils.js.map +1 -1
- package/lib/module/reanimated2/fabricUtils.web.js.map +1 -1
- package/lib/module/reanimated2/frameCallback/FrameCallbackRegistryJS.js +2 -2
- package/lib/module/reanimated2/frameCallback/FrameCallbackRegistryJS.js.map +1 -1
- package/lib/module/reanimated2/frameCallback/FrameCallbackRegistryUI.js.map +1 -1
- package/lib/module/reanimated2/frameCallback/index.js.map +1 -1
- package/lib/module/reanimated2/globals.d.js.map +1 -1
- package/lib/module/reanimated2/helperTypes.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 +1 -0
- package/lib/module/reanimated2/hook/useAnimatedGestureHandler.js.map +1 -1
- package/lib/module/reanimated2/hook/useAnimatedKeyboard.js +3 -4
- package/lib/module/reanimated2/hook/useAnimatedKeyboard.js.map +1 -1
- package/lib/module/reanimated2/hook/useAnimatedProps.js.map +1 -1
- package/lib/module/reanimated2/hook/useAnimatedReaction.js +1 -0
- package/lib/module/reanimated2/hook/useAnimatedReaction.js.map +1 -1
- package/lib/module/reanimated2/hook/useAnimatedRef.js +12 -7
- package/lib/module/reanimated2/hook/useAnimatedRef.js.map +1 -1
- package/lib/module/reanimated2/hook/useAnimatedScrollHandler.js +3 -1
- package/lib/module/reanimated2/hook/useAnimatedScrollHandler.js.map +1 -1
- package/lib/module/reanimated2/hook/useAnimatedSensor.js.map +1 -1
- package/lib/module/reanimated2/hook/useAnimatedStyle.js +3 -6
- package/lib/module/reanimated2/hook/useAnimatedStyle.js.map +1 -1
- package/lib/module/reanimated2/hook/useDerivedValue.js +3 -1
- package/lib/module/reanimated2/hook/useDerivedValue.js.map +1 -1
- package/lib/module/reanimated2/hook/useEvent.js +4 -5
- package/lib/module/reanimated2/hook/useEvent.js.map +1 -1
- package/lib/module/reanimated2/hook/useFrameCallback.js +1 -2
- package/lib/module/reanimated2/hook/useFrameCallback.js.map +1 -1
- package/lib/module/reanimated2/hook/useHandler.js +3 -1
- package/lib/module/reanimated2/hook/useHandler.js.map +1 -1
- package/lib/module/reanimated2/hook/useReducedMotion.js.map +1 -1
- package/lib/module/reanimated2/hook/useScrollViewOffset.js +60 -16
- package/lib/module/reanimated2/hook/useScrollViewOffset.js.map +1 -1
- package/lib/module/reanimated2/hook/useSharedValue.js.map +1 -1
- package/lib/module/reanimated2/hook/useWorkletCallback.js.map +1 -1
- package/lib/module/reanimated2/hook/utils.js.map +1 -1
- package/lib/module/reanimated2/index.js +2 -0
- package/lib/module/reanimated2/index.js.map +1 -1
- package/lib/module/reanimated2/initializers.js +1 -5
- package/lib/module/reanimated2/initializers.js.map +1 -1
- package/lib/module/reanimated2/interpolateColor.js +2 -6
- package/lib/module/reanimated2/interpolateColor.js.map +1 -1
- package/lib/module/reanimated2/interpolation.js +1 -1
- package/lib/module/reanimated2/interpolation.js.map +1 -1
- package/lib/module/reanimated2/isSharedValue.js.map +1 -1
- package/lib/module/reanimated2/jestUtils.js +3 -6
- package/lib/module/reanimated2/jestUtils.js.map +1 -1
- package/lib/module/reanimated2/jestUtils.web.js.map +1 -1
- package/lib/module/reanimated2/js-reanimated/JSReanimated.js +5 -9
- package/lib/module/reanimated2/js-reanimated/JSReanimated.js.map +1 -1
- package/lib/module/reanimated2/js-reanimated/WebSensor.js.map +1 -1
- package/lib/module/reanimated2/js-reanimated/index.js +2 -2
- package/lib/module/reanimated2/js-reanimated/index.js.map +1 -1
- package/lib/module/reanimated2/js-reanimated/react-native-web.d.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/animationBuilder/BaseAnimationBuilder.js +4 -2
- package/lib/module/reanimated2/layoutReanimation/animationBuilder/BaseAnimationBuilder.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.js +12 -11
- package/lib/module/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/animationBuilder/Keyframe.js +12 -10
- package/lib/module/reanimated2/layoutReanimation/animationBuilder/Keyframe.js.map +1 -1
- 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 +11 -4
- package/lib/module/reanimated2/layoutReanimation/animationsManager.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Bounce.js +22 -22
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Bounce.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Fade.js +22 -22
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Fade.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Flip.js +26 -26
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Flip.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js +10 -10
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.js +6 -6
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Roll.js +10 -10
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Roll.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Rotate.js +18 -18
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Rotate.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Slide.js +18 -18
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Slide.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Stretch.js +10 -10
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Stretch.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Zoom.js +34 -34
- 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 +17 -4
- package/lib/module/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.js +4 -4
- package/lib/module/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.js +4 -4
- package/lib/module/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.js +4 -4
- package/lib/module/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.js +4 -4
- package/lib/module/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultTransitions/SequencedTransition.js +4 -4
- 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/ProgressTransitionManager.js +16 -12
- package/lib/module/reanimated2/layoutReanimation/sharedTransitions/ProgressTransitionManager.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/sharedTransitions/SharedTransition.js +13 -7
- package/lib/module/reanimated2/layoutReanimation/sharedTransitions/SharedTransition.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/sharedTransitions/SharedTransition.web.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/sharedTransitions/index.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/web/animation/Bounce.web.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/web/animation/Fade.web.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/web/animation/Flip.web.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/web/animation/Lightspeed.web.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/web/animation/Pinwheel.web.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/web/animation/Roll.web.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/web/animation/Rotate.web.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/web/animation/Slide.web.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/web/animation/Stretch.web.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/web/animation/Zoom.web.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/web/animationParser.js +0 -2
- package/lib/module/reanimated2/layoutReanimation/web/animationParser.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/web/animationsManager.js +1 -2
- package/lib/module/reanimated2/layoutReanimation/web/animationsManager.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/web/componentStyle.js +3 -1
- package/lib/module/reanimated2/layoutReanimation/web/componentStyle.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/web/componentUtils.js +6 -7
- package/lib/module/reanimated2/layoutReanimation/web/componentUtils.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/web/config.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/web/createAnimation.js +2 -2
- package/lib/module/reanimated2/layoutReanimation/web/createAnimation.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/web/domUtils.js +4 -4
- package/lib/module/reanimated2/layoutReanimation/web/domUtils.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/web/index.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/web/transition/Fading.web.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/web/transition/Linear.web.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/web/transition/Sequenced.web.js.map +1 -1
- package/lib/module/reanimated2/mappers.js +2 -4
- package/lib/module/reanimated2/mappers.js.map +1 -1
- package/lib/module/reanimated2/mockedRequestAnimationFrame.js.map +1 -1
- package/lib/module/reanimated2/mutables.js +2 -4
- 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.map +1 -1
- package/lib/module/reanimated2/platform-specific/jsVersion.js +1 -1
- package/lib/module/reanimated2/platform-specific/jsVersion.js.map +1 -1
- package/lib/module/reanimated2/platformFunctions/dispatchCommand.js +2 -4
- package/lib/module/reanimated2/platformFunctions/dispatchCommand.js.map +1 -1
- package/lib/module/reanimated2/platformFunctions/dispatchCommand.web.js.map +1 -1
- package/lib/module/reanimated2/platformFunctions/getRelativeCoords.js +2 -2
- package/lib/module/reanimated2/platformFunctions/getRelativeCoords.js.map +1 -1
- package/lib/module/reanimated2/platformFunctions/index.js.map +1 -1
- package/lib/module/reanimated2/platformFunctions/measure.js.map +1 -1
- package/lib/module/reanimated2/platformFunctions/measure.web.js.map +1 -1
- package/lib/module/reanimated2/platformFunctions/scrollTo.js.map +1 -1
- package/lib/module/reanimated2/platformFunctions/scrollTo.web.js +1 -1
- package/lib/module/reanimated2/platformFunctions/scrollTo.web.js.map +1 -1
- package/lib/module/reanimated2/platformFunctions/setGestureState.js.map +1 -1
- package/lib/module/reanimated2/platformFunctions/setGestureState.web.js.map +1 -1
- package/lib/module/reanimated2/platformFunctions/setNativeProps.js.map +1 -1
- package/lib/module/reanimated2/platformFunctions/setNativeProps.web.js.map +1 -1
- package/lib/module/reanimated2/pluginUtils.js.map +1 -1
- package/lib/module/reanimated2/publicGlobals.js.map +1 -1
- package/lib/module/reanimated2/runtimes.js +11 -19
- package/lib/module/reanimated2/runtimes.js.map +1 -1
- package/lib/module/reanimated2/screenTransition/RNScreensTurboModule.js +20 -0
- package/lib/module/reanimated2/screenTransition/RNScreensTurboModule.js.map +1 -0
- package/lib/module/reanimated2/screenTransition/animationManager.js +41 -0
- package/lib/module/reanimated2/screenTransition/animationManager.js.map +1 -0
- package/lib/module/reanimated2/screenTransition/commonTypes.js +4 -0
- package/lib/module/reanimated2/screenTransition/commonTypes.js.map +1 -0
- package/lib/module/reanimated2/screenTransition/index.js +5 -0
- package/lib/module/reanimated2/screenTransition/index.js.map +1 -0
- package/lib/module/reanimated2/screenTransition/presets.js +157 -0
- package/lib/module/reanimated2/screenTransition/presets.js.map +1 -0
- package/lib/module/reanimated2/screenTransition/styleUpdater.js +62 -0
- package/lib/module/reanimated2/screenTransition/styleUpdater.js.map +1 -0
- package/lib/module/reanimated2/screenTransition/swipeSimulator.js +190 -0
- package/lib/module/reanimated2/screenTransition/swipeSimulator.js.map +1 -0
- package/lib/module/reanimated2/shareableMappingCache.js.map +1 -1
- package/lib/module/reanimated2/shareables.js +27 -10
- package/lib/module/reanimated2/shareables.js.map +1 -1
- package/lib/module/reanimated2/threads.js +9 -34
- package/lib/module/reanimated2/threads.js.map +1 -1
- package/lib/module/reanimated2/valueSetter.js +1 -2
- package/lib/module/reanimated2/valueSetter.js.map +1 -1
- package/lib/module/reanimated2/valueUnpacker.js +4 -3
- package/lib/module/reanimated2/valueUnpacker.js.map +1 -1
- package/lib/module/specs/NativeReanimatedModule.js +5 -0
- package/lib/module/specs/NativeReanimatedModule.js.map +1 -0
- package/lib/typescript/ConfigHelper.d.ts +1 -0
- package/lib/typescript/createAnimatedComponent/InlinePropManager.d.ts +1 -1
- package/lib/typescript/createAnimatedComponent/JSPropsUpdater.web.d.ts +6 -0
- package/lib/typescript/createAnimatedComponent/PropsFilter.d.ts +3 -0
- package/lib/typescript/createAnimatedComponent/getViewInfo.d.ts +9 -0
- package/lib/typescript/reanimated2/NativeReanimated/NativeReanimated.d.ts +8 -13
- package/lib/typescript/reanimated2/UpdateLayoutAnimations.d.ts +12 -1
- package/lib/typescript/reanimated2/WorkletEventHandler.d.ts +16 -9
- package/lib/typescript/reanimated2/animation/util.d.ts +2 -0
- package/lib/typescript/reanimated2/component/LayoutAnimationConfig.d.ts +1 -1
- package/lib/typescript/reanimated2/component/PerformanceMonitor.d.ts +2 -0
- package/lib/typescript/reanimated2/core.d.ts +3 -4
- package/lib/typescript/reanimated2/hook/commonTypes.d.ts +6 -0
- package/lib/typescript/reanimated2/hook/useEvent.d.ts +2 -3
- package/lib/typescript/reanimated2/hook/useScrollViewOffset.d.ts +3 -1
- package/lib/typescript/reanimated2/index.d.ts +3 -0
- package/lib/typescript/reanimated2/js-reanimated/JSReanimated.d.ts +2 -2
- package/lib/typescript/reanimated2/layoutReanimation/animationBuilder/commonTypes.d.ts +2 -1
- package/lib/typescript/reanimated2/layoutReanimation/sharedTransitions/ProgressTransitionManager.d.ts +2 -2
- package/lib/typescript/reanimated2/layoutReanimation/sharedTransitions/SharedTransition.d.ts +2 -2
- package/lib/typescript/reanimated2/platform-specific/jsVersion.d.ts +1 -1
- package/lib/typescript/reanimated2/screenTransition/RNScreensTurboModule.d.ts +2 -0
- package/lib/typescript/reanimated2/screenTransition/animationManager.d.ts +3 -0
- package/lib/typescript/reanimated2/screenTransition/commonTypes.d.ts +38 -0
- package/lib/typescript/reanimated2/screenTransition/index.d.ts +3 -0
- package/lib/typescript/reanimated2/screenTransition/presets.d.ts +11 -0
- package/lib/typescript/reanimated2/screenTransition/styleUpdater.d.ts +3 -0
- package/lib/typescript/reanimated2/screenTransition/swipeSimulator.d.ts +2 -0
- package/lib/typescript/specs/NativeReanimatedModule.d.ts +6 -0
- package/package.json +29 -17
- package/plugin/build/plugin.js +7 -2
- package/src/ConfigHelper.ts +1 -1
- package/src/animationBuilder.tsx +2 -0
- package/src/createAnimatedComponent/InlinePropManager.ts +2 -2
- package/src/createAnimatedComponent/JSPropsUpdater.ts +7 -6
- package/src/createAnimatedComponent/JSPropsUpdater.web.ts +26 -0
- package/src/createAnimatedComponent/PropsFilter.tsx +31 -6
- package/src/createAnimatedComponent/createAnimatedComponent.tsx +108 -60
- package/src/createAnimatedComponent/getViewInfo.ts +39 -0
- package/src/mock.ts +13 -1
- package/src/reanimated2/NativeReanimated/NativeReanimated.ts +33 -35
- package/src/reanimated2/PlatformChecker.ts +3 -2
- package/src/reanimated2/PropsRegistry.ts +1 -3
- package/src/reanimated2/UpdateLayoutAnimations.ts +53 -13
- package/src/reanimated2/WorkletEventHandler.ts +98 -39
- package/src/reanimated2/animation/styleAnimation.ts +8 -6
- package/src/reanimated2/animation/timing.ts +9 -1
- package/src/reanimated2/animation/util.ts +28 -3
- package/src/reanimated2/commonTypes.ts +4 -1
- package/src/reanimated2/component/PerformanceMonitor.tsx +216 -0
- package/src/reanimated2/core.ts +9 -31
- package/src/reanimated2/errors.ts +1 -0
- package/src/reanimated2/fabricUtils.ts +43 -18
- package/src/reanimated2/globals.d.ts +11 -1
- package/src/reanimated2/hook/commonTypes.ts +10 -0
- package/src/reanimated2/hook/useAnimatedRef.ts +20 -11
- package/src/reanimated2/hook/useEvent.ts +4 -4
- package/src/reanimated2/hook/useScrollViewOffset.ts +94 -23
- package/src/reanimated2/index.ts +11 -0
- package/src/reanimated2/js-reanimated/JSReanimated.ts +7 -7
- package/src/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.ts +4 -0
- package/src/reanimated2/layoutReanimation/animationBuilder/Keyframe.ts +9 -1
- package/src/reanimated2/layoutReanimation/animationBuilder/commonTypes.ts +9 -1
- package/src/reanimated2/layoutReanimation/animationsManager.ts +10 -2
- package/src/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.ts +13 -0
- package/src/reanimated2/layoutReanimation/sharedTransitions/ProgressTransitionManager.ts +17 -8
- package/src/reanimated2/layoutReanimation/sharedTransitions/SharedTransition.ts +26 -7
- package/src/reanimated2/layoutReanimation/web/animationsManager.ts +1 -1
- package/src/reanimated2/layoutReanimation/web/componentStyle.ts +3 -1
- package/src/reanimated2/layoutReanimation/web/componentUtils.ts +1 -1
- package/src/reanimated2/layoutReanimation/web/createAnimation.ts +2 -2
- package/src/reanimated2/platform-specific/jsVersion.ts +1 -1
- package/src/reanimated2/platformFunctions/getRelativeCoords.ts +2 -2
- package/src/reanimated2/screenTransition/RNScreensTurboModule.ts +29 -0
- package/src/reanimated2/screenTransition/animationManager.ts +45 -0
- package/src/reanimated2/screenTransition/commonTypes.ts +63 -0
- package/src/reanimated2/screenTransition/index.ts +12 -0
- package/src/reanimated2/screenTransition/presets.ts +137 -0
- package/src/reanimated2/screenTransition/styleUpdater.ts +73 -0
- package/src/reanimated2/screenTransition/swipeSimulator.ts +238 -0
- package/src/reanimated2/shareables.ts +29 -6
- package/src/reanimated2/valueUnpacker.ts +10 -3
- package/src/specs/NativeReanimatedModule.ts +9 -0
- package/android/src/reactNativeVersionPatch/ReanimatedUIManager/70/com/swmansion/reanimated/ReanimatedUIManagerFactory.java +0 -16
- package/android/src/reactNativeVersionPatch/messageQueueThread/67/com/swmansion/reanimated/ReanimatedMessageQueueThread.java +0 -12
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
4
4
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
5
|
-
function _toPropertyKey(
|
|
6
|
-
function _toPrimitive(
|
|
5
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
6
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
7
7
|
import React from 'react';
|
|
8
8
|
import { findNodeHandle, Platform } from 'react-native';
|
|
9
|
-
import WorkletEventHandler from '../reanimated2/WorkletEventHandler';
|
|
9
|
+
import { WorkletEventHandler } from '../reanimated2/WorkletEventHandler';
|
|
10
10
|
import '../reanimated2/layoutReanimation/animationsManager';
|
|
11
11
|
import invariant from 'invariant';
|
|
12
12
|
import { adaptViewConfig } from '../ConfigHelper';
|
|
@@ -27,8 +27,8 @@ import { PropsFilter } from './PropsFilter';
|
|
|
27
27
|
import { startWebLayoutAnimation, tryActivateLayoutTransition, configureWebLayoutAnimations, getReducedMotionFromConfig, saveSnapshot } from '../reanimated2/layoutReanimation/web';
|
|
28
28
|
import { updateLayoutAnimations } from '../reanimated2/UpdateLayoutAnimations';
|
|
29
29
|
import { addHTMLMutationObserver } from '../reanimated2/layoutReanimation/web/domUtils';
|
|
30
|
+
import { getViewInfo } from './getViewInfo';
|
|
30
31
|
const IS_WEB = isWeb();
|
|
31
|
-
const IS_FABRIC = isFabric();
|
|
32
32
|
if (IS_WEB) {
|
|
33
33
|
configureWebLayoutAnimations();
|
|
34
34
|
}
|
|
@@ -42,11 +42,16 @@ function onlyAnimatedStyles(styles) {
|
|
|
42
42
|
* @param component - The component you want to make animatable.
|
|
43
43
|
* @returns A component that Reanimated is capable of animating.
|
|
44
44
|
* @see https://docs.swmansion.com/react-native-reanimated/docs/core/createAnimatedComponent
|
|
45
|
-
*/
|
|
45
|
+
*/
|
|
46
|
+
|
|
47
|
+
// Don't change the order of overloads, since such a change breaks current behavior
|
|
48
|
+
|
|
46
49
|
/**
|
|
47
50
|
* @deprecated Please use `Animated.FlatList` component instead of calling `Animated.createAnimatedComponent(FlatList)` manually.
|
|
48
51
|
*/
|
|
49
52
|
// @ts-ignore This is required to create this overload, since type of createAnimatedComponent is incorrect and doesn't include typeof FlatList
|
|
53
|
+
|
|
54
|
+
let id = 0;
|
|
50
55
|
export function createAnimatedComponent(Component, options) {
|
|
51
56
|
invariant(typeof Component !== 'function' || Component.prototype && Component.prototype.isReactComponent, `Looks like you're passing a function component \`${Component.name}\` to \`createAnimatedComponent\` function which supports only class components. Please wrap your function component with \`React.forwardRef()\` or use a class component instead.`);
|
|
52
57
|
class AnimatedComponent extends React.Component {
|
|
@@ -66,12 +71,14 @@ export function createAnimatedComponent(Component, options) {
|
|
|
66
71
|
_defineProperty(this, "_PropsFilter", new PropsFilter());
|
|
67
72
|
_defineProperty(this, "_viewInfo", void 0);
|
|
68
73
|
_defineProperty(this, "context", void 0);
|
|
74
|
+
_defineProperty(this, "nativeID", id++);
|
|
69
75
|
_defineProperty(this, "_setComponentRef", setAndForwardRef({
|
|
70
76
|
getForwardedRef: () => this.props.forwardedRef,
|
|
71
77
|
setLocalRef: ref => {
|
|
72
78
|
// TODO update config
|
|
73
79
|
|
|
74
80
|
const tag = IS_WEB ? ref : findNodeHandle(ref);
|
|
81
|
+
this._viewTag = tag;
|
|
75
82
|
const {
|
|
76
83
|
layout,
|
|
77
84
|
entering,
|
|
@@ -79,14 +86,11 @@ export function createAnimatedComponent(Component, options) {
|
|
|
79
86
|
sharedTransitionTag
|
|
80
87
|
} = this.props;
|
|
81
88
|
if ((layout || entering || exiting || sharedTransitionTag) && tag != null) {
|
|
82
|
-
var _this$context;
|
|
83
89
|
if (!shouldBeUseWeb()) {
|
|
84
90
|
enableLayoutAnimations(true, false);
|
|
85
91
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
var _this$props;
|
|
89
|
-
updateLayoutAnimations(tag, LayoutAnimationType.ENTERING, maybeBuild(entering, (_this$props = this.props) === null || _this$props === void 0 ? void 0 : _this$props.style, AnimatedComponent.displayName));
|
|
92
|
+
if (sharedTransitionTag) {
|
|
93
|
+
this._configureSharedTransition();
|
|
90
94
|
}
|
|
91
95
|
if (sharedTransitionTag && !IS_WEB) {
|
|
92
96
|
const sharedElementTransition = this.props.sharedTransitionStyle ?? new SharedTransition();
|
|
@@ -96,6 +100,13 @@ export function createAnimatedComponent(Component, options) {
|
|
|
96
100
|
this._sharedElementTransition = sharedElementTransition;
|
|
97
101
|
}
|
|
98
102
|
}
|
|
103
|
+
if (exiting) {
|
|
104
|
+
const reduceMotionInExiting = 'getReduceMotion' in exiting && typeof exiting.getReduceMotion === 'function' ? getReduceMotionFromConfig(exiting.getReduceMotion()) : getReduceMotionFromConfig();
|
|
105
|
+
if (!reduceMotionInExiting) {
|
|
106
|
+
var _this$props;
|
|
107
|
+
updateLayoutAnimations(tag, LayoutAnimationType.EXITING, maybeBuild(exiting, (_this$props = this.props) === null || _this$props === void 0 ? void 0 : _this$props.style, AnimatedComponent.displayName));
|
|
108
|
+
}
|
|
109
|
+
}
|
|
99
110
|
}
|
|
100
111
|
if (ref !== this._component) {
|
|
101
112
|
this._component = ref;
|
|
@@ -107,8 +118,14 @@ export function createAnimatedComponent(Component, options) {
|
|
|
107
118
|
value: {}
|
|
108
119
|
};
|
|
109
120
|
}
|
|
121
|
+
const _entering = this.props.entering;
|
|
122
|
+
if (_entering) {
|
|
123
|
+
var _this$props2;
|
|
124
|
+
updateLayoutAnimations(this.nativeID, LayoutAnimationType.ENTERING, maybeBuild(_entering, (_this$props2 = this.props) === null || _this$props2 === void 0 ? void 0 : _this$props2.style, AnimatedComponent.displayName));
|
|
125
|
+
}
|
|
110
126
|
}
|
|
111
127
|
componentDidMount() {
|
|
128
|
+
this._viewTag = this._getViewInfo().viewTag;
|
|
112
129
|
this._attachNativeEvents();
|
|
113
130
|
this._jsPropsUpdater.addOnJSPropsChangeListener(this);
|
|
114
131
|
this._attachAnimatedStyles();
|
|
@@ -135,16 +152,19 @@ export function createAnimatedComponent(Component, options) {
|
|
|
135
152
|
this._jsPropsUpdater.removeOnJSPropsChangeListener(this);
|
|
136
153
|
this._detachStyles();
|
|
137
154
|
this._InlinePropManager.detachInlineProps();
|
|
138
|
-
(
|
|
155
|
+
if (this.props.sharedTransitionTag) {
|
|
156
|
+
this._configureSharedTransition(true);
|
|
157
|
+
}
|
|
158
|
+
(_this$_sharedElementT = this._sharedElementTransition) === null || _this$_sharedElementT === void 0 || _this$_sharedElementT.unregisterTransition(this._viewTag, true);
|
|
139
159
|
const exiting = this.props.exiting;
|
|
140
|
-
if (IS_WEB && this.props.exiting && !getReducedMotionFromConfig(this.props.exiting)) {
|
|
160
|
+
if (IS_WEB && this._component && this.props.exiting && !getReducedMotionFromConfig(this.props.exiting)) {
|
|
141
161
|
addHTMLMutationObserver();
|
|
142
162
|
startWebLayoutAnimation(this.props, this._component, LayoutAnimationType.EXITING);
|
|
143
163
|
} else if (exiting) {
|
|
144
164
|
const reduceMotionInExiting = 'getReduceMotion' in exiting && typeof exiting.getReduceMotion === 'function' ? getReduceMotionFromConfig(exiting.getReduceMotion()) : getReduceMotionFromConfig();
|
|
145
165
|
if (!reduceMotionInExiting) {
|
|
146
|
-
var _this$
|
|
147
|
-
updateLayoutAnimations(this._viewTag, LayoutAnimationType.EXITING, maybeBuild(exiting, (_this$
|
|
166
|
+
var _this$props3;
|
|
167
|
+
updateLayoutAnimations(this._viewTag, LayoutAnimationType.EXITING, maybeBuild(exiting, (_this$props3 = this.props) === null || _this$props3 === void 0 ? void 0 : _this$props3.style, AnimatedComponent.displayName));
|
|
148
168
|
}
|
|
149
169
|
}
|
|
150
170
|
}
|
|
@@ -155,16 +175,10 @@ export function createAnimatedComponent(Component, options) {
|
|
|
155
175
|
return (_this$_component = this._component) !== null && _this$_component !== void 0 && _this$_component.getScrollableNode ? (_getScrollableNode = (_ref = this._component).getScrollableNode) === null || _getScrollableNode === void 0 ? void 0 : _getScrollableNode.call(_ref) : this._component;
|
|
156
176
|
}
|
|
157
177
|
_attachNativeEvents() {
|
|
158
|
-
const node = this._getEventViewRef();
|
|
159
|
-
let viewTag = null; // We set it only if needed
|
|
160
|
-
|
|
161
178
|
for (const key in this.props) {
|
|
162
179
|
const prop = this.props[key];
|
|
163
180
|
if (has('workletEventHandler', prop) && prop.workletEventHandler instanceof WorkletEventHandler) {
|
|
164
|
-
|
|
165
|
-
viewTag = IS_WEB ? this._component : findNodeHandle(options !== null && options !== void 0 && options.setNativeProps ? this : node);
|
|
166
|
-
}
|
|
167
|
-
prop.workletEventHandler.registerForEvents(viewTag, key);
|
|
181
|
+
prop.workletEventHandler.registerForEvents(this._viewTag, key);
|
|
168
182
|
}
|
|
169
183
|
}
|
|
170
184
|
}
|
|
@@ -172,7 +186,7 @@ export function createAnimatedComponent(Component, options) {
|
|
|
172
186
|
for (const key in this.props) {
|
|
173
187
|
const prop = this.props[key];
|
|
174
188
|
if (has('workletEventHandler', prop) && prop.workletEventHandler instanceof WorkletEventHandler) {
|
|
175
|
-
prop.workletEventHandler.unregisterFromEvents();
|
|
189
|
+
prop.workletEventHandler.unregisterFromEvents(this._viewTag);
|
|
176
190
|
}
|
|
177
191
|
}
|
|
178
192
|
}
|
|
@@ -189,28 +203,31 @@ export function createAnimatedComponent(Component, options) {
|
|
|
189
203
|
if ((_this$props$animatedP = this.props.animatedProps) !== null && _this$props$animatedP !== void 0 && _this$props$animatedP.viewDescriptors) {
|
|
190
204
|
this.props.animatedProps.viewDescriptors.remove(this._viewTag);
|
|
191
205
|
}
|
|
192
|
-
if (
|
|
206
|
+
if (isFabric()) {
|
|
193
207
|
removeFromPropsRegistry(this._viewTag);
|
|
194
208
|
}
|
|
195
209
|
}
|
|
196
210
|
}
|
|
197
|
-
|
|
211
|
+
_updateNativeEvents(prevProps) {
|
|
198
212
|
for (const key in prevProps) {
|
|
199
|
-
const
|
|
200
|
-
if (has('workletEventHandler',
|
|
201
|
-
|
|
213
|
+
const prevProp = prevProps[key];
|
|
214
|
+
if (has('workletEventHandler', prevProp) && prevProp.workletEventHandler instanceof WorkletEventHandler) {
|
|
215
|
+
const newProp = this.props[key];
|
|
216
|
+
if (!newProp) {
|
|
217
|
+
// Prop got deleted
|
|
218
|
+
prevProp.workletEventHandler.unregisterFromEvents(this._viewTag);
|
|
219
|
+
} else if (has('workletEventHandler', newProp) && newProp.workletEventHandler instanceof WorkletEventHandler && newProp.workletEventHandler !== prevProp.workletEventHandler) {
|
|
220
|
+
// Prop got changed
|
|
221
|
+
prevProp.workletEventHandler.unregisterFromEvents(this._viewTag);
|
|
222
|
+
newProp.workletEventHandler.registerForEvents(this._viewTag);
|
|
223
|
+
}
|
|
202
224
|
}
|
|
203
225
|
}
|
|
204
|
-
let viewTag = null;
|
|
205
226
|
for (const key in this.props) {
|
|
206
|
-
const
|
|
207
|
-
if (has('workletEventHandler',
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
viewTag = IS_WEB ? this._component : findNodeHandle(options !== null && options !== void 0 && options.setNativeProps ? this : node);
|
|
211
|
-
}
|
|
212
|
-
prop.workletEventHandler.registerForEvents(viewTag, key);
|
|
213
|
-
prop.workletEventHandler.reattachNeeded = false;
|
|
227
|
+
const newProp = this.props[key];
|
|
228
|
+
if (has('workletEventHandler', newProp) && newProp.workletEventHandler instanceof WorkletEventHandler && !prevProps[key]) {
|
|
229
|
+
// Prop got added
|
|
230
|
+
newProp.workletEventHandler.registerForEvents(this._viewTag);
|
|
214
231
|
}
|
|
215
232
|
}
|
|
216
233
|
}
|
|
@@ -219,7 +236,7 @@ export function createAnimatedComponent(Component, options) {
|
|
|
219
236
|
options.setNativeProps(this._component, props);
|
|
220
237
|
} else {
|
|
221
238
|
var _this$_component2, _this$_component2$set;
|
|
222
|
-
(_this$_component2 = this._component) === null || _this$_component2 === void 0
|
|
239
|
+
(_this$_component2 = this._component) === null || _this$_component2 === void 0 || (_this$_component2$set = _this$_component2.setNativeProps) === null || _this$_component2$set === void 0 || _this$_component2$set.call(_this$_component2, props);
|
|
223
240
|
}
|
|
224
241
|
}
|
|
225
242
|
_getViewInfo() {
|
|
@@ -242,23 +259,16 @@ export function createAnimatedComponent(Component, options) {
|
|
|
242
259
|
shadowNodeWrapper = null;
|
|
243
260
|
viewConfig = null;
|
|
244
261
|
} else {
|
|
245
|
-
var _hostInstance$viewCon;
|
|
246
262
|
// hostInstance can be null for a component that doesn't render anything (render function returns null). Example: svg Stop: https://github.com/react-native-svg/react-native-svg/blob/develop/src/elements/Stop.tsx
|
|
247
263
|
const hostInstance = RNRenderer.findHostInstance_DEPRECATED(component);
|
|
248
264
|
if (!hostInstance) {
|
|
249
265
|
throw new Error('[Reanimated] Cannot find host instance for this component. Maybe it renders nothing?');
|
|
250
266
|
}
|
|
251
|
-
|
|
252
|
-
viewTag =
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
*/
|
|
257
|
-
viewName = hostInstance === null || hostInstance === void 0 ? void 0 : (_hostInstance$viewCon = hostInstance.viewConfig) === null || _hostInstance$viewCon === void 0 ? void 0 : _hostInstance$viewCon.uiViewClassName;
|
|
258
|
-
viewConfig = hostInstance === null || hostInstance === void 0 ? void 0 : hostInstance.viewConfig;
|
|
259
|
-
if (IS_FABRIC) {
|
|
260
|
-
shadowNodeWrapper = getShadowNodeWrapperFromRef(this);
|
|
261
|
-
}
|
|
267
|
+
const viewInfo = getViewInfo(hostInstance);
|
|
268
|
+
viewTag = viewInfo.viewTag;
|
|
269
|
+
viewName = viewInfo.viewName;
|
|
270
|
+
viewConfig = viewInfo.viewConfig;
|
|
271
|
+
shadowNodeWrapper = isFabric() ? getShadowNodeWrapperFromRef(this) : null;
|
|
262
272
|
}
|
|
263
273
|
this._viewInfo = {
|
|
264
274
|
viewTag,
|
|
@@ -347,7 +357,10 @@ export function createAnimatedComponent(Component, options) {
|
|
|
347
357
|
if (layout !== oldLayout) {
|
|
348
358
|
this._configureLayoutTransition();
|
|
349
359
|
}
|
|
350
|
-
this.
|
|
360
|
+
if (this.props.sharedTransitionTag !== undefined || prevProps.sharedTransitionTag !== undefined) {
|
|
361
|
+
this._configureSharedTransition();
|
|
362
|
+
}
|
|
363
|
+
this._updateNativeEvents(prevProps);
|
|
351
364
|
this._attachAnimatedStyles();
|
|
352
365
|
this._InlinePropManager.attachInlineProps(this, this._getViewInfo());
|
|
353
366
|
if (IS_WEB && this.props.exiting) {
|
|
@@ -363,6 +376,23 @@ export function createAnimatedComponent(Component, options) {
|
|
|
363
376
|
const layout = this.props.layout ? maybeBuild(this.props.layout, undefined /* We don't have to warn user if style has common properties with animation for LAYOUT */, AnimatedComponent.displayName) : undefined;
|
|
364
377
|
updateLayoutAnimations(this._viewTag, LayoutAnimationType.LAYOUT, layout);
|
|
365
378
|
}
|
|
379
|
+
_configureSharedTransition(isUnmounting = false) {
|
|
380
|
+
if (IS_WEB) {
|
|
381
|
+
return;
|
|
382
|
+
}
|
|
383
|
+
const {
|
|
384
|
+
sharedTransitionTag
|
|
385
|
+
} = this.props;
|
|
386
|
+
if (!sharedTransitionTag) {
|
|
387
|
+
var _this$_sharedElementT2;
|
|
388
|
+
(_this$_sharedElementT2 = this._sharedElementTransition) === null || _this$_sharedElementT2 === void 0 || _this$_sharedElementT2.unregisterTransition(this._viewTag, isUnmounting);
|
|
389
|
+
this._sharedElementTransition = null;
|
|
390
|
+
return;
|
|
391
|
+
}
|
|
392
|
+
const sharedElementTransition = this.props.sharedTransitionStyle ?? this._sharedElementTransition ?? new SharedTransition();
|
|
393
|
+
sharedElementTransition.registerTransition(this._viewTag, sharedTransitionTag, isUnmounting);
|
|
394
|
+
this._sharedElementTransition = sharedElementTransition;
|
|
395
|
+
}
|
|
366
396
|
// This is a component lifecycle method from React, therefore we are not calling it directly.
|
|
367
397
|
// It is called before the component gets rerendered. This way we can access components' position before it changed
|
|
368
398
|
// and later on, in componentDidUpdate, calculate translation for layout transition.
|
|
@@ -389,14 +419,15 @@ export function createAnimatedComponent(Component, options) {
|
|
|
389
419
|
visibility: 'hidden' // Hide component until `componentDidMount` triggers
|
|
390
420
|
};
|
|
391
421
|
}
|
|
392
|
-
|
|
393
422
|
const platformProps = Platform.select({
|
|
394
423
|
web: {},
|
|
395
424
|
default: {
|
|
396
425
|
collapsable: false
|
|
397
426
|
}
|
|
398
427
|
});
|
|
399
|
-
return /*#__PURE__*/React.createElement(Component, _extends({
|
|
428
|
+
return /*#__PURE__*/React.createElement(Component, _extends({
|
|
429
|
+
nativeID: `${this.nativeID}`
|
|
430
|
+
}, filteredProps, {
|
|
400
431
|
// Casting is used here, because ref can be null - in that case it cannot be assigned to HTMLElement.
|
|
401
432
|
// After spending some time trying to figure out what to do with this problem, we decided to leave it this way
|
|
402
433
|
ref: this._setComponentRef
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","_defineProperty","obj","value","_toPropertyKey","defineProperty","enumerable","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","TypeError","Number","React","findNodeHandle","Platform","WorkletEventHandler","invariant","adaptViewConfig","RNRenderer","enableLayoutAnimations","SharedTransition","LayoutAnimationType","getShadowNodeWrapperFromRef","removeFromPropsRegistry","getReduceMotionFromConfig","maybeBuild","SkipEnteringContext","JSPropsUpdater","has","flattenArray","setAndForwardRef","isFabric","isJest","isWeb","shouldBeUseWeb","InlinePropManager","PropsFilter","startWebLayoutAnimation","tryActivateLayoutTransition","configureWebLayoutAnimations","getReducedMotionFromConfig","saveSnapshot","updateLayoutAnimations","addHTMLMutationObserver","IS_WEB","IS_FABRIC","onlyAnimatedStyles","styles","filter","style","viewDescriptors","createAnimatedComponent","Component","options","isReactComponent","name","AnimatedComponent","constructor","props","getForwardedRef","forwardedRef","setLocalRef","ref","tag","layout","entering","exiting","sharedTransitionTag","_this$context","skipEntering","context","current","_this$props","ENTERING","displayName","sharedElementTransition","sharedTransitionStyle","reduceMotionInTransition","getReduceMotion","registerTransition","_sharedElementTransition","_component","jestAnimatedStyle","componentDidMount","_attachNativeEvents","_jsPropsUpdater","addOnJSPropsChangeListener","_attachAnimatedStyles","_InlinePropManager","attachInlineProps","_getViewInfo","_configureLayoutTransition","_isFirstRender","componentWillUnmount","_this$_sharedElementT","_detachNativeEvents","removeOnJSPropsChangeListener","_detachStyles","detachInlineProps","unregisterTransition","_viewTag","EXITING","reduceMotionInExiting","_this$props2","_getEventViewRef","_this$_component","_getScrollableNode","_ref","getScrollableNode","node","viewTag","prop","workletEventHandler","setNativeProps","registerForEvents","unregisterFromEvents","_styles","viewsRef","remove","_this$props$animatedP","animatedProps","_reattachNativeEvents","prevProps","reattachNeeded","_updateFromNative","_this$_component2","_this$_component2$set","_this$_component3","_getAnimatableRef","_ref2","_viewInfo","viewName","shadowNodeWrapper","viewConfig","component","getAnimatableRef","_hostInstance$viewCon","hostInstance","findHostInstance_DEPRECATED","Error","_nativeTag","uiViewClassName","_this$props$animatedP2","_this$props$animatedP3","prevStyles","prevAnimatedProps","_animatedProps","hasReanimated2Props","hasOneSameStyle","prevStyle","isPresent","some","forEach","add","initial","componentDidUpdate","_prevState","snapshot","oldLayout","LAYOUT","getSnapshotBeforeUpdate","_this$_component4","getBoundingClientRect","render","filteredProps","_PropsFilter","filterNonAnimatedProps","visibility","platformProps","select","web","default","collapsable","createElement","_setComponentRef","forwardRef"],"sources":["createAnimatedComponent.tsx"],"sourcesContent":["'use strict';\nimport type {\n Component,\n ComponentClass,\n ComponentType,\n FunctionComponent,\n MutableRefObject,\n} from 'react';\nimport React from 'react';\nimport { findNodeHandle, Platform } from 'react-native';\nimport WorkletEventHandler from '../reanimated2/WorkletEventHandler';\nimport '../reanimated2/layoutReanimation/animationsManager';\nimport invariant from 'invariant';\nimport { adaptViewConfig } from '../ConfigHelper';\nimport { RNRenderer } from '../reanimated2/platform-specific/RNRenderer';\nimport { enableLayoutAnimations } from '../reanimated2/core';\nimport {\n SharedTransition,\n LayoutAnimationType,\n} from '../reanimated2/layoutReanimation';\nimport type { StyleProps, ShadowNodeWrapper } from '../reanimated2/commonTypes';\nimport { getShadowNodeWrapperFromRef } from '../reanimated2/fabricUtils';\nimport { removeFromPropsRegistry } from '../reanimated2/PropsRegistry';\nimport { getReduceMotionFromConfig } from '../reanimated2/animation/util';\nimport { maybeBuild } from '../animationBuilder';\nimport { SkipEnteringContext } from '../reanimated2/component/LayoutAnimationConfig';\nimport type { AnimateProps } from '../reanimated2';\nimport JSPropsUpdater from './JSPropsUpdater';\nimport type {\n AnimatedComponentProps,\n AnimatedProps,\n InitialComponentProps,\n AnimatedComponentRef,\n IAnimatedComponentInternal,\n ViewInfo,\n} from './commonTypes';\nimport { has, flattenArray } from './utils';\nimport setAndForwardRef from './setAndForwardRef';\nimport {\n isFabric,\n isJest,\n isWeb,\n shouldBeUseWeb,\n} from '../reanimated2/PlatformChecker';\nimport { InlinePropManager } from './InlinePropManager';\nimport { PropsFilter } from './PropsFilter';\nimport {\n startWebLayoutAnimation,\n tryActivateLayoutTransition,\n configureWebLayoutAnimations,\n getReducedMotionFromConfig,\n saveSnapshot,\n} from '../reanimated2/layoutReanimation/web';\nimport { updateLayoutAnimations } from '../reanimated2/UpdateLayoutAnimations';\nimport type { CustomConfig } from '../reanimated2/layoutReanimation/web/config';\nimport type { FlatList, FlatListProps } from 'react-native';\nimport { addHTMLMutationObserver } from '../reanimated2/layoutReanimation/web/domUtils';\n\nconst IS_WEB = isWeb();\nconst IS_FABRIC = isFabric();\n\nif (IS_WEB) {\n configureWebLayoutAnimations();\n}\n\nfunction onlyAnimatedStyles(styles: StyleProps[]): StyleProps[] {\n return styles.filter((style) => style?.viewDescriptors);\n}\n\ntype Options<P> = {\n setNativeProps: (ref: AnimatedComponentRef, props: P) => void;\n};\n\n/**\n * Lets you create an Animated version of any React Native component.\n *\n * @param component - The component you want to make animatable.\n * @returns A component that Reanimated is capable of animating.\n * @see https://docs.swmansion.com/react-native-reanimated/docs/core/createAnimatedComponent\n */\n\n// Don't change the order of overloads, since such a change breaks current behavior\nexport function createAnimatedComponent<P extends object>(\n component: FunctionComponent<P>,\n options?: Options<P>\n): FunctionComponent<AnimateProps<P>>;\n\nexport function createAnimatedComponent<P extends object>(\n component: ComponentClass<P>,\n options?: Options<P>\n): ComponentClass<AnimateProps<P>>;\n\nexport function createAnimatedComponent<P extends object>(\n // Actually ComponentType<P = {}> = ComponentClass<P> | FunctionComponent<P> but we need this overload too\n // since some external components (like FastImage) are typed just as ComponentType\n component: ComponentType<P>,\n options?: Options<P>\n): FunctionComponent<AnimateProps<P>> | ComponentClass<AnimateProps<P>>;\n\n/**\n * @deprecated Please use `Animated.FlatList` component instead of calling `Animated.createAnimatedComponent(FlatList)` manually.\n */\n// @ts-ignore This is required to create this overload, since type of createAnimatedComponent is incorrect and doesn't include typeof FlatList\nexport function createAnimatedComponent(\n component: typeof FlatList<unknown>,\n options?: Options<any>\n): ComponentClass<AnimateProps<FlatListProps<unknown>>>;\n\nexport function createAnimatedComponent(\n Component: ComponentType<InitialComponentProps>,\n options?: Options<InitialComponentProps>\n): any {\n invariant(\n typeof Component !== 'function' ||\n (Component.prototype && Component.prototype.isReactComponent),\n `Looks like you're passing a function component \\`${Component.name}\\` to \\`createAnimatedComponent\\` function which supports only class components. Please wrap your function component with \\`React.forwardRef()\\` or use a class component instead.`\n );\n\n class AnimatedComponent\n extends React.Component<AnimatedComponentProps<InitialComponentProps>>\n implements IAnimatedComponentInternal\n {\n _styles: StyleProps[] | null = null;\n _animatedProps?: Partial<AnimatedComponentProps<AnimatedProps>>;\n _viewTag = -1;\n _isFirstRender = true;\n jestAnimatedStyle: { value: StyleProps } = { value: {} };\n _component: AnimatedComponentRef | HTMLElement | null = null;\n _sharedElementTransition: SharedTransition | null = null;\n _jsPropsUpdater = new JSPropsUpdater();\n _InlinePropManager = new InlinePropManager();\n _PropsFilter = new PropsFilter();\n _viewInfo?: ViewInfo;\n static displayName: string;\n static contextType = SkipEnteringContext;\n context!: React.ContextType<typeof SkipEnteringContext>;\n\n constructor(props: AnimatedComponentProps<InitialComponentProps>) {\n super(props);\n if (isJest()) {\n this.jestAnimatedStyle = { value: {} };\n }\n }\n\n componentDidMount() {\n this._attachNativeEvents();\n this._jsPropsUpdater.addOnJSPropsChangeListener(this);\n this._attachAnimatedStyles();\n this._InlinePropManager.attachInlineProps(this, this._getViewInfo());\n\n const layout = this.props.layout;\n if (layout) {\n this._configureLayoutTransition();\n }\n\n if (IS_WEB) {\n if (this.props.exiting) {\n saveSnapshot(this._component as HTMLElement);\n }\n\n if (\n !this.props.entering ||\n getReducedMotionFromConfig(this.props.entering as CustomConfig)\n ) {\n this._isFirstRender = false;\n return;\n }\n\n startWebLayoutAnimation(\n this.props,\n this._component as HTMLElement,\n LayoutAnimationType.ENTERING\n );\n }\n\n this._isFirstRender = false;\n }\n\n componentWillUnmount() {\n this._detachNativeEvents();\n this._jsPropsUpdater.removeOnJSPropsChangeListener(this);\n this._detachStyles();\n this._InlinePropManager.detachInlineProps();\n this._sharedElementTransition?.unregisterTransition(this._viewTag);\n\n const exiting = this.props.exiting;\n if (\n IS_WEB &&\n this.props.exiting &&\n !getReducedMotionFromConfig(this.props.exiting as CustomConfig)\n ) {\n addHTMLMutationObserver();\n\n startWebLayoutAnimation(\n this.props,\n this._component as HTMLElement,\n LayoutAnimationType.EXITING\n );\n } else if (exiting) {\n const reduceMotionInExiting =\n 'getReduceMotion' in exiting &&\n typeof exiting.getReduceMotion === 'function'\n ? getReduceMotionFromConfig(exiting.getReduceMotion())\n : getReduceMotionFromConfig();\n if (!reduceMotionInExiting) {\n updateLayoutAnimations(\n this._viewTag,\n LayoutAnimationType.EXITING,\n maybeBuild(\n exiting,\n this.props?.style,\n AnimatedComponent.displayName\n )\n );\n }\n }\n }\n\n _getEventViewRef() {\n // Make sure to get the scrollable node for components that implement\n // `ScrollResponder.Mixin`.\n return (this._component as AnimatedComponentRef)?.getScrollableNode\n ? (this._component as AnimatedComponentRef).getScrollableNode?.()\n : this._component;\n }\n\n _attachNativeEvents() {\n const node = this._getEventViewRef() as AnimatedComponentRef;\n let viewTag = null; // We set it only if needed\n\n for (const key in this.props) {\n const prop = this.props[key];\n if (\n has('workletEventHandler', prop) &&\n prop.workletEventHandler instanceof WorkletEventHandler\n ) {\n if (viewTag === null) {\n viewTag = IS_WEB\n ? this._component\n : findNodeHandle(options?.setNativeProps ? this : node);\n }\n prop.workletEventHandler.registerForEvents(viewTag as number, key);\n }\n }\n }\n\n _detachNativeEvents() {\n for (const key in this.props) {\n const prop = this.props[key];\n if (\n has('workletEventHandler', prop) &&\n prop.workletEventHandler instanceof WorkletEventHandler\n ) {\n prop.workletEventHandler.unregisterFromEvents();\n }\n }\n }\n\n _detachStyles() {\n if (IS_WEB && this._styles !== null) {\n for (const style of this._styles) {\n style.viewsRef.remove(this);\n }\n } else if (this._viewTag !== -1 && this._styles !== null) {\n for (const style of this._styles) {\n style.viewDescriptors.remove(this._viewTag);\n }\n if (this.props.animatedProps?.viewDescriptors) {\n this.props.animatedProps.viewDescriptors.remove(this._viewTag);\n }\n if (IS_FABRIC) {\n removeFromPropsRegistry(this._viewTag);\n }\n }\n }\n\n _reattachNativeEvents(\n prevProps: AnimatedComponentProps<InitialComponentProps>\n ) {\n for (const key in prevProps) {\n const prop = this.props[key];\n if (\n has('workletEventHandler', prop) &&\n prop.workletEventHandler instanceof WorkletEventHandler &&\n prop.workletEventHandler.reattachNeeded\n ) {\n prop.workletEventHandler.unregisterFromEvents();\n }\n }\n\n let viewTag = null;\n\n for (const key in this.props) {\n const prop = this.props[key];\n if (\n has('workletEventHandler', prop) &&\n prop.workletEventHandler instanceof WorkletEventHandler &&\n prop.workletEventHandler.reattachNeeded\n ) {\n if (viewTag === null) {\n const node = this._getEventViewRef() as AnimatedComponentRef;\n\n viewTag = IS_WEB\n ? this._component\n : findNodeHandle(options?.setNativeProps ? this : node);\n }\n prop.workletEventHandler.registerForEvents(viewTag as number, key);\n prop.workletEventHandler.reattachNeeded = false;\n }\n }\n }\n\n _updateFromNative(props: StyleProps) {\n if (options?.setNativeProps) {\n options.setNativeProps(this._component as AnimatedComponentRef, props);\n } else {\n (this._component as AnimatedComponentRef)?.setNativeProps?.(props);\n }\n }\n\n _getViewInfo(): ViewInfo {\n if (this._viewInfo !== undefined) {\n return this._viewInfo;\n }\n\n let viewTag: number | HTMLElement | null;\n let viewName: string | null;\n let shadowNodeWrapper: ShadowNodeWrapper | null = null;\n let viewConfig;\n // Component can specify ref which should be animated when animated version of the component is created.\n // Otherwise, we animate the component itself.\n const component = (this._component as AnimatedComponentRef)\n ?.getAnimatableRef\n ? (this._component as AnimatedComponentRef).getAnimatableRef?.()\n : this;\n\n if (IS_WEB) {\n // At this point I assume that `_setComponentRef` was already called and `_component` is set.\n // `this._component` on web represents HTMLElement of our component, that's why we use casting\n viewTag = this._component as HTMLElement;\n viewName = null;\n shadowNodeWrapper = null;\n viewConfig = null;\n } else {\n // hostInstance can be null for a component that doesn't render anything (render function returns null). Example: svg Stop: https://github.com/react-native-svg/react-native-svg/blob/develop/src/elements/Stop.tsx\n const hostInstance = RNRenderer.findHostInstance_DEPRECATED(component);\n if (!hostInstance) {\n throw new Error(\n '[Reanimated] Cannot find host instance for this component. Maybe it renders nothing?'\n );\n }\n // we can access view tag in the same way it's accessed here https://github.com/facebook/react/blob/e3f4eb7272d4ca0ee49f27577156b57eeb07cf73/packages/react-native-renderer/src/ReactFabric.js#L146\n viewTag = hostInstance?._nativeTag;\n /**\n * RN uses viewConfig for components for storing different properties of the component(example: https://github.com/facebook/react-native/blob/main/packages/react-native/Libraries/Components/ScrollView/ScrollViewNativeComponent.js#L24).\n * The name we're looking for is in the field named uiViewClassName.\n */\n viewName = hostInstance?.viewConfig?.uiViewClassName;\n\n viewConfig = hostInstance?.viewConfig;\n\n if (IS_FABRIC) {\n shadowNodeWrapper = getShadowNodeWrapperFromRef(this);\n }\n }\n this._viewInfo = { viewTag, viewName, shadowNodeWrapper, viewConfig };\n return this._viewInfo;\n }\n\n _attachAnimatedStyles() {\n const styles = this.props.style\n ? onlyAnimatedStyles(flattenArray<StyleProps>(this.props.style))\n : [];\n const prevStyles = this._styles;\n this._styles = styles;\n\n const prevAnimatedProps = this._animatedProps;\n this._animatedProps = this.props.animatedProps;\n\n const { viewTag, viewName, shadowNodeWrapper, viewConfig } =\n this._getViewInfo();\n\n // update UI props whitelist for this view\n const hasReanimated2Props =\n this.props.animatedProps?.viewDescriptors || styles.length;\n if (hasReanimated2Props && viewConfig) {\n adaptViewConfig(viewConfig);\n }\n\n this._viewTag = viewTag as number;\n\n // remove old styles\n if (prevStyles) {\n // in most of the cases, views have only a single animated style and it remains unchanged\n const hasOneSameStyle =\n styles.length === 1 &&\n prevStyles.length === 1 &&\n styles[0] === prevStyles[0];\n\n if (!hasOneSameStyle) {\n // otherwise, remove each style that is not present in new styles\n for (const prevStyle of prevStyles) {\n const isPresent = styles.some((style) => style === prevStyle);\n if (!isPresent) {\n prevStyle.viewDescriptors.remove(viewTag);\n }\n }\n }\n }\n\n styles.forEach((style) => {\n style.viewDescriptors.add({\n tag: viewTag,\n name: viewName,\n shadowNodeWrapper,\n });\n if (isJest()) {\n /**\n * We need to connect Jest's TestObject instance whose contains just props object\n * with the updateProps() function where we update the properties of the component.\n * We can't update props object directly because TestObject contains a copy of props - look at render function:\n * const props = this._filterNonAnimatedProps(this.props);\n */\n this.jestAnimatedStyle.value = {\n ...this.jestAnimatedStyle.value,\n ...style.initial.value,\n };\n style.jestAnimatedStyle.current = this.jestAnimatedStyle;\n }\n });\n\n // detach old animatedProps\n if (prevAnimatedProps && prevAnimatedProps !== this.props.animatedProps) {\n prevAnimatedProps.viewDescriptors!.remove(viewTag as number);\n }\n\n // attach animatedProps property\n if (this.props.animatedProps?.viewDescriptors) {\n this.props.animatedProps.viewDescriptors.add({\n tag: viewTag as number,\n name: viewName!,\n shadowNodeWrapper: shadowNodeWrapper!,\n });\n }\n }\n\n componentDidUpdate(\n prevProps: AnimatedComponentProps<InitialComponentProps>,\n _prevState: Readonly<unknown>,\n // This type comes straight from React\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n snapshot: DOMRect | null\n ) {\n const layout = this.props.layout;\n const oldLayout = prevProps.layout;\n if (layout !== oldLayout) {\n this._configureLayoutTransition();\n }\n this._reattachNativeEvents(prevProps);\n this._attachAnimatedStyles();\n this._InlinePropManager.attachInlineProps(this, this._getViewInfo());\n\n if (IS_WEB && this.props.exiting) {\n saveSnapshot(this._component as HTMLElement);\n }\n\n // Snapshot won't be undefined because it comes from getSnapshotBeforeUpdate method\n if (\n IS_WEB &&\n snapshot !== null &&\n this.props.layout &&\n !getReducedMotionFromConfig(this.props.layout as CustomConfig)\n ) {\n tryActivateLayoutTransition(\n this.props,\n this._component as HTMLElement,\n snapshot\n );\n }\n }\n\n _configureLayoutTransition() {\n const layout = this.props.layout\n ? maybeBuild(\n this.props.layout,\n undefined /* We don't have to warn user if style has common properties with animation for LAYOUT */,\n AnimatedComponent.displayName\n )\n : undefined;\n updateLayoutAnimations(this._viewTag, LayoutAnimationType.LAYOUT, layout);\n }\n\n _setComponentRef = setAndForwardRef<Component | HTMLElement>({\n getForwardedRef: () =>\n this.props.forwardedRef as MutableRefObject<\n Component<Record<string, unknown>, Record<string, unknown>, unknown>\n >,\n setLocalRef: (ref) => {\n // TODO update config\n\n const tag = IS_WEB\n ? (ref as HTMLElement)\n : findNodeHandle(ref as Component);\n\n const { layout, entering, exiting, sharedTransitionTag } = this.props;\n if (\n (layout || entering || exiting || sharedTransitionTag) &&\n tag != null\n ) {\n if (!shouldBeUseWeb()) {\n enableLayoutAnimations(true, false);\n }\n\n const skipEntering = this.context?.current;\n if (entering && !skipEntering) {\n updateLayoutAnimations(\n tag as number,\n LayoutAnimationType.ENTERING,\n maybeBuild(\n entering,\n this.props?.style,\n AnimatedComponent.displayName\n )\n );\n }\n if (sharedTransitionTag && !IS_WEB) {\n const sharedElementTransition =\n this.props.sharedTransitionStyle ?? new SharedTransition();\n const reduceMotionInTransition = getReduceMotionFromConfig(\n sharedElementTransition.getReduceMotion()\n );\n if (!reduceMotionInTransition) {\n sharedElementTransition.registerTransition(\n tag as number,\n sharedTransitionTag\n );\n this._sharedElementTransition = sharedElementTransition;\n }\n }\n }\n\n if (ref !== this._component) {\n this._component = ref;\n }\n },\n });\n\n // This is a component lifecycle method from React, therefore we are not calling it directly.\n // It is called before the component gets rerendered. This way we can access components' position before it changed\n // and later on, in componentDidUpdate, calculate translation for layout transition.\n getSnapshotBeforeUpdate() {\n if (\n IS_WEB &&\n (this._component as HTMLElement)?.getBoundingClientRect !== undefined\n ) {\n return (this._component as HTMLElement).getBoundingClientRect();\n }\n\n return null;\n }\n\n render() {\n const filteredProps = this._PropsFilter.filterNonAnimatedProps(this);\n\n if (isJest()) {\n filteredProps.jestAnimatedStyle = this.jestAnimatedStyle;\n }\n\n // Layout animations on web are set inside `componentDidMount` method, which is called after first render.\n // Because of that we can encounter a situation in which component is visible for a short amount of time, and later on animation triggers.\n // I've tested that on various browsers and devices and it did not happen to me. To be sure that it won't happen to someone else,\n // I've decided to hide component at first render. Its visibility is reset in `componentDidMount`.\n if (\n this._isFirstRender &&\n IS_WEB &&\n filteredProps.entering &&\n !getReducedMotionFromConfig(filteredProps.entering as CustomConfig)\n ) {\n filteredProps.style = {\n ...(filteredProps.style ?? {}),\n visibility: 'hidden', // Hide component until `componentDidMount` triggers\n };\n }\n\n const platformProps = Platform.select({\n web: {},\n default: { collapsable: false },\n });\n\n return (\n <Component\n {...filteredProps}\n // Casting is used here, because ref can be null - in that case it cannot be assigned to HTMLElement.\n // After spending some time trying to figure out what to do with this problem, we decided to leave it this way\n ref={this._setComponentRef as (ref: Component) => void}\n {...platformProps}\n />\n );\n }\n }\n\n AnimatedComponent.displayName = `AnimatedComponent(${\n Component.displayName || Component.name || 'Component'\n })`;\n\n return React.forwardRef<Component>((props, ref) => {\n return (\n <AnimatedComponent\n {...props}\n {...(ref === null ? null : { forwardedRef: ref })}\n />\n );\n });\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","_defineProperty","obj","value","_toPropertyKey","defineProperty","enumerable","configurable","writable","t","_toPrimitive","r","e","Symbol","toPrimitive","TypeError","String","Number","React","findNodeHandle","Platform","WorkletEventHandler","invariant","adaptViewConfig","RNRenderer","enableLayoutAnimations","SharedTransition","LayoutAnimationType","getShadowNodeWrapperFromRef","removeFromPropsRegistry","getReduceMotionFromConfig","maybeBuild","SkipEnteringContext","JSPropsUpdater","has","flattenArray","setAndForwardRef","isFabric","isJest","isWeb","shouldBeUseWeb","InlinePropManager","PropsFilter","startWebLayoutAnimation","tryActivateLayoutTransition","configureWebLayoutAnimations","getReducedMotionFromConfig","saveSnapshot","updateLayoutAnimations","addHTMLMutationObserver","getViewInfo","IS_WEB","onlyAnimatedStyles","styles","filter","style","viewDescriptors","id","createAnimatedComponent","Component","options","isReactComponent","name","AnimatedComponent","constructor","props","getForwardedRef","forwardedRef","setLocalRef","ref","tag","_viewTag","layout","entering","exiting","sharedTransitionTag","_configureSharedTransition","sharedElementTransition","sharedTransitionStyle","reduceMotionInTransition","getReduceMotion","registerTransition","_sharedElementTransition","reduceMotionInExiting","_this$props","EXITING","displayName","_component","jestAnimatedStyle","_this$props2","nativeID","ENTERING","componentDidMount","_getViewInfo","viewTag","_attachNativeEvents","_jsPropsUpdater","addOnJSPropsChangeListener","_attachAnimatedStyles","_InlinePropManager","attachInlineProps","_configureLayoutTransition","_isFirstRender","componentWillUnmount","_this$_sharedElementT","_detachNativeEvents","removeOnJSPropsChangeListener","_detachStyles","detachInlineProps","unregisterTransition","_this$props3","_getEventViewRef","_this$_component","_getScrollableNode","_ref","getScrollableNode","prop","workletEventHandler","registerForEvents","unregisterFromEvents","_styles","viewsRef","remove","_this$props$animatedP","animatedProps","_updateNativeEvents","prevProps","prevProp","newProp","_updateFromNative","setNativeProps","_this$_component2","_this$_component2$set","_this$_component3","_getAnimatableRef","_ref2","_viewInfo","undefined","viewName","shadowNodeWrapper","viewConfig","component","getAnimatableRef","hostInstance","findHostInstance_DEPRECATED","Error","viewInfo","_this$props$animatedP2","_this$props$animatedP3","prevStyles","prevAnimatedProps","_animatedProps","hasReanimated2Props","hasOneSameStyle","prevStyle","isPresent","some","forEach","add","initial","current","componentDidUpdate","_prevState","snapshot","oldLayout","LAYOUT","isUnmounting","_this$_sharedElementT2","getSnapshotBeforeUpdate","_this$_component4","getBoundingClientRect","render","filteredProps","_PropsFilter","filterNonAnimatedProps","visibility","platformProps","select","web","default","collapsable","createElement","_setComponentRef","forwardRef"],"sources":["createAnimatedComponent.tsx"],"sourcesContent":["'use strict';\nimport type {\n Component,\n ComponentClass,\n ComponentType,\n FunctionComponent,\n MutableRefObject,\n} from 'react';\nimport React from 'react';\nimport { findNodeHandle, Platform } from 'react-native';\nimport { WorkletEventHandler } from '../reanimated2/WorkletEventHandler';\nimport '../reanimated2/layoutReanimation/animationsManager';\nimport invariant from 'invariant';\nimport { adaptViewConfig } from '../ConfigHelper';\nimport { RNRenderer } from '../reanimated2/platform-specific/RNRenderer';\nimport { enableLayoutAnimations } from '../reanimated2/core';\nimport {\n SharedTransition,\n LayoutAnimationType,\n} from '../reanimated2/layoutReanimation';\nimport type { StyleProps, ShadowNodeWrapper } from '../reanimated2/commonTypes';\nimport { getShadowNodeWrapperFromRef } from '../reanimated2/fabricUtils';\nimport { removeFromPropsRegistry } from '../reanimated2/PropsRegistry';\nimport { getReduceMotionFromConfig } from '../reanimated2/animation/util';\nimport { maybeBuild } from '../animationBuilder';\nimport { SkipEnteringContext } from '../reanimated2/component/LayoutAnimationConfig';\nimport type { AnimateProps } from '../reanimated2';\nimport JSPropsUpdater from './JSPropsUpdater';\nimport type {\n AnimatedComponentProps,\n AnimatedProps,\n InitialComponentProps,\n AnimatedComponentRef,\n IAnimatedComponentInternal,\n ViewInfo,\n} from './commonTypes';\nimport { has, flattenArray } from './utils';\nimport setAndForwardRef from './setAndForwardRef';\nimport {\n isFabric,\n isJest,\n isWeb,\n shouldBeUseWeb,\n} from '../reanimated2/PlatformChecker';\nimport { InlinePropManager } from './InlinePropManager';\nimport { PropsFilter } from './PropsFilter';\nimport {\n startWebLayoutAnimation,\n tryActivateLayoutTransition,\n configureWebLayoutAnimations,\n getReducedMotionFromConfig,\n saveSnapshot,\n} from '../reanimated2/layoutReanimation/web';\nimport { updateLayoutAnimations } from '../reanimated2/UpdateLayoutAnimations';\nimport type { CustomConfig } from '../reanimated2/layoutReanimation/web/config';\nimport type { FlatList, FlatListProps } from 'react-native';\nimport { addHTMLMutationObserver } from '../reanimated2/layoutReanimation/web/domUtils';\nimport { getViewInfo } from './getViewInfo';\n\nconst IS_WEB = isWeb();\n\nif (IS_WEB) {\n configureWebLayoutAnimations();\n}\n\nfunction onlyAnimatedStyles(styles: StyleProps[]): StyleProps[] {\n return styles.filter((style) => style?.viewDescriptors);\n}\n\ntype Options<P> = {\n setNativeProps: (ref: AnimatedComponentRef, props: P) => void;\n};\n\n/**\n * Lets you create an Animated version of any React Native component.\n *\n * @param component - The component you want to make animatable.\n * @returns A component that Reanimated is capable of animating.\n * @see https://docs.swmansion.com/react-native-reanimated/docs/core/createAnimatedComponent\n */\n\n// Don't change the order of overloads, since such a change breaks current behavior\nexport function createAnimatedComponent<P extends object>(\n component: FunctionComponent<P>,\n options?: Options<P>\n): FunctionComponent<AnimateProps<P>>;\n\nexport function createAnimatedComponent<P extends object>(\n component: ComponentClass<P>,\n options?: Options<P>\n): ComponentClass<AnimateProps<P>>;\n\nexport function createAnimatedComponent<P extends object>(\n // Actually ComponentType<P = {}> = ComponentClass<P> | FunctionComponent<P> but we need this overload too\n // since some external components (like FastImage) are typed just as ComponentType\n component: ComponentType<P>,\n options?: Options<P>\n): FunctionComponent<AnimateProps<P>> | ComponentClass<AnimateProps<P>>;\n\n/**\n * @deprecated Please use `Animated.FlatList` component instead of calling `Animated.createAnimatedComponent(FlatList)` manually.\n */\n// @ts-ignore This is required to create this overload, since type of createAnimatedComponent is incorrect and doesn't include typeof FlatList\nexport function createAnimatedComponent(\n component: typeof FlatList<unknown>,\n options?: Options<any>\n): ComponentClass<AnimateProps<FlatListProps<unknown>>>;\n\nlet id = 0;\n\nexport function createAnimatedComponent(\n Component: ComponentType<InitialComponentProps>,\n options?: Options<InitialComponentProps>\n): any {\n invariant(\n typeof Component !== 'function' ||\n (Component.prototype && Component.prototype.isReactComponent),\n `Looks like you're passing a function component \\`${Component.name}\\` to \\`createAnimatedComponent\\` function which supports only class components. Please wrap your function component with \\`React.forwardRef()\\` or use a class component instead.`\n );\n\n class AnimatedComponent\n extends React.Component<AnimatedComponentProps<InitialComponentProps>>\n implements IAnimatedComponentInternal\n {\n _styles: StyleProps[] | null = null;\n _animatedProps?: Partial<AnimatedComponentProps<AnimatedProps>>;\n _viewTag = -1;\n _isFirstRender = true;\n jestAnimatedStyle: { value: StyleProps } = { value: {} };\n _component: AnimatedComponentRef | HTMLElement | null = null;\n _sharedElementTransition: SharedTransition | null = null;\n _jsPropsUpdater = new JSPropsUpdater();\n _InlinePropManager = new InlinePropManager();\n _PropsFilter = new PropsFilter();\n _viewInfo?: ViewInfo;\n static displayName: string;\n static contextType = SkipEnteringContext;\n context!: React.ContextType<typeof SkipEnteringContext>;\n nativeID = id++;\n\n constructor(props: AnimatedComponentProps<InitialComponentProps>) {\n super(props);\n if (isJest()) {\n this.jestAnimatedStyle = { value: {} };\n }\n const entering = this.props.entering;\n if (entering) {\n updateLayoutAnimations(\n this.nativeID,\n LayoutAnimationType.ENTERING,\n maybeBuild(entering, this.props?.style, AnimatedComponent.displayName)\n );\n }\n }\n\n componentDidMount() {\n this._viewTag = this._getViewInfo().viewTag as number;\n this._attachNativeEvents();\n this._jsPropsUpdater.addOnJSPropsChangeListener(this);\n this._attachAnimatedStyles();\n this._InlinePropManager.attachInlineProps(this, this._getViewInfo());\n\n const layout = this.props.layout;\n if (layout) {\n this._configureLayoutTransition();\n }\n\n if (IS_WEB) {\n if (this.props.exiting) {\n saveSnapshot(this._component as HTMLElement);\n }\n\n if (\n !this.props.entering ||\n getReducedMotionFromConfig(this.props.entering as CustomConfig)\n ) {\n this._isFirstRender = false;\n return;\n }\n\n startWebLayoutAnimation(\n this.props,\n this._component as HTMLElement,\n LayoutAnimationType.ENTERING\n );\n }\n\n this._isFirstRender = false;\n }\n\n componentWillUnmount() {\n this._detachNativeEvents();\n this._jsPropsUpdater.removeOnJSPropsChangeListener(this);\n this._detachStyles();\n this._InlinePropManager.detachInlineProps();\n if (this.props.sharedTransitionTag) {\n this._configureSharedTransition(true);\n }\n this._sharedElementTransition?.unregisterTransition(this._viewTag, true);\n\n const exiting = this.props.exiting;\n if (\n IS_WEB &&\n this._component &&\n this.props.exiting &&\n !getReducedMotionFromConfig(this.props.exiting as CustomConfig)\n ) {\n addHTMLMutationObserver();\n\n startWebLayoutAnimation(\n this.props,\n this._component as HTMLElement,\n LayoutAnimationType.EXITING\n );\n } else if (exiting) {\n const reduceMotionInExiting =\n 'getReduceMotion' in exiting &&\n typeof exiting.getReduceMotion === 'function'\n ? getReduceMotionFromConfig(exiting.getReduceMotion())\n : getReduceMotionFromConfig();\n if (!reduceMotionInExiting) {\n updateLayoutAnimations(\n this._viewTag,\n LayoutAnimationType.EXITING,\n maybeBuild(\n exiting,\n this.props?.style,\n AnimatedComponent.displayName\n )\n );\n }\n }\n }\n\n _getEventViewRef() {\n // Make sure to get the scrollable node for components that implement\n // `ScrollResponder.Mixin`.\n return (this._component as AnimatedComponentRef)?.getScrollableNode\n ? (this._component as AnimatedComponentRef).getScrollableNode?.()\n : this._component;\n }\n\n _attachNativeEvents() {\n for (const key in this.props) {\n const prop = this.props[key];\n if (\n has('workletEventHandler', prop) &&\n prop.workletEventHandler instanceof WorkletEventHandler\n ) {\n prop.workletEventHandler.registerForEvents(this._viewTag, key);\n }\n }\n }\n\n _detachNativeEvents() {\n for (const key in this.props) {\n const prop = this.props[key];\n if (\n has('workletEventHandler', prop) &&\n prop.workletEventHandler instanceof WorkletEventHandler\n ) {\n prop.workletEventHandler.unregisterFromEvents(this._viewTag);\n }\n }\n }\n\n _detachStyles() {\n if (IS_WEB && this._styles !== null) {\n for (const style of this._styles) {\n style.viewsRef.remove(this);\n }\n } else if (this._viewTag !== -1 && this._styles !== null) {\n for (const style of this._styles) {\n style.viewDescriptors.remove(this._viewTag);\n }\n if (this.props.animatedProps?.viewDescriptors) {\n this.props.animatedProps.viewDescriptors.remove(this._viewTag);\n }\n if (isFabric()) {\n removeFromPropsRegistry(this._viewTag);\n }\n }\n }\n\n _updateNativeEvents(\n prevProps: AnimatedComponentProps<InitialComponentProps>\n ) {\n for (const key in prevProps) {\n const prevProp = prevProps[key];\n if (\n has('workletEventHandler', prevProp) &&\n prevProp.workletEventHandler instanceof WorkletEventHandler\n ) {\n const newProp = this.props[key];\n if (!newProp) {\n // Prop got deleted\n prevProp.workletEventHandler.unregisterFromEvents(this._viewTag);\n } else if (\n has('workletEventHandler', newProp) &&\n newProp.workletEventHandler instanceof WorkletEventHandler &&\n newProp.workletEventHandler !== prevProp.workletEventHandler\n ) {\n // Prop got changed\n prevProp.workletEventHandler.unregisterFromEvents(this._viewTag);\n newProp.workletEventHandler.registerForEvents(this._viewTag);\n }\n }\n }\n\n for (const key in this.props) {\n const newProp = this.props[key];\n if (\n has('workletEventHandler', newProp) &&\n newProp.workletEventHandler instanceof WorkletEventHandler &&\n !prevProps[key]\n ) {\n // Prop got added\n newProp.workletEventHandler.registerForEvents(this._viewTag);\n }\n }\n }\n\n _updateFromNative(props: StyleProps) {\n if (options?.setNativeProps) {\n options.setNativeProps(this._component as AnimatedComponentRef, props);\n } else {\n (this._component as AnimatedComponentRef)?.setNativeProps?.(props);\n }\n }\n\n _getViewInfo(): ViewInfo {\n if (this._viewInfo !== undefined) {\n return this._viewInfo;\n }\n\n let viewTag: number | HTMLElement | null;\n let viewName: string | null;\n let shadowNodeWrapper: ShadowNodeWrapper | null = null;\n let viewConfig;\n // Component can specify ref which should be animated when animated version of the component is created.\n // Otherwise, we animate the component itself.\n const component = (this._component as AnimatedComponentRef)\n ?.getAnimatableRef\n ? (this._component as AnimatedComponentRef).getAnimatableRef?.()\n : this;\n\n if (IS_WEB) {\n // At this point I assume that `_setComponentRef` was already called and `_component` is set.\n // `this._component` on web represents HTMLElement of our component, that's why we use casting\n viewTag = this._component as HTMLElement;\n viewName = null;\n shadowNodeWrapper = null;\n viewConfig = null;\n } else {\n // hostInstance can be null for a component that doesn't render anything (render function returns null). Example: svg Stop: https://github.com/react-native-svg/react-native-svg/blob/develop/src/elements/Stop.tsx\n const hostInstance = RNRenderer.findHostInstance_DEPRECATED(component);\n if (!hostInstance) {\n throw new Error(\n '[Reanimated] Cannot find host instance for this component. Maybe it renders nothing?'\n );\n }\n\n const viewInfo = getViewInfo(hostInstance);\n viewTag = viewInfo.viewTag;\n viewName = viewInfo.viewName;\n viewConfig = viewInfo.viewConfig;\n shadowNodeWrapper = isFabric()\n ? getShadowNodeWrapperFromRef(this)\n : null;\n }\n this._viewInfo = { viewTag, viewName, shadowNodeWrapper, viewConfig };\n return this._viewInfo;\n }\n\n _attachAnimatedStyles() {\n const styles = this.props.style\n ? onlyAnimatedStyles(flattenArray<StyleProps>(this.props.style))\n : [];\n const prevStyles = this._styles;\n this._styles = styles;\n\n const prevAnimatedProps = this._animatedProps;\n this._animatedProps = this.props.animatedProps;\n\n const { viewTag, viewName, shadowNodeWrapper, viewConfig } =\n this._getViewInfo();\n\n // update UI props whitelist for this view\n const hasReanimated2Props =\n this.props.animatedProps?.viewDescriptors || styles.length;\n if (hasReanimated2Props && viewConfig) {\n adaptViewConfig(viewConfig);\n }\n\n this._viewTag = viewTag as number;\n\n // remove old styles\n if (prevStyles) {\n // in most of the cases, views have only a single animated style and it remains unchanged\n const hasOneSameStyle =\n styles.length === 1 &&\n prevStyles.length === 1 &&\n styles[0] === prevStyles[0];\n\n if (!hasOneSameStyle) {\n // otherwise, remove each style that is not present in new styles\n for (const prevStyle of prevStyles) {\n const isPresent = styles.some((style) => style === prevStyle);\n if (!isPresent) {\n prevStyle.viewDescriptors.remove(viewTag);\n }\n }\n }\n }\n\n styles.forEach((style) => {\n style.viewDescriptors.add({\n tag: viewTag,\n name: viewName,\n shadowNodeWrapper,\n });\n if (isJest()) {\n /**\n * We need to connect Jest's TestObject instance whose contains just props object\n * with the updateProps() function where we update the properties of the component.\n * We can't update props object directly because TestObject contains a copy of props - look at render function:\n * const props = this._filterNonAnimatedProps(this.props);\n */\n this.jestAnimatedStyle.value = {\n ...this.jestAnimatedStyle.value,\n ...style.initial.value,\n };\n style.jestAnimatedStyle.current = this.jestAnimatedStyle;\n }\n });\n\n // detach old animatedProps\n if (prevAnimatedProps && prevAnimatedProps !== this.props.animatedProps) {\n prevAnimatedProps.viewDescriptors!.remove(viewTag as number);\n }\n\n // attach animatedProps property\n if (this.props.animatedProps?.viewDescriptors) {\n this.props.animatedProps.viewDescriptors.add({\n tag: viewTag as number,\n name: viewName!,\n shadowNodeWrapper: shadowNodeWrapper!,\n });\n }\n }\n\n componentDidUpdate(\n prevProps: AnimatedComponentProps<InitialComponentProps>,\n _prevState: Readonly<unknown>,\n // This type comes straight from React\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n snapshot: DOMRect | null\n ) {\n const layout = this.props.layout;\n const oldLayout = prevProps.layout;\n if (layout !== oldLayout) {\n this._configureLayoutTransition();\n }\n if (\n this.props.sharedTransitionTag !== undefined ||\n prevProps.sharedTransitionTag !== undefined\n ) {\n this._configureSharedTransition();\n }\n this._updateNativeEvents(prevProps);\n this._attachAnimatedStyles();\n this._InlinePropManager.attachInlineProps(this, this._getViewInfo());\n\n if (IS_WEB && this.props.exiting) {\n saveSnapshot(this._component as HTMLElement);\n }\n\n // Snapshot won't be undefined because it comes from getSnapshotBeforeUpdate method\n if (\n IS_WEB &&\n snapshot !== null &&\n this.props.layout &&\n !getReducedMotionFromConfig(this.props.layout as CustomConfig)\n ) {\n tryActivateLayoutTransition(\n this.props,\n this._component as HTMLElement,\n snapshot\n );\n }\n }\n\n _configureLayoutTransition() {\n const layout = this.props.layout\n ? maybeBuild(\n this.props.layout,\n undefined /* We don't have to warn user if style has common properties with animation for LAYOUT */,\n AnimatedComponent.displayName\n )\n : undefined;\n updateLayoutAnimations(this._viewTag, LayoutAnimationType.LAYOUT, layout);\n }\n\n _configureSharedTransition(isUnmounting = false) {\n if (IS_WEB) {\n return;\n }\n const { sharedTransitionTag } = this.props;\n if (!sharedTransitionTag) {\n this._sharedElementTransition?.unregisterTransition(\n this._viewTag,\n isUnmounting\n );\n this._sharedElementTransition = null;\n return;\n }\n const sharedElementTransition =\n this.props.sharedTransitionStyle ??\n this._sharedElementTransition ??\n new SharedTransition();\n sharedElementTransition.registerTransition(\n this._viewTag,\n sharedTransitionTag,\n isUnmounting\n );\n this._sharedElementTransition = sharedElementTransition;\n }\n\n _setComponentRef = setAndForwardRef<Component | HTMLElement>({\n getForwardedRef: () =>\n this.props.forwardedRef as MutableRefObject<\n Component<Record<string, unknown>, Record<string, unknown>, unknown>\n >,\n setLocalRef: (ref) => {\n // TODO update config\n\n const tag = IS_WEB\n ? (ref as HTMLElement)\n : findNodeHandle(ref as Component);\n\n this._viewTag = tag as number;\n\n const { layout, entering, exiting, sharedTransitionTag } = this.props;\n if (\n (layout || entering || exiting || sharedTransitionTag) &&\n tag != null\n ) {\n if (!shouldBeUseWeb()) {\n enableLayoutAnimations(true, false);\n }\n\n if (sharedTransitionTag) {\n this._configureSharedTransition();\n }\n if (sharedTransitionTag && !IS_WEB) {\n const sharedElementTransition =\n this.props.sharedTransitionStyle ?? new SharedTransition();\n const reduceMotionInTransition = getReduceMotionFromConfig(\n sharedElementTransition.getReduceMotion()\n );\n if (!reduceMotionInTransition) {\n sharedElementTransition.registerTransition(\n tag as number,\n sharedTransitionTag\n );\n this._sharedElementTransition = sharedElementTransition;\n }\n }\n if (exiting) {\n const reduceMotionInExiting =\n 'getReduceMotion' in exiting &&\n typeof exiting.getReduceMotion === 'function'\n ? getReduceMotionFromConfig(exiting.getReduceMotion())\n : getReduceMotionFromConfig();\n if (!reduceMotionInExiting) {\n updateLayoutAnimations(\n tag as number,\n LayoutAnimationType.EXITING,\n maybeBuild(\n exiting,\n this.props?.style,\n AnimatedComponent.displayName\n )\n );\n }\n }\n }\n\n if (ref !== this._component) {\n this._component = ref;\n }\n },\n });\n\n // This is a component lifecycle method from React, therefore we are not calling it directly.\n // It is called before the component gets rerendered. This way we can access components' position before it changed\n // and later on, in componentDidUpdate, calculate translation for layout transition.\n getSnapshotBeforeUpdate() {\n if (\n IS_WEB &&\n (this._component as HTMLElement)?.getBoundingClientRect !== undefined\n ) {\n return (this._component as HTMLElement).getBoundingClientRect();\n }\n\n return null;\n }\n\n render() {\n const filteredProps = this._PropsFilter.filterNonAnimatedProps(this);\n\n if (isJest()) {\n filteredProps.jestAnimatedStyle = this.jestAnimatedStyle;\n }\n\n // Layout animations on web are set inside `componentDidMount` method, which is called after first render.\n // Because of that we can encounter a situation in which component is visible for a short amount of time, and later on animation triggers.\n // I've tested that on various browsers and devices and it did not happen to me. To be sure that it won't happen to someone else,\n // I've decided to hide component at first render. Its visibility is reset in `componentDidMount`.\n if (\n this._isFirstRender &&\n IS_WEB &&\n filteredProps.entering &&\n !getReducedMotionFromConfig(filteredProps.entering as CustomConfig)\n ) {\n filteredProps.style = {\n ...(filteredProps.style ?? {}),\n visibility: 'hidden', // Hide component until `componentDidMount` triggers\n };\n }\n\n const platformProps = Platform.select({\n web: {},\n default: { collapsable: false },\n });\n\n return (\n <Component\n nativeID={`${this.nativeID}`}\n {...filteredProps}\n // Casting is used here, because ref can be null - in that case it cannot be assigned to HTMLElement.\n // After spending some time trying to figure out what to do with this problem, we decided to leave it this way\n ref={this._setComponentRef as (ref: Component) => void}\n {...platformProps}\n />\n );\n }\n }\n\n AnimatedComponent.displayName = `AnimatedComponent(${\n Component.displayName || Component.name || 'Component'\n })`;\n\n return React.forwardRef<Component>((props, ref) => {\n return (\n <AnimatedComponent\n {...props}\n {...(ref === null ? null : { forwardedRef: ref })}\n />\n );\n });\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
4
|
+
|
|
5
|
+
// This is a makeshift solution to handle both 0.73 and 0.74 versions of React Native.
|
|
6
|
+
export let getViewInfo = element => {
|
|
7
|
+
if (element._nativeTag !== undefined && element.__nativeTag !== null) {
|
|
8
|
+
getViewInfo = getViewInfo73;
|
|
9
|
+
return getViewInfo73(element);
|
|
10
|
+
} else if (element.__nativeTag !== undefined && element.__nativeTag !== null) {
|
|
11
|
+
getViewInfo = getViewInfoLatest;
|
|
12
|
+
return getViewInfoLatest(element);
|
|
13
|
+
}
|
|
14
|
+
return getViewInfo73(element);
|
|
15
|
+
};
|
|
16
|
+
function getViewInfo73(element) {
|
|
17
|
+
var _element$viewConfig;
|
|
18
|
+
return {
|
|
19
|
+
// we can access view tag in the same way it's accessed here https://github.com/facebook/react/blob/e3f4eb7272d4ca0ee49f27577156b57eeb07cf73/packages/react-native-renderer/src/ReactFabric.js#L146
|
|
20
|
+
viewName: element === null || element === void 0 || (_element$viewConfig = element.viewConfig) === null || _element$viewConfig === void 0 ? void 0 : _element$viewConfig.uiViewClassName,
|
|
21
|
+
/**
|
|
22
|
+
* RN uses viewConfig for components for storing different properties of the component(example: https://github.com/facebook/react-native/blob/main/packages/react-native/Libraries/Components/ScrollView/ScrollViewNativeComponent.js#L24).
|
|
23
|
+
* The name we're looking for is in the field named uiViewClassName.
|
|
24
|
+
*/
|
|
25
|
+
viewTag: element === null || element === void 0 ? void 0 : element._nativeTag,
|
|
26
|
+
viewConfig: element === null || element === void 0 ? void 0 : element.viewConfig
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
function getViewInfoLatest(element) {
|
|
30
|
+
var _element$_viewConfig;
|
|
31
|
+
return {
|
|
32
|
+
viewName: element === null || element === void 0 || (_element$_viewConfig = element._viewConfig) === null || _element$_viewConfig === void 0 ? void 0 : _element$_viewConfig.uiViewClassName,
|
|
33
|
+
viewTag: element === null || element === void 0 ? void 0 : element.__nativeTag,
|
|
34
|
+
viewConfig: element === null || element === void 0 ? void 0 : element._viewConfig
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=getViewInfo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["getViewInfo","element","_nativeTag","undefined","__nativeTag","getViewInfo73","getViewInfoLatest","_element$viewConfig","viewName","viewConfig","uiViewClassName","viewTag","_element$_viewConfig","_viewConfig"],"sources":["getViewInfo.ts"],"sourcesContent":["'use strict';\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n// This is a makeshift solution to handle both 0.73 and 0.74 versions of React Native.\n\nexport let getViewInfo = (element: any) => {\n if (element._nativeTag !== undefined && element.__nativeTag !== null) {\n getViewInfo = getViewInfo73;\n return getViewInfo73(element);\n } else if (\n element.__nativeTag !== undefined &&\n element.__nativeTag !== null\n ) {\n getViewInfo = getViewInfoLatest;\n return getViewInfoLatest(element);\n }\n return getViewInfo73(element);\n};\n\nfunction getViewInfo73(element: any) {\n return {\n // we can access view tag in the same way it's accessed here https://github.com/facebook/react/blob/e3f4eb7272d4ca0ee49f27577156b57eeb07cf73/packages/react-native-renderer/src/ReactFabric.js#L146\n viewName: element?.viewConfig?.uiViewClassName,\n /**\n * RN uses viewConfig for components for storing different properties of the component(example: https://github.com/facebook/react-native/blob/main/packages/react-native/Libraries/Components/ScrollView/ScrollViewNativeComponent.js#L24).\n * The name we're looking for is in the field named uiViewClassName.\n */\n viewTag: element?._nativeTag,\n viewConfig: element?.viewConfig,\n };\n}\n\nfunction getViewInfoLatest(element: any) {\n return {\n viewName: element?._viewConfig?.uiViewClassName,\n viewTag: element?.__nativeTag,\n viewConfig: element?._viewConfig,\n };\n}\n"],"mappings":"AAAA,YAAY;;AACZ;;AAEA;AAEA,OAAO,IAAIA,WAAW,GAAIC,OAAY,IAAK;EACzC,IAAIA,OAAO,CAACC,UAAU,KAAKC,SAAS,IAAIF,OAAO,CAACG,WAAW,KAAK,IAAI,EAAE;IACpEJ,WAAW,GAAGK,aAAa;IAC3B,OAAOA,aAAa,CAACJ,OAAO,CAAC;EAC/B,CAAC,MAAM,IACLA,OAAO,CAACG,WAAW,KAAKD,SAAS,IACjCF,OAAO,CAACG,WAAW,KAAK,IAAI,EAC5B;IACAJ,WAAW,GAAGM,iBAAiB;IAC/B,OAAOA,iBAAiB,CAACL,OAAO,CAAC;EACnC;EACA,OAAOI,aAAa,CAACJ,OAAO,CAAC;AAC/B,CAAC;AAED,SAASI,aAAaA,CAACJ,OAAY,EAAE;EAAA,IAAAM,mBAAA;EACnC,OAAO;IACL;IACAC,QAAQ,EAAEP,OAAO,aAAPA,OAAO,gBAAAM,mBAAA,GAAPN,OAAO,CAAEQ,UAAU,cAAAF,mBAAA,uBAAnBA,mBAAA,CAAqBG,eAAe;IAC9C;AACJ;AACA;AACA;IACIC,OAAO,EAAEV,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEC,UAAU;IAC5BO,UAAU,EAAER,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEQ;EACvB,CAAC;AACH;AAEA,SAASH,iBAAiBA,CAACL,OAAY,EAAE;EAAA,IAAAW,oBAAA;EACvC,OAAO;IACLJ,QAAQ,EAAEP,OAAO,aAAPA,OAAO,gBAAAW,oBAAA,GAAPX,OAAO,CAAEY,WAAW,cAAAD,oBAAA,uBAApBA,oBAAA,CAAsBF,eAAe;IAC/CC,OAAO,EAAEV,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEG,WAAW;IAC7BK,UAAU,EAAER,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEY;EACvB,CAAC;AACH","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createAnimatedComponent"],"sources":["index.ts"],"sourcesContent":["'use strict';\nexport { createAnimatedComponent } from './createAnimatedComponent';\n"],"mappings":"AAAA,YAAY;;AACZ,SAASA,uBAAuB,QAAQ,2BAA2B"}
|
|
1
|
+
{"version":3,"names":["createAnimatedComponent"],"sources":["index.ts"],"sourcesContent":["'use strict';\nexport { createAnimatedComponent } from './createAnimatedComponent';\n"],"mappings":"AAAA,YAAY;;AACZ,SAASA,uBAAuB,QAAQ,2BAA2B","ignoreList":[]}
|
|
@@ -35,11 +35,10 @@
|
|
|
35
35
|
* module.exports = MyViewWithRef;
|
|
36
36
|
*/
|
|
37
37
|
/* eslint-enable */
|
|
38
|
-
function setAndForwardRef(
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
} = _ref;
|
|
38
|
+
function setAndForwardRef({
|
|
39
|
+
getForwardedRef,
|
|
40
|
+
setLocalRef
|
|
41
|
+
}) {
|
|
43
42
|
return function forwardRef(ref) {
|
|
44
43
|
const forwardedRef = getForwardedRef();
|
|
45
44
|
setLocalRef(ref);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["setAndForwardRef","
|
|
1
|
+
{"version":3,"names":["setAndForwardRef","getForwardedRef","setLocalRef","forwardRef","ref","forwardedRef","current"],"sources":["setAndForwardRef.ts"],"sourcesContent":["'use strict';\n/**\n * imported from react-native\n */\n\nimport type { MutableRefObject } from 'react';\n\n/* eslint-disable */\n/**\n * This is a helper function for when a component needs to be able to forward a ref\n * to a child component, but still needs to have access to that component as part of\n * its implementation.\n *\n * Its main use case is in wrappers for native components.\n *\n * Usage:\n *\n * class MyView extends React.Component {\n * _nativeRef = null;\n *\n * _setNativeRef = setAndForwardRef({\n * getForwardedRef: () => this.props.forwardedRef,\n * setLocalRef: ref => {\n * this._nativeRef = ref;\n * },\n * });\n *\n * render() {\n * return <View ref={this._setNativeRef} />;\n * }\n * }\n *\n * const MyViewWithRef = React.forwardRef((props, ref) => (\n * <MyView {...props} forwardedRef={ref} />\n * ));\n *\n * module.exports = MyViewWithRef;\n */\n/* eslint-enable */\n\ntype ForwardedRef<T> = () => MutableRefObject<T> | ((ref: T) => void);\n\nfunction setAndForwardRef<T>({\n getForwardedRef,\n setLocalRef,\n}: {\n getForwardedRef: ForwardedRef<T>;\n setLocalRef: (ref: T) => void;\n}): (ref: T) => void {\n return function forwardRef(ref: T) {\n const forwardedRef = getForwardedRef();\n\n setLocalRef(ref);\n\n // Forward to user ref prop (if one has been specified)\n if (typeof forwardedRef === 'function') {\n // Handle function-based refs. String-based refs are handled as functions.\n forwardedRef(ref);\n } else if (typeof forwardedRef === 'object' && forwardedRef != null) {\n // Handle createRef-based refs\n forwardedRef.current = ref;\n }\n };\n}\n\nexport default setAndForwardRef;\n"],"mappings":"AAAA,YAAY;;AACZ;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA,SAASA,gBAAgBA,CAAI;EAC3BC,eAAe;EACfC;AAIF,CAAC,EAAoB;EACnB,OAAO,SAASC,UAAUA,CAACC,GAAM,EAAE;IACjC,MAAMC,YAAY,GAAGJ,eAAe,CAAC,CAAC;IAEtCC,WAAW,CAACE,GAAG,CAAC;;IAEhB;IACA,IAAI,OAAOC,YAAY,KAAK,UAAU,EAAE;MACtC;MACAA,YAAY,CAACD,GAAG,CAAC;IACnB,CAAC,MAAM,IAAI,OAAOC,YAAY,KAAK,QAAQ,IAAIA,YAAY,IAAI,IAAI,EAAE;MACnE;MACAA,YAAY,CAACC,OAAO,GAAGF,GAAG;IAC5B;EACF,CAAC;AACH;AAEA,eAAeJ,gBAAgB","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["flattenArray","array","Array","isArray","resultArr","_flattenArray","arr","forEach","item","push","has","key","x","undefined"],"sources":["utils.ts"],"sourcesContent":["'use strict';\nimport type { NestedArray } from './commonTypes';\n\nexport function flattenArray<T>(array: NestedArray<T>): T[] {\n if (!Array.isArray(array)) {\n return [array];\n }\n const resultArr: T[] = [];\n\n const _flattenArray = (arr: NestedArray<T>[]): void => {\n arr.forEach((item) => {\n if (Array.isArray(item)) {\n _flattenArray(item);\n } else {\n resultArr.push(item);\n }\n });\n };\n _flattenArray(array);\n return resultArr;\n}\n\nexport const has = <K extends string>(\n key: K,\n x: unknown\n): x is { [key in K]: unknown } => {\n if (typeof x === 'function' || typeof x === 'object') {\n if (x === null || x === undefined) {\n return false;\n } else {\n return key in x;\n }\n }\n return false;\n};\n"],"mappings":"AAAA,YAAY;;AAGZ,OAAO,SAASA,YAAYA,CAAIC,KAAqB,EAAO;EAC1D,IAAI,CAACC,KAAK,CAACC,OAAO,CAACF,KAAK,CAAC,EAAE;IACzB,OAAO,CAACA,KAAK,CAAC;EAChB;EACA,MAAMG,SAAc,GAAG,EAAE;EAEzB,MAAMC,aAAa,GAAIC,GAAqB,IAAW;IACrDA,GAAG,CAACC,OAAO,CAAEC,IAAI,IAAK;MACpB,IAAIN,KAAK,CAACC,OAAO,CAACK,IAAI,CAAC,EAAE;QACvBH,aAAa,CAACG,IAAI,CAAC;MACrB,CAAC,MAAM;QACLJ,SAAS,CAACK,IAAI,CAACD,IAAI,CAAC;MACtB;IACF,CAAC,CAAC;EACJ,CAAC;EACDH,aAAa,CAACJ,KAAK,CAAC;EACpB,OAAOG,SAAS;AAClB;AAEA,OAAO,MAAMM,GAAG,GAAGA,CACjBC,GAAM,EACNC,CAAU,KACuB;EACjC,IAAI,OAAOA,CAAC,KAAK,UAAU,IAAI,OAAOA,CAAC,KAAK,QAAQ,EAAE;IACpD,IAAIA,CAAC,KAAK,IAAI,IAAIA,CAAC,KAAKC,SAAS,EAAE;MACjC,OAAO,KAAK;IACd,CAAC,MAAM;MACL,OAAOF,GAAG,IAAIC,CAAC;IACjB;EACF;EACA,OAAO,KAAK;AACd,CAAC"}
|
|
1
|
+
{"version":3,"names":["flattenArray","array","Array","isArray","resultArr","_flattenArray","arr","forEach","item","push","has","key","x","undefined"],"sources":["utils.ts"],"sourcesContent":["'use strict';\nimport type { NestedArray } from './commonTypes';\n\nexport function flattenArray<T>(array: NestedArray<T>): T[] {\n if (!Array.isArray(array)) {\n return [array];\n }\n const resultArr: T[] = [];\n\n const _flattenArray = (arr: NestedArray<T>[]): void => {\n arr.forEach((item) => {\n if (Array.isArray(item)) {\n _flattenArray(item);\n } else {\n resultArr.push(item);\n }\n });\n };\n _flattenArray(array);\n return resultArr;\n}\n\nexport const has = <K extends string>(\n key: K,\n x: unknown\n): x is { [key in K]: unknown } => {\n if (typeof x === 'function' || typeof x === 'object') {\n if (x === null || x === undefined) {\n return false;\n } else {\n return key in x;\n }\n }\n return false;\n};\n"],"mappings":"AAAA,YAAY;;AAGZ,OAAO,SAASA,YAAYA,CAAIC,KAAqB,EAAO;EAC1D,IAAI,CAACC,KAAK,CAACC,OAAO,CAACF,KAAK,CAAC,EAAE;IACzB,OAAO,CAACA,KAAK,CAAC;EAChB;EACA,MAAMG,SAAc,GAAG,EAAE;EAEzB,MAAMC,aAAa,GAAIC,GAAqB,IAAW;IACrDA,GAAG,CAACC,OAAO,CAAEC,IAAI,IAAK;MACpB,IAAIN,KAAK,CAACC,OAAO,CAACK,IAAI,CAAC,EAAE;QACvBH,aAAa,CAACG,IAAI,CAAC;MACrB,CAAC,MAAM;QACLJ,SAAS,CAACK,IAAI,CAACD,IAAI,CAAC;MACtB;IACF,CAAC,CAAC;EACJ,CAAC;EACDH,aAAa,CAACJ,KAAK,CAAC;EACpB,OAAOG,SAAS;AAClB;AAEA,OAAO,MAAMM,GAAG,GAAGA,CACjBC,GAAM,EACNC,CAAU,KACuB;EACjC,IAAI,OAAOA,CAAC,KAAK,UAAU,IAAI,OAAOA,CAAC,KAAK,QAAQ,EAAE;IACpD,IAAIA,CAAC,KAAK,IAAI,IAAIA,CAAC,KAAKC,SAAS,EAAE;MACjC,OAAO,KAAK;IACd,CAAC,MAAM;MACL,OAAOF,GAAG,IAAIC,CAAC;IACjB;EACF;EACA,OAAO,KAAK;AACd,CAAC","ignoreList":[]}
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Animated"],"sources":["index.ts"],"sourcesContent":["'use strict';\nimport * as Animated from './Animated';\n\nexport * from './reanimated2';\nexport default Animated;\n"],"mappings":"AAAA,YAAY;;AACZ,OAAO,KAAKA,QAAQ,MAAM,YAAY;AAEtC,cAAc,eAAe;AAC7B,eAAeA,QAAQ"}
|
|
1
|
+
{"version":3,"names":["Animated"],"sources":["index.ts"],"sourcesContent":["'use strict';\nimport * as Animated from './Animated';\n\nexport * from './reanimated2';\nexport default Animated;\n"],"mappings":"AAAA,YAAY;;AACZ,OAAO,KAAKA,QAAQ,MAAM,YAAY;AAEtC,cAAc,eAAe;AAC7B,eAAeA,QAAQ","ignoreList":[]}
|
package/lib/module/index.web.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
export * from './reanimated2';
|
|
4
|
-
|
|
5
|
-
export { _default as default }; // If this line fails, you probably forgot some installation steps. Check out the installation guide here: https://docs.swmansion.com/react-native-reanimated/docs/fundamentals/getting-started#installation 1) Make sure reanimated's babel plugin is installed in your babel.config.js (you should have 'react-native-reanimated/plugin' listed there - also see the above link for details) 2) Make sure you reset build cache after updating the config, run: yarn start --reset-cache
|
|
4
|
+
export * as default from './Animated'; // If this line fails, you probably forgot some installation steps. Check out the installation guide here: https://docs.swmansion.com/react-native-reanimated/docs/fundamentals/getting-started#installation 1) Make sure reanimated's babel plugin is installed in your babel.config.js (you should have 'react-native-reanimated/plugin' listed there - also see the above link for details) 2) Make sure you reset build cache after updating the config, run: yarn start --reset-cache
|
|
6
5
|
//# sourceMappingURL=index.web.js.map
|