react-native-reanimated 2.3.0-alpha.1 → 2.3.0-beta.2
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/LayoutAnimations/LayoutAnimationsProxy.cpp +15 -8
- package/Common/cpp/NativeModules/NativeReanimatedModule.cpp +170 -166
- package/Common/cpp/NativeModules/NativeReanimatedModuleSpec.cpp +36 -34
- package/Common/cpp/Registries/EventHandlerRegistry.cpp +13 -6
- package/Common/cpp/Registries/MapperRegistry.cpp +19 -15
- package/Common/cpp/Registries/WorkletsCache.cpp +19 -9
- package/Common/cpp/SharedItems/FrozenObject.cpp +19 -8
- package/Common/cpp/SharedItems/MutableValue.cpp +38 -25
- package/Common/cpp/SharedItems/MutableValueSetterProxy.cpp +11 -7
- package/Common/cpp/SharedItems/RemoteObject.cpp +9 -5
- package/Common/cpp/SharedItems/ShareableValue.cpp +216 -143
- package/Common/cpp/Tools/JSIStoreValueUser.cpp +36 -24
- package/Common/cpp/Tools/Mapper.cpp +41 -29
- package/Common/cpp/Tools/RuntimeDecorator.cpp +103 -84
- package/Common/cpp/Tools/Scheduler.cpp +14 -6
- package/Common/cpp/Tools/WorkletEventHandler.cpp +1 -1
- package/Common/cpp/headers/LayoutAnimations/LayoutAnimationsProxy.h +12 -11
- package/Common/cpp/headers/NativeModules/NativeReanimatedModule.h +45 -34
- package/Common/cpp/headers/NativeModules/NativeReanimatedModuleSpec.h +28 -16
- package/Common/cpp/headers/Registries/EventHandlerRegistry.h +14 -8
- package/Common/cpp/headers/Registries/MapperRegistry.h +4 -4
- package/Common/cpp/headers/Registries/WorkletsCache.h +9 -7
- package/Common/cpp/headers/SharedItems/FrozenObject.h +15 -11
- package/Common/cpp/headers/SharedItems/HostFunctionHandler.h +6 -4
- package/Common/cpp/headers/SharedItems/MutableValue.h +21 -12
- package/Common/cpp/headers/SharedItems/MutableValueSetterProxy.h +10 -7
- package/Common/cpp/headers/SharedItems/RemoteObject.h +16 -8
- package/Common/cpp/headers/SharedItems/RuntimeManager.h +39 -21
- package/Common/cpp/headers/SharedItems/ShareableValue.h +31 -27
- package/Common/cpp/headers/SharedItems/SharedParent.h +7 -4
- package/Common/cpp/headers/SharedItems/ValueWrapper.h +80 -61
- package/Common/cpp/headers/SpecTools/ErrorHandler.h +17 -19
- package/Common/cpp/headers/Tools/JSIStoreValueUser.h +18 -13
- package/Common/cpp/headers/Tools/Mapper.h +24 -18
- package/Common/cpp/headers/Tools/PlatformDepMethodsHolder.h +12 -7
- package/Common/cpp/headers/Tools/ReanimatedHiddenHeaders.h +7 -7
- package/Common/cpp/headers/Tools/RuntimeDecorator.h +29 -23
- package/Common/cpp/headers/Tools/Scheduler.h +28 -33
- package/Common/cpp/headers/Tools/WorkletEventHandler.h +9 -7
- package/Common/cpp/hidden_headers/Logger.h +14 -14
- package/Common/cpp/hidden_headers/LoggerInterface.h +8 -9
- package/Common/cpp/hidden_headers/SpeedChecker.h +7 -8
- package/README.md +1 -1
- package/RNReanimated.podspec +4 -4
- package/android/build.gradle +80 -3
- package/android/react-native-reanimated-63-hermes.aar +0 -0
- package/android/react-native-reanimated-63-jsc.aar +0 -0
- package/android/react-native-reanimated-64-hermes.aar +0 -0
- package/android/react-native-reanimated-64-jsc.aar +0 -0
- package/android/react-native-reanimated-65-hermes.aar +0 -0
- package/android/react-native-reanimated-65-jsc.aar +0 -0
- package/android/react-native-reanimated-66-hermes.aar +0 -0
- package/android/react-native-reanimated-66-jsc.aar +0 -0
- package/ios/LayoutReanimation/REAAnimationsManager.h +19 -10
- package/ios/LayoutReanimation/REAAnimationsManager.m +195 -200
- package/ios/LayoutReanimation/REASnapshot.h +13 -0
- package/ios/LayoutReanimation/REASnapshot.m +29 -0
- package/ios/LayoutReanimation/REAUIManager.h +16 -0
- package/ios/LayoutReanimation/REAUIManager.mm +348 -0
- package/ios/Nodes/REAAlwaysNode.m +14 -15
- package/ios/Nodes/REABezierNode.m +8 -7
- package/ios/Nodes/REABlockNode.m +1 -1
- package/ios/Nodes/REACallFuncNode.h +0 -1
- package/ios/Nodes/REACallFuncNode.m +10 -8
- package/ios/Nodes/REAClockNodes.m +22 -20
- package/ios/Nodes/REAConcatNode.h +0 -1
- package/ios/Nodes/REAConcatNode.m +2 -2
- package/ios/Nodes/REACondNode.m +7 -5
- package/ios/Nodes/READebugNode.m +5 -4
- package/ios/Nodes/REAEventNode.m +1 -1
- package/ios/Nodes/REAFunctionNode.h +0 -1
- package/ios/Nodes/REAFunctionNode.m +2 -2
- package/ios/Nodes/REAJSCallNode.m +4 -5
- package/ios/Nodes/REANode.h +3 -4
- package/ios/Nodes/REANode.m +9 -11
- package/ios/Nodes/REAOperatorNode.m +68 -67
- package/ios/Nodes/REAParamNode.h +1 -3
- package/ios/Nodes/REAParamNode.m +15 -17
- package/ios/Nodes/REAPropsNode.h +1 -3
- package/ios/Nodes/REAPropsNode.m +19 -22
- package/ios/Nodes/REASetNode.h +0 -1
- package/ios/Nodes/REASetNode.m +7 -5
- package/ios/Nodes/REAStyleNode.h +0 -1
- package/ios/Nodes/REAStyleNode.m +2 -4
- package/ios/Nodes/REATransformNode.h +0 -1
- package/ios/Nodes/REATransformNode.m +3 -5
- package/ios/Nodes/REAValueNode.m +5 -7
- package/ios/REAEventDispatcher.m +3 -3
- package/ios/REAModule.h +0 -2
- package/ios/REAModule.m +29 -40
- package/ios/REANodesManager.h +11 -19
- package/ios/REANodesManager.m +105 -130
- package/ios/REAUtils.h +5 -3
- package/ios/Transitioning/RCTConvert+REATransition.m +45 -29
- package/ios/Transitioning/REAAllTransitions.h +2 -2
- package/ios/Transitioning/REAAllTransitions.m +14 -25
- package/ios/Transitioning/REATransition.h +8 -7
- package/ios/Transitioning/REATransition.m +19 -16
- package/ios/Transitioning/REATransitionAnimation.h +1 -1
- package/ios/Transitioning/REATransitionAnimation.m +2 -3
- package/ios/Transitioning/REATransitionManager.m +3 -3
- package/ios/native/NativeMethods.h +15 -5
- package/ios/native/NativeProxy.h +4 -3
- package/ios/native/NativeProxy.mm +19 -5
- package/ios/native/REAIOSErrorHandler.h +13 -10
- package/ios/native/REAIOSLogger.h +8 -8
- package/ios/native/REAIOSScheduler.h +5 -5
- package/ios/native/REAIOSScheduler.mm +7 -5
- package/ios/native/REAInitializer.h +37 -0
- package/ios/native/REAInitializer.mm +63 -0
- package/ios/native/UIResponder+Reanimated.mm +9 -48
- package/lib/ConfigHelper.js +1 -0
- package/lib/ReanimatedModule.native.js +10 -2
- package/lib/createAnimatedComponent.js +64 -30
- package/lib/reanimated1/core/AnimatedAlways.js +1 -1
- package/lib/reanimated1/core/AnimatedBezier.js +1 -1
- package/lib/reanimated1/core/AnimatedBlock.js +1 -1
- package/lib/reanimated1/core/AnimatedCall.js +1 -1
- package/lib/reanimated1/core/AnimatedCallFunc.js +1 -1
- package/lib/reanimated1/core/AnimatedConcat.js +1 -1
- package/lib/reanimated1/core/AnimatedCond.js +1 -1
- package/lib/reanimated1/core/AnimatedDebug.js +1 -1
- package/lib/reanimated1/core/AnimatedEvent.js +1 -1
- package/lib/reanimated1/core/AnimatedFunction.js +1 -1
- package/lib/reanimated1/core/AnimatedOperator.js +1 -1
- package/lib/reanimated1/core/AnimatedParam.js +1 -1
- package/lib/reanimated1/core/AnimatedProps.js +2 -2
- package/lib/reanimated1/core/AnimatedSet.js +1 -1
- package/lib/reanimated1/core/AnimatedStartClock.js +1 -1
- package/lib/reanimated1/core/AnimatedStopClock.js +1 -1
- package/lib/reanimated1/core/AnimatedStyle.js +1 -1
- package/lib/reanimated1/core/AnimatedTransform.js +1 -1
- package/lib/reanimated1/core/Core.test.js +30 -0
- package/lib/reanimated1/core/InternalAnimatedValue.js +1 -1
- package/lib/reanimated1/core/__mocks__/AnimatedProps.js +1 -1
- package/lib/reanimated1/derived/interpolate.js +1 -1
- package/lib/reanimated2/Colors.js +16 -12
- package/lib/reanimated2/NativeMethods.js +3 -14
- package/lib/reanimated2/{NativeReanimated.native.js → NativeReanimated/NativeReanimated.js} +19 -24
- package/lib/reanimated2/NativeReanimated/index.js +15 -0
- package/lib/reanimated2/PlatformChecker.js +16 -0
- package/lib/reanimated2/PropAdapters.js +14 -4
- package/lib/reanimated2/UpdateProps.js +14 -11
- package/lib/reanimated2/ViewDescriptorsSet.js +73 -0
- package/lib/reanimated2/WorkletEventHandler.js +15 -13
- package/lib/reanimated2/animation/commonTypes.js +1 -0
- package/lib/reanimated2/animation/decay.js +71 -0
- package/lib/reanimated2/animation/delay.js +64 -0
- package/lib/reanimated2/animation/index.js +8 -0
- package/lib/reanimated2/animation/repeat.js +69 -0
- package/lib/reanimated2/animation/sequence.js +72 -0
- package/lib/reanimated2/animation/spring.js +101 -0
- package/lib/reanimated2/animation/styleAnimation.js +166 -0
- package/lib/reanimated2/animation/timing.js +64 -0
- package/lib/reanimated2/animation/util.js +157 -0
- package/lib/reanimated2/commonTypes.js +1 -0
- package/lib/reanimated2/core.js +35 -39
- package/lib/reanimated2/globals.d.ts +47 -1
- package/lib/reanimated2/hook/Hooks.js +9 -0
- package/lib/reanimated2/hook/commonTypes.js +1 -0
- package/lib/reanimated2/hook/index.js +8 -0
- package/lib/reanimated2/hook/useAnimatedGestureHandler.js +50 -0
- package/lib/reanimated2/hook/useAnimatedReaction.js +37 -0
- package/lib/reanimated2/hook/useAnimatedRef.js +25 -0
- package/lib/reanimated2/hook/useAnimatedScrollHandler.js +41 -0
- package/lib/reanimated2/hook/useAnimatedStyle.js +376 -0
- package/lib/reanimated2/hook/useDerivedValue.js +36 -0
- package/lib/reanimated2/hook/useSharedValue.js +17 -0
- package/lib/reanimated2/hook/utils.js +175 -0
- package/lib/reanimated2/index.js +3 -2
- package/lib/reanimated2/interpolation.js +95 -86
- package/lib/reanimated2/jestUtils.js +0 -12
- package/lib/reanimated2/js-reanimated/JSReanimated.js +9 -10
- package/lib/reanimated2/js-reanimated/index.js +57 -1
- package/lib/reanimated2/layoutReanimation/LayoutAnimationRepository.js +58 -0
- package/lib/reanimated2/layoutReanimation/animationBuilder/BaseAnimationBuilder.js +69 -0
- package/lib/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.js +125 -0
- package/lib/reanimated2/layoutReanimation/animationBuilder/Keyframe.js +193 -0
- package/lib/reanimated2/layoutReanimation/animationBuilder/commonTypes.js +1 -0
- package/lib/reanimated2/layoutReanimation/animationBuilder/index.js +3 -0
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Bounce.js +325 -207
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Default.js +36 -0
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Fade.js +235 -187
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Flip.js +327 -269
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js +146 -0
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.js +85 -0
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Roll.js +119 -0
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Rotate.js +289 -0
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Slide.js +159 -121
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Stretch.js +83 -65
- package/lib/reanimated2/layoutReanimation/defaultAnimations/Zoom.js +371 -277
- package/lib/reanimated2/layoutReanimation/defaultAnimations/index.js +4 -0
- package/lib/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.js +78 -0
- package/lib/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.js +128 -0
- package/lib/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.js +37 -0
- package/lib/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.js +41 -0
- package/lib/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.js +34 -0
- package/lib/reanimated2/layoutReanimation/defaultTransitions/SequencedTransition.js +46 -0
- package/lib/reanimated2/layoutReanimation/defaultTransitions/index.js +6 -0
- package/lib/reanimated2/layoutReanimation/index.js +3 -2
- package/lib/reanimated2/platform-specific/RNRenderer.web.js +2 -0
- package/lib/reanimated2/utils.js +9 -0
- package/libSo/fbjni/jni/arm64-v8a/libfbjni.so +0 -0
- package/libSo/fbjni/jni/armeabi-v7a/libfbjni.so +0 -0
- package/libSo/fbjni/jni/x86/libfbjni.so +0 -0
- package/libSo/fbjni/jni/x86_64/libfbjni.so +0 -0
- package/package.json +21 -10
- package/plugin.js +244 -85
- package/react-native-reanimated.d.ts +531 -453
- package/src/ConfigHelper.js +1 -0
- package/src/ReanimatedModule.native.js +10 -2
- package/src/createAnimatedComponent.js +64 -30
- package/src/reanimated1/core/AnimatedAlways.js +1 -1
- package/src/reanimated1/core/AnimatedBezier.js +1 -1
- package/src/reanimated1/core/AnimatedBlock.js +1 -1
- package/src/reanimated1/core/AnimatedCall.js +1 -1
- package/src/reanimated1/core/AnimatedCallFunc.js +1 -1
- package/src/reanimated1/core/AnimatedConcat.js +1 -1
- package/src/reanimated1/core/AnimatedCond.js +1 -1
- package/src/reanimated1/core/AnimatedDebug.js +1 -1
- package/src/reanimated1/core/AnimatedEvent.js +1 -1
- package/src/reanimated1/core/AnimatedFunction.js +1 -1
- package/src/reanimated1/core/AnimatedOperator.js +1 -1
- package/src/reanimated1/core/AnimatedParam.js +1 -1
- package/src/reanimated1/core/AnimatedProps.js +2 -2
- package/src/reanimated1/core/AnimatedSet.js +1 -1
- package/src/reanimated1/core/AnimatedStartClock.js +1 -1
- package/src/reanimated1/core/AnimatedStopClock.js +1 -1
- package/src/reanimated1/core/AnimatedStyle.js +1 -1
- package/src/reanimated1/core/AnimatedTransform.js +1 -1
- package/src/reanimated1/core/Core.test.js +30 -0
- package/src/reanimated1/core/InternalAnimatedValue.js +1 -1
- package/src/reanimated1/core/__mocks__/AnimatedProps.js +1 -1
- package/src/reanimated1/derived/interpolate.js +1 -1
- package/src/reanimated2/Colors.ts +30 -27
- package/src/reanimated2/Easing.ts +3 -1
- package/src/reanimated2/NativeMethods.ts +26 -16
- package/src/reanimated2/NativeReanimated/NativeReanimated.ts +78 -0
- package/src/reanimated2/NativeReanimated/index.ts +18 -0
- package/src/reanimated2/PlatformChecker.ts +21 -0
- package/src/reanimated2/PropAdapters.ts +52 -34
- package/src/reanimated2/UpdateProps.ts +40 -20
- package/src/reanimated2/ViewDescriptorsSet.ts +108 -0
- package/src/reanimated2/WorkletEventHandler.ts +41 -23
- package/src/reanimated2/animation/commonTypes.ts +48 -0
- package/src/reanimated2/animation/decay.ts +141 -0
- package/src/reanimated2/animation/delay.ts +103 -0
- package/src/reanimated2/animation/index.ts +16 -0
- package/src/reanimated2/animation/repeat.ts +128 -0
- package/src/reanimated2/animation/sequence.ts +110 -0
- package/src/reanimated2/animation/spring.ts +165 -0
- package/src/reanimated2/animation/styleAnimation.ts +253 -0
- package/src/reanimated2/animation/timing.ts +109 -0
- package/src/reanimated2/animation/util.ts +242 -0
- package/src/reanimated2/commonTypes.ts +81 -0
- package/src/reanimated2/core.ts +128 -82
- package/src/reanimated2/globals.d.ts +47 -1
- package/src/reanimated2/hook/Hooks.ts +16 -0
- package/src/reanimated2/hook/commonTypes.ts +12 -0
- package/src/reanimated2/hook/index.ts +25 -0
- package/src/reanimated2/hook/useAnimatedGestureHandler.ts +110 -0
- package/src/reanimated2/hook/useAnimatedReaction.ts +49 -0
- package/src/reanimated2/hook/useAnimatedRef.ts +34 -0
- package/src/reanimated2/hook/useAnimatedScrollHandler.ts +83 -0
- package/src/reanimated2/hook/useAnimatedStyle.ts +538 -0
- package/src/reanimated2/hook/useDerivedValue.ts +48 -0
- package/src/reanimated2/hook/useSharedValue.ts +22 -0
- package/src/reanimated2/hook/utils.ts +259 -0
- package/src/reanimated2/index.ts +3 -2
- package/src/reanimated2/interpolation.ts +170 -101
- package/src/reanimated2/jestUtils.ts +0 -12
- package/src/reanimated2/js-reanimated/JSReanimated.ts +47 -22
- package/src/reanimated2/js-reanimated/Mapper.ts +1 -1
- package/src/reanimated2/js-reanimated/index.ts +71 -0
- package/src/reanimated2/layoutReanimation/LayoutAnimationRepository.tsx +62 -0
- package/src/reanimated2/layoutReanimation/animationBuilder/BaseAnimationBuilder.ts +91 -0
- package/src/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.ts +169 -0
- package/src/reanimated2/layoutReanimation/animationBuilder/Keyframe.ts +263 -0
- package/src/reanimated2/layoutReanimation/animationBuilder/commonTypes.ts +78 -0
- package/src/reanimated2/layoutReanimation/animationBuilder/index.ts +16 -0
- package/src/reanimated2/layoutReanimation/defaultAnimations/Bounce.ts +243 -121
- package/src/reanimated2/layoutReanimation/defaultAnimations/Default.ts +43 -0
- package/src/reanimated2/layoutReanimation/defaultAnimations/Fade.ts +95 -53
- package/src/reanimated2/layoutReanimation/defaultAnimations/Flip.ts +114 -64
- package/src/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.ts +179 -0
- package/src/reanimated2/layoutReanimation/defaultAnimations/Pinwheel.ts +93 -0
- package/src/reanimated2/layoutReanimation/defaultAnimations/Roll.ts +132 -0
- package/src/reanimated2/layoutReanimation/defaultAnimations/Rotate.ts +333 -0
- package/src/reanimated2/layoutReanimation/defaultAnimations/Slide.ts +84 -50
- package/src/reanimated2/layoutReanimation/defaultAnimations/Stretch.ts +41 -23
- package/src/reanimated2/layoutReanimation/defaultAnimations/Zoom.ts +234 -154
- package/src/reanimated2/layoutReanimation/defaultAnimations/index.ts +4 -0
- package/src/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.ts +104 -0
- package/src/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.ts +213 -0
- package/src/reanimated2/layoutReanimation/defaultTransitions/FadingTransition.ts +60 -0
- package/src/reanimated2/layoutReanimation/defaultTransitions/JumpingTransition.ts +58 -0
- package/src/reanimated2/layoutReanimation/defaultTransitions/LinearTransition.ts +41 -0
- package/src/reanimated2/layoutReanimation/defaultTransitions/SequencedTransition.ts +78 -0
- package/src/reanimated2/layoutReanimation/defaultTransitions/index.ts +6 -0
- package/src/reanimated2/layoutReanimation/index.ts +3 -2
- package/src/reanimated2/platform-specific/RNRenderer.web.ts +2 -0
- package/src/reanimated2/utils.ts +21 -0
- package/android/react-native-reanimated-62-hermes.aar +0 -0
- package/android/react-native-reanimated-62-jsc.aar +0 -0
- package/ios/LayoutReanimation/REAAnimationRootView.h +0 -12
- package/ios/LayoutReanimation/REAAnimationRootView.m +0 -16
- package/ios/LayoutReanimation/REAAnimationRootViewManager.h +0 -9
- package/ios/LayoutReanimation/REAAnimationRootViewManager.m +0 -49
- package/ios/LayoutReanimation/REAReactBatchObserver.h +0 -20
- package/ios/LayoutReanimation/REAReactBatchObserver.m +0 -125
- package/ios/LayoutReanimation/REASnapshooter.h +0 -19
- package/ios/LayoutReanimation/REASnapshooter.m +0 -64
- package/ios/LayoutReanimation/REAViewTraverser.h +0 -13
- package/ios/LayoutReanimation/REAViewTraverser.m +0 -40
- package/lib/reanimated2/Hooks.js +0 -732
- package/lib/reanimated2/NativeReanimated.js +0 -4
- package/lib/reanimated2/animations.js +0 -713
- package/lib/reanimated2/js-reanimated/index.web.js +0 -20
- package/lib/reanimated2/layoutReanimation/AnimatedRoot.js +0 -55
- package/lib/reanimated2/layoutReanimation/defaultAnimationsBuilder.js +0 -374
- package/src/reanimated2/Hooks.ts +0 -918
- package/src/reanimated2/NativeReanimated.native.ts +0 -61
- package/src/reanimated2/NativeReanimated.ts +0 -5
- package/src/reanimated2/animations.ts +0 -868
- package/src/reanimated2/js-reanimated/index.js +0 -0
- package/src/reanimated2/js-reanimated/index.web.ts +0 -29
- package/src/reanimated2/layoutReanimation/AnimatedRoot.tsx +0 -68
- package/src/reanimated2/layoutReanimation/defaultAnimationsBuilder.ts +0 -440
package/src/ConfigHelper.js
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
import { NativeModules } from 'react-native';
|
|
2
|
+
import ReanimatedModuleCompat from './ReanimatedModuleCompat';
|
|
3
|
+
import { nativeShouldBeMock } from './reanimated2/PlatformChecker';
|
|
2
4
|
|
|
3
|
-
|
|
5
|
+
let exportedModule;
|
|
6
|
+
if (nativeShouldBeMock()) {
|
|
7
|
+
exportedModule = ReanimatedModuleCompat;
|
|
8
|
+
} else {
|
|
9
|
+
const { ReanimatedModule } = NativeModules;
|
|
10
|
+
exportedModule = ReanimatedModule;
|
|
11
|
+
}
|
|
4
12
|
|
|
5
|
-
export default
|
|
13
|
+
export default exportedModule;
|
|
@@ -8,8 +8,9 @@ import AnimatedValue from './reanimated1/core/AnimatedValue';
|
|
|
8
8
|
import { createOrReusePropsNode } from './reanimated1/core/AnimatedProps';
|
|
9
9
|
import WorkletEventHandler from './reanimated2/WorkletEventHandler';
|
|
10
10
|
import setAndForwardRef from './setAndForwardRef';
|
|
11
|
+
import './reanimated2/layoutReanimation/LayoutAnimationRepository';
|
|
11
12
|
|
|
12
|
-
import invariant from '
|
|
13
|
+
import invariant from 'invariant';
|
|
13
14
|
import { adaptViewConfig } from './ConfigHelper';
|
|
14
15
|
import { RNRenderer } from './reanimated2/platform-specific/RNRenderer';
|
|
15
16
|
import { makeMutable, runOnUI } from './reanimated2/core';
|
|
@@ -17,7 +18,9 @@ import {
|
|
|
17
18
|
DefaultEntering,
|
|
18
19
|
DefaultExiting,
|
|
19
20
|
DefaultLayout,
|
|
20
|
-
} from './reanimated2/layoutReanimation/
|
|
21
|
+
} from './reanimated2/layoutReanimation/defaultAnimations/Default';
|
|
22
|
+
import { isJest, isChromeDebugger } from './reanimated2/PlatformChecker';
|
|
23
|
+
import { initialUpdaterRun } from './reanimated2/animation';
|
|
21
24
|
|
|
22
25
|
const NODE_MAPPING = new Map();
|
|
23
26
|
|
|
@@ -46,7 +49,7 @@ function hasAnimatedNodes(value) {
|
|
|
46
49
|
|
|
47
50
|
function flattenArray(array) {
|
|
48
51
|
if (!Array.isArray(array)) {
|
|
49
|
-
return array;
|
|
52
|
+
return [array];
|
|
50
53
|
}
|
|
51
54
|
const resultArr = [];
|
|
52
55
|
|
|
@@ -73,11 +76,14 @@ export default function createAnimatedComponent(Component, options = {}) {
|
|
|
73
76
|
|
|
74
77
|
class AnimatedComponent extends React.Component {
|
|
75
78
|
_invokeAnimatedPropsCallbackOnMount = false;
|
|
79
|
+
_styles = null;
|
|
80
|
+
_viewTag = -1;
|
|
81
|
+
_isFirstRender = true;
|
|
76
82
|
|
|
77
83
|
constructor(props) {
|
|
78
84
|
super(props);
|
|
79
85
|
this._attachProps(this.props);
|
|
80
|
-
if (
|
|
86
|
+
if (isJest()) {
|
|
81
87
|
this.animatedStyle = { value: {} };
|
|
82
88
|
}
|
|
83
89
|
this.sv = makeMutable({});
|
|
@@ -87,6 +93,7 @@ export default function createAnimatedComponent(Component, options = {}) {
|
|
|
87
93
|
this._detachPropUpdater();
|
|
88
94
|
this._propsAnimated && this._propsAnimated.__detach();
|
|
89
95
|
this._detachNativeEvents();
|
|
96
|
+
this._detachStyles();
|
|
90
97
|
this.sv = null;
|
|
91
98
|
}
|
|
92
99
|
|
|
@@ -113,7 +120,6 @@ export default function createAnimatedComponent(Component, options = {}) {
|
|
|
113
120
|
_attachNativeEvents() {
|
|
114
121
|
const node = this._getEventViewRef();
|
|
115
122
|
const viewTag = findNodeHandle(options.setNativeProps ? this : node);
|
|
116
|
-
|
|
117
123
|
for (const key in this.props) {
|
|
118
124
|
const prop = this.props[key];
|
|
119
125
|
if (prop instanceof AnimatedEvent) {
|
|
@@ -143,6 +149,25 @@ export default function createAnimatedComponent(Component, options = {}) {
|
|
|
143
149
|
}
|
|
144
150
|
}
|
|
145
151
|
|
|
152
|
+
_detachStyles() {
|
|
153
|
+
if (Platform.OS === 'web') {
|
|
154
|
+
for (const style of this._styles) {
|
|
155
|
+
if (style?.viewsRef) {
|
|
156
|
+
style.viewsRef.remove(this);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
} else if (this._viewTag !== -1) {
|
|
160
|
+
for (const style of this._styles) {
|
|
161
|
+
if (style?.viewDescriptors) {
|
|
162
|
+
style.viewDescriptors.remove(this._viewTag);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
if (this.props.animatedProps?.viewDescriptors) {
|
|
166
|
+
this.props.animatedProps.viewDescriptors.remove(this._viewTag);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
146
171
|
_reattachNativeEvents(prevProps) {
|
|
147
172
|
const node = this._getEventViewRef();
|
|
148
173
|
const attached = new Set();
|
|
@@ -257,10 +282,8 @@ export default function createAnimatedComponent(Component, options = {}) {
|
|
|
257
282
|
}
|
|
258
283
|
|
|
259
284
|
_attachAnimatedStyles() {
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
: [this.props.style];
|
|
263
|
-
styles = flattenArray(styles);
|
|
285
|
+
const styles = flattenArray(this.props.style);
|
|
286
|
+
this._styles = styles;
|
|
264
287
|
let viewTag, viewName;
|
|
265
288
|
if (Platform.OS === 'web') {
|
|
266
289
|
viewTag = findNodeHandle(this);
|
|
@@ -289,11 +312,12 @@ export default function createAnimatedComponent(Component, options = {}) {
|
|
|
289
312
|
adaptViewConfig(hostInstance.viewConfig);
|
|
290
313
|
}
|
|
291
314
|
}
|
|
315
|
+
this._viewTag = viewTag;
|
|
292
316
|
|
|
293
317
|
styles.forEach((style) => {
|
|
294
|
-
if (style?.
|
|
295
|
-
style.
|
|
296
|
-
if (
|
|
318
|
+
if (style?.viewDescriptors) {
|
|
319
|
+
style.viewDescriptors.add({ tag: viewTag, name: viewName });
|
|
320
|
+
if (isJest()) {
|
|
297
321
|
/**
|
|
298
322
|
* We need to connect Jest's TestObject instance whose contains just props object
|
|
299
323
|
* with the updateProps() function where we update the properties of the component.
|
|
@@ -302,29 +326,29 @@ export default function createAnimatedComponent(Component, options = {}) {
|
|
|
302
326
|
*/
|
|
303
327
|
this.animatedStyle.value = {
|
|
304
328
|
...this.animatedStyle.value,
|
|
305
|
-
...style.initial,
|
|
329
|
+
...style.initial.value,
|
|
306
330
|
};
|
|
307
331
|
style.animatedStyle.current = this.animatedStyle;
|
|
308
332
|
}
|
|
309
333
|
}
|
|
310
334
|
});
|
|
311
335
|
// attach animatedProps property
|
|
312
|
-
if (this.props.animatedProps?.
|
|
313
|
-
this.props.animatedProps.
|
|
336
|
+
if (this.props.animatedProps?.viewDescriptors) {
|
|
337
|
+
this.props.animatedProps.viewDescriptors.add({
|
|
314
338
|
tag: viewTag,
|
|
315
339
|
name: viewName,
|
|
316
|
-
};
|
|
340
|
+
});
|
|
317
341
|
}
|
|
318
342
|
}
|
|
319
343
|
|
|
320
344
|
_hasReanimated2Props(flattenStyles) {
|
|
321
|
-
if (this.props.animatedProps?.
|
|
345
|
+
if (this.props.animatedProps?.viewDescriptors) {
|
|
322
346
|
return true;
|
|
323
347
|
}
|
|
324
348
|
if (this.props.style) {
|
|
325
349
|
for (const style of flattenStyles) {
|
|
326
350
|
// eslint-disable-next-line no-prototype-builtins
|
|
327
|
-
if (style?.hasOwnProperty('
|
|
351
|
+
if (style?.hasOwnProperty('viewDescriptors')) {
|
|
328
352
|
return true;
|
|
329
353
|
}
|
|
330
354
|
}
|
|
@@ -345,6 +369,7 @@ export default function createAnimatedComponent(Component, options = {}) {
|
|
|
345
369
|
this._reattachNativeEvents(prevProps);
|
|
346
370
|
|
|
347
371
|
this._propsAnimated && this._propsAnimated.setNativeView(this._component);
|
|
372
|
+
this._attachAnimatedStyles();
|
|
348
373
|
}
|
|
349
374
|
|
|
350
375
|
_setComponentRef = setAndForwardRef({
|
|
@@ -428,14 +453,19 @@ export default function createAnimatedComponent(Component, options = {}) {
|
|
|
428
453
|
for (const key in inputProps) {
|
|
429
454
|
const value = inputProps[key];
|
|
430
455
|
if (key === 'style') {
|
|
431
|
-
const styles =
|
|
456
|
+
const styles = flattenArray(value);
|
|
432
457
|
const processedStyle = styles.map((style) => {
|
|
433
|
-
if (style && style.
|
|
458
|
+
if (style && style.viewDescriptors) {
|
|
434
459
|
// this is how we recognize styles returned by useAnimatedStyle
|
|
435
|
-
|
|
436
|
-
|
|
460
|
+
style.viewsRef.add(this);
|
|
461
|
+
if (this._isFirstRender) {
|
|
462
|
+
return {
|
|
463
|
+
...style.initial.value,
|
|
464
|
+
...initialUpdaterRun(style.initial.updater),
|
|
465
|
+
};
|
|
466
|
+
} else {
|
|
467
|
+
return style.initial.value;
|
|
437
468
|
}
|
|
438
|
-
return style.initial;
|
|
439
469
|
} else {
|
|
440
470
|
return style;
|
|
441
471
|
}
|
|
@@ -444,11 +474,9 @@ export default function createAnimatedComponent(Component, options = {}) {
|
|
|
444
474
|
StyleSheet.flatten(processedStyle)
|
|
445
475
|
);
|
|
446
476
|
} else if (key === 'animatedProps') {
|
|
447
|
-
Object.keys(value.initial).forEach((key) => {
|
|
448
|
-
props[key] = value.initial[key];
|
|
449
|
-
|
|
450
|
-
value.viewRef.current = this;
|
|
451
|
-
}
|
|
477
|
+
Object.keys(value.initial.value).forEach((key) => {
|
|
478
|
+
props[key] = value.initial.value[key];
|
|
479
|
+
value.viewsRef.add(this);
|
|
452
480
|
});
|
|
453
481
|
} else if (value instanceof AnimatedEvent) {
|
|
454
482
|
// we cannot filter out event listeners completely as some components
|
|
@@ -470,7 +498,9 @@ export default function createAnimatedComponent(Component, options = {}) {
|
|
|
470
498
|
props[key] = dummyListener;
|
|
471
499
|
}
|
|
472
500
|
} else if (!(value instanceof AnimatedNode)) {
|
|
473
|
-
|
|
501
|
+
if (key !== 'onGestureHandlerStateChange' || !isChromeDebugger()) {
|
|
502
|
+
props[key] = value;
|
|
503
|
+
}
|
|
474
504
|
} else if (value instanceof AnimatedValue) {
|
|
475
505
|
// 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
|
|
476
506
|
// to avoid default values for a short moment when `Value` is being asynchrounously sent via bridge and initialized in the native side.
|
|
@@ -482,10 +512,14 @@ export default function createAnimatedComponent(Component, options = {}) {
|
|
|
482
512
|
|
|
483
513
|
render() {
|
|
484
514
|
const props = this._filterNonAnimatedProps(this.props);
|
|
485
|
-
if (
|
|
515
|
+
if (isJest()) {
|
|
486
516
|
props.animatedStyle = this.animatedStyle;
|
|
487
517
|
}
|
|
488
518
|
|
|
519
|
+
if (this._isFirstRender) {
|
|
520
|
+
this._isFirstRender = false;
|
|
521
|
+
}
|
|
522
|
+
|
|
489
523
|
const platformProps = Platform.select({
|
|
490
524
|
web: {},
|
|
491
525
|
default: { collapsable: false },
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { val } from '../val';
|
|
2
2
|
import AnimatedNode from './AnimatedNode';
|
|
3
|
-
import invariant from '
|
|
3
|
+
import invariant from 'invariant';
|
|
4
4
|
|
|
5
5
|
// These values are established by empiricism with tests (tradeoff: performance VS precision)
|
|
6
6
|
var NEWTON_ITERATIONS = 4;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import AnimatedNode, { getCallID, setCallID } from './AnimatedNode';
|
|
2
2
|
import { adapt } from './AnimatedBlock';
|
|
3
3
|
import { val } from '../val';
|
|
4
|
-
import invariant from '
|
|
4
|
+
import invariant from 'invariant';
|
|
5
5
|
|
|
6
6
|
class AnimatedCallFunc extends AnimatedNode {
|
|
7
7
|
_previousCallID;
|
|
@@ -5,7 +5,7 @@ import AnimatedNode from './AnimatedNode';
|
|
|
5
5
|
import InternalAnimatedValue from './AnimatedValue';
|
|
6
6
|
import { createAnimatedAlways } from './AnimatedAlways';
|
|
7
7
|
|
|
8
|
-
import invariant from '
|
|
8
|
+
import invariant from 'invariant';
|
|
9
9
|
import createEventObjectProxyPolyfill from './createEventObjectProxyPolyfill';
|
|
10
10
|
|
|
11
11
|
function sanitizeArgMapping(argMapping) {
|
|
@@ -2,7 +2,7 @@ import AnimatedNode from './AnimatedNode';
|
|
|
2
2
|
import { createAnimatedCallFunc } from './AnimatedCallFunc';
|
|
3
3
|
import { createAnimatedParam } from './AnimatedParam';
|
|
4
4
|
import { val } from '../val';
|
|
5
|
-
import invariant from '
|
|
5
|
+
import invariant from 'invariant';
|
|
6
6
|
|
|
7
7
|
class AnimatedFunction extends AnimatedNode {
|
|
8
8
|
_what;
|
|
@@ -4,8 +4,8 @@ import AnimatedNode from './AnimatedNode';
|
|
|
4
4
|
import AnimatedEvent from './AnimatedEvent';
|
|
5
5
|
import { createOrReuseStyleNode } from './AnimatedStyle';
|
|
6
6
|
|
|
7
|
-
import invariant from '
|
|
8
|
-
import deepEqual from '
|
|
7
|
+
import invariant from 'invariant';
|
|
8
|
+
import deepEqual from 'lodash.isequal';
|
|
9
9
|
import { val } from '../val';
|
|
10
10
|
|
|
11
11
|
function sanitizeProps(inputProps) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import AnimatedNode from './AnimatedNode';
|
|
2
2
|
import AnimatedClock from './AnimatedClock';
|
|
3
3
|
import { AnimatedParam } from './AnimatedParam';
|
|
4
|
-
import invariant from '
|
|
4
|
+
import invariant from 'invariant';
|
|
5
5
|
|
|
6
6
|
class AnimatedStartClock extends AnimatedNode {
|
|
7
7
|
_clockNode;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import AnimatedNode from './AnimatedNode';
|
|
2
2
|
import AnimatedClock from './AnimatedClock';
|
|
3
3
|
import { AnimatedParam } from './AnimatedParam';
|
|
4
|
-
import invariant from '
|
|
4
|
+
import invariant from 'invariant';
|
|
5
5
|
|
|
6
6
|
class AnimatedStopClock extends AnimatedNode {
|
|
7
7
|
_clockNode;
|
|
@@ -3,7 +3,7 @@ import { StyleSheet } from 'react-native';
|
|
|
3
3
|
import AnimatedNode from './AnimatedNode';
|
|
4
4
|
import { createOrReuseTransformNode } from './AnimatedTransform';
|
|
5
5
|
|
|
6
|
-
import deepEqual from '
|
|
6
|
+
import deepEqual from 'lodash.isequal';
|
|
7
7
|
|
|
8
8
|
function sanitizeStyle(inputStyle) {
|
|
9
9
|
let style;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import Animated from '../../Animated';
|
|
3
|
+
|
|
4
|
+
import renderer from 'react-test-renderer';
|
|
5
|
+
|
|
6
|
+
jest.mock('../../ReanimatedEventEmitter');
|
|
7
|
+
jest.mock('../../ReanimatedModule');
|
|
8
|
+
jest.mock('../../reanimated2/NativeReanimated');
|
|
9
|
+
|
|
10
|
+
describe('Core Animated components', () => {
|
|
11
|
+
xit('fails if something other then a node or function that returns a node is passed to Animated.Code exec prop', () => {
|
|
12
|
+
console.error = jest.fn();
|
|
13
|
+
|
|
14
|
+
expect(() =>
|
|
15
|
+
renderer.create(<Animated.Code exec="not a node" />)
|
|
16
|
+
).toThrowError(
|
|
17
|
+
"<Animated.Code /> expects the 'exec' prop or children to be an animated node or a function returning an animated node."
|
|
18
|
+
);
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
xit('fails if something other then a node or function that returns a node is passed to Animated.Code children', () => {
|
|
22
|
+
console.error = jest.fn();
|
|
23
|
+
|
|
24
|
+
expect(() =>
|
|
25
|
+
renderer.create(<Animated.Code>not a node</Animated.Code>)
|
|
26
|
+
).toThrowError(
|
|
27
|
+
"<Animated.Code /> expects the 'exec' prop or children to be an animated node or a function returning an animated node."
|
|
28
|
+
);
|
|
29
|
+
});
|
|
30
|
+
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import AnimatedNode from './AnimatedNode';
|
|
2
2
|
import { val } from '../val';
|
|
3
3
|
import ReanimatedModule from '../../ReanimatedModule';
|
|
4
|
-
import invariant from '
|
|
4
|
+
import invariant from 'invariant';
|
|
5
5
|
|
|
6
6
|
function sanitizeValue(value) {
|
|
7
7
|
return value === null || value === undefined || typeof value === 'string'
|
|
@@ -2,7 +2,7 @@ import AnimatedNode from '../AnimatedNode';
|
|
|
2
2
|
import AnimatedEvent from '../AnimatedEvent';
|
|
3
3
|
import AnimatedStyle, { createOrReuseStyleNode } from '../AnimatedStyle';
|
|
4
4
|
|
|
5
|
-
import deepEqual from '
|
|
5
|
+
import deepEqual from 'lodash.isequal';
|
|
6
6
|
|
|
7
7
|
// This file has been mocked as react-native's `findNodeHandle` is returning undefined value;
|
|
8
8
|
// and I became easier to mock whole this file instead of mocking RN
|
|
@@ -37,18 +37,18 @@ function call(...args: unknown[]): string {
|
|
|
37
37
|
// matchers use RegExp objects which needs to be created separately on JS and on
|
|
38
38
|
// the UI thread. We keep separate cache of Regexes for UI and JS using the below
|
|
39
39
|
// objects, then pick the right cache in getMatchers() method.
|
|
40
|
-
const jsCachedMatchers = {};
|
|
41
|
-
const uiCachedMatchers = !isConfigured() ?
|
|
40
|
+
const jsCachedMatchers: Matchers = {};
|
|
41
|
+
const uiCachedMatchers: Matchers = !isConfigured() ? {} : makeRemote({});
|
|
42
42
|
type Matchers = {
|
|
43
|
-
rgb
|
|
44
|
-
rgba
|
|
45
|
-
hsl
|
|
46
|
-
hsla
|
|
47
|
-
hex3
|
|
48
|
-
hex4
|
|
49
|
-
hex5
|
|
50
|
-
hex6
|
|
51
|
-
hex8
|
|
43
|
+
rgb?: RegExp;
|
|
44
|
+
rgba?: RegExp;
|
|
45
|
+
hsl?: RegExp;
|
|
46
|
+
hsla?: RegExp;
|
|
47
|
+
hex3?: RegExp;
|
|
48
|
+
hex4?: RegExp;
|
|
49
|
+
hex5?: RegExp;
|
|
50
|
+
hex6?: RegExp;
|
|
51
|
+
hex8?: RegExp;
|
|
52
52
|
};
|
|
53
53
|
function getMatchers(): Matchers {
|
|
54
54
|
'worklet';
|
|
@@ -329,10 +329,10 @@ function normalizeColor(color: unknown): number | null {
|
|
|
329
329
|
|
|
330
330
|
const matchers = getMatchers();
|
|
331
331
|
|
|
332
|
-
let match: RegExpExecArray | null;
|
|
332
|
+
let match: RegExpExecArray | null | undefined;
|
|
333
333
|
|
|
334
334
|
// Ordered based on occurrences on Facebook codebase
|
|
335
|
-
if ((match = matchers
|
|
335
|
+
if ((match = matchers?.hex6?.exec(color))) {
|
|
336
336
|
return Number.parseInt(match[1] + 'ff', 16) >>> 0;
|
|
337
337
|
}
|
|
338
338
|
|
|
@@ -340,7 +340,7 @@ function normalizeColor(color: unknown): number | null {
|
|
|
340
340
|
return names[color];
|
|
341
341
|
}
|
|
342
342
|
|
|
343
|
-
if ((match = matchers
|
|
343
|
+
if ((match = matchers?.rgb?.exec(color))) {
|
|
344
344
|
return (
|
|
345
345
|
// b
|
|
346
346
|
((parse255(match[1]) << 24) | // r
|
|
@@ -351,7 +351,7 @@ function normalizeColor(color: unknown): number | null {
|
|
|
351
351
|
);
|
|
352
352
|
}
|
|
353
353
|
|
|
354
|
-
if ((match = matchers
|
|
354
|
+
if ((match = matchers?.rgba?.exec(color))) {
|
|
355
355
|
return (
|
|
356
356
|
// b
|
|
357
357
|
((parse255(match[1]) << 24) | // r
|
|
@@ -362,7 +362,7 @@ function normalizeColor(color: unknown): number | null {
|
|
|
362
362
|
);
|
|
363
363
|
}
|
|
364
364
|
|
|
365
|
-
if ((match = matchers
|
|
365
|
+
if ((match = matchers?.hex3?.exec(color))) {
|
|
366
366
|
return (
|
|
367
367
|
Number.parseInt(
|
|
368
368
|
match[1] +
|
|
@@ -378,11 +378,11 @@ function normalizeColor(color: unknown): number | null {
|
|
|
378
378
|
}
|
|
379
379
|
|
|
380
380
|
// https://drafts.csswg.org/css-color-4/#hex-notation
|
|
381
|
-
if ((match = matchers
|
|
381
|
+
if ((match = matchers?.hex8?.exec(color))) {
|
|
382
382
|
return Number.parseInt(match[1], 16) >>> 0;
|
|
383
383
|
}
|
|
384
384
|
|
|
385
|
-
if ((match = matchers
|
|
385
|
+
if ((match = matchers?.hex4?.exec(color))) {
|
|
386
386
|
return (
|
|
387
387
|
Number.parseInt(
|
|
388
388
|
match[1] +
|
|
@@ -398,7 +398,7 @@ function normalizeColor(color: unknown): number | null {
|
|
|
398
398
|
);
|
|
399
399
|
}
|
|
400
400
|
|
|
401
|
-
if ((match = matchers
|
|
401
|
+
if ((match = matchers?.hsl?.exec(color))) {
|
|
402
402
|
return (
|
|
403
403
|
(hslToRgb(
|
|
404
404
|
parse360(match[1]), // h
|
|
@@ -410,7 +410,7 @@ function normalizeColor(color: unknown): number | null {
|
|
|
410
410
|
);
|
|
411
411
|
}
|
|
412
412
|
|
|
413
|
-
if ((match = matchers
|
|
413
|
+
if ((match = matchers?.hsla?.exec(color))) {
|
|
414
414
|
return (
|
|
415
415
|
(hslToRgb(
|
|
416
416
|
parse360(match[1]), // h
|
|
@@ -634,9 +634,9 @@ export function processColor(color: unknown): number | null | undefined {
|
|
|
634
634
|
return normalizedColor;
|
|
635
635
|
}
|
|
636
636
|
|
|
637
|
-
export
|
|
638
|
-
|
|
639
|
-
|
|
637
|
+
export type ParsedColorArray = [number, number, number, number];
|
|
638
|
+
|
|
639
|
+
export function convertToHSVA(color: unknown): ParsedColorArray {
|
|
640
640
|
'worklet';
|
|
641
641
|
const processedColor = processColorInitially(color)!; // argb;
|
|
642
642
|
const a = (processedColor >>> 24) / 255;
|
|
@@ -647,7 +647,7 @@ export function convertToHSVA(
|
|
|
647
647
|
return [h, s, v, a];
|
|
648
648
|
}
|
|
649
649
|
|
|
650
|
-
export function toRGBA(HSVA:
|
|
650
|
+
export function toRGBA(HSVA: ParsedColorArray): string {
|
|
651
651
|
'worklet';
|
|
652
652
|
const { r, g, b } = HSVtoRGB(HSVA[0], HSVA[1], HSVA[2]);
|
|
653
653
|
return `rgba(${r}, ${g}, ${b}, ${HSVA[3]})`;
|
|
@@ -704,9 +704,11 @@ const getInterpolateCacheRGBA = (
|
|
|
704
704
|
const g = [];
|
|
705
705
|
const b = [];
|
|
706
706
|
const a = [];
|
|
707
|
-
for (
|
|
707
|
+
for (let i = 0; i < colors.length; ++i) {
|
|
708
|
+
const color = colors[i];
|
|
708
709
|
const proocessedColor = processColor(color);
|
|
709
|
-
if
|
|
710
|
+
// explicit check in case if processedColor is 0
|
|
711
|
+
if (proocessedColor !== null && proocessedColor !== undefined) {
|
|
710
712
|
r.push(red(proocessedColor));
|
|
711
713
|
g.push(green(proocessedColor));
|
|
712
714
|
b.push(blue(proocessedColor));
|
|
@@ -747,7 +749,8 @@ const getInterpolateCacheHSV = (
|
|
|
747
749
|
const h = [];
|
|
748
750
|
const s = [];
|
|
749
751
|
const v = [];
|
|
750
|
-
for (
|
|
752
|
+
for (let i = 0; i < colors.length; ++i) {
|
|
753
|
+
const color = colors[i];
|
|
751
754
|
const proocessedColor = RGBtoHSV(processColor(color) as any);
|
|
752
755
|
if (proocessedColor) {
|
|
753
756
|
h.push(proocessedColor.h);
|
|
@@ -54,7 +54,9 @@ import { Bezier } from './Bezier';
|
|
|
54
54
|
* - [`out`](docs/easing.html#out) runs an easing function backwards
|
|
55
55
|
*/
|
|
56
56
|
|
|
57
|
-
type EasingFn = (t: number) => number;
|
|
57
|
+
export type EasingFn = (t: number) => number;
|
|
58
|
+
|
|
59
|
+
export type EasingFactoryFn = { factory: () => EasingFn };
|
|
58
60
|
/**
|
|
59
61
|
* A linear function, `f(t) = t`. Position correlates to elapsed time one to
|
|
60
62
|
* one.
|