react-native-reanimated 2.14.4 → 2.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Common/cpp/Registries/EventHandlerRegistry.cpp +8 -2
- package/Common/cpp/Tools/SingleInstanceChecker.h +10 -2
- package/android/build.gradle +4 -4
- package/android/src/main/java/com/swmansion/reanimated/NodesManager.java +6 -7
- package/ios/REANodesManager.m +23 -4
- package/package.json +6 -3
- package/src/reanimated2/hook/useAnimatedReaction.ts +9 -5
- package/src/reanimated2/hook/useAnimatedStyle.ts +14 -3
- package/src/reanimated2/hook/useDerivedValue.ts +8 -1
- package/android/.gradle/7.5.1/checksums/checksums.lock +0 -0
- package/android/.gradle/7.5.1/checksums/md5-checksums.bin +0 -0
- package/android/.gradle/7.5.1/checksums/sha1-checksums.bin +0 -0
- package/android/.gradle/7.5.1/dependencies-accessors/dependencies-accessors.lock +0 -0
- package/android/.gradle/7.5.1/dependencies-accessors/gc.properties +0 -0
- package/android/.gradle/7.5.1/executionHistory/executionHistory.bin +0 -0
- package/android/.gradle/7.5.1/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/7.5.1/fileChanges/last-build.bin +0 -0
- package/android/.gradle/7.5.1/fileHashes/fileHashes.bin +0 -0
- package/android/.gradle/7.5.1/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/7.5.1/fileHashes/resourceHashesCache.bin +0 -0
- package/android/.gradle/7.5.1/gc.properties +0 -0
- package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/android/.gradle/buildOutputCleanup/cache.properties +0 -2
- package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
- package/android/.gradle/file-system.probe +0 -0
- package/android/.gradle/vcs-1/gc.properties +0 -0
- package/android/react-native-reanimated-67-hermes.aar +0 -0
- package/android/react-native-reanimated-67-jsc.aar +0 -0
- package/android/react-native-reanimated-68-hermes.aar +0 -0
- package/android/react-native-reanimated-68-jsc.aar +0 -0
- package/android/react-native-reanimated-69-hermes.aar +0 -0
- package/android/react-native-reanimated-69-jsc.aar +0 -0
- package/android/react-native-reanimated-70-hermes.aar +0 -0
- package/android/react-native-reanimated-70-jsc.aar +0 -0
- package/android/react-native-reanimated-71-hermes.aar +0 -0
- package/android/react-native-reanimated-71-jsc.aar +0 -0
- package/lib/Animated.js +0 -9
- package/lib/ConfigHelper.js +0 -145
- package/lib/ReanimatedEventEmitter.js +0 -3
- package/lib/ReanimatedModule.js +0 -2
- package/lib/ReanimatedModule.macos.js +0 -2
- package/lib/ReanimatedModule.native.js +0 -12
- package/lib/ReanimatedModule.windows.js +0 -2
- package/lib/ReanimatedModuleCompat.js +0 -66
- package/lib/__mocks__/ReanimatedEventEmitter.js +0 -8
- package/lib/__mocks__/ReanimatedModule.native.js +0 -11
- package/lib/createAnimatedComponent.js +0 -518
- package/lib/index.js +0 -14
- package/lib/index.web.js +0 -6
- package/lib/reanimated1/Easing.js +0 -231
- package/lib/reanimated1/SpringConfig.js +0 -79
- package/lib/reanimated1/Transitioning.js +0 -158
- package/lib/reanimated1/animations/Animation.js +0 -32
- package/lib/reanimated1/animations/SpringUtils.js +0 -199
- package/lib/reanimated1/animations/backwardCompatibleAnimWrapper.js +0 -117
- package/lib/reanimated1/animations/decay.js +0 -54
- package/lib/reanimated1/animations/spring.js +0 -198
- package/lib/reanimated1/animations/timing.js +0 -74
- package/lib/reanimated1/base.js +0 -13
- package/lib/reanimated1/core/AnimatedAlways.js +0 -33
- package/lib/reanimated1/core/AnimatedBezier.js +0 -150
- package/lib/reanimated1/core/AnimatedBlock.js +0 -52
- package/lib/reanimated1/core/AnimatedCall.js +0 -55
- package/lib/reanimated1/core/AnimatedCallFunc.js +0 -72
- package/lib/reanimated1/core/AnimatedClock.js +0 -90
- package/lib/reanimated1/core/AnimatedClockTest.js +0 -22
- package/lib/reanimated1/core/AnimatedCode.js +0 -32
- package/lib/reanimated1/core/AnimatedConcat.js +0 -32
- package/lib/reanimated1/core/AnimatedCond.js +0 -57
- package/lib/reanimated1/core/AnimatedDebug.js +0 -62
- package/lib/reanimated1/core/AnimatedEvent.js +0 -126
- package/lib/reanimated1/core/AnimatedFunction.js +0 -55
- package/lib/reanimated1/core/AnimatedNode.js +0 -223
- package/lib/reanimated1/core/AnimatedOperator.js +0 -103
- package/lib/reanimated1/core/AnimatedParam.js +0 -88
- package/lib/reanimated1/core/AnimatedProps.js +0 -108
- package/lib/reanimated1/core/AnimatedSet.js +0 -38
- package/lib/reanimated1/core/AnimatedStartClock.js +0 -30
- package/lib/reanimated1/core/AnimatedStopClock.js +0 -30
- package/lib/reanimated1/core/AnimatedStyle.js +0 -78
- package/lib/reanimated1/core/AnimatedTransform.js +0 -78
- package/lib/reanimated1/core/AnimatedValue.js +0 -38
- package/lib/reanimated1/core/Core.test.js +0 -30
- package/lib/reanimated1/core/InternalAnimatedValue.js +0 -87
- package/lib/reanimated1/core/__mocks__/AnimatedProps.js +0 -86
- package/lib/reanimated1/core/createEventObjectProxyPolyfill.js +0 -44
- package/lib/reanimated1/derived/__mocks__/evaluateOnce.js +0 -14
- package/lib/reanimated1/derived/acc.js +0 -11
- package/lib/reanimated1/derived/color.js +0 -47
- package/lib/reanimated1/derived/diff.js +0 -16
- package/lib/reanimated1/derived/diffClamp.js +0 -11
- package/lib/reanimated1/derived/evaluateOnce.js +0 -35
- package/lib/reanimated1/derived/index.js +0 -8
- package/lib/reanimated1/derived/interpolate.js +0 -152
- package/lib/reanimated1/derived/interpolateColors.js +0 -62
- package/lib/reanimated1/derived/onChange.js +0 -14
- package/lib/reanimated1/derived/useCode.js +0 -41
- package/lib/reanimated1/index.js +0 -53
- package/lib/reanimated1/operators.js +0 -35
- package/lib/reanimated1/useValue.js +0 -10
- package/lib/reanimated1/val.js +0 -3
- package/lib/reanimated2/Bezier.js +0 -126
- package/lib/reanimated2/Colors.js +0 -538
- package/lib/reanimated2/Easing.js +0 -248
- package/lib/reanimated2/NativeMethods.js +0 -94
- package/lib/reanimated2/NativeReanimated/NativeReanimated.js +0 -60
- package/lib/reanimated2/NativeReanimated/index.js +0 -11
- package/lib/reanimated2/PlatformChecker.js +0 -16
- package/lib/reanimated2/PropAdapters.js +0 -55
- package/lib/reanimated2/UpdateProps.js +0 -55
- package/lib/reanimated2/ViewDescriptorsSet.js +0 -75
- package/lib/reanimated2/WorkletEventHandler.js +0 -37
- package/lib/reanimated2/__mocks__/MutableValue.js +0 -13
- package/lib/reanimated2/__mocks__/NativeReanimated.js +0 -20
- package/lib/reanimated2/animation/commonTypes.js +0 -1
- package/lib/reanimated2/animation/decay.js +0 -71
- package/lib/reanimated2/animation/delay.js +0 -64
- package/lib/reanimated2/animation/index.js +0 -8
- package/lib/reanimated2/animation/repeat.js +0 -69
- package/lib/reanimated2/animation/sequence.js +0 -69
- package/lib/reanimated2/animation/spring.js +0 -103
- package/lib/reanimated2/animation/styleAnimation.js +0 -174
- package/lib/reanimated2/animation/timing.js +0 -64
- package/lib/reanimated2/animation/util.js +0 -183
- package/lib/reanimated2/commonTypes.js +0 -8
- package/lib/reanimated2/component/FlatList.js +0 -30
- package/lib/reanimated2/component/Image.js +0 -4
- package/lib/reanimated2/component/ScrollView.js +0 -4
- package/lib/reanimated2/component/Text.js +0 -4
- package/lib/reanimated2/component/View.js +0 -4
- package/lib/reanimated2/core.js +0 -269
- package/lib/reanimated2/frameCallback/FrameCallbackRegistryJS.js +0 -32
- package/lib/reanimated2/frameCallback/FrameCallbackRegistryUI.js +0 -76
- package/lib/reanimated2/globals.d.ts +0 -91
- package/lib/reanimated2/hook/Hooks.js +0 -9
- package/lib/reanimated2/hook/commonTypes.js +0 -1
- package/lib/reanimated2/hook/index.js +0 -12
- package/lib/reanimated2/hook/useAnimatedGestureHandler.js +0 -49
- package/lib/reanimated2/hook/useAnimatedKeyboard.js +0 -31
- package/lib/reanimated2/hook/useAnimatedReaction.js +0 -37
- package/lib/reanimated2/hook/useAnimatedRef.js +0 -25
- package/lib/reanimated2/hook/useAnimatedScrollHandler.js +0 -41
- package/lib/reanimated2/hook/useAnimatedSensor.js +0 -66
- package/lib/reanimated2/hook/useAnimatedStyle.js +0 -393
- package/lib/reanimated2/hook/useDerivedValue.js +0 -36
- package/lib/reanimated2/hook/useFrameCallback.js +0 -23
- package/lib/reanimated2/hook/useScrollViewOffset.js +0 -27
- package/lib/reanimated2/hook/useSharedValue.js +0 -17
- package/lib/reanimated2/hook/utils.js +0 -165
- package/lib/reanimated2/index.js +0 -12
- package/lib/reanimated2/interpolateColor.js +0 -157
- package/lib/reanimated2/interpolation.js +0 -127
- package/lib/reanimated2/jestUtils.js +0 -175
- package/lib/reanimated2/js-reanimated/JSReanimated.js +0 -106
- package/lib/reanimated2/js-reanimated/Mapper.js +0 -43
- package/lib/reanimated2/js-reanimated/MapperRegistry.js +0 -101
- package/lib/reanimated2/js-reanimated/MutableValue.js +0 -29
- package/lib/reanimated2/js-reanimated/commonTypes.js +0 -1
- package/lib/reanimated2/js-reanimated/global.js +0 -36
- package/lib/reanimated2/js-reanimated/index.js +0 -35
- package/lib/reanimated2/layoutReanimation/LayoutAnimationRepository.js +0 -67
- package/lib/reanimated2/layoutReanimation/animationBuilder/BaseAnimationBuilder.js +0 -69
- package/lib/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.js +0 -133
- package/lib/reanimated2/layoutReanimation/animationBuilder/Keyframe.js +0 -194
- package/lib/reanimated2/layoutReanimation/animationBuilder/commonTypes.js +0 -1
- package/lib/reanimated2/layoutReanimation/animationBuilder/index.js +0 -3
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Bounce.js +0 -374
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Default.js +0 -36
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Fade.js +0 -275
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Flip.js +0 -385
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js +0 -136
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.js +0 -81
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Roll.js +0 -120
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Rotate.js +0 -273
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Slide.js +0 -201
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Stretch.js +0 -101
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Zoom.js +0 -457
- package/lib/reanimated2/layoutReanimation/defaultAnimations/index.js +0 -10
- package/lib/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.js +0 -90
- package/lib/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.js +0 -132
- package/lib/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.js +0 -37
- package/lib/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.js +0 -41
- package/lib/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.js +0 -34
- package/lib/reanimated2/layoutReanimation/defaultTransitions/SequencedTransition.js +0 -46
- package/lib/reanimated2/layoutReanimation/defaultTransitions/index.js +0 -6
- package/lib/reanimated2/layoutReanimation/index.js +0 -4
- package/lib/reanimated2/mock.js +0 -75
- package/lib/reanimated2/platform-specific/RNRenderer.js +0 -3
- package/lib/reanimated2/platform-specific/RNRenderer.web.js +0 -3
- package/lib/reanimated2/platform-specific/checkVersion.js +0 -28
- package/lib/reanimated2/platform-specific/checkVersion.web.js +0 -6
- package/lib/reanimated2/utils.js +0 -16
- package/lib/setAndForwardRef.js +0 -19
- package/lib/types/lib/Animated.d.ts +0 -8
- package/lib/types/lib/ConfigHelper.d.ts +0 -12
- package/lib/types/lib/ReanimatedEventEmitter.d.ts +0 -3
- package/lib/types/lib/ReanimatedModule.d.ts +0 -2
- package/lib/types/lib/ReanimatedModule.macos.d.ts +0 -2
- package/lib/types/lib/ReanimatedModule.native.d.ts +0 -2
- package/lib/types/lib/ReanimatedModule.windows.d.ts +0 -2
- package/lib/types/lib/ReanimatedModuleCompat.d.ts +0 -14
- package/lib/types/lib/createAnimatedComponent.d.ts +0 -33
- package/lib/types/lib/index.d.ts +0 -4
- package/lib/types/lib/index.web.d.ts +0 -4
- package/lib/types/lib/reanimated2/Bezier.d.ts +0 -6
- package/lib/types/lib/reanimated2/Colors.d.ts +0 -33
- package/lib/types/lib/reanimated2/Easing.d.ts +0 -172
- package/lib/types/lib/reanimated2/NativeMethods.d.ts +0 -7
- package/lib/types/lib/reanimated2/NativeReanimated/NativeReanimated.d.ts +0 -22
- package/lib/types/lib/reanimated2/NativeReanimated/index.d.ts +0 -3
- package/lib/types/lib/reanimated2/PlatformChecker.d.ts +0 -5
- package/lib/types/lib/reanimated2/PropAdapters.d.ts +0 -4
- package/lib/types/lib/reanimated2/UpdateProps.d.ts +0 -9
- package/lib/types/lib/reanimated2/ViewDescriptorsSet.d.ts +0 -20
- package/lib/types/lib/reanimated2/WorkletEventHandler.d.ts +0 -13
- package/lib/types/lib/reanimated2/__mocks__/MutableValue.d.ts +0 -5
- package/lib/types/lib/reanimated2/__mocks__/NativeReanimated.d.ts +0 -13
- package/lib/types/lib/reanimated2/animation/commonTypes.d.ts +0 -27
- package/lib/types/lib/reanimated2/animation/decay.d.ts +0 -19
- package/lib/types/lib/reanimated2/animation/delay.d.ts +0 -7
- package/lib/types/lib/reanimated2/animation/index.d.ts +0 -9
- package/lib/types/lib/reanimated2/animation/repeat.d.ts +0 -12
- package/lib/types/lib/reanimated2/animation/sequence.d.ts +0 -7
- package/lib/types/lib/reanimated2/animation/spring.d.ts +0 -22
- package/lib/types/lib/reanimated2/animation/styleAnimation.d.ts +0 -7
- package/lib/types/lib/reanimated2/animation/timing.d.ts +0 -21
- package/lib/types/lib/reanimated2/animation/util.d.ts +0 -9
- package/lib/types/lib/reanimated2/commonTypes.d.ts +0 -99
- package/lib/types/lib/reanimated2/component/FlatList.d.ts +0 -9
- package/lib/types/lib/reanimated2/component/Image.d.ts +0 -3
- package/lib/types/lib/reanimated2/component/ScrollView.d.ts +0 -3
- package/lib/types/lib/reanimated2/component/Text.d.ts +0 -3
- package/lib/types/lib/reanimated2/component/View.d.ts +0 -3
- package/lib/types/lib/reanimated2/core.d.ts +0 -24
- package/lib/types/lib/reanimated2/frameCallback/FrameCallbackRegistryJS.d.ts +0 -8
- package/lib/types/lib/reanimated2/frameCallback/FrameCallbackRegistryUI.d.ts +0 -20
- package/lib/types/lib/reanimated2/hook/Hooks.d.ts +0 -5
- package/lib/types/lib/reanimated2/hook/commonTypes.d.ts +0 -14
- package/lib/types/lib/reanimated2/hook/index.d.ts +0 -14
- package/lib/types/lib/reanimated2/hook/useAnimatedGestureHandler.d.ts +0 -35
- package/lib/types/lib/reanimated2/hook/useAnimatedKeyboard.d.ts +0 -2
- package/lib/types/lib/reanimated2/hook/useAnimatedReaction.d.ts +0 -12
- package/lib/types/lib/reanimated2/hook/useAnimatedRef.d.ts +0 -3
- package/lib/types/lib/reanimated2/hook/useAnimatedScrollHandler.d.ts +0 -20
- package/lib/types/lib/reanimated2/hook/useAnimatedSensor.d.ts +0 -18
- package/lib/types/lib/reanimated2/hook/useAnimatedStyle.d.ts +0 -11
- package/lib/types/lib/reanimated2/hook/useDerivedValue.d.ts +0 -4
- package/lib/types/lib/reanimated2/hook/useFrameCallback.d.ts +0 -7
- package/lib/types/lib/reanimated2/hook/useScrollViewOffset.d.ts +0 -4
- package/lib/types/lib/reanimated2/hook/useSharedValue.d.ts +0 -2
- package/lib/types/lib/reanimated2/hook/utils.d.ts +0 -28
- package/lib/types/lib/reanimated2/index.d.ts +0 -12
- package/lib/types/lib/reanimated2/interpolateColor.d.ts +0 -32
- package/lib/types/lib/reanimated2/interpolation.d.ts +0 -14
- package/lib/types/lib/reanimated2/jestUtils.d.ts +0 -12
- package/lib/types/lib/reanimated2/js-reanimated/JSReanimated.d.ts +0 -32
- package/lib/types/lib/reanimated2/js-reanimated/Mapper.d.ts +0 -14
- package/lib/types/lib/reanimated2/js-reanimated/MapperRegistry.d.ts +0 -14
- package/lib/types/lib/reanimated2/js-reanimated/MutableValue.d.ts +0 -14
- package/lib/types/lib/reanimated2/js-reanimated/commonTypes.d.ts +0 -44
- package/lib/types/lib/reanimated2/js-reanimated/global.d.ts +0 -2
- package/lib/types/lib/reanimated2/js-reanimated/index.d.ts +0 -15
- package/lib/types/lib/reanimated2/layoutReanimation/LayoutAnimationRepository.d.ts +0 -1
- package/lib/types/lib/reanimated2/layoutReanimation/animationBuilder/BaseAnimationBuilder.d.ts +0 -22
- package/lib/types/lib/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.d.ts +0 -38
- package/lib/types/lib/reanimated2/layoutReanimation/animationBuilder/Keyframe.d.ts +0 -25
- package/lib/types/lib/reanimated2/layoutReanimation/animationBuilder/commonTypes.d.ts +0 -81
- package/lib/types/lib/reanimated2/layoutReanimation/animationBuilder/index.d.ts +0 -4
- package/lib/types/lib/reanimated2/layoutReanimation/defaultAnimations/Bounce.d.ts +0 -62
- package/lib/types/lib/reanimated2/layoutReanimation/defaultAnimations/Default.d.ts +0 -4
- package/lib/types/lib/reanimated2/layoutReanimation/defaultAnimations/Fade.d.ts +0 -42
- package/lib/types/lib/reanimated2/layoutReanimation/defaultAnimations/Flip.d.ts +0 -50
- package/lib/types/lib/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.d.ts +0 -18
- package/lib/types/lib/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.d.ts +0 -10
- package/lib/types/lib/reanimated2/layoutReanimation/defaultAnimations/Roll.d.ts +0 -18
- package/lib/types/lib/reanimated2/layoutReanimation/defaultAnimations/Rotate.d.ts +0 -34
- package/lib/types/lib/reanimated2/layoutReanimation/defaultAnimations/Slide.d.ts +0 -34
- package/lib/types/lib/reanimated2/layoutReanimation/defaultAnimations/Stretch.d.ts +0 -18
- package/lib/types/lib/reanimated2/layoutReanimation/defaultAnimations/Zoom.d.ts +0 -66
- package/lib/types/lib/reanimated2/layoutReanimation/defaultAnimations/index.d.ts +0 -10
- package/lib/types/lib/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.d.ts +0 -19
- package/lib/types/lib/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.d.ts +0 -13
- package/lib/types/lib/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.d.ts +0 -6
- package/lib/types/lib/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.d.ts +0 -6
- package/lib/types/lib/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.d.ts +0 -7
- package/lib/types/lib/reanimated2/layoutReanimation/defaultTransitions/SequencedTransition.d.ts +0 -9
- package/lib/types/lib/reanimated2/layoutReanimation/defaultTransitions/index.d.ts +0 -6
- package/lib/types/lib/reanimated2/layoutReanimation/index.d.ts +0 -4
- package/lib/types/lib/reanimated2/mock.d.ts +0 -61
- package/lib/types/lib/reanimated2/platform-specific/RNRenderer.d.ts +0 -1
- package/lib/types/lib/reanimated2/platform-specific/RNRenderer.web.d.ts +0 -0
- package/lib/types/lib/reanimated2/platform-specific/checkVersion.d.ts +0 -4
- package/lib/types/lib/reanimated2/platform-specific/checkVersion.web.d.ts +0 -5
- package/lib/types/lib/reanimated2/utils.d.ts +0 -11
- package/lib/types/lib/setAndForwardRef.d.ts +0 -40
|
@@ -1,518 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { findNodeHandle, Platform, StyleSheet } from 'react-native';
|
|
3
|
-
import ReanimatedEventEmitter from './ReanimatedEventEmitter';
|
|
4
|
-
// @ts-ignore JS file
|
|
5
|
-
import AnimatedEvent from './reanimated1/core/AnimatedEvent';
|
|
6
|
-
// @ts-ignore JS file
|
|
7
|
-
import AnimatedNode from './reanimated1/core/AnimatedNode';
|
|
8
|
-
// @ts-ignore JS file
|
|
9
|
-
import AnimatedValue from './reanimated1/core/AnimatedValue';
|
|
10
|
-
// @ts-ignore JS file
|
|
11
|
-
import { createOrReusePropsNode } from './reanimated1/core/AnimatedProps';
|
|
12
|
-
import WorkletEventHandler from './reanimated2/WorkletEventHandler';
|
|
13
|
-
import setAndForwardRef from './setAndForwardRef';
|
|
14
|
-
import './reanimated2/layoutReanimation/LayoutAnimationRepository';
|
|
15
|
-
import invariant from 'invariant';
|
|
16
|
-
import { adaptViewConfig } from './ConfigHelper';
|
|
17
|
-
import { RNRenderer } from './reanimated2/platform-specific/RNRenderer';
|
|
18
|
-
import { makeMutable, runOnUI, enableLayoutAnimations, } from './reanimated2/core';
|
|
19
|
-
import { DefaultEntering, DefaultExiting, DefaultLayout, } from './reanimated2/layoutReanimation/defaultAnimations/Default';
|
|
20
|
-
import { isJest, isChromeDebugger, shouldBeUseWeb, } from './reanimated2/PlatformChecker';
|
|
21
|
-
import { initialUpdaterRun } from './reanimated2/animation';
|
|
22
|
-
const NODE_MAPPING = new Map();
|
|
23
|
-
function listener(data) {
|
|
24
|
-
const component = NODE_MAPPING.get(data.viewTag);
|
|
25
|
-
component && component._updateFromNative(data.props);
|
|
26
|
-
}
|
|
27
|
-
function dummyListener() {
|
|
28
|
-
// empty listener we use to assign to listener properties for which animated
|
|
29
|
-
// event is used.
|
|
30
|
-
}
|
|
31
|
-
function hasAnimatedNodes(value) {
|
|
32
|
-
if (value instanceof AnimatedNode) {
|
|
33
|
-
return true;
|
|
34
|
-
}
|
|
35
|
-
if (Array.isArray(value)) {
|
|
36
|
-
return value.some((item) => hasAnimatedNodes(item));
|
|
37
|
-
}
|
|
38
|
-
if (value && typeof value === 'object') {
|
|
39
|
-
return Object.keys(value).some((key) => hasAnimatedNodes(value[key]));
|
|
40
|
-
}
|
|
41
|
-
return false;
|
|
42
|
-
}
|
|
43
|
-
function flattenArray(array) {
|
|
44
|
-
if (!Array.isArray(array)) {
|
|
45
|
-
return [array];
|
|
46
|
-
}
|
|
47
|
-
const resultArr = [];
|
|
48
|
-
const _flattenArray = (arr) => {
|
|
49
|
-
arr.forEach((item) => {
|
|
50
|
-
if (Array.isArray(item)) {
|
|
51
|
-
_flattenArray(item);
|
|
52
|
-
}
|
|
53
|
-
else {
|
|
54
|
-
resultArr.push(item);
|
|
55
|
-
}
|
|
56
|
-
});
|
|
57
|
-
};
|
|
58
|
-
_flattenArray(array);
|
|
59
|
-
return resultArr;
|
|
60
|
-
}
|
|
61
|
-
function onlyAnimatedStyles(styles) {
|
|
62
|
-
return styles.filter((style) => style === null || style === void 0 ? void 0 : style.viewDescriptors);
|
|
63
|
-
}
|
|
64
|
-
function isSameAnimatedStyle(style1, style2) {
|
|
65
|
-
// We cannot use equality check to compare useAnimatedStyle outputs directly.
|
|
66
|
-
// Instead, we can compare its viewsRefs.
|
|
67
|
-
return (style1 === null || style1 === void 0 ? void 0 : style1.viewsRef) === (style2 === null || style2 === void 0 ? void 0 : style2.viewsRef);
|
|
68
|
-
}
|
|
69
|
-
const isSameAnimatedProps = isSameAnimatedStyle;
|
|
70
|
-
const has = (key, x) => {
|
|
71
|
-
if (typeof x === 'function' || typeof x === 'object') {
|
|
72
|
-
if (x === null || x === undefined) {
|
|
73
|
-
return false;
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
76
|
-
return key in x;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
return false;
|
|
80
|
-
};
|
|
81
|
-
export default function createAnimatedComponent(Component, options) {
|
|
82
|
-
invariant(typeof Component !== 'function' ||
|
|
83
|
-
(Component.prototype && Component.prototype.isReactComponent), '`createAnimatedComponent` does not support stateless functional components; ' +
|
|
84
|
-
'use a class component instead.');
|
|
85
|
-
class AnimatedComponent extends React.Component {
|
|
86
|
-
constructor(props) {
|
|
87
|
-
super(props);
|
|
88
|
-
this._invokeAnimatedPropsCallbackOnMount = false;
|
|
89
|
-
this._styles = null;
|
|
90
|
-
this._viewTag = -1;
|
|
91
|
-
this._isFirstRender = true;
|
|
92
|
-
this.animatedStyle = { value: {} };
|
|
93
|
-
this.initialStyle = {};
|
|
94
|
-
this._component = null;
|
|
95
|
-
// The system is best designed when setNativeProps is implemented. It is
|
|
96
|
-
// able to avoid re-rendering and directly set the attributes that changed.
|
|
97
|
-
// However, setNativeProps can only be implemented on native components
|
|
98
|
-
// If you want to animate a composite component, you need to re-render it.
|
|
99
|
-
// In this case, we have a fallback that uses forceUpdate.
|
|
100
|
-
this._animatedPropsCallback = () => {
|
|
101
|
-
if (this._component == null) {
|
|
102
|
-
// AnimatedProps is created in will-mount because it's used in render.
|
|
103
|
-
// But this callback may be invoked before mount in async mode,
|
|
104
|
-
// In which case we should defer the setNativeProps() call.
|
|
105
|
-
// React may throw away uncommitted work in async mode,
|
|
106
|
-
// So a deferred call won't always be invoked.
|
|
107
|
-
this._invokeAnimatedPropsCallbackOnMount = true;
|
|
108
|
-
}
|
|
109
|
-
else if (typeof this._component.setNativeProps !== 'function') {
|
|
110
|
-
this.forceUpdate();
|
|
111
|
-
}
|
|
112
|
-
else {
|
|
113
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
114
|
-
this._component.setNativeProps(this._propsAnimated.__getValue());
|
|
115
|
-
}
|
|
116
|
-
};
|
|
117
|
-
this._setComponentRef = setAndForwardRef({
|
|
118
|
-
getForwardedRef: () => this.props.forwardedRef,
|
|
119
|
-
setLocalRef: (ref) => {
|
|
120
|
-
// TODO update config
|
|
121
|
-
const tag = findNodeHandle(ref);
|
|
122
|
-
if (!shouldBeUseWeb() &&
|
|
123
|
-
(this.props.layout || this.props.entering || this.props.exiting) &&
|
|
124
|
-
tag != null) {
|
|
125
|
-
enableLayoutAnimations(true, false);
|
|
126
|
-
let layout = this.props.layout ? this.props.layout : DefaultLayout;
|
|
127
|
-
let entering = this.props.entering
|
|
128
|
-
? this.props.entering
|
|
129
|
-
: DefaultEntering;
|
|
130
|
-
let exiting = this.props.exiting
|
|
131
|
-
? this.props.exiting
|
|
132
|
-
: DefaultExiting;
|
|
133
|
-
if (has('build', layout)) {
|
|
134
|
-
layout = layout.build();
|
|
135
|
-
}
|
|
136
|
-
if (has('build', entering)) {
|
|
137
|
-
entering = entering.build();
|
|
138
|
-
}
|
|
139
|
-
if (has('build', exiting)) {
|
|
140
|
-
exiting = exiting.build();
|
|
141
|
-
}
|
|
142
|
-
const config = {
|
|
143
|
-
layout,
|
|
144
|
-
entering,
|
|
145
|
-
exiting,
|
|
146
|
-
sv: this.sv,
|
|
147
|
-
};
|
|
148
|
-
runOnUI(() => {
|
|
149
|
-
'worklet';
|
|
150
|
-
global.LayoutAnimationRepository.registerConfig(tag, config);
|
|
151
|
-
})();
|
|
152
|
-
}
|
|
153
|
-
if (ref !== this._component) {
|
|
154
|
-
this._component = ref;
|
|
155
|
-
}
|
|
156
|
-
},
|
|
157
|
-
});
|
|
158
|
-
this._attachProps(this.props);
|
|
159
|
-
if (isJest()) {
|
|
160
|
-
this.animatedStyle = { value: {} };
|
|
161
|
-
}
|
|
162
|
-
this.sv = makeMutable({});
|
|
163
|
-
}
|
|
164
|
-
componentWillUnmount() {
|
|
165
|
-
this._detachPropUpdater();
|
|
166
|
-
this._propsAnimated && this._propsAnimated.__detach();
|
|
167
|
-
this._detachNativeEvents();
|
|
168
|
-
this._detachStyles();
|
|
169
|
-
this.sv = null;
|
|
170
|
-
}
|
|
171
|
-
componentDidMount() {
|
|
172
|
-
if (this._invokeAnimatedPropsCallbackOnMount) {
|
|
173
|
-
this._invokeAnimatedPropsCallbackOnMount = false;
|
|
174
|
-
this._animatedPropsCallback();
|
|
175
|
-
}
|
|
176
|
-
this._propsAnimated &&
|
|
177
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
178
|
-
this._propsAnimated.setNativeView(this._component);
|
|
179
|
-
this._attachNativeEvents();
|
|
180
|
-
this._attachPropUpdater();
|
|
181
|
-
this._attachAnimatedStyles();
|
|
182
|
-
}
|
|
183
|
-
_getEventViewRef() {
|
|
184
|
-
var _a;
|
|
185
|
-
// Make sure to get the scrollable node for components that implement
|
|
186
|
-
// `ScrollResponder.Mixin`.
|
|
187
|
-
return ((_a = this._component) === null || _a === void 0 ? void 0 : _a.getScrollableNode) ? this._component.getScrollableNode()
|
|
188
|
-
: this._component;
|
|
189
|
-
}
|
|
190
|
-
_attachNativeEvents() {
|
|
191
|
-
const node = this._getEventViewRef();
|
|
192
|
-
let viewTag = findNodeHandle((options === null || options === void 0 ? void 0 : options.setNativeProps) ? this : node);
|
|
193
|
-
const componentName = Component.displayName || Component.name;
|
|
194
|
-
if ((componentName === null || componentName === void 0 ? void 0 : componentName.endsWith('FlashList')) && this._component) {
|
|
195
|
-
// @ts-ignore it's FlashList specific: https://github.com/Shopify/flash-list/blob/218f314e63806b4fe926741ef73f8b9cd6ebc7eb/src/FlashList.tsx#L815
|
|
196
|
-
viewTag = findNodeHandle(this._component.getScrollableNode());
|
|
197
|
-
}
|
|
198
|
-
for (const key in this.props) {
|
|
199
|
-
const prop = this.props[key];
|
|
200
|
-
if (prop instanceof AnimatedEvent) {
|
|
201
|
-
prop.attachEvent(node, key);
|
|
202
|
-
}
|
|
203
|
-
else if (has('current', prop) &&
|
|
204
|
-
prop.current instanceof WorkletEventHandler) {
|
|
205
|
-
prop.current.registerForEvents(viewTag, key);
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
_detachNativeEvents() {
|
|
210
|
-
const node = this._getEventViewRef();
|
|
211
|
-
for (const key in this.props) {
|
|
212
|
-
const prop = this.props[key];
|
|
213
|
-
if (prop instanceof AnimatedEvent) {
|
|
214
|
-
prop.detachEvent(node, key);
|
|
215
|
-
}
|
|
216
|
-
else if (has('current', prop) &&
|
|
217
|
-
prop.current instanceof WorkletEventHandler) {
|
|
218
|
-
prop.current.unregisterFromEvents();
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
_detachStyles() {
|
|
223
|
-
var _a;
|
|
224
|
-
if (Platform.OS === 'web' && this._styles !== null) {
|
|
225
|
-
for (const style of this._styles) {
|
|
226
|
-
if (style === null || style === void 0 ? void 0 : style.viewsRef) {
|
|
227
|
-
style.viewsRef.remove(this);
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
else if (this._viewTag !== -1 && this._styles !== null) {
|
|
232
|
-
for (const style of this._styles) {
|
|
233
|
-
style.viewDescriptors.remove(this._viewTag);
|
|
234
|
-
}
|
|
235
|
-
if ((_a = this.props.animatedProps) === null || _a === void 0 ? void 0 : _a.viewDescriptors) {
|
|
236
|
-
this.props.animatedProps.viewDescriptors.remove(this._viewTag);
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
_reattachNativeEvents(prevProps) {
|
|
241
|
-
const node = this._getEventViewRef();
|
|
242
|
-
const attached = new Set();
|
|
243
|
-
const nextEvts = new Set();
|
|
244
|
-
let viewTag;
|
|
245
|
-
for (const key in this.props) {
|
|
246
|
-
const prop = this.props[key];
|
|
247
|
-
if (prop instanceof AnimatedEvent) {
|
|
248
|
-
nextEvts.add(prop.__nodeID);
|
|
249
|
-
}
|
|
250
|
-
else if (has('current', prop) &&
|
|
251
|
-
prop.current instanceof WorkletEventHandler) {
|
|
252
|
-
if (viewTag === undefined) {
|
|
253
|
-
viewTag = prop.current.viewTag;
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
for (const key in prevProps) {
|
|
258
|
-
const prop = this.props[key];
|
|
259
|
-
if (prop instanceof AnimatedEvent) {
|
|
260
|
-
if (!nextEvts.has(prop.__nodeID)) {
|
|
261
|
-
// event was in prev props but not in current props, we detach
|
|
262
|
-
prop.detachEvent(node, key);
|
|
263
|
-
}
|
|
264
|
-
else {
|
|
265
|
-
// event was in prev and is still in current props
|
|
266
|
-
attached.add(prop.__nodeID);
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
else if (has('current', prop) &&
|
|
270
|
-
prop.current instanceof WorkletEventHandler &&
|
|
271
|
-
prop.current.reattachNeeded) {
|
|
272
|
-
prop.current.unregisterFromEvents();
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
for (const key in this.props) {
|
|
276
|
-
const prop = this.props[key];
|
|
277
|
-
if (prop instanceof AnimatedEvent &&
|
|
278
|
-
!attached.has(prop.__nodeID)) {
|
|
279
|
-
// not yet attached
|
|
280
|
-
prop.attachEvent(node, key);
|
|
281
|
-
}
|
|
282
|
-
else if (has('current', prop) &&
|
|
283
|
-
prop.current instanceof WorkletEventHandler &&
|
|
284
|
-
prop.current.reattachNeeded) {
|
|
285
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
286
|
-
prop.current.registerForEvents(viewTag, key);
|
|
287
|
-
prop.current.reattachNeeded = false;
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
_attachProps(nextProps) {
|
|
292
|
-
const oldPropsAnimated = this._propsAnimated;
|
|
293
|
-
this._propsAnimated = createOrReusePropsNode(nextProps, this._animatedPropsCallback, oldPropsAnimated);
|
|
294
|
-
// If prop node has been reused we don't need to call into "__detach"
|
|
295
|
-
if (oldPropsAnimated !== this._propsAnimated) {
|
|
296
|
-
// When you call detach, it removes the element from the parent list
|
|
297
|
-
// of children. If it goes to 0, then the parent also detaches itself
|
|
298
|
-
// and so on.
|
|
299
|
-
// An optimization is to attach the new elements and THEN detach the old
|
|
300
|
-
// ones instead of detaching and THEN attaching.
|
|
301
|
-
// This way the intermediate state isn't to go to 0 and trigger
|
|
302
|
-
// this expensive recursive detaching to then re-attach everything on
|
|
303
|
-
// the very next operation.
|
|
304
|
-
oldPropsAnimated && oldPropsAnimated.__detach();
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
_updateFromNative(props) {
|
|
308
|
-
var _a, _b;
|
|
309
|
-
if (options === null || options === void 0 ? void 0 : options.setNativeProps) {
|
|
310
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
311
|
-
options.setNativeProps(this._component, props);
|
|
312
|
-
}
|
|
313
|
-
else {
|
|
314
|
-
// eslint-disable-next-line no-unused-expressions
|
|
315
|
-
(_b = (_a = this._component) === null || _a === void 0 ? void 0 : _a.setNativeProps) === null || _b === void 0 ? void 0 : _b.call(_a, props);
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
_attachPropUpdater() {
|
|
319
|
-
const viewTag = findNodeHandle(this);
|
|
320
|
-
NODE_MAPPING.set(viewTag, this);
|
|
321
|
-
if (NODE_MAPPING.size === 1) {
|
|
322
|
-
ReanimatedEventEmitter.addListener('onReanimatedPropsChange', listener);
|
|
323
|
-
}
|
|
324
|
-
}
|
|
325
|
-
_attachAnimatedStyles() {
|
|
326
|
-
var _a, _b, _c;
|
|
327
|
-
const styles = this.props.style
|
|
328
|
-
? onlyAnimatedStyles(flattenArray(this.props.style))
|
|
329
|
-
: [];
|
|
330
|
-
const prevStyles = this._styles;
|
|
331
|
-
this._styles = styles;
|
|
332
|
-
const prevAnimatedProps = this._animatedProps;
|
|
333
|
-
this._animatedProps = this.props.animatedProps;
|
|
334
|
-
let viewTag;
|
|
335
|
-
let viewName;
|
|
336
|
-
if (Platform.OS === 'web') {
|
|
337
|
-
viewTag = findNodeHandle(this);
|
|
338
|
-
viewName = null;
|
|
339
|
-
}
|
|
340
|
-
else {
|
|
341
|
-
// 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
|
|
342
|
-
const hostInstance = RNRenderer.findHostInstance_DEPRECATED(this);
|
|
343
|
-
if (!hostInstance) {
|
|
344
|
-
throw new Error('Cannot find host instance for this component. Maybe it renders nothing?');
|
|
345
|
-
}
|
|
346
|
-
// 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
|
|
347
|
-
viewTag = hostInstance === null || hostInstance === void 0 ? void 0 : hostInstance._nativeTag;
|
|
348
|
-
/**
|
|
349
|
-
* RN uses viewConfig for components for storing different properties of the component(example: https://github.com/facebook/react-native/blob/master/Libraries/Components/ScrollView/ScrollViewViewConfig.js#L16).
|
|
350
|
-
* The name we're looking for is in the field named uiViewClassName.
|
|
351
|
-
*/
|
|
352
|
-
viewName = (_a = hostInstance === null || hostInstance === void 0 ? void 0 : hostInstance.viewConfig) === null || _a === void 0 ? void 0 : _a.uiViewClassName;
|
|
353
|
-
// update UI props whitelist for this view
|
|
354
|
-
const hasReanimated2Props = ((_b = this.props.animatedProps) === null || _b === void 0 ? void 0 : _b.viewDescriptors) || styles.length;
|
|
355
|
-
if (hasReanimated2Props && (hostInstance === null || hostInstance === void 0 ? void 0 : hostInstance.viewConfig)) {
|
|
356
|
-
adaptViewConfig(hostInstance.viewConfig);
|
|
357
|
-
}
|
|
358
|
-
}
|
|
359
|
-
this._viewTag = viewTag;
|
|
360
|
-
// remove old styles
|
|
361
|
-
if (prevStyles) {
|
|
362
|
-
// in most of the cases, views have only a single animated style and it remains unchanged
|
|
363
|
-
const hasOneSameStyle = styles.length === 1 &&
|
|
364
|
-
prevStyles.length === 1 &&
|
|
365
|
-
isSameAnimatedStyle(styles[0], prevStyles[0]);
|
|
366
|
-
if (!hasOneSameStyle) {
|
|
367
|
-
// otherwise, remove each style that is not present in new styles
|
|
368
|
-
for (const prevStyle of prevStyles) {
|
|
369
|
-
const isPresent = styles.some((style) => isSameAnimatedStyle(style, prevStyle));
|
|
370
|
-
if (!isPresent) {
|
|
371
|
-
prevStyle.viewDescriptors.remove(viewTag);
|
|
372
|
-
}
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
}
|
|
376
|
-
styles.forEach((style) => {
|
|
377
|
-
style.viewDescriptors.add({ tag: viewTag, name: viewName });
|
|
378
|
-
if (isJest()) {
|
|
379
|
-
/**
|
|
380
|
-
* We need to connect Jest's TestObject instance whose contains just props object
|
|
381
|
-
* with the updateProps() function where we update the properties of the component.
|
|
382
|
-
* We can't update props object directly because TestObject contains a copy of props - look at render function:
|
|
383
|
-
* const props = this._filterNonAnimatedProps(this.props);
|
|
384
|
-
*/
|
|
385
|
-
this.animatedStyle.value = Object.assign(Object.assign({}, this.animatedStyle.value), style.initial.value);
|
|
386
|
-
style.animatedStyle.current = this.animatedStyle;
|
|
387
|
-
}
|
|
388
|
-
});
|
|
389
|
-
// detach old animatedProps
|
|
390
|
-
if (prevAnimatedProps &&
|
|
391
|
-
!isSameAnimatedProps(prevAnimatedProps, this.props.animatedProps)) {
|
|
392
|
-
prevAnimatedProps.viewDescriptors.remove(viewTag);
|
|
393
|
-
}
|
|
394
|
-
// attach animatedProps property
|
|
395
|
-
if ((_c = this.props.animatedProps) === null || _c === void 0 ? void 0 : _c.viewDescriptors) {
|
|
396
|
-
this.props.animatedProps.viewDescriptors.add({
|
|
397
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
398
|
-
tag: viewTag,
|
|
399
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
400
|
-
name: viewName,
|
|
401
|
-
});
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
_detachPropUpdater() {
|
|
405
|
-
const viewTag = findNodeHandle(this);
|
|
406
|
-
NODE_MAPPING.delete(viewTag);
|
|
407
|
-
if (NODE_MAPPING.size === 0) {
|
|
408
|
-
ReanimatedEventEmitter.removeAllListeners('onReanimatedPropsChange');
|
|
409
|
-
}
|
|
410
|
-
}
|
|
411
|
-
componentDidUpdate(prevProps) {
|
|
412
|
-
this._attachProps(this.props);
|
|
413
|
-
this._reattachNativeEvents(prevProps);
|
|
414
|
-
this._propsAnimated &&
|
|
415
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
416
|
-
this._propsAnimated.setNativeView(this._component);
|
|
417
|
-
this._attachAnimatedStyles();
|
|
418
|
-
}
|
|
419
|
-
_filterNonAnimatedStyle(inputStyle) {
|
|
420
|
-
const style = {};
|
|
421
|
-
for (const key in inputStyle) {
|
|
422
|
-
const value = inputStyle[key];
|
|
423
|
-
if (!hasAnimatedNodes(value)) {
|
|
424
|
-
style[key] = value;
|
|
425
|
-
}
|
|
426
|
-
else if (value instanceof AnimatedValue) {
|
|
427
|
-
// if any style in animated component is set directly to the `Value` we set those styles to the first value of `Value` node in order
|
|
428
|
-
// to avoid flash of default styles when `Value` is being asynchrounously sent via bridge and initialized in the native side.
|
|
429
|
-
style[key] = value._startingValue;
|
|
430
|
-
}
|
|
431
|
-
}
|
|
432
|
-
return style;
|
|
433
|
-
}
|
|
434
|
-
_filterNonAnimatedProps(inputProps) {
|
|
435
|
-
const props = {};
|
|
436
|
-
for (const key in inputProps) {
|
|
437
|
-
const value = inputProps[key];
|
|
438
|
-
if (key === 'style') {
|
|
439
|
-
const styleProp = inputProps.style;
|
|
440
|
-
const styles = flattenArray(styleProp !== null && styleProp !== void 0 ? styleProp : []);
|
|
441
|
-
const processedStyle = styles.map((style) => {
|
|
442
|
-
if (style && style.viewDescriptors) {
|
|
443
|
-
// this is how we recognize styles returned by useAnimatedStyle
|
|
444
|
-
style.viewsRef.add(this);
|
|
445
|
-
if (this._isFirstRender) {
|
|
446
|
-
this.initialStyle = Object.assign(Object.assign({}, style.initial.value), initialUpdaterRun(style.initial.updater));
|
|
447
|
-
}
|
|
448
|
-
return this.initialStyle;
|
|
449
|
-
}
|
|
450
|
-
else {
|
|
451
|
-
return style;
|
|
452
|
-
}
|
|
453
|
-
});
|
|
454
|
-
props[key] = this._filterNonAnimatedStyle(StyleSheet.flatten(processedStyle));
|
|
455
|
-
}
|
|
456
|
-
else if (key === 'animatedProps') {
|
|
457
|
-
const animatedProp = inputProps.animatedProps;
|
|
458
|
-
if (animatedProp.initial !== undefined) {
|
|
459
|
-
Object.keys(animatedProp.initial.value).forEach((key) => {
|
|
460
|
-
var _a, _b;
|
|
461
|
-
props[key] = (_a = animatedProp.initial) === null || _a === void 0 ? void 0 : _a.value[key];
|
|
462
|
-
(_b = animatedProp.viewsRef) === null || _b === void 0 ? void 0 : _b.add(this);
|
|
463
|
-
});
|
|
464
|
-
}
|
|
465
|
-
}
|
|
466
|
-
else if (value instanceof AnimatedEvent) {
|
|
467
|
-
// we cannot filter out event listeners completely as some components
|
|
468
|
-
// rely on having a callback registered in order to generate events
|
|
469
|
-
// alltogether. Therefore we provide a dummy callback here to allow
|
|
470
|
-
// native event dispatcher to hijack events.
|
|
471
|
-
props[key] = dummyListener;
|
|
472
|
-
}
|
|
473
|
-
else if (has('current', value) &&
|
|
474
|
-
value.current instanceof WorkletEventHandler) {
|
|
475
|
-
if (value.current.eventNames.length > 0) {
|
|
476
|
-
value.current.eventNames.forEach((eventName) => {
|
|
477
|
-
props[eventName] = has('listeners', value.current)
|
|
478
|
-
? value.current.listeners[eventName]
|
|
479
|
-
: dummyListener;
|
|
480
|
-
});
|
|
481
|
-
}
|
|
482
|
-
else {
|
|
483
|
-
props[key] = dummyListener;
|
|
484
|
-
}
|
|
485
|
-
}
|
|
486
|
-
else if (!(value instanceof AnimatedNode)) {
|
|
487
|
-
if (key !== 'onGestureHandlerStateChange' || !isChromeDebugger()) {
|
|
488
|
-
props[key] = value;
|
|
489
|
-
}
|
|
490
|
-
}
|
|
491
|
-
else if (value instanceof AnimatedValue) {
|
|
492
|
-
// if any prop in animated component is set directly to the `Value` we set those props to the first value of `Value` node in order
|
|
493
|
-
// to avoid default values for a short moment when `Value` is being asynchrounously sent via bridge and initialized in the native side.
|
|
494
|
-
props[key] = value._startingValue;
|
|
495
|
-
}
|
|
496
|
-
}
|
|
497
|
-
return props;
|
|
498
|
-
}
|
|
499
|
-
render() {
|
|
500
|
-
const props = this._filterNonAnimatedProps(this.props);
|
|
501
|
-
if (isJest()) {
|
|
502
|
-
props.animatedStyle = this.animatedStyle;
|
|
503
|
-
}
|
|
504
|
-
if (this._isFirstRender) {
|
|
505
|
-
this._isFirstRender = false;
|
|
506
|
-
}
|
|
507
|
-
const platformProps = Platform.select({
|
|
508
|
-
web: {},
|
|
509
|
-
default: { collapsable: false },
|
|
510
|
-
});
|
|
511
|
-
return (<Component {...props} ref={this._setComponentRef} {...platformProps}/>);
|
|
512
|
-
}
|
|
513
|
-
}
|
|
514
|
-
AnimatedComponent.displayName = `AnimatedComponent(${Component.displayName || Component.name || 'Component'})`;
|
|
515
|
-
return React.forwardRef((props, ref) => {
|
|
516
|
-
return (<AnimatedComponent {...props} {...(ref === null ? null : { forwardedRef: ref })}/>);
|
|
517
|
-
});
|
|
518
|
-
}
|
package/lib/index.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import * as Animated from './Animated';
|
|
2
|
-
import webGlobalIsInitialized from './reanimated2/js-reanimated/global';
|
|
3
|
-
if (!webGlobalIsInitialized) {
|
|
4
|
-
/*
|
|
5
|
-
`webGlobalIsInitialized` should always be `true`,
|
|
6
|
-
but we need to use `webGlobalIsInitialized` somewhere to ensure function execution,
|
|
7
|
-
in another way, the bundler can remove unused variables.
|
|
8
|
-
*/
|
|
9
|
-
console.error('[Reanimated] Unable to initialize global objects for web.');
|
|
10
|
-
}
|
|
11
|
-
// @ts-ignore backward compatibility with treeshaking
|
|
12
|
-
export * from './reanimated1';
|
|
13
|
-
export * from './reanimated2';
|
|
14
|
-
export default Animated;
|
package/lib/index.web.js
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
// tree-shaken side effects
|
|
2
|
-
import './reanimated2/js-reanimated/global';
|
|
3
|
-
// @ts-ignore backward compatibility with treeshaking
|
|
4
|
-
export * from './reanimated1';
|
|
5
|
-
export * from './reanimated2';
|
|
6
|
-
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/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
|